import type { IntegrationEnvironment } from '@/lib/integrations/environment';
import { BlockedLeadDestinationAdapter } from './blocked';
import { LocalLeadDestinationAdapter } from './local';
import type { LeadDestinationAdapter } from './types';

export function createLeadDestinationAdapter(
  environment: IntegrationEnvironment,
): LeadDestinationAdapter {
  const approvedLocalRuntime =
    environment.NODE_ENV !== 'production' || environment.DEMO_LOCAL_TEST_MODE;
  if (approvedLocalRuntime && environment.DEMO_SUBMISSION_MODE === 'local') {
    return new LocalLeadDestinationAdapter();
  }
  return new BlockedLeadDestinationAdapter();
}

export type { IntegrationContext, LeadDestinationAdapter, LeadDestinationResult } from './types';
