UNPKG

@cyberk/hyperion-sdk

Version:

Hyperion SDK from Cyberk

67 lines 2.62 kB
import { buildExecuteContractMsg } from "../utils/buildExecuteContractMsg"; import orderBy from "lodash/orderBy"; export const getProvideLiquidityContractExecuteMsg = (options) => { const { signerAddress, pairAddress, assets, slippageTolerance = null, receiver = null, deadline = null, } = options; const sortedAssets = orderBy(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 buildExecuteContractMsg(pairAddress, msg, signerAddress, funds); }; export 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, ]; }; export const getProvideLiquidityMutationOptions = (options) => { return { mutationFn: async (variables) => { const { isSimulate = false } = options; const { signingClient, signerAddress, fee, memo } = variables; const message = 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", ], }; }; //# sourceMappingURL=provideLiquidity.js.map