@cyberk/hyperion-sdk
Version:
Hyperion SDK from Cyberk
76 lines • 3.28 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.getProvideLiquidityMutationOptions = exports.getProvideLiquidityQueryKey = exports.getProvideLiquidityContractExecuteMsg = void 0;
const buildExecuteContractMsg_1 = require("../utils/buildExecuteContractMsg");
const orderBy_1 = __importDefault(require("lodash/orderBy"));
const getProvideLiquidityContractExecuteMsg = (options) => {
const { signerAddress, pairAddress, assets, slippageTolerance = null, receiver = null, deadline = null, } = options;
const sortedAssets = (0, orderBy_1.default)(assets, ["denom"], ["asc"]);
console.log("sortedAssets", sortedAssets);
const msg = {
provide_liquidity: {
assets: sortedAssets.map((asset) => ({
info: {
native_token: {
denom: asset.denom,
},
},
amount: asset.amount,
})),
slippage_tolerance: slippageTolerance,
receiver: receiver,
deadline: deadline,
},
};
// Funds are directly the assets as they are Coin[] and assumed native
const funds = sortedAssets;
return (0, buildExecuteContractMsg_1.buildExecuteContractMsg)(pairAddress, msg, signerAddress, funds);
};
exports.getProvideLiquidityContractExecuteMsg = getProvideLiquidityContractExecuteMsg;
const getProvideLiquidityQueryKey = (options) => {
return [
"provideLiquidity",
options.isSimulate ? "simulate" : "execute",
options.pairAddress,
options.assets.map((asset) => `${asset.denom}:${asset.amount}`).join(","),
options.signerAddress,
options.receiver,
options.slippageTolerance,
options.deadline,
];
};
exports.getProvideLiquidityQueryKey = getProvideLiquidityQueryKey;
const getProvideLiquidityMutationOptions = (options) => {
return {
mutationFn: async (variables) => {
const { isSimulate = false } = options;
const { signingClient, signerAddress, fee, memo } = variables;
const message = (0, exports.getProvideLiquidityContractExecuteMsg)({
signerAddress: variables.signerAddress,
pairAddress: variables.pairAddress,
assets: variables.assets,
slippageTolerance: variables.slippageTolerance,
receiver: variables.receiver,
deadline: variables.deadline,
});
if (isSimulate) {
return await signingClient.simulate(signerAddress, [message], memo);
}
else {
if (!fee) {
throw new Error("Fee is required for execution");
}
return await signingClient.signAndBroadcast(signerAddress, [message], fee, memo);
}
},
mutationKey: [
"provideLiquidity",
options.isSimulate ? "simulate" : "execute",
],
};
};
exports.getProvideLiquidityMutationOptions = getProvideLiquidityMutationOptions;
//# sourceMappingURL=provideLiquidity.js.map