@dahlia-labs/stableswap-sdk
Version:
SDK for Mobius's StableSwap program.
90 lines • 4.17 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.calculateSwapMulticall = exports.tokenBalanceMulticall = exports.feesMulticall = exports.pausedMulticall = exports.ampMulticall = exports.LPMulticall = exports.getSwapContract = exports.getLPTokenContract = exports.swapInterface = exports.lpTokenInterface = exports.getSwapInterface = exports.getLPTokenInterface = exports.FEE_BASE = void 0;
const tslib_1 = require("tslib");
const token_utils_1 = require("@dahlia-labs/token-utils");
const use_ethers_1 = require("@dahlia-labs/use-ethers");
const abi_1 = require("@ethersproject/abi");
const jsbi_1 = tslib_1.__importDefault(require("jsbi"));
const LPToken_json_1 = tslib_1.__importDefault(require("./abis/LPToken.json"));
const Swap_json_1 = tslib_1.__importDefault(require("./abis/Swap.json"));
exports.FEE_BASE = jsbi_1.default.exponentiate(jsbi_1.default.BigInt(10), jsbi_1.default.BigInt(10));
function getLPTokenInterface() {
return new abi_1.Interface(LPToken_json_1.default);
}
exports.getLPTokenInterface = getLPTokenInterface;
function getSwapInterface() {
return new abi_1.Interface(Swap_json_1.default);
}
exports.getSwapInterface = getSwapInterface;
exports.lpTokenInterface = getLPTokenInterface();
exports.swapInterface = getSwapInterface();
const getLPTokenContract = (address, provider) => (0, use_ethers_1.getContract)(address, LPToken_json_1.default, provider);
exports.getLPTokenContract = getLPTokenContract;
const getSwapContract = (address, provider) => (0, use_ethers_1.getContract)(address, Swap_json_1.default, provider);
exports.getSwapContract = getSwapContract;
const LPMulticall = (swapAddress) => ({
call: {
target: swapAddress,
callData: exports.swapInterface.encodeFunctionData("getLpToken"),
},
parseReturn: (returnData) => returnData,
});
exports.LPMulticall = LPMulticall;
const ampMulticall = (swapAddress) => ({
call: {
target: swapAddress,
callData: exports.swapInterface.encodeFunctionData("getA"),
},
parseReturn: (returnData) => jsbi_1.default.BigInt(returnData),
});
exports.ampMulticall = ampMulticall;
const pausedMulticall = (swapAddress) => ({
call: {
target: swapAddress,
callData: exports.swapInterface.encodeFunctionData("paused"),
},
parseReturn: (returnData) => exports.swapInterface.decodeFunctionResult("paused", returnData)[0],
});
exports.pausedMulticall = pausedMulticall;
const feesMulticall = (swapAddress) => ({
call: {
target: swapAddress,
callData: exports.swapInterface.encodeFunctionData("swapStorage"),
},
parseReturn: (returnData) => {
const data = exports.swapInterface.decodeFunctionResult("swapStorage", returnData);
return {
trade: new token_utils_1.Percent(data.swapFee.toString(), exports.FEE_BASE),
admin: new token_utils_1.Percent(data.adminFee.toString(), exports.FEE_BASE),
deposit: new token_utils_1.Percent(data.defaultDepositFee.toString(), exports.FEE_BASE),
withdraw: new token_utils_1.Percent(data.defaultWithdrawFee.toString(), exports.FEE_BASE),
};
},
});
exports.feesMulticall = feesMulticall;
const tokenBalanceMulticall = (swapAddress, index) => ({
call: {
target: swapAddress,
callData: exports.swapInterface.encodeFunctionData("getTokenBalance", [index]),
},
parseReturn: (returnData) => new token_utils_1.Fraction(exports.swapInterface
.decodeFunctionResult("getTokenBalance", returnData)
.toString()),
});
exports.tokenBalanceMulticall = tokenBalanceMulticall;
const calculateSwapMulticall = (swapAddress, fromIndex, toIndex, amountIn) => ({
call: {
target: swapAddress,
callData: exports.swapInterface.encodeFunctionData("calculateSwap", [
fromIndex,
toIndex,
amountIn,
]),
},
parseReturn: (returnData) => new token_utils_1.Fraction(exports.swapInterface
.decodeFunctionResult("calculateSwap", returnData)
.toString()),
});
exports.calculateSwapMulticall = calculateSwapMulticall;
//# sourceMappingURL=contract.js.map