From 859029f073003768da2e7d27d320660045293ba0 Mon Sep 17 00:00:00 2001 From: Todd Kao Date: Wed, 7 May 2025 16:48:06 -0400 Subject: [PATCH 1/3] add signing with interchainjs --- packages/client/package.json | 5 + packages/client/src/amino/encoding.ts | 4 +- packages/client/src/amino/pubkey.ts | 14 +- .../cosmos/executeCosmosTransaction.ts | 107 +++- packages/client/src/registry.ts | 13 +- packages/client/src/types/client-types.ts | 7 +- packages/widget/package.json | 1 + .../widget/src/state/swapExecutionPage.ts | 28 +- yarn.lock | 476 +++++++++++++++++- 9 files changed, 598 insertions(+), 57 deletions(-) diff --git a/packages/client/package.json b/packages/client/package.json index c6abe04c6..3d312891d 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -53,6 +53,7 @@ "viem": "2.x" }, "dependencies": { + "@chain-registry/v2": "^1.71.203", "@cosmjs/amino": "0.33.1", "@cosmjs/cosmwasm-stargate": "0.33.1", "@cosmjs/encoding": "0.33.1", @@ -61,6 +62,10 @@ "@cosmjs/stargate": "0.33.1", "@cosmjs/tendermint-rpc": "0.33.1", "@injectivelabs/sdk-ts": "1.15.3", + "@interchainjs/auth": "^1.11.5", + "@interchainjs/cosmos": "^1.11.5", + "@interchainjs/ethereum": "^1.11.5", + "@interchainjs/injective": "^1.11.5", "@keplr-wallet/unit": "^0.12.143", "@solana/wallet-adapter-base": "^0.9.23", "bech32": "^2.0.0", diff --git a/packages/client/src/amino/encoding.ts b/packages/client/src/amino/encoding.ts index 9e7ef45d2..25d72df1f 100644 --- a/packages/client/src/amino/encoding.ts +++ b/packages/client/src/amino/encoding.ts @@ -4,9 +4,7 @@ import { toBase64 } from "@cosmjs/encoding"; import { EthSecp256k1Pubkey, pubkeyType } from "./pubkey"; -export function encodeEthSecp256k1Pubkey( - pubkey: Uint8Array, -): EthSecp256k1Pubkey { +export function encodeEthSecp256k1Pubkey(pubkey: Uint8Array): EthSecp256k1Pubkey { if (pubkey.length !== 33 || (pubkey[0] !== 0x02 && pubkey[0] !== 0x03)) { throw new Error( "Public key must be compressed secp256k1, i.e. 33 bytes starting with 0x02 or 0x03", diff --git a/packages/client/src/amino/pubkey.ts b/packages/client/src/amino/pubkey.ts index b36247e63..eefcfe7e5 100644 --- a/packages/client/src/amino/pubkey.ts +++ b/packages/client/src/amino/pubkey.ts @@ -1,19 +1,13 @@ // https://github.com/archmage-live/archmage-x/blob/develop/lib/network/cosm/amino/pubkey.ts -import { - Pubkey, - SinglePubkey, - pubkeyType as cosmPubkeyType, -} from "@cosmjs/amino"; +import { Pubkey, SinglePubkey, pubkeyType as cosmPubkeyType } from "@cosmjs/amino"; -export interface EthSecp256k1Pubkey extends SinglePubkey { +export type EthSecp256k1Pubkey = { readonly type: "ethermint/PubKeyEthSecp256k1"; readonly value: string; -} +} & SinglePubkey; -export function isEthSecp256k1Pubkey( - pubkey: Pubkey, -): pubkey is EthSecp256k1Pubkey { +export function isEthSecp256k1Pubkey(pubkey: Pubkey): pubkey is EthSecp256k1Pubkey { return (pubkey as EthSecp256k1Pubkey).type === "ethermint/PubKeyEthSecp256k1"; } diff --git a/packages/client/src/private-functions/cosmos/executeCosmosTransaction.ts b/packages/client/src/private-functions/cosmos/executeCosmosTransaction.ts index cd8ce1ec3..a62126c1b 100644 --- a/packages/client/src/private-functions/cosmos/executeCosmosTransaction.ts +++ b/packages/client/src/private-functions/cosmos/executeCosmosTransaction.ts @@ -7,6 +7,17 @@ import { isOfflineDirectSigner } from "@cosmjs/proto-signing/build/signer"; import { signCosmosMessageDirect } from "./signCosmosMessageDirect"; import { signCosmosMessageAmino } from "./signCosmosMessageAmino"; import { ExecuteRouteOptions } from "src/public-functions/executeRoute"; +import { AminoSigner } from "@interchainjs/cosmos/signers/amino"; +import { SigningClient } from "@interchainjs/cosmos/signing-client"; +import { + ICosmosGenericOfflineSigner, + OfflineAminoSigner, + OfflineDirectSigner, +} from "@interchainjs/cosmos/types/wallet"; +import { toEncoders } from "@interchainjs/cosmos/utils"; +import { getEncodeObjectFromCosmosMessage } from "./getEncodeObjectFromCosmosMessage"; +import { getRpcEndpointForChain } from "../getRpcEndpointForChain"; +import { AminoConverter } from "@cosmjs/stargate"; type ExecuteCosmosTransactionProps = { tx?: { @@ -51,10 +62,10 @@ export const executeCosmosTransaction = async ({ throw new Error("no messages found for tx"); } - const { stargateClient, signer } = await getSigningStargateClient({ - chainId: chainId, - getOfflineSigner: options?.getCosmosSigner, - }); + // const { stargateClient, signer } = await getSigningStargateClient({ + // chainId: chainId, + // getOfflineSigner: options?.getCosmosSigner, + // }); if (!currentUserAddress) { throw new Error( @@ -62,12 +73,13 @@ export const executeCosmosTransaction = async ({ ); } - const accounts = await signer.getAccounts(); - const accountFromSigner = accounts.find((account) => account.address === currentUserAddress); + // const accounts = await signer.getAccounts(); - if (!accountFromSigner) { - throw new Error("executeCosmosTransaction error: failed to retrieve account from signer"); - } + // const accountFromSigner = accounts.find((account) => account.address === currentUserAddress); + + // if (!accountFromSigner) { + // throw new Error("executeCosmosTransaction error: failed to retrieve account from signer"); + // } const fee = gasUsed?.fee; @@ -94,22 +106,79 @@ export const executeCosmosTransaction = async ({ }, }; - if (isOfflineDirectSigner(signer)) { - rawTx = await signCosmosMessageDirect({ - ...commonRawTxBody, - signer, - }); - } else { - rawTx = await signCosmosMessageAmino({ ...commonRawTxBody, signer }); - } + const cosmosSigner = (await options?.getCosmosSigner?.(chainId)) as ICosmosGenericOfflineSigner; + + const endpoint = await getRpcEndpointForChain(chainId); + + console.log(cosmosSigner); + + const signer = await SigningClient.connectWithSigner(endpoint, cosmosSigner); + + const registry = Object.assign({}, ClientState.registry) as any; + const encoders = Array.from(registry.types).map((registry) => registry?.[1]); + signer.addEncoders(encoders); + + const aminoTypes = Object.assign({}, ClientState.aminoTypes) as any; + console.log(aminoTypes); + const converters = Object.entries(aminoTypes.register).map(([typeUrl, converter]) => ({ + typeUrl, + ...(converter as AminoConverter), + })); + + console.log(converters); + signer.addConverters(converters); + + // if (message.msgTypeUrl === "/circle.cctp.v1.MsgDepositForBurnWithCaller") { + // return { + // typeUrl: message.msgTypeUrl, + // value: MsgDepositForBurnWithCaller.fromAmino(msgJson), + // }; + // } + + console.log("got signer", signer); + + const encodeObjectMessages = messages.map((cosmosMsg) => + getEncodeObjectFromCosmosMessage(cosmosMsg), + ); + + console.log(currentUserAddress, encodeObjectMessages); + + const txResponse = await signer.signAndBroadcast( + currentUserAddress, + encodeObjectMessages, + "auto", + ); + + // if (isOfflineDirectSigner(signer)) { + // rawTx = await signCosmosMessageDirect({ + // ...commonRawTxBody, + // signer, + // }); + // } else { + // const cosmosSigner = await options?.getCosmosSigner?.(tx.cosmosTx?.chainId ?? ""); + // if (cosmosSigner) { + // const signDirect = cosmosSigner as OfflineDirectSigner; + // const signAmino = cosmosSigner as OfflineAminoSigner; + // if (signDirect?.signDirect !== undefined) { + // signDirect.sign = signDirect.signDirect; + // } + // if (signer?.signAmino) { + // signer.sign = signer.signAmino; + // } + + // console.log(client); + // } + + // rawTx = await signCosmosMessageAmino({ ...commonRawTxBody, signer }); + // } options?.onTransactionSigned?.({ chainId, }); - const txBytes = TxRaw.encode(rawTx).finish(); + // const txBytes = TxRaw.encode(rawTx).finish(); - const txResponse = await stargateClient.broadcastTx(txBytes); + // const txResponse = await stargateClient.broadcastTx(txBytes); return { chainId: tx?.cosmosTx?.chainId ?? "", diff --git a/packages/client/src/registry.ts b/packages/client/src/registry.ts index 5f4191364..5fbe04fb0 100644 --- a/packages/client/src/registry.ts +++ b/packages/client/src/registry.ts @@ -10,8 +10,8 @@ import { encodeSecp256k1Pubkey } from "@cosmjs/amino"; export const accountParser: AccountParser = (acc) => { switch (acc.typeUrl) { case "/stride.vesting.StridePeriodicVestingAccount": { - const baseAccount = StridePeriodicVestingAccount.decode(acc.value) - .baseVestingAccount?.baseAccount; + const baseAccount = StridePeriodicVestingAccount.decode(acc.value).baseVestingAccount + ?.baseAccount; assertDefinedAndNotNull(baseAccount); return { @@ -22,17 +22,12 @@ export const accountParser: AccountParser = (acc) => { }; } case "/injective.types.v1beta1.EthAccount": - return accountEthParser( - acc, - "/injective.crypto.v1beta1.ethsecp256k1.PubKey", - ); + return accountEthParser(acc, "/injective.crypto.v1beta1.ethsecp256k1.PubKey"); case "/ethermint.types.v1.EthAccount": return accountEthParser(acc, "/ethermint.crypto.v1.ethsecp256k1.PubKey"); default: { if (acc.typeUrl === "/cosmos.auth.v1beta1.BaseAccount") { - const { address, pubKey, accountNumber, sequence } = BaseAccount.decode( - acc.value, - ); + const { address, pubKey, accountNumber, sequence } = BaseAccount.decode(acc.value); if (pubKey?.typeUrl === "/initia.crypto.v1beta1.ethsecp256k1.PubKey") { const { key } = PubKey.decode(pubKey.value); const pk = encodeSecp256k1Pubkey(key); diff --git a/packages/client/src/types/client-types.ts b/packages/client/src/types/client-types.ts index 16ea42285..b598c0a4f 100644 --- a/packages/client/src/types/client-types.ts +++ b/packages/client/src/types/client-types.ts @@ -6,6 +6,7 @@ import { WalletClient } from "viem"; import { Adapter } from "@solana/wallet-adapter-base"; import { ChainType, CosmosMsg, FeeAsset } from "./swaggerTypes"; +import { ICosmosGenericOfflineSigner } from "@interchainjs/cosmos/types/wallet"; /** Common Types */ export type UserAddress = { @@ -27,11 +28,7 @@ export type ValidateGasResult = { /** Signer Getters */ export type SignerGetters = { getEvmSigner?: (chainId: string) => Promise; - getCosmosSigner?: ( - chainId: string, - ) => Promise< - (OfflineAminoSigner & OfflineDirectSigner) | OfflineAminoSigner | OfflineDirectSigner - >; + getCosmosSigner?: (chainId: string) => Promise; getSvmSigner?: () => Promise; }; diff --git a/packages/widget/package.json b/packages/widget/package.json index b80ed9335..18ad49930 100644 --- a/packages/widget/package.json +++ b/packages/widget/package.json @@ -104,6 +104,7 @@ "@cosmjs/tendermint-rpc": "0.31.3", "@ebay/nice-modal-react": "^1.2.13", "@eslint/compat": "^1.1.1", + "@interchainjs/cosmos": "^1.11.5", "@leapwallet/cosmos-social-login-capsule-provider": "^0.0.44", "@penumbra-zone/bech32m": "^13.0.0", "@penumbra-zone/client": "^24.0.0", diff --git a/packages/widget/src/state/swapExecutionPage.ts b/packages/widget/src/state/swapExecutionPage.ts index d625246e2..4421db936 100644 --- a/packages/widget/src/state/swapExecutionPage.ts +++ b/packages/widget/src/state/swapExecutionPage.ts @@ -36,6 +36,8 @@ import { getWallet, WalletType } from "graz"; import { config } from "@/constants/wagmi"; import { WalletClient } from "viem"; import { getWalletClient } from "@wagmi/core"; +import { SIGN_MODE, AccountData, StdSignDoc } from "@interchainjs/types"; +import { OfflineDirectSigner } from "@interchainjs/cosmos/types/wallet"; type ValidatingGasBalanceData = { chainId?: string; @@ -421,9 +423,33 @@ export const skipSubmitSwapExecutionAtom = atomWithMutation((get) => { } const key = await wallet.getKey(chainId); - return key.isNanoLedger + const offlineSigner = key.isNanoLedger ? wallet.getOfflineSignerOnlyAmino(chainId) : wallet.getOfflineSigner(chainId); + + const response = await offlineSigner.getAccounts(); + console.log(response); + + return { + getAccounts: () => offlineSigner.getAccounts(), + // getAccounts: () => new Promise((resolve) => resolve(response as AccountData[])), + signMode: key.isNanoLedger ? SIGN_MODE.AMINO : SIGN_MODE.DIRECT, + sign: ({ + signerAddress, + signDoc, + }: { + signerAddress: string; + signDoc: StdSignDoc; + }) => { + if (key.isNanoLedger) { + return offlineSigner.signAmino?.(signerAddress, signDoc); + } + return (offlineSigner as unknown as OfflineDirectSigner).signDirect?.( + signerAddress, + signDoc, + ); + }, + }; }, getEvmSigner: async (chainId) => { if (getSigners?.getEvmSigner) { diff --git a/yarn.lock b/yarn.lock index 0316e7879..2f79672d4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2292,6 +2292,22 @@ __metadata: languageName: node linkType: hard +"@chain-registry/v2-types@npm:^0.53.127": + version: 0.53.127 + resolution: "@chain-registry/v2-types@npm:0.53.127" + checksum: a416b5de9f219580158beab3b6f6ce35da4d0daa77cba683dca62af6635a036a16a1a76bfed8945c8f05559f502f29e5ba92da829e010a48cf4ca940fec92a4c + languageName: node + linkType: hard + +"@chain-registry/v2@npm:^1.71.203": + version: 1.71.203 + resolution: "@chain-registry/v2@npm:1.71.203" + dependencies: + "@chain-registry/v2-types": ^0.53.127 + checksum: e9e508a313a7540fb3eb7a22e96c3a180c4a02f5085dbd7424f5e4f9dec241a1a09f93bd45d6082ee8623ca49de5913f15f139ecc1bf4a4e64844ffde3b03ba1 + languageName: node + linkType: hard + "@changesets/apply-release-plan@npm:^7.0.3": version: 7.0.3 resolution: "@changesets/apply-release-plan@npm:7.0.3" @@ -4411,6 +4427,21 @@ __metadata: languageName: node linkType: hard +"@ethersproject/abstract-provider@npm:^5.8.0": + version: 5.8.0 + resolution: "@ethersproject/abstract-provider@npm:5.8.0" + dependencies: + "@ethersproject/bignumber": ^5.8.0 + "@ethersproject/bytes": ^5.8.0 + "@ethersproject/logger": ^5.8.0 + "@ethersproject/networks": ^5.8.0 + "@ethersproject/properties": ^5.8.0 + "@ethersproject/transactions": ^5.8.0 + "@ethersproject/web": ^5.8.0 + checksum: 4fd00d770552af53be297c676f31d938f5dc44d73c24970036a11237a53f114cc1c551fd95937b9eca790f77087da1ed3ec54f97071df088d5861f575fd4f9be + languageName: node + linkType: hard + "@ethersproject/abstract-signer@npm:^5.7.0": version: 5.7.0 resolution: "@ethersproject/abstract-signer@npm:5.7.0" @@ -4424,6 +4455,19 @@ __metadata: languageName: node linkType: hard +"@ethersproject/abstract-signer@npm:^5.8.0": + version: 5.8.0 + resolution: "@ethersproject/abstract-signer@npm:5.8.0" + dependencies: + "@ethersproject/abstract-provider": ^5.8.0 + "@ethersproject/bignumber": ^5.8.0 + "@ethersproject/bytes": ^5.8.0 + "@ethersproject/logger": ^5.8.0 + "@ethersproject/properties": ^5.8.0 + checksum: 3f7a98caf7c01e58da45d879c08449d1443bced36ac81938789c90d8f9ff86a1993655bae9805fc7b31a723b7bd7b4f1f768a9ec65dff032d0ebdc93133c14f3 + languageName: node + linkType: hard + "@ethersproject/address@npm:^5.0.4, @ethersproject/address@npm:^5.6.0, @ethersproject/address@npm:^5.7.0": version: 5.7.0 resolution: "@ethersproject/address@npm:5.7.0" @@ -4437,6 +4481,19 @@ __metadata: languageName: node linkType: hard +"@ethersproject/address@npm:^5.8.0": + version: 5.8.0 + resolution: "@ethersproject/address@npm:5.8.0" + dependencies: + "@ethersproject/bignumber": ^5.8.0 + "@ethersproject/bytes": ^5.8.0 + "@ethersproject/keccak256": ^5.8.0 + "@ethersproject/logger": ^5.8.0 + "@ethersproject/rlp": ^5.8.0 + checksum: fa48e16403b656207f996ee7796f0978a146682f10f345b75aa382caa4a70fbfdc6ff585e9955e4779f4f15a31628929b665d288b895cea5df206c070266aea1 + languageName: node + linkType: hard + "@ethersproject/base64@npm:^5.7.0": version: 5.7.0 resolution: "@ethersproject/base64@npm:5.7.0" @@ -4446,6 +4503,15 @@ __metadata: languageName: node linkType: hard +"@ethersproject/base64@npm:^5.8.0": + version: 5.8.0 + resolution: "@ethersproject/base64@npm:5.8.0" + dependencies: + "@ethersproject/bytes": ^5.8.0 + checksum: f0c2136c99b2fd2f93b7e110958eacc5990e88274b1f38eb73d8eaa31bdead75fc0c4608dac23cb5718ae455b965de9dc5023446b96de62ef1fa945cbf212096 + languageName: node + linkType: hard + "@ethersproject/bignumber@npm:^5.0.7, @ethersproject/bignumber@npm:^5.7.0": version: 5.7.0 resolution: "@ethersproject/bignumber@npm:5.7.0" @@ -4457,6 +4523,17 @@ __metadata: languageName: node linkType: hard +"@ethersproject/bignumber@npm:^5.8.0": + version: 5.8.0 + resolution: "@ethersproject/bignumber@npm:5.8.0" + dependencies: + "@ethersproject/bytes": ^5.8.0 + "@ethersproject/logger": ^5.8.0 + bn.js: ^5.2.1 + checksum: c87017f466b32d482e4b39370016cfc3edafc2feb89377011c54cd2e7dd011072ef4f275df59cd9fe080a187066082c1808b2682d97547c4fb9e6912331200c3 + languageName: node + linkType: hard + "@ethersproject/bytes@npm:^5.0.4, @ethersproject/bytes@npm:^5.7.0": version: 5.7.0 resolution: "@ethersproject/bytes@npm:5.7.0" @@ -4484,6 +4561,15 @@ __metadata: languageName: node linkType: hard +"@ethersproject/constants@npm:^5.8.0": + version: 5.8.0 + resolution: "@ethersproject/constants@npm:5.8.0" + dependencies: + "@ethersproject/bignumber": ^5.8.0 + checksum: 74830c44f4315a1058b905c73be7a9bb92850e45213cb28a957447b8a100f22a514f4500b0ea5ac7a995427cecef9918af39ae4e0e0ecf77aa4835b1ea5c3432 + languageName: node + linkType: hard + "@ethersproject/hash@npm:5.7.0, @ethersproject/hash@npm:^5.0.4": version: 5.7.0 resolution: "@ethersproject/hash@npm:5.7.0" @@ -4501,6 +4587,23 @@ __metadata: languageName: node linkType: hard +"@ethersproject/hash@npm:^5.7.0": + version: 5.8.0 + resolution: "@ethersproject/hash@npm:5.8.0" + dependencies: + "@ethersproject/abstract-signer": ^5.8.0 + "@ethersproject/address": ^5.8.0 + "@ethersproject/base64": ^5.8.0 + "@ethersproject/bignumber": ^5.8.0 + "@ethersproject/bytes": ^5.8.0 + "@ethersproject/keccak256": ^5.8.0 + "@ethersproject/logger": ^5.8.0 + "@ethersproject/properties": ^5.8.0 + "@ethersproject/strings": ^5.8.0 + checksum: e1feb47a98c631548b0f98ef0b1eb1b964bc643d5dea12a0eeb533165004cfcfe6f1d2bb32f31941f0b91e6a82212ad5c8577d6d465fba62c38fc0c410941feb + languageName: node + linkType: hard + "@ethersproject/keccak256@npm:^5.0.3, @ethersproject/keccak256@npm:^5.7.0": version: 5.7.0 resolution: "@ethersproject/keccak256@npm:5.7.0" @@ -4511,6 +4614,16 @@ __metadata: languageName: node linkType: hard +"@ethersproject/keccak256@npm:^5.8.0": + version: 5.8.0 + resolution: "@ethersproject/keccak256@npm:5.8.0" + dependencies: + "@ethersproject/bytes": ^5.8.0 + js-sha3: 0.8.0 + checksum: af3621d2b18af6c8f5181dacad91e1f6da4e8a6065668b20e4c24684bdb130b31e45e0d4dbaed86d4f1314d01358aa119f05be541b696e455424c47849d81913 + languageName: node + linkType: hard + "@ethersproject/logger@npm:^5.0.5, @ethersproject/logger@npm:^5.7.0": version: 5.7.0 resolution: "@ethersproject/logger@npm:5.7.0" @@ -4534,6 +4647,15 @@ __metadata: languageName: node linkType: hard +"@ethersproject/networks@npm:^5.8.0": + version: 5.8.0 + resolution: "@ethersproject/networks@npm:5.8.0" + dependencies: + "@ethersproject/logger": ^5.8.0 + checksum: b1d43fdab13e32be74b5547968c7e54786915a1c3543025c628f634872038750171bef15db0cf42a27e568175b185ac9c185a9aae8f93839452942c5a867c908 + languageName: node + linkType: hard + "@ethersproject/properties@npm:^5.0.3, @ethersproject/properties@npm:^5.7.0": version: 5.7.0 resolution: "@ethersproject/properties@npm:5.7.0" @@ -4543,6 +4665,15 @@ __metadata: languageName: node linkType: hard +"@ethersproject/properties@npm:^5.8.0": + version: 5.8.0 + resolution: "@ethersproject/properties@npm:5.8.0" + dependencies: + "@ethersproject/logger": ^5.8.0 + checksum: 2bb0369a3c25a7c1999e990f73a9db149a5e514af253e3945c7728eaea5d864144da6a81661c0c414b97be75db7fb15c34f719169a3adb09e585a3286ea78b9c + languageName: node + linkType: hard + "@ethersproject/rlp@npm:^5.7.0": version: 5.7.0 resolution: "@ethersproject/rlp@npm:5.7.0" @@ -4553,6 +4684,16 @@ __metadata: languageName: node linkType: hard +"@ethersproject/rlp@npm:^5.8.0": + version: 5.8.0 + resolution: "@ethersproject/rlp@npm:5.8.0" + dependencies: + "@ethersproject/bytes": ^5.8.0 + "@ethersproject/logger": ^5.8.0 + checksum: 9d6f646072b3dd61de993210447d35744a851d24d4fe6262856e372f47a1e9d90976031a9fa28c503b1a4f39dd5ab7c20fc9b651b10507a09b40a33cb04a19f1 + languageName: node + linkType: hard + "@ethersproject/signing-key@npm:^5.7.0": version: 5.7.0 resolution: "@ethersproject/signing-key@npm:5.7.0" @@ -4567,6 +4708,20 @@ __metadata: languageName: node linkType: hard +"@ethersproject/signing-key@npm:^5.8.0": + version: 5.8.0 + resolution: "@ethersproject/signing-key@npm:5.8.0" + dependencies: + "@ethersproject/bytes": ^5.8.0 + "@ethersproject/logger": ^5.8.0 + "@ethersproject/properties": ^5.8.0 + bn.js: ^5.2.1 + elliptic: 6.6.1 + hash.js: 1.1.7 + checksum: 8c07741bc8275568130d97da5d37535c813c842240d0b3409d5e057321595eaf65660c207abdee62e2d7ba225d9b82f0b711ac0324c8c9ceb09a815b231b9f55 + languageName: node + linkType: hard + "@ethersproject/strings@npm:^5.0.4, @ethersproject/strings@npm:^5.7.0": version: 5.7.0 resolution: "@ethersproject/strings@npm:5.7.0" @@ -4578,6 +4733,17 @@ __metadata: languageName: node linkType: hard +"@ethersproject/strings@npm:^5.8.0": + version: 5.8.0 + resolution: "@ethersproject/strings@npm:5.8.0" + dependencies: + "@ethersproject/bytes": ^5.8.0 + "@ethersproject/constants": ^5.8.0 + "@ethersproject/logger": ^5.8.0 + checksum: 997396cf1b183ae66ebfd97b9f98fd50415489f9246875e7769e57270ffa1bffbb62f01430eaac3a0c9cb284e122040949efe632a0221012ee47de252a44a483 + languageName: node + linkType: hard + "@ethersproject/transactions@npm:5.7.0, @ethersproject/transactions@npm:^5.7.0": version: 5.7.0 resolution: "@ethersproject/transactions@npm:5.7.0" @@ -4595,6 +4761,23 @@ __metadata: languageName: node linkType: hard +"@ethersproject/transactions@npm:^5.8.0": + version: 5.8.0 + resolution: "@ethersproject/transactions@npm:5.8.0" + dependencies: + "@ethersproject/address": ^5.8.0 + "@ethersproject/bignumber": ^5.8.0 + "@ethersproject/bytes": ^5.8.0 + "@ethersproject/constants": ^5.8.0 + "@ethersproject/keccak256": ^5.8.0 + "@ethersproject/logger": ^5.8.0 + "@ethersproject/properties": ^5.8.0 + "@ethersproject/rlp": ^5.8.0 + "@ethersproject/signing-key": ^5.8.0 + checksum: e867516ccc692c3642bfbd34eab6d2acecabb3b964d8e1cced8e450ec4fa490bcf2513efb6252637bc3157ecd5e0250dadd1a08d3ec3150c14478b9ec7715570 + languageName: node + linkType: hard + "@ethersproject/web@npm:^5.7.0": version: 5.7.1 resolution: "@ethersproject/web@npm:5.7.1" @@ -4608,6 +4791,19 @@ __metadata: languageName: node linkType: hard +"@ethersproject/web@npm:^5.8.0": + version: 5.8.0 + resolution: "@ethersproject/web@npm:5.8.0" + dependencies: + "@ethersproject/base64": ^5.8.0 + "@ethersproject/bytes": ^5.8.0 + "@ethersproject/logger": ^5.8.0 + "@ethersproject/properties": ^5.8.0 + "@ethersproject/strings": ^5.8.0 + checksum: d8ca89bde8777ed1eec81527f8a989b939b4625b2f6c275eea90031637a802ad68bf46911fdd43c5e84ea2962b8a3cb4801ab51f5393ae401a163c17c774123f + languageName: node + linkType: hard + "@exodus/schemasafe@npm:^1.0.0-rc.2": version: 1.3.0 resolution: "@exodus/schemasafe@npm:1.3.0" @@ -5058,6 +5254,165 @@ __metadata: languageName: node linkType: hard +"@interchainjs/amino@npm:1.11.5": + version: 1.11.5 + resolution: "@interchainjs/amino@npm:1.11.5" + dependencies: + "@interchainjs/crypto": 1.11.5 + "@interchainjs/encoding": 1.11.5 + "@interchainjs/math": 1.11.5 + "@interchainjs/utils": 1.11.5 + checksum: f4d490a1d63f7271faad1f06ee0085ada8306a76408ac03e81796b62d8cde7a936f6e4e6a5966a24aadcd05f809f0ae5769e1e65f7364eee375aea8d341ef9de + languageName: node + linkType: hard + +"@interchainjs/auth@npm:1.11.5, @interchainjs/auth@npm:^1.11.5": + version: 1.11.5 + resolution: "@interchainjs/auth@npm:1.11.5" + dependencies: + "@interchainjs/types": 1.11.5 + "@interchainjs/utils": 1.11.5 + "@noble/curves": ^1.1.0 + "@noble/hashes": ^1.3.1 + "@scure/bip32": ^1.0.10 + ethers: ^6.5.1 + checksum: d4b8e07862cc85c4056ce8bb2fab76272d9097fcc9b85a826da7b23fff10e8958765caac4c6caaf1f93d479e135251f2e30c604c3b6c295f3676bc668a2b1185 + languageName: node + linkType: hard + +"@interchainjs/cosmos-types@npm:1.11.5": + version: 1.11.5 + resolution: "@interchainjs/cosmos-types@npm:1.11.5" + dependencies: + "@interchainjs/types": 1.11.5 + "@interchainjs/utils": 1.11.5 + checksum: e82a548063cb128ad47f6568af9fcd008fc4d565ed1649bfac6fa8fbec81d71aff0e2319e9e526c5d2a04aee2a0210e1d0e9bcee441b2e15845028ec6a4ff628 + languageName: node + linkType: hard + +"@interchainjs/cosmos@npm:1.11.5, @interchainjs/cosmos@npm:^1.11.5": + version: 1.11.5 + resolution: "@interchainjs/cosmos@npm:1.11.5" + dependencies: + "@interchainjs/auth": 1.11.5 + "@interchainjs/cosmos-types": 1.11.5 + "@interchainjs/types": 1.11.5 + "@interchainjs/utils": 1.11.5 + "@noble/curves": ^1.1.0 + "@noble/hashes": ^1.3.1 + decimal.js: ^10.4.3 + checksum: 4c1d51383e8cf933229b42d8c499a0187a760223f42b0baa6d61e220f4deee5d9eb17dd4ae3658167646cbb3673ed3507e326a858d84d339fe6c1224069cd5bd + languageName: node + linkType: hard + +"@interchainjs/crypto@npm:1.11.5": + version: 1.11.5 + resolution: "@interchainjs/crypto@npm:1.11.5" + dependencies: + "@interchainjs/encoding": 1.11.5 + "@interchainjs/math": 1.11.5 + "@interchainjs/utils": 1.11.5 + "@noble/hashes": ^1 + bn.js: ^5.2.0 + elliptic: ^6.5.4 + libsodium-wrappers-sumo: ^0.7.11 + checksum: 9060df8a0b7b1a9cae090c386d415570af576390bb7020200903e038148b0a6cbbcc7b2d00b59e0915c247957a48025812e8edfa5502729c2c89d75cd87891eb + languageName: node + linkType: hard + +"@interchainjs/encoding@npm:1.11.5": + version: 1.11.5 + resolution: "@interchainjs/encoding@npm:1.11.5" + dependencies: + "@interchainjs/math": 1.11.5 + base64-js: ^1.3.0 + bech32: ^1.1.4 + readonly-date: ^1.0.0 + checksum: dc33691382397c1726fd1f217fc3f6501b029af66a0d9dcb29a2cfcc208ac739109e9695afdaa8fe351ce0f35b876315db8d1de11c95f8880b5c32d734435cb5 + languageName: node + linkType: hard + +"@interchainjs/ethereum@npm:1.11.5, @interchainjs/ethereum@npm:^1.11.5": + version: 1.11.5 + resolution: "@interchainjs/ethereum@npm:1.11.5" + dependencies: + "@ethersproject/bignumber": ^5.7.0 + "@ethersproject/bytes": ^5.7.0 + "@ethersproject/hash": ^5.7.0 + "@ethersproject/transactions": ^5.7.0 + "@interchainjs/types": 1.11.5 + "@interchainjs/utils": 1.11.5 + "@noble/hashes": ^1.3.1 + ethereum-cryptography: ^3.1.0 + ethers: ^6.13.4 + rlp: ^3.0.0 + checksum: 99524050e2bbec999045b6c79737e37f88301109056dbecf8a7971b636292597339e3dfec57cef40ddff5250802f8cfd9e1e48b138f054bdd56869fe0b29b034 + languageName: node + linkType: hard + +"@interchainjs/injective@npm:^1.11.5": + version: 1.11.5 + resolution: "@interchainjs/injective@npm:1.11.5" + dependencies: + "@ethersproject/transactions": ^5.7.0 + "@interchainjs/auth": 1.11.5 + "@interchainjs/cosmos": 1.11.5 + "@interchainjs/cosmos-types": 1.11.5 + "@interchainjs/ethereum": 1.11.5 + "@interchainjs/types": 1.11.5 + "@interchainjs/utils": 1.11.5 + "@noble/hashes": ^1.3.1 + decimal.js: ^10.4.3 + interchainjs: 1.11.5 + checksum: 1083066c4abd43bffad63c9bcd22100b55f0a0a487ade382d2d797b85dfad3bfa0b95b4ce0c06309f5657759ed7f43def6e1b1d5e0639c9f0843c0defcf50ad3 + languageName: node + linkType: hard + +"@interchainjs/math@npm:1.11.5": + version: 1.11.5 + resolution: "@interchainjs/math@npm:1.11.5" + dependencies: + bn.js: ^5.2.0 + checksum: 1ad0a5e0d39d090a6e0e041b48da14bdde58b5298da984b5ddd51ce1fc365943977709ae94ccae54b50520aedf934ce44ae985835e23475db0981783a50625fb + languageName: node + linkType: hard + +"@interchainjs/pubkey@npm:1.11.5": + version: 1.11.5 + resolution: "@interchainjs/pubkey@npm:1.11.5" + dependencies: + "@interchainjs/amino": 1.11.5 + "@interchainjs/cosmos-types": 1.11.5 + "@interchainjs/encoding": 1.11.5 + "@interchainjs/math": 1.11.5 + "@interchainjs/types": 1.11.5 + checksum: ffcf474a536042925e66a6622297cf90ba219395f1a9cfc73960bb38498b434e5c06f3fda455649771773ef06c34535fe496a5d1b9c234e1e0157c842f6e8cc1 + languageName: node + linkType: hard + +"@interchainjs/types@npm:1.11.5": + version: 1.11.5 + resolution: "@interchainjs/types@npm:1.11.5" + dependencies: + decimal.js: ^10.4.3 + checksum: 359191dd16acb08937ffc78cdecde9da9ee99f83832650ba4c3ea6b7f2b1581fd51852aa39ff1d7ed64f7e685fd3c4eb8528111ddbf193fca0d1e511b6625c59 + languageName: node + linkType: hard + +"@interchainjs/utils@npm:1.11.5": + version: 1.11.5 + resolution: "@interchainjs/utils@npm:1.11.5" + dependencies: + "@interchainjs/types": 1.11.5 + bech32: ^2.0.0 + decimal.js: ^10.4.3 + peerDependencies: + "@chain-registry/v2": ^1.71.186 + "@chain-registry/v2-types": ^0.53.115 + checksum: 2789dfc9ebdc817f4c197ffd9ec8df624875a0d96768ef4ec5be00bc06beaa70ac80ebc8a3da2a48e831b4eefc3fc912cbd70975fd7a2b2b7ddbd8bb1ef19151 + languageName: node + linkType: hard + "@ioredis/commands@npm:^1.1.1": version: 1.2.0 resolution: "@ioredis/commands@npm:1.2.0" @@ -6388,6 +6743,13 @@ __metadata: languageName: node linkType: hard +"@noble/ciphers@npm:1.3.0": + version: 1.3.0 + resolution: "@noble/ciphers@npm:1.3.0" + checksum: 19722c35475df9bc78db60d261d0b5ef8a6d722561efc2135453f943eaa421b492195dc666e3e4df2b755bca3739e04f04b9c660198559f5dd05d3cfbf1b9e92 + languageName: node + linkType: hard + "@noble/ciphers@npm:^1.0.0": version: 1.1.3 resolution: "@noble/ciphers@npm:1.1.3" @@ -6440,7 +6802,7 @@ __metadata: languageName: node linkType: hard -"@noble/curves@npm:^1.8.1": +"@noble/curves@npm:1.9.0, @noble/curves@npm:^1.1.0, @noble/curves@npm:^1.8.1, @noble/curves@npm:~1.9.0": version: 1.9.0 resolution: "@noble/curves@npm:1.9.0" dependencies: @@ -6500,7 +6862,7 @@ __metadata: languageName: node linkType: hard -"@noble/hashes@npm:1.8.0, @noble/hashes@npm:^1.7.1": +"@noble/hashes@npm:1.8.0, @noble/hashes@npm:^1.7.1, @noble/hashes@npm:~1.8.0": version: 1.8.0 resolution: "@noble/hashes@npm:1.8.0" checksum: c94e98b941963676feaba62475b1ccfa8341e3f572adbb3b684ee38b658df44100187fa0ef4220da580b13f8d27e87d5492623c8a02ecc61f23fb9960c7918f5 @@ -7791,6 +8153,13 @@ __metadata: languageName: node linkType: hard +"@scure/base@npm:~1.2.5": + version: 1.2.5 + resolution: "@scure/base@npm:1.2.5" + checksum: 79f76781d4f55fa2ce36e4d6f950a76234a81f81c9f5f33794ee82077e5c8005e84a1491684a0643e77734e3dd1cd8367930d2a165a9c0af4d3c526ffe7407f8 + languageName: node + linkType: hard + "@scure/bip32@npm:1.4.0": version: 1.4.0 resolution: "@scure/bip32@npm:1.4.0" @@ -7824,6 +8193,17 @@ __metadata: languageName: node linkType: hard +"@scure/bip32@npm:1.7.0, @scure/bip32@npm:^1.0.10": + version: 1.7.0 + resolution: "@scure/bip32@npm:1.7.0" + dependencies: + "@noble/curves": ~1.9.0 + "@noble/hashes": ~1.8.0 + "@scure/base": ~1.2.5 + checksum: c83adca5a74ec5c4ded8ba93900d0065e4767c4759cf24c2674923aef01d45ba56f171574e3519f2341be99f53a333f01b674eb6cfeb6fa8379607c6d1bc90b5 + languageName: node + linkType: hard + "@scure/bip39@npm:1.3.0": version: 1.3.0 resolution: "@scure/bip39@npm:1.3.0" @@ -7854,6 +8234,16 @@ __metadata: languageName: node linkType: hard +"@scure/bip39@npm:1.6.0": + version: 1.6.0 + resolution: "@scure/bip39@npm:1.6.0" + dependencies: + "@noble/hashes": ~1.8.0 + "@scure/base": ~1.2.5 + checksum: 96d46420780473d6c6c9700254a0eceec60302f61d7f9d7f29024e90c7acff3e8e40a5ee52dfaf104db539a10462e531996aaf9e69f082b8540b0a25870545fc + languageName: node + linkType: hard + "@scure/starknet@npm:~1.0.0": version: 1.0.0 resolution: "@scure/starknet@npm:1.0.0" @@ -7985,6 +8375,7 @@ __metadata: version: 0.0.0-use.local resolution: "@skip-go/client@workspace:packages/client" dependencies: + "@chain-registry/v2": ^1.71.203 "@cosmjs/amino": 0.33.1 "@cosmjs/cosmwasm-stargate": 0.33.1 "@cosmjs/encoding": 0.33.1 @@ -7997,6 +8388,10 @@ __metadata: "@cosmology/telescope": 1.8.3 "@initia/initia-registry": ^1.0.4 "@injectivelabs/sdk-ts": 1.15.3 + "@interchainjs/auth": ^1.11.5 + "@interchainjs/cosmos": ^1.11.5 + "@interchainjs/ethereum": ^1.11.5 + "@interchainjs/injective": ^1.11.5 "@keplr-wallet/unit": ^0.12.143 "@protobufs/gogoproto": 0.0.10 "@protobufs/google": 0.0.10 @@ -8033,6 +8428,7 @@ __metadata: "@eslint/compat": ^1.1.1 "@eslint/js": ^9.9.0 "@initia/initia-registry": ^1.0.4 + "@interchainjs/cosmos": ^1.11.5 "@keplr-wallet/types": ^0.12.125 "@leapwallet/cosmos-social-login-capsule-provider": ^0.0.44 "@penumbra-zone/bech32m": ^13.0.0 @@ -14884,6 +15280,13 @@ __metadata: languageName: node linkType: hard +"decimal.js@npm:^10.4.3": + version: 10.5.0 + resolution: "decimal.js@npm:10.5.0" + checksum: 91c6b53b5dd2f39a05535349ced6840f591d1f914e3c025c6dcec6ffada6e3cfc8dc3f560d304b716be9a9aece3567a7f80f6aff8f38d11ab6f78541c3a91a01 + languageName: node + linkType: hard + "decode-uri-component@npm:^0.2.0, decode-uri-component@npm:^0.2.2": version: 0.2.2 resolution: "decode-uri-component@npm:0.2.2" @@ -15537,9 +15940,9 @@ __metadata: languageName: node linkType: hard -"elliptic@npm:^6.4.0, elliptic@npm:^6.5.2, elliptic@npm:^6.5.3, elliptic@npm:^6.5.4, elliptic@npm:^6.5.5": - version: 6.5.5 - resolution: "elliptic@npm:6.5.5" +"elliptic@npm:6.6.1, elliptic@npm:^6.5.7, elliptic@npm:^6.6.1": + version: 6.6.1 + resolution: "elliptic@npm:6.6.1" dependencies: bn.js: ^4.11.9 brorand: ^1.1.0 @@ -15548,13 +15951,13 @@ __metadata: inherits: ^2.0.4 minimalistic-assert: ^1.0.1 minimalistic-crypto-utils: ^1.0.1 - checksum: ec9105e4469eb3b32b0ee2579756c888ddf3f99d259aa0d65fccb906ee877768aaf8880caae73e3e669c9a4adeb3eb1945703aa974ec5000d2d33a239f4567eb + checksum: 27b14a52f68bbbc0720da259f712cb73e953f6d2047958cd02fb0d0ade2e83849dc39fb4af630889c67df8817e24237428cf59c4f4c07700f755b401149a7375 languageName: node linkType: hard -"elliptic@npm:^6.5.7, elliptic@npm:^6.6.1": - version: 6.6.1 - resolution: "elliptic@npm:6.6.1" +"elliptic@npm:^6.4.0, elliptic@npm:^6.5.2, elliptic@npm:^6.5.3, elliptic@npm:^6.5.4, elliptic@npm:^6.5.5": + version: 6.5.5 + resolution: "elliptic@npm:6.5.5" dependencies: bn.js: ^4.11.9 brorand: ^1.1.0 @@ -15563,7 +15966,7 @@ __metadata: inherits: ^2.0.4 minimalistic-assert: ^1.0.1 minimalistic-crypto-utils: ^1.0.1 - checksum: 27b14a52f68bbbc0720da259f712cb73e953f6d2047958cd02fb0d0ade2e83849dc39fb4af630889c67df8817e24237428cf59c4f4c07700f755b401149a7375 + checksum: ec9105e4469eb3b32b0ee2579756c888ddf3f99d259aa0d65fccb906ee877768aaf8880caae73e3e669c9a4adeb3eb1945703aa974ec5000d2d33a239f4567eb languageName: node linkType: hard @@ -16788,6 +17191,19 @@ __metadata: languageName: node linkType: hard +"ethereum-cryptography@npm:^3.1.0": + version: 3.2.0 + resolution: "ethereum-cryptography@npm:3.2.0" + dependencies: + "@noble/ciphers": 1.3.0 + "@noble/curves": 1.9.0 + "@noble/hashes": 1.8.0 + "@scure/bip32": 1.7.0 + "@scure/bip39": 1.6.0 + checksum: 00c5cf09d25d796c2982c82faba2ddc13fb5270c71ae97008c40c6ffb3338e9df238f9cef9e86970f2612d4cbef4a93892c9c03b771492065a8da6bb3571f409 + languageName: node + linkType: hard + "ethereumjs-util@npm:7.1.5, ethereumjs-util@npm:^7.1.5": version: 7.1.5 resolution: "ethereumjs-util@npm:7.1.5" @@ -16816,6 +17232,21 @@ __metadata: languageName: node linkType: hard +"ethers@npm:^6.13.4, ethers@npm:^6.5.1": + version: 6.14.0 + resolution: "ethers@npm:6.14.0" + dependencies: + "@adraffy/ens-normalize": 1.10.1 + "@noble/curves": 1.2.0 + "@noble/hashes": 1.3.2 + "@types/node": 22.7.5 + aes-js: 4.0.0-beta.5 + tslib: 2.7.0 + ws: 8.17.1 + checksum: 937cab802131b289ca9a278fce595dff5977d358c5e2c72603e321a67a3ed531b4c19ddeec555d53fd474f75e101d599b6962cb3e33a691b526ecfebed9482d8 + languageName: node + linkType: hard + "ethers@npm:^6.13.5": version: 6.13.7 resolution: "ethers@npm:6.13.7" @@ -18860,6 +19291,22 @@ __metadata: languageName: node linkType: hard +"interchainjs@npm:1.11.5": + version: 1.11.5 + resolution: "interchainjs@npm:1.11.5" + dependencies: + "@interchainjs/cosmos": 1.11.5 + "@interchainjs/cosmos-types": 1.11.5 + "@interchainjs/encoding": 1.11.5 + "@interchainjs/pubkey": 1.11.5 + "@interchainjs/types": 1.11.5 + "@interchainjs/utils": 1.11.5 + "@noble/hashes": ^1.3.1 + decimal.js: ^10.4.3 + checksum: a0b333d1a2856a4ac4ef129a1828eaf7e098fc4eefe9915a2ff7e117802e46e99cc1640074a7d8d60bd61ca64707bac3409223aa491bdf31a02c2aef57906028 + languageName: node + linkType: hard + "interpret@npm:^1.0.0": version: 1.4.0 resolution: "interpret@npm:1.4.0" @@ -25236,6 +25683,15 @@ __metadata: languageName: node linkType: hard +"rlp@npm:^3.0.0": + version: 3.0.0 + resolution: "rlp@npm:3.0.0" + bin: + rlp: bin/rlp + checksum: d1d8003b2be0b25083d842571c0cdc3f2ed4f8b6cc2edf46239e240ba7f73b57ca419cea544394c38bd6b0125e728945af5b167370385d9462e04559b2332e69 + languageName: node + linkType: hard + "rollup-plugin-copy@npm:^3.5.0": version: 3.5.0 resolution: "rollup-plugin-copy@npm:3.5.0" From 20c16684970bf447cb8434b1fc57c038ff3c8f9f Mon Sep 17 00:00:00 2001 From: Todd Kao Date: Wed, 7 May 2025 18:15:18 -0400 Subject: [PATCH 2/3] Update executeCosmosTransaction.ts --- .../cosmos/executeCosmosTransaction.ts | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/packages/client/src/private-functions/cosmos/executeCosmosTransaction.ts b/packages/client/src/private-functions/cosmos/executeCosmosTransaction.ts index a62126c1b..0c9c397e6 100644 --- a/packages/client/src/private-functions/cosmos/executeCosmosTransaction.ts +++ b/packages/client/src/private-functions/cosmos/executeCosmosTransaction.ts @@ -7,17 +7,12 @@ import { isOfflineDirectSigner } from "@cosmjs/proto-signing/build/signer"; import { signCosmosMessageDirect } from "./signCosmosMessageDirect"; import { signCosmosMessageAmino } from "./signCosmosMessageAmino"; import { ExecuteRouteOptions } from "src/public-functions/executeRoute"; -import { AminoSigner } from "@interchainjs/cosmos/signers/amino"; import { SigningClient } from "@interchainjs/cosmos/signing-client"; -import { - ICosmosGenericOfflineSigner, - OfflineAminoSigner, - OfflineDirectSigner, -} from "@interchainjs/cosmos/types/wallet"; -import { toEncoders } from "@interchainjs/cosmos/utils"; import { getEncodeObjectFromCosmosMessage } from "./getEncodeObjectFromCosmosMessage"; import { getRpcEndpointForChain } from "../getRpcEndpointForChain"; import { AminoConverter } from "@cosmjs/stargate"; +import { toCamel } from "src/utils/convert"; +import { ICosmosGenericOfflineSigner } from "@interchainjs/cosmos/types/wallet"; type ExecuteCosmosTransactionProps = { tx?: { @@ -137,9 +132,10 @@ export const executeCosmosTransaction = async ({ console.log("got signer", signer); - const encodeObjectMessages = messages.map((cosmosMsg) => - getEncodeObjectFromCosmosMessage(cosmosMsg), - ); + const encodeObjectMessages = messages.map((cosmosMsg) => ({ + typeUrl: cosmosMsg.msgTypeUrl ?? "", + value: toCamel(JSON.parse(cosmosMsg.msg ?? "")), + })); console.log(currentUserAddress, encodeObjectMessages); From 2c3bce57fa67bb4d64ed6db5b2a3458741b07ba7 Mon Sep 17 00:00:00 2001 From: Todd Kao Date: Mon, 12 May 2025 11:57:33 -0400 Subject: [PATCH 3/3] test --- .../cosmos/executeCosmosTransaction.ts | 12 ++++++++---- packages/client/src/state.ts | 3 ++- packages/widget/src/state/swapExecutionPage.ts | 18 +++++++----------- 3 files changed, 17 insertions(+), 16 deletions(-) diff --git a/packages/client/src/private-functions/cosmos/executeCosmosTransaction.ts b/packages/client/src/private-functions/cosmos/executeCosmosTransaction.ts index 0c9c397e6..5f6fe67ef 100644 --- a/packages/client/src/private-functions/cosmos/executeCosmosTransaction.ts +++ b/packages/client/src/private-functions/cosmos/executeCosmosTransaction.ts @@ -132,10 +132,14 @@ export const executeCosmosTransaction = async ({ console.log("got signer", signer); - const encodeObjectMessages = messages.map((cosmosMsg) => ({ - typeUrl: cosmosMsg.msgTypeUrl ?? "", - value: toCamel(JSON.parse(cosmosMsg.msg ?? "")), - })); + // const encodeObjectMessages = messages.map((cosmosMsg) => ({ + // typeUrl: cosmosMsg.msgTypeUrl ?? "", + // value: toCamel(JSON.parse(cosmosMsg.msg ?? "")), + // })); + + const encodeObjectMessages = messages.map((cosmosMsg) => + getEncodeObjectFromCosmosMessage(cosmosMsg), + ); console.log(currentUserAddress, encodeObjectMessages); diff --git a/packages/client/src/state.ts b/packages/client/src/state.ts index c59f34167..b00e1a1e4 100644 --- a/packages/client/src/state.ts +++ b/packages/client/src/state.ts @@ -1,4 +1,4 @@ -import { GeneratedType, Registry } from "@cosmjs/proto-signing"; +import { GeneratedType } from "@cosmjs/proto-signing"; import { AminoConverters, AminoTypes, SigningStargateClient } from "@cosmjs/stargate"; import { Chain, Asset, ChainAffiliates } from "./types/swaggerTypes"; import { ApiResponse } from "./utils/generateApi"; @@ -7,6 +7,7 @@ import { getMainnetAndTestnetAssets } from "./private-functions/getMainnetAndTes import { balances } from "./api/postBalances"; import { EndpointOptions, SignerGetters, ValidateGasResult } from "src/types/client-types"; import { SkipApiOptions } from "./utils/fetchClient"; +import { Registry } from "@interchainjs/cosmos/types/signing-client"; // eslint-disable-next-line @typescript-eslint/no-extraneous-class export class ClientState { diff --git a/packages/widget/src/state/swapExecutionPage.ts b/packages/widget/src/state/swapExecutionPage.ts index 4421db936..f77e32051 100644 --- a/packages/widget/src/state/swapExecutionPage.ts +++ b/packages/widget/src/state/swapExecutionPage.ts @@ -36,7 +36,7 @@ import { getWallet, WalletType } from "graz"; import { config } from "@/constants/wagmi"; import { WalletClient } from "viem"; import { getWalletClient } from "@wagmi/core"; -import { SIGN_MODE, AccountData, StdSignDoc } from "@interchainjs/types"; +import { SIGN_MODE, AccountData, StdSignDoc, SignDoc } from "@interchainjs/types"; import { OfflineDirectSigner } from "@interchainjs/cosmos/types/wallet"; type ValidatingGasBalanceData = { @@ -423,12 +423,11 @@ export const skipSubmitSwapExecutionAtom = atomWithMutation((get) => { } const key = await wallet.getKey(chainId); - const offlineSigner = key.isNanoLedger - ? wallet.getOfflineSignerOnlyAmino(chainId) - : wallet.getOfflineSigner(chainId); + const aminoSigner = wallet.getOfflineSignerOnlyAmino(chainId); - const response = await offlineSigner.getAccounts(); - console.log(response); + const offlineDirectSigner = wallet.getOfflineSigner(chainId); + + const offlineSigner = key.isNanoLedger ? aminoSigner : offlineDirectSigner; return { getAccounts: () => offlineSigner.getAccounts(), @@ -442,12 +441,9 @@ export const skipSubmitSwapExecutionAtom = atomWithMutation((get) => { signDoc: StdSignDoc; }) => { if (key.isNanoLedger) { - return offlineSigner.signAmino?.(signerAddress, signDoc); + return aminoSigner.signAmino?.(signerAddress, signDoc); } - return (offlineSigner as unknown as OfflineDirectSigner).signDirect?.( - signerAddress, - signDoc, - ); + return offlineDirectSigner.signDirect?.(signerAddress, signDoc); }, }; },