UNPKG

rubic-sdk-next

Version:
63 lines (62 loc) 2.6 kB
import BigNumber from 'bignumber.js'; import { PriceToken, Token } from '../../../common/tokens'; import { BlockchainName } from '../../../core/blockchain/models/blockchain-name'; import { ProviderAddress } from '../../../core/sdk/models/provider-address'; import { CrossChainManagerCalculationOptions } from './models/cross-chain-manager-options'; import { WrappedCrossChainTrade } from './providers/common/models/wrapped-cross-chain-trade'; /** * Contains method to calculate best cross-chain trade. */ export declare class CrossChainManager { private readonly providerAddress; constructor(providerAddress: ProviderAddress); /** * Calculates cross-chain trades and sorts them by exchange courses. * Wrapped trade object may contain error, but sometimes course can be * calculated even with thrown error (e.g. min/max amount error). * * @example * ```ts * const fromBlockchain = BLOCKCHAIN_NAME.ETHEREUM; * // ETH * const fromTokenAddress = '0x0000000000000000000000000000000000000000'; * const fromAmount = 1; * const toBlockchain = BLOCKCHAIN_NAME.BINANCE_SMART_CHAIN; * // BUSD * const toTokenAddress = '0xe9e7cea3dedca5984780bafc599bd69add087d56'; * * const wrappedTrades = await sdk.crossChainManager.calculateTrade( * { blockchain: fromBlockchain, address: fromTokenAddress }, * fromAmount, * { blockchain: toBlockchain, address: toTokenAddress } * ); * const bestTrade = wrappedTrades[0]; * * wrappedTrades.forEach(wrappedTrade => { * if (wrappedTrade.trade) { * console.log(wrappedTrade.tradeType, `to amount: ${wrappedTrade.trade.to.tokenAmount.toFormat(3)}`)); * } * if (wrappedTrade.error) { * console.error(wrappedTrade.tradeType, 'error: wrappedTrade.error'); * } * }); * * ``` * * @param fromToken Token to sell. * @param fromAmount Amount to sell. * @param toToken Token to get. * @param options Additional options. * @returns Array of sorted wrapped cross-chain trades with possible errors. */ calculateTrade(fromToken: Token | { address: string; blockchain: BlockchainName; } | PriceToken, fromAmount: string | number | BigNumber, toToken: Token | { address: string; blockchain: BlockchainName; } | PriceToken, options?: CrossChainManagerCalculationOptions): Promise<WrappedCrossChainTrade[]>; private getFullOptions; private getProviderCalculationPromise; private getProviderAddress; }