import { Token, TradeType } from '@uniswap/sdk-core'; import { Pool, Route } from '@uniswap/v3-sdk'; import { JsonRpcProvider } from 'ethers'; import { CoinAmount, ERC20 } from '../types'; import { QuoteResult } from './getQuotesForRoutes'; import type { Multicall } from '../contracts/types'; import { BlockTag } from './multicall'; export type RoutingContracts = { multicall: string; coreFactory: string; quoter: string; }; export declare class Router { provider: JsonRpcProvider; multicallContract: Multicall; routingTokens: ERC20[]; routingContracts: RoutingContracts; constructor(provider: JsonRpcProvider, multicallContract: Multicall, routingTokens: ERC20[], routingContracts: RoutingContracts); findOptimalRoute(amountSpecified: CoinAmount, otherToken: ERC20, tradeType: TradeType, maxHops?: number, blockTag?: BlockTag): Promise; private getBestQuoteFromRoutes; private bestQuoteForAmountIn; private bestQuoteForAmountOut; private determineERC20InAndERC20Out; } export declare const generateAllAcyclicPaths: (tokenIn: ERC20, tokenOut: ERC20, pools: Pool[], maxHops: number, currentRoute?: Pool[], routes?: Route[], startTokenIn?: ERC20) => Route[];