import type { FetcherResult, OraclePriceEntry, ParseContext } from '../types';
/**
 * Euler V2 query metadata — one entry per vault
 */
export interface EulerV2QueryMeta {
    vault: string;
    lender: string;
    usePriceLens: boolean;
}
/**
 * Build multicall calls for Euler V2 oracle prices.
 * Uses lightweight PriceLens where available, falls back to
 * VaultLens.getVaultInfoFull() on chains without it.
 */
export declare function getEulerV2Calls(chainId: string): FetcherResult<EulerV2QueryMeta[]>[];
/**
 * Parse Euler V2 results into oracle price entries.
 * Handles both PriceLens (flat struct) and VaultLens (nested struct) shapes.
 */
export declare function parseEulerV2Results(data: any[], meta: EulerV2QueryMeta[], context: ParseContext): OraclePriceEntry[];
/**
 * ABI fragments needed for Euler V2 oracle calls
 */
export declare function getEulerV2Abi(): readonly [{
    readonly inputs: readonly [{
        readonly name: "vault";
        readonly type: "address";
    }];
    readonly name: "getVaultPrice";
    readonly outputs: readonly [{
        readonly components: readonly [{
            readonly name: "asset";
            readonly type: "address";
        }, {
            readonly name: "unitOfAccount";
            readonly type: "address";
        }, {
            readonly name: "unitOfAccountDecimals";
            readonly type: "uint8";
        }, {
            readonly name: "amountOutMid";
            readonly type: "uint256";
        }, {
            readonly name: "queryFailure";
            readonly type: "bool";
        }];
        readonly name: "result";
        readonly type: "tuple";
    }];
    readonly stateMutability: "view";
    readonly type: "function";
}, {
    readonly inputs: readonly [{
        readonly name: "vaults";
        readonly type: "address[]";
    }];
    readonly name: "getVaultPrices";
    readonly outputs: readonly [{
        readonly components: readonly [{
            readonly name: "asset";
            readonly type: "address";
        }, {
            readonly name: "unitOfAccount";
            readonly type: "address";
        }, {
            readonly name: "unitOfAccountDecimals";
            readonly type: "uint8";
        }, {
            readonly name: "amountOutMid";
            readonly type: "uint256";
        }, {
            readonly name: "queryFailure";
            readonly type: "bool";
        }];
        readonly name: "results";
        readonly type: "tuple[]";
    }];
    readonly stateMutability: "view";
    readonly type: "function";
}, {
    readonly type: "function";
    readonly name: "getVaultInfoFull";
    readonly inputs: readonly [{
        readonly name: "vault";
        readonly type: "address";
    }];
    readonly outputs: readonly [{
        readonly name: "";
        readonly type: "tuple";
        readonly components: readonly [{
            readonly name: "timestamp";
            readonly type: "uint256";
        }, {
            readonly name: "vault";
            readonly type: "address";
        }, {
            readonly name: "vaultName";
            readonly type: "string";
        }, {
            readonly name: "vaultSymbol";
            readonly type: "string";
        }, {
            readonly name: "vaultDecimals";
            readonly type: "uint256";
        }, {
            readonly name: "asset";
            readonly type: "address";
        }, {
            readonly name: "assetName";
            readonly type: "string";
        }, {
            readonly name: "assetSymbol";
            readonly type: "string";
        }, {
            readonly name: "assetDecimals";
            readonly type: "uint256";
        }, {
            readonly name: "unitOfAccount";
            readonly type: "address";
        }, {
            readonly name: "unitOfAccountName";
            readonly type: "string";
        }, {
            readonly name: "unitOfAccountSymbol";
            readonly type: "string";
        }, {
            readonly name: "unitOfAccountDecimals";
            readonly type: "uint256";
        }, {
            readonly name: "totalShares";
            readonly type: "uint256";
        }, {
            readonly name: "totalCash";
            readonly type: "uint256";
        }, {
            readonly name: "totalBorrowed";
            readonly type: "uint256";
        }, {
            readonly name: "totalAssets";
            readonly type: "uint256";
        }, {
            readonly name: "accumulatedFeesShares";
            readonly type: "uint256";
        }, {
            readonly name: "accumulatedFeesAssets";
            readonly type: "uint256";
        }, {
            readonly name: "governorFeeReceiver";
            readonly type: "address";
        }, {
            readonly name: "protocolFeeReceiver";
            readonly type: "address";
        }, {
            readonly name: "protocolFeeShare";
            readonly type: "uint256";
        }, {
            readonly name: "interestFee";
            readonly type: "uint256";
        }, {
            readonly name: "hookedOperations";
            readonly type: "uint256";
        }, {
            readonly name: "configFlags";
            readonly type: "uint256";
        }, {
            readonly name: "supplyCap";
            readonly type: "uint256";
        }, {
            readonly name: "borrowCap";
            readonly type: "uint256";
        }, {
            readonly name: "maxLiquidationDiscount";
            readonly type: "uint256";
        }, {
            readonly name: "liquidationCoolOffTime";
            readonly type: "uint256";
        }, {
            readonly name: "dToken";
            readonly type: "address";
        }, {
            readonly name: "oracle";
            readonly type: "address";
        }, {
            readonly name: "interestRateModel";
            readonly type: "address";
        }, {
            readonly name: "hookTarget";
            readonly type: "address";
        }, {
            readonly name: "evc";
            readonly type: "address";
        }, {
            readonly name: "protocolConfig";
            readonly type: "address";
        }, {
            readonly name: "balanceTracker";
            readonly type: "address";
        }, {
            readonly name: "permit2";
            readonly type: "address";
        }, {
            readonly name: "creator";
            readonly type: "address";
        }, {
            readonly name: "governorAdmin";
            readonly type: "address";
        }, {
            readonly name: "irmInfo";
            readonly type: "tuple";
            readonly components: readonly [{
                readonly name: "queryFailure";
                readonly type: "bool";
            }, {
                readonly name: "queryFailureReason";
                readonly type: "bytes";
            }, {
                readonly name: "vault";
                readonly type: "address";
            }, {
                readonly name: "interestRateModel";
                readonly type: "address";
            }, {
                readonly name: "interestRateInfo";
                readonly type: "tuple[]";
                readonly components: readonly [{
                    readonly name: "cash";
                    readonly type: "uint256";
                }, {
                    readonly name: "borrows";
                    readonly type: "uint256";
                }, {
                    readonly name: "borrowSPY";
                    readonly type: "uint256";
                }, {
                    readonly name: "borrowAPY";
                    readonly type: "uint256";
                }, {
                    readonly name: "supplyAPY";
                    readonly type: "uint256";
                }];
            }, {
                readonly name: "interestRateModelInfo";
                readonly type: "tuple";
                readonly components: readonly [{
                    readonly name: "interestRateModel";
                    readonly type: "address";
                }, {
                    readonly name: "interestRateModelType";
                    readonly type: "uint8";
                }, {
                    readonly name: "interestRateModelParams";
                    readonly type: "bytes";
                }];
            }];
        }, {
            readonly name: "collateralLTVInfo";
            readonly type: "tuple[]";
            readonly components: readonly [{
                readonly name: "collateral";
                readonly type: "address";
            }, {
                readonly name: "borrowLTV";
                readonly type: "uint256";
            }, {
                readonly name: "liquidationLTV";
                readonly type: "uint256";
            }, {
                readonly name: "initialLiquidationLTV";
                readonly type: "uint256";
            }, {
                readonly name: "targetTimestamp";
                readonly type: "uint256";
            }, {
                readonly name: "rampDuration";
                readonly type: "uint256";
            }];
        }, {
            readonly name: "liabilityPriceInfo";
            readonly type: "tuple";
            readonly components: readonly [{
                readonly name: "queryFailure";
                readonly type: "bool";
            }, {
                readonly name: "queryFailureReason";
                readonly type: "bytes";
            }, {
                readonly name: "timestamp";
                readonly type: "uint256";
            }, {
                readonly name: "oracle";
                readonly type: "address";
            }, {
                readonly name: "asset";
                readonly type: "address";
            }, {
                readonly name: "unitOfAccount";
                readonly type: "address";
            }, {
                readonly name: "amountIn";
                readonly type: "uint256";
            }, {
                readonly name: "amountOutMid";
                readonly type: "uint256";
            }, {
                readonly name: "amountOutBid";
                readonly type: "uint256";
            }, {
                readonly name: "amountOutAsk";
                readonly type: "uint256";
            }];
        }, {
            readonly name: "collateralPriceInfo";
            readonly type: "tuple[]";
            readonly components: readonly [{
                readonly name: "queryFailure";
                readonly type: "bool";
            }, {
                readonly name: "queryFailureReason";
                readonly type: "bytes";
            }, {
                readonly name: "timestamp";
                readonly type: "uint256";
            }, {
                readonly name: "oracle";
                readonly type: "address";
            }, {
                readonly name: "asset";
                readonly type: "address";
            }, {
                readonly name: "unitOfAccount";
                readonly type: "address";
            }, {
                readonly name: "amountIn";
                readonly type: "uint256";
            }, {
                readonly name: "amountOutMid";
                readonly type: "uint256";
            }, {
                readonly name: "amountOutBid";
                readonly type: "uint256";
            }, {
                readonly name: "amountOutAsk";
                readonly type: "uint256";
            }];
        }, {
            readonly name: "oracleInfo";
            readonly type: "tuple";
            readonly components: readonly [{
                readonly name: "oracle";
                readonly type: "address";
            }, {
                readonly name: "name";
                readonly type: "string";
            }, {
                readonly name: "oracleInfo";
                readonly type: "bytes";
            }];
        }, {
            readonly name: "backupAssetPriceInfo";
            readonly type: "tuple";
            readonly components: readonly [{
                readonly name: "queryFailure";
                readonly type: "bool";
            }, {
                readonly name: "queryFailureReason";
                readonly type: "bytes";
            }, {
                readonly name: "timestamp";
                readonly type: "uint256";
            }, {
                readonly name: "oracle";
                readonly type: "address";
            }, {
                readonly name: "asset";
                readonly type: "address";
            }, {
                readonly name: "unitOfAccount";
                readonly type: "address";
            }, {
                readonly name: "amountIn";
                readonly type: "uint256";
            }, {
                readonly name: "amountOutMid";
                readonly type: "uint256";
            }, {
                readonly name: "amountOutBid";
                readonly type: "uint256";
            }, {
                readonly name: "amountOutAsk";
                readonly type: "uint256";
            }];
        }, {
            readonly name: "backupAssetOracleInfo";
            readonly type: "tuple";
            readonly components: readonly [{
                readonly name: "oracle";
                readonly type: "address";
            }, {
                readonly name: "name";
                readonly type: "string";
            }, {
                readonly name: "oracleInfo";
                readonly type: "bytes";
            }];
        }];
    }];
    readonly stateMutability: "view";
}];
/**
 * Euler V2 Oracle Fetcher module
 */
export declare const eulerV2Fetcher: {
    getCalls: typeof getEulerV2Calls;
    parse: typeof parseEulerV2Results;
    getAbi: typeof getEulerV2Abi;
};
//# sourceMappingURL=euler.d.ts.map