UNPKG

rubic-sdk-next

Version:
126 lines 7.22 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.TransformUtils = void 0; const core_1 = require("@cryptorubic/core"); const errors_1 = require("../../common/errors"); const chain_type_1 = require("../../core/blockchain/models/chain-type"); const blockchains_info_1 = require("../../core/blockchain/utils/blockchains-info/blockchains-info"); const cross_chain_trade_type_1 = require("../cross-chain/calculation-manager/models/cross-chain-trade-type"); const arbitrum_rbc_bridge_trade_1 = require("../cross-chain/calculation-manager/providers/arbitrum-rbc-bridge/arbitrum-rbc-bridge-trade"); const eddy_bridge_trade_1 = require("../cross-chain/calculation-manager/providers/eddy-bridge/eddy-bridge-trade"); const evm_api_cross_chain_trade_1 = require("./chains/evm/evm-api-cross-chain-trade"); const evm_api_on_chain_trade_1 = require("./chains/evm/evm-api-on-chain-trade"); const solana_api_cross_chain_trade_1 = require("./chains/solana/solana-api-cross-chain-trade"); const solana_api_on_chain_trade_1 = require("./chains/solana/solana-api-on-chain-trade"); const sui_api_on_chain_trade_1 = require("./chains/sui/sui-api-on-chain-trade"); const ton_api_cross_chain_trade_1 = require("./chains/ton/ton-api-cross-chain-trade"); const ton_api_on_chain_trade_1 = require("./chains/ton/ton-api-on-chain-trade"); const tron_api_cross_chain_trade_1 = require("./chains/tron/tron-api-cross-chain-trade"); const tron_api_on_chain_trade_1 = require("./chains/tron/tron-api-on-chain-trade"); const transfer_trade_supported_providers_1 = require("../cross-chain/calculation-manager/providers/common/cross-chain-transfer-trade/constans/transfer-trade-supported-providers"); const bitcoin_api_cross_chain_trade_1 = require("./chains/bitcoin/bitcoin-api-cross-chain-trade"); const api_cross_chain_transfer_trade_1 = require("./chains/transfer-trade/api-cross-chain-transfer-trade"); const rubic_api_parser_1 = require("./utils/rubic-api-parser"); const rubic_api_utils_1 = require("./utils/rubic-api-utils"); const should_calculate_consumed_params_1 = require("./chains/solana/constants/should-calculate-consumed-params"); class TransformUtils { static async transformCrossChain(res, quote, err) { if (!res && !err) { throw new errors_1.NotSupportedTokensError(); } const tradeType = (res?.providerType || err?.type); const tradeParams = await rubic_api_utils_1.RubicApiUtils.getTradeParams(quote, res, tradeType); const parsedError = err ? rubic_api_parser_1.RubicApiParser.parseRubicApiErrors(err) : null; const parsedWarnings = rubic_api_parser_1.RubicApiParser.parseRubicApiWarnings(res?.warnings || []); const error = parsedError || parsedWarnings.error; const chainType = blockchains_info_1.BlockchainsInfo.getChainType(quote.srcTokenBlockchain); let trade = null; const needProvidePubKey = tradeType === cross_chain_trade_type_1.CROSS_CHAIN_TRADE_TYPE.TELE_SWAP && tradeParams.from.blockchain === core_1.BLOCKCHAIN_NAME.BITCOIN; const isTransferTrade = transfer_trade_supported_providers_1.transferTradeSupportedProviders.includes(tradeType) && chainType !== chain_type_1.CHAIN_TYPE.EVM; if (isTransferTrade) { trade = new api_cross_chain_transfer_trade_1.ApiCrossChainTransferTrade(tradeParams); } else if (chainType === chain_type_1.CHAIN_TYPE.EVM) { const params = tradeParams; if (tradeType === cross_chain_trade_type_1.CROSS_CHAIN_TRADE_TYPE.ARBITRUM) { trade = new arbitrum_rbc_bridge_trade_1.ArbitrumRbcBridgeTrade(params); } else if (tradeType === cross_chain_trade_type_1.CROSS_CHAIN_TRADE_TYPE.EDDY_BRIDGE) { trade = new eddy_bridge_trade_1.EddyBridgeTrade(params); } else { trade = new evm_api_cross_chain_trade_1.EvmApiCrossChainTrade({ ...params, needAuthWallet: parsedWarnings.needAuthWallet }); } } else if (chainType === chain_type_1.CHAIN_TYPE.TON) { trade = new ton_api_cross_chain_trade_1.TonApiCrossChainTrade(tradeParams); } else if (chainType === chain_type_1.CHAIN_TYPE.TRON) { trade = new tron_api_cross_chain_trade_1.TronApiCrossChainTrade(tradeParams); } else if (chainType === chain_type_1.CHAIN_TYPE.BITCOIN) { trade = new bitcoin_api_cross_chain_trade_1.BitcoinApiCrossChainTrade({ ...tradeParams, needProvidePubKey }); } else if (chainType === chain_type_1.CHAIN_TYPE.SOLANA) { const shouldCalculateConsumedParams = should_calculate_consumed_params_1.shouldCalculateConsumedParamsProviders.includes(tradeType); trade = new solana_api_cross_chain_trade_1.SolanaApiCrossChainTrade({ ...tradeParams, shouldCalculateConsumedParams }); } return { trade, tradeType, ...(error && { error }) }; } static async transformOnChain(response, quote, err) { if (!response && !err) { throw new errors_1.NotSupportedTokensError(); } const tradeType = (response?.providerType || err?.type); const tradeParams = await rubic_api_utils_1.RubicApiUtils.getTradeParams(quote, response, tradeType); const parsedError = err ? rubic_api_parser_1.RubicApiParser.parseRubicApiErrors(err) : null; const parsedWarningsError = rubic_api_parser_1.RubicApiParser.parseRubicApiWarnings(response?.warnings || []).error; const error = parsedError || parsedWarningsError; const chainType = blockchains_info_1.BlockchainsInfo.getChainType(quote.srcTokenBlockchain); let trade = null; if (chainType === chain_type_1.CHAIN_TYPE.EVM) { trade = new evm_api_on_chain_trade_1.EvmApiOnChainTrade(tradeParams); } else if (chainType === chain_type_1.CHAIN_TYPE.TRON) { trade = new tron_api_on_chain_trade_1.TronApiOnChainTrade(tradeParams); } else if (chainType === chain_type_1.CHAIN_TYPE.SOLANA) { const shouldCalculateConsumedParams = should_calculate_consumed_params_1.shouldCalculateConsumedParamsProviders.includes(tradeType); trade = new solana_api_on_chain_trade_1.SolanaApiOnChainTrade({ ...tradeParams, shouldCalculateConsumedParams }); } else if (chainType === chain_type_1.CHAIN_TYPE.TON) { trade = new ton_api_on_chain_trade_1.TonApiOnChainTrade({ ...tradeParams, // @TODO API isChangedSlippage: false }); } else if (chainType === chain_type_1.CHAIN_TYPE.SUI) { trade = new sui_api_on_chain_trade_1.SuiApiOnChainTrade(tradeParams); } return { trade, tradeType, ...(error && { error }) }; } } exports.TransformUtils = TransformUtils; //# sourceMappingURL=transform-utils.js.map