import type { MultidealEnv } from '../env.js';
import { MockInvoiceProvider } from './mock-provider.js';
import type { InvoiceProvider } from './provider.js';

export function getInvoiceProvider(
  env: Pick<MultidealEnv, 'PUBLIC_SITE_URL' | 'ENVIRONMENT'> & {
    ALLOW_MOCK_INVOICING?: string;
  },
): InvoiceProvider {
  if (env.ENVIRONMENT === 'production') {
    throw new Error('Mock tax provider is forbidden in production');
  }
  if (
    ['test', 'development', 'preview'].includes(env.ENVIRONMENT) &&
    env.ALLOW_MOCK_INVOICING === 'true'
  ) {
    return new MockInvoiceProvider(env.PUBLIC_SITE_URL);
  }
  throw new Error(
    'Tax provider is not configured; set ALLOW_MOCK_INVOICING=true only for non-production environments',
  );
}
