diff --git a/.changeset/light-ways-worry.md b/.changeset/light-ways-worry.md new file mode 100644 index 000000000..343df3e7c --- /dev/null +++ b/.changeset/light-ways-worry.md @@ -0,0 +1,5 @@ +--- +"@swapkit/toolbox-cosmos": patch +--- + +Fixes multisig signing and improves typing diff --git a/packages/toolboxes/cosmos/src/thorchainUtils/messages.ts b/packages/toolboxes/cosmos/src/thorchainUtils/messages.ts index a2c526db0..d5c58b8cb 100644 --- a/packages/toolboxes/cosmos/src/thorchainUtils/messages.ts +++ b/packages/toolboxes/cosmos/src/thorchainUtils/messages.ts @@ -13,8 +13,8 @@ import type { ThorcahinDepositTxParams, ThorchainTransferTxParams } from "./type type MsgSend = ReturnType; type MsgDeposit = ReturnType; -type MsgSendForBroadcast = ReturnType; -type MsgDepositForBroadcast = ReturnType; +type MsgSendForBroadcast = ReturnType>; +type MsgDepositForBroadcast = ReturnType>; export const THORCHAIN_GAS_VALUE = getDefaultChainFee(Chain.THORChain).gas; export const MAYA_GAS_VALUE = getDefaultChainFee(Chain.Maya).gas; @@ -30,7 +30,7 @@ export const transferMsgAmino = ({ assetValue: AssetValue; chain: Chain.THORChain | Chain.Maya; }) => ({ - type: `${chain === Chain.Maya ? "mayachain" : "thorchain"}/MsgSend`, + type: `${chain === Chain.Maya ? "mayachain" : "thorchain"}/MsgSend` as const, value: { from_address: from, to_address: recipient, @@ -55,7 +55,7 @@ export const depositMsgAmino = ({ chain: Chain.THORChain | Chain.Maya; }) => { return { - type: `${chain === Chain.Maya ? "mayachain" : "thorchain"}/MsgDeposit`, + type: `${chain === Chain.Maya ? "mayachain" : "thorchain"}/MsgDeposit` as const, value: { coins: [ { @@ -156,7 +156,7 @@ export const buildDepositTx = async ({ from, assetValue, memo = "", chain, asSignable = true }: ThorcahinDepositTxParams) => { const account = await getAccount({ rpcUrl, from }); - const preparedMessage = prepareMessageForBroadcast( + const preparedMessage = prepareMessageForBroadcast( depositMsgAmino({ from, assetValue, memo, chain }), ); @@ -174,8 +174,8 @@ export const buildDepositTx = return transaction; }; -export const prepareMessageForBroadcast = (msg: MsgDeposit | MsgSend) => { - if (msg.type === "thorchain/MsgSend" || msg.type === "mayachain/MsgSend") return msg; +export function prepareMessageForBroadcast(msg: T) { + if (msg.type === "thorchain/MsgSend" || msg.type === "mayachain/MsgSend") return msg as MsgSend; return { ...msg, @@ -203,7 +203,7 @@ export const prepareMessageForBroadcast = (msg: MsgDeposit | MsgSend) => { }), }, }; -}; +} export const buildEncodedTxBody = ({ chain, diff --git a/packages/toolboxes/cosmos/src/toolbox/thorchain.ts b/packages/toolboxes/cosmos/src/toolbox/thorchain.ts index 7794922a6..381cc31b2 100644 --- a/packages/toolboxes/cosmos/src/toolbox/thorchain.ts +++ b/packages/toolboxes/cosmos/src/toolbox/thorchain.ts @@ -65,7 +65,21 @@ const signMultisigTx = async ( tx: string, chain: Chain.THORChain | Chain.Maya, ) => { - const { msgs, accountNumber, sequence, chainId, fee, memo } = JSON.parse(tx); + const { + msgs, + accountNumber, + sequence, + chainId, + fee, + memo, + }: { + msgs: ReturnType[]; + accountNumber: number; + sequence: number; + chainId: ChainId; + fee: ReturnType; + memo: string; + } = JSON.parse(tx); const address = (await wallet.getAccounts())?.[0]?.address || ""; const aminoTypes = await createDefaultAminoTypes(chain); @@ -92,7 +106,7 @@ const signMultisigTx = async ( const bodyBytes = await buildEncodedTxBody({ chain, - msgs: msgs.map((msg: any) => prepareMessageForBroadcast(msg)), + msgs, memo, });