import { Token, Address, ExchangePrices, AdapterExchangeParam, DexExchangeParam, PoolLiquidity, Logger, NumberAsString, PoolReserves } from '../../types'; import { SwapSide, Network } from '../../constants'; import { IDex } from '../../dex/idex'; import { IDexHelper } from '../../dex-helper/idex-helper'; import { AaveV3PtRollOverData } from './types'; import { SimpleExchange } from '../simple-exchange'; export declare class AaveV3PtRollOver extends SimpleExchange implements IDex { readonly network: Network; readonly dexKey: string; readonly dexHelper: IDexHelper; protected unitPrice: bigint; readonly hasConstantPriceLargeAmounts = false; readonly needWrapNative = false; readonly isFeeOnTransferSupported = false; private config; private marketsCache; private oracleInterface; logger: Logger; static dexKeysWithNetwork: { key: string; networks: Network[]; }[]; constructor(network: Network, dexKey: string, dexHelper: IDexHelper, unitPrice?: bigint); getAdapters(): { name: string; index: number; }[] | null; initializePricing(blockNumber: number): Promise; /** * Fetch real market data from Pendle API - Use static configuration for now * Note: Market discovery endpoints may require authentication */ private fetchRealMarketData; /** * Populate markets from static configuration when API is unavailable * This uses the actual market addresses from the configuration, not mock data */ private populateFallbackMarkets; /** * Get market details for a given PT address */ private getMarketForPt; /** * Batch all oracle calls using multicall for better performance */ private batchOracleCallsMulticall; isOldPendleToken(address: Address): boolean; isNewPendleToken(address: Address): boolean; isAppropriatePair(srcToken: Token, destToken: Token): boolean; getPoolIdentifiers(srcToken: Token, destToken: Token, side: SwapSide, blockNumber: number): Promise; getPoolIdentifier(srcToken: Token, destToken: Token): string; getPricesVolume(srcToken: Token, destToken: Token, amounts: bigint[], side: SwapSide, blockNumber: number, limitPools?: string[]): Promise>; getCalldataGasCost(): number | number[]; getAdapterParam(srcToken: string, destToken: string, srcAmount: string, destAmount: string, data: AaveV3PtRollOverData, side: SwapSide): AdapterExchangeParam; getPoolReserves(): PoolReserves[]; getTopPoolsForToken(tokenAddress: Address, limit: number): Promise; updatePoolState(): Promise; getDexParam(srcToken: Address, destToken: Address, srcAmount: NumberAsString, destAmount: NumberAsString, recipient: Address, data: AaveV3PtRollOverData, side: SwapSide, executorAddress: Address): Promise; /** * Call Pendle SDK API for transaction construction */ private callPendleSdkApi; }