@0xsplits/splits-sdk
Version:
SDK for the 0xSplits protocol
110 lines • 5.65 kB
JavaScript
;
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