UNPKG

rubic-sdk-next

Version:
94 lines 3.65 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.RubicApiParser = void 0; const core_1 = require("@cryptorubic/core"); const bignumber_js_1 = __importDefault(require("bignumber.js")); const errors_1 = require("../../../common/errors"); const max_decimals_error_1 = require("../../../common/errors/swap/max-decimals.error"); const tokens_1 = require("../../../common/tokens"); class RubicApiParser { static parseRoutingDto(routingDto) { const steps = []; for (const route of routingDto) { const [from, to] = route.path; const fromToken = new core_1.PriceTokenAmount({ ...from, tokenAmount: from?.amount }); const toToken = new core_1.PriceTokenAmount({ ...to, tokenAmount: to?.amount }); steps.push({ provider: route.provider, path: [fromToken, toToken], type: route.type }); } return steps; } static parseFeeInfoDto(feeInfoDto) { const nativeToken = new tokens_1.PriceToken({ ...feeInfoDto.gasTokenFees.nativeToken, price: new bignumber_js_1.default(feeInfoDto.gasTokenFees.nativeToken.price) }); const percentToken = feeInfoDto.percentFees.token ? new tokens_1.PriceToken({ ...feeInfoDto.percentFees.token, price: new bignumber_js_1.default(feeInfoDto.percentFees.token.price) }) : nativeToken; const protocolFee = feeInfoDto.gasTokenFees.protocol; const providerFee = feeInfoDto.gasTokenFees.provider; return { rubicProxy: { fixedFee: { amount: new bignumber_js_1.default(protocolFee.fixedAmount), token: nativeToken }, platformFee: { percent: feeInfoDto.percentFees.percent, token: percentToken } }, provider: { cryptoFee: { amount: new bignumber_js_1.default(providerFee.fixedAmount), token: nativeToken } } }; } static parseRubicApiErrors(err) { if (err.code === 2005 || err.code === 2004) { const data = err.data; if (data.minAmount) { return new errors_1.MinAmountError(new bignumber_js_1.default(data.minAmount), data.tokenSymbol); } if (data.maxAmount) { return new errors_1.MaxAmountError(new bignumber_js_1.default(data.maxAmount), data.tokenSymbol); } } if (err.code === 2006) { const decimals = err.reason.match(/\d+/)?.[0]; return new max_decimals_error_1.MaxDecimalsError(Number(decimals)); } throw new errors_1.RubicSdkError(err.reason); } static parseRubicApiWarnings(warnings) { const parsedWarnings = { needAuthWallet: false }; for (const warning of warnings) { if (warning.code === 2007) { parsedWarnings.needAuthWallet = true; continue; } parsedWarnings.error = RubicApiParser.parseRubicApiErrors(warning); } return parsedWarnings; } } exports.RubicApiParser = RubicApiParser; //# sourceMappingURL=rubic-api-parser.js.map