/** * On-ramp provider registry — discovers available providers and selects defaults. * * Priority order: transak > coinbase > ramp (first available wins as default). */ import type { OnrampProvider, OnrampProviderId } from './onramp-provider'; import { TransakOnrampAdapter } from './transak-onramp'; import { CoinbaseOnrampAdapter } from './coinbase-onramp'; import { RampOnrampAdapter } from './ramp-onramp'; const providers: OnrampProvider[] = [ new TransakOnrampAdapter(), new CoinbaseOnrampAdapter(), new RampOnrampAdapter(), ]; export function getAvailableProviders(): { id: OnrampProviderId; name: string }[] { return providers .filter((p) => p.isAvailable()) .map((p) => ({ id: p.id, name: p.name })); } export function getProvider(id: OnrampProviderId): OnrampProvider | null { const p = providers.find((p) => p.id === id); return p && p.isAvailable() ? p : null; } export function getDefaultProvider(): OnrampProvider | null { return providers.find((p) => p.isAvailable()) || null; }