import { AaveQueryMeta, FetcherResult, OraclePriceEntry, ParseContext } from '../types';
/**
 * Extended metadata for AAVE that includes BASE_CURRENCY_UNIT info
 */
export interface AaveQueryMetaExtended extends AaveQueryMeta {
    /** Index of BASE_CURRENCY_UNIT call in the calls array */
    baseCurrencyUnitIndex: number;
    /** Number of asset price calls */
    assetCallCount: number;
    /** Base asset override (if lender uses non-USD base) */
    baseAssetOverride?: string;
    /** Fallback BASE_CURRENCY_UNIT if on-chain call reverts */
    baseCurrencyUnitOverride?: bigint;
    /** Another AAVE fork to use as source for base asset USD price */
    baseAssetSource?: string;
}
/**
 * Get multicall calls for AAVE oracles
 * Uses individual getAssetPrice calls per asset (with allowFailure=true)
 * Also fetches BASE_CURRENCY_UNIT for proper scaling
 */
export declare function getAaveCalls(chainId: string): FetcherResult<AaveQueryMetaExtended>[];
/**
 * Parse AAVE oracle results into structured price entries
 * Uses BASE_CURRENCY_UNIT to properly scale prices
 *
 * For lenders with non-USD base assets (like KLAYBANK on KAIA),
 * prices need to be scaled by the base asset's USD price.
 */
export declare function parseAaveResults(data: any[], meta: AaveQueryMetaExtended, context: ParseContext): OraclePriceEntry[];
/**
 * Get ABI for AAVE oracle calls
 */
export declare function getAaveAbi(): readonly [{
    readonly inputs: readonly [];
    readonly name: "BASE_CURRENCY_UNIT";
    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: "getAssetPrice";
    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: "assets";
        readonly type: "address[]";
    }];
    readonly name: "getAssetsPrices";
    readonly outputs: readonly [{
        readonly internalType: "uint256[]";
        readonly name: "";
        readonly type: "uint256[]";
    }];
    readonly stateMutability: "view";
    readonly type: "function";
}, {
    readonly inputs: readonly [];
    readonly name: "getFallbackOracle";
    readonly outputs: readonly [{
        readonly internalType: "address";
        readonly name: "";
        readonly type: "address";
    }];
    readonly stateMutability: "view";
    readonly type: "function";
}];
/**
 * AAVE Oracle Fetcher module
 */
export declare const aaveFetcher: {
    getCalls: typeof getAaveCalls;
    parse: typeof parseAaveResults;
    getAbi: typeof getAaveAbi;
};
//# sourceMappingURL=aave.d.ts.map