/** * Módulo extremadamente modular para procesamiento de tasas * Maneja lógica de tasa más baja entre SET ICAP y Yahoo */ import { MarketConditionResult, MarketCondition } from '../conditions'; export interface RateSource { name: string; value: number | null; timestamp: Date; isValid: boolean; error?: string; } export interface ProcessedRate { finalRate: number; selectedSource: string; sources: RateSource[]; processingRule: string; timestamp: Date; marketCondition: MarketCondition; } export interface RateProcessingConfig { precision: number; minValidRate: number; maxValidRate: number; enableCaching: boolean; fallbackEnabled: boolean; } export declare enum RateProcessingRule { SPOT_RATE = "SPOT_RATE",// Usar tasa spot durante horario de mercado NEXT_DAY_RATE = "NEXT_DAY_RATE",// Usar tasa del día siguiente LOWEST_RATE = "LOWEST_RATE",// Tomar la más baja entre SET ICAP y Yahoo FALLBACK_RATE = "FALLBACK_RATE",// Usar tasa de fallback del caché CACHED_RATE = "CACHED_RATE" } /** * Clase para validar tasas de cambio */ export declare class RateValidator { private static config; /** * Configura los parámetros de validación */ static setConfig(config: Partial): void; /** * Valida si una tasa es válida */ static isValidRate(rate: number | null | undefined): boolean; /** * Normaliza una tasa aplicando precisión */ static normalizeRate(rate: number): number; /** * Convierte string a número y valida */ static parseAndValidateRate(rateString: string | null): number | null; /** * Crea un objeto RateSource */ static createRateSource(name: string, value: string | number | null, error?: string): RateSource; } /** * Clase para aplicar reglas de procesamiento de tasas */ export declare class RateProcessingRuleEngine { /** * Determina qué regla de procesamiento aplicar */ static determineProcessingRule(marketCondition: MarketConditionResult): RateProcessingRule; /** * Aplica la regla de procesamiento */ static applyProcessingRule(rule: RateProcessingRule, seticapSpot: RateSource, seticapNext: RateSource, yahoo: RateSource): { rate: number | null; source: string; explanation: string; }; /** * Selecciona la tasa más baja entre las fuentes válidas */ private static selectLowestRate; } /** * Clase para manejo de fallbacks y recuperación */ export declare class RateFallbackManager { /** * Intenta recuperar una tasa usando fallbacks */ static attemptFallbackRecovery(cacheKey: string): { rate: number | null; source: string; explanation: string; }; /** * Almacena una tasa exitosa en el caché */ static cacheSuccessfulRate(rate: number, source: string, cacheKey: string): boolean; } /** * Clase principal para procesamiento de tasas */ export declare class RateProcessor { /** * Procesa tasas según las condiciones de mercado */ static processRates(marketCondition: MarketConditionResult, seticapSpotRate: string | number | null, seticapNextDayRate: string | number | null, yahooRate: string | number | null, cacheKey?: string): ProcessedRate; /** * Procesa tasas con manejo de errores robusto */ static processRatesWithErrorHandling(marketCondition: MarketConditionResult, seticapSpotRate: string | number | null, seticapNextDayRate: string | number | null, yahooRate: string | number | null, cacheKey?: string): ProcessedRate; /** * Obtiene información detallada del procesamiento para debugging */ static getProcessingDebugInfo(marketCondition: MarketConditionResult, seticapSpotRate: string | number | null, seticapNextDayRate: string | number | null, yahooRate: string | number | null): { processedRate: ProcessedRate; debugInfo: { determinedRule: RateProcessingRule; validSources: number; marketAnalysis: MarketConditionResult; cacheStatus: any; }; }; } /** * Funciones de conveniencia para compatibilidad */ export declare const processExchangeRate: (marketCondition: MarketConditionResult, seticapSpot: string | number | null, seticapNext: string | number | null, yahoo: string | number | null) => ProcessedRate; export declare const getLowestRate: (rates: Array<{ value: number | null; source: string; }>) => { rate: number | null; source: string; }; //# sourceMappingURL=rate-processor.d.ts.map