@cyberk/hyperion-sdk
Version:
Hyperion SDK from Cyberk
67 lines • 2.62 kB
JavaScript
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