@uswap/toolboxes 4.3.6 → 4.3.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/cardano/index.cjs +2 -2
- package/dist/src/cardano/index.cjs.map +3 -3
- package/dist/src/cardano/index.js +2 -2
- package/dist/src/cardano/index.js.map +3 -3
- package/dist/src/cosmos/index.cjs +2 -2
- package/dist/src/cosmos/index.cjs.map +8 -8
- package/dist/src/cosmos/index.js +2 -2
- package/dist/src/cosmos/index.js.map +8 -8
- package/dist/src/evm/index.cjs +2 -2
- package/dist/src/evm/index.cjs.map +7 -7
- package/dist/src/evm/index.js +2 -2
- package/dist/src/evm/index.js.map +7 -7
- package/dist/src/index.cjs +3 -3
- package/dist/src/index.cjs.map +34 -34
- package/dist/src/index.js +3 -3
- package/dist/src/index.js.map +34 -34
- package/dist/src/near/index.cjs +2 -2
- package/dist/src/near/index.cjs.map +5 -5
- package/dist/src/near/index.js +2 -2
- package/dist/src/near/index.js.map +5 -5
- package/dist/src/radix/index.cjs +2 -2
- package/dist/src/radix/index.cjs.map +3 -3
- package/dist/src/radix/index.js +2 -2
- package/dist/src/radix/index.js.map +3 -3
- package/dist/src/ripple/index.cjs +2 -2
- package/dist/src/ripple/index.cjs.map +3 -3
- package/dist/src/ripple/index.js +2 -2
- package/dist/src/ripple/index.js.map +3 -3
- package/dist/src/solana/index.cjs +2 -2
- package/dist/src/solana/index.cjs.map +3 -3
- package/dist/src/solana/index.js +2 -2
- package/dist/src/solana/index.js.map +3 -3
- package/dist/src/substrate/index.cjs +2 -2
- package/dist/src/substrate/index.cjs.map +4 -4
- package/dist/src/substrate/index.js +2 -2
- package/dist/src/substrate/index.js.map +4 -4
- package/dist/src/sui/index.cjs +2 -2
- package/dist/src/sui/index.cjs.map +3 -3
- package/dist/src/sui/index.js +2 -2
- package/dist/src/sui/index.js.map +3 -3
- package/dist/src/ton/index.cjs +2 -2
- package/dist/src/ton/index.cjs.map +3 -3
- package/dist/src/ton/index.js +2 -2
- package/dist/src/ton/index.js.map +3 -3
- package/dist/src/tron/index.cjs +2 -2
- package/dist/src/tron/index.cjs.map +4 -4
- package/dist/src/tron/index.js +2 -2
- package/dist/src/tron/index.js.map +4 -4
- package/dist/src/utxo/index.cjs +3 -3
- package/dist/src/utxo/index.cjs.map +11 -11
- package/dist/src/utxo/index.js +3 -3
- package/dist/src/utxo/index.js.map +11 -11
- package/dist/types/cardano/toolbox.d.ts +5 -0
- package/dist/types/cardano/toolbox.d.ts.map +1 -1
- package/dist/types/cosmos/thorchainUtils/addressFormat.d.ts +5 -0
- package/dist/types/cosmos/thorchainUtils/addressFormat.d.ts.map +1 -1
- package/dist/types/cosmos/thorchainUtils/messages.d.ts +5 -0
- package/dist/types/cosmos/thorchainUtils/messages.d.ts.map +1 -1
- package/dist/types/cosmos/toolbox/cosmos.d.ts +5 -0
- package/dist/types/cosmos/toolbox/cosmos.d.ts.map +1 -1
- package/dist/types/cosmos/toolbox/index.d.ts +5 -0
- package/dist/types/cosmos/toolbox/index.d.ts.map +1 -1
- package/dist/types/cosmos/toolbox/thorchain.d.ts +5 -0
- package/dist/types/cosmos/toolbox/thorchain.d.ts.map +1 -1
- package/dist/types/cosmos/util.d.ts +5 -0
- package/dist/types/cosmos/util.d.ts.map +1 -1
- package/dist/types/evm/helpers.d.ts +1 -1
- package/dist/types/evm/helpers.d.ts.map +1 -1
- package/dist/types/evm/toolbox/baseEVMToolbox.d.ts +7 -0
- package/dist/types/evm/toolbox/baseEVMToolbox.d.ts.map +1 -1
- package/dist/types/evm/toolbox/evm.d.ts +38 -38
- package/dist/types/evm/toolbox/evm.d.ts.map +1 -1
- package/dist/types/evm/toolbox/op.d.ts +7 -14
- package/dist/types/evm/toolbox/op.d.ts.map +1 -1
- package/dist/types/index.d.ts +5 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/near/helpers/core.d.ts +5 -0
- package/dist/types/near/helpers/core.d.ts.map +1 -1
- package/dist/types/near/toolbox.d.ts +5 -0
- package/dist/types/near/toolbox.d.ts.map +1 -1
- package/dist/types/radix/index.d.ts +5 -0
- package/dist/types/radix/index.d.ts.map +1 -1
- package/dist/types/ripple/index.d.ts +5 -0
- package/dist/types/ripple/index.d.ts.map +1 -1
- package/dist/types/solana/toolbox.d.ts +5 -0
- package/dist/types/solana/toolbox.d.ts.map +1 -1
- package/dist/types/substrate/substrate.d.ts +5 -0
- package/dist/types/substrate/substrate.d.ts.map +1 -1
- package/dist/types/sui/toolbox.d.ts +5 -0
- package/dist/types/sui/toolbox.d.ts.map +1 -1
- package/dist/types/ton/toolbox.d.ts +5 -0
- package/dist/types/ton/toolbox.d.ts.map +1 -1
- package/dist/types/tron/helpers/trongrid.d.ts +5 -0
- package/dist/types/tron/helpers/trongrid.d.ts.map +1 -1
- package/dist/types/tron/toolbox.d.ts +5 -0
- package/dist/types/tron/toolbox.d.ts.map +1 -1
- package/dist/types/utils.d.ts.map +1 -1
- package/dist/types/utxo/helpers/api.d.ts +5 -0
- package/dist/types/utxo/helpers/api.d.ts.map +1 -1
- package/dist/types/utxo/helpers/bchaddrjs.d.ts +5 -0
- package/dist/types/utxo/helpers/bchaddrjs.d.ts.map +1 -1
- package/dist/types/utxo/helpers/coinselect.d.ts +5 -0
- package/dist/types/utxo/helpers/coinselect.d.ts.map +1 -1
- package/dist/types/utxo/helpers/txSize.d.ts +5 -0
- package/dist/types/utxo/helpers/txSize.d.ts.map +1 -1
- package/dist/types/utxo/toolbox/bitcoinCash.d.ts +5 -0
- package/dist/types/utxo/toolbox/bitcoinCash.d.ts.map +1 -1
- package/dist/types/utxo/toolbox/index.d.ts +5 -0
- package/dist/types/utxo/toolbox/index.d.ts.map +1 -1
- package/dist/types/utxo/toolbox/utxo.d.ts +5 -0
- package/dist/types/utxo/toolbox/utxo.d.ts.map +1 -1
- package/dist/types/utxo/toolbox/zcash.d.ts +6 -1
- package/dist/types/utxo/toolbox/zcash.d.ts.map +1 -1
- package/package.json +4 -4
- package/src/cardano/toolbox.ts +12 -6
- package/src/cosmos/__tests__/toolbox.test.ts +8 -4
- package/src/cosmos/thorchainUtils/addressFormat.ts +8 -2
- package/src/cosmos/thorchainUtils/messages.ts +8 -2
- package/src/cosmos/toolbox/cosmos.ts +11 -5
- package/src/cosmos/toolbox/index.ts +8 -2
- package/src/cosmos/toolbox/thorchain.ts +9 -3
- package/src/cosmos/util.ts +9 -3
- package/src/evm/helpers.ts +7 -9
- package/src/evm/toolbox/baseEVMToolbox.ts +34 -26
- package/src/evm/toolbox/evm.ts +2 -3
- package/src/evm/toolbox/op.ts +10 -17
- package/src/index.ts +8 -2
- package/src/near/helpers/core.ts +8 -2
- package/src/near/toolbox.ts +21 -15
- package/src/radix/index.ts +15 -3
- package/src/ripple/index.ts +15 -12
- package/src/solana/toolbox.ts +16 -16
- package/src/substrate/balance.ts +2 -2
- package/src/substrate/substrate.ts +17 -11
- package/src/sui/__tests__/toolbox.test.ts +9 -5
- package/src/sui/toolbox.ts +18 -11
- package/src/ton/__tests__/toolbox.test.ts +9 -5
- package/src/ton/toolbox.ts +14 -8
- package/src/tron/helpers/trongrid.ts +8 -2
- package/src/tron/toolbox.ts +21 -15
- package/src/utils.ts +8 -1
- package/src/utxo/helpers/api.ts +15 -9
- package/src/utxo/helpers/bchaddrjs.ts +9 -3
- package/src/utxo/helpers/coinselect.ts +8 -2
- package/src/utxo/helpers/txSize.ts +8 -2
- package/src/utxo/toolbox/bitcoinCash.ts +13 -7
- package/src/utxo/toolbox/index.ts +8 -2
- package/src/utxo/toolbox/utxo.ts +16 -10
- package/src/utxo/toolbox/zcash.ts +24 -21
|
@@ -2,19 +2,19 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/cosmos/thorchainUtils/addressFormat.ts", "../src/cosmos/util.ts", "../src/cosmos/thorchainUtils/types/MsgCompiled.ts", "../src/cosmos/thorchainUtils/registry.ts", "../src/cosmos/thorchainUtils/messages.ts", "../src/cosmos/thorchainUtils/types/index.ts", "../src/cosmos/thorchainUtils/index.ts", "../src/cosmos/toolbox/cosmos.ts", "../src/cosmos/toolbox/thorchain.ts", "../src/cosmos/toolbox/index.ts", "../src/cosmos/index.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
|
-
"
|
|
6
|
-
"
|
|
5
|
+
"/**\n * Based on code from SwapKit (https://github.com/swapkit/SwapKit),\n * licensed under the Apache License 2.0.\n * Modifications © 2025 Horizontal Systems.\n */\n\nimport { base64, bech32 } from \"@scure/base\";\nimport { USwapError } from \"@uswap/helpers\";\nimport { fromByteArray, toByteArray } from \"base64-js\";\n\nexport function bech32ToBase64(address: string) {\n return base64.encode(Uint8Array.from(bech32.fromWords(bech32.decode(address as `${string}1${string}`).words)));\n}\n\nexport function base64ToBech32(address: string, prefix = \"thor\") {\n return bech32.encode(prefix, bech32.toWords(base64.decode(address)));\n}\n\nexport function toBase64(data: Uint8Array) {\n return fromByteArray(data);\n}\n\nexport function fromBase64(base64String: string) {\n if (!base64String.match(/^[a-zA-Z0-9+/]*={0,2}$/)) {\n throw new USwapError(\"toolbox_cosmos_invalid_params\", { error: \"Invalid base64 string format\" });\n }\n return toByteArray(base64String);\n}\n",
|
|
6
|
+
"/**\n * Based on code from SwapKit (https://github.com/swapkit/SwapKit),\n * licensed under the Apache License 2.0.\n * Modifications © 2025 Horizontal Systems.\n */\n\nimport type { OfflineSigner } from \"@cosmjs/proto-signing\";\nimport type { SigningStargateClientOptions } from \"@cosmjs/stargate\";\nimport { AssetValue, Chain, type CosmosChain, getChainConfig, getRPCUrl, USwapError } from \"@uswap/helpers\";\nimport type { CosmosCreateTransactionParams } from \"./types\";\n\nexport const USK_KUJIRA_FACTORY_DENOM =\n \"FACTORY/KUJIRA1QK00H5ATUTPSV900X202PXX42NPJR9THG58DNQPA72F2P7M2LUASE444A7/UUSK\";\n\nexport const YUM_KUJIRA_FACTORY_DENOM = \"FACTORY/KUJIRA1YGFXN0ER40KLCNCK8THLTUPRDXLCK6WVNPKF2K/UYUM\";\n\nexport const DEFAULT_COSMOS_FEE_MAINNET = { amount: [{ amount: \"500\", denom: \"uatom\" }], gas: \"200000\" };\n\nexport const DEFAULT_KUJI_FEE_MAINNET = { amount: [{ amount: \"1000\", denom: \"ukuji\" }], gas: \"200000\" };\n\nexport const DEFAULT_NOBLE_FEE_MAINNET = { amount: [{ amount: \"1000\", denom: \"uusdc\" }], gas: \"200000\" };\n\nexport function getDefaultChainFee(chain: CosmosChain) {\n switch (chain) {\n case Chain.Maya:\n return { amount: [], gas: \"10000000000\" };\n case Chain.THORChain:\n return { amount: [], gas: \"500000000\" };\n case Chain.Kujira:\n return DEFAULT_KUJI_FEE_MAINNET;\n case Chain.Noble:\n return DEFAULT_NOBLE_FEE_MAINNET;\n default:\n return DEFAULT_COSMOS_FEE_MAINNET;\n }\n}\n\nexport const getMsgSendDenom = (symbol: string, isThorchain = false) => {\n if (isThorchain) {\n return symbol.toLowerCase();\n }\n\n switch (symbol) {\n case \"uUSK\":\n case \"USK\":\n return USK_KUJIRA_FACTORY_DENOM;\n case \"uYUM\":\n case \"YUM\":\n return YUM_KUJIRA_FACTORY_DENOM;\n case \"uKUJI\":\n case \"KUJI\":\n return \"ukuji\";\n case \"ATOM\":\n case \"uATOM\":\n return \"uatom\";\n case \"uUSDC\":\n case \"USDC\":\n return \"uusdc\";\n default:\n return symbol;\n }\n};\n\nexport const getDenomWithChain = ({ symbol, chain }: AssetValue) => {\n if (chain === Chain.Maya) {\n return (symbol.toUpperCase() !== \"CACAO\" ? symbol : `${Chain.Maya}.${symbol}`).toUpperCase();\n }\n if (chain === Chain.THORChain) {\n return (\n [\"RUNE\", \"TCY\", \"RUJI\"].includes(symbol.toUpperCase()) ? `${Chain.THORChain}.${symbol}` : symbol\n ).toUpperCase();\n }\n return getMsgSendDenom(symbol, false);\n};\n\nexport async function createStargateClient(url: string) {\n const imported = await import(\"@cosmjs/stargate\");\n\n const StargateClient = imported.StargateClient ?? imported.default?.StargateClient;\n\n const defaultRequestHeaders =\n typeof window !== \"undefined\"\n ? ({} as Record<string, string>)\n : { referer: \"https://sdk.swapkit.dev\", referrer: \"https://sdk.swapkit.dev\" };\n\n return StargateClient.connect({ headers: defaultRequestHeaders, url });\n}\n\nexport async function createSigningStargateClient(\n url: string,\n signer: OfflineSigner,\n optionsOrBaseGas: string | SigningStargateClientOptions = {},\n) {\n const imported = await import(\"@cosmjs/stargate\");\n const SigningStargateClient = imported.SigningStargateClient ?? imported.default?.SigningStargateClient;\n const GasPrice = imported.GasPrice ?? imported.default?.GasPrice;\n const gasPrice = typeof optionsOrBaseGas === \"string\" ? optionsOrBaseGas : \"0.0003uatom\";\n const options = typeof optionsOrBaseGas === \"string\" ? {} : optionsOrBaseGas;\n\n return SigningStargateClient.connectWithSigner(url, signer, { gasPrice: GasPrice.fromString(gasPrice), ...options });\n}\n\nexport async function createOfflineStargateClient(wallet: OfflineSigner, registry?: SigningStargateClientOptions) {\n const imported = await import(\"@cosmjs/stargate\");\n const SigningStargateClient = imported.SigningStargateClient ?? imported.default?.SigningStargateClient;\n return SigningStargateClient.offline(wallet, registry);\n}\n\nconst getTransferMsgTypeByChain = (chain: CosmosChain) => {\n switch (chain) {\n case Chain.Maya:\n case Chain.THORChain:\n return \"/types.MsgSend\";\n case Chain.Cosmos:\n case Chain.Kujira:\n case Chain.Noble:\n return \"/cosmos.bank.v1beta1.MsgSend\";\n default:\n throw new USwapError(\"toolbox_cosmos_not_supported\", { chain });\n }\n};\n\n/**\n * Used to build tx for Cosmos and Kujira\n */\nexport async function cosmosCreateTransaction({\n sender,\n recipient,\n assetValue,\n memo = \"\",\n feeRate,\n sequence,\n accountNumber,\n}: CosmosCreateTransactionParams) {\n const { chain, chainId } = assetValue;\n\n const rpcUrl = await getRPCUrl(chain);\n const client = await createStargateClient(rpcUrl);\n const accountOnChain = await client.getAccount(sender);\n\n if (!accountOnChain) {\n throw new USwapError(\"toolbox_cosmos_account_not_found\", { sender });\n }\n\n const gasAsset = AssetValue.from({ chain });\n const feeAsset = getMsgSendDenom(gasAsset.symbol);\n const defaultFee = getDefaultChainFee(chain as CosmosChain);\n\n const txFee =\n feeAsset && feeRate\n ? { amount: [{ amount: feeRate.toString(), denom: feeAsset }], gas: defaultFee.gas }\n : defaultFee;\n\n const msgSend = {\n amount: [{ amount: assetValue.getBaseValue(\"string\"), denom: getMsgSendDenom(assetValue.symbol) }],\n fromAddress: sender,\n toAddress: recipient,\n };\n\n return {\n accountNumber: accountNumber ?? accountOnChain.accountNumber,\n chainId,\n fee: txFee,\n memo,\n msgs: [{ typeUrl: getTransferMsgTypeByChain(chain as CosmosChain), value: msgSend }],\n sequence: sequence ?? accountOnChain.sequence,\n };\n}\n\n// Map of known denoms to their asset configurations\nconst DENOM_MAP = {\n atom: { chain: Chain.Cosmos, decimals: getChainConfig(Chain.Cosmos).baseDecimal },\n\n // Maya denoms\n cacao: { chain: Chain.Maya, decimals: 10 }, // Maya uses 10 decimals for CACAO\n kuji: { chain: Chain.Kujira, decimals: getChainConfig(Chain.Kujira).baseDecimal },\n maya: { asset: `${Chain.Maya}.${Chain.Maya}`, decimals: 4 }, // MAYA token uses 4 decimals\n // THORChain denoms\n rune: { chain: Chain.THORChain, decimals: getChainConfig(Chain.THORChain).baseDecimal },\n tcy: { asset: \"THOR.TCY\", decimals: getChainConfig(Chain.THORChain).baseDecimal },\n\n // Cosmos denoms\n uatom: { chain: Chain.Cosmos, decimals: getChainConfig(Chain.Cosmos).baseDecimal },\n\n // Kujira denoms\n ukuji: { chain: Chain.Kujira, decimals: getChainConfig(Chain.Kujira).baseDecimal },\n usdc: { chain: Chain.Noble, decimals: getChainConfig(Chain.Noble).baseDecimal },\n\n // Noble denoms\n uusdc: { chain: Chain.Noble, decimals: getChainConfig(Chain.Noble).baseDecimal },\n \"x/kuji\": { asset: \"THOR.KUJI\", decimals: getChainConfig(Chain.THORChain).baseDecimal },\n\n // USK on Kujira (lowercase version of the factory denom)\n [USK_KUJIRA_FACTORY_DENOM.toLowerCase()]: {\n asset: `${Chain.Kujira}.USK`,\n decimals: getChainConfig(Chain.Kujira).baseDecimal,\n },\n};\n\n/**\n * Converts a Cosmos denom and amount to an AssetValue with proper decimal handling\n * @param denom - The denomination string\n * @param amount - The amount in base units as a string\n * @returns AssetValue with the correct decimal conversion\n */\nexport const getAssetFromDenom = (denom: string, amount: string) => {\n const config = DENOM_MAP[denom.toLowerCase()];\n\n if (!config) {\n // For unknown denoms, default to 8 decimals (common for many Cosmos chains)\n // This preserves the original behavior while using fromBaseDecimal\n return AssetValue.from({ asset: denom, fromBaseDecimal: 8, value: amount });\n }\n\n const { chain, asset, decimals } = config;\n\n const assetOrChain = (chain ? { chain } : { asset }) as { asset: string } | { chain: CosmosChain };\n\n return AssetValue.from({ ...assetOrChain, fromBaseDecimal: decimals, value: amount });\n};\n",
|
|
7
7
|
"// @ts-nocheck\nimport $protobuf from \"protobufjs/minimal.js\";\n\n// Common aliases\nconst $Reader = $protobuf.Reader;\nconst $Writer = $protobuf.Writer;\nconst $util = $protobuf.util;\n\n// Exported root namespace\n\nexport const $root = ($protobuf.roots.default || ($protobuf.roots.default = {})) as any;\n\n$root.common = (() => {\n /**\n * Namespace common.\n * @exports common\n * @namespace\n */\n const common = {};\n\n common.Asset = (() => {\n /**\n * Properties of an Asset.\n * @memberof common\n * @interface IAsset\n * @property {string|null} [chain] Asset chain\n * @property {string|null} [symbol] Asset symbol\n * @property {string|null} [ticker] Asset ticker\n * @property {boolean|null} [synth] Asset synth\n */\n\n /**\n * Constructs a new Asset.\n * @memberof common\n * @classdesc Represents an Asset.\n * @implements IAsset\n * @constructor\n * @param {common.IAsset=} [properties] Properties to set\n */\n function Asset(properties) {\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * Asset chain.\n * @member {string} chain\n * @memberof common.Asset\n * @instance\n */\n Asset.prototype.chain = \"\";\n\n /**\n * Asset symbol.\n * @member {string} symbol\n * @memberof common.Asset\n * @instance\n */\n Asset.prototype.symbol = \"\";\n\n /**\n * Asset ticker.\n * @member {string} ticker\n * @memberof common.Asset\n * @instance\n */\n Asset.prototype.ticker = \"\";\n\n /**\n * Asset synth.\n * @member {boolean} synth\n * @memberof common.Asset\n * @instance\n */\n Asset.prototype.synth = false;\n\n /**\n * Creates a new Asset instance using the specified properties.\n * @function create\n * @memberof common.Asset\n * @static\n * @param {common.IAsset=} [properties] Properties to set\n * @returns {common.Asset} Asset instance\n */\n Asset.create = function create(properties) {\n return new Asset(properties);\n };\n\n /**\n * Encodes the specified Asset message. Does not implicitly {@link common.Asset.verify|verify} messages.\n * @function encode\n * @memberof common.Asset\n * @static\n * @param {common.IAsset} message Asset message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Asset.encode = function encode(message, writer) {\n if (!writer) writer = $Writer.create();\n if (message.chain != null && Object.hasOwnProperty.call(message, \"chain\"))\n writer.uint32(/* id 1, wireType 2 =*/ 10).string(message.chain);\n if (message.symbol != null && Object.hasOwnProperty.call(message, \"symbol\"))\n writer.uint32(/* id 2, wireType 2 =*/ 18).string(message.symbol);\n if (message.ticker != null && Object.hasOwnProperty.call(message, \"ticker\"))\n writer.uint32(/* id 3, wireType 2 =*/ 26).string(message.ticker);\n if (message.synth != null && Object.hasOwnProperty.call(message, \"synth\"))\n writer.uint32(/* id 4, wireType 0 =*/ 32).bool(message.synth);\n return writer;\n };\n\n /**\n * Encodes the specified Asset message, length delimited. Does not implicitly {@link common.Asset.verify|verify} messages.\n * @function encodeDelimited\n * @memberof common.Asset\n * @static\n * @param {common.IAsset} message Asset message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Asset.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes an Asset message from the specified reader or buffer.\n * @function decode\n * @memberof common.Asset\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {common.Asset} Asset\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Asset.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader)) reader = $Reader.create(reader);\n const end = length === undefined ? reader.len : reader.pos + length,\n message = new $root.common.Asset();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.chain = reader.string();\n break;\n case 2:\n message.symbol = reader.string();\n break;\n case 3:\n message.ticker = reader.string();\n break;\n case 4:\n message.synth = reader.bool();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes an Asset message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof common.Asset\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {common.Asset} Asset\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Asset.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader)) reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies an Asset message.\n * @function verify\n * @memberof common.Asset\n * @static\n * @param {Object.<string,*>} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n Asset.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null) return \"object expected\";\n if (message.chain != null && message.hasOwnProperty(\"chain\"))\n if (!$util.isString(message.chain)) return \"chain: string expected\";\n if (message.symbol != null && message.hasOwnProperty(\"symbol\"))\n if (!$util.isString(message.symbol)) return \"symbol: string expected\";\n if (message.ticker != null && message.hasOwnProperty(\"ticker\"))\n if (!$util.isString(message.ticker)) return \"ticker: string expected\";\n if (message.synth != null && message.hasOwnProperty(\"synth\"))\n if (typeof message.synth !== \"boolean\") return \"synth: boolean expected\";\n return null;\n };\n\n /**\n * Creates an Asset message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof common.Asset\n * @static\n * @param {Object.<string,*>} object Plain object\n * @returns {common.Asset} Asset\n */\n Asset.fromObject = function fromObject(object) {\n if (object instanceof $root.common.Asset) return object;\n const message = new $root.common.Asset();\n if (object.chain != null) message.chain = String(object.chain);\n if (object.symbol != null) message.symbol = String(object.symbol);\n if (object.ticker != null) message.ticker = String(object.ticker);\n if (object.synth != null) message.synth = Boolean(object.synth);\n return message;\n };\n\n /**\n * Creates a plain object from an Asset message. Also converts values to other types if specified.\n * @function toObject\n * @memberof common.Asset\n * @static\n * @param {common.Asset} message Asset\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.<string,*>} Plain object\n */\n Asset.toObject = function toObject(message, options) {\n if (!options) options = {};\n const object = {};\n if (options.defaults) {\n object.chain = \"\";\n object.symbol = \"\";\n object.ticker = \"\";\n object.synth = false;\n }\n if (message.chain != null && message.hasOwnProperty(\"chain\")) object.chain = message.chain;\n if (message.symbol != null && message.hasOwnProperty(\"symbol\"))\n object.symbol = message.symbol;\n if (message.ticker != null && message.hasOwnProperty(\"ticker\"))\n object.ticker = message.ticker;\n if (message.synth != null && message.hasOwnProperty(\"synth\")) object.synth = message.synth;\n return object;\n };\n\n /**\n * Converts this Asset to JSON.\n * @function toJSON\n * @memberof common.Asset\n * @instance\n * @returns {Object.<string,*>} JSON object\n */\n Asset.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return Asset;\n })();\n\n common.Coin = (() => {\n /**\n * Properties of a Coin.\n * @memberof common\n * @interface ICoin\n * @property {common.IAsset|null} [asset] Coin asset\n * @property {string|null} [amount] Coin amount\n * @property {number|Long|null} [decimals] Coin decimals\n */\n\n /**\n * Constructs a new Coin.\n * @memberof common\n * @classdesc Represents a Coin.\n * @implements ICoin\n * @constructor\n * @param {common.ICoin=} [properties] Properties to set\n */\n function Coin(properties) {\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * Coin asset.\n * @member {common.IAsset|null|undefined} asset\n * @memberof common.Coin\n * @instance\n */\n Coin.prototype.asset = null;\n\n /**\n * Coin amount.\n * @member {string} amount\n * @memberof common.Coin\n * @instance\n */\n Coin.prototype.amount = \"\";\n\n /**\n * Coin decimals.\n * @member {number|Long} decimals\n * @memberof common.Coin\n * @instance\n */\n Coin.prototype.decimals = $util.Long ? $util.Long.fromBits(0, 0, false) : 0;\n\n /**\n * Creates a new Coin instance using the specified properties.\n * @function create\n * @memberof common.Coin\n * @static\n * @param {common.ICoin=} [properties] Properties to set\n * @returns {common.Coin} Coin instance\n */\n Coin.create = function create(properties) {\n return new Coin(properties);\n };\n\n /**\n * Encodes the specified Coin message. Does not implicitly {@link common.Coin.verify|verify} messages.\n * @function encode\n * @memberof common.Coin\n * @static\n * @param {common.ICoin} message Coin message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Coin.encode = function encode(message, writer) {\n if (!writer) writer = $Writer.create();\n if (message.asset != null && Object.hasOwnProperty.call(message, \"asset\"))\n $root.common.Asset.encode(\n message.asset,\n writer.uint32(/* id 1, wireType 2 =*/ 10).fork(),\n ).ldelim();\n if (message.amount != null && Object.hasOwnProperty.call(message, \"amount\"))\n writer.uint32(/* id 2, wireType 2 =*/ 18).string(message.amount);\n if (message.decimals != null && Object.hasOwnProperty.call(message, \"decimals\"))\n writer.uint32(/* id 3, wireType 0 =*/ 24).int64(message.decimals);\n return writer;\n };\n\n /**\n * Encodes the specified Coin message, length delimited. Does not implicitly {@link common.Coin.verify|verify} messages.\n * @function encodeDelimited\n * @memberof common.Coin\n * @static\n * @param {common.ICoin} message Coin message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Coin.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a Coin message from the specified reader or buffer.\n * @function decode\n * @memberof common.Coin\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {common.Coin} Coin\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Coin.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader)) reader = $Reader.create(reader);\n const end = length === undefined ? reader.len : reader.pos + length,\n message = new $root.common.Coin();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.asset = $root.common.Asset.decode(reader, reader.uint32());\n break;\n case 2:\n message.amount = reader.string();\n break;\n case 3:\n message.decimals = reader.int64();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a Coin message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof common.Coin\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {common.Coin} Coin\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Coin.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader)) reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a Coin message.\n * @function verify\n * @memberof common.Coin\n * @static\n * @param {Object.<string,*>} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n Coin.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null) return \"object expected\";\n if (message.asset != null && message.hasOwnProperty(\"asset\")) {\n const error = $root.common.Asset.verify(message.asset);\n if (error) return \"asset.\" + error;\n }\n if (message.amount != null && message.hasOwnProperty(\"amount\"))\n if (!$util.isString(message.amount)) return \"amount: string expected\";\n if (message.decimals != null && message.hasOwnProperty(\"decimals\"))\n if (\n !$util.isInteger(message.decimals) &&\n !(\n message.decimals &&\n $util.isInteger(message.decimals.low) &&\n $util.isInteger(message.decimals.high)\n )\n )\n return \"decimals: integer|Long expected\";\n return null;\n };\n\n /**\n * Creates a Coin message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof common.Coin\n * @static\n * @param {Object.<string,*>} object Plain object\n * @returns {common.Coin} Coin\n */\n Coin.fromObject = function fromObject(object) {\n if (object instanceof $root.common.Coin) return object;\n const message = new $root.common.Coin();\n if (object.asset != null) {\n if (typeof object.asset !== \"object\")\n throw TypeError(\".common.Coin.asset: object expected\");\n message.asset = $root.common.Asset.fromObject(object.asset);\n }\n if (object.amount != null) message.amount = String(object.amount);\n if (object.decimals != null)\n if ($util.Long) (message.decimals = $util.Long.fromValue(object.decimals)).unsigned = false;\n else if (typeof object.decimals === \"string\")\n message.decimals = Number.parseInt(object.decimals, 10);\n else if (typeof object.decimals === \"number\") message.decimals = object.decimals;\n else if (typeof object.decimals === \"object\")\n message.decimals = new $util.LongBits(\n object.decimals.low >>> 0,\n object.decimals.high >>> 0,\n ).toNumber();\n return message;\n };\n\n /**\n * Creates a plain object from a Coin message. Also converts values to other types if specified.\n * @function toObject\n * @memberof common.Coin\n * @static\n * @param {common.Coin} message Coin\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.<string,*>} Plain object\n */\n Coin.toObject = function toObject(message, options) {\n if (!options) options = {};\n const object = {};\n if (options.defaults) {\n object.asset = null;\n object.amount = \"\";\n if ($util.Long) {\n const long = new $util.Long(0, 0, false);\n object.decimals =\n options.longs === String\n ? long.toString()\n : options.longs === Number\n ? long.toNumber()\n : long;\n } else object.decimals = options.longs === String ? \"0\" : 0;\n }\n if (message.asset != null && message.hasOwnProperty(\"asset\"))\n object.asset = $root.common.Asset.toObject(message.asset, options);\n if (message.amount != null && message.hasOwnProperty(\"amount\"))\n object.amount = message.amount;\n if (message.decimals != null && message.hasOwnProperty(\"decimals\"))\n if (typeof message.decimals === \"number\")\n object.decimals = options.longs === String ? String(message.decimals) : message.decimals;\n else\n object.decimals =\n options.longs === String\n ? $util.Long.prototype.toString.call(message.decimals)\n : options.longs === Number\n ? new $util.LongBits(\n message.decimals.low >>> 0,\n message.decimals.high >>> 0,\n ).toNumber()\n : message.decimals;\n return object;\n };\n\n /**\n * Converts this Coin to JSON.\n * @function toJSON\n * @memberof common.Coin\n * @instance\n * @returns {Object.<string,*>} JSON object\n */\n Coin.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return Coin;\n })();\n\n common.PubKeySet = (() => {\n /**\n * Properties of a PubKeySet.\n * @memberof common\n * @interface IPubKeySet\n * @property {string|null} [secp256k1] PubKeySet secp256k1\n * @property {string|null} [ed25519] PubKeySet ed25519\n */\n\n /**\n * Constructs a new PubKeySet.\n * @memberof common\n * @classdesc Represents a PubKeySet.\n * @implements IPubKeySet\n * @constructor\n * @param {common.IPubKeySet=} [properties] Properties to set\n */\n function PubKeySet(properties) {\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * PubKeySet secp256k1.\n * @member {string} secp256k1\n * @memberof common.PubKeySet\n * @instance\n */\n PubKeySet.prototype.secp256k1 = \"\";\n\n /**\n * PubKeySet ed25519.\n * @member {string} ed25519\n * @memberof common.PubKeySet\n * @instance\n */\n PubKeySet.prototype.ed25519 = \"\";\n\n /**\n * Creates a new PubKeySet instance using the specified properties.\n * @function create\n * @memberof common.PubKeySet\n * @static\n * @param {common.IPubKeySet=} [properties] Properties to set\n * @returns {common.PubKeySet} PubKeySet instance\n */\n PubKeySet.create = function create(properties) {\n return new PubKeySet(properties);\n };\n\n /**\n * Encodes the specified PubKeySet message. Does not implicitly {@link common.PubKeySet.verify|verify} messages.\n * @function encode\n * @memberof common.PubKeySet\n * @static\n * @param {common.IPubKeySet} message PubKeySet message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n PubKeySet.encode = function encode(message, writer) {\n if (!writer) writer = $Writer.create();\n if (message.secp256k1 != null && Object.hasOwnProperty.call(message, \"secp256k1\"))\n writer.uint32(/* id 1, wireType 2 =*/ 10).string(message.secp256k1);\n if (message.ed25519 != null && Object.hasOwnProperty.call(message, \"ed25519\"))\n writer.uint32(/* id 2, wireType 2 =*/ 18).string(message.ed25519);\n return writer;\n };\n\n /**\n * Encodes the specified PubKeySet message, length delimited. Does not implicitly {@link common.PubKeySet.verify|verify} messages.\n * @function encodeDelimited\n * @memberof common.PubKeySet\n * @static\n * @param {common.IPubKeySet} message PubKeySet message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n PubKeySet.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a PubKeySet message from the specified reader or buffer.\n * @function decode\n * @memberof common.PubKeySet\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {common.PubKeySet} PubKeySet\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n PubKeySet.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader)) reader = $Reader.create(reader);\n const end = length === undefined ? reader.len : reader.pos + length,\n message = new $root.common.PubKeySet();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.secp256k1 = reader.string();\n break;\n case 2:\n message.ed25519 = reader.string();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a PubKeySet message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof common.PubKeySet\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {common.PubKeySet} PubKeySet\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n PubKeySet.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader)) reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a PubKeySet message.\n * @function verify\n * @memberof common.PubKeySet\n * @static\n * @param {Object.<string,*>} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n PubKeySet.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null) return \"object expected\";\n if (message.secp256k1 != null && message.hasOwnProperty(\"secp256k1\"))\n if (!$util.isString(message.secp256k1)) return \"secp256k1: string expected\";\n if (message.ed25519 != null && message.hasOwnProperty(\"ed25519\"))\n if (!$util.isString(message.ed25519)) return \"ed25519: string expected\";\n return null;\n };\n\n /**\n * Creates a PubKeySet message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof common.PubKeySet\n * @static\n * @param {Object.<string,*>} object Plain object\n * @returns {common.PubKeySet} PubKeySet\n */\n PubKeySet.fromObject = function fromObject(object) {\n if (object instanceof $root.common.PubKeySet) return object;\n const message = new $root.common.PubKeySet();\n if (object.secp256k1 != null) message.secp256k1 = String(object.secp256k1);\n if (object.ed25519 != null) message.ed25519 = String(object.ed25519);\n return message;\n };\n\n /**\n * Creates a plain object from a PubKeySet message. Also converts values to other types if specified.\n * @function toObject\n * @memberof common.PubKeySet\n * @static\n * @param {common.PubKeySet} message PubKeySet\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.<string,*>} Plain object\n */\n PubKeySet.toObject = function toObject(message, options) {\n if (!options) options = {};\n const object = {};\n if (options.defaults) {\n object.secp256k1 = \"\";\n object.ed25519 = \"\";\n }\n if (message.secp256k1 != null && message.hasOwnProperty(\"secp256k1\"))\n object.secp256k1 = message.secp256k1;\n if (message.ed25519 != null && message.hasOwnProperty(\"ed25519\"))\n object.ed25519 = message.ed25519;\n return object;\n };\n\n /**\n * Converts this PubKeySet to JSON.\n * @function toJSON\n * @memberof common.PubKeySet\n * @instance\n * @returns {Object.<string,*>} JSON object\n */\n PubKeySet.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return PubKeySet;\n })();\n\n common.Tx = (() => {\n /**\n * Properties of a Tx.\n * @memberof common\n * @interface ITx\n * @property {string|null} [id] Tx id\n * @property {string|null} [chain] Tx chain\n * @property {string|null} [fromAddress] Tx fromAddress\n * @property {string|null} [toAddress] Tx toAddress\n * @property {Array.<common.ICoin>|null} [coins] Tx coins\n * @property {Array.<common.ICoin>|null} [gas] Tx gas\n * @property {string|null} [memo] Tx memo\n */\n\n /**\n * Constructs a new Tx.\n * @memberof common\n * @classdesc Represents a Tx.\n * @implements ITx\n * @constructor\n * @param {common.ITx=} [properties] Properties to set\n */\n function Tx(properties) {\n this.coins = [];\n this.gas = [];\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * Tx id.\n * @member {string} id\n * @memberof common.Tx\n * @instance\n */\n Tx.prototype.id = \"\";\n\n /**\n * Tx chain.\n * @member {string} chain\n * @memberof common.Tx\n * @instance\n */\n Tx.prototype.chain = \"\";\n\n /**\n * Tx fromAddress.\n * @member {string} fromAddress\n * @memberof common.Tx\n * @instance\n */\n Tx.prototype.fromAddress = \"\";\n\n /**\n * Tx toAddress.\n * @member {string} toAddress\n * @memberof common.Tx\n * @instance\n */\n Tx.prototype.toAddress = \"\";\n\n /**\n * Tx coins.\n * @member {Array.<common.ICoin>} coins\n * @memberof common.Tx\n * @instance\n */\n Tx.prototype.coins = $util.emptyArray;\n\n /**\n * Tx gas.\n * @member {Array.<common.ICoin>} gas\n * @memberof common.Tx\n * @instance\n */\n Tx.prototype.gas = $util.emptyArray;\n\n /**\n * Tx memo.\n * @member {string} memo\n * @memberof common.Tx\n * @instance\n */\n Tx.prototype.memo = \"\";\n\n /**\n * Creates a new Tx instance using the specified properties.\n * @function create\n * @memberof common.Tx\n * @static\n * @param {common.ITx=} [properties] Properties to set\n * @returns {common.Tx} Tx instance\n */\n Tx.create = function create(properties) {\n return new Tx(properties);\n };\n\n /**\n * Encodes the specified Tx message. Does not implicitly {@link common.Tx.verify|verify} messages.\n * @function encode\n * @memberof common.Tx\n * @static\n * @param {common.ITx} message Tx message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Tx.encode = function encode(message, writer) {\n if (!writer) writer = $Writer.create();\n if (message.id != null && Object.hasOwnProperty.call(message, \"id\"))\n writer.uint32(/* id 1, wireType 2 =*/ 10).string(message.id);\n if (message.chain != null && Object.hasOwnProperty.call(message, \"chain\"))\n writer.uint32(/* id 2, wireType 2 =*/ 18).string(message.chain);\n if (message.fromAddress != null && Object.hasOwnProperty.call(message, \"fromAddress\"))\n writer.uint32(/* id 3, wireType 2 =*/ 26).string(message.fromAddress);\n if (message.toAddress != null && Object.hasOwnProperty.call(message, \"toAddress\"))\n writer.uint32(/* id 4, wireType 2 =*/ 34).string(message.toAddress);\n if (message.coins?.length)\n for (let i = 0; i < message.coins.length; ++i)\n $root.common.Coin.encode(\n message.coins[i],\n writer.uint32(/* id 5, wireType 2 =*/ 42).fork(),\n ).ldelim();\n if (message.gas?.length)\n for (let j = 0; j < message.gas.length; ++j)\n $root.common.Coin.encode(\n message.gas[j],\n writer.uint32(/* id 6, wireType 2 =*/ 50).fork(),\n ).ldelim();\n if (message.memo != null && Object.hasOwnProperty.call(message, \"memo\"))\n writer.uint32(/* id 7, wireType 2 =*/ 58).string(message.memo);\n return writer;\n };\n\n /**\n * Encodes the specified Tx message, length delimited. Does not implicitly {@link common.Tx.verify|verify} messages.\n * @function encodeDelimited\n * @memberof common.Tx\n * @static\n * @param {common.ITx} message Tx message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Tx.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a Tx message from the specified reader or buffer.\n * @function decode\n * @memberof common.Tx\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {common.Tx} Tx\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Tx.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader)) reader = $Reader.create(reader);\n const end = length === undefined ? reader.len : reader.pos + length,\n message = new $root.common.Tx();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.id = reader.string();\n break;\n case 2:\n message.chain = reader.string();\n break;\n case 3:\n message.fromAddress = reader.string();\n break;\n case 4:\n message.toAddress = reader.string();\n break;\n case 5:\n if (!message.coins?.length) message.coins = [];\n message.coins.push($root.common.Coin.decode(reader, reader.uint32()));\n break;\n case 6:\n if (!message.gas?.length) message.gas = [];\n message.gas.push($root.common.Coin.decode(reader, reader.uint32()));\n break;\n case 7:\n message.memo = reader.string();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a Tx message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof common.Tx\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {common.Tx} Tx\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Tx.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader)) reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a Tx message.\n * @function verify\n * @memberof common.Tx\n * @static\n * @param {Object.<string,*>} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n Tx.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null) return \"object expected\";\n if (message.id != null && message.hasOwnProperty(\"id\"))\n if (!$util.isString(message.id)) return \"id: string expected\";\n if (message.chain != null && message.hasOwnProperty(\"chain\"))\n if (!$util.isString(message.chain)) return \"chain: string expected\";\n if (message.fromAddress != null && message.hasOwnProperty(\"fromAddress\"))\n if (!$util.isString(message.fromAddress)) return \"fromAddress: string expected\";\n if (message.toAddress != null && message.hasOwnProperty(\"toAddress\"))\n if (!$util.isString(message.toAddress)) return \"toAddress: string expected\";\n if (message.coins != null && message.hasOwnProperty(\"coins\")) {\n if (!Array.isArray(message.coins)) return \"coins: array expected\";\n for (let i = 0; i < message.coins.length; ++i) {\n const error = $root.common.Coin.verify(message.coins[i]);\n if (error) return \"coins.\" + error;\n }\n }\n if (message.gas != null && message.hasOwnProperty(\"gas\")) {\n if (!Array.isArray(message.gas)) return \"gas: array expected\";\n for (let j = 0; j < message.gas.length; ++j) {\n const error = $root.common.Coin.verify(message.gas[j]);\n if (error) return \"gas.\" + error;\n }\n }\n if (message.memo != null && message.hasOwnProperty(\"memo\"))\n if (!$util.isString(message.memo)) return \"memo: string expected\";\n return null;\n };\n\n /**\n * Creates a Tx message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof common.Tx\n * @static\n * @param {Object.<string,*>} object Plain object\n * @returns {common.Tx} Tx\n */\n Tx.fromObject = function fromObject(object) {\n if (object instanceof $root.common.Tx) return object;\n const message = new $root.common.Tx();\n if (object.id != null) message.id = String(object.id);\n if (object.chain != null) message.chain = String(object.chain);\n if (object.fromAddress != null) message.fromAddress = String(object.fromAddress);\n if (object.toAddress != null) message.toAddress = String(object.toAddress);\n if (object.coins) {\n if (!Array.isArray(object.coins)) throw TypeError(\".common.Tx.coins: array expected\");\n message.coins = [];\n for (let i = 0; i < object.coins.length; ++i) {\n if (typeof object.coins[i] !== \"object\")\n throw TypeError(\".common.Tx.coins: object expected\");\n message.coins[i] = $root.common.Coin.fromObject(object.coins[i]);\n }\n }\n if (object.gas) {\n if (!Array.isArray(object.gas)) throw TypeError(\".common.Tx.gas: array expected\");\n message.gas = [];\n for (let i = 0; i < object.gas.length; ++i) {\n if (typeof object.gas[i] !== \"object\") throw TypeError(\".common.Tx.gas: object expected\");\n message.gas[i] = $root.common.Coin.fromObject(object.gas[i]);\n }\n }\n if (object.memo != null) message.memo = String(object.memo);\n return message;\n };\n\n /**\n * Creates a plain object from a Tx message. Also converts values to other types if specified.\n * @function toObject\n * @memberof common.Tx\n * @static\n * @param {common.Tx} message Tx\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.<string,*>} Plain object\n */\n Tx.toObject = function toObject(message, options) {\n if (!options) options = {};\n const object = {};\n if (options.arrays || options.defaults) {\n object.coins = [];\n object.gas = [];\n }\n if (options.defaults) {\n object.id = \"\";\n object.chain = \"\";\n object.fromAddress = \"\";\n object.toAddress = \"\";\n object.memo = \"\";\n }\n if (message.id != null && message.hasOwnProperty(\"id\")) object.id = message.id;\n if (message.chain != null && message.hasOwnProperty(\"chain\")) object.chain = message.chain;\n if (message.fromAddress != null && message.hasOwnProperty(\"fromAddress\"))\n object.fromAddress = message.fromAddress;\n if (message.toAddress != null && message.hasOwnProperty(\"toAddress\"))\n object.toAddress = message.toAddress;\n if (message.coins?.length) {\n object.coins = [];\n for (let j = 0; j < message.coins.length; ++j)\n object.coins[j] = $root.common.Coin.toObject(message.coins[j], options);\n }\n if (message.gas?.length) {\n object.gas = [];\n for (let j = 0; j < message.gas.length; ++j)\n object.gas[j] = $root.common.Coin.toObject(message.gas[j], options);\n }\n if (message.memo != null && message.hasOwnProperty(\"memo\")) object.memo = message.memo;\n return object;\n };\n\n /**\n * Converts this Tx to JSON.\n * @function toJSON\n * @memberof common.Tx\n * @instance\n * @returns {Object.<string,*>} JSON object\n */\n Tx.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return Tx;\n })();\n\n common.Fee = (() => {\n /**\n * Properties of a Fee.\n * @memberof common\n * @interface IFee\n * @property {Array.<common.ICoin>|null} [coins] Fee coins\n * @property {string|null} [poolDeduct] Fee poolDeduct\n */\n\n /**\n * Constructs a new Fee.\n * @memberof common\n * @classdesc Represents a Fee.\n * @implements IFee\n * @constructor\n * @param {common.IFee=} [properties] Properties to set\n */\n function Fee(properties) {\n this.coins = [];\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * Fee coins.\n * @member {Array.<common.ICoin>} coins\n * @memberof common.Fee\n * @instance\n */\n Fee.prototype.coins = $util.emptyArray;\n\n /**\n * Fee poolDeduct.\n * @member {string} poolDeduct\n * @memberof common.Fee\n * @instance\n */\n Fee.prototype.poolDeduct = \"\";\n\n /**\n * Creates a new Fee instance using the specified properties.\n * @function create\n * @memberof common.Fee\n * @static\n * @param {common.IFee=} [properties] Properties to set\n * @returns {common.Fee} Fee instance\n */\n Fee.create = function create(properties) {\n return new Fee(properties);\n };\n\n /**\n * Encodes the specified Fee message. Does not implicitly {@link common.Fee.verify|verify} messages.\n * @function encode\n * @memberof common.Fee\n * @static\n * @param {common.IFee} message Fee message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Fee.encode = function encode(message, writer) {\n if (!writer) writer = $Writer.create();\n if (message.coins?.length)\n for (let i = 0; i < message.coins.length; ++i)\n $root.common.Coin.encode(\n message.coins[i],\n writer.uint32(/* id 1, wireType 2 =*/ 10).fork(),\n ).ldelim();\n if (message.poolDeduct != null && Object.hasOwnProperty.call(message, \"poolDeduct\"))\n writer.uint32(/* id 2, wireType 2 =*/ 18).string(message.poolDeduct);\n return writer;\n };\n\n /**\n * Encodes the specified Fee message, length delimited. Does not implicitly {@link common.Fee.verify|verify} messages.\n * @function encodeDelimited\n * @memberof common.Fee\n * @static\n * @param {common.IFee} message Fee message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Fee.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a Fee message from the specified reader or buffer.\n * @function decode\n * @memberof common.Fee\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {common.Fee} Fee\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Fee.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader)) reader = $Reader.create(reader);\n const end = length === undefined ? reader.len : reader.pos + length,\n message = new $root.common.Fee();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (!message.coins?.length) message.coins = [];\n message.coins.push($root.common.Coin.decode(reader, reader.uint32()));\n break;\n case 2:\n message.poolDeduct = reader.string();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a Fee message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof common.Fee\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {common.Fee} Fee\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Fee.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader)) reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a Fee message.\n * @function verify\n * @memberof common.Fee\n * @static\n * @param {Object.<string,*>} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n Fee.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null) return \"object expected\";\n if (message.coins != null && message.hasOwnProperty(\"coins\")) {\n if (!Array.isArray(message.coins)) return \"coins: array expected\";\n for (let i = 0; i < message.coins.length; ++i) {\n const error = $root.common.Coin.verify(message.coins[i]);\n if (error) return \"coins.\" + error;\n }\n }\n if (message.poolDeduct != null && message.hasOwnProperty(\"poolDeduct\"))\n if (!$util.isString(message.poolDeduct)) return \"poolDeduct: string expected\";\n return null;\n };\n\n /**\n * Creates a Fee message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof common.Fee\n * @static\n * @param {Object.<string,*>} object Plain object\n * @returns {common.Fee} Fee\n */\n Fee.fromObject = function fromObject(object) {\n if (object instanceof $root.common.Fee) return object;\n const message = new $root.common.Fee();\n if (object.coins) {\n if (!Array.isArray(object.coins)) throw TypeError(\".common.Fee.coins: array expected\");\n message.coins = [];\n for (let i = 0; i < object.coins.length; ++i) {\n if (typeof object.coins[i] !== \"object\")\n throw TypeError(\".common.Fee.coins: object expected\");\n message.coins[i] = $root.common.Coin.fromObject(object.coins[i]);\n }\n }\n if (object.poolDeduct != null) message.poolDeduct = String(object.poolDeduct);\n return message;\n };\n\n /**\n * Creates a plain object from a Fee message. Also converts values to other types if specified.\n * @function toObject\n * @memberof common.Fee\n * @static\n * @param {common.Fee} message Fee\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.<string,*>} Plain object\n */\n Fee.toObject = function toObject(message, options) {\n if (!options) options = {};\n const object = {};\n if (options.arrays || options.defaults) object.coins = [];\n if (options.defaults) object.poolDeduct = \"\";\n if (message.coins?.length) {\n object.coins = [];\n for (let j = 0; j < message.coins.length; ++j)\n object.coins[j] = $root.common.Coin.toObject(message.coins[j], options);\n }\n if (message.poolDeduct != null && message.hasOwnProperty(\"poolDeduct\"))\n object.poolDeduct = message.poolDeduct;\n return object;\n };\n\n /**\n * Converts this Fee to JSON.\n * @function toJSON\n * @memberof common.Fee\n * @instance\n * @returns {Object.<string,*>} JSON object\n */\n Fee.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return Fee;\n })();\n\n common.ProtoUint = (() => {\n /**\n * Properties of a ProtoUint.\n * @memberof common\n * @interface IProtoUint\n * @property {string|null} [value] ProtoUint value\n */\n\n /**\n * Constructs a new ProtoUint.\n * @memberof common\n * @classdesc Represents a ProtoUint.\n * @implements IProtoUint\n * @constructor\n * @param {common.IProtoUint=} [properties] Properties to set\n */\n function ProtoUint(properties) {\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * ProtoUint value.\n * @member {string} value\n * @memberof common.ProtoUint\n * @instance\n */\n ProtoUint.prototype.value = \"\";\n\n /**\n * Creates a new ProtoUint instance using the specified properties.\n * @function create\n * @memberof common.ProtoUint\n * @static\n * @param {common.IProtoUint=} [properties] Properties to set\n * @returns {common.ProtoUint} ProtoUint instance\n */\n ProtoUint.create = function create(properties) {\n return new ProtoUint(properties);\n };\n\n /**\n * Encodes the specified ProtoUint message. Does not implicitly {@link common.ProtoUint.verify|verify} messages.\n * @function encode\n * @memberof common.ProtoUint\n * @static\n * @param {common.IProtoUint} message ProtoUint message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ProtoUint.encode = function encode(message, writer) {\n if (!writer) writer = $Writer.create();\n if (message.value != null && Object.hasOwnProperty.call(message, \"value\"))\n writer.uint32(/* id 1, wireType 2 =*/ 10).string(message.value);\n return writer;\n };\n\n /**\n * Encodes the specified ProtoUint message, length delimited. Does not implicitly {@link common.ProtoUint.verify|verify} messages.\n * @function encodeDelimited\n * @memberof common.ProtoUint\n * @static\n * @param {common.IProtoUint} message ProtoUint message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ProtoUint.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a ProtoUint message from the specified reader or buffer.\n * @function decode\n * @memberof common.ProtoUint\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {common.ProtoUint} ProtoUint\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ProtoUint.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader)) reader = $Reader.create(reader);\n const end = length === undefined ? reader.len : reader.pos + length,\n message = new $root.common.ProtoUint();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.value = reader.string();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a ProtoUint message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof common.ProtoUint\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {common.ProtoUint} ProtoUint\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ProtoUint.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader)) reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a ProtoUint message.\n * @function verify\n * @memberof common.ProtoUint\n * @static\n * @param {Object.<string,*>} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n ProtoUint.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null) return \"object expected\";\n if (message.value != null && message.hasOwnProperty(\"value\"))\n if (!$util.isString(message.value)) return \"value: string expected\";\n return null;\n };\n\n /**\n * Creates a ProtoUint message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof common.ProtoUint\n * @static\n * @param {Object.<string,*>} object Plain object\n * @returns {common.ProtoUint} ProtoUint\n */\n ProtoUint.fromObject = function fromObject(object) {\n if (object instanceof $root.common.ProtoUint) return object;\n const message = new $root.common.ProtoUint();\n if (object.value != null) message.value = String(object.value);\n return message;\n };\n\n /**\n * Creates a plain object from a ProtoUint message. Also converts values to other types if specified.\n * @function toObject\n * @memberof common.ProtoUint\n * @static\n * @param {common.ProtoUint} message ProtoUint\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.<string,*>} Plain object\n */\n ProtoUint.toObject = function toObject(message, options) {\n if (!options) options = {};\n const object = {};\n if (options.defaults) object.value = \"\";\n if (message.value != null && message.hasOwnProperty(\"value\")) object.value = message.value;\n return object;\n };\n\n /**\n * Converts this ProtoUint to JSON.\n * @function toJSON\n * @memberof common.ProtoUint\n * @instance\n * @returns {Object.<string,*>} JSON object\n */\n ProtoUint.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return ProtoUint;\n })();\n\n return common;\n})();\n\n$root.types = (() => {\n /**\n * Namespace types.\n * @exports types\n * @namespace\n */\n const types = {};\n\n types.MsgDeposit = (() => {\n /**\n * Properties of a MsgDeposit.\n * @memberof types\n * @interface IMsgDeposit\n * @property {Array.<common.ICoin>|null} [coins] MsgDeposit coins\n * @property {string|null} [memo] MsgDeposit memo\n * @property {Uint8Array|null} [signer] MsgDeposit signer\n */\n\n /**\n * Constructs a new MsgDeposit.\n * @memberof types\n * @classdesc Represents a MsgDeposit.\n * @implements IMsgDeposit\n * @constructor\n * @param {types.IMsgDeposit=} [properties] Properties to set\n */\n function MsgDeposit(properties) {\n this.coins = [];\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * MsgDeposit coins.\n * @member {Array.<common.ICoin>} coins\n * @memberof types.MsgDeposit\n * @instance\n */\n MsgDeposit.prototype.coins = $util.emptyArray;\n\n /**\n * MsgDeposit memo.\n * @member {string} memo\n * @memberof types.MsgDeposit\n * @instance\n */\n MsgDeposit.prototype.memo = \"\";\n\n /**\n * MsgDeposit signer.\n * @member {Uint8Array} signer\n * @memberof types.MsgDeposit\n * @instance\n */\n MsgDeposit.prototype.signer = $util.newBuffer([]);\n\n /**\n * Creates a new MsgDeposit instance using the specified properties.\n * @function create\n * @memberof types.MsgDeposit\n * @static\n * @param {types.IMsgDeposit=} [properties] Properties to set\n * @returns {types.MsgDeposit} MsgDeposit instance\n */\n MsgDeposit.create = function create(properties) {\n return new MsgDeposit(properties);\n };\n\n /**\n * Encodes the specified MsgDeposit message. Does not implicitly {@link types.MsgDeposit.verify|verify} messages.\n * @function encode\n * @memberof types.MsgDeposit\n * @static\n * @param {types.IMsgDeposit} message MsgDeposit message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n MsgDeposit.encode = function encode(message, writer) {\n if (!writer) writer = $Writer.create();\n if (message.coins?.length)\n for (let i = 0; i < message.coins.length; ++i)\n $root.common.Coin.encode(\n message.coins[i],\n writer.uint32(/* id 1, wireType 2 =*/ 10).fork(),\n ).ldelim();\n if (message.memo != null && Object.hasOwnProperty.call(message, \"memo\"))\n writer.uint32(/* id 2, wireType 2 =*/ 18).string(message.memo);\n if (message.signer != null && Object.hasOwnProperty.call(message, \"signer\"))\n writer.uint32(/* id 3, wireType 2 =*/ 26).bytes(message.signer);\n return writer;\n };\n\n /**\n * Encodes the specified MsgDeposit message, length delimited. Does not implicitly {@link types.MsgDeposit.verify|verify} messages.\n * @function encodeDelimited\n * @memberof types.MsgDeposit\n * @static\n * @param {types.IMsgDeposit} message MsgDeposit message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n MsgDeposit.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a MsgDeposit message from the specified reader or buffer.\n * @function decode\n * @memberof types.MsgDeposit\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {types.MsgDeposit} MsgDeposit\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n MsgDeposit.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader)) reader = $Reader.create(reader);\n const end = length === undefined ? reader.len : reader.pos + length,\n message = new $root.types.MsgDeposit();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n if (!message.coins?.length) message.coins = [];\n message.coins.push($root.common.Coin.decode(reader, reader.uint32()));\n break;\n case 2:\n message.memo = reader.string();\n break;\n case 3:\n message.signer = reader.bytes();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a MsgDeposit message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof types.MsgDeposit\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {types.MsgDeposit} MsgDeposit\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n MsgDeposit.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader)) reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a MsgDeposit message.\n * @function verify\n * @memberof types.MsgDeposit\n * @static\n * @param {Object.<string,*>} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n MsgDeposit.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null) return \"object expected\";\n if (message.coins != null && message.hasOwnProperty(\"coins\")) {\n if (!Array.isArray(message.coins)) return \"coins: array expected\";\n for (let i = 0; i < message.coins.length; ++i) {\n const error = $root.common.Coin.verify(message.coins[i]);\n if (error) return \"coins.\" + error;\n }\n }\n if (message.memo != null && message.hasOwnProperty(\"memo\"))\n if (!$util.isString(message.memo)) return \"memo: string expected\";\n if (message.signer != null && message.hasOwnProperty(\"signer\"))\n if (\n !(\n (message.signer && typeof message.signer.length === \"number\") ||\n $util.isString(message.signer)\n )\n )\n return \"signer: buffer expected\";\n return null;\n };\n\n /**\n * Creates a MsgDeposit message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof types.MsgDeposit\n * @static\n * @param {Object.<string,*>} object Plain object\n * @returns {types.MsgDeposit} MsgDeposit\n */\n MsgDeposit.fromObject = function fromObject(object) {\n if (object instanceof $root.types.MsgDeposit) return object;\n const message = new $root.types.MsgDeposit();\n if (object.coins) {\n if (!Array.isArray(object.coins))\n throw TypeError(\".types.MsgDeposit.coins: array expected\");\n message.coins = [];\n for (let i = 0; i < object.coins.length; ++i) {\n if (typeof object.coins[i] !== \"object\")\n throw TypeError(\".types.MsgDeposit.coins: object expected\");\n message.coins[i] = $root.common.Coin.fromObject(object.coins[i]);\n }\n }\n if (object.memo != null) message.memo = String(object.memo);\n if (object.signer != null)\n if (typeof object.signer === \"string\")\n $util.base64.decode(\n object.signer,\n (message.signer = $util.newBuffer($util.base64.length(object.signer))),\n 0,\n );\n else if (object.signer.length) message.signer = object.signer;\n return message;\n };\n\n /**\n * Creates a plain object from a MsgDeposit message. Also converts values to other types if specified.\n * @function toObject\n * @memberof types.MsgDeposit\n * @static\n * @param {types.MsgDeposit} message MsgDeposit\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.<string,*>} Plain object\n */\n MsgDeposit.toObject = function toObject(message, options) {\n if (!options) options = {};\n const object = {};\n if (options.arrays || options.defaults) object.coins = [];\n if (options.defaults) {\n object.memo = \"\";\n if (options.bytes === String) object.signer = \"\";\n else {\n object.signer = [];\n if (options.bytes !== Array) object.signer = $util.newBuffer(object.signer);\n }\n }\n if (message.coins?.length) {\n object.coins = [];\n for (let j = 0; j < message.coins.length; ++j)\n object.coins[j] = $root.common.Coin.toObject(message.coins[j], options);\n }\n if (message.memo != null && message.hasOwnProperty(\"memo\")) object.memo = message.memo;\n if (message.signer != null && message.hasOwnProperty(\"signer\"))\n object.signer =\n options.bytes === String\n ? $util.base64.encode(message.signer, 0, message.signer.length)\n : options.bytes === Array\n ? Array.prototype.slice.call(message.signer)\n : message.signer;\n return object;\n };\n\n /**\n * Converts this MsgDeposit to JSON.\n * @function toJSON\n * @memberof types.MsgDeposit\n * @instance\n * @returns {Object.<string,*>} JSON object\n */\n MsgDeposit.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return MsgDeposit;\n })();\n\n types.MsgSend = (() => {\n /**\n * Properties of a MsgSend.\n * @memberof types\n * @interface IMsgSend\n * @property {Uint8Array|null} [fromAddress] MsgSend fromAddress\n * @property {Uint8Array|null} [toAddress] MsgSend toAddress\n * @property {Array.<cosmos.base.v1beta1.ICoin>|null} [amount] MsgSend amount\n */\n\n /**\n * Constructs a new MsgSend.\n * @memberof types\n * @classdesc Represents a MsgSend.\n * @implements IMsgSend\n * @constructor\n * @param {types.IMsgSend=} [properties] Properties to set\n */\n function MsgSend(properties) {\n this.amount = [];\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * MsgSend fromAddress.\n * @member {Uint8Array} fromAddress\n * @memberof types.MsgSend\n * @instance\n */\n MsgSend.prototype.fromAddress = $util.newBuffer([]);\n\n /**\n * MsgSend toAddress.\n * @member {Uint8Array} toAddress\n * @memberof types.MsgSend\n * @instance\n */\n MsgSend.prototype.toAddress = $util.newBuffer([]);\n\n /**\n * MsgSend amount.\n * @member {Array.<cosmos.base.v1beta1.ICoin>} amount\n * @memberof types.MsgSend\n * @instance\n */\n MsgSend.prototype.amount = $util.emptyArray;\n\n /**\n * Creates a new MsgSend instance using the specified properties.\n * @function create\n * @memberof types.MsgSend\n * @static\n * @param {types.IMsgSend=} [properties] Properties to set\n * @returns {types.MsgSend} MsgSend instance\n */\n MsgSend.create = function create(properties) {\n return new MsgSend(properties);\n };\n\n /**\n * Encodes the specified MsgSend message. Does not implicitly {@link types.MsgSend.verify|verify} messages.\n * @function encode\n * @memberof types.MsgSend\n * @static\n * @param {types.IMsgSend} message MsgSend message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n MsgSend.encode = function encode(message, writer) {\n if (!writer) writer = $Writer.create();\n if (message.fromAddress != null && Object.hasOwnProperty.call(message, \"fromAddress\"))\n writer.uint32(/* id 1, wireType 2 =*/ 10).bytes(message.fromAddress);\n if (message.toAddress != null && Object.hasOwnProperty.call(message, \"toAddress\"))\n writer.uint32(/* id 2, wireType 2 =*/ 18).bytes(message.toAddress);\n if (message.amount?.length)\n for (let i = 0; i < message.amount.length; ++i)\n $root.cosmos.base.v1beta1.Coin.encode(\n message.amount[i],\n writer.uint32(/* id 3, wireType 2 =*/ 26).fork(),\n ).ldelim();\n return writer;\n };\n\n /**\n * Encodes the specified MsgSend message, length delimited. Does not implicitly {@link types.MsgSend.verify|verify} messages.\n * @function encodeDelimited\n * @memberof types.MsgSend\n * @static\n * @param {types.IMsgSend} message MsgSend message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n MsgSend.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a MsgSend message from the specified reader or buffer.\n * @function decode\n * @memberof types.MsgSend\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {types.MsgSend} MsgSend\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n MsgSend.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader)) reader = $Reader.create(reader);\n const end = length === undefined ? reader.len : reader.pos + length,\n message = new $root.types.MsgSend();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.fromAddress = reader.bytes();\n break;\n case 2:\n message.toAddress = reader.bytes();\n break;\n case 3:\n if (!message.amount?.length) message.amount = [];\n message.amount.push($root.cosmos.base.v1beta1.Coin.decode(reader, reader.uint32()));\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a MsgSend message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof types.MsgSend\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {types.MsgSend} MsgSend\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n MsgSend.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader)) reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a MsgSend message.\n * @function verify\n * @memberof types.MsgSend\n * @static\n * @param {Object.<string,*>} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n MsgSend.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null) return \"object expected\";\n if (message.fromAddress != null && message.hasOwnProperty(\"fromAddress\"))\n if (\n !(\n (message.fromAddress && typeof message.fromAddress.length === \"number\") ||\n $util.isString(message.fromAddress)\n )\n )\n return \"fromAddress: buffer expected\";\n if (message.toAddress != null && message.hasOwnProperty(\"toAddress\"))\n if (\n !(\n (message.toAddress && typeof message.toAddress.length === \"number\") ||\n $util.isString(message.toAddress)\n )\n )\n return \"toAddress: buffer expected\";\n if (message.amount != null && message.hasOwnProperty(\"amount\")) {\n if (!Array.isArray(message.amount)) return \"amount: array expected\";\n for (let i = 0; i < message.amount.length; ++i) {\n const error = $root.cosmos.base.v1beta1.Coin.verify(message.amount[i]);\n if (error) return \"amount.\" + error;\n }\n }\n return null;\n };\n\n /**\n * Creates a MsgSend message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof types.MsgSend\n * @static\n * @param {Object.<string,*>} object Plain object\n * @returns {types.MsgSend} MsgSend\n */\n MsgSend.fromObject = function fromObject(object) {\n if (object instanceof $root.types.MsgSend) return object;\n const message = new $root.types.MsgSend();\n if (object.fromAddress != null)\n if (typeof object.fromAddress === \"string\")\n $util.base64.decode(\n object.fromAddress,\n (message.fromAddress = $util.newBuffer($util.base64.length(object.fromAddress))),\n 0,\n );\n else if (object.fromAddress.length) message.fromAddress = object.fromAddress;\n if (object.toAddress != null)\n if (typeof object.toAddress === \"string\")\n $util.base64.decode(\n object.toAddress,\n (message.toAddress = $util.newBuffer($util.base64.length(object.toAddress))),\n 0,\n );\n else if (object.toAddress.length) message.toAddress = object.toAddress;\n if (object.amount) {\n if (!Array.isArray(object.amount)) throw TypeError(\".types.MsgSend.amount: array expected\");\n message.amount = [];\n for (let i = 0; i < object.amount.length; ++i) {\n if (typeof object.amount[i] !== \"object\")\n throw TypeError(\".types.MsgSend.amount: object expected\");\n message.amount[i] = $root.cosmos.base.v1beta1.Coin.fromObject(object.amount[i]);\n }\n }\n return message;\n };\n\n /**\n * Creates a plain object from a MsgSend message. Also converts values to other types if specified.\n * @function toObject\n * @memberof types.MsgSend\n * @static\n * @param {types.MsgSend} message MsgSend\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.<string,*>} Plain object\n */\n MsgSend.toObject = function toObject(message, options) {\n if (!options) options = {};\n const object = {};\n if (options.arrays || options.defaults) object.amount = [];\n if (options.defaults) {\n if (options.bytes === String) object.fromAddress = \"\";\n else {\n object.fromAddress = [];\n if (options.bytes !== Array) object.fromAddress = $util.newBuffer(object.fromAddress);\n }\n if (options.bytes === String) object.toAddress = \"\";\n else {\n object.toAddress = [];\n if (options.bytes !== Array) object.toAddress = $util.newBuffer(object.toAddress);\n }\n }\n if (message.fromAddress != null && message.hasOwnProperty(\"fromAddress\"))\n object.fromAddress =\n options.bytes === String\n ? $util.base64.encode(message.fromAddress, 0, message.fromAddress.length)\n : options.bytes === Array\n ? Array.prototype.slice.call(message.fromAddress)\n : message.fromAddress;\n if (message.toAddress != null && message.hasOwnProperty(\"toAddress\"))\n object.toAddress =\n options.bytes === String\n ? $util.base64.encode(message.toAddress, 0, message.toAddress.length)\n : options.bytes === Array\n ? Array.prototype.slice.call(message.toAddress)\n : message.toAddress;\n if (message.amount?.length) {\n object.amount = [];\n for (let j = 0; j < message.amount.length; ++j)\n object.amount[j] = $root.cosmos.base.v1beta1.Coin.toObject(message.amount[j], options);\n }\n return object;\n };\n\n /**\n * Converts this MsgSend to JSON.\n * @function toJSON\n * @memberof types.MsgSend\n * @instance\n * @returns {Object.<string,*>} JSON object\n */\n MsgSend.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return MsgSend;\n })();\n\n return types;\n})();\n\n$root.cosmos = (() => {\n /**\n * Namespace cosmos.\n * @exports cosmos\n * @namespace\n */\n const cosmos = {};\n\n cosmos.base = (() => {\n /**\n * Namespace base.\n * @memberof cosmos\n * @namespace\n */\n const base = {};\n\n base.v1beta1 = (() => {\n /**\n * Namespace v1beta1.\n * @memberof cosmos.base\n * @namespace\n */\n const v1beta1 = {};\n\n v1beta1.Coin = (() => {\n /**\n * Properties of a Coin.\n * @memberof cosmos.base.v1beta1\n * @interface ICoin\n * @property {string|null} [denom] Coin denom\n * @property {string|null} [amount] Coin amount\n */\n\n /**\n * Constructs a new Coin.\n * @memberof cosmos.base.v1beta1\n * @classdesc Represents a Coin.\n * @implements ICoin\n * @constructor\n * @param {cosmos.base.v1beta1.ICoin=} [properties] Properties to set\n */\n function Coin(properties) {\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * Coin denom.\n * @member {string} denom\n * @memberof cosmos.base.v1beta1.Coin\n * @instance\n */\n Coin.prototype.denom = \"\";\n\n /**\n * Coin amount.\n * @member {string} amount\n * @memberof cosmos.base.v1beta1.Coin\n * @instance\n */\n Coin.prototype.amount = \"\";\n\n /**\n * Creates a new Coin instance using the specified properties.\n * @function create\n * @memberof cosmos.base.v1beta1.Coin\n * @static\n * @param {cosmos.base.v1beta1.ICoin=} [properties] Properties to set\n * @returns {cosmos.base.v1beta1.Coin} Coin instance\n */\n Coin.create = function create(properties) {\n return new Coin(properties);\n };\n\n /**\n * Encodes the specified Coin message. Does not implicitly {@link cosmos.base.v1beta1.Coin.verify|verify} messages.\n * @function encode\n * @memberof cosmos.base.v1beta1.Coin\n * @static\n * @param {cosmos.base.v1beta1.ICoin} message Coin message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Coin.encode = function encode(message, writer) {\n if (!writer) writer = $Writer.create();\n if (message.denom != null && Object.hasOwnProperty.call(message, \"denom\"))\n writer.uint32(/* id 1, wireType 2 =*/ 10).string(message.denom);\n if (message.amount != null && Object.hasOwnProperty.call(message, \"amount\"))\n writer.uint32(/* id 2, wireType 2 =*/ 18).string(message.amount);\n return writer;\n };\n\n /**\n * Encodes the specified Coin message, length delimited. Does not implicitly {@link cosmos.base.v1beta1.Coin.verify|verify} messages.\n * @function encodeDelimited\n * @memberof cosmos.base.v1beta1.Coin\n * @static\n * @param {cosmos.base.v1beta1.ICoin} message Coin message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Coin.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a Coin message from the specified reader or buffer.\n * @function decode\n * @memberof cosmos.base.v1beta1.Coin\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {cosmos.base.v1beta1.Coin} Coin\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Coin.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader)) reader = $Reader.create(reader);\n const end = length === undefined ? reader.len : reader.pos + length,\n message = new $root.cosmos.base.v1beta1.Coin();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.denom = reader.string();\n break;\n case 2:\n message.amount = reader.string();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a Coin message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof cosmos.base.v1beta1.Coin\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {cosmos.base.v1beta1.Coin} Coin\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Coin.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader)) reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a Coin message.\n * @function verify\n * @memberof cosmos.base.v1beta1.Coin\n * @static\n * @param {Object.<string,*>} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n Coin.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null) return \"object expected\";\n if (message.denom != null && message.hasOwnProperty(\"denom\"))\n if (!$util.isString(message.denom)) return \"denom: string expected\";\n if (message.amount != null && message.hasOwnProperty(\"amount\"))\n if (!$util.isString(message.amount)) return \"amount: string expected\";\n return null;\n };\n\n /**\n * Creates a Coin message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof cosmos.base.v1beta1.Coin\n * @static\n * @param {Object.<string,*>} object Plain object\n * @returns {cosmos.base.v1beta1.Coin} Coin\n */\n Coin.fromObject = function fromObject(object) {\n if (object instanceof $root.cosmos.base.v1beta1.Coin) return object;\n const message = new $root.cosmos.base.v1beta1.Coin();\n if (object.denom != null) message.denom = String(object.denom);\n if (object.amount != null) message.amount = String(object.amount);\n return message;\n };\n\n /**\n * Creates a plain object from a Coin message. Also converts values to other types if specified.\n * @function toObject\n * @memberof cosmos.base.v1beta1.Coin\n * @static\n * @param {cosmos.base.v1beta1.Coin} message Coin\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.<string,*>} Plain object\n */\n Coin.toObject = function toObject(message, options) {\n if (!options) options = {};\n const object = {};\n if (options.defaults) {\n object.denom = \"\";\n object.amount = \"\";\n }\n if (message.denom != null && message.hasOwnProperty(\"denom\"))\n object.denom = message.denom;\n if (message.amount != null && message.hasOwnProperty(\"amount\"))\n object.amount = message.amount;\n return object;\n };\n\n /**\n * Converts this Coin to JSON.\n * @function toJSON\n * @memberof cosmos.base.v1beta1.Coin\n * @instance\n * @returns {Object.<string,*>} JSON object\n */\n Coin.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return Coin;\n })();\n\n v1beta1.DecCoin = (() => {\n /**\n * Properties of a DecCoin.\n * @memberof cosmos.base.v1beta1\n * @interface IDecCoin\n * @property {string|null} [denom] DecCoin denom\n * @property {string|null} [amount] DecCoin amount\n */\n\n /**\n * Constructs a new DecCoin.\n * @memberof cosmos.base.v1beta1\n * @classdesc Represents a DecCoin.\n * @implements IDecCoin\n * @constructor\n * @param {cosmos.base.v1beta1.IDecCoin=} [properties] Properties to set\n */\n function DecCoin(properties) {\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * DecCoin denom.\n * @member {string} denom\n * @memberof cosmos.base.v1beta1.DecCoin\n * @instance\n */\n DecCoin.prototype.denom = \"\";\n\n /**\n * DecCoin amount.\n * @member {string} amount\n * @memberof cosmos.base.v1beta1.DecCoin\n * @instance\n */\n DecCoin.prototype.amount = \"\";\n\n /**\n * Creates a new DecCoin instance using the specified properties.\n * @function create\n * @memberof cosmos.base.v1beta1.DecCoin\n * @static\n * @param {cosmos.base.v1beta1.IDecCoin=} [properties] Properties to set\n * @returns {cosmos.base.v1beta1.DecCoin} DecCoin instance\n */\n DecCoin.create = function create(properties) {\n return new DecCoin(properties);\n };\n\n /**\n * Encodes the specified DecCoin message. Does not implicitly {@link cosmos.base.v1beta1.DecCoin.verify|verify} messages.\n * @function encode\n * @memberof cosmos.base.v1beta1.DecCoin\n * @static\n * @param {cosmos.base.v1beta1.IDecCoin} message DecCoin message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n DecCoin.encode = function encode(message, writer) {\n if (!writer) writer = $Writer.create();\n if (message.denom != null && Object.hasOwnProperty.call(message, \"denom\"))\n writer.uint32(/* id 1, wireType 2 =*/ 10).string(message.denom);\n if (message.amount != null && Object.hasOwnProperty.call(message, \"amount\"))\n writer.uint32(/* id 2, wireType 2 =*/ 18).string(message.amount);\n return writer;\n };\n\n /**\n * Encodes the specified DecCoin message, length delimited. Does not implicitly {@link cosmos.base.v1beta1.DecCoin.verify|verify} messages.\n * @function encodeDelimited\n * @memberof cosmos.base.v1beta1.DecCoin\n * @static\n * @param {cosmos.base.v1beta1.IDecCoin} message DecCoin message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n DecCoin.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a DecCoin message from the specified reader or buffer.\n * @function decode\n * @memberof cosmos.base.v1beta1.DecCoin\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {cosmos.base.v1beta1.DecCoin} DecCoin\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n DecCoin.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader)) reader = $Reader.create(reader);\n const end = length === undefined ? reader.len : reader.pos + length,\n message = new $root.cosmos.base.v1beta1.DecCoin();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.denom = reader.string();\n break;\n case 2:\n message.amount = reader.string();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a DecCoin message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof cosmos.base.v1beta1.DecCoin\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {cosmos.base.v1beta1.DecCoin} DecCoin\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n DecCoin.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader)) reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a DecCoin message.\n * @function verify\n * @memberof cosmos.base.v1beta1.DecCoin\n * @static\n * @param {Object.<string,*>} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n DecCoin.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null) return \"object expected\";\n if (message.denom != null && message.hasOwnProperty(\"denom\"))\n if (!$util.isString(message.denom)) return \"denom: string expected\";\n if (message.amount != null && message.hasOwnProperty(\"amount\"))\n if (!$util.isString(message.amount)) return \"amount: string expected\";\n return null;\n };\n\n /**\n * Creates a DecCoin message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof cosmos.base.v1beta1.DecCoin\n * @static\n * @param {Object.<string,*>} object Plain object\n * @returns {cosmos.base.v1beta1.DecCoin} DecCoin\n */\n DecCoin.fromObject = function fromObject(object) {\n if (object instanceof $root.cosmos.base.v1beta1.DecCoin) return object;\n const message = new $root.cosmos.base.v1beta1.DecCoin();\n if (object.denom != null) message.denom = String(object.denom);\n if (object.amount != null) message.amount = String(object.amount);\n return message;\n };\n\n /**\n * Creates a plain object from a DecCoin message. Also converts values to other types if specified.\n * @function toObject\n * @memberof cosmos.base.v1beta1.DecCoin\n * @static\n * @param {cosmos.base.v1beta1.DecCoin} message DecCoin\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.<string,*>} Plain object\n */\n DecCoin.toObject = function toObject(message, options) {\n if (!options) options = {};\n const object = {};\n if (options.defaults) {\n object.denom = \"\";\n object.amount = \"\";\n }\n if (message.denom != null && message.hasOwnProperty(\"denom\"))\n object.denom = message.denom;\n if (message.amount != null && message.hasOwnProperty(\"amount\"))\n object.amount = message.amount;\n return object;\n };\n\n /**\n * Converts this DecCoin to JSON.\n * @function toJSON\n * @memberof cosmos.base.v1beta1.DecCoin\n * @instance\n * @returns {Object.<string,*>} JSON object\n */\n DecCoin.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return DecCoin;\n })();\n\n v1beta1.IntProto = (() => {\n /**\n * Properties of an IntProto.\n * @memberof cosmos.base.v1beta1\n * @interface IIntProto\n * @property {string|null} [int] IntProto int\n */\n\n /**\n * Constructs a new IntProto.\n * @memberof cosmos.base.v1beta1\n * @classdesc Represents an IntProto.\n * @implements IIntProto\n * @constructor\n * @param {cosmos.base.v1beta1.IIntProto=} [properties] Properties to set\n */\n function IntProto(properties) {\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * IntProto int.\n * @member {string} int\n * @memberof cosmos.base.v1beta1.IntProto\n * @instance\n */\n IntProto.prototype.int = \"\";\n\n /**\n * Creates a new IntProto instance using the specified properties.\n * @function create\n * @memberof cosmos.base.v1beta1.IntProto\n * @static\n * @param {cosmos.base.v1beta1.IIntProto=} [properties] Properties to set\n * @returns {cosmos.base.v1beta1.IntProto} IntProto instance\n */\n IntProto.create = function create(properties) {\n return new IntProto(properties);\n };\n\n /**\n * Encodes the specified IntProto message. Does not implicitly {@link cosmos.base.v1beta1.IntProto.verify|verify} messages.\n * @function encode\n * @memberof cosmos.base.v1beta1.IntProto\n * @static\n * @param {cosmos.base.v1beta1.IIntProto} message IntProto message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n IntProto.encode = function encode(message, writer) {\n if (!writer) writer = $Writer.create();\n if (message.int != null && Object.hasOwnProperty.call(message, \"int\"))\n writer.uint32(/* id 1, wireType 2 =*/ 10).string(message.int);\n return writer;\n };\n\n /**\n * Encodes the specified IntProto message, length delimited. Does not implicitly {@link cosmos.base.v1beta1.IntProto.verify|verify} messages.\n * @function encodeDelimited\n * @memberof cosmos.base.v1beta1.IntProto\n * @static\n * @param {cosmos.base.v1beta1.IIntProto} message IntProto message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n IntProto.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes an IntProto message from the specified reader or buffer.\n * @function decode\n * @memberof cosmos.base.v1beta1.IntProto\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {cosmos.base.v1beta1.IntProto} IntProto\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n IntProto.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader)) reader = $Reader.create(reader);\n const end = length === undefined ? reader.len : reader.pos + length,\n message = new $root.cosmos.base.v1beta1.IntProto();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.int = reader.string();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes an IntProto message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof cosmos.base.v1beta1.IntProto\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {cosmos.base.v1beta1.IntProto} IntProto\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n IntProto.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader)) reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies an IntProto message.\n * @function verify\n * @memberof cosmos.base.v1beta1.IntProto\n * @static\n * @param {Object.<string,*>} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n IntProto.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null) return \"object expected\";\n if (message.int != null && message.hasOwnProperty(\"int\"))\n if (!$util.isString(message.int)) return \"int: string expected\";\n return null;\n };\n\n /**\n * Creates an IntProto message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof cosmos.base.v1beta1.IntProto\n * @static\n * @param {Object.<string,*>} object Plain object\n * @returns {cosmos.base.v1beta1.IntProto} IntProto\n */\n IntProto.fromObject = function fromObject(object) {\n if (object instanceof $root.cosmos.base.v1beta1.IntProto) return object;\n const message = new $root.cosmos.base.v1beta1.IntProto();\n if (object.int != null) message.int = String(object.int);\n return message;\n };\n\n /**\n * Creates a plain object from an IntProto message. Also converts values to other types if specified.\n * @function toObject\n * @memberof cosmos.base.v1beta1.IntProto\n * @static\n * @param {cosmos.base.v1beta1.IntProto} message IntProto\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.<string,*>} Plain object\n */\n IntProto.toObject = function toObject(message, options) {\n if (!options) options = {};\n const object = {};\n if (options.defaults) object.int = \"\";\n if (message.int != null && message.hasOwnProperty(\"int\")) object.int = message.int;\n return object;\n };\n\n /**\n * Converts this IntProto to JSON.\n * @function toJSON\n * @memberof cosmos.base.v1beta1.IntProto\n * @instance\n * @returns {Object.<string,*>} JSON object\n */\n IntProto.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return IntProto;\n })();\n\n v1beta1.DecProto = (() => {\n /**\n * Properties of a DecProto.\n * @memberof cosmos.base.v1beta1\n * @interface IDecProto\n * @property {string|null} [dec] DecProto dec\n */\n\n /**\n * Constructs a new DecProto.\n * @memberof cosmos.base.v1beta1\n * @classdesc Represents a DecProto.\n * @implements IDecProto\n * @constructor\n * @param {cosmos.base.v1beta1.IDecProto=} [properties] Properties to set\n */\n function DecProto(properties) {\n if (properties)\n for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * DecProto dec.\n * @member {string} dec\n * @memberof cosmos.base.v1beta1.DecProto\n * @instance\n */\n DecProto.prototype.dec = \"\";\n\n /**\n * Creates a new DecProto instance using the specified properties.\n * @function create\n * @memberof cosmos.base.v1beta1.DecProto\n * @static\n * @param {cosmos.base.v1beta1.IDecProto=} [properties] Properties to set\n * @returns {cosmos.base.v1beta1.DecProto} DecProto instance\n */\n DecProto.create = function create(properties) {\n return new DecProto(properties);\n };\n\n /**\n * Encodes the specified DecProto message. Does not implicitly {@link cosmos.base.v1beta1.DecProto.verify|verify} messages.\n * @function encode\n * @memberof cosmos.base.v1beta1.DecProto\n * @static\n * @param {cosmos.base.v1beta1.IDecProto} message DecProto message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n DecProto.encode = function encode(message, writer) {\n if (!writer) writer = $Writer.create();\n if (message.dec != null && Object.hasOwnProperty.call(message, \"dec\"))\n writer.uint32(/* id 1, wireType 2 =*/ 10).string(message.dec);\n return writer;\n };\n\n /**\n * Encodes the specified DecProto message, length delimited. Does not implicitly {@link cosmos.base.v1beta1.DecProto.verify|verify} messages.\n * @function encodeDelimited\n * @memberof cosmos.base.v1beta1.DecProto\n * @static\n * @param {cosmos.base.v1beta1.IDecProto} message DecProto message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n DecProto.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a DecProto message from the specified reader or buffer.\n * @function decode\n * @memberof cosmos.base.v1beta1.DecProto\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {cosmos.base.v1beta1.DecProto} DecProto\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n DecProto.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader)) reader = $Reader.create(reader);\n const end = length === undefined ? reader.len : reader.pos + length,\n message = new $root.cosmos.base.v1beta1.DecProto();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.dec = reader.string();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a DecProto message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof cosmos.base.v1beta1.DecProto\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {cosmos.base.v1beta1.DecProto} DecProto\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n DecProto.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader)) reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a DecProto message.\n * @function verify\n * @memberof cosmos.base.v1beta1.DecProto\n * @static\n * @param {Object.<string,*>} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n DecProto.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null) return \"object expected\";\n if (message.dec != null && message.hasOwnProperty(\"dec\"))\n if (!$util.isString(message.dec)) return \"dec: string expected\";\n return null;\n };\n\n /**\n * Creates a DecProto message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof cosmos.base.v1beta1.DecProto\n * @static\n * @param {Object.<string,*>} object Plain object\n * @returns {cosmos.base.v1beta1.DecProto} DecProto\n */\n DecProto.fromObject = function fromObject(object) {\n if (object instanceof $root.cosmos.base.v1beta1.DecProto) return object;\n const message = new $root.cosmos.base.v1beta1.DecProto();\n if (object.dec != null) message.dec = String(object.dec);\n return message;\n };\n\n /**\n * Creates a plain object from a DecProto message. Also converts values to other types if specified.\n * @function toObject\n * @memberof cosmos.base.v1beta1.DecProto\n * @static\n * @param {cosmos.base.v1beta1.DecProto} message DecProto\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.<string,*>} Plain object\n */\n DecProto.toObject = function toObject(message, options) {\n if (!options) options = {};\n const object = {};\n if (options.defaults) object.dec = \"\";\n if (message.dec != null && message.hasOwnProperty(\"dec\")) object.dec = message.dec;\n return object;\n };\n\n /**\n * Converts this DecProto to JSON.\n * @function toJSON\n * @memberof cosmos.base.v1beta1.DecProto\n * @instance\n * @returns {Object.<string,*>} JSON object\n */\n DecProto.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return DecProto;\n })();\n\n return v1beta1;\n })();\n\n return base;\n })();\n\n return cosmos;\n})();\n",
|
|
8
8
|
"import { Chain, type TCLikeChain } from \"@uswap/helpers\";\nimport { base64ToBech32, bech32ToBase64 } from \"./addressFormat\";\n\nexport async function createDefaultRegistry() {\n const { $root } = await import(\"./types/MsgCompiled\");\n const importedProtoSigning = await import(\"@cosmjs/proto-signing\");\n const Registry = importedProtoSigning.Registry ?? importedProtoSigning.default?.Registry;\n const importedStargate = await import(\"@cosmjs/stargate\");\n const defaultRegistryTypes = importedStargate.defaultRegistryTypes ?? importedStargate.default?.defaultRegistryTypes;\n\n return new Registry([\n ...defaultRegistryTypes,\n [\"/types.MsgSend\", $root.types.MsgSend],\n [\"/types.MsgDeposit\", $root.types.MsgDeposit],\n ]);\n}\n\nexport async function createDefaultAminoTypes(chain: TCLikeChain) {\n const imported = await import(\"@cosmjs/stargate\");\n const AminoTypes = imported.AminoTypes ?? imported.default?.AminoTypes;\n const aminoTypePrefix = chain === Chain.THORChain ? \"thorchain\" : (\"mayachain\" as const);\n\n return new AminoTypes({\n \"/types.MsgDeposit\": {\n aminoType: `${aminoTypePrefix}/MsgDeposit`,\n fromAmino: ({ signer, ...rest }: any) => ({ ...rest, signer: bech32ToBase64(signer) }),\n toAmino: ({ signer, ...rest }: any) => ({ ...rest, signer: base64ToBech32(signer) }),\n },\n \"/types.MsgSend\": {\n aminoType: `${aminoTypePrefix}/MsgSend`,\n fromAmino: ({ from_address, to_address, ...rest }: any) => ({\n ...rest,\n fromAddress: bech32ToBase64(from_address),\n toAddress: bech32ToBase64(to_address),\n }),\n toAmino: ({ fromAddress, toAddress, ...rest }: any) => ({\n ...rest,\n from_address: base64ToBech32(fromAddress),\n to_address: base64ToBech32(toAddress),\n }),\n },\n });\n}\n",
|
|
9
|
-
"
|
|
9
|
+
"/**\n * Based on code from SwapKit (https://github.com/swapkit/SwapKit),\n * licensed under the Apache License 2.0.\n * Modifications © 2025 Horizontal Systems.\n */\n\nimport type { TxBodyEncodeObject } from \"@cosmjs/proto-signing\";\nimport { AssetValue, Chain, getChainConfig, type TCLikeChain, USwapError } from \"@uswap/helpers\";\n\nimport { createStargateClient, getDefaultChainFee, getDenomWithChain, getMsgSendDenom } from \"../util\";\n\nimport { createDefaultAminoTypes, createDefaultRegistry } from \"./registry\";\nimport type { ThorchainCreateTransactionParams } from \"./types\";\n\ntype MsgSend = ReturnType<typeof transferMsgAmino>;\ntype MsgDeposit = ReturnType<typeof depositMsgAmino>;\ntype DirectMsgSendForBroadcast = ReturnType<typeof parseAminoMessageForDirectSigning<MsgSend>>;\ntype DirectMsgDepositForBroadcast = ReturnType<typeof parseAminoMessageForDirectSigning<MsgDeposit>>;\n\nexport const THORCHAIN_GAS_VALUE = getDefaultChainFee(Chain.THORChain).gas;\nexport const MAYA_GAS_VALUE = getDefaultChainFee(Chain.Maya).gas;\n\nexport const transferMsgAmino = ({\n sender,\n recipient,\n assetValue,\n}: {\n sender: string;\n recipient?: string;\n assetValue: AssetValue;\n}) => {\n const chain = assetValue.chain as typeof Chain.THORChain | typeof Chain.Maya;\n return {\n type: `${chain === Chain.Maya ? \"mayachain\" : \"thorchain\"}/MsgSend` as const,\n value: {\n amount: [{ amount: assetValue.getBaseValue(\"string\"), denom: getMsgSendDenom(assetValue.symbol, true) }],\n from_address: sender,\n to_address: recipient,\n },\n };\n};\n\nexport const depositMsgAmino = ({\n sender,\n assetValue,\n memo = \"\",\n}: {\n sender: string;\n assetValue: AssetValue;\n memo?: string;\n}) => {\n const chain = assetValue.chain as TCLikeChain;\n return {\n type: `${chain === Chain.Maya ? \"mayachain\" : \"thorchain\"}/MsgDeposit` as const,\n value: {\n coins: [{ amount: assetValue.getBaseValue(\"string\"), asset: getDenomWithChain(assetValue) }],\n memo,\n signer: sender,\n },\n };\n};\n\nexport const buildAminoMsg = ({\n sender,\n recipient,\n assetValue,\n memo,\n}: {\n sender: string;\n recipient?: string;\n assetValue: AssetValue;\n memo?: string;\n}) => {\n const isDeposit = !recipient;\n const msg = isDeposit\n ? depositMsgAmino({ assetValue, memo, sender })\n : transferMsgAmino({ assetValue, recipient, sender });\n\n return msg;\n};\n\nexport const convertToSignable = async (msg: MsgSend | MsgDeposit, chain: TCLikeChain) => {\n const aminoTypes = await createDefaultAminoTypes(chain);\n\n return aminoTypes.fromAmino(msg);\n};\n\nconst getAccount = async ({ rpcUrl, sender }: { sender: string; rpcUrl: string }) => {\n const client = await createStargateClient(rpcUrl);\n const account = await client.getAccount(sender);\n\n if (!account) {\n throw new USwapError(\"toolbox_cosmos_account_not_found\", { sender });\n }\n\n return account;\n};\n\nexport function getCreateTransaction(rpcUrl: string) {\n return function createTransaction(params: ThorchainCreateTransactionParams) {\n const { assetValue, recipient, memo, sender, asSignable, asAminoMessage } = params;\n\n if (recipient) {\n return buildTransferTx(rpcUrl)({ asAminoMessage, asSignable, assetValue, memo, recipient, sender });\n }\n\n return buildDepositTx(rpcUrl)({ asAminoMessage, asSignable, assetValue, memo, sender });\n };\n}\n\nexport const buildTransferTx =\n (rpcUrl: string) =>\n async ({\n sender,\n recipient,\n assetValue,\n memo = \"\",\n asSignable = true,\n asAminoMessage = false,\n sequence,\n accountNumber,\n }: ThorchainCreateTransactionParams) => {\n const account = await getAccount({ rpcUrl, sender });\n const chain = assetValue.chain as TCLikeChain;\n const { chainId } = getChainConfig(chain);\n\n const transferMsg = transferMsgAmino({ assetValue, recipient, sender });\n\n const msg = asSignable\n ? await convertToSignable(asAminoMessage ? transferMsg : parseAminoMessageForDirectSigning(transferMsg), chain)\n : transferMsg;\n\n const transaction = {\n accountNumber: accountNumber || account.accountNumber,\n chainId,\n fee: getDefaultChainFee(chain),\n memo,\n msgs: [msg],\n sequence: sequence || account.sequence,\n };\n\n return transaction;\n };\n\nexport const buildDepositTx =\n (rpcUrl: string) =>\n async ({\n sender,\n assetValue,\n memo = \"\",\n asSignable = true,\n asAminoMessage = false,\n sequence,\n accountNumber,\n }: ThorchainCreateTransactionParams) => {\n const account = await getAccount({ rpcUrl, sender });\n const chain = assetValue.chain as TCLikeChain;\n const { chainId } = getChainConfig(chain);\n\n const depositMsg = depositMsgAmino({ assetValue, memo, sender });\n\n const msg = asSignable\n ? await convertToSignable(\n asAminoMessage ? depositMsg : parseAminoMessageForDirectSigning<MsgDeposit>(depositMsg),\n chain,\n )\n : depositMsg;\n\n const transaction = {\n accountNumber: accountNumber || account.accountNumber,\n chainId,\n fee: getDefaultChainFee(chain),\n memo,\n msgs: [msg],\n sequence: sequence || account.sequence,\n };\n\n return transaction;\n };\n\nexport function parseAminoMessageForDirectSigning<T extends MsgDeposit | MsgSend>(msg: T) {\n if (msg.type === \"thorchain/MsgSend\" || msg.type === \"mayachain/MsgSend\") return msg as MsgSend;\n\n return {\n ...msg,\n value: {\n ...msg.value,\n coins: (msg as MsgDeposit).value.coins.map((coin: { asset: string; amount: string }) => {\n const assetValue = AssetValue.from({ asset: coin.asset });\n\n const symbol = (assetValue.isSynthetic ? assetValue.symbol.split(\"/\")?.[1] : assetValue.symbol)?.toUpperCase();\n const chain = (assetValue.isSynthetic ? assetValue.symbol.split(\"/\")?.[0] : assetValue.chain)?.toUpperCase();\n\n return { ...coin, asset: { chain, symbol, synth: assetValue.isSynthetic, ticker: assetValue.ticker } };\n }),\n },\n };\n}\n\nexport async function buildEncodedTxBody({\n chain,\n memo,\n msgs,\n}: {\n msgs: DirectMsgDepositForBroadcast[] | DirectMsgSendForBroadcast[];\n memo: string;\n chain: TCLikeChain;\n}) {\n const registry = await createDefaultRegistry();\n const aminoTypes = await createDefaultAminoTypes(chain);\n\n const signedTxBody: TxBodyEncodeObject = {\n typeUrl: \"/cosmos.tx.v1beta1.TxBody\",\n value: { memo, messages: msgs.map((msg) => aminoTypes.fromAmino(msg)) },\n };\n\n return registry.encode(signedTxBody);\n}\n",
|
|
10
10
|
"export * from \"./client-types\";\n",
|
|
11
11
|
"export * from \"./addressFormat\";\nexport * from \"./messages\";\nexport * from \"./registry\";\nexport * from \"./types\";\n",
|
|
12
|
-
"import type { StdFee } from \"@cosmjs/amino\";\nimport type { Account } from \"@cosmjs/stargate\";\nimport { base64, bech32 } from \"@scure/base\";\nimport {\n AssetValue,\n applyFeeMultiplier,\n Chain,\n type ChainId,\n type CosmosChain,\n CosmosChainPrefixes,\n DerivationPath,\n type DerivationPathArray,\n derivationPathToString,\n FeeOption,\n type GenericTransferParams,\n getChainConfig,\n getRPCUrl,\n NetworkDerivationPath,\n SwapKitError,\n SwapKitNumber,\n type TCLikeChain,\n updateDerivationPath,\n} from \"@uswap/helpers\";\nimport { SwapKitApi } from \"@uswap/helpers/api\";\nimport { match, P } from \"ts-pattern\";\nimport type { CosmosToolboxParams } from \"../types\";\nimport {\n cosmosCreateTransaction,\n createSigningStargateClient,\n createStargateClient,\n getAssetFromDenom,\n getDenomWithChain,\n getMsgSendDenom,\n} from \"../util\";\n\nexport async function fetchFeeRateFromSwapKit(chainId: ChainId, safeDefault: number) {\n try {\n const response = await SwapKitApi.getGasRate();\n const responseGasRate = response.find((gas) => gas.chainId === chainId)?.value;\n\n return responseGasRate ? Number.parseFloat(responseGasRate) : safeDefault;\n } catch {\n return safeDefault;\n }\n}\n\nexport async function getSignerFromPhrase({\n phrase,\n prefix,\n ...derivationParams\n}: { phrase: string; prefix?: string } & ({ chain: Chain; index?: number } | { derivationPath: string })) {\n const importedProtoSigning = await import(\"@cosmjs/proto-signing\");\n const DirectSecp256k1HdWallet =\n importedProtoSigning.DirectSecp256k1HdWallet ?? importedProtoSigning.default?.DirectSecp256k1HdWallet;\n const importedCrypto = await import(\"@cosmjs/crypto\");\n const stringToPath = importedCrypto.stringToPath ?? importedCrypto.default?.stringToPath;\n\n const derivationPath =\n \"derivationPath\" in derivationParams\n ? derivationParams.derivationPath\n : `${DerivationPath[derivationParams.chain]}/${derivationParams.index}`;\n\n return DirectSecp256k1HdWallet.fromMnemonic(phrase, { hdPaths: [stringToPath(derivationPath)], prefix });\n}\n\nexport async function getSignerFromPrivateKey({ privateKey, prefix }: { privateKey: Uint8Array; prefix: string }) {\n const importedProtoSigning = await import(\"@cosmjs/proto-signing\");\n const DirectSecp256k1Wallet =\n importedProtoSigning.DirectSecp256k1Wallet ?? importedProtoSigning.default?.DirectSecp256k1Wallet;\n\n return DirectSecp256k1Wallet.fromKey(privateKey, prefix);\n}\n\nconst SafeDefaultFeeValues = {\n [Chain.Cosmos]: 1000,\n [Chain.Kujira]: 1000,\n [Chain.Noble]: 1000,\n [Chain.THORChain]: 5000000,\n [Chain.Maya]: 5000000,\n [Chain.Harbor]: 5000000,\n};\n\nexport function verifySignature(getAccount: (address: string) => Promise<Account | null>) {\n return async function verifySignature({\n signature,\n message,\n address,\n }: {\n signature: string;\n message: string;\n address: string;\n }) {\n const account = await getAccount(address);\n if (!account?.pubkey) throw new SwapKitError(\"toolbox_cosmos_verify_signature_no_pubkey\");\n\n const importedCrypto = await import(\"@cosmjs/crypto\");\n const Secp256k1Signature = importedCrypto.Secp256k1Signature ?? importedCrypto.default?.Secp256k1Signature;\n const Secp256k1 = importedCrypto.Secp256k1 ?? importedCrypto.default?.Secp256k1;\n\n const secpSignature = Secp256k1Signature.fromFixedLength(base64.decode(signature));\n return Secp256k1.verifySignature(secpSignature, base64.decode(message), account.pubkey.value);\n };\n}\n\nexport async function createCosmosToolbox({ chain, ...toolboxParams }: CosmosToolboxParams) {\n const rpcUrl = await getRPCUrl(chain);\n const chainPrefix = CosmosChainPrefixes[chain];\n\n const index = \"index\" in toolboxParams ? toolboxParams.index || 0 : 0;\n const derivationPath = derivationPathToString(\n \"derivationPath\" in toolboxParams && toolboxParams.derivationPath\n ? toolboxParams.derivationPath\n : updateDerivationPath(NetworkDerivationPath[chain], { index }),\n );\n\n const signer = await match(toolboxParams)\n .with({ phrase: P.string }, ({ phrase }) => getSignerFromPhrase({ derivationPath, phrase, prefix: chainPrefix }))\n .with({ signer: P.any }, ({ signer }) => signer)\n .otherwise(() => undefined);\n\n async function getAccount(address: string) {\n const client = await createStargateClient(rpcUrl);\n return client.getAccount(address);\n }\n\n async function getAddress() {\n const [account] = (await signer?.getAccounts()) || [];\n return account?.address;\n }\n\n async function getPubKey() {\n const [account] = (await signer?.getAccounts()) || [];\n if (!account?.pubkey) {\n throw new SwapKitError(\"toolbox_cosmos_signer_not_defined\");\n }\n return base64.encode(account?.pubkey);\n }\n\n async function signTransaction({\n recipient,\n assetValue,\n memo = \"\",\n feeRate,\n feeOptionKey = FeeOption.Fast,\n }: GenericTransferParams) {\n const from = await getAddress();\n\n if (!(signer && from)) {\n throw new SwapKitError(\"toolbox_cosmos_signer_not_defined\");\n }\n\n const feeAssetValue = AssetValue.from({ chain });\n const assetDenom = getDenomWithChain(feeAssetValue);\n const txFee = feeRate || feeToStdFee((await getFees(chain, SafeDefaultFeeValues[chain]))[feeOptionKey], assetDenom);\n\n const signingClient = await createSigningStargateClient(rpcUrl, signer);\n const denom = getMsgSendDenom(assetValue.symbol);\n const amount = assetValue.getBaseValue(\"string\");\n\n const { TxRaw } = await import(\"cosmjs-types/cosmos/tx/v1beta1/tx\");\n\n const msgSend = { amount: [{ amount, denom }], fromAddress: from, toAddress: recipient };\n\n const txRaw = await signingClient.sign(\n from,\n [{ typeUrl: \"/cosmos.bank.v1beta1.MsgSend\", value: msgSend }],\n txFee as StdFee,\n memo,\n );\n\n const txBytes = TxRaw.encode(txRaw).finish();\n return Buffer.from(txBytes).toString(\"hex\");\n }\n\n async function transfer({\n recipient,\n assetValue,\n memo = \"\",\n feeRate,\n feeOptionKey = FeeOption.Fast,\n dryRun = false,\n }: GenericTransferParams & { dryRun?: boolean }) {\n if (dryRun) {\n return signTransaction({ assetValue, feeOptionKey, feeRate, memo, recipient });\n }\n\n const from = await getAddress();\n\n if (!(signer && from)) {\n throw new SwapKitError(\"toolbox_cosmos_signer_not_defined\");\n }\n\n const feeAssetValue = AssetValue.from({ chain });\n const assetDenom = getDenomWithChain(feeAssetValue);\n const txFee = feeRate || feeToStdFee((await getFees(chain, SafeDefaultFeeValues[chain]))[feeOptionKey], assetDenom);\n\n const signingClient = await createSigningStargateClient(rpcUrl, signer);\n const denom = getMsgSendDenom(assetValue.symbol);\n const message = [{ amount: assetValue.getBaseValue(\"string\"), denom }];\n\n const { transactionHash } = await signingClient.sendTokens(from, recipient, message, txFee, memo);\n\n return transactionHash;\n }\n\n return {\n createPrivateKeyFromPhrase: createPrivateKeyFromPhrase(derivationPath),\n createTransaction: cosmosCreateTransaction,\n fetchFeeRateFromSwapKit,\n getAccount,\n getAddress,\n getBalance: async (address: string, _potentialScamFilter?: boolean) => {\n const denomBalances = await cosmosBalanceDenomsGetter(rpcUrl)(address);\n const balances = await Promise.all(\n denomBalances\n .filter(({ denom }) => denom && !denom.includes(\"IBC/\"))\n .map(({ denom, amount }) => {\n const fullDenom =\n [Chain.THORChain, Chain.Maya].includes(chain as TCLikeChain) &&\n (denom.includes(\"/\") || denom.includes(\"˜\"))\n ? `${chain}.${denom}`\n : denom;\n return getAssetFromDenom(fullDenom, amount);\n }),\n );\n\n if (balances.length === 0) {\n return [AssetValue.from({ chain })];\n }\n\n return balances;\n },\n getBalanceAsDenoms: cosmosBalanceDenomsGetter(rpcUrl),\n getFees: () => getFees(chain, SafeDefaultFeeValues[chain]),\n getPubKey,\n getSignerFromPhrase: async ({ phrase, derivationPath }: { phrase: string; derivationPath: DerivationPathArray }) =>\n getSignerFromPhrase({\n derivationPath: derivationPathToString(derivationPath),\n index,\n phrase,\n prefix: chainPrefix,\n }),\n getSignerFromPrivateKey: async (privateKey: Uint8Array) => {\n const importedSigning = await import(\"@cosmjs/proto-signing\");\n const DirectSecp256k1Wallet =\n importedSigning.DirectSecp256k1Wallet ?? importedSigning.default?.DirectSecp256k1Wallet;\n return DirectSecp256k1Wallet.fromKey(privateKey, chainPrefix);\n },\n signTransaction,\n transfer,\n validateAddress: getCosmosValidateAddress(chain),\n verifySignature: verifySignature(getAccount),\n };\n}\n\nexport async function getFeeRateFromSwapKit(chainId: ChainId, safeDefault: number) {\n try {\n const response = await SwapKitApi.getGasRate();\n const responseGasRate = response.find((gas) => gas.chainId === chainId)?.value;\n\n return responseGasRate ? Number.parseFloat(responseGasRate) : safeDefault;\n } catch {\n return safeDefault;\n }\n}\n\nexport function estimateTransactionFee({ assetValue: { chain } }: { assetValue: AssetValue }) {\n return AssetValue.from({ chain, value: getMinTransactionFee(chain) });\n}\n\nasync function getFees(chain: Chain, safeDefault: number) {\n const { chainId, baseDecimal } = getChainConfig(chain);\n\n const baseFee = await fetchFeeRateFromSwapKit(chainId, safeDefault);\n return {\n average: SwapKitNumber.fromBigInt(BigInt(baseFee), baseDecimal),\n fast: SwapKitNumber.fromBigInt(BigInt(applyFeeMultiplier(baseFee, FeeOption.Fast, true)), baseDecimal),\n fastest: SwapKitNumber.fromBigInt(BigInt(applyFeeMultiplier(baseFee, FeeOption.Fastest, true)), baseDecimal),\n } as { [key in FeeOption]: SwapKitNumber };\n}\n\nfunction feeToStdFee(fee: SwapKitNumber, denom: string): StdFee {\n return { amount: [{ amount: fee.getBaseValue(\"string\"), denom }], gas: \"200000\" };\n}\n\nfunction getMinTransactionFee(chain: Chain) {\n return (\n {\n [Chain.Cosmos]: 0.007,\n [Chain.Kujira]: 0.02,\n [Chain.Noble]: 0.01,\n [Chain.THORChain]: 0.02,\n [Chain.Maya]: 0.02,\n [Chain.Harbor]: 0.02,\n }[chain as CosmosChain] || 0\n );\n}\n\nexport function getCosmosValidateAddress(chain: CosmosChain) {\n const chainPrefix = CosmosChainPrefixes[chain];\n return function validateAddress(address: string) {\n if (!address.startsWith(chainPrefix)) return false;\n\n try {\n const { prefix, words } = bech32.decode(address as `${string}1${string}`);\n const normalized = bech32.encode(prefix, words);\n\n return normalized === address.toLocaleLowerCase();\n } catch {\n return false;\n }\n };\n}\n\nfunction cosmosBalanceDenomsGetter(rpcUrl: string) {\n return async function getCosmosBalanceDenoms(address: string) {\n const client = await createStargateClient(rpcUrl);\n const allBalances = await client.getAllBalances(address);\n\n const balances = allBalances.map((balance) => ({\n ...balance,\n denom: balance.denom.includes(\"/\") ? balance.denom.toUpperCase() : balance.denom,\n }));\n\n return balances;\n };\n}\n\nfunction createPrivateKeyFromPhrase(derivationPath: string) {\n return async function createPrivateKeyFromPhrase(phrase: string) {\n const importedCrypto = await import(\"@cosmjs/crypto\");\n const stringToPath = importedCrypto.stringToPath ?? importedCrypto.default?.stringToPath;\n const Slip10Curve = importedCrypto.Slip10Curve ?? importedCrypto.default?.Slip10Curve;\n const Slip10 = importedCrypto.Slip10 ?? importedCrypto.default?.Slip10;\n const EnglishMnemonic = importedCrypto.EnglishMnemonic ?? importedCrypto.default?.EnglishMnemonic;\n const Bip39 = importedCrypto.Bip39 ?? importedCrypto.default?.Bip39;\n\n const mnemonicChecked = new EnglishMnemonic(phrase);\n const seed = await Bip39.mnemonicToSeed(mnemonicChecked);\n\n const { privkey } = Slip10.derivePath(Slip10Curve.Secp256k1, seed, stringToPath(derivationPath));\n\n return privkey;\n };\n}\n",
|
|
13
|
-
"
|
|
14
|
-
"
|
|
12
|
+
"/**\n * Based on code from SwapKit (https://github.com/swapkit/SwapKit),\n * licensed under the Apache License 2.0.\n * Modifications © 2025 Horizontal Systems.\n */\n\nimport type { StdFee } from \"@cosmjs/amino\";\nimport type { Account } from \"@cosmjs/stargate\";\nimport { base64, bech32 } from \"@scure/base\";\nimport {\n AssetValue,\n applyFeeMultiplier,\n Chain,\n type ChainId,\n type CosmosChain,\n CosmosChainPrefixes,\n DerivationPath,\n type DerivationPathArray,\n derivationPathToString,\n FeeOption,\n type GenericTransferParams,\n getChainConfig,\n getRPCUrl,\n NetworkDerivationPath,\n SwapKitNumber,\n type TCLikeChain,\n USwapError,\n updateDerivationPath,\n} from \"@uswap/helpers\";\nimport { SwapKitApi } from \"@uswap/helpers/api\";\nimport { match, P } from \"ts-pattern\";\nimport type { CosmosToolboxParams } from \"../types\";\nimport {\n cosmosCreateTransaction,\n createSigningStargateClient,\n createStargateClient,\n getAssetFromDenom,\n getDenomWithChain,\n getMsgSendDenom,\n} from \"../util\";\n\nexport async function fetchFeeRateFromSwapKit(chainId: ChainId, safeDefault: number) {\n try {\n const response = await SwapKitApi.getGasRate();\n const responseGasRate = response.find((gas) => gas.chainId === chainId)?.value;\n\n return responseGasRate ? Number.parseFloat(responseGasRate) : safeDefault;\n } catch {\n return safeDefault;\n }\n}\n\nexport async function getSignerFromPhrase({\n phrase,\n prefix,\n ...derivationParams\n}: { phrase: string; prefix?: string } & ({ chain: Chain; index?: number } | { derivationPath: string })) {\n const importedProtoSigning = await import(\"@cosmjs/proto-signing\");\n const DirectSecp256k1HdWallet =\n importedProtoSigning.DirectSecp256k1HdWallet ?? importedProtoSigning.default?.DirectSecp256k1HdWallet;\n const importedCrypto = await import(\"@cosmjs/crypto\");\n const stringToPath = importedCrypto.stringToPath ?? importedCrypto.default?.stringToPath;\n\n const derivationPath =\n \"derivationPath\" in derivationParams\n ? derivationParams.derivationPath\n : `${DerivationPath[derivationParams.chain]}/${derivationParams.index}`;\n\n return DirectSecp256k1HdWallet.fromMnemonic(phrase, { hdPaths: [stringToPath(derivationPath)], prefix });\n}\n\nexport async function getSignerFromPrivateKey({ privateKey, prefix }: { privateKey: Uint8Array; prefix: string }) {\n const importedProtoSigning = await import(\"@cosmjs/proto-signing\");\n const DirectSecp256k1Wallet =\n importedProtoSigning.DirectSecp256k1Wallet ?? importedProtoSigning.default?.DirectSecp256k1Wallet;\n\n return DirectSecp256k1Wallet.fromKey(privateKey, prefix);\n}\n\nconst SafeDefaultFeeValues = {\n [Chain.Cosmos]: 1000,\n [Chain.Kujira]: 1000,\n [Chain.Noble]: 1000,\n [Chain.THORChain]: 5000000,\n [Chain.Maya]: 5000000,\n [Chain.Harbor]: 5000000,\n};\n\nexport function verifySignature(getAccount: (address: string) => Promise<Account | null>) {\n return async function verifySignature({\n signature,\n message,\n address,\n }: {\n signature: string;\n message: string;\n address: string;\n }) {\n const account = await getAccount(address);\n if (!account?.pubkey) throw new USwapError(\"toolbox_cosmos_verify_signature_no_pubkey\");\n\n const importedCrypto = await import(\"@cosmjs/crypto\");\n const Secp256k1Signature = importedCrypto.Secp256k1Signature ?? importedCrypto.default?.Secp256k1Signature;\n const Secp256k1 = importedCrypto.Secp256k1 ?? importedCrypto.default?.Secp256k1;\n\n const secpSignature = Secp256k1Signature.fromFixedLength(base64.decode(signature));\n return Secp256k1.verifySignature(secpSignature, base64.decode(message), account.pubkey.value);\n };\n}\n\nexport async function createCosmosToolbox({ chain, ...toolboxParams }: CosmosToolboxParams) {\n const rpcUrl = await getRPCUrl(chain);\n const chainPrefix = CosmosChainPrefixes[chain];\n\n const index = \"index\" in toolboxParams ? toolboxParams.index || 0 : 0;\n const derivationPath = derivationPathToString(\n \"derivationPath\" in toolboxParams && toolboxParams.derivationPath\n ? toolboxParams.derivationPath\n : updateDerivationPath(NetworkDerivationPath[chain], { index }),\n );\n\n const signer = await match(toolboxParams)\n .with({ phrase: P.string }, ({ phrase }) => getSignerFromPhrase({ derivationPath, phrase, prefix: chainPrefix }))\n .with({ signer: P.any }, ({ signer }) => signer)\n .otherwise(() => undefined);\n\n async function getAccount(address: string) {\n const client = await createStargateClient(rpcUrl);\n return client.getAccount(address);\n }\n\n async function getAddress() {\n const [account] = (await signer?.getAccounts()) || [];\n return account?.address;\n }\n\n async function getPubKey() {\n const [account] = (await signer?.getAccounts()) || [];\n if (!account?.pubkey) {\n throw new USwapError(\"toolbox_cosmos_signer_not_defined\");\n }\n return base64.encode(account?.pubkey);\n }\n\n async function signTransaction({\n recipient,\n assetValue,\n memo = \"\",\n feeRate,\n feeOptionKey = FeeOption.Fast,\n }: GenericTransferParams) {\n const from = await getAddress();\n\n if (!(signer && from)) {\n throw new USwapError(\"toolbox_cosmos_signer_not_defined\");\n }\n\n const feeAssetValue = AssetValue.from({ chain });\n const assetDenom = getDenomWithChain(feeAssetValue);\n const txFee = feeRate || feeToStdFee((await getFees(chain, SafeDefaultFeeValues[chain]))[feeOptionKey], assetDenom);\n\n const signingClient = await createSigningStargateClient(rpcUrl, signer);\n const denom = getMsgSendDenom(assetValue.symbol);\n const amount = assetValue.getBaseValue(\"string\");\n\n const { TxRaw } = await import(\"cosmjs-types/cosmos/tx/v1beta1/tx\");\n\n const msgSend = { amount: [{ amount, denom }], fromAddress: from, toAddress: recipient };\n\n const txRaw = await signingClient.sign(\n from,\n [{ typeUrl: \"/cosmos.bank.v1beta1.MsgSend\", value: msgSend }],\n txFee as StdFee,\n memo,\n );\n\n const txBytes = TxRaw.encode(txRaw).finish();\n return Buffer.from(txBytes).toString(\"hex\");\n }\n\n async function transfer({\n recipient,\n assetValue,\n memo = \"\",\n feeRate,\n feeOptionKey = FeeOption.Fast,\n dryRun = false,\n }: GenericTransferParams & { dryRun?: boolean }) {\n if (dryRun) {\n return signTransaction({ assetValue, feeOptionKey, feeRate, memo, recipient });\n }\n\n const from = await getAddress();\n\n if (!(signer && from)) {\n throw new USwapError(\"toolbox_cosmos_signer_not_defined\");\n }\n\n const feeAssetValue = AssetValue.from({ chain });\n const assetDenom = getDenomWithChain(feeAssetValue);\n const txFee = feeRate || feeToStdFee((await getFees(chain, SafeDefaultFeeValues[chain]))[feeOptionKey], assetDenom);\n\n const signingClient = await createSigningStargateClient(rpcUrl, signer);\n const denom = getMsgSendDenom(assetValue.symbol);\n const message = [{ amount: assetValue.getBaseValue(\"string\"), denom }];\n\n const { transactionHash } = await signingClient.sendTokens(from, recipient, message, txFee, memo);\n\n return transactionHash;\n }\n\n return {\n createPrivateKeyFromPhrase: createPrivateKeyFromPhrase(derivationPath),\n createTransaction: cosmosCreateTransaction,\n fetchFeeRateFromSwapKit,\n getAccount,\n getAddress,\n getBalance: async (address: string, _potentialScamFilter?: boolean) => {\n const denomBalances = await cosmosBalanceDenomsGetter(rpcUrl)(address);\n const balances = await Promise.all(\n denomBalances\n .filter(({ denom }) => denom && !denom.includes(\"IBC/\"))\n .map(({ denom, amount }) => {\n const fullDenom =\n [Chain.THORChain, Chain.Maya].includes(chain as TCLikeChain) &&\n (denom.includes(\"/\") || denom.includes(\"˜\"))\n ? `${chain}.${denom}`\n : denom;\n return getAssetFromDenom(fullDenom, amount);\n }),\n );\n\n if (balances.length === 0) {\n return [AssetValue.from({ chain })];\n }\n\n return balances;\n },\n getBalanceAsDenoms: cosmosBalanceDenomsGetter(rpcUrl),\n getFees: () => getFees(chain, SafeDefaultFeeValues[chain]),\n getPubKey,\n getSignerFromPhrase: async ({ phrase, derivationPath }: { phrase: string; derivationPath: DerivationPathArray }) =>\n getSignerFromPhrase({\n derivationPath: derivationPathToString(derivationPath),\n index,\n phrase,\n prefix: chainPrefix,\n }),\n getSignerFromPrivateKey: async (privateKey: Uint8Array) => {\n const importedSigning = await import(\"@cosmjs/proto-signing\");\n const DirectSecp256k1Wallet =\n importedSigning.DirectSecp256k1Wallet ?? importedSigning.default?.DirectSecp256k1Wallet;\n return DirectSecp256k1Wallet.fromKey(privateKey, chainPrefix);\n },\n signTransaction,\n transfer,\n validateAddress: getCosmosValidateAddress(chain),\n verifySignature: verifySignature(getAccount),\n };\n}\n\nexport async function getFeeRateFromSwapKit(chainId: ChainId, safeDefault: number) {\n try {\n const response = await SwapKitApi.getGasRate();\n const responseGasRate = response.find((gas) => gas.chainId === chainId)?.value;\n\n return responseGasRate ? Number.parseFloat(responseGasRate) : safeDefault;\n } catch {\n return safeDefault;\n }\n}\n\nexport function estimateTransactionFee({ assetValue: { chain } }: { assetValue: AssetValue }) {\n return AssetValue.from({ chain, value: getMinTransactionFee(chain) });\n}\n\nasync function getFees(chain: Chain, safeDefault: number) {\n const { chainId, baseDecimal } = getChainConfig(chain);\n\n const baseFee = await fetchFeeRateFromSwapKit(chainId, safeDefault);\n return {\n average: SwapKitNumber.fromBigInt(BigInt(baseFee), baseDecimal),\n fast: SwapKitNumber.fromBigInt(BigInt(applyFeeMultiplier(baseFee, FeeOption.Fast, true)), baseDecimal),\n fastest: SwapKitNumber.fromBigInt(BigInt(applyFeeMultiplier(baseFee, FeeOption.Fastest, true)), baseDecimal),\n } as { [key in FeeOption]: SwapKitNumber };\n}\n\nfunction feeToStdFee(fee: SwapKitNumber, denom: string): StdFee {\n return { amount: [{ amount: fee.getBaseValue(\"string\"), denom }], gas: \"200000\" };\n}\n\nfunction getMinTransactionFee(chain: Chain) {\n return (\n {\n [Chain.Cosmos]: 0.007,\n [Chain.Kujira]: 0.02,\n [Chain.Noble]: 0.01,\n [Chain.THORChain]: 0.02,\n [Chain.Maya]: 0.02,\n [Chain.Harbor]: 0.02,\n }[chain as CosmosChain] || 0\n );\n}\n\nexport function getCosmosValidateAddress(chain: CosmosChain) {\n const chainPrefix = CosmosChainPrefixes[chain];\n return function validateAddress(address: string) {\n if (!address.startsWith(chainPrefix)) return false;\n\n try {\n const { prefix, words } = bech32.decode(address as `${string}1${string}`);\n const normalized = bech32.encode(prefix, words);\n\n return normalized === address.toLocaleLowerCase();\n } catch {\n return false;\n }\n };\n}\n\nfunction cosmosBalanceDenomsGetter(rpcUrl: string) {\n return async function getCosmosBalanceDenoms(address: string) {\n const client = await createStargateClient(rpcUrl);\n const allBalances = await client.getAllBalances(address);\n\n const balances = allBalances.map((balance) => ({\n ...balance,\n denom: balance.denom.includes(\"/\") ? balance.denom.toUpperCase() : balance.denom,\n }));\n\n return balances;\n };\n}\n\nfunction createPrivateKeyFromPhrase(derivationPath: string) {\n return async function createPrivateKeyFromPhrase(phrase: string) {\n const importedCrypto = await import(\"@cosmjs/crypto\");\n const stringToPath = importedCrypto.stringToPath ?? importedCrypto.default?.stringToPath;\n const Slip10Curve = importedCrypto.Slip10Curve ?? importedCrypto.default?.Slip10Curve;\n const Slip10 = importedCrypto.Slip10 ?? importedCrypto.default?.Slip10;\n const EnglishMnemonic = importedCrypto.EnglishMnemonic ?? importedCrypto.default?.EnglishMnemonic;\n const Bip39 = importedCrypto.Bip39 ?? importedCrypto.default?.Bip39;\n\n const mnemonicChecked = new EnglishMnemonic(phrase);\n const seed = await Bip39.mnemonicToSeed(mnemonicChecked);\n\n const { privkey } = Slip10.derivePath(Slip10Curve.Secp256k1, seed, stringToPath(derivationPath));\n\n return privkey;\n };\n}\n",
|
|
13
|
+
"/**\n * Based on code from SwapKit (https://github.com/swapkit/SwapKit),\n * licensed under the Apache License 2.0.\n * Modifications © 2025 Horizontal Systems.\n */\n\nimport type { Pubkey, Secp256k1HdWallet } from \"@cosmjs/amino\";\nimport { base64 } from \"@scure/base\";\nimport {\n Chain,\n CosmosChainPrefixes,\n derivationPathToString,\n FeeOption,\n type GenericTransferParams,\n getChainConfig,\n getRPCUrl,\n NetworkDerivationPath,\n RequestClient,\n SKConfig,\n SwapKitNumber,\n type TCLikeChain,\n USwapError,\n updateDerivationPath,\n} from \"@uswap/helpers\";\n\nimport { match, P } from \"ts-pattern\";\nimport {\n buildAminoMsg,\n buildEncodedTxBody,\n convertToSignable,\n createDefaultAminoTypes,\n createDefaultRegistry,\n getCreateTransaction,\n parseAminoMessageForDirectSigning,\n} from \"../thorchainUtils\";\nimport type { ThorchainConstantsResponse } from \"../thorchainUtils/types/client-types\";\nimport type { CosmosToolboxParams, MultiSigSigner, MultisigTx } from \"../types\";\nimport {\n createOfflineStargateClient,\n createSigningStargateClient,\n createStargateClient,\n getDefaultChainFee,\n} from \"../util\";\nimport { createCosmosToolbox } from \"./cosmos\";\n\nfunction secp256k1HdWalletFromMnemonic({ prefix, derivationPath }: { prefix: string; derivationPath?: string }) {\n return async function secp256k1HdWalletFromMnemonic(mnemonic: string, index = 0) {\n const importedAmino = await import(\"@cosmjs/amino\");\n const Secp256k1HdWallet = importedAmino.Secp256k1HdWallet ?? importedAmino.default?.Secp256k1HdWallet;\n const importedCrypto = await import(\"@cosmjs/crypto\");\n const stringToPath = importedCrypto.stringToPath ?? importedCrypto.default?.stringToPath;\n\n return Secp256k1HdWallet.fromMnemonic(mnemonic, { hdPaths: [stringToPath(`${derivationPath}/${index}`)], prefix });\n };\n}\n\nfunction exportSignature(signature: Uint8Array) {\n return base64.encode(signature);\n}\n\nfunction signMultisigTx(chain: TCLikeChain) {\n return async function signMultisigTx({ wallet, tx }: { wallet: Secp256k1HdWallet; tx: string | MultisigTx }) {\n const { msgs, accountNumber, sequence, chainId, fee, memo } = typeof tx === \"string\" ? JSON.parse(tx) : tx;\n\n const address = (await wallet.getAccounts())?.[0]?.address || \"\";\n const aminoTypes = await createDefaultAminoTypes(chain);\n const registry = await createDefaultRegistry();\n const signingClient = await createOfflineStargateClient(wallet, { aminoTypes, registry });\n const msgForSigning = [];\n\n for (const msg of msgs) {\n const signMsg = await convertToSignable(msg, chain);\n msgForSigning.push(signMsg);\n }\n\n const {\n signatures: [signature],\n } = await signingClient.sign(address, msgForSigning, fee, memo, { accountNumber, chainId, sequence });\n\n const bodyBytes = await buildEncodedTxBody({ chain, memo, msgs: msgs.map(parseAminoMessageForDirectSigning) });\n\n return { bodyBytes, signature: exportSignature(signature as Uint8Array) };\n };\n}\n\nfunction broadcastMultisigTx({ prefix, rpcUrl }: { prefix: string; rpcUrl: string }) {\n return async function broadcastMultisigTx(\n tx: string,\n signers: MultiSigSigner[],\n membersPubKeys: string[],\n threshold: number,\n bodyBytes: Uint8Array,\n ) {\n const { encodeSecp256k1Pubkey, pubkeyToAddress } = (await import(\"@cosmjs/amino\")).default;\n const { makeMultisignedTxBytes } = (await import(\"@cosmjs/stargate\")).default;\n\n const { sequence, fee } = JSON.parse(tx);\n const multisigPubkey = await createMultisig(membersPubKeys, threshold);\n\n const addressesAndSignatures: [string, Uint8Array][] = signers.map((signer) => [\n pubkeyToAddress(encodeSecp256k1Pubkey(base64.decode(signer.pubKey)), prefix),\n base64.decode(signer.signature),\n ]);\n\n const broadcaster = await createStargateClient(rpcUrl);\n\n const { transactionHash } = await broadcaster.broadcastTx(\n makeMultisignedTxBytes(\n multisigPubkey,\n sequence,\n fee,\n bodyBytes,\n new Map<string, Uint8Array>(addressesAndSignatures),\n ),\n );\n\n return transactionHash;\n };\n}\n\nasync function createMultisig(pubKeys: string[], threshold: number, noSortPubKeys = true) {\n const { createMultisigThresholdPubkey, encodeSecp256k1Pubkey } = (await import(\"@cosmjs/amino\")).default;\n return createMultisigThresholdPubkey(\n pubKeys.map((pubKey) => encodeSecp256k1Pubkey(base64.decode(pubKey))),\n threshold,\n noSortPubKeys,\n );\n}\n\nfunction importSignature(signature: string) {\n return base64.decode(signature);\n}\n\nasync function signWithPrivateKey({ privateKey, message }: { privateKey: Uint8Array; message: string }) {\n const { Secp256k1 } = (await import(\"@cosmjs/crypto\")).default;\n\n const signature = await Secp256k1.createSignature(base64.decode(message), privateKey);\n return base64.encode(Buffer.concat([signature.r(32), signature.s(32)]));\n}\n\nexport async function createThorchainToolbox({ chain, ...toolboxParams }: CosmosToolboxParams<TCLikeChain>) {\n const rpcUrl = await getRPCUrl(chain);\n const { nodeUrl } = getChainConfig(chain);\n const { isStagenet } = SKConfig.get(\"envs\");\n const isThorchain = chain === Chain.THORChain;\n const chainPrefix = `${isStagenet ? \"s\" : \"\"}${CosmosChainPrefixes[chain]}`;\n\n const index = \"index\" in toolboxParams ? toolboxParams.index || 0 : 0;\n\n const derivationPath =\n \"derivationPath\" in toolboxParams && toolboxParams.derivationPath\n ? toolboxParams.derivationPath\n : updateDerivationPath(NetworkDerivationPath[chain], { index });\n\n const cosmosToolbox = await createCosmosToolbox({ chain, ...toolboxParams });\n\n const signer = await match(toolboxParams)\n .with({ phrase: P.string }, ({ phrase }) => cosmosToolbox.getSignerFromPhrase({ derivationPath, phrase }))\n .with({ signer: P.any }, ({ signer }) => signer)\n .otherwise(() => undefined);\n\n const defaultFee = getDefaultChainFee(chain);\n\n async function getFees() {\n let fee: SwapKitNumber;\n\n const constantsUrl = `${nodeUrl}/${isThorchain ? \"thorchain\" : \"mayachain\"}/constants`;\n\n try {\n const {\n int_64_values: { NativeTransactionFee: nativeFee },\n } = await RequestClient.get<ThorchainConstantsResponse>(constantsUrl);\n\n if (!nativeFee || Number.isNaN(nativeFee) || nativeFee < 0) {\n throw new USwapError(\"toolbox_cosmos_invalid_fee\", { nativeFee: nativeFee.toString() });\n }\n\n fee = new SwapKitNumber(nativeFee);\n } catch {\n fee = new SwapKitNumber({ decimal: getChainConfig(chain).baseDecimal, value: isThorchain ? 0.02 : 1 });\n }\n\n return { [FeeOption.Average]: fee, [FeeOption.Fast]: fee, [FeeOption.Fastest]: fee };\n }\n\n async function transfer({\n assetValue,\n memo = \"\",\n recipient,\n }: Omit<GenericTransferParams, \"recipient\"> & { recipient?: string }) {\n const { TxRaw } = await import(\"cosmjs-types/cosmos/tx/v1beta1/tx\");\n const sender = (await signer?.getAccounts())?.[0]?.address;\n if (!(sender && signer)) throw new USwapError(\"toolbox_cosmos_no_signer\");\n\n const isAminoSigner = \"signAmino\" in signer;\n const registry = await createDefaultRegistry();\n const aminoTypes = await createDefaultAminoTypes(chain);\n const signingClient = await createSigningStargateClient(rpcUrl, signer, { aminoTypes, registry });\n\n const aminoMessage = buildAminoMsg({ assetValue, memo, recipient, sender });\n\n if (isAminoSigner) {\n const msgSign = await convertToSignable(aminoMessage, chain);\n\n const { signatures, authInfoBytes } = await signingClient.sign(sender, [msgSign], defaultFee, memo);\n\n const tx = TxRaw.encode({\n authInfoBytes,\n bodyBytes: await buildEncodedTxBody({\n chain,\n memo,\n msgs: [aminoMessage].map(parseAminoMessageForDirectSigning),\n }),\n signatures,\n }).finish();\n\n const txResponse = await signingClient.broadcastTx(tx);\n\n return txResponse.transactionHash;\n }\n\n const preparedMessage = parseAminoMessageForDirectSigning(aminoMessage);\n const msgSign = await convertToSignable(preparedMessage, chain);\n const txResponse = await signingClient.signAndBroadcast(sender, [msgSign], defaultFee, memo);\n\n return txResponse.transactionHash;\n }\n\n return {\n ...cosmosToolbox,\n broadcastMultisigTx: broadcastMultisigTx({ prefix: chainPrefix, rpcUrl }),\n buildAminoMsg,\n buildEncodedTxBody,\n convertToSignable,\n createDefaultAminoTypes: () => createDefaultAminoTypes(chain),\n createDefaultRegistry,\n createMultisig,\n createTransaction: getCreateTransaction(rpcUrl),\n deposit: transfer,\n getFees,\n importSignature,\n parseAminoMessageForDirectSigning,\n pubkeyToAddress: async (pubkey: Pubkey) => {\n const { pubkeyToAddress } = (await import(\"@cosmjs/amino\")).default;\n return pubkeyToAddress(pubkey, chainPrefix);\n },\n secp256k1HdWalletFromMnemonic: secp256k1HdWalletFromMnemonic({\n derivationPath: derivationPathToString(derivationPath),\n prefix: chainPrefix,\n }),\n signMultisigTx: signMultisigTx(chain),\n signWithPrivateKey,\n transfer,\n };\n}\n",
|
|
14
|
+
"/**\n * Based on code from SwapKit (https://github.com/swapkit/SwapKit),\n * licensed under the Apache License 2.0.\n * Modifications © 2025 Horizontal Systems.\n */\n\nimport { Chain, type CosmosChain, USwapError } from \"@uswap/helpers\";\n\nimport type { CosmosToolboxParams } from \"../types\";\nimport { createCosmosToolbox } from \"./cosmos\";\nimport { createThorchainToolbox } from \"./thorchain\";\n\nexport type CosmosToolboxes = {\n GAIA: ReturnType<typeof createCosmosToolbox>;\n KUJI: ReturnType<typeof createCosmosToolbox>;\n MAYA: ReturnType<typeof createThorchainToolbox>;\n NOBLE: ReturnType<typeof createCosmosToolbox>;\n THOR: ReturnType<typeof createThorchainToolbox>;\n};\n\nexport const getCosmosToolbox = <T extends Exclude<CosmosChain, Chain.Harbor>>(\n chain: T,\n params?: Omit<CosmosToolboxParams, \"chain\">,\n): CosmosToolboxes[T] => {\n switch (chain) {\n case Chain.Cosmos:\n case Chain.Kujira:\n case Chain.Noble:\n return createCosmosToolbox({ chain, ...params }) as CosmosToolboxes[T];\n\n case Chain.Maya:\n case Chain.THORChain:\n return createThorchainToolbox({ chain, ...params }) as CosmosToolboxes[T];\n\n default:\n throw new USwapError(\"toolbox_cosmos_not_supported\", { chain });\n }\n};\n\nexport * from \"./cosmos\";\nexport * from \"./thorchain\";\n",
|
|
15
15
|
"export * from \"./thorchainUtils\";\nexport * from \"./toolbox\";\nexport * from \"./types\";\nexport * from \"./util\";\n"
|
|
16
16
|
],
|
|
17
|
-
"mappings": "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",
|
|
18
|
-
"debugId": "
|
|
17
|
+
"mappings": "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",
|
|
18
|
+
"debugId": "14FED4B7B991A48F64756E2164756E21",
|
|
19
19
|
"names": []
|
|
20
20
|
}
|