import { OfflineSigner, GeneratedType, Registry } from "@cosmjs/proto-signing"; import { defaultRegistryTypes, AminoTypes, SigningStargateClient } from "@cosmjs/stargate"; import * as cosmwasmWasmV1TxRegistry from "./wasm/v1/tx.registry"; import * as cosmwasmWasmV1TxAmino from "./wasm/v1/tx.amino"; export const getSigningCosmwasmClientOptions = ({ defaultTypes = defaultRegistryTypes }: { defaultTypes?: ReadonlyArray<[string, GeneratedType]>; } = {}): { registry: Registry; aminoTypes: AminoTypes; } => { const registry = new Registry([...defaultTypes, ...cosmwasmWasmV1TxRegistry.registry]); const aminoTypes = new AminoTypes({ ...cosmwasmWasmV1TxAmino.AminoConverter }); return { registry, aminoTypes }; }; export const getSigningCosmwasmClient = async ({ rpcEndpoint, signer, defaultTypes = defaultRegistryTypes }: { rpcEndpoint: string; signer: OfflineSigner; defaultTypes?: ReadonlyArray<[string, GeneratedType]>; }) => { const { registry, aminoTypes } = getSigningCosmwasmClientOptions({ defaultTypes }); const client = await SigningStargateClient.connectWithSigner(rpcEndpoint, signer, { registry, aminoTypes }); return client; };