import { ListaMarketOverride, FetcherResult, OraclePriceEntry, ParseContext } from '../types';
/**
 * Market overrides for extending Lista markets beyond JSON data
 */
export type ListaMarketOverrides = {
    [chainId: string]: ListaMarketOverride[];
};
/**
 * Context for Lista fetcher with optional market overrides
 */
export interface ListaFetcherContext {
    marketOverrides?: ListaMarketOverrides;
}
/**
 * Internal market structure for Lista
 */
interface ListaMarket {
    oracle: string;
    collateralAsset: string;
    loanAsset: string;
    marketId: string;
}
/**
 * Grouped metadata for deduplicated oracle calls
 * Deduplicates at the (oracle, asset) level since peek(asset) returns the same result
 */
interface ListaGroupedMeta {
    /** Map from "oracleLc:assetLc" key to index in the calls array */
    callIndexMap: {
        [key: string]: number;
    };
    /** All markets to process */
    markets: ListaMarket[];
}
/**
 * Get multicall calls for Lista oracles
 * Deduplicates peek(asset) calls at the (oracle, asset) level.
 * Returns a single FetcherResult with all unique calls and market mappings.
 *
 * @param chainId - Chain ID to get calls for
 * @param context - Optional context with market overrides
 */
export declare function getListaCalls(chainId: string, context?: ListaFetcherContext): FetcherResult<ListaGroupedMeta>[];
/**
 * Parse Lista oracle results into structured price entries
 *
 * Processes all markets using the deduplicated call results.
 * Each entry gets a targetLender so it routes to the correct per-market lender key.
 *
 * Lista oracles return USD prices directly via peek(asset)
 * Prices are in 8 decimals (same as Chainlink)
 */
export declare function parseListaResults(data: any[], meta: ListaGroupedMeta, context: ParseContext): OraclePriceEntry[];
/**
 * Get ABI for Lista oracle calls
 */
export declare function getListaAbi(): readonly [{
    readonly inputs: readonly [];
    readonly name: "price";
    readonly outputs: readonly [{
        readonly internalType: "uint256";
        readonly name: "";
        readonly type: "uint256";
    }];
    readonly stateMutability: "view";
    readonly type: "function";
}, {
    readonly inputs: readonly [{
        readonly internalType: "address";
        readonly name: "asset";
        readonly type: "address";
    }];
    readonly name: "peek";
    readonly outputs: readonly [{
        readonly internalType: "uint256";
        readonly name: "";
        readonly type: "uint256";
    }];
    readonly stateMutability: "view";
    readonly type: "function";
}];
/**
 * Lista Oracle Fetcher module
 */
export declare const listaFetcher: {
    getCalls: typeof getListaCalls;
    parse: typeof parseListaResults;
    getAbi: typeof getListaAbi;
};
export {};
//# sourceMappingURL=lista.d.ts.map