import { CreationOptional, InferAttributes, InferCreationAttributes, Model } from 'sequelize'; import type { LiteralUnion } from 'type-fest'; export declare const nextExchangeRateProviderId: (size?: number) => string; export declare class ExchangeRateProvider extends Model, InferCreationAttributes> { id: CreationOptional; name: string; type: CreationOptional>; enabled: CreationOptional; priority: CreationOptional; status: CreationOptional>; paused_reason: string | null; config: Record | null; last_success_at: Date | null; last_failure_at: Date | null; failure_count: CreationOptional; created_at: CreationOptional; updated_at: CreationOptional; static initialize(sequelize: any): void; static getActiveProviders(): Promise; recordSuccess(): Promise; recordFailure(reason?: string): Promise; /** * Encrypt sensitive config data (API keys) * Should be called before saving to database */ static encryptConfig(config: Record | null): Record | null; /** * Decrypt sensitive config data (API keys) * Should be called after reading from database */ static decryptConfig(config: Record | null): Record | null; /** * Mask sensitive config data for display * Returns config with API key partially masked */ static maskConfig(config: Record | null): Record | null; } export type TExchangeRateProvider = InferAttributes;