rubic-sdk-next
Version:
Simplify dApp creation
126 lines • 7.22 kB
JavaScript
"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