import { Token, Address, ExchangePrices, PoolPrices, AdapterExchangeParam, SimpleExchangeParam, PoolLiquidity, Logger, NumberAsString, DexExchangeParam } from '../../types'; import { SwapSide, Network } from '../../constants'; import { IDex, Context } from '../idex'; import { IDexHelper } from '../../dex-helper/idex-helper'; import { ERC4626Data, ERC4626Params, ERC4626PoolState } from './types'; import { SimpleExchange } from '../simple-exchange'; import { ERC4626EventPool } from './erc-4626-pool'; import { Interface } from '@ethersproject/abi'; export declare class ERC4626 extends SimpleExchange implements IDex { readonly network: Network; readonly dexKey: string; readonly dexHelper: IDexHelper; readonly vault: string; readonly asset: string; readonly cooldownEnabled: boolean; readonly decimals: number; readonly withdrawDisabled: boolean; readonly erc4626Interface: Interface; readonly hasConstantPriceLargeAmounts = true; readonly isFeeOnTransferSupported = false; readonly needWrapNative: boolean; static dexKeysWithNetwork: { key: string; networks: Network[]; }[]; readonly eventPool: ERC4626EventPool; logger: Logger; constructor(network: Network, dexKey: string, dexHelper: IDexHelper, vault?: string, asset?: string, cooldownEnabled?: boolean, decimals?: number, withdrawDisabled?: boolean, erc4626Interface?: Interface); getAdapters(side: SwapSide): { name: string; index: number; }[] | null; isAppropriatePair(srcToken: Token, destToken: Token): boolean; initializePricing(blockNumber: number): Promise; getPoolIdentifiers(srcToken: Token, destToken: Token, side: SwapSide, blockNumber: number): Promise; isAsset(tokenAddress: Address): boolean; isVault(tokenAddress: Address): boolean; isWrap(srcToken: Token, destToken: Token, side: SwapSide): boolean; getPricesVolume(srcToken: Token, destToken: Token, amounts: bigint[], side: SwapSide, blockNumber: number, limitPools?: string[]): Promise>; getCalldataGasCost(poolPrices: PoolPrices): number | number[]; updatePoolState(): Promise; getTopPoolsForToken(tokenAddress: Address, limit: number): Promise; getSimpleParam(srcToken: string, destToken: string, srcAmount: string, destAmount: string, data: ERC4626Data, side: SwapSide): Promise; getDexParam(srcToken: Address, destToken: Address, srcAmount: NumberAsString, destAmount: NumberAsString, recipient: Address, data: ERC4626Data, side: SwapSide, _: Context, executorAddress: Address): DexExchangeParam; getAdapterParam(srcToken: string, destToken: string, srcAmount: string, destAmount: string, data: ERC4626Data, side: SwapSide): AdapterExchangeParam; previewRedeem(shares: bigint, state: ERC4626PoolState): bigint; previewMint(shares: bigint, state: ERC4626PoolState): bigint; previewWithdraw(assets: bigint, state: ERC4626PoolState): bigint; previewDeposit(assets: bigint, state: ERC4626PoolState): bigint; redeemAllowed(state: ERC4626PoolState): boolean; withdrawAllowed(state: ERC4626PoolState): boolean; }