import { BigNumberish, BrowserProvider, Contract, ethers, JsonRpcProvider, Networkish, Numeric, Signer } from "ethers"; import { Contract as MulticallContract, Provider as MulticallProvider } from "@curvefi/ethcall"; import { Abi, IChainId, ICurve, IDict, IExtendedPoolDataFromApi, IFactoryPoolType, IGasStrategy, INetworkConstants, IPoolData, IPoolType } from "./interfaces"; export declare const OLD_CHAINS: number[]; export declare const memoizedContract: () => (address: string, abi: any, provider: BrowserProvider | JsonRpcProvider | Signer) => Contract; export declare const memoizedMulticallContract: () => (address: string, abi: any) => MulticallContract; export type ContractItem = { contract: Contract; multicallContract: MulticallContract; abi: Abi; }; export declare class Curve implements ICurve { provider: ethers.BrowserProvider | ethers.JsonRpcProvider; isNoRPC: boolean; multicallProvider: MulticallProvider; signer: ethers.Signer | null; signerAddress: string; chainId: IChainId; isLiteChain: boolean; contracts: { [index: string]: ContractItem; }; feeData: { gasPrice?: number; maxFeePerGas?: number; maxPriorityFeePerGas?: number; }; gasStrategy: IGasStrategy; constantOptions: { gasLimit?: number; }; options: { gasPrice?: number | bigint; maxFeePerGas?: number | bigint; maxPriorityFeePerGas?: number | bigint; }; L1WeightedGasPrice?: number; constants: INetworkConstants; nativeTokenAddress: string; poolAddressMapCache: IDict | null; routerBlacklist: string[]; constructor(); init(providerType: 'JsonRpc' | 'Web3' | 'Infura' | 'Alchemy' | 'NoRPC', providerSettings: { url?: string; privateKey?: string; batchMaxCount?: number; } | { externalProvider: ethers.Eip1193Provider; } | { network?: Networkish; apiKey?: string; } | 'NoRPC', options?: { gasPrice?: number; maxFeePerGas?: number; maxPriorityFeePerGas?: number; gasStrategy?: IGasStrategy; chainId?: number; poolsData?: Record; }): Promise; initContract: (address: string, abi: any, provider: BrowserProvider | JsonRpcProvider | Signer) => Contract; initMulticallContract: (address: string, abi: any) => MulticallContract; setContract(address: string | undefined, abi: any): void; _filterHiddenPools(pools: IDict, isFiltered?: boolean): Promise>; _updateDecimalsAndGauges(pools: IDict): void; fetchFactoryPools: (useApi?: boolean, isFiltered?: boolean) => Promise; fetchCrvusdFactoryPools: (useApi?: boolean, isFiltered?: boolean) => Promise; fetchCryptoFactoryPools: (useApi?: boolean, isFiltered?: boolean) => Promise; fetchStableNgFactoryPools: (useApi?: boolean, isFiltered?: boolean) => Promise; fetchTworyptoFactoryPools: (useApi?: boolean, isFiltered?: boolean) => Promise; fetchTricryptoFactoryPools: (useApi?: boolean, isFiltered?: boolean) => Promise; fetchNewFactoryPools: () => Promise; fetchNewCryptoFactoryPools: () => Promise; fetchNewStableNgFactoryPools: () => Promise; fetchNewTwocryptoFactoryPools: () => Promise; fetchNewTricryptoFactoryPools: () => Promise; fetchRecentlyDeployedFactoryPool: (poolAddress: string) => Promise; fetchRecentlyDeployedCryptoFactoryPool: (poolAddress: string) => Promise; fetchRecentlyDeployedStableNgFactoryPool: (poolAddress: string) => Promise; fetchRecentlyDeployedTwocryptoFactoryPool: (poolAddress: string) => Promise; fetchRecentlyDeployedTricryptoFactoryPool: (poolAddress: string) => Promise; getMainPoolList: () => string[]; getFactoryPoolList: () => string[]; getCrvusdFactoryPoolList: () => string[]; getCryptoFactoryPoolList: () => string[]; getStableNgFactoryPoolList: () => string[]; getTworyptoFactoryPoolList: () => string[]; getTricryptoFactoryPoolList: () => string[]; getPoolList: () => string[]; getPoolsData: () => IDict; getGaugeImplementation: (factoryType: IFactoryPoolType) => string; setCustomFeeData(customFeeData: { gasPrice?: number; maxFeePerGas?: number; maxPriorityFeePerGas?: number; }): void; setGasStrategy(strategy: IGasStrategy): void; formatUnits(value: BigNumberish, unit?: string | Numeric): string; parseUnits(value: string, unit?: string | Numeric): bigint; updateFeeData(): Promise; getNetworkConstants: () => INetworkConstants; getIsLiteChain: () => boolean; isEth: (address: string) => boolean; getEthIndex: (addresses: string[]) => number; } export declare const curve: Curve;