import { type Address } from "viem"; import type { OnchainSDK } from "../OnchainSDK.js"; import { AbstractRouterContract } from "./AbstractRouterContract.js"; import type { FindBestClosePathProps, FindClaimAllRewardsProps, FindOneTokenPathProps, FindOpenStrategyPathProps, IRouterContract, OpenStrategyResult, RouterCloseResult, RouterResult, RouterRewardsResult } from "./types.js"; declare const abi: readonly [{ readonly type: "constructor"; readonly inputs: readonly [{ readonly name: "owner"; readonly type: "address"; readonly internalType: "address"; }]; readonly stateMutability: "nonpayable"; }, { readonly type: "function"; readonly name: "componentAddressByType"; readonly inputs: readonly [{ readonly name: ""; readonly type: "bytes32"; readonly internalType: "bytes32"; }]; readonly outputs: readonly [{ readonly name: ""; readonly type: "address"; readonly internalType: "address"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "contractType"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "bytes32"; readonly internalType: "bytes32"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "createOpenStrategyPathTask"; readonly inputs: readonly [{ readonly name: "creditManager"; readonly type: "address"; readonly internalType: "contract ICreditManagerV3"; }, { readonly name: "target"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "slippage"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "tData"; readonly type: "tuple[]"; readonly internalType: "struct TokenData[]"; readonly components: readonly [{ readonly name: "token"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "balance"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "leftoverBalance"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "numSplits"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "claimRewards"; readonly type: "bool"; readonly internalType: "bool"; }]; }]; readonly outputs: readonly [{ readonly name: "task"; readonly type: "tuple"; readonly internalType: "struct StrategyPathTask"; readonly components: readonly [{ readonly name: "creditAccount"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "graph"; readonly type: "tuple"; readonly internalType: "struct Graph"; readonly components: readonly [{ readonly name: "vertices"; readonly type: "tuple[]"; readonly internalType: "struct Vertex[]"; readonly components: readonly [{ readonly name: "token"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "balance"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "leftoverBalance"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "numSplits"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "currentOptimalEdge"; readonly type: "uint256"; readonly internalType: "uint256"; }]; }, { readonly name: "edges"; readonly type: "tuple[]"; readonly internalType: "struct Edge[]"; readonly components: readonly [{ readonly name: "id"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "tokenIn"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "tokenOut"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "adapter"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "worker"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "extraData"; readonly type: "bytes"; readonly internalType: "bytes"; }, { readonly name: "amountInTotal"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "amountOutTotal"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "amountInCurrent"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "amountOutCurrent"; readonly type: "uint256"; readonly internalType: "uint256"; }]; }]; }, { readonly name: "target"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "adapters"; readonly type: "address[]"; readonly internalType: "address[]"; }, { readonly name: "slippage"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "force"; readonly type: "bool"; readonly internalType: "bool"; }, { readonly name: "initTargetBalance"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "calls"; readonly type: "tuple[]"; readonly internalType: "struct MultiCall[]"; readonly components: readonly [{ readonly name: "target"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "callData"; readonly type: "bytes"; readonly internalType: "bytes"; }]; }]; }]; readonly stateMutability: "nonpayable"; }, { readonly type: "function"; readonly name: "createStrategyPathTask"; readonly inputs: readonly [{ readonly name: "creditAccount"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "target"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "slippage"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "force"; readonly type: "bool"; readonly internalType: "bool"; }, { readonly name: "tData"; readonly type: "tuple[]"; readonly internalType: "struct TokenData[]"; readonly components: readonly [{ readonly name: "token"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "balance"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "leftoverBalance"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "numSplits"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "claimRewards"; readonly type: "bool"; readonly internalType: "bool"; }]; }]; readonly outputs: readonly [{ readonly name: "task"; readonly type: "tuple"; readonly internalType: "struct StrategyPathTask"; readonly components: readonly [{ readonly name: "creditAccount"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "graph"; readonly type: "tuple"; readonly internalType: "struct Graph"; readonly components: readonly [{ readonly name: "vertices"; readonly type: "tuple[]"; readonly internalType: "struct Vertex[]"; readonly components: readonly [{ readonly name: "token"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "balance"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "leftoverBalance"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "numSplits"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "currentOptimalEdge"; readonly type: "uint256"; readonly internalType: "uint256"; }]; }, { readonly name: "edges"; readonly type: "tuple[]"; readonly internalType: "struct Edge[]"; readonly components: readonly [{ readonly name: "id"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "tokenIn"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "tokenOut"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "adapter"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "worker"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "extraData"; readonly type: "bytes"; readonly internalType: "bytes"; }, { readonly name: "amountInTotal"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "amountOutTotal"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "amountInCurrent"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "amountOutCurrent"; readonly type: "uint256"; readonly internalType: "uint256"; }]; }]; }, { readonly name: "target"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "adapters"; readonly type: "address[]"; readonly internalType: "address[]"; }, { readonly name: "slippage"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "force"; readonly type: "bool"; readonly internalType: "bool"; }, { readonly name: "initTargetBalance"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "calls"; readonly type: "tuple[]"; readonly internalType: "struct MultiCall[]"; readonly components: readonly [{ readonly name: "target"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "callData"; readonly type: "bytes"; readonly internalType: "bytes"; }]; }]; }]; readonly stateMutability: "nonpayable"; }, { readonly type: "function"; readonly name: "futureRouter"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "address"; readonly internalType: "address"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "getAdapters"; readonly inputs: readonly [{ readonly name: "creditManager"; readonly type: "address"; readonly internalType: "contract ICreditManagerV3"; }]; readonly outputs: readonly [{ readonly name: "result"; readonly type: "address[]"; readonly internalType: "address[]"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "getDefaultTokenData"; readonly inputs: readonly [{ readonly name: "creditAccount"; readonly type: "address"; readonly internalType: "address"; }]; readonly outputs: readonly [{ readonly name: "tData"; readonly type: "tuple[]"; readonly internalType: "struct TokenData[]"; readonly components: readonly [{ readonly name: "token"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "balance"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "leftoverBalance"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "numSplits"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "claimRewards"; readonly type: "bool"; readonly internalType: "bool"; }]; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "isRouterConfigurator"; readonly inputs: readonly [{ readonly name: "account"; readonly type: "address"; readonly internalType: "address"; }]; readonly outputs: readonly [{ readonly name: ""; readonly type: "bool"; readonly internalType: "bool"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "knownComponentTypes"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: "knownTypes"; readonly type: "bytes32[]"; readonly internalType: "bytes32[]"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "migrateRouterComponents"; readonly inputs: readonly [{ readonly name: "_prevRouter"; readonly type: "address"; readonly internalType: "address"; }]; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; }, { readonly type: "function"; readonly name: "owner"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "address"; readonly internalType: "address"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "processClaims"; readonly inputs: readonly [{ readonly name: "creditAccount"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "tData"; readonly type: "tuple[]"; readonly internalType: "struct TokenData[]"; readonly components: readonly [{ readonly name: "token"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "balance"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "leftoverBalance"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "numSplits"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "claimRewards"; readonly type: "bool"; readonly internalType: "bool"; }]; }]; readonly outputs: readonly [{ readonly name: "calls"; readonly type: "tuple[]"; readonly internalType: "struct MultiCall[]"; readonly components: readonly [{ readonly name: "target"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "callData"; readonly type: "bytes"; readonly internalType: "bytes"; }]; }]; readonly stateMutability: "nonpayable"; }, { readonly type: "function"; readonly name: "renounceOwnership"; readonly inputs: readonly []; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; }, { readonly type: "function"; readonly name: "routeManyToOne"; readonly inputs: readonly [{ readonly name: "creditAccount"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "target"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "slippage"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "tData"; readonly type: "tuple[]"; readonly internalType: "struct TokenData[]"; readonly components: readonly [{ readonly name: "token"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "balance"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "leftoverBalance"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "numSplits"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "claimRewards"; readonly type: "bool"; readonly internalType: "bool"; }]; }]; readonly outputs: readonly [{ readonly name: ""; readonly type: "tuple"; readonly internalType: "struct RouterResult"; readonly components: readonly [{ readonly name: "amount"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "minAmount"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "calls"; readonly type: "tuple[]"; readonly internalType: "struct MultiCall[]"; readonly components: readonly [{ readonly name: "target"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "callData"; readonly type: "bytes"; readonly internalType: "bytes"; }]; }]; }]; readonly stateMutability: "nonpayable"; }, { readonly type: "function"; readonly name: "routeOneToOne"; readonly inputs: readonly [{ readonly name: "creditAccount"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "tokenIn"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "amount"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "target"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "slippage"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "numSplits"; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly outputs: readonly [{ readonly name: ""; readonly type: "tuple"; readonly internalType: "struct RouterResult"; readonly components: readonly [{ readonly name: "amount"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "minAmount"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "calls"; readonly type: "tuple[]"; readonly internalType: "struct MultiCall[]"; readonly components: readonly [{ readonly name: "target"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "callData"; readonly type: "bytes"; readonly internalType: "bytes"; }]; }]; }]; readonly stateMutability: "nonpayable"; }, { readonly type: "function"; readonly name: "routeOneToOneDiff"; readonly inputs: readonly [{ readonly name: "creditAccount"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "tokenIn"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "balance"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "leftoverBalance"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "target"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "slippage"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "numSplits"; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly outputs: readonly [{ readonly name: ""; readonly type: "tuple"; readonly internalType: "struct RouterResult"; readonly components: readonly [{ readonly name: "amount"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "minAmount"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "calls"; readonly type: "tuple[]"; readonly internalType: "struct MultiCall[]"; readonly components: readonly [{ readonly name: "target"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "callData"; readonly type: "bytes"; readonly internalType: "bytes"; }]; }]; }]; readonly stateMutability: "nonpayable"; }, { readonly type: "function"; readonly name: "routeOpenManyToOne"; readonly inputs: readonly [{ readonly name: "creditManager"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "target"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "slippage"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "tData"; readonly type: "tuple[]"; readonly internalType: "struct TokenData[]"; readonly components: readonly [{ readonly name: "token"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "balance"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "leftoverBalance"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "numSplits"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "claimRewards"; readonly type: "bool"; readonly internalType: "bool"; }]; }]; readonly outputs: readonly [{ readonly name: ""; readonly type: "tuple"; readonly internalType: "struct RouterResult"; readonly components: readonly [{ readonly name: "amount"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "minAmount"; readonly type: "uint256"; readonly internalType: "uint256"; }, { readonly name: "calls"; readonly type: "tuple[]"; readonly internalType: "struct MultiCall[]"; readonly components: readonly [{ readonly name: "target"; readonly type: "address"; readonly internalType: "address"; }, { readonly name: "callData"; readonly type: "bytes"; readonly internalType: "bytes"; }]; }]; }]; readonly stateMutability: "nonpayable"; }, { readonly type: "function"; readonly name: "routingManager"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "address"; readonly internalType: "contract IRoutingManager"; }]; readonly stateMutability: "view"; }, { readonly type: "function"; readonly name: "setFutureRouter"; readonly inputs: readonly [{ readonly name: "_futureRouter"; readonly type: "address"; readonly internalType: "address"; }]; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; }, { readonly type: "function"; readonly name: "setPathComponent"; readonly inputs: readonly [{ readonly name: "componentAddress"; readonly type: "address"; readonly internalType: "address"; }]; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; }, { readonly type: "function"; readonly name: "setPathComponentBatch"; readonly inputs: readonly [{ readonly name: "componentAddresses"; readonly type: "address[]"; readonly internalType: "address[]"; }]; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; }, { readonly type: "function"; readonly name: "transferOwnership"; readonly inputs: readonly [{ readonly name: "newOwner"; readonly type: "address"; readonly internalType: "address"; }]; readonly outputs: readonly []; readonly stateMutability: "nonpayable"; }, { readonly type: "function"; readonly name: "version"; readonly inputs: readonly []; readonly outputs: readonly [{ readonly name: ""; readonly type: "uint256"; readonly internalType: "uint256"; }]; readonly stateMutability: "view"; }, { readonly type: "event"; readonly name: "OwnershipTransferred"; readonly inputs: readonly [{ readonly name: "previousOwner"; readonly type: "address"; readonly indexed: true; readonly internalType: "address"; }, { readonly name: "newOwner"; readonly type: "address"; readonly indexed: true; readonly internalType: "address"; }]; readonly anonymous: false; }, { readonly type: "event"; readonly name: "RouterComponentUpdate"; readonly inputs: readonly [{ readonly name: ""; readonly type: "bytes32"; readonly indexed: true; readonly internalType: "bytes32"; }, { readonly name: ""; readonly type: "address"; readonly indexed: true; readonly internalType: "address"; }, { readonly name: "version"; readonly type: "uint256"; readonly indexed: false; readonly internalType: "uint256"; }]; readonly anonymous: false; }, { readonly type: "event"; readonly name: "SetFutureRouter"; readonly inputs: readonly [{ readonly name: ""; readonly type: "address"; readonly indexed: true; readonly internalType: "address"; }]; readonly anonymous: false; }, { readonly type: "error"; readonly name: "UnsupportedRouterComponent"; readonly inputs: readonly [{ readonly name: ""; readonly type: "address"; readonly internalType: "address"; }]; }]; type abi = typeof abi; /** * V3.10 implementation of the {@link IRouterContract} interface. * * Uses the on-chain Gearbox router to find optimal multi-hop swap * paths, splitting large positions across multiple routes to reduce * price impact. **/ export declare class RouterV310Contract extends AbstractRouterContract implements IRouterContract { #private; constructor(sdk: OnchainSDK, address: Address, version: number); /** * {@inheritDoc IRouterContract.findOneTokenPath} **/ findOneTokenPath(props: FindOneTokenPathProps): Promise; /** * {@inheritDoc IRouterContract.findOpenStrategyPath} **/ findOpenStrategyPath(props: FindOpenStrategyPathProps): Promise; /** * {@inheritDoc IRouterContract.findClaimAllRewards} **/ findClaimAllRewards(props: FindClaimAllRewardsProps): Promise; /** * {@inheritDoc IRouterContract.findBestClosePath} **/ findBestClosePath(props: FindBestClosePathProps): Promise; /** * Override the number of route splits used when swapping a specific token. * * @param token - Token address to configure. * @param numSplits - Number of parallel route splits. * @internal **/ setNumSplits(token: Address, numSplits: bigint): void; /** * Set the default number of route splits applied to the highest-value * token in each swap. * * @param numSplits - Default number of parallel route splits. * @internal **/ setDefaultNumSplits(numSplits: bigint): void; } export {};