import * as _$viem from "viem"; import { Address, Client, Hash, Hex, PublicClient, TestClient, TransactionReceipt, WalletClient } from "viem"; import { Campaign, createClient } from "@steerprotocol/api-sdk"; import { Pool } from "@uniswap/v3-sdk"; import { Decimal } from "decimal.js"; //#region src/utils/subgraph-types.d.ts /** * Types for Steer subgraph responses */ interface SubgraphVaultPosition { id: string; upperTick: string; lowerTick: string; relativeWeight: string; } interface SubgraphVaultDetails { id: string; name: string; token0: string; token1: string; pool: string; weeklyFeeAPR: string; token0Symbol: string; token0Decimals: string; token1Symbol: string; token1Decimals: string; totalValueLockedToken0: string; totalValueLockedToken1: string; token0Balance: string; token1Balance: string; totalLPTokensIssued: string; createdAt: string; feeTier: string; strategyToken: { id: string; name: string; creator: { id: string; }; admin: string; executionBundle: string; }; positions: SubgraphVaultPosition[]; fees0: string; fees1: string; beaconName: string; payloadIpfs: string; deployer: string; } interface RouteShortcut { poolIds: string[]; tokenPath: string[]; } interface FormattedRoute { path: string; pricesPerHop: string; finalPrice: string; finalPriceRaw: number; volumeScore: string; poolVolumes: string; shortcut: RouteShortcut; } interface LpPriceResponse { vault: { address: Address; token0: Address; token1: Address; balances: { token0: string; token1: string; totalSupply: string; token0Formatted: string; token1Formatted: string; totalSupplyFormatted: string; }; usd: { lpValue: number; totalValue: number; token0Price: number; token0Value: number; token1Price: number; token1Value: number; }; token0Symbol: string; token1Symbol: string; token0Decimals: string; token1Decimals: string; }; routes: { token0ToUsd: FormattedRoute[]; token1ToUsd: FormattedRoute[]; }; } interface SubgraphVaultDetailsWithLpData extends SubgraphVaultDetails { lpPriceData?: LpPriceResponse; } interface SubgraphResponse { data: { vaults: T[]; }; } interface DeprecationData { id: string; visible: boolean; } interface VaultFetchOptions { subgraphUrl: string; chainId: number; showDeprecated?: boolean; showCurrentProtocol?: boolean; beaconNames?: string[]; batchSize?: number; } //#endregion //#region src/const/chain.d.ts declare enum Chain { Polygon = "Polygon", Arbitrum = "Arbitrum", Optimism = "Optimism", BSC = "BSC", Evmos = "Evmos", Metis = "Metis", Thundercore = "Thundercore", Base = "Base", Avalanche = "Avalanche", PolygonzkEVM = "PolygonzkEVM", Celo = "Celo", Kava = "Kava", Linea = "Linea", Scroll = "Scroll", Manta = "Manta", Astar = "Astar", Fantom = "Fantom", OkxTestnet = "OkxTestnet", Mantle = "Mantle", AstarZkevm = "AstarZkevm", Blast = "Blast", Mode = "Mode", XLayer = "XLayer", Telos = "Telos", Rootstock = "Rootstock", Taiko = "Taiko", ZklinkNova = "ZklinkNova", Flare = "Flare", BeraChainBartio = "BeraChainBartio", Filecoin = "Filecoin", Apechain = "Apechain", Zircuit = "Zircuit", Moonbeam = "Moonbeam", Sei = "Sei", Sonic = "Sonic", Zeta = "Zeta", Soneium = "Soneium", Mainnet = "Mainnet", Bera = "Bera", Unichain = "Unichain", TataraTestnet = "TataraTestnet", Hemi = "Hemi", Core = "Core", Peaq = "Peaq", Katana = "Katana", Ronin = "Ronin", Saga = "Saga", Nibiru = "Nibiru", Hyperevm = "Hyperevm", Bittensor = "Bittensor", Robinhood = "Robinhood" } declare const ChainId: { [key in Chain]: number }; declare enum Protocol { QuickSwap = "QuickSwap", Uniswap = "Uniswap", Sushi = "Sushi", Forge = "Forge", PancakeSwap = "PancakeSwap", Maia = "Maia", Retro = "Retro", Kinetix = "Kinetix", MetaVault = "MetaVault", QuickSwapUniv3 = "QuickSwapUniv3", Camelot = "Camelot", Lynex = "Lynex", Thena = "Thena", Horiza = "Horiza", BaseX = "BaseX", ArthSwap = "ArthSwap", Hercules = "Hercules", Thick = "Thick", Crust = "Crust", Thruster = "Thruster", FusionX = "FusionX", SupSwap = "SupSwap", SwapMode = "SwapMode", BaseSwap = "BaseSwap", PoolShark = "PoolShark", Kim = "Kim", Swapsicle = "Swapsicle", Equilibre = "Equilibre", QuickSwapAlgebra = "QuickSwapAlgebra", Fenix = "Fenix", LineHub = "LineHub", Henjin = "Henjin", NovaSwap = "NovaSwap", Spark = "Spark", Spark32 = "Spark32", Kodiak = "Kodiak", Ocelex = "Ocelex", StellaSwap = "StellaSwap", BeamSwap = "BeamSwap", DragonSwap = "DragonSwap", SpookySwap = "SpookySwap", SilverSwap = "SilverSwap", ThickV2 = "ThickV2", Beam = "Beam", QuickSwapIntegral = "QuickSwapIntegral", Kyo = "Kyo", Wasabee = "Wasabee", Katana = "Katana", Eddy = "Eddy", Dodo = "Dodo", Glyph = "Glyph", Sailor = "Sailor", Shadow = "Shadow", MachineX = "MachineX", KatanaIntegral = "KatanaIntegral", Blackhole = "Blackhole", Aerodrome = "Aerodrome", AerodromeV2 = "AerodromeV2", Nest = "Nest", Cypher = "Cypher", SparkIntegral = "SparkIntegral", UniswapV4 = "UniswapV4", Hydrex = "Hydrex", BittensorUniV3 = "BittensorUniV3", AerodromeV3 = "AerodromeV3" } declare enum StrykePositionManagers { StrykeEqualizerManager = "StrykeEqualizerPositionManager", StrykeShadowManager = "StrykeShadowManager" } declare enum MultiPositionManagers { MultiPositionUniswapV3 = "MultiPositionUniswapV3", MultiPositionSushi = "MultiPositionSushi", MultiPositionForge = "MultiPositionForge", MultiPositionMAIA = "MultiPositionMAIA", MultiPositionPancake = "MultiPositionPancake", MultiPositionRetro = "MultiPositionRetro", MultiPositionKinetix = "MultiPositionKinetix", MultiPositionQuickSwap = "MultiPositionQuickSwap", MultiPositionQuickSwapUniv3 = "MultiPositionQuickSwapUniv3", MultiPositionMetaVault = "MultiPositionMetaVault", MultiPositionCamelot = "MultiPositionCamelot", MultiPositionLynex = "MultiPositionLynex", MultiPositionThena = "MultiPositionThena", MultiPositionHoriza = "MultiPositionHoriza", MultiPositionBaseX = "MultiPositionBasex", MultiPositionArthSwap = "MultiPositionArthSwap", MultiPositionHercules = "MultiPositionHercules", MultiPositionThick = "MultiPositionThick", MultiPositionCrust = "MultiPositionCrust", MultiPositionThruster = "MultiPositionThruster", MultiPositionFusionX = "MultiPositionFusionx", MultiPositionSupSwap = "MultiPositionSupSwap", MultiPositionSwapMode = "MultiPositionSwapMode", MultiPositionBaseSwap = "MultiPositionBaseSwap", MultiPositionQuickswap19 = "MultiPositionQuickSwap19", MultiPositionPoolShark = "MultiPositionPoolShark", MultiPositionKim = "MultiPositionKim", MultiPositionSwasicle = "MultiPositionSwapsicle", MultiPositionEquilibre = "MultiPositionEquilibre", MultiPositionFenix = "MultiPositionFenix", MultiPositionLineHub = "MultiPositionLineHub", MultiPositionHenjin = "MultiPositionHenjin", MultiPositionNovaSwap = "MultiPositionNovaSwap", MultiPositionSpark = "MultiPositionSpark", MultiPositionSpark32 = "MultipositionSpark32", MultiPositionKodiak = "MultiPositionKodiak", MultiPositionOcelex = "MultiPositionOcelex", MultiPositionStellaSwap = "MultiPositionStellaSwap", MultiPositionBeamSwap = "MultiPositionBeamSwap", MultiPositionDragonSwap = "MultiPositionDragonSwap", MultiPositionSpookySwap = "MultiPositionSpookySwap", MultiPositionSilverSwap = "MultiPositionSilverSwap", MultiPositionThickV2 = "MultiPositionThickV2", MultiPositionBeam = "MultiPositionBeam", MultiPositionQuickSwapIntegral = "MultiPositionQuickSwapIntegral", MultiPositionKyo = "MultiPositionKyo", MultiPositionSailor = "MultiPositionSailor", MultiPositionWasabee = "MultiPositionWasabee", MultiPositionEddy = "MultiPositionEddy", MultiPositionDodo = "MultiPositionDodo", MultiPositionGlyph = "MultiPositionGlyph", MultiPositionKatana = "MultiPositionKatana", MultiPositionShadow = "MultiPositionShadow", MultiPositionMachineX = "MultiPositionMachineX", MultiPositionKatanaIntegral = "MultiPositionKatanaIntegral", MultiPositionUniswapV4ALM = "MultiPositionUniswapV4", MultiPositionUniswapV4Hook = "UniswapV4Hook", MultiPositionUniswapV4HookOld = "MultiPositionUniHookTest", MultiPositionBlackhole = "MultiPositionBlackHole", MultiPositionBlackholeOld = "MultiPositionBlackhole", AlgebraHook = "AlgebraHook", MultiPositionAerodrome = "MultiPositionAerodrome", MultiPositionAerodromeV2 = "AerodromeStakedPositionManager", MultiPositionAerodromeV3 = "AerodromeStakedPositionManagerV3", MultiPositionNest = "MultiPositionNest", MultiPositionCypher = "MultiPositionCypher", MultiPositionSushiManaged = "MultiPositionSushiManaged", MultiPositionSparkIntegral = "MultiPositionSparkIntegral", MultiPositionHenjinAlgebraHook = "HenjinIntegralHook", MultiPositionHydrex = "MultiPositionHydrex", MultiPositionBittensorUniV3 = "MultiPositionBittensorUniV3", MultiPositionReserveV4 = "MultiPositionReserveV4", TestCypherAlgebraIntegralHook = "TestCypherAlgebraIntegralHook", TestQuickswapAlgebraIntegralHook = "TestQuickswapAlgebraIntegralHook", TestUniswapJITHook = "TestUniswapJITHook", MultiPositionUniswapV4NoOracle = "MultiPositionUniswapV4NoOracle" } declare const AlgebgraHookBeacons: MultiPositionManagers[]; declare const UniswapV4Beacons: readonly [MultiPositionManagers.MultiPositionUniswapV4ALM, MultiPositionManagers.MultiPositionUniswapV4HookOld, MultiPositionManagers.TestUniswapJITHook, MultiPositionManagers.MultiPositionUniswapV4Hook, MultiPositionManagers.MultiPositionReserveV4, MultiPositionManagers.MultiPositionUniswapV4NoOracle]; declare const UniswapHookBeacons: readonly [MultiPositionManagers.MultiPositionUniswapV4Hook, MultiPositionManagers.TestUniswapJITHook, MultiPositionManagers.MultiPositionUniswapV4HookOld]; //#endregion //#region src/const/network.d.ts /** * Interface representing a smart contract with its address and optional start block */ interface Contract { /** The contract's deployed address */ address: string; /** The block number where the contract was deployed */ startBlock?: number; } /** * Interface defining the structure of contract addresses for a protocol */ interface ContractAddresses { /** Keeper Registry contract */ KeeperRegistry: Contract; /** Orchestrator contract */ Orchestrator: Contract; /** Strategy Registry contract */ StrategyRegistry: Contract; /** Vault Registry contract */ VaultRegistry: Contract; /** Bundle Registry contract */ BundleRegistry: Contract; /** Steer Periphery contract */ SteerPeriphery: Contract; /** Gas Vault contract */ GasVault: Contract; /** Optional Runner Registry contract */ RunnerRegistry?: Contract; /** Optional Pool Helper contract */ PoolHelper?: Contract; /** Optional Whitelist Registry contract */ WhitelistRegistry?: Contract; /** Optional Dynamic Jobs contract */ DynamicJobs?: Contract; /** Optional Steer Token contract */ SteerToken?: Contract; /** Optional Static Jobs contract */ StaticJobs?: Contract; Helper?: Contract; SingleAssetDeposit?: Contract; FeeManager?: Contract; } /** * Interface extending ContractAddresses with network-specific configuration */ interface NetworkConfig extends ContractAddresses { /** Chain ID of the network */ chainId: number; /** Transaction type used on the network (0 = legacy, 1 = EIP-2930, 2 = EIP-1559) */ transactionType: number; /** Address of the network's native token wrapper contract */ address: string; /** Optional chain name */ name: Chain; /** Whether token wrapping is enabled on this network */ isWrappingEnabled?: boolean; /** Symbol of the wrapped native token */ wrappedNativeToken?: string; } /** * Type representing the contract name keys from ContractAddresses */ type ContractName = keyof ContractAddresses; /** * Interface mapping Chain enum values to their NetworkConfig */ interface Networks extends Record {} declare const networks: Networks; /** * Retrieves a contract address for a specific chain ID and contract name. * * @param chainId - The numeric identifier of the blockchain network * @param contractName - The name of the contract to look up * @returns The contract address if found, undefined otherwise * @example * ```typescript * const address = getContractAddressByChainIdAndContractName(1, 'KeeperRegistry'); * ``` */ declare function getContractAddressByChainIdAndContractName(chainId: number, contractName: ContractName): string | undefined; declare function getNetworkByChainId(chainId: number): NetworkConfig | undefined; /** * Retrieves the Pool Helper contract information for a specific chain ID. * * @param chainId - The numeric identifier of the blockchain network * @returns The Pool Helper contract information if found, undefined otherwise * @example * ```typescript * const poolHelper = getPoolHelperByChainId(1); * ``` */ declare function getPoolHelperByChainId(chainId: number): Contract | undefined; /** * Converts a chain ID to its corresponding chain name. * * @param chainId - The numeric identifier of the blockchain network * @returns The chain name if found, undefined otherwise * @example * ```typescript * const chainName = chainIdToName(137); // Returns "Polygon" * const chainName = chainIdToName(1); // Returns "Mainnet" * ``` */ declare function chainIdToName(chainId: number): Chain | undefined; /** * Converts a chain name to its corresponding chain ID. * * @param chainName - The chain name to look up * @returns The chain ID if found, undefined otherwise * @example * ```typescript * const chainId = chainNameToId(Chain.Polygon); // Returns 137 * const chainId = chainNameToId(Chain.Mainnet); // Returns 1 * ``` */ declare function chainNameToId(chainName: Chain): number | undefined; declare function isSingleAssetDepositSupported(chainId: number): boolean; //#endregion //#region src/types.d.ts /** * Configuration object for initializing the SteerClient * @interface SteerConfig */ interface SteerConfig { /** The environment to use for API calls */ environment?: 'production' | 'development'; /** The viem client for blockchain interactions */ client: Client | TestClient; /** Optional wallet client for write operations */ walletClient?: WalletClient; /** Optional Subgraph Studio API key for higher rate limits */ subgraphStudioKey?: string; } interface SteerResponse { data: T | null; status: number; success: boolean; error?: string; } interface BaseVaultDetails { vaultType: string; token0: Address; token1: Address; name: string; symbol: string; decimals: bigint; token0Name: string; token1Name: string; token0Symbol: string; token1Symbol: string; token0Decimals: bigint; token1Decimals: bigint; totalLPTokensIssued: bigint; token0Balance: bigint; token1Balance: bigint; vaultCreator: Address; } interface VaultDetails extends BaseVaultDetails { feeTier: bigint; } interface AlgebraVaultDetails extends BaseVaultDetails {} interface VaultDetailsResponse { details: VaultDetails | AlgebraVaultDetails; ratio: number | bigint | string; } interface TokenData { id: Address; decimals: string; symbol: string; name: string; } interface PoolData { id: Address; token0: TokenData; token1: TokenData; chainId: number; feeTier: number; tickSpacing: number | bigint; tick?: string; liquidity?: string; volumeUSD?: string; volumeToken0?: string; volumeToken1?: string; totalValueLockedETH?: string; totalValueLockedUSD?: string; } interface Slot0 { price?: bigint; sqrtPriceX96?: bigint; tick: number; observationIndex: number | bigint; observationCardinality: number; observationCardinalityNext: number; feeProtocol: number; unlocked: boolean; } interface PoolsharkStructs { samples: { index: number; count: number; countMax: number; }; feeGrowthGlobal0: bigint; feeGrowthGlobal1: bigint; secondsPerLiquidityAccum: bigint; price: bigint; liquidity: bigint; tickSecondsAccum: number; tickAtPrice: number; protocolSwapFee0: number; protocolSwapFee1: number; } interface LimitPoolState { price: bigint; liquidity: bigint; protocolFees: bigint; protocolFillFee: number; tickAtPrice: number; } interface PoolSharkGlobalState { pool: PoolsharkStructs; pool0: LimitPoolState; pool1: LimitPoolState; liquidityGlobal: bigint; positionIdNext: number; epoch: number; unlocked: number; } interface GlobalStateABI { price: bigint; tick: number; prevInitializedTick?: number; fee?: number; feeZto?: number; feeOtz?: number; timepointIndex: number; communityFee?: number; communityFeeToken0?: number; communityFeeToken1?: number; unlocked: boolean; } type SupportedProtocol = keyof { [chain in Protocol]: string }; type SteerSupportedChains = keyof { [chain in Chain]: string }; type ProtocolInfo = { deprecated?: boolean; subgraph: Partial<{ [chain in Chain]: string }>; factoryAddress?: Partial<{ [chain in Chain]: string }>; NFTManagerAddress?: Partial<{ [chain in Chain]: string }>; swapRouterAddress?: Partial<{ [chain in Chain]: string }>; TickLensAddress?: Partial<{ [chain in Chain]: string }>; QuoterV2Address?: Partial<{ [chain in Chain]: string }>; beaconContract?: string; additionalBeaconContracts?: string[]; strykeBeaconContract?: string; initCodeHash?: Partial<{ [chain in Chain]: string }>; PoolManager?: Partial<{ [chain in Chain]: string }>; PositionManager?: Partial<{ [chain in Chain]: string }>; Quoter?: Partial<{ [chain in Chain]: string }>; PositionDescriptor?: Partial<{ [chain in Chain]: string }>; StateView?: Partial<{ [chain in Chain]: string }>; ReservesLens?: Partial<{ [chain in Chain]: string }>; UniversalRouter?: Partial<{ [chain in Chain]: string }>; Permit2?: Partial<{ [chain in Chain]: string }>; beaconContractSushiManaged?: string; EntryPointAddress?: Partial<{ [chain in Chain]: string }>; beaconAlgebraHook?: string; algebraHookSupportedChains?: Chain[]; algebraHookBeaconsByChain?: Partial<{ [chain in Chain]: string[] }>; }; type AMMConfigType = Partial<{ [protocol in SupportedProtocol]: ProtocolInfo }>; interface Fee { feeIdentifier: string; feeValue: bigint; } interface FeeManagerConfigParams { vault: Address; feeIdentifiers: string[]; feeValues: bigint[]; withdrawers: Address[]; } interface DefaultFeeManagerConfigParams extends FeeManagerConfigParams { totalVaultFees: bigint; } interface FeeWithdrawalParams { vault: Address; feeIdentifier: string; amount0: bigint; amount1: bigint; } interface MultipleFeeWithdrawalParams { vault: Address; feeIdentifiers: string[]; amounts0: bigint[]; amounts1: bigint[]; } interface MultiVaultFeeWithdrawalParams { vaults: Address[]; feeIdentifiers: string[][]; amounts0: bigint[][]; amounts1: bigint[][]; } //#endregion //#region src/const/protocol.d.ts /** * Enum representing supported staking protocols */ declare enum StakingProtocol { Forge = "Forge", Kinetix = "Kinetix", Uniswap = "Uniswap", SushiSwap = "SushiSwap", QuickSwapV3 = "QuickSwapV3", ArthSwap = "ArthSwap", arthswap = "arthswap", Swapsicle = "Swapsicle", Spark = "Spark", Spark32 = "Spark32" } /** * Checks if a given string is a valid StakingProtocol enum value. * * @param protocol - The protocol string to validate * @returns True if the protocol is a valid StakingProtocol, false otherwise * @example * ```typescript * if (isValidStakingProtocol('Uniswap')) { * // Handle valid protocol * } * ``` */ declare function isValidStakingProtocol(protocol: string | null | undefined): protocol is StakingProtocol; /** * Normalizes a protocol string to its corresponding StakingProtocol enum value. * * @param protocol - The protocol string to normalize * @returns The normalized StakingProtocol enum value * @throws Error if the protocol string is invalid * @example * ```typescript * const protocol = normalizeProtocol('uniswap'); * // Returns: StakingProtocol.Uniswap * ``` */ declare function normalizeProtocol(protocol: string): StakingProtocol; /** * List of protocols that implement the Algebra interface */ declare const ALGEBRA_PROTOCOLS: Protocol[]; declare const SHADOW_PROTOCOLS: Protocol[]; /** * List of protocols that implement directional Algebra interface */ declare const DIRECTIONAL_ALGEBRA_PROTOCOLS: Protocol[]; /** * List of protocols that implement the PoolShark interface */ declare const POOLSHARK_PROTOCOLS: Protocol[]; /** * List of protocols that implement the Algebra Integral interface */ declare const ALGEBRA_INTEGRAL_PROTOCOLS: Protocol[]; declare const AERODROME_PROTOCOLS: Protocol[]; declare const ALGEBRA_INTEGRAL_V_2_0_PROTOCOLS: Protocol[]; /** * Checks if a protocol implements the Algebra interface. * * @param protocol - The protocol to check * @returns True if the protocol implements Algebra, false otherwise */ declare const isAlgebraProtocol: (protocol: SupportedProtocol) => boolean; /** * Checks if a protocol implements the Shadow interface. * * @param protocol - The protocol to check * @returns True if the protocol implements Shadow, false otherwise */ declare const isShadowProtocol: (protocol: SupportedProtocol) => boolean; /** * Checks if a protocol implements the ThickV2 interface. * * @param protocol - The protocol to check * @returns True if the protocol implements ThickV2, false otherwise */ declare const isThickV2Protocol: (protocol: SupportedProtocol) => boolean; /** * Checks if a protocol implements the Algebra Direction interface. * * @param protocol - The protocol to check * @returns True if the protocol implements Algebra Direction, false otherwise */ declare const isAlgebraDirectionProtocol: (protocol: SupportedProtocol) => boolean; /** * Checks if a protocol implements the Algebra Integral interface. * * @param protocol - The protocol to check * @returns True if the protocol implements Algebra Integral, false otherwise */ declare const isAlgebraIntegralProtocol: (protocol: SupportedProtocol) => boolean; /** * Checks if a protocol implements the PoolShark interface. * * @param protocol - The protocol to check * @returns True if the protocol implements PoolShark, false otherwise */ declare const isPoolSharkProtocol: (protocol: SupportedProtocol) => boolean; declare const isAerodromeVault: (protocol: SupportedProtocol) => boolean; declare const isAlgebraIntegralV2Protocol: (protocol: SupportedProtocol) => boolean; declare const getProtcolTypeByAmmType: (ammType: AMMType) => Protocol; //#endregion //#region src/const/subgraph.d.ts /** * Interface representing network-specific data and configuration */ interface NetworkData { /** Chain ID of the network */ chainId: number; /** Symbol of the wrapped native token */ wrappedNativeToken: string; /** Address of the network's native token wrapper contract */ address: string; /** Optional network name */ name?: string; } /** * URL for accessing deprecated bundle information */ declare const deprecatedBundlesURL = "https://api.steer.finance/deprecated-bundles"; declare const steerSubgraphConfig: { [protocol in SteerSupportedChains]: string }; /** * Retrieves the subgraph URL for a given chain ID. * * @param chainId - The numeric identifier of the blockchain network * @returns The subgraph URL for the given chain ID, or undefined if not found * @example * ```typescript * const subgraphUrl = getSubgraphUrlByChainId(1); * // Returns the Ethereum mainnet subgraph URL * ``` */ declare function getSubgraphUrlByChainId(chainId: number): string | undefined; //#endregion //#region src/const/thegraph.d.ts declare const getTheGraphResolverUrl: (subgraphId: string, isDeploymentId: boolean, apiKey: string) => string; //#endregion //#region src/const/api.d.ts /** * API URLs for different environments and versions */ declare const API_URLS: { readonly v1: { readonly production: "https://s55qpiwei1.execute-api.us-east-1.amazonaws.com"; readonly development: "https://s55qpiwei1.execute-api.us-east-1.amazonaws.com"; }; }; /** * Get the API URL for a specific environment and version * @param environment - The environment to get the URL for * @param version - The API version to use (defaults to v1) * @returns The API URL for the specified environment and version */ declare function getApiUrl(environment: 'production' | 'development', version?: keyof typeof API_URLS): string; //#endregion //#region src/const/abis/erc20.d.ts declare const erc20Abi: ({ inputs: { internalType: string; name: string; type: string; }[]; name: string; outputs: { internalType: string; name: string; type: string; }[]; stateMutability: string; type: string; anonymous?: undefined; } | { anonymous: boolean; inputs: { indexed: boolean; internalType: string; name: string; type: string; }[]; name: string; type: string; outputs?: undefined; stateMutability?: undefined; })[]; //#endregion //#region src/const/abis/erc721.d.ts declare const erc721Abi: ({ anonymous: boolean; inputs: { indexed: boolean; internalType: string; name: string; type: string; }[]; name: string; type: string; constant?: undefined; outputs?: undefined; payable?: undefined; stateMutability?: undefined; } | { constant: boolean; inputs: never[]; name: string; outputs: { name: string; type: string; }[]; payable: boolean; stateMutability: string; type: string; anonymous?: undefined; } | { inputs: { internalType: string; name: string; type: string; }[]; name: string; outputs: { internalType: string; name: string; type: string; }[]; stateMutability: string; type: string; anonymous?: undefined; constant?: undefined; payable?: undefined; })[]; //#endregion //#region src/const/abis/erc1155.d.ts declare const erc1155Abi: ({ anonymous: boolean; inputs: { indexed: boolean; internalType: string; name: string; type: string; }[]; name: string; type: string; outputs?: undefined; stateMutability?: undefined; } | { inputs: { internalType: string; name: string; type: string; }[]; name: string; outputs: { internalType: string; name: string; type: string; }[]; stateMutability: string; type: string; anonymous?: undefined; })[]; //#endregion //#region src/const/abis/singleTokenDeposit.d.ts declare const singleTokenDepositAbi: ({ type: string; inputs: never[]; stateMutability: string; name?: undefined; outputs?: undefined; anonymous?: undefined; } | { type: string; name: string; inputs: { name: string; type: string; internalType: string; }[]; outputs: { name: string; type: string; internalType: string; }[]; stateMutability: string; anonymous?: undefined; } | { type: string; name: string; inputs: { name: string; type: string; indexed: boolean; internalType: string; }[]; anonymous: boolean; stateMutability?: undefined; outputs?: undefined; } | { type: string; name: string; inputs: { name: string; type: string; internalType: string; }[]; stateMutability?: undefined; outputs?: undefined; anonymous?: undefined; })[]; //#endregion //#region src/const/abis/UniswapPool.d.ts declare const UniswapV3PoolABI: ({ inputs: never[]; stateMutability: string; type: string; anonymous?: undefined; name?: undefined; outputs?: undefined; } | { anonymous: boolean; inputs: { indexed: boolean; internalType: string; name: string; type: string; }[]; name: string; type: string; stateMutability?: undefined; outputs?: undefined; } | { inputs: { internalType: string; name: string; type: string; }[]; name: string; outputs: { internalType: string; name: string; type: string; }[]; stateMutability: string; type: string; anonymous?: undefined; })[]; //#endregion //#region src/const/abis/quoter.d.ts declare const UniswapV3QuoterABI: readonly [{ readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "_factory"; readonly type: "address"; }, { readonly internalType: "address"; readonly name: "_WETH9"; readonly type: "address"; }]; readonly stateMutability: "nonpayable"; readonly type: "constructor"; }, { readonly inputs: readonly []; readonly name: "WETH9"; readonly outputs: readonly [{ readonly internalType: "address"; readonly name: ""; readonly type: "address"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "factory"; readonly outputs: readonly [{ readonly internalType: "address"; readonly name: ""; readonly type: "address"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "bytes"; readonly name: "path"; readonly type: "bytes"; }, { readonly internalType: "uint256"; readonly name: "amountIn"; readonly type: "uint256"; }]; readonly name: "quoteExactInput"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: "amountOut"; readonly type: "uint256"; }, { readonly internalType: "uint160[]"; readonly name: "sqrtPriceX96AfterList"; readonly type: "uint160[]"; }, { readonly internalType: "uint32[]"; readonly name: "initializedTicksCrossedList"; readonly type: "uint32[]"; }, { readonly internalType: "uint256"; readonly name: "gasEstimate"; readonly type: "uint256"; }]; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly components: readonly [{ readonly internalType: "address"; readonly name: "tokenIn"; readonly type: "address"; }, { readonly internalType: "address"; readonly name: "tokenOut"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "amountIn"; readonly type: "uint256"; }, { readonly internalType: "uint24"; readonly name: "fee"; readonly type: "uint24"; }, { readonly internalType: "uint160"; readonly name: "sqrtPriceLimitX96"; readonly type: "uint160"; }]; readonly internalType: "struct IQuoterV2.QuoteExactInputSingleParams"; readonly name: "params"; readonly type: "tuple"; }]; readonly name: "quoteExactInputSingle"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: "amountOut"; readonly type: "uint256"; }, { readonly internalType: "uint160"; readonly name: "sqrtPriceX96After"; readonly type: "uint160"; }, { readonly internalType: "uint32"; readonly name: "initializedTicksCrossed"; readonly type: "uint32"; }, { readonly internalType: "uint256"; readonly name: "gasEstimate"; readonly type: "uint256"; }]; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "bytes"; readonly name: "path"; readonly type: "bytes"; }, { readonly internalType: "uint256"; readonly name: "amountOut"; readonly type: "uint256"; }]; readonly name: "quoteExactOutput"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: "amountIn"; readonly type: "uint256"; }, { readonly internalType: "uint160[]"; readonly name: "sqrtPriceX96AfterList"; readonly type: "uint160[]"; }, { readonly internalType: "uint32[]"; readonly name: "initializedTicksCrossedList"; readonly type: "uint32[]"; }, { readonly internalType: "uint256"; readonly name: "gasEstimate"; readonly type: "uint256"; }]; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly components: readonly [{ readonly internalType: "address"; readonly name: "tokenIn"; readonly type: "address"; }, { readonly internalType: "address"; readonly name: "tokenOut"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "amount"; readonly type: "uint256"; }, { readonly internalType: "uint24"; readonly name: "fee"; readonly type: "uint24"; }, { readonly internalType: "uint160"; readonly name: "sqrtPriceLimitX96"; readonly type: "uint160"; }]; readonly internalType: "struct IQuoterV2.QuoteExactOutputSingleParams"; readonly name: "params"; readonly type: "tuple"; }]; readonly name: "quoteExactOutputSingle"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: "amountIn"; readonly type: "uint256"; }, { readonly internalType: "uint160"; readonly name: "sqrtPriceX96After"; readonly type: "uint160"; }, { readonly internalType: "uint32"; readonly name: "initializedTicksCrossed"; readonly type: "uint32"; }, { readonly internalType: "uint256"; readonly name: "gasEstimate"; readonly type: "uint256"; }]; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "int256"; readonly name: "amount0Delta"; readonly type: "int256"; }, { readonly internalType: "int256"; readonly name: "amount1Delta"; readonly type: "int256"; }, { readonly internalType: "bytes"; readonly name: "path"; readonly type: "bytes"; }]; readonly name: "uniswapV3SwapCallback"; readonly outputs: readonly []; readonly stateMutability: "view"; readonly type: "function"; }]; declare const QuickSwapQuoterV2: ({ inputs: { internalType: string; name: string; type: string; }[]; stateMutability: string; type: string; name?: undefined; outputs?: undefined; } | { inputs: { internalType: string; name: string; type: string; }[]; name: string; outputs: { internalType: string; name: string; type: string; }[]; stateMutability: string; type: string; } | { inputs: { components: { internalType: string; name: string; type: string; }[]; internalType: string; name: string; type: string; }[]; name: string; outputs: { internalType: string; name: string; type: string; }[]; stateMutability: string; type: string; })[]; declare const QuoterV2Thick: ({ inputs: { internalType: string; name: string; type: string; }[]; stateMutability: string; type: string; name?: undefined; outputs?: undefined; } | { inputs: { internalType: string; name: string; type: string; }[]; name: string; outputs: { internalType: string; name: string; type: string; }[]; stateMutability: string; type: string; } | { inputs: { components: { internalType: string; name: string; type: string; }[]; internalType: string; name: string; type: string; }[]; name: string; outputs: { internalType: string; name: string; type: string; }[]; stateMutability: string; type: string; })[]; declare const QuoterV2AlgebgraIntegral: ({ inputs: { internalType: string; name: string; type: string; }[]; stateMutability: string; type: string; name?: undefined; outputs?: undefined; } | { inputs: { internalType: string; name: string; type: string; }[]; name: string; outputs: { internalType: string; name: string; type: string; }[]; stateMutability: string; type: string; } | { inputs: { components: { internalType: string; name: string; type: string; }[]; internalType: string; name: string; type: string; }[]; name: string; outputs: { internalType: string; name: string; type: string; }[]; stateMutability: string; type: string; })[]; declare const QuoterV2AlgebgraIntegral21: ({ inputs: { internalType: string; name: string; type: string; }[]; stateMutability: string; type: string; name?: undefined; outputs?: undefined; } | { inputs: { internalType: string; name: string; type: string; }[]; name: string; outputs: { internalType: string; name: string; type: string; }[]; stateMutability: string; type: string; } | { inputs: { components: { internalType: string; name: string; type: string; }[]; internalType: string; name: string; type: string; }[]; name: string; outputs: { internalType: string; name: string; type: string; }[]; stateMutability: string; type: string; })[]; declare const QuoterV2Shadow: ({ inputs: { internalType: string; name: string; type: string; }[]; stateMutability: string; type: string; name?: undefined; outputs?: undefined; } | { inputs: never[]; name: string; type: string; stateMutability?: undefined; outputs?: undefined; } | { inputs: { internalType: string; name: string; type: string; }[]; name: string; outputs: { internalType: string; name: string; type: string; }[]; stateMutability: string; type: string; } | { inputs: { components: { internalType: string; name: string; type: string; }[]; internalType: string; name: string; type: string; }[]; name: string; outputs: { internalType: string; name: string; type: string; }[]; stateMutability: string; type: string; })[]; //#endregion //#region src/const/abis/feeManager.d.ts declare const FEE_MANAGER_ABI: readonly [{ readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: false; readonly internalType: "address"; readonly name: "previousAdmin"; readonly type: "address"; }, { readonly indexed: false; readonly internalType: "address"; readonly name: "newAdmin"; readonly type: "address"; }]; readonly name: "AdminChanged"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly internalType: "address"; readonly name: "implementation"; readonly type: "address"; }]; readonly name: "Upgraded"; readonly type: "event"; }, { readonly stateMutability: "payable"; readonly type: "fallback"; }, { readonly inputs: readonly []; readonly name: "admin"; readonly outputs: readonly [{ readonly internalType: "address"; readonly name: ""; readonly type: "address"; }]; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "newAdmin"; readonly type: "address"; }]; readonly name: "changeAdmin"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "implementation"; readonly outputs: readonly [{ readonly internalType: "address"; readonly name: ""; readonly type: "address"; }]; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "newImplementation"; readonly type: "address"; }]; readonly name: "upgradeTo"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "newImplementation"; readonly type: "address"; }, { readonly internalType: "bytes"; readonly name: "data"; readonly type: "bytes"; }]; readonly name: "upgradeToAndCall"; readonly outputs: readonly []; readonly stateMutability: "payable"; readonly type: "function"; }, { readonly stateMutability: "payable"; readonly type: "receive"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly internalType: "address"; readonly name: "beacon"; readonly type: "address"; }]; readonly name: "BeaconUpgraded"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly internalType: "address"; readonly name: "vault"; readonly type: "address"; }, { readonly indexed: false; readonly internalType: "string[]"; readonly name: "feeIdentifier"; readonly type: "string[]"; }, { readonly indexed: false; readonly internalType: "uint256[]"; readonly name: "feeValue"; readonly type: "uint256[]"; }, { readonly indexed: false; readonly internalType: "address[]"; readonly name: "withdrawer"; readonly type: "address[]"; }]; readonly name: "FeeUpdated"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly internalType: "address"; readonly name: "caller"; readonly type: "address"; }, { readonly indexed: true; readonly internalType: "address"; readonly name: "vault"; readonly type: "address"; }, { readonly indexed: false; readonly internalType: "string"; readonly name: "feeIdentifier"; readonly type: "string"; }, { readonly indexed: true; readonly internalType: "address"; readonly name: "to"; readonly type: "address"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "amount0"; readonly type: "uint256"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "amount1"; readonly type: "uint256"; }]; readonly name: "FeeWithdrawn"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly internalType: "address"; readonly name: "caller"; readonly type: "address"; }, { readonly indexed: false; readonly internalType: "address"; readonly name: "vault"; readonly type: "address"; }, { readonly indexed: false; readonly internalType: "string[]"; readonly name: "feeIdentifier"; readonly type: "string[]"; }, { readonly indexed: false; readonly internalType: "address[]"; readonly name: "to"; readonly type: "address[]"; }, { readonly indexed: false; readonly internalType: "uint256[]"; readonly name: "amount0"; readonly type: "uint256[]"; }, { readonly indexed: false; readonly internalType: "uint256[]"; readonly name: "amount1"; readonly type: "uint256[]"; }]; readonly name: "FeesWithdrawn"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly internalType: "address"; readonly name: "caller"; readonly type: "address"; }, { readonly indexed: false; readonly internalType: "address[]"; readonly name: "vaults"; readonly type: "address[]"; }, { readonly indexed: false; readonly internalType: "string[][]"; readonly name: "feeIdentifiers"; readonly type: "string[][]"; }, { readonly indexed: false; readonly internalType: "address[][]"; readonly name: "to"; readonly type: "address[][]"; }, { readonly indexed: false; readonly internalType: "uint256[][]"; readonly name: "amount0"; readonly type: "uint256[][]"; }, { readonly indexed: false; readonly internalType: "uint256[][]"; readonly name: "amount1"; readonly type: "uint256[][]"; }]; readonly name: "FeesWithdrawnFromMultipleVaults"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly internalType: "address"; readonly name: "previousOwner"; readonly type: "address"; }, { readonly indexed: true; readonly internalType: "address"; readonly name: "newOwner"; readonly type: "address"; }]; readonly name: "OwnershipTransferred"; readonly type: "event"; }, { readonly inputs: readonly [{ readonly internalType: "string[]"; readonly name: "stringArray"; readonly type: "string[]"; }]; readonly name: "areAllUnique"; readonly outputs: readonly []; readonly stateMutability: "pure"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "vault"; readonly type: "address"; }, { readonly internalType: "string"; readonly name: "feeIdentifier"; readonly type: "string"; }, { readonly internalType: "address"; readonly name: "newWithdrawer"; readonly type: "address"; }]; readonly name: "changeFeeWithdrawer"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "vault"; readonly type: "address"; }]; readonly name: "getFees"; readonly outputs: readonly [{ readonly components: readonly [{ readonly internalType: "string"; readonly name: "feeIdentifier"; readonly type: "string"; }, { readonly internalType: "uint256"; readonly name: "feeValue"; readonly type: "uint256"; }]; readonly internalType: "struct FeeManager.Fee[]"; readonly name: ""; readonly type: "tuple[]"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "_vaultRegistry"; readonly type: "address"; }]; readonly name: "initialize"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "owner"; readonly outputs: readonly [{ readonly internalType: "address"; readonly name: ""; readonly type: "address"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "renounceOwnership"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "vault"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "totalVaultFees"; readonly type: "uint256"; }, { readonly internalType: "string[]"; readonly name: "feeIdentifier"; readonly type: "string[]"; }, { readonly internalType: "uint256[]"; readonly name: "feeValue"; readonly type: "uint256[]"; }, { readonly internalType: "address[]"; readonly name: "withdrawer"; readonly type: "address[]"; }]; readonly name: "setDefaultFeeAndWithdrawalPermission"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "vault"; readonly type: "address"; }, { readonly internalType: "string[]"; readonly name: "feeIdentifier"; readonly type: "string[]"; }, { readonly internalType: "uint256[]"; readonly name: "feeValue"; readonly type: "uint256[]"; }, { readonly internalType: "address[]"; readonly name: "withdrawer"; readonly type: "address[]"; }]; readonly name: "setFeeAndWithdrawalPermission"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "setMigratedVaultFeeAndWithdrawalPermission"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "vault"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "newTotalFees"; readonly type: "uint256"; }]; readonly name: "setTotalFees"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "newOwner"; readonly type: "address"; }]; readonly name: "transferOwnership"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "vault"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "index"; readonly type: "uint256"; }]; readonly name: "vaultFees"; readonly outputs: readonly [{ readonly internalType: "string"; readonly name: "feeIdentifier"; readonly type: "string"; }, { readonly internalType: "uint256"; readonly name: "feeValue"; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "vaultRegistry"; readonly outputs: readonly [{ readonly internalType: "address"; readonly name: ""; readonly type: "address"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "vault"; readonly type: "address"; }]; readonly name: "vaultTotalFees"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "vault"; readonly type: "address"; }, { readonly internalType: "string"; readonly name: "feeIdentifier"; readonly type: "string"; }, { readonly internalType: "uint256"; readonly name: "amount0"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "amount1"; readonly type: "uint256"; }]; readonly name: "withdrawFee"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address[]"; readonly name: "vaults"; readonly type: "address[]"; }, { readonly internalType: "string[][]"; readonly name: "feeIdentifiers"; readonly type: "string[][]"; }, { readonly internalType: "uint256[][]"; readonly name: "amount0"; readonly type: "uint256[][]"; }, { readonly internalType: "uint256[][]"; readonly name: "amount1"; readonly type: "uint256[][]"; }]; readonly name: "withdrawFeesFromMultipleVaults"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "vault"; readonly type: "address"; }, { readonly internalType: "string[]"; readonly name: "feeIdentifiers"; readonly type: "string[]"; }, { readonly internalType: "uint256[]"; readonly name: "amount0"; readonly type: "uint256[]"; }, { readonly internalType: "uint256[]"; readonly name: "amount1"; readonly type: "uint256[]"; }]; readonly name: "withdrawMultipleFees"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "vault"; readonly type: "address"; }, { readonly internalType: "string"; readonly name: "feeIdentifier"; readonly type: "string"; }]; readonly name: "withdrawalPermissions"; readonly outputs: readonly [{ readonly internalType: "address"; readonly name: ""; readonly type: "address"; }]; readonly stateMutability: "view"; readonly type: "function"; }]; //#endregion //#region src/const/abis/vaultFees.d.ts declare const VAULT_FEES_ABI: readonly [{ readonly inputs: readonly [{ readonly internalType: "string"; readonly name: "feeIdentifier"; readonly type: "string"; }]; readonly name: "accruedFees0"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "string"; readonly name: "feeIdentifier"; readonly type: "string"; }]; readonly name: "accruedFees1"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }]; //#endregion //#region src/const/amm/utils/beacon.d.ts declare const TEST_UNISWAP_JIT_HOOK_BEACON = MultiPositionManagers.TestUniswapJITHook; declare const UNISWAP_V4_NO_ORACLE_BEACON = MultiPositionManagers.MultiPositionUniswapV4NoOracle; declare const UNISWAP_V4_HOOK_BEACON_NAMES: readonly [MultiPositionManagers.MultiPositionUniswapV4Hook, MultiPositionManagers.TestUniswapJITHook, MultiPositionManagers.MultiPositionUniswapV4HookOld]; declare const UNISWAP_V4_BEACON_NAMES: readonly [MultiPositionManagers.MultiPositionUniswapV4ALM, MultiPositionManagers.MultiPositionUniswapV4HookOld, MultiPositionManagers.TestUniswapJITHook, MultiPositionManagers.MultiPositionUniswapV4Hook, MultiPositionManagers.MultiPositionReserveV4, MultiPositionManagers.MultiPositionUniswapV4NoOracle]; declare const isUniswapV4Beacon: (beaconName?: string) => boolean; declare const isUniswapV4HookBeacon: (beaconName?: string) => boolean; declare const shouldValidateUniswapV4VaultHook: (beaconName?: string) => boolean; declare const getUniswapV4BeaconSupportedChains: (beaconName?: string) => readonly Chain[] | undefined; declare const isUniswapV4BeaconAvailableOnChain: (beaconName: string, chain: Chain) => boolean; /**` * Retrieves the beacon name associated with a given protocol. * * @param protocol - The supported protocol to get the beacon name for * @returns The beacon name string for the protocol, or empty string if not found * @example * ```typescript * const beaconName = getBeaconNameByProtocol('Uniswap'); * // Returns: 'uniswap' * ``` */ declare function getBeaconNameByProtocol(protocol: SupportedProtocol): string; /** * Gets the protocol configuration for a given beacon identifier. * * @param beacon - The beacon identifier string * @param theGraphApiKey - The Graph API key for accessing protocol data * @returns The protocol configuration object or null if not found * @example * ```typescript * const config = getProtocolConfigByBeacon('uniswap', 'api-key'); * ``` */ declare const getProtocolConfigByBeacon: (beacon: string, theGraphApiKey: string) => ProtocolInfo | null | undefined; /** * Determines the protocol type from a given beacon identifier. * * @param beacon - The beacon identifier string * @returns The supported protocol type or null if not found * @example * ```typescript * const protocolType = getProtocolTypeByBeacon('uniswap'); * // Returns: 'Uniswap' as SupportedProtocol * ``` */ declare function getProtocolTypeByBeacon(beacon: string): SupportedProtocol | null; //#endregion //#region src/const/amm/utils/contracts.d.ts /** * Gets the init code hash for a given protocol and chain. * * @param protocol - The supported protocol to get the init code hash for * @param chain - The blockchain network * @param theGraphApiKey - The Graph API key for accessing protocol data * @returns The init code hash or undefined if not found */ declare function getQuoterV2Address(protocol: SupportedProtocol, chain: Chain, theGraphApiKey: string): string | undefined; /** * Interface representing all contract addresses for a protocol */ type ProtocolContractAddresses = { swapRouterAddress: string | undefined; NFTManagerAddress: string | undefined; UniswapV3Factory: string | undefined; TickLensAddress: string | undefined; initCodeHash: string | undefined; quoterV2Address: string | undefined; }; /** * Retrieves all relevant contract addresses for a given protocol and chain. * * @param protocol - The supported protocol to get the contract addresses for * @param chain - The blockchain network * @param theGraphApiKey - The Graph API key for accessing protocol data * @returns An object containing all contract addresses * @example * ```typescript * const addresses = getProtocolContractAddresses('Uniswap', Chain.MAINNET, 'api-key'); * ``` */ declare function getProtocolContractAddresses(protocol: SupportedProtocol, chain: Chain, theGraphApiKey: string): ProtocolContractAddresses; //#endregion //#region src/const/amm/utils/protocol.d.ts /** ` * Interface representing detailed protocol information including name and associated data */ type ProtocolDetails = { /** The protocol identifier */name: SupportedProtocol; /** Protocol-specific configuration and information */ data: ProtocolInfo; }; /** * Retrieves detailed protocol information for a specific blockchain network. * * @param chainId - The numeric identifier of the blockchain network * @param theGraphApiKey - The Graph API key for accessing protocol data * @returns Array of protocol details supported on the specified chain * @example * ```typescript * const protocols = getProtocolInfoByChainId(1, 'api-key'); * // Returns array of protocol details for Ethereum mainnet * ``` */ declare const getProtocolInfoByChainId: (chainId: number, theGraphApiKey: string) => ProtocolDetails[]; /** * Gets a list of supported protocols for a specific blockchain network. * * @param chainId - The numeric identifier of the blockchain network * @param theGraphApiKey - The Graph API key for accessing protocol data * @returns Array of protocol names supported on the specified chain * @example * ```typescript * const protocols = getProtocolsForChainId(1, 'api-key'); * // Returns ['Uniswap', 'Sushi', ...] for Ethereum mainnet * ``` */ declare const getProtocolsForChainId: (chainId: number, theGraphApiKey: string) => SupportedProtocol[]; /** * Retrieves protocol information for a specific protocol by its name. * * @param protocolName - The name of the protocol to get information for * @param theGraphApiKey - The Graph API key for accessing protocol data * @returns Protocol configuration and information * @example * ```typescript * const info = getProtocolInfoByName('Uniswap', 'api-key'); * ``` */ declare const getProtocolInfoByName: (protocolName: Protocol, theGraphApiKey: string) => ProtocolInfo | undefined; /** * Finds a protocol by its subgraph URL. * * @param subgraphUrl - The subgraph URL to search for * @param theGraphApiKey - The Graph API key for accessing protocol data * @returns The protocol name if found, undefined otherwise * @example * ```typescript * const protocol = getProtocolBySubgraph('https://api.thegraph.com/...', 'api-key'); * ``` */ declare const getProtocolBySubgraph: (subgraphUrl: string, theGraphApiKey: string) => SupportedProtocol | undefined; /** * Checks if a protocol is an Algebra protocol based on its subgraph URL. * * @param subgraphUrl - The subgraph URL to check * @param theGraphApiKey - The Graph API key for accessing protocol data * @returns True if the protocol is an Algebra protocol, false otherwise * @example * ```typescript * const isAlgebra = isAlgebraProtocolBySubgraph('https://api.thegraph.com/...', 'api-key'); * ``` */ declare function isAlgebraProtocolBySubgraph(subgraphUrl: string, theGraphApiKey: string): boolean; //#endregion //#region src/const/amm/utils/index.d.ts declare const getAmmConfigByChainId: (chainId: number, theGraphApiKey: string) => AMMConfigType; declare function getFactoryAddress(protocol: SupportedProtocol, chain: Chain, theGraphApiKey: string): string | undefined; declare function getTickLensAddress(protocol: SupportedProtocol, chain: Chain, theGraphApiKey: string): string | undefined; declare function getNFTManagerAddress(protocol: SupportedProtocol, chain: Chain, theGraphApiKey: string): string | undefined; declare function getProtocolSubgraphURL(protocol: SupportedProtocol, chain: Chain, theGraphApiKey: string): string; declare function getSwapRouterAddress(protocol: SupportedProtocol, chain: Chain, theGraphApiKey: string): string | undefined; declare function getInitCodeHash(protocol: SupportedProtocol, chain: Chain, theGraphApiKey: string): string | undefined; //#endregion //#region src/const/amm/configs/ammConfig.d.ts declare const getAmmConfig: (theGraphApiKey: string) => AMMConfigType; //#endregion //#region src/const/amm/configs/protocols/arthswap.d.ts declare const arthswapConfig: () => ProtocolInfo; //#endregion //#region src/const/amm/configs/protocols/baseswap.d.ts declare const baseSwapConfig: () => ProtocolInfo; //#endregion //#region src/const/amm/configs/protocols/basex.d.ts declare const basexConfig: () => ProtocolInfo; //#endregion //#region src/const/amm/configs/protocols/camelot.d.ts declare const camelotConfig: () => ProtocolInfo; //#endregion //#region src/const/amm/configs/protocols/crust.d.ts declare const crustConfig: () => ProtocolInfo; //#endregion //#region src/const/amm/configs/protocols/equilibre.d.ts declare const equilibreConfig: () => ProtocolInfo; //#endregion //#region src/const/amm/configs/protocols/fenix.d.ts declare const fenixConfig: () => ProtocolInfo; //#endregion //#region src/const/amm/configs/protocols/forge.d.ts declare const forgeConfig: () => ProtocolInfo; //#endregion //#region src/const/amm/configs/protocols/fusionx.d.ts declare const fusionxConfig: () => ProtocolInfo; //#endregion //#region src/const/amm/configs/protocols/henjin.d.ts declare const henjinConfig: () => ProtocolInfo; //#endregion //#region src/const/amm/configs/protocols/hercules.d.ts declare const herculesConfig: () => ProtocolInfo; //#endregion //#region src/const/amm/configs/protocols/horiza.d.ts declare const horizaConfig: () => ProtocolInfo; //#endregion //#region src/const/amm/configs/protocols/kim.d.ts declare const kimConfig: () => ProtocolInfo; //#endregion //#region src/const/amm/configs/protocols/linehub.d.ts declare const linehubConfig: () => ProtocolInfo; //#endregion //#region src/const/amm/configs/protocols/lynex.d.ts declare const lynexConfig: () => ProtocolInfo; //#endregion //#region src/const/amm/configs/protocols/maia.d.ts declare const maiaConfig: () => ProtocolInfo; //#endregion //#region src/const/amm/configs/protocols/metavault.d.ts declare const metaVaultConfig: () => ProtocolInfo; //#endregion //#region src/const/amm/configs/protocols/novaswap.d.ts declare const novaswapConfig: () => ProtocolInfo; //#endregion //#region src/const/amm/configs/protocols/pancakeswap.d.ts declare const pancakeSwapConfig: (theGraphApiKey: string) => ProtocolInfo; //#endregion //#region src/const/amm/configs/protocols/poolshark.d.ts declare const poolsharkConfig: () => ProtocolInfo; //#endregion //#region src/const/amm/configs/protocols/quickswap.d.ts declare const quickSwapConfig: (theGraphApiKey: string) => ProtocolInfo; //#endregion //#region src/const/amm/configs/protocols/quickswap-algebra.d.ts declare const quickSwapAlgebraConfig: () => ProtocolInfo; //#endregion //#region src/const/amm/configs/protocols/quickswap-integral.d.ts declare const quickSwapIntegralConfig: (theGraphApiKey: string) => ProtocolInfo; //#endregion //#region src/const/amm/configs/protocols/quickswap-univ3.d.ts declare const quickSwapUniv3Config: () => ProtocolInfo; //#endregion //#region src/const/amm/configs/protocols/retro.d.ts declare const retroConfig: () => ProtocolInfo; //#endregion //#region src/const/amm/configs/protocols/spark.d.ts declare const sparkConfig: () => ProtocolInfo; //#endregion //#region src/const/amm/configs/protocols/spark32.d.ts declare const spark32Config: () => ProtocolInfo; //#endregion //#region src/const/amm/configs/protocols/supswap.d.ts declare const supswapConfig: () => ProtocolInfo; //#endregion //#region src/const/amm/configs/protocols/swapmode.d.ts declare const swapmodeConfig: () => ProtocolInfo; //#endregion //#region src/const/amm/configs/protocols/swapsicle.d.ts declare const swapsicleConfig: () => ProtocolInfo; //#endregion //#region src/const/amm/configs/protocols/sushi.d.ts declare const sushiConfig: (theGraphApiKey: string) => ProtocolInfo; //#endregion //#region src/const/amm/configs/protocols/thena.d.ts declare const thenaConfig: () => ProtocolInfo; //#endregion //#region src/const/amm/configs/protocols/thick.d.ts declare const thickConfig: (theGraphApiKey: string) => ProtocolInfo; //#endregion //#region src/const/amm/configs/protocols/thruster.d.ts declare const thrusterConfig: () => ProtocolInfo; //#endregion //#region src/const/amm/configs/protocols/uniswap.d.ts declare const uniswapConfig: (theGraphApiKey: string) => ProtocolInfo; //#endregion //#region src/const/amm/configs/protocols/kinetix.d.ts declare const kinetixConfig: () => ProtocolInfo; //#endregion //#region src/const/amm/configs/protocols/glyph.d.ts declare const glyphConfig: () => ProtocolInfo; //#endregion //#region src/const/amm/configs/protocols/katana.d.ts declare const katanaConfig: () => ProtocolInfo; //#endregion //#region src/const/amm/configs/protocols/shadow.d.ts declare const shadowConfig: (theGraphApiKey: string) => ProtocolInfo; //#endregion //#region src/const/amm/configs/protocols/nest.d.ts declare const nestVaultConfig: () => ProtocolInfo; //#endregion //#region src/const/amm/configs/protocols/bittensor-univ3.d.ts declare const bittensorUniV3Config: () => ProtocolInfo; //#endregion //#region src/const/deployments/abis.d.ts declare const abis: { readonly BundleRegistry: readonly [{ readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: false; readonly internalType: "address"; readonly name: "previousAdmin"; readonly type: "address"; }, { readonly indexed: false; readonly internalType: "address"; readonly name: "newAdmin"; readonly type: "address"; }]; readonly name: "AdminChanged"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly internalType: "address"; readonly name: "implementation"; readonly type: "address"; }]; readonly name: "Upgraded"; readonly type: "event"; }, { readonly stateMutability: "payable"; readonly type: "fallback"; }, { readonly inputs: readonly []; readonly name: "admin"; readonly outputs: readonly [{ readonly internalType: "address"; readonly name: ""; readonly type: "address"; }]; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "newAdmin"; readonly type: "address"; }]; readonly name: "changeAdmin"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "implementation"; readonly outputs: readonly [{ readonly internalType: "address"; readonly name: ""; readonly type: "address"; }]; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "newImplementation"; readonly type: "address"; }]; readonly name: "upgradeTo"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "newImplementation"; readonly type: "address"; }, { readonly internalType: "bytes"; readonly name: "data"; readonly type: "bytes"; }]; readonly name: "upgradeToAndCall"; readonly outputs: readonly []; readonly stateMutability: "payable"; readonly type: "function"; }, { readonly stateMutability: "payable"; readonly type: "receive"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly internalType: "address"; readonly name: "beacon"; readonly type: "address"; }]; readonly name: "BeaconUpgraded"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: false; readonly internalType: "bytes32"; readonly name: "hash"; readonly type: "bytes32"; }, { readonly indexed: false; readonly internalType: "string"; readonly name: "bundle"; readonly type: "string"; }, { readonly indexed: false; readonly internalType: "string"; readonly name: "host"; readonly type: "string"; }, { readonly indexed: false; readonly internalType: "string"; readonly name: "source"; readonly type: "string"; }, { readonly indexed: false; readonly internalType: "string"; readonly name: "output"; readonly type: "string"; }, { readonly indexed: false; readonly internalType: "string"; readonly name: "infoHash"; readonly type: "string"; }, { readonly indexed: false; readonly internalType: "bool"; readonly name: "active"; readonly type: "bool"; }, { readonly indexed: false; readonly internalType: "address"; readonly name: "creator"; readonly type: "address"; }]; readonly name: "BundleRegistered"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: false; readonly internalType: "bytes32"; readonly name: "hash"; readonly type: "bytes32"; }, { readonly indexed: false; readonly internalType: "bool"; readonly name: "toggle"; readonly type: "bool"; }]; readonly name: "BundleStateChange"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly internalType: "address"; readonly name: "previousOwner"; readonly type: "address"; }, { readonly indexed: true; readonly internalType: "address"; readonly name: "newOwner"; readonly type: "address"; }]; readonly name: "OwnershipTransferred"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: false; readonly internalType: "address"; readonly name: "account"; readonly type: "address"; }]; readonly name: "Paused"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: false; readonly internalType: "address"; readonly name: "account"; readonly type: "address"; }]; readonly name: "Unpaused"; readonly type: "event"; }, { readonly inputs: readonly [{ readonly internalType: "bytes32"; readonly name: ""; readonly type: "bytes32"; }]; readonly name: "bundles"; readonly outputs: readonly [{ readonly internalType: "string"; readonly name: "bundle"; readonly type: "string"; }, { readonly internalType: "string"; readonly name: "source"; readonly type: "string"; }, { readonly internalType: "string"; readonly name: "host"; readonly type: "string"; }, { readonly internalType: "string"; readonly name: "output"; readonly type: "string"; }, { readonly internalType: "string"; readonly name: "info"; readonly type: "string"; }, { readonly internalType: "bool"; readonly name: "active"; readonly type: "bool"; }, { readonly internalType: "address"; readonly name: "author"; readonly type: "address"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "initialize"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "owner"; readonly outputs: readonly [{ readonly internalType: "address"; readonly name: ""; readonly type: "address"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "pause"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "paused"; readonly outputs: readonly [{ readonly internalType: "bool"; readonly name: ""; readonly type: "bool"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "string"; readonly name: "_bundle"; readonly type: "string"; }, { readonly internalType: "string"; readonly name: "_source"; readonly type: "string"; }, { readonly internalType: "string"; readonly name: "_host"; readonly type: "string"; }, { readonly internalType: "string"; readonly name: "_output"; readonly type: "string"; }, { readonly internalType: "string"; readonly name: "_infoHash"; readonly type: "string"; }, { readonly internalType: "bool"; readonly name: "_active"; readonly type: "bool"; }]; readonly name: "register"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "renounceOwnership"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "bytes32"; readonly name: "_adapter"; readonly type: "bytes32"; }, { readonly internalType: "bool"; readonly name: "_remainActive"; readonly type: "bool"; }]; readonly name: "setAdapterState"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "newOwner"; readonly type: "address"; }]; readonly name: "transferOwnership"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "initialLogic"; readonly type: "address"; }, { readonly internalType: "address"; readonly name: "initialAdmin"; readonly type: "address"; }, { readonly internalType: "bytes"; readonly name: "_data"; readonly type: "bytes"; }]; readonly stateMutability: "payable"; readonly type: "constructor"; }]; readonly CamelotMultiPositionLiquidityManager: readonly [{ readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly internalType: "address"; readonly name: "owner"; readonly type: "address"; }, { readonly indexed: true; readonly internalType: "address"; readonly name: "spender"; readonly type: "address"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "value"; readonly type: "uint256"; }]; readonly name: "Approval"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly internalType: "address"; readonly name: "sender"; readonly type: "address"; }, { readonly indexed: true; readonly internalType: "address"; readonly name: "to"; readonly type: "address"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "shares"; readonly type: "uint256"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "amount0"; readonly type: "uint256"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "amount1"; readonly type: "uint256"; }]; readonly name: "Deposit"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: false; readonly internalType: "uint256"; readonly name: "amount0Earned"; readonly type: "uint256"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "amount1Earned"; readonly type: "uint256"; }]; readonly name: "FeesEarned"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: false; readonly internalType: "address"; readonly name: "account"; readonly type: "address"; }]; readonly name: "Paused"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly internalType: "bytes32"; readonly name: "role"; readonly type: "bytes32"; }, { readonly indexed: true; readonly internalType: "bytes32"; readonly name: "previousAdminRole"; readonly type: "bytes32"; }, { readonly indexed: true; readonly internalType: "bytes32"; readonly name: "newAdminRole"; readonly type: "bytes32"; }]; readonly name: "RoleAdminChanged"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly internalType: "bytes32"; readonly name: "role"; readonly type: "bytes32"; }, { readonly indexed: true; readonly internalType: "address"; readonly name: "account"; readonly type: "address"; }, { readonly indexed: true; readonly internalType: "address"; readonly name: "sender"; readonly type: "address"; }]; readonly name: "RoleGranted"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly internalType: "bytes32"; readonly name: "role"; readonly type: "bytes32"; }, { readonly indexed: true; readonly internalType: "address"; readonly name: "account"; readonly type: "address"; }, { readonly indexed: true; readonly internalType: "address"; readonly name: "sender"; readonly type: "address"; }]; readonly name: "RoleRevoked"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: false; readonly internalType: "uint160"; readonly name: "sqrtPriceX96"; readonly type: "uint160"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "totalAmount0"; readonly type: "uint256"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "totalAmount1"; readonly type: "uint256"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "totalSupply"; readonly type: "uint256"; }]; readonly name: "Snapshot"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly internalType: "address"; readonly name: "from"; readonly type: "address"; }, { readonly indexed: true; readonly internalType: "address"; readonly name: "to"; readonly type: "address"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "value"; readonly type: "uint256"; }]; readonly name: "Transfer"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: false; readonly internalType: "address"; readonly name: "account"; readonly type: "address"; }]; readonly name: "Unpaused"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly internalType: "address"; readonly name: "sender"; readonly type: "address"; }, { readonly indexed: true; readonly internalType: "address"; readonly name: "to"; readonly type: "address"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "shares"; readonly type: "uint256"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "amount0"; readonly type: "uint256"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "amount1"; readonly type: "uint256"; }]; readonly name: "Withdraw"; readonly type: "event"; }, { readonly inputs: readonly []; readonly name: "DEFAULT_ADMIN_ROLE"; readonly outputs: readonly [{ readonly internalType: "bytes32"; readonly name: ""; readonly type: "bytes32"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "STEER_FRACTION_OF_FEE"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "STRATEGIST_FRACTION_OF_FEE"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "TOTAL_FEE"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "string"; readonly name: ""; readonly type: "string"; }]; readonly name: "accruedFees0"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "string"; readonly name: ""; readonly type: "string"; }]; readonly name: "accruedFees1"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "accruedSteerFees0"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "accruedSteerFees1"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "accruedStrategistFees0"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "accruedStrategistFees1"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "amount0"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "amount1"; readonly type: "uint256"; }, { readonly internalType: "bytes"; readonly name: ""; readonly type: "bytes"; }]; readonly name: "algebraMintCallback"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "int256"; readonly name: "amount0Wanted"; readonly type: "int256"; }, { readonly internalType: "int256"; readonly name: "amount1Wanted"; readonly type: "int256"; }, { readonly internalType: "bytes"; readonly name: ""; readonly type: "bytes"; }]; readonly name: "algebraSwapCallback"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "owner"; readonly type: "address"; }, { readonly internalType: "address"; readonly name: "spender"; readonly type: "address"; }]; readonly name: "allowance"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "spender"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "amount"; readonly type: "uint256"; }]; readonly name: "approve"; readonly outputs: readonly [{ readonly internalType: "bool"; readonly name: ""; readonly type: "bool"; }]; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "account"; readonly type: "address"; }]; readonly name: "balanceOf"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "string"; readonly name: "feeIdentifier"; readonly type: "string"; }, { readonly internalType: "uint256"; readonly name: "amount0"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "amount1"; readonly type: "uint256"; }]; readonly name: "collectFees"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "decimals"; readonly outputs: readonly [{ readonly internalType: "uint8"; readonly name: ""; readonly type: "uint8"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "spender"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "subtractedValue"; readonly type: "uint256"; }]; readonly name: "decreaseAllowance"; readonly outputs: readonly [{ readonly internalType: "bool"; readonly name: ""; readonly type: "bool"; }]; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "amount0Desired"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "amount1Desired"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "amount0Min"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "amount1Min"; readonly type: "uint256"; }, { readonly internalType: "address"; readonly name: "to"; readonly type: "address"; }]; readonly name: "deposit"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: "shares"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "amount0Used"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "amount1Used"; readonly type: "uint256"; }]; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "int24"; readonly name: "tickLower"; readonly type: "int24"; }, { readonly internalType: "int24"; readonly name: "tickUpper"; readonly type: "int24"; }, { readonly internalType: "uint128"; readonly name: "liquidity"; readonly type: "uint128"; }]; readonly name: "emergencyBurn"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: "amount0"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "amount1"; readonly type: "uint256"; }]; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "feeDetails"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }, { readonly internalType: "address[]"; readonly name: ""; readonly type: "address[]"; }, { readonly internalType: "string[]"; readonly name: ""; readonly type: "string[]"; }, { readonly internalType: "uint256[]"; readonly name: ""; readonly type: "uint256[]"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "getPositions"; readonly outputs: readonly [{ readonly internalType: "int24[]"; readonly name: ""; readonly type: "int24[]"; }, { readonly internalType: "int24[]"; readonly name: ""; readonly type: "int24[]"; }, { readonly internalType: "uint16[]"; readonly name: ""; readonly type: "uint16[]"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "bytes32"; readonly name: "role"; readonly type: "bytes32"; }]; readonly name: "getRoleAdmin"; readonly outputs: readonly [{ readonly internalType: "bytes32"; readonly name: ""; readonly type: "bytes32"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "bytes32"; readonly name: "role"; readonly type: "bytes32"; }, { readonly internalType: "uint256"; readonly name: "index"; readonly type: "uint256"; }]; readonly name: "getRoleMember"; readonly outputs: readonly [{ readonly internalType: "address"; readonly name: ""; readonly type: "address"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "bytes32"; readonly name: "role"; readonly type: "bytes32"; }]; readonly name: "getRoleMemberCount"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "getTotalAmounts"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: "total0"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "total1"; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "bytes32"; readonly name: "role"; readonly type: "bytes32"; }, { readonly internalType: "address"; readonly name: "account"; readonly type: "address"; }]; readonly name: "grantRole"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "bytes32"; readonly name: "role"; readonly type: "bytes32"; }, { readonly internalType: "address"; readonly name: "account"; readonly type: "address"; }]; readonly name: "hasRole"; readonly outputs: readonly [{ readonly internalType: "bool"; readonly name: ""; readonly type: "bool"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "spender"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "addedValue"; readonly type: "uint256"; }]; readonly name: "increaseAllowance"; readonly outputs: readonly [{ readonly internalType: "bool"; readonly name: ""; readonly type: "bool"; }]; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "_vaultManager"; readonly type: "address"; }, { readonly internalType: "address"; readonly name: ""; readonly type: "address"; }, { readonly internalType: "address"; readonly name: "_steer"; readonly type: "address"; }, { readonly internalType: "bytes"; readonly name: "_params"; readonly type: "bytes"; }]; readonly name: "initialize"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "maxTickChange"; readonly outputs: readonly [{ readonly internalType: "int24"; readonly name: ""; readonly type: "int24"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "migrate"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "name"; readonly outputs: readonly [{ readonly internalType: "string"; readonly name: ""; readonly type: "string"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "pause"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "paused"; readonly outputs: readonly [{ readonly internalType: "bool"; readonly name: ""; readonly type: "bool"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "poke"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "pool"; readonly outputs: readonly [{ readonly internalType: "contract IAlgebraPool"; readonly name: ""; readonly type: "address"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "bytes32"; readonly name: "role"; readonly type: "bytes32"; }, { readonly internalType: "address"; readonly name: "account"; readonly type: "address"; }]; readonly name: "renounceRole"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "bytes32"; readonly name: "role"; readonly type: "bytes32"; }, { readonly internalType: "address"; readonly name: "account"; readonly type: "address"; }]; readonly name: "revokeRole"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "bytes4"; readonly name: "interfaceId"; readonly type: "bytes4"; }]; readonly name: "supportsInterface"; readonly outputs: readonly [{ readonly internalType: "bool"; readonly name: ""; readonly type: "bool"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "symbol"; readonly outputs: readonly [{ readonly internalType: "string"; readonly name: ""; readonly type: "string"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "totalWeight"; readonly type: "uint256"; }, { readonly components: readonly [{ readonly internalType: "int24[]"; readonly name: "lowerTick"; readonly type: "int24[]"; }, { readonly internalType: "int24[]"; readonly name: "upperTick"; readonly type: "int24[]"; }, { readonly internalType: "uint16[]"; readonly name: "relativeWeight"; readonly type: "uint16[]"; }]; readonly internalType: "struct CamelotMultiPositionLiquidityManager.LiquidityPositions"; readonly name: "newPositions"; readonly type: "tuple"; }, { readonly internalType: "bytes"; readonly name: "timeSensitiveData"; readonly type: "bytes"; }]; readonly name: "tend"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "token0"; readonly outputs: readonly [{ readonly internalType: "contract IERC20"; readonly name: ""; readonly type: "address"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "token1"; readonly outputs: readonly [{ readonly internalType: "contract IERC20"; readonly name: ""; readonly type: "address"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "totalFees0"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "totalFees1"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "totalSupply"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "recipient"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "amount"; readonly type: "uint256"; }]; readonly name: "transfer"; readonly outputs: readonly [{ readonly internalType: "bool"; readonly name: ""; readonly type: "bool"; }]; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "sender"; readonly type: "address"; }, { readonly internalType: "address"; readonly name: "recipient"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "amount"; readonly type: "uint256"; }]; readonly name: "transferFrom"; readonly outputs: readonly [{ readonly internalType: "bool"; readonly name: ""; readonly type: "bool"; }]; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "twapInterval"; readonly outputs: readonly [{ readonly internalType: "uint32"; readonly name: ""; readonly type: "uint32"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "unpause"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "shares"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "amount0Min"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "amount1Min"; readonly type: "uint256"; }, { readonly internalType: "address"; readonly name: "to"; readonly type: "address"; }]; readonly name: "withdraw"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: "amount0"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "amount1"; readonly type: "uint256"; }]; readonly stateMutability: "nonpayable"; readonly type: "function"; }]; readonly GasVault: readonly [{ readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: false; readonly internalType: "address"; readonly name: "previousAdmin"; readonly type: "address"; }, { readonly indexed: false; readonly internalType: "address"; readonly name: "newAdmin"; readonly type: "address"; }]; readonly name: "AdminChanged"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly internalType: "address"; readonly name: "implementation"; readonly type: "address"; }]; readonly name: "Upgraded"; readonly type: "event"; }, { readonly stateMutability: "payable"; readonly type: "fallback"; }, { readonly inputs: readonly []; readonly name: "admin"; readonly outputs: readonly [{ readonly internalType: "address"; readonly name: ""; readonly type: "address"; }]; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "newAdmin"; readonly type: "address"; }]; readonly name: "changeAdmin"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "implementation"; readonly outputs: readonly [{ readonly internalType: "address"; readonly name: ""; readonly type: "address"; }]; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "newImplementation"; readonly type: "address"; }]; readonly name: "upgradeTo"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "newImplementation"; readonly type: "address"; }, { readonly internalType: "bytes"; readonly name: "data"; readonly type: "bytes"; }]; readonly name: "upgradeToAndCall"; readonly outputs: readonly []; readonly stateMutability: "payable"; readonly type: "function"; }, { readonly stateMutability: "payable"; readonly type: "receive"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly internalType: "address"; readonly name: "beacon"; readonly type: "address"; }]; readonly name: "BeaconUpgraded"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly internalType: "address"; readonly name: "origin"; readonly type: "address"; }, { readonly indexed: true; readonly internalType: "address"; readonly name: "target"; readonly type: "address"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "amount"; readonly type: "uint256"; }]; readonly name: "Deposited"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly internalType: "address"; readonly name: "account"; readonly type: "address"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "amount"; readonly type: "uint256"; }, { readonly indexed: false; readonly internalType: "bytes32"; readonly name: "jobHash"; readonly type: "bytes32"; }]; readonly name: "EtherUsed"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly internalType: "address"; readonly name: "previousOwner"; readonly type: "address"; }, { readonly indexed: true; readonly internalType: "address"; readonly name: "newOwner"; readonly type: "address"; }]; readonly name: "OwnershipTransferred"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly internalType: "address"; readonly name: "targetAddress"; readonly type: "address"; }, { readonly indexed: true; readonly internalType: "address"; readonly name: "to"; readonly type: "address"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "amount"; readonly type: "uint256"; }]; readonly name: "Withdrawn"; readonly type: "event"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "targetAddress"; readonly type: "address"; }]; readonly name: "deposit"; readonly outputs: readonly []; readonly stateMutability: "payable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: ""; readonly type: "address"; }]; readonly name: "ethBalances"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "_targetAddress"; readonly type: "address"; }]; readonly name: "gasAvailableForTransaction"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "_orchestrator"; readonly type: "address"; }, { readonly internalType: "address"; readonly name: "_stratRegistry"; readonly type: "address"; }, { readonly internalType: "address"; readonly name: "_vaultRegistry"; readonly type: "address"; }]; readonly name: "initialize"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "orchestrator"; readonly outputs: readonly [{ readonly internalType: "contract IOrchestrator"; readonly name: ""; readonly type: "address"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "owner"; readonly outputs: readonly [{ readonly internalType: "address"; readonly name: ""; readonly type: "address"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "targetAddress"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "originalGas"; readonly type: "uint256"; }, { readonly internalType: "bytes32"; readonly name: "jobHash"; readonly type: "bytes32"; }]; readonly name: "reimburseGas"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "renounceOwnership"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "strategyRegistry"; readonly outputs: readonly [{ readonly internalType: "contract IStrategyRegistry"; readonly name: ""; readonly type: "address"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "targetAddress"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "highGasEstimate"; readonly type: "uint256"; }]; readonly name: "transactionsRemaining"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "newOwner"; readonly type: "address"; }]; readonly name: "transferOwnership"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "vaultRegistry"; readonly outputs: readonly [{ readonly internalType: "contract IVaultRegistry"; readonly name: ""; readonly type: "address"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "amount"; readonly type: "uint256"; }, { readonly internalType: "address payable"; readonly name: "to"; readonly type: "address"; }]; readonly name: "withdraw"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "initialLogic"; readonly type: "address"; }, { readonly internalType: "address"; readonly name: "initialAdmin"; readonly type: "address"; }, { readonly internalType: "bytes"; readonly name: "_data"; readonly type: "bytes"; }]; readonly stateMutability: "payable"; readonly type: "constructor"; }]; readonly SteerPeriphery: readonly [{ readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: false; readonly internalType: "address"; readonly name: "previousAdmin"; readonly type: "address"; }, { readonly indexed: false; readonly internalType: "address"; readonly name: "newAdmin"; readonly type: "address"; }]; readonly name: "AdminChanged"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly internalType: "address"; readonly name: "implementation"; readonly type: "address"; }]; readonly name: "Upgraded"; readonly type: "event"; }, { readonly stateMutability: "payable"; readonly type: "fallback"; }, { readonly inputs: readonly []; readonly name: "admin"; readonly outputs: readonly [{ readonly internalType: "address"; readonly name: ""; readonly type: "address"; }]; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "newAdmin"; readonly type: "address"; }]; readonly name: "changeAdmin"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "implementation"; readonly outputs: readonly [{ readonly internalType: "address"; readonly name: ""; readonly type: "address"; }]; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "newImplementation"; readonly type: "address"; }]; readonly name: "upgradeTo"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "newImplementation"; readonly type: "address"; }, { readonly internalType: "bytes"; readonly name: "data"; readonly type: "bytes"; }]; readonly name: "upgradeToAndCall"; readonly outputs: readonly []; readonly stateMutability: "payable"; readonly type: "function"; }, { readonly stateMutability: "payable"; readonly type: "receive"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly internalType: "address"; readonly name: "beacon"; readonly type: "address"; }]; readonly name: "BeaconUpgraded"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly internalType: "address"; readonly name: "previousOwner"; readonly type: "address"; }, { readonly indexed: true; readonly internalType: "address"; readonly name: "newOwner"; readonly type: "address"; }]; readonly name: "OwnershipTransferred"; readonly type: "event"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "vault"; readonly type: "address"; }]; readonly name: "algebraVaultDetailsByAddress"; readonly outputs: readonly [{ readonly components: readonly [{ readonly internalType: "string"; readonly name: "vaultType"; readonly type: "string"; }, { readonly internalType: "address"; readonly name: "token0"; readonly type: "address"; }, { readonly internalType: "address"; readonly name: "token1"; readonly type: "address"; }, { readonly internalType: "string"; readonly name: "name"; readonly type: "string"; }, { readonly internalType: "string"; readonly name: "symbol"; readonly type: "string"; }, { readonly internalType: "uint256"; readonly name: "decimals"; readonly type: "uint256"; }, { readonly internalType: "string"; readonly name: "token0Name"; readonly type: "string"; }, { readonly internalType: "string"; readonly name: "token1Name"; readonly type: "string"; }, { readonly internalType: "string"; readonly name: "token0Symbol"; readonly type: "string"; }, { readonly internalType: "string"; readonly name: "token1Symbol"; readonly type: "string"; }, { readonly internalType: "uint256"; readonly name: "token0Decimals"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "token1Decimals"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "totalLPTokensIssued"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "token0Balance"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "token1Balance"; readonly type: "uint256"; }, { readonly internalType: "address"; readonly name: "vaultCreator"; readonly type: "address"; }]; readonly internalType: "struct IMultiPositionManager.AlgebraVaultDetails"; readonly name: "details"; readonly type: "tuple"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly components: readonly [{ readonly internalType: "uint256"; readonly name: "tokenId"; readonly type: "uint256"; }, { readonly internalType: "bytes"; readonly name: "params"; readonly type: "bytes"; }, { readonly internalType: "string"; readonly name: "beaconName"; readonly type: "string"; }, { readonly internalType: "address"; readonly name: "vaultManager"; readonly type: "address"; }, { readonly internalType: "string"; readonly name: "payloadIpfs"; readonly type: "string"; }]; readonly internalType: "struct ISteerPeriphery.CVDGParams"; readonly name: "cvdgParams"; readonly type: "tuple"; }]; readonly name: "createVaultAndDepositGas"; readonly outputs: readonly [{ readonly internalType: "address"; readonly name: "newVault"; readonly type: "address"; }]; readonly stateMutability: "payable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly components: readonly [{ readonly internalType: "address"; readonly name: "strategyCreator"; readonly type: "address"; }, { readonly internalType: "string"; readonly name: "name"; readonly type: "string"; }, { readonly internalType: "string"; readonly name: "execBundle"; readonly type: "string"; }, { readonly internalType: "uint128"; readonly name: "maxGasCost"; readonly type: "uint128"; }, { readonly internalType: "uint128"; readonly name: "maxGasPerAction"; readonly type: "uint128"; }, { readonly internalType: "bytes"; readonly name: "params"; readonly type: "bytes"; }, { readonly internalType: "string"; readonly name: "beaconName"; readonly type: "string"; }, { readonly internalType: "address"; readonly name: "vaultManager"; readonly type: "address"; }, { readonly internalType: "string"; readonly name: "payloadIpfs"; readonly type: "string"; }]; readonly internalType: "struct ISteerPeriphery.CVSParams"; readonly name: "cvsParams"; readonly type: "tuple"; }]; readonly name: "createVaultAndStrategy"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: "tokenId"; readonly type: "uint256"; }, { readonly internalType: "address"; readonly name: "newVault"; readonly type: "address"; }]; readonly stateMutability: "payable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly components: readonly [{ readonly internalType: "address"; readonly name: "strategyCreator"; readonly type: "address"; }, { readonly internalType: "string"; readonly name: "name"; readonly type: "string"; }, { readonly internalType: "string"; readonly name: "execBundle"; readonly type: "string"; }, { readonly internalType: "uint128"; readonly name: "maxGasCost"; readonly type: "uint128"; }, { readonly internalType: "uint128"; readonly name: "maxGasPerAction"; readonly type: "uint128"; }, { readonly internalType: "bytes"; readonly name: "jobInitParams"; readonly type: "bytes"; }, { readonly internalType: "string"; readonly name: "beaconName"; readonly type: "string"; }, { readonly internalType: "address"; readonly name: "vaultManager"; readonly type: "address"; }, { readonly internalType: "string"; readonly name: "payloadIpfs"; readonly type: "string"; }, { readonly internalType: "bytes[]"; readonly name: "userProvidedData"; readonly type: "bytes[]"; }, { readonly internalType: "address[]"; readonly name: "targetAddresses"; readonly type: "address[]"; }, { readonly internalType: "string"; readonly name: "jobName"; readonly type: "string"; }, { readonly internalType: "string"; readonly name: "ipfsForJobDetails"; readonly type: "string"; }]; readonly internalType: "struct ISteerPeriphery.CVSRJParams"; readonly name: "cvsrjParams"; readonly type: "tuple"; }]; readonly name: "createVaultStrategyAndRegisterJob"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: "tokenId"; readonly type: "uint256"; }, { readonly internalType: "address"; readonly name: "newVault"; readonly type: "address"; }]; readonly stateMutability: "payable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "vaultAddress"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "amount0Desired"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "amount1Desired"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "amount0Min"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "amount1Min"; readonly type: "uint256"; }, { readonly internalType: "address"; readonly name: "to"; readonly type: "address"; }]; readonly name: "deposit"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "vaultAddress"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "amount0Desired"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "amount1Desired"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "amount0Min"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "amount1Min"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "poolId"; readonly type: "uint256"; }]; readonly name: "depositAndStake"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "_strategyRegistry"; readonly type: "address"; }, { readonly internalType: "address"; readonly name: "_vaultRegistry"; readonly type: "address"; }, { readonly internalType: "address"; readonly name: "_gasVault"; readonly type: "address"; }, { readonly internalType: "address"; readonly name: "_stakingRewards"; readonly type: "address"; }, { readonly internalType: "string"; readonly name: "_nodeConfig"; readonly type: "string"; }]; readonly name: "initialize"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "nodeConfig"; readonly outputs: readonly [{ readonly internalType: "string"; readonly name: ""; readonly type: "string"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "owner"; readonly outputs: readonly [{ readonly internalType: "address"; readonly name: ""; readonly type: "address"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "renounceOwnership"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "string"; readonly name: "_nodeConfig"; readonly type: "string"; }]; readonly name: "setNodeConfig"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "creator"; readonly type: "address"; }]; readonly name: "strategiesByCreator"; readonly outputs: readonly [{ readonly components: readonly [{ readonly internalType: "uint256"; readonly name: "id"; readonly type: "uint256"; }, { readonly internalType: "string"; readonly name: "name"; readonly type: "string"; }, { readonly internalType: "address"; readonly name: "owner"; readonly type: "address"; }, { readonly internalType: "string"; readonly name: "execBundle"; readonly type: "string"; }, { readonly internalType: "uint128"; readonly name: "maxGasCost"; readonly type: "uint128"; }, { readonly internalType: "uint128"; readonly name: "maxGasPerAction"; readonly type: "uint128"; }]; readonly internalType: "struct IStrategyRegistry.RegisteredStrategy[]"; readonly name: ""; readonly type: "tuple[]"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "newOwner"; readonly type: "address"; }]; readonly name: "transferOwnership"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "vault"; readonly type: "address"; }]; readonly name: "vaultBalancesByAddressWithFees"; readonly outputs: readonly [{ readonly components: readonly [{ readonly internalType: "uint256"; readonly name: "amountToken0"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "amountToken1"; readonly type: "uint256"; }]; readonly internalType: "struct IMultiPositionManager.VaultBalance"; readonly name: "balances"; readonly type: "tuple"; }]; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "vault"; readonly type: "address"; }]; readonly name: "vaultDetailsByAddress"; readonly outputs: readonly [{ readonly components: readonly [{ readonly internalType: "string"; readonly name: "vaultType"; readonly type: "string"; }, { readonly internalType: "address"; readonly name: "token0"; readonly type: "address"; }, { readonly internalType: "address"; readonly name: "token1"; readonly type: "address"; }, { readonly internalType: "string"; readonly name: "name"; readonly type: "string"; }, { readonly internalType: "string"; readonly name: "symbol"; readonly type: "string"; }, { readonly internalType: "uint256"; readonly name: "decimals"; readonly type: "uint256"; }, { readonly internalType: "string"; readonly name: "token0Name"; readonly type: "string"; }, { readonly internalType: "string"; readonly name: "token1Name"; readonly type: "string"; }, { readonly internalType: "string"; readonly name: "token0Symbol"; readonly type: "string"; }, { readonly internalType: "string"; readonly name: "token1Symbol"; readonly type: "string"; }, { readonly internalType: "uint256"; readonly name: "token0Decimals"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "token1Decimals"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "feeTier"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "totalLPTokensIssued"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "token0Balance"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "token1Balance"; readonly type: "uint256"; }, { readonly internalType: "address"; readonly name: "vaultCreator"; readonly type: "address"; }]; readonly internalType: "struct IMultiPositionManager.VaultDetails"; readonly name: "details"; readonly type: "tuple"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "strategyId"; readonly type: "uint256"; }]; readonly name: "vaultsByStrategy"; readonly outputs: readonly [{ readonly components: readonly [{ readonly internalType: "enum IVaultRegistry.VaultState"; readonly name: "state"; readonly type: "uint8"; }, { readonly internalType: "uint256"; readonly name: "tokenId"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "vaultID"; readonly type: "uint256"; }, { readonly internalType: "string"; readonly name: "payloadIpfs"; readonly type: "string"; }, { readonly internalType: "address"; readonly name: "vaultAddress"; readonly type: "address"; }, { readonly internalType: "string"; readonly name: "beaconName"; readonly type: "string"; }]; readonly internalType: "struct IVaultRegistry.VaultData[]"; readonly name: ""; readonly type: "tuple[]"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "initialLogic"; readonly type: "address"; }, { readonly internalType: "address"; readonly name: "initialAdmin"; readonly type: "address"; }, { readonly internalType: "bytes"; readonly name: "_data"; readonly type: "bytes"; }]; readonly stateMutability: "payable"; readonly type: "constructor"; }]; readonly StrategyRegistry: readonly [{ readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: false; readonly internalType: "address"; readonly name: "previousAdmin"; readonly type: "address"; }, { readonly indexed: false; readonly internalType: "address"; readonly name: "newAdmin"; readonly type: "address"; }]; readonly name: "AdminChanged"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly internalType: "address"; readonly name: "implementation"; readonly type: "address"; }]; readonly name: "Upgraded"; readonly type: "event"; }, { readonly stateMutability: "payable"; readonly type: "fallback"; }, { readonly inputs: readonly []; readonly name: "admin"; readonly outputs: readonly [{ readonly internalType: "address"; readonly name: ""; readonly type: "address"; }]; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "newAdmin"; readonly type: "address"; }]; readonly name: "changeAdmin"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "implementation"; readonly outputs: readonly [{ readonly internalType: "address"; readonly name: ""; readonly type: "address"; }]; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "newImplementation"; readonly type: "address"; }]; readonly name: "upgradeTo"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "newImplementation"; readonly type: "address"; }, { readonly internalType: "bytes"; readonly name: "data"; readonly type: "bytes"; }]; readonly name: "upgradeToAndCall"; readonly outputs: readonly []; readonly stateMutability: "payable"; readonly type: "function"; }, { readonly stateMutability: "payable"; readonly type: "receive"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly internalType: "address"; readonly name: "owner"; readonly type: "address"; }, { readonly indexed: true; readonly internalType: "address"; readonly name: "approved"; readonly type: "address"; }, { readonly indexed: true; readonly internalType: "uint256"; readonly name: "tokenId"; readonly type: "uint256"; }]; readonly name: "Approval"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly internalType: "address"; readonly name: "owner"; readonly type: "address"; }, { readonly indexed: true; readonly internalType: "address"; readonly name: "operator"; readonly type: "address"; }, { readonly indexed: false; readonly internalType: "bool"; readonly name: "approved"; readonly type: "bool"; }]; readonly name: "ApprovalForAll"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly internalType: "address"; readonly name: "beacon"; readonly type: "address"; }]; readonly name: "BeaconUpgraded"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly internalType: "address"; readonly name: "previousOwner"; readonly type: "address"; }, { readonly indexed: true; readonly internalType: "address"; readonly name: "newOwner"; readonly type: "address"; }]; readonly name: "OwnershipTransferred"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: false; readonly internalType: "address"; readonly name: "account"; readonly type: "address"; }]; readonly name: "Paused"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly internalType: "bytes32"; readonly name: "role"; readonly type: "bytes32"; }, { readonly indexed: true; readonly internalType: "bytes32"; readonly name: "previousAdminRole"; readonly type: "bytes32"; }, { readonly indexed: true; readonly internalType: "bytes32"; readonly name: "newAdminRole"; readonly type: "bytes32"; }]; readonly name: "RoleAdminChanged"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly internalType: "bytes32"; readonly name: "role"; readonly type: "bytes32"; }, { readonly indexed: true; readonly internalType: "address"; readonly name: "account"; readonly type: "address"; }, { readonly indexed: true; readonly internalType: "address"; readonly name: "sender"; readonly type: "address"; }]; readonly name: "RoleGranted"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly internalType: "bytes32"; readonly name: "role"; readonly type: "bytes32"; }, { readonly indexed: true; readonly internalType: "address"; readonly name: "account"; readonly type: "address"; }, { readonly indexed: true; readonly internalType: "address"; readonly name: "sender"; readonly type: "address"; }]; readonly name: "RoleRevoked"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly internalType: "address"; readonly name: "owner"; readonly type: "address"; }, { readonly indexed: true; readonly internalType: "uint256"; readonly name: "tokenId"; readonly type: "uint256"; }, { readonly indexed: false; readonly internalType: "string"; readonly name: "name"; readonly type: "string"; }]; readonly name: "StrategyCreated"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly internalType: "address"; readonly name: "from"; readonly type: "address"; }, { readonly indexed: true; readonly internalType: "address"; readonly name: "to"; readonly type: "address"; }, { readonly indexed: true; readonly internalType: "uint256"; readonly name: "tokenId"; readonly type: "uint256"; }]; readonly name: "Transfer"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: false; readonly internalType: "address"; readonly name: "account"; readonly type: "address"; }]; readonly name: "Unpaused"; readonly type: "event"; }, { readonly inputs: readonly []; readonly name: "DEFAULT_ADMIN_ROLE"; readonly outputs: readonly [{ readonly internalType: "bytes32"; readonly name: ""; readonly type: "bytes32"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "GOVERNANCE_ROLE"; readonly outputs: readonly [{ readonly internalType: "bytes32"; readonly name: ""; readonly type: "bytes32"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "MINTER_ROLE"; readonly outputs: readonly [{ readonly internalType: "bytes32"; readonly name: ""; readonly type: "bytes32"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "PAUSER_ROLE"; readonly outputs: readonly [{ readonly internalType: "bytes32"; readonly name: ""; readonly type: "bytes32"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "_tokenIdTracker"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: "_value"; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "to"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "tokenId"; readonly type: "uint256"; }]; readonly name: "approve"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "owner"; readonly type: "address"; }]; readonly name: "balanceOf"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "baseURI"; readonly outputs: readonly [{ readonly internalType: "string"; readonly name: ""; readonly type: "string"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "strategyCreator"; readonly type: "address"; }, { readonly internalType: "string"; readonly name: "strategyName"; readonly type: "string"; }, { readonly internalType: "string"; readonly name: "execBundle"; readonly type: "string"; }, { readonly internalType: "uint128"; readonly name: "maxGasCost"; readonly type: "uint128"; }, { readonly internalType: "uint128"; readonly name: "maxGasPerAction"; readonly type: "uint128"; }]; readonly name: "createStrategy"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: "newStrategyTokenId"; readonly type: "uint256"; }]; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "tokenId"; readonly type: "uint256"; }]; readonly name: "getApproved"; readonly outputs: readonly [{ readonly internalType: "address"; readonly name: ""; readonly type: "address"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "tokenId"; readonly type: "uint256"; }]; readonly name: "getRegisteredStrategy"; readonly outputs: readonly [{ readonly components: readonly [{ readonly internalType: "uint256"; readonly name: "id"; readonly type: "uint256"; }, { readonly internalType: "string"; readonly name: "name"; readonly type: "string"; }, { readonly internalType: "address"; readonly name: "owner"; readonly type: "address"; }, { readonly internalType: "string"; readonly name: "execBundle"; readonly type: "string"; }, { readonly internalType: "uint128"; readonly name: "maxGasCost"; readonly type: "uint128"; }, { readonly internalType: "uint128"; readonly name: "maxGasPerAction"; readonly type: "uint128"; }]; readonly internalType: "struct IStrategyRegistry.RegisteredStrategy"; readonly name: ""; readonly type: "tuple"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "bytes32"; readonly name: "role"; readonly type: "bytes32"; }]; readonly name: "getRoleAdmin"; readonly outputs: readonly [{ readonly internalType: "bytes32"; readonly name: ""; readonly type: "bytes32"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "bytes32"; readonly name: "role"; readonly type: "bytes32"; }, { readonly internalType: "address"; readonly name: "account"; readonly type: "address"; }]; readonly name: "grantRole"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "bytes32"; readonly name: "role"; readonly type: "bytes32"; }, { readonly internalType: "address"; readonly name: "account"; readonly type: "address"; }]; readonly name: "hasRole"; readonly outputs: readonly [{ readonly internalType: "bool"; readonly name: ""; readonly type: "bool"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "hashedEmptyString"; readonly outputs: readonly [{ readonly internalType: "bytes32"; readonly name: ""; readonly type: "bytes32"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "string"; readonly name: "registry"; readonly type: "string"; }]; readonly name: "initialize"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "owner"; readonly type: "address"; }, { readonly internalType: "address"; readonly name: "operator"; readonly type: "address"; }]; readonly name: "isApprovedForAll"; readonly outputs: readonly [{ readonly internalType: "bool"; readonly name: ""; readonly type: "bool"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "maxMaxGasPerAction"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "name"; readonly outputs: readonly [{ readonly internalType: "string"; readonly name: ""; readonly type: "string"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "owner"; readonly outputs: readonly [{ readonly internalType: "address"; readonly name: ""; readonly type: "address"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "tokenId"; readonly type: "uint256"; }]; readonly name: "ownerOf"; readonly outputs: readonly [{ readonly internalType: "address"; readonly name: ""; readonly type: "address"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "pause"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "paused"; readonly outputs: readonly [{ readonly internalType: "bool"; readonly name: ""; readonly type: "bool"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "renounceOwnership"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "bytes32"; readonly name: "role"; readonly type: "bytes32"; }, { readonly internalType: "address"; readonly name: "account"; readonly type: "address"; }]; readonly name: "renounceRole"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "bytes32"; readonly name: "role"; readonly type: "bytes32"; }, { readonly internalType: "address"; readonly name: "account"; readonly type: "address"; }]; readonly name: "revokeRole"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "from"; readonly type: "address"; }, { readonly internalType: "address"; readonly name: "to"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "tokenId"; readonly type: "uint256"; }]; readonly name: "safeTransferFrom"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "from"; readonly type: "address"; }, { readonly internalType: "address"; readonly name: "to"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "tokenId"; readonly type: "uint256"; }, { readonly internalType: "bytes"; readonly name: "_data"; readonly type: "bytes"; }]; readonly name: "safeTransferFrom"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "operator"; readonly type: "address"; }, { readonly internalType: "bool"; readonly name: "approved"; readonly type: "bool"; }]; readonly name: "setApprovalForAll"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "_tokenId"; readonly type: "uint256"; }, { readonly internalType: "uint128"; readonly name: "_maxGasCost"; readonly type: "uint128"; }, { readonly internalType: "uint128"; readonly name: "_maxGasPerAction"; readonly type: "uint128"; }]; readonly name: "setGasParameters"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "_maxMaxGasPerAction"; readonly type: "uint256"; }]; readonly name: "setMaxMaxGasPerAction"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "string"; readonly name: ""; readonly type: "string"; }]; readonly name: "strategies"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: "id"; readonly type: "uint256"; }, { readonly internalType: "string"; readonly name: "name"; readonly type: "string"; }, { readonly internalType: "address"; readonly name: "owner"; readonly type: "address"; }, { readonly internalType: "string"; readonly name: "execBundle"; readonly type: "string"; }, { readonly internalType: "uint128"; readonly name: "maxGasCost"; readonly type: "uint128"; }, { readonly internalType: "uint128"; readonly name: "maxGasPerAction"; readonly type: "uint128"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "bytes4"; readonly name: "interfaceId"; readonly type: "bytes4"; }]; readonly name: "supportsInterface"; readonly outputs: readonly [{ readonly internalType: "bool"; readonly name: ""; readonly type: "bool"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "symbol"; readonly outputs: readonly [{ readonly internalType: "string"; readonly name: ""; readonly type: "string"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "index"; readonly type: "uint256"; }]; readonly name: "tokenByIndex"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly name: "tokenIdToExecBundle"; readonly outputs: readonly [{ readonly internalType: "string"; readonly name: ""; readonly type: "string"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "owner"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "index"; readonly type: "uint256"; }]; readonly name: "tokenOfOwnerByIndex"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "tokenId"; readonly type: "uint256"; }]; readonly name: "tokenURI"; readonly outputs: readonly [{ readonly internalType: "string"; readonly name: ""; readonly type: "string"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "totalSupply"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "from"; readonly type: "address"; }, { readonly internalType: "address"; readonly name: "to"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "tokenId"; readonly type: "uint256"; }]; readonly name: "transferFrom"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "newOwner"; readonly type: "address"; }]; readonly name: "transferOwnership"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "unpause"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "initialLogic"; readonly type: "address"; }, { readonly internalType: "address"; readonly name: "initialAdmin"; readonly type: "address"; }, { readonly internalType: "bytes"; readonly name: "_data"; readonly type: "bytes"; }]; readonly stateMutability: "payable"; readonly type: "constructor"; }]; readonly VaultRegistry: readonly [{ readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: false; readonly internalType: "address"; readonly name: "previousAdmin"; readonly type: "address"; }, { readonly indexed: false; readonly internalType: "address"; readonly name: "newAdmin"; readonly type: "address"; }]; readonly name: "AdminChanged"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly internalType: "address"; readonly name: "implementation"; readonly type: "address"; }]; readonly name: "Upgraded"; readonly type: "event"; }, { readonly stateMutability: "payable"; readonly type: "fallback"; }, { readonly inputs: readonly []; readonly name: "admin"; readonly outputs: readonly [{ readonly internalType: "address"; readonly name: ""; readonly type: "address"; }]; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "newAdmin"; readonly type: "address"; }]; readonly name: "changeAdmin"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "implementation"; readonly outputs: readonly [{ readonly internalType: "address"; readonly name: ""; readonly type: "address"; }]; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "newImplementation"; readonly type: "address"; }]; readonly name: "upgradeTo"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "newImplementation"; readonly type: "address"; }, { readonly internalType: "bytes"; readonly name: "data"; readonly type: "bytes"; }]; readonly name: "upgradeToAndCall"; readonly outputs: readonly []; readonly stateMutability: "payable"; readonly type: "function"; }, { readonly stateMutability: "payable"; readonly type: "receive"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "selectorLength"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "isImplementedLength"; readonly type: "uint256"; }]; readonly name: "IncorrectArrayLengths"; readonly type: "error"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: false; readonly internalType: "string"; readonly name: "_name"; readonly type: "string"; }, { readonly indexed: false; readonly internalType: "string"; readonly name: "_ipfsHash"; readonly type: "string"; }]; readonly name: "BeaconConfigUpdated"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: false; readonly internalType: "string"; readonly name: "_name"; readonly type: "string"; }]; readonly name: "BeaconDeregistered"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: false; readonly internalType: "string"; readonly name: "_name"; readonly type: "string"; }, { readonly indexed: false; readonly internalType: "address"; readonly name: "_address"; readonly type: "address"; }, { readonly indexed: false; readonly internalType: "string"; readonly name: "_ipfsHash"; readonly type: "string"; }]; readonly name: "BeaconRegistered"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly internalType: "address"; readonly name: "beacon"; readonly type: "address"; }]; readonly name: "BeaconUpgraded"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: false; readonly internalType: "address"; readonly name: ""; readonly type: "address"; }, { readonly indexed: false; readonly internalType: "string"; readonly name: ""; readonly type: "string"; }]; readonly name: "FeeSettingFailed"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly internalType: "address"; readonly name: "previousOwner"; readonly type: "address"; }, { readonly indexed: true; readonly internalType: "address"; readonly name: "newOwner"; readonly type: "address"; }]; readonly name: "OwnershipTransferred"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: false; readonly internalType: "address"; readonly name: "account"; readonly type: "address"; }]; readonly name: "Paused"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly internalType: "bytes32"; readonly name: "role"; readonly type: "bytes32"; }, { readonly indexed: true; readonly internalType: "bytes32"; readonly name: "previousAdminRole"; readonly type: "bytes32"; }, { readonly indexed: true; readonly internalType: "bytes32"; readonly name: "newAdminRole"; readonly type: "bytes32"; }]; readonly name: "RoleAdminChanged"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly internalType: "bytes32"; readonly name: "role"; readonly type: "bytes32"; }, { readonly indexed: true; readonly internalType: "address"; readonly name: "account"; readonly type: "address"; }, { readonly indexed: true; readonly internalType: "address"; readonly name: "sender"; readonly type: "address"; }]; readonly name: "RoleGranted"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly internalType: "bytes32"; readonly name: "role"; readonly type: "bytes32"; }, { readonly indexed: true; readonly internalType: "address"; readonly name: "account"; readonly type: "address"; }, { readonly indexed: true; readonly internalType: "address"; readonly name: "sender"; readonly type: "address"; }]; readonly name: "RoleRevoked"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: false; readonly internalType: "address"; readonly name: "account"; readonly type: "address"; }]; readonly name: "Unpaused"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: false; readonly internalType: "address"; readonly name: "deployer"; readonly type: "address"; }, { readonly indexed: false; readonly internalType: "address"; readonly name: "vault"; readonly type: "address"; }, { readonly indexed: false; readonly internalType: "string"; readonly name: "beaconName"; readonly type: "string"; }, { readonly indexed: true; readonly internalType: "uint256"; readonly name: "tokenId"; readonly type: "uint256"; }, { readonly indexed: false; readonly internalType: "address"; readonly name: "vaultManager"; readonly type: "address"; }]; readonly name: "VaultCreated"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly internalType: "address"; readonly name: "vault"; readonly type: "address"; }, { readonly indexed: false; readonly internalType: "enum VaultRegistry.VaultState"; readonly name: "newState"; readonly type: "uint8"; }]; readonly name: "VaultStateChanged"; readonly type: "event"; }, { readonly inputs: readonly []; readonly name: "DEFAULT_ADMIN_ROLE"; readonly outputs: readonly [{ readonly internalType: "bytes32"; readonly name: ""; readonly type: "bytes32"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "string"; readonly name: ""; readonly type: "string"; }]; readonly name: "beaconAddresses"; readonly outputs: readonly [{ readonly internalType: "address"; readonly name: ""; readonly type: "address"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: ""; readonly type: "address"; }]; readonly name: "beaconTypes"; readonly outputs: readonly [{ readonly internalType: "string"; readonly name: ""; readonly type: "string"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "bytes"; readonly name: "_params"; readonly type: "bytes"; }, { readonly internalType: "uint256"; readonly name: "_tokenId"; readonly type: "uint256"; }, { readonly internalType: "string"; readonly name: "_beaconName"; readonly type: "string"; }, { readonly internalType: "address"; readonly name: "_vaultManager"; readonly type: "address"; }, { readonly internalType: "string"; readonly name: "_payloadIpfs"; readonly type: "string"; }]; readonly name: "createVault"; readonly outputs: readonly [{ readonly internalType: "address"; readonly name: ""; readonly type: "address"; }]; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "_address"; readonly type: "address"; }, { readonly internalType: "string"; readonly name: "_name"; readonly type: "string"; }, { readonly internalType: "string"; readonly name: "_ipfsConfigForBeacon"; readonly type: "string"; }]; readonly name: "deployAndRegisterBeacon"; readonly outputs: readonly [{ readonly internalType: "address"; readonly name: ""; readonly type: "address"; }]; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "string"; readonly name: "_name"; readonly type: "string"; }]; readonly name: "deregisterBeacon"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "bytes4"; readonly name: "interfaceId"; readonly type: "bytes4"; }]; readonly name: "doISupportInterface"; readonly outputs: readonly [{ readonly internalType: "bool"; readonly name: ""; readonly type: "bool"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "feeManager"; readonly outputs: readonly [{ readonly internalType: "address"; readonly name: ""; readonly type: "address"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "bytes32"; readonly name: "role"; readonly type: "bytes32"; }]; readonly name: "getRoleAdmin"; readonly outputs: readonly [{ readonly internalType: "bytes32"; readonly name: ""; readonly type: "bytes32"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "_vault"; readonly type: "address"; }]; readonly name: "getStrategyCreatorForVault"; readonly outputs: readonly [{ readonly internalType: "address"; readonly name: ""; readonly type: "address"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "_tokenId"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "_vaultId"; readonly type: "uint256"; }]; readonly name: "getVaultByStrategyAndIndex"; readonly outputs: readonly [{ readonly components: readonly [{ readonly internalType: "enum VaultRegistry.VaultState"; readonly name: "state"; readonly type: "uint8"; }, { readonly internalType: "uint256"; readonly name: "tokenId"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "vaultID"; readonly type: "uint256"; }, { readonly internalType: "string"; readonly name: "payloadIpfs"; readonly type: "string"; }, { readonly internalType: "address"; readonly name: "vaultAddress"; readonly type: "address"; }, { readonly internalType: "string"; readonly name: "beaconName"; readonly type: "string"; }]; readonly internalType: "struct VaultRegistry.VaultData"; readonly name: ""; readonly type: "tuple"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "_tokenId"; readonly type: "uint256"; }]; readonly name: "getVaultCountByStrategyId"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "_address"; readonly type: "address"; }]; readonly name: "getVaultDetails"; readonly outputs: readonly [{ readonly components: readonly [{ readonly internalType: "enum VaultRegistry.VaultState"; readonly name: "state"; readonly type: "uint8"; }, { readonly internalType: "uint256"; readonly name: "tokenId"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "vaultID"; readonly type: "uint256"; }, { readonly internalType: "string"; readonly name: "payloadIpfs"; readonly type: "string"; }, { readonly internalType: "address"; readonly name: "vaultAddress"; readonly type: "address"; }, { readonly internalType: "string"; readonly name: "beaconName"; readonly type: "string"; }]; readonly internalType: "struct VaultRegistry.VaultData"; readonly name: ""; readonly type: "tuple"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "bytes32"; readonly name: "role"; readonly type: "bytes32"; }, { readonly internalType: "address"; readonly name: "account"; readonly type: "address"; }]; readonly name: "grantRole"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "bytes32"; readonly name: "role"; readonly type: "bytes32"; }, { readonly internalType: "address"; readonly name: "account"; readonly type: "address"; }]; readonly name: "hasRole"; readonly outputs: readonly [{ readonly internalType: "bool"; readonly name: ""; readonly type: "bool"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "_orchestrator"; readonly type: "address"; }, { readonly internalType: "address"; readonly name: "_strategyRegistry"; readonly type: "address"; }, { readonly internalType: "address"; readonly name: "_whitelistRegistry"; readonly type: "address"; }]; readonly name: "initialize"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "string"; readonly name: ""; readonly type: "string"; }, { readonly internalType: "bytes4"; readonly name: ""; readonly type: "bytes4"; }]; readonly name: "interfaceImplementations"; readonly outputs: readonly [{ readonly internalType: "bool"; readonly name: ""; readonly type: "bool"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly name: "linkedVaults"; readonly outputs: readonly [{ readonly internalType: "address"; readonly name: ""; readonly type: "address"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "orchestrator"; readonly outputs: readonly [{ readonly internalType: "address"; readonly name: ""; readonly type: "address"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "owner"; readonly outputs: readonly [{ readonly internalType: "address"; readonly name: ""; readonly type: "address"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "pause"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "paused"; readonly outputs: readonly [{ readonly internalType: "bool"; readonly name: ""; readonly type: "bool"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "string"; readonly name: "_name"; readonly type: "string"; }, { readonly internalType: "address"; readonly name: "_address"; readonly type: "address"; }, { readonly internalType: "string"; readonly name: "_ipfsConfigForBeacon"; readonly type: "string"; }]; readonly name: "registerBeacon"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "renounceOwnership"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "bytes32"; readonly name: "role"; readonly type: "bytes32"; }, { readonly internalType: "address"; readonly name: "account"; readonly type: "address"; }]; readonly name: "renounceRole"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "bytes32"; readonly name: "role"; readonly type: "bytes32"; }, { readonly internalType: "address"; readonly name: "account"; readonly type: "address"; }]; readonly name: "revokeRole"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "_feeManager"; readonly type: "address"; }]; readonly name: "setFeeManager"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "_vaultHelper"; readonly type: "address"; }]; readonly name: "setVaultHelper"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "strategyRegistry"; readonly outputs: readonly [{ readonly internalType: "contract IStrategyRegistry"; readonly name: ""; readonly type: "address"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "bytes4"; readonly name: "interfaceId"; readonly type: "bytes4"; }]; readonly name: "supportsInterface"; readonly outputs: readonly [{ readonly internalType: "bool"; readonly name: ""; readonly type: "bool"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "totalVaultCount"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "newOwner"; readonly type: "address"; }]; readonly name: "transferOwnership"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "unpause"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "string"; readonly name: "_name"; readonly type: "string"; }, { readonly internalType: "string"; readonly name: "_newIPFSConfigForBeacon"; readonly type: "string"; }]; readonly name: "updateBeaconConfig"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "string"; readonly name: "beaconName"; readonly type: "string"; }, { readonly internalType: "bytes4[]"; readonly name: "selectors"; readonly type: "bytes4[]"; }, { readonly internalType: "bool[]"; readonly name: "isImplemented"; readonly type: "bool[]"; }]; readonly name: "updateInterfaceImplementations"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "_vault"; readonly type: "address"; }, { readonly internalType: "enum VaultRegistry.VaultState"; readonly name: "_newState"; readonly type: "uint8"; }]; readonly name: "updateVaultState"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "vaultHelper"; readonly outputs: readonly [{ readonly internalType: "address"; readonly name: ""; readonly type: "address"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "whitelistRegistry"; readonly outputs: readonly [{ readonly internalType: "address"; readonly name: ""; readonly type: "address"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "initialLogic"; readonly type: "address"; }, { readonly internalType: "address"; readonly name: "initialAdmin"; readonly type: "address"; }, { readonly internalType: "bytes"; readonly name: "_data"; readonly type: "bytes"; }]; readonly stateMutability: "payable"; readonly type: "constructor"; }]; readonly Helper: readonly [{ readonly inputs: readonly [{ readonly internalType: "int24"; readonly name: "currentTick"; readonly type: "int24"; }, { readonly internalType: "uint32"; readonly name: "_twapInterval"; readonly type: "uint32"; }, { readonly internalType: "int24"; readonly name: "_maxTickChange"; readonly type: "int24"; }, { readonly internalType: "address"; readonly name: "pool"; readonly type: "address"; }]; readonly name: "algebraVolatilityCheck"; readonly outputs: readonly []; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "total0"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "total1"; readonly type: "uint256"; }, { readonly components: readonly [{ readonly internalType: "int24"; readonly name: "lowerTick"; readonly type: "int24"; }, { readonly internalType: "int24"; readonly name: "upperTick"; readonly type: "int24"; }, { readonly internalType: "uint16"; readonly name: "relativeWeight"; readonly type: "uint16"; }]; readonly internalType: "struct IHelper.NewLiquidityPositions[]"; readonly name: "positions"; readonly type: "tuple[]"; }, { readonly internalType: "address"; readonly name: "pool"; readonly type: "address"; }, { readonly internalType: "address"; readonly name: "feeManager"; readonly type: "address"; }, { readonly internalType: "uint160"; readonly name: "sqrtPriceX96"; readonly type: "uint160"; }]; readonly name: "getAlgebraVaultBalances"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "_totalSupply"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "total0"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "total1"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "amount0Desired"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "amount1Desired"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "amount0Min"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "amount1Min"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "minShares"; readonly type: "uint256"; }]; readonly name: "getShares"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: "shares"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "amount0Used"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "amount1Used"; readonly type: "uint256"; }]; readonly stateMutability: "pure"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "total0"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "total1"; readonly type: "uint256"; }, { readonly components: readonly [{ readonly internalType: "int24"; readonly name: "lowerTick"; readonly type: "int24"; }, { readonly internalType: "int24"; readonly name: "upperTick"; readonly type: "int24"; }, { readonly internalType: "uint16"; readonly name: "relativeWeight"; readonly type: "uint16"; }]; readonly internalType: "struct IHelper.NewLiquidityPositions[]"; readonly name: "positions"; readonly type: "tuple[]"; }, { readonly internalType: "address"; readonly name: "pool"; readonly type: "address"; }, { readonly internalType: "address"; readonly name: "feeManager"; readonly type: "address"; }]; readonly name: "getUniswapVaultBalances"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "int24"; readonly name: "currentTick"; readonly type: "int24"; }, { readonly internalType: "uint32"; readonly name: "_twapInterval"; readonly type: "uint32"; }, { readonly internalType: "int24"; readonly name: "_maxTickChange"; readonly type: "int24"; }, { readonly internalType: "address"; readonly name: "pool"; readonly type: "address"; }]; readonly name: "poolsharkCheckVolatility"; readonly outputs: readonly []; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "int24"; readonly name: "currentTick"; readonly type: "int24"; }, { readonly internalType: "uint32"; readonly name: "_twapInterval"; readonly type: "uint32"; }, { readonly internalType: "int24"; readonly name: "_maxTickChange"; readonly type: "int24"; }, { readonly internalType: "address"; readonly name: "pool"; readonly type: "address"; }]; readonly name: "uniVolatilityCheck"; readonly outputs: readonly []; readonly stateMutability: "view"; readonly type: "function"; }]; readonly QuickSwapUniv3MultiPositionLiquidityManager: readonly [{ readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly internalType: "address"; readonly name: "owner"; readonly type: "address"; }, { readonly indexed: true; readonly internalType: "address"; readonly name: "spender"; readonly type: "address"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "value"; readonly type: "uint256"; }]; readonly name: "Approval"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly internalType: "address"; readonly name: "sender"; readonly type: "address"; }, { readonly indexed: true; readonly internalType: "address"; readonly name: "to"; readonly type: "address"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "shares"; readonly type: "uint256"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "amount0"; readonly type: "uint256"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "amount1"; readonly type: "uint256"; }]; readonly name: "Deposit"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: false; readonly internalType: "uint256"; readonly name: "amount0Earned"; readonly type: "uint256"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "amount1Earned"; readonly type: "uint256"; }]; readonly name: "FeesEarned"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: false; readonly internalType: "address"; readonly name: "account"; readonly type: "address"; }]; readonly name: "Paused"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly internalType: "bytes32"; readonly name: "role"; readonly type: "bytes32"; }, { readonly indexed: true; readonly internalType: "bytes32"; readonly name: "previousAdminRole"; readonly type: "bytes32"; }, { readonly indexed: true; readonly internalType: "bytes32"; readonly name: "newAdminRole"; readonly type: "bytes32"; }]; readonly name: "RoleAdminChanged"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly internalType: "bytes32"; readonly name: "role"; readonly type: "bytes32"; }, { readonly indexed: true; readonly internalType: "address"; readonly name: "account"; readonly type: "address"; }, { readonly indexed: true; readonly internalType: "address"; readonly name: "sender"; readonly type: "address"; }]; readonly name: "RoleGranted"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly internalType: "bytes32"; readonly name: "role"; readonly type: "bytes32"; }, { readonly indexed: true; readonly internalType: "address"; readonly name: "account"; readonly type: "address"; }, { readonly indexed: true; readonly internalType: "address"; readonly name: "sender"; readonly type: "address"; }]; readonly name: "RoleRevoked"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: false; readonly internalType: "uint160"; readonly name: "sqrtPriceX96"; readonly type: "uint160"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "totalAmount0"; readonly type: "uint256"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "totalAmount1"; readonly type: "uint256"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "totalSupply"; readonly type: "uint256"; }]; readonly name: "Snapshot"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly internalType: "address"; readonly name: "from"; readonly type: "address"; }, { readonly indexed: true; readonly internalType: "address"; readonly name: "to"; readonly type: "address"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "value"; readonly type: "uint256"; }]; readonly name: "Transfer"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: false; readonly internalType: "address"; readonly name: "account"; readonly type: "address"; }]; readonly name: "Unpaused"; readonly type: "event"; }, { readonly anonymous: false; readonly inputs: readonly [{ readonly indexed: true; readonly internalType: "address"; readonly name: "sender"; readonly type: "address"; }, { readonly indexed: true; readonly internalType: "address"; readonly name: "to"; readonly type: "address"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "shares"; readonly type: "uint256"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "amount0"; readonly type: "uint256"; }, { readonly indexed: false; readonly internalType: "uint256"; readonly name: "amount1"; readonly type: "uint256"; }]; readonly name: "Withdraw"; readonly type: "event"; }, { readonly inputs: readonly []; readonly name: "DEFAULT_ADMIN_ROLE"; readonly outputs: readonly [{ readonly internalType: "bytes32"; readonly name: ""; readonly type: "bytes32"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "STEER_FRACTION_OF_FEE"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "TOTAL_FEE"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "accruedSteerFees0"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "accruedSteerFees1"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "accruedStrategistFees0"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "accruedStrategistFees1"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "owner"; readonly type: "address"; }, { readonly internalType: "address"; readonly name: "spender"; readonly type: "address"; }]; readonly name: "allowance"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "spender"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "amount"; readonly type: "uint256"; }]; readonly name: "approve"; readonly outputs: readonly [{ readonly internalType: "bool"; readonly name: ""; readonly type: "bool"; }]; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "account"; readonly type: "address"; }]; readonly name: "balanceOf"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "decimals"; readonly outputs: readonly [{ readonly internalType: "uint8"; readonly name: ""; readonly type: "uint8"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "spender"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "subtractedValue"; readonly type: "uint256"; }]; readonly name: "decreaseAllowance"; readonly outputs: readonly [{ readonly internalType: "bool"; readonly name: ""; readonly type: "bool"; }]; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "amount0Desired"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "amount1Desired"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "amount0Min"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "amount1Min"; readonly type: "uint256"; }, { readonly internalType: "address"; readonly name: "to"; readonly type: "address"; }]; readonly name: "deposit"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: "shares"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "amount0Used"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "amount1Used"; readonly type: "uint256"; }]; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "int24"; readonly name: "tickLower"; readonly type: "int24"; }, { readonly internalType: "int24"; readonly name: "tickUpper"; readonly type: "int24"; }, { readonly internalType: "uint128"; readonly name: "liquidity"; readonly type: "uint128"; }]; readonly name: "emergencyBurn"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: "amount0"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "amount1"; readonly type: "uint256"; }]; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "getPositions"; readonly outputs: readonly [{ readonly internalType: "int24[]"; readonly name: ""; readonly type: "int24[]"; }, { readonly internalType: "int24[]"; readonly name: ""; readonly type: "int24[]"; }, { readonly internalType: "uint16[]"; readonly name: ""; readonly type: "uint16[]"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "bytes32"; readonly name: "role"; readonly type: "bytes32"; }]; readonly name: "getRoleAdmin"; readonly outputs: readonly [{ readonly internalType: "bytes32"; readonly name: ""; readonly type: "bytes32"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "bytes32"; readonly name: "role"; readonly type: "bytes32"; }, { readonly internalType: "uint256"; readonly name: "index"; readonly type: "uint256"; }]; readonly name: "getRoleMember"; readonly outputs: readonly [{ readonly internalType: "address"; readonly name: ""; readonly type: "address"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "bytes32"; readonly name: "role"; readonly type: "bytes32"; }]; readonly name: "getRoleMemberCount"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "getTotalAmounts"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: "total0"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "total1"; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "bytes32"; readonly name: "role"; readonly type: "bytes32"; }, { readonly internalType: "address"; readonly name: "account"; readonly type: "address"; }]; readonly name: "grantRole"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "bytes32"; readonly name: "role"; readonly type: "bytes32"; }, { readonly internalType: "address"; readonly name: "account"; readonly type: "address"; }]; readonly name: "hasRole"; readonly outputs: readonly [{ readonly internalType: "bool"; readonly name: ""; readonly type: "bool"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "spender"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "addedValue"; readonly type: "uint256"; }]; readonly name: "increaseAllowance"; readonly outputs: readonly [{ readonly internalType: "bool"; readonly name: ""; readonly type: "bool"; }]; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "_vaultManager"; readonly type: "address"; }, { readonly internalType: "address"; readonly name: ""; readonly type: "address"; }, { readonly internalType: "address"; readonly name: "_steer"; readonly type: "address"; }, { readonly internalType: "bytes"; readonly name: "_params"; readonly type: "bytes"; }]; readonly name: "initialize"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "maxTickChange"; readonly outputs: readonly [{ readonly internalType: "int24"; readonly name: ""; readonly type: "int24"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "name"; readonly outputs: readonly [{ readonly internalType: "string"; readonly name: ""; readonly type: "string"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "pause"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "paused"; readonly outputs: readonly [{ readonly internalType: "bool"; readonly name: ""; readonly type: "bool"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "poke"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "pool"; readonly outputs: readonly [{ readonly internalType: "contract IUniswapV3Pool"; readonly name: ""; readonly type: "address"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "bytes32"; readonly name: "role"; readonly type: "bytes32"; }, { readonly internalType: "address"; readonly name: "account"; readonly type: "address"; }]; readonly name: "renounceRole"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "bytes32"; readonly name: "role"; readonly type: "bytes32"; }, { readonly internalType: "address"; readonly name: "account"; readonly type: "address"; }]; readonly name: "revokeRole"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "amount0"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "amount1"; readonly type: "uint256"; }, { readonly internalType: "address"; readonly name: "to"; readonly type: "address"; }]; readonly name: "steerCollectFees"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "amount0"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "amount1"; readonly type: "uint256"; }, { readonly internalType: "address"; readonly name: "to"; readonly type: "address"; }]; readonly name: "strategistCollectFees"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "bytes4"; readonly name: "interfaceId"; readonly type: "bytes4"; }]; readonly name: "supportsInterface"; readonly outputs: readonly [{ readonly internalType: "bool"; readonly name: ""; readonly type: "bool"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "symbol"; readonly outputs: readonly [{ readonly internalType: "string"; readonly name: ""; readonly type: "string"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "totalWeight"; readonly type: "uint256"; }, { readonly components: readonly [{ readonly internalType: "int24[]"; readonly name: "lowerTick"; readonly type: "int24[]"; }, { readonly internalType: "int24[]"; readonly name: "upperTick"; readonly type: "int24[]"; }, { readonly internalType: "uint16[]"; readonly name: "relativeWeight"; readonly type: "uint16[]"; }]; readonly internalType: "struct QuickSwapUniv3MultiPositionLiquidityManager.LiquidityPositions"; readonly name: "newPositions"; readonly type: "tuple"; }, { readonly internalType: "bytes"; readonly name: "timeSensitiveData"; readonly type: "bytes"; }]; readonly name: "tend"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "token0"; readonly outputs: readonly [{ readonly internalType: "contract IERC20"; readonly name: ""; readonly type: "address"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "token1"; readonly outputs: readonly [{ readonly internalType: "contract IERC20"; readonly name: ""; readonly type: "address"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "totalSupply"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: ""; readonly type: "uint256"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "recipient"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "amount"; readonly type: "uint256"; }]; readonly name: "transfer"; readonly outputs: readonly [{ readonly internalType: "bool"; readonly name: ""; readonly type: "bool"; }]; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "address"; readonly name: "sender"; readonly type: "address"; }, { readonly internalType: "address"; readonly name: "recipient"; readonly type: "address"; }, { readonly internalType: "uint256"; readonly name: "amount"; readonly type: "uint256"; }]; readonly name: "transferFrom"; readonly outputs: readonly [{ readonly internalType: "bool"; readonly name: ""; readonly type: "bool"; }]; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "twapInterval"; readonly outputs: readonly [{ readonly internalType: "uint32"; readonly name: ""; readonly type: "uint32"; }]; readonly stateMutability: "view"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "amount0"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "amount1"; readonly type: "uint256"; }, { readonly internalType: "bytes"; readonly name: ""; readonly type: "bytes"; }]; readonly name: "uniswapV3MintCallback"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "int256"; readonly name: "amount0Wanted"; readonly type: "int256"; }, { readonly internalType: "int256"; readonly name: "amount1Wanted"; readonly type: "int256"; }, { readonly internalType: "bytes"; readonly name: ""; readonly type: "bytes"; }]; readonly name: "uniswapV3SwapCallback"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly []; readonly name: "unpause"; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; readonly type: "function"; }, { readonly inputs: readonly [{ readonly internalType: "uint256"; readonly name: "shares"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "amount0Min"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "amount1Min"; readonly type: "uint256"; }, { readonly internalType: "address"; readonly name: "to"; readonly type: "address"; }]; readonly name: "withdraw"; readonly outputs: readonly [{ readonly internalType: "uint256"; readonly name: "amount0"; readonly type: "uint256"; }, { readonly internalType: "uint256"; readonly name: "amount1"; readonly type: "uint256"; }]; readonly stateMutability: "nonpayable"; readonly type: "function"; }]; }; //#endregion //#region src/const/deployments/apechain.d.ts interface Contract$48 { address: string; startBlock?: number; } declare const apechainAddresses: Record; //#endregion //#region src/const/deployments/arbitrum.d.ts interface Contract$47 { address: string; startBlock?: number; } declare const arbitrumAddresses: Record; //#endregion //#region src/const/deployments/arbitrumgoerli.d.ts interface Contract$46 { address: string; startBlock?: number; } declare const arbitrumgoerliAddresses: Record; //#endregion //#region src/const/deployments/astar.d.ts interface Contract$45 { address: string; startBlock?: number; } declare const astarAddresses: Record; //#endregion //#region src/const/deployments/astarzkevm.d.ts interface Contract$44 { address: string; startBlock?: number; } declare const astarzkevmAddresses: Record; //#endregion //#region src/const/deployments/avalanche.d.ts interface Contract$43 { address: string; startBlock?: number; } declare const avalancheAddresses: Record; //#endregion //#region src/const/deployments/bartiotest.d.ts interface Contract$42 { address: string; startBlock?: number; } declare const bartiotestAddresses: Record; //#endregion //#region src/const/deployments/base.d.ts interface Contract$41 { address: string; startBlock?: number; } declare const baseAddresses: Record; //#endregion //#region src/const/deployments/blast.d.ts interface Contract$40 { address: string; startBlock?: number; } declare const blastAddresses: Record; //#endregion //#region src/const/deployments/bsc.d.ts interface Contract$39 { address: string; startBlock?: number; } declare const bscAddresses: Record; //#endregion //#region src/const/deployments/celo.d.ts interface Contract$38 { address: string; startBlock?: number; } declare const celoAddresses: Record; //#endregion //#region src/const/deployments/evmos.d.ts interface Contract$37 { address: string; startBlock?: number; } declare const evmosAddresses: Record; //#endregion //#region src/const/deployments/fantom.d.ts interface Contract$36 { address: string; startBlock?: number; } declare const fantomAddresses: Record; //#endregion //#region src/const/deployments/filecoin.d.ts interface Contract$35 { address: string; startBlock?: number; } declare const filecoinAddresses: Record; //#endregion //#region src/const/deployments/flare.d.ts interface Contract$34 { address: string; startBlock?: number; } declare const flareAddresses: Record; //#endregion //#region src/const/deployments/goerli.d.ts interface Contract$33 { address: string; startBlock?: number; } declare const goerliAddresses: Record; //#endregion //#region src/const/deployments/kava.d.ts interface Contract$32 { address: string; startBlock?: number; } declare const kavaAddresses: Record; //#endregion //#region src/const/deployments/linea.d.ts interface Contract$31 { address: string; startBlock?: number; } declare const lineaAddresses: Record; //#endregion //#region src/const/deployments/localhost.d.ts declare const localhostAddresses: { readonly BundleRegistry: "0x63B2bF39E0D7bbF5DBE49dD356CA8BA19B175794"; readonly GasVault: "0xaD0AB54da38B9f7b7b9fAD14404a8e05Aaa7679f"; readonly SteerPeriphery: "0xC09c86CA28e4252D01aaC3F2dbFDa21A93a034fb"; readonly StrategyRegistry: "0xb86e6ED9FDd7eFD408462092cA7C270D44Ce62F1"; readonly VaultRegistry: "0x80df25e3a384BeAA65D48E6d40b0304589510536"; }; //#endregion //#region src/const/deployments/eth.d.ts interface Contract$30 { address: string; startBlock?: number; } declare const ethAddresses: Record; //#endregion //#region src/const/deployments/manta.d.ts interface Contract$29 { address: string; startBlock?: number; } declare const mantaAddresses: Record; //#endregion //#region src/const/deployments/mantle.d.ts interface Contract$28 { address: string; startBlock?: number; } declare const mantleAddresses: Record; //#endregion //#region src/const/deployments/metis.d.ts interface Contract$27 { address: string; startBlock?: number; } declare const metisAddresses: Record; //#endregion //#region src/const/deployments/mode.d.ts interface Contract$26 { address: string; startBlock?: number; } declare const modeAddresses: Record; //#endregion //#region src/const/deployments/moonbeam.d.ts interface Contract$25 { address: string; startBlock?: number; } declare const moonbeamAddresses: Record; //#endregion //#region src/const/deployments/mumbai.d.ts interface Contract$24 { address: string; startBlock?: number; } declare const mumbaiAddresses: Record; //#endregion //#region src/const/deployments/okxtestnet.d.ts interface Contract$23 { address: string; startBlock?: number; } declare const okxtestnetAddresses: Record; //#endregion //#region src/const/deployments/optimism.d.ts interface Contract$22 { address: string; startBlock?: number; } declare const optimismAddresses: Record; //#endregion //#region src/const/deployments/optimismgoerli.d.ts interface Contract$21 { address: string; startBlock?: number; } declare const optimismgoerliAddresses: Record; //#endregion //#region src/const/deployments/polygon.d.ts interface Contract$20 { address: string; startBlock?: number; } declare const polygonAddresses: Record; //#endregion //#region src/const/deployments/polyzkevm.d.ts interface Contract$19 { address: string; startBlock?: number; } declare const polyzkevmAddresses: Record; //#endregion //#region src/const/deployments/rootstock.d.ts interface Contract$18 { address: string; startBlock?: number; } declare const rootstockAddresses: Record; //#endregion //#region src/const/deployments/scroll.d.ts interface Contract$17 { address: string; startBlock?: number; } declare const scrollAddresses: Record; //#endregion //#region src/const/deployments/sei.d.ts interface Contract$16 { address: string; startBlock?: number; } declare const seiAddresses: Record; //#endregion //#region src/const/deployments/sonic.d.ts interface Contract$15 { address: string; startBlock?: number; } declare const sonicAddresses: Record; //#endregion //#region src/const/deployments/taiko.d.ts interface Contract$14 { address: string; startBlock?: number; } declare const taikoAddresses: Record; //#endregion //#region src/const/deployments/telos.d.ts interface Contract$13 { address: string; startBlock?: number; } declare const telosAddresses: Record; //#endregion //#region src/const/deployments/thundercore.d.ts interface Contract$12 { address: string; startBlock?: number; } declare const thundercoreAddresses: Record; //#endregion //#region src/const/deployments/xlayer.d.ts interface Contract$11 { address: string; startBlock?: number; } declare const xlayerAddresses: Record; //#endregion //#region src/const/deployments/zircuit.d.ts interface Contract$10 { address: string; startBlock?: number; } declare const zircuitAddresses: Record; //#endregion //#region src/const/deployments/hemi.d.ts interface Contract$9 { address: string; startBlock?: number; } declare const hemiAddresses: Record; //#endregion //#region src/const/deployments/soneium.d.ts interface Contract$8 { address: string; startBlock?: number; } declare const soneiumAddresses: Record; //#endregion //#region src/const/deployments/uni.d.ts interface Contract$7 { address: string; startBlock?: number; } declare const uniAddresses: Record; //#endregion //#region src/const/deployments/zeta.d.ts interface Contract$6 { address: string; startBlock?: number; } declare const zetaAddresses: Record; //#endregion //#region src/const/deployments/bera.d.ts interface Contract$5 { address: string; startBlock?: number; } declare const beraAddresses: Record; //#endregion //#region src/const/deployments/katana.d.ts interface Contract$4 { address: string; startBlock?: number; } declare const katanaAddresses: Record; //#endregion //#region src/const/deployments/saga.d.ts interface Contract$3 { address: string; startBlock?: number; } declare const sagaAddresses: Record; //#endregion //#region src/const/deployments/bittensor.d.ts interface Contract$2 { address: string; startBlock?: number; } declare const bittensorAddresses: Record; //#endregion //#region src/const/deployments/robinhood.d.ts interface Contract$1 { address: string; startBlock?: number; } declare const robinhoodAddresses: Record; //#endregion //#region src/const/capabilities.d.ts type SupportedChainsFeature = 'subgraph' | 'deployments' | 'protocols' | 'singleAssetDeposit'; type SupportedChainsInclude = { subgraph?: boolean; deployments?: boolean; protocols?: boolean; singleAssetDeposit?: boolean; }; type GetSupportedChainsOptions = { theGraphApiKey?: string; include?: SupportedChainsInclude; filter?: { feature?: SupportedChainsFeature; }; }; type SupportedChainFeatures = { subgraph: boolean; deployments: boolean; protocols: boolean; singleAssetDeposit: boolean; }; type SupportedChain = { schemaVersion: 1; chain: Chain; chainId: number; features: SupportedChainFeatures; subgraphUrl?: string; deployments?: NetworkConfig; protocols?: ProtocolDetails[]; }; declare function getSupportedChains(options?: GetSupportedChainsOptions): SupportedChain[]; declare function getSupportedChainIds(options?: GetSupportedChainsOptions): number[]; declare function getSupportedChainByChainId(chainId: number, options?: Omit): SupportedChain | undefined; //#endregion //#region src/const/quoter.d.ts /** * Base interface for quote parameters */ interface BaseQuoteParams { tokenIn: Address; tokenOut: Address; amountIn: bigint; } /** * Quote parameters for Uniswap V3 style quoters (fee-based) */ interface UniswapQuoteParams extends BaseQuoteParams { fee: number; sqrtPriceLimitX96?: bigint; } /** * Quote parameters for Algebra style quoters (limit price) */ interface AlgebraQuoteParams extends BaseQuoteParams { limitSqrtPrice?: bigint; } /** * Quote parameters for Thick V2 quoters (tick spacing) */ interface ThickQuoteParams extends BaseQuoteParams { tickSpacing: number; sqrtPriceLimitX96?: bigint; } /** * Quote parameters for Algebra Integral v2.1 quoters (with deployer) */ interface AlgebraIntegral21QuoteParams extends BaseQuoteParams { deployer: Address; limitSqrtPrice?: bigint; } /** * Quote parameters for Shadow quoters (tick spacing) */ interface ShadowQuoteParams extends BaseQuoteParams { tickSpacing: number; sqrtPriceLimitX96?: bigint; } /** * Union type for all possible quote parameters */ type QuoteParams = UniswapQuoteParams | AlgebraQuoteParams | ThickQuoteParams | AlgebraIntegral21QuoteParams | ShadowQuoteParams; /** * Union type for all possible QuoterV2 ABIs */ type QuoterV2ABI = typeof UniswapV3QuoterABI | typeof QuickSwapQuoterV2 | typeof QuoterV2Thick | typeof QuoterV2AlgebgraIntegral | typeof QuoterV2AlgebgraIntegral21 | typeof QuoterV2Shadow; /** * Union type for all possible quoter function arguments */ type QuoterFunctionArgs = { tokenIn: Address; tokenOut: Address; amountIn: bigint; fee: number; sqrtPriceLimitX96: bigint; } | { tokenIn: Address; tokenOut: Address; amountIn: bigint; limitSqrtPrice: bigint; } | { tokenIn: Address; tokenOut: Address; amountIn: bigint; tickSpacing: number; sqrtPriceLimitX96: bigint; } | { tokenIn: Address; tokenOut: Address; deployer: Address; amountIn: bigint; limitSqrtPrice: bigint; }; /** * Factory class for creating QuoterV2 contract instances with the appropriate ABI * based on the protocol type detected from beacon names. * * @example * ```typescript * import { createPublicClient, http, parseEther } from 'viem'; * import { polygon } from 'viem/chains'; * import { QuoterV2Factory } from './quoter.js'; * * // Create a viem client * const client = createPublicClient({ * chain: polygon, * transport: http() * }); * * // Configure network with quoter addresses * const networkConfig = { * quoterV2: { * 'QuickSwap': '0x...', * 'Uniswap': '0x...', * 'ThickV2': '0x...', * 'Shadow': '0x...', * 'KatanaIntegral': '0x...' * } * }; * * const factory = new QuoterV2Factory(networkConfig); * * // Example 1: Uniswap V3 style (fee-based) * const { quoter: uniQuoter, params: uniParams } = factory.createQuoterWithParams('uniswap', client, { * tokenIn: '0xA0b86a33E6f73c7C6789b65f71C1ab8EbAbD3A01', * tokenOut: '0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174', * amountIn: parseEther('1'), * fee: 3000, * sqrtPriceLimitX96: 0n * }); * * // Example 2: QuickSwap (Algebra style) * const { quoter: quickQuoter, params: quickParams } = factory.createQuoterWithParams('quickswap', client, { * tokenIn: '0xA0b86a33E6f73c7C6789b65f71C1ab8EbAbD3A01', * tokenOut: '0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174', * amountIn: parseEther('1'), * limitSqrtPrice: 0n * }); * * // Example 3: Thick V2 (tick spacing) * const { quoter: thickQuoter, params: thickParams } = factory.createQuoterWithParams('thickv2', client, { * tokenIn: '0xA0b86a33E6f73c7C6789b65f71C1ab8EbAbD3A01', * tokenOut: '0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174', * amountIn: parseEther('1'), * tickSpacing: 60, * sqrtPriceLimitX96: 0n * }); * * // Example 4: Katana Integral (with deployer) * const { quoter: katanaQuoter, params: katanaParams } = factory.createQuoterWithParams('katanaintegral', client, { * tokenIn: '0xA0b86a33E6f73c7C6789b65f71C1ab8EbAbD3A01', * tokenOut: '0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174', * amountIn: parseEther('1'), * deployer: '0x...', * limitSqrtPrice: 0n * }); * * // Use the quoter contracts * const uniResult = await uniQuoter.read.quoteExactInputSingle([uniParams]); * const quickResult = await quickQuoter.read.quoteExactInputSingle([quickParams]); * const thickResult = await thickQuoter.read.quoteExactInputSingle([thickParams]); * const katanaResult = await katanaQuoter.read.quoteExactInputSingle([katanaParams]); * ``` */ declare class QuoterV2Factory { private networkConfig; constructor(networkConfig: NetworkConfig); /** * Creates quote parameters for the quoteExactInputSingle function based on the protocol type. * * @param beaconName - The beacon identifier to determine the protocol type * @param params - The input parameters for the quote * @returns Formatted parameters object for the specific protocol's quoteExactInputSingle function * @throws Error if protocol type is not supported * * @example * ```typescript * const factory = new QuoterV2Factory(networkConfig); * * // For Uniswap V3 * const uniParams = factory.getQuoteParams('uniswap', { * tokenIn: '0x...', * tokenOut: '0x...', * amountIn: parseEther('1'), * fee: 3000, * sqrtPriceLimitX96: 0n * }); * * // For QuickSwap (Algebra) * const quickParams = factory.getQuoteParams('quickswap', { * tokenIn: '0x...', * tokenOut: '0x...', * amountIn: parseEther('1'), * limitSqrtPrice: 0n * }); * ``` */ getQuoteParams(protocol: Protocol, params: QuoteParams): { tokenIn: `0x${string}`; tokenOut: `0x${string}`; deployer: `0x${string}`; amountIn: bigint; limitSqrtPrice: bigint; tickSpacing?: undefined; sqrtPriceLimitX96?: undefined; fee?: undefined; } | { tokenIn: `0x${string}`; tokenOut: `0x${string}`; amountIn: bigint; tickSpacing: number; sqrtPriceLimitX96: bigint; deployer?: undefined; limitSqrtPrice?: undefined; fee?: undefined; } | { tokenIn: `0x${string}`; tokenOut: `0x${string}`; amountIn: bigint; limitSqrtPrice: bigint; deployer?: undefined; tickSpacing?: undefined; sqrtPriceLimitX96?: undefined; fee?: undefined; } | { tokenIn: `0x${string}`; tokenOut: `0x${string}`; amountIn: bigint; fee: number; sqrtPriceLimitX96: bigint; deployer?: undefined; limitSqrtPrice?: undefined; tickSpacing?: undefined; }; /** * Creates a QuoterV2 contract instance with the appropriate ABI for the given beacon. * * @param beaconName - The beacon identifier to determine the protocol type * @param client - The viem client for contract interactions * @returns A viem contract instance with the appropriate ABI * @throws Error if quoter address is not found for the protocol */ createQuoterV2(protocol: Protocol, client: PublicClient): { read: { [x: string]: (args: readonly unknown[], options?: _$viem.Prettify<_$viem.UnionOmit<_$viem.ReadContractParameters, "address" | "abi" | "args" | "functionName">> | undefined) => Promise; }; estimateGas: { [x: string]: (args: readonly unknown[], options: _$viem.Prettify<_$viem.UnionOmit<_$viem.EstimateContractGasParameters, "address" | "abi" | "args" | "functionName">>) => Promise<_$viem.EstimateContractGasReturnType>; } & { [x: string]: (args: readonly unknown[], options: _$viem.Prettify<_$viem.UnionOmit<_$viem.EstimateContractGasParameters, "address" | "abi" | "args" | "functionName">>) => Promise<_$viem.EstimateContractGasReturnType>; }; simulate: { [x: string]: (args: readonly unknown[], options?: Omit<_$viem.SimulateContractParameters, "address" | "abi" | "args" | "functionName"> | undefined) => Promise<_$viem.SimulateContractReturnType>; }; createEventFilter: { [x: string]: | readonly unknown[] | undefined, strict extends boolean | undefined = undefined>(options?: ({ fromBlock?: bigint | _$viem.BlockTag | undefined; toBlock?: bigint | _$viem.BlockTag | undefined; } & { strict?: strict | undefined; }) | undefined) => Promise<_$viem.CreateContractEventFilterReturnType>; }; getEvents: { [x: string]: (options?: { strict?: boolean | undefined; fromBlock?: bigint | _$viem.BlockTag | undefined; toBlock?: bigint | _$viem.BlockTag | undefined; blockHash?: `0x${string}` | undefined; } | undefined) => Promise<_$viem.GetContractEventsReturnType>; }; watchEvent: { [x: string]: (options: { batch?: boolean | undefined | undefined; pollingInterval?: number | undefined | undefined; strict?: boolean | undefined; fromBlock?: bigint | undefined; onError?: ((error: Error) => void) | undefined | undefined; onLogs: _$viem.WatchContractEventOnLogsFn; poll?: true | undefined | undefined; }) => _$viem.WatchContractEventReturnType; }; write: { [x: string]: , "address" | "abi" | "args" | "functionName"> extends infer T ? { [K in keyof T]: _$viem.UnionOmit<_$viem.WriteContractParameters, "address" | "abi" | "args" | "functionName">[K] } : never)>(args: readonly unknown[], options: options) => Promise<_$viem.WriteContractReturnType>; }; address: `0x${string}`; abi: QuoterV2ABI; }; /** * Convenience function that creates both the quoter contract and properly formatted quote parameters. * * @param beaconName - The beacon identifier to determine the protocol type * @param client - The viem client for contract interactions * @param params - The input parameters for the quote * @returns Object containing the quoter contract and formatted parameters * @throws Error if quoter address is not found for the protocol * * @example * ```typescript * const factory = new QuoterV2Factory(networkConfig); * * const { quoter, params } = factory.createQuoterWithParams('quickswap', client, { * tokenIn: '0x...', * tokenOut: '0x...', * amountIn: parseEther('1'), * limitSqrtPrice: 0n * }); * * // Use directly * const result = await quoter.read.quoteExactInputSingle([params]); * ``` */ createQuoterWithParams(protocol: Protocol, client: PublicClient, params: QuoteParams): { quoter: { read: { [x: string]: (args: readonly unknown[], options?: _$viem.Prettify<_$viem.UnionOmit<_$viem.ReadContractParameters, "address" | "abi" | "args" | "functionName">> | undefined) => Promise; }; estimateGas: { [x: string]: (args: readonly unknown[], options: _$viem.Prettify<_$viem.UnionOmit<_$viem.EstimateContractGasParameters, "address" | "abi" | "args" | "functionName">>) => Promise<_$viem.EstimateContractGasReturnType>; } & { [x: string]: (args: readonly unknown[], options: _$viem.Prettify<_$viem.UnionOmit<_$viem.EstimateContractGasParameters, "address" | "abi" | "args" | "functionName">>) => Promise<_$viem.EstimateContractGasReturnType>; }; simulate: { [x: string]: (args: readonly unknown[], options?: Omit<_$viem.SimulateContractParameters, "address" | "abi" | "args" | "functionName"> | undefined) => Promise<_$viem.SimulateContractReturnType>; }; createEventFilter: { [x: string]: | readonly unknown[] | undefined, strict extends boolean | undefined = undefined>(options?: ({ fromBlock?: bigint | _$viem.BlockTag | undefined; toBlock?: bigint | _$viem.BlockTag | undefined; } & { strict?: strict | undefined; }) | undefined) => Promise<_$viem.CreateContractEventFilterReturnType>; }; getEvents: { [x: string]: (options?: { strict?: boolean | undefined; fromBlock?: bigint | _$viem.BlockTag | undefined; toBlock?: bigint | _$viem.BlockTag | undefined; blockHash?: `0x${string}` | undefined; } | undefined) => Promise<_$viem.GetContractEventsReturnType>; }; watchEvent: { [x: string]: (options: { batch?: boolean | undefined | undefined; pollingInterval?: number | undefined | undefined; strict?: boolean | undefined; fromBlock?: bigint | undefined; onError?: ((error: Error) => void) | undefined | undefined; onLogs: _$viem.WatchContractEventOnLogsFn; poll?: true | undefined | undefined; }) => _$viem.WatchContractEventReturnType; }; write: { [x: string]: , "address" | "abi" | "args" | "functionName"> extends infer T ? { [K in keyof T]: _$viem.UnionOmit<_$viem.WriteContractParameters, "address" | "abi" | "args" | "functionName">[K] } : never)>(args: readonly unknown[], options: options) => Promise<_$viem.WriteContractReturnType>; }; address: `0x${string}`; abi: QuoterV2ABI; }; params: { tokenIn: `0x${string}`; tokenOut: `0x${string}`; deployer: `0x${string}`; amountIn: bigint; limitSqrtPrice: bigint; tickSpacing?: undefined; sqrtPriceLimitX96?: undefined; fee?: undefined; } | { tokenIn: `0x${string}`; tokenOut: `0x${string}`; amountIn: bigint; tickSpacing: number; sqrtPriceLimitX96: bigint; deployer?: undefined; limitSqrtPrice?: undefined; fee?: undefined; } | { tokenIn: `0x${string}`; tokenOut: `0x${string}`; amountIn: bigint; limitSqrtPrice: bigint; deployer?: undefined; tickSpacing?: undefined; sqrtPriceLimitX96?: undefined; fee?: undefined; } | { tokenIn: `0x${string}`; tokenOut: `0x${string}`; amountIn: bigint; fee: number; sqrtPriceLimitX96: bigint; deployer?: undefined; limitSqrtPrice?: undefined; tickSpacing?: undefined; }; }; /** * Gets the appropriate QuoterV2 ABI based on the beacon name and protocol. * * @param protocol - The detected protocol type * @returns The appropriate ABI array */ getQuoterAbi(protocol: Protocol | null): QuoterV2ABI; /** * Gets the QuoterV2 address for the given protocol from the network configuration. * * @param protocol - The protocol type * @returns The quoter address or undefined if not found */ getQuoterV2Address(protocol: Protocol | null): string | undefined; /** * Checks if the beacon represents an Algebra Integral v2.1 vault. * * @param beaconName - The beacon identifier * @returns True if it's an Algebra Integral v2.1 vault */ private isAlgebraIntegral21Vault; } /** * Helper function to get QuoterV2 address for a protocol from network config. * * @param protocol - The protocol to get the quoter address for * @param networkConfig - The network configuration object * @returns The quoter address or undefined if not found * * @example * ```typescript * const quoterAddress = getQuoterV2Address(Protocol.QuickSwap, networkConfig); * if (quoterAddress) { * // Use the quoter address * } * ``` */ /** * Type guard to check if parameters are for Uniswap V3 style quoter */ declare function isUniswapQuoteParams(params: QuoteParams): params is UniswapQuoteParams; /** * Type guard to check if parameters are for Algebra style quoter */ declare function isAlgebraQuoteParams(params: QuoteParams): params is AlgebraQuoteParams; /** * Type guard to check if parameters are for Thick V2 style quoter */ declare function isThickQuoteParams(params: QuoteParams): params is ThickQuoteParams; /** * Type guard to check if parameters are for Algebra Integral v2.1 style quoter */ declare function isAlgebraIntegral21QuoteParams(params: QuoteParams): params is AlgebraIntegral21QuoteParams; /** * Type guard to check if parameters are for Shadow style quoter */ declare function isShadowQuoteParams(params: QuoteParams): params is ShadowQuoteParams; /** * Validates quote parameters based on the protocol type detected from beacon name * * @param beaconName - The beacon identifier to determine the protocol type * @param params - The parameters to validate * @throws Error if parameters don't match the expected protocol type */ declare function validateQuoteParams(protocol: Protocol, params: QuoteParams): void; /** * Gets the expected parameter type for a given beacon name * * @param beaconName - The beacon identifier * @returns String describing the expected parameter type */ declare function getExpectedParamType(beaconName: string): string; //#endregion //#region src/const/stabilityVaults/stabilityVaultsConfig.d.ts interface StabilityVaultInfo { beaconContract: string; peripheryAddress: Partial<{ [chain in Chain]: string }>; subgraphUrl: Partial<{ [chain in Chain]: string }>; beaconContractSaga?: string; } declare const stabilityVaultsConfig: StabilityVaultInfo; /** * Get the periphery address for a specific chain * @param chainId - The chain ID to lookup * @returns The periphery address for the chain, or undefined if not configured */ declare function getStabilityVaultsPeripheryAddress(chain: Chain): string | undefined; /** * Get the subgraph URL for a specific chain * @param chainId - The chain ID to lookup * @returns The subgraph URL for the chain, or undefined if not configured */ declare function getStabilityVaultsSubgraphUrl(chain: Chain): string | undefined; //#endregion //#region src/base/vault/single-asset/simulateSwap.d.ts /** * Simulates a swap to get the expected output amounts without executing the swap * Uses Uniswap V3 Quoter contract for accurate simulation * * @param publicClient - Viem public client for blockchain reads * @param params - Parameters for swap simulation * @param chainId - Chain ID to get the appropriate Quoter address * @returns Promise resolving to the simulated swap results * * @example * ```typescript * const result = await simulateSwap(publicClient, { * pool: '0x...', * recipient: '0x...', * zeroForOne: true, * amountSpecified: parseEther('10'), * sqrtPriceLimitX96: limitPrice, * ammType: AMMType.UniswapV3, * tokenIn: '0x...', * tokenOut: '0x...', * fee: 3000 * }, 137); // Polygon chain ID * * if (result.success) { * console.log('Amount out:', result.data.amountOut); * } * ``` */ declare function simulateSwap(publicClient: PublicClient, params: SimulateSwapParams, chainId: number): Promise>; /** * Determines the swap direction based on the token being deposited * * @param isToken0 - true if depositing token0, false if token1 * @returns true if swapping token0 → token1, false otherwise */ declare function determineSwapDirection(isToken0: boolean): boolean; /** * Validates swap simulation parameters * * @param params - Parameters to validate * @throws Error if parameters are invalid */ declare function validateSwapParams(params: SimulateSwapParams): void; /** * Response from swap simulation with slippage analysis */ interface SwapWithSlippageResponse { /** Current pool slot0 data */ currentSlot0: PoolSlot0; /** Swap simulation results */ swapSimulation: SwapSimulationResponse; /** Price slippage percentage (positive means price moved unfavorably) */ priceSlippagePercent: string; /** Current price (derived from sqrtPriceX96) */ currentPrice: bigint; /** Price after swap (derived from sqrtPriceX96After) */ priceAfter: bigint; } //#endregion //#region src/base/vault/single-asset/types.d.ts /** * AMM Types supported by single-asset deposits */ declare enum AMMType { UniswapV3 = 0, Algebra = 1, AlgebraDirectional = 2, AlgebraVE33 = 3, AlgebraIntegral = 4, Aerodrome = 5 } /** * Parameters for single-asset deposit */ interface SingleAssetDepositParams { /** Amount of input token provided by the user */ assets: bigint; /** Address to receive LP tokens */ receiver: Address; /** Address of the vault to deposit into */ vault: Address; /** true if input token is token0, false if token1 */ isToken0: boolean; /** Maximum allowed slippage during deposit (in %) */ depositSlippagePercent: bigint; /** Slippage tolerance for internal swap (in basis points) */ swapSlippageBP: number; /** Type of AMM */ ammType: AMMType; /** Address of the single-asset deposit contract */ singleAssetDepositContract?: Address; } /** * Parameters for calculating swap amount */ interface CalculateSwapAmountParams { /** Amount of tokens being deposited */ depositAmount: bigint; /** true if depositing token0, false if token1 */ isToken0: boolean; /** Address of the vault */ vault: Address; /** Address of the pool */ pool: Address; /** Type of AMM */ ammType: AMMType; /** Address of the single-asset deposit contract */ singleAssetDepositContract: Address; } /** * Response from calculateSwapAmount */ interface SwapAmountResponse { /** Amount to be swapped from the input token */ swapAmount: bigint; /** Current sqrt price (used for internal calculation) */ sqrtPrice: bigint; } /** * Parameters for calculating sqrt price limit */ interface CalculateLimitPriceParams { /** Address of the pool */ pool: Address; /** Slippage tolerance in basis points */ slippageBP: number; /** true if swapping token0 for token1, false otherwise */ zeroForOne: boolean; /** Type of AMM */ ammType: AMMType; /** Address of token0 */ token0: Address; /** Address of token1 */ token1: Address; } /** * Parameters for simulating a swap */ interface SimulateSwapParams { /** Address of the pool */ pool: Address; /** Address that will receive the swap output (or address(this) for simulation) */ recipient: Address; /** true if swapping token0 → token1, else false */ zeroForOne: boolean; /** Value from calculateSwapAmount */ amountSpecified: bigint; /** Slippage-adjusted limit price */ sqrtPriceLimitX96: bigint; /** AMM type */ ammType: AMMType; /** Input token address (required for Quoter) */ tokenIn: Address; /** Output token address (required for Quoter) */ tokenOut: Address; /** Pool fee (required for Quoter) */ fee: number; /** Quoter contract address (optional - will use default if not provided) */ quoterAddress?: Address; /*** Tick spacing */ tickSpacing: number; /** Protocol */ protocol?: Protocol | null; } /** * Response from swap simulation */ interface SwapSimulationResponse { /** Final token0 amount after swap */ amount0: bigint; /** Final token1 amount after swap */ amount1: bigint; sqrtPriceX96After: bigint; } /** * Parameters for estimating LP tokens */ interface EstimateLpTokensParams { /** Address of the vault */ vault: Address; /** Original deposit amount */ originalAssets: bigint; /** Amount that was swapped internally */ swapAmount: bigint; /** Tokens received from the swap (amount0 and amount1) */ swapResult: SwapSimulationResponse; /** true if original deposit was token0, false if token1 */ isToken0: boolean; } /** * Response from LP token estimation */ interface LpTokenEstimationResponse { /** Estimated amount of LP tokens to be received */ lpTokens: bigint; /** Final amount of token0 that will be deposited */ finalAmount0: bigint; /** Final amount of token1 that will be deposited */ finalAmount1: bigint; } /** * Comprehensive single-asset deposit preview */ interface SingleAssetDepositPreview { /** Amount to be swapped internally */ swapAmount: bigint; /** Current sqrt price */ currentSqrtPrice: bigint; /** Slippage-adjusted limit price for swap */ sqrtPriceLimitX96: bigint; /** Simulated swap result */ swapSimulation: SwapWithSlippageResponse; /** LP token estimation */ lpEstimation: LpTokenEstimationResponse; /** Whether the swap direction is token0 → token1 */ zeroForOne: boolean; } /** * Pool slot0 data structure for UniswapV3 */ interface PoolSlot0 { sqrtPriceX96: bigint; tick: number; observationIndex: number; observationCardinality: number; observationCardinalityNext: number; feeProtocol: number; unlocked: boolean; } //#endregion //#region src/base/SubgraphClient.d.ts declare abstract class SubgraphClient { protected readonly client: Client; constructor(client: Client); /** * Executes a GraphQL query against the subgraph * @param query The GraphQL query string * @param variables Optional variables for the query * @returns Promise with the query result */ protected executeSubgraphQuery(query: string, variables?: Record): Promise>; /** * Gets the subgraph URL for a given chain ID * @param chainId The chain ID to get the subgraph URL for * @returns The subgraph URL or undefined if not found */ protected getSubgraphUrl(chainId: number): string | undefined; /** * Checks if a chain is supported by checking if it has a subgraph URL * @param chainId The chain ID to check * @returns boolean indicating if the chain is supported */ supportsChain(chainId: number): boolean; } //#endregion //#region src/base/vault/deposit/types.d.ts interface VaultDepositParams { vaultAddress: Address; amount0Desired: bigint; amount1Desired: bigint; slippage: number; to?: Address; isSteerPeriphery?: boolean; chainId?: number; } interface Chain$1 { id: number; } interface PoolInstanceParams { vaultAddress: Address; chain: Chain$1; isAerodromePool?: boolean; isAlgebraPool: boolean; isAlgebraDirectionPool: boolean; isPoolSharkPool: boolean; isAlgebraIntegralPool: boolean; } //#endregion //#region src/base/vault/single-asset/calculateSwapAmount.d.ts /** * Calculates the amount that needs to be swapped for a single-asset deposit * This function calls the smart contract's calculateSwapAmount function * * @param publicClient - Viem public client for blockchain reads * @param params - Parameters for swap amount calculation * @returns Promise resolving to swap amount and current sqrt price * * @example * ```typescript * const result = await calculateSwapAmount(publicClient, { * depositAmount: parseEther('100'), * isToken0: true, * vault: '0x...', * pool: '0x...', * ammType: AMMType.UniswapV3, * singleAssetDepositContract: '0x...' * }); * * if (result.success) { * console.log('Swap amount:', result.data.swapAmount); * console.log('Current sqrt price:', result.data.sqrtPrice); * } * ``` */ declare function calculateSwapAmount(publicClient: PublicClient, params: CalculateSwapAmountParams): Promise>; //#endregion //#region src/base/vault/single-asset/calculateLimitPrice.d.ts /** * Calculates the sqrt price limit for slippage protection during swaps using high-precision arithmetic * * @param publicClient - Viem public client for blockchain reads * @param params - Parameters for limit price calculation * @returns Promise resolving to the calculated sqrt price limit * * @example * ```typescript * const result = await calculateLimitPrice(publicClient, { * pool: '0x...', * slippageBP: 500, // 5% slippage * zeroForOne: true, * ammType: AMMType.UniswapV3, * token0: '0x...', * token1: '0x...' * }); * * if (result.success) { * console.log('Sqrt price limit:', result.data); * } * ``` */ declare function calculateLimitPrice(publicClient: PublicClient, params: CalculateLimitPriceParams): Promise>; /** * Gets the current pool state from slot0 * Currently supports UniswapV3 only * * @param publicClient - Viem public client for blockchain reads * @param poolAddress - Address of the pool * @param ammType - Type of AMM * @returns Promise resolving to the pool slot0 data */ declare function getPoolSlot0(publicClient: PublicClient, poolAddress: `0x${string}`, ammType: AMMType): Promise>; //#endregion //#region src/base/vault/single-asset/estimateLpTokens.d.ts /** * Estimates the amount of LP tokens that will be received based on the final token amounts * This calculation follows the Solidity getShares implementation from the vault contract * * @param publicClient - Viem public client for blockchain reads * @param params - Parameters for LP token estimation * @returns Promise resolving to the estimated LP tokens and final amounts * * @example * ```typescript * const result = await estimateLpTokens(publicClient, { * vault: '0x...', * originalAssets: parseEther('100'), * swapAmount: parseEther('50'), * swapResult: { amount0: -parseEther('50'), amount1: parseEther('150') }, * isToken0: true * }); * * if (result.success) { * console.log('Estimated LP tokens:', result.data.lpTokens); * console.log('Final amount0:', result.data.finalAmount0); * console.log('Final amount1:', result.data.finalAmount1); * } * ``` */ declare function estimateLpTokens(publicClient: PublicClient, params: EstimateLpTokensParams): Promise>; /** * Gets the current vault reserves for both tokens * * @param publicClient - Viem public client for blockchain reads * @param vaultAddress - Address of the vault * @returns Promise resolving to [token0Balance, token1Balance, totalSupply] */ declare function getVaultReserves(publicClient: PublicClient, vaultAddress: `0x${string}`): Promise>; //#endregion //#region src/base/vault/single-asset/singleAssetDeposit.d.ts /** * Main single-asset deposit client that orchestrates all the steps */ declare class SingleAssetDepositClient { private readonly publicClient; private readonly walletClient; constructor(publicClient: PublicClient, walletClient: WalletClient); /** * Previews a single-asset deposit by running all simulation steps * This allows users to see the expected outcome before executing the transaction * * @param params - Single-asset deposit parameters * @param poolAddress - Address of the pool (must be provided separately) * @returns Promise resolving to the complete deposit preview * * @example * ```typescript * const preview = await client.previewDeposit({ * assets: parseEther('100'), * receiver: userAddress, * vault: vaultAddress, * isToken0: true, * depositSlippagePercent: 5n, * swapSlippageBP: 500, * ammType: AMMType.UniswapV3, * singleAssetDepositContract: contractAddress * }, poolAddress); * * if (preview.success) { * console.log('Expected LP tokens:', preview.data.lpEstimation.lpTokens); * console.log('Swap amount:', preview.data.swapAmount); * } * ``` */ previewDeposit(params: SingleAssetDepositParams, poolAddress: `0x${string}`): Promise>; /** * Executes a single-asset deposit transaction * * @param params - Single-asset deposit parameters * @returns Promise resolving to the transaction hash * * @example * ```typescript * const result = await client.deposit({ * assets: parseEther('100'), * receiver: userAddress, * vault: vaultAddress, * isToken0: true, * depositSlippagePercent: 5n, * swapSlippageBP: 500, * ammType: AMMType.UniswapV3, * singleAssetDepositContract: contractAddress * }); * * if (result.success) { * console.log('Transaction hash:', result.data); * } * ``` */ deposit(params: SingleAssetDepositParams): Promise>; /** * Prepares a single-asset deposit transaction without executing it * Useful for batching transactions or custom execution logic * * @param params - Single-asset deposit parameters * @returns Promise resolving to the prepared transaction data */ prepareDepositTx(params: SingleAssetDepositParams): Promise<{ data: { address: string | undefined; abi: ({ type: string; inputs: never[]; stateMutability: string; name?: undefined; outputs?: undefined; anonymous?: undefined; } | { type: string; name: string; inputs: { name: string; type: string; internalType: string; }[]; outputs: { name: string; type: string; internalType: string; }[]; stateMutability: string; anonymous?: undefined; } | { type: string; name: string; inputs: { name: string; type: string; indexed: boolean; internalType: string; }[]; anonymous: boolean; stateMutability?: undefined; outputs?: undefined; } | { type: string; name: string; inputs: { name: string; type: string; internalType: string; }[]; stateMutability?: undefined; outputs?: undefined; anonymous?: undefined; })[]; functionName: "deposit"; args: readonly [bigint, `0x${string}`, `0x${string}`, boolean, bigint, number, AMMType]; }; status: number; success: boolean; error?: undefined; } | { data: null; status: number; success: boolean; error: string; }>; /** * Validates single-asset deposit parameters * * @param params - Parameters to validate * @throws Error if parameters are invalid */ validateDepositParams(params: SingleAssetDepositParams): void; } //#endregion //#region src/base/vault/withdraw/types.d.ts interface VaultWithdrawParams { vaultAddress: Address; shares: bigint; amount0Min: bigint; amount1Min: bigint; to?: Address; } interface TokensFromLpResponse { token0Val: bigint; token1Val: bigint; } //#endregion //#region src/pool-lifecycle/capabilities/v4.d.ts interface V4LifecycleDeploymentProvenance { readonly source: 'sdk-config' | 'official-deployment' | 'verified-explorer'; readonly urls: readonly `https://${string}`[]; } type V4LifecycleDeploymentId = `uniswap-v4:${number}:${Protocol.UniswapV4}:${Lowercase
}:${Lowercase
}:pool-manager-initialize-v1:v1`; type V4LifecycleDeploymentByIdRegistry = Readonly>>; /** A PoolManager/StateView pair explicitly approved for lifecycle writes. */ interface V4LifecycleDeployment { readonly supported: true; readonly schemaVersion: 1; readonly deploymentId: V4LifecycleDeploymentId; readonly chainId: number; readonly protocol: Protocol.UniswapV4; readonly family: 'uniswap-v4'; readonly adapter: 'pool-manager-initialize-v1'; readonly version: 1; readonly poolManager: Address; readonly stateView: Address; readonly provenance: V4LifecycleDeploymentProvenance; /** Earliest PoolManager event block from the official V4 subgraph manifest. */ readonly startBlock: bigint; } interface ResolveV4LifecycleDeploymentParams { readonly chainId: number; readonly protocol: SupportedProtocol; } declare function getV4LifecycleDeploymentId(params: { readonly chainId: number; readonly protocol: Protocol.UniswapV4; readonly poolManager: Address; readonly stateView: Address; readonly adapter: 'pool-manager-initialize-v1'; readonly version: 1; }): V4LifecycleDeploymentId; /** * Explicit lifecycle-write registry. Entries are not inferred from discovery * configuration so a newly discovered deployment remains unsupported until it * is deliberately reviewed and versioned here. */ declare const CURRENT_V4_LIFECYCLE_DEPLOYMENTS: readonly V4LifecycleDeployment[]; /** * Every approved V4 deployment, including historical managers. When a current * deployment changes, retain the former entry here so existing plans remain * independently resolvable by deploymentId. */ declare const V4_LIFECYCLE_DEPLOYMENTS: readonly V4LifecycleDeployment[]; declare const V4_LIFECYCLE_DEPLOYMENTS_BY_ID: V4LifecycleDeploymentByIdRegistry; /** Resolve the explicitly selected current-default deployment for a chain/protocol pair. */ declare function resolveCurrentV4LifecycleDeployment(params: ResolveV4LifecycleDeploymentParams): V4LifecycleDeployment | undefined; /** Backwards-compatible alias; prefer the name that makes current-default semantics explicit. */ declare const resolveV4LifecycleDeployment: typeof resolveCurrentV4LifecycleDeployment; /** Resolve an exact current or historical deployment without consulting defaults. */ declare function resolveV4LifecycleDeploymentById(deploymentId: string): V4LifecycleDeployment | undefined; /** * Validate capability metadata supplied across a UI/CLI boundary and return * the canonical frozen registry entry. */ declare function validateV4LifecycleDeployment(value: unknown): V4LifecycleDeployment; //#endregion //#region src/pool-lifecycle/types.d.ts /** A signer-neutral EVM transaction that can be consumed by a UI or CLI. */ interface EncodedEvmTransaction { readonly chainId: number; readonly to: Address; readonly data: Hex; readonly value: bigint; } /** Common envelope around a protocol-specific pool lifecycle action. */ interface PreparedPoolAction { readonly schemaVersion: 1; readonly kind: Kind; readonly protocol: SupportedProtocol; readonly transaction: EncodedEvmTransaction; readonly identity: Identity; readonly expected: Expected; readonly preflight: Preflight; } interface PoolActionSimulation { readonly transaction: EncodedEvmTransaction; readonly blockNumber: bigint; readonly returnData: Hex | null; readonly gasEstimate: bigint; } type PoolActionOutcome = 'created' | 'created-and-initialized' | 'initialized-existing' | 'already-initialized-matching' | 'already-initialized-different-price' | 'initialized-then-price-moved' | 'not-initialized' | 'wrong-deployment' | 'verification-unavailable' | 'reverted'; interface PoolActionVerification { readonly verified: boolean; readonly outcome: PoolActionOutcome; readonly blockNumber: bigint; readonly identity: Identity; readonly state: State | null; readonly evidence: Evidence; readonly warnings: readonly string[]; } declare const PREPARED_POOL_ACTION_SERIALIZATION_VERSION: 1; type AnyPreparedPoolAction = PreparedPoolAction; /** * Serialize a prepared action in a versioned JSON envelope. Bigints use an * explicit tag so ordinary decimal strings remain distinguishable on decode. */ declare function serializePreparedPoolAction(action: AnyPreparedPoolAction, space?: number): string; /** Parse a versioned serialized action; protocol adapters must validate its shape. */ declare function deserializePreparedPoolAction(serialized: string): unknown; //#endregion //#region src/pool-lifecycle/v4/types.d.ts interface V4PoolKeyInput { readonly currencyA: Address; readonly currencyB: Address; readonly fee: number; readonly tickSpacing: number; readonly hooks: Address; } interface V4PoolKey { readonly currency0: Address; readonly currency1: Address; readonly fee: number; readonly tickSpacing: number; readonly hooks: Address; } /** A Q64.96 price explicitly bound to the canonical V4 currency order. */ interface V4InitialPrice { readonly currency0: Address; readonly currency1: Address; readonly sqrtPriceX96: bigint; } interface V4PoolSnapshotBase { readonly schemaVersion: 1; readonly blockNumber: bigint; readonly deployment: V4LifecycleDeployment; readonly key: V4PoolKey; readonly poolId: Hex; readonly tick: number; readonly protocolFee: number; readonly lpFee: number; } interface V4UninitializedPoolSnapshot extends V4PoolSnapshotBase { readonly status: 'uninitialized'; readonly sqrtPriceX96: 0n; readonly tick: 0; readonly protocolFee: 0; readonly lpFee: 0; } interface V4InitializedPoolSnapshot extends V4PoolSnapshotBase { readonly status: 'initialized'; readonly sqrtPriceX96: bigint; } type V4PoolSnapshot = V4UninitializedPoolSnapshot | V4InitializedPoolSnapshot; interface V4PoolIdentity { readonly family: 'uniswap-v4'; readonly adapter: 'pool-manager-initialize-v1'; readonly version: 1; readonly deploymentId: V4LifecycleDeployment['deploymentId']; readonly chainId: number; readonly poolManager: Address; readonly stateView: Address; readonly poolId: Hex; readonly key: V4PoolKey; } interface V4InitializeExpectation extends V4InitialPrice {} interface V4UninitializedPreflightSummary { readonly blockNumber: bigint; readonly deploymentId: V4LifecycleDeployment['deploymentId']; readonly status: 'uninitialized'; readonly poolId: Hex; readonly sqrtPriceX96: 0n; } type PreparedV4InitializePoolAction = PreparedPoolAction<'v4-initialize', V4PoolIdentity, V4InitializeExpectation, V4UninitializedPreflightSummary> & { readonly preflight: V4UninitializedPreflightSummary; }; type PreparedV4PoolAction = PreparedV4InitializePoolAction; interface V4PoolActionSimulation extends PoolActionSimulation { readonly returnedTick: number; } interface V4InitializeEvidence { readonly poolId: Hex; readonly currency0: Address; readonly currency1: Address; readonly fee: number; readonly tickSpacing: number; readonly hooks: Address; readonly sqrtPriceX96: bigint; readonly tick: number; readonly logIndex: number; } interface V4ReceiptEvidence { readonly receiptStatus: 'success' | 'reverted'; readonly initializations: readonly V4InitializeEvidence[]; } type V4PoolActionVerification = PoolActionVerification; //#endregion //#region src/base/vault/execution-context.d.ts type VaultExecutionPoolFamily = 'uniswap-v3-compatible' | 'algebra' | 'algebra-integral' | 'algebra-directional' | 'aerodrome-cl' | 'uniswap-v4'; type VaultExecutionPoolKey = V4PoolKey; interface GetVaultExecutionContextParams { publicClient: PublicClient; vaultAddress: Address; blockNumber: bigint; /** Explicit execution epoch as a Unix timestamp in seconds. */ epochTimestamp: bigint; subgraphStudioKey?: string; /** Optional assertion for Uniswap v4. It must exactly match the vault's pinned poolKey(). */ poolKey?: VaultExecutionPoolKey; } interface VaultExecutionPosition { lowerTick: number; upperTick: number; relativeWeight: number; } interface VaultExecutionDataProvenance { source: 'onchain-contract' | 'steer-subgraph'; consistency: 'block-pinned' | 'timestamp-bounded'; status: 'verified' | 'indexed' | 'not-found'; blockNumber: string | null; detail: string; } interface VaultExecutionContext { chainId: number; blockNumber: string; epochTimestamp: string; vaultAddress: Address; protocol: SupportedProtocol; beaconName: string; beaconAddress: Address; poolFamily: VaultExecutionPoolFamily; poolAddress: Address | null; poolId: Hex | null; factoryAddress: Address | null; poolManagerAddress: Address | null; poolKey: VaultExecutionPoolKey | null; currentTick: number; tickSpacing: number; positions: VaultExecutionPosition[]; totalAmount0: string; totalAmount1: string; lastExecutionTimestamp: string | null; lastExecutionTimeSeconds: string | null; provenance: { identity: VaultExecutionDataProvenance; poolState: VaultExecutionDataProvenance; positions: VaultExecutionDataProvenance; totals: VaultExecutionDataProvenance; lastExecution: VaultExecutionDataProvenance; }; } /** * Builds the normalized read-only state consumed by strategy execution. * Every contract read is evaluated at `blockNumber`; `epochTimestamp` is the sole time reference. */ declare function getVaultExecutionContext(params: GetVaultExecutionContextParams): Promise>; //#endregion //#region src/base/VaultClient.d.ts interface VaultApproveParams { vaultAddress: Address; spender: Address; amount: bigint; } interface VaultAllowanceParams { vaultAddress: Address; owner: Address; spender: Address; } interface VaultBalanceParams { vaultAddress: Address; account: Address; } interface ApiPageInfo { hasNextPage: boolean; endCursor: string | null; } interface VaultNode { id: string; chainId: number; vaultAddress: string; protocol: string; beaconName: string; protocolBaseType: string; name: string; feeApr?: number; stakingApr?: number; merklApr?: number; /** Raw positions from the subgraph. Only available when sourced from subgraph. */ positions?: { id: string; upperTick: number; lowerTick: number; relativeWeight: string; }[]; /** Computed tick range across all current positions (min lower / max upper). Only available when sourced from subgraph. */ tickRange?: { minLowerTick: number; maxUpperTick: number; }; /** Cumulative fees collected by the vault. Only available when sourced from subgraph. */ fees?: { fees0: string; fees1: string; }; pool: { poolAddress: string; id: string; feeTier: string; tick?: string; liquidity?: string; volumeUSD?: string; totalValueLockedUSD?: string; }; token0: { id: string; symbol: string; name: string; decimals: number; address: string; chainId: number; }; token1: { id: string; symbol: string; name: string; decimals: number; address: string; chainId: number; }; } interface VaultEdge { cursor: string; node: VaultNode; } interface VaultsConnection { edges: readonly VaultEdge[]; pageInfo: ApiPageInfo; totalCount: number; } interface TokenNode { id: string; symbol: string; name: string; decimals: number; chainId: number; address: string; } interface TokenEdge { cursor: string; node: TokenNode; } interface TokensConnection { edges: readonly TokenEdge[]; pageInfo: ApiPageInfo; totalCount: number; } interface PoolNode { id: string; chainId: number; feeTier: string; token0: { id: string; symbol: string; name: string; decimals: number; address: string; chainId: number; }; token1: { id: string; symbol: string; name: string; decimals: number; address: string; chainId: number; }; } interface PoolEdge { cursor: string; node: PoolNode; } interface PoolsConnection { edges: readonly PoolEdge[]; pageInfo: ApiPageInfo; totalCount: number; } interface VaultFilter { chainId?: number; protocol?: string; isActive?: boolean; beaconName?: string; poolAddress?: string; vaultAddress?: string; tokenAddress?: string; tokenAddresses?: string[]; tokenSymbol?: string; tokenSymbols?: string[]; } interface ApiVaultFilter { chainId?: number; isActive?: boolean; beaconName?: string; pool?: string; } interface TokenFilter { chainId?: number; symbol?: string; } interface PoolFilter { chainId?: number; protocol?: string; minLiquidity?: string; } interface VaultApr { apr: { apr: number; message: string; }; beaconName: string; vaultAddress: string; } interface AprResponse { vaults: VaultApr[]; } interface AprFilter { chainId: number; protocol: string; } interface PendingRewardsParams { vaultAddress: Address; user: Address; } interface PendingRewardsResponse { rewards: bigint; extraRewards: bigint; } interface ClaimRewardsParams { vaultAddress: Address; } interface BlackholeAprDetailedParams { vaultAddress: Address; chainId: number; } interface BlackholeSnapshotAnalysis { period: number; fromTimestamp: number; toTimestamp: number; fromDate: string; toDate: string; durationSeconds: number; durationHours: number; tvlUSD: number; feesUSD: number; apr: number; } interface BlackholeAprDetailedResponse { vaultAddress: string; beaconName: string; apr: { apr: number; message: string; }; snapshotAnalysis: BlackholeSnapshotAnalysis[]; } /** * Client for interacting with Steer Protocol's Vault system. * This client provides functionality for vault operations, deposit/withdraw, and comprehensive data fetching. * * **Features:** * - Vault data includes associated pool information (pool address, fee tier) along with token details * - Full pagination support for all data fetching methods * - API client integration for efficient data retrieval * - Backward compatibility with subgraph queries * * **Available API Client Methods:** * - `getVaults()` - Get vaults with pagination and filtering * - `getTokens()` - Get tokens with pagination and filtering * - `getPools()` - Get pools with pagination and filtering * - `getAllVaults()` - Get all vaults (auto-pagination) * - `getAllTokens()` - Get all tokens (auto-pagination) * - `getAllPools()` - Get all pools (auto-pagination) * * @example * ```typescript * import { createPublicClient, createWalletClient, http } from 'viem'; * import { mainnet } from 'viem/chains'; * import { VaultClient } from '@steerprotocol/sdk'; * * // Create viem clients * const publicClient = createPublicClient({ * chain: mainnet, * transport: http() * }); * * const walletClient = createWalletClient({ * chain: mainnet, * transport: http() * }); * * // Initialize the Vault client * const vaultClient = new VaultClient(publicClient, walletClient, 'production'); * * // Get vaults with pagination - includes pool information * const vaults = await vaultClient.getVaults({ chainId: 1 }, 10, null); * * if (vaults.success && vaults.data) { * vaults.data.edges.forEach((edge) => { * const vault = edge.node; * console.log(`${vault.token0.symbol}/${vault.token1.symbol} vault`); * console.log(`Pool: ${vault.pool.id} (${vault.pool.feeTier} fee tier)`); * console.log(`Protocol: ${vault.protocol} (${vault.beaconName})`); * }); * } * * // Get all tokens for a chain * const allTokens = await vaultClient.getAllTokens({ chainId: 1 }); * * // Get pools with specific filters * const pools = await vaultClient.getPools({ * chainId: 1, * protocol: 'uniswap-v3' * }); * * // Traditional vault operations * const depositTx = await vaultClient.deposit(depositParams); * const withdrawTx = await vaultClient.withdraw(withdrawParams); * ``` * * @group Client */ declare class VaultClient extends SubgraphClient { protected readonly apiClient: ReturnType; protected readonly publicClient: PublicClient; protected readonly walletClient: WalletClient; private readonly depositClient; private readonly withdrawClient; readonly singleAssetDepositClient: SingleAssetDepositClient; private readonly subgraphVaultClient; private readonly subgraphStudioKey; /** * Creates a new instance of VaultClient * @param publicClient - The public client for reading from the blockchain * @param walletClient - The wallet client for writing to the blockchain * @param environment - The environment to use ('production' or 'development') * @param version - Optional API version to use (defaults to 'v1') * @param subgraphStudioKey - Optional subgraph studio key for protocol data fetching */ constructor(publicClient: PublicClient, walletClient: WalletClient, environment: 'production' | 'development', version?: 'v1', subgraphStudioKey?: string); /** * Returns normalized strategy execution inputs from one explicitly pinned block. * `epochTimestamp` is a Unix timestamp in seconds and is never derived from wall-clock time. */ getExecutionContext(params: { vaultAddress: Address; blockNumber: bigint; epochTimestamp: bigint; poolKey?: VaultExecutionPoolKey; }): Promise>; private normalizeProtocolValue; private resolveProtocolEnum; private getProtocolBeaconNames; private getPrimaryProtocolBeaconName; private buildApiVaultFilter; private vaultMatchesProtocolFilter; private applyProtocolFilter; private normalizeAddress; private normalizeSymbol; private matchesAnyAddress; private matchesAnySymbol; private filterVaultNodes; /** * Gets vaults with pagination support * Fetches ALL data from both API (database) and subgraph in parallel, merges without duplicates, then paginates * @param filter - Optional filter criteria * @param first - Number of items to fetch (default: 50) * @param after - Cursor for pagination (null for first page) * @returns Promise resolving to paginated vaults data * * @example * ```typescript * // Get first 20 vaults for Ethereum * const vaults = await vaultClient.getVaults({ chainId: 1 }, 20); * * if (vaults.success && vaults.data) { * vaults.data.edges.forEach((edge) => { * const vault = edge.node; * console.log(`Vault: ${vault.name}`); * console.log(`Pool: ${vault.pool.id}`); * console.log(`Pool Fee Tier: ${vault.pool.feeTier}`); * console.log(`Tokens: ${vault.token0.symbol}/${vault.token1.symbol}`); * }); * } * * // Get next page using cursor * if (vaults.data?.pageInfo.hasNextPage) { * const nextPage = await vaultClient.getVaults( * { chainId: 1 }, * 20, * vaults.data.pageInfo.endCursor * ); * } * * // For additional pool details (liquidity, volume, etc.), use the PoolClient: * // const poolDetails = await poolClient.getPoolById(vault.pool.id, protocol, chainId); * ``` */ getVaults(filter?: VaultFilter, first?: number, after?: string | null): Promise>; /** * Fetches ALL vaults from API (database) by auto-paginating * @private */ private getAllVaultsFromApi; /** * Fetches vaults from API (database) with pagination * @private */ private getVaultsFromApi; /** * Merges vault results from API and subgraph, removing duplicates * Prioritizes API data when duplicates are found * Generates consistent cursors for the merged dataset * @private */ private mergeVaultResults; /** * Applies pagination to vault results * @private */ private paginateVaults; /** * Fetches ALL vaults from subgraph (no pagination) * @param filter - Optional filter criteria * @returns Promise resolving to all vaults data from subgraph * @private */ private getAllVaultsFromSubgraph; /** * Fallback method to fetch vaults from subgraph with pagination * @param filter - Optional filter criteria * @param first - Number of items to fetch (default: 50) * @param after - Cursor for pagination (null for first page) * @returns Promise resolving to paginated vaults data from subgraph * @private */ private getVaultsFromSubgraph; /** * Gets tokens with pagination support * @param filter - Optional filter criteria * @param first - Number of items to fetch (default: 50) * @param after - Cursor for pagination (null for first page) * @returns Promise resolving to paginated tokens data * * @example * ```typescript * // Get first 100 tokens * const tokens = await vaultClient.getTokens({ chainId: 1 }, 100); * * // Filter by symbol * const usdcTokens = await vaultClient.getTokens({ symbol: 'USDC' }); * ``` */ getTokens(filter?: TokenFilter, first?: number, after?: string | null): Promise>; /** * Gets pools with pagination support * @param filter - Optional filter criteria * @param first - Number of items to fetch (default: 50) * @param after - Cursor for pagination (null for first page) * @returns Promise resolving to paginated pools data * * @example * ```typescript * // Get first 50 pools for Ethereum * const pools = await vaultClient.getPools({ chainId: 1 }, 50); * * // Filter by minimum liquidity * const liquidPools = await vaultClient.getPools({ * chainId: 1, * minLiquidity: '1000000' * }); * ``` */ getPools(filter?: PoolFilter, first?: number, after?: string | null): Promise>; /** * Gets all vaults by fetching all pages automatically * @param filter - Optional filter criteria * @param batchSize - Number of items to fetch per batch (default: 100) * @returns Promise resolving to all vaults data (includes pool information) * * @example * ```typescript * // Get all vaults for a specific chain * const allVaults = await vaultClient.getAllVaults({ chainId: 1 }); * console.log(`Found ${allVaults.data?.length} vaults`); * * // Access pool information for each vault * allVaults.data?.forEach(vault => { * console.log(`Vault ${vault.name}: Pool ${vault.pool.id} (${vault.pool.feeTier} fee)`); * }); * ``` */ getAllVaults(filter?: VaultFilter, batchSize?: number): Promise>; /** * Gets all tokens by fetching all pages automatically * @param filter - Optional filter criteria * @param batchSize - Number of items to fetch per batch (default: 100) * @returns Promise resolving to all tokens data */ getAllTokens(filter?: TokenFilter, batchSize?: number): Promise>; /** * Gets all pools by fetching all pages automatically * @param filter - Optional filter criteria * @param batchSize - Number of items to fetch per batch (default: 100) * @returns Promise resolving to all pools data */ getAllPools(filter?: PoolFilter, batchSize?: number): Promise>; /** * Searches vaults by combining verified API-supported filters with local * filtering over the merged vault result set for unsupported server-side fields. */ searchVaults(filter?: VaultFilter): Promise>; getVaultByAddress(vaultAddress: string, filter?: VaultFilter): Promise>; getVaultsForPool(poolAddress: string, filter?: VaultFilter): Promise>; getVaultsForToken(tokenAddressOrSymbol: string, filter?: VaultFilter): Promise>; /** * Gets APR data for vaults from the Steer Finance API * @param filter - Filter containing chainId and protocol * @returns Promise resolving to APR data for vaults * * @example * ```typescript * // Get APRs for Uniswap vaults on Nibiru (chainId: 6900) * const aprs = await vaultClient.getAprs({ chainId: 6900, protocol: 'Uniswap' }); * * if (aprs.success && aprs.data) { * aprs.data.vaults.forEach(vault => { * console.log(`Vault: ${vault.vaultAddress}`); * console.log(`APR: ${vault.apr.apr}% (${vault.apr.message})`); * console.log(`Beacon: ${vault.beaconName}`); * }); * } * ``` */ getAprs(filter: AprFilter): Promise>; /** * Gets detailed APR data for a specific Blackhole vault from the Steer Finance API * This includes snapshot analysis with historical APR data over different time periods * * @param params - Parameters containing vault address and chain ID * @returns Promise resolving to detailed APR data including snapshot analysis * * @example * ```typescript * // Get detailed APR for a Blackhole vault on Avalanche * const aprDetails = await vaultClient.getBlackholeAprDetailed({ * vaultAddress: '0x5c1d454f08975c554f6b70a84fd8859fbdfcc069', * chainId: 43114 * }); * * if (aprDetails.success && aprDetails.data) { * console.log(`Vault: ${aprDetails.data.vaultAddress}`); * console.log(`Beacon: ${aprDetails.data.beaconName}`); * console.log(`Current APR: ${aprDetails.data.apr.apr}% (${aprDetails.data.apr.message})`); * * // Access snapshot analysis * aprDetails.data.snapshotAnalysis.forEach(snapshot => { * console.log(`Period ${snapshot.period}:`); * console.log(` Duration: ${snapshot.durationHours} hours`); * console.log(` TVL: $${snapshot.tvlUSD}`); * console.log(` Fees: $${snapshot.feesUSD}`); * console.log(` APR: ${snapshot.apr}%`); * }); * } * ``` */ getBlackholeVaultApr(params: BlackholeAprDetailedParams): Promise>; /** * Gets the latest vaults from the subgraph */ getLatestVaults(): Promise>; /** * Deposits tokens into a vault * @param params The deposit parameters */ deposit(params: VaultDepositParams): Promise>; /** * Prepares the transaction data for depositing tokens into a vault without executing it * @param params The deposit parameters */ prepareDepositTx(params: VaultDepositParams): Promise>; /** * Gets the deposit ratio for a vault * @param vaultAddress The vault address */ getDepositRatio(vaultAddress: Address, zeroForOne: boolean): Promise>; /** * Withdraws tokens from a vault * @param params The withdrawal parameters */ withdraw(params: VaultWithdrawParams): Promise>; /** * Prepares the transaction data for withdrawing tokens from a vault without executing it * @param params The withdrawal parameters */ prepareWithdrawTx(params: VaultWithdrawParams): Promise>; /** * Calculates the amount of tokens that would be received for a given amount of LP tokens * @param vaultAddress The vault address * @param lpToken The amount of LP tokens to calculate for */ getTokensFromLp(vaultAddress: Address, lpToken: bigint): Promise>; /** * Approves spending of tokens for a vault * @param params The approval parameters */ approve(params: VaultApproveParams): Promise>; /** * Gets the allowance for a vault token * @param params The allowance parameters */ allowance(params: VaultAllowanceParams): Promise>; /** * Gets the balance of a vault token for an account * @param params The balance parameters */ balanceOf(params: VaultBalanceParams): Promise>; /** * Gets the total supply of a vault token * @param vaultAddress The vault address */ totalSupply(vaultAddress: Address): Promise>; /** * Gets the decimals of a vault token * @param vaultAddress The vault address */ decimals(vaultAddress: Address): Promise>; /** * Gets the symbol of a vault token * @param vaultAddress The vault address */ symbol(vaultAddress: Address): Promise>; /** * Gets the name of a vault token * @param vaultAddress The vault address */ name(vaultAddress: Address): Promise>; pool(vaultAddress: Address): Promise>; /** * Gets a pool instance for a vault * @param params The pool instance parameters */ getPoolInstance(params: PoolInstanceParams): Promise>; /** * Gets the corresponding token amount based on the provided token amount and ratio * @param vaultAddress The vault address * @param amount The amount of token to calculate the corresponding amount for * @param zeroForOne If true, calculates token1 amount for given token0, if false calculates token0 amount for given token1 */ getCorrespondingTokenAmount(vaultAddress: Address, amount: bigint, zeroForOne: boolean): Promise>; /** * Previews a single-asset deposit by running all simulation steps * This allows users to see the expected outcome before executing the transaction * * @param params - Single-asset deposit parameters * @param poolAddress - Address of the pool (must be provided separately) * @returns Promise resolving to the complete deposit preview * * @example * ```typescript * const preview = await vaultClient.previewSingleAssetDeposit({ * assets: parseEther('100'), * receiver: userAddress, * vault: vaultAddress, * isToken0: true, * depositSlippagePercent: 5n, * swapSlippageBP: 500, * ammType: AMMType.UniswapV3, * singleAssetDepositContract: contractAddress * }, poolAddress); * * if (preview.success) { * console.log('Expected LP tokens:', preview.data.lpEstimation.lpTokens); * console.log('Swap amount:', preview.data.swapAmount); * } * ``` */ previewSingleAssetDeposit(params: SingleAssetDepositParams, poolAddress: Address): Promise>; /** * Executes a single-asset deposit transaction * * @param params - Single-asset deposit parameters * @returns Promise resolving to the transaction hash * * @example * ```typescript * const result = await vaultClient.singleAssetDeposit({ * assets: parseEther('100'), * receiver: userAddress, * vault: vaultAddress, * isToken0: true, * depositSlippagePercent: 5n, * swapSlippageBP: 500, * ammType: AMMType.UniswapV3, * singleAssetDepositContract: contractAddress * }); * * if (result.success) { * console.log('Transaction hash:', result.data); * } * ``` */ singleAssetDeposit(params: SingleAssetDepositParams): Promise>; /** * Prepares a single-asset deposit transaction without executing it * Useful for batching transactions or custom execution logic * * @param params - Single-asset deposit parameters * @returns Promise resolving to the prepared transaction data */ prepareSingleAssetDepositTx(params: SingleAssetDepositParams): Promise<{ data: { address: string | undefined; abi: ({ type: string; inputs: never[]; stateMutability: string; name?: undefined; outputs?: undefined; anonymous?: undefined; } | { type: string; name: string; inputs: { name: string; type: string; internalType: string; }[]; outputs: { name: string; type: string; internalType: string; }[]; stateMutability: string; anonymous?: undefined; } | { type: string; name: string; inputs: { name: string; type: string; indexed: boolean; internalType: string; }[]; anonymous: boolean; stateMutability?: undefined; outputs?: undefined; } | { type: string; name: string; inputs: { name: string; type: string; internalType: string; }[]; stateMutability?: undefined; outputs?: undefined; anonymous?: undefined; })[]; functionName: "deposit"; args: readonly [bigint, `0x${string}`, `0x${string}`, boolean, bigint, number, AMMType]; }; status: number; success: boolean; error?: undefined; } | { data: null; status: number; success: boolean; error: string; }>; /** * Validates single-asset deposit parameters * * @param params - Parameters to validate * @throws Error if parameters are invalid */ validateSingleAssetDepositParams(params: SingleAssetDepositParams): void; /** * Calculates pending rewards for a user from a vault * This is a view function that doesn't modify state * * @param params - Parameters containing vault address and user address * @returns Promise resolving to pending rewards data or zero values if function reverts * * @example * ```typescript * const pendingRewards = await vaultClient.calculatePendingRewards({ * vaultAddress: '0x123...', * user: '0xabc...' * }); * * if (pendingRewards.success && pendingRewards.data) { * console.log('Rewards:', pendingRewards.data.rewards); * console.log('Extra Rewards:', pendingRewards.data.extraRewards); * } * ``` */ calculatePendingRewards(params: PendingRewardsParams): Promise>; /** * Claims pending rewards from a vault using the claimBlackHolePendingRewards function * * @param params - Parameters containing vault address * @returns Promise resolving to transaction hash or zero values if function reverts * * @example * ```typescript * const claimResult = await vaultClient.claimPendingRewards({ * vaultAddress: '0x123...' * }); * * if (claimResult.success && claimResult.data) { * console.log('Claim transaction hash:', claimResult.data); * } * ``` */ claimBlackholePendingRewards(params: ClaimRewardsParams): Promise>; } //#endregion //#region src/utils/SubgraphVaultClient.d.ts /** * Utility class for fetching vault data from Steer subgraphs */ declare class SubgraphVaultClient { private readonly SENTIO_API_KEY; /** * Transform subgraph vault data to match VaultClient interface */ private transformSubgraphVaultToVaultNode; /** * Compute the tick range across all vault positions. * Returns the minimum lowerTick and maximum upperTick, giving the full * span of liquidity currently deployed by the vault strategy. */ private computeTickRange; /** * Get protocol base type from beacon name */ private getProtocolBaseType; /** * Create a mock LP price response for vaults without LP data */ private createMockLpPriceData; /** * Fetch vault data from subgraph */ getAllVaultsFromSubgraph(options: VaultFetchOptions): Promise; /** * Transform subgraph vault data to VaultsConnection format */ transformToVaultsConnection(vaults: SubgraphVaultDetailsWithLpData[], chainId: number, first: number | undefined, aprMap: Map, after?: string | null): VaultsConnection; } //#endregion //#region src/base/SmartRewards.d.ts /** * Represents a node in the claim proof data structure * @property chainId - The ID of the chain where the claim exists * @property lastBlockUpdatedTo - The last block number this claim was updated to * @property user - The address of the user who can claim * @property campaignId - The ID of the campaign this claim belongs to * @property amount - The claimable amount as a string (may include decimals) * @property proof - The merkle proof array required for claiming */ interface ClaimProofNode { chainId: number; lastBlockUpdatedTo: number; user: string; campaignId: number; amount: string; proof: readonly string[]; } interface ClaimProofEdge { node: ClaimProofNode; cursor: string; } /** * Represents a historical claim reward record * @property id - Unique identifier for the claim * @property user - Address of the user who claimed * @property amount - Amount that was claimed (may include decimals) * @property campaign - Campaign identifier * @property chainId - Chain ID where the claim occurred * @property timestamp - Unix timestamp of when the claim occurred */ interface ClaimRewardNode { id: string; user: string; amount: string; campaign: string; chainId: number; timestamp: number; } interface ClaimRewardEdge { cursor: string; node: ClaimRewardNode; } /** * Pagination information for paginated queries * @property hasNextPage - Whether there are more results available * @property endCursor - Cursor to use for fetching next page, if available */ interface PageInfo { hasNextPage: boolean; endCursor: string | null | undefined; } /** * Connection type for claim rewards, following the Relay specification * @property edges - Array of claim reward records with cursors * @property pageInfo - Pagination information * @property totalCount - Total number of records available */ interface ClaimRewardsConnection { edges: readonly ClaimRewardEdge[]; pageInfo: PageInfo; totalCount: number; } interface ClaimProofsPageInfo { hasNextPage: boolean; endCursor?: string; } interface ClaimProofsResponse { totalCount: number; edges: readonly ClaimProofEdge[]; pageInfo: ClaimProofsPageInfo; } interface SmartRewarderContract { chainId: number; address: string; } /** * Parameters required for claiming rewards * @property users - Array of user addresses who are claiming * @property campaignIds - Array of campaign IDs corresponding to each claim * @property amounts - Array of amounts to claim * @property proofs - Array of merkle proofs for verification * @property rewarderAddress - Address of the smart rewarder contract */ interface ClaimRewardParams { users: readonly Address[]; campaignIds: readonly bigint[]; amounts: readonly bigint[]; proofs: readonly (readonly `0x${string}`[])[]; rewarderAddress: Address; } /** * Represents a reward balance with both native and formatted values * @property formatted - Human-readable string format with proper decimals * @property native - Raw bigint value */ interface RewardBalance { formatted: string; native: bigint; } /** * Comprehensive summary of a user's reward status * @property totalEarned - Total rewards earned (claimed + claimable) * @property totalClaimed - Total rewards already claimed * @property claimable - Rewards available to claim */ interface RewardSummary { totalEarned: RewardBalance; totalClaimed: RewardBalance; claimable: RewardBalance; } declare abstract class SmartRewards { protected readonly client: ReturnType; protected readonly publicClient: PublicClient; protected readonly walletClient: WalletClient; constructor(client: ReturnType, publicClient: PublicClient, walletClient: WalletClient); getCampaigns(chainId: number): Promise>; /** * Retrieves campaigns associated with a specific pool address * @param poolAddress - The address of the pool to get campaigns for * @param chainId - Chain ID where the pool exists * @returns Promise resolving to an array of campaigns associated with the pool * * @example * ```typescript * // Get campaigns for a pool on a specific chain * const campaigns = await smartRewards.campaignsByPool('0x...', 1); * ``` */ campaignsByPool(poolAddress: string, chainId: number): Promise>; /** * Retrieves claim proofs for a user that can be used to claim rewards * @param user - Address of the user to get proofs for * @param chainId - Chain ID where the claims exist * @param campaignId - Optional campaign ID to filter claims * @returns Promise resolving to claim proof data with pagination support */ getClaimProofs(user: Address, chainId: number, campaignId?: number): Promise>; /** * Retrieves historical claim data for a specific pool * @param chainId - Chain ID where the pool exists * @param pool - Address or identifier of the pool * @param user - Optional user address to filter claims * @returns Promise resolving to paginated claim history data * * @example * ```typescript * // Get all claims for a pool * const allClaims = await smartRewards.getClaimRewardsByPool(1, poolAddress); * * // Get claims for a specific user in a pool * const userClaims = await smartRewards.getClaimRewardsByPool(1, poolAddress, userAddress); * ``` */ getClaimedRewardsByPool(chainId: number, pool: string, user?: Address): Promise>; /** * Gets a comprehensive summary of a user's reward status * @param user - Address of the user * @param chainId - Chain ID to check rewards on * @param campaignId - Optional campaign ID to filter rewards * @param decimals - Number of decimals for formatting (default: 18) * @returns Promise resolving to reward summary with both native and formatted values * * @example * ```typescript * const summary = await smartRewards.getRewardSummary(userAddress, chainId); * console.log('Total earned:', summary.data.totalEarned.formatted); * console.log('Available to claim:', summary.data.claimable.formatted); * ``` */ getRewardSummary(user: Address, poolAddress: string, chainId: number, campaignId: number, decimals?: number): Promise>; getSmartRewarderContracts(): Promise>; /** * Claims rewards from the smart rewarder contract * @param params - Parameters required for claiming rewards * @returns Promise resolving to transaction hash if successful * * @remarks * This method handles the low-level interaction with the smart contract. * For a higher-level interface, consider using {@link claimCampaignRewards} instead. * * @example * ```typescript * // Get claim proofs * const claimProofs = await smartRewards.getClaimProofs(userAddress, chainId, campaignId); * * // Get smart rewarder contract * const rewarders = await smartRewards.getSmartRewarderContracts(); * const rewarder = rewarders.data?.find(r => r.chainId === chainId); * * if (claimProofs.data && rewarder) { * // Prepare claim data * const claimData = smartRewards.prepareClaimData(claimProofs.data); * claimData.rewarderAddress = rewarder.address as Address; * * // Claim rewards * const tx = await smartRewards.claimReward(claimData); * } * ``` * * @throws Will throw an error if no wallet account is found * @throws Will throw an error if contract simulation fails */ claimReward(params: ClaimRewardParams): Promise>; /** * Helper function to prepare claim data from claim proofs * @param proofs - The claim proofs response from getClaimProofs * @returns ClaimRewardParams object ready for use with claimReward * * @remarks * This helper function transforms the claim proofs into the format required by the smart contract. * Note that the returned object's rewarderAddress is empty and must be set before using with claimReward. * * @example * ```typescript * // Get claim proofs and rewarder contract * const proofs = await smartRewards.getClaimProofs(userAddress, chainId); * const rewarders = await smartRewards.getSmartRewarderContracts(); * const rewarder = rewarders.data?.find(r => r.chainId === chainId); * * if (proofs.data && rewarder) { * // Prepare the claim data * const claimData = smartRewards.prepareClaimData(proofs.data); * * // Set the rewarder address (required) * claimData.rewarderAddress = rewarder.address as Address; * * // Now the data is ready for claiming * const tx = await smartRewards.claimReward(claimData); * } * ``` */ prepareClaimData(proofs: ClaimProofsResponse): ClaimRewardParams; /** * Convenience function to handle the entire claim process * @param userAddress The address of the user claiming rewards * @param chainId The chain ID where the campaign exists * @param campaignId Optional campaign ID to filter claims * @returns Transaction hash if successful, or error details if failed */ claimCampaignRewards(userAddress: Address, chainId: number, campaignId?: number): Promise>; /** * Prepares the claim rewards campaign object with all necessary data for contract interaction * @param userAddress The address of the user claiming rewards * @param chainId The chain ID where the campaign exists * @param campaignId Optional campaign ID to filter claims * @returns Promise resolving to an object containing all necessary data for claiming rewards * * @example * ```typescript * // Get the prepared claim data * const claimData = await smartRewards.prepareClaimRewardsCampaign(userAddress, chainId, campaignId); * * if (claimData.success) { * // Use the data with your own contract interaction methods * const { address, abi, functionName, args } = claimData.data; * // Execute the contract call using your preferred method * } * ``` */ prepareClaimRewardsCampaign(userAddress: Address, chainId: number, campaignId?: number): Promise>; /** * Checks if a chain is supported by checking if it has a subgraph URL * @param chainId The chain ID to check * @returns boolean indicating if the chain is supported */ supportsChain(chainId: number): boolean; } //#endregion //#region src/base/SmartRewardClient.d.ts /** * Client for interacting with Steer Protocol's Smart Rewards system. * This client provides functionality for managing rewards, claims, and campaigns. * * @example * ```typescript * import { createPublicClient, createWalletClient, http } from 'viem'; * import { mainnet } from 'viem/chains'; * import { SmartRewardsClient } from '@steerprotocol/sdk'; * * // Create viem clients * const publicClient = createPublicClient({ * chain: mainnet, * transport: http() * }); * * const walletClient = createWalletClient({ * chain: mainnet, * transport: http() * }); * * // Initialize the Smart Rewards client * const rewardsClient = new SmartRewardsClient(publicClient, walletClient, 'production'); * * // Get user's reward summary * const summary = await rewardsClient.getRewardSummary(userAddress, chainId); * * // Claim rewards * const tx = await rewardsClient.claimCampaignRewards(userAddress, chainId); * ``` * * @group Client */ declare class SmartRewardsClient extends SmartRewards { /** * Creates a new instance of SmartRewardsClient * @param publicClient - The public client for reading from the blockchain * @param walletClient - The wallet client for writing to the blockchain * @param environment - The environment to use ('production' or 'development') * @param version - Optional API version to use (defaults to 'v1') */ constructor(publicClient: PublicClient, walletClient: WalletClient, environment: 'production' | 'development', version?: 'v1'); } //#endregion //#region src/base/PoolClient.d.ts /** * GraphQL token data interface representing token information from subgraph responses * @interface GraphQLTokenData */ interface GraphQLTokenData { /** Token symbol (e.g., "ETH", "USDC") */ symbol: string; /** Token contract address */ id: string; /** Number of decimal places for the token */ decimals: string; /** Human-readable token name */ name: string; } /** * GraphQL pool data interface representing pool information from subgraph responses * @interface GraphQLPoolData */ interface GraphQLPoolData { /** Pool contract address */ id: string; /** First token in the pool */ token0: GraphQLTokenData; /** Second token in the pool */ token1: GraphQLTokenData; /** 24-hour trading volume in USD */ volumeUSD: string; /** Current tick of the pool */ tick: string; /** Total liquidity in the pool */ liquidity: string; /** Fee tier for the pool (optional) */ feeTier?: string; /** 24-hour volume of token0 (optional) */ volumeToken0?: string; /** 24-hour volume of token1 (optional) */ volumeToken1?: string; /** Total value locked in ETH (optional) */ totalValueLockedETH?: string; /** Alternative field name for volume USD (optional) */ volumeUsd?: string; /** Alternative field name for TVL in ETH (optional) */ totalValueLockedEth?: string; } /** * Filter criteria for querying pools * @interface PoolFilter */ interface PoolFilter$1 { /** Chain ID to filter pools by */ chainId?: number; /** Protocol to filter pools by */ protocol?: Protocol; /** Exact pool address/id to look up */ poolAddress?: string; /** Minimum volume in USD to filter pools */ minVolumeUSD?: number; /** Token address to find pools containing this token */ tokenAddress?: string; /** Multiple token addresses to find pools for */ tokenAddresses?: string[]; /** Token symbol to find pools containing this token */ tokenSymbol?: string; /** Multiple token symbols to find pools for */ tokenSymbols?: string[]; /** Maximum number of pools to return */ limit?: number; } /** * Client for fetching pool data from various DEX protocol subgraphs * * @example * ```typescript * import { createPublicClient, http } from 'viem'; * import { mainnet } from 'viem/chains'; * import { PoolClient } from '@steerprotocol/sdk'; * * const client = createPublicClient({ * chain: mainnet, * transport: http() * }); * * const poolClient = new PoolClient(client, 'your-subgraph-studio-key'); * * // Fetch top pools * const topPools = await poolClient.getTopPools(100, Protocol.Uniswap, 1); * ``` * * @extends SubgraphClient * @group Pool */ declare class PoolClient extends SubgraphClient { /** Public client for blockchain interactions */ protected readonly publicClient: PublicClient; /** Default timeout for GraphQL queries in milliseconds */ private readonly defaultTimeout; /** Counter for tracking API call metrics */ private apiCallCount; /** Subgraph Studio API key for rate limiting */ private readonly subgraphStudioKey; /** * Creates a new PoolClient instance * * @param client - Public client for read-only blockchain interactions * @param subgraphStudioKey - Optional Subgraph Studio API key for higher rate limits * * @example * ```typescript * const poolClient = new PoolClient(client, 'your-api-key'); * ``` */ constructor(client: PublicClient, subgraphStudioKey?: string); /** * Resets the API call counter for metrics tracking * * @example * ```typescript * poolClient.resetMetrics(); * ``` */ resetMetrics(): void; /** * Gets current metrics for monitoring API usage * * @returns Object containing current metrics * * @example * ```typescript * const metrics = poolClient.getMetrics(); * console.log(`API calls made: ${metrics.apiCallCount}`); * ``` */ getMetrics(): { apiCallCount: number; }; private normalizeAddress; private normalizeSymbol; private dedupePools; private filterPoolsBySymbols; private applyPoolSearchResultFilters; private searchPoolsBySymbols; /** * Fetches data from GraphQL endpoint with retry logic for rate limits * * @param query - GraphQL query string * @param variables - Variables for the GraphQL query * @param protocol - Protocol to query * @param chainId - Chain ID to query * @returns Promise containing the response data * * @throws {Error} When subgraph endpoint is not available * @throws {Error} When rate limit is exceeded after max retries * @throws {Error} When GraphQL query times out * * @internal */ private fetchFromGraph; /** * Fetches the top pools for a specific protocol by trading volume * * @param count - Number of pools to fetch (default: 500) * @param protocol - Protocol to fetch pools from * @param chainId - Chain ID to fetch pools from * @returns Promise containing an array of top pools * * @example * ```typescript * // Get top 100 Uniswap V3 pools on Ethereum * const topPools = await poolClient.getTopPools(100, Protocol.Uniswap, 1); * if (topPools.success) { * console.log(`Found ${topPools.data.length} pools`); * } * ``` * * @throws {Error} When failed to fetch pools from subgraph */ getTopPools(count: number | undefined, protocol: Protocol, chainId: number): Promise>; /** * Fetches detailed information for a specific pool by its ID * * @param poolId - Pool contract address to fetch * @param protocol - Protocol the pool belongs to * @param chainId - Chain ID where the pool exists * @returns Promise containing pool details or null if not found * * @example * ```typescript * // Get specific pool details * const poolDetails = await poolClient.getPoolById( * '0x88e6a0c2ddd26feeb64f039a2c41296fcb3f5640', * Protocol.Uniswap, * 1 * ); * if (poolDetails.success && poolDetails.data) { * console.log(`Pool: ${poolDetails.data.token0.symbol}/${poolDetails.data.token1.symbol}`); * } * ``` * * @throws {Error} When failed to fetch pool from subgraph */ getPoolById(poolId: string, protocol: Protocol, chainId: number): Promise>; /** * Fetches pools containing multiple tokens in batches for better performance * * @param tokenAddresses - Array of token contract addresses * @param protocol - Protocol to fetch pools from * @param chainId - Chain ID to fetch pools from * @param batchSize - Number of tokens to process in each batch (default: 10) * @returns Promise containing all pools found for the tokens * * @example * ```typescript * // Get pools for multiple tokens * const tokenAddresses = [ * '0xa0b86a33e6f8b07b71c3a39ef77a6b6e8f1b7b7e', // USDC * '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2' // WETH * ]; * const pools = await poolClient.fetchPoolsForTokensBatch( * tokenAddresses, * Protocol.Uniswap, * 1, * 5 * ); * ``` * * @throws {Error} When batch processing fails */ fetchPoolsForTokensBatch(tokenAddresses: string[], protocol: Protocol, chainId: number, batchSize?: number): Promise>; /** * Fetches all pools containing a specific token * * @param tokenAddress - Token contract address * @param protocol - Protocol to fetch pools from * @param chainId - Chain ID to fetch pools from * @returns Promise containing pools that include the specified token * * @example * ```typescript * // Get all USDC pools on Uniswap V3 * const usdcPools = await poolClient.fetchPoolsForToken( * '0xa0b86a33e6f8b07b71c3a39ef77a6b6e8f1b7b7e', * Protocol.Uniswap, * 1 * ); * if (usdcPools.success) { * console.log(`Found ${usdcPools.data.length} USDC pools`); * } * ``` * * @throws {Error} When failed to fetch pools for token */ fetchPoolsForToken(tokenAddress: string, protocol: Protocol, chainId: number): Promise>; /** * Filters pools based on validity criteria such as tick range and liquidity * * @param pools - Array of pools to filter * @returns Array of valid pools that meet the criteria * * @example * ```typescript * const validPools = poolClient.filterValidPools(allPools); * console.log(`Filtered down to ${validPools.length} valid pools`); * ``` */ filterValidPools(pools: PoolData[]): PoolData[]; /** * Searches pools using exact-address lookups where supported and local symbol * filtering as a portable fallback. * * Symbol-based matching is best-effort because not every downstream AMM * subgraph exposes portable nested token-symbol filters. */ searchPools(filter: PoolFilter$1): Promise>; } //#endregion //#region src/base/StakingClient.d.ts interface StakingPool { allSymbols?: string; rewardToken: Address; rewardTokenDetail?: Reward; rewardTokenA: Address; rewardTokenADetail: Reward; rewardTokenB?: Address; rewardTokenBDetail?: Reward; dailyEmissionRewardA: number; dailyEmissionRewardB?: number; chainId: number; stakingPool: string; stakingToken: string; protocol: string; staking: Staking; reward: Reward; isSteerVault: boolean; beaconName?: string; vaultTokens?: VaultTokens; periodFinish: string; isDualFactory?: boolean; feeTier?: string; rewardsDuration: string; strategyId?: string; isActive?: boolean; postGeneratedTotalStaked?: number; postGeneratedApr?: number; stakedAmount?: bigint; locked?: boolean; } interface VaultTokens { token0: Token0; token1: Token1; } interface Token0 { name: string; address: Address; symbol: string; } interface Token1 { name: string; address: Address; symbol: string; } interface Reward { symbol: string; name: string; address: Address; decimals: number; } interface Staking { symbol: string; name: string; address: Address; decimals: number; } interface StakingPoolFilter { chainId?: number; protocol?: StakingProtocol; isLive?: boolean; includeExpired?: boolean; minDailyEmissionA?: number; minDailyEmissionB?: number; isDualRewards?: boolean; } interface StakeParams { stakingPool: Address; amount: bigint; } interface WithdrawParams { stakingPool: Address; amount: bigint; } interface GetRewardParams { stakingPool: Address; } interface TokenValueParams { stakingPool: StakingPool; amount: bigint; token0UsdPrice: number; token1UsdPrice: number; } interface TokenValueResponse { totalValueUsd: number; token0Value?: number; token1Value?: number; tokenValue?: number; } declare class StakingClient extends SubgraphClient { protected readonly publicClient: PublicClient; protected readonly walletClient: WalletClient; private readonly stakingPoolsEndpoint; private readonly withdrawClient; constructor(client: PublicClient & WalletClient); /** * Fetches and filters staking pools based on provided criteria * @param filter Optional filter object to filter the pools */ getStakingPools(filter?: StakingPoolFilter): Promise>; /** * Gets only currently active staking pools * @param chainId Optional chain ID to filter pools * @param protocol Optional protocol name to filter pools */ getLiveStakingPools(chainId?: number, protocol?: StakingProtocol): Promise>; /** * Gets all dual rewards staking pools * @param chainId Optional chain ID to filter pools * @param protocol Optional protocol name to filter pools * @param isLive Optional flag to only get live pools */ getDualRewardsStakingPools(chainId?: number, protocol?: StakingProtocol, isLive?: boolean): Promise>; /** * Gets high yield staking pools based on minimum daily emissions * @param minDailyEmissionA Minimum daily emission for reward A * @param minDailyEmissionB Optional minimum daily emission for reward B * @param chainId Optional chain ID to filter pools */ getHighYieldStakingPools(minDailyEmissionA: number, minDailyEmissionB?: number, chainId?: number): Promise>; /** * Internal helper to filter pools based on criteria */ private filterPools; /** * Stakes tokens in a staking pool * @param params The staking parameters */ stake(params: StakeParams): Promise>; /** * Withdraws tokens from a staking pool * @param params The withdrawal parameters */ withdraw(params: WithdrawParams): Promise>; /** * Claims rewards from a staking pool * @param params The reward claim parameters */ getReward(params: GetRewardParams): Promise>; /** * Gets the earned rewards for an account in a staking pool * @param stakingPool The staking pool address * @param account The account to check rewards for */ earned(stakingPool: Address, account: Address): Promise>; /** * Gets the total supply of staked tokens in a pool * @param stakingPool The staking pool address */ totalSupply(stakingPool: Address): Promise>; /** * Gets the staked balance of an account in a pool * @param stakingPool The staking pool address * @param account The account to check balance for */ balanceOf(stakingPool: Address, account: Address): Promise>; /** * Calculates the APR for a staking pool * @param pool The staking pool data * @param rewardTokenPriceUSD The price of the reward token in USD * @param totalStakedUSD The total value staked in USD */ calculateAPR(pool: StakingPool, rewardTokenPriceUSD: number, totalStakedUSD: number): number; /** * Calculates the USD value of tokens in a staking pool * Handles both regular staking pools and Steer vaults * @param params Parameters for token value calculation */ getSteerLpTokenValue(params: TokenValueParams): Promise>; /** * Gets the total staking amount in USD for a pool * @param stakingPool The staking pool * @param token0UsdPrice Price of token0 in USD * @param token1UsdPrice Price of token1 in USD (required for Steer vaults) */ getTotalStakingAmountInUsd(stakingPool: StakingPool, token0UsdPrice: number, token1UsdPrice?: number): Promise>; /** * Prepares the transaction data for staking tokens without executing it * @param params The staking parameters */ prepareStakeTx(params: StakeParams): Promise>; /** * Prepares the transaction data for withdrawing tokens without executing it * @param params The withdrawal parameters */ prepareWithdrawTx(params: WithdrawParams): Promise>; /** * Prepares the transaction data for claiming rewards without executing it * @param params The reward claim parameters */ prepareGetRewardTx(params: GetRewardParams): Promise>; } //#endregion //#region src/client.d.ts /** * The main client for interacting with the Steer Protocol. * This client provides access to vault operations, smart rewards functionality, pool data, and staking. * * @example * ```typescript * import { createPublicClient, createWalletClient, http } from 'viem'; * import { mainnet } from 'viem/chains'; * import { SteerClient, Protocol } from '@steerprotocol/sdk'; * * // Create viem clients * const publicClient = createPublicClient({ * chain: mainnet, * transport: http() * }); * * const walletClient = createWalletClient({ * chain: mainnet, * transport: http() * }); * * // Initialize the Steer client * const steerClient = new SteerClient({ * environment: 'production', * client: publicClient, * walletClient: walletClient, * subgraphStudioKey: 'your-subgraph-studio-key' // Optional * }); * * // Use vault operations * const vaults = await steerClient.vaults.getLatestVaults(); * * // Use rewards functionality * const campaigns = await steerClient.rewards.getCampaigns(1); * const summary = await steerClient.rewards.getRewardSummary(userAddress, chainId); * * // Use pool data functionality * const topPools = await steerClient.pools.getTopPools(100, Protocol.Uniswap, 1); * const poolDetails = await steerClient.pools.getPoolById(poolId, Protocol.Uniswap, 1); * * // Use staking functionality * const stakingPools = await steerClient.staking.getStakingPools(1); * ``` * * @group Client */ declare class SteerClient extends SubgraphClient { /** The environment the client is configured for */ private readonly environment; /** The vault client instance for interacting with Steer vaults */ readonly vaults: VaultClient; /** The rewards client instance for interacting with Smart Rewards */ readonly rewards: SmartRewardsClient; /** The staking client instance for interacting with staking pools */ readonly staking: StakingClient; /** The pool client instance for fetching pool data from DEX protocols */ readonly pools: PoolClient; /** * Creates a new instance of the SteerClient * * @param config - The configuration object for the client * @param config.environment - The environment to use ('production' or 'development') * @param config.client - The viem client for blockchain interactions * @param config.walletClient - Optional wallet client for write operations * @param config.subgraphStudioKey - Optional Subgraph Studio API key for higher rate limits * * @example * ```typescript * const steerClient = new SteerClient({ * environment: 'production', * client: publicClient, * walletClient: walletClient, * subgraphStudioKey: 'your-key' * }); * ``` */ constructor(config: SteerConfig); /** * Gets the active chain ID from the client * @returns A promise that resolves to the active chain ID * @throws Error if no active chain is found * * @example * ```typescript * const chainId = await steerClient.getActiveChain(); * console.log(chainId.data); // e.g., 1 for Ethereum mainnet * ``` */ getActiveChain(): Promise>; } //#endregion //#region src/base/FeeManagerClient.d.ts declare class FeeManagerClient extends SubgraphClient { protected readonly publicClient: PublicClient; protected readonly walletClient: WalletClient; protected feeManagerAddress: Address; constructor(feeManagerAddress: Address, publicClient: PublicClient, walletClient: WalletClient); /** * Overrides the FeeManager contract address. * Useful when deployment addresses are not yet hardcoded or need custom targeting. * @param address The new FeeManager contract address */ setFeeManagerAddress(address: Address): void; getFees(vault: Address): Promise>; getTotalFees(vault: Address): Promise>; getWithdrawer(vault: Address, feeIdentifier: string): Promise>; validateAdminPermission(): Promise>; validateWithdrawerPermission(vault: Address, feeIdentifier: string): Promise>; setFeeAndWithdrawalPermission(params: FeeManagerConfigParams): Promise>; setDefaultFeeAndWithdrawalPermission(params: DefaultFeeManagerConfigParams): Promise>; setMigratedVaultFeeAndWithdrawalPermission(): Promise>; setTotalFees(vault: Address, newTotalFees: bigint): Promise>; changeFeeWithdrawer(vault: Address, feeIdentifier: string, newWithdrawer: Address): Promise>; withdrawFee(params: FeeWithdrawalParams): Promise>; withdrawMultipleFees(params: MultipleFeeWithdrawalParams): Promise>; withdrawFeesFromMultipleVaults(params: MultiVaultFeeWithdrawalParams): Promise>; /** * Gets the accrued revenue for a specific fee identifier in a vault * @param vault The vault address * @param feeIdentifier The fee identifier (e.g., 'STEER_FEES', 'STRATEGIST_FEES') * @returns Promise resolving to the accrued amounts for token0 and token1 */ getAccruedRevenue(vault: Address, feeIdentifier: string): Promise>; /** * Gets a summary of accrued revenue for all configured fee identifiers in a vault * @param vault The vault address * @returns Promise resolving to a list of fee identifiers and their accrued amounts */ getVaultRevenueSummary(vault: Address): Promise>; } //#endregion //#region src/pool-lifecycle/errors.d.ts type PoolLifecycleErrorCode = 'INVALID_INPUT' | 'UNSUPPORTED_DEPLOYMENT' | 'CHAIN_MISMATCH' | 'CONTRACT_NOT_DEPLOYED' | 'DEPLOYMENT_MISMATCH' | 'DISABLED_FEE' | 'POOL_STATE_MISMATCH' | 'SIMULATION_FAILED'; /** Error thrown when a pool lifecycle primitive cannot safely continue. */ declare class PoolLifecycleError extends Error { readonly code: PoolLifecycleErrorCode; readonly causeValue?: unknown; constructor(code: PoolLifecycleErrorCode, message: string, causeValue?: unknown); } //#endregion //#region src/pool-lifecycle/math.d.ts /** The smallest sqrt price accepted by Uniswap TickMath, inclusive. */ declare const MIN_SQRT_RATIO = 4295128739n; /** The largest TickMath sqrt-price boundary, which is not itself valid. */ declare const MAX_SQRT_RATIO = 1461446703485210103287273052203988822378723970342n; /** * An exact fraction representation. {@link parseExactDecimal} returns a * reduced, non-negative value; initial-price inputs must also be positive. */ interface ExactFraction { readonly numerator: bigint; readonly denominator: bigint; } /** * A human-unit price expressed as quote-token units per one base-token unit. * * For example, a value of 2_500 / 1 means 2,500 quote tokens per base token. * Token decimals are applied exactly by {@link encodeInitialSqrtPriceX96}; a * JavaScript floating-point number is deliberately not part of this type. */ interface ExactPrice { readonly baseToken: string; readonly quoteToken: string; readonly baseTokenDecimals: number; readonly quoteTokenDecimals: number; readonly quotePerBase: ExactFraction; } /** * A human-unit price for an EVM currency pair. Unlike {@link ExactPrice}, the * zero address is accepted and represents the native currency used by * Uniswap V4. Callers are responsible for supplying 18 decimals for the * native currency on EVM chains. */ interface ExactCurrencyPrice { readonly baseCurrency: string; readonly quoteCurrency: string; readonly baseCurrencyDecimals: number; readonly quoteCurrencyDecimals: number; readonly quotePerBase: ExactFraction; } /** A validated, checksummed ERC20 pair in canonical address order. */ interface CanonicalErc20Pair { readonly token0: Address; readonly token1: Address; } /** A canonical EVM currency pair; currency0 may be the native zero address. */ interface CanonicalCurrencyPair { readonly currency0: Address; readonly currency1: Address; } /** * The canonical raw-token ratio and its TickMath-compatible Q64.96 encoding. */ interface CanonicalInitialPrice extends CanonicalErc20Pair { readonly amount0Raw: bigint; readonly amount1Raw: bigint; readonly sqrtPriceX96: bigint; readonly baseTokenIsToken0: boolean; } /** A canonical raw-currency ratio and its Q64.96 initialization price. */ interface CanonicalCurrencyInitialPrice extends CanonicalCurrencyPair { readonly amount0Raw: bigint; readonly amount1Raw: bigint; readonly sqrtPriceX96: bigint; readonly baseCurrencyIsCurrency0: boolean; } /** * Parses an unsigned, fixed-point decimal string without converting through a * JavaScript number. Signs, exponent notation, whitespace, and omitted whole * or fractional digits are rejected. The returned fraction is reduced. */ declare function parseExactDecimal(value: string): ExactFraction; /** * Validates, checksums, and sorts two distinct non-zero ERC20 addresses. */ declare function sortErc20Pair(tokenA: string, tokenB: string): CanonicalErc20Pair; /** * Validates, checksums, and sorts two distinct EVM currencies. The zero * address is allowed and, when present, necessarily sorts as currency0. */ declare function sortEvmCurrencyPair(currencyA: string, currencyB: string): CanonicalCurrencyPair; /** * Returns floor(sqrt(value)) using bigint arithmetic only. */ declare function integerSqrt(value: bigint): bigint; /** * Enforces the Uniswap TickMath interval: MIN is inclusive and MAX exclusive. * Returns the input so it can be composed with transaction builders. */ declare function validateSqrtPriceX96(sqrtPriceX96: bigint): bigint; /** * Encode an exact raw token1/token0 amount ratio without token metadata. * The result matches the canonical V3 floor-rounding operation. */ declare function encodeSqrtRatioX96(amount1Raw: bigint, amount0Raw: bigint): bigint; /** * Converts an exact quote-per-base human price into the canonical raw-token * ratio and sqrtPriceX96 expected by concentrated-liquidity initializers. * * Address sorting and reciprocal orientation happen before the only lossy * operation. The final encoding is exactly: * * floor(sqrt((amount1Raw << 192) / amount0Raw)) */ declare function encodeInitialSqrtPriceX96(price: ExactPrice): CanonicalInitialPrice; /** * Currency-aware counterpart to {@link encodeInitialSqrtPriceX96}. It keeps * the same exact orientation and floor-rounding rules while permitting the * native zero-address currency required by Uniswap V4. */ declare function encodeCurrencyInitialSqrtPriceX96(price: ExactCurrencyPrice): CanonicalCurrencyInitialPrice; //#endregion //#region src/pool-lifecycle/capabilities/algebra.d.ts type AlgebraLifecycleVariant = 'legacy' | 'directional' | 'integral-v1' | 'integral-v2'; type AlgebraLifecycleAdapter = 'algebra-legacy-pair-v1' | 'algebra-directional-pair-v1' | 'algebra-integral-pair-v1' | 'algebra-integral-plugin-data-v2'; interface AlgebraLifecycleProvenance { readonly source: 'sdk-config' | 'official-deployment' | 'verified-explorer'; readonly urls: readonly [`https://${string}`, ...`https://${string}`[]]; } interface AlgebraLifecycleDeployment { readonly supported: true; readonly schemaVersion: 1; readonly chainId: number; readonly protocol: SupportedProtocol; readonly family: 'algebra'; readonly variant: AlgebraLifecycleVariant; readonly adapter: AlgebraLifecycleAdapter; readonly version: 1 | 2; readonly factory: Address; readonly createPool: 'pair' | 'pair-with-plugin-data'; readonly state: 'legacy-global-state' | 'directional-global-state' | 'integral-global-state'; /** * Metadata only. An EOA must not call this entry point directly: the * authoritative contract requires msg.sender to equal the custom deployer. */ readonly customPoolEntryPoint?: Address; readonly customPoolCreation: 'not-configured' | 'adapter-specific-deployer-required'; readonly provenance: AlgebraLifecycleProvenance; } /** * Explicit lifecycle capabilities for every Algebra-family protocol/chain pair * currently present in the SDK AMM registry. Subgraph presence is never used as * a runtime fallback. */ declare const ALGEBRA_LIFECYCLE_DEPLOYMENTS: readonly AlgebraLifecycleDeployment[]; declare function resolveAlgebraLifecycleDeployment(params: { readonly chainId: number; readonly protocol: SupportedProtocol; }): AlgebraLifecycleDeployment | undefined; /** Validate external capability metadata and return its canonical frozen entry. */ declare function validateAlgebraLifecycleDeployment(value: unknown): AlgebraLifecycleDeployment; //#endregion //#region src/pool-lifecycle/capabilities/aerodrome-slipstream.d.ts interface AerodromeSlipstreamLifecycleDeployment { readonly supported: true; readonly schemaVersion: 1; readonly chainId: number; readonly protocol: SupportedProtocol; readonly family: 'aerodrome-slipstream'; readonly adapter: 'aerodrome-slipstream-factory-v1'; readonly version: 1; readonly generation: 1 | 2 | 3; /** Only this generation may create new pools through the public lifecycle API. */ readonly latest: boolean; readonly factory: Address; readonly factoryRuntimeCodeHash: Hex; readonly poolImplementation: Address; readonly poolImplementationRuntimeCodeHash: Hex; readonly poolProxyRuntimeCodeHash: Hex; readonly factoryRegistry: Address; readonly voter: Address; /** V2 and V3 retain this immutable duplicate guard against the original factory. */ readonly legacyCLFactory: Address | null; readonly sourceVerification: Readonly<{ readonly sourceRevision: `0x${string}`; readonly compilerVersion: '0.7.6+commit.7338295f'; readonly optimizer: Readonly<{ readonly enabled: true; readonly runs: 200; }>; readonly executableRuntimeMatch: true; readonly immutableAnchors: Readonly<{ readonly factoryRegistry: Address; readonly voter: Address; readonly poolImplementation: Address; readonly legacyCLFactory: Address | null; }>; }>; readonly provenance: Readonly<{ source: 'official-deployment'; urls: readonly [`https://${string}`, ...`https://${string}`[]]; }>; } declare const AERODROME_SLIPSTREAM_LIFECYCLE_DEPLOYMENTS: readonly [AerodromeSlipstreamLifecycleDeployment, AerodromeSlipstreamLifecycleDeployment, AerodromeSlipstreamLifecycleDeployment]; declare function resolveAerodromeSlipstreamLifecycleDeployment(params: { readonly chainId: number; readonly protocol: SupportedProtocol; }): AerodromeSlipstreamLifecycleDeployment | undefined; /** Resolve the only factory generation that is eligible for a new pool deployment. */ declare function resolveLatestAerodromeSlipstreamLifecycleDeployment(chainId: number): AerodromeSlipstreamLifecycleDeployment | undefined; declare function assertLatestAerodromeSlipstreamLifecycleDeployment(value: AerodromeSlipstreamLifecycleDeployment): AerodromeSlipstreamLifecycleDeployment; /** Reject mutable or forged deployment metadata at every public boundary. */ declare function validateAerodromeSlipstreamLifecycleDeployment(value: unknown): AerodromeSlipstreamLifecycleDeployment; //#endregion //#region src/pool-lifecycle/capabilities/v3.d.ts type V3LifecycleDeploymentProvenance = { readonly source: 'sdk-config' | 'official-deployment' | 'verified-explorer'; readonly urls: readonly `https://${string}`[]; }; type V3LifecycleDeploymentCommon = { readonly supported: true; readonly schemaVersion: 1; readonly chainId: number; readonly protocol: SupportedProtocol; readonly family: 'uniswap-v3-compatible'; readonly version: 1; readonly factory: Address; readonly poolInitCodeHash?: Hex; readonly provenance: V3LifecycleDeploymentProvenance; readonly startBlock?: bigint; }; type V3AtomicLifecycleDeployment = V3LifecycleDeploymentCommon & { readonly adapter: 'pool-initializer-v1'; readonly initializer: Address; readonly atomicCreateAndInitialize: true; }; type V3FactoryLifecycleDeployment = V3LifecycleDeploymentCommon & { readonly adapter: 'v3-factory-v1'; readonly initializer: null; readonly atomicCreateAndInitialize: false; }; type V3LifecycleDeployment = V3AtomicLifecycleDeployment | V3FactoryLifecycleDeployment; type ResolveV3LifecycleDeploymentParams = { readonly chainId: number; readonly protocol: SupportedProtocol; }; /** Explicit, fail-closed V3 create/initialize deployment allowlist. */ declare const V3_LIFECYCLE_DEPLOYMENTS: Readonly>>; /** * Protocols whose current SDK configuration is intentionally inventoried by * the V3 lifecycle registry. Adding a factory for one of these protocols must * also add an explicit lifecycle capability entry. */ declare const V3_CONFIG_PROTOCOLS: readonly SupportedProtocol[]; declare function resolveV3LifecycleDeployment(params: ResolveV3LifecycleDeploymentParams): V3LifecycleDeployment | undefined; //#endregion //#region src/pool-lifecycle/capabilities.d.ts type SupportedPoolLifecycleDeployment = V3LifecycleDeployment | V4LifecycleDeployment | AlgebraLifecycleDeployment | AerodromeSlipstreamLifecycleDeployment; type UnsupportedPoolLifecycleDeployment = { readonly supported: false; readonly schemaVersion: 1; readonly family: 'unsupported'; readonly chainId: number; readonly protocol: SupportedProtocol; readonly reason: 'deployment-not-configured'; }; type PoolLifecycleDeploymentResult = SupportedPoolLifecycleDeployment | UnsupportedPoolLifecycleDeployment; type ResolvePoolLifecycleDeploymentParams = { readonly chainId: number; readonly protocol: SupportedProtocol; }; type PoolLifecycleDeploymentRegistry = Readonly>>; /** * Collision-checked current-default deployments, independent of discovery. * Historical V4 entries remain available through V4_LIFECYCLE_DEPLOYMENTS and * its deployment-id resolver instead of competing for this chain/protocol key. */ declare const POOL_LIFECYCLE_DEPLOYMENTS: Readonly>>; /** * Resolve only explicitly versioned lifecycle capabilities. Discovery and * subgraph metadata are never an implicit fallback for transaction building. */ declare function resolvePoolLifecycleDeployment(params: ResolvePoolLifecycleDeploymentParams): PoolLifecycleDeploymentResult; //#endregion //#region src/pool-lifecycle/abis/algebra.d.ts declare const algebraPairFactoryAbi: readonly [{ readonly name: "Pool"; readonly type: "event"; readonly inputs: readonly [{ readonly type: "address"; readonly name: "token0"; readonly indexed: true; }, { readonly type: "address"; readonly name: "token1"; readonly indexed: true; }, { readonly type: "address"; readonly name: "pool"; }]; }, { readonly name: "poolDeployer"; readonly type: "function"; readonly stateMutability: "view"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly type: "address"; }]; }, { readonly name: "poolByPair"; readonly type: "function"; readonly stateMutability: "view"; readonly inputs: readonly [{ readonly type: "address"; readonly name: "tokenA"; }, { readonly type: "address"; readonly name: "tokenB"; }]; readonly outputs: readonly [{ readonly type: "address"; readonly name: "pool"; }]; }, { readonly name: "createPool"; readonly type: "function"; readonly stateMutability: "nonpayable"; readonly inputs: readonly [{ readonly type: "address"; readonly name: "tokenA"; }, { readonly type: "address"; readonly name: "tokenB"; }]; readonly outputs: readonly [{ readonly type: "address"; readonly name: "pool"; }]; }]; declare const algebraIntegralPluginDataFactoryAbi: readonly [{ readonly name: "Pool"; readonly type: "event"; readonly inputs: readonly [{ readonly type: "address"; readonly name: "token0"; readonly indexed: true; }, { readonly type: "address"; readonly name: "token1"; readonly indexed: true; }, { readonly type: "address"; readonly name: "pool"; }]; }, { readonly name: "CustomPool"; readonly type: "event"; readonly inputs: readonly [{ readonly type: "address"; readonly name: "deployer"; readonly indexed: true; }, { readonly type: "address"; readonly name: "token0"; readonly indexed: true; }, { readonly type: "address"; readonly name: "token1"; readonly indexed: true; }, { readonly type: "address"; readonly name: "pool"; }]; }, { readonly name: "poolDeployer"; readonly type: "function"; readonly stateMutability: "view"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly type: "address"; }]; }, { readonly name: "poolByPair"; readonly type: "function"; readonly stateMutability: "view"; readonly inputs: readonly [{ readonly type: "address"; readonly name: "tokenA"; }, { readonly type: "address"; readonly name: "tokenB"; }]; readonly outputs: readonly [{ readonly type: "address"; readonly name: "pool"; }]; }, { readonly name: "createPool"; readonly type: "function"; readonly stateMutability: "nonpayable"; readonly inputs: readonly [{ readonly type: "address"; readonly name: "tokenA"; }, { readonly type: "address"; readonly name: "tokenB"; }, { readonly type: "bytes"; readonly name: "data"; }]; readonly outputs: readonly [{ readonly type: "address"; readonly name: "pool"; }]; }, { readonly name: "defaultConfigurationForPool"; readonly type: "function"; readonly stateMutability: "view"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly type: "uint16"; readonly name: "communityFee"; }, { readonly type: "int24"; readonly name: "tickSpacing"; }, { readonly type: "uint16"; readonly name: "fee"; }]; }, { readonly name: "defaultPluginFactory"; readonly type: "function"; readonly stateMutability: "view"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly type: "address"; }]; }]; declare const algebraIntegralPairFactoryAbi: readonly [{ readonly name: "Pool"; readonly type: "event"; readonly inputs: readonly [{ readonly type: "address"; readonly name: "token0"; readonly indexed: true; }, { readonly type: "address"; readonly name: "token1"; readonly indexed: true; }, { readonly type: "address"; readonly name: "pool"; }]; }, { readonly name: "CustomPool"; readonly type: "event"; readonly inputs: readonly [{ readonly type: "address"; readonly name: "deployer"; readonly indexed: true; }, { readonly type: "address"; readonly name: "token0"; readonly indexed: true; }, { readonly type: "address"; readonly name: "token1"; readonly indexed: true; }, { readonly type: "address"; readonly name: "pool"; }]; }, { readonly name: "poolDeployer"; readonly type: "function"; readonly stateMutability: "view"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly type: "address"; }]; }, { readonly name: "poolByPair"; readonly type: "function"; readonly stateMutability: "view"; readonly inputs: readonly [{ readonly type: "address"; readonly name: "tokenA"; }, { readonly type: "address"; readonly name: "tokenB"; }]; readonly outputs: readonly [{ readonly type: "address"; readonly name: "pool"; }]; }, { readonly name: "createPool"; readonly type: "function"; readonly stateMutability: "nonpayable"; readonly inputs: readonly [{ readonly type: "address"; readonly name: "tokenA"; }, { readonly type: "address"; readonly name: "tokenB"; }]; readonly outputs: readonly [{ readonly type: "address"; readonly name: "pool"; }]; }, { readonly name: "defaultTickspacing"; readonly type: "function"; readonly stateMutability: "view"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly type: "int24"; }]; }, { readonly name: "defaultFee"; readonly type: "function"; readonly stateMutability: "view"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly type: "uint16"; }]; }, { readonly name: "defaultPluginFactory"; readonly type: "function"; readonly stateMutability: "view"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly type: "address"; }]; }]; declare const algebraPoolBaseAbi: readonly [{ readonly name: "Initialize"; readonly type: "event"; readonly inputs: readonly [{ readonly type: "uint160"; readonly name: "price"; }, { readonly type: "int24"; readonly name: "tick"; }]; }, { readonly name: "factory"; readonly type: "function"; readonly stateMutability: "view"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly type: "address"; }]; }, { readonly name: "token0"; readonly type: "function"; readonly stateMutability: "view"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly type: "address"; }]; }, { readonly name: "token1"; readonly type: "function"; readonly stateMutability: "view"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly type: "address"; }]; }, { readonly name: "tickSpacing"; readonly type: "function"; readonly stateMutability: "view"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly type: "int24"; }]; }, { readonly name: "initialize"; readonly type: "function"; readonly stateMutability: "nonpayable"; readonly inputs: readonly [{ readonly type: "uint160"; readonly name: "initialPrice"; }]; readonly outputs: readonly []; }]; declare const algebraLegacyPoolStateAbi: readonly [{ readonly name: "globalState"; readonly type: "function"; readonly stateMutability: "view"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly type: "uint160"; readonly name: "price"; }, { readonly type: "int24"; readonly name: "tick"; }, { readonly type: "int24"; readonly name: "prevInitializedTick"; }, { readonly type: "uint16"; readonly name: "fee"; }, { readonly type: "uint16"; readonly name: "timepointIndex"; }, { readonly type: "uint8"; readonly name: "communityFee"; }, { readonly type: "bool"; readonly name: "unlocked"; }]; }]; declare const algebraDirectionalPoolStateAbi: readonly [{ readonly name: "globalState"; readonly type: "function"; readonly stateMutability: "view"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly type: "uint160"; readonly name: "price"; }, { readonly type: "int24"; readonly name: "tick"; }, { readonly type: "uint16"; readonly name: "feeZto"; }, { readonly type: "uint16"; readonly name: "feeOtz"; }, { readonly type: "uint16"; readonly name: "timepointIndex"; }, { readonly type: "uint8"; readonly name: "communityFeeToken0"; }, { readonly type: "uint8"; readonly name: "communityFeeToken1"; }, { readonly type: "bool"; readonly name: "unlocked"; }]; }]; declare const algebraIntegralPoolStateAbi: readonly [{ readonly name: "globalState"; readonly type: "function"; readonly stateMutability: "view"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly type: "uint160"; readonly name: "price"; }, { readonly type: "int24"; readonly name: "tick"; }, { readonly type: "uint16"; readonly name: "lastFee"; }, { readonly type: "uint8"; readonly name: "pluginConfig"; }, { readonly type: "uint16"; readonly name: "communityFee"; }, { readonly type: "bool"; readonly name: "unlocked"; }]; }, { readonly name: "plugin"; readonly type: "function"; readonly stateMutability: "view"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly type: "address"; }]; }]; /** * Kept separate from standard pool creation. Calling this directly from an EOA * is invalid because the entry point requires msg.sender == deployer. */ declare const algebraCustomPoolEntryPointAbi: readonly [{ readonly name: "factory"; readonly type: "function"; readonly stateMutability: "view"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly type: "address"; }]; }, { readonly name: "createCustomPool"; readonly type: "function"; readonly stateMutability: "nonpayable"; readonly inputs: readonly [{ readonly type: "address"; readonly name: "deployer"; }, { readonly type: "address"; readonly name: "creator"; }, { readonly type: "address"; readonly name: "tokenA"; }, { readonly type: "address"; readonly name: "tokenB"; }, { readonly type: "bytes"; readonly name: "data"; }]; readonly outputs: readonly [{ readonly type: "address"; readonly name: "customPool"; }]; }]; //#endregion //#region src/pool-lifecycle/abis/aerodrome-slipstream.d.ts /** Exact Base Aerodrome Slipstream CLFactory lifecycle surface. */ declare const aerodromeSlipstreamFactoryAbi: readonly [{ readonly name: "PoolCreated"; readonly type: "event"; readonly inputs: readonly [{ readonly type: "address"; readonly name: "token0"; readonly indexed: true; }, { readonly type: "address"; readonly name: "token1"; readonly indexed: true; }, { readonly type: "int24"; readonly name: "tickSpacing"; readonly indexed: true; }, { readonly type: "address"; readonly name: "pool"; }]; }, { readonly name: "getPool"; readonly type: "function"; readonly stateMutability: "view"; readonly inputs: readonly [{ readonly type: "address"; readonly name: "tokenA"; }, { readonly type: "address"; readonly name: "tokenB"; }, { readonly type: "int24"; readonly name: "tickSpacing"; }]; readonly outputs: readonly [{ readonly type: "address"; readonly name: "pool"; }]; }, { readonly name: "tickSpacingToFee"; readonly type: "function"; readonly stateMutability: "view"; readonly inputs: readonly [{ readonly type: "int24"; readonly name: "tickSpacing"; }]; readonly outputs: readonly [{ readonly type: "uint24"; readonly name: "fee"; }]; }, { readonly name: "poolImplementation"; readonly type: "function"; readonly stateMutability: "view"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly type: "address"; }]; }, { readonly name: "factoryRegistry"; readonly type: "function"; readonly stateMutability: "view"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly type: "address"; }]; }, { readonly name: "voter"; readonly type: "function"; readonly stateMutability: "view"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly type: "address"; }]; }, { readonly name: "legacyCLFactory"; readonly type: "function"; readonly stateMutability: "view"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly type: "address"; }]; }, { readonly name: "isPool"; readonly type: "function"; readonly stateMutability: "view"; readonly inputs: readonly [{ readonly type: "address"; readonly name: "pool"; }]; readonly outputs: readonly [{ readonly type: "bool"; }]; }, { readonly name: "createPool"; readonly type: "function"; readonly stateMutability: "nonpayable"; readonly inputs: readonly [{ readonly type: "address"; readonly name: "tokenA"; }, { readonly type: "address"; readonly name: "tokenB"; }, { readonly type: "int24"; readonly name: "tickSpacing"; }, { readonly type: "uint160"; readonly name: "sqrtPriceX96"; }]; readonly outputs: readonly [{ readonly type: "address"; readonly name: "pool"; }]; }]; /** Exact Aerodrome Slipstream CLPool lifecycle read and event surface. */ declare const aerodromeSlipstreamPoolAbi: readonly [{ readonly name: "Initialize"; readonly type: "event"; readonly inputs: readonly [{ readonly type: "uint160"; readonly name: "sqrtPriceX96"; }, { readonly type: "int24"; readonly name: "tick"; }]; }, { readonly name: "factory"; readonly type: "function"; readonly stateMutability: "view"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly type: "address"; }]; }, { readonly name: "token0"; readonly type: "function"; readonly stateMutability: "view"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly type: "address"; }]; }, { readonly name: "token1"; readonly type: "function"; readonly stateMutability: "view"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly type: "address"; }]; }, { readonly name: "tickSpacing"; readonly type: "function"; readonly stateMutability: "view"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly type: "int24"; }]; }, { readonly name: "slot0"; readonly type: "function"; readonly stateMutability: "view"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly type: "uint160"; readonly name: "sqrtPriceX96"; }, { readonly type: "int24"; readonly name: "tick"; }, { readonly type: "uint16"; readonly name: "observationIndex"; }, { readonly type: "uint16"; readonly name: "observationCardinality"; }, { readonly type: "uint16"; readonly name: "observationCardinalityNext"; }, { readonly type: "bool"; readonly name: "unlocked"; }]; }]; //#endregion //#region src/pool-lifecycle/abis/v3.d.ts /** Minimal canonical Uniswap V3-compatible factory ABI used by pool lifecycle flows. */ declare const v3FactoryAbi: readonly [{ readonly type: "function"; readonly name: "createPool"; readonly stateMutability: "nonpayable"; readonly inputs: readonly [{ readonly name: "tokenA"; readonly type: "address"; }, { readonly name: "tokenB"; readonly type: "address"; }, { readonly name: "fee"; readonly type: "uint24"; }]; readonly outputs: readonly [{ readonly name: "pool"; readonly type: "address"; }]; }, { readonly type: "function"; readonly name: "getPool"; readonly stateMutability: "view"; readonly inputs: readonly [{ readonly name: "tokenA"; readonly type: "address"; }, { readonly name: "tokenB"; readonly type: "address"; }, { readonly name: "fee"; readonly type: "uint24"; }]; readonly outputs: readonly [{ readonly name: "pool"; readonly type: "address"; }]; }, { readonly type: "function"; readonly name: "feeAmountTickSpacing"; readonly stateMutability: "view"; readonly inputs: readonly [{ readonly name: "fee"; readonly type: "uint24"; }]; readonly outputs: readonly [{ readonly name: "tickSpacing"; readonly type: "int24"; }]; }, { readonly type: "event"; readonly name: "PoolCreated"; readonly inputs: readonly [{ readonly name: "token0"; readonly type: "address"; readonly indexed: true; }, { readonly name: "token1"; readonly type: "address"; readonly indexed: true; }, { readonly name: "fee"; readonly type: "uint24"; readonly indexed: true; }, { readonly name: "tickSpacing"; readonly type: "int24"; readonly indexed: false; }, { readonly name: "pool"; readonly type: "address"; readonly indexed: false; }]; }]; /** Minimal PoolInitializer/NonfungiblePositionManager ABI used for atomic V3 setup. */ declare const v3PoolInitializerAbi: readonly [{ readonly type: "function"; readonly name: "createAndInitializePoolIfNecessary"; readonly stateMutability: "payable"; readonly inputs: readonly [{ readonly name: "token0"; readonly type: "address"; }, { readonly name: "token1"; readonly type: "address"; }, { readonly name: "fee"; readonly type: "uint24"; }, { readonly name: "sqrtPriceX96"; readonly type: "uint160"; }]; readonly outputs: readonly [{ readonly name: "pool"; readonly type: "address"; }]; }, { readonly type: "function"; readonly name: "factory"; readonly stateMutability: "view"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "address"; }]; }]; /** Minimal canonical V3 pool ABI needed to initialize and verify a deployment. */ declare const v3PoolAbi: readonly [{ readonly type: "function"; readonly name: "initialize"; readonly stateMutability: "nonpayable"; readonly inputs: readonly [{ readonly name: "sqrtPriceX96"; readonly type: "uint160"; }]; readonly outputs: readonly []; }, { readonly type: "function"; readonly name: "factory"; readonly stateMutability: "view"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "address"; }]; }, { readonly type: "function"; readonly name: "token0"; readonly stateMutability: "view"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "address"; }]; }, { readonly type: "function"; readonly name: "token1"; readonly stateMutability: "view"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "address"; }]; }, { readonly type: "function"; readonly name: "fee"; readonly stateMutability: "view"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "uint24"; }]; }, { readonly type: "function"; readonly name: "tickSpacing"; readonly stateMutability: "view"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "int24"; }]; }, { readonly type: "function"; readonly name: "slot0"; readonly stateMutability: "view"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: "sqrtPriceX96"; readonly type: "uint160"; }, { readonly name: "tick"; readonly type: "int24"; }, { readonly name: "observationIndex"; readonly type: "uint16"; }, { readonly name: "observationCardinality"; readonly type: "uint16"; }, { readonly name: "observationCardinalityNext"; readonly type: "uint16"; }, { readonly name: "feeProtocol"; readonly type: "uint8"; }, { readonly name: "unlocked"; readonly type: "bool"; }]; }, { readonly type: "event"; readonly name: "Initialize"; readonly inputs: readonly [{ readonly name: "sqrtPriceX96"; readonly type: "uint160"; readonly indexed: false; }, { readonly name: "tick"; readonly type: "int24"; readonly indexed: false; }]; }]; //#endregion //#region src/pool-lifecycle/abis/v4.d.ts /** Minimal authoritative IPoolManager surface used by the V4 lifecycle adapter. */ declare const v4PoolManagerAbi: readonly [{ readonly name: "initialize"; readonly type: "function"; readonly stateMutability: "nonpayable"; readonly inputs: readonly [{ readonly type: "tuple"; readonly components: readonly [{ readonly type: "address"; readonly name: "currency0"; }, { readonly type: "address"; readonly name: "currency1"; }, { readonly type: "uint24"; readonly name: "fee"; }, { readonly type: "int24"; readonly name: "tickSpacing"; }, { readonly type: "address"; readonly name: "hooks"; }]; readonly name: "key"; }, { readonly type: "uint160"; readonly name: "sqrtPriceX96"; }]; readonly outputs: readonly [{ readonly type: "int24"; readonly name: "tick"; }]; }, { readonly name: "Initialize"; readonly type: "event"; readonly inputs: readonly [{ readonly type: "bytes32"; readonly name: "id"; readonly indexed: true; }, { readonly type: "address"; readonly name: "currency0"; readonly indexed: true; }, { readonly type: "address"; readonly name: "currency1"; readonly indexed: true; }, { readonly type: "uint24"; readonly name: "fee"; }, { readonly type: "int24"; readonly name: "tickSpacing"; }, { readonly type: "address"; readonly name: "hooks"; }, { readonly type: "uint160"; readonly name: "sqrtPriceX96"; }, { readonly type: "int24"; readonly name: "tick"; }]; }]; /** Minimal StateView/ImmutableState surface used for deployment and state checks. */ declare const v4StateViewAbi: readonly [{ readonly name: "poolManager"; readonly type: "function"; readonly stateMutability: "view"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly type: "address"; }]; }, { readonly name: "getSlot0"; readonly type: "function"; readonly stateMutability: "view"; readonly inputs: readonly [{ readonly type: "bytes32"; readonly name: "poolId"; }]; readonly outputs: readonly [{ readonly type: "uint160"; readonly name: "sqrtPriceX96"; }, { readonly type: "int24"; readonly name: "tick"; }, { readonly type: "uint24"; readonly name: "protocolFee"; }, { readonly type: "uint24"; readonly name: "lpFee"; }]; }]; //#endregion //#region src/pool-lifecycle/algebra/types.d.ts interface AlgebraPoolKeyInput { readonly tokenA: Address; readonly tokenB: Address; } interface AlgebraPoolKey { readonly token0: Address; readonly token1: Address; } interface AlgebraInitialPrice extends AlgebraPoolKey { readonly sqrtPriceX96: bigint; } interface AlgebraPoolSnapshot { readonly schemaVersion: 1; readonly blockNumber: bigint; readonly deployment: AlgebraLifecycleDeployment; readonly key: AlgebraPoolKey; readonly status: 'absent' | 'uninitialized' | 'initialized'; readonly poolAddress: Address | null; readonly sqrtPriceX96: bigint; readonly tick: number | null; readonly tickSpacing: number | null; readonly fee: number | null; readonly directionalFee: Readonly<{ zeroToOne: number; oneToZero: number; }> | null; readonly plugin: Address | null; readonly pluginConfig: number | null; readonly unlocked: boolean | null; } interface AlgebraPoolIdentity { readonly family: 'algebra'; readonly adapter: AlgebraLifecycleDeployment['adapter']; readonly version: 1 | 2; readonly variant: AlgebraLifecycleDeployment['variant']; readonly chainId: number; readonly factory: Address; readonly key: AlgebraPoolKey; readonly poolAddress: Address | null; } interface AlgebraPreflightSummary { readonly blockNumber: bigint; readonly status: AlgebraPoolSnapshot['status']; readonly poolAddress: Address | null; readonly sqrtPriceX96: bigint; } type PreparedAlgebraCreatePoolAction = PreparedPoolAction<'algebra-create', AlgebraPoolIdentity, { readonly sqrtPriceX96: null; readonly pluginData: Hex; }, AlgebraPreflightSummary>; type PreparedAlgebraInitializePoolAction = PreparedPoolAction<'algebra-initialize', AlgebraPoolIdentity, { readonly sqrtPriceX96: bigint; readonly pluginData: null; }, AlgebraPreflightSummary>; type PreparedAlgebraPoolAction = PreparedAlgebraCreatePoolAction | PreparedAlgebraInitializePoolAction; interface AlgebraPoolActionSimulation extends PoolActionSimulation { readonly returnedPoolAddress: Address | null; } interface AlgebraReceiptEvidence { readonly receiptStatus: 'success' | 'reverted'; readonly poolCreated: Readonly<{ poolAddress: Address; logIndex: number; }> | null; readonly initialization: Readonly<{ poolAddress: Address; sqrtPriceX96: bigint; tick: number; logIndex: number; }> | null; } type AlgebraPoolActionVerification = PoolActionVerification; /** Re-derive target and calldata after a plan crosses a UI/CLI/JSON boundary. */ declare function validatePreparedAlgebraPoolAction(value: unknown): AlgebraLifecycleDeployment; declare function deserializePreparedAlgebraPoolAction(serialized: string): PreparedAlgebraPoolAction; //#endregion //#region src/pool-lifecycle/algebra/inspect.d.ts interface InspectAlgebraPoolParams { readonly publicClient: PublicClient; readonly deployment: AlgebraLifecycleDeployment; readonly key: AlgebraPoolKeyInput; readonly blockNumber?: bigint; } interface InspectAlgebraCustomPoolEntryPointParams { readonly publicClient: PublicClient; readonly deployment: AlgebraLifecycleDeployment; readonly blockNumber?: bigint; } /** Verify configured custom-pool routing without claiming a generic deployer ABI. */ declare function inspectAlgebraCustomPoolEntryPoint(params: InspectAlgebraCustomPoolEntryPointParams): Promise<{ readonly blockNumber: bigint; readonly entryPoint: Address; readonly factory: Address; }>; declare function inspectAlgebraPool(params: InspectAlgebraPoolParams): Promise; //#endregion //#region src/pool-lifecycle/algebra/actions.d.ts interface BuildBase { readonly deployment: AlgebraLifecycleDeployment; readonly key: AlgebraPoolKeyInput; readonly preflight: AlgebraPoolSnapshot; } interface BuildAlgebraCreatePoolTransactionParams extends BuildBase { readonly pluginData?: Hex; } interface BuildAlgebraInitializePoolTransactionParams extends BuildBase { readonly initialPrice: AlgebraInitialPrice; } /** Build the version-specific standard-pool factory call without signing it. */ declare function buildAlgebraCreatePoolTransaction(params: BuildAlgebraCreatePoolTransactionParams): PreparedAlgebraCreatePoolAction; /** Build a direct initialization call bound to an inspected, uninitialized pool. */ declare function buildAlgebraInitializePoolTransaction(params: BuildAlgebraInitializePoolTransactionParams): PreparedAlgebraInitializePoolAction; type PrepareAlgebraPoolResult = { readonly status: 'ready-create'; readonly snapshot: AlgebraPoolSnapshot; readonly action: PreparedAlgebraCreatePoolAction; } | { readonly status: 'ready-initialize'; readonly snapshot: AlgebraPoolSnapshot; readonly action: PreparedAlgebraInitializePoolAction; } | { readonly status: 'already-initialized-matching'; readonly snapshot: AlgebraPoolSnapshot; readonly action: null; }; /** * Prepare the next honest lifecycle step. Creation and initialization remain * separate when the SDK has no proven atomic initializer deployment. */ declare function prepareAlgebraPool(params: Omit & { readonly initialPrice: AlgebraInitialPrice; readonly pluginData?: Hex; readonly blockNumber?: bigint; }): Promise; //#endregion //#region src/pool-lifecycle/algebra/key.d.ts declare function canonicalizeAlgebraPoolKey(input: AlgebraPoolKeyInput): AlgebraPoolKey; declare function assertAlgebraInitialPrice(key: AlgebraPoolKey, price: AlgebraInitialPrice): AlgebraInitialPrice; //#endregion //#region src/pool-lifecycle/algebra/simulate.d.ts interface SimulateAlgebraPoolActionParams { readonly publicClient: PublicClient; readonly account: Address; readonly action: PreparedAlgebraPoolAction; readonly blockNumber?: bigint; } declare function simulateAlgebraPoolAction(params: SimulateAlgebraPoolActionParams): Promise; //#endregion //#region src/pool-lifecycle/algebra/verify.d.ts interface VerifyAlgebraPoolActionParams { readonly publicClient: PublicClient; readonly action: PreparedAlgebraPoolAction; readonly receipt: TransactionReceipt; } declare function decodeAlgebraPoolActionReceipt(action: PreparedAlgebraPoolAction, receipt: TransactionReceipt): AlgebraReceiptEvidence; declare function verifyAlgebraPoolAction(params: VerifyAlgebraPoolActionParams): Promise; //#endregion //#region src/pool-lifecycle/aerodrome-slipstream/key.d.ts interface AerodromeSlipstreamPoolKeyInput { readonly tokenA: Address; readonly tokenB: Address; readonly tickSpacing: number; } interface AerodromeSlipstreamPoolKey { readonly token0: Address; readonly token1: Address; readonly tickSpacing: number; } declare function canonicalizeAerodromeSlipstreamPoolKey(key: AerodromeSlipstreamPoolKeyInput): AerodromeSlipstreamPoolKey; declare function assertAerodromeSlipstreamInitialPrice(value: bigint): bigint; //#endregion //#region src/pool-lifecycle/aerodrome-slipstream/types.d.ts interface AerodromeSlipstreamPoolSnapshot { readonly schemaVersion: 1; readonly blockNumber: bigint; readonly deployment: AerodromeSlipstreamLifecycleDeployment; readonly key: AerodromeSlipstreamPoolKey; readonly enabledFee: number; readonly status: 'absent' | 'initialized'; readonly poolAddress: Address | null; readonly sqrtPriceX96: bigint; readonly tick: number | null; } interface AerodromeSlipstreamPoolIdentity { readonly family: 'aerodrome-slipstream'; readonly adapter: 'aerodrome-slipstream-factory-v1'; readonly version: 1; readonly chainId: number; readonly factory: Address; readonly key: AerodromeSlipstreamPoolKey; readonly poolAddress: null; } type VerifiedAerodromeSlipstreamPoolIdentity = Omit & { readonly poolAddress: Address | null; }; type PreparedAerodromeSlipstreamCreateAndInitializeAction = PreparedPoolAction<'aerodrome-slipstream-create-and-initialize', AerodromeSlipstreamPoolIdentity, { readonly sqrtPriceX96: bigint; }, { readonly blockNumber: bigint; readonly status: 'absent'; readonly poolAddress: null; }>; type AerodromeSlipstreamPoolActionSimulation = PoolActionSimulation & { readonly returnedPoolAddress: Address; }; interface AerodromeSlipstreamReceiptEvidence { readonly receiptStatus: 'success' | 'reverted'; readonly poolCreated: Readonly<{ poolAddress: Address; logIndex: number; }> | null; readonly initialization: Readonly<{ poolAddress: Address; sqrtPriceX96: bigint; tick: number; logIndex: number; }> | null; } type AerodromeSlipstreamPoolActionVerification = PoolActionVerification; /** Re-derive all trusted calldata after a plan crosses a JSON boundary. */ declare function validatePreparedAerodromeSlipstreamPoolAction(value: unknown): AerodromeSlipstreamLifecycleDeployment; declare function deserializePreparedAerodromeSlipstreamPoolAction(serialized: string): PreparedAerodromeSlipstreamCreateAndInitializeAction; //#endregion //#region src/pool-lifecycle/aerodrome-slipstream/inspect.d.ts declare function inspectAerodromeSlipstreamPool(params: { readonly publicClient: PublicClient; readonly deployment: AerodromeSlipstreamLifecycleDeployment; readonly key: AerodromeSlipstreamPoolKeyInput; readonly blockNumber?: bigint; }): Promise; //#endregion //#region src/pool-lifecycle/aerodrome-slipstream/actions.d.ts declare function buildAerodromeSlipstreamCreateAndInitializeTransaction(params: { readonly deployment: AerodromeSlipstreamLifecycleDeployment; readonly key: AerodromeSlipstreamPoolKeyInput; readonly initialPrice: bigint; readonly preflight: AerodromeSlipstreamPoolSnapshot; }): PreparedAerodromeSlipstreamCreateAndInitializeAction; declare function prepareAerodromeSlipstreamPool(params: { readonly publicClient: PublicClient; readonly deployment: AerodromeSlipstreamLifecycleDeployment; readonly key: AerodromeSlipstreamPoolKeyInput; readonly initialPrice: bigint; readonly blockNumber?: bigint; }): Promise<{ readonly status: 'ready'; readonly snapshot: AerodromeSlipstreamPoolSnapshot; readonly action: PreparedAerodromeSlipstreamCreateAndInitializeAction; } | { readonly status: 'already-initialized-matching'; readonly snapshot: AerodromeSlipstreamPoolSnapshot; readonly action: null; }>; /** Prepare a new pool only through the newest verified factory in this family. */ declare function prepareLatestAerodromeSlipstreamPool(params: { readonly publicClient: PublicClient; readonly chainId: number; readonly key: AerodromeSlipstreamPoolKeyInput; readonly initialPrice: bigint; readonly blockNumber?: bigint; }): ReturnType; //#endregion //#region src/pool-lifecycle/aerodrome-slipstream/simulate.d.ts declare function simulateAerodromeSlipstreamPoolAction(params: { readonly publicClient: PublicClient; readonly account: Address; readonly action: PreparedAerodromeSlipstreamCreateAndInitializeAction; readonly blockNumber?: bigint; }): Promise; //#endregion //#region src/pool-lifecycle/aerodrome-slipstream/verify.d.ts declare function decodeAerodromeSlipstreamPoolActionReceipt(action: PreparedAerodromeSlipstreamCreateAndInitializeAction, receipt: TransactionReceipt): AerodromeSlipstreamReceiptEvidence; declare function verifyAerodromeSlipstreamPoolAction(params: { readonly publicClient: PublicClient; readonly action: PreparedAerodromeSlipstreamCreateAndInitializeAction; readonly receipt: TransactionReceipt; }): Promise; //#endregion //#region src/pool-lifecycle/v3/types.d.ts interface V3PoolKeyInput { readonly tokenA: Address; readonly tokenB: Address; readonly fee: number; } interface V3PoolKey { readonly token0: Address; readonly token1: Address; readonly fee: number; } /** A Q64.96 price bound to the canonical V3 token order. */ interface V3InitialPrice { readonly token0: Address; readonly token1: Address; readonly sqrtPriceX96: bigint; } type V3PoolStatus = 'absent' | 'uninitialized' | 'initialized'; interface V3PoolSnapshotBase { readonly schemaVersion: 1; readonly blockNumber: bigint; readonly deployment: V3LifecycleDeployment; readonly key: V3PoolKey; readonly feeTickSpacing: number; readonly tickSpacing: number; } interface V3AbsentPoolSnapshot extends V3PoolSnapshotBase { readonly status: 'absent'; readonly poolAddress: null; readonly sqrtPriceX96: 0n; readonly tick: null; } interface V3ExistingPoolSnapshotBase extends V3PoolSnapshotBase { readonly poolAddress: Address; readonly tick: number; } interface V3UninitializedPoolSnapshot extends V3ExistingPoolSnapshotBase { readonly status: 'uninitialized'; readonly sqrtPriceX96: 0n; } interface V3InitializedPoolSnapshot extends V3ExistingPoolSnapshotBase { readonly status: 'initialized'; readonly sqrtPriceX96: bigint; } type V3ExistingPoolSnapshot = V3UninitializedPoolSnapshot | V3InitializedPoolSnapshot; /** Pool lifecycle status and its address/price invariants are discriminated. */ type V3PoolSnapshot = V3AbsentPoolSnapshot | V3UninitializedPoolSnapshot | V3InitializedPoolSnapshot; type V3PoolActionKind = 'v3-create' | 'v3-initialize' | 'v3-create-and-initialize'; interface V3PoolIdentityBase { readonly family: 'uniswap-v3-compatible'; readonly adapter: V3LifecycleDeployment['adapter']; readonly version: 1; readonly chainId: number; readonly factory: Address; readonly initializer: Address | null; readonly key: V3PoolKey; } interface V3CreatePoolIdentity extends V3PoolIdentityBase { readonly poolAddress: null; } interface V3ExistingPoolIdentity extends V3PoolIdentityBase { readonly poolAddress: Address; } interface V3PoolIdentity extends V3PoolIdentityBase { readonly poolAddress: Address | null; } interface V3CreateExpectation { readonly sqrtPriceX96: null; } interface V3InitializeExpectation { readonly sqrtPriceX96: bigint; } type V3PreflightSummary = { readonly blockNumber: bigint; readonly status: 'absent'; readonly poolAddress: null; readonly sqrtPriceX96: 0n; } | { readonly blockNumber: bigint; readonly status: 'uninitialized'; readonly poolAddress: Address; readonly sqrtPriceX96: 0n; } | { readonly blockNumber: bigint; readonly status: 'initialized'; readonly poolAddress: Address; readonly sqrtPriceX96: bigint; }; type V3AbsentPreflightSummary = Extract; type V3UninitializedPreflightSummary = Extract; type V3InitializedPreflightSummary = Extract; type PreparedV3CreatePoolAction = PreparedPoolAction<'v3-create', V3CreatePoolIdentity, V3CreateExpectation, V3AbsentPreflightSummary> & { readonly preflight: V3AbsentPreflightSummary; }; type PreparedV3InitializePoolAction = PreparedPoolAction<'v3-initialize', V3ExistingPoolIdentity, V3InitializeExpectation, V3UninitializedPreflightSummary> & { readonly preflight: V3UninitializedPreflightSummary; }; type PreparedV3CreateAndInitializeAction = PreparedPoolAction<'v3-create-and-initialize', V3PoolIdentity, V3InitializeExpectation, V3AbsentPreflightSummary | V3UninitializedPreflightSummary> & { readonly preflight: V3AbsentPreflightSummary | V3UninitializedPreflightSummary; }; type PreparedV3PoolAction = PreparedV3CreatePoolAction | PreparedV3InitializePoolAction | PreparedV3CreateAndInitializeAction; interface V3PoolActionSimulation extends PoolActionSimulation { readonly returnedPoolAddress: Address | null; } interface V3PoolCreatedEvidence { readonly poolAddress: Address; readonly token0: Address; readonly token1: Address; readonly fee: number; readonly tickSpacing: number; readonly logIndex: number; } interface V3PoolInitializedEvidence { readonly poolAddress: Address; readonly sqrtPriceX96: bigint; readonly tick: number; readonly logIndex: number; } interface V3ReceiptEvidence { readonly receiptStatus: 'success' | 'reverted'; readonly poolCreated: V3PoolCreatedEvidence | null; readonly initializations: readonly V3PoolInitializedEvidence[]; } type V3PoolActionVerification = PoolActionVerification; /** * Runtime validation for plans crossing JSON, UI/CLI, or signer boundaries. * It re-derives the exact target, value, and calldata from trusted capability * metadata plus the declared kind, key, and expectation. */ declare function validatePreparedV3PoolAction(value: unknown): V3LifecycleDeployment; /** Assertion-form companion for consumers that need TypeScript narrowing. */ declare function assertPreparedV3PoolAction(value: unknown): asserts value is PreparedV3PoolAction; /** Deserialize and fully validate a versioned V3 prepared action. */ declare function deserializePreparedV3PoolAction(serialized: string): PreparedV3PoolAction; //#endregion //#region src/pool-lifecycle/v3/key.d.ts /** Validate and canonicalize a V3 key without assuming a hard-coded fee tier. */ declare function canonicalizeV3PoolKey(input: V3PoolKeyInput): V3PoolKey; /** Ensure an initial price is bound to the same canonical token pair as a V3 key. */ declare function assertV3InitialPrice(key: V3PoolKey, price: V3InitialPrice): V3InitialPrice; //#endregion //#region src/pool-lifecycle/v3/inspect.d.ts interface InspectV3PoolParams { publicClient: PublicClient; deployment: V3LifecycleDeployment; key: V3PoolKeyInput; blockNumber?: bigint; } /** * Read a block-consistent V3 deployment and pool snapshot before building or * verifying a lifecycle transaction. */ declare function inspectV3Pool(params: InspectV3PoolParams): Promise; //#endregion //#region src/pool-lifecycle/v3/actions.d.ts interface V3BuildBaseParams { deployment: V3LifecycleDeployment; key: V3PoolKeyInput; } interface BuildV3CreatePoolTransactionParams extends V3BuildBaseParams { readonly preflight: V3AbsentPoolSnapshot; } interface BuildV3InitializePoolTransactionParams extends V3BuildBaseParams { readonly preflight: V3UninitializedPoolSnapshot; readonly initialPrice: V3InitialPrice; } interface BuildV3CreateAndInitializeTransactionParams extends Omit { readonly deployment: V3AtomicLifecycleDeployment; readonly preflight: V3AbsentPoolSnapshot | V3UninitializedPoolSnapshot; readonly initialPrice: V3InitialPrice; } interface PrepareV3CreateAndInitializeParams extends Omit { readonly deployment: V3AtomicLifecycleDeployment; initialPrice: V3InitialPrice; blockNumber?: bigint; } interface PrepareV3CreatePoolParams extends Omit { blockNumber?: bigint; } interface PrepareV3InitializePoolParams extends Omit { initialPrice: V3InitialPrice; blockNumber?: bigint; } type PrepareV3CreateAndInitializeResult = { readonly status: 'ready'; readonly snapshot: V3PoolSnapshot; readonly action: PreparedV3CreateAndInitializeAction; } | { readonly status: 'already-initialized-matching'; readonly snapshot: V3PoolSnapshot; readonly action: null; }; type PrepareV3CreatePoolResult = { readonly status: 'ready'; readonly snapshot: V3PoolSnapshot; readonly action: PreparedV3CreatePoolAction; } | { readonly status: 'already-exists'; readonly snapshot: Exclude; readonly action: null; }; type PrepareV3InitializePoolResult = { readonly status: 'ready'; readonly snapshot: V3UninitializedPoolSnapshot; readonly action: PreparedV3InitializePoolAction; } | { readonly status: 'already-initialized-matching'; readonly snapshot: Extract; readonly action: null; }; /** Build the low-level V3 factory create transaction without signing it. */ declare function buildV3CreatePoolTransaction(params: BuildV3CreatePoolTransactionParams): PreparedV3CreatePoolAction; /** Build a direct one-time V3 pool initialize transaction without signing it. */ declare function buildV3InitializePoolTransaction(params: BuildV3InitializePoolTransactionParams): PreparedV3InitializePoolAction; /** Build the canonical atomic create-and-initialize V3 periphery transaction. */ declare function buildV3CreateAndInitializeTransaction(params: BuildV3CreateAndInitializeTransactionParams): PreparedV3CreateAndInitializeAction; /** * Prepare only the factory-creation step. This is the first stage for * deployments without a configured atomic initializer and deliberately does * not claim that the irreversible initial price has been set. */ declare function prepareV3CreatePool(params: PrepareV3CreatePoolParams): Promise; /** * Prepare only the direct, one-time pool initialization step. Callers using a * factory-only deployment must mine and verify creation, re-inspect the pool, * and then call this function; the SDK does not conceal the intervening race. */ declare function prepareV3InitializePool(params: PrepareV3InitializePoolParams): Promise; /** * Safe default preparation flow for UI and CLI consumers. It returns no * transaction for an already initialized pool only when the exact price * matches, and rejects a conflicting existing price. */ declare function prepareV3CreateAndInitialize(params: PrepareV3CreateAndInitializeParams): Promise; //#endregion //#region src/pool-lifecycle/v3/simulate.d.ts interface SimulateV3PoolActionParams { publicClient: PublicClient; account: Address; action: PreparedV3PoolAction; /** Defaults to the current block. Historical simulation must be explicit. */ blockNumber?: bigint; } /** Simulate and estimate a prepared action with the exact eventual sender. */ declare function simulateV3PoolAction(params: SimulateV3PoolActionParams): Promise; //#endregion //#region src/pool-lifecycle/v3/verify.d.ts interface VerifyV3PoolActionParams { publicClient: PublicClient; action: PreparedV3PoolAction; receipt: TransactionReceipt; } /** Decode receipt evidence without making any RPC reads. */ declare function decodeV3PoolActionReceipt(action: PreparedV3PoolAction, receipt: TransactionReceipt): V3ReceiptEvidence; /** Compose receipt decoding with receipt-block deployment and state verification. */ declare function verifyV3PoolAction(params: VerifyV3PoolActionParams): Promise; //#endregion //#region src/pool-lifecycle/v4/key.d.ts declare const V4_DYNAMIC_FEE_FLAG = 8388608; declare const V4_MAX_STATIC_FEE = 1000000; declare const V4_MAX_TICK_SPACING = 32767; declare const V4_ALL_HOOK_MASK: bigint; declare const V4_ZERO_ADDRESS: `0x${string}`; /** Validate a complete PoolKey whose currencies are already canonically ordered. */ declare function validateV4PoolKey(value: V4PoolKey): V4PoolKey; /** * Validate and sort two currencies. Address zero is deliberately accepted and * sorts first because V4 represents the native currency as address(0). */ declare function canonicalizeV4PoolKey(value: V4PoolKeyInput): V4PoolKey; /** Return the exact PoolId used by PoolIdLibrary.toId. */ declare function getV4PoolId(key: V4PoolKey): Hex; declare function v4PoolKeysEqual(left: V4PoolKey, right: V4PoolKey): boolean; /** Validate price bounds and bind the price to the canonical PoolKey order. */ declare function assertV4InitialPrice(key: V4PoolKey, value: V4InitialPrice): V4InitialPrice; //#endregion //#region src/pool-lifecycle/v4/inspect.d.ts interface InspectV4PoolParams { readonly publicClient: PublicClient; readonly deployment: V4LifecycleDeployment; readonly key: V4PoolKeyInput; readonly blockNumber?: bigint; } /** Read PoolManager identity and pool state at one pinned block. */ declare function inspectV4Pool(params: InspectV4PoolParams): Promise; //#endregion //#region src/pool-lifecycle/v4/actions.d.ts interface BuildV4InitializePoolTransactionParams { readonly deployment: V4LifecycleDeployment; readonly key: V4PoolKeyInput; readonly initialPrice: V4InitialPrice; readonly preflight: V4UninitializedPoolSnapshot; } interface PrepareV4InitializeParams extends Omit { readonly initialPrice: V4InitialPrice; readonly blockNumber?: bigint; } type PrepareV4InitializeResult = { readonly status: 'ready'; readonly snapshot: V4UninitializedPoolSnapshot; readonly action: PreparedV4InitializePoolAction; } | { readonly status: 'already-initialized-matching'; readonly snapshot: V4InitializedPoolSnapshot; readonly action: null; }; /** Build a direct PoolManager.initialize transaction without signing it. */ declare function buildV4InitializePoolTransaction(params: BuildV4InitializePoolTransactionParams): PreparedV4InitializePoolAction; /** Inspect first, then return either a safe unsigned plan or a matching no-op. */ declare function prepareV4Initialize(params: PrepareV4InitializeParams): Promise; //#endregion //#region src/pool-lifecycle/v4/integrity.d.ts /** * Fully validate a signer-boundary V4 action and return its canonical frozen * capability. The target, value, PoolId, and calldata are all re-derived. */ declare function validatePreparedV4PoolAction(value: unknown): V4LifecycleDeployment; declare function assertPreparedV4PoolAction(value: unknown): asserts value is PreparedV4PoolAction; /** Deserialize the shared versioned envelope, then perform adapter validation. */ declare function deserializePreparedV4PoolAction(serialized: string): PreparedV4PoolAction; //#endregion //#region src/pool-lifecycle/v4/simulate.d.ts interface SimulateV4PoolActionParams { readonly publicClient: PublicClient; readonly account: Address; readonly action: PreparedV4PoolAction; /** Defaults to fresh state; historical simulation must be explicit. */ readonly blockNumber?: bigint; } /** Re-inspect, call, and estimate with the exact eventual sender and envelope. */ declare function simulateV4PoolAction(params: SimulateV4PoolActionParams): Promise; //#endregion //#region src/pool-lifecycle/v4/verify.d.ts interface VerifyV4PoolActionParams { readonly publicClient: PublicClient; readonly action: PreparedV4PoolAction; readonly receipt: TransactionReceipt; } /** Decode transaction-attributed PoolManager Initialize evidence without RPC reads. */ declare function decodeV4PoolActionReceipt(action: PreparedV4PoolAction, receipt: TransactionReceipt): V4ReceiptEvidence; /** Verify exact calldata, canonical receipt/event, and receipt-block StateView state. */ declare function verifyV4PoolAction(params: VerifyV4PoolActionParams): Promise; //#endregion export { AERODROME_PROTOCOLS, AERODROME_SLIPSTREAM_LIFECYCLE_DEPLOYMENTS, ALGEBRA_INTEGRAL_PROTOCOLS, ALGEBRA_INTEGRAL_V_2_0_PROTOCOLS, ALGEBRA_LIFECYCLE_DEPLOYMENTS, ALGEBRA_PROTOCOLS, AMMConfigType, AMMType, API_URLS, AerodromeSlipstreamLifecycleDeployment, AerodromeSlipstreamPoolActionSimulation, AerodromeSlipstreamPoolActionVerification, AerodromeSlipstreamPoolIdentity, AerodromeSlipstreamPoolKey, AerodromeSlipstreamPoolKeyInput, AerodromeSlipstreamPoolSnapshot, AerodromeSlipstreamReceiptEvidence, AlgebgraHookBeacons, AlgebraInitialPrice, AlgebraIntegral21QuoteParams, AlgebraLifecycleAdapter, AlgebraLifecycleDeployment, AlgebraLifecycleProvenance, AlgebraLifecycleVariant, AlgebraPoolActionSimulation, AlgebraPoolActionVerification, AlgebraPoolIdentity, AlgebraPoolKey, AlgebraPoolKeyInput, AlgebraPoolSnapshot, AlgebraPreflightSummary, AlgebraQuoteParams, AlgebraReceiptEvidence, AlgebraVaultDetails, ApiPageInfo, ApiVaultFilter, AprFilter, AprResponse, BaseQuoteParams, BaseVaultDetails, BlackholeAprDetailedParams, BlackholeAprDetailedResponse, BlackholeSnapshotAnalysis, BuildAlgebraCreatePoolTransactionParams, BuildAlgebraInitializePoolTransactionParams, BuildV3CreateAndInitializeTransactionParams, BuildV3CreatePoolTransactionParams, BuildV3InitializePoolTransactionParams, BuildV4InitializePoolTransactionParams, CURRENT_V4_LIFECYCLE_DEPLOYMENTS, CalculateLimitPriceParams, CalculateSwapAmountParams, CanonicalCurrencyInitialPrice, CanonicalCurrencyPair, CanonicalErc20Pair, CanonicalInitialPrice, Chain, ChainId, ClaimProofEdge, ClaimProofNode, ClaimProofsPageInfo, ClaimProofsResponse, ClaimRewardEdge, ClaimRewardNode, ClaimRewardParams, ClaimRewardsConnection, ClaimRewardsParams, Contract, ContractAddresses, ContractName, DIRECTIONAL_ALGEBRA_PROTOCOLS, DefaultFeeManagerConfigParams, DeprecationData, EncodedEvmTransaction, EstimateLpTokensParams, ExactCurrencyPrice, ExactFraction, ExactPrice, FEE_MANAGER_ABI, Fee, FeeManagerClient, FeeManagerConfigParams, FeeWithdrawalParams, FormattedRoute, GetRewardParams, GetSupportedChainsOptions, GetVaultExecutionContextParams, GlobalStateABI, type GraphQLPoolData, type GraphQLTokenData, InspectAlgebraCustomPoolEntryPointParams, InspectAlgebraPoolParams, InspectV3PoolParams, InspectV4PoolParams, LimitPoolState, LpPriceResponse, LpTokenEstimationResponse, MAX_SQRT_RATIO, MIN_SQRT_RATIO, MultiPositionManagers, MultiVaultFeeWithdrawalParams, MultipleFeeWithdrawalParams, NetworkConfig, NetworkData, Networks, POOLSHARK_PROTOCOLS, POOL_LIFECYCLE_DEPLOYMENTS, PREPARED_POOL_ACTION_SERIALIZATION_VERSION, PageInfo, PendingRewardsParams, PendingRewardsResponse, PoolActionOutcome, PoolActionSimulation, PoolActionVerification, PoolClient, PoolData, PoolEdge, PoolFilter, PoolLifecycleDeploymentRegistry, PoolLifecycleDeploymentResult, PoolLifecycleError, PoolLifecycleErrorCode, PoolNode, PoolSharkGlobalState, PoolSlot0, PoolsConnection, PoolsharkStructs, PrepareAlgebraPoolResult, PrepareV3CreateAndInitializeParams, PrepareV3CreateAndInitializeResult, PrepareV3CreatePoolParams, PrepareV3CreatePoolResult, PrepareV3InitializePoolParams, PrepareV3InitializePoolResult, PrepareV4InitializeParams, PrepareV4InitializeResult, PreparedAerodromeSlipstreamCreateAndInitializeAction, PreparedAlgebraCreatePoolAction, PreparedAlgebraInitializePoolAction, PreparedAlgebraPoolAction, PreparedPoolAction, PreparedV3CreateAndInitializeAction, PreparedV3CreatePoolAction, PreparedV3InitializePoolAction, PreparedV3PoolAction, PreparedV4InitializePoolAction, PreparedV4PoolAction, Protocol, ProtocolContractAddresses, ProtocolDetails, ProtocolInfo, QuickSwapQuoterV2, QuoteParams, QuoterFunctionArgs, QuoterV2ABI, QuoterV2AlgebgraIntegral, QuoterV2AlgebgraIntegral21, QuoterV2Factory, QuoterV2Shadow, QuoterV2Thick, ResolvePoolLifecycleDeploymentParams, ResolveV3LifecycleDeploymentParams, ResolveV4LifecycleDeploymentParams, Reward, RewardBalance, RewardSummary, RouteShortcut, SHADOW_PROTOCOLS, ShadowQuoteParams, SimulateAlgebraPoolActionParams, SimulateSwapParams, SimulateV3PoolActionParams, SimulateV4PoolActionParams, SingleAssetDepositClient, SingleAssetDepositParams, SingleAssetDepositPreview, Slot0, SmartRewarderContract, SmartRewards, StabilityVaultInfo, StakeParams, Staking, StakingClient, StakingPool, StakingPoolFilter, StakingProtocol, SteerClient, SteerConfig, SteerResponse, SteerSupportedChains, StrykePositionManagers, SubgraphClient, SubgraphResponse, SubgraphVaultClient, SubgraphVaultDetails, SubgraphVaultDetailsWithLpData, SubgraphVaultPosition, SupportedChain, SupportedChainFeatures, SupportedChainsFeature, SupportedChainsInclude, SupportedPoolLifecycleDeployment, SupportedProtocol, SwapAmountResponse, SwapSimulationResponse, TEST_UNISWAP_JIT_HOOK_BEACON, ThickQuoteParams, Token0, Token1, TokenData, TokenEdge, TokenFilter, TokenNode, TokenValueParams, TokenValueResponse, TokensConnection, UNISWAP_V4_BEACON_NAMES, UNISWAP_V4_HOOK_BEACON_NAMES, UNISWAP_V4_NO_ORACLE_BEACON, UniswapHookBeacons, UniswapQuoteParams, UniswapV3PoolABI, UniswapV3QuoterABI, UniswapV4Beacons, UnsupportedPoolLifecycleDeployment, V3AbsentPoolSnapshot, V3AbsentPreflightSummary, V3AtomicLifecycleDeployment, V3CreateExpectation, V3CreatePoolIdentity, V3ExistingPoolIdentity, V3ExistingPoolSnapshot, V3FactoryLifecycleDeployment, V3InitialPrice, V3InitializeExpectation, V3InitializedPoolSnapshot, V3InitializedPreflightSummary, V3LifecycleDeployment, V3LifecycleDeploymentProvenance, V3PoolActionKind, V3PoolActionSimulation, V3PoolActionVerification, V3PoolCreatedEvidence, V3PoolIdentity, V3PoolInitializedEvidence, V3PoolKey, V3PoolKeyInput, V3PoolSnapshot, V3PoolStatus, V3PreflightSummary, V3ReceiptEvidence, V3UninitializedPoolSnapshot, V3UninitializedPreflightSummary, V3_CONFIG_PROTOCOLS, V3_LIFECYCLE_DEPLOYMENTS, V4InitialPrice, V4InitializeEvidence, V4InitializeExpectation, V4InitializedPoolSnapshot, V4LifecycleDeployment, V4LifecycleDeploymentByIdRegistry, V4LifecycleDeploymentId, V4LifecycleDeploymentProvenance, V4PoolActionSimulation, V4PoolActionVerification, V4PoolIdentity, V4PoolKey, V4PoolKeyInput, V4PoolSnapshot, V4ReceiptEvidence, V4UninitializedPoolSnapshot, V4UninitializedPreflightSummary, V4_ALL_HOOK_MASK, V4_DYNAMIC_FEE_FLAG, V4_LIFECYCLE_DEPLOYMENTS, V4_LIFECYCLE_DEPLOYMENTS_BY_ID, V4_MAX_STATIC_FEE, V4_MAX_TICK_SPACING, V4_ZERO_ADDRESS, VAULT_FEES_ABI, VaultAllowanceParams, VaultApproveParams, VaultApr, VaultBalanceParams, VaultClient, VaultDetails, VaultDetailsResponse, VaultEdge, VaultExecutionContext, VaultExecutionDataProvenance, VaultExecutionPoolFamily, VaultExecutionPoolKey, VaultExecutionPosition, VaultFetchOptions, VaultFilter, VaultNode, VaultTokens, VaultsConnection, VerifiedAerodromeSlipstreamPoolIdentity, VerifyAlgebraPoolActionParams, VerifyV3PoolActionParams, VerifyV4PoolActionParams, WithdrawParams, abis, aerodromeSlipstreamFactoryAbi, aerodromeSlipstreamPoolAbi, algebraCustomPoolEntryPointAbi, algebraDirectionalPoolStateAbi, algebraIntegralPairFactoryAbi, algebraIntegralPluginDataFactoryAbi, algebraIntegralPoolStateAbi, algebraLegacyPoolStateAbi, algebraPairFactoryAbi, algebraPoolBaseAbi, apechainAddresses, arbitrumAddresses, arbitrumgoerliAddresses, arthswapConfig, assertAerodromeSlipstreamInitialPrice, assertAlgebraInitialPrice, assertLatestAerodromeSlipstreamLifecycleDeployment, assertPreparedV3PoolAction, assertPreparedV4PoolAction, assertV3InitialPrice, assertV4InitialPrice, astarAddresses, astarzkevmAddresses, avalancheAddresses, bartiotestAddresses, baseAddresses, baseSwapConfig, basexConfig, beraAddresses, bittensorAddresses, bittensorUniV3Config, blastAddresses, bscAddresses, buildAerodromeSlipstreamCreateAndInitializeTransaction, buildAlgebraCreatePoolTransaction, buildAlgebraInitializePoolTransaction, buildV3CreateAndInitializeTransaction, buildV3CreatePoolTransaction, buildV3InitializePoolTransaction, buildV4InitializePoolTransaction, calculateLimitPrice, calculateSwapAmount, camelotConfig, canonicalizeAerodromeSlipstreamPoolKey, canonicalizeAlgebraPoolKey, canonicalizeV3PoolKey, canonicalizeV4PoolKey, celoAddresses, chainIdToName, chainNameToId, crustConfig, decodeAerodromeSlipstreamPoolActionReceipt, decodeAlgebraPoolActionReceipt, decodeV3PoolActionReceipt, decodeV4PoolActionReceipt, deprecatedBundlesURL, deserializePreparedAerodromeSlipstreamPoolAction, deserializePreparedAlgebraPoolAction, deserializePreparedPoolAction, deserializePreparedV3PoolAction, deserializePreparedV4PoolAction, determineSwapDirection, encodeCurrencyInitialSqrtPriceX96, encodeInitialSqrtPriceX96, encodeSqrtRatioX96, equilibreConfig, erc1155Abi, erc20Abi, erc721Abi, estimateLpTokens, ethAddresses, evmosAddresses, fantomAddresses, fenixConfig, filecoinAddresses, flareAddresses, forgeConfig, fusionxConfig, getAmmConfig, getAmmConfigByChainId, getApiUrl, getBeaconNameByProtocol, getContractAddressByChainIdAndContractName, getExpectedParamType, getFactoryAddress, getInitCodeHash, getNFTManagerAddress, getNetworkByChainId, getPoolHelperByChainId, getPoolSlot0, getProtcolTypeByAmmType, getProtocolBySubgraph, getProtocolConfigByBeacon, getProtocolContractAddresses, getProtocolInfoByChainId, getProtocolInfoByName, getProtocolSubgraphURL, getProtocolTypeByBeacon, getProtocolsForChainId, getQuoterV2Address, getStabilityVaultsPeripheryAddress, getStabilityVaultsSubgraphUrl, getSubgraphUrlByChainId, getSupportedChainByChainId, getSupportedChainIds, getSupportedChains, getSwapRouterAddress, getTheGraphResolverUrl, getTickLensAddress, getUniswapV4BeaconSupportedChains, getV4LifecycleDeploymentId, getV4PoolId, getVaultExecutionContext, getVaultReserves, glyphConfig, goerliAddresses, hemiAddresses, henjinConfig, herculesConfig, horizaConfig, inspectAerodromeSlipstreamPool, inspectAlgebraCustomPoolEntryPoint, inspectAlgebraPool, inspectV3Pool, inspectV4Pool, integerSqrt, isAerodromeVault, isAlgebraDirectionProtocol, isAlgebraIntegral21QuoteParams, isAlgebraIntegralProtocol, isAlgebraIntegralV2Protocol, isAlgebraProtocol, isAlgebraProtocolBySubgraph, isAlgebraQuoteParams, isPoolSharkProtocol, isShadowProtocol, isShadowQuoteParams, isSingleAssetDepositSupported, isThickQuoteParams, isThickV2Protocol, isUniswapQuoteParams, isUniswapV4Beacon, isUniswapV4BeaconAvailableOnChain, isUniswapV4HookBeacon, isValidStakingProtocol, katanaAddresses, katanaConfig, kavaAddresses, kimConfig, kinetixConfig, lineaAddresses, linehubConfig, localhostAddresses, lynexConfig, maiaConfig, mantaAddresses, mantleAddresses, metaVaultConfig, metisAddresses, modeAddresses, moonbeamAddresses, mumbaiAddresses, nestVaultConfig, networks, normalizeProtocol, novaswapConfig, okxtestnetAddresses, optimismAddresses, optimismgoerliAddresses, pancakeSwapConfig, parseExactDecimal, polygonAddresses, polyzkevmAddresses, poolsharkConfig, prepareAerodromeSlipstreamPool, prepareAlgebraPool, prepareLatestAerodromeSlipstreamPool, prepareV3CreateAndInitialize, prepareV3CreatePool, prepareV3InitializePool, prepareV4Initialize, quickSwapAlgebraConfig, quickSwapConfig, quickSwapIntegralConfig, quickSwapUniv3Config, resolveAerodromeSlipstreamLifecycleDeployment, resolveAlgebraLifecycleDeployment, resolveCurrentV4LifecycleDeployment, resolveLatestAerodromeSlipstreamLifecycleDeployment, resolvePoolLifecycleDeployment, resolveV3LifecycleDeployment, resolveV4LifecycleDeployment, resolveV4LifecycleDeploymentById, retroConfig, robinhoodAddresses, rootstockAddresses, sagaAddresses, scrollAddresses, seiAddresses, serializePreparedPoolAction, shadowConfig, shouldValidateUniswapV4VaultHook, simulateAerodromeSlipstreamPoolAction, simulateAlgebraPoolAction, simulateSwap, simulateV3PoolAction, simulateV4PoolAction, singleTokenDepositAbi, soneiumAddresses, sonicAddresses, sortErc20Pair, sortEvmCurrencyPair, spark32Config, sparkConfig, stabilityVaultsConfig, steerSubgraphConfig, supswapConfig, sushiConfig, swapmodeConfig, swapsicleConfig, taikoAddresses, telosAddresses, thenaConfig, thickConfig, thrusterConfig, thundercoreAddresses, uniAddresses, uniswapConfig, v3FactoryAbi, v3PoolAbi, v3PoolInitializerAbi, v4PoolKeysEqual, v4PoolManagerAbi, v4StateViewAbi, validateAerodromeSlipstreamLifecycleDeployment, validateAlgebraLifecycleDeployment, validatePreparedAerodromeSlipstreamPoolAction, validatePreparedAlgebraPoolAction, validatePreparedV3PoolAction, validatePreparedV4PoolAction, validateQuoteParams, validateSqrtPriceX96, validateSwapParams, validateV4LifecycleDeployment, validateV4PoolKey, verifyAerodromeSlipstreamPoolAction, verifyAlgebraPoolAction, verifyV3PoolAction, verifyV4PoolAction, xlayerAddresses, zetaAddresses, zircuitAddresses }; //# sourceMappingURL=index.d.mts.map