import { Observable } from 'rxjs'; import { PriceToken, PriceTokenAmount, Token } from "../../../common/tokens"; import { BlockchainName, EvmBlockchainName } from "../../../core/blockchain/models/blockchain-name"; import { ProviderAddress } from "../../../core/sdk/models/provider-address"; import { OnChainManagerCalculationOptions } from "./models/on-chain-manager-calculation-options"; import { OnChainReactivelyCalculatedTradeData } from "./models/on-chain-reactively-calculated-trade-data"; import { WrappedOnChainTradeOrNull } from "./models/wrapped-on-chain-trade-or-null"; import { OnChainCalculationOptions } from "./providers/common/models/on-chain-calculation-options"; import { EvmOnChainTrade } from "./providers/common/on-chain-trade/evm-on-chain-trade/evm-on-chain-trade"; /** * Contains methods to calculate on-chain trades. */ export declare class OnChainManager { private readonly providerAddress; private static readonly defaultCalculationTimeout; private static readonly onChainProxyService; /** * List of all on-chain trade providers, combined by blockchains. */ private readonly tradeProviders; private readonly deflationTokenManager; private readonly AGGREGATORS; private readonly LIFI_DISABLED_PROVIDERS; constructor(providerAddress: ProviderAddress); calculateTradeReactively(fromToken: Token | { address: string; blockchain: BlockchainName; } | PriceToken, fromAmount: string | number, toToken: Token | string | PriceToken, options?: OnChainManagerCalculationOptions): Observable; /** * Calculates on-chain trades, sorted by output amount. * * @example * ```ts * const blockchain = BLOCKCHAIN_NAME.ETHEREUM; * // ETH * const fromTokenAddress = '0x0000000000000000000000000000000000000000'; * const fromAmount = 1; * // USDT * const toTokenAddress = '0xdac17f958d2ee523a2206206994597c13d831ec7'; * * const trades = await sdk.onChainManager.calculateTrade( * { blockchain, address: fromTokenAddress }, * fromAmount, * toTokenAddress * ); * const bestTrade = trades[0]; * * trades.forEach(trade => { * if (trade instanceof OnChainTrade) { * console.log(trade.type, `to amount: ${trade.to.tokenAmount.toFormat(3)}`) * } * }) * ``` * * @param fromToken Token to sell. * @param fromAmount Amount to sell. * @param toToken Token to get. * @param options Additional options. * @returns List of calculated on-chain trades. */ calculateTrade(fromToken: Token | { address: string; blockchain: BlockchainName; } | PriceToken, fromAmount: string | number, toToken: Token | string | PriceToken, options?: OnChainManagerCalculationOptions): Promise; private getFullOptions; private calculateTradeFromTokens; private isDeflationToken; private calculateDexes; private calculateLifiTrade; static getWrapTrade(from: PriceTokenAmount, to: PriceToken, _options: OnChainCalculationOptions): Promise; private getProviderCalculationPromise; private getAggregatorsCalculationPromises; private getCalcPromise; private handleTradePromise; private isDisabledAggregator; private getWrappedWrapTrade; }