UNPKG

@0xsplits/splits-sdk

Version:

SDK for the 0xSplits protocol

110 lines 5.65 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getOraclePoolFee = exports.getSwapBalanceId = exports.getFormattedScaledOfferFactorOverrides = exports.getFormattedScaledOfferFactor = exports.getFormattedOracleParams = exports.getDiversifierRecipients = void 0; var viem_1 = require("viem"); var constants_1 = require("../constants"); var numbers_1 = require("./numbers"); var validation_1 = require("./validation"); var errors_1 = require("../errors"); var getDiversifierRecipients = function (recipients) { (0, validation_1.validateDiversifierRecipients)(recipients); return recipients.map(function (recipientData) { if (recipientData.address) return [ recipientData.address, [viem_1.zeroAddress, viem_1.zeroAddress, BigInt(0), []], (0, numbers_1.getBigIntFromPercent)(recipientData.percentAllocation), ]; if (!recipientData.swapperParams) throw new Error(); return [ viem_1.zeroAddress, [ recipientData.swapperParams.beneficiary, recipientData.swapperParams.tokenToBeneficiary, (0, exports.getFormattedScaledOfferFactor)(recipientData.swapperParams.defaultScaledOfferFactorPercent), (0, exports.getFormattedScaledOfferFactorOverrides)(recipientData.swapperParams.scaledOfferFactorOverrides), ], (0, numbers_1.getBigIntFromPercent)(recipientData.percentAllocation), ]; }); }; exports.getDiversifierRecipients = getDiversifierRecipients; var getFormattedOracleParams = function (oracleParams) { (0, validation_1.validateOracleParams)(oracleParams); if (oracleParams.address) return [oracleParams.address, [viem_1.zeroAddress, viem_1.zeroAddress]]; if (!oracleParams.createOracleParams) throw new Error(); return [ viem_1.zeroAddress, [ oracleParams.createOracleParams.factory, oracleParams.createOracleParams.data, ], ]; }; exports.getFormattedOracleParams = getFormattedOracleParams; var getFormattedScaledOfferFactor = function (scaledOfferFactorPercent, allowMaxPercent) { (0, validation_1.validateScaledOfferFactor)(scaledOfferFactorPercent, allowMaxPercent); var formattedScaledOfferFactor = 1000000 - Math.round(10000 * scaledOfferFactorPercent); return BigInt(formattedScaledOfferFactor); }; exports.getFormattedScaledOfferFactor = getFormattedScaledOfferFactor; var getFormattedScaledOfferFactorOverrides = function (scaledOfferFactorOverrides) { return scaledOfferFactorOverrides.map(function (_a) { var baseToken = _a.baseToken, quoteToken = _a.quoteToken, scaledOfferFactorPercent = _a.scaledOfferFactorPercent; return [ [baseToken, quoteToken], (0, exports.getFormattedScaledOfferFactor)(scaledOfferFactorPercent, true), ]; }); }; exports.getFormattedScaledOfferFactorOverrides = getFormattedScaledOfferFactorOverrides; var getSwapBalanceId = function (inputToken, outputToken) { return "".concat(inputToken, "-").concat(outputToken); }; exports.getSwapBalanceId = getSwapBalanceId; var getOraclePoolFee = function (_a) { var chainId = _a.chainId, swapper = _a.swapper, inputToken = _a.inputToken; var wrappedNativeTokenAddress = constants_1.CHAIN_INFO[chainId].wrappedNativeTokenAddress; if (!wrappedNativeTokenAddress) throw new errors_1.InvalidArgumentError('Unsupported network'); if (swapper.oracle.type !== 'uniswapV3TWAP') throw new errors_1.InvalidArgumentError('Only uniswapV3TWAP is supported'); // Handle eth/weth as both input and output if (inputToken === swapper.tokenToBeneficiary.address) return 0; if (inputToken === viem_1.zeroAddress && swapper.tokenToBeneficiary.address === wrappedNativeTokenAddress) return 0; if (inputToken === wrappedNativeTokenAddress && swapper.tokenToBeneficiary.address === viem_1.zeroAddress) return 0; var pairId = (0, exports.getSwapBalanceId)(inputToken, swapper.tokenToBeneficiary.address); if (swapper.oracle.pairDetails[pairId]) return swapper.oracle.pairDetails[pairId].fee; if (inputToken === viem_1.zeroAddress) { pairId = (0, exports.getSwapBalanceId)(wrappedNativeTokenAddress, swapper.tokenToBeneficiary.address); if (swapper.oracle.pairDetails[pairId]) return swapper.oracle.pairDetails[pairId].fee; } else if (inputToken === wrappedNativeTokenAddress) { pairId = (0, exports.getSwapBalanceId)(viem_1.zeroAddress, swapper.tokenToBeneficiary.address); if (swapper.oracle.pairDetails[pairId]) return swapper.oracle.pairDetails[pairId].fee; } else if (swapper.tokenToBeneficiary.address === viem_1.zeroAddress) { pairId = (0, exports.getSwapBalanceId)(inputToken, wrappedNativeTokenAddress); if (swapper.oracle.pairDetails[pairId]) return swapper.oracle.pairDetails[pairId].fee; } else if (swapper.tokenToBeneficiary.address === wrappedNativeTokenAddress) { pairId = (0, exports.getSwapBalanceId)(inputToken, viem_1.zeroAddress); if (swapper.oracle.pairDetails[pairId]) return swapper.oracle.pairDetails[pairId].fee; } throw new errors_1.InvalidArgumentError("Unsupported token pair. Input - ".concat(inputToken, ". Output - ").concat(swapper.tokenToBeneficiary, ". Oracle - ").concat(swapper.oracle.address)); }; exports.getOraclePoolFee = getOraclePoolFee; //# sourceMappingURL=swapper.js.map