@cyberk/hyperion-sdk
Version:
Hyperion SDK from Cyberk
50 lines • 2.07 kB
JavaScript
import { buildExecuteContractMsg } from "../utils/buildExecuteContractMsg";
function encodeWithdrawLiquidityMsg(minAssets, deadline) {
// Build the message in the format expected by the contract
const msg = { withdraw_liquidity: {} };
// if (minAssets) msg.withdraw_liquidity.min_assets = minAssets;
// if (deadline) msg.withdraw_liquidity.deadline = deadline;
return Buffer.from(JSON.stringify(msg)).toString("base64");
}
export const getWithdrawLiquidityContractExecuteMsg = (options) => {
const { pairAddress, amount, minAssets, deadline, signerAddress, liquidityTokenAddress, } = options;
const encodedMsg = encodeWithdrawLiquidityMsg(minAssets, deadline);
const executeMsg = {
send: {
amount,
contract: pairAddress,
msg: encodedMsg,
},
};
return buildExecuteContractMsg(liquidityTokenAddress, executeMsg, signerAddress, []);
};
export const getWithdrawLiquidityMutationOptions = (options) => {
return {
mutationFn: async (variables) => {
const { isSimulate = false } = options;
const { signingClient, signerAddress, pairAddress, amount, minAssets, deadline, fee, memo, liquidityTokenAddress, } = variables;
const message = getWithdrawLiquidityContractExecuteMsg({
pairAddress,
signerAddress,
amount,
minAssets,
deadline,
liquidityTokenAddress,
});
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: [
"withdraw_liquidity",
options.isSimulate ? "simulate" : "execute",
],
};
};
//# sourceMappingURL=withdrawLiquidity.js.map