import { USDPriceMap, TokenListMap, OraclePricesResult } from './types';
import { type MorphoMarketOverrides, type ListaMarketOverrides } from './fetchers';
/**
 * Token list type expected by this function
 * Token decimals are read from list[chainId].list[address].decimals
 */
export type TokenListInput = {
    [chainId: string]: TokenListMap;
};
/**
 * Options for fetchOraclePrices with market overrides
 */
export interface FetchOraclePricesOptions {
    /** Optional RPC URL overrides per chain */
    rpcOverrides?: {
        [chainId: string]: string[];
    };
    /** Token lists with decimals and asset groups for price resolution */
    lists?: TokenListInput;
    /** Number of retries for RPC calls */
    retries?: number;
    /** Optional batch size for multicall, per chain */
    batchSize?: {
        [chainId: string]: number;
    };
    /** Whether to allow individual call failures (default: true) */
    allowFailure?: boolean;
    /** Optional base USD prices to use for deriving other prices */
    basePrices?: USDPriceMap;
    /** Custom Morpho markets to add beyond JSON data */
    morphoMarketOverrides?: MorphoMarketOverrides;
    /** Custom Lista markets to add beyond JSON data */
    listaMarketOverrides?: ListaMarketOverrides;
    /**
     * Chainlink staleness threshold in seconds (default: 3600 = 1 hour).
     * Feeds with updatedAt older than this are flagged in diagnostics.
     * Set to 0 to disable staleness checking.
     */
    stalenessThresholdSeconds?: number;
    /**
     * Only run these fetcher groups. Useful for debugging individual protocols.
     * Values: 'aave', 'compoundV2', 'compoundV3', 'lista', 'eulerV2', 'aaveV4',
     * 'morpho', 'midnight', 'exactly', 'term', 'liquity', 'river', 'teller',
     * 'siloV2', 'siloV3', 'fluid'.
     * If omitted, all fetchers run.
     */
    onlyFetchers?: string[];
}
/**
 * Fetches oracle prices from AAVE, Morpho, Lista, Compound V2/V3, and Euler V2 protocols.
 * Returns structured data and a diagnostics report.
 *
 * Architecture:
 * - Each fetcher group (AAVE, CompoundV2, CompoundV3, Lista, Euler, Morpho)
 *   runs as an independent multicall in parallel — heavy protocols don't block others
 * - Parsing happens afterward in dependency order (AAVE sources → others → Morpho)
 * - Chain-level isolation via Promise.allSettled
 * - Fetcher/parser-level isolation via try-catch
 */
export declare function fetchOraclePrices(chainIds: string[], rpcOverrides?: {
    [chainId: string]: string[];
}, lists?: TokenListInput, retries?: number, batchSize?: {
    [chainId: string]: number;
} | undefined, allowFailure?: boolean, basePrices?: USDPriceMap, morphoMarketOverrides?: MorphoMarketOverrides, listaMarketOverrides?: ListaMarketOverrides, stalenessThresholdSeconds?: number, onlyFetchers?: string[]): Promise<OraclePricesResult>;
//# sourceMappingURL=fetchOraclePrices.d.ts.map