import { NetworkType } from "../core/chains"; import { AaveV2LPToken } from "../tokens/aave"; import { AuraStakedToken } from "../tokens/aura"; import { ConvexStakedPhantomToken } from "../tokens/convex"; import type { CurveLPToken } from "../tokens/curveLP"; import { ERC4626LPToken } from "../tokens/erc4626"; import { NormalToken } from "../tokens/normal"; import { StakingRewardsPhantomToken } from "../tokens/stakingRewards"; import { SupportedToken } from "../tokens/token"; import type { YearnLPToken } from "../tokens/yearn"; import { Address } from "../utils/types"; import { AdapterInterface } from "./adapters"; import { Protocols } from "./protocols"; export type UniswapV2Contract = "UNISWAP_V2_ROUTER" | "SUSHISWAP_ROUTER" | "FRAXSWAP_ROUTER"; export type CurvePoolContract = "CURVE_3CRV_POOL" | "CURVE_FRAX_USDC_POOL" | "CURVE_STETH_GATEWAY" | "CURVE_FRAX_POOL" | "CURVE_LUSD_POOL" | "CURVE_GUSD_POOL" | "CURVE_SUSD_POOL" | "CURVE_SUSD_DEPOSIT" | "CURVE_CRVETH_POOL" | "CURVE_CVXETH_POOL" | "CURVE_3CRYPTO_POOL" | "CURVE_LDOETH_POOL" | "CURVE_CRVUSD_USDC_POOL" | "CURVE_CRVUSD_USDT_POOL" | "CURVE_CRVUSD_FRAX_POOL" | "CURVE_TRI_CRV_POOL" | "CURVE_RETH_ETH_POOL" | "CURVE_USDE_USDC_POOL" | "CURVE_FRAX_USDE_POOL" | "CURVE_USDE_CRVUSD_POOL" | "CURVE_FRAX_SDAI_POOL" | "CURVE_DOLA_SUSDE_POOL" | "CURVE_DOLA_FRAXBP_POOL" | "CURVE_DOLA_CRVUSD_POOL" | "CURVE_USDE_DAI_POOL" | "CURVE_SDAI_SUSDE_POOL" | "CURVE_GHO_USDE_POOL" | "CURVE_PUFETH_WSTETH_POOL" | "CURVE_GHO_CRVUSD_POOL" | "CURVE_EZETH_ETH_POOL" | "CURVE_EZPZ_ETH_POOL" | "CURVE_LBTC_WBTC_POOL" | "CURVE_EBTC_WBTC_POOL" | "CURVE_PUMPBTC_WBTC_POOL" | "CURVE_TRIBTC_POOL" | "CURVE_tBTC_WBTC_POOL" | "CURVE_2CRV_POOL_ARB" | "CURVE_TRICRYPTO_CRVUSD_POOL_ARB" | "CURVE_CRVUSD_USDC_POOL_ARB" | "CURVE_CRVUSD_USDT_POOL_ARB" | "CURVE_CRVUSD_USDC_E_POOL_ARB" | "CURVE_USDE_USDC_POOL_ARB" | "CURVE_3CRV_POOL_OP" | "CURVE_ETH_WSTETH_GATEWAY_OP" | "CURVE_CRVUSD_SUSDE_POOL" | "CURVE_LLAMA_THENA_POOL" | "CURVE_DOLA_SCRVUSD_POOL" | "CURVE_LVLUSD_USDC_POOL" | "CURVE_SLVLUSD_LVLUSD_NG_POOL" | "CURVE_SLVLUSD_LVLUSD_POOL" | "CURVE_tETH_wstETH_POOL" | "CURVE_tETH_weETH_POOL" | "CURVE_pzETH_stETH_POOL" | "CURVE_USDL_USDC_POOL" | "CURVE_RLUSD_USDC_POOL"; export type YearnVaultContract = "YEARN_DAI_VAULT" | "YEARN_USDC_VAULT" | "YEARN_USDC_E_VAULT" | "YEARN_WETH_VAULT" | "YEARN_WBTC_VAULT" | "YEARN_USDT_VAULT" | "YEARN_OP_VAULT" | "YEARN_CURVE_FRAX_VAULT" | "YEARN_CURVE_STETH_VAULT"; export type ERC4626VaultContract = "MAKER_DSR_VAULT" | "YIELD_ETH_VAULT" | "STAKED_USDE_VAULT" | "STAKED_USDS_VAULT" | "SAVINGS_CRVUSD_VAULT" | "AAVE_WSTETH_VAULT" | "WRAPPED_USDL_VAULT" | "COINSHIFT_USDL_VAULT" | "LEVELED_USD_VAULT"; export type ConvexPoolContract = "CONVEX_3CRV_POOL" | "CONVEX_FRAX_USDC_POOL" | "CONVEX_GUSD_POOL" | "CONVEX_SUSD_POOL" | "CONVEX_STECRV_POOL" | "CONVEX_FRAX3CRV_POOL" | "CONVEX_LUSD3CRV_POOL" | "CONVEX_CRVETH_POOL" | "CONVEX_CVXETH_POOL" | "CONVEX_3CRYPTO_POOL" | "CONVEX_LDOETH_POOL" | "CONVEX_CRVUSD_USDC_POOL" | "CONVEX_CRVUSD_USDT_POOL" | "CONVEX_CRVUSD_FRAX_POOL" | "CONVEX_TRI_CRV_POOL" | "CONVEX_GHO_CRVUSD_POOL" | "CONVEX_CRVUSD_USDT_POOL_ARB" | "CONVEX_LLAMA_THENA_POOL" | "CONVEX_RLUSD_USDC_POOL"; export type AuraPoolContract = "AURA_B_RETH_STABLE_POOL" | "AURA_WEETH_RETH_POOL" | "AURA_OSETH_WETH_POOL" | "AURA_BPT_RETH_ETH_POOL" | "AURA_BPT_WSTETH_ETH_POOL" | "AURA_WSTETH_WETH_POOL_ARB" | "AURA_WSTETH_RETH_SFRXETH_POOL_ARB" | "AURA_CBETH_RETH_WSTETH_POOL_ARB" | "AURA_RETH_WETH_POOL_ARB"; export type AaveV2TokenWrapperContract = "AAVE_V2_DAI_TOKEN_WRAPPER" | "AAVE_V2_USDC_TOKEN_WRAPPER" | "AAVE_V2_USDT_TOKEN_WRAPPER" | "AAVE_V2_WETH_TOKEN_WRAPPER"; export type CompoundV2PoolContract = "COMPOUND_V2_DAI_POOL" | "COMPOUND_V2_USDC_POOL" | "COMPOUND_V2_USDT_POOL" | "COMPOUND_V2_ETH_GATEWAY" | "COMPOUND_V2_LINK_POOL" | "FLUX_USDC_POOL"; export type MellowVaultContract = "MELLOW_STEAKHOUSE_VAULT" | "MELLOW_RE7_LABS_VAULT" | "MELLOW_AMPHOR_VAULT" | "MELLOW_RESTAKING_VAULT" | "MELLOW_RENZO_VAULT" | "MELLOW_DECENTALIZED_VALIDATOR_VAULT"; export type StakingRewardsContract = "SKY_STAKING_REWARDS"; export type SupportedContract = UniswapV2Contract | "UNISWAP_V3_ROUTER" | "PANCAKESWAP_V3_ROUTER" | CurvePoolContract | "CURVE_GEAR_POOL" | YearnVaultContract | "CONVEX_BOOSTER" | "CONVEX_BOOSTER_ARB" | ConvexPoolContract | "AURA_BOOSTER" | AuraPoolContract | "LIDO_STETH_GATEWAY" | "LIDO_WSTETH" | "UNIVERSAL_ADAPTER" | "BALANCER_VAULT" | "BALANCER_V3_ROUTER" | "AAVE_V2_LENDING_POOL" | AaveV2TokenWrapperContract | CompoundV2PoolContract | ERC4626VaultContract | MellowVaultContract | "VELODROME_V2_ROUTER" | "EQUALIZER_ROUTER" | "VELODROME_CL_ROUTER" | "SHADOW_ROUTER" | "CAMELOT_V3_ROUTER" | "AAVE_V3_LENDING_POOL" | "ZIRCUIT_POOL" | "PENDLE_ROUTER" | StakingRewardsContract | "DAI_USDS"; export declare const contractsByNetwork: Record>; export declare const UNISWAP_V3_QUOTER: Address; export declare const CAMELOT_V3_QUOTER: Address; export declare const PANCAKESWAP_V3_QUOTER: Address; export declare const VELODROME_CL_QUOTER: Address; export declare const SHADOW_QUOTER: Address; export declare const VELODROME_V2_DEFAULT_FACTORY: Address; export declare const VELODROME_V2_CL_FACTORY: Address; export declare const EQUALIZER_DEFAULT_FACTORY: Address; export declare const MELLOW_COLLECTOR: Address; export declare const PENDLE_ROUTER_STATIC_MAINNET = "0x263833d47eA3fA4a30f269323aba6a107f9eB14C"; export declare const PENDLE_ROUTER_STATIC_ARBITRUM = "0xAdB09F65bd90d19e3148D9ccb693F3161C6DB3E8"; export declare const PENDLE_ROUTER_STATIC_OPTIMISM = "0x704478Dd72FD7F9B83d1F1e0fc18C14B54F034d0"; export declare const BALANCER_V3_QUERIES = "0xDfC266d1581be6E5F20Fc7138A8d5B38A5E33f98"; export interface BaseContractParams { name: string; } export type UniswapV2Params = { protocol: Protocols.Uniswap | Protocols.Sushiswap | Protocols.Fraxswap; type: AdapterInterface.UNISWAP_V2_ROUTER; } & BaseContractParams; export type VelodromeV2Params = { protocol: Protocols.Velodrome; type: AdapterInterface.VELODROME_V2_ROUTER; } & BaseContractParams; export type EqualizerParams = { protocol: Protocols.Equalizer; type: AdapterInterface.EQUALIZER_ROUTER; } & BaseContractParams; export type PendleRouterParams = { protocol: Protocols.Pendle; type: AdapterInterface.PENDLE_ROUTER; } & BaseContractParams; export type UniswapV3Params = { protocol: Protocols.Uniswap | Protocols.Pancakeswap | Protocols.Velodrome | Protocols.Shadow; type: AdapterInterface.UNISWAP_V3_ROUTER; quoter: Address; } & BaseContractParams; export type CamelotV3Params = { protocol: Protocols.Camelot; type: AdapterInterface.CAMELOT_V3_ROUTER; quoter: Address; } & BaseContractParams; export type CurveParams = { protocol: Protocols.Curve; type: AdapterInterface.CURVE_V1_2ASSETS | AdapterInterface.CURVE_V1_3ASSETS | AdapterInterface.CURVE_V1_4ASSETS | AdapterInterface.CURVE_V1_WRAPPER | AdapterInterface.CURVE_STABLE_NG; version: number; lpToken: CurveLPToken; tokens: Array; underlyings?: Array; wrapper?: CurvePoolContract; } & BaseContractParams; export type CurveSteCRVPoolParams = { protocol: Protocols.Curve; type: AdapterInterface.CURVE_V1_STECRV_POOL; version: number; pool: Record; tokens: ["WETH", "STETH"] | ["WETH", "wstETH"]; lpToken: "steCRV" | "wstETHCRV"; } & BaseContractParams; export type CurveGEARPoolParams = { protocol: Protocols.Curve; type: AdapterInterface.CURVE_V1_2ASSETS; version: number; pool: Record; tokens: ["GEAR", "WETH"]; lpToken: "GEAR"; } & BaseContractParams; export type YearnParams = { protocol: Protocols.Yearn; type: AdapterInterface.YEARN_V2; shareToken: YearnLPToken; } & BaseContractParams; export type ERC4626Params = { protocol: Protocols.MakerDSR | Protocols.Sommelier | Protocols.Ethena | Protocols.Sky | Protocols.Curve | Protocols.AaveV3 | Protocols.Lift | Protocols.LevelMoney; type: AdapterInterface.ERC4626_VAULT; underlying: NormalToken; } & BaseContractParams; export type ConvexParams = { protocol: Protocols.Convex; type: AdapterInterface.CONVEX_V1_BOOSTER; } & BaseContractParams; export type ConvexL2Params = { protocol: Protocols.Convex; type: AdapterInterface.CONVEX_L2_BOOSTER; } & BaseContractParams; export interface ConvexExtraPoolParams { rewardToken: NormalToken; poolAddress: Record; } export type ConvexPoolParams = { protocol: Protocols.Convex; type: AdapterInterface.CONVEX_V1_BASE_REWARD_POOL; stakedToken: ConvexStakedPhantomToken; extraRewards: Array; } & BaseContractParams; export type ConvexL2PoolParams = { protocol: Protocols.Convex; type: AdapterInterface.CONVEX_L2_REWARD_POOL; rewards: Array; extraRewards: Array; } & BaseContractParams; export type AuraPoolParams = { protocol: Protocols.Aura; type: AdapterInterface.CONVEX_V1_BASE_REWARD_POOL; stakedToken: AuraStakedToken; extraRewards: Array; } & BaseContractParams; export type AuraParams = { protocol: Protocols.Aura; type: AdapterInterface.CONVEX_V1_BOOSTER; } & BaseContractParams; export interface AuraExtraPoolParams { rewardToken: NormalToken; poolAddress: Record; } export type LidoParams = { protocol: Protocols.Lido; type: AdapterInterface.LIDO_V1; oracle: Record; lpToken: "steCRV"; } & BaseContractParams; export type LidoWsthETHParams = { protocol: Protocols.Lido; type: AdapterInterface.LIDO_WSTETH_V1; } & BaseContractParams; export type UniversalParams = { protocol: Protocols.Gearbox; type: AdapterInterface.UNIVERSAL; } & BaseContractParams; export type BalancerParams = { protocol: Protocols.Balancer | Protocols.Beets; type: AdapterInterface.BALANCER_VAULT; queries: Record; } & BaseContractParams; export type BalancerV3Params = { protocol: Protocols.Balancer; type: AdapterInterface.BALANCER_V3_ROUTER; queries: Record; } & BaseContractParams; export type AaveV2Params = { protocol: Protocols.AaveV2; type: AdapterInterface.AAVE_V2_LENDING_POOL; } & BaseContractParams; export type AaveV3Params = { protocol: Protocols.AaveV3; type: AdapterInterface.AAVE_V3_LENDING_POOL; } & BaseContractParams; export type WrapperAaveV2Params = { protocol: Protocols.AaveV2; type: AdapterInterface.AAVE_V2_WRAPPED_ATOKEN; underlying: AaveV2LPToken; } & BaseContractParams; export type CompoundV2Params = { protocol: Protocols.CompoundV2 | Protocols.Flux; type: AdapterInterface.COMPOUND_V2_CERC20 | AdapterInterface.COMPOUND_V2_CETHER; underlying: NormalToken; } & BaseContractParams; export type ZircuitParams = { protocol: Protocols.Zircuit; type: AdapterInterface.ZIRCUIT_POOL; } & BaseContractParams; export type MellowVaultParams = { protocol: Protocols.Mellow; type: AdapterInterface.MELLOW_LRT_VAULT | AdapterInterface.MELLOW_ERC4626_VAULT; } & BaseContractParams; export type StakingRewardsParams = { protocol: Protocols.Sky; type: AdapterInterface.STAKING_REWARDS; stakedToken: StakingRewardsPhantomToken; } & BaseContractParams; export type DaiUsdsParams = { protocol: Protocols.Sky; type: AdapterInterface.DAI_USDS_EXCHANGE; } & BaseContractParams; export type ContractParams = UniswapV2Params | UniswapV3Params | CamelotV3Params | VelodromeV2Params | EqualizerParams | CurveParams | CurveSteCRVPoolParams | CurveGEARPoolParams | YearnParams | ConvexParams | ConvexPoolParams | ConvexL2Params | ConvexL2PoolParams | LidoParams | LidoWsthETHParams | UniversalParams | BalancerParams | BalancerV3Params | AaveV2Params | AaveV3Params | WrapperAaveV2Params | CompoundV2Params | AuraParams | AuraPoolParams | ERC4626Params | ZircuitParams | MellowVaultParams | PendleRouterParams | StakingRewardsParams | DaiUsdsParams; export declare const contractParams: Record; export declare const contractsByAddress: Record; export declare const isSupportedContract: (t: unknown) => t is SupportedContract;