import { env } from "@/server/env";
import { HttpKycProvider } from "@/server/providers/kyc/http-provider";
import { LocalKycProvider } from "@/server/providers/kyc/local-provider";
import { assertProviderAllowed, requireProviderEndpoint } from "@/server/providers/policy";
import type { KycProvider } from "@/server/providers/kyc/types";

export function createKycProvider(): KycProvider {
  const config = env();
  assertProviderAllowed(config.KYC_PROVIDER, "kyc");

  if (config.KYC_PROVIDER === "local") {
    return new LocalKycProvider();
  }

  requireProviderEndpoint("kyc", config.KYC_PROVIDER_BASE_URL, config.KYC_PROVIDER_API_KEY);
  return new HttpKycProvider(config.KYC_PROVIDER, config.KYC_PROVIDER_BASE_URL!, config.KYC_PROVIDER_API_KEY!);
}
