signet.js 0.0.1-beta.7 → 0.0.1-beta.8
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/chains/Bitcoin/BTCRpcAdapter/BTCRpcAdapter.d.ts +10 -0
- package/chains/Bitcoin/BTCRpcAdapter/Mempool/Mempool.d.ts +15 -0
- package/chains/Bitcoin/BTCRpcAdapter/Mempool/index.d.ts +1 -0
- package/chains/Bitcoin/BTCRpcAdapter/Mempool/types.d.ts +69 -0
- package/chains/Bitcoin/BTCRpcAdapter/index.d.ts +5 -0
- package/chains/Bitcoin/Bitcoin.d.ts +69 -0
- package/chains/Bitcoin/types.d.ts +42 -0
- package/chains/Bitcoin/utils.d.ts +2 -0
- package/chains/Chain.d.ts +74 -0
- package/chains/ChainSignatureContract.d.ts +41 -0
- package/chains/Cosmos/Cosmos.d.ts +51 -0
- package/chains/Cosmos/types.d.ts +30 -0
- package/chains/Cosmos/utils.d.ts +2 -0
- package/chains/EVM/EVM.d.ts +42 -0
- package/chains/EVM/types.d.ts +5 -0
- package/chains/EVM/utils.d.ts +7 -0
- package/chains/index.d.ts +12 -0
- package/chains/types.d.ts +31 -0
- package/chains/utils.d.ts +12 -0
- package/index.cjs +2 -0
- package/index.cjs.map +1 -0
- package/index.d.ts +2 -0
- package/index.js +2674 -0
- package/index.js.map +1 -0
- package/package.json +2 -2
- package/utils/chains/index.d.ts +1 -0
- package/utils/chains/near/ChainSignatureContract.d.ts +38 -0
- package/utils/chains/near/account.d.ts +13 -0
- package/utils/chains/near/constants.d.ts +3 -0
- package/utils/chains/near/index.d.ts +3 -0
- package/utils/chains/near/relayer/index.d.ts +1 -0
- package/utils/chains/near/relayer/relayer.d.ts +8 -0
- package/utils/chains/near/relayer/types.d.ts +22 -0
- package/utils/chains/near/signAndSend/index.d.ts +1 -0
- package/utils/chains/near/signAndSend/keypair.d.ts +6 -0
- package/utils/chains/near/transactionBuilder.d.ts +26 -0
- package/utils/chains/near/types.d.ts +50 -0
- package/utils/index.d.ts +1 -0
- package/.eslintrc.json +0 -55
- package/.prettierrc +0 -1
- package/babel.config.js +0 -6
- package/docs/pages/chain-signatures-contract.mdx +0 -56
- package/docs/pages/chain.mdx +0 -45
- package/docs/pages/chains/bitcoin/bitcoin.mdx +0 -191
- package/docs/pages/chains/bitcoin/btc-rpc-adapter.mdx +0 -307
- package/docs/pages/chains/cosmos.mdx +0 -181
- package/docs/pages/chains/evm.mdx +0 -189
- package/docs/pages/index.mdx +0 -99
- package/docs/snippets/contract.ts +0 -21
- package/docs/snippets/env.ts +0 -13
- package/jest.config.ts +0 -199
- package/src/chains/Bitcoin/BTCRpcAdapter/BTCRpcAdapter.ts +0 -11
- package/src/chains/Bitcoin/BTCRpcAdapter/Mempool/Mempool.ts +0 -96
- package/src/chains/Bitcoin/BTCRpcAdapter/Mempool/index.ts +0 -1
- package/src/chains/Bitcoin/BTCRpcAdapter/Mempool/types.ts +0 -72
- package/src/chains/Bitcoin/BTCRpcAdapter/index.ts +0 -6
- package/src/chains/Bitcoin/Bitcoin.ts +0 -301
- package/src/chains/Bitcoin/types.ts +0 -45
- package/src/chains/Bitcoin/utils.ts +0 -14
- package/src/chains/Chain.ts +0 -96
- package/src/chains/ChainSignatureContract.ts +0 -48
- package/src/chains/Cosmos/Cosmos.ts +0 -279
- package/src/chains/Cosmos/types.ts +0 -35
- package/src/chains/Cosmos/utils.ts +0 -45
- package/src/chains/EVM/EVM.ts +0 -180
- package/src/chains/EVM/types.ts +0 -7
- package/src/chains/EVM/utils.ts +0 -26
- package/src/chains/index.ts +0 -34
- package/src/chains/types.ts +0 -35
- package/src/chains/utils.ts +0 -40
- package/src/index.ts +0 -2
- package/src/utils/chains/index.ts +0 -1
- package/src/utils/chains/near/ChainSignatureContract.ts +0 -195
- package/src/utils/chains/near/account.ts +0 -42
- package/src/utils/chains/near/constants.ts +0 -4
- package/src/utils/chains/near/index.ts +0 -3
- package/src/utils/chains/near/relayer/index.ts +0 -1
- package/src/utils/chains/near/relayer/relayer.ts +0 -39
- package/src/utils/chains/near/relayer/types.ts +0 -24
- package/src/utils/chains/near/signAndSend/index.ts +0 -1
- package/src/utils/chains/near/signAndSend/keypair.ts +0 -180
- package/src/utils/chains/near/transactionBuilder.ts +0 -138
- package/src/utils/chains/near/types.ts +0 -67
- package/src/utils/index.ts +0 -1
- package/tsconfig.eslint.json +0 -8
- package/tsconfig.json +0 -116
- package/vite.config.ts +0 -47
- package/vocs.config.ts +0 -60
package/index.cjs.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../src/chains/Chain.ts","../src/chains/ChainSignatureContract.ts","../src/chains/utils.ts","../src/chains/EVM/utils.ts","../src/chains/EVM/EVM.ts","../src/chains/Bitcoin/utils.ts","../src/chains/Bitcoin/Bitcoin.ts","../src/chains/Bitcoin/BTCRpcAdapter/BTCRpcAdapter.ts","../src/chains/Bitcoin/BTCRpcAdapter/Mempool/Mempool.ts","../src/chains/Bitcoin/BTCRpcAdapter/index.ts","../node_modules/cosmjs-types/utf8.js","../node_modules/cosmjs-types/varint.js","../node_modules/cosmjs-types/binary.js","../node_modules/cosmjs-types/helpers.js","../node_modules/cosmjs-types/cosmos/crypto/multisig/v1beta1/multisig.js","../node_modules/cosmjs-types/google/protobuf/any.js","../node_modules/cosmjs-types/cosmos/tx/signing/v1beta1/signing.js","../node_modules/cosmjs-types/cosmos/base/v1beta1/coin.js","../node_modules/cosmjs-types/cosmos/tx/v1beta1/tx.js","../src/chains/Cosmos/utils.ts","../src/chains/Cosmos/Cosmos.ts","../node_modules/near-api-js/lib/utils/serialize.js","../src/utils/chains/near/constants.ts","../src/utils/chains/near/account.ts","../src/utils/chains/near/relayer/relayer.ts","../src/utils/chains/near/ChainSignatureContract.ts","../src/utils/chains/near/transactionBuilder.ts","../src/utils/chains/near/signAndSend/keypair.ts"],"sourcesContent":["import type {\n KeyDerivationPath,\n MPCPayloads,\n RSVSignature,\n} from '@chains/types'\n\nexport abstract class Chain<TransactionRequest, UnsignedTransaction> {\n /**\n * Gets the native token balance for a given address\n *\n * @param address - The address to check\n * @returns Promise resolving to the balance as a string, formatted according to the chain's decimal places (e.g. ETH, BTC, etc.)\n */\n abstract getBalance(address: string): Promise<string>\n\n /**\n * Uses Sig Network Key Derivation Function to derive the address and public key. from a signer ID and string path.\n *\n * @param predecessor - The id/address of the account requesting signature\n * @param path - The string path used to derive the key\n * @returns Promise resolving to the derived address and public key\n */\n abstract deriveAddressAndPublicKey(\n predecessor: string,\n path: KeyDerivationPath\n ): Promise<{\n address: string\n publicKey: string\n }>\n\n /**\n * Stores an unsigned transaction in local storage for later use.\n * Particularly useful for browser-based wallets that redirects the user to a different page.\n *\n * @param transaction - The unsigned transaction to store\n * @param storageKey - Unique key to identify the stored transaction\n */\n abstract setTransaction(\n transaction: UnsignedTransaction,\n storageKey: string\n ): void\n\n /**\n * Retrieves a previously stored transaction from local storage.\n *\n * @param storageKey - The key used to store the transaction\n * @param options - Additional options\n * @param options.remove - If true, removes the transaction from storage after retrieval\n * @returns The stored transaction or undefined if not found\n */\n abstract getTransaction(\n storageKey: string,\n options?: {\n remove?: boolean\n }\n ): UnsignedTransaction | undefined\n\n /**\n * Prepares a transaction for Sig Network MPC signing by creating the necessary payloads.\n * This method handles chain-specific transaction preparation including:\n * - Fee calculation\n * - Nonce/sequence management\n * - UTXO selection (for UTXO-based chains)\n * - Transaction encoding\n *\n * @param transactionRequest - The transaction request containing parameters like recipient, amount, etc.\n * @returns Promise resolving to the unsigned transaction and MPC payloads for signing\n */\n abstract getMPCPayloadAndTransaction(\n transactionRequest: TransactionRequest\n ): Promise<{\n transaction: UnsignedTransaction\n mpcPayloads: MPCPayloads\n }>\n\n /**\n * Adds Sig Network MPC-generated signatures to an unsigned transaction.\n *\n * @param params - Parameters for adding signatures\n * @param params.transaction - The unsigned transaction to add signatures to\n * @param params.mpcSignatures - Array of RSV signatures generated through MPC\n * @returns The serialized signed transaction ready for broadcast\n */\n abstract addSignature(params: {\n transaction: UnsignedTransaction\n mpcSignatures: RSVSignature[]\n }): string\n\n /**\n * Broadcasts a signed transaction to the network.\n *\n * @param txSerialized - The serialized signed transaction\n * @returns Promise resolving to the transaction hash/ID\n */\n abstract broadcastTx(txSerialized: string): Promise<string>\n}\n","import type BN from 'bn.js'\n\nimport type { RSVSignature, UncompressedPubKeySEC1 } from '@chains/types'\n\nexport interface SignArgs {\n /** The payload to sign as an array of 32 bytes */\n payload: number[]\n /** The derivation path for key generation */\n path: string\n /** Version of the key to use */\n key_version: number\n}\n\nexport abstract class ChainSignatureContract {\n /**\n * Gets the current signature deposit required by the contract.\n * This deposit amount helps manage network congestion.\n *\n * @returns Promise resolving to the required deposit amount as a BigNumber\n */\n abstract getCurrentSignatureDeposit(): Promise<BN>\n\n /**\n * Signs a payload using Sig Network MPC.\n *\n * @param args - Arguments for the signing operation\n * @param args.payload - The data to sign as an array of 32 bytes\n * @param args.path - The string path to use derive the key\n * @param args.key_version - Version of the key to use\n * @returns Promise resolving to the RSV signature\n */\n abstract sign(args: SignArgs & Record<string, unknown>): Promise<RSVSignature>\n\n /**\n * Derives a child public key using a derivation path and predecessor.\n *\n * @param args - Arguments for key derivation\n * @param args.path - The string path to use derive the key\n * @param args.predecessor - The id/address of the account requesting signature\n * @returns Promise resolving to the derived SEC1 uncompressed public key\n */\n abstract getDerivedPublicKey(\n args: {\n path: string\n predecessor: string\n } & Record<string, unknown>\n ): Promise<UncompressedPubKeySEC1>\n}\n","import {\n type MPCSignature,\n type RSVSignature,\n type UncompressedPubKeySEC1,\n} from '@chains/types'\n\nexport const toRSV = (signature: MPCSignature): RSVSignature => {\n return {\n r: signature.big_r.affine_point.substring(2),\n s: signature.s.scalar,\n v: signature.recovery_id,\n }\n}\n\n/**\n * Compresses an uncompressed public key to its compressed format following SEC1 standards.\n * In SEC1, a compressed public key consists of a prefix (02 or 03) followed by the x-coordinate.\n * The prefix indicates whether the y-coordinate is even (02) or odd (03).\n *\n * @param uncompressedPubKeySEC1 - The uncompressed public key in hex format, with or without '04' prefix\n * @returns The compressed public key in hex format\n * @throws Error if the uncompressed public key length is invalid\n */\nexport const compressPubKey = (\n uncompressedPubKeySEC1: UncompressedPubKeySEC1\n): string => {\n const slicedPubKey = uncompressedPubKeySEC1.slice(2)\n\n if (slicedPubKey.length !== 128) {\n throw new Error('Invalid uncompressed public key length')\n }\n\n const x = slicedPubKey.slice(0, 64)\n const y = slicedPubKey.slice(64)\n\n const isEven = parseInt(y.slice(-1), 16) % 2 === 0\n const prefix = isEven ? '02' : '03'\n\n return prefix + x\n}\n","import { ethers } from 'ethers'\n\nexport async function fetchEVMFeeProperties(\n providerUrl: string,\n transaction: ethers.TransactionLike\n): Promise<{\n gasLimit: bigint\n maxFeePerGas: bigint\n maxPriorityFeePerGas: bigint\n maxFee: bigint\n}> {\n const provider = new ethers.JsonRpcProvider(providerUrl)\n const gasLimit = await provider.estimateGas(transaction)\n const feeData = await provider.getFeeData()\n\n const maxFeePerGas = feeData.maxFeePerGas ?? ethers.parseUnits('10', 'gwei')\n const maxPriorityFeePerGas =\n feeData.maxPriorityFeePerGas ?? ethers.parseUnits('10', 'gwei')\n\n return {\n gasLimit,\n maxFeePerGas,\n maxPriorityFeePerGas,\n maxFee: maxFeePerGas * gasLimit,\n }\n}\n","import { fromHex } from '@cosmjs/encoding'\nimport { ethers, keccak256 } from 'ethers'\n\nimport { Chain } from '@chains/Chain'\nimport type { ChainSignatureContract } from '@chains/ChainSignatureContract'\nimport type {\n EVMTransactionRequest,\n EVMUnsignedTransaction,\n} from '@chains/EVM/types'\nimport { fetchEVMFeeProperties } from '@chains/EVM/utils'\nimport type {\n MPCPayloads,\n RSVSignature,\n KeyDerivationPath,\n} from '@chains/types'\n\n/**\n * Implementation of the Chain interface for EVM-compatible networks.\n * Handles interactions with Ethereum Virtual Machine based blockchains like Ethereum, BSC, Polygon, etc.\n */\nexport class EVM extends Chain<EVMTransactionRequest, EVMUnsignedTransaction> {\n private readonly provider: ethers.JsonRpcProvider\n private readonly contract: ChainSignatureContract\n\n /**\n * Creates a new EVM chain instance\n * @param params - Configuration parameters\n * @param params.rpcUrl - URL of the EVM JSON-RPC provider (e.g., Infura endpoint)\n * @param params.contract - Instance of the chain signature contract for MPC operations\n */\n constructor({\n rpcUrl,\n contract,\n }: {\n rpcUrl: string\n contract: ChainSignatureContract\n }) {\n super()\n\n this.contract = contract\n this.provider = new ethers.JsonRpcProvider(rpcUrl)\n }\n\n private async attachGasAndNonce(\n transaction: EVMTransactionRequest\n ): Promise<EVMUnsignedTransaction> {\n const fees = await fetchEVMFeeProperties(\n this.provider._getConnection().url,\n transaction\n )\n const nonce = await this.provider.getTransactionCount(\n transaction.from,\n 'latest'\n )\n\n const { from, ...rest } = transaction\n\n return {\n ...fees,\n chainId: this.provider._network.chainId,\n nonce,\n type: 2,\n ...rest,\n }\n }\n\n private parseSignature(signature: RSVSignature): ethers.SignatureLike {\n return ethers.Signature.from({\n r: `0x${signature.r}`,\n s: `0x${signature.s}`,\n v: signature.v,\n })\n }\n\n async deriveAddressAndPublicKey(\n predecessor: string,\n path: KeyDerivationPath\n ): Promise<{\n address: string\n publicKey: string\n }> {\n const uncompressedPubKey = await this.contract.getDerivedPublicKey({\n path,\n predecessor,\n })\n\n if (!uncompressedPubKey) {\n throw new Error('Failed to get derived public key')\n }\n\n const publicKeyNoPrefix = uncompressedPubKey.startsWith('04')\n ? uncompressedPubKey.substring(2)\n : uncompressedPubKey\n\n const hash = ethers.keccak256(fromHex(publicKeyNoPrefix))\n\n return {\n address: `0x${hash.substring(hash.length - 40)}`,\n publicKey: uncompressedPubKey,\n }\n }\n\n async getBalance(address: string): Promise<string> {\n try {\n const balance = await this.provider.getBalance(address)\n return ethers.formatEther(balance)\n } catch (error) {\n console.error(`Failed to fetch balance for address ${address}:`, error)\n throw new Error('Failed to fetch balance.')\n }\n }\n\n setTransaction(\n transaction: EVMUnsignedTransaction,\n storageKey: string\n ): void {\n const serializedTransaction = JSON.stringify(transaction, (_, value) =>\n typeof value === 'bigint' ? value.toString() : value\n )\n window.localStorage.setItem(storageKey, serializedTransaction)\n }\n\n getTransaction(\n storageKey: string,\n options?: {\n remove?: boolean\n }\n ): EVMUnsignedTransaction | undefined {\n const txSerialized = window.localStorage.getItem(storageKey)\n if (options?.remove) {\n window.localStorage.removeItem(storageKey)\n }\n return txSerialized ? JSON.parse(txSerialized) : undefined\n }\n\n async getMPCPayloadAndTransaction(\n transactionRequest: EVMTransactionRequest\n ): Promise<{\n transaction: EVMUnsignedTransaction\n mpcPayloads: MPCPayloads\n }> {\n const transaction = await this.attachGasAndNonce(transactionRequest)\n const txSerialized = ethers.Transaction.from(transaction).unsignedSerialized\n const transactionHash = keccak256(txSerialized)\n const txHash = Array.from(ethers.getBytes(transactionHash))\n\n return {\n transaction,\n mpcPayloads: [\n {\n index: 0,\n payload: txHash,\n },\n ],\n }\n }\n\n addSignature({\n transaction,\n mpcSignatures,\n }: {\n transaction: EVMUnsignedTransaction\n mpcSignatures: RSVSignature[]\n }): string {\n return ethers.Transaction.from({\n ...transaction,\n signature: this.parseSignature(mpcSignatures[0]),\n }).serialized\n }\n\n async broadcastTx(txSerialized: string): Promise<string> {\n try {\n const txResponse = await this.provider.broadcastTransaction(txSerialized)\n return txResponse.hash\n } catch (error) {\n console.error('Transaction broadcast failed:', error)\n throw new Error('Failed to broadcast transaction.')\n }\n }\n}\n","import * as bitcoin from 'bitcoinjs-lib'\n\nexport function parseBTCNetwork(network: string): bitcoin.networks.Network {\n switch (network.toLowerCase()) {\n case 'mainnet':\n return bitcoin.networks.bitcoin\n case 'testnet':\n return bitcoin.networks.testnet\n case 'regtest':\n return bitcoin.networks.regtest\n default:\n throw new Error(`Unknown Bitcoin network: ${network}`)\n }\n}\n","import * as bitcoin from 'bitcoinjs-lib'\n\nimport { utils } from '@chains'\nimport { type BTCRpcAdapter } from '@chains/Bitcoin/BTCRpcAdapter'\nimport type {\n BTCInput,\n BTCNetworkIds,\n BTCOutput,\n BTCTransactionRequest,\n BTCUnsignedTransaction,\n} from '@chains/Bitcoin/types'\nimport { parseBTCNetwork } from '@chains/Bitcoin/utils'\nimport { Chain } from '@chains/Chain'\nimport type { ChainSignatureContract } from '@chains/ChainSignatureContract'\nimport type {\n MPCPayloads,\n RSVSignature,\n KeyDerivationPath,\n} from '@chains/types'\n\n/**\n * Implementation of the Chain interface for Bitcoin network.\n * Handles interactions with both Bitcoin mainnet and testnet, supporting P2WPKH transactions.\n */\nexport class Bitcoin extends Chain<\n BTCTransactionRequest,\n BTCUnsignedTransaction\n> {\n private static readonly SATOSHIS_PER_BTC = 100_000_000\n\n private readonly network: BTCNetworkIds\n private readonly btcRpcAdapter: BTCRpcAdapter\n private readonly contract: ChainSignatureContract\n\n /**\n * Creates a new Bitcoin chain instance\n * @param params - Configuration parameters\n * @param params.network - Network identifier (mainnet/testnet)\n * @param params.contract - Instance of the chain signature contract for MPC operations\n * @param params.btcRpcAdapter - Bitcoin RPC adapter for network interactions\n */\n constructor({\n network,\n contract,\n btcRpcAdapter,\n }: {\n network: BTCNetworkIds\n contract: ChainSignatureContract\n btcRpcAdapter: BTCRpcAdapter\n }) {\n super()\n\n this.network = network\n this.btcRpcAdapter = btcRpcAdapter\n this.contract = contract\n }\n\n /**\n * Converts satoshis to BTC\n * @param satoshis - Amount in satoshis\n * @returns Amount in BTC\n */\n static toBTC(satoshis: number): number {\n return satoshis / Bitcoin.SATOSHIS_PER_BTC\n }\n\n /**\n * Converts BTC to satoshis\n * @param btc - Amount in BTC\n * @returns Amount in satoshis (rounded)\n */\n static toSatoshi(btc: number): number {\n return Math.round(btc * Bitcoin.SATOSHIS_PER_BTC)\n }\n\n private async fetchTransaction(\n transactionId: string\n ): Promise<bitcoin.Transaction> {\n const data = await this.btcRpcAdapter.getTransaction(transactionId)\n const tx = new bitcoin.Transaction()\n\n data.vout.forEach((vout) => {\n const scriptPubKey = Buffer.from(vout.scriptpubkey, 'hex')\n tx.addOutput(scriptPubKey, Number(vout.value))\n })\n\n return tx\n }\n\n private static parseRSVSignature(signature: RSVSignature): Buffer {\n const r = signature.r.padStart(64, '0')\n const s = signature.s.padStart(64, '0')\n\n const rawSignature = Buffer.from(r + s, 'hex')\n\n if (rawSignature.length !== 64) {\n throw new Error('Invalid signature length.')\n }\n\n return rawSignature\n }\n\n /**\n * Creates a Partially Signed Bitcoin Transaction (PSBT)\n * @param params - Parameters for creating the PSBT\n * @param params.transactionRequest - Transaction request containing inputs and outputs\n * @returns Created PSBT instance\n */\n async createPSBT({\n transactionRequest,\n }: {\n transactionRequest: BTCTransactionRequest\n }): Promise<bitcoin.Psbt> {\n const { inputs, outputs } =\n transactionRequest.inputs && transactionRequest.outputs\n ? transactionRequest\n : await this.btcRpcAdapter.selectUTXOs(transactionRequest.from, [\n {\n address: transactionRequest.to,\n value: parseFloat(transactionRequest.value),\n },\n ])\n\n const psbt = new bitcoin.Psbt({ network: parseBTCNetwork(this.network) })\n\n await Promise.all(\n inputs.map(async (input: BTCInput) => {\n if (!input.scriptPubKey) {\n const transaction = await this.fetchTransaction(input.txid)\n const prevOut = transaction.outs[input.vout]\n input.scriptPubKey = prevOut.script\n }\n\n // Prepare the input as P2WPKH\n psbt.addInput({\n hash: input.txid,\n index: input.vout,\n witnessUtxo: {\n script: input.scriptPubKey,\n value: input.value,\n },\n })\n })\n )\n\n outputs.forEach((out: BTCOutput) => {\n if (out.address) {\n psbt.addOutput({\n address: out.address,\n value: out.value,\n })\n } else if (out.script) {\n psbt.addOutput({\n script: out.script,\n value: out.value,\n })\n }\n })\n\n return psbt\n }\n\n async getBalance(address: string): Promise<string> {\n const balance = await this.btcRpcAdapter.getBalance(address)\n return Bitcoin.toBTC(balance).toString()\n }\n\n async deriveAddressAndPublicKey(\n predecessor: string,\n path: KeyDerivationPath\n ): Promise<{ address: string; publicKey: string }> {\n const uncompressedPubKey = await this.contract.getDerivedPublicKey({\n path,\n predecessor,\n })\n\n if (!uncompressedPubKey) {\n throw new Error('Failed to get derived public key')\n }\n\n const derivedKey = utils.compressPubKey(uncompressedPubKey)\n const publicKeyBuffer = Buffer.from(derivedKey, 'hex')\n const network = parseBTCNetwork(this.network)\n\n const payment = bitcoin.payments.p2wpkh({\n pubkey: publicKeyBuffer,\n network,\n })\n\n const { address } = payment\n\n if (!address) {\n throw new Error('Failed to generate Bitcoin address')\n }\n\n return { address, publicKey: derivedKey }\n }\n\n setTransaction(\n transaction: BTCUnsignedTransaction,\n storageKey: string\n ): void {\n window.localStorage.setItem(\n storageKey,\n JSON.stringify({\n psbt: transaction.psbt.toHex(),\n publicKey: transaction.publicKey,\n })\n )\n }\n\n getTransaction(\n storageKey: string,\n options?: {\n remove?: boolean\n }\n ): BTCUnsignedTransaction | undefined {\n const txSerialized = window.localStorage.getItem(storageKey)\n if (!txSerialized) return undefined\n\n if (options?.remove) {\n window.localStorage.removeItem(storageKey)\n }\n\n const transactionJSON = JSON.parse(txSerialized)\n return {\n psbt: bitcoin.Psbt.fromHex(transactionJSON.psbt as string),\n publicKey: transactionJSON.publicKey,\n }\n }\n\n async getMPCPayloadAndTransaction(\n transactionRequest: BTCTransactionRequest\n ): Promise<{\n transaction: BTCUnsignedTransaction\n mpcPayloads: MPCPayloads\n }> {\n const publicKeyBuffer = Buffer.from(transactionRequest.publicKey, 'hex')\n const psbt = await this.createPSBT({\n transactionRequest,\n })\n\n // We can't double sign a PSBT, therefore we serialize the payload before to return it\n const psbtHex = psbt.toHex()\n\n const mpcPayloads: MPCPayloads = []\n\n const mockKeyPair = (index: number): bitcoin.Signer => ({\n publicKey: publicKeyBuffer,\n sign: (hash: Buffer): Buffer => {\n mpcPayloads.push({\n index,\n payload: Array.from(hash),\n })\n // Return dummy signature to satisfy the interface\n return Buffer.alloc(64)\n },\n })\n\n for (let index = 0; index < psbt.inputCount; index++) {\n psbt.signInput(index, mockKeyPair(index))\n }\n\n return {\n transaction: {\n psbt: bitcoin.Psbt.fromHex(psbtHex),\n publicKey: transactionRequest.publicKey,\n },\n mpcPayloads: mpcPayloads.sort((a, b) => a.index - b.index),\n }\n }\n\n addSignature({\n transaction: { psbt, publicKey },\n mpcSignatures,\n }: {\n transaction: BTCUnsignedTransaction\n mpcSignatures: RSVSignature[]\n }): string {\n const publicKeyBuffer = Buffer.from(publicKey, 'hex')\n\n const keyPair = (index: number): bitcoin.Signer => ({\n publicKey: publicKeyBuffer,\n sign: () => {\n const mpcSignature = mpcSignatures[index]\n return Bitcoin.parseRSVSignature(mpcSignature)\n },\n })\n\n for (let index = 0; index < psbt.inputCount; index++) {\n psbt.signInput(index, keyPair(index))\n }\n\n psbt.finalizeAllInputs()\n return psbt.extractTransaction().toHex()\n }\n\n async broadcastTx(txSerialized: string): Promise<string> {\n return await this.btcRpcAdapter.broadcastTransaction(txSerialized)\n }\n}\n","import type { BTCTransaction, BTCInput, BTCOutput } from '@chains/Bitcoin/types'\n\nexport abstract class BTCRpcAdapter {\n abstract selectUTXOs(\n from: string,\n targets: BTCOutput[]\n ): Promise<{ inputs: BTCInput[]; outputs: BTCOutput[] }>\n abstract broadcastTransaction(transactionHex: string): Promise<string>\n abstract getBalance(address: string): Promise<number>\n abstract getTransaction(txid: string): Promise<BTCTransaction>\n}\n","// There is no types for coinselect\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-expect-error\nimport coinselect from 'coinselect'\n\nimport { BTCRpcAdapter } from '@chains/Bitcoin/BTCRpcAdapter/BTCRpcAdapter'\nimport {\n type BTCFeeRecommendation,\n type UTXO,\n} from '@chains/Bitcoin/BTCRpcAdapter/Mempool/types'\nimport type { BTCTransaction, BTCInput, BTCOutput } from '@chains/Bitcoin/types'\n\nexport class Mempool extends BTCRpcAdapter {\n private readonly providerUrl: string\n\n constructor(providerUrl: string) {\n super()\n this.providerUrl = providerUrl\n }\n\n private async fetchFeeRate(confirmationTarget = 6): Promise<number> {\n const response = await fetch(`${this.providerUrl}/v1/fees/recommended`)\n const data = (await response.json()) as BTCFeeRecommendation\n\n if (confirmationTarget <= 1) {\n return data.fastestFee\n } else if (confirmationTarget <= 3) {\n return data.halfHourFee\n } else if (confirmationTarget <= 6) {\n return data.hourFee\n } else {\n return data.economyFee\n }\n }\n\n private async fetchUTXOs(address: string): Promise<UTXO[]> {\n try {\n const response = await fetch(\n `${this.providerUrl}/address/${address}/utxo`\n )\n return (await response.json()) as UTXO[]\n } catch (error) {\n console.error('Failed to fetch UTXOs:', error)\n return []\n }\n }\n\n async selectUTXOs(\n from: string,\n targets: BTCOutput[],\n confirmationTarget = 6\n ): Promise<{ inputs: BTCInput[]; outputs: BTCOutput[] }> {\n const utxos = await this.fetchUTXOs(from)\n const feeRate = await this.fetchFeeRate(confirmationTarget)\n\n // Add a small amount to the fee rate to ensure the transaction is confirmed\n const ret = coinselect(utxos, targets, Math.ceil(feeRate + 1))\n\n if (!ret.inputs || !ret.outputs) {\n throw new Error(\n 'Invalid transaction: coinselect failed to find a suitable set of inputs and outputs. This could be due to insufficient funds, or no inputs being available that meet the criteria.'\n )\n }\n\n return {\n inputs: ret.inputs,\n outputs: ret.outputs,\n }\n }\n\n async broadcastTransaction(transactionHex: string): Promise<string> {\n const response = await fetch(`${this.providerUrl}/tx`, {\n method: 'POST',\n body: transactionHex,\n })\n\n if (response.ok) {\n return await response.text()\n }\n\n throw new Error(`Failed to broadcast transaction: ${await response.text()}`)\n }\n\n async getBalance(address: string): Promise<number> {\n const response = await fetch(`${this.providerUrl}/address/${address}`)\n const data = (await response.json()) as {\n chain_stats: { funded_txo_sum: number; spent_txo_sum: number }\n }\n return data.chain_stats.funded_txo_sum - data.chain_stats.spent_txo_sum\n }\n\n async getTransaction(txid: string): Promise<BTCTransaction> {\n const response = await fetch(`${this.providerUrl}/tx/${txid}`)\n return (await response.json()) as BTCTransaction\n }\n}\n","import { Mempool } from './Mempool'\nexport { BTCRpcAdapter } from './BTCRpcAdapter'\n\nexport const BTCRpcAdapters = {\n Mempool,\n}\n","/* eslint-disable */\n/**\n * This file and any referenced files were automatically generated by @cosmology/telescope@1.0.7\n * DO NOT MODIFY BY HAND. Instead, download the latest proto files for your chain\n * and run the transpile command or yarn proto command to regenerate this bundle.\n */\n// Copyright (c) 2016, Daniel Wirtz All rights reserved.\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are\n// met:\n// * Redistributions of source code must retain the above copyright\n// notice, this list of conditions and the following disclaimer.\n// * Redistributions in binary form must reproduce the above copyright\n// notice, this list of conditions and the following disclaimer in the\n// documentation and/or other materials provided with the distribution.\n// * Neither the name of its author, nor the names of its contributors\n// may be used to endorse or promote products derived from this software\n// without specific prior written permission.\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n// \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.utf8Write = exports.utf8Read = exports.utf8Length = void 0;\n/**\n * Calculates the UTF8 byte length of a string.\n * @param {string} string String\n * @returns {number} Byte length\n */\nfunction utf8Length(str) {\n let len = 0, c = 0;\n for (let i = 0; i < str.length; ++i) {\n c = str.charCodeAt(i);\n if (c < 128)\n len += 1;\n else if (c < 2048)\n len += 2;\n else if ((c & 0xfc00) === 0xd800 && (str.charCodeAt(i + 1) & 0xfc00) === 0xdc00) {\n ++i;\n len += 4;\n }\n else\n len += 3;\n }\n return len;\n}\nexports.utf8Length = utf8Length;\n/**\n * Reads UTF8 bytes as a string.\n * @param {Uint8Array} buffer Source buffer\n * @param {number} start Source start\n * @param {number} end Source end\n * @returns {string} String read\n */\nfunction utf8Read(buffer, start, end) {\n const len = end - start;\n if (len < 1)\n return \"\";\n const chunk = [];\n let parts = [], i = 0, // char offset\n t; // temporary\n while (start < end) {\n t = buffer[start++];\n if (t < 128)\n chunk[i++] = t;\n else if (t > 191 && t < 224)\n chunk[i++] = ((t & 31) << 6) | (buffer[start++] & 63);\n else if (t > 239 && t < 365) {\n t =\n (((t & 7) << 18) |\n ((buffer[start++] & 63) << 12) |\n ((buffer[start++] & 63) << 6) |\n (buffer[start++] & 63)) -\n 0x10000;\n chunk[i++] = 0xd800 + (t >> 10);\n chunk[i++] = 0xdc00 + (t & 1023);\n }\n else\n chunk[i++] = ((t & 15) << 12) | ((buffer[start++] & 63) << 6) | (buffer[start++] & 63);\n if (i > 8191) {\n (parts || (parts = [])).push(String.fromCharCode(...chunk));\n i = 0;\n }\n }\n if (parts) {\n if (i)\n parts.push(String.fromCharCode(...chunk.slice(0, i)));\n return parts.join(\"\");\n }\n return String.fromCharCode(...chunk.slice(0, i));\n}\nexports.utf8Read = utf8Read;\n/**\n * Writes a string as UTF8 bytes.\n * @param {string} string Source string\n * @param {Uint8Array} buffer Destination buffer\n * @param {number} offset Destination offset\n * @returns {number} Bytes written\n */\nfunction utf8Write(str, buffer, offset) {\n const start = offset;\n let c1, // character 1\n c2; // character 2\n for (let i = 0; i < str.length; ++i) {\n c1 = str.charCodeAt(i);\n if (c1 < 128) {\n buffer[offset++] = c1;\n }\n else if (c1 < 2048) {\n buffer[offset++] = (c1 >> 6) | 192;\n buffer[offset++] = (c1 & 63) | 128;\n }\n else if ((c1 & 0xfc00) === 0xd800 && ((c2 = str.charCodeAt(i + 1)) & 0xfc00) === 0xdc00) {\n c1 = 0x10000 + ((c1 & 0x03ff) << 10) + (c2 & 0x03ff);\n ++i;\n buffer[offset++] = (c1 >> 18) | 240;\n buffer[offset++] = ((c1 >> 12) & 63) | 128;\n buffer[offset++] = ((c1 >> 6) & 63) | 128;\n buffer[offset++] = (c1 & 63) | 128;\n }\n else {\n buffer[offset++] = (c1 >> 12) | 224;\n buffer[offset++] = ((c1 >> 6) & 63) | 128;\n buffer[offset++] = (c1 & 63) | 128;\n }\n }\n return offset - start;\n}\nexports.utf8Write = utf8Write;\n//# sourceMappingURL=utf8.js.map","\"use strict\";\n/* eslint-disable */\n/**\n * This file and any referenced files were automatically generated by @cosmology/telescope@1.0.7\n * DO NOT MODIFY BY HAND. Instead, download the latest proto files for your chain\n * and run the transpile command or yarn proto command to regenerate this bundle.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.writeByte = exports.writeFixed32 = exports.int64Length = exports.writeVarint64 = exports.writeVarint32 = exports.readInt32 = exports.readUInt32 = exports.zzDecode = exports.zzEncode = exports.varint32read = exports.varint32write = exports.uInt64ToString = exports.int64ToString = exports.int64FromString = exports.varint64write = exports.varint64read = void 0;\n// Copyright 2008 Google Inc. All rights reserved.\n//\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are\n// met:\n//\n// * Redistributions of source code must retain the above copyright\n// notice, this list of conditions and the following disclaimer.\n// * Redistributions in binary form must reproduce the above\n// copyright notice, this list of conditions and the following disclaimer\n// in the documentation and/or other materials provided with the\n// distribution.\n// * Neither the name of Google Inc. nor the names of its\n// contributors may be used to endorse or promote products derived from\n// this software without specific prior written permission.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n// \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n//\n// Code generated by the Protocol Buffer compiler is owned by the owner\n// of the input file used when generating it. This code is not\n// standalone and requires a support library to be linked with it. This\n// support library is itself covered by the above license.\n/* eslint-disable prefer-const,@typescript-eslint/restrict-plus-operands */\n/**\n * Read a 64 bit varint as two JS numbers.\n *\n * Returns tuple:\n * [0]: low bits\n * [1]: high bits\n *\n * Copyright 2008 Google Inc. All rights reserved.\n *\n * See https://github.com/protocolbuffers/protobuf/blob/8a71927d74a4ce34efe2d8769fda198f52d20d12/js/experimental/runtime/kernel/buffer_decoder.js#L175\n */\nfunction varint64read() {\n let lowBits = 0;\n let highBits = 0;\n for (let shift = 0; shift < 28; shift += 7) {\n let b = this.buf[this.pos++];\n lowBits |= (b & 0x7f) << shift;\n if ((b & 0x80) == 0) {\n this.assertBounds();\n return [lowBits, highBits];\n }\n }\n let middleByte = this.buf[this.pos++];\n // last four bits of the first 32 bit number\n lowBits |= (middleByte & 0x0f) << 28;\n // 3 upper bits are part of the next 32 bit number\n highBits = (middleByte & 0x70) >> 4;\n if ((middleByte & 0x80) == 0) {\n this.assertBounds();\n return [lowBits, highBits];\n }\n for (let shift = 3; shift <= 31; shift += 7) {\n let b = this.buf[this.pos++];\n highBits |= (b & 0x7f) << shift;\n if ((b & 0x80) == 0) {\n this.assertBounds();\n return [lowBits, highBits];\n }\n }\n throw new Error(\"invalid varint\");\n}\nexports.varint64read = varint64read;\n/**\n * Write a 64 bit varint, given as two JS numbers, to the given bytes array.\n *\n * Copyright 2008 Google Inc. All rights reserved.\n *\n * See https://github.com/protocolbuffers/protobuf/blob/8a71927d74a4ce34efe2d8769fda198f52d20d12/js/experimental/runtime/kernel/writer.js#L344\n */\nfunction varint64write(lo, hi, bytes) {\n for (let i = 0; i < 28; i = i + 7) {\n const shift = lo >>> i;\n const hasNext = !(shift >>> 7 == 0 && hi == 0);\n const byte = (hasNext ? shift | 0x80 : shift) & 0xff;\n bytes.push(byte);\n if (!hasNext) {\n return;\n }\n }\n const splitBits = ((lo >>> 28) & 0x0f) | ((hi & 0x07) << 4);\n const hasMoreBits = !(hi >> 3 == 0);\n bytes.push((hasMoreBits ? splitBits | 0x80 : splitBits) & 0xff);\n if (!hasMoreBits) {\n return;\n }\n for (let i = 3; i < 31; i = i + 7) {\n const shift = hi >>> i;\n const hasNext = !(shift >>> 7 == 0);\n const byte = (hasNext ? shift | 0x80 : shift) & 0xff;\n bytes.push(byte);\n if (!hasNext) {\n return;\n }\n }\n bytes.push((hi >>> 31) & 0x01);\n}\nexports.varint64write = varint64write;\n// constants for binary math\nconst TWO_PWR_32_DBL = 0x100000000;\n/**\n * Parse decimal string of 64 bit integer value as two JS numbers.\n *\n * Copyright 2008 Google Inc. All rights reserved.\n *\n * See https://github.com/protocolbuffers/protobuf-javascript/blob/a428c58273abad07c66071d9753bc4d1289de426/experimental/runtime/int64.js#L10\n */\nfunction int64FromString(dec) {\n // Check for minus sign.\n const minus = dec[0] === \"-\";\n if (minus) {\n dec = dec.slice(1);\n }\n // Work 6 decimal digits at a time, acting like we're converting base 1e6\n // digits to binary. This is safe to do with floating point math because\n // Number.isSafeInteger(ALL_32_BITS * 1e6) == true.\n const base = 1e6;\n let lowBits = 0;\n let highBits = 0;\n function add1e6digit(begin, end) {\n // Note: Number('') is 0.\n const digit1e6 = Number(dec.slice(begin, end));\n highBits *= base;\n lowBits = lowBits * base + digit1e6;\n // Carry bits from lowBits to\n if (lowBits >= TWO_PWR_32_DBL) {\n highBits = highBits + ((lowBits / TWO_PWR_32_DBL) | 0);\n lowBits = lowBits % TWO_PWR_32_DBL;\n }\n }\n add1e6digit(-24, -18);\n add1e6digit(-18, -12);\n add1e6digit(-12, -6);\n add1e6digit(-6);\n return minus ? negate(lowBits, highBits) : newBits(lowBits, highBits);\n}\nexports.int64FromString = int64FromString;\n/**\n * Losslessly converts a 64-bit signed integer in 32:32 split representation\n * into a decimal string.\n *\n * Copyright 2008 Google Inc. All rights reserved.\n *\n * See https://github.com/protocolbuffers/protobuf-javascript/blob/a428c58273abad07c66071d9753bc4d1289de426/experimental/runtime/int64.js#L10\n */\nfunction int64ToString(lo, hi) {\n let bits = newBits(lo, hi);\n // If we're treating the input as a signed value and the high bit is set, do\n // a manual two's complement conversion before the decimal conversion.\n const negative = bits.hi & 0x80000000;\n if (negative) {\n bits = negate(bits.lo, bits.hi);\n }\n const result = uInt64ToString(bits.lo, bits.hi);\n return negative ? \"-\" + result : result;\n}\nexports.int64ToString = int64ToString;\n/**\n * Losslessly converts a 64-bit unsigned integer in 32:32 split representation\n * into a decimal string.\n *\n * Copyright 2008 Google Inc. All rights reserved.\n *\n * See https://github.com/protocolbuffers/protobuf-javascript/blob/a428c58273abad07c66071d9753bc4d1289de426/experimental/runtime/int64.js#L10\n */\nfunction uInt64ToString(lo, hi) {\n ({ lo, hi } = toUnsigned(lo, hi));\n // Skip the expensive conversion if the number is small enough to use the\n // built-in conversions.\n // Number.MAX_SAFE_INTEGER = 0x001FFFFF FFFFFFFF, thus any number with\n // highBits <= 0x1FFFFF can be safely expressed with a double and retain\n // integer precision.\n // Proven by: Number.isSafeInteger(0x1FFFFF * 2**32 + 0xFFFFFFFF) == true.\n if (hi <= 0x1fffff) {\n return String(TWO_PWR_32_DBL * hi + lo);\n }\n // What this code is doing is essentially converting the input number from\n // base-2 to base-1e7, which allows us to represent the 64-bit range with\n // only 3 (very large) digits. Those digits are then trivial to convert to\n // a base-10 string.\n // The magic numbers used here are -\n // 2^24 = 16777216 = (1,6777216) in base-1e7.\n // 2^48 = 281474976710656 = (2,8147497,6710656) in base-1e7.\n // Split 32:32 representation into 16:24:24 representation so our\n // intermediate digits don't overflow.\n const low = lo & 0xffffff;\n const mid = ((lo >>> 24) | (hi << 8)) & 0xffffff;\n const high = (hi >> 16) & 0xffff;\n // Assemble our three base-1e7 digits, ignoring carries. The maximum\n // value in a digit at this step is representable as a 48-bit integer, which\n // can be stored in a 64-bit floating point number.\n let digitA = low + mid * 6777216 + high * 6710656;\n let digitB = mid + high * 8147497;\n let digitC = high * 2;\n // Apply carries from A to B and from B to C.\n const base = 10000000;\n if (digitA >= base) {\n digitB += Math.floor(digitA / base);\n digitA %= base;\n }\n if (digitB >= base) {\n digitC += Math.floor(digitB / base);\n digitB %= base;\n }\n // If digitC is 0, then we should have returned in the trivial code path\n // at the top for non-safe integers. Given this, we can assume both digitB\n // and digitA need leading zeros.\n return digitC.toString() + decimalFrom1e7WithLeadingZeros(digitB) + decimalFrom1e7WithLeadingZeros(digitA);\n}\nexports.uInt64ToString = uInt64ToString;\nfunction toUnsigned(lo, hi) {\n return { lo: lo >>> 0, hi: hi >>> 0 };\n}\nfunction newBits(lo, hi) {\n return { lo: lo | 0, hi: hi | 0 };\n}\n/**\n * Returns two's compliment negation of input.\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Bitwise_Operators#Signed_32-bit_integers\n */\nfunction negate(lowBits, highBits) {\n highBits = ~highBits;\n if (lowBits) {\n lowBits = ~lowBits + 1;\n }\n else {\n // If lowBits is 0, then bitwise-not is 0xFFFFFFFF,\n // adding 1 to that, results in 0x100000000, which leaves\n // the low bits 0x0 and simply adds one to the high bits.\n highBits += 1;\n }\n return newBits(lowBits, highBits);\n}\n/**\n * Returns decimal representation of digit1e7 with leading zeros.\n */\nconst decimalFrom1e7WithLeadingZeros = (digit1e7) => {\n const partial = String(digit1e7);\n return \"0000000\".slice(partial.length) + partial;\n};\n/**\n * Write a 32 bit varint, signed or unsigned. Same as `varint64write(0, value, bytes)`\n *\n * Copyright 2008 Google Inc. All rights reserved.\n *\n * See https://github.com/protocolbuffers/protobuf/blob/1b18833f4f2a2f681f4e4a25cdf3b0a43115ec26/js/binary/encoder.js#L144\n */\nfunction varint32write(value, bytes) {\n if (value >= 0) {\n // write value as varint 32\n while (value > 0x7f) {\n bytes.push((value & 0x7f) | 0x80);\n value = value >>> 7;\n }\n bytes.push(value);\n }\n else {\n for (let i = 0; i < 9; i++) {\n bytes.push((value & 127) | 128);\n value = value >> 7;\n }\n bytes.push(1);\n }\n}\nexports.varint32write = varint32write;\n/**\n * Read an unsigned 32 bit varint.\n *\n * See https://github.com/protocolbuffers/protobuf/blob/8a71927d74a4ce34efe2d8769fda198f52d20d12/js/experimental/runtime/kernel/buffer_decoder.js#L220\n */\nfunction varint32read() {\n let b = this.buf[this.pos++];\n let result = b & 0x7f;\n if ((b & 0x80) == 0) {\n this.assertBounds();\n return result;\n }\n b = this.buf[this.pos++];\n result |= (b & 0x7f) << 7;\n if ((b & 0x80) == 0) {\n this.assertBounds();\n return result;\n }\n b = this.buf[this.pos++];\n result |= (b & 0x7f) << 14;\n if ((b & 0x80) == 0) {\n this.assertBounds();\n return result;\n }\n b = this.buf[this.pos++];\n result |= (b & 0x7f) << 21;\n if ((b & 0x80) == 0) {\n this.assertBounds();\n return result;\n }\n // Extract only last 4 bits\n b = this.buf[this.pos++];\n result |= (b & 0x0f) << 28;\n for (let readBytes = 5; (b & 0x80) !== 0 && readBytes < 10; readBytes++)\n b = this.buf[this.pos++];\n if ((b & 0x80) != 0)\n throw new Error(\"invalid varint\");\n this.assertBounds();\n // Result can have 32 bits, convert it to unsigned\n return result >>> 0;\n}\nexports.varint32read = varint32read;\n/**\n * encode zig zag\n */\nfunction zzEncode(lo, hi) {\n let mask = hi >> 31;\n hi = (((hi << 1) | (lo >>> 31)) ^ mask) >>> 0;\n lo = ((lo << 1) ^ mask) >>> 0;\n return [lo, hi];\n}\nexports.zzEncode = zzEncode;\n/**\n * decode zig zag\n */\nfunction zzDecode(lo, hi) {\n let mask = -(lo & 1);\n lo = (((lo >>> 1) | (hi << 31)) ^ mask) >>> 0;\n hi = ((hi >>> 1) ^ mask) >>> 0;\n return [lo, hi];\n}\nexports.zzDecode = zzDecode;\n/**\n * unsigned int32 without moving pos.\n */\nfunction readUInt32(buf, pos) {\n return (buf[pos] | (buf[pos + 1] << 8) | (buf[pos + 2] << 16)) + buf[pos + 3] * 0x1000000;\n}\nexports.readUInt32 = readUInt32;\n/**\n * signed int32 without moving pos.\n */\nfunction readInt32(buf, pos) {\n return (buf[pos] | (buf[pos + 1] << 8) | (buf[pos + 2] << 16)) + (buf[pos + 3] << 24);\n}\nexports.readInt32 = readInt32;\n/**\n * writing varint32 to pos\n */\nfunction writeVarint32(val, buf, pos) {\n while (val > 127) {\n buf[pos++] = (val & 127) | 128;\n val >>>= 7;\n }\n buf[pos] = val;\n}\nexports.writeVarint32 = writeVarint32;\n/**\n * writing varint64 to pos\n */\nfunction writeVarint64(val, buf, pos) {\n while (val.hi) {\n buf[pos++] = (val.lo & 127) | 128;\n val.lo = ((val.lo >>> 7) | (val.hi << 25)) >>> 0;\n val.hi >>>= 7;\n }\n while (val.lo > 127) {\n buf[pos++] = (val.lo & 127) | 128;\n val.lo = val.lo >>> 7;\n }\n buf[pos++] = val.lo;\n}\nexports.writeVarint64 = writeVarint64;\nfunction int64Length(lo, hi) {\n let part0 = lo, part1 = ((lo >>> 28) | (hi << 4)) >>> 0, part2 = hi >>> 24;\n return part2 === 0\n ? part1 === 0\n ? part0 < 16384\n ? part0 < 128\n ? 1\n : 2\n : part0 < 2097152\n ? 3\n : 4\n : part1 < 16384\n ? part1 < 128\n ? 5\n : 6\n : part1 < 2097152\n ? 7\n : 8\n : part2 < 128\n ? 9\n : 10;\n}\nexports.int64Length = int64Length;\nfunction writeFixed32(val, buf, pos) {\n buf[pos] = val & 255;\n buf[pos + 1] = (val >>> 8) & 255;\n buf[pos + 2] = (val >>> 16) & 255;\n buf[pos + 3] = val >>> 24;\n}\nexports.writeFixed32 = writeFixed32;\nfunction writeByte(val, buf, pos) {\n buf[pos] = val & 255;\n}\nexports.writeByte = writeByte;\n//# sourceMappingURL=varint.js.map","\"use strict\";\n/* eslint-disable */\n/**\n * This file and any referenced files were automatically generated by @cosmology/telescope@1.0.7\n * DO NOT MODIFY BY HAND. Instead, download the latest proto files for your chain\n * and run the transpile command or yarn proto command to regenerate this bundle.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BinaryWriter = exports.BinaryReader = exports.WireType = void 0;\n// Copyright (c) 2016, Daniel Wirtz All rights reserved.\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are\n// met:\n// * Redistributions of source code must retain the above copyright\n// notice, this list of conditions and the following disclaimer.\n// * Redistributions in binary form must reproduce the above copyright\n// notice, this list of conditions and the following disclaimer in the\n// documentation and/or other materials provided with the distribution.\n// * Neither the name of its author, nor the names of its contributors\n// may be used to endorse or promote products derived from this software\n// without specific prior written permission.\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n// \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n// ---\n// Code generated by the command line utilities is owned by the owner\n// of the input file used when generating it. This code is not\n// standalone and requires a support library to be linked with it. This\n// support library is itself covered by the above license.\nconst utf8_1 = require(\"./utf8\");\nconst varint_1 = require(\"./varint\");\nvar WireType;\n(function (WireType) {\n WireType[WireType[\"Varint\"] = 0] = \"Varint\";\n WireType[WireType[\"Fixed64\"] = 1] = \"Fixed64\";\n WireType[WireType[\"Bytes\"] = 2] = \"Bytes\";\n WireType[WireType[\"Fixed32\"] = 5] = \"Fixed32\";\n})(WireType || (exports.WireType = WireType = {}));\nclass BinaryReader {\n assertBounds() {\n if (this.pos > this.len)\n throw new RangeError(\"premature EOF\");\n }\n constructor(buf) {\n this.buf = buf ? new Uint8Array(buf) : new Uint8Array(0);\n this.pos = 0;\n this.type = 0;\n this.len = this.buf.length;\n }\n tag() {\n const tag = this.uint32(), fieldNo = tag >>> 3, wireType = tag & 7;\n if (fieldNo <= 0 || wireType < 0 || wireType > 5)\n throw new Error(\"illegal tag: field no \" + fieldNo + \" wire type \" + wireType);\n return [fieldNo, wireType, tag];\n }\n skip(length) {\n if (typeof length === \"number\") {\n if (this.pos + length > this.len)\n throw indexOutOfRange(this, length);\n this.pos += length;\n }\n else {\n do {\n if (this.pos >= this.len)\n throw indexOutOfRange(this);\n } while (this.buf[this.pos++] & 128);\n }\n return this;\n }\n skipType(wireType) {\n switch (wireType) {\n case WireType.Varint:\n this.skip();\n break;\n case WireType.Fixed64:\n this.skip(8);\n break;\n case WireType.Bytes:\n this.skip(this.uint32());\n break;\n case 3:\n while ((wireType = this.uint32() & 7) !== 4) {\n this.skipType(wireType);\n }\n break;\n case WireType.Fixed32:\n this.skip(4);\n break;\n /* istanbul ignore next */\n default:\n throw Error(\"invalid wire type \" + wireType + \" at offset \" + this.pos);\n }\n return this;\n }\n uint32() {\n return varint_1.varint32read.bind(this)();\n }\n int32() {\n return this.uint32() | 0;\n }\n sint32() {\n const num = this.uint32();\n return num % 2 === 1 ? (num + 1) / -2 : num / 2; // zigzag encoding\n }\n fixed32() {\n const val = (0, varint_1.readUInt32)(this.buf, this.pos);\n this.pos += 4;\n return val;\n }\n sfixed32() {\n const val = (0, varint_1.readInt32)(this.buf, this.pos);\n this.pos += 4;\n return val;\n }\n int64() {\n const [lo, hi] = varint_1.varint64read.bind(this)();\n return BigInt((0, varint_1.int64ToString)(lo, hi));\n }\n uint64() {\n const [lo, hi] = varint_1.varint64read.bind(this)();\n return BigInt((0, varint_1.uInt64ToString)(lo, hi));\n }\n sint64() {\n let [lo, hi] = varint_1.varint64read.bind(this)();\n // zig zag\n [lo, hi] = (0, varint_1.zzDecode)(lo, hi);\n return BigInt((0, varint_1.int64ToString)(lo, hi));\n }\n fixed64() {\n const lo = this.sfixed32();\n const hi = this.sfixed32();\n return BigInt((0, varint_1.uInt64ToString)(lo, hi));\n }\n sfixed64() {\n const lo = this.sfixed32();\n const hi = this.sfixed32();\n return BigInt((0, varint_1.int64ToString)(lo, hi));\n }\n float() {\n throw new Error(\"float not supported\");\n }\n double() {\n throw new Error(\"double not supported\");\n }\n bool() {\n const [lo, hi] = varint_1.varint64read.bind(this)();\n return lo !== 0 || hi !== 0;\n }\n bytes() {\n const len = this.uint32(), start = this.pos;\n this.pos += len;\n this.assertBounds();\n return this.buf.subarray(start, start + len);\n }\n string() {\n const bytes = this.bytes();\n return (0, utf8_1.utf8Read)(bytes, 0, bytes.length);\n }\n}\nexports.BinaryReader = BinaryReader;\nclass Op {\n constructor(fn, len, val) {\n this.fn = fn;\n this.len = len;\n this.val = val;\n }\n proceed(buf, pos) {\n if (this.fn) {\n this.fn(this.val, buf, pos);\n }\n }\n}\nclass State {\n constructor(writer) {\n this.head = writer.head;\n this.tail = writer.tail;\n this.len = writer.len;\n this.next = writer.states;\n }\n}\nclass BinaryWriter {\n constructor() {\n this.len = 0;\n // uint64 is the same with int64\n this.uint64 = BinaryWriter.prototype.int64;\n // sfixed64 is the same with fixed64\n this.sfixed64 = BinaryWriter.prototype.fixed64;\n // sfixed32 is the same with fixed32\n this.sfixed32 = BinaryWriter.prototype.fixed32;\n this.head = new Op(null, 0, 0);\n this.tail = this.head;\n this.states = null;\n }\n static create() {\n return new BinaryWriter();\n }\n static alloc(size) {\n if (typeof Uint8Array !== \"undefined\") {\n return pool((size) => new Uint8Array(size), Uint8Array.prototype.subarray)(size);\n }\n else {\n return new Array(size);\n }\n }\n _push(fn, len, val) {\n this.tail = this.tail.next = new Op(fn, len, val);\n this.len += len;\n return this;\n }\n finish() {\n let head = this.head.next, pos = 0;\n const buf = BinaryWriter.alloc(this.len);\n while (head) {\n head.proceed(buf, pos);\n pos += head.len;\n head = head.next;\n }\n return buf;\n }\n fork() {\n this.states = new State(this);\n this.head = this.tail = new Op(null, 0, 0);\n this.len = 0;\n return this;\n }\n reset() {\n if (this.states) {\n this.head = this.states.head;\n this.tail = this.states.tail;\n this.len = this.states.len;\n this.states = this.states.next;\n }\n else {\n this.head = this.tail = new Op(null, 0, 0);\n this.len = 0;\n }\n return this;\n }\n ldelim() {\n const head = this.head, tail = this.tail, len = this.len;\n this.reset().uint32(len);\n if (len) {\n this.tail.next = head.next; // skip noop\n this.tail = tail;\n this.len += len;\n }\n return this;\n }\n tag(fieldNo, type) {\n return this.uint32(((fieldNo << 3) | type) >>> 0);\n }\n uint32(value) {\n this.len += (this.tail = this.tail.next =\n new Op(varint_1.writeVarint32, (value = value >>> 0) < 128 ? 1 : value < 16384 ? 2 : value < 2097152 ? 3 : value < 268435456 ? 4 : 5, value)).len;\n return this;\n }\n int32(value) {\n return value < 0\n ? this._push(varint_1.writeVarint64, 10, (0, varint_1.int64FromString)(value.toString())) // 10 bytes per spec\n : this.uint32(value);\n }\n sint32(value) {\n return this.uint32(((value << 1) ^ (value >> 31)) >>> 0);\n }\n int64(value) {\n const { lo, hi } = (0, varint_1.int64FromString)(value.toString());\n return this._push(varint_1.writeVarint64, (0, varint_1.int64Length)(lo, hi), { lo, hi });\n }\n sint64(value) {\n let { lo, hi } = (0, varint_1.int64FromString)(value.toString());\n // zig zag\n [lo, hi] = (0, varint_1.zzEncode)(lo, hi);\n return this._push(varint_1.writeVarint64, (0, varint_1.int64Length)(lo, hi), { lo, hi });\n }\n fixed64(value) {\n const { lo, hi } = (0, varint_1.int64FromString)(value.toString());\n return this._push(varint_1.writeFixed32, 4, lo)._push(varint_1.writeFixed32, 4, hi);\n }\n bool(value) {\n return this._push(varint_1.writeByte, 1, value ? 1 : 0);\n }\n fixed32(value) {\n return this._push(varint_1.writeFixed32, 4, value >>> 0);\n }\n float(value) {\n throw new Error(\"float not supported\" + value);\n }\n double(value) {\n throw new Error(\"double not supported\" + value);\n }\n bytes(value) {\n const len = value.length >>> 0;\n if (!len)\n return this._push(varint_1.writeByte, 1, 0);\n return this.uint32(len)._push(writeBytes, len, value);\n }\n string(value) {\n const len = (0, utf8_1.utf8Length)(value);\n return len ? this.uint32(len)._push(utf8_1.utf8Write, len, value) : this._push(varint_1.writeByte, 1, 0);\n }\n}\nexports.BinaryWriter = BinaryWriter;\nfunction writeBytes(val, buf, pos) {\n if (typeof Uint8Array !== \"undefined\") {\n buf.set(val, pos);\n }\n else {\n for (let i = 0; i < val.length; ++i)\n buf[pos + i] = val[i];\n }\n}\nfunction pool(alloc, slice, size) {\n const SIZE = size || 8192;\n const MAX = SIZE >>> 1;\n let slab = null;\n let offset = SIZE;\n return function pool_alloc(size) {\n if (size < 1 || size > MAX)\n return alloc(size);\n if (offset + size > SIZE) {\n slab = alloc(SIZE);\n offset = 0;\n }\n const buf = slice.call(slab, offset, (offset += size));\n if (offset & 7)\n // align to 32 bit\n offset = (offset | 7) + 1;\n return buf;\n };\n}\nfunction indexOutOfRange(reader, writeLength) {\n return RangeError(\"index out of range: \" + reader.pos + \" + \" + (writeLength || 1) + \" > \" + reader.len);\n}\n//# sourceMappingURL=binary.js.map","\"use strict\";\n/* eslint-disable */\n/**\n * This file and any referenced files were automatically generated by @cosmology/telescope@1.0.7\n * DO NOT MODIFY BY HAND. Instead, download the latest proto files for your chain\n * and run the transpile command or yarn proto command to regenerate this bundle.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fromJsonTimestamp = exports.fromTimestamp = exports.toTimestamp = exports.setPaginationParams = exports.isObject = exports.isSet = exports.fromDuration = exports.toDuration = exports.omitDefault = exports.base64FromBytes = exports.bytesFromBase64 = void 0;\nvar globalThis = (() => {\n if (typeof globalThis !== \"undefined\")\n return globalThis;\n if (typeof self !== \"undefined\")\n return self;\n if (typeof window !== \"undefined\")\n return window;\n if (typeof global !== \"undefined\")\n return global;\n throw \"Unable to locate global object\";\n})();\nconst atob = globalThis.atob || ((b64) => globalThis.Buffer.from(b64, \"base64\").toString(\"binary\"));\nfunction bytesFromBase64(b64) {\n const bin = atob(b64);\n const arr = new Uint8Array(bin.length);\n for (let i = 0; i < bin.length; ++i) {\n arr[i] = bin.charCodeAt(i);\n }\n return arr;\n}\nexports.bytesFromBase64 = bytesFromBase64;\nconst btoa = globalThis.btoa || ((bin) => globalThis.Buffer.from(bin, \"binary\").toString(\"base64\"));\nfunction base64FromBytes(arr) {\n const bin = [];\n arr.forEach((byte) => {\n bin.push(String.fromCharCode(byte));\n });\n return btoa(bin.join(\"\"));\n}\nexports.base64FromBytes = base64FromBytes;\nfunction omitDefault(input) {\n if (typeof input === \"string\") {\n return input === \"\" ? undefined : input;\n }\n if (typeof input === \"number\") {\n return input === 0 ? undefined : input;\n }\n if (typeof input === \"bigint\") {\n return input === BigInt(0) ? undefined : input;\n }\n throw new Error(`Got unsupported type ${typeof input}`);\n}\nexports.omitDefault = omitDefault;\nfunction toDuration(duration) {\n return {\n seconds: BigInt(Math.floor(parseInt(duration) / 1000000000)),\n nanos: parseInt(duration) % 1000000000,\n };\n}\nexports.toDuration = toDuration;\nfunction fromDuration(duration) {\n return (parseInt(duration.seconds.toString()) * 1000000000 + duration.nanos).toString();\n}\nexports.fromDuration = fromDuration;\nfunction isSet(value) {\n return value !== null && value !== undefined;\n}\nexports.isSet = isSet;\nfunction isObject(value) {\n return typeof value === \"object\" && value !== null;\n}\nexports.isObject = isObject;\nconst setPaginationParams = (options, pagination) => {\n if (!pagination) {\n return options;\n }\n if (typeof pagination?.countTotal !== \"undefined\") {\n options.params[\"pagination.count_total\"] = pagination.countTotal;\n }\n if (typeof pagination?.key !== \"undefined\") {\n // String to Uint8Array\n // let uint8arr = new Uint8Array(Buffer.from(data,'base64'));\n // Uint8Array to String\n options.params[\"pagination.key\"] = Buffer.from(pagination.key).toString(\"base64\");\n }\n if (typeof pagination?.limit !== \"undefined\") {\n options.params[\"pagination.limit\"] = pagination.limit.toString();\n }\n if (typeof pagination?.offset !== \"undefined\") {\n options.params[\"pagination.offset\"] = pagination.offset.toString();\n }\n if (typeof pagination?.reverse !== \"undefined\") {\n options.params[\"pagination.reverse\"] = pagination.reverse;\n }\n return options;\n};\nexports.setPaginationParams = setPaginationParams;\nfunction toTimestamp(date) {\n const seconds = numberToLong(date.getTime() / 1000);\n const nanos = (date.getTime() % 1000) * 1000000;\n return {\n seconds,\n nanos,\n };\n}\nexports.toTimestamp = toTimestamp;\nfunction fromTimestamp(t) {\n let millis = Number(t.seconds) * 1000;\n millis += t.nanos / 1000000;\n return new Date(millis);\n}\nexports.fromTimestamp = fromTimestamp;\nconst timestampFromJSON = (object) => {\n return {\n seconds: isSet(object.seconds) ? BigInt(object.seconds.toString()) : BigInt(0),\n nanos: isSet(object.nanos) ? Number(object.nanos) : 0,\n };\n};\nfunction fromJsonTimestamp(o) {\n if (o instanceof Date) {\n return toTimestamp(o);\n }\n else if (typeof o === \"string\") {\n return toTimestamp(new Date(o));\n }\n else {\n return timestampFromJSON(o);\n }\n}\nexports.fromJsonTimestamp = fromJsonTimestamp;\nfunction numberToLong(number) {\n return BigInt(Math.trunc(number));\n}\n//# sourceMappingURL=helpers.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CompactBitArray = exports.MultiSignature = exports.protobufPackage = void 0;\n/* eslint-disable */\nconst binary_1 = require(\"../../../../binary\");\nconst helpers_1 = require(\"../../../../helpers\");\nexports.protobufPackage = \"cosmos.crypto.multisig.v1beta1\";\nfunction createBaseMultiSignature() {\n return {\n signatures: [],\n };\n}\nexports.MultiSignature = {\n typeUrl: \"/cosmos.crypto.multisig.v1beta1.MultiSignature\",\n encode(message, writer = binary_1.BinaryWriter.create()) {\n for (const v of message.signatures) {\n writer.uint32(10).bytes(v);\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof binary_1.BinaryReader ? input : new binary_1.BinaryReader(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseMultiSignature();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.signatures.push(reader.bytes());\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n },\n fromJSON(object) {\n const obj = createBaseMultiSignature();\n if (Array.isArray(object?.signatures))\n obj.signatures = object.signatures.map((e) => (0, helpers_1.bytesFromBase64)(e));\n return obj;\n },\n toJSON(message) {\n const obj = {};\n if (message.signatures) {\n obj.signatures = message.signatures.map((e) => (0, helpers_1.base64FromBytes)(e !== undefined ? e : new Uint8Array()));\n }\n else {\n obj.signatures = [];\n }\n return obj;\n },\n fromPartial(object) {\n const message = createBaseMultiSignature();\n message.signatures = object.signatures?.map((e) => e) || [];\n return message;\n },\n};\nfunction createBaseCompactBitArray() {\n return {\n extraBitsStored: 0,\n elems: new Uint8Array(),\n };\n}\nexports.CompactBitArray = {\n typeUrl: \"/cosmos.crypto.multisig.v1beta1.CompactBitArray\",\n encode(message, writer = binary_1.BinaryWriter.create()) {\n if (message.extraBitsStored !== 0) {\n writer.uint32(8).uint32(message.extraBitsStored);\n }\n if (message.elems.length !== 0) {\n writer.uint32(18).bytes(message.elems);\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof binary_1.BinaryReader ? input : new binary_1.BinaryReader(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseCompactBitArray();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.extraBitsStored = reader.uint32();\n break;\n case 2:\n message.elems = reader.bytes();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n },\n fromJSON(object) {\n const obj = createBaseCompactBitArray();\n if ((0, helpers_1.isSet)(object.extraBitsStored))\n obj.extraBitsStored = Number(object.extraBitsStored);\n if ((0, helpers_1.isSet)(object.elems))\n obj.elems = (0, helpers_1.bytesFromBase64)(object.elems);\n return obj;\n },\n toJSON(message) {\n const obj = {};\n message.extraBitsStored !== undefined && (obj.extraBitsStored = Math.round(message.extraBitsStored));\n message.elems !== undefined &&\n (obj.elems = (0, helpers_1.base64FromBytes)(message.elems !== undefined ? message.elems : new Uint8Array()));\n return obj;\n },\n fromPartial(object) {\n const message = createBaseCompactBitArray();\n message.extraBitsStored = object.extraBitsStored ?? 0;\n message.elems = object.elems ?? new Uint8Array();\n return message;\n },\n};\n//# sourceMappingURL=multisig.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Any = exports.protobufPackage = void 0;\n/* eslint-disable */\nconst binary_1 = require(\"../../binary\");\nconst helpers_1 = require(\"../../helpers\");\nexports.protobufPackage = \"google.protobuf\";\nfunction createBaseAny() {\n return {\n typeUrl: \"\",\n value: new Uint8Array(),\n };\n}\nexports.Any = {\n typeUrl: \"/google.protobuf.Any\",\n encode(message, writer = binary_1.BinaryWriter.create()) {\n if (message.typeUrl !== \"\") {\n writer.uint32(10).string(message.typeUrl);\n }\n if (message.value.length !== 0) {\n writer.uint32(18).bytes(message.value);\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof binary_1.BinaryReader ? input : new binary_1.BinaryReader(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseAny();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.typeUrl = reader.string();\n break;\n case 2:\n message.value = reader.bytes();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n },\n fromJSON(object) {\n const obj = createBaseAny();\n if ((0, helpers_1.isSet)(object.typeUrl))\n obj.typeUrl = String(object.typeUrl);\n if ((0, helpers_1.isSet)(object.value))\n obj.value = (0, helpers_1.bytesFromBase64)(object.value);\n return obj;\n },\n toJSON(message) {\n const obj = {};\n message.typeUrl !== undefined && (obj.typeUrl = message.typeUrl);\n message.value !== undefined &&\n (obj.value = (0, helpers_1.base64FromBytes)(message.value !== undefined ? message.value : new Uint8Array()));\n return obj;\n },\n fromPartial(object) {\n const message = createBaseAny();\n message.typeUrl = object.typeUrl ?? \"\";\n message.value = object.value ?? new Uint8Array();\n return message;\n },\n};\n//# sourceMappingURL=any.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SignatureDescriptor_Data_Multi = exports.SignatureDescriptor_Data_Single = exports.SignatureDescriptor_Data = exports.SignatureDescriptor = exports.SignatureDescriptors = exports.signModeToJSON = exports.signModeFromJSON = exports.SignMode = exports.protobufPackage = void 0;\n/* eslint-disable */\nconst multisig_1 = require(\"../../../crypto/multisig/v1beta1/multisig\");\nconst any_1 = require(\"../../../../google/protobuf/any\");\nconst binary_1 = require(\"../../../../binary\");\nconst helpers_1 = require(\"../../../../helpers\");\nexports.protobufPackage = \"cosmos.tx.signing.v1beta1\";\n/**\n * SignMode represents a signing mode with its own security guarantees.\n *\n * This enum should be considered a registry of all known sign modes\n * in the Cosmos ecosystem. Apps are not expected to support all known\n * sign modes. Apps that would like to support custom sign modes are\n * encouraged to open a small PR against this file to add a new case\n * to this SignMode enum describing their sign mode so that different\n * apps have a consistent version of this enum.\n */\nvar SignMode;\n(function (SignMode) {\n /**\n * SIGN_MODE_UNSPECIFIED - SIGN_MODE_UNSPECIFIED specifies an unknown signing mode and will be\n * rejected.\n */\n SignMode[SignMode[\"SIGN_MODE_UNSPECIFIED\"] = 0] = \"SIGN_MODE_UNSPECIFIED\";\n /**\n * SIGN_MODE_DIRECT - SIGN_MODE_DIRECT specifies a signing mode which uses SignDoc and is\n * verified with raw bytes from Tx.\n */\n SignMode[SignMode[\"SIGN_MODE_DIRECT\"] = 1] = \"SIGN_MODE_DIRECT\";\n /**\n * SIGN_MODE_TEXTUAL - SIGN_MODE_TEXTUAL is a future signing mode that will verify some\n * human-readable textual representation on top of the binary representation\n * from SIGN_MODE_DIRECT. It is currently not supported.\n */\n SignMode[SignMode[\"SIGN_MODE_TEXTUAL\"] = 2] = \"SIGN_MODE_TEXTUAL\";\n /**\n * SIGN_MODE_DIRECT_AUX - SIGN_MODE_DIRECT_AUX specifies a signing mode which uses\n * SignDocDirectAux. As opposed to SIGN_MODE_DIRECT, this sign mode does not\n * require signers signing over other signers' `signer_info`. It also allows\n * for adding Tips in transactions.\n *\n * Since: cosmos-sdk 0.46\n */\n SignMode[SignMode[\"SIGN_MODE_DIRECT_AUX\"] = 3] = \"SIGN_MODE_DIRECT_AUX\";\n /**\n * SIGN_MODE_LEGACY_AMINO_JSON - SIGN_MODE_LEGACY_AMINO_JSON is a backwards compatibility mode which uses\n * Amino JSON and will be removed in the future.\n */\n SignMode[SignMode[\"SIGN_MODE_LEGACY_AMINO_JSON\"] = 127] = \"SIGN_MODE_LEGACY_AMINO_JSON\";\n /**\n * SIGN_MODE_EIP_191 - SIGN_MODE_EIP_191 specifies the sign mode for EIP 191 signing on the Cosmos\n * SDK. Ref: https://eips.ethereum.org/EIPS/eip-191\n *\n * Currently, SIGN_MODE_EIP_191 is registered as a SignMode enum variant,\n * but is not implemented on the SDK by default. To enable EIP-191, you need\n * to pass a custom `TxConfig` that has an implementation of\n * `SignModeHandler` for EIP-191. The SDK may decide to fully support\n * EIP-191 in the future.\n *\n * Since: cosmos-sdk 0.45.2\n */\n SignMode[SignMode[\"SIGN_MODE_EIP_191\"] = 191] = \"SIGN_MODE_EIP_191\";\n SignMode[SignMode[\"UNRECOGNIZED\"] = -1] = \"UNRECOGNIZED\";\n})(SignMode || (exports.SignMode = SignMode = {}));\nfunction signModeFromJSON(object) {\n switch (object) {\n case 0:\n case \"SIGN_MODE_UNSPECIFIED\":\n return SignMode.SIGN_MODE_UNSPECIFIED;\n case 1:\n case \"SIGN_MODE_DIRECT\":\n return SignMode.SIGN_MODE_DIRECT;\n case 2:\n case \"SIGN_MODE_TEXTUAL\":\n return SignMode.SIGN_MODE_TEXTUAL;\n case 3:\n case \"SIGN_MODE_DIRECT_AUX\":\n return SignMode.SIGN_MODE_DIRECT_AUX;\n case 127:\n case \"SIGN_MODE_LEGACY_AMINO_JSON\":\n return SignMode.SIGN_MODE_LEGACY_AMINO_JSON;\n case 191:\n case \"SIGN_MODE_EIP_191\":\n return SignMode.SIGN_MODE_EIP_191;\n case -1:\n case \"UNRECOGNIZED\":\n default:\n return SignMode.UNRECOGNIZED;\n }\n}\nexports.signModeFromJSON = signModeFromJSON;\nfunction signModeToJSON(object) {\n switch (object) {\n case SignMode.SIGN_MODE_UNSPECIFIED:\n return \"SIGN_MODE_UNSPECIFIED\";\n case SignMode.SIGN_MODE_DIRECT:\n return \"SIGN_MODE_DIRECT\";\n case SignMode.SIGN_MODE_TEXTUAL:\n return \"SIGN_MODE_TEXTUAL\";\n case SignMode.SIGN_MODE_DIRECT_AUX:\n return \"SIGN_MODE_DIRECT_AUX\";\n case SignMode.SIGN_MODE_LEGACY_AMINO_JSON:\n return \"SIGN_MODE_LEGACY_AMINO_JSON\";\n case SignMode.SIGN_MODE_EIP_191:\n return \"SIGN_MODE_EIP_191\";\n case SignMode.UNRECOGNIZED:\n default:\n return \"UNRECOGNIZED\";\n }\n}\nexports.signModeToJSON = signModeToJSON;\nfunction createBaseSignatureDescriptors() {\n return {\n signatures: [],\n };\n}\nexports.SignatureDescriptors = {\n typeUrl: \"/cosmos.tx.signing.v1beta1.SignatureDescriptors\",\n encode(message, writer = binary_1.BinaryWriter.create()) {\n for (const v of message.signatures) {\n exports.SignatureDescriptor.encode(v, writer.uint32(10).fork()).ldelim();\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof binary_1.BinaryReader ? input : new binary_1.BinaryReader(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseSignatureDescriptors();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.signatures.push(exports.SignatureDescriptor.decode(reader, reader.uint32()));\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n },\n fromJSON(object) {\n const obj = createBaseSignatureDescriptors();\n if (Array.isArray(object?.signatures))\n obj.signatures = object.signatures.map((e) => exports.SignatureDescriptor.fromJSON(e));\n return obj;\n },\n toJSON(message) {\n const obj = {};\n if (message.signatures) {\n obj.signatures = message.signatures.map((e) => (e ? exports.SignatureDescriptor.toJSON(e) : undefined));\n }\n else {\n obj.signatures = [];\n }\n return obj;\n },\n fromPartial(object) {\n const message = createBaseSignatureDescriptors();\n message.signatures = object.signatures?.map((e) => exports.SignatureDescriptor.fromPartial(e)) || [];\n return message;\n },\n};\nfunction createBaseSignatureDescriptor() {\n return {\n publicKey: undefined,\n data: undefined,\n sequence: BigInt(0),\n };\n}\nexports.SignatureDescriptor = {\n typeUrl: \"/cosmos.tx.signing.v1beta1.SignatureDescriptor\",\n encode(message, writer = binary_1.BinaryWriter.create()) {\n if (message.publicKey !== undefined) {\n any_1.Any.encode(message.publicKey, writer.uint32(10).fork()).ldelim();\n }\n if (message.data !== undefined) {\n exports.SignatureDescriptor_Data.encode(message.data, writer.uint32(18).fork()).ldelim();\n }\n if (message.sequence !== BigInt(0)) {\n writer.uint32(24).uint64(message.sequence);\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof binary_1.BinaryReader ? input : new binary_1.BinaryReader(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseSignatureDescriptor();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.publicKey = any_1.Any.decode(reader, reader.uint32());\n break;\n case 2:\n message.data = exports.SignatureDescriptor_Data.decode(reader, reader.uint32());\n break;\n case 3:\n message.sequence = reader.uint64();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n },\n fromJSON(object) {\n const obj = createBaseSignatureDescriptor();\n if ((0, helpers_1.isSet)(object.publicKey))\n obj.publicKey = any_1.Any.fromJSON(object.publicKey);\n if ((0, helpers_1.isSet)(object.data))\n obj.data = exports.SignatureDescriptor_Data.fromJSON(object.data);\n if ((0, helpers_1.isSet)(object.sequence))\n obj.sequence = BigInt(object.sequence.toString());\n return obj;\n },\n toJSON(message) {\n const obj = {};\n message.publicKey !== undefined &&\n (obj.publicKey = message.publicKey ? any_1.Any.toJSON(message.publicKey) : undefined);\n message.data !== undefined &&\n (obj.data = message.data ? exports.SignatureDescriptor_Data.toJSON(message.data) : undefined);\n message.sequence !== undefined && (obj.sequence = (message.sequence || BigInt(0)).toString());\n return obj;\n },\n fromPartial(object) {\n const message = createBaseSignatureDescriptor();\n if (object.publicKey !== undefined && object.publicKey !== null) {\n message.publicKey = any_1.Any.fromPartial(object.publicKey);\n }\n if (object.data !== undefined && object.data !== null) {\n message.data = exports.SignatureDescriptor_Data.fromPartial(object.data);\n }\n if (object.sequence !== undefined && object.sequence !== null) {\n message.sequence = BigInt(object.sequence.toString());\n }\n return message;\n },\n};\nfunction createBaseSignatureDescriptor_Data() {\n return {\n single: undefined,\n multi: undefined,\n };\n}\nexports.SignatureDescriptor_Data = {\n typeUrl: \"/cosmos.tx.signing.v1beta1.Data\",\n encode(message, writer = binary_1.BinaryWriter.create()) {\n if (message.single !== undefined) {\n exports.SignatureDescriptor_Data_Single.encode(message.single, writer.uint32(10).fork()).ldelim();\n }\n if (message.multi !== undefined) {\n exports.SignatureDescriptor_Data_Multi.encode(message.multi, writer.uint32(18).fork()).ldelim();\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof binary_1.BinaryReader ? input : new binary_1.BinaryReader(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseSignatureDescriptor_Data();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.single = exports.SignatureDescriptor_Data_Single.decode(reader, reader.uint32());\n break;\n case 2:\n message.multi = exports.SignatureDescriptor_Data_Multi.decode(reader, reader.uint32());\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n },\n fromJSON(object) {\n const obj = createBaseSignatureDescriptor_Data();\n if ((0, helpers_1.isSet)(object.single))\n obj.single = exports.SignatureDescriptor_Data_Single.fromJSON(object.single);\n if ((0, helpers_1.isSet)(object.multi))\n obj.multi = exports.SignatureDescriptor_Data_Multi.fromJSON(object.multi);\n return obj;\n },\n toJSON(message) {\n const obj = {};\n message.single !== undefined &&\n (obj.single = message.single ? exports.SignatureDescriptor_Data_Single.toJSON(message.single) : undefined);\n message.multi !== undefined &&\n (obj.multi = message.multi ? exports.SignatureDescriptor_Data_Multi.toJSON(message.multi) : undefined);\n return obj;\n },\n fromPartial(object) {\n const message = createBaseSignatureDescriptor_Data();\n if (object.single !== undefined && object.single !== null) {\n message.single = exports.SignatureDescriptor_Data_Single.fromPartial(object.single);\n }\n if (object.multi !== undefined && object.multi !== null) {\n message.multi = exports.SignatureDescriptor_Data_Multi.fromPartial(object.multi);\n }\n return message;\n },\n};\nfunction createBaseSignatureDescriptor_Data_Single() {\n return {\n mode: 0,\n signature: new Uint8Array(),\n };\n}\nexports.SignatureDescriptor_Data_Single = {\n typeUrl: \"/cosmos.tx.signing.v1beta1.Single\",\n encode(message, writer = binary_1.BinaryWriter.create()) {\n if (message.mode !== 0) {\n writer.uint32(8).int32(message.mode);\n }\n if (message.signature.length !== 0) {\n writer.uint32(18).bytes(message.signature);\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof binary_1.BinaryReader ? input : new binary_1.BinaryReader(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseSignatureDescriptor_Data_Single();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.mode = reader.int32();\n break;\n case 2:\n message.signature = reader.bytes();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n },\n fromJSON(object) {\n const obj = createBaseSignatureDescriptor_Data_Single();\n if ((0, helpers_1.isSet)(object.mode))\n obj.mode = signModeFromJSON(object.mode);\n if ((0, helpers_1.isSet)(object.signature))\n obj.signature = (0, helpers_1.bytesFromBase64)(object.signature);\n return obj;\n },\n toJSON(message) {\n const obj = {};\n message.mode !== undefined && (obj.mode = signModeToJSON(message.mode));\n message.signature !== undefined &&\n (obj.signature = (0, helpers_1.base64FromBytes)(message.signature !== undefined ? message.signature : new Uint8Array()));\n return obj;\n },\n fromPartial(object) {\n const message = createBaseSignatureDescriptor_Data_Single();\n message.mode = object.mode ?? 0;\n message.signature = object.signature ?? new Uint8Array();\n return message;\n },\n};\nfunction createBaseSignatureDescriptor_Data_Multi() {\n return {\n bitarray: undefined,\n signatures: [],\n };\n}\nexports.SignatureDescriptor_Data_Multi = {\n typeUrl: \"/cosmos.tx.signing.v1beta1.Multi\",\n encode(message, writer = binary_1.BinaryWriter.create()) {\n if (message.bitarray !== undefined) {\n multisig_1.CompactBitArray.encode(message.bitarray, writer.uint32(10).fork()).ldelim();\n }\n for (const v of message.signatures) {\n exports.SignatureDescriptor_Data.encode(v, writer.uint32(18).fork()).ldelim();\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof binary_1.BinaryReader ? input : new binary_1.BinaryReader(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseSignatureDescriptor_Data_Multi();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.bitarray = multisig_1.CompactBitArray.decode(reader, reader.uint32());\n break;\n case 2:\n message.signatures.push(exports.SignatureDescriptor_Data.decode(reader, reader.uint32()));\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n },\n fromJSON(object) {\n const obj = createBaseSignatureDescriptor_Data_Multi();\n if ((0, helpers_1.isSet)(object.bitarray))\n obj.bitarray = multisig_1.CompactBitArray.fromJSON(object.bitarray);\n if (Array.isArray(object?.signatures))\n obj.signatures = object.signatures.map((e) => exports.SignatureDescriptor_Data.fromJSON(e));\n return obj;\n },\n toJSON(message) {\n const obj = {};\n message.bitarray !== undefined &&\n (obj.bitarray = message.bitarray ? multisig_1.CompactBitArray.toJSON(message.bitarray) : undefined);\n if (message.signatures) {\n obj.signatures = message.signatures.map((e) => (e ? exports.SignatureDescriptor_Data.toJSON(e) : undefined));\n }\n else {\n obj.signatures = [];\n }\n return obj;\n },\n fromPartial(object) {\n const message = createBaseSignatureDescriptor_Data_Multi();\n if (object.bitarray !== undefined && object.bitarray !== null) {\n message.bitarray = multisig_1.CompactBitArray.fromPartial(object.bitarray);\n }\n message.signatures = object.signatures?.map((e) => exports.SignatureDescriptor_Data.fromPartial(e)) || [];\n return message;\n },\n};\n//# sourceMappingURL=signing.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DecProto = exports.IntProto = exports.DecCoin = exports.Coin = exports.protobufPackage = void 0;\n/* eslint-disable */\nconst binary_1 = require(\"../../../binary\");\nconst helpers_1 = require(\"../../../helpers\");\nexports.protobufPackage = \"cosmos.base.v1beta1\";\nfunction createBaseCoin() {\n return {\n denom: \"\",\n amount: \"\",\n };\n}\nexports.Coin = {\n typeUrl: \"/cosmos.base.v1beta1.Coin\",\n encode(message, writer = binary_1.BinaryWriter.create()) {\n if (message.denom !== \"\") {\n writer.uint32(10).string(message.denom);\n }\n if (message.amount !== \"\") {\n writer.uint32(18).string(message.amount);\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof binary_1.BinaryReader ? input : new binary_1.BinaryReader(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseCoin();\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 fromJSON(object) {\n const obj = createBaseCoin();\n if ((0, helpers_1.isSet)(object.denom))\n obj.denom = String(object.denom);\n if ((0, helpers_1.isSet)(object.amount))\n obj.amount = String(object.amount);\n return obj;\n },\n toJSON(message) {\n const obj = {};\n message.denom !== undefined && (obj.denom = message.denom);\n message.amount !== undefined && (obj.amount = message.amount);\n return obj;\n },\n fromPartial(object) {\n const message = createBaseCoin();\n message.denom = object.denom ?? \"\";\n message.amount = object.amount ?? \"\";\n return message;\n },\n};\nfunction createBaseDecCoin() {\n return {\n denom: \"\",\n amount: \"\",\n };\n}\nexports.DecCoin = {\n typeUrl: \"/cosmos.base.v1beta1.DecCoin\",\n encode(message, writer = binary_1.BinaryWriter.create()) {\n if (message.denom !== \"\") {\n writer.uint32(10).string(message.denom);\n }\n if (message.amount !== \"\") {\n writer.uint32(18).string(message.amount);\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof binary_1.BinaryReader ? input : new binary_1.BinaryReader(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseDecCoin();\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 fromJSON(object) {\n const obj = createBaseDecCoin();\n if ((0, helpers_1.isSet)(object.denom))\n obj.denom = String(object.denom);\n if ((0, helpers_1.isSet)(object.amount))\n obj.amount = String(object.amount);\n return obj;\n },\n toJSON(message) {\n const obj = {};\n message.denom !== undefined && (obj.denom = message.denom);\n message.amount !== undefined && (obj.amount = message.amount);\n return obj;\n },\n fromPartial(object) {\n const message = createBaseDecCoin();\n message.denom = object.denom ?? \"\";\n message.amount = object.amount ?? \"\";\n return message;\n },\n};\nfunction createBaseIntProto() {\n return {\n int: \"\",\n };\n}\nexports.IntProto = {\n typeUrl: \"/cosmos.base.v1beta1.IntProto\",\n encode(message, writer = binary_1.BinaryWriter.create()) {\n if (message.int !== \"\") {\n writer.uint32(10).string(message.int);\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof binary_1.BinaryReader ? input : new binary_1.BinaryReader(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseIntProto();\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 fromJSON(object) {\n const obj = createBaseIntProto();\n if ((0, helpers_1.isSet)(object.int))\n obj.int = String(object.int);\n return obj;\n },\n toJSON(message) {\n const obj = {};\n message.int !== undefined && (obj.int = message.int);\n return obj;\n },\n fromPartial(object) {\n const message = createBaseIntProto();\n message.int = object.int ?? \"\";\n return message;\n },\n};\nfunction createBaseDecProto() {\n return {\n dec: \"\",\n };\n}\nexports.DecProto = {\n typeUrl: \"/cosmos.base.v1beta1.DecProto\",\n encode(message, writer = binary_1.BinaryWriter.create()) {\n if (message.dec !== \"\") {\n writer.uint32(10).string(message.dec);\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof binary_1.BinaryReader ? input : new binary_1.BinaryReader(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseDecProto();\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 fromJSON(object) {\n const obj = createBaseDecProto();\n if ((0, helpers_1.isSet)(object.dec))\n obj.dec = String(object.dec);\n return obj;\n },\n toJSON(message) {\n const obj = {};\n message.dec !== undefined && (obj.dec = message.dec);\n return obj;\n },\n fromPartial(object) {\n const message = createBaseDecProto();\n message.dec = object.dec ?? \"\";\n return message;\n },\n};\n//# sourceMappingURL=coin.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AuxSignerData = exports.Tip = exports.Fee = exports.ModeInfo_Multi = exports.ModeInfo_Single = exports.ModeInfo = exports.SignerInfo = exports.AuthInfo = exports.TxBody = exports.SignDocDirectAux = exports.SignDoc = exports.TxRaw = exports.Tx = exports.protobufPackage = void 0;\n/* eslint-disable */\nconst any_1 = require(\"../../../google/protobuf/any\");\nconst signing_1 = require(\"../signing/v1beta1/signing\");\nconst multisig_1 = require(\"../../crypto/multisig/v1beta1/multisig\");\nconst coin_1 = require(\"../../base/v1beta1/coin\");\nconst binary_1 = require(\"../../../binary\");\nconst helpers_1 = require(\"../../../helpers\");\nexports.protobufPackage = \"cosmos.tx.v1beta1\";\nfunction createBaseTx() {\n return {\n body: undefined,\n authInfo: undefined,\n signatures: [],\n };\n}\nexports.Tx = {\n typeUrl: \"/cosmos.tx.v1beta1.Tx\",\n encode(message, writer = binary_1.BinaryWriter.create()) {\n if (message.body !== undefined) {\n exports.TxBody.encode(message.body, writer.uint32(10).fork()).ldelim();\n }\n if (message.authInfo !== undefined) {\n exports.AuthInfo.encode(message.authInfo, writer.uint32(18).fork()).ldelim();\n }\n for (const v of message.signatures) {\n writer.uint32(26).bytes(v);\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof binary_1.BinaryReader ? input : new binary_1.BinaryReader(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseTx();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.body = exports.TxBody.decode(reader, reader.uint32());\n break;\n case 2:\n message.authInfo = exports.AuthInfo.decode(reader, reader.uint32());\n break;\n case 3:\n message.signatures.push(reader.bytes());\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n },\n fromJSON(object) {\n const obj = createBaseTx();\n if ((0, helpers_1.isSet)(object.body))\n obj.body = exports.TxBody.fromJSON(object.body);\n if ((0, helpers_1.isSet)(object.authInfo))\n obj.authInfo = exports.AuthInfo.fromJSON(object.authInfo);\n if (Array.isArray(object?.signatures))\n obj.signatures = object.signatures.map((e) => (0, helpers_1.bytesFromBase64)(e));\n return obj;\n },\n toJSON(message) {\n const obj = {};\n message.body !== undefined && (obj.body = message.body ? exports.TxBody.toJSON(message.body) : undefined);\n message.authInfo !== undefined &&\n (obj.authInfo = message.authInfo ? exports.AuthInfo.toJSON(message.authInfo) : undefined);\n if (message.signatures) {\n obj.signatures = message.signatures.map((e) => (0, helpers_1.base64FromBytes)(e !== undefined ? e : new Uint8Array()));\n }\n else {\n obj.signatures = [];\n }\n return obj;\n },\n fromPartial(object) {\n const message = createBaseTx();\n if (object.body !== undefined && object.body !== null) {\n message.body = exports.TxBody.fromPartial(object.body);\n }\n if (object.authInfo !== undefined && object.authInfo !== null) {\n message.authInfo = exports.AuthInfo.fromPartial(object.authInfo);\n }\n message.signatures = object.signatures?.map((e) => e) || [];\n return message;\n },\n};\nfunction createBaseTxRaw() {\n return {\n bodyBytes: new Uint8Array(),\n authInfoBytes: new Uint8Array(),\n signatures: [],\n };\n}\nexports.TxRaw = {\n typeUrl: \"/cosmos.tx.v1beta1.TxRaw\",\n encode(message, writer = binary_1.BinaryWriter.create()) {\n if (message.bodyBytes.length !== 0) {\n writer.uint32(10).bytes(message.bodyBytes);\n }\n if (message.authInfoBytes.length !== 0) {\n writer.uint32(18).bytes(message.authInfoBytes);\n }\n for (const v of message.signatures) {\n writer.uint32(26).bytes(v);\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof binary_1.BinaryReader ? input : new binary_1.BinaryReader(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseTxRaw();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.bodyBytes = reader.bytes();\n break;\n case 2:\n message.authInfoBytes = reader.bytes();\n break;\n case 3:\n message.signatures.push(reader.bytes());\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n },\n fromJSON(object) {\n const obj = createBaseTxRaw();\n if ((0, helpers_1.isSet)(object.bodyBytes))\n obj.bodyBytes = (0, helpers_1.bytesFromBase64)(object.bodyBytes);\n if ((0, helpers_1.isSet)(object.authInfoBytes))\n obj.authInfoBytes = (0, helpers_1.bytesFromBase64)(object.authInfoBytes);\n if (Array.isArray(object?.signatures))\n obj.signatures = object.signatures.map((e) => (0, helpers_1.bytesFromBase64)(e));\n return obj;\n },\n toJSON(message) {\n const obj = {};\n message.bodyBytes !== undefined &&\n (obj.bodyBytes = (0, helpers_1.base64FromBytes)(message.bodyBytes !== undefined ? message.bodyBytes : new Uint8Array()));\n message.authInfoBytes !== undefined &&\n (obj.authInfoBytes = (0, helpers_1.base64FromBytes)(message.authInfoBytes !== undefined ? message.authInfoBytes : new Uint8Array()));\n if (message.signatures) {\n obj.signatures = message.signatures.map((e) => (0, helpers_1.base64FromBytes)(e !== undefined ? e : new Uint8Array()));\n }\n else {\n obj.signatures = [];\n }\n return obj;\n },\n fromPartial(object) {\n const message = createBaseTxRaw();\n message.bodyBytes = object.bodyBytes ?? new Uint8Array();\n message.authInfoBytes = object.authInfoBytes ?? new Uint8Array();\n message.signatures = object.signatures?.map((e) => e) || [];\n return message;\n },\n};\nfunction createBaseSignDoc() {\n return {\n bodyBytes: new Uint8Array(),\n authInfoBytes: new Uint8Array(),\n chainId: \"\",\n accountNumber: BigInt(0),\n };\n}\nexports.SignDoc = {\n typeUrl: \"/cosmos.tx.v1beta1.SignDoc\",\n encode(message, writer = binary_1.BinaryWriter.create()) {\n if (message.bodyBytes.length !== 0) {\n writer.uint32(10).bytes(message.bodyBytes);\n }\n if (message.authInfoBytes.length !== 0) {\n writer.uint32(18).bytes(message.authInfoBytes);\n }\n if (message.chainId !== \"\") {\n writer.uint32(26).string(message.chainId);\n }\n if (message.accountNumber !== BigInt(0)) {\n writer.uint32(32).uint64(message.accountNumber);\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof binary_1.BinaryReader ? input : new binary_1.BinaryReader(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseSignDoc();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.bodyBytes = reader.bytes();\n break;\n case 2:\n message.authInfoBytes = reader.bytes();\n break;\n case 3:\n message.chainId = reader.string();\n break;\n case 4:\n message.accountNumber = reader.uint64();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n },\n fromJSON(object) {\n const obj = createBaseSignDoc();\n if ((0, helpers_1.isSet)(object.bodyBytes))\n obj.bodyBytes = (0, helpers_1.bytesFromBase64)(object.bodyBytes);\n if ((0, helpers_1.isSet)(object.authInfoBytes))\n obj.authInfoBytes = (0, helpers_1.bytesFromBase64)(object.authInfoBytes);\n if ((0, helpers_1.isSet)(object.chainId))\n obj.chainId = String(object.chainId);\n if ((0, helpers_1.isSet)(object.accountNumber))\n obj.accountNumber = BigInt(object.accountNumber.toString());\n return obj;\n },\n toJSON(message) {\n const obj = {};\n message.bodyBytes !== undefined &&\n (obj.bodyBytes = (0, helpers_1.base64FromBytes)(message.bodyBytes !== undefined ? message.bodyBytes : new Uint8Array()));\n message.authInfoBytes !== undefined &&\n (obj.authInfoBytes = (0, helpers_1.base64FromBytes)(message.authInfoBytes !== undefined ? message.authInfoBytes : new Uint8Array()));\n message.chainId !== undefined && (obj.chainId = message.chainId);\n message.accountNumber !== undefined &&\n (obj.accountNumber = (message.accountNumber || BigInt(0)).toString());\n return obj;\n },\n fromPartial(object) {\n const message = createBaseSignDoc();\n message.bodyBytes = object.bodyBytes ?? new Uint8Array();\n message.authInfoBytes = object.authInfoBytes ?? new Uint8Array();\n message.chainId = object.chainId ?? \"\";\n if (object.accountNumber !== undefined && object.accountNumber !== null) {\n message.accountNumber = BigInt(object.accountNumber.toString());\n }\n return message;\n },\n};\nfunction createBaseSignDocDirectAux() {\n return {\n bodyBytes: new Uint8Array(),\n publicKey: undefined,\n chainId: \"\",\n accountNumber: BigInt(0),\n sequence: BigInt(0),\n tip: undefined,\n };\n}\nexports.SignDocDirectAux = {\n typeUrl: \"/cosmos.tx.v1beta1.SignDocDirectAux\",\n encode(message, writer = binary_1.BinaryWriter.create()) {\n if (message.bodyBytes.length !== 0) {\n writer.uint32(10).bytes(message.bodyBytes);\n }\n if (message.publicKey !== undefined) {\n any_1.Any.encode(message.publicKey, writer.uint32(18).fork()).ldelim();\n }\n if (message.chainId !== \"\") {\n writer.uint32(26).string(message.chainId);\n }\n if (message.accountNumber !== BigInt(0)) {\n writer.uint32(32).uint64(message.accountNumber);\n }\n if (message.sequence !== BigInt(0)) {\n writer.uint32(40).uint64(message.sequence);\n }\n if (message.tip !== undefined) {\n exports.Tip.encode(message.tip, writer.uint32(50).fork()).ldelim();\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof binary_1.BinaryReader ? input : new binary_1.BinaryReader(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseSignDocDirectAux();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.bodyBytes = reader.bytes();\n break;\n case 2:\n message.publicKey = any_1.Any.decode(reader, reader.uint32());\n break;\n case 3:\n message.chainId = reader.string();\n break;\n case 4:\n message.accountNumber = reader.uint64();\n break;\n case 5:\n message.sequence = reader.uint64();\n break;\n case 6:\n message.tip = exports.Tip.decode(reader, reader.uint32());\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n },\n fromJSON(object) {\n const obj = createBaseSignDocDirectAux();\n if ((0, helpers_1.isSet)(object.bodyBytes))\n obj.bodyBytes = (0, helpers_1.bytesFromBase64)(object.bodyBytes);\n if ((0, helpers_1.isSet)(object.publicKey))\n obj.publicKey = any_1.Any.fromJSON(object.publicKey);\n if ((0, helpers_1.isSet)(object.chainId))\n obj.chainId = String(object.chainId);\n if ((0, helpers_1.isSet)(object.accountNumber))\n obj.accountNumber = BigInt(object.accountNumber.toString());\n if ((0, helpers_1.isSet)(object.sequence))\n obj.sequence = BigInt(object.sequence.toString());\n if ((0, helpers_1.isSet)(object.tip))\n obj.tip = exports.Tip.fromJSON(object.tip);\n return obj;\n },\n toJSON(message) {\n const obj = {};\n message.bodyBytes !== undefined &&\n (obj.bodyBytes = (0, helpers_1.base64FromBytes)(message.bodyBytes !== undefined ? message.bodyBytes : new Uint8Array()));\n message.publicKey !== undefined &&\n (obj.publicKey = message.publicKey ? any_1.Any.toJSON(message.publicKey) : undefined);\n message.chainId !== undefined && (obj.chainId = message.chainId);\n message.accountNumber !== undefined &&\n (obj.accountNumber = (message.accountNumber || BigInt(0)).toString());\n message.sequence !== undefined && (obj.sequence = (message.sequence || BigInt(0)).toString());\n message.tip !== undefined && (obj.tip = message.tip ? exports.Tip.toJSON(message.tip) : undefined);\n return obj;\n },\n fromPartial(object) {\n const message = createBaseSignDocDirectAux();\n message.bodyBytes = object.bodyBytes ?? new Uint8Array();\n if (object.publicKey !== undefined && object.publicKey !== null) {\n message.publicKey = any_1.Any.fromPartial(object.publicKey);\n }\n message.chainId = object.chainId ?? \"\";\n if (object.accountNumber !== undefined && object.accountNumber !== null) {\n message.accountNumber = BigInt(object.accountNumber.toString());\n }\n if (object.sequence !== undefined && object.sequence !== null) {\n message.sequence = BigInt(object.sequence.toString());\n }\n if (object.tip !== undefined && object.tip !== null) {\n message.tip = exports.Tip.fromPartial(object.tip);\n }\n return message;\n },\n};\nfunction createBaseTxBody() {\n return {\n messages: [],\n memo: \"\",\n timeoutHeight: BigInt(0),\n extensionOptions: [],\n nonCriticalExtensionOptions: [],\n };\n}\nexports.TxBody = {\n typeUrl: \"/cosmos.tx.v1beta1.TxBody\",\n encode(message, writer = binary_1.BinaryWriter.create()) {\n for (const v of message.messages) {\n any_1.Any.encode(v, writer.uint32(10).fork()).ldelim();\n }\n if (message.memo !== \"\") {\n writer.uint32(18).string(message.memo);\n }\n if (message.timeoutHeight !== BigInt(0)) {\n writer.uint32(24).uint64(message.timeoutHeight);\n }\n for (const v of message.extensionOptions) {\n any_1.Any.encode(v, writer.uint32(8186).fork()).ldelim();\n }\n for (const v of message.nonCriticalExtensionOptions) {\n any_1.Any.encode(v, writer.uint32(16378).fork()).ldelim();\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof binary_1.BinaryReader ? input : new binary_1.BinaryReader(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseTxBody();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.messages.push(any_1.Any.decode(reader, reader.uint32()));\n break;\n case 2:\n message.memo = reader.string();\n break;\n case 3:\n message.timeoutHeight = reader.uint64();\n break;\n case 1023:\n message.extensionOptions.push(any_1.Any.decode(reader, reader.uint32()));\n break;\n case 2047:\n message.nonCriticalExtensionOptions.push(any_1.Any.decode(reader, reader.uint32()));\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n },\n fromJSON(object) {\n const obj = createBaseTxBody();\n if (Array.isArray(object?.messages))\n obj.messages = object.messages.map((e) => any_1.Any.fromJSON(e));\n if ((0, helpers_1.isSet)(object.memo))\n obj.memo = String(object.memo);\n if ((0, helpers_1.isSet)(object.timeoutHeight))\n obj.timeoutHeight = BigInt(object.timeoutHeight.toString());\n if (Array.isArray(object?.extensionOptions))\n obj.extensionOptions = object.extensionOptions.map((e) => any_1.Any.fromJSON(e));\n if (Array.isArray(object?.nonCriticalExtensionOptions))\n obj.nonCriticalExtensionOptions = object.nonCriticalExtensionOptions.map((e) => any_1.Any.fromJSON(e));\n return obj;\n },\n toJSON(message) {\n const obj = {};\n if (message.messages) {\n obj.messages = message.messages.map((e) => (e ? any_1.Any.toJSON(e) : undefined));\n }\n else {\n obj.messages = [];\n }\n message.memo !== undefined && (obj.memo = message.memo);\n message.timeoutHeight !== undefined &&\n (obj.timeoutHeight = (message.timeoutHeight || BigInt(0)).toString());\n if (message.extensionOptions) {\n obj.extensionOptions = message.extensionOptions.map((e) => (e ? any_1.Any.toJSON(e) : undefined));\n }\n else {\n obj.extensionOptions = [];\n }\n if (message.nonCriticalExtensionOptions) {\n obj.nonCriticalExtensionOptions = message.nonCriticalExtensionOptions.map((e) => e ? any_1.Any.toJSON(e) : undefined);\n }\n else {\n obj.nonCriticalExtensionOptions = [];\n }\n return obj;\n },\n fromPartial(object) {\n const message = createBaseTxBody();\n message.messages = object.messages?.map((e) => any_1.Any.fromPartial(e)) || [];\n message.memo = object.memo ?? \"\";\n if (object.timeoutHeight !== undefined && object.timeoutHeight !== null) {\n message.timeoutHeight = BigInt(object.timeoutHeight.toString());\n }\n message.extensionOptions = object.extensionOptions?.map((e) => any_1.Any.fromPartial(e)) || [];\n message.nonCriticalExtensionOptions =\n object.nonCriticalExtensionOptions?.map((e) => any_1.Any.fromPartial(e)) || [];\n return message;\n },\n};\nfunction createBaseAuthInfo() {\n return {\n signerInfos: [],\n fee: undefined,\n tip: undefined,\n };\n}\nexports.AuthInfo = {\n typeUrl: \"/cosmos.tx.v1beta1.AuthInfo\",\n encode(message, writer = binary_1.BinaryWriter.create()) {\n for (const v of message.signerInfos) {\n exports.SignerInfo.encode(v, writer.uint32(10).fork()).ldelim();\n }\n if (message.fee !== undefined) {\n exports.Fee.encode(message.fee, writer.uint32(18).fork()).ldelim();\n }\n if (message.tip !== undefined) {\n exports.Tip.encode(message.tip, writer.uint32(26).fork()).ldelim();\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof binary_1.BinaryReader ? input : new binary_1.BinaryReader(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseAuthInfo();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.signerInfos.push(exports.SignerInfo.decode(reader, reader.uint32()));\n break;\n case 2:\n message.fee = exports.Fee.decode(reader, reader.uint32());\n break;\n case 3:\n message.tip = exports.Tip.decode(reader, reader.uint32());\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n },\n fromJSON(object) {\n const obj = createBaseAuthInfo();\n if (Array.isArray(object?.signerInfos))\n obj.signerInfos = object.signerInfos.map((e) => exports.SignerInfo.fromJSON(e));\n if ((0, helpers_1.isSet)(object.fee))\n obj.fee = exports.Fee.fromJSON(object.fee);\n if ((0, helpers_1.isSet)(object.tip))\n obj.tip = exports.Tip.fromJSON(object.tip);\n return obj;\n },\n toJSON(message) {\n const obj = {};\n if (message.signerInfos) {\n obj.signerInfos = message.signerInfos.map((e) => (e ? exports.SignerInfo.toJSON(e) : undefined));\n }\n else {\n obj.signerInfos = [];\n }\n message.fee !== undefined && (obj.fee = message.fee ? exports.Fee.toJSON(message.fee) : undefined);\n message.tip !== undefined && (obj.tip = message.tip ? exports.Tip.toJSON(message.tip) : undefined);\n return obj;\n },\n fromPartial(object) {\n const message = createBaseAuthInfo();\n message.signerInfos = object.signerInfos?.map((e) => exports.SignerInfo.fromPartial(e)) || [];\n if (object.fee !== undefined && object.fee !== null) {\n message.fee = exports.Fee.fromPartial(object.fee);\n }\n if (object.tip !== undefined && object.tip !== null) {\n message.tip = exports.Tip.fromPartial(object.tip);\n }\n return message;\n },\n};\nfunction createBaseSignerInfo() {\n return {\n publicKey: undefined,\n modeInfo: undefined,\n sequence: BigInt(0),\n };\n}\nexports.SignerInfo = {\n typeUrl: \"/cosmos.tx.v1beta1.SignerInfo\",\n encode(message, writer = binary_1.BinaryWriter.create()) {\n if (message.publicKey !== undefined) {\n any_1.Any.encode(message.publicKey, writer.uint32(10).fork()).ldelim();\n }\n if (message.modeInfo !== undefined) {\n exports.ModeInfo.encode(message.modeInfo, writer.uint32(18).fork()).ldelim();\n }\n if (message.sequence !== BigInt(0)) {\n writer.uint32(24).uint64(message.sequence);\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof binary_1.BinaryReader ? input : new binary_1.BinaryReader(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseSignerInfo();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.publicKey = any_1.Any.decode(reader, reader.uint32());\n break;\n case 2:\n message.modeInfo = exports.ModeInfo.decode(reader, reader.uint32());\n break;\n case 3:\n message.sequence = reader.uint64();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n },\n fromJSON(object) {\n const obj = createBaseSignerInfo();\n if ((0, helpers_1.isSet)(object.publicKey))\n obj.publicKey = any_1.Any.fromJSON(object.publicKey);\n if ((0, helpers_1.isSet)(object.modeInfo))\n obj.modeInfo = exports.ModeInfo.fromJSON(object.modeInfo);\n if ((0, helpers_1.isSet)(object.sequence))\n obj.sequence = BigInt(object.sequence.toString());\n return obj;\n },\n toJSON(message) {\n const obj = {};\n message.publicKey !== undefined &&\n (obj.publicKey = message.publicKey ? any_1.Any.toJSON(message.publicKey) : undefined);\n message.modeInfo !== undefined &&\n (obj.modeInfo = message.modeInfo ? exports.ModeInfo.toJSON(message.modeInfo) : undefined);\n message.sequence !== undefined && (obj.sequence = (message.sequence || BigInt(0)).toString());\n return obj;\n },\n fromPartial(object) {\n const message = createBaseSignerInfo();\n if (object.publicKey !== undefined && object.publicKey !== null) {\n message.publicKey = any_1.Any.fromPartial(object.publicKey);\n }\n if (object.modeInfo !== undefined && object.modeInfo !== null) {\n message.modeInfo = exports.ModeInfo.fromPartial(object.modeInfo);\n }\n if (object.sequence !== undefined && object.sequence !== null) {\n message.sequence = BigInt(object.sequence.toString());\n }\n return message;\n },\n};\nfunction createBaseModeInfo() {\n return {\n single: undefined,\n multi: undefined,\n };\n}\nexports.ModeInfo = {\n typeUrl: \"/cosmos.tx.v1beta1.ModeInfo\",\n encode(message, writer = binary_1.BinaryWriter.create()) {\n if (message.single !== undefined) {\n exports.ModeInfo_Single.encode(message.single, writer.uint32(10).fork()).ldelim();\n }\n if (message.multi !== undefined) {\n exports.ModeInfo_Multi.encode(message.multi, writer.uint32(18).fork()).ldelim();\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof binary_1.BinaryReader ? input : new binary_1.BinaryReader(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseModeInfo();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.single = exports.ModeInfo_Single.decode(reader, reader.uint32());\n break;\n case 2:\n message.multi = exports.ModeInfo_Multi.decode(reader, reader.uint32());\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n },\n fromJSON(object) {\n const obj = createBaseModeInfo();\n if ((0, helpers_1.isSet)(object.single))\n obj.single = exports.ModeInfo_Single.fromJSON(object.single);\n if ((0, helpers_1.isSet)(object.multi))\n obj.multi = exports.ModeInfo_Multi.fromJSON(object.multi);\n return obj;\n },\n toJSON(message) {\n const obj = {};\n message.single !== undefined &&\n (obj.single = message.single ? exports.ModeInfo_Single.toJSON(message.single) : undefined);\n message.multi !== undefined &&\n (obj.multi = message.multi ? exports.ModeInfo_Multi.toJSON(message.multi) : undefined);\n return obj;\n },\n fromPartial(object) {\n const message = createBaseModeInfo();\n if (object.single !== undefined && object.single !== null) {\n message.single = exports.ModeInfo_Single.fromPartial(object.single);\n }\n if (object.multi !== undefined && object.multi !== null) {\n message.multi = exports.ModeInfo_Multi.fromPartial(object.multi);\n }\n return message;\n },\n};\nfunction createBaseModeInfo_Single() {\n return {\n mode: 0,\n };\n}\nexports.ModeInfo_Single = {\n typeUrl: \"/cosmos.tx.v1beta1.Single\",\n encode(message, writer = binary_1.BinaryWriter.create()) {\n if (message.mode !== 0) {\n writer.uint32(8).int32(message.mode);\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof binary_1.BinaryReader ? input : new binary_1.BinaryReader(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseModeInfo_Single();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.mode = reader.int32();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n },\n fromJSON(object) {\n const obj = createBaseModeInfo_Single();\n if ((0, helpers_1.isSet)(object.mode))\n obj.mode = (0, signing_1.signModeFromJSON)(object.mode);\n return obj;\n },\n toJSON(message) {\n const obj = {};\n message.mode !== undefined && (obj.mode = (0, signing_1.signModeToJSON)(message.mode));\n return obj;\n },\n fromPartial(object) {\n const message = createBaseModeInfo_Single();\n message.mode = object.mode ?? 0;\n return message;\n },\n};\nfunction createBaseModeInfo_Multi() {\n return {\n bitarray: undefined,\n modeInfos: [],\n };\n}\nexports.ModeInfo_Multi = {\n typeUrl: \"/cosmos.tx.v1beta1.Multi\",\n encode(message, writer = binary_1.BinaryWriter.create()) {\n if (message.bitarray !== undefined) {\n multisig_1.CompactBitArray.encode(message.bitarray, writer.uint32(10).fork()).ldelim();\n }\n for (const v of message.modeInfos) {\n exports.ModeInfo.encode(v, writer.uint32(18).fork()).ldelim();\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof binary_1.BinaryReader ? input : new binary_1.BinaryReader(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseModeInfo_Multi();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.bitarray = multisig_1.CompactBitArray.decode(reader, reader.uint32());\n break;\n case 2:\n message.modeInfos.push(exports.ModeInfo.decode(reader, reader.uint32()));\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n },\n fromJSON(object) {\n const obj = createBaseModeInfo_Multi();\n if ((0, helpers_1.isSet)(object.bitarray))\n obj.bitarray = multisig_1.CompactBitArray.fromJSON(object.bitarray);\n if (Array.isArray(object?.modeInfos))\n obj.modeInfos = object.modeInfos.map((e) => exports.ModeInfo.fromJSON(e));\n return obj;\n },\n toJSON(message) {\n const obj = {};\n message.bitarray !== undefined &&\n (obj.bitarray = message.bitarray ? multisig_1.CompactBitArray.toJSON(message.bitarray) : undefined);\n if (message.modeInfos) {\n obj.modeInfos = message.modeInfos.map((e) => (e ? exports.ModeInfo.toJSON(e) : undefined));\n }\n else {\n obj.modeInfos = [];\n }\n return obj;\n },\n fromPartial(object) {\n const message = createBaseModeInfo_Multi();\n if (object.bitarray !== undefined && object.bitarray !== null) {\n message.bitarray = multisig_1.CompactBitArray.fromPartial(object.bitarray);\n }\n message.modeInfos = object.modeInfos?.map((e) => exports.ModeInfo.fromPartial(e)) || [];\n return message;\n },\n};\nfunction createBaseFee() {\n return {\n amount: [],\n gasLimit: BigInt(0),\n payer: \"\",\n granter: \"\",\n };\n}\nexports.Fee = {\n typeUrl: \"/cosmos.tx.v1beta1.Fee\",\n encode(message, writer = binary_1.BinaryWriter.create()) {\n for (const v of message.amount) {\n coin_1.Coin.encode(v, writer.uint32(10).fork()).ldelim();\n }\n if (message.gasLimit !== BigInt(0)) {\n writer.uint32(16).uint64(message.gasLimit);\n }\n if (message.payer !== \"\") {\n writer.uint32(26).string(message.payer);\n }\n if (message.granter !== \"\") {\n writer.uint32(34).string(message.granter);\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof binary_1.BinaryReader ? input : new binary_1.BinaryReader(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseFee();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.amount.push(coin_1.Coin.decode(reader, reader.uint32()));\n break;\n case 2:\n message.gasLimit = reader.uint64();\n break;\n case 3:\n message.payer = reader.string();\n break;\n case 4:\n message.granter = reader.string();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n },\n fromJSON(object) {\n const obj = createBaseFee();\n if (Array.isArray(object?.amount))\n obj.amount = object.amount.map((e) => coin_1.Coin.fromJSON(e));\n if ((0, helpers_1.isSet)(object.gasLimit))\n obj.gasLimit = BigInt(object.gasLimit.toString());\n if ((0, helpers_1.isSet)(object.payer))\n obj.payer = String(object.payer);\n if ((0, helpers_1.isSet)(object.granter))\n obj.granter = String(object.granter);\n return obj;\n },\n toJSON(message) {\n const obj = {};\n if (message.amount) {\n obj.amount = message.amount.map((e) => (e ? coin_1.Coin.toJSON(e) : undefined));\n }\n else {\n obj.amount = [];\n }\n message.gasLimit !== undefined && (obj.gasLimit = (message.gasLimit || BigInt(0)).toString());\n message.payer !== undefined && (obj.payer = message.payer);\n message.granter !== undefined && (obj.granter = message.granter);\n return obj;\n },\n fromPartial(object) {\n const message = createBaseFee();\n message.amount = object.amount?.map((e) => coin_1.Coin.fromPartial(e)) || [];\n if (object.gasLimit !== undefined && object.gasLimit !== null) {\n message.gasLimit = BigInt(object.gasLimit.toString());\n }\n message.payer = object.payer ?? \"\";\n message.granter = object.granter ?? \"\";\n return message;\n },\n};\nfunction createBaseTip() {\n return {\n amount: [],\n tipper: \"\",\n };\n}\nexports.Tip = {\n typeUrl: \"/cosmos.tx.v1beta1.Tip\",\n encode(message, writer = binary_1.BinaryWriter.create()) {\n for (const v of message.amount) {\n coin_1.Coin.encode(v, writer.uint32(10).fork()).ldelim();\n }\n if (message.tipper !== \"\") {\n writer.uint32(18).string(message.tipper);\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof binary_1.BinaryReader ? input : new binary_1.BinaryReader(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseTip();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.amount.push(coin_1.Coin.decode(reader, reader.uint32()));\n break;\n case 2:\n message.tipper = reader.string();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n },\n fromJSON(object) {\n const obj = createBaseTip();\n if (Array.isArray(object?.amount))\n obj.amount = object.amount.map((e) => coin_1.Coin.fromJSON(e));\n if ((0, helpers_1.isSet)(object.tipper))\n obj.tipper = String(object.tipper);\n return obj;\n },\n toJSON(message) {\n const obj = {};\n if (message.amount) {\n obj.amount = message.amount.map((e) => (e ? coin_1.Coin.toJSON(e) : undefined));\n }\n else {\n obj.amount = [];\n }\n message.tipper !== undefined && (obj.tipper = message.tipper);\n return obj;\n },\n fromPartial(object) {\n const message = createBaseTip();\n message.amount = object.amount?.map((e) => coin_1.Coin.fromPartial(e)) || [];\n message.tipper = object.tipper ?? \"\";\n return message;\n },\n};\nfunction createBaseAuxSignerData() {\n return {\n address: \"\",\n signDoc: undefined,\n mode: 0,\n sig: new Uint8Array(),\n };\n}\nexports.AuxSignerData = {\n typeUrl: \"/cosmos.tx.v1beta1.AuxSignerData\",\n encode(message, writer = binary_1.BinaryWriter.create()) {\n if (message.address !== \"\") {\n writer.uint32(10).string(message.address);\n }\n if (message.signDoc !== undefined) {\n exports.SignDocDirectAux.encode(message.signDoc, writer.uint32(18).fork()).ldelim();\n }\n if (message.mode !== 0) {\n writer.uint32(24).int32(message.mode);\n }\n if (message.sig.length !== 0) {\n writer.uint32(34).bytes(message.sig);\n }\n return writer;\n },\n decode(input, length) {\n const reader = input instanceof binary_1.BinaryReader ? input : new binary_1.BinaryReader(input);\n let end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseAuxSignerData();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1:\n message.address = reader.string();\n break;\n case 2:\n message.signDoc = exports.SignDocDirectAux.decode(reader, reader.uint32());\n break;\n case 3:\n message.mode = reader.int32();\n break;\n case 4:\n message.sig = reader.bytes();\n break;\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n },\n fromJSON(object) {\n const obj = createBaseAuxSignerData();\n if ((0, helpers_1.isSet)(object.address))\n obj.address = String(object.address);\n if ((0, helpers_1.isSet)(object.signDoc))\n obj.signDoc = exports.SignDocDirectAux.fromJSON(object.signDoc);\n if ((0, helpers_1.isSet)(object.mode))\n obj.mode = (0, signing_1.signModeFromJSON)(object.mode);\n if ((0, helpers_1.isSet)(object.sig))\n obj.sig = (0, helpers_1.bytesFromBase64)(object.sig);\n return obj;\n },\n toJSON(message) {\n const obj = {};\n message.address !== undefined && (obj.address = message.address);\n message.signDoc !== undefined &&\n (obj.signDoc = message.signDoc ? exports.SignDocDirectAux.toJSON(message.signDoc) : undefined);\n message.mode !== undefined && (obj.mode = (0, signing_1.signModeToJSON)(message.mode));\n message.sig !== undefined &&\n (obj.sig = (0, helpers_1.base64FromBytes)(message.sig !== undefined ? message.sig : new Uint8Array()));\n return obj;\n },\n fromPartial(object) {\n const message = createBaseAuxSignerData();\n message.address = object.address ?? \"\";\n if (object.signDoc !== undefined && object.signDoc !== null) {\n message.signDoc = exports.SignDocDirectAux.fromPartial(object.signDoc);\n }\n message.mode = object.mode ?? 0;\n message.sig = object.sig ?? new Uint8Array();\n return message;\n },\n};\n//# sourceMappingURL=tx.js.map","import { chains, assets } from 'chain-registry'\n\nimport { type ChainInfo } from '@chains/Cosmos/types'\n\nexport const fetchChainInfo = async (chainId: string): Promise<ChainInfo> => {\n const chainInfo = chains.find((chain) => chain.chain_id === chainId)\n if (!chainInfo) {\n throw new Error(`Chain info not found for chainId: ${chainId}`)\n }\n\n const { bech32_prefix: prefix, chain_id: expectedChainId } = chainInfo\n const denom = chainInfo.staking?.staking_tokens?.[0]?.denom\n const rpcUrl = chainInfo.apis?.rpc?.[0]?.address\n const restUrl = chainInfo.apis?.rest?.[0]?.address\n const gasPrice = chainInfo.fees?.fee_tokens?.[0]?.average_gas_price\n\n if (\n !prefix ||\n !denom ||\n !rpcUrl ||\n !restUrl ||\n !expectedChainId ||\n gasPrice === undefined\n ) {\n throw new Error(\n `Missing required chain information for ${chainInfo.chain_name}`\n )\n }\n\n const assetList = assets.find(\n (asset) => asset.chain_name === chainInfo.chain_name\n )\n const asset = assetList?.assets.find((asset) => asset.base === denom)\n const decimals = asset?.denom_units.find(\n (unit) => unit.denom === asset.display\n )?.exponent\n\n if (decimals === undefined) {\n throw new Error(\n `Could not find decimals for ${denom} on chain ${chainInfo.chain_name}`\n )\n }\n\n return { prefix, denom, rpcUrl, restUrl, expectedChainId, gasPrice, decimals }\n}\n","import { encodeSecp256k1Pubkey } from '@cosmjs/amino'\nimport { ripemd160, sha256 } from '@cosmjs/crypto'\nimport { toBase64, fromBase64, fromHex } from '@cosmjs/encoding'\nimport {\n Registry,\n makeSignBytes,\n encodePubkey,\n makeAuthInfoBytes,\n makeSignDoc,\n type TxBodyEncodeObject,\n} from '@cosmjs/proto-signing'\nimport { GasPrice, StargateClient, calculateFee } from '@cosmjs/stargate'\nimport { bech32 } from 'bech32'\nimport { SignMode } from 'cosmjs-types/cosmos/tx/signing/v1beta1/signing'\nimport { TxRaw } from 'cosmjs-types/cosmos/tx/v1beta1/tx'\n\nimport type {\n CosmosNetworkIds,\n CosmosTransactionRequest,\n CosmosUnsignedTransaction,\n} from '@chains/Cosmos/types'\nimport type { ChainSignatureContract } from '@chains/ChainSignatureContract'\nimport type {\n MPCPayloads,\n RSVSignature,\n KeyDerivationPath,\n} from '@chains/types'\nimport { Chain } from '@chains/Chain'\nimport { utils } from '@chains'\nimport type { ChainInfo, BalanceResponse } from '@chains/Cosmos/types'\nimport { fetchChainInfo } from '@chains/Cosmos/utils'\n\n/**\n * Implementation of the Chain interface for Cosmos-based networks.\n * Handles interactions with Cosmos SDK chains like Cosmos Hub, Osmosis, etc.\n */\nexport class Cosmos extends Chain<\n CosmosTransactionRequest,\n CosmosUnsignedTransaction\n> {\n private readonly registry: Registry\n private readonly chainId: CosmosNetworkIds\n private readonly contract: ChainSignatureContract\n private readonly endpoints?: {\n rpcUrl?: string\n restUrl?: string\n }\n\n /**\n * Creates a new Cosmos chain instance\n * @param params - Configuration parameters\n * @param params.chainId - Chain id for the Cosmos network\n * @param params.contract - Instance of the chain signature contract for MPC operations\n * @param params.endpoints - Optional RPC and REST endpoints\n * @param params.endpoints.rpcUrl - Optional RPC endpoint URL\n * @param params.endpoints.restUrl - Optional REST endpoint URL\n */\n constructor({\n chainId,\n contract,\n endpoints,\n }: {\n contract: ChainSignatureContract\n chainId: CosmosNetworkIds\n endpoints?: {\n rpcUrl?: string\n restUrl?: string\n }\n }) {\n super()\n\n this.contract = contract\n this.registry = new Registry()\n this.chainId = chainId\n this.endpoints = endpoints\n }\n\n private parseRSVSignature(rsvSignature: RSVSignature): Uint8Array {\n return new Uint8Array([\n ...fromHex(rsvSignature.r),\n ...fromHex(rsvSignature.s),\n ])\n }\n\n private async getChainInfo(): Promise<ChainInfo> {\n return {\n ...(await fetchChainInfo(this.chainId)),\n ...this.endpoints,\n }\n }\n\n async getBalance(address: string): Promise<string> {\n try {\n const { restUrl, denom, decimals } = await this.getChainInfo()\n\n const response = await fetch(\n `${restUrl}/cosmos/bank/v1beta1/balances/${address}`\n )\n\n if (!response.ok) {\n throw new Error(`HTTP error! status: ${response.status}`)\n }\n\n const data = (await response.json()) as BalanceResponse\n const balance = data.balances.find((b) => b.denom === denom)\n const amount = balance?.amount ?? '0'\n\n const formattedBalance = (\n parseInt(amount) / Math.pow(10, decimals)\n ).toString()\n return formattedBalance\n } catch (error) {\n console.error('Failed to fetch Cosmos balance:', error)\n throw new Error('Failed to fetch Cosmos balance')\n }\n }\n\n async deriveAddressAndPublicKey(\n predecessor: string,\n path: KeyDerivationPath\n ): Promise<{\n address: string\n publicKey: string\n }> {\n const { prefix } = await this.getChainInfo()\n const uncompressedPubKey = await this.contract.getDerivedPublicKey({\n path,\n predecessor,\n })\n\n if (!uncompressedPubKey) {\n throw new Error('Failed to get derived public key')\n }\n\n const derivedKey = utils.compressPubKey(uncompressedPubKey)\n const pubKeySha256 = sha256(fromHex(derivedKey))\n const ripemd160Hash = ripemd160(pubKeySha256)\n const address = bech32.encode(prefix, bech32.toWords(ripemd160Hash))\n\n return { address, publicKey: derivedKey }\n }\n\n setTransaction(\n transaction: CosmosUnsignedTransaction,\n storageKey: string\n ): void {\n const serialized = TxRaw.encode(transaction).finish()\n window.localStorage.setItem(storageKey, toBase64(serialized))\n }\n\n getTransaction(\n storageKey: string,\n options?: {\n remove?: boolean\n }\n ): CosmosUnsignedTransaction | undefined {\n const serialized = window.localStorage.getItem(storageKey)\n if (!serialized) return undefined\n\n if (options?.remove) {\n window.localStorage.removeItem(storageKey)\n }\n\n return TxRaw.decode(fromBase64(serialized))\n }\n\n async getMPCPayloadAndTransaction(\n transactionRequest: CosmosTransactionRequest\n ): Promise<{\n transaction: CosmosUnsignedTransaction\n mpcPayloads: MPCPayloads\n }> {\n const { denom, rpcUrl, gasPrice } = await this.getChainInfo()\n const publicKeyBytes = fromHex(transactionRequest.publicKey)\n\n const gasLimit = transactionRequest.gas || 200_000\n\n const fee = calculateFee(\n gasLimit,\n GasPrice.fromString(`${gasPrice}${denom}`)\n )\n\n const client = await StargateClient.connect(rpcUrl)\n const accountOnChain = await client.getAccount(transactionRequest.address)\n if (!accountOnChain) {\n throw new Error(\n `Account ${transactionRequest.address} does not exist on chain`\n )\n }\n\n const { accountNumber, sequence } = accountOnChain\n\n const txBodyEncodeObject: TxBodyEncodeObject = {\n typeUrl: '/cosmos.tx.v1beta1.TxBody',\n value: {\n messages: transactionRequest.messages,\n memo: transactionRequest.memo || '',\n },\n }\n\n const txBodyBytes = this.registry.encode(txBodyEncodeObject)\n\n const pubkey = encodePubkey(encodeSecp256k1Pubkey(publicKeyBytes))\n\n // TODO: Allow caller to provide: multiple signers, fee payer, fee granter\n const authInfoBytes = makeAuthInfoBytes(\n [\n {\n pubkey,\n sequence,\n },\n ],\n fee.amount,\n Number(fee.gas),\n undefined,\n undefined,\n SignMode.SIGN_MODE_DIRECT\n )\n\n const signDoc = makeSignDoc(\n txBodyBytes,\n authInfoBytes,\n this.chainId,\n accountNumber\n )\n\n const signBytes = makeSignBytes(signDoc)\n const payload = Array.from(sha256(signBytes))\n\n return {\n transaction: TxRaw.fromPartial({\n bodyBytes: txBodyBytes,\n authInfoBytes,\n signatures: [],\n }),\n mpcPayloads: [\n {\n index: 0,\n payload,\n },\n ],\n }\n }\n\n addSignature({\n transaction,\n mpcSignatures,\n }: {\n transaction: CosmosUnsignedTransaction\n mpcSignatures: RSVSignature[]\n }): string {\n // Allow support for multi-sig but the package only supports single-sig\n transaction.signatures = mpcSignatures.map((sig) =>\n this.parseRSVSignature(sig)\n )\n\n const txBytes = TxRaw.encode(transaction).finish()\n return Buffer.from(txBytes).toString('hex')\n }\n\n async broadcastTx(txSerialized: string): Promise<string> {\n try {\n const { rpcUrl } = await this.getChainInfo()\n const client = await StargateClient.connect(rpcUrl)\n\n const txBytes = fromHex(txSerialized)\n const broadcastResponse = await client.broadcastTx(txBytes)\n\n if (broadcastResponse.code !== 0) {\n throw new Error(`Broadcast error: ${broadcastResponse.rawLog}`)\n }\n\n return broadcastResponse.transactionHash\n } catch (error) {\n console.error('Transaction broadcast failed:', error)\n throw new Error('Failed to broadcast transaction.')\n }\n }\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.base_decode = exports.base_encode = exports.deserialize = exports.serialize = void 0;\nvar borsh_1 = require(\"borsh\");\nObject.defineProperty(exports, \"serialize\", { enumerable: true, get: function () { return borsh_1.serialize; } });\nObject.defineProperty(exports, \"deserialize\", { enumerable: true, get: function () { return borsh_1.deserialize; } });\nvar utils_1 = require(\"@near-js/utils\");\nObject.defineProperty(exports, \"base_encode\", { enumerable: true, get: function () { return utils_1.baseEncode; } });\nObject.defineProperty(exports, \"base_decode\", { enumerable: true, get: function () { return utils_1.baseDecode; } });\n","import BN from 'bn.js'\n\nexport const NEAR_MAX_GAS = new BN('300000000000000')\nexport const DONT_CARE_ACCOUNT_ID = 'dontcare'\n","import { Account, Connection } from '@near-js/accounts'\nimport { KeyPair } from '@near-js/crypto'\nimport { InMemoryKeyStore } from '@near-js/keystores'\n\nimport { DONT_CARE_ACCOUNT_ID } from '@utils/chains/near/constants'\n\ntype SetConnectionArgs =\n | {\n networkId: string\n accountId: string\n keypair: KeyPair\n }\n | {\n networkId: string\n accountId?: never\n keypair?: never\n }\n\nexport const getNearAccount = async ({\n networkId,\n accountId = DONT_CARE_ACCOUNT_ID,\n keypair = KeyPair.fromRandom('ed25519'),\n}: SetConnectionArgs): Promise<Account> => {\n const keyStore = new InMemoryKeyStore()\n await keyStore.setKey(networkId, accountId, keypair)\n\n const connection = Connection.fromConfig({\n networkId,\n provider: {\n type: 'JsonRpcProvider',\n args: {\n url: {\n testnet: 'https://rpc.testnet.near.org',\n mainnet: 'https://rpc.mainnet.near.org',\n }[networkId],\n },\n },\n signer: { type: 'InMemorySigner', keyStore },\n })\n\n return new Account(connection, accountId)\n}\n","import { type SignedDelegate } from '@near-js/transactions'\nimport bs58 from 'bs58'\n\nimport { type SignedDelegateRelayerFormat } from './types'\n\n/**\n * Parses the signedDelegate object from the Multi-Party Computation (MPC) format to the Relayer format.\n * @param signedDelegate - The signedDelegate object in MPC format.\n * @returns The signedDelegate object in Relayer format.\n */\nexport function parseSignedDelegateForRelayer(\n signedDelegate: SignedDelegate\n): SignedDelegateRelayerFormat {\n return {\n delegate_action: {\n actions: signedDelegate.delegateAction.actions\n .map((action) => {\n if (action.functionCall) {\n return {\n FunctionCall: {\n method_name: action.functionCall.methodName,\n args: Buffer.from(action.functionCall.args).toString('base64'),\n gas: Number(action.functionCall.gas),\n deposit: action.functionCall.deposit.toString(),\n },\n }\n }\n return undefined\n })\n .flatMap((t) => (t ? [t] : [])),\n nonce: Number(signedDelegate.delegateAction.nonce),\n max_block_height: Number(signedDelegate.delegateAction.maxBlockHeight),\n public_key: signedDelegate.delegateAction.publicKey.toString(),\n receiver_id: signedDelegate.delegateAction.receiverId,\n sender_id: signedDelegate.delegateAction.senderId,\n },\n signature: `ed25519:${bs58.encode(signedDelegate.signature.data)}`,\n }\n}\n","import { type Account, Contract } from '@near-js/accounts'\nimport { KeyPair } from '@near-js/crypto'\nimport { actionCreators } from '@near-js/transactions'\nimport BN from 'bn.js'\nimport { base_decode } from 'near-api-js/lib/utils/serialize'\n\nimport { utils } from '@chains'\nimport { ChainSignatureContract as AbstractChainSignatureContract } from '@chains/ChainSignatureContract'\nimport type { SignArgs } from '@chains/ChainSignatureContract'\nimport type {\n RSVSignature,\n MPCSignature,\n UncompressedPubKeySEC1,\n} from '@chains/types'\nimport { chains } from '@utils'\nimport { getNearAccount } from '@utils/chains/near/account'\nimport {\n DONT_CARE_ACCOUNT_ID,\n NEAR_MAX_GAS,\n} from '@utils/chains/near/constants'\nimport { parseSignedDelegateForRelayer } from '@utils/chains/near/relayer'\nimport {\n type NearNetworkIds,\n type ChainSignatureContractIds,\n} from '@utils/chains/near/types'\n\nconst najToUncompressedPubKey = (najPubKey: string): UncompressedPubKeySEC1 => {\n return `04${Buffer.from(base_decode(najPubKey.split(':')[1])).toString('hex')}`\n}\n\nconst requireAccount = (accountId: string): void => {\n if (accountId === DONT_CARE_ACCOUNT_ID) {\n throw new Error(\n 'A valid account ID and keypair are required for change methods. Please instantiate a new contract with valid credentials.'\n )\n }\n}\n\ntype NearContract = Contract & {\n public_key: () => Promise<string>\n sign: (args: {\n args: { request: SignArgs }\n gas: BN\n amount: BN\n }) => Promise<MPCSignature>\n experimental_signature_deposit: () => Promise<number>\n derived_public_key: (args: {\n path: string\n predecessor: string\n }) => Promise<string>\n}\n\ninterface ChainSignatureContractArgs {\n networkId: NearNetworkIds\n contractId: ChainSignatureContractIds\n accountId?: string\n keypair?: KeyPair\n}\n\n/**\n * This contract will default to view methods only.\n * If you want to use the change methods, you need to provide an account and keypair.\n */\nexport class ChainSignatureContract extends AbstractChainSignatureContract {\n private readonly networkId: NearNetworkIds\n private readonly contractId: ChainSignatureContractIds\n private readonly accountId: string\n private readonly keypair: KeyPair\n\n constructor({\n networkId,\n contractId,\n accountId = DONT_CARE_ACCOUNT_ID,\n keypair = KeyPair.fromRandom('ed25519'),\n }: ChainSignatureContractArgs) {\n super()\n\n this.networkId = networkId\n this.contractId = contractId\n this.accountId = accountId\n this.keypair = keypair\n }\n\n private async getContract(): Promise<NearContract> {\n const account = await getNearAccount({\n networkId: this.networkId,\n accountId: this.accountId,\n keypair: this.keypair,\n })\n\n return new Contract(account, this.contractId, {\n viewMethods: [\n 'public_key',\n 'experimental_signature_deposit',\n 'derived_public_key',\n ],\n changeMethods: ['sign'],\n useLocalViewExecution: false,\n }) as unknown as NearContract\n }\n\n async getCurrentSignatureDeposit(): Promise<BN> {\n const contract = await this.getContract()\n return new BN(\n (await contract.experimental_signature_deposit()).toLocaleString(\n 'fullwide',\n {\n useGrouping: false,\n }\n )\n )\n }\n\n async getDerivedPublicKey(args: {\n path: string\n predecessor: string\n }): Promise<UncompressedPubKeySEC1> {\n const contract = await this.getContract()\n\n const najPubKey = await contract.derived_public_key(args)\n return najToUncompressedPubKey(najPubKey)\n }\n\n async sign(args: SignArgs): Promise<RSVSignature> {\n requireAccount(this.accountId)\n\n const contract = await this.getContract()\n const deposit = await this.getCurrentSignatureDeposit()\n\n const signature = await contract.sign({\n args: { request: args },\n gas: NEAR_MAX_GAS,\n amount: deposit,\n })\n\n return utils.toRSV(signature)\n }\n\n static async signWithRelayer({\n account,\n contract,\n signArgs,\n deposit,\n relayerUrl,\n }: {\n account: Account\n contract: ChainSignatureContractIds\n signArgs: SignArgs\n deposit: BN\n relayerUrl: string\n }): Promise<RSVSignature> {\n const functionCall = actionCreators.functionCall(\n 'sign',\n { request: signArgs },\n BigInt(NEAR_MAX_GAS.toString()),\n BigInt(deposit.toString())\n )\n\n const signedDelegate = await account.signedDelegate({\n receiverId: contract,\n actions: [functionCall],\n blockHeightTtl: 60,\n })\n\n // Remove the cached access key to prevent nonce reuse\n delete account.accessKeyByPublicKeyCache[\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n signedDelegate.delegateAction.publicKey.toString()\n ]\n\n const res = await fetch(`${relayerUrl}/send_meta_tx_async`, {\n method: 'POST',\n mode: 'cors',\n body: JSON.stringify(parseSignedDelegateForRelayer(signedDelegate)),\n headers: new Headers({ 'Content-Type': 'application/json' }),\n })\n\n const txHash = await res.text()\n const txStatus = await account.connection.provider.txStatus(\n txHash,\n account.accountId,\n 'FINAL'\n )\n\n const signature = chains.near.transactionBuilder.responseToMpcSignature({\n response: txStatus,\n })\n\n if (!signature) {\n throw new Error('Signature error, please retry')\n }\n\n return signature\n }\n}\n","import type {\n Action,\n FinalExecutionOutcome,\n NetworkId,\n} from '@near-wallet-selector/core'\nimport BN from 'bn.js'\nimport { type ExecutionOutcomeWithId } from 'near-api-js/lib/providers'\n\nimport { utils } from '@chains'\nimport {\n type RSVSignature,\n type KeyDerivationPath,\n type MPCSignature,\n type MPCPayloads,\n} from '@chains/types'\nimport { ChainSignatureContract } from '@utils/chains/near/ChainSignatureContract'\nimport { NEAR_MAX_GAS } from '@utils/chains/near/constants'\nimport {\n type NFTKeysContracts,\n type ChainSignatureContractIds,\n} from '@utils/chains/near/types'\n\nexport const mpcPayloadsToChainSigTransaction = async ({\n networkId,\n contractId,\n mpcPayloads,\n path,\n}: {\n networkId: NetworkId\n contractId: ChainSignatureContractIds\n mpcPayloads: MPCPayloads\n path: KeyDerivationPath\n}): Promise<{\n receiverId: string\n actions: Action[]\n}> => {\n const contract = new ChainSignatureContract({\n networkId,\n contractId,\n })\n\n const currentContractFee = await contract.getCurrentSignatureDeposit()\n\n return {\n receiverId: contractId,\n actions: mpcPayloads.map(({ payload }) => ({\n type: 'FunctionCall',\n params: {\n methodName: 'sign',\n args: {\n request: {\n payload: Array.from(payload),\n path,\n key_version: 0,\n },\n },\n gas: NEAR_MAX_GAS.div(new BN(mpcPayloads.length)).toString(),\n deposit: currentContractFee?.toString() || '1',\n },\n })),\n }\n}\n\nexport const mpcPayloadsToNFTKeysTransaction = async ({\n networkId,\n chainSigContract,\n nftKeysContract,\n mpcPayloads,\n path,\n tokenId,\n}: {\n networkId: NetworkId\n chainSigContract: ChainSignatureContractIds\n nftKeysContract: NFTKeysContracts\n mpcPayloads: MPCPayloads\n path: KeyDerivationPath\n tokenId: string\n}): Promise<{\n receiverId: string\n actions: Action[]\n}> => {\n const contract = new ChainSignatureContract({\n networkId,\n contractId: chainSigContract,\n })\n\n const currentContractFee = await contract.getCurrentSignatureDeposit()\n\n return {\n receiverId: nftKeysContract,\n actions: mpcPayloads.map(({ payload }) => ({\n type: 'FunctionCall',\n params: {\n methodName: 'ckt_sign_hash',\n args: {\n token_id: tokenId,\n path,\n payload: Array.from(payload),\n },\n gas: NEAR_MAX_GAS.div(new BN(mpcPayloads.length)).toString(),\n deposit: currentContractFee?.toString() || '1',\n },\n })),\n }\n}\n\nexport const responseToMpcSignature = ({\n response,\n}: {\n response: FinalExecutionOutcome\n}): RSVSignature | undefined => {\n const signature: string = response.receipts_outcome.reduce<string>(\n (acc: string, curr: ExecutionOutcomeWithId) => {\n if (acc) {\n return acc\n }\n const { status } = curr.outcome\n return (\n (typeof status === 'object' &&\n status.SuccessValue &&\n status.SuccessValue !== '' &&\n Buffer.from(status.SuccessValue, 'base64').toString('utf-8')) ||\n ''\n )\n },\n ''\n )\n\n if (signature) {\n const parsedJSONSignature = JSON.parse(signature) as {\n Ok: MPCSignature\n }\n\n return utils.toRSV(parsedJSONSignature.Ok)\n } else {\n return undefined\n }\n}\n","import { type KeyPair } from '@near-js/crypto'\n\nimport { Bitcoin, Cosmos, EVM } from '@chains'\nimport { BTCRpcAdapters } from '@chains/Bitcoin/BTCRpcAdapter'\nimport { type Response } from '@chains/types'\nimport { getNearAccount } from '@utils/chains/near/account'\nimport { ChainSignatureContract } from '@utils/chains/near/ChainSignatureContract'\nimport {\n type BitcoinRequest,\n type CosmosRequest,\n type EVMRequest,\n} from '@utils/chains/near/types'\n\nexport const EVMTransaction = async (\n req: EVMRequest,\n keyPair: KeyPair\n): Promise<Response> => {\n try {\n const account = await getNearAccount({\n networkId: req.nearAuthentication.networkId,\n accountId: req.nearAuthentication.accountId,\n keypair: keyPair,\n })\n\n const contract = new ChainSignatureContract({\n networkId: req.nearAuthentication.networkId,\n contractId: req.chainConfig.contract,\n accountId: account.accountId,\n keypair: keyPair,\n })\n\n const evm = new EVM({\n rpcUrl: req.chainConfig.providerUrl,\n contract,\n })\n\n const { transaction, mpcPayloads } = await evm.getMPCPayloadAndTransaction(\n req.transaction\n )\n\n const signature = await contract.sign({\n payload: mpcPayloads[0].payload,\n path: req.derivationPath,\n key_version: 0,\n })\n\n const txSerialized = evm.addSignature({\n transaction,\n mpcSignatures: [signature],\n })\n\n const txHash = await evm.broadcastTx(txSerialized)\n\n return {\n transactionHash: txHash,\n success: true,\n }\n } catch (e: unknown) {\n console.error(e)\n return {\n success: false,\n errorMessage: e instanceof Error ? e.message : String(e),\n }\n }\n}\n\nexport const BTCTransaction = async (\n req: BitcoinRequest,\n keyPair: KeyPair\n): Promise<Response> => {\n try {\n const account = await getNearAccount({\n networkId: req.nearAuthentication.networkId,\n accountId: req.nearAuthentication.accountId,\n keypair: keyPair,\n })\n\n const contract = new ChainSignatureContract({\n networkId: req.nearAuthentication.networkId,\n contractId: req.chainConfig.contract,\n accountId: account.accountId,\n keypair: keyPair,\n })\n\n const btc = new Bitcoin({\n btcRpcAdapter: new BTCRpcAdapters.Mempool(req.chainConfig.providerUrl),\n contract,\n network: req.chainConfig.network,\n })\n\n const { transaction, mpcPayloads } = await btc.getMPCPayloadAndTransaction(\n req.transaction\n )\n\n const signatures = await Promise.all(\n mpcPayloads.map(\n async ({ payload }) =>\n await contract.sign({\n payload,\n path: req.derivationPath,\n key_version: 0,\n })\n )\n )\n\n const txSerialized = btc.addSignature({\n transaction,\n mpcSignatures: signatures,\n })\n\n const txHash = await btc.broadcastTx(txSerialized)\n\n return {\n transactionHash: txHash,\n success: true,\n }\n } catch (e: unknown) {\n return {\n success: false,\n errorMessage: e instanceof Error ? e.message : String(e),\n }\n }\n}\n\nexport const CosmosTransaction = async (\n req: CosmosRequest,\n keyPair: KeyPair\n): Promise<Response> => {\n try {\n const account = await getNearAccount({\n networkId: req.nearAuthentication.networkId,\n accountId: req.nearAuthentication.accountId,\n keypair: keyPair,\n })\n\n const contract = new ChainSignatureContract({\n networkId: req.nearAuthentication.networkId,\n contractId: req.chainConfig.contract,\n accountId: account.accountId,\n keypair: keyPair,\n })\n\n const cosmos = new Cosmos({\n contract,\n chainId: req.chainConfig.chainId,\n })\n\n const { transaction, mpcPayloads } =\n await cosmos.getMPCPayloadAndTransaction(req.transaction)\n\n const signatures = await Promise.all(\n mpcPayloads.map(\n async ({ payload }) =>\n await contract.sign({\n payload,\n path: req.derivationPath,\n key_version: 0,\n })\n )\n )\n\n const txSerialized = cosmos.addSignature({\n transaction,\n mpcSignatures: signatures,\n })\n\n const txHash = await cosmos.broadcastTx(txSerialized)\n\n return {\n transactionHash: txHash,\n success: true,\n }\n } catch (e: unknown) {\n console.error(e)\n return {\n success: false,\n errorMessage: e instanceof Error ? e.message : String(e),\n }\n }\n}\n"],"names":["Chain","ChainSignatureContract$1","toRSV","signature","compressPubKey","uncompressedPubKeySEC1","slicedPubKey","x","y","fetchEVMFeeProperties","providerUrl","transaction","provider","ethers","gasLimit","feeData","maxFeePerGas","maxPriorityFeePerGas","EVM","rpcUrl","contract","fees","nonce","from","rest","predecessor","path","uncompressedPubKey","publicKeyNoPrefix","hash","fromHex","address","balance","error","storageKey","serializedTransaction","_","value","options","txSerialized","transactionRequest","transactionHash","keccak256","txHash","mpcSignatures","parseBTCNetwork","network","bitcoin","_Bitcoin","btcRpcAdapter","satoshis","btc","transactionId","data","tx","vout","scriptPubKey","r","s","rawSignature","inputs","outputs","psbt","input","prevOut","out","derivedKey","utils.compressPubKey","publicKeyBuffer","payment","transactionJSON","psbtHex","mpcPayloads","mockKeyPair","index","a","b","publicKey","keyPair","mpcSignature","Bitcoin","BTCRpcAdapter","Mempool","confirmationTarget","targets","utxos","feeRate","ret","coinselect","transactionHex","response","txid","BTCRpcAdapters","utf8","utf8Length","str","len","c","i","utf8Read","buffer","start","end","chunk","parts","t","utf8Write","offset","c1","c2","varint","varint64read","lowBits","highBits","shift","middleByte","varint64write","lo","hi","bytes","hasNext","byte","splitBits","hasMoreBits","TWO_PWR_32_DBL","int64FromString","dec","minus","base","add1e6digit","begin","digit1e6","negate","newBits","int64ToString","bits","negative","result","uInt64ToString","toUnsigned","low","mid","high","digitA","digitB","digitC","decimalFrom1e7WithLeadingZeros","digit1e7","partial","varint32write","varint32read","readBytes","zzEncode","mask","zzDecode","readUInt32","buf","pos","readInt32","writeVarint32","val","writeVarint64","int64Length","part0","part1","part2","writeFixed32","writeByte","binary","utf8_1","require$$0","varint_1","require$$1","WireType","BinaryReader","tag","fieldNo","wireType","length","indexOutOfRange","num","Op","fn","State","writer","BinaryWriter","size","pool","head","tail","type","writeBytes","alloc","slice","slab","reader","writeLength","helpers","globalThis","global","atob","b64","bytesFromBase64","bin","arr","btoa","base64FromBytes","omitDefault","toDuration","duration","fromDuration","isSet","isObject","setPaginationParams","pagination","toTimestamp","date","seconds","numberToLong","nanos","fromTimestamp","millis","timestampFromJSON","object","fromJsonTimestamp","o","number","multisig","binary_1","helpers_1","createBaseMultiSignature","message","v","obj","e","_a","createBaseCompactBitArray","any","createBaseAny","exports","multisig_1","any_1","require$$2","require$$3","SignMode","signModeFromJSON","signModeToJSON","createBaseSignatureDescriptors","createBaseSignatureDescriptor","createBaseSignatureDescriptor_Data","createBaseSignatureDescriptor_Data_Single","createBaseSignatureDescriptor_Data_Multi","coin","createBaseCoin","createBaseDecCoin","createBaseIntProto","createBaseDecProto","signing_1","coin_1","require$$4","require$$5","createBaseTx","createBaseTxRaw","createBaseSignDoc","createBaseSignDocDirectAux","createBaseTxBody","_b","_c","createBaseAuthInfo","createBaseSignerInfo","createBaseModeInfo","createBaseModeInfo_Single","createBaseModeInfo_Multi","createBaseFee","createBaseTip","createBaseAuxSignerData","fetchChainInfo","chainId","chainInfo","chains","chain","prefix","expectedChainId","denom","_f","_e","_d","restUrl","_i","_h","_g","gasPrice","_l","_k","_j","assetList","assets","asset","decimals","_m","unit","Cosmos","endpoints","Registry","rsvSignature","amount","pubKeySha256","sha256","ripemd160Hash","ripemd160","bech32","serialized","TxRaw","toBase64","fromBase64","publicKeyBytes","fee","calculateFee","GasPrice","accountOnChain","StargateClient","accountNumber","sequence","txBodyEncodeObject","txBodyBytes","pubkey","encodePubkey","encodeSecp256k1Pubkey","authInfoBytes","makeAuthInfoBytes","signDoc","makeSignDoc","signBytes","makeSignBytes","payload","sig","txBytes","client","broadcastResponse","borsh_1","utils_1","NEAR_MAX_GAS","BN","DONT_CARE_ACCOUNT_ID","getNearAccount","networkId","accountId","keypair","KeyPair","keyStore","InMemoryKeyStore","connection","Connection","Account","parseSignedDelegateForRelayer","signedDelegate","action","bs58","najToUncompressedPubKey","najPubKey","base_decode","requireAccount","ChainSignatureContract","AbstractChainSignatureContract","contractId","account","Contract","args","deposit","utils.toRSV","signArgs","relayerUrl","functionCall","actionCreators","txStatus","chains.near.transactionBuilder.responseToMpcSignature","mpcPayloadsToChainSigTransaction","currentContractFee","mpcPayloadsToNFTKeysTransaction","chainSigContract","nftKeysContract","tokenId","responseToMpcSignature","acc","curr","status","parsedJSONSignature","EVMTransaction","req","evm","BTCTransaction","signatures","CosmosTransaction","cosmos"],"mappings":"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","x_google_ignoreList":[10,11,12,13,14,15,16,17,18,21]}
|