//#region extensions/crypto/src/services/fiat-service.d.ts /** * Fiat Rails Service — off-ramps, on-ramps, and payment routing. * * Provides a unified interface for moving money between crypto and fiat. * Supports multiple providers (Bridge.xyz, MoonPay, Coinbase) with a * preference-based fallback system. * * Architecture: * - Provider-agnostic interface: all providers implement FiatProvider * - Quote aggregation: fetch quotes from multiple providers, pick best * - Idempotent transfers: each transfer gets a unique ID for tracking * - Persistent state: transfer history saved to disk for accounting * * Env vars: * BRIDGE_API_KEY — Bridge.xyz API key * MOONPAY_API_KEY — MoonPay API key (optional) * COINBASE_API_KEY — Coinbase Pay API key (optional) * FIAT_CURRENCY — Default fiat currency (default: USD) */ type FiatDirection = 'off_ramp' | 'on_ramp'; type FiatCurrency = 'USD' | 'EUR' | 'GBP' | 'CAD' | 'AUD' | 'CHF' | 'JPY'; type FiatTransferStatus = 'pending' | 'processing' | 'completed' | 'failed' | 'cancelled'; interface FiatQuote { provider: string; direction: FiatDirection; cryptoAmount: number; cryptoToken: string; cryptoChainId: number; fiatAmount: number; fiatCurrency: FiatCurrency; /** Fee in fiat currency. */ fee: number; /** Exchange rate: 1 crypto token = X fiat. */ exchangeRate: number; /** How long the quote is valid (ms). */ expiresIn: number; /** Provider-specific quote ID. */ quoteId: string; /** Estimated settlement time. */ estimatedSettlement: string; } interface FiatTransfer { id: string; userId: string; direction: FiatDirection; provider: string; cryptoAmount: number; cryptoToken: string; cryptoChainId: number; fiatAmount: number; fiatCurrency: FiatCurrency; fee: number; status: FiatTransferStatus; /** Provider-specific transfer/order ID. */ externalId?: string; /** Crypto tx hash (for off-ramps: the send-to-provider tx). */ txHash?: string; /** Bank account identifier (masked). */ bankAccount?: string; createdAt: number; updatedAt: number; /** Error message if failed. */ error?: string; } interface BankAccount { id: string; label: string; /** Masked account number (e.g. "****1234"). */ maskedNumber: string; bankName: string; currency: FiatCurrency; /** Provider-specific account ID. */ externalId: string; provider: string; } interface FiatProvider { name: string; isConfigured(): boolean; getQuote(params: { direction: FiatDirection; cryptoToken: string; cryptoChainId: number; amount: number; amountType: 'crypto' | 'fiat'; fiatCurrency: FiatCurrency; }): Promise; executeTransfer(quote: FiatQuote, opts: { walletAddress: string; bankAccountId?: string; }): Promise<{ transferId: string; depositAddress?: string; instructions?: string; }>; getTransferStatus(transferId: string): Promise; listBankAccounts?(): Promise; } declare class FiatService { private providers; private transfers; private stateDir; constructor(opts?: { stateDir?: string; }); /** Get configured providers. */ getConfiguredProviders(): string[]; /** Check if any fiat provider is configured. */ isAvailable(): boolean; /** Get quotes from all configured providers. */ getQuotes(params: { direction: FiatDirection; cryptoToken: string; cryptoChainId?: number; amount: number; amountType?: 'crypto' | 'fiat'; fiatCurrency?: FiatCurrency; }): Promise; /** Execute a fiat transfer using a quote. */ executeTransfer(quote: FiatQuote, opts: { userId: string; walletAddress: string; bankAccountId?: string; }): Promise; /** Check transfer status from provider. */ refreshTransferStatus(transferId: string): Promise; /** Get transfer by ID. */ getTransfer(transferId: string): FiatTransfer | null; /** List all transfers for a user. */ listTransfers(userId?: string): FiatTransfer[]; /** List linked bank accounts from configured providers. */ listBankAccounts(): Promise; private loadState; private saveState; /** Clear all state (for testing). */ clear(): void; } declare function getFiatService(opts?: { stateDir?: string; }): FiatService; declare function resetFiatService(): void; //#endregion export { BankAccount, FiatCurrency, FiatDirection, FiatProvider, FiatQuote, FiatService, FiatTransfer, FiatTransferStatus, getFiatService, resetFiatService }; //# sourceMappingURL=fiat-service.d.mts.map