@qorechain/sdk 0.1.0 → 0.3.0
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/README.md +16 -0
- package/dist/index.cjs +14015 -643
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +5053 -26
- package/dist/index.d.ts +5053 -26
- package/dist/index.js +13945 -646
- package/dist/index.js.map +1 -1
- package/package.json +7 -3
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/config/networks.ts","../src/query/http.ts","../src/query/rest.ts","../src/query/jsonrpc.ts","../src/query/qor.ts","../src/tx/fees.ts","../src/tx/builder.ts","../src/cosmwasm/index.ts","../src/query/crossvm.ts","../src/client.ts","../src/utils/denom.ts","../src/utils/address.ts","../src/accounts/wallet.ts","../src/accounts/pqc-algorithm.ts","../src/accounts/pqc.ts","../src/tx/signer-adapter.ts","../src/tx/hybrid.ts","../src/tx/hybrid-tx.ts","../src/index.ts"],"names":["bip39Generate","bip39Validate","HDKey","Slip10HDKey","TxBody"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * Network presets for the QoreChain SDK.\n *\n * Both the `testnet` and `mainnet` presets are fully populated and live. Their\n * endpoints default to localhost ports so the SDK works out of the box against a\n * locally running node; callers override these with real hostnames when creating\n * a client. {@link getNetwork} returns either preset.\n */\n\n/** Bech32 human-readable prefixes used across QoreChain address types. */\nexport interface Bech32Prefixes {\n /** Prefix for account addresses (e.g. `qor1...`). */\n account: string;\n /** Prefix for validator operator addresses (e.g. `qorvaloper1...`). */\n validator: string;\n /** Prefix for validator consensus addresses (e.g. `qorvalcons1...`). */\n consensus: string;\n}\n\n/** Display and base denomination metadata for the network's staking coin. */\nexport interface CoinInfo {\n /** Human-facing denomination (e.g. `QOR`). */\n display: string;\n /** Base (smallest) denomination used on-chain (e.g. `uqor`). */\n base: string;\n /** Decimal exponent relating base to display (1 display = 10^exponent base). */\n exponent: number;\n}\n\n/** Service endpoints for talking to a network across its supported VMs. */\nexport interface NetworkEndpoints {\n /** Cosmos SDK REST (LCD) endpoint. */\n rest: string;\n /** Cosmos SDK gRPC endpoint. */\n grpc: string;\n /** Consensus RPC endpoint. */\n rpc: string;\n /** EVM JSON-RPC HTTP endpoint. */\n evmRpc: string;\n /** EVM JSON-RPC WebSocket endpoint. */\n evmWs: string;\n /** SVM JSON-RPC endpoint. */\n svmRpc: string;\n}\n\n/** A fully described network preset. */\nexport interface NetworkConfig {\n /** Canonical preset name. */\n name: string;\n /** Whether the network is live and usable without custom endpoints. */\n live: boolean;\n /** Chain ID. */\n chainId: string;\n /** Bech32 prefixes for address encoding. */\n bech32: Bech32Prefixes;\n /** Staking coin metadata. */\n coin: CoinInfo;\n /** Default endpoints. */\n endpoints: NetworkEndpoints;\n}\n\n/** Known network preset names. */\nexport type NetworkName = \"testnet\" | \"mainnet\";\n\n/**\n * QoreChain uses the same token and address prefixes on every network, so these\n * are shared (not invented) values across the presets below.\n */\nconst BECH32: Bech32Prefixes = {\n account: \"qor\",\n validator: \"qorvaloper\",\n consensus: \"qorvalcons\",\n};\n\nconst COIN: CoinInfo = {\n display: \"QOR\",\n base: \"uqor\",\n exponent: 6,\n};\n\n/** The set of built-in network presets, keyed by name. */\nexport const NETWORKS: Record<NetworkName, NetworkConfig> = {\n testnet: {\n name: \"testnet\",\n live: true,\n chainId: \"qorechain-diana\",\n bech32: BECH32,\n coin: COIN,\n endpoints: {\n rest: \"http://localhost:1317\",\n grpc: \"http://localhost:9090\",\n rpc: \"http://localhost:26657\",\n evmRpc: \"http://localhost:8545\",\n evmWs: \"ws://localhost:8546\",\n svmRpc: \"http://localhost:8899\",\n },\n },\n mainnet: {\n name: \"mainnet\",\n live: true,\n chainId: \"qorechain-vladi\",\n bech32: BECH32,\n coin: COIN,\n endpoints: {\n rest: \"http://localhost:1317\",\n grpc: \"http://localhost:9090\",\n rpc: \"http://localhost:26657\",\n evmRpc: \"http://localhost:8545\",\n evmWs: \"ws://localhost:8546\",\n svmRpc: \"http://localhost:8899\",\n },\n },\n};\n\n/**\n * Resolve a network preset by name.\n *\n * @returns The requested {@link NetworkConfig}, guaranteed to be live and usable.\n */\nexport function getNetwork(name: NetworkName): NetworkConfig {\n return NETWORKS[name];\n}\n\n/** List the known network preset names without triggering any liveness check. */\nexport function listNetworks(): NetworkName[] {\n return Object.keys(NETWORKS) as NetworkName[];\n}\n","/**\n * Shared HTTP transport for the read/query clients.\n *\n * Provides two primitives — {@link getJson} for REST GETs and\n * {@link postJsonRpc} for JSON-RPC POSTs — both built on the global `fetch`.\n * `fetch` is injectable so tests can mock the network entirely; nothing here\n * ever performs a real request on its own.\n *\n * Failures surface as a typed {@link QoreHttpError} (non-2xx HTTP responses).\n * Transient transport failures (5xx and network errors) are retried with a\n * small fixed backoff up to a configurable count; 4xx responses are never\n * retried. Each attempt is bounded by an `AbortSignal`-driven timeout.\n */\n\n/** A `fetch`-compatible function. Defaults to `globalThis.fetch`. */\nexport type FetchLike = (\n input: string,\n init?: RequestInit,\n) => Promise<Response>;\n\n/** A JSON-serializable value usable as a query-string parameter. */\nexport type QueryValue = string | number | boolean | undefined | null;\n\n/** Options shared by all HTTP helpers. */\nexport interface HttpOptions {\n /** Injectable `fetch`. Defaults to `globalThis.fetch`. */\n fetch?: FetchLike;\n /** Per-attempt timeout in milliseconds. Defaults to 30000. `0` disables it. */\n timeoutMs?: number;\n /** Number of retries after the initial attempt for retryable errors. Defaults to 2. */\n retries?: number;\n /** Fixed delay between retries in milliseconds. Defaults to 250. */\n retryDelayMs?: number;\n /** Extra request headers, merged over the defaults. */\n headers?: Record<string, string>;\n}\n\n/** Options for {@link getJson}, adding query-string parameters. */\nexport interface GetJsonOptions extends HttpOptions {\n /** Query parameters; `undefined`/`null` values are omitted. */\n query?: Record<string, QueryValue>;\n}\n\nconst DEFAULT_TIMEOUT_MS = 30_000;\nconst DEFAULT_RETRIES = 2;\nconst DEFAULT_RETRY_DELAY_MS = 250;\n\n/** Thrown when an HTTP response has a non-2xx status. */\nexport class QoreHttpError extends Error {\n /** HTTP status code of the failing response. */\n readonly status: number;\n /** The URL that was requested. */\n readonly url: string;\n /** Raw response body text, when available. */\n readonly body?: string;\n\n constructor(status: number, url: string, body?: string) {\n super(`HTTP ${status} for ${url}`);\n this.name = \"QoreHttpError\";\n this.status = status;\n this.url = url;\n this.body = body;\n Object.setPrototypeOf(this, QoreHttpError.prototype);\n }\n}\n\nfunction resolveFetch(opts?: HttpOptions): FetchLike {\n const f = opts?.fetch ?? (globalThis.fetch as FetchLike | undefined);\n if (!f) {\n throw new Error(\n \"no fetch implementation available — pass `fetch` in the client options\",\n );\n }\n return f;\n}\n\n/** Append query params to a URL, skipping `undefined`/`null` values. */\nexport function buildUrl(base: string, query?: Record<string, QueryValue>): string {\n if (!query) return base;\n const parts: string[] = [];\n for (const [key, value] of Object.entries(query)) {\n if (value === undefined || value === null) continue;\n parts.push(`${encodeURIComponent(key)}=${encodeURIComponent(String(value))}`);\n }\n if (parts.length === 0) return base;\n const sep = base.includes(\"?\") ? \"&\" : \"?\";\n return `${base}${sep}${parts.join(\"&\")}`;\n}\n\n/** Join a base URL and a path without producing double slashes. */\nexport function joinUrl(base: string, path: string): string {\n const left = base.replace(/\\/+$/, \"\");\n const right = path.replace(/^\\/+/, \"\");\n return `${left}/${right}`;\n}\n\nfunction delay(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\n/** 5xx responses are retryable; 4xx are not. */\nfunction isRetryableStatus(status: number): boolean {\n return status >= 500 && status < 600;\n}\n\n/**\n * Run one `fetch` attempt with an abort-driven timeout, parsing the JSON body\n * on success and throwing {@link QoreHttpError} on a non-2xx response.\n */\nasync function attempt<T>(\n url: string,\n init: RequestInit,\n fetchImpl: FetchLike,\n timeoutMs: number,\n): Promise<T> {\n const controller = timeoutMs > 0 ? new AbortController() : undefined;\n const timer =\n controller && timeoutMs > 0\n ? setTimeout(() => controller.abort(), timeoutMs)\n : undefined;\n try {\n const res = await fetchImpl(url, {\n ...init,\n signal: controller?.signal,\n });\n if (!res.ok) {\n let body: string | undefined;\n try {\n body = await res.text();\n } catch {\n body = undefined;\n }\n throw new QoreHttpError(res.status, url, body);\n }\n return (await res.json()) as T;\n } finally {\n if (timer) clearTimeout(timer);\n }\n}\n\n/** Execute `attempt` with retry on retryable HTTP/transport errors. */\nasync function withRetry<T>(\n url: string,\n init: RequestInit,\n opts: HttpOptions | undefined,\n): Promise<T> {\n const fetchImpl = resolveFetch(opts);\n const timeoutMs = opts?.timeoutMs ?? DEFAULT_TIMEOUT_MS;\n const retries = opts?.retries ?? DEFAULT_RETRIES;\n const retryDelayMs = opts?.retryDelayMs ?? DEFAULT_RETRY_DELAY_MS;\n\n let lastError: unknown;\n for (let i = 0; i <= retries; i++) {\n try {\n return await attempt<T>(url, init, fetchImpl, timeoutMs);\n } catch (err) {\n lastError = err;\n const retryable =\n err instanceof QoreHttpError ? isRetryableStatus(err.status) : true;\n if (!retryable || i === retries) throw err;\n if (retryDelayMs > 0) await delay(retryDelayMs);\n }\n }\n throw lastError;\n}\n\n/**\n * Perform a GET request and parse the JSON response.\n *\n * @param url - Fully-qualified URL (without query string).\n * @param opts - Query params, injectable `fetch`, timeout, and retry settings.\n * @throws {@link QoreHttpError} on a non-2xx response.\n */\nexport function getJson<T>(url: string, opts?: GetJsonOptions): Promise<T> {\n const fullUrl = buildUrl(url, opts?.query);\n const init: RequestInit = {\n method: \"GET\",\n headers: { accept: \"application/json\", ...(opts?.headers ?? {}) },\n };\n return withRetry<T>(fullUrl, init, opts);\n}\n\n/**\n * POST a JSON-RPC body and parse the JSON response.\n *\n * This handles only the HTTP layer; JSON-RPC error envelopes are interpreted by\n * the {@link JsonRpcClient}.\n *\n * @throws {@link QoreHttpError} on a non-2xx response.\n */\nexport function postJsonRpc<T>(\n url: string,\n body: unknown,\n opts?: HttpOptions,\n): Promise<T> {\n const init: RequestInit = {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n accept: \"application/json\",\n ...(opts?.headers ?? {}),\n },\n body: JSON.stringify(body),\n };\n return withRetry<T>(url, init, opts);\n}\n","/**\n * REST (LCD) read client for QoreChain.\n *\n * Wraps the standard Cosmos SDK bank endpoints plus QoreChain's custom module\n * read routes under `/qorechain/<module>/v1/...`. All requests go through the\n * shared {@link getJson} helper, so `fetch` is injectable and failures surface\n * as {@link QoreHttpError}.\n *\n * Response shapes are modeled only where they are simple and stable (e.g. bank\n * balances); richer module responses are returned as a caller-supplied generic\n * defaulting to {@link Record}<string, unknown> rather than over-modeled here.\n */\n\nimport type { Coin } from \"@cosmjs/amino\";\nimport {\n getJson,\n joinUrl,\n type FetchLike,\n type HttpOptions,\n type QueryValue,\n} from \"./http\";\n\n/**\n * A Cosmos coin amount. Re-exported from `@cosmjs/amino` so the SDK has a single\n * canonical `Coin` type shared across query, fee, and tx code (no duplicated\n * structural definition).\n */\nexport type { Coin };\n\n/** Cosmos pagination response metadata. */\nexport interface PageResponse {\n next_key: string | null;\n total?: string;\n}\n\n/** Response of the all-balances endpoint. */\nexport interface AllBalancesResponse {\n balances: Coin[];\n pagination?: PageResponse;\n}\n\n/** Response of the single-denom balance endpoint. */\nexport interface BalanceResponse {\n balance: Coin;\n}\n\n/** Cosmos-style key/limit pagination input. */\nexport interface Pagination {\n key?: string;\n limit?: number;\n}\n\n/** Options accepted by paginated list endpoints. */\nexport interface PaginatedOptions {\n pagination?: Pagination;\n}\n\n/** Options for {@link RestClient}. */\nexport type RestClientOptions = HttpOptions;\n\n/** Relative urgency of a fee estimate. */\nexport type FeeUrgency = \"fast\" | \"normal\" | \"slow\";\n\n/** Map a {@link Pagination} into Cosmos `pagination.*` query params. */\nfunction paginationQuery(p?: Pagination): Record<string, QueryValue> {\n const q: Record<string, QueryValue> = {};\n if (p?.key !== undefined) q[\"pagination.key\"] = p.key;\n if (p?.limit !== undefined) q[\"pagination.limit\"] = p.limit;\n return q;\n}\n\n/** Cosmos + QoreChain REST read client. */\nexport class RestClient {\n private readonly baseUrl: string;\n private readonly opts: RestClientOptions;\n\n /**\n * @param baseUrl - The network's REST endpoint (e.g. `endpoints.rest`).\n * @param opts - Injectable `fetch`, timeout, and retry settings.\n */\n constructor(baseUrl: string, opts: RestClientOptions = {}) {\n this.baseUrl = baseUrl;\n this.opts = opts;\n }\n\n /** Injectable fetch passthrough so the escape hatch reuses the same transport. */\n private get fetchImpl(): FetchLike | undefined {\n return this.opts.fetch;\n }\n\n /**\n * Generic GET escape hatch for any documented REST route.\n *\n * @param path - Path beginning with `/` (e.g. `/qorechain/foo/v1/bar`).\n * Embedded path params must be URL-encoded by the caller.\n * @param query - Optional query parameters.\n */\n get<T = Record<string, unknown>>(\n path: string,\n query?: Record<string, QueryValue>,\n ): Promise<T> {\n return getJson<T>(joinUrl(this.baseUrl, path), {\n ...this.opts,\n query,\n });\n }\n\n // --- Standard Cosmos bank ------------------------------------------------\n\n /** All balances of `address` (`/cosmos/bank/v1beta1/balances/{address}`). */\n getAllBalances(\n address: string,\n opts?: PaginatedOptions,\n ): Promise<AllBalancesResponse> {\n return this.get<AllBalancesResponse>(\n `/cosmos/bank/v1beta1/balances/${encodeURIComponent(address)}`,\n paginationQuery(opts?.pagination),\n );\n }\n\n /** Balance of `address` in `denom` (`.../balances/{address}/by_denom`). */\n getBalance(address: string, denom: string): Promise<BalanceResponse> {\n return this.get<BalanceResponse>(\n `/cosmos/bank/v1beta1/balances/${encodeURIComponent(address)}/by_denom`,\n { denom },\n );\n }\n\n // --- Custom QoreChain module reads ---------------------------------------\n\n /** QCAI fee/network stats (`/qorechain/ai/v1/stats`). */\n getAiStats<T = Record<string, unknown>>(): Promise<T> {\n return this.get<T>(\"/qorechain/ai/v1/stats\");\n }\n\n /** QCAI fee estimate for an urgency level (`/qorechain/ai/v1/fee-estimate`). */\n getFeeEstimate<T = Record<string, unknown>>(urgency: FeeUrgency): Promise<T> {\n return this.get<T>(\"/qorechain/ai/v1/fee-estimate\", { urgency });\n }\n\n /** Supported bridge chains (`/qorechain/bridge/v1/chains`). */\n getBridgeChains<T = Record<string, unknown>>(): Promise<T> {\n return this.get<T>(\"/qorechain/bridge/v1/chains\");\n }\n\n /** PQC account record (`/qorechain/pqc/v1/accounts/{address}`). */\n getPqcAccount<T = Record<string, unknown>>(address: string): Promise<T> {\n return this.get<T>(`/qorechain/pqc/v1/accounts/${encodeURIComponent(address)}`);\n }\n\n /** Validator reputation (`/qorechain/reputation/v1/validators/{address}`). */\n getReputation<T = Record<string, unknown>>(\n validatorAddress: string,\n ): Promise<T> {\n return this.get<T>(\n `/qorechain/reputation/v1/validators/${encodeURIComponent(validatorAddress)}`,\n );\n }\n\n /** Token burn statistics (`/qorechain/burn/v1/stats`). */\n getBurnStats<T = Record<string, unknown>>(): Promise<T> {\n return this.get<T>(\"/qorechain/burn/v1/stats\");\n }\n\n /** xQORE staking position (`/qorechain/xqore/v1/position/{address}`). */\n getXqorePosition<T = Record<string, unknown>>(address: string): Promise<T> {\n return this.get<T>(`/qorechain/xqore/v1/position/${encodeURIComponent(address)}`);\n }\n\n /** Current inflation rate (`/qorechain/inflation/v1/rate`). */\n getInflationRate<T = Record<string, unknown>>(): Promise<T> {\n return this.get<T>(\"/qorechain/inflation/v1/rate\");\n }\n}\n","/**\n * Generic JSON-RPC 2.0 client.\n *\n * Manages request ids (auto-incrementing per client), serializes the standard\n * `{ jsonrpc, id, method, params }` envelope, and maps JSON-RPC error responses\n * to a typed {@link JsonRpcError}. It is the transport base for both the EVM\n * `eth_*`/`net_*`/`web3_*` methods and the QoreChain `qor_*` namespace.\n *\n * The underlying `fetch` is injectable via {@link HttpOptions} so callers and\n * tests can supply their own transport.\n */\n\nimport { postJsonRpc, type HttpOptions } from \"./http\";\n\n/** A JSON-RPC 2.0 error object. */\nexport interface JsonRpcErrorObject {\n code: number;\n message: string;\n data?: unknown;\n}\n\n/** A JSON-RPC 2.0 response envelope. */\nexport interface JsonRpcResponse<T> {\n jsonrpc: \"2.0\";\n id: number | string | null;\n result?: T;\n error?: JsonRpcErrorObject;\n}\n\n/** Thrown when a JSON-RPC response carries an `error` member. */\nexport class JsonRpcError extends Error {\n /** JSON-RPC error code. */\n readonly code: number;\n /** Optional implementation-defined error data. */\n readonly data?: unknown;\n\n constructor(code: number, message: string, data?: unknown) {\n super(message);\n this.name = \"JsonRpcError\";\n this.code = code;\n this.data = data;\n Object.setPrototypeOf(this, JsonRpcError.prototype);\n }\n}\n\n/** Options for {@link JsonRpcClient}. */\nexport type JsonRpcClientOptions = HttpOptions;\n\n/** A minimal JSON-RPC 2.0 client over HTTP POST. */\nexport class JsonRpcClient {\n protected readonly url: string;\n protected readonly opts: JsonRpcClientOptions;\n private nextId = 1;\n\n constructor(url: string, opts: JsonRpcClientOptions = {}) {\n this.url = url;\n this.opts = opts;\n }\n\n /**\n * Invoke a JSON-RPC method and return its `result`.\n *\n * @param method - Wire method name (e.g. `\"eth_chainId\"`).\n * @param params - Positional params; defaults to an empty array.\n * @throws {@link JsonRpcError} when the response contains an `error`.\n * @throws {@link QoreHttpError} on a non-2xx transport response.\n */\n async call<T>(method: string, params: unknown[] = []): Promise<T> {\n const id = this.nextId++;\n const body = { jsonrpc: \"2.0\", id, method, params };\n const res = await postJsonRpc<JsonRpcResponse<T>>(this.url, body, this.opts);\n if (res.error) {\n throw new JsonRpcError(res.error.code, res.error.message, res.error.data);\n }\n return res.result as T;\n }\n\n /** `eth_chainId` — the chain id as a hex quantity string. */\n ethChainId(): Promise<string> {\n return this.call<string>(\"eth_chainId\", []);\n }\n\n /** `eth_blockNumber` — the latest block height as a hex quantity string. */\n ethBlockNumber(): Promise<string> {\n return this.call<string>(\"eth_blockNumber\", []);\n }\n\n /** `eth_getBalance` — wei balance of `address` as a hex quantity string. */\n ethGetBalance(address: string, block: string = \"latest\"): Promise<string> {\n return this.call<string>(\"eth_getBalance\", [address, block]);\n }\n\n /** `net_version` — the network id as a decimal string. */\n netVersion(): Promise<string> {\n return this.call<string>(\"net_version\", []);\n }\n\n /** `web3_clientVersion` — the node client version string. */\n web3ClientVersion(): Promise<string> {\n return this.call<string>(\"web3_clientVersion\", []);\n }\n}\n","/**\n * Typed wrappers for the QoreChain `qor_*` JSON-RPC namespace.\n *\n * Each method maps one-to-one to a chain RPC method, exposed against the EVM\n * JSON-RPC endpoint (`endpoints.evmRpc`). The on-the-wire method names use the\n * chain's exact casing (e.g. `qor_getPQCKeyStatus`, `qor_getAIStats`) and must\n * not be altered.\n *\n * Results are intentionally returned as generics defaulting to\n * {@link Record}<string, unknown>: the chain returns rich, evolving JSON and the\n * SDK does not model every field. Callers pass a concrete type argument when\n * they know the shape.\n */\n\nimport { JsonRpcClient, type JsonRpcClientOptions } from \"./jsonrpc\";\n\n/** Convenience default for unmodeled `qor_*` responses. */\ntype Json = Record<string, unknown>;\n\n/**\n * Client for the QoreChain `qor_*` JSON-RPC namespace.\n *\n * Built on {@link JsonRpcClient}; point it at the network's `evmRpc` endpoint.\n */\nexport class QorClient extends JsonRpcClient {\n constructor(url: string, opts: JsonRpcClientOptions = {}) {\n super(url, opts);\n }\n\n /** `qor_getPQCKeyStatus` — PQC key registration status for an address. */\n getPqcKeyStatus<T = Json>(address: string): Promise<T> {\n return this.call<T>(\"qor_getPQCKeyStatus\", [address]);\n }\n\n /** `qor_getHybridSignatureMode` — active hybrid-signature policy. */\n getHybridSignatureMode<T = Json>(): Promise<T> {\n return this.call<T>(\"qor_getHybridSignatureMode\", []);\n }\n\n /** `qor_getAIStats` — QCAI engine statistics. */\n getAiStats<T = Json>(): Promise<T> {\n return this.call<T>(\"qor_getAIStats\", []);\n }\n\n /** `qor_getCrossVMMessage` — a cross-VM message by id. */\n getCrossVmMessage<T = Json>(messageId: string): Promise<T> {\n return this.call<T>(\"qor_getCrossVMMessage\", [messageId]);\n }\n\n /** `qor_getReputationScore` — reputation score for a validator. */\n getReputationScore<T = Json>(validator: string): Promise<T> {\n return this.call<T>(\"qor_getReputationScore\", [validator]);\n }\n\n /** `qor_getLayerInfo` — info about a chain layer. */\n getLayerInfo<T = Json>(layerId: string): Promise<T> {\n return this.call<T>(\"qor_getLayerInfo\", [layerId]);\n }\n\n /** `qor_getBridgeStatus` — bridge status for a remote chain id. */\n getBridgeStatus<T = Json>(chainId: string): Promise<T> {\n return this.call<T>(\"qor_getBridgeStatus\", [chainId]);\n }\n\n /** `qor_getRLAgentStatus` — reinforcement-learning agent status. */\n getRlAgentStatus<T = Json>(): Promise<T> {\n return this.call<T>(\"qor_getRLAgentStatus\", []);\n }\n\n /** `qor_getRLObservation` — latest RL observation vector. */\n getRlObservation<T = Json>(): Promise<T> {\n return this.call<T>(\"qor_getRLObservation\", []);\n }\n\n /** `qor_getRLReward` — latest RL reward signal. */\n getRlReward<T = Json>(): Promise<T> {\n return this.call<T>(\"qor_getRLReward\", []);\n }\n\n /** `qor_getPoolClassification` — validator pool classification. */\n getPoolClassification<T = Json>(validator: string): Promise<T> {\n return this.call<T>(\"qor_getPoolClassification\", [validator]);\n }\n\n /** `qor_getBurnStats` — token burn statistics. */\n getBurnStats<T = Json>(): Promise<T> {\n return this.call<T>(\"qor_getBurnStats\", []);\n }\n\n /** `qor_getXQOREPosition` — xQORE staking position for an address. */\n getXqorePosition<T = Json>(address: string): Promise<T> {\n return this.call<T>(\"qor_getXQOREPosition\", [address]);\n }\n\n /** `qor_getInflationRate` — current inflation rate. */\n getInflationRate<T = Json>(): Promise<T> {\n return this.call<T>(\"qor_getInflationRate\", []);\n }\n\n /** `qor_getTokenomicsOverview` — aggregate tokenomics snapshot. */\n getTokenomicsOverview<T = Json>(): Promise<T> {\n return this.call<T>(\"qor_getTokenomicsOverview\", []);\n }\n\n /** `qor_getRollupStatus` — status of a rollup. */\n getRollupStatus<T = Json>(rollupId: string): Promise<T> {\n return this.call<T>(\"qor_getRollupStatus\", [rollupId]);\n }\n\n /** `qor_listRollups` — all known rollups. */\n listRollups<T = Json>(): Promise<T> {\n return this.call<T>(\"qor_listRollups\", []);\n }\n\n /** `qor_getSettlementBatch` — a settlement batch by rollup and index. */\n getSettlementBatch<T = Json>(rollupId: string, batchIndex: number): Promise<T> {\n return this.call<T>(\"qor_getSettlementBatch\", [rollupId, batchIndex]);\n }\n\n /** `qor_suggestRollupProfile` — a suggested rollup profile for a use case. */\n suggestRollupProfile<T = Json>(useCase: string): Promise<T> {\n return this.call<T>(\"qor_suggestRollupProfile\", [useCase]);\n }\n\n /** `qor_getDABlobStatus` — data-availability blob status by rollup and index. */\n getDaBlobStatus<T = Json>(rollupId: string, blobIndex: number): Promise<T> {\n return this.call<T>(\"qor_getDABlobStatus\", [rollupId, blobIndex]);\n }\n\n /** `qor_getBTCStakingPosition` — BTC staking position for an address. */\n getBtcStakingPosition<T = Json>(address: string): Promise<T> {\n return this.call<T>(\"qor_getBTCStakingPosition\", [address]);\n }\n\n /** `qor_getAbstractAccount` — account-abstraction record for an address. */\n getAbstractAccount<T = Json>(address: string): Promise<T> {\n return this.call<T>(\"qor_getAbstractAccount\", [address]);\n }\n\n /** `qor_getFairBlockStatus` — fair-ordering / fair-block status. */\n getFairBlockStatus<T = Json>(): Promise<T> {\n return this.call<T>(\"qor_getFairBlockStatus\", []);\n }\n\n /** `qor_getGasAbstractionConfig` — gas-abstraction configuration. */\n getGasAbstractionConfig<T = Json>(): Promise<T> {\n return this.call<T>(\"qor_getGasAbstractionConfig\", []);\n }\n\n /** `qor_getLaneConfiguration` — mempool lane configuration. */\n getLaneConfiguration<T = Json>(): Promise<T> {\n return this.call<T>(\"qor_getLaneConfiguration\", []);\n }\n}\n","/**\n * Native-transaction fee estimation for QoreChain.\n *\n * QoreChain exposes an AI-assisted fee oracle at the REST route\n * `/qorechain/ai/v1/fee-estimate?urgency=fast|normal|slow` (see the core\n * `AI_ENGINE.md` / `API_REFERENCE.md`). {@link estimateFee} queries it via the\n * shared {@link RestClient} and shapes the answer as a Cosmos `StdFee`\n * (`{ amount: Coin[]; gas: string }`).\n *\n * The oracle can be unavailable (node still syncing, sidecar down, custom RPC\n * without the AI module). To keep transaction building robust, this falls back\n * to a deterministic static fee computed from a configurable gas price in the\n * base denom — `ceil(gas * gasPrice)` — exactly as a wallet would compute a\n * minimum-gas-price fee. The fallback is transparent and never throws on a\n * missing/erroring endpoint; only a successful response is preferred.\n */\n\nimport type { StdFee } from \"@cosmjs/amino\";\nimport type { RestClient, FeeUrgency } from \"../query/rest\";\n\n/**\n * Re-export cosmjs's canonical `StdFee` so the SDK shares one fee type with what\n * `SigningStargateClient.signAndBroadcast` expects. This is the cosmjs shape\n * (`{ amount: readonly Coin[]; gas: string; granter?; payer? }`), so feegrant\n * `granter`/`payer` are supported.\n */\nexport type { StdFee };\n\n/**\n * Default static-fallback parameters, used when the AI fee oracle is\n * unavailable. The gas price (`uqor` per unit of gas) is intentionally\n * conservative and matches the relayer default in the core repo\n * (`gas_price = 0.025 uqor`).\n */\nexport const STATIC_FALLBACK = {\n /** Fallback gas price, in base denom per unit of gas. */\n gasPrice: \"0.025\",\n /** Base denomination fees are paid in. */\n denom: \"uqor\",\n /** Default gas limit when the caller does not supply one. */\n gas: \"200000\",\n} as const;\n\n/** Options for {@link estimateFee}. */\nexport interface EstimateFeeOptions {\n /** Relative urgency tier passed to the oracle. Defaults to `\"normal\"`. */\n urgency?: FeeUrgency;\n /**\n * Gas limit to request, as a number or decimal string. Defaults to\n * {@link STATIC_FALLBACK.gas}. The oracle only suggests a *fee amount*; the\n * gas limit is chosen by the caller (or via {@link TxClient.simulate}).\n */\n gas?: number | string;\n /**\n * Static-fallback gas price (base denom per gas unit) used only when the\n * oracle is unavailable. Defaults to {@link STATIC_FALLBACK.gasPrice}.\n */\n fallbackGasPrice?: string;\n /** Base denomination for the fee. Defaults to {@link STATIC_FALLBACK.denom}. */\n denom?: string;\n}\n\n/**\n * Shape of the AI fee-estimate REST response.\n *\n * Mirrors the core `FeeEstimateResponse` proto (gateway JSON): `suggested_fee_uqor`\n * is a `uint64`, which proto3 JSON encodes as a string, but tolerate a number too.\n */\ninterface FeeEstimateResponse {\n suggested_fee_uqor?: string | number;\n estimated_blocks?: number;\n current_congestion?: number;\n predicted_congestion?: number;\n confidence?: number;\n}\n\n/** Normalize a `number | string` gas value to a decimal string. */\nfunction gasString(gas: number | string | undefined): string {\n if (gas === undefined) return STATIC_FALLBACK.gas;\n return typeof gas === \"number\" ? Math.ceil(gas).toString() : gas;\n}\n\n/**\n * Compute a static fee as `ceil(gas * gasPrice)` in `denom`.\n *\n * Uses BigInt math on a scaled integer to avoid floating-point drift on the\n * fee amount; the gas price is parsed to a fixed number of decimal places.\n */\nfunction staticFee(gas: string, gasPrice: string, denom: string): StdFee {\n const gasUnits = BigInt(gas);\n // Parse \"0.025\" into (numerator=25, scale=1000) so amount = gas*num/scale.\n const [intPart, fracPart = \"\"] = gasPrice.split(\".\");\n const scale = 10n ** BigInt(fracPart.length);\n const numerator = BigInt(intPart || \"0\") * scale + BigInt(fracPart || \"0\");\n // ceil division: (gas*numerator + scale - 1) / scale\n const raw = gasUnits * numerator;\n const amount = (raw + scale - 1n) / scale;\n return { amount: [{ denom, amount: amount.toString() }], gas };\n}\n\n/**\n * Estimate a transaction fee for the given urgency.\n *\n * Queries the QoreChain AI fee oracle and returns a Cosmos `StdFee`. If the\n * oracle is unavailable or returns no usable fee, falls back to a deterministic\n * static fee computed from {@link EstimateFeeOptions.fallbackGasPrice}.\n *\n * @param rest - A {@link RestClient} bound to the network's REST endpoint.\n * @param opts - Urgency, gas limit, and static-fallback parameters.\n */\nexport async function estimateFee(\n rest: RestClient,\n opts: EstimateFeeOptions = {},\n): Promise<StdFee> {\n const urgency: FeeUrgency = opts.urgency ?? \"normal\";\n const gas = gasString(opts.gas);\n const denom = opts.denom ?? STATIC_FALLBACK.denom;\n const fallbackGasPrice = opts.fallbackGasPrice ?? STATIC_FALLBACK.gasPrice;\n\n try {\n const res = await rest.getFeeEstimate<FeeEstimateResponse>(urgency);\n const suggested = res?.suggested_fee_uqor;\n if (suggested !== undefined && suggested !== null) {\n const amount =\n typeof suggested === \"number\"\n ? Math.ceil(suggested).toString()\n : suggested;\n // Treat a zero/empty suggestion as \"no answer\" and fall through.\n if (amount !== \"\" && amount !== \"0\") {\n return { amount: [{ denom, amount }], gas };\n }\n }\n } catch {\n // Oracle unavailable — fall through to the static fee.\n }\n\n return staticFee(gas, fallbackGasPrice, denom);\n}\n","/**\n * Native transaction builder and broadcaster for QoreChain.\n *\n * {@link TxClient} wraps cosmjs's `SigningStargateClient` to simulate, sign, and\n * broadcast native (Cosmos SDK) transactions, with a `bankSend` convenience for\n * the common transfer case. It is constructed in two ways:\n *\n * - {@link TxClient.connect} — the production path: connect to the network's\n * consensus RPC with an offline signer (see {@link directSignerFromPrivateKey})\n * and an optional custom message {@link Registry}.\n * - `new TxClient({ signingClient, senderAddress })` — the testable path: inject\n * any object satisfying {@link SigningClientLike}, so unit tests never touch\n * the network.\n *\n * Custom QoreChain module messages are out of scope for v0.1 codegen; instead,\n * callers may register their own protobuf types by passing `registryTypes` to\n * {@link TxClient.connect} (added to cosmjs's default bank/staking/gov/etc.\n * registry), then build `{ typeUrl, value }` messages for them.\n */\n\nimport {\n SigningStargateClient,\n type SigningStargateClientOptions,\n type DeliverTxResponse,\n defaultRegistryTypes,\n} from \"@cosmjs/stargate\";\nimport {\n Registry,\n type EncodeObject,\n type OfflineDirectSigner,\n type GeneratedType,\n} from \"@cosmjs/proto-signing\";\nimport { MsgSend } from \"cosmjs-types/cosmos/bank/v1beta1/tx\";\nimport type { Coin } from \"../query/rest\";\nimport type { StdFee } from \"./fees\";\nimport type { BroadcastMode, BroadcastResult } from \"./broadcast\";\n\n/** The `/cosmos.bank.v1beta1.MsgSend` type URL. */\nexport const MSG_SEND_TYPE_URL = \"/cosmos.bank.v1beta1.MsgSend\";\n\n/**\n * The subset of `SigningStargateClient` that {@link TxClient} depends on.\n * Declaring it explicitly lets unit tests inject a lightweight fake.\n */\nexport interface SigningClientLike {\n simulate(\n signerAddress: string,\n messages: readonly EncodeObject[],\n memo: string | undefined,\n ): Promise<number>;\n signAndBroadcast(\n signerAddress: string,\n messages: readonly EncodeObject[],\n fee: StdFee,\n memo?: string,\n ): Promise<DeliverTxResponse>;\n signAndBroadcastSync(\n signerAddress: string,\n messages: readonly EncodeObject[],\n fee: StdFee,\n memo?: string,\n ): Promise<string>;\n disconnect?(): void;\n}\n\n/** Options for constructing a {@link TxClient} directly (testing/advanced). */\nexport interface TxClientOptions {\n /** The underlying signing client (real or fake). */\n signingClient: SigningClientLike;\n /** The bech32 address transactions are signed and sent from. */\n senderAddress: string;\n}\n\n/** Options for {@link TxClient.connect}. */\nexport interface TxConnectOptions {\n /** Consensus RPC endpoint (e.g. `endpoints.rpc`). */\n rpcEndpoint: string;\n /** An offline direct signer (see {@link directSignerFromPrivateKey}). */\n signer: OfflineDirectSigner;\n /**\n * Extra protobuf message types to register, as `[typeUrl, GeneratedType]`\n * pairs. Added to cosmjs's default registry (bank/staking/gov/distribution/…).\n * Use this to support custom QoreChain module messages without bundling full\n * codegen into the SDK.\n */\n registryTypes?: ReadonlyArray<[string, GeneratedType]>;\n /** Additional cosmjs `SigningStargateClientOptions` (gas price, etc.). */\n clientOptions?: SigningStargateClientOptions;\n}\n\n/** Options accepted when signing and broadcasting. */\nexport interface SignAndBroadcastOptions {\n /** Broadcast mode. Defaults to `\"commit\"`. */\n mode?: BroadcastMode;\n}\n\n/** Options for {@link TxClient.simulate}. */\nexport interface SimulateOptions {\n /** Optional tx memo to include in the simulation. */\n memo?: string;\n}\n\n/** Options for {@link TxClient.bankSend}. */\nexport interface BankSendOptions extends SignAndBroadcastOptions {\n /** The fee to pay. Required (estimate via `estimateFee`). */\n fee: StdFee;\n /** Optional memo. */\n memo?: string;\n}\n\n/**\n * A native-transaction client: simulate, sign, broadcast, and send tokens.\n */\nexport class TxClient {\n private readonly client: SigningClientLike;\n /** The signing/sending bech32 address. */\n readonly senderAddress: string;\n\n constructor(opts: TxClientOptions) {\n this.client = opts.signingClient;\n this.senderAddress = opts.senderAddress;\n }\n\n /**\n * Connect to a network's consensus RPC and build a {@link TxClient}.\n *\n * Resolves the signer's first account as the sender address and merges any\n * `registryTypes` into cosmjs's default message registry.\n */\n static async connect(opts: TxConnectOptions): Promise<TxClient> {\n const registry = new Registry(defaultRegistryTypes);\n for (const [typeUrl, type] of opts.registryTypes ?? []) {\n registry.register(typeUrl, type);\n }\n const client = await SigningStargateClient.connectWithSigner(\n opts.rpcEndpoint,\n opts.signer,\n { registry, ...opts.clientOptions },\n );\n const accounts = await opts.signer.getAccounts();\n if (accounts.length === 0) {\n throw new Error(\"signer exposes no accounts\");\n }\n return new TxClient({\n signingClient: client,\n senderAddress: accounts[0].address,\n });\n }\n\n /**\n * Simulate the given messages and return the estimated gas units.\n *\n * Use the result (with a safety multiplier) as the `gas` for `estimateFee`.\n */\n simulate(\n messages: readonly EncodeObject[],\n opts: SimulateOptions = {},\n ): Promise<number> {\n return this.client.simulate(this.senderAddress, messages, opts.memo);\n }\n\n /**\n * Sign and broadcast the given messages with an explicit fee.\n *\n * Broadcast mode maps onto cosmjs transports:\n * - `commit` (default): polls until the tx lands in a block; returns the full\n * result and throws on a non-zero delivery code.\n * - `sync` / `async`: returns after mempool submission with just the tx hash.\n */\n async signAndBroadcast(\n messages: readonly EncodeObject[],\n fee: StdFee,\n memo = \"\",\n opts: SignAndBroadcastOptions = {},\n ): Promise<BroadcastResult> {\n const mode: BroadcastMode = opts.mode ?? \"commit\";\n\n if (mode === \"commit\") {\n const res = await this.client.signAndBroadcast(\n this.senderAddress,\n messages,\n fee,\n memo,\n );\n if (res.code !== 0) {\n throw new Error(\n `transaction failed with code ${res.code}: ${res.rawLog ?? \"(no log)\"} (hash ${res.transactionHash})`,\n );\n }\n return {\n transactionHash: res.transactionHash,\n code: res.code,\n height: res.height,\n gasUsed: res.gasUsed,\n gasWanted: res.gasWanted,\n rawLog: res.rawLog,\n };\n }\n\n // sync / async: both return after CheckTx without polling for a block.\n const hash = await this.client.signAndBroadcastSync(\n this.senderAddress,\n messages,\n fee,\n memo,\n );\n return { transactionHash: hash, code: 0 };\n }\n\n /**\n * Send `amount` to `toAddress` via a bank `MsgSend`, then broadcast.\n *\n * Constructs `/cosmos.bank.v1beta1.MsgSend` from this client's sender address.\n */\n bankSend(\n toAddress: string,\n amount: Coin[],\n opts: BankSendOptions,\n ): Promise<BroadcastResult> {\n const msg: EncodeObject = {\n typeUrl: MSG_SEND_TYPE_URL,\n value: MsgSend.fromPartial({\n fromAddress: this.senderAddress,\n toAddress,\n amount,\n }),\n };\n return this.signAndBroadcast([msg], opts.fee, opts.memo ?? \"\", {\n mode: opts.mode,\n });\n }\n\n /** Disconnect the underlying client's transport, if it supports it. */\n disconnect(): void {\n this.client.disconnect?.();\n }\n}\n","/**\n * CosmWasm contract interaction for QoreChain.\n *\n * This module rounds out the triple-VM surface (native + EVM + SVM + CosmWasm)\n * with thin, type-safe conveniences over `@cosmjs/cosmwasm-stargate`. It does\n * NOT reimplement cosmjs: the wrappers forward to a `CosmWasmClient` (reads) or\n * `SigningCosmWasmClient` (writes) with QoreChain-friendly defaults.\n *\n * Two construction helpers ({@link createCosmWasmClient}, {@link\n * connectCosmWasmSigner}) build the cosmjs clients against a network's `rpc`\n * endpoint. The wrapper functions, however, accept an already-built client so\n * they are unit-testable with a stubbed fake — no real connection required.\n */\n\nimport {\n CosmWasmClient,\n SigningCosmWasmClient,\n} from \"@cosmjs/cosmwasm-stargate\";\nimport type { OfflineSigner } from \"@cosmjs/proto-signing\";\nimport type { Coin, StdFee } from \"@cosmjs/amino\";\n\n/**\n * Arbitrary JSON value accepted/returned by contract calls. Mirrors cosmjs's\n * `JsonObject` (which is `any`) but keeps our public types honest.\n */\nexport type ContractMsg = Record<string, unknown>;\n\n/** A `StdFee`, or cosmjs's `\"auto\"` (simulate) / a raw gas multiplier number. */\nexport type FeeInput = StdFee | \"auto\" | number;\n\n/**\n * Read-only slice of `CosmWasmClient` used by the read wrappers. Declaring the\n * methods we use (rather than importing the concrete class) lets tests inject a\n * minimal fake.\n */\nexport interface CosmWasmReadClient {\n queryContractSmart(address: string, queryMsg: ContractMsg): Promise<unknown>;\n getContract(address: string): Promise<unknown>;\n}\n\n/** Signing slice of `SigningCosmWasmClient` used by the write wrappers. */\nexport interface CosmWasmSigningClient {\n upload(\n senderAddress: string,\n wasmCode: Uint8Array,\n fee: FeeInput,\n memo?: string,\n ): Promise<unknown>;\n instantiate(\n senderAddress: string,\n codeId: number,\n msg: ContractMsg,\n label: string,\n fee: FeeInput,\n options?: InstantiateOpts,\n ): Promise<unknown>;\n execute(\n senderAddress: string,\n contractAddress: string,\n msg: ContractMsg,\n fee: FeeInput,\n memo?: string,\n funds?: readonly Coin[],\n ): Promise<unknown>;\n}\n\n/** Options for {@link instantiate}: cosmjs `InstantiateOptions` plus the fee. */\nexport interface InstantiateOpts {\n /** Fee for the instantiate tx. Defaults to `\"auto\"` (simulate). */\n fee?: FeeInput;\n /** Optional memo. */\n memo?: string;\n /** Native funds sent to the new contract on instantiation. */\n funds?: readonly Coin[];\n /** Optional admin address (can migrate the contract). */\n admin?: string;\n}\n\n/**\n * Connect a read-only {@link CosmWasmClient} to a network's RPC endpoint.\n *\n * @param rpcUrl - The network's `rpc` endpoint (e.g. `endpoints.rpc`).\n */\nexport function createCosmWasmClient(rpcUrl: string): Promise<CosmWasmClient> {\n return CosmWasmClient.connect(rpcUrl);\n}\n\n/**\n * Connect a {@link SigningCosmWasmClient} for contract writes.\n *\n * @param rpcUrl - The network's `rpc` endpoint.\n * @param signer - An offline signer (e.g. from `@cosmjs/proto-signing`).\n */\nexport function connectCosmWasmSigner(\n rpcUrl: string,\n signer: OfflineSigner,\n): Promise<SigningCosmWasmClient> {\n return SigningCosmWasmClient.connectWithSigner(rpcUrl, signer);\n}\n\n/** Run a contract's smart query (`queryContractSmart`). */\nexport function queryContractSmart<T = unknown>(\n client: CosmWasmReadClient,\n contractAddress: string,\n queryMsg: ContractMsg,\n): Promise<T> {\n return client.queryContractSmart(contractAddress, queryMsg) as Promise<T>;\n}\n\n/** Fetch a contract's on-chain metadata (`getContract`). */\nexport function getContractInfo<T = unknown>(\n client: CosmWasmReadClient,\n contractAddress: string,\n): Promise<T> {\n return client.getContract(contractAddress) as Promise<T>;\n}\n\n/**\n * Instantiate a contract from an uploaded code id.\n *\n * Forwards to `SigningCosmWasmClient.instantiate`, splitting our {@link\n * InstantiateOpts} into cosmjs's positional `fee` (default `\"auto\"`) and its\n * `InstantiateOptions` (`memo`/`funds`/`admin`).\n */\nexport function instantiate<T = unknown>(\n client: CosmWasmSigningClient,\n sender: string,\n codeId: number,\n initMsg: ContractMsg,\n label: string,\n opts: InstantiateOpts = {},\n): Promise<T> {\n const { fee = \"auto\", memo, funds, admin } = opts;\n const options: InstantiateOpts = {};\n if (funds !== undefined) options.funds = funds;\n if (admin !== undefined) options.admin = admin;\n if (memo !== undefined) options.memo = memo;\n return client.instantiate(\n sender,\n codeId,\n initMsg,\n label,\n fee,\n options,\n ) as Promise<T>;\n}\n\n/** Execute a message against an instantiated contract. */\nexport function execute<T = unknown>(\n client: CosmWasmSigningClient,\n sender: string,\n contractAddress: string,\n msg: ContractMsg,\n fee: FeeInput,\n funds?: readonly Coin[],\n): Promise<T> {\n return client.execute(\n sender,\n contractAddress,\n msg,\n fee,\n undefined,\n funds,\n ) as Promise<T>;\n}\n\n/** Upload (store) WASM bytecode, returning the assigned code id in the result. */\nexport function uploadCode<T = unknown>(\n client: CosmWasmSigningClient,\n sender: string,\n wasmBytes: Uint8Array,\n fee: FeeInput,\n): Promise<T> {\n return client.upload(sender, wasmBytes, fee) as Promise<T>;\n}\n","/**\n * Cross-VM read helpers for QoreChain's `x/crossvm` module.\n *\n * These are thin, typed wrappers over {@link RestClient} for the module's REST\n * routes under `/qorechain/crossvm/v1/...`. They are standalone functions taking\n * a {@link RestClient} so they compose with the existing read surface without\n * widening the `RestClient` class itself.\n *\n * Responses are returned as generics defaulting to small interfaces / {@link\n * Record}<string, unknown>: the module returns rich, evolving JSON and the SDK\n * does not model every field.\n *\n * Note on direction: these helpers READ cross-VM message state. The actual\n * EVM→native routing — e.g. an EVM contract triggering a native AMM swap — is\n * performed on-chain via the cross-VM bridge precompile exposed in the\n * `@qorechain/evm` package (not duplicated here). Once a message is in flight,\n * track its status either through these REST reads or via the\n * `qor_getCrossVMMessage` JSON-RPC method already wrapped on `QorClient`.\n */\n\nimport type { RestClient } from \"./rest\";\n\n/** A single cross-VM message record (unmodeled fields surface as-is). */\nexport interface CrossVmMessage {\n [key: string]: unknown;\n}\n\n/** Response of the single-message-by-id route. */\nexport interface CrossVmMessageResponse {\n message?: CrossVmMessage;\n [key: string]: unknown;\n}\n\n/** Response of the pending-messages route. */\nexport interface PendingCrossVmMessagesResponse {\n messages?: CrossVmMessage[];\n [key: string]: unknown;\n}\n\n/** Response of the module params route. */\nexport interface CrossVmParamsResponse {\n params?: Record<string, unknown>;\n [key: string]: unknown;\n}\n\n/**\n * Fetch a cross-VM message by id.\n *\n * GET `/qorechain/crossvm/v1/message/{id}`.\n */\nexport function getCrossVmMessage<T = CrossVmMessageResponse>(\n rest: RestClient,\n id: string,\n): Promise<T> {\n return rest.get<T>(\n `/qorechain/crossvm/v1/message/${encodeURIComponent(id)}`,\n );\n}\n\n/**\n * Fetch all currently pending cross-VM messages.\n *\n * GET `/qorechain/crossvm/v1/pending`.\n */\nexport function getPendingCrossVmMessages<\n T = PendingCrossVmMessagesResponse,\n>(rest: RestClient): Promise<T> {\n return rest.get<T>(\"/qorechain/crossvm/v1/pending\");\n}\n\n/**\n * Fetch the `x/crossvm` module parameters.\n *\n * GET `/qorechain/crossvm/v1/params`.\n */\nexport function getCrossVmParams<T = CrossVmParamsResponse>(\n rest: RestClient,\n): Promise<T> {\n return rest.get<T>(\"/qorechain/crossvm/v1/params\");\n}\n","/**\n * Top-level `createClient` factory for the QoreChain SDK.\n *\n * {@link createClient} resolves a {@link NetworkConfig} (applying any endpoint\n * overrides) and composes the read clients ({@link RestClient}, the EVM\n * {@link JsonRpcClient}, and the `qor_` {@link QorClient}) plus a fee-estimate\n * convenience over {@link estimateFee}. Signing is opt-in: call\n * {@link QoreChainClient.connectTx} with an offline signer to get a\n * {@link TxClient}.\n *\n * Network resolution rules:\n * - The default network is `testnet`. Both `testnet` and `mainnet` are live and\n * ship localhost endpoint defaults; pass `endpoints` to point at real\n * hostnames.\n *\n * Read sub-clients are lazy getters: each only needs its own endpoint, so\n * accessing one whose endpoint is missing throws a clear, actionable error\n * naming the missing endpoint rather than failing later with an opaque request.\n */\n\nimport type { OfflineDirectSigner, GeneratedType } from \"@cosmjs/proto-signing\";\nimport type { StdFee } from \"@cosmjs/amino\";\nimport {\n getNetwork,\n type NetworkConfig,\n type NetworkEndpoints,\n type NetworkName,\n} from \"./config/networks\";\nimport type { FetchLike, HttpOptions } from \"./query/http\";\nimport { RestClient } from \"./query/rest\";\nimport { JsonRpcClient } from \"./query/jsonrpc\";\nimport { QorClient } from \"./query/qor\";\nimport { estimateFee } from \"./tx/fees\";\nimport type { FeeUrgency } from \"./query/rest\";\nimport { TxClient } from \"./tx/builder\";\nimport { createCosmWasmClient } from \"./cosmwasm\";\nimport type { CosmWasmClient } from \"@cosmjs/cosmwasm-stargate\";\nimport {\n getCrossVmMessage,\n getPendingCrossVmMessages,\n getCrossVmParams,\n type CrossVmMessageResponse,\n type PendingCrossVmMessagesResponse,\n type CrossVmParamsResponse,\n} from \"./query/crossvm\";\n\n/** Options for {@link createClient}. */\nexport interface CreateClientOptions {\n /** Network preset to target. Defaults to `\"testnet\"`. */\n network?: NetworkName;\n /**\n * Endpoint overrides, merged over the preset's defaults. Both `testnet` and\n * `mainnet` default to localhost; pass real hostnames here to override them.\n */\n endpoints?: Partial<NetworkEndpoints>;\n /**\n * Chain ID override. Both presets ship a live chain ID, so this is only needed\n * to point at a non-standard chain.\n */\n chainId?: string;\n /** Injectable `fetch` for the read clients (used by tests). */\n fetch?: FetchLike;\n /**\n * Additional HTTP transport options (timeout, retries, headers) shared by the\n * read clients.\n */\n http?: Omit<HttpOptions, \"fetch\">;\n}\n\n/** Options for {@link QoreChainClient.connectTx}. */\nexport interface ConnectTxOptions {\n /**\n * Extra protobuf message types to register, as `[typeUrl, GeneratedType]`\n * pairs (forwarded to {@link TxClient.connect}).\n */\n registryTypes?: ReadonlyArray<[string, GeneratedType]>;\n}\n\n/** Fee convenience surface exposed by {@link QoreChainClient}. */\nexport interface ClientFees {\n /**\n * Estimate a fee for the given urgency via the AI fee oracle (with a static\n * fallback). See {@link estimateFee}.\n */\n estimate(urgency?: FeeUrgency): Promise<StdFee>;\n}\n\n/** Cross-VM read convenience surface, bound to the client's REST endpoint. */\nexport interface ClientCrossVm {\n /** A cross-VM message by id (`/qorechain/crossvm/v1/message/{id}`). */\n message(id: string): Promise<CrossVmMessageResponse>;\n /** Currently pending cross-VM messages (`/qorechain/crossvm/v1/pending`). */\n pending(): Promise<PendingCrossVmMessagesResponse>;\n /** Cross-VM module params (`/qorechain/crossvm/v1/params`). */\n params(): Promise<CrossVmParamsResponse>;\n}\n\n/**\n * A composed QoreChain client: resolved config, read clients, fee helper, and a\n * lazy signing entrypoint.\n */\nexport interface QoreChainClient {\n /** The resolved network config (with any endpoint/chain-id overrides applied). */\n readonly network: NetworkConfig;\n /** Cosmos + QoreChain REST read client (uses `endpoints.rest`). */\n readonly rest: RestClient;\n /** EVM JSON-RPC client (uses `endpoints.evmRpc`). */\n readonly evm: JsonRpcClient;\n /** QoreChain `qor_` namespace client (uses `endpoints.evmRpc`). */\n readonly qor: QorClient;\n /** Fee-estimate convenience over the REST client. */\n readonly fees: ClientFees;\n /** Cross-VM read helpers over the REST client. */\n readonly crossvm: ClientCrossVm;\n /**\n * Connect a read-only CosmWasm client at `endpoints.rpc`.\n *\n * Async (the cosmjs client opens an RPC connection on connect), so this is a\n * method rather than a lazy getter; the result is memoized across calls.\n */\n cosmwasm(): Promise<CosmWasmClient>;\n /**\n * Connect a signer and return a {@link TxClient} bound to `endpoints.rpc`.\n * The heavy lifting lives in {@link TxClient.connect}.\n */\n connectTx(\n signer: OfflineDirectSigner,\n opts?: ConnectTxOptions,\n ): Promise<TxClient>;\n}\n\n/**\n * Resolve the effective {@link NetworkConfig} for the given options.\n *\n * Starts from the live preset (`testnet` or `mainnet`) and overlays\n * `opts.endpoints` and an optional `opts.chainId`.\n */\nfunction resolveNetwork(opts: CreateClientOptions): NetworkConfig {\n const name: NetworkName = opts.network ?? \"testnet\";\n const overrides = opts.endpoints ?? {};\n\n const base = getNetwork(name);\n return {\n ...base,\n chainId: opts.chainId ?? base.chainId,\n endpoints: { ...base.endpoints, ...overrides },\n };\n}\n\n/** Read a required endpoint or throw an actionable error naming it. */\nfunction requireEndpoint(\n endpoints: NetworkEndpoints,\n key: keyof NetworkEndpoints,\n): string {\n const value = endpoints?.[key];\n if (!value) {\n throw new Error(\n `endpoint \"${key}\" is not configured — pass it via createClient({ endpoints: { ${key}: \"...\" } })`,\n );\n }\n return value;\n}\n\n/**\n * Create a composed {@link QoreChainClient}.\n *\n * @param opts - Network selection, endpoint overrides, and transport options.\n */\nexport function createClient(opts: CreateClientOptions = {}): QoreChainClient {\n const network = resolveNetwork(opts);\n const httpOptions: HttpOptions = { ...opts.http, fetch: opts.fetch };\n\n // Memoize each sub-client so repeated access returns the same instance, while\n // still deferring construction (and the missing-endpoint check) until first use.\n let restClient: RestClient | undefined;\n let evmClient: JsonRpcClient | undefined;\n let qorClient: QorClient | undefined;\n\n const getRest = (): RestClient => {\n if (!restClient) {\n restClient = new RestClient(\n requireEndpoint(network.endpoints, \"rest\"),\n httpOptions,\n );\n }\n return restClient;\n };\n const getEvm = (): JsonRpcClient => {\n if (!evmClient) {\n evmClient = new JsonRpcClient(\n requireEndpoint(network.endpoints, \"evmRpc\"),\n httpOptions,\n );\n }\n return evmClient;\n };\n const getQor = (): QorClient => {\n if (!qorClient) {\n qorClient = new QorClient(\n requireEndpoint(network.endpoints, \"evmRpc\"),\n httpOptions,\n );\n }\n return qorClient;\n };\n\n const fees: ClientFees = {\n estimate: (urgency?: FeeUrgency) => estimateFee(getRest(), { urgency }),\n };\n\n const crossvm: ClientCrossVm = {\n message: (id: string) => getCrossVmMessage(getRest(), id),\n pending: () => getPendingCrossVmMessages(getRest()),\n params: () => getCrossVmParams(getRest()),\n };\n\n // Memoize the (async) CosmWasm client so repeated calls reuse one connection.\n let cosmWasmClient: Promise<CosmWasmClient> | undefined;\n\n return {\n network,\n get rest() {\n return getRest();\n },\n get evm() {\n return getEvm();\n },\n get qor() {\n return getQor();\n },\n fees,\n crossvm,\n cosmwasm() {\n if (!cosmWasmClient) {\n cosmWasmClient = createCosmWasmClient(\n requireEndpoint(network.endpoints, \"rpc\"),\n );\n }\n return cosmWasmClient;\n },\n connectTx(signer: OfflineDirectSigner, txOpts: ConnectTxOptions = {}) {\n return TxClient.connect({\n rpcEndpoint: requireEndpoint(network.endpoints, \"rpc\"),\n signer,\n registryTypes: txOpts.registryTypes,\n });\n },\n };\n}\n","/**\n * Conversion between human display amounts (e.g. `\"1.5\"` QOR) and integer base\n * amounts (e.g. `\"1500000\"` uqor).\n *\n * All value math is performed with {@link BigInt} on decimal strings — there is\n * no floating-point arithmetic anywhere in this module, so conversions are exact\n * for any magnitude and never drift (e.g. `toBase(\"0.1\")` is exactly\n * `\"100000\"`).\n *\n * QoreChain's staking coin uses a default exponent of `6` (1 QOR = 10^6 uqor),\n * but every function accepts a custom `exponent` for other denominations.\n */\n\n/** The QoreChain staking coin's default decimal exponent (1 QOR = 10^6 uqor). */\nconst DEFAULT_EXPONENT = 6;\n\n/** Options shared by the denom conversion helpers. */\nexport interface DenomOptions {\n /** Decimal exponent relating base to display (1 display = 10^exponent base). Defaults to 6. */\n exponent?: number;\n}\n\nfunction resolveExponent(opts?: DenomOptions): number {\n const exponent = opts?.exponent ?? DEFAULT_EXPONENT;\n if (!Number.isInteger(exponent) || exponent < 0) {\n throw new Error(`invalid exponent: ${exponent} (must be a non-negative integer)`);\n }\n return exponent;\n}\n\n/**\n * Convert a human display amount to its integer base amount string.\n *\n * @param amount - A non-negative decimal string, e.g. `\"1.5\"`. Surrounding\n * whitespace and a single leading `+` are tolerated. Scientific notation,\n * thousands separators, and other formatting are rejected.\n * @param opts - Optional `exponent` (defaults to 6).\n * @returns The integer base amount as a string with no leading zeros, e.g.\n * `\"1500000\"`.\n * @throws If `amount` is not a valid decimal string, is negative, or has more\n * fractional digits than `exponent` allows.\n */\nexport function toBase(amount: string, opts?: DenomOptions): string {\n const exponent = resolveExponent(opts);\n const trimmed = amount.trim();\n\n let body = trimmed;\n if (body.startsWith(\"-\")) {\n throw new Error(`negative amounts are not supported: ${amount}`);\n }\n if (body.startsWith(\"+\")) {\n body = body.slice(1);\n }\n\n // Strict decimal: optional integer part, optional single fractional part,\n // digits only. Rejects \"\", \".\", \"1.2.3\", \"1e3\", \"abc\", etc.\n if (!/^\\d+(\\.\\d+)?$/.test(body)) {\n throw new Error(`invalid decimal amount: ${amount}`);\n }\n\n const [intPart, fracPart = \"\"] = body.split(\".\");\n if (fracPart.length > exponent) {\n throw new Error(\n `too many decimal places in ${amount}: ${fracPart.length} > exponent ${exponent}`,\n );\n }\n\n // Right-pad the fractional digits to exactly `exponent` places, then read the\n // whole thing as one big integer. Pure string + BigInt math, no floats.\n const padded = fracPart.padEnd(exponent, \"0\");\n const base = BigInt(intPart + padded);\n return base.toString();\n}\n\n/**\n * Convert an integer base amount string to a normalized display string.\n *\n * @param base - A non-negative integer string, e.g. `\"1500000\"`.\n * @param opts - Optional `exponent` (defaults to 6).\n * @returns The display amount with no trailing zeros and no trailing dot, e.g.\n * `\"1.5\"`. `\"1000000\"` becomes `\"1\"`, `\"1\"` becomes `\"0.000001\"`, `\"0\"`\n * becomes `\"0\"`.\n * @throws If `base` is not a valid non-negative integer string.\n */\nexport function fromBase(base: string, opts?: DenomOptions): string {\n const exponent = resolveExponent(opts);\n const trimmed = base.trim();\n\n if (trimmed.startsWith(\"-\")) {\n throw new Error(`negative amounts are not supported: ${base}`);\n }\n if (!/^\\d+$/.test(trimmed)) {\n throw new Error(`invalid base amount: ${base}`);\n }\n\n if (exponent === 0) {\n // No fractional component; strip leading zeros via BigInt.\n return BigInt(trimmed).toString();\n }\n\n // Left-pad so there are at least `exponent + 1` digits, then split.\n const padded = trimmed.padStart(exponent + 1, \"0\");\n const intPart = padded.slice(0, padded.length - exponent);\n const fracPart = padded.slice(padded.length - exponent);\n\n const normalizedInt = BigInt(intPart).toString();\n const trimmedFrac = fracPart.replace(/0+$/, \"\");\n return trimmedFrac.length > 0 ? `${normalizedInt}.${trimmedFrac}` : normalizedInt;\n}\n","/**\n * Conversion and validation for QoreChain bech32 addresses (e.g. `qor1...`) and\n * their underlying byte payloads expressed as `0x`-prefixed hex.\n *\n * bech32 stores data as 5-bit groups (\"words\"), so encoding/decoding goes\n * through {@link bech32.toWords}/{@link bech32.fromWords} to convert to and from\n * the 8-bit byte representation that callers work with as hex.\n */\n\nimport { bech32 } from \"bech32\";\n\n/** Default bech32 human-readable prefix for QoreChain account addresses. */\nconst DEFAULT_PREFIX = \"qor\";\n\n/**\n * bech32 enforces a 90-character limit by default. QoreChain addresses are\n * short, but validator/consensus prefixes plus longer payloads can approach it,\n * so we raise the limit to a safe upper bound to avoid spurious failures.\n */\nconst LIMIT = 1023;\n\n/** Strip an optional `0x`/`0X` prefix from a hex string. */\nfunction stripHexPrefix(hex: string): string {\n return hex.startsWith(\"0x\") || hex.startsWith(\"0X\") ? hex.slice(2) : hex;\n}\n\n/** Parse a hex string (with or without `0x`) into bytes, validating strictly. */\nfunction hexToBytes(hex: string): Uint8Array {\n const body = stripHexPrefix(hex);\n if (body.length === 0 || body.length % 2 !== 0 || !/^[0-9a-fA-F]+$/.test(body)) {\n throw new Error(`invalid hex string: ${hex}`);\n }\n const bytes = new Uint8Array(body.length / 2);\n for (let i = 0; i < bytes.length; i++) {\n bytes[i] = parseInt(body.slice(i * 2, i * 2 + 2), 16);\n }\n return bytes;\n}\n\n/** Encode bytes to a lowercase `0x`-prefixed hex string. */\nfunction bytesToHex(bytes: ArrayLike<number>): string {\n let out = \"0x\";\n for (let i = 0; i < bytes.length; i++) {\n out += bytes[i].toString(16).padStart(2, \"0\");\n }\n return out;\n}\n\n/**\n * Decode a bech32 address to a `0x`-prefixed hex string of its byte payload.\n *\n * @param addr - A bech32 address, e.g. `qor1...`.\n * @returns The underlying bytes as lowercase `0x`-prefixed hex.\n * @throws If `addr` is not a valid bech32 string.\n */\nexport function bech32ToHex(addr: string): string {\n const { words } = bech32.decode(addr, LIMIT);\n const bytes = bech32.fromWords(words);\n return bytesToHex(bytes);\n}\n\n/**\n * Encode raw bytes to a bech32 address with the given prefix.\n *\n * This is the primitive encoder; callers holding a `Uint8Array` payload (e.g.\n * the 20-byte `ripemd160(sha256(pubkey))` account hash) should use this\n * directly rather than round-tripping through hex.\n *\n * @param bytes - The raw byte payload.\n * @param prefix - The bech32 human-readable prefix. Defaults to `\"qor\"`.\n * @returns The bech32-encoded address, e.g. `qor1...`.\n */\nexport function bytesToBech32(\n bytes: Uint8Array,\n prefix: string = DEFAULT_PREFIX,\n): string {\n const words = bech32.toWords(bytes);\n return bech32.encode(prefix, words, LIMIT);\n}\n\n/**\n * Encode hex bytes to a bech32 address with the given prefix.\n *\n * @param hex - The byte payload as hex, with or without a `0x` prefix.\n * @param prefix - The bech32 human-readable prefix. Defaults to `\"qor\"`.\n * @returns The bech32-encoded address, e.g. `qor1...`.\n * @throws If `hex` is not a valid hex string.\n */\nexport function hexToBech32(hex: string, prefix: string = DEFAULT_PREFIX): string {\n return bytesToBech32(hexToBytes(hex), prefix);\n}\n\n/**\n * Validate a bech32 address, optionally requiring a specific prefix.\n *\n * @param addr - The candidate address string.\n * @param prefix - If given, the decoded prefix must match exactly.\n * @returns `true` if `addr` is a structurally valid bech32 string (correct\n * checksum) and, when `prefix` is supplied, its prefix matches; `false`\n * otherwise. Never throws.\n */\nexport function isValidBech32(addr: string, prefix?: string): boolean {\n const decoded = bech32.decodeUnsafe(addr, LIMIT);\n if (!decoded) {\n return false;\n }\n return prefix === undefined ? true : decoded.prefix === prefix;\n}\n","/**\n * Mnemonic generation/validation and hierarchical-deterministic (HD) derivation\n * of QoreChain accounts in all three supported schemes:\n *\n * 1. native — Cosmos-style secp256k1, BIP-44 path `m/44'/118'/0'/0/{index}`,\n * address = bech32(`qor`, ripemd160(sha256(compressedPubkey))).\n * 2. evm — secp256k1, BIP-44 path `m/44'/60'/0'/0/{index}`,\n * address = `0x` + last 20 bytes of keccak256(uncompressedPubkey[1:]),\n * rendered with an EIP-55 mixed-case checksum.\n * 3. svm — ed25519, SLIP-0010 path `m/44'/501'/{index}'/0'` (all hardened,\n * the Solana standard), address = base58(32-byte ed25519 public key).\n *\n * Derivation uses audited primitives: @scure/bip39 (mnemonic + seed), @scure/bip32\n * (secp256k1 HD), micro-key-producer SLIP-0010 (ed25519 HD), @noble/hashes and\n * @noble/curves. Secret material is returned explicitly from the derive functions\n * and is never logged.\n *\n * Dependency note: this module pins @noble/hashes/@noble/curves/@scure/base on\n * the 1.x line, while `micro-key-producer` brings its own 2.x copies of those\n * packages. The two majors are installed side by side intentionally. They never\n * exchange hash or curve instances across the boundary — micro-key-producer is\n * used only as a self-contained SLIP-0010 derivation black box (seed in, ed25519\n * node out), so the duplicate copies are isolated and harmless. Do not force a\n * `pnpm.overrides` that drags micro-key-producer onto a different major; that\n * would risk breaking its internals for no behavioural gain here.\n */\n\nimport {\n generateMnemonic as bip39Generate,\n validateMnemonic as bip39Validate,\n mnemonicToSeed,\n} from \"@scure/bip39\";\nimport { wordlist } from \"@scure/bip39/wordlists/english\";\nimport { HDKey } from \"@scure/bip32\";\nimport { HDKey as Slip10HDKey } from \"micro-key-producer/slip10.js\";\nimport { secp256k1 } from \"@noble/curves/secp256k1\";\nimport { sha256 } from \"@noble/hashes/sha256\";\nimport { ripemd160 } from \"@noble/hashes/ripemd160\";\nimport { keccak_256 } from \"@noble/hashes/sha3\";\nimport { base58 } from \"@scure/base\";\n\nimport { bytesToBech32 } from \"../utils/address\";\nimport type {\n DerivationOptions,\n Secp256k1Account,\n Ed25519Account,\n} from \"./types\";\n\n/** Bech32 human-readable prefix for native QoreChain account addresses. */\nconst NATIVE_PREFIX = \"qor\";\n\n/** Coin types per SLIP-0044. */\nconst COIN_TYPE_NATIVE = 118; // Cosmos\nconst COIN_TYPE_EVM = 60; // Ethereum\nconst COIN_TYPE_SVM = 501; // Solana\n\n/**\n * Generate a fresh BIP-39 mnemonic.\n *\n * @param strength - Entropy in bits: `128` → 12 words (default), `256` → 24 words.\n * @returns A space-separated English mnemonic phrase.\n */\nexport function generateMnemonic(strength: 128 | 256 = 128): string {\n return bip39Generate(wordlist, strength);\n}\n\n/**\n * Validate a BIP-39 mnemonic against the English wordlist and its checksum.\n *\n * @param mnemonic - The candidate phrase.\n * @returns `true` if the phrase is a structurally valid, checksum-correct\n * English BIP-39 mnemonic; `false` otherwise. Never throws.\n */\nexport function validateMnemonic(mnemonic: string): boolean {\n return bip39Validate(mnemonic, wordlist);\n}\n\n/** Resolve the address index from options, defaulting to 0. */\nfunction addressIndex(opts?: DerivationOptions): number {\n const index = opts?.accountIndex ?? 0;\n if (!Number.isInteger(index) || index < 0) {\n throw new Error(`accountIndex must be a non-negative integer, got ${index}`);\n }\n return index;\n}\n\n/**\n * Validate a mnemonic and derive its BIP-39 seed.\n *\n * Centralizing this here is the single guard against the fund-loss footgun where\n * a typo'd phrase (valid words, wrong checksum) would otherwise silently derive\n * a valid-looking but WRONG account. {@link mnemonicToSeed} does NOT check the\n * checksum, so we must validate first. The thrown error deliberately omits the\n * mnemonic text to avoid leaking secret material into logs.\n */\nasync function seedFromMnemonic(mnemonic: string): Promise<Uint8Array> {\n if (!validateMnemonic(mnemonic)) {\n throw new Error(\"invalid mnemonic\");\n }\n return mnemonicToSeed(mnemonic);\n}\n\n/** Derive a secp256k1 HD node at the given BIP-44 path from a mnemonic. */\nasync function deriveSecp256k1(\n mnemonic: string,\n coinType: number,\n index: number,\n): Promise<{ privateKey: Uint8Array; publicKey: Uint8Array }> {\n const seed = await seedFromMnemonic(mnemonic);\n const node = HDKey.fromMasterSeed(seed).derive(\n `m/44'/${coinType}'/0'/0/${index}`,\n );\n if (!node.privateKey || !node.publicKey) {\n throw new Error(\"failed to derive secp256k1 key from mnemonic\");\n }\n // node.publicKey is the 33-byte compressed form.\n return { privateKey: node.privateKey, publicKey: node.publicKey };\n}\n\n/**\n * Render 20 address bytes as an EIP-55 mixed-case checksummed `0x` address.\n *\n * EIP-55: lowercase the hex address, take keccak256 of the lowercase hex\n * (without `0x`) as ASCII, and uppercase each hex nibble whose corresponding\n * keccak nibble is >= 8.\n */\nfunction toEip55Checksum(addressBytes: Uint8Array): string {\n const lowerHex = Array.from(addressBytes)\n .map((b) => b.toString(16).padStart(2, \"0\"))\n .join(\"\");\n const hashHex = Array.from(keccak_256(new TextEncoder().encode(lowerHex)))\n .map((b) => b.toString(16).padStart(2, \"0\"))\n .join(\"\");\n let out = \"0x\";\n for (let i = 0; i < lowerHex.length; i++) {\n const c = lowerHex[i];\n out += parseInt(hashHex[i], 16) >= 8 ? c.toUpperCase() : c;\n }\n return out;\n}\n\n/**\n * Derive a native QoreChain account (Cosmos-style secp256k1) from a mnemonic.\n *\n * Path: `m/44'/118'/0'/0/{accountIndex}`. The address is the bech32 (`qor`)\n * encoding of `ripemd160(sha256(compressedPublicKey))`.\n *\n * @returns The account including its 32-byte secp256k1 private key.\n */\nexport async function deriveNativeAccount(\n mnemonic: string,\n opts?: DerivationOptions,\n): Promise<Secp256k1Account> {\n const index = addressIndex(opts);\n const { privateKey, publicKey } = await deriveSecp256k1(\n mnemonic,\n COIN_TYPE_NATIVE,\n index,\n );\n const digest = ripemd160(sha256(publicKey)); // 20 bytes\n const address = bytesToBech32(digest, NATIVE_PREFIX);\n return { type: \"native\", address, publicKey, privateKey };\n}\n\n/**\n * Derive an EVM account from a mnemonic.\n *\n * Path: `m/44'/60'/0'/0/{accountIndex}`. The address is the last 20 bytes of\n * `keccak256(uncompressedPublicKey[1:])`, EIP-55 checksummed.\n *\n * @returns The account including its 32-byte secp256k1 private key.\n */\nexport async function deriveEvmAccount(\n mnemonic: string,\n opts?: DerivationOptions,\n): Promise<Secp256k1Account> {\n const index = addressIndex(opts);\n const { privateKey, publicKey } = await deriveSecp256k1(\n mnemonic,\n COIN_TYPE_EVM,\n index,\n );\n // EVM addresses are computed from the 64-byte uncompressed public key body\n // (drop the 0x04 prefix byte). Decompress the already-derived compressed key\n // rather than touching the private key again.\n const uncompressed = secp256k1.ProjectivePoint.fromHex(publicKey).toRawBytes(\n false,\n ); // 65 bytes\n const hash = keccak_256(uncompressed.slice(1)); // 32 bytes\n const addressBytes = hash.slice(-20); // last 20 bytes\n const address = toEip55Checksum(addressBytes);\n return { type: \"evm\", address, publicKey, privateKey };\n}\n\n/**\n * Derive an SVM (Solana-style ed25519) account from a mnemonic.\n *\n * Path: `m/44'/501'/{accountIndex}'/0'` — the conventional Solana derivation,\n * all segments hardened (SLIP-0010 for ed25519 supports hardened keys only).\n * The address is the base58 encoding of the 32-byte ed25519 public key.\n *\n * @returns The account including its 64-byte Solana-style secret key\n * (`privateSeed32 || publicKey32`).\n */\nexport async function deriveSvmAccount(\n mnemonic: string,\n opts?: DerivationOptions,\n): Promise<Ed25519Account> {\n const index = addressIndex(opts);\n const seed = await seedFromMnemonic(mnemonic);\n const node = Slip10HDKey.fromMasterSeed(seed).derive(\n `m/44'/${COIN_TYPE_SVM}'/${index}'/0'`,\n );\n const publicKey = node.publicKeyRaw; // bare 32-byte ed25519 public key\n // Solana secret keys are 64 bytes: the 32-byte private seed followed by the\n // 32-byte public key (the format Keypair.fromSecretKey expects).\n const secretKey = new Uint8Array(64);\n secretKey.set(node.privateKey, 0);\n secretKey.set(publicKey, 32);\n const address = base58.encode(publicKey);\n return { type: \"svm\", address, publicKey, secretKey };\n}\n","/**\n * PQC algorithm identifiers, mirroring the chain's `x/pqc` cryptographic-agility\n * framework (core `x/pqc/types/algorithm.go`).\n *\n * These numeric IDs are the on-the-wire values the chain expects in\n * `MsgRegisterPQCKeyV2.algorithm_id` and in the `PQCHybridSignature` TX\n * extension's `algorithm_id` field, so they MUST stay in sync with the core enum.\n */\n\n/**\n * Identifies a PQC algorithm. Numeric to match the chain's `uint32 AlgorithmID`.\n * IDs 1–2 are the initial algorithms; 3–255 are reserved for future\n * governance-approved algorithms.\n */\nexport type AlgorithmID = number;\n\n/** Unset / invalid algorithm (core: `AlgorithmUnspecified`). */\nexport const AlgorithmUnspecified: AlgorithmID = 0;\n/** Dilithium-5 = ML-DSA-87, NIST FIPS 204 signatures (core: `AlgorithmDilithium5`). */\nexport const AlgorithmDilithium5: AlgorithmID = 1;\n/** ML-KEM-1024, NIST FIPS 203 key encapsulation (core: `AlgorithmMLKEM1024`). */\nexport const AlgorithmMLKEM1024: AlgorithmID = 2;\n\n/** Human-readable name for an algorithm ID (matches core `AlgorithmID.String()`). */\nexport function algorithmName(id: AlgorithmID): string {\n switch (id) {\n case AlgorithmUnspecified:\n return \"unspecified\";\n case AlgorithmDilithium5:\n return \"dilithium5\";\n case AlgorithmMLKEM1024:\n return \"mlkem1024\";\n default:\n return `algorithm_${id}`;\n }\n}\n\n/** True if the algorithm is a digital-signature scheme (core `IsSignature`). */\nexport function isSignatureAlgorithm(id: AlgorithmID): boolean {\n return id === AlgorithmDilithium5;\n}\n","/**\n * Post-quantum (PQC) signing for QoreChain, using ML-DSA-87 (Dilithium-5,\n * NIST FIPS 204) for digital signatures.\n *\n * QoreChain treats PQC as a first-class signature scheme via a hybrid\n * architecture (see the core `PQC_INTEGRATION.md`): a transaction carries the\n * usual classical (secp256k1 / ed25519) signature PLUS an ML-DSA-87 signature\n * attached as a `PQCHybridSignature` TX extension. The chain's ante handler\n * verifies both, so quantum-safe wallets stay compatible with classical\n * verification.\n *\n * Scope: this module provides the signing PRIMITIVES (keygen / sign / verify),\n * a pluggable {@link Signer} for the `pqc` and `hybrid` postures, and a builder\n * for the on-chain hybrid-signature extension OBJECT. It deliberately does NOT\n * assemble or broadcast transactions — the tx-builder attaches the extension\n * the {@link buildHybridSignatureExtension} result describes.\n *\n * Crypto is delegated entirely to the audited, pure-TS `@noble/post-quantum`\n * (`ml_dsa87`). No primitives are reimplemented here.\n */\n\nimport { ml_dsa87 } from \"@noble/post-quantum/ml-dsa.js\";\nimport { randomBytes } from \"@noble/hashes/utils\";\nimport {\n AlgorithmDilithium5,\n isSignatureAlgorithm,\n algorithmName,\n type AlgorithmID,\n} from \"./pqc-algorithm\";\nimport type { Signer, SignOutput, PqcSignaturePart } from \"./signer\";\n\nexport {\n AlgorithmUnspecified,\n AlgorithmDilithium5,\n AlgorithmMLKEM1024,\n algorithmName,\n isSignatureAlgorithm,\n type AlgorithmID,\n} from \"./pqc-algorithm\";\nexport type {\n Signer,\n SignOutput,\n SignatureMode,\n PqcSignaturePart,\n} from \"./signer\";\n\n/**\n * ML-DSA-87 (Dilithium-5) byte lengths.\n *\n * These are fixed by NIST FIPS 204 and match the chain's `x/pqc` constants\n * exactly. The installed `@noble/post-quantum` `ml_dsa87` does not expose these\n * as runtime properties, so we encode the standard's values directly; the test\n * suite asserts that the library actually produces keys/signatures of these\n * lengths, guarding against any future library drift.\n */\n/** ML-DSA-87 public-key length, in bytes (FIPS 204 / core: 2592). */\nexport const ML_DSA_87_PUBLIC_KEY_LENGTH = 2592;\n/** ML-DSA-87 secret-key length, in bytes (FIPS 204 / core: 4896). */\nexport const ML_DSA_87_SECRET_KEY_LENGTH = 4896;\n/** ML-DSA-87 signature length, in bytes (FIPS 204 / core: 4627). */\nexport const ML_DSA_87_SIGNATURE_LENGTH = 4627;\n\n/** Length, in bytes, of the deterministic-keygen seed (xi) per FIPS 204. */\nexport const ML_DSA_87_SEED_LENGTH = 32;\n\n/**\n * The TX-extension type URL for the on-chain `PQCHybridSignature` message\n * (core: `HybridSigTypeURL`). The tx-builder uses this as the extension's\n * type URL when packing the object from {@link buildHybridSignatureExtension}.\n */\nexport const HYBRID_SIG_TYPE_URL = \"/qorechain.pqc.v1.PQCHybridSignature\";\n\n/** An ML-DSA-87 (Dilithium-5) keypair. Treat `secretKey` as a secret. */\nexport interface PqcKeypair {\n /** 2592-byte ML-DSA-87 public key. */\n publicKey: Uint8Array;\n /** 4896-byte ML-DSA-87 secret key. Handle as a secret; never logged. */\n secretKey: Uint8Array;\n}\n\n/**\n * Generate an ML-DSA-87 (Dilithium-5) keypair.\n *\n * @param seed Optional 32-byte seed for deterministic keygen (e.g. derived from\n * a wallet). When omitted, a cryptographically random keypair is produced.\n * Must be exactly {@link ML_DSA_87_SEED_LENGTH} bytes if provided.\n */\nexport function generatePqcKeypair(seed?: Uint8Array): PqcKeypair {\n if (seed !== undefined && seed.length !== ML_DSA_87_SEED_LENGTH) {\n throw new Error(\n `ML-DSA-87 seed must be ${ML_DSA_87_SEED_LENGTH} bytes, got ${seed.length}`,\n );\n }\n // When no seed is supplied, draw a fresh random 32-byte seed so keygen always\n // receives one explicitly (a random seed yields a random keypair).\n const xi = seed ?? randomBytes(ML_DSA_87_SEED_LENGTH);\n const kp = ml_dsa87.keygen(xi);\n return { publicKey: kp.publicKey, secretKey: kp.secretKey };\n}\n\n/** Sign a message with an ML-DSA-87 (Dilithium-5) secret key. */\nexport function pqcSign(secretKey: Uint8Array, message: Uint8Array): Uint8Array {\n return ml_dsa87.sign(secretKey, message);\n}\n\n/** Verify an ML-DSA-87 (Dilithium-5) signature over a message. */\nexport function pqcVerify(\n publicKey: Uint8Array,\n message: Uint8Array,\n signature: Uint8Array,\n): boolean {\n return ml_dsa87.verify(publicKey, message, signature);\n}\n\n/**\n * The on-chain `PQCHybridSignature` TX extension, as a plain object whose keys\n * mirror the core struct's JSON field tags EXACTLY\n * (`x/pqc/types/hybrid.go`):\n *\n * ```go\n * type PQCHybridSignature struct {\n * AlgorithmID AlgorithmID `json:\"algorithm_id\"`\n * PQCSignature []byte `json:\"pqc_signature\"`\n * PQCPublicKey []byte `json:\"pqc_public_key,omitempty\"`\n * }\n * ```\n *\n * The tx-builder is responsible for encoding this and attaching it under\n * {@link HYBRID_SIG_TYPE_URL}.\n */\nexport interface PQCHybridSignature {\n /** PQC algorithm ID (core `AlgorithmID`). */\n algorithm_id: AlgorithmID;\n /** Raw PQC signature bytes. */\n pqc_signature: Uint8Array;\n /** Optional PQC public key for auto-registration on first use. */\n pqc_public_key?: Uint8Array;\n}\n\n/**\n * Build the on-chain `PQCHybridSignature` extension object from a signature.\n *\n * Validation mirrors the core `PQCHybridSignature.Validate()`: the algorithm\n * must be a signature scheme, the signature must be non-empty, and for\n * Dilithium-5 the signature/public-key lengths are enforced.\n *\n * `pqc_public_key` is omitted entirely when no public key is supplied, matching\n * the `omitempty` JSON tag on the core struct.\n */\nexport function buildHybridSignatureExtension(args: {\n algorithmId: AlgorithmID;\n signature: Uint8Array;\n publicKey?: Uint8Array;\n}): PQCHybridSignature {\n const { algorithmId, signature, publicKey } = args;\n\n if (!isSignatureAlgorithm(algorithmId)) {\n throw new Error(\n `algorithm ${algorithmName(algorithmId)} is not a PQC signature algorithm`,\n );\n }\n if (signature.length === 0) {\n throw new Error(\"PQC signature cannot be empty\");\n }\n if (algorithmId === AlgorithmDilithium5) {\n if (signature.length !== ML_DSA_87_SIGNATURE_LENGTH) {\n throw new Error(\n `dilithium5 signature must be ${ML_DSA_87_SIGNATURE_LENGTH} bytes, got ${signature.length}`,\n );\n }\n if (publicKey !== undefined && publicKey.length !== ML_DSA_87_PUBLIC_KEY_LENGTH) {\n throw new Error(\n `dilithium5 public key must be ${ML_DSA_87_PUBLIC_KEY_LENGTH} bytes, got ${publicKey.length}`,\n );\n }\n }\n\n const ext: PQCHybridSignature = {\n algorithm_id: algorithmId,\n pqc_signature: signature,\n };\n if (publicKey !== undefined) {\n ext.pqc_public_key = publicKey;\n }\n return ext;\n}\n\n/**\n * A pqc-only {@link Signer}: produces an ML-DSA-87 (Dilithium-5) signature and\n * no classical signature. Corresponds to the chain's `pqc_only` key type.\n */\nexport class PqcSigner implements Signer {\n readonly mode = \"pqc\" as const;\n private readonly keypair: PqcKeypair;\n private readonly algorithmId: AlgorithmID;\n\n constructor(keypair: PqcKeypair, algorithmId: AlgorithmID = AlgorithmDilithium5) {\n this.keypair = keypair;\n this.algorithmId = algorithmId;\n }\n\n /** The PQC public key (the signing identity in pqc-only mode). */\n publicKey(): Uint8Array {\n return this.keypair.publicKey;\n }\n\n async sign(message: Uint8Array): Promise<SignOutput> {\n const part: PqcSignaturePart = {\n algorithmId: this.algorithmId,\n signature: pqcSign(this.keypair.secretKey, message),\n publicKey: this.keypair.publicKey,\n };\n return { pqc: part };\n }\n}\n\n/**\n * A hybrid {@link Signer}: wraps a classical signer and an ML-DSA-87 keypair,\n * producing BOTH a classical signature and a PQC signature over the same\n * message. Corresponds to the chain's `hybrid` key type.\n *\n * The account identity is the wrapped classical signer's public key, so a\n * hybrid account is indistinguishable from a classical one to wallets that do\n * not understand the PQC extension.\n */\nexport class HybridSigner implements Signer {\n readonly mode = \"hybrid\" as const;\n private readonly classical: Signer;\n private readonly keypair: PqcKeypair;\n private readonly algorithmId: AlgorithmID;\n\n /**\n * @param classical The wrapped classical signer. Must be a `classical`-mode\n * signer; its `classicalSignature` output is passed through unchanged.\n * @param keypair The ML-DSA-87 keypair used for the PQC half.\n * @throws if `classical` is not a `classical`-mode signer.\n */\n constructor(\n classical: Signer,\n keypair: PqcKeypair,\n algorithmId: AlgorithmID = AlgorithmDilithium5,\n ) {\n if (classical.mode !== \"classical\") {\n throw new Error(\"HybridSigner requires a classical-mode signer\");\n }\n this.classical = classical;\n this.keypair = keypair;\n this.algorithmId = algorithmId;\n }\n\n /** The classical public key — the on-chain account identity. */\n publicKey(): Uint8Array {\n return this.classical.publicKey();\n }\n\n async sign(message: Uint8Array): Promise<SignOutput> {\n const classicalOut = await this.classical.sign(message);\n if (classicalOut.classicalSignature === undefined) {\n throw new Error(\n \"wrapped classical signer did not produce a classical signature\",\n );\n }\n const part: PqcSignaturePart = {\n algorithmId: this.algorithmId,\n signature: pqcSign(this.keypair.secretKey, message),\n publicKey: this.keypair.publicKey,\n };\n return { classicalSignature: classicalOut.classicalSignature, pqc: part };\n }\n}\n","/**\n * Adapter from a native QoreChain secp256k1 key to a cosmjs signer.\n *\n * The accounts module (`deriveNativeAccount`, Task 13) yields a raw 32-byte\n * secp256k1 private key. The transaction layer signs through cosmjs's\n * `SigningStargateClient`, which expects an `OfflineDirectSigner`. This module\n * bridges the two via `@cosmjs/proto-signing`'s `DirectSecp256k1Wallet`, binding\n * the key to the network's bech32 account prefix (`qor`).\n *\n * The signer performs SIGN_MODE_DIRECT (protobuf) signing — the native chain's\n * default — so the produced address and signatures match what the node's ante\n * handler verifies for a classical secp256k1 account.\n */\n\nimport {\n DirectSecp256k1Wallet,\n type OfflineDirectSigner,\n} from \"@cosmjs/proto-signing\";\n\n/**\n * Adapt a raw secp256k1 private key into a cosmjs {@link OfflineDirectSigner}.\n *\n * @param privateKey - Raw 32-byte secp256k1 private key (e.g. the `privateKey`\n * field of a {@link Secp256k1Account} from `deriveNativeAccount`).\n * @param prefix - Bech32 account prefix for the network (QoreChain: `\"qor\"`).\n * @returns A direct (protobuf) offline signer whose single account address is\n * the bech32 encoding of the key under `prefix`.\n */\nexport async function directSignerFromPrivateKey(\n privateKey: Uint8Array,\n prefix: string,\n): Promise<OfflineDirectSigner> {\n if (privateKey.length !== 32) {\n throw new Error(\n `secp256k1 private key must be 32 bytes, got ${privateKey.length}`,\n );\n }\n return DirectSecp256k1Wallet.fromKey(privateKey, prefix);\n}\n","/**\n * Encoding and attachment of the QoreChain PQC hybrid-signature extension to a\n * native tx.\n *\n * ──────────────────────────────────────────────────────────────────────────\n * The wallet ↔ chain contract (now known and enforced)\n * ──────────────────────────────────────────────────────────────────────────\n * These are low-level encode/attach primitives. The full, contract-correct\n * hybrid build sequence lives in {@link ../tx/hybrid-tx} ({@link buildHybridTx}\n * / {@link signAndBroadcastHybrid}) — prefer those for end-to-end signing. This\n * module documents the on-wire encoding the chain reads:\n *\n * - `PQCHybridSignature` struct, JSON field tags (`algorithm_id`,\n * `pqc_signature`, `pqc_public_key,omitempty`), and type URL\n * `/qorechain.pqc.v1.PQCHybridSignature`.\n * - The ante handler extracts the extension by type URL and JSON-decodes it, so\n * the `Any.value` carries the struct's Go-JSON encoding (Go marshals\n * `[]byte` as standard padded base64 strings), NOT a protobuf message. This\n * module encodes accordingly (see {@link toGoJson}).\n * - PLACEMENT: the extension is a CRITICAL extension option — it goes in\n * `TxBody.extension_options`. {@link buildHybridTx} always uses this slot.\n * This module additionally exposes `non_critical_extension_options` via\n * {@link AttachHybridOptions.placement} for callers with other needs, but the\n * chain reads the critical slot.\n * - SIGNED BYTES: the ML-DSA-87 signature is computed over the tx body WITH the\n * PQC extension REMOVED, framed with the authInfo bytes:\n * `BE32(len(B0)) || B0 || BE32(len(A)) || A` (see {@link buildHybridTx} for\n * the full contract). This module does not decide what the PQC signature\n * signs — {@link buildHybridTx} does.\n *\n * Cross-implementation proto byte-determinism (cosmjs encode vs. the chain's\n * re-marshal) is confirmed on the live testnet for the default registry message\n * types.\n */\n\nimport { Any } from \"cosmjs-types/google/protobuf/any\";\nimport { TxBody } from \"cosmjs-types/cosmos/tx/v1beta1/tx\";\nimport {\n HYBRID_SIG_TYPE_URL,\n type PQCHybridSignature,\n} from \"../accounts/pqc\";\n\n/** Where the hybrid-signature extension is placed within the `TxBody`. */\nexport type HybridPlacement =\n | \"non_critical_extension_options\"\n | \"extension_options\";\n\n/** Options for {@link attachHybridExtension}. */\nexport interface AttachHybridOptions {\n /**\n * Which `TxBody` extension list to attach the extension to. Defaults to\n * `\"non_critical_extension_options\"`. See the module header: the exact slot\n * the ante handler reads is not determinable from public core and needs\n * live-testnet verification.\n */\n placement?: HybridPlacement;\n}\n\n/**\n * Serialize a {@link PQCHybridSignature} the way Go's `encoding/json` would\n * marshal the core struct, so the node's JSON-decoding ante handler can read it.\n *\n * Go marshals `[]byte` fields as standard (padded) base64 strings, and omits\n * `pqc_public_key` entirely when empty (`omitempty`). The numeric `algorithm_id`\n * is emitted as a JSON number.\n */\nfunction toGoJson(ext: PQCHybridSignature): string {\n const obj: {\n algorithm_id: number;\n pqc_signature: string;\n pqc_public_key?: string;\n } = {\n algorithm_id: ext.algorithm_id,\n pqc_signature: base64(ext.pqc_signature),\n };\n if (ext.pqc_public_key !== undefined && ext.pqc_public_key.length > 0) {\n obj.pqc_public_key = base64(ext.pqc_public_key);\n }\n return JSON.stringify(obj);\n}\n\n/** Standard base64 (padded) encoding of bytes, matching Go's `[]byte` marshal. */\nfunction base64(bytes: Uint8Array): string {\n let binary = \"\";\n for (const b of bytes) binary += String.fromCharCode(b);\n // btoa is available in Node 16+ and all SDK target runtimes.\n return btoa(binary);\n}\n\n/**\n * Encode a {@link PQCHybridSignature} into a protobuf `Any` for use as a\n * `TxBody` extension option.\n *\n * The `Any.typeUrl` is the core {@link HYBRID_SIG_TYPE_URL}; the `Any.value` is\n * the UTF-8 bytes of the struct's Go-JSON encoding (see {@link toGoJson} and the\n * module header — the chain reads this extension by type URL + JSON decoding,\n * not protobuf).\n */\nexport function encodeHybridExtension(ext: PQCHybridSignature): Any {\n const value = new TextEncoder().encode(toGoJson(ext));\n return Any.fromPartial({ typeUrl: HYBRID_SIG_TYPE_URL, value });\n}\n\n/**\n * Return a copy of `body` with the encoded hybrid-signature extension attached.\n *\n * The input `body` is not mutated. By default the extension is added to\n * `non_critical_extension_options`; pass `placement` to use `extension_options`\n * instead.\n *\n * @see The module header — both the placement and the bytes the PQC signature\n * must cover require live-testnet verification against the `full` build.\n */\nexport function attachHybridExtension(\n body: TxBody,\n ext: PQCHybridSignature,\n opts: AttachHybridOptions = {},\n): TxBody {\n const anyExt = encodeHybridExtension(ext);\n const placement = opts.placement ?? \"non_critical_extension_options\";\n const next = TxBody.fromPartial({\n messages: body.messages,\n memo: body.memo,\n timeoutHeight: body.timeoutHeight,\n extensionOptions: [...body.extensionOptions],\n nonCriticalExtensionOptions: [...body.nonCriticalExtensionOptions],\n });\n if (placement === \"extension_options\") {\n next.extensionOptions.push(anyExt);\n } else {\n next.nonCriticalExtensionOptions.push(anyExt);\n }\n return next;\n}\n","/**\n * End-to-end hybrid (classical + post-quantum) transaction signing for\n * QoreChain.\n *\n * A hybrid transaction carries the usual classical secp256k1 signature in\n * `TxRaw.signatures` PLUS an ML-DSA-87 (Dilithium-5) signature attached to the\n * `TxBody` as a `PQCHybridSignature` extension. The chain's ante handler\n * verifies BOTH, so a hybrid account stays interoperable with classical\n * verification while gaining quantum safety.\n *\n * ──────────────────────────────────────────────────────────────────────────\n * The wallet ↔ chain contract (enforced by the chain)\n * ──────────────────────────────────────────────────────────────────────────\n * The chain verifies the ML-DSA-87 signature over the tx body WITH the PQC\n * extension REMOVED. Concretely:\n *\n * - `B0` = canonical protobuf bytes of the `TxBody` containing the\n * messages/memo/timeoutHeight but NOT the `PQCHybridSignature` extension.\n * - `A` = the tx `authInfoBytes`, verbatim — the same bytes that are\n * broadcast.\n * - PQC signed message = `BE32(len(B0)) || B0 || BE32(len(A)) || A`\n * (4-byte big-endian length prefixes; NO hashing, NO domain prefix).\n * - PQC signature = `ml_dsa87.sign(pqcSecretKey, message)` (pure\n * ML-DSA-87, empty context) — 4627 bytes for Dilithium-5.\n * - The `PQCHybridSignature` extension is then added to\n * `TxBody.extension_options` (CRITICAL extension options) as an `Any` with\n * `type_url = \"/qorechain.pqc.v1.PQCHybridSignature\"` and `value` = UTF-8\n * bytes of the Go-JSON `{ \"algorithm_id\", \"pqc_signature\", \"pqc_public_key\"? }`\n * (standard padded base64; `pqc_public_key` omitted when not provided).\n * - The CLASSICAL signature is computed normally (SIGN_MODE_DIRECT) over the\n * FINAL body (the one WITH the PQC extension) + authInfo + chainId +\n * accountNumber, and goes in `TxRaw.signatures` (outside the body). There is\n * no self-reference: the classical signature never signs itself.\n *\n * The signer's PQC key must be registered on-chain (via `MsgRegisterPQCKey`)\n * before hybrid txs PQC-verify — unless `includePqcPublicKey` is set, which\n * embeds the key for auto-registration on first use. Registering the key is the\n * caller's responsibility.\n *\n * Determinism note: the framing above is byte-for-byte deterministic on the\n * wallet side. Cross-implementation determinism (this `cosmjs`/`cosmjs-types`\n * proto encoding vs. the chain's re-marshal of the same `TxBody`) is confirmed\n * against the live testnet; if a custom message type with non-canonical field\n * ordering were used, callers must ensure their `Registry` encodes canonically.\n */\n\nimport type { OfflineDirectSigner, Registry } from \"@cosmjs/proto-signing\";\nimport {\n encodePubkey,\n makeAuthInfoBytes,\n} from \"@cosmjs/proto-signing\";\nimport { encodeSecp256k1Pubkey } from \"@cosmjs/amino\";\nimport { SignMode } from \"cosmjs-types/cosmos/tx/signing/v1beta1/signing\";\nimport {\n TxBody,\n TxRaw,\n SignDoc,\n} from \"cosmjs-types/cosmos/tx/v1beta1/tx\";\nimport type { EncodeObject } from \"@cosmjs/proto-signing\";\n\nimport {\n pqcSign,\n buildHybridSignatureExtension,\n AlgorithmDilithium5,\n type PqcKeypair,\n} from \"../accounts/pqc\";\nimport { encodeHybridExtension } from \"./hybrid\";\nimport type { StdFee } from \"./fees\";\nimport type { BroadcastMode, BroadcastResult } from \"./broadcast\";\n\n/** The fields shared by {@link buildHybridTx} and {@link signAndBroadcastHybrid}. */\nexport interface BuildHybridTxOptions {\n /**\n * The protobuf message {@link Registry} used to encode the messages into the\n * `TxBody`. Use cosmjs's `defaultRegistryTypes` (plus any custom QoreChain\n * message types) — the same registry the network's `TxClient` is built with.\n */\n registry: Registry;\n /**\n * The classical secp256k1 direct signer (e.g. from\n * `directSignerFromPrivateKey`). Its first account is used as the signer\n * identity and to produce the SIGN_MODE_DIRECT classical signature.\n */\n signer: OfflineDirectSigner;\n /** The ML-DSA-87 (Dilithium-5) keypair providing the post-quantum half. */\n pqcKeypair: PqcKeypair;\n /** The transaction messages, as `{ typeUrl, value }` encode objects. */\n messages: readonly EncodeObject[];\n /** The fee to pay. */\n fee: StdFee;\n /** Optional memo. Defaults to `\"\"`. */\n memo?: string;\n /** The chain id (e.g. `\"qorechain-diana\"`). */\n chainId: string;\n /** The on-chain account number of the signer. */\n accountNumber: number | bigint;\n /** The signer's current account sequence (nonce). */\n sequence: number | bigint;\n /** Optional `timeoutHeight` for the tx body. */\n timeoutHeight?: bigint;\n /**\n * When `true`, embed the 2592-byte ML-DSA-87 public key in the extension so\n * the chain can auto-register it on first use. Defaults to `false` (the key\n * is expected to already be registered via `MsgRegisterPQCKey`).\n */\n includePqcPublicKey?: boolean;\n}\n\n/** The fully assembled hybrid transaction and the intermediate artifacts. */\nexport interface BuiltHybridTx {\n /** The assembled `TxRaw` (final body + authInfo + classical signature). */\n txRaw: TxRaw;\n /** Encoded `TxRaw` bytes, ready to broadcast. */\n txRawBytes: Uint8Array;\n /** The `authInfoBytes` (`A`) — identical in the PQC framing and the SignDoc. */\n authInfoBytes: Uint8Array;\n /** The exact bytes the ML-DSA-87 signature was computed over (the framing). */\n pqcSignedMessage: Uint8Array;\n /** The raw ML-DSA-87 signature (Dilithium-5: 4627 bytes). */\n pqcSignature: Uint8Array;\n}\n\n/** A big-endian 4-byte length prefix, matching the chain contract framing. */\nfunction be32(n: number): Uint8Array {\n const b = new Uint8Array(4);\n b[0] = (n >>> 24) & 0xff;\n b[1] = (n >>> 16) & 0xff;\n b[2] = (n >>> 8) & 0xff;\n b[3] = n & 0xff;\n return b;\n}\n\n/** Decode a standard base64 string to bytes (no extra deps; atob is universal). */\nfunction fromBase64(b64: string): Uint8Array {\n const binary = atob(b64);\n const out = new Uint8Array(binary.length);\n for (let i = 0; i < binary.length; i++) out[i] = binary.charCodeAt(i);\n return out;\n}\n\n/** Concatenate byte arrays. */\nfunction concatBytes(...parts: Uint8Array[]): Uint8Array {\n let total = 0;\n for (const p of parts) total += p.length;\n const out = new Uint8Array(total);\n let off = 0;\n for (const p of parts) {\n out.set(p, off);\n off += p.length;\n }\n return out;\n}\n\n/**\n * Build a fully signed hybrid transaction following the chain contract.\n *\n * The build sequence (see the module header for the exact contract):\n * 1. Encode `B0` — the `TxBody` WITHOUT the PQC extension.\n * 2. Encode `A` — the single-signer `AuthInfo` (SIGN_MODE_DIRECT).\n * 3. Compute `message = BE32(len B0) || B0 || BE32(len A) || A`; ML-DSA-87\n * sign it.\n * 4. Build the PQC extension `Any` and attach it to a NEW body identical to\n * step 1 but with `extensionOptions = [ext]`; encode → final body bytes.\n * 5. SIGN_MODE_DIRECT classical sign over `SignDoc{ finalBody, A, chainId,\n * accountNumber }`.\n * 6. Assemble `TxRaw{ finalBody, A, [classicalSig] }`.\n *\n * The returned {@link BuiltHybridTx} exposes the intermediate artifacts so the\n * contract can be asserted/audited.\n */\nexport async function buildHybridTx(\n opts: BuildHybridTxOptions,\n): Promise<BuiltHybridTx> {\n const {\n registry,\n signer,\n pqcKeypair,\n messages,\n fee,\n chainId,\n accountNumber,\n sequence,\n } = opts;\n const memo = opts.memo ?? \"\";\n const timeoutHeight = opts.timeoutHeight ?? 0n;\n\n const accounts = await signer.getAccounts();\n if (accounts.length === 0) {\n throw new Error(\"signer exposes no accounts\");\n }\n const account = accounts[0];\n\n // 1. B0 — body WITHOUT the PQC extension. Encode the messages via the registry.\n const encodedMessages = messages.map((m) => registry.encodeAsAny(m));\n const baseBody = TxBody.fromPartial({\n messages: encodedMessages,\n memo,\n timeoutHeight,\n });\n const b0 = TxBody.encode(baseBody).finish();\n\n // 2. A — single-signer AuthInfo (SIGN_MODE_DIRECT). The signer's classical\n // secp256k1 pubkey identifies the account.\n const pubkeyAny = encodePubkey(encodeSecp256k1Pubkey(account.pubkey));\n const gasLimit = Number(fee.gas);\n const authInfoBytes = makeAuthInfoBytes(\n [{ pubkey: pubkeyAny, sequence: BigInt(sequence) }],\n fee.amount,\n gasLimit,\n fee.granter,\n fee.payer,\n SignMode.SIGN_MODE_DIRECT,\n );\n\n // 3. PQC framing + ML-DSA-87 signature over B0 + A (NOT the final body).\n const pqcSignedMessage = concatBytes(\n be32(b0.length),\n b0,\n be32(authInfoBytes.length),\n authInfoBytes,\n );\n const pqcSignature = pqcSign(pqcKeypair.secretKey, pqcSignedMessage);\n\n // 4. Build the PQC extension Any and attach it to the FINAL body as a\n // CRITICAL extension option.\n const ext = buildHybridSignatureExtension({\n algorithmId: AlgorithmDilithium5,\n signature: pqcSignature,\n publicKey: opts.includePqcPublicKey ? pqcKeypair.publicKey : undefined,\n });\n const extAny = encodeHybridExtension(ext);\n const finalBody = TxBody.fromPartial({\n messages: encodedMessages,\n memo,\n timeoutHeight,\n extensionOptions: [extAny],\n });\n const bodyBytesFinal = TxBody.encode(finalBody).finish();\n\n // 5. Classical SIGN_MODE_DIRECT signature over the FINAL body + A.\n const signDoc = SignDoc.fromPartial({\n bodyBytes: bodyBytesFinal,\n authInfoBytes,\n chainId,\n accountNumber: BigInt(accountNumber),\n });\n const { signature } = await signer.signDirect(account.address, signDoc);\n const classicalSig = fromBase64(signature.signature);\n\n // 6. Assemble TxRaw.\n const txRaw = TxRaw.fromPartial({\n bodyBytes: bodyBytesFinal,\n authInfoBytes,\n signatures: [classicalSig],\n });\n const txRawBytes = TxRaw.encode(txRaw).finish();\n\n return {\n txRaw,\n txRawBytes,\n authInfoBytes,\n pqcSignedMessage,\n pqcSignature,\n };\n}\n\n/**\n * A minimal broadcast transport for raw tx bytes. cosmjs's `StargateClient`\n * (and `SigningStargateClient`) satisfy this shape via `broadcastTx` /\n * `broadcastTxSync`, so production callers can pass an existing client; unit\n * tests can inject a fake.\n */\nexport interface HybridBroadcaster {\n /** Poll-to-commit broadcast: returns the delivery result. */\n broadcastTx(\n tx: Uint8Array,\n timeoutMs?: number,\n pollIntervalMs?: number,\n ): Promise<{\n code: number;\n transactionHash: string;\n height?: number;\n gasUsed?: bigint;\n gasWanted?: bigint;\n rawLog?: string;\n }>;\n /** Submit and return after CheckTx: returns the tx hash. */\n broadcastTxSync(tx: Uint8Array): Promise<string>;\n}\n\n/** Options for {@link signAndBroadcastHybrid}. */\nexport interface SignAndBroadcastHybridOptions extends BuildHybridTxOptions {\n /** The broadcast transport (e.g. a connected `StargateClient`). */\n transport: HybridBroadcaster;\n /** Broadcast mode. Defaults to `\"commit\"`. */\n mode?: BroadcastMode;\n}\n\n/**\n * Build, sign, and broadcast a hybrid transaction.\n *\n * Broadcast mode maps onto the transport:\n * - `commit` (default): polls until the tx lands in a block; throws on a\n * non-zero delivery code.\n * - `sync` / `async`: returns after mempool submission with just the tx hash.\n */\nexport async function signAndBroadcastHybrid(\n opts: SignAndBroadcastHybridOptions,\n): Promise<BroadcastResult> {\n const { transport } = opts;\n const mode: BroadcastMode = opts.mode ?? \"commit\";\n const built = await buildHybridTx(opts);\n\n if (mode === \"commit\") {\n const res = await transport.broadcastTx(built.txRawBytes);\n if (res.code !== 0) {\n throw new Error(\n `hybrid transaction failed with code ${res.code}: ${res.rawLog ?? \"(no log)\"} (hash ${res.transactionHash})`,\n );\n }\n return {\n transactionHash: res.transactionHash,\n code: res.code,\n height: res.height,\n gasUsed: res.gasUsed,\n gasWanted: res.gasWanted,\n rawLog: res.rawLog,\n };\n }\n\n const hash = await transport.broadcastTxSync(built.txRawBytes);\n return { transactionHash: hash, code: 0 };\n}\n","/**\n * `@qorechain/sdk` public API.\n *\n * The exports below are the deliberate, supported surface of the SDK. Start with\n * {@link createClient} for the high-level composed client; the individual\n * networks, accounts, query clients, and tx primitives are also exported for\n * callers who want to compose them directly. Internal helpers are not exported.\n */\n\n/** SDK version. */\nexport const VERSION = \"0.1.0\";\n\n// Top-level factory: the recommended entrypoint that resolves a network and\n// composes the read clients, fee helper, and a lazy signing entrypoint.\nexport { createClient } from \"./client\";\nexport type {\n QoreChainClient,\n CreateClientOptions,\n ConnectTxOptions,\n ClientFees,\n} from \"./client\";\n\n// Networks: presets, lookup/list helpers, and config types.\nexport * from \"./config/networks\";\n\n// Utilities: denom conversion and address encoding/validation.\nexport * from \"./utils/denom\";\nexport * from \"./utils/address\";\n\n// Accounts & keys. Re-export the documented derivation functions and types only.\n// The derive functions return key material deliberately (callers need it for\n// signing); nothing here leaks secrets implicitly.\nexport {\n generateMnemonic,\n validateMnemonic,\n deriveNativeAccount,\n deriveEvmAccount,\n deriveSvmAccount,\n} from \"./accounts/wallet\";\nexport type {\n KeyType,\n Account,\n DerivationOptions,\n Secp256k1Account,\n Ed25519Account,\n} from \"./accounts/types\";\n\n// Post-quantum (PQC) signing: ML-DSA-87 (Dilithium-5) primitives, the pluggable\n// Signer abstraction, and the on-chain hybrid-signature extension builder.\nexport {\n AlgorithmUnspecified,\n AlgorithmDilithium5,\n AlgorithmMLKEM1024,\n algorithmName,\n isSignatureAlgorithm,\n ML_DSA_87_PUBLIC_KEY_LENGTH,\n ML_DSA_87_SECRET_KEY_LENGTH,\n ML_DSA_87_SIGNATURE_LENGTH,\n ML_DSA_87_SEED_LENGTH,\n HYBRID_SIG_TYPE_URL,\n generatePqcKeypair,\n pqcSign,\n pqcVerify,\n buildHybridSignatureExtension,\n PqcSigner,\n HybridSigner,\n} from \"./accounts/pqc\";\nexport type {\n AlgorithmID,\n PqcKeypair,\n PQCHybridSignature,\n Signer,\n SignOutput,\n SignatureMode,\n PqcSignaturePart,\n} from \"./accounts/pqc\";\n\n// Read/query clients: shared HTTP transport, Cosmos+custom REST, the generic\n// JSON-RPC 2.0 client (with thin EVM helpers), and the typed `qor_` namespace.\nexport {\n getJson,\n postJsonRpc,\n buildUrl,\n joinUrl,\n QoreHttpError,\n} from \"./query/http\";\nexport type {\n FetchLike,\n QueryValue,\n HttpOptions,\n GetJsonOptions,\n} from \"./query/http\";\nexport { JsonRpcClient, JsonRpcError } from \"./query/jsonrpc\";\nexport type {\n JsonRpcClientOptions,\n JsonRpcResponse,\n JsonRpcErrorObject,\n} from \"./query/jsonrpc\";\nexport { RestClient } from \"./query/rest\";\nexport type {\n RestClientOptions,\n Coin,\n PageResponse,\n AllBalancesResponse,\n BalanceResponse,\n Pagination,\n PaginatedOptions,\n FeeUrgency,\n} from \"./query/rest\";\nexport { QorClient } from \"./query/qor\";\n\n// Cross-VM reads: typed REST wrappers over `x/crossvm`. EVM→native routing\n// itself runs on-chain via the cross-VM bridge precompile in `@qorechain/evm`;\n// these helpers (and `QorClient.getCrossVmMessage`) track message state.\nexport {\n getCrossVmMessage,\n getPendingCrossVmMessages,\n getCrossVmParams,\n} from \"./query/crossvm\";\nexport type {\n CrossVmMessage,\n CrossVmMessageResponse,\n PendingCrossVmMessagesResponse,\n CrossVmParamsResponse,\n} from \"./query/crossvm\";\n\n// CosmWasm: read/signing client constructors plus thin typed wrappers over\n// `@cosmjs/cosmwasm-stargate` (query/instantiate/execute/upload).\nexport {\n createCosmWasmClient,\n connectCosmWasmSigner,\n queryContractSmart,\n getContractInfo,\n instantiate,\n execute,\n uploadCode,\n} from \"./cosmwasm\";\nexport type {\n ContractMsg,\n FeeInput,\n CosmWasmReadClient,\n CosmWasmSigningClient,\n InstantiateOpts,\n} from \"./cosmwasm\";\n\n// Native transactions: fee estimation, the signer adapter, the tx builder /\n// broadcaster, the low-level PQC hybrid extension encode/attach helpers, and the\n// end-to-end hybrid (classical + PQC) signing/broadcast builder. See each module\n// for details.\nexport { estimateFee, STATIC_FALLBACK } from \"./tx/fees\";\nexport type { StdFee, EstimateFeeOptions } from \"./tx/fees\";\nexport { directSignerFromPrivateKey } from \"./tx/signer-adapter\";\nexport type { BroadcastMode, BroadcastResult } from \"./tx/broadcast\";\nexport { TxClient, MSG_SEND_TYPE_URL } from \"./tx/builder\";\nexport type {\n SigningClientLike,\n TxClientOptions,\n TxConnectOptions,\n SignAndBroadcastOptions,\n SimulateOptions,\n BankSendOptions,\n} from \"./tx/builder\";\nexport { encodeHybridExtension, attachHybridExtension } from \"./tx/hybrid\";\nexport type { HybridPlacement, AttachHybridOptions } from \"./tx/hybrid\";\nexport { buildHybridTx, signAndBroadcastHybrid } from \"./tx/hybrid-tx\";\nexport type {\n BuildHybridTxOptions,\n BuiltHybridTx,\n HybridBroadcaster,\n SignAndBroadcastHybridOptions,\n} from \"./tx/hybrid-tx\";\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/config/networks.ts","../src/query/http.ts","../src/query/rest.ts","../src/query/jsonrpc.ts","../src/query/qor.ts","../src/tx/fees.ts","../src/codegen/qorechain/amm/v1/tx.ts","../src/codegen/cosmos/base/v1beta1/coin.ts","../src/codegen/qorechain/bridge/v1/tx.ts","../src/codegen/qorechain/rdk/v1/tx.ts","../src/codegen/qorechain/multilayer/v1/tx.ts","../src/codegen/qorechain/pqc/v1/tx.ts","../src/codegen/qorechain/svm/v1/tx.ts","../src/codegen/qorechain/lightnode/v1/tx.ts","../src/codegen/qorechain/license/v1/tx.ts","../src/codegen/qorechain/abstractaccount/v1/tx.ts","../src/codegen/qorechain/crossvm/v1/tx.ts","../src/codegen/qorechain/rlconsensus/v1/tx.ts","../src/messages/registry.ts","../src/errors.ts","../src/tx/gas.ts","../src/tx/builder.ts","../src/cosmwasm/index.ts","../src/query/crossvm.ts","../src/client.ts","../src/explorer.ts","../src/faucet.ts","../src/utils/denom.ts","../src/utils/address.ts","../src/utils/units.ts","../src/utils/hash.ts","../src/utils/validation.ts","../src/accounts/wallet.ts","../src/accounts/pqc-algorithm.ts","../src/accounts/pqc.ts","../src/tx/signer-adapter.ts","../src/subscribe.ts","../src/search.ts","../src/track.ts","../src/tx/hybrid.ts","../src/tx/hybrid-tx.ts","../src/messages/cosmos.ts","../src/messages/qorechain.ts","../src/messages/index.ts","../src/codegen/index.ts","../src/codegen/qorechain/crossvm/v1/query.ts","../src/codegen/qorechain/lightnode/v1/query.ts","../src/codegen/qorechain/pqc/v1/query.ts","../src/codegen/qorechain/qca/v1/query.ts","../src/codegen/qorechain/reputation/v1/query.ts","../src/codegen/qorechain/rlconsensus/v1/query.ts","../src/codegen/qorechain/svm/v1/query.ts","../src/wallet/cosmos.ts","../src/query/grpc.ts","../src/index.ts"],"names":["BinaryWriter","BinaryReader","isSet","tx_exports","MsgDefinition","protobufPackage","bytesFromBase64","base64FromBytes","msg","crossvm","text","nobleSha256","nobleKeccak256","nobleRipemd160","encoder","bip39Generate","bip39Validate","HDKey","keccak_256","ripemd160","sha256","Slip10HDKey","base58","withRetry","attempt","delay","TxBody","MsgSend","composer","query_exports","QueryDefinition","QueryParamsRequest","QueryParamsResponse","createBaseQueryParamsRequest","createBaseQueryParamsResponse","QueryAccountRequest","QueryAccountResponse","createBaseQueryAccountRequest","createBaseQueryAccountResponse","bech32"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * Network presets for the QoreChain SDK.\n *\n * Both the `testnet` and `mainnet` presets are fully populated and live. Their\n * endpoints default to localhost ports so the SDK works out of the box against a\n * locally running node; callers override these with real hostnames when creating\n * a client. {@link getNetwork} returns either preset.\n */\n\n/** Bech32 human-readable prefixes used across QoreChain address types. */\nexport interface Bech32Prefixes {\n /** Prefix for account addresses (e.g. `qor1...`). */\n account: string;\n /** Prefix for validator operator addresses (e.g. `qorvaloper1...`). */\n validator: string;\n /** Prefix for validator consensus addresses (e.g. `qorvalcons1...`). */\n consensus: string;\n}\n\n/** Display and base denomination metadata for the network's staking coin. */\nexport interface CoinInfo {\n /** Human-facing denomination (e.g. `QOR`). */\n display: string;\n /** Base (smallest) denomination used on-chain (e.g. `uqor`). */\n base: string;\n /** Decimal exponent relating base to display (1 display = 10^exponent base). */\n exponent: number;\n}\n\n/** Service endpoints for talking to a network across its supported VMs. */\nexport interface NetworkEndpoints {\n /** Cosmos SDK REST (LCD) endpoint. */\n rest: string;\n /** Cosmos SDK gRPC endpoint. */\n grpc: string;\n /** Consensus RPC endpoint. */\n rpc: string;\n /** EVM JSON-RPC HTTP endpoint. */\n evmRpc: string;\n /** EVM JSON-RPC WebSocket endpoint. */\n evmWs: string;\n /** SVM JSON-RPC endpoint. */\n svmRpc: string;\n}\n\n/** A fully described network preset. */\nexport interface NetworkConfig {\n /** Canonical preset name. */\n name: string;\n /** Whether the network is live and usable without custom endpoints. */\n live: boolean;\n /** Chain ID. */\n chainId: string;\n /** Bech32 prefixes for address encoding. */\n bech32: Bech32Prefixes;\n /** Staking coin metadata. */\n coin: CoinInfo;\n /** Default endpoints. */\n endpoints: NetworkEndpoints;\n /**\n * Block-explorer base URL (no trailing slash), used by the `explorer*Url`\n * helpers. Left `undefined` by default for both presets — no public explorer\n * hostname is baked in; apps set this via a network override.\n */\n explorerUrl?: string;\n /**\n * Faucet base URL, used by `requestFaucet`. Left `undefined` by default for\n * both presets — no public faucet hostname is baked in; apps set this via a\n * network override.\n */\n faucetUrl?: string;\n}\n\n/** Known network preset names. */\nexport type NetworkName = \"testnet\" | \"mainnet\";\n\n/**\n * QoreChain uses the same token and address prefixes on every network, so these\n * are shared (not invented) values across the presets below.\n */\nconst BECH32: Bech32Prefixes = {\n account: \"qor\",\n validator: \"qorvaloper\",\n consensus: \"qorvalcons\",\n};\n\nconst COIN: CoinInfo = {\n display: \"QOR\",\n base: \"uqor\",\n exponent: 6,\n};\n\n/** The set of built-in network presets, keyed by name. */\nexport const NETWORKS: Record<NetworkName, NetworkConfig> = {\n testnet: {\n name: \"testnet\",\n live: true,\n chainId: \"qorechain-diana\",\n bech32: BECH32,\n coin: COIN,\n endpoints: {\n rest: \"http://localhost:1317\",\n grpc: \"http://localhost:9090\",\n rpc: \"http://localhost:26657\",\n evmRpc: \"http://localhost:8545\",\n evmWs: \"ws://localhost:8546\",\n svmRpc: \"http://localhost:8899\",\n },\n },\n mainnet: {\n name: \"mainnet\",\n live: true,\n chainId: \"qorechain-vladi\",\n bech32: BECH32,\n coin: COIN,\n endpoints: {\n rest: \"http://localhost:1317\",\n grpc: \"http://localhost:9090\",\n rpc: \"http://localhost:26657\",\n evmRpc: \"http://localhost:8545\",\n evmWs: \"ws://localhost:8546\",\n svmRpc: \"http://localhost:8899\",\n },\n },\n};\n\n/**\n * Resolve a network preset by name.\n *\n * @returns The requested {@link NetworkConfig}, guaranteed to be live and usable.\n */\nexport function getNetwork(name: NetworkName): NetworkConfig {\n return NETWORKS[name];\n}\n\n/** List the known network preset names without triggering any liveness check. */\nexport function listNetworks(): NetworkName[] {\n return Object.keys(NETWORKS) as NetworkName[];\n}\n","/**\n * Shared HTTP transport for the read/query clients.\n *\n * Provides two primitives — {@link getJson} for REST GETs and\n * {@link postJsonRpc} for JSON-RPC POSTs — both built on the global `fetch`.\n * `fetch` is injectable so tests can mock the network entirely; nothing here\n * ever performs a real request on its own.\n *\n * Failures surface as a typed {@link QoreHttpError} (non-2xx HTTP responses).\n * Transient transport failures (5xx and network errors) are retried with a\n * small fixed backoff up to a configurable count; 4xx responses are never\n * retried. Each attempt is bounded by an `AbortSignal`-driven timeout.\n */\n\n/** A `fetch`-compatible function. Defaults to `globalThis.fetch`. */\nexport type FetchLike = (\n input: string,\n init?: RequestInit,\n) => Promise<Response>;\n\n/** A JSON-serializable value usable as a query-string parameter. */\nexport type QueryValue = string | number | boolean | undefined | null;\n\n/** Options shared by all HTTP helpers. */\nexport interface HttpOptions {\n /** Injectable `fetch`. Defaults to `globalThis.fetch`. */\n fetch?: FetchLike;\n /** Per-attempt timeout in milliseconds. Defaults to 30000. `0` disables it. */\n timeoutMs?: number;\n /** Number of retries after the initial attempt for retryable errors. Defaults to 2. */\n retries?: number;\n /** Fixed delay between retries in milliseconds. Defaults to 250. */\n retryDelayMs?: number;\n /** Extra request headers, merged over the defaults. */\n headers?: Record<string, string>;\n}\n\n/** Options for {@link getJson}, adding query-string parameters. */\nexport interface GetJsonOptions extends HttpOptions {\n /** Query parameters; `undefined`/`null` values are omitted. */\n query?: Record<string, QueryValue>;\n}\n\nconst DEFAULT_TIMEOUT_MS = 30_000;\nconst DEFAULT_RETRIES = 2;\nconst DEFAULT_RETRY_DELAY_MS = 250;\n\n/** Thrown when an HTTP response has a non-2xx status. */\nexport class QoreHttpError extends Error {\n /** HTTP status code of the failing response. */\n readonly status: number;\n /** The URL that was requested. */\n readonly url: string;\n /** Raw response body text, when available. */\n readonly body?: string;\n\n constructor(status: number, url: string, body?: string) {\n super(`HTTP ${status} for ${url}`);\n this.name = \"QoreHttpError\";\n this.status = status;\n this.url = url;\n this.body = body;\n Object.setPrototypeOf(this, QoreHttpError.prototype);\n }\n}\n\nfunction resolveFetch(opts?: HttpOptions): FetchLike {\n const f = opts?.fetch ?? (globalThis.fetch as FetchLike | undefined);\n if (!f) {\n throw new Error(\n \"no fetch implementation available — pass `fetch` in the client options\",\n );\n }\n return f;\n}\n\n/** Append query params to a URL, skipping `undefined`/`null` values. */\nexport function buildUrl(base: string, query?: Record<string, QueryValue>): string {\n if (!query) return base;\n const parts: string[] = [];\n for (const [key, value] of Object.entries(query)) {\n if (value === undefined || value === null) continue;\n parts.push(`${encodeURIComponent(key)}=${encodeURIComponent(String(value))}`);\n }\n if (parts.length === 0) return base;\n const sep = base.includes(\"?\") ? \"&\" : \"?\";\n return `${base}${sep}${parts.join(\"&\")}`;\n}\n\n/** Join a base URL and a path without producing double slashes. */\nexport function joinUrl(base: string, path: string): string {\n const left = base.replace(/\\/+$/, \"\");\n const right = path.replace(/^\\/+/, \"\");\n return `${left}/${right}`;\n}\n\nfunction delay(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\n/** 5xx responses are retryable; 4xx are not. */\nfunction isRetryableStatus(status: number): boolean {\n return status >= 500 && status < 600;\n}\n\n/**\n * Run one `fetch` attempt with an abort-driven timeout, parsing the JSON body\n * on success and throwing {@link QoreHttpError} on a non-2xx response.\n */\nasync function attempt<T>(\n url: string,\n init: RequestInit,\n fetchImpl: FetchLike,\n timeoutMs: number,\n): Promise<T> {\n const controller = timeoutMs > 0 ? new AbortController() : undefined;\n const timer =\n controller && timeoutMs > 0\n ? setTimeout(() => controller.abort(), timeoutMs)\n : undefined;\n try {\n const res = await fetchImpl(url, {\n ...init,\n signal: controller?.signal,\n });\n if (!res.ok) {\n let body: string | undefined;\n try {\n body = await res.text();\n } catch {\n body = undefined;\n }\n throw new QoreHttpError(res.status, url, body);\n }\n return (await res.json()) as T;\n } finally {\n if (timer) clearTimeout(timer);\n }\n}\n\n/** Execute `attempt` with retry on retryable HTTP/transport errors. */\nasync function withRetry<T>(\n url: string,\n init: RequestInit,\n opts: HttpOptions | undefined,\n): Promise<T> {\n const fetchImpl = resolveFetch(opts);\n const timeoutMs = opts?.timeoutMs ?? DEFAULT_TIMEOUT_MS;\n const retries = opts?.retries ?? DEFAULT_RETRIES;\n const retryDelayMs = opts?.retryDelayMs ?? DEFAULT_RETRY_DELAY_MS;\n\n let lastError: unknown;\n for (let i = 0; i <= retries; i++) {\n try {\n return await attempt<T>(url, init, fetchImpl, timeoutMs);\n } catch (err) {\n lastError = err;\n const retryable =\n err instanceof QoreHttpError ? isRetryableStatus(err.status) : true;\n if (!retryable || i === retries) throw err;\n if (retryDelayMs > 0) await delay(retryDelayMs);\n }\n }\n throw lastError;\n}\n\n/**\n * Perform a GET request and parse the JSON response.\n *\n * @param url - Fully-qualified URL (without query string).\n * @param opts - Query params, injectable `fetch`, timeout, and retry settings.\n * @throws {@link QoreHttpError} on a non-2xx response.\n */\nexport function getJson<T>(url: string, opts?: GetJsonOptions): Promise<T> {\n const fullUrl = buildUrl(url, opts?.query);\n const init: RequestInit = {\n method: \"GET\",\n headers: { accept: \"application/json\", ...(opts?.headers ?? {}) },\n };\n return withRetry<T>(fullUrl, init, opts);\n}\n\n/**\n * POST a JSON-RPC body and parse the JSON response.\n *\n * This handles only the HTTP layer; JSON-RPC error envelopes are interpreted by\n * the {@link JsonRpcClient}.\n *\n * @throws {@link QoreHttpError} on a non-2xx response.\n */\nexport function postJsonRpc<T>(\n url: string,\n body: unknown,\n opts?: HttpOptions,\n): Promise<T> {\n const init: RequestInit = {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n accept: \"application/json\",\n ...(opts?.headers ?? {}),\n },\n body: JSON.stringify(body),\n };\n return withRetry<T>(url, init, opts);\n}\n","/**\n * REST (LCD) read client for QoreChain.\n *\n * Wraps the standard Cosmos SDK bank endpoints plus QoreChain's custom module\n * read routes under `/qorechain/<module>/v1/...`. All requests go through the\n * shared {@link getJson} helper, so `fetch` is injectable and failures surface\n * as {@link QoreHttpError}.\n *\n * Response shapes are modeled only where they are simple and stable (e.g. bank\n * balances); richer module responses are returned as a caller-supplied generic\n * defaulting to {@link Record}<string, unknown> rather than over-modeled here.\n */\n\nimport type { Coin } from \"@cosmjs/amino\";\nimport {\n getJson,\n joinUrl,\n type FetchLike,\n type HttpOptions,\n type QueryValue,\n} from \"./http\";\n\n/**\n * A Cosmos coin amount. Re-exported from `@cosmjs/amino` so the SDK has a single\n * canonical `Coin` type shared across query, fee, and tx code (no duplicated\n * structural definition).\n */\nexport type { Coin };\n\n/** Cosmos pagination response metadata. */\nexport interface PageResponse {\n next_key: string | null;\n total?: string;\n}\n\n/** Response of the all-balances endpoint. */\nexport interface AllBalancesResponse {\n balances: Coin[];\n pagination?: PageResponse;\n}\n\n/** Response of the single-denom balance endpoint. */\nexport interface BalanceResponse {\n balance: Coin;\n}\n\n/** Cosmos-style key/limit pagination input. */\nexport interface Pagination {\n key?: string;\n limit?: number;\n}\n\n/** Options accepted by paginated list endpoints. */\nexport interface PaginatedOptions {\n pagination?: Pagination;\n}\n\n/** Options for {@link RestClient}. */\nexport type RestClientOptions = HttpOptions;\n\n/** Relative urgency of a fee estimate. */\nexport type FeeUrgency = \"fast\" | \"normal\" | \"slow\";\n\n/** Map a {@link Pagination} into Cosmos `pagination.*` query params. */\nfunction paginationQuery(p?: Pagination): Record<string, QueryValue> {\n const q: Record<string, QueryValue> = {};\n if (p?.key !== undefined) q[\"pagination.key\"] = p.key;\n if (p?.limit !== undefined) q[\"pagination.limit\"] = p.limit;\n return q;\n}\n\n/** Cosmos + QoreChain REST read client. */\nexport class RestClient {\n private readonly baseUrl: string;\n private readonly opts: RestClientOptions;\n\n /**\n * @param baseUrl - The network's REST endpoint (e.g. `endpoints.rest`).\n * @param opts - Injectable `fetch`, timeout, and retry settings.\n */\n constructor(baseUrl: string, opts: RestClientOptions = {}) {\n this.baseUrl = baseUrl;\n this.opts = opts;\n }\n\n /** Injectable fetch passthrough so the escape hatch reuses the same transport. */\n private get fetchImpl(): FetchLike | undefined {\n return this.opts.fetch;\n }\n\n /**\n * Generic GET escape hatch for any documented REST route.\n *\n * @param path - Path beginning with `/` (e.g. `/qorechain/foo/v1/bar`).\n * Embedded path params must be URL-encoded by the caller.\n * @param query - Optional query parameters.\n */\n get<T = Record<string, unknown>>(\n path: string,\n query?: Record<string, QueryValue>,\n ): Promise<T> {\n return getJson<T>(joinUrl(this.baseUrl, path), {\n ...this.opts,\n query,\n });\n }\n\n // --- Standard Cosmos bank ------------------------------------------------\n\n /** All balances of `address` (`/cosmos/bank/v1beta1/balances/{address}`). */\n getAllBalances(\n address: string,\n opts?: PaginatedOptions,\n ): Promise<AllBalancesResponse> {\n return this.get<AllBalancesResponse>(\n `/cosmos/bank/v1beta1/balances/${encodeURIComponent(address)}`,\n paginationQuery(opts?.pagination),\n );\n }\n\n /** Balance of `address` in `denom` (`.../balances/{address}/by_denom`). */\n getBalance(address: string, denom: string): Promise<BalanceResponse> {\n return this.get<BalanceResponse>(\n `/cosmos/bank/v1beta1/balances/${encodeURIComponent(address)}/by_denom`,\n { denom },\n );\n }\n\n // --- Custom QoreChain module reads ---------------------------------------\n\n /** QCAI fee/network stats (`/qorechain/ai/v1/stats`). */\n getAiStats<T = Record<string, unknown>>(): Promise<T> {\n return this.get<T>(\"/qorechain/ai/v1/stats\");\n }\n\n /** QCAI fee estimate for an urgency level (`/qorechain/ai/v1/fee-estimate`). */\n getFeeEstimate<T = Record<string, unknown>>(urgency: FeeUrgency): Promise<T> {\n return this.get<T>(\"/qorechain/ai/v1/fee-estimate\", { urgency });\n }\n\n /** Supported bridge chains (`/qorechain/bridge/v1/chains`). */\n getBridgeChains<T = Record<string, unknown>>(): Promise<T> {\n return this.get<T>(\"/qorechain/bridge/v1/chains\");\n }\n\n /** PQC account record (`/qorechain/pqc/v1/accounts/{address}`). */\n getPqcAccount<T = Record<string, unknown>>(address: string): Promise<T> {\n return this.get<T>(`/qorechain/pqc/v1/accounts/${encodeURIComponent(address)}`);\n }\n\n /** Validator reputation (`/qorechain/reputation/v1/validators/{address}`). */\n getReputation<T = Record<string, unknown>>(\n validatorAddress: string,\n ): Promise<T> {\n return this.get<T>(\n `/qorechain/reputation/v1/validators/${encodeURIComponent(validatorAddress)}`,\n );\n }\n\n /** Token burn statistics (`/qorechain/burn/v1/stats`). */\n getBurnStats<T = Record<string, unknown>>(): Promise<T> {\n return this.get<T>(\"/qorechain/burn/v1/stats\");\n }\n\n /** xQORE staking position (`/qorechain/xqore/v1/position/{address}`). */\n getXqorePosition<T = Record<string, unknown>>(address: string): Promise<T> {\n return this.get<T>(`/qorechain/xqore/v1/position/${encodeURIComponent(address)}`);\n }\n\n /** Current inflation rate (`/qorechain/inflation/v1/rate`). */\n getInflationRate<T = Record<string, unknown>>(): Promise<T> {\n return this.get<T>(\"/qorechain/inflation/v1/rate\");\n }\n}\n","/**\n * Generic JSON-RPC 2.0 client.\n *\n * Manages request ids (auto-incrementing per client), serializes the standard\n * `{ jsonrpc, id, method, params }` envelope, and maps JSON-RPC error responses\n * to a typed {@link JsonRpcError}. It is the transport base for both the EVM\n * `eth_*`/`net_*`/`web3_*` methods and the QoreChain `qor_*` namespace.\n *\n * The underlying `fetch` is injectable via {@link HttpOptions} so callers and\n * tests can supply their own transport.\n */\n\nimport { postJsonRpc, type HttpOptions } from \"./http\";\n\n/** A JSON-RPC 2.0 error object. */\nexport interface JsonRpcErrorObject {\n code: number;\n message: string;\n data?: unknown;\n}\n\n/** A JSON-RPC 2.0 response envelope. */\nexport interface JsonRpcResponse<T> {\n jsonrpc: \"2.0\";\n id: number | string | null;\n result?: T;\n error?: JsonRpcErrorObject;\n}\n\n/** Thrown when a JSON-RPC response carries an `error` member. */\nexport class JsonRpcError extends Error {\n /** JSON-RPC error code. */\n readonly code: number;\n /** Optional implementation-defined error data. */\n readonly data?: unknown;\n\n constructor(code: number, message: string, data?: unknown) {\n super(message);\n this.name = \"JsonRpcError\";\n this.code = code;\n this.data = data;\n Object.setPrototypeOf(this, JsonRpcError.prototype);\n }\n}\n\n/** Options for {@link JsonRpcClient}. */\nexport type JsonRpcClientOptions = HttpOptions;\n\n/** A minimal JSON-RPC 2.0 client over HTTP POST. */\nexport class JsonRpcClient {\n protected readonly url: string;\n protected readonly opts: JsonRpcClientOptions;\n private nextId = 1;\n\n constructor(url: string, opts: JsonRpcClientOptions = {}) {\n this.url = url;\n this.opts = opts;\n }\n\n /**\n * Invoke a JSON-RPC method and return its `result`.\n *\n * @param method - Wire method name (e.g. `\"eth_chainId\"`).\n * @param params - Positional params; defaults to an empty array.\n * @throws {@link JsonRpcError} when the response contains an `error`.\n * @throws {@link QoreHttpError} on a non-2xx transport response.\n */\n async call<T>(method: string, params: unknown[] = []): Promise<T> {\n const id = this.nextId++;\n const body = { jsonrpc: \"2.0\", id, method, params };\n const res = await postJsonRpc<JsonRpcResponse<T>>(this.url, body, this.opts);\n if (res.error) {\n throw new JsonRpcError(res.error.code, res.error.message, res.error.data);\n }\n return res.result as T;\n }\n\n /** `eth_chainId` — the chain id as a hex quantity string. */\n ethChainId(): Promise<string> {\n return this.call<string>(\"eth_chainId\", []);\n }\n\n /** `eth_blockNumber` — the latest block height as a hex quantity string. */\n ethBlockNumber(): Promise<string> {\n return this.call<string>(\"eth_blockNumber\", []);\n }\n\n /** `eth_getBalance` — wei balance of `address` as a hex quantity string. */\n ethGetBalance(address: string, block: string = \"latest\"): Promise<string> {\n return this.call<string>(\"eth_getBalance\", [address, block]);\n }\n\n /** `net_version` — the network id as a decimal string. */\n netVersion(): Promise<string> {\n return this.call<string>(\"net_version\", []);\n }\n\n /** `web3_clientVersion` — the node client version string. */\n web3ClientVersion(): Promise<string> {\n return this.call<string>(\"web3_clientVersion\", []);\n }\n}\n","/**\n * Typed wrappers for the QoreChain `qor_*` JSON-RPC namespace.\n *\n * Each method maps one-to-one to a chain RPC method, exposed against the EVM\n * JSON-RPC endpoint (`endpoints.evmRpc`). The on-the-wire method names use the\n * chain's exact casing (e.g. `qor_getPQCKeyStatus`, `qor_getAIStats`) and must\n * not be altered.\n *\n * Results are intentionally returned as generics defaulting to\n * {@link Record}<string, unknown>: the chain returns rich, evolving JSON and the\n * SDK does not model every field. Callers pass a concrete type argument when\n * they know the shape.\n */\n\nimport { JsonRpcClient, type JsonRpcClientOptions } from \"./jsonrpc\";\n\n/** Convenience default for unmodeled `qor_*` responses. */\ntype Json = Record<string, unknown>;\n\n/**\n * Client for the QoreChain `qor_*` JSON-RPC namespace.\n *\n * Built on {@link JsonRpcClient}; point it at the network's `evmRpc` endpoint.\n */\nexport class QorClient extends JsonRpcClient {\n constructor(url: string, opts: JsonRpcClientOptions = {}) {\n super(url, opts);\n }\n\n /** `qor_getPQCKeyStatus` — PQC key registration status for an address. */\n getPqcKeyStatus<T = Json>(address: string): Promise<T> {\n return this.call<T>(\"qor_getPQCKeyStatus\", [address]);\n }\n\n /** `qor_getHybridSignatureMode` — active hybrid-signature policy. */\n getHybridSignatureMode<T = Json>(): Promise<T> {\n return this.call<T>(\"qor_getHybridSignatureMode\", []);\n }\n\n /** `qor_getAIStats` — QCAI engine statistics. */\n getAiStats<T = Json>(): Promise<T> {\n return this.call<T>(\"qor_getAIStats\", []);\n }\n\n /** `qor_getCrossVMMessage` — a cross-VM message by id. */\n getCrossVmMessage<T = Json>(messageId: string): Promise<T> {\n return this.call<T>(\"qor_getCrossVMMessage\", [messageId]);\n }\n\n /** `qor_getReputationScore` — reputation score for a validator. */\n getReputationScore<T = Json>(validator: string): Promise<T> {\n return this.call<T>(\"qor_getReputationScore\", [validator]);\n }\n\n /** `qor_getLayerInfo` — info about a chain layer. */\n getLayerInfo<T = Json>(layerId: string): Promise<T> {\n return this.call<T>(\"qor_getLayerInfo\", [layerId]);\n }\n\n /** `qor_getBridgeStatus` — bridge status for a remote chain id. */\n getBridgeStatus<T = Json>(chainId: string): Promise<T> {\n return this.call<T>(\"qor_getBridgeStatus\", [chainId]);\n }\n\n /** `qor_getRLAgentStatus` — reinforcement-learning agent status. */\n getRlAgentStatus<T = Json>(): Promise<T> {\n return this.call<T>(\"qor_getRLAgentStatus\", []);\n }\n\n /** `qor_getRLObservation` — latest RL observation vector. */\n getRlObservation<T = Json>(): Promise<T> {\n return this.call<T>(\"qor_getRLObservation\", []);\n }\n\n /** `qor_getRLReward` — latest RL reward signal. */\n getRlReward<T = Json>(): Promise<T> {\n return this.call<T>(\"qor_getRLReward\", []);\n }\n\n /** `qor_getPoolClassification` — validator pool classification. */\n getPoolClassification<T = Json>(validator: string): Promise<T> {\n return this.call<T>(\"qor_getPoolClassification\", [validator]);\n }\n\n /** `qor_getBurnStats` — token burn statistics. */\n getBurnStats<T = Json>(): Promise<T> {\n return this.call<T>(\"qor_getBurnStats\", []);\n }\n\n /** `qor_getXQOREPosition` — xQORE staking position for an address. */\n getXqorePosition<T = Json>(address: string): Promise<T> {\n return this.call<T>(\"qor_getXQOREPosition\", [address]);\n }\n\n /** `qor_getInflationRate` — current inflation rate. */\n getInflationRate<T = Json>(): Promise<T> {\n return this.call<T>(\"qor_getInflationRate\", []);\n }\n\n /** `qor_getTokenomicsOverview` — aggregate tokenomics snapshot. */\n getTokenomicsOverview<T = Json>(): Promise<T> {\n return this.call<T>(\"qor_getTokenomicsOverview\", []);\n }\n\n /** `qor_getRollupStatus` — status of a rollup. */\n getRollupStatus<T = Json>(rollupId: string): Promise<T> {\n return this.call<T>(\"qor_getRollupStatus\", [rollupId]);\n }\n\n /** `qor_listRollups` — all known rollups. */\n listRollups<T = Json>(): Promise<T> {\n return this.call<T>(\"qor_listRollups\", []);\n }\n\n /** `qor_getSettlementBatch` — a settlement batch by rollup and index. */\n getSettlementBatch<T = Json>(rollupId: string, batchIndex: number): Promise<T> {\n return this.call<T>(\"qor_getSettlementBatch\", [rollupId, batchIndex]);\n }\n\n /** `qor_suggestRollupProfile` — a suggested rollup profile for a use case. */\n suggestRollupProfile<T = Json>(useCase: string): Promise<T> {\n return this.call<T>(\"qor_suggestRollupProfile\", [useCase]);\n }\n\n /** `qor_getDABlobStatus` — data-availability blob status by rollup and index. */\n getDaBlobStatus<T = Json>(rollupId: string, blobIndex: number): Promise<T> {\n return this.call<T>(\"qor_getDABlobStatus\", [rollupId, blobIndex]);\n }\n\n /** `qor_getBTCStakingPosition` — BTC staking position for an address. */\n getBtcStakingPosition<T = Json>(address: string): Promise<T> {\n return this.call<T>(\"qor_getBTCStakingPosition\", [address]);\n }\n\n /** `qor_getAbstractAccount` — account-abstraction record for an address. */\n getAbstractAccount<T = Json>(address: string): Promise<T> {\n return this.call<T>(\"qor_getAbstractAccount\", [address]);\n }\n\n /** `qor_getFairBlockStatus` — fair-ordering / fair-block status. */\n getFairBlockStatus<T = Json>(): Promise<T> {\n return this.call<T>(\"qor_getFairBlockStatus\", []);\n }\n\n /** `qor_getGasAbstractionConfig` — gas-abstraction configuration. */\n getGasAbstractionConfig<T = Json>(): Promise<T> {\n return this.call<T>(\"qor_getGasAbstractionConfig\", []);\n }\n\n /** `qor_getLaneConfiguration` — mempool lane configuration. */\n getLaneConfiguration<T = Json>(): Promise<T> {\n return this.call<T>(\"qor_getLaneConfiguration\", []);\n }\n}\n","/**\n * Native-transaction fee estimation for QoreChain.\n *\n * QoreChain exposes an AI-assisted fee oracle at the REST route\n * `/qorechain/ai/v1/fee-estimate?urgency=fast|normal|slow` (see the core\n * `AI_ENGINE.md` / `API_REFERENCE.md`). {@link estimateFee} queries it via the\n * shared {@link RestClient} and shapes the answer as a Cosmos `StdFee`\n * (`{ amount: Coin[]; gas: string }`).\n *\n * The oracle can be unavailable (node still syncing, sidecar down, custom RPC\n * without the AI module). To keep transaction building robust, this falls back\n * to a deterministic static fee computed from a configurable gas price in the\n * base denom — `ceil(gas * gasPrice)` — exactly as a wallet would compute a\n * minimum-gas-price fee. The fallback is transparent and never throws on a\n * missing/erroring endpoint; only a successful response is preferred.\n */\n\nimport type { StdFee } from \"@cosmjs/amino\";\nimport type { RestClient, FeeUrgency } from \"../query/rest\";\n\n/**\n * Re-export cosmjs's canonical `StdFee` so the SDK shares one fee type with what\n * `SigningStargateClient.signAndBroadcast` expects. This is the cosmjs shape\n * (`{ amount: readonly Coin[]; gas: string; granter?; payer? }`), so feegrant\n * `granter`/`payer` are supported.\n */\nexport type { StdFee };\n\n/**\n * Default static-fallback parameters, used when the AI fee oracle is\n * unavailable. The gas price (`uqor` per unit of gas) is intentionally\n * conservative and matches the relayer default in the core repo\n * (`gas_price = 0.025 uqor`).\n */\nexport const STATIC_FALLBACK = {\n /** Fallback gas price, in base denom per unit of gas. */\n gasPrice: \"0.025\",\n /** Base denomination fees are paid in. */\n denom: \"uqor\",\n /** Default gas limit when the caller does not supply one. */\n gas: \"200000\",\n} as const;\n\n/** Options for {@link estimateFee}. */\nexport interface EstimateFeeOptions {\n /** Relative urgency tier passed to the oracle. Defaults to `\"normal\"`. */\n urgency?: FeeUrgency;\n /**\n * Gas limit to request, as a number or decimal string. Defaults to\n * {@link STATIC_FALLBACK.gas}. The oracle only suggests a *fee amount*; the\n * gas limit is chosen by the caller (or via {@link TxClient.simulate}).\n */\n gas?: number | string;\n /**\n * Static-fallback gas price (base denom per gas unit) used only when the\n * oracle is unavailable. Defaults to {@link STATIC_FALLBACK.gasPrice}.\n */\n fallbackGasPrice?: string;\n /** Base denomination for the fee. Defaults to {@link STATIC_FALLBACK.denom}. */\n denom?: string;\n}\n\n/**\n * Shape of the AI fee-estimate REST response.\n *\n * Mirrors the core `FeeEstimateResponse` proto (gateway JSON): `suggested_fee_uqor`\n * is a `uint64`, which proto3 JSON encodes as a string, but tolerate a number too.\n */\ninterface FeeEstimateResponse {\n suggested_fee_uqor?: string | number;\n estimated_blocks?: number;\n current_congestion?: number;\n predicted_congestion?: number;\n confidence?: number;\n}\n\n/** Normalize a `number | string` gas value to a decimal string. */\nfunction gasString(gas: number | string | undefined): string {\n if (gas === undefined) return STATIC_FALLBACK.gas;\n return typeof gas === \"number\" ? Math.ceil(gas).toString() : gas;\n}\n\n/**\n * Compute a static fee as `ceil(gas * gasPrice)` in `denom`.\n *\n * Uses BigInt math on a scaled integer to avoid floating-point drift on the\n * fee amount; the gas price is parsed to a fixed number of decimal places.\n */\nfunction staticFee(gas: string, gasPrice: string, denom: string): StdFee {\n const gasUnits = BigInt(gas);\n // Parse \"0.025\" into (numerator=25, scale=1000) so amount = gas*num/scale.\n const [intPart, fracPart = \"\"] = gasPrice.split(\".\");\n const scale = 10n ** BigInt(fracPart.length);\n const numerator = BigInt(intPart || \"0\") * scale + BigInt(fracPart || \"0\");\n // ceil division: (gas*numerator + scale - 1) / scale\n const raw = gasUnits * numerator;\n const amount = (raw + scale - 1n) / scale;\n return { amount: [{ denom, amount: amount.toString() }], gas };\n}\n\n/**\n * Estimate a transaction fee for the given urgency.\n *\n * Queries the QoreChain AI fee oracle and returns a Cosmos `StdFee`. If the\n * oracle is unavailable or returns no usable fee, falls back to a deterministic\n * static fee computed from {@link EstimateFeeOptions.fallbackGasPrice}.\n *\n * @param rest - A {@link RestClient} bound to the network's REST endpoint.\n * @param opts - Urgency, gas limit, and static-fallback parameters.\n */\nexport async function estimateFee(\n rest: RestClient,\n opts: EstimateFeeOptions = {},\n): Promise<StdFee> {\n const urgency: FeeUrgency = opts.urgency ?? \"normal\";\n const gas = gasString(opts.gas);\n const denom = opts.denom ?? STATIC_FALLBACK.denom;\n const fallbackGasPrice = opts.fallbackGasPrice ?? STATIC_FALLBACK.gasPrice;\n\n try {\n const res = await rest.getFeeEstimate<FeeEstimateResponse>(urgency);\n const suggested = res?.suggested_fee_uqor;\n if (suggested !== undefined && suggested !== null) {\n const amount =\n typeof suggested === \"number\"\n ? Math.ceil(suggested).toString()\n : suggested;\n // Treat a zero/empty suggestion as \"no answer\" and fall through.\n if (amount !== \"\" && amount !== \"0\") {\n return { amount: [{ denom, amount }], gas };\n }\n }\n } catch {\n // Oracle unavailable — fall through to the static fee.\n }\n\n return staticFee(gas, fallbackGasPrice, denom);\n}\n","// Code generated by protoc-gen-ts_proto. DO NOT EDIT.\n// versions:\n// protoc-gen-ts_proto v2.11.8\n// protoc unknown\n// source: qorechain/amm/v1/tx.proto\n\n/* eslint-disable */\nimport { BinaryReader, BinaryWriter } from \"@bufbuild/protobuf/wire\";\nimport { Coin } from \"../../../cosmos/base/v1beta1/coin\";\n\nexport const protobufPackage = \"qorechain.amm.v1\";\n\nexport interface MsgCreatePool {\n creator: string;\n poolType: string;\n initialDepositA?: Coin | undefined;\n initialDepositB?: Coin | undefined;\n amplificationCoefficient: number;\n}\n\nexport interface MsgCreatePoolResponse {\n poolId: string;\n}\n\nexport interface MsgAddLiquidity {\n sender: string;\n poolId: string;\n amountA?: Coin | undefined;\n amountB?: Coin | undefined;\n minLpOut: string;\n}\n\nexport interface MsgAddLiquidityResponse {\n}\n\nexport interface MsgRemoveLiquidity {\n sender: string;\n poolId: string;\n lpAmount: string;\n minAmountA: string;\n minAmountB: string;\n}\n\nexport interface MsgRemoveLiquidityResponse {\n}\n\nexport interface MsgSwapExactIn {\n sender: string;\n poolId: string;\n tokenIn?: Coin | undefined;\n denomOut: string;\n minOut: string;\n}\n\nexport interface MsgSwapExactInResponse {\n}\n\nexport interface MsgSwapExactOut {\n sender: string;\n poolId: string;\n denomIn: string;\n tokenOut?: Coin | undefined;\n maxIn: string;\n}\n\nexport interface MsgSwapExactOutResponse {\n}\n\nexport interface MsgPausePool {\n authority: string;\n poolId: string;\n reason: string;\n}\n\nexport interface MsgPausePoolResponse {\n}\n\nexport interface MsgResumePool {\n authority: string;\n poolId: string;\n}\n\nexport interface MsgResumePoolResponse {\n}\n\nfunction createBaseMsgCreatePool(): MsgCreatePool {\n return {\n creator: \"\",\n poolType: \"\",\n initialDepositA: undefined,\n initialDepositB: undefined,\n amplificationCoefficient: 0,\n };\n}\n\nexport const MsgCreatePool: MessageFns<MsgCreatePool> = {\n encode(message: MsgCreatePool, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.creator !== \"\") {\n writer.uint32(10).string(message.creator);\n }\n if (message.poolType !== \"\") {\n writer.uint32(18).string(message.poolType);\n }\n if (message.initialDepositA !== undefined) {\n Coin.encode(message.initialDepositA, writer.uint32(26).fork()).join();\n }\n if (message.initialDepositB !== undefined) {\n Coin.encode(message.initialDepositB, writer.uint32(34).fork()).join();\n }\n if (message.amplificationCoefficient !== 0) {\n writer.uint32(40).uint32(message.amplificationCoefficient);\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): MsgCreatePool {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseMsgCreatePool();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n message.creator = reader.string();\n continue;\n }\n case 2: {\n if (tag !== 18) {\n break;\n }\n\n message.poolType = reader.string();\n continue;\n }\n case 3: {\n if (tag !== 26) {\n break;\n }\n\n message.initialDepositA = Coin.decode(reader, reader.uint32());\n continue;\n }\n case 4: {\n if (tag !== 34) {\n break;\n }\n\n message.initialDepositB = Coin.decode(reader, reader.uint32());\n continue;\n }\n case 5: {\n if (tag !== 40) {\n break;\n }\n\n message.amplificationCoefficient = reader.uint32();\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): MsgCreatePool {\n return {\n creator: isSet(object.creator) ? globalThis.String(object.creator) : \"\",\n poolType: isSet(object.poolType)\n ? globalThis.String(object.poolType)\n : isSet(object.pool_type)\n ? globalThis.String(object.pool_type)\n : \"\",\n initialDepositA: isSet(object.initialDepositA)\n ? Coin.fromJSON(object.initialDepositA)\n : isSet(object.initial_deposit_a)\n ? Coin.fromJSON(object.initial_deposit_a)\n : undefined,\n initialDepositB: isSet(object.initialDepositB)\n ? Coin.fromJSON(object.initialDepositB)\n : isSet(object.initial_deposit_b)\n ? Coin.fromJSON(object.initial_deposit_b)\n : undefined,\n amplificationCoefficient: isSet(object.amplificationCoefficient)\n ? globalThis.Number(object.amplificationCoefficient)\n : isSet(object.amplification_coefficient)\n ? globalThis.Number(object.amplification_coefficient)\n : 0,\n };\n },\n\n toJSON(message: MsgCreatePool): unknown {\n const obj: any = {};\n if (message.creator !== \"\") {\n obj.creator = message.creator;\n }\n if (message.poolType !== \"\") {\n obj.poolType = message.poolType;\n }\n if (message.initialDepositA !== undefined) {\n obj.initialDepositA = Coin.toJSON(message.initialDepositA);\n }\n if (message.initialDepositB !== undefined) {\n obj.initialDepositB = Coin.toJSON(message.initialDepositB);\n }\n if (message.amplificationCoefficient !== 0) {\n obj.amplificationCoefficient = Math.round(message.amplificationCoefficient);\n }\n return obj;\n },\n\n create(base?: DeepPartial<MsgCreatePool>): MsgCreatePool {\n return MsgCreatePool.fromPartial(base ?? {});\n },\n fromPartial(object: DeepPartial<MsgCreatePool>): MsgCreatePool {\n const message = createBaseMsgCreatePool();\n message.creator = object.creator ?? \"\";\n message.poolType = object.poolType ?? \"\";\n message.initialDepositA = (object.initialDepositA !== undefined && object.initialDepositA !== null)\n ? Coin.fromPartial(object.initialDepositA)\n : undefined;\n message.initialDepositB = (object.initialDepositB !== undefined && object.initialDepositB !== null)\n ? Coin.fromPartial(object.initialDepositB)\n : undefined;\n message.amplificationCoefficient = object.amplificationCoefficient ?? 0;\n return message;\n },\n};\n\nfunction createBaseMsgCreatePoolResponse(): MsgCreatePoolResponse {\n return { poolId: \"0\" };\n}\n\nexport const MsgCreatePoolResponse: MessageFns<MsgCreatePoolResponse> = {\n encode(message: MsgCreatePoolResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.poolId !== \"0\") {\n writer.uint32(8).uint64(message.poolId);\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): MsgCreatePoolResponse {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseMsgCreatePoolResponse();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 8) {\n break;\n }\n\n message.poolId = reader.uint64().toString();\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): MsgCreatePoolResponse {\n return {\n poolId: isSet(object.poolId)\n ? globalThis.String(object.poolId)\n : isSet(object.pool_id)\n ? globalThis.String(object.pool_id)\n : \"0\",\n };\n },\n\n toJSON(message: MsgCreatePoolResponse): unknown {\n const obj: any = {};\n if (message.poolId !== \"0\") {\n obj.poolId = message.poolId;\n }\n return obj;\n },\n\n create(base?: DeepPartial<MsgCreatePoolResponse>): MsgCreatePoolResponse {\n return MsgCreatePoolResponse.fromPartial(base ?? {});\n },\n fromPartial(object: DeepPartial<MsgCreatePoolResponse>): MsgCreatePoolResponse {\n const message = createBaseMsgCreatePoolResponse();\n message.poolId = object.poolId ?? \"0\";\n return message;\n },\n};\n\nfunction createBaseMsgAddLiquidity(): MsgAddLiquidity {\n return { sender: \"\", poolId: \"0\", amountA: undefined, amountB: undefined, minLpOut: \"\" };\n}\n\nexport const MsgAddLiquidity: MessageFns<MsgAddLiquidity> = {\n encode(message: MsgAddLiquidity, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.sender !== \"\") {\n writer.uint32(10).string(message.sender);\n }\n if (message.poolId !== \"0\") {\n writer.uint32(16).uint64(message.poolId);\n }\n if (message.amountA !== undefined) {\n Coin.encode(message.amountA, writer.uint32(26).fork()).join();\n }\n if (message.amountB !== undefined) {\n Coin.encode(message.amountB, writer.uint32(34).fork()).join();\n }\n if (message.minLpOut !== \"\") {\n writer.uint32(42).string(message.minLpOut);\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): MsgAddLiquidity {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseMsgAddLiquidity();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n message.sender = reader.string();\n continue;\n }\n case 2: {\n if (tag !== 16) {\n break;\n }\n\n message.poolId = reader.uint64().toString();\n continue;\n }\n case 3: {\n if (tag !== 26) {\n break;\n }\n\n message.amountA = Coin.decode(reader, reader.uint32());\n continue;\n }\n case 4: {\n if (tag !== 34) {\n break;\n }\n\n message.amountB = Coin.decode(reader, reader.uint32());\n continue;\n }\n case 5: {\n if (tag !== 42) {\n break;\n }\n\n message.minLpOut = reader.string();\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): MsgAddLiquidity {\n return {\n sender: isSet(object.sender) ? globalThis.String(object.sender) : \"\",\n poolId: isSet(object.poolId)\n ? globalThis.String(object.poolId)\n : isSet(object.pool_id)\n ? globalThis.String(object.pool_id)\n : \"0\",\n amountA: isSet(object.amountA)\n ? Coin.fromJSON(object.amountA)\n : isSet(object.amount_a)\n ? Coin.fromJSON(object.amount_a)\n : undefined,\n amountB: isSet(object.amountB)\n ? Coin.fromJSON(object.amountB)\n : isSet(object.amount_b)\n ? Coin.fromJSON(object.amount_b)\n : undefined,\n minLpOut: isSet(object.minLpOut)\n ? globalThis.String(object.minLpOut)\n : isSet(object.min_lp_out)\n ? globalThis.String(object.min_lp_out)\n : \"\",\n };\n },\n\n toJSON(message: MsgAddLiquidity): unknown {\n const obj: any = {};\n if (message.sender !== \"\") {\n obj.sender = message.sender;\n }\n if (message.poolId !== \"0\") {\n obj.poolId = message.poolId;\n }\n if (message.amountA !== undefined) {\n obj.amountA = Coin.toJSON(message.amountA);\n }\n if (message.amountB !== undefined) {\n obj.amountB = Coin.toJSON(message.amountB);\n }\n if (message.minLpOut !== \"\") {\n obj.minLpOut = message.minLpOut;\n }\n return obj;\n },\n\n create(base?: DeepPartial<MsgAddLiquidity>): MsgAddLiquidity {\n return MsgAddLiquidity.fromPartial(base ?? {});\n },\n fromPartial(object: DeepPartial<MsgAddLiquidity>): MsgAddLiquidity {\n const message = createBaseMsgAddLiquidity();\n message.sender = object.sender ?? \"\";\n message.poolId = object.poolId ?? \"0\";\n message.amountA = (object.amountA !== undefined && object.amountA !== null)\n ? Coin.fromPartial(object.amountA)\n : undefined;\n message.amountB = (object.amountB !== undefined && object.amountB !== null)\n ? Coin.fromPartial(object.amountB)\n : undefined;\n message.minLpOut = object.minLpOut ?? \"\";\n return message;\n },\n};\n\nfunction createBaseMsgAddLiquidityResponse(): MsgAddLiquidityResponse {\n return {};\n}\n\nexport const MsgAddLiquidityResponse: MessageFns<MsgAddLiquidityResponse> = {\n encode(_: MsgAddLiquidityResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): MsgAddLiquidityResponse {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseMsgAddLiquidityResponse();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(_: any): MsgAddLiquidityResponse {\n return {};\n },\n\n toJSON(_: MsgAddLiquidityResponse): unknown {\n const obj: any = {};\n return obj;\n },\n\n create(base?: DeepPartial<MsgAddLiquidityResponse>): MsgAddLiquidityResponse {\n return MsgAddLiquidityResponse.fromPartial(base ?? {});\n },\n fromPartial(_: DeepPartial<MsgAddLiquidityResponse>): MsgAddLiquidityResponse {\n const message = createBaseMsgAddLiquidityResponse();\n return message;\n },\n};\n\nfunction createBaseMsgRemoveLiquidity(): MsgRemoveLiquidity {\n return { sender: \"\", poolId: \"0\", lpAmount: \"\", minAmountA: \"\", minAmountB: \"\" };\n}\n\nexport const MsgRemoveLiquidity: MessageFns<MsgRemoveLiquidity> = {\n encode(message: MsgRemoveLiquidity, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.sender !== \"\") {\n writer.uint32(10).string(message.sender);\n }\n if (message.poolId !== \"0\") {\n writer.uint32(16).uint64(message.poolId);\n }\n if (message.lpAmount !== \"\") {\n writer.uint32(26).string(message.lpAmount);\n }\n if (message.minAmountA !== \"\") {\n writer.uint32(34).string(message.minAmountA);\n }\n if (message.minAmountB !== \"\") {\n writer.uint32(42).string(message.minAmountB);\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): MsgRemoveLiquidity {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseMsgRemoveLiquidity();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n message.sender = reader.string();\n continue;\n }\n case 2: {\n if (tag !== 16) {\n break;\n }\n\n message.poolId = reader.uint64().toString();\n continue;\n }\n case 3: {\n if (tag !== 26) {\n break;\n }\n\n message.lpAmount = reader.string();\n continue;\n }\n case 4: {\n if (tag !== 34) {\n break;\n }\n\n message.minAmountA = reader.string();\n continue;\n }\n case 5: {\n if (tag !== 42) {\n break;\n }\n\n message.minAmountB = reader.string();\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): MsgRemoveLiquidity {\n return {\n sender: isSet(object.sender) ? globalThis.String(object.sender) : \"\",\n poolId: isSet(object.poolId)\n ? globalThis.String(object.poolId)\n : isSet(object.pool_id)\n ? globalThis.String(object.pool_id)\n : \"0\",\n lpAmount: isSet(object.lpAmount)\n ? globalThis.String(object.lpAmount)\n : isSet(object.lp_amount)\n ? globalThis.String(object.lp_amount)\n : \"\",\n minAmountA: isSet(object.minAmountA)\n ? globalThis.String(object.minAmountA)\n : isSet(object.min_amount_a)\n ? globalThis.String(object.min_amount_a)\n : \"\",\n minAmountB: isSet(object.minAmountB)\n ? globalThis.String(object.minAmountB)\n : isSet(object.min_amount_b)\n ? globalThis.String(object.min_amount_b)\n : \"\",\n };\n },\n\n toJSON(message: MsgRemoveLiquidity): unknown {\n const obj: any = {};\n if (message.sender !== \"\") {\n obj.sender = message.sender;\n }\n if (message.poolId !== \"0\") {\n obj.poolId = message.poolId;\n }\n if (message.lpAmount !== \"\") {\n obj.lpAmount = message.lpAmount;\n }\n if (message.minAmountA !== \"\") {\n obj.minAmountA = message.minAmountA;\n }\n if (message.minAmountB !== \"\") {\n obj.minAmountB = message.minAmountB;\n }\n return obj;\n },\n\n create(base?: DeepPartial<MsgRemoveLiquidity>): MsgRemoveLiquidity {\n return MsgRemoveLiquidity.fromPartial(base ?? {});\n },\n fromPartial(object: DeepPartial<MsgRemoveLiquidity>): MsgRemoveLiquidity {\n const message = createBaseMsgRemoveLiquidity();\n message.sender = object.sender ?? \"\";\n message.poolId = object.poolId ?? \"0\";\n message.lpAmount = object.lpAmount ?? \"\";\n message.minAmountA = object.minAmountA ?? \"\";\n message.minAmountB = object.minAmountB ?? \"\";\n return message;\n },\n};\n\nfunction createBaseMsgRemoveLiquidityResponse(): MsgRemoveLiquidityResponse {\n return {};\n}\n\nexport const MsgRemoveLiquidityResponse: MessageFns<MsgRemoveLiquidityResponse> = {\n encode(_: MsgRemoveLiquidityResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): MsgRemoveLiquidityResponse {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseMsgRemoveLiquidityResponse();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(_: any): MsgRemoveLiquidityResponse {\n return {};\n },\n\n toJSON(_: MsgRemoveLiquidityResponse): unknown {\n const obj: any = {};\n return obj;\n },\n\n create(base?: DeepPartial<MsgRemoveLiquidityResponse>): MsgRemoveLiquidityResponse {\n return MsgRemoveLiquidityResponse.fromPartial(base ?? {});\n },\n fromPartial(_: DeepPartial<MsgRemoveLiquidityResponse>): MsgRemoveLiquidityResponse {\n const message = createBaseMsgRemoveLiquidityResponse();\n return message;\n },\n};\n\nfunction createBaseMsgSwapExactIn(): MsgSwapExactIn {\n return { sender: \"\", poolId: \"0\", tokenIn: undefined, denomOut: \"\", minOut: \"\" };\n}\n\nexport const MsgSwapExactIn: MessageFns<MsgSwapExactIn> = {\n encode(message: MsgSwapExactIn, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.sender !== \"\") {\n writer.uint32(10).string(message.sender);\n }\n if (message.poolId !== \"0\") {\n writer.uint32(16).uint64(message.poolId);\n }\n if (message.tokenIn !== undefined) {\n Coin.encode(message.tokenIn, writer.uint32(26).fork()).join();\n }\n if (message.denomOut !== \"\") {\n writer.uint32(34).string(message.denomOut);\n }\n if (message.minOut !== \"\") {\n writer.uint32(42).string(message.minOut);\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): MsgSwapExactIn {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseMsgSwapExactIn();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n message.sender = reader.string();\n continue;\n }\n case 2: {\n if (tag !== 16) {\n break;\n }\n\n message.poolId = reader.uint64().toString();\n continue;\n }\n case 3: {\n if (tag !== 26) {\n break;\n }\n\n message.tokenIn = Coin.decode(reader, reader.uint32());\n continue;\n }\n case 4: {\n if (tag !== 34) {\n break;\n }\n\n message.denomOut = reader.string();\n continue;\n }\n case 5: {\n if (tag !== 42) {\n break;\n }\n\n message.minOut = reader.string();\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): MsgSwapExactIn {\n return {\n sender: isSet(object.sender) ? globalThis.String(object.sender) : \"\",\n poolId: isSet(object.poolId)\n ? globalThis.String(object.poolId)\n : isSet(object.pool_id)\n ? globalThis.String(object.pool_id)\n : \"0\",\n tokenIn: isSet(object.tokenIn)\n ? Coin.fromJSON(object.tokenIn)\n : isSet(object.token_in)\n ? Coin.fromJSON(object.token_in)\n : undefined,\n denomOut: isSet(object.denomOut)\n ? globalThis.String(object.denomOut)\n : isSet(object.denom_out)\n ? globalThis.String(object.denom_out)\n : \"\",\n minOut: isSet(object.minOut)\n ? globalThis.String(object.minOut)\n : isSet(object.min_out)\n ? globalThis.String(object.min_out)\n : \"\",\n };\n },\n\n toJSON(message: MsgSwapExactIn): unknown {\n const obj: any = {};\n if (message.sender !== \"\") {\n obj.sender = message.sender;\n }\n if (message.poolId !== \"0\") {\n obj.poolId = message.poolId;\n }\n if (message.tokenIn !== undefined) {\n obj.tokenIn = Coin.toJSON(message.tokenIn);\n }\n if (message.denomOut !== \"\") {\n obj.denomOut = message.denomOut;\n }\n if (message.minOut !== \"\") {\n obj.minOut = message.minOut;\n }\n return obj;\n },\n\n create(base?: DeepPartial<MsgSwapExactIn>): MsgSwapExactIn {\n return MsgSwapExactIn.fromPartial(base ?? {});\n },\n fromPartial(object: DeepPartial<MsgSwapExactIn>): MsgSwapExactIn {\n const message = createBaseMsgSwapExactIn();\n message.sender = object.sender ?? \"\";\n message.poolId = object.poolId ?? \"0\";\n message.tokenIn = (object.tokenIn !== undefined && object.tokenIn !== null)\n ? Coin.fromPartial(object.tokenIn)\n : undefined;\n message.denomOut = object.denomOut ?? \"\";\n message.minOut = object.minOut ?? \"\";\n return message;\n },\n};\n\nfunction createBaseMsgSwapExactInResponse(): MsgSwapExactInResponse {\n return {};\n}\n\nexport const MsgSwapExactInResponse: MessageFns<MsgSwapExactInResponse> = {\n encode(_: MsgSwapExactInResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): MsgSwapExactInResponse {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseMsgSwapExactInResponse();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(_: any): MsgSwapExactInResponse {\n return {};\n },\n\n toJSON(_: MsgSwapExactInResponse): unknown {\n const obj: any = {};\n return obj;\n },\n\n create(base?: DeepPartial<MsgSwapExactInResponse>): MsgSwapExactInResponse {\n return MsgSwapExactInResponse.fromPartial(base ?? {});\n },\n fromPartial(_: DeepPartial<MsgSwapExactInResponse>): MsgSwapExactInResponse {\n const message = createBaseMsgSwapExactInResponse();\n return message;\n },\n};\n\nfunction createBaseMsgSwapExactOut(): MsgSwapExactOut {\n return { sender: \"\", poolId: \"0\", denomIn: \"\", tokenOut: undefined, maxIn: \"\" };\n}\n\nexport const MsgSwapExactOut: MessageFns<MsgSwapExactOut> = {\n encode(message: MsgSwapExactOut, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.sender !== \"\") {\n writer.uint32(10).string(message.sender);\n }\n if (message.poolId !== \"0\") {\n writer.uint32(16).uint64(message.poolId);\n }\n if (message.denomIn !== \"\") {\n writer.uint32(26).string(message.denomIn);\n }\n if (message.tokenOut !== undefined) {\n Coin.encode(message.tokenOut, writer.uint32(34).fork()).join();\n }\n if (message.maxIn !== \"\") {\n writer.uint32(42).string(message.maxIn);\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): MsgSwapExactOut {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseMsgSwapExactOut();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n message.sender = reader.string();\n continue;\n }\n case 2: {\n if (tag !== 16) {\n break;\n }\n\n message.poolId = reader.uint64().toString();\n continue;\n }\n case 3: {\n if (tag !== 26) {\n break;\n }\n\n message.denomIn = reader.string();\n continue;\n }\n case 4: {\n if (tag !== 34) {\n break;\n }\n\n message.tokenOut = Coin.decode(reader, reader.uint32());\n continue;\n }\n case 5: {\n if (tag !== 42) {\n break;\n }\n\n message.maxIn = reader.string();\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): MsgSwapExactOut {\n return {\n sender: isSet(object.sender) ? globalThis.String(object.sender) : \"\",\n poolId: isSet(object.poolId)\n ? globalThis.String(object.poolId)\n : isSet(object.pool_id)\n ? globalThis.String(object.pool_id)\n : \"0\",\n denomIn: isSet(object.denomIn)\n ? globalThis.String(object.denomIn)\n : isSet(object.denom_in)\n ? globalThis.String(object.denom_in)\n : \"\",\n tokenOut: isSet(object.tokenOut)\n ? Coin.fromJSON(object.tokenOut)\n : isSet(object.token_out)\n ? Coin.fromJSON(object.token_out)\n : undefined,\n maxIn: isSet(object.maxIn)\n ? globalThis.String(object.maxIn)\n : isSet(object.max_in)\n ? globalThis.String(object.max_in)\n : \"\",\n };\n },\n\n toJSON(message: MsgSwapExactOut): unknown {\n const obj: any = {};\n if (message.sender !== \"\") {\n obj.sender = message.sender;\n }\n if (message.poolId !== \"0\") {\n obj.poolId = message.poolId;\n }\n if (message.denomIn !== \"\") {\n obj.denomIn = message.denomIn;\n }\n if (message.tokenOut !== undefined) {\n obj.tokenOut = Coin.toJSON(message.tokenOut);\n }\n if (message.maxIn !== \"\") {\n obj.maxIn = message.maxIn;\n }\n return obj;\n },\n\n create(base?: DeepPartial<MsgSwapExactOut>): MsgSwapExactOut {\n return MsgSwapExactOut.fromPartial(base ?? {});\n },\n fromPartial(object: DeepPartial<MsgSwapExactOut>): MsgSwapExactOut {\n const message = createBaseMsgSwapExactOut();\n message.sender = object.sender ?? \"\";\n message.poolId = object.poolId ?? \"0\";\n message.denomIn = object.denomIn ?? \"\";\n message.tokenOut = (object.tokenOut !== undefined && object.tokenOut !== null)\n ? Coin.fromPartial(object.tokenOut)\n : undefined;\n message.maxIn = object.maxIn ?? \"\";\n return message;\n },\n};\n\nfunction createBaseMsgSwapExactOutResponse(): MsgSwapExactOutResponse {\n return {};\n}\n\nexport const MsgSwapExactOutResponse: MessageFns<MsgSwapExactOutResponse> = {\n encode(_: MsgSwapExactOutResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): MsgSwapExactOutResponse {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseMsgSwapExactOutResponse();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(_: any): MsgSwapExactOutResponse {\n return {};\n },\n\n toJSON(_: MsgSwapExactOutResponse): unknown {\n const obj: any = {};\n return obj;\n },\n\n create(base?: DeepPartial<MsgSwapExactOutResponse>): MsgSwapExactOutResponse {\n return MsgSwapExactOutResponse.fromPartial(base ?? {});\n },\n fromPartial(_: DeepPartial<MsgSwapExactOutResponse>): MsgSwapExactOutResponse {\n const message = createBaseMsgSwapExactOutResponse();\n return message;\n },\n};\n\nfunction createBaseMsgPausePool(): MsgPausePool {\n return { authority: \"\", poolId: \"0\", reason: \"\" };\n}\n\nexport const MsgPausePool: MessageFns<MsgPausePool> = {\n encode(message: MsgPausePool, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.authority !== \"\") {\n writer.uint32(10).string(message.authority);\n }\n if (message.poolId !== \"0\") {\n writer.uint32(16).uint64(message.poolId);\n }\n if (message.reason !== \"\") {\n writer.uint32(26).string(message.reason);\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): MsgPausePool {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseMsgPausePool();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n message.authority = reader.string();\n continue;\n }\n case 2: {\n if (tag !== 16) {\n break;\n }\n\n message.poolId = reader.uint64().toString();\n continue;\n }\n case 3: {\n if (tag !== 26) {\n break;\n }\n\n message.reason = reader.string();\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): MsgPausePool {\n return {\n authority: isSet(object.authority) ? globalThis.String(object.authority) : \"\",\n poolId: isSet(object.poolId)\n ? globalThis.String(object.poolId)\n : isSet(object.pool_id)\n ? globalThis.String(object.pool_id)\n : \"0\",\n reason: isSet(object.reason) ? globalThis.String(object.reason) : \"\",\n };\n },\n\n toJSON(message: MsgPausePool): unknown {\n const obj: any = {};\n if (message.authority !== \"\") {\n obj.authority = message.authority;\n }\n if (message.poolId !== \"0\") {\n obj.poolId = message.poolId;\n }\n if (message.reason !== \"\") {\n obj.reason = message.reason;\n }\n return obj;\n },\n\n create(base?: DeepPartial<MsgPausePool>): MsgPausePool {\n return MsgPausePool.fromPartial(base ?? {});\n },\n fromPartial(object: DeepPartial<MsgPausePool>): MsgPausePool {\n const message = createBaseMsgPausePool();\n message.authority = object.authority ?? \"\";\n message.poolId = object.poolId ?? \"0\";\n message.reason = object.reason ?? \"\";\n return message;\n },\n};\n\nfunction createBaseMsgPausePoolResponse(): MsgPausePoolResponse {\n return {};\n}\n\nexport const MsgPausePoolResponse: MessageFns<MsgPausePoolResponse> = {\n encode(_: MsgPausePoolResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): MsgPausePoolResponse {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseMsgPausePoolResponse();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(_: any): MsgPausePoolResponse {\n return {};\n },\n\n toJSON(_: MsgPausePoolResponse): unknown {\n const obj: any = {};\n return obj;\n },\n\n create(base?: DeepPartial<MsgPausePoolResponse>): MsgPausePoolResponse {\n return MsgPausePoolResponse.fromPartial(base ?? {});\n },\n fromPartial(_: DeepPartial<MsgPausePoolResponse>): MsgPausePoolResponse {\n const message = createBaseMsgPausePoolResponse();\n return message;\n },\n};\n\nfunction createBaseMsgResumePool(): MsgResumePool {\n return { authority: \"\", poolId: \"0\" };\n}\n\nexport const MsgResumePool: MessageFns<MsgResumePool> = {\n encode(message: MsgResumePool, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.authority !== \"\") {\n writer.uint32(10).string(message.authority);\n }\n if (message.poolId !== \"0\") {\n writer.uint32(16).uint64(message.poolId);\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): MsgResumePool {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseMsgResumePool();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n message.authority = reader.string();\n continue;\n }\n case 2: {\n if (tag !== 16) {\n break;\n }\n\n message.poolId = reader.uint64().toString();\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): MsgResumePool {\n return {\n authority: isSet(object.authority) ? globalThis.String(object.authority) : \"\",\n poolId: isSet(object.poolId)\n ? globalThis.String(object.poolId)\n : isSet(object.pool_id)\n ? globalThis.String(object.pool_id)\n : \"0\",\n };\n },\n\n toJSON(message: MsgResumePool): unknown {\n const obj: any = {};\n if (message.authority !== \"\") {\n obj.authority = message.authority;\n }\n if (message.poolId !== \"0\") {\n obj.poolId = message.poolId;\n }\n return obj;\n },\n\n create(base?: DeepPartial<MsgResumePool>): MsgResumePool {\n return MsgResumePool.fromPartial(base ?? {});\n },\n fromPartial(object: DeepPartial<MsgResumePool>): MsgResumePool {\n const message = createBaseMsgResumePool();\n message.authority = object.authority ?? \"\";\n message.poolId = object.poolId ?? \"0\";\n return message;\n },\n};\n\nfunction createBaseMsgResumePoolResponse(): MsgResumePoolResponse {\n return {};\n}\n\nexport const MsgResumePoolResponse: MessageFns<MsgResumePoolResponse> = {\n encode(_: MsgResumePoolResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): MsgResumePoolResponse {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseMsgResumePoolResponse();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(_: any): MsgResumePoolResponse {\n return {};\n },\n\n toJSON(_: MsgResumePoolResponse): unknown {\n const obj: any = {};\n return obj;\n },\n\n create(base?: DeepPartial<MsgResumePoolResponse>): MsgResumePoolResponse {\n return MsgResumePoolResponse.fromPartial(base ?? {});\n },\n fromPartial(_: DeepPartial<MsgResumePoolResponse>): MsgResumePoolResponse {\n const message = createBaseMsgResumePoolResponse();\n return message;\n },\n};\n\nexport type MsgDefinition = typeof MsgDefinition;\nexport const MsgDefinition = {\n name: \"Msg\",\n fullName: \"qorechain.amm.v1.Msg\",\n methods: {\n createPool: {\n name: \"CreatePool\",\n requestType: MsgCreatePool as typeof MsgCreatePool,\n requestStream: false,\n responseType: MsgCreatePoolResponse as typeof MsgCreatePoolResponse,\n responseStream: false,\n options: {},\n },\n addLiquidity: {\n name: \"AddLiquidity\",\n requestType: MsgAddLiquidity as typeof MsgAddLiquidity,\n requestStream: false,\n responseType: MsgAddLiquidityResponse as typeof MsgAddLiquidityResponse,\n responseStream: false,\n options: {},\n },\n removeLiquidity: {\n name: \"RemoveLiquidity\",\n requestType: MsgRemoveLiquidity as typeof MsgRemoveLiquidity,\n requestStream: false,\n responseType: MsgRemoveLiquidityResponse as typeof MsgRemoveLiquidityResponse,\n responseStream: false,\n options: {},\n },\n swapExactIn: {\n name: \"SwapExactIn\",\n requestType: MsgSwapExactIn as typeof MsgSwapExactIn,\n requestStream: false,\n responseType: MsgSwapExactInResponse as typeof MsgSwapExactInResponse,\n responseStream: false,\n options: {},\n },\n swapExactOut: {\n name: \"SwapExactOut\",\n requestType: MsgSwapExactOut as typeof MsgSwapExactOut,\n requestStream: false,\n responseType: MsgSwapExactOutResponse as typeof MsgSwapExactOutResponse,\n responseStream: false,\n options: {},\n },\n pausePool: {\n name: \"PausePool\",\n requestType: MsgPausePool as typeof MsgPausePool,\n requestStream: false,\n responseType: MsgPausePoolResponse as typeof MsgPausePoolResponse,\n responseStream: false,\n options: {},\n },\n resumePool: {\n name: \"ResumePool\",\n requestType: MsgResumePool as typeof MsgResumePool,\n requestStream: false,\n responseType: MsgResumePoolResponse as typeof MsgResumePoolResponse,\n responseStream: false,\n options: {},\n },\n },\n} as const;\n\ntype Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;\n\nexport type DeepPartial<T> = T extends Builtin ? T\n : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>>\n : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>\n : T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }\n : Partial<T>;\n\nfunction isSet(value: any): boolean {\n return value !== null && value !== undefined;\n}\n\nexport interface MessageFns<T> {\n encode(message: T, writer?: BinaryWriter): BinaryWriter;\n decode(input: BinaryReader | Uint8Array, length?: number): T;\n fromJSON(object: any): T;\n toJSON(message: T): unknown;\n create(base?: DeepPartial<T>): T;\n fromPartial(object: DeepPartial<T>): T;\n}\n","// Code generated by protoc-gen-ts_proto. DO NOT EDIT.\n// versions:\n// protoc-gen-ts_proto v2.11.8\n// protoc unknown\n// source: cosmos/base/v1beta1/coin.proto\n\n/* eslint-disable */\nimport { BinaryReader, BinaryWriter } from \"@bufbuild/protobuf/wire\";\n\nexport const protobufPackage = \"cosmos.base.v1beta1\";\n\n/**\n * Coin defines a token with a denomination and an amount.\n *\n * NOTE: The amount field is an Int which implements the custom method\n * signatures required by gogoproto.\n */\nexport interface Coin {\n denom: string;\n amount: string;\n}\n\n/**\n * DecCoin defines a token with a denomination and a decimal amount.\n *\n * NOTE: The amount field is a Dec which implements the custom method\n * signatures required by gogoproto.\n */\nexport interface DecCoin {\n denom: string;\n amount: string;\n}\n\n/**\n * IntProto defines a Protobuf wrapper around an Int object.\n * Deprecated: Prefer to use math.Int directly. It supports binary Marshal and Unmarshal.\n */\nexport interface IntProto {\n int: string;\n}\n\n/**\n * DecProto defines a Protobuf wrapper around a Dec object.\n * Deprecated: Prefer to use math.LegacyDec directly. It supports binary Marshal and Unmarshal.\n */\nexport interface DecProto {\n dec: string;\n}\n\nfunction createBaseCoin(): Coin {\n return { denom: \"\", amount: \"\" };\n}\n\nexport const Coin: MessageFns<Coin> = {\n encode(message: Coin, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\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\n decode(input: BinaryReader | Uint8Array, length?: number): Coin {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const 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 if (tag !== 10) {\n break;\n }\n\n message.denom = reader.string();\n continue;\n }\n case 2: {\n if (tag !== 18) {\n break;\n }\n\n message.amount = reader.string();\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): Coin {\n return {\n denom: isSet(object.denom) ? globalThis.String(object.denom) : \"\",\n amount: isSet(object.amount) ? globalThis.String(object.amount) : \"\",\n };\n },\n\n toJSON(message: Coin): unknown {\n const obj: any = {};\n if (message.denom !== \"\") {\n obj.denom = message.denom;\n }\n if (message.amount !== \"\") {\n obj.amount = message.amount;\n }\n return obj;\n },\n\n create(base?: DeepPartial<Coin>): Coin {\n return Coin.fromPartial(base ?? {});\n },\n fromPartial(object: DeepPartial<Coin>): Coin {\n const message = createBaseCoin();\n message.denom = object.denom ?? \"\";\n message.amount = object.amount ?? \"\";\n return message;\n },\n};\n\nfunction createBaseDecCoin(): DecCoin {\n return { denom: \"\", amount: \"\" };\n}\n\nexport const DecCoin: MessageFns<DecCoin> = {\n encode(message: DecCoin, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\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\n decode(input: BinaryReader | Uint8Array, length?: number): DecCoin {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const 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 if (tag !== 10) {\n break;\n }\n\n message.denom = reader.string();\n continue;\n }\n case 2: {\n if (tag !== 18) {\n break;\n }\n\n message.amount = reader.string();\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): DecCoin {\n return {\n denom: isSet(object.denom) ? globalThis.String(object.denom) : \"\",\n amount: isSet(object.amount) ? globalThis.String(object.amount) : \"\",\n };\n },\n\n toJSON(message: DecCoin): unknown {\n const obj: any = {};\n if (message.denom !== \"\") {\n obj.denom = message.denom;\n }\n if (message.amount !== \"\") {\n obj.amount = message.amount;\n }\n return obj;\n },\n\n create(base?: DeepPartial<DecCoin>): DecCoin {\n return DecCoin.fromPartial(base ?? {});\n },\n fromPartial(object: DeepPartial<DecCoin>): DecCoin {\n const message = createBaseDecCoin();\n message.denom = object.denom ?? \"\";\n message.amount = object.amount ?? \"\";\n return message;\n },\n};\n\nfunction createBaseIntProto(): IntProto {\n return { int: \"\" };\n}\n\nexport const IntProto: MessageFns<IntProto> = {\n encode(message: IntProto, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.int !== \"\") {\n writer.uint32(10).string(message.int);\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): IntProto {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const 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 if (tag !== 10) {\n break;\n }\n\n message.int = reader.string();\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): IntProto {\n return { int: isSet(object.int) ? globalThis.String(object.int) : \"\" };\n },\n\n toJSON(message: IntProto): unknown {\n const obj: any = {};\n if (message.int !== \"\") {\n obj.int = message.int;\n }\n return obj;\n },\n\n create(base?: DeepPartial<IntProto>): IntProto {\n return IntProto.fromPartial(base ?? {});\n },\n fromPartial(object: DeepPartial<IntProto>): IntProto {\n const message = createBaseIntProto();\n message.int = object.int ?? \"\";\n return message;\n },\n};\n\nfunction createBaseDecProto(): DecProto {\n return { dec: \"\" };\n}\n\nexport const DecProto: MessageFns<DecProto> = {\n encode(message: DecProto, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.dec !== \"\") {\n writer.uint32(10).string(message.dec);\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): DecProto {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const 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 if (tag !== 10) {\n break;\n }\n\n message.dec = reader.string();\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): DecProto {\n return { dec: isSet(object.dec) ? globalThis.String(object.dec) : \"\" };\n },\n\n toJSON(message: DecProto): unknown {\n const obj: any = {};\n if (message.dec !== \"\") {\n obj.dec = message.dec;\n }\n return obj;\n },\n\n create(base?: DeepPartial<DecProto>): DecProto {\n return DecProto.fromPartial(base ?? {});\n },\n fromPartial(object: DeepPartial<DecProto>): DecProto {\n const message = createBaseDecProto();\n message.dec = object.dec ?? \"\";\n return message;\n },\n};\n\ntype Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;\n\nexport type DeepPartial<T> = T extends Builtin ? T\n : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>>\n : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>\n : T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }\n : Partial<T>;\n\nfunction isSet(value: any): boolean {\n return value !== null && value !== undefined;\n}\n\nexport interface MessageFns<T> {\n encode(message: T, writer?: BinaryWriter): BinaryWriter;\n decode(input: BinaryReader | Uint8Array, length?: number): T;\n fromJSON(object: any): T;\n toJSON(message: T): unknown;\n create(base?: DeepPartial<T>): T;\n fromPartial(object: DeepPartial<T>): T;\n}\n","// Code generated by protoc-gen-ts_proto. DO NOT EDIT.\n// versions:\n// protoc-gen-ts_proto v2.11.8\n// protoc unknown\n// source: qorechain/bridge/v1/tx.proto\n\n/* eslint-disable */\nimport { BinaryReader, BinaryWriter } from \"@bufbuild/protobuf/wire\";\n\nexport const protobufPackage = \"qorechain.bridge.v1\";\n\nexport interface MsgBridgeDeposit {\n sender: string;\n sourceChain: string;\n sourceTxHash: string;\n asset: string;\n amount: string;\n bridgeValidatorSigs: Uint8Array;\n pqcCommitment: Uint8Array;\n}\n\nexport interface MsgBridgeDepositResponse {\n}\n\nexport interface MsgBridgeWithdraw {\n sender: string;\n destinationChain: string;\n destinationAddress: string;\n asset: string;\n amount: string;\n}\n\nexport interface MsgBridgeWithdrawResponse {\n}\n\nexport interface MsgRegisterBridgeValidator {\n validatorAddress: string;\n pqcPubkey: Uint8Array;\n supportedChains: string[];\n}\n\nexport interface MsgRegisterBridgeValidatorResponse {\n}\n\nexport interface MsgBridgeAttestation {\n validator: string;\n chain: string;\n eventType: string;\n operationId: string;\n txHash: string;\n amount: string;\n asset: string;\n proof: Uint8Array;\n pqcSignature: Uint8Array;\n}\n\nexport interface MsgBridgeAttestationResponse {\n}\n\nfunction createBaseMsgBridgeDeposit(): MsgBridgeDeposit {\n return {\n sender: \"\",\n sourceChain: \"\",\n sourceTxHash: \"\",\n asset: \"\",\n amount: \"\",\n bridgeValidatorSigs: new Uint8Array(0),\n pqcCommitment: new Uint8Array(0),\n };\n}\n\nexport const MsgBridgeDeposit: MessageFns<MsgBridgeDeposit> = {\n encode(message: MsgBridgeDeposit, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.sender !== \"\") {\n writer.uint32(10).string(message.sender);\n }\n if (message.sourceChain !== \"\") {\n writer.uint32(18).string(message.sourceChain);\n }\n if (message.sourceTxHash !== \"\") {\n writer.uint32(26).string(message.sourceTxHash);\n }\n if (message.asset !== \"\") {\n writer.uint32(34).string(message.asset);\n }\n if (message.amount !== \"\") {\n writer.uint32(42).string(message.amount);\n }\n if (message.bridgeValidatorSigs.length !== 0) {\n writer.uint32(50).bytes(message.bridgeValidatorSigs);\n }\n if (message.pqcCommitment.length !== 0) {\n writer.uint32(58).bytes(message.pqcCommitment);\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): MsgBridgeDeposit {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseMsgBridgeDeposit();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n message.sender = reader.string();\n continue;\n }\n case 2: {\n if (tag !== 18) {\n break;\n }\n\n message.sourceChain = reader.string();\n continue;\n }\n case 3: {\n if (tag !== 26) {\n break;\n }\n\n message.sourceTxHash = reader.string();\n continue;\n }\n case 4: {\n if (tag !== 34) {\n break;\n }\n\n message.asset = reader.string();\n continue;\n }\n case 5: {\n if (tag !== 42) {\n break;\n }\n\n message.amount = reader.string();\n continue;\n }\n case 6: {\n if (tag !== 50) {\n break;\n }\n\n message.bridgeValidatorSigs = reader.bytes();\n continue;\n }\n case 7: {\n if (tag !== 58) {\n break;\n }\n\n message.pqcCommitment = reader.bytes();\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): MsgBridgeDeposit {\n return {\n sender: isSet(object.sender) ? globalThis.String(object.sender) : \"\",\n sourceChain: isSet(object.sourceChain)\n ? globalThis.String(object.sourceChain)\n : isSet(object.source_chain)\n ? globalThis.String(object.source_chain)\n : \"\",\n sourceTxHash: isSet(object.sourceTxHash)\n ? globalThis.String(object.sourceTxHash)\n : isSet(object.source_tx_hash)\n ? globalThis.String(object.source_tx_hash)\n : \"\",\n asset: isSet(object.asset) ? globalThis.String(object.asset) : \"\",\n amount: isSet(object.amount) ? globalThis.String(object.amount) : \"\",\n bridgeValidatorSigs: isSet(object.bridgeValidatorSigs)\n ? bytesFromBase64(object.bridgeValidatorSigs)\n : isSet(object.bridge_validator_sigs)\n ? bytesFromBase64(object.bridge_validator_sigs)\n : new Uint8Array(0),\n pqcCommitment: isSet(object.pqcCommitment)\n ? bytesFromBase64(object.pqcCommitment)\n : isSet(object.pqc_commitment)\n ? bytesFromBase64(object.pqc_commitment)\n : new Uint8Array(0),\n };\n },\n\n toJSON(message: MsgBridgeDeposit): unknown {\n const obj: any = {};\n if (message.sender !== \"\") {\n obj.sender = message.sender;\n }\n if (message.sourceChain !== \"\") {\n obj.sourceChain = message.sourceChain;\n }\n if (message.sourceTxHash !== \"\") {\n obj.sourceTxHash = message.sourceTxHash;\n }\n if (message.asset !== \"\") {\n obj.asset = message.asset;\n }\n if (message.amount !== \"\") {\n obj.amount = message.amount;\n }\n if (message.bridgeValidatorSigs.length !== 0) {\n obj.bridgeValidatorSigs = base64FromBytes(message.bridgeValidatorSigs);\n }\n if (message.pqcCommitment.length !== 0) {\n obj.pqcCommitment = base64FromBytes(message.pqcCommitment);\n }\n return obj;\n },\n\n create(base?: DeepPartial<MsgBridgeDeposit>): MsgBridgeDeposit {\n return MsgBridgeDeposit.fromPartial(base ?? {});\n },\n fromPartial(object: DeepPartial<MsgBridgeDeposit>): MsgBridgeDeposit {\n const message = createBaseMsgBridgeDeposit();\n message.sender = object.sender ?? \"\";\n message.sourceChain = object.sourceChain ?? \"\";\n message.sourceTxHash = object.sourceTxHash ?? \"\";\n message.asset = object.asset ?? \"\";\n message.amount = object.amount ?? \"\";\n message.bridgeValidatorSigs = object.bridgeValidatorSigs ?? new Uint8Array(0);\n message.pqcCommitment = object.pqcCommitment ?? new Uint8Array(0);\n return message;\n },\n};\n\nfunction createBaseMsgBridgeDepositResponse(): MsgBridgeDepositResponse {\n return {};\n}\n\nexport const MsgBridgeDepositResponse: MessageFns<MsgBridgeDepositResponse> = {\n encode(_: MsgBridgeDepositResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): MsgBridgeDepositResponse {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseMsgBridgeDepositResponse();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(_: any): MsgBridgeDepositResponse {\n return {};\n },\n\n toJSON(_: MsgBridgeDepositResponse): unknown {\n const obj: any = {};\n return obj;\n },\n\n create(base?: DeepPartial<MsgBridgeDepositResponse>): MsgBridgeDepositResponse {\n return MsgBridgeDepositResponse.fromPartial(base ?? {});\n },\n fromPartial(_: DeepPartial<MsgBridgeDepositResponse>): MsgBridgeDepositResponse {\n const message = createBaseMsgBridgeDepositResponse();\n return message;\n },\n};\n\nfunction createBaseMsgBridgeWithdraw(): MsgBridgeWithdraw {\n return { sender: \"\", destinationChain: \"\", destinationAddress: \"\", asset: \"\", amount: \"\" };\n}\n\nexport const MsgBridgeWithdraw: MessageFns<MsgBridgeWithdraw> = {\n encode(message: MsgBridgeWithdraw, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.sender !== \"\") {\n writer.uint32(10).string(message.sender);\n }\n if (message.destinationChain !== \"\") {\n writer.uint32(18).string(message.destinationChain);\n }\n if (message.destinationAddress !== \"\") {\n writer.uint32(26).string(message.destinationAddress);\n }\n if (message.asset !== \"\") {\n writer.uint32(34).string(message.asset);\n }\n if (message.amount !== \"\") {\n writer.uint32(42).string(message.amount);\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): MsgBridgeWithdraw {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseMsgBridgeWithdraw();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n message.sender = reader.string();\n continue;\n }\n case 2: {\n if (tag !== 18) {\n break;\n }\n\n message.destinationChain = reader.string();\n continue;\n }\n case 3: {\n if (tag !== 26) {\n break;\n }\n\n message.destinationAddress = reader.string();\n continue;\n }\n case 4: {\n if (tag !== 34) {\n break;\n }\n\n message.asset = reader.string();\n continue;\n }\n case 5: {\n if (tag !== 42) {\n break;\n }\n\n message.amount = reader.string();\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): MsgBridgeWithdraw {\n return {\n sender: isSet(object.sender) ? globalThis.String(object.sender) : \"\",\n destinationChain: isSet(object.destinationChain)\n ? globalThis.String(object.destinationChain)\n : isSet(object.destination_chain)\n ? globalThis.String(object.destination_chain)\n : \"\",\n destinationAddress: isSet(object.destinationAddress)\n ? globalThis.String(object.destinationAddress)\n : isSet(object.destination_address)\n ? globalThis.String(object.destination_address)\n : \"\",\n asset: isSet(object.asset) ? globalThis.String(object.asset) : \"\",\n amount: isSet(object.amount) ? globalThis.String(object.amount) : \"\",\n };\n },\n\n toJSON(message: MsgBridgeWithdraw): unknown {\n const obj: any = {};\n if (message.sender !== \"\") {\n obj.sender = message.sender;\n }\n if (message.destinationChain !== \"\") {\n obj.destinationChain = message.destinationChain;\n }\n if (message.destinationAddress !== \"\") {\n obj.destinationAddress = message.destinationAddress;\n }\n if (message.asset !== \"\") {\n obj.asset = message.asset;\n }\n if (message.amount !== \"\") {\n obj.amount = message.amount;\n }\n return obj;\n },\n\n create(base?: DeepPartial<MsgBridgeWithdraw>): MsgBridgeWithdraw {\n return MsgBridgeWithdraw.fromPartial(base ?? {});\n },\n fromPartial(object: DeepPartial<MsgBridgeWithdraw>): MsgBridgeWithdraw {\n const message = createBaseMsgBridgeWithdraw();\n message.sender = object.sender ?? \"\";\n message.destinationChain = object.destinationChain ?? \"\";\n message.destinationAddress = object.destinationAddress ?? \"\";\n message.asset = object.asset ?? \"\";\n message.amount = object.amount ?? \"\";\n return message;\n },\n};\n\nfunction createBaseMsgBridgeWithdrawResponse(): MsgBridgeWithdrawResponse {\n return {};\n}\n\nexport const MsgBridgeWithdrawResponse: MessageFns<MsgBridgeWithdrawResponse> = {\n encode(_: MsgBridgeWithdrawResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): MsgBridgeWithdrawResponse {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseMsgBridgeWithdrawResponse();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(_: any): MsgBridgeWithdrawResponse {\n return {};\n },\n\n toJSON(_: MsgBridgeWithdrawResponse): unknown {\n const obj: any = {};\n return obj;\n },\n\n create(base?: DeepPartial<MsgBridgeWithdrawResponse>): MsgBridgeWithdrawResponse {\n return MsgBridgeWithdrawResponse.fromPartial(base ?? {});\n },\n fromPartial(_: DeepPartial<MsgBridgeWithdrawResponse>): MsgBridgeWithdrawResponse {\n const message = createBaseMsgBridgeWithdrawResponse();\n return message;\n },\n};\n\nfunction createBaseMsgRegisterBridgeValidator(): MsgRegisterBridgeValidator {\n return { validatorAddress: \"\", pqcPubkey: new Uint8Array(0), supportedChains: [] };\n}\n\nexport const MsgRegisterBridgeValidator: MessageFns<MsgRegisterBridgeValidator> = {\n encode(message: MsgRegisterBridgeValidator, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.validatorAddress !== \"\") {\n writer.uint32(10).string(message.validatorAddress);\n }\n if (message.pqcPubkey.length !== 0) {\n writer.uint32(18).bytes(message.pqcPubkey);\n }\n for (const v of message.supportedChains) {\n writer.uint32(26).string(v!);\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): MsgRegisterBridgeValidator {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseMsgRegisterBridgeValidator();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n message.validatorAddress = reader.string();\n continue;\n }\n case 2: {\n if (tag !== 18) {\n break;\n }\n\n message.pqcPubkey = reader.bytes();\n continue;\n }\n case 3: {\n if (tag !== 26) {\n break;\n }\n\n message.supportedChains.push(reader.string());\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): MsgRegisterBridgeValidator {\n return {\n validatorAddress: isSet(object.validatorAddress)\n ? globalThis.String(object.validatorAddress)\n : isSet(object.validator_address)\n ? globalThis.String(object.validator_address)\n : \"\",\n pqcPubkey: isSet(object.pqcPubkey)\n ? bytesFromBase64(object.pqcPubkey)\n : isSet(object.pqc_pubkey)\n ? bytesFromBase64(object.pqc_pubkey)\n : new Uint8Array(0),\n supportedChains: globalThis.Array.isArray(object?.supportedChains)\n ? object.supportedChains.map((e: any) => globalThis.String(e))\n : globalThis.Array.isArray(object?.supported_chains)\n ? object.supported_chains.map((e: any) => globalThis.String(e))\n : [],\n };\n },\n\n toJSON(message: MsgRegisterBridgeValidator): unknown {\n const obj: any = {};\n if (message.validatorAddress !== \"\") {\n obj.validatorAddress = message.validatorAddress;\n }\n if (message.pqcPubkey.length !== 0) {\n obj.pqcPubkey = base64FromBytes(message.pqcPubkey);\n }\n if (message.supportedChains?.length) {\n obj.supportedChains = message.supportedChains;\n }\n return obj;\n },\n\n create(base?: DeepPartial<MsgRegisterBridgeValidator>): MsgRegisterBridgeValidator {\n return MsgRegisterBridgeValidator.fromPartial(base ?? {});\n },\n fromPartial(object: DeepPartial<MsgRegisterBridgeValidator>): MsgRegisterBridgeValidator {\n const message = createBaseMsgRegisterBridgeValidator();\n message.validatorAddress = object.validatorAddress ?? \"\";\n message.pqcPubkey = object.pqcPubkey ?? new Uint8Array(0);\n message.supportedChains = object.supportedChains?.map((e) => e) || [];\n return message;\n },\n};\n\nfunction createBaseMsgRegisterBridgeValidatorResponse(): MsgRegisterBridgeValidatorResponse {\n return {};\n}\n\nexport const MsgRegisterBridgeValidatorResponse: MessageFns<MsgRegisterBridgeValidatorResponse> = {\n encode(_: MsgRegisterBridgeValidatorResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): MsgRegisterBridgeValidatorResponse {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseMsgRegisterBridgeValidatorResponse();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(_: any): MsgRegisterBridgeValidatorResponse {\n return {};\n },\n\n toJSON(_: MsgRegisterBridgeValidatorResponse): unknown {\n const obj: any = {};\n return obj;\n },\n\n create(base?: DeepPartial<MsgRegisterBridgeValidatorResponse>): MsgRegisterBridgeValidatorResponse {\n return MsgRegisterBridgeValidatorResponse.fromPartial(base ?? {});\n },\n fromPartial(_: DeepPartial<MsgRegisterBridgeValidatorResponse>): MsgRegisterBridgeValidatorResponse {\n const message = createBaseMsgRegisterBridgeValidatorResponse();\n return message;\n },\n};\n\nfunction createBaseMsgBridgeAttestation(): MsgBridgeAttestation {\n return {\n validator: \"\",\n chain: \"\",\n eventType: \"\",\n operationId: \"\",\n txHash: \"\",\n amount: \"\",\n asset: \"\",\n proof: new Uint8Array(0),\n pqcSignature: new Uint8Array(0),\n };\n}\n\nexport const MsgBridgeAttestation: MessageFns<MsgBridgeAttestation> = {\n encode(message: MsgBridgeAttestation, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.validator !== \"\") {\n writer.uint32(10).string(message.validator);\n }\n if (message.chain !== \"\") {\n writer.uint32(18).string(message.chain);\n }\n if (message.eventType !== \"\") {\n writer.uint32(26).string(message.eventType);\n }\n if (message.operationId !== \"\") {\n writer.uint32(34).string(message.operationId);\n }\n if (message.txHash !== \"\") {\n writer.uint32(42).string(message.txHash);\n }\n if (message.amount !== \"\") {\n writer.uint32(50).string(message.amount);\n }\n if (message.asset !== \"\") {\n writer.uint32(58).string(message.asset);\n }\n if (message.proof.length !== 0) {\n writer.uint32(66).bytes(message.proof);\n }\n if (message.pqcSignature.length !== 0) {\n writer.uint32(74).bytes(message.pqcSignature);\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): MsgBridgeAttestation {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseMsgBridgeAttestation();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n message.validator = reader.string();\n continue;\n }\n case 2: {\n if (tag !== 18) {\n break;\n }\n\n message.chain = reader.string();\n continue;\n }\n case 3: {\n if (tag !== 26) {\n break;\n }\n\n message.eventType = reader.string();\n continue;\n }\n case 4: {\n if (tag !== 34) {\n break;\n }\n\n message.operationId = reader.string();\n continue;\n }\n case 5: {\n if (tag !== 42) {\n break;\n }\n\n message.txHash = reader.string();\n continue;\n }\n case 6: {\n if (tag !== 50) {\n break;\n }\n\n message.amount = reader.string();\n continue;\n }\n case 7: {\n if (tag !== 58) {\n break;\n }\n\n message.asset = reader.string();\n continue;\n }\n case 8: {\n if (tag !== 66) {\n break;\n }\n\n message.proof = reader.bytes();\n continue;\n }\n case 9: {\n if (tag !== 74) {\n break;\n }\n\n message.pqcSignature = reader.bytes();\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): MsgBridgeAttestation {\n return {\n validator: isSet(object.validator) ? globalThis.String(object.validator) : \"\",\n chain: isSet(object.chain) ? globalThis.String(object.chain) : \"\",\n eventType: isSet(object.eventType)\n ? globalThis.String(object.eventType)\n : isSet(object.event_type)\n ? globalThis.String(object.event_type)\n : \"\",\n operationId: isSet(object.operationId)\n ? globalThis.String(object.operationId)\n : isSet(object.operation_id)\n ? globalThis.String(object.operation_id)\n : \"\",\n txHash: isSet(object.txHash)\n ? globalThis.String(object.txHash)\n : isSet(object.tx_hash)\n ? globalThis.String(object.tx_hash)\n : \"\",\n amount: isSet(object.amount) ? globalThis.String(object.amount) : \"\",\n asset: isSet(object.asset) ? globalThis.String(object.asset) : \"\",\n proof: isSet(object.proof) ? bytesFromBase64(object.proof) : new Uint8Array(0),\n pqcSignature: isSet(object.pqcSignature)\n ? bytesFromBase64(object.pqcSignature)\n : isSet(object.pqc_signature)\n ? bytesFromBase64(object.pqc_signature)\n : new Uint8Array(0),\n };\n },\n\n toJSON(message: MsgBridgeAttestation): unknown {\n const obj: any = {};\n if (message.validator !== \"\") {\n obj.validator = message.validator;\n }\n if (message.chain !== \"\") {\n obj.chain = message.chain;\n }\n if (message.eventType !== \"\") {\n obj.eventType = message.eventType;\n }\n if (message.operationId !== \"\") {\n obj.operationId = message.operationId;\n }\n if (message.txHash !== \"\") {\n obj.txHash = message.txHash;\n }\n if (message.amount !== \"\") {\n obj.amount = message.amount;\n }\n if (message.asset !== \"\") {\n obj.asset = message.asset;\n }\n if (message.proof.length !== 0) {\n obj.proof = base64FromBytes(message.proof);\n }\n if (message.pqcSignature.length !== 0) {\n obj.pqcSignature = base64FromBytes(message.pqcSignature);\n }\n return obj;\n },\n\n create(base?: DeepPartial<MsgBridgeAttestation>): MsgBridgeAttestation {\n return MsgBridgeAttestation.fromPartial(base ?? {});\n },\n fromPartial(object: DeepPartial<MsgBridgeAttestation>): MsgBridgeAttestation {\n const message = createBaseMsgBridgeAttestation();\n message.validator = object.validator ?? \"\";\n message.chain = object.chain ?? \"\";\n message.eventType = object.eventType ?? \"\";\n message.operationId = object.operationId ?? \"\";\n message.txHash = object.txHash ?? \"\";\n message.amount = object.amount ?? \"\";\n message.asset = object.asset ?? \"\";\n message.proof = object.proof ?? new Uint8Array(0);\n message.pqcSignature = object.pqcSignature ?? new Uint8Array(0);\n return message;\n },\n};\n\nfunction createBaseMsgBridgeAttestationResponse(): MsgBridgeAttestationResponse {\n return {};\n}\n\nexport const MsgBridgeAttestationResponse: MessageFns<MsgBridgeAttestationResponse> = {\n encode(_: MsgBridgeAttestationResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): MsgBridgeAttestationResponse {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseMsgBridgeAttestationResponse();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(_: any): MsgBridgeAttestationResponse {\n return {};\n },\n\n toJSON(_: MsgBridgeAttestationResponse): unknown {\n const obj: any = {};\n return obj;\n },\n\n create(base?: DeepPartial<MsgBridgeAttestationResponse>): MsgBridgeAttestationResponse {\n return MsgBridgeAttestationResponse.fromPartial(base ?? {});\n },\n fromPartial(_: DeepPartial<MsgBridgeAttestationResponse>): MsgBridgeAttestationResponse {\n const message = createBaseMsgBridgeAttestationResponse();\n return message;\n },\n};\n\n/** Msg defines the bridge module's transaction service. */\nexport type MsgDefinition = typeof MsgDefinition;\nexport const MsgDefinition = {\n name: \"Msg\",\n fullName: \"qorechain.bridge.v1.Msg\",\n methods: {\n /** BridgeDeposit credits assets bridged in from a source chain. */\n bridgeDeposit: {\n name: \"BridgeDeposit\",\n requestType: MsgBridgeDeposit as typeof MsgBridgeDeposit,\n requestStream: false,\n responseType: MsgBridgeDepositResponse as typeof MsgBridgeDepositResponse,\n responseStream: false,\n options: {},\n },\n /** BridgeWithdraw initiates a withdrawal to a destination chain. */\n bridgeWithdraw: {\n name: \"BridgeWithdraw\",\n requestType: MsgBridgeWithdraw as typeof MsgBridgeWithdraw,\n requestStream: false,\n responseType: MsgBridgeWithdrawResponse as typeof MsgBridgeWithdrawResponse,\n responseStream: false,\n options: {},\n },\n /** RegisterBridgeValidator registers a validator for bridge attestation duty. */\n registerBridgeValidator: {\n name: \"RegisterBridgeValidator\",\n requestType: MsgRegisterBridgeValidator as typeof MsgRegisterBridgeValidator,\n requestStream: false,\n responseType: MsgRegisterBridgeValidatorResponse as typeof MsgRegisterBridgeValidatorResponse,\n responseStream: false,\n options: {},\n },\n /** BridgeAttestation submits a validator attestation for a bridge operation. */\n bridgeAttestation: {\n name: \"BridgeAttestation\",\n requestType: MsgBridgeAttestation as typeof MsgBridgeAttestation,\n requestStream: false,\n responseType: MsgBridgeAttestationResponse as typeof MsgBridgeAttestationResponse,\n responseStream: false,\n options: {},\n },\n },\n} as const;\n\nfunction bytesFromBase64(b64: string): Uint8Array {\n if ((globalThis as any).Buffer) {\n return Uint8Array.from((globalThis as any).Buffer.from(b64, \"base64\"));\n } else {\n const bin = globalThis.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 }\n}\n\nfunction base64FromBytes(arr: Uint8Array): string {\n if ((globalThis as any).Buffer) {\n return (globalThis as any).Buffer.from(arr).toString(\"base64\");\n } else {\n const bin: string[] = [];\n arr.forEach((byte) => {\n bin.push(globalThis.String.fromCharCode(byte));\n });\n return globalThis.btoa(bin.join(\"\"));\n }\n}\n\ntype Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;\n\nexport type DeepPartial<T> = T extends Builtin ? T\n : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>>\n : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>\n : T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }\n : Partial<T>;\n\nfunction isSet(value: any): boolean {\n return value !== null && value !== undefined;\n}\n\nexport interface MessageFns<T> {\n encode(message: T, writer?: BinaryWriter): BinaryWriter;\n decode(input: BinaryReader | Uint8Array, length?: number): T;\n fromJSON(object: any): T;\n toJSON(message: T): unknown;\n create(base?: DeepPartial<T>): T;\n fromPartial(object: DeepPartial<T>): T;\n}\n","// Code generated by protoc-gen-ts_proto. DO NOT EDIT.\n// versions:\n// protoc-gen-ts_proto v2.11.8\n// protoc unknown\n// source: qorechain/rdk/v1/tx.proto\n\n/* eslint-disable */\nimport { BinaryReader, BinaryWriter } from \"@bufbuild/protobuf/wire\";\n\nexport const protobufPackage = \"qorechain.rdk.v1\";\n\nexport interface MsgCreateRollup {\n creator: string;\n rollupId: string;\n profile: string;\n vmType: string;\n stakeAmount: string;\n}\n\nexport interface MsgCreateRollupResponse {\n rollupId: string;\n}\n\nexport interface MsgSubmitBatch {\n sequencer: string;\n rollupId: string;\n batchIndex: string;\n stateRoot: Uint8Array;\n prevStateRoot: Uint8Array;\n txCount: string;\n dataHash: Uint8Array;\n proof: Uint8Array;\n}\n\nexport interface MsgSubmitBatchResponse {\n}\n\nexport interface MsgChallengeBatch {\n challenger: string;\n rollupId: string;\n batchIndex: string;\n proof: Uint8Array;\n}\n\nexport interface MsgChallengeBatchResponse {\n}\n\nexport interface MsgResolveChallenge {\n resolver: string;\n rollupId: string;\n batchIndex: string;\n /**\n * fraud_upheld true: fraud confirmed -> batch rejected, challenger refunded +\n * rewarded from rollup stake. false: challenge dismissed -> challenger bond\n * forfeited to the rollup operator, batch eligible for finalization.\n */\n fraudUpheld: boolean;\n}\n\nexport interface MsgResolveChallengeResponse {\n}\n\nexport interface MsgPauseRollup {\n creator: string;\n rollupId: string;\n reason: string;\n}\n\nexport interface MsgPauseRollupResponse {\n}\n\nexport interface MsgResumeRollup {\n creator: string;\n rollupId: string;\n}\n\nexport interface MsgResumeRollupResponse {\n}\n\nexport interface MsgStopRollup {\n creator: string;\n rollupId: string;\n}\n\nexport interface MsgStopRollupResponse {\n}\n\nfunction createBaseMsgCreateRollup(): MsgCreateRollup {\n return { creator: \"\", rollupId: \"\", profile: \"\", vmType: \"\", stakeAmount: \"0\" };\n}\n\nexport const MsgCreateRollup: MessageFns<MsgCreateRollup> = {\n encode(message: MsgCreateRollup, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.creator !== \"\") {\n writer.uint32(10).string(message.creator);\n }\n if (message.rollupId !== \"\") {\n writer.uint32(18).string(message.rollupId);\n }\n if (message.profile !== \"\") {\n writer.uint32(26).string(message.profile);\n }\n if (message.vmType !== \"\") {\n writer.uint32(34).string(message.vmType);\n }\n if (message.stakeAmount !== \"0\") {\n writer.uint32(40).int64(message.stakeAmount);\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): MsgCreateRollup {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseMsgCreateRollup();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n message.creator = reader.string();\n continue;\n }\n case 2: {\n if (tag !== 18) {\n break;\n }\n\n message.rollupId = reader.string();\n continue;\n }\n case 3: {\n if (tag !== 26) {\n break;\n }\n\n message.profile = reader.string();\n continue;\n }\n case 4: {\n if (tag !== 34) {\n break;\n }\n\n message.vmType = reader.string();\n continue;\n }\n case 5: {\n if (tag !== 40) {\n break;\n }\n\n message.stakeAmount = reader.int64().toString();\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): MsgCreateRollup {\n return {\n creator: isSet(object.creator) ? globalThis.String(object.creator) : \"\",\n rollupId: isSet(object.rollupId)\n ? globalThis.String(object.rollupId)\n : isSet(object.rollup_id)\n ? globalThis.String(object.rollup_id)\n : \"\",\n profile: isSet(object.profile) ? globalThis.String(object.profile) : \"\",\n vmType: isSet(object.vmType)\n ? globalThis.String(object.vmType)\n : isSet(object.vm_type)\n ? globalThis.String(object.vm_type)\n : \"\",\n stakeAmount: isSet(object.stakeAmount)\n ? globalThis.String(object.stakeAmount)\n : isSet(object.stake_amount)\n ? globalThis.String(object.stake_amount)\n : \"0\",\n };\n },\n\n toJSON(message: MsgCreateRollup): unknown {\n const obj: any = {};\n if (message.creator !== \"\") {\n obj.creator = message.creator;\n }\n if (message.rollupId !== \"\") {\n obj.rollupId = message.rollupId;\n }\n if (message.profile !== \"\") {\n obj.profile = message.profile;\n }\n if (message.vmType !== \"\") {\n obj.vmType = message.vmType;\n }\n if (message.stakeAmount !== \"0\") {\n obj.stakeAmount = message.stakeAmount;\n }\n return obj;\n },\n\n create(base?: DeepPartial<MsgCreateRollup>): MsgCreateRollup {\n return MsgCreateRollup.fromPartial(base ?? {});\n },\n fromPartial(object: DeepPartial<MsgCreateRollup>): MsgCreateRollup {\n const message = createBaseMsgCreateRollup();\n message.creator = object.creator ?? \"\";\n message.rollupId = object.rollupId ?? \"\";\n message.profile = object.profile ?? \"\";\n message.vmType = object.vmType ?? \"\";\n message.stakeAmount = object.stakeAmount ?? \"0\";\n return message;\n },\n};\n\nfunction createBaseMsgCreateRollupResponse(): MsgCreateRollupResponse {\n return { rollupId: \"\" };\n}\n\nexport const MsgCreateRollupResponse: MessageFns<MsgCreateRollupResponse> = {\n encode(message: MsgCreateRollupResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.rollupId !== \"\") {\n writer.uint32(10).string(message.rollupId);\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): MsgCreateRollupResponse {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseMsgCreateRollupResponse();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n message.rollupId = reader.string();\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): MsgCreateRollupResponse {\n return {\n rollupId: isSet(object.rollupId)\n ? globalThis.String(object.rollupId)\n : isSet(object.rollup_id)\n ? globalThis.String(object.rollup_id)\n : \"\",\n };\n },\n\n toJSON(message: MsgCreateRollupResponse): unknown {\n const obj: any = {};\n if (message.rollupId !== \"\") {\n obj.rollupId = message.rollupId;\n }\n return obj;\n },\n\n create(base?: DeepPartial<MsgCreateRollupResponse>): MsgCreateRollupResponse {\n return MsgCreateRollupResponse.fromPartial(base ?? {});\n },\n fromPartial(object: DeepPartial<MsgCreateRollupResponse>): MsgCreateRollupResponse {\n const message = createBaseMsgCreateRollupResponse();\n message.rollupId = object.rollupId ?? \"\";\n return message;\n },\n};\n\nfunction createBaseMsgSubmitBatch(): MsgSubmitBatch {\n return {\n sequencer: \"\",\n rollupId: \"\",\n batchIndex: \"0\",\n stateRoot: new Uint8Array(0),\n prevStateRoot: new Uint8Array(0),\n txCount: \"0\",\n dataHash: new Uint8Array(0),\n proof: new Uint8Array(0),\n };\n}\n\nexport const MsgSubmitBatch: MessageFns<MsgSubmitBatch> = {\n encode(message: MsgSubmitBatch, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.sequencer !== \"\") {\n writer.uint32(10).string(message.sequencer);\n }\n if (message.rollupId !== \"\") {\n writer.uint32(18).string(message.rollupId);\n }\n if (message.batchIndex !== \"0\") {\n writer.uint32(24).uint64(message.batchIndex);\n }\n if (message.stateRoot.length !== 0) {\n writer.uint32(34).bytes(message.stateRoot);\n }\n if (message.prevStateRoot.length !== 0) {\n writer.uint32(42).bytes(message.prevStateRoot);\n }\n if (message.txCount !== \"0\") {\n writer.uint32(48).uint64(message.txCount);\n }\n if (message.dataHash.length !== 0) {\n writer.uint32(58).bytes(message.dataHash);\n }\n if (message.proof.length !== 0) {\n writer.uint32(66).bytes(message.proof);\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): MsgSubmitBatch {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseMsgSubmitBatch();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n message.sequencer = reader.string();\n continue;\n }\n case 2: {\n if (tag !== 18) {\n break;\n }\n\n message.rollupId = reader.string();\n continue;\n }\n case 3: {\n if (tag !== 24) {\n break;\n }\n\n message.batchIndex = reader.uint64().toString();\n continue;\n }\n case 4: {\n if (tag !== 34) {\n break;\n }\n\n message.stateRoot = reader.bytes();\n continue;\n }\n case 5: {\n if (tag !== 42) {\n break;\n }\n\n message.prevStateRoot = reader.bytes();\n continue;\n }\n case 6: {\n if (tag !== 48) {\n break;\n }\n\n message.txCount = reader.uint64().toString();\n continue;\n }\n case 7: {\n if (tag !== 58) {\n break;\n }\n\n message.dataHash = reader.bytes();\n continue;\n }\n case 8: {\n if (tag !== 66) {\n break;\n }\n\n message.proof = reader.bytes();\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): MsgSubmitBatch {\n return {\n sequencer: isSet(object.sequencer) ? globalThis.String(object.sequencer) : \"\",\n rollupId: isSet(object.rollupId)\n ? globalThis.String(object.rollupId)\n : isSet(object.rollup_id)\n ? globalThis.String(object.rollup_id)\n : \"\",\n batchIndex: isSet(object.batchIndex)\n ? globalThis.String(object.batchIndex)\n : isSet(object.batch_index)\n ? globalThis.String(object.batch_index)\n : \"0\",\n stateRoot: isSet(object.stateRoot)\n ? bytesFromBase64(object.stateRoot)\n : isSet(object.state_root)\n ? bytesFromBase64(object.state_root)\n : new Uint8Array(0),\n prevStateRoot: isSet(object.prevStateRoot)\n ? bytesFromBase64(object.prevStateRoot)\n : isSet(object.prev_state_root)\n ? bytesFromBase64(object.prev_state_root)\n : new Uint8Array(0),\n txCount: isSet(object.txCount)\n ? globalThis.String(object.txCount)\n : isSet(object.tx_count)\n ? globalThis.String(object.tx_count)\n : \"0\",\n dataHash: isSet(object.dataHash)\n ? bytesFromBase64(object.dataHash)\n : isSet(object.data_hash)\n ? bytesFromBase64(object.data_hash)\n : new Uint8Array(0),\n proof: isSet(object.proof) ? bytesFromBase64(object.proof) : new Uint8Array(0),\n };\n },\n\n toJSON(message: MsgSubmitBatch): unknown {\n const obj: any = {};\n if (message.sequencer !== \"\") {\n obj.sequencer = message.sequencer;\n }\n if (message.rollupId !== \"\") {\n obj.rollupId = message.rollupId;\n }\n if (message.batchIndex !== \"0\") {\n obj.batchIndex = message.batchIndex;\n }\n if (message.stateRoot.length !== 0) {\n obj.stateRoot = base64FromBytes(message.stateRoot);\n }\n if (message.prevStateRoot.length !== 0) {\n obj.prevStateRoot = base64FromBytes(message.prevStateRoot);\n }\n if (message.txCount !== \"0\") {\n obj.txCount = message.txCount;\n }\n if (message.dataHash.length !== 0) {\n obj.dataHash = base64FromBytes(message.dataHash);\n }\n if (message.proof.length !== 0) {\n obj.proof = base64FromBytes(message.proof);\n }\n return obj;\n },\n\n create(base?: DeepPartial<MsgSubmitBatch>): MsgSubmitBatch {\n return MsgSubmitBatch.fromPartial(base ?? {});\n },\n fromPartial(object: DeepPartial<MsgSubmitBatch>): MsgSubmitBatch {\n const message = createBaseMsgSubmitBatch();\n message.sequencer = object.sequencer ?? \"\";\n message.rollupId = object.rollupId ?? \"\";\n message.batchIndex = object.batchIndex ?? \"0\";\n message.stateRoot = object.stateRoot ?? new Uint8Array(0);\n message.prevStateRoot = object.prevStateRoot ?? new Uint8Array(0);\n message.txCount = object.txCount ?? \"0\";\n message.dataHash = object.dataHash ?? new Uint8Array(0);\n message.proof = object.proof ?? new Uint8Array(0);\n return message;\n },\n};\n\nfunction createBaseMsgSubmitBatchResponse(): MsgSubmitBatchResponse {\n return {};\n}\n\nexport const MsgSubmitBatchResponse: MessageFns<MsgSubmitBatchResponse> = {\n encode(_: MsgSubmitBatchResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): MsgSubmitBatchResponse {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseMsgSubmitBatchResponse();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(_: any): MsgSubmitBatchResponse {\n return {};\n },\n\n toJSON(_: MsgSubmitBatchResponse): unknown {\n const obj: any = {};\n return obj;\n },\n\n create(base?: DeepPartial<MsgSubmitBatchResponse>): MsgSubmitBatchResponse {\n return MsgSubmitBatchResponse.fromPartial(base ?? {});\n },\n fromPartial(_: DeepPartial<MsgSubmitBatchResponse>): MsgSubmitBatchResponse {\n const message = createBaseMsgSubmitBatchResponse();\n return message;\n },\n};\n\nfunction createBaseMsgChallengeBatch(): MsgChallengeBatch {\n return { challenger: \"\", rollupId: \"\", batchIndex: \"0\", proof: new Uint8Array(0) };\n}\n\nexport const MsgChallengeBatch: MessageFns<MsgChallengeBatch> = {\n encode(message: MsgChallengeBatch, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.challenger !== \"\") {\n writer.uint32(10).string(message.challenger);\n }\n if (message.rollupId !== \"\") {\n writer.uint32(18).string(message.rollupId);\n }\n if (message.batchIndex !== \"0\") {\n writer.uint32(24).uint64(message.batchIndex);\n }\n if (message.proof.length !== 0) {\n writer.uint32(34).bytes(message.proof);\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): MsgChallengeBatch {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseMsgChallengeBatch();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n message.challenger = reader.string();\n continue;\n }\n case 2: {\n if (tag !== 18) {\n break;\n }\n\n message.rollupId = reader.string();\n continue;\n }\n case 3: {\n if (tag !== 24) {\n break;\n }\n\n message.batchIndex = reader.uint64().toString();\n continue;\n }\n case 4: {\n if (tag !== 34) {\n break;\n }\n\n message.proof = reader.bytes();\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): MsgChallengeBatch {\n return {\n challenger: isSet(object.challenger) ? globalThis.String(object.challenger) : \"\",\n rollupId: isSet(object.rollupId)\n ? globalThis.String(object.rollupId)\n : isSet(object.rollup_id)\n ? globalThis.String(object.rollup_id)\n : \"\",\n batchIndex: isSet(object.batchIndex)\n ? globalThis.String(object.batchIndex)\n : isSet(object.batch_index)\n ? globalThis.String(object.batch_index)\n : \"0\",\n proof: isSet(object.proof) ? bytesFromBase64(object.proof) : new Uint8Array(0),\n };\n },\n\n toJSON(message: MsgChallengeBatch): unknown {\n const obj: any = {};\n if (message.challenger !== \"\") {\n obj.challenger = message.challenger;\n }\n if (message.rollupId !== \"\") {\n obj.rollupId = message.rollupId;\n }\n if (message.batchIndex !== \"0\") {\n obj.batchIndex = message.batchIndex;\n }\n if (message.proof.length !== 0) {\n obj.proof = base64FromBytes(message.proof);\n }\n return obj;\n },\n\n create(base?: DeepPartial<MsgChallengeBatch>): MsgChallengeBatch {\n return MsgChallengeBatch.fromPartial(base ?? {});\n },\n fromPartial(object: DeepPartial<MsgChallengeBatch>): MsgChallengeBatch {\n const message = createBaseMsgChallengeBatch();\n message.challenger = object.challenger ?? \"\";\n message.rollupId = object.rollupId ?? \"\";\n message.batchIndex = object.batchIndex ?? \"0\";\n message.proof = object.proof ?? new Uint8Array(0);\n return message;\n },\n};\n\nfunction createBaseMsgChallengeBatchResponse(): MsgChallengeBatchResponse {\n return {};\n}\n\nexport const MsgChallengeBatchResponse: MessageFns<MsgChallengeBatchResponse> = {\n encode(_: MsgChallengeBatchResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): MsgChallengeBatchResponse {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseMsgChallengeBatchResponse();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(_: any): MsgChallengeBatchResponse {\n return {};\n },\n\n toJSON(_: MsgChallengeBatchResponse): unknown {\n const obj: any = {};\n return obj;\n },\n\n create(base?: DeepPartial<MsgChallengeBatchResponse>): MsgChallengeBatchResponse {\n return MsgChallengeBatchResponse.fromPartial(base ?? {});\n },\n fromPartial(_: DeepPartial<MsgChallengeBatchResponse>): MsgChallengeBatchResponse {\n const message = createBaseMsgChallengeBatchResponse();\n return message;\n },\n};\n\nfunction createBaseMsgResolveChallenge(): MsgResolveChallenge {\n return { resolver: \"\", rollupId: \"\", batchIndex: \"0\", fraudUpheld: false };\n}\n\nexport const MsgResolveChallenge: MessageFns<MsgResolveChallenge> = {\n encode(message: MsgResolveChallenge, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.resolver !== \"\") {\n writer.uint32(10).string(message.resolver);\n }\n if (message.rollupId !== \"\") {\n writer.uint32(18).string(message.rollupId);\n }\n if (message.batchIndex !== \"0\") {\n writer.uint32(24).uint64(message.batchIndex);\n }\n if (message.fraudUpheld !== false) {\n writer.uint32(32).bool(message.fraudUpheld);\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): MsgResolveChallenge {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseMsgResolveChallenge();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n message.resolver = reader.string();\n continue;\n }\n case 2: {\n if (tag !== 18) {\n break;\n }\n\n message.rollupId = reader.string();\n continue;\n }\n case 3: {\n if (tag !== 24) {\n break;\n }\n\n message.batchIndex = reader.uint64().toString();\n continue;\n }\n case 4: {\n if (tag !== 32) {\n break;\n }\n\n message.fraudUpheld = reader.bool();\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): MsgResolveChallenge {\n return {\n resolver: isSet(object.resolver) ? globalThis.String(object.resolver) : \"\",\n rollupId: isSet(object.rollupId)\n ? globalThis.String(object.rollupId)\n : isSet(object.rollup_id)\n ? globalThis.String(object.rollup_id)\n : \"\",\n batchIndex: isSet(object.batchIndex)\n ? globalThis.String(object.batchIndex)\n : isSet(object.batch_index)\n ? globalThis.String(object.batch_index)\n : \"0\",\n fraudUpheld: isSet(object.fraudUpheld)\n ? globalThis.Boolean(object.fraudUpheld)\n : isSet(object.fraud_upheld)\n ? globalThis.Boolean(object.fraud_upheld)\n : false,\n };\n },\n\n toJSON(message: MsgResolveChallenge): unknown {\n const obj: any = {};\n if (message.resolver !== \"\") {\n obj.resolver = message.resolver;\n }\n if (message.rollupId !== \"\") {\n obj.rollupId = message.rollupId;\n }\n if (message.batchIndex !== \"0\") {\n obj.batchIndex = message.batchIndex;\n }\n if (message.fraudUpheld !== false) {\n obj.fraudUpheld = message.fraudUpheld;\n }\n return obj;\n },\n\n create(base?: DeepPartial<MsgResolveChallenge>): MsgResolveChallenge {\n return MsgResolveChallenge.fromPartial(base ?? {});\n },\n fromPartial(object: DeepPartial<MsgResolveChallenge>): MsgResolveChallenge {\n const message = createBaseMsgResolveChallenge();\n message.resolver = object.resolver ?? \"\";\n message.rollupId = object.rollupId ?? \"\";\n message.batchIndex = object.batchIndex ?? \"0\";\n message.fraudUpheld = object.fraudUpheld ?? false;\n return message;\n },\n};\n\nfunction createBaseMsgResolveChallengeResponse(): MsgResolveChallengeResponse {\n return {};\n}\n\nexport const MsgResolveChallengeResponse: MessageFns<MsgResolveChallengeResponse> = {\n encode(_: MsgResolveChallengeResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): MsgResolveChallengeResponse {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseMsgResolveChallengeResponse();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(_: any): MsgResolveChallengeResponse {\n return {};\n },\n\n toJSON(_: MsgResolveChallengeResponse): unknown {\n const obj: any = {};\n return obj;\n },\n\n create(base?: DeepPartial<MsgResolveChallengeResponse>): MsgResolveChallengeResponse {\n return MsgResolveChallengeResponse.fromPartial(base ?? {});\n },\n fromPartial(_: DeepPartial<MsgResolveChallengeResponse>): MsgResolveChallengeResponse {\n const message = createBaseMsgResolveChallengeResponse();\n return message;\n },\n};\n\nfunction createBaseMsgPauseRollup(): MsgPauseRollup {\n return { creator: \"\", rollupId: \"\", reason: \"\" };\n}\n\nexport const MsgPauseRollup: MessageFns<MsgPauseRollup> = {\n encode(message: MsgPauseRollup, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.creator !== \"\") {\n writer.uint32(10).string(message.creator);\n }\n if (message.rollupId !== \"\") {\n writer.uint32(18).string(message.rollupId);\n }\n if (message.reason !== \"\") {\n writer.uint32(26).string(message.reason);\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): MsgPauseRollup {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseMsgPauseRollup();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n message.creator = reader.string();\n continue;\n }\n case 2: {\n if (tag !== 18) {\n break;\n }\n\n message.rollupId = reader.string();\n continue;\n }\n case 3: {\n if (tag !== 26) {\n break;\n }\n\n message.reason = reader.string();\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): MsgPauseRollup {\n return {\n creator: isSet(object.creator) ? globalThis.String(object.creator) : \"\",\n rollupId: isSet(object.rollupId)\n ? globalThis.String(object.rollupId)\n : isSet(object.rollup_id)\n ? globalThis.String(object.rollup_id)\n : \"\",\n reason: isSet(object.reason) ? globalThis.String(object.reason) : \"\",\n };\n },\n\n toJSON(message: MsgPauseRollup): unknown {\n const obj: any = {};\n if (message.creator !== \"\") {\n obj.creator = message.creator;\n }\n if (message.rollupId !== \"\") {\n obj.rollupId = message.rollupId;\n }\n if (message.reason !== \"\") {\n obj.reason = message.reason;\n }\n return obj;\n },\n\n create(base?: DeepPartial<MsgPauseRollup>): MsgPauseRollup {\n return MsgPauseRollup.fromPartial(base ?? {});\n },\n fromPartial(object: DeepPartial<MsgPauseRollup>): MsgPauseRollup {\n const message = createBaseMsgPauseRollup();\n message.creator = object.creator ?? \"\";\n message.rollupId = object.rollupId ?? \"\";\n message.reason = object.reason ?? \"\";\n return message;\n },\n};\n\nfunction createBaseMsgPauseRollupResponse(): MsgPauseRollupResponse {\n return {};\n}\n\nexport const MsgPauseRollupResponse: MessageFns<MsgPauseRollupResponse> = {\n encode(_: MsgPauseRollupResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): MsgPauseRollupResponse {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseMsgPauseRollupResponse();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(_: any): MsgPauseRollupResponse {\n return {};\n },\n\n toJSON(_: MsgPauseRollupResponse): unknown {\n const obj: any = {};\n return obj;\n },\n\n create(base?: DeepPartial<MsgPauseRollupResponse>): MsgPauseRollupResponse {\n return MsgPauseRollupResponse.fromPartial(base ?? {});\n },\n fromPartial(_: DeepPartial<MsgPauseRollupResponse>): MsgPauseRollupResponse {\n const message = createBaseMsgPauseRollupResponse();\n return message;\n },\n};\n\nfunction createBaseMsgResumeRollup(): MsgResumeRollup {\n return { creator: \"\", rollupId: \"\" };\n}\n\nexport const MsgResumeRollup: MessageFns<MsgResumeRollup> = {\n encode(message: MsgResumeRollup, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.creator !== \"\") {\n writer.uint32(10).string(message.creator);\n }\n if (message.rollupId !== \"\") {\n writer.uint32(18).string(message.rollupId);\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): MsgResumeRollup {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseMsgResumeRollup();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n message.creator = reader.string();\n continue;\n }\n case 2: {\n if (tag !== 18) {\n break;\n }\n\n message.rollupId = reader.string();\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): MsgResumeRollup {\n return {\n creator: isSet(object.creator) ? globalThis.String(object.creator) : \"\",\n rollupId: isSet(object.rollupId)\n ? globalThis.String(object.rollupId)\n : isSet(object.rollup_id)\n ? globalThis.String(object.rollup_id)\n : \"\",\n };\n },\n\n toJSON(message: MsgResumeRollup): unknown {\n const obj: any = {};\n if (message.creator !== \"\") {\n obj.creator = message.creator;\n }\n if (message.rollupId !== \"\") {\n obj.rollupId = message.rollupId;\n }\n return obj;\n },\n\n create(base?: DeepPartial<MsgResumeRollup>): MsgResumeRollup {\n return MsgResumeRollup.fromPartial(base ?? {});\n },\n fromPartial(object: DeepPartial<MsgResumeRollup>): MsgResumeRollup {\n const message = createBaseMsgResumeRollup();\n message.creator = object.creator ?? \"\";\n message.rollupId = object.rollupId ?? \"\";\n return message;\n },\n};\n\nfunction createBaseMsgResumeRollupResponse(): MsgResumeRollupResponse {\n return {};\n}\n\nexport const MsgResumeRollupResponse: MessageFns<MsgResumeRollupResponse> = {\n encode(_: MsgResumeRollupResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): MsgResumeRollupResponse {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseMsgResumeRollupResponse();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(_: any): MsgResumeRollupResponse {\n return {};\n },\n\n toJSON(_: MsgResumeRollupResponse): unknown {\n const obj: any = {};\n return obj;\n },\n\n create(base?: DeepPartial<MsgResumeRollupResponse>): MsgResumeRollupResponse {\n return MsgResumeRollupResponse.fromPartial(base ?? {});\n },\n fromPartial(_: DeepPartial<MsgResumeRollupResponse>): MsgResumeRollupResponse {\n const message = createBaseMsgResumeRollupResponse();\n return message;\n },\n};\n\nfunction createBaseMsgStopRollup(): MsgStopRollup {\n return { creator: \"\", rollupId: \"\" };\n}\n\nexport const MsgStopRollup: MessageFns<MsgStopRollup> = {\n encode(message: MsgStopRollup, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.creator !== \"\") {\n writer.uint32(10).string(message.creator);\n }\n if (message.rollupId !== \"\") {\n writer.uint32(18).string(message.rollupId);\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): MsgStopRollup {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseMsgStopRollup();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n message.creator = reader.string();\n continue;\n }\n case 2: {\n if (tag !== 18) {\n break;\n }\n\n message.rollupId = reader.string();\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): MsgStopRollup {\n return {\n creator: isSet(object.creator) ? globalThis.String(object.creator) : \"\",\n rollupId: isSet(object.rollupId)\n ? globalThis.String(object.rollupId)\n : isSet(object.rollup_id)\n ? globalThis.String(object.rollup_id)\n : \"\",\n };\n },\n\n toJSON(message: MsgStopRollup): unknown {\n const obj: any = {};\n if (message.creator !== \"\") {\n obj.creator = message.creator;\n }\n if (message.rollupId !== \"\") {\n obj.rollupId = message.rollupId;\n }\n return obj;\n },\n\n create(base?: DeepPartial<MsgStopRollup>): MsgStopRollup {\n return MsgStopRollup.fromPartial(base ?? {});\n },\n fromPartial(object: DeepPartial<MsgStopRollup>): MsgStopRollup {\n const message = createBaseMsgStopRollup();\n message.creator = object.creator ?? \"\";\n message.rollupId = object.rollupId ?? \"\";\n return message;\n },\n};\n\nfunction createBaseMsgStopRollupResponse(): MsgStopRollupResponse {\n return {};\n}\n\nexport const MsgStopRollupResponse: MessageFns<MsgStopRollupResponse> = {\n encode(_: MsgStopRollupResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): MsgStopRollupResponse {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseMsgStopRollupResponse();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(_: any): MsgStopRollupResponse {\n return {};\n },\n\n toJSON(_: MsgStopRollupResponse): unknown {\n const obj: any = {};\n return obj;\n },\n\n create(base?: DeepPartial<MsgStopRollupResponse>): MsgStopRollupResponse {\n return MsgStopRollupResponse.fromPartial(base ?? {});\n },\n fromPartial(_: DeepPartial<MsgStopRollupResponse>): MsgStopRollupResponse {\n const message = createBaseMsgStopRollupResponse();\n return message;\n },\n};\n\n/** Msg defines the rdk module's transaction service. */\nexport type MsgDefinition = typeof MsgDefinition;\nexport const MsgDefinition = {\n name: \"Msg\",\n fullName: \"qorechain.rdk.v1.Msg\",\n methods: {\n createRollup: {\n name: \"CreateRollup\",\n requestType: MsgCreateRollup as typeof MsgCreateRollup,\n requestStream: false,\n responseType: MsgCreateRollupResponse as typeof MsgCreateRollupResponse,\n responseStream: false,\n options: {},\n },\n submitBatch: {\n name: \"SubmitBatch\",\n requestType: MsgSubmitBatch as typeof MsgSubmitBatch,\n requestStream: false,\n responseType: MsgSubmitBatchResponse as typeof MsgSubmitBatchResponse,\n responseStream: false,\n options: {},\n },\n challengeBatch: {\n name: \"ChallengeBatch\",\n requestType: MsgChallengeBatch as typeof MsgChallengeBatch,\n requestStream: false,\n responseType: MsgChallengeBatchResponse as typeof MsgChallengeBatchResponse,\n responseStream: false,\n options: {},\n },\n resolveChallenge: {\n name: \"ResolveChallenge\",\n requestType: MsgResolveChallenge as typeof MsgResolveChallenge,\n requestStream: false,\n responseType: MsgResolveChallengeResponse as typeof MsgResolveChallengeResponse,\n responseStream: false,\n options: {},\n },\n pauseRollup: {\n name: \"PauseRollup\",\n requestType: MsgPauseRollup as typeof MsgPauseRollup,\n requestStream: false,\n responseType: MsgPauseRollupResponse as typeof MsgPauseRollupResponse,\n responseStream: false,\n options: {},\n },\n resumeRollup: {\n name: \"ResumeRollup\",\n requestType: MsgResumeRollup as typeof MsgResumeRollup,\n requestStream: false,\n responseType: MsgResumeRollupResponse as typeof MsgResumeRollupResponse,\n responseStream: false,\n options: {},\n },\n stopRollup: {\n name: \"StopRollup\",\n requestType: MsgStopRollup as typeof MsgStopRollup,\n requestStream: false,\n responseType: MsgStopRollupResponse as typeof MsgStopRollupResponse,\n responseStream: false,\n options: {},\n },\n },\n} as const;\n\nfunction bytesFromBase64(b64: string): Uint8Array {\n if ((globalThis as any).Buffer) {\n return Uint8Array.from((globalThis as any).Buffer.from(b64, \"base64\"));\n } else {\n const bin = globalThis.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 }\n}\n\nfunction base64FromBytes(arr: Uint8Array): string {\n if ((globalThis as any).Buffer) {\n return (globalThis as any).Buffer.from(arr).toString(\"base64\");\n } else {\n const bin: string[] = [];\n arr.forEach((byte) => {\n bin.push(globalThis.String.fromCharCode(byte));\n });\n return globalThis.btoa(bin.join(\"\"));\n }\n}\n\ntype Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;\n\nexport type DeepPartial<T> = T extends Builtin ? T\n : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>>\n : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>\n : T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }\n : Partial<T>;\n\nfunction isSet(value: any): boolean {\n return value !== null && value !== undefined;\n}\n\nexport interface MessageFns<T> {\n encode(message: T, writer?: BinaryWriter): BinaryWriter;\n decode(input: BinaryReader | Uint8Array, length?: number): T;\n fromJSON(object: any): T;\n toJSON(message: T): unknown;\n create(base?: DeepPartial<T>): T;\n fromPartial(object: DeepPartial<T>): T;\n}\n","// Code generated by protoc-gen-ts_proto. DO NOT EDIT.\n// versions:\n// protoc-gen-ts_proto v2.11.8\n// protoc unknown\n// source: qorechain/multilayer/v1/tx.proto\n\n/* eslint-disable */\nimport { BinaryReader, BinaryWriter } from \"@bufbuild/protobuf/wire\";\n\nexport const protobufPackage = \"qorechain.multilayer.v1\";\n\nexport interface MsgRegisterSidechain {\n creator: string;\n layerId: string;\n description: string;\n targetBlockTimeMs: string;\n maxTransactionsPerBlock: string;\n minValidators: number;\n settlementIntervalBlocks: string;\n supportedVmTypes: string[];\n supportedDomains: string[];\n}\n\nexport interface MsgRegisterSidechainResponse {\n layerId: string;\n chainId: string;\n status: string;\n}\n\nexport interface MsgRegisterPaychain {\n creator: string;\n layerId: string;\n description: string;\n maxTransactionsPerBlock: string;\n settlementIntervalBlocks: string;\n baseFeeMultiplier: string;\n}\n\nexport interface MsgRegisterPaychainResponse {\n layerId: string;\n status: string;\n}\n\nexport interface MsgAnchorState {\n relayer: string;\n layerId: string;\n layerHeight: string;\n stateRoot: Uint8Array;\n validatorSetHash: Uint8Array;\n pqcAggregateSignature: Uint8Array;\n transactionCount: string;\n compressedStateProof: Uint8Array;\n}\n\nexport interface MsgAnchorStateResponse {\n mainChainHeight: string;\n accepted: boolean;\n}\n\nexport interface MsgRouteTransaction {\n sender: string;\n transactionPayload: Uint8Array;\n preferredLayer: string;\n maxLatencyMs: string;\n maxFee: string;\n}\n\nexport interface MsgRouteTransactionResponse {\n selectedLayer: string;\n reason: string;\n crossLayerMessageId: string;\n}\n\nexport interface MsgUpdateLayerStatus {\n authority: string;\n layerId: string;\n newStatus: string;\n reason: string;\n}\n\nexport interface MsgUpdateLayerStatusResponse {\n}\n\nexport interface MsgChallengeAnchor {\n challenger: string;\n layerId: string;\n anchorHeight: string;\n fraudProof: Uint8Array;\n challengeReason: string;\n}\n\nexport interface MsgChallengeAnchorResponse {\n challengeAccepted: boolean;\n resolution: string;\n}\n\nfunction createBaseMsgRegisterSidechain(): MsgRegisterSidechain {\n return {\n creator: \"\",\n layerId: \"\",\n description: \"\",\n targetBlockTimeMs: \"0\",\n maxTransactionsPerBlock: \"0\",\n minValidators: 0,\n settlementIntervalBlocks: \"0\",\n supportedVmTypes: [],\n supportedDomains: [],\n };\n}\n\nexport const MsgRegisterSidechain: MessageFns<MsgRegisterSidechain> = {\n encode(message: MsgRegisterSidechain, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.creator !== \"\") {\n writer.uint32(10).string(message.creator);\n }\n if (message.layerId !== \"\") {\n writer.uint32(18).string(message.layerId);\n }\n if (message.description !== \"\") {\n writer.uint32(26).string(message.description);\n }\n if (message.targetBlockTimeMs !== \"0\") {\n writer.uint32(32).uint64(message.targetBlockTimeMs);\n }\n if (message.maxTransactionsPerBlock !== \"0\") {\n writer.uint32(40).uint64(message.maxTransactionsPerBlock);\n }\n if (message.minValidators !== 0) {\n writer.uint32(48).uint32(message.minValidators);\n }\n if (message.settlementIntervalBlocks !== \"0\") {\n writer.uint32(56).uint64(message.settlementIntervalBlocks);\n }\n for (const v of message.supportedVmTypes) {\n writer.uint32(66).string(v!);\n }\n for (const v of message.supportedDomains) {\n writer.uint32(74).string(v!);\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): MsgRegisterSidechain {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseMsgRegisterSidechain();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n message.creator = reader.string();\n continue;\n }\n case 2: {\n if (tag !== 18) {\n break;\n }\n\n message.layerId = reader.string();\n continue;\n }\n case 3: {\n if (tag !== 26) {\n break;\n }\n\n message.description = reader.string();\n continue;\n }\n case 4: {\n if (tag !== 32) {\n break;\n }\n\n message.targetBlockTimeMs = reader.uint64().toString();\n continue;\n }\n case 5: {\n if (tag !== 40) {\n break;\n }\n\n message.maxTransactionsPerBlock = reader.uint64().toString();\n continue;\n }\n case 6: {\n if (tag !== 48) {\n break;\n }\n\n message.minValidators = reader.uint32();\n continue;\n }\n case 7: {\n if (tag !== 56) {\n break;\n }\n\n message.settlementIntervalBlocks = reader.uint64().toString();\n continue;\n }\n case 8: {\n if (tag !== 66) {\n break;\n }\n\n message.supportedVmTypes.push(reader.string());\n continue;\n }\n case 9: {\n if (tag !== 74) {\n break;\n }\n\n message.supportedDomains.push(reader.string());\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): MsgRegisterSidechain {\n return {\n creator: isSet(object.creator) ? globalThis.String(object.creator) : \"\",\n layerId: isSet(object.layerId)\n ? globalThis.String(object.layerId)\n : isSet(object.layer_id)\n ? globalThis.String(object.layer_id)\n : \"\",\n description: isSet(object.description) ? globalThis.String(object.description) : \"\",\n targetBlockTimeMs: isSet(object.targetBlockTimeMs)\n ? globalThis.String(object.targetBlockTimeMs)\n : isSet(object.target_block_time_ms)\n ? globalThis.String(object.target_block_time_ms)\n : \"0\",\n maxTransactionsPerBlock: isSet(object.maxTransactionsPerBlock)\n ? globalThis.String(object.maxTransactionsPerBlock)\n : isSet(object.max_transactions_per_block)\n ? globalThis.String(object.max_transactions_per_block)\n : \"0\",\n minValidators: isSet(object.minValidators)\n ? globalThis.Number(object.minValidators)\n : isSet(object.min_validators)\n ? globalThis.Number(object.min_validators)\n : 0,\n settlementIntervalBlocks: isSet(object.settlementIntervalBlocks)\n ? globalThis.String(object.settlementIntervalBlocks)\n : isSet(object.settlement_interval_blocks)\n ? globalThis.String(object.settlement_interval_blocks)\n : \"0\",\n supportedVmTypes: globalThis.Array.isArray(object?.supportedVmTypes)\n ? object.supportedVmTypes.map((e: any) => globalThis.String(e))\n : globalThis.Array.isArray(object?.supported_vm_types)\n ? object.supported_vm_types.map((e: any) => globalThis.String(e))\n : [],\n supportedDomains: globalThis.Array.isArray(object?.supportedDomains)\n ? object.supportedDomains.map((e: any) => globalThis.String(e))\n : globalThis.Array.isArray(object?.supported_domains)\n ? object.supported_domains.map((e: any) => globalThis.String(e))\n : [],\n };\n },\n\n toJSON(message: MsgRegisterSidechain): unknown {\n const obj: any = {};\n if (message.creator !== \"\") {\n obj.creator = message.creator;\n }\n if (message.layerId !== \"\") {\n obj.layerId = message.layerId;\n }\n if (message.description !== \"\") {\n obj.description = message.description;\n }\n if (message.targetBlockTimeMs !== \"0\") {\n obj.targetBlockTimeMs = message.targetBlockTimeMs;\n }\n if (message.maxTransactionsPerBlock !== \"0\") {\n obj.maxTransactionsPerBlock = message.maxTransactionsPerBlock;\n }\n if (message.minValidators !== 0) {\n obj.minValidators = Math.round(message.minValidators);\n }\n if (message.settlementIntervalBlocks !== \"0\") {\n obj.settlementIntervalBlocks = message.settlementIntervalBlocks;\n }\n if (message.supportedVmTypes?.length) {\n obj.supportedVmTypes = message.supportedVmTypes;\n }\n if (message.supportedDomains?.length) {\n obj.supportedDomains = message.supportedDomains;\n }\n return obj;\n },\n\n create(base?: DeepPartial<MsgRegisterSidechain>): MsgRegisterSidechain {\n return MsgRegisterSidechain.fromPartial(base ?? {});\n },\n fromPartial(object: DeepPartial<MsgRegisterSidechain>): MsgRegisterSidechain {\n const message = createBaseMsgRegisterSidechain();\n message.creator = object.creator ?? \"\";\n message.layerId = object.layerId ?? \"\";\n message.description = object.description ?? \"\";\n message.targetBlockTimeMs = object.targetBlockTimeMs ?? \"0\";\n message.maxTransactionsPerBlock = object.maxTransactionsPerBlock ?? \"0\";\n message.minValidators = object.minValidators ?? 0;\n message.settlementIntervalBlocks = object.settlementIntervalBlocks ?? \"0\";\n message.supportedVmTypes = object.supportedVmTypes?.map((e) => e) || [];\n message.supportedDomains = object.supportedDomains?.map((e) => e) || [];\n return message;\n },\n};\n\nfunction createBaseMsgRegisterSidechainResponse(): MsgRegisterSidechainResponse {\n return { layerId: \"\", chainId: \"\", status: \"\" };\n}\n\nexport const MsgRegisterSidechainResponse: MessageFns<MsgRegisterSidechainResponse> = {\n encode(message: MsgRegisterSidechainResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.layerId !== \"\") {\n writer.uint32(10).string(message.layerId);\n }\n if (message.chainId !== \"\") {\n writer.uint32(18).string(message.chainId);\n }\n if (message.status !== \"\") {\n writer.uint32(26).string(message.status);\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): MsgRegisterSidechainResponse {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseMsgRegisterSidechainResponse();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n message.layerId = reader.string();\n continue;\n }\n case 2: {\n if (tag !== 18) {\n break;\n }\n\n message.chainId = reader.string();\n continue;\n }\n case 3: {\n if (tag !== 26) {\n break;\n }\n\n message.status = reader.string();\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): MsgRegisterSidechainResponse {\n return {\n layerId: isSet(object.layerId)\n ? globalThis.String(object.layerId)\n : isSet(object.layer_id)\n ? globalThis.String(object.layer_id)\n : \"\",\n chainId: isSet(object.chainId)\n ? globalThis.String(object.chainId)\n : isSet(object.chain_id)\n ? globalThis.String(object.chain_id)\n : \"\",\n status: isSet(object.status) ? globalThis.String(object.status) : \"\",\n };\n },\n\n toJSON(message: MsgRegisterSidechainResponse): unknown {\n const obj: any = {};\n if (message.layerId !== \"\") {\n obj.layerId = message.layerId;\n }\n if (message.chainId !== \"\") {\n obj.chainId = message.chainId;\n }\n if (message.status !== \"\") {\n obj.status = message.status;\n }\n return obj;\n },\n\n create(base?: DeepPartial<MsgRegisterSidechainResponse>): MsgRegisterSidechainResponse {\n return MsgRegisterSidechainResponse.fromPartial(base ?? {});\n },\n fromPartial(object: DeepPartial<MsgRegisterSidechainResponse>): MsgRegisterSidechainResponse {\n const message = createBaseMsgRegisterSidechainResponse();\n message.layerId = object.layerId ?? \"\";\n message.chainId = object.chainId ?? \"\";\n message.status = object.status ?? \"\";\n return message;\n },\n};\n\nfunction createBaseMsgRegisterPaychain(): MsgRegisterPaychain {\n return {\n creator: \"\",\n layerId: \"\",\n description: \"\",\n maxTransactionsPerBlock: \"0\",\n settlementIntervalBlocks: \"0\",\n baseFeeMultiplier: \"\",\n };\n}\n\nexport const MsgRegisterPaychain: MessageFns<MsgRegisterPaychain> = {\n encode(message: MsgRegisterPaychain, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.creator !== \"\") {\n writer.uint32(10).string(message.creator);\n }\n if (message.layerId !== \"\") {\n writer.uint32(18).string(message.layerId);\n }\n if (message.description !== \"\") {\n writer.uint32(26).string(message.description);\n }\n if (message.maxTransactionsPerBlock !== \"0\") {\n writer.uint32(32).uint64(message.maxTransactionsPerBlock);\n }\n if (message.settlementIntervalBlocks !== \"0\") {\n writer.uint32(40).uint64(message.settlementIntervalBlocks);\n }\n if (message.baseFeeMultiplier !== \"\") {\n writer.uint32(50).string(message.baseFeeMultiplier);\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): MsgRegisterPaychain {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseMsgRegisterPaychain();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n message.creator = reader.string();\n continue;\n }\n case 2: {\n if (tag !== 18) {\n break;\n }\n\n message.layerId = reader.string();\n continue;\n }\n case 3: {\n if (tag !== 26) {\n break;\n }\n\n message.description = reader.string();\n continue;\n }\n case 4: {\n if (tag !== 32) {\n break;\n }\n\n message.maxTransactionsPerBlock = reader.uint64().toString();\n continue;\n }\n case 5: {\n if (tag !== 40) {\n break;\n }\n\n message.settlementIntervalBlocks = reader.uint64().toString();\n continue;\n }\n case 6: {\n if (tag !== 50) {\n break;\n }\n\n message.baseFeeMultiplier = reader.string();\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): MsgRegisterPaychain {\n return {\n creator: isSet(object.creator) ? globalThis.String(object.creator) : \"\",\n layerId: isSet(object.layerId)\n ? globalThis.String(object.layerId)\n : isSet(object.layer_id)\n ? globalThis.String(object.layer_id)\n : \"\",\n description: isSet(object.description) ? globalThis.String(object.description) : \"\",\n maxTransactionsPerBlock: isSet(object.maxTransactionsPerBlock)\n ? globalThis.String(object.maxTransactionsPerBlock)\n : isSet(object.max_transactions_per_block)\n ? globalThis.String(object.max_transactions_per_block)\n : \"0\",\n settlementIntervalBlocks: isSet(object.settlementIntervalBlocks)\n ? globalThis.String(object.settlementIntervalBlocks)\n : isSet(object.settlement_interval_blocks)\n ? globalThis.String(object.settlement_interval_blocks)\n : \"0\",\n baseFeeMultiplier: isSet(object.baseFeeMultiplier)\n ? globalThis.String(object.baseFeeMultiplier)\n : isSet(object.base_fee_multiplier)\n ? globalThis.String(object.base_fee_multiplier)\n : \"\",\n };\n },\n\n toJSON(message: MsgRegisterPaychain): unknown {\n const obj: any = {};\n if (message.creator !== \"\") {\n obj.creator = message.creator;\n }\n if (message.layerId !== \"\") {\n obj.layerId = message.layerId;\n }\n if (message.description !== \"\") {\n obj.description = message.description;\n }\n if (message.maxTransactionsPerBlock !== \"0\") {\n obj.maxTransactionsPerBlock = message.maxTransactionsPerBlock;\n }\n if (message.settlementIntervalBlocks !== \"0\") {\n obj.settlementIntervalBlocks = message.settlementIntervalBlocks;\n }\n if (message.baseFeeMultiplier !== \"\") {\n obj.baseFeeMultiplier = message.baseFeeMultiplier;\n }\n return obj;\n },\n\n create(base?: DeepPartial<MsgRegisterPaychain>): MsgRegisterPaychain {\n return MsgRegisterPaychain.fromPartial(base ?? {});\n },\n fromPartial(object: DeepPartial<MsgRegisterPaychain>): MsgRegisterPaychain {\n const message = createBaseMsgRegisterPaychain();\n message.creator = object.creator ?? \"\";\n message.layerId = object.layerId ?? \"\";\n message.description = object.description ?? \"\";\n message.maxTransactionsPerBlock = object.maxTransactionsPerBlock ?? \"0\";\n message.settlementIntervalBlocks = object.settlementIntervalBlocks ?? \"0\";\n message.baseFeeMultiplier = object.baseFeeMultiplier ?? \"\";\n return message;\n },\n};\n\nfunction createBaseMsgRegisterPaychainResponse(): MsgRegisterPaychainResponse {\n return { layerId: \"\", status: \"\" };\n}\n\nexport const MsgRegisterPaychainResponse: MessageFns<MsgRegisterPaychainResponse> = {\n encode(message: MsgRegisterPaychainResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.layerId !== \"\") {\n writer.uint32(10).string(message.layerId);\n }\n if (message.status !== \"\") {\n writer.uint32(18).string(message.status);\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): MsgRegisterPaychainResponse {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseMsgRegisterPaychainResponse();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n message.layerId = reader.string();\n continue;\n }\n case 2: {\n if (tag !== 18) {\n break;\n }\n\n message.status = reader.string();\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): MsgRegisterPaychainResponse {\n return {\n layerId: isSet(object.layerId)\n ? globalThis.String(object.layerId)\n : isSet(object.layer_id)\n ? globalThis.String(object.layer_id)\n : \"\",\n status: isSet(object.status) ? globalThis.String(object.status) : \"\",\n };\n },\n\n toJSON(message: MsgRegisterPaychainResponse): unknown {\n const obj: any = {};\n if (message.layerId !== \"\") {\n obj.layerId = message.layerId;\n }\n if (message.status !== \"\") {\n obj.status = message.status;\n }\n return obj;\n },\n\n create(base?: DeepPartial<MsgRegisterPaychainResponse>): MsgRegisterPaychainResponse {\n return MsgRegisterPaychainResponse.fromPartial(base ?? {});\n },\n fromPartial(object: DeepPartial<MsgRegisterPaychainResponse>): MsgRegisterPaychainResponse {\n const message = createBaseMsgRegisterPaychainResponse();\n message.layerId = object.layerId ?? \"\";\n message.status = object.status ?? \"\";\n return message;\n },\n};\n\nfunction createBaseMsgAnchorState(): MsgAnchorState {\n return {\n relayer: \"\",\n layerId: \"\",\n layerHeight: \"0\",\n stateRoot: new Uint8Array(0),\n validatorSetHash: new Uint8Array(0),\n pqcAggregateSignature: new Uint8Array(0),\n transactionCount: \"0\",\n compressedStateProof: new Uint8Array(0),\n };\n}\n\nexport const MsgAnchorState: MessageFns<MsgAnchorState> = {\n encode(message: MsgAnchorState, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.relayer !== \"\") {\n writer.uint32(10).string(message.relayer);\n }\n if (message.layerId !== \"\") {\n writer.uint32(18).string(message.layerId);\n }\n if (message.layerHeight !== \"0\") {\n writer.uint32(24).uint64(message.layerHeight);\n }\n if (message.stateRoot.length !== 0) {\n writer.uint32(34).bytes(message.stateRoot);\n }\n if (message.validatorSetHash.length !== 0) {\n writer.uint32(42).bytes(message.validatorSetHash);\n }\n if (message.pqcAggregateSignature.length !== 0) {\n writer.uint32(50).bytes(message.pqcAggregateSignature);\n }\n if (message.transactionCount !== \"0\") {\n writer.uint32(56).uint64(message.transactionCount);\n }\n if (message.compressedStateProof.length !== 0) {\n writer.uint32(66).bytes(message.compressedStateProof);\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): MsgAnchorState {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseMsgAnchorState();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n message.relayer = reader.string();\n continue;\n }\n case 2: {\n if (tag !== 18) {\n break;\n }\n\n message.layerId = reader.string();\n continue;\n }\n case 3: {\n if (tag !== 24) {\n break;\n }\n\n message.layerHeight = reader.uint64().toString();\n continue;\n }\n case 4: {\n if (tag !== 34) {\n break;\n }\n\n message.stateRoot = reader.bytes();\n continue;\n }\n case 5: {\n if (tag !== 42) {\n break;\n }\n\n message.validatorSetHash = reader.bytes();\n continue;\n }\n case 6: {\n if (tag !== 50) {\n break;\n }\n\n message.pqcAggregateSignature = reader.bytes();\n continue;\n }\n case 7: {\n if (tag !== 56) {\n break;\n }\n\n message.transactionCount = reader.uint64().toString();\n continue;\n }\n case 8: {\n if (tag !== 66) {\n break;\n }\n\n message.compressedStateProof = reader.bytes();\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): MsgAnchorState {\n return {\n relayer: isSet(object.relayer) ? globalThis.String(object.relayer) : \"\",\n layerId: isSet(object.layerId)\n ? globalThis.String(object.layerId)\n : isSet(object.layer_id)\n ? globalThis.String(object.layer_id)\n : \"\",\n layerHeight: isSet(object.layerHeight)\n ? globalThis.String(object.layerHeight)\n : isSet(object.layer_height)\n ? globalThis.String(object.layer_height)\n : \"0\",\n stateRoot: isSet(object.stateRoot)\n ? bytesFromBase64(object.stateRoot)\n : isSet(object.state_root)\n ? bytesFromBase64(object.state_root)\n : new Uint8Array(0),\n validatorSetHash: isSet(object.validatorSetHash)\n ? bytesFromBase64(object.validatorSetHash)\n : isSet(object.validator_set_hash)\n ? bytesFromBase64(object.validator_set_hash)\n : new Uint8Array(0),\n pqcAggregateSignature: isSet(object.pqcAggregateSignature)\n ? bytesFromBase64(object.pqcAggregateSignature)\n : isSet(object.pqc_aggregate_signature)\n ? bytesFromBase64(object.pqc_aggregate_signature)\n : new Uint8Array(0),\n transactionCount: isSet(object.transactionCount)\n ? globalThis.String(object.transactionCount)\n : isSet(object.transaction_count)\n ? globalThis.String(object.transaction_count)\n : \"0\",\n compressedStateProof: isSet(object.compressedStateProof)\n ? bytesFromBase64(object.compressedStateProof)\n : isSet(object.compressed_state_proof)\n ? bytesFromBase64(object.compressed_state_proof)\n : new Uint8Array(0),\n };\n },\n\n toJSON(message: MsgAnchorState): unknown {\n const obj: any = {};\n if (message.relayer !== \"\") {\n obj.relayer = message.relayer;\n }\n if (message.layerId !== \"\") {\n obj.layerId = message.layerId;\n }\n if (message.layerHeight !== \"0\") {\n obj.layerHeight = message.layerHeight;\n }\n if (message.stateRoot.length !== 0) {\n obj.stateRoot = base64FromBytes(message.stateRoot);\n }\n if (message.validatorSetHash.length !== 0) {\n obj.validatorSetHash = base64FromBytes(message.validatorSetHash);\n }\n if (message.pqcAggregateSignature.length !== 0) {\n obj.pqcAggregateSignature = base64FromBytes(message.pqcAggregateSignature);\n }\n if (message.transactionCount !== \"0\") {\n obj.transactionCount = message.transactionCount;\n }\n if (message.compressedStateProof.length !== 0) {\n obj.compressedStateProof = base64FromBytes(message.compressedStateProof);\n }\n return obj;\n },\n\n create(base?: DeepPartial<MsgAnchorState>): MsgAnchorState {\n return MsgAnchorState.fromPartial(base ?? {});\n },\n fromPartial(object: DeepPartial<MsgAnchorState>): MsgAnchorState {\n const message = createBaseMsgAnchorState();\n message.relayer = object.relayer ?? \"\";\n message.layerId = object.layerId ?? \"\";\n message.layerHeight = object.layerHeight ?? \"0\";\n message.stateRoot = object.stateRoot ?? new Uint8Array(0);\n message.validatorSetHash = object.validatorSetHash ?? new Uint8Array(0);\n message.pqcAggregateSignature = object.pqcAggregateSignature ?? new Uint8Array(0);\n message.transactionCount = object.transactionCount ?? \"0\";\n message.compressedStateProof = object.compressedStateProof ?? new Uint8Array(0);\n return message;\n },\n};\n\nfunction createBaseMsgAnchorStateResponse(): MsgAnchorStateResponse {\n return { mainChainHeight: \"0\", accepted: false };\n}\n\nexport const MsgAnchorStateResponse: MessageFns<MsgAnchorStateResponse> = {\n encode(message: MsgAnchorStateResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.mainChainHeight !== \"0\") {\n writer.uint32(8).uint64(message.mainChainHeight);\n }\n if (message.accepted !== false) {\n writer.uint32(16).bool(message.accepted);\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): MsgAnchorStateResponse {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseMsgAnchorStateResponse();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 8) {\n break;\n }\n\n message.mainChainHeight = reader.uint64().toString();\n continue;\n }\n case 2: {\n if (tag !== 16) {\n break;\n }\n\n message.accepted = reader.bool();\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): MsgAnchorStateResponse {\n return {\n mainChainHeight: isSet(object.mainChainHeight)\n ? globalThis.String(object.mainChainHeight)\n : isSet(object.main_chain_height)\n ? globalThis.String(object.main_chain_height)\n : \"0\",\n accepted: isSet(object.accepted) ? globalThis.Boolean(object.accepted) : false,\n };\n },\n\n toJSON(message: MsgAnchorStateResponse): unknown {\n const obj: any = {};\n if (message.mainChainHeight !== \"0\") {\n obj.mainChainHeight = message.mainChainHeight;\n }\n if (message.accepted !== false) {\n obj.accepted = message.accepted;\n }\n return obj;\n },\n\n create(base?: DeepPartial<MsgAnchorStateResponse>): MsgAnchorStateResponse {\n return MsgAnchorStateResponse.fromPartial(base ?? {});\n },\n fromPartial(object: DeepPartial<MsgAnchorStateResponse>): MsgAnchorStateResponse {\n const message = createBaseMsgAnchorStateResponse();\n message.mainChainHeight = object.mainChainHeight ?? \"0\";\n message.accepted = object.accepted ?? false;\n return message;\n },\n};\n\nfunction createBaseMsgRouteTransaction(): MsgRouteTransaction {\n return { sender: \"\", transactionPayload: new Uint8Array(0), preferredLayer: \"\", maxLatencyMs: \"0\", maxFee: \"\" };\n}\n\nexport const MsgRouteTransaction: MessageFns<MsgRouteTransaction> = {\n encode(message: MsgRouteTransaction, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.sender !== \"\") {\n writer.uint32(10).string(message.sender);\n }\n if (message.transactionPayload.length !== 0) {\n writer.uint32(18).bytes(message.transactionPayload);\n }\n if (message.preferredLayer !== \"\") {\n writer.uint32(26).string(message.preferredLayer);\n }\n if (message.maxLatencyMs !== \"0\") {\n writer.uint32(32).uint64(message.maxLatencyMs);\n }\n if (message.maxFee !== \"\") {\n writer.uint32(42).string(message.maxFee);\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): MsgRouteTransaction {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseMsgRouteTransaction();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n message.sender = reader.string();\n continue;\n }\n case 2: {\n if (tag !== 18) {\n break;\n }\n\n message.transactionPayload = reader.bytes();\n continue;\n }\n case 3: {\n if (tag !== 26) {\n break;\n }\n\n message.preferredLayer = reader.string();\n continue;\n }\n case 4: {\n if (tag !== 32) {\n break;\n }\n\n message.maxLatencyMs = reader.uint64().toString();\n continue;\n }\n case 5: {\n if (tag !== 42) {\n break;\n }\n\n message.maxFee = reader.string();\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): MsgRouteTransaction {\n return {\n sender: isSet(object.sender) ? globalThis.String(object.sender) : \"\",\n transactionPayload: isSet(object.transactionPayload)\n ? bytesFromBase64(object.transactionPayload)\n : isSet(object.transaction_payload)\n ? bytesFromBase64(object.transaction_payload)\n : new Uint8Array(0),\n preferredLayer: isSet(object.preferredLayer)\n ? globalThis.String(object.preferredLayer)\n : isSet(object.preferred_layer)\n ? globalThis.String(object.preferred_layer)\n : \"\",\n maxLatencyMs: isSet(object.maxLatencyMs)\n ? globalThis.String(object.maxLatencyMs)\n : isSet(object.max_latency_ms)\n ? globalThis.String(object.max_latency_ms)\n : \"0\",\n maxFee: isSet(object.maxFee)\n ? globalThis.String(object.maxFee)\n : isSet(object.max_fee)\n ? globalThis.String(object.max_fee)\n : \"\",\n };\n },\n\n toJSON(message: MsgRouteTransaction): unknown {\n const obj: any = {};\n if (message.sender !== \"\") {\n obj.sender = message.sender;\n }\n if (message.transactionPayload.length !== 0) {\n obj.transactionPayload = base64FromBytes(message.transactionPayload);\n }\n if (message.preferredLayer !== \"\") {\n obj.preferredLayer = message.preferredLayer;\n }\n if (message.maxLatencyMs !== \"0\") {\n obj.maxLatencyMs = message.maxLatencyMs;\n }\n if (message.maxFee !== \"\") {\n obj.maxFee = message.maxFee;\n }\n return obj;\n },\n\n create(base?: DeepPartial<MsgRouteTransaction>): MsgRouteTransaction {\n return MsgRouteTransaction.fromPartial(base ?? {});\n },\n fromPartial(object: DeepPartial<MsgRouteTransaction>): MsgRouteTransaction {\n const message = createBaseMsgRouteTransaction();\n message.sender = object.sender ?? \"\";\n message.transactionPayload = object.transactionPayload ?? new Uint8Array(0);\n message.preferredLayer = object.preferredLayer ?? \"\";\n message.maxLatencyMs = object.maxLatencyMs ?? \"0\";\n message.maxFee = object.maxFee ?? \"\";\n return message;\n },\n};\n\nfunction createBaseMsgRouteTransactionResponse(): MsgRouteTransactionResponse {\n return { selectedLayer: \"\", reason: \"\", crossLayerMessageId: \"\" };\n}\n\nexport const MsgRouteTransactionResponse: MessageFns<MsgRouteTransactionResponse> = {\n encode(message: MsgRouteTransactionResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.selectedLayer !== \"\") {\n writer.uint32(10).string(message.selectedLayer);\n }\n if (message.reason !== \"\") {\n writer.uint32(18).string(message.reason);\n }\n if (message.crossLayerMessageId !== \"\") {\n writer.uint32(26).string(message.crossLayerMessageId);\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): MsgRouteTransactionResponse {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseMsgRouteTransactionResponse();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n message.selectedLayer = reader.string();\n continue;\n }\n case 2: {\n if (tag !== 18) {\n break;\n }\n\n message.reason = reader.string();\n continue;\n }\n case 3: {\n if (tag !== 26) {\n break;\n }\n\n message.crossLayerMessageId = reader.string();\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): MsgRouteTransactionResponse {\n return {\n selectedLayer: isSet(object.selectedLayer)\n ? globalThis.String(object.selectedLayer)\n : isSet(object.selected_layer)\n ? globalThis.String(object.selected_layer)\n : \"\",\n reason: isSet(object.reason) ? globalThis.String(object.reason) : \"\",\n crossLayerMessageId: isSet(object.crossLayerMessageId)\n ? globalThis.String(object.crossLayerMessageId)\n : isSet(object.cross_layer_message_id)\n ? globalThis.String(object.cross_layer_message_id)\n : \"\",\n };\n },\n\n toJSON(message: MsgRouteTransactionResponse): unknown {\n const obj: any = {};\n if (message.selectedLayer !== \"\") {\n obj.selectedLayer = message.selectedLayer;\n }\n if (message.reason !== \"\") {\n obj.reason = message.reason;\n }\n if (message.crossLayerMessageId !== \"\") {\n obj.crossLayerMessageId = message.crossLayerMessageId;\n }\n return obj;\n },\n\n create(base?: DeepPartial<MsgRouteTransactionResponse>): MsgRouteTransactionResponse {\n return MsgRouteTransactionResponse.fromPartial(base ?? {});\n },\n fromPartial(object: DeepPartial<MsgRouteTransactionResponse>): MsgRouteTransactionResponse {\n const message = createBaseMsgRouteTransactionResponse();\n message.selectedLayer = object.selectedLayer ?? \"\";\n message.reason = object.reason ?? \"\";\n message.crossLayerMessageId = object.crossLayerMessageId ?? \"\";\n return message;\n },\n};\n\nfunction createBaseMsgUpdateLayerStatus(): MsgUpdateLayerStatus {\n return { authority: \"\", layerId: \"\", newStatus: \"\", reason: \"\" };\n}\n\nexport const MsgUpdateLayerStatus: MessageFns<MsgUpdateLayerStatus> = {\n encode(message: MsgUpdateLayerStatus, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.authority !== \"\") {\n writer.uint32(10).string(message.authority);\n }\n if (message.layerId !== \"\") {\n writer.uint32(18).string(message.layerId);\n }\n if (message.newStatus !== \"\") {\n writer.uint32(26).string(message.newStatus);\n }\n if (message.reason !== \"\") {\n writer.uint32(34).string(message.reason);\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): MsgUpdateLayerStatus {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseMsgUpdateLayerStatus();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n message.authority = reader.string();\n continue;\n }\n case 2: {\n if (tag !== 18) {\n break;\n }\n\n message.layerId = reader.string();\n continue;\n }\n case 3: {\n if (tag !== 26) {\n break;\n }\n\n message.newStatus = reader.string();\n continue;\n }\n case 4: {\n if (tag !== 34) {\n break;\n }\n\n message.reason = reader.string();\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): MsgUpdateLayerStatus {\n return {\n authority: isSet(object.authority) ? globalThis.String(object.authority) : \"\",\n layerId: isSet(object.layerId)\n ? globalThis.String(object.layerId)\n : isSet(object.layer_id)\n ? globalThis.String(object.layer_id)\n : \"\",\n newStatus: isSet(object.newStatus)\n ? globalThis.String(object.newStatus)\n : isSet(object.new_status)\n ? globalThis.String(object.new_status)\n : \"\",\n reason: isSet(object.reason) ? globalThis.String(object.reason) : \"\",\n };\n },\n\n toJSON(message: MsgUpdateLayerStatus): unknown {\n const obj: any = {};\n if (message.authority !== \"\") {\n obj.authority = message.authority;\n }\n if (message.layerId !== \"\") {\n obj.layerId = message.layerId;\n }\n if (message.newStatus !== \"\") {\n obj.newStatus = message.newStatus;\n }\n if (message.reason !== \"\") {\n obj.reason = message.reason;\n }\n return obj;\n },\n\n create(base?: DeepPartial<MsgUpdateLayerStatus>): MsgUpdateLayerStatus {\n return MsgUpdateLayerStatus.fromPartial(base ?? {});\n },\n fromPartial(object: DeepPartial<MsgUpdateLayerStatus>): MsgUpdateLayerStatus {\n const message = createBaseMsgUpdateLayerStatus();\n message.authority = object.authority ?? \"\";\n message.layerId = object.layerId ?? \"\";\n message.newStatus = object.newStatus ?? \"\";\n message.reason = object.reason ?? \"\";\n return message;\n },\n};\n\nfunction createBaseMsgUpdateLayerStatusResponse(): MsgUpdateLayerStatusResponse {\n return {};\n}\n\nexport const MsgUpdateLayerStatusResponse: MessageFns<MsgUpdateLayerStatusResponse> = {\n encode(_: MsgUpdateLayerStatusResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): MsgUpdateLayerStatusResponse {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseMsgUpdateLayerStatusResponse();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(_: any): MsgUpdateLayerStatusResponse {\n return {};\n },\n\n toJSON(_: MsgUpdateLayerStatusResponse): unknown {\n const obj: any = {};\n return obj;\n },\n\n create(base?: DeepPartial<MsgUpdateLayerStatusResponse>): MsgUpdateLayerStatusResponse {\n return MsgUpdateLayerStatusResponse.fromPartial(base ?? {});\n },\n fromPartial(_: DeepPartial<MsgUpdateLayerStatusResponse>): MsgUpdateLayerStatusResponse {\n const message = createBaseMsgUpdateLayerStatusResponse();\n return message;\n },\n};\n\nfunction createBaseMsgChallengeAnchor(): MsgChallengeAnchor {\n return { challenger: \"\", layerId: \"\", anchorHeight: \"0\", fraudProof: new Uint8Array(0), challengeReason: \"\" };\n}\n\nexport const MsgChallengeAnchor: MessageFns<MsgChallengeAnchor> = {\n encode(message: MsgChallengeAnchor, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.challenger !== \"\") {\n writer.uint32(10).string(message.challenger);\n }\n if (message.layerId !== \"\") {\n writer.uint32(18).string(message.layerId);\n }\n if (message.anchorHeight !== \"0\") {\n writer.uint32(24).uint64(message.anchorHeight);\n }\n if (message.fraudProof.length !== 0) {\n writer.uint32(34).bytes(message.fraudProof);\n }\n if (message.challengeReason !== \"\") {\n writer.uint32(42).string(message.challengeReason);\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): MsgChallengeAnchor {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseMsgChallengeAnchor();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n message.challenger = reader.string();\n continue;\n }\n case 2: {\n if (tag !== 18) {\n break;\n }\n\n message.layerId = reader.string();\n continue;\n }\n case 3: {\n if (tag !== 24) {\n break;\n }\n\n message.anchorHeight = reader.uint64().toString();\n continue;\n }\n case 4: {\n if (tag !== 34) {\n break;\n }\n\n message.fraudProof = reader.bytes();\n continue;\n }\n case 5: {\n if (tag !== 42) {\n break;\n }\n\n message.challengeReason = reader.string();\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): MsgChallengeAnchor {\n return {\n challenger: isSet(object.challenger) ? globalThis.String(object.challenger) : \"\",\n layerId: isSet(object.layerId)\n ? globalThis.String(object.layerId)\n : isSet(object.layer_id)\n ? globalThis.String(object.layer_id)\n : \"\",\n anchorHeight: isSet(object.anchorHeight)\n ? globalThis.String(object.anchorHeight)\n : isSet(object.anchor_height)\n ? globalThis.String(object.anchor_height)\n : \"0\",\n fraudProof: isSet(object.fraudProof)\n ? bytesFromBase64(object.fraudProof)\n : isSet(object.fraud_proof)\n ? bytesFromBase64(object.fraud_proof)\n : new Uint8Array(0),\n challengeReason: isSet(object.challengeReason)\n ? globalThis.String(object.challengeReason)\n : isSet(object.challenge_reason)\n ? globalThis.String(object.challenge_reason)\n : \"\",\n };\n },\n\n toJSON(message: MsgChallengeAnchor): unknown {\n const obj: any = {};\n if (message.challenger !== \"\") {\n obj.challenger = message.challenger;\n }\n if (message.layerId !== \"\") {\n obj.layerId = message.layerId;\n }\n if (message.anchorHeight !== \"0\") {\n obj.anchorHeight = message.anchorHeight;\n }\n if (message.fraudProof.length !== 0) {\n obj.fraudProof = base64FromBytes(message.fraudProof);\n }\n if (message.challengeReason !== \"\") {\n obj.challengeReason = message.challengeReason;\n }\n return obj;\n },\n\n create(base?: DeepPartial<MsgChallengeAnchor>): MsgChallengeAnchor {\n return MsgChallengeAnchor.fromPartial(base ?? {});\n },\n fromPartial(object: DeepPartial<MsgChallengeAnchor>): MsgChallengeAnchor {\n const message = createBaseMsgChallengeAnchor();\n message.challenger = object.challenger ?? \"\";\n message.layerId = object.layerId ?? \"\";\n message.anchorHeight = object.anchorHeight ?? \"0\";\n message.fraudProof = object.fraudProof ?? new Uint8Array(0);\n message.challengeReason = object.challengeReason ?? \"\";\n return message;\n },\n};\n\nfunction createBaseMsgChallengeAnchorResponse(): MsgChallengeAnchorResponse {\n return { challengeAccepted: false, resolution: \"\" };\n}\n\nexport const MsgChallengeAnchorResponse: MessageFns<MsgChallengeAnchorResponse> = {\n encode(message: MsgChallengeAnchorResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.challengeAccepted !== false) {\n writer.uint32(8).bool(message.challengeAccepted);\n }\n if (message.resolution !== \"\") {\n writer.uint32(18).string(message.resolution);\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): MsgChallengeAnchorResponse {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseMsgChallengeAnchorResponse();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 8) {\n break;\n }\n\n message.challengeAccepted = reader.bool();\n continue;\n }\n case 2: {\n if (tag !== 18) {\n break;\n }\n\n message.resolution = reader.string();\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): MsgChallengeAnchorResponse {\n return {\n challengeAccepted: isSet(object.challengeAccepted)\n ? globalThis.Boolean(object.challengeAccepted)\n : isSet(object.challenge_accepted)\n ? globalThis.Boolean(object.challenge_accepted)\n : false,\n resolution: isSet(object.resolution) ? globalThis.String(object.resolution) : \"\",\n };\n },\n\n toJSON(message: MsgChallengeAnchorResponse): unknown {\n const obj: any = {};\n if (message.challengeAccepted !== false) {\n obj.challengeAccepted = message.challengeAccepted;\n }\n if (message.resolution !== \"\") {\n obj.resolution = message.resolution;\n }\n return obj;\n },\n\n create(base?: DeepPartial<MsgChallengeAnchorResponse>): MsgChallengeAnchorResponse {\n return MsgChallengeAnchorResponse.fromPartial(base ?? {});\n },\n fromPartial(object: DeepPartial<MsgChallengeAnchorResponse>): MsgChallengeAnchorResponse {\n const message = createBaseMsgChallengeAnchorResponse();\n message.challengeAccepted = object.challengeAccepted ?? false;\n message.resolution = object.resolution ?? \"\";\n return message;\n },\n};\n\nexport type MsgDefinition = typeof MsgDefinition;\nexport const MsgDefinition = {\n name: \"Msg\",\n fullName: \"qorechain.multilayer.v1.Msg\",\n methods: {\n registerSidechain: {\n name: \"RegisterSidechain\",\n requestType: MsgRegisterSidechain as typeof MsgRegisterSidechain,\n requestStream: false,\n responseType: MsgRegisterSidechainResponse as typeof MsgRegisterSidechainResponse,\n responseStream: false,\n options: {},\n },\n registerPaychain: {\n name: \"RegisterPaychain\",\n requestType: MsgRegisterPaychain as typeof MsgRegisterPaychain,\n requestStream: false,\n responseType: MsgRegisterPaychainResponse as typeof MsgRegisterPaychainResponse,\n responseStream: false,\n options: {},\n },\n anchorState: {\n name: \"AnchorState\",\n requestType: MsgAnchorState as typeof MsgAnchorState,\n requestStream: false,\n responseType: MsgAnchorStateResponse as typeof MsgAnchorStateResponse,\n responseStream: false,\n options: {},\n },\n routeTransaction: {\n name: \"RouteTransaction\",\n requestType: MsgRouteTransaction as typeof MsgRouteTransaction,\n requestStream: false,\n responseType: MsgRouteTransactionResponse as typeof MsgRouteTransactionResponse,\n responseStream: false,\n options: {},\n },\n updateLayerStatus: {\n name: \"UpdateLayerStatus\",\n requestType: MsgUpdateLayerStatus as typeof MsgUpdateLayerStatus,\n requestStream: false,\n responseType: MsgUpdateLayerStatusResponse as typeof MsgUpdateLayerStatusResponse,\n responseStream: false,\n options: {},\n },\n challengeAnchor: {\n name: \"ChallengeAnchor\",\n requestType: MsgChallengeAnchor as typeof MsgChallengeAnchor,\n requestStream: false,\n responseType: MsgChallengeAnchorResponse as typeof MsgChallengeAnchorResponse,\n responseStream: false,\n options: {},\n },\n },\n} as const;\n\nfunction bytesFromBase64(b64: string): Uint8Array {\n if ((globalThis as any).Buffer) {\n return Uint8Array.from((globalThis as any).Buffer.from(b64, \"base64\"));\n } else {\n const bin = globalThis.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 }\n}\n\nfunction base64FromBytes(arr: Uint8Array): string {\n if ((globalThis as any).Buffer) {\n return (globalThis as any).Buffer.from(arr).toString(\"base64\");\n } else {\n const bin: string[] = [];\n arr.forEach((byte) => {\n bin.push(globalThis.String.fromCharCode(byte));\n });\n return globalThis.btoa(bin.join(\"\"));\n }\n}\n\ntype Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;\n\nexport type DeepPartial<T> = T extends Builtin ? T\n : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>>\n : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>\n : T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }\n : Partial<T>;\n\nfunction isSet(value: any): boolean {\n return value !== null && value !== undefined;\n}\n\nexport interface MessageFns<T> {\n encode(message: T, writer?: BinaryWriter): BinaryWriter;\n decode(input: BinaryReader | Uint8Array, length?: number): T;\n fromJSON(object: any): T;\n toJSON(message: T): unknown;\n create(base?: DeepPartial<T>): T;\n fromPartial(object: DeepPartial<T>): T;\n}\n","// Code generated by protoc-gen-ts_proto. DO NOT EDIT.\n// versions:\n// protoc-gen-ts_proto v2.11.8\n// protoc unknown\n// source: qorechain/pqc/v1/tx.proto\n\n/* eslint-disable */\nimport { BinaryReader, BinaryWriter } from \"@bufbuild/protobuf/wire\";\n\nexport const protobufPackage = \"qorechain.pqc.v1\";\n\n/**\n * MsgRegisterPQCKey registers a PQC keypair for an account.\n * Deprecated: use MsgRegisterPQCKeyV2 which includes algorithm_id.\n */\nexport interface MsgRegisterPQCKey {\n sender: string;\n dilithiumPubkey: Uint8Array;\n ecdsaPubkey: Uint8Array;\n keyType: string;\n}\n\nexport interface MsgRegisterPQCKeyResponse {\n}\n\n/** MsgRegisterPQCKeyV2 registers a PQC key with explicit algorithm selection. */\nexport interface MsgRegisterPQCKeyV2 {\n sender: string;\n publicKey: Uint8Array;\n algorithmId: number;\n ecdsaPubkey: Uint8Array;\n keyType: string;\n}\n\nexport interface MsgRegisterPQCKeyV2Response {\n}\n\n/** MsgMigratePQCKey migrates an account's PQC key, proving ownership of both keys. */\nexport interface MsgMigratePQCKey {\n sender: string;\n oldPublicKey: Uint8Array;\n newPublicKey: Uint8Array;\n newAlgorithmId: number;\n oldSignature: Uint8Array;\n newSignature: Uint8Array;\n}\n\nexport interface MsgMigratePQCKeyResponse {\n}\n\n/** MsgDeprecateAlgorithm proposes deprecating an algorithm (starts migration period). */\nexport interface MsgDeprecateAlgorithm {\n authority: string;\n algorithmId: number;\n migrationBlocks: string;\n replacementAlgorithmId: number;\n}\n\nexport interface MsgDeprecateAlgorithmResponse {\n}\n\n/** MsgDisableAlgorithm emergency-disables an algorithm (e.g., vulnerability discovered). */\nexport interface MsgDisableAlgorithm {\n authority: string;\n algorithmId: number;\n reason: string;\n}\n\nexport interface MsgDisableAlgorithmResponse {\n}\n\nfunction createBaseMsgRegisterPQCKey(): MsgRegisterPQCKey {\n return { sender: \"\", dilithiumPubkey: new Uint8Array(0), ecdsaPubkey: new Uint8Array(0), keyType: \"\" };\n}\n\nexport const MsgRegisterPQCKey: MessageFns<MsgRegisterPQCKey> = {\n encode(message: MsgRegisterPQCKey, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.sender !== \"\") {\n writer.uint32(10).string(message.sender);\n }\n if (message.dilithiumPubkey.length !== 0) {\n writer.uint32(18).bytes(message.dilithiumPubkey);\n }\n if (message.ecdsaPubkey.length !== 0) {\n writer.uint32(26).bytes(message.ecdsaPubkey);\n }\n if (message.keyType !== \"\") {\n writer.uint32(34).string(message.keyType);\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): MsgRegisterPQCKey {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseMsgRegisterPQCKey();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n message.sender = reader.string();\n continue;\n }\n case 2: {\n if (tag !== 18) {\n break;\n }\n\n message.dilithiumPubkey = reader.bytes();\n continue;\n }\n case 3: {\n if (tag !== 26) {\n break;\n }\n\n message.ecdsaPubkey = reader.bytes();\n continue;\n }\n case 4: {\n if (tag !== 34) {\n break;\n }\n\n message.keyType = reader.string();\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): MsgRegisterPQCKey {\n return {\n sender: isSet(object.sender) ? globalThis.String(object.sender) : \"\",\n dilithiumPubkey: isSet(object.dilithiumPubkey)\n ? bytesFromBase64(object.dilithiumPubkey)\n : isSet(object.dilithium_pubkey)\n ? bytesFromBase64(object.dilithium_pubkey)\n : new Uint8Array(0),\n ecdsaPubkey: isSet(object.ecdsaPubkey)\n ? bytesFromBase64(object.ecdsaPubkey)\n : isSet(object.ecdsa_pubkey)\n ? bytesFromBase64(object.ecdsa_pubkey)\n : new Uint8Array(0),\n keyType: isSet(object.keyType)\n ? globalThis.String(object.keyType)\n : isSet(object.key_type)\n ? globalThis.String(object.key_type)\n : \"\",\n };\n },\n\n toJSON(message: MsgRegisterPQCKey): unknown {\n const obj: any = {};\n if (message.sender !== \"\") {\n obj.sender = message.sender;\n }\n if (message.dilithiumPubkey.length !== 0) {\n obj.dilithiumPubkey = base64FromBytes(message.dilithiumPubkey);\n }\n if (message.ecdsaPubkey.length !== 0) {\n obj.ecdsaPubkey = base64FromBytes(message.ecdsaPubkey);\n }\n if (message.keyType !== \"\") {\n obj.keyType = message.keyType;\n }\n return obj;\n },\n\n create(base?: DeepPartial<MsgRegisterPQCKey>): MsgRegisterPQCKey {\n return MsgRegisterPQCKey.fromPartial(base ?? {});\n },\n fromPartial(object: DeepPartial<MsgRegisterPQCKey>): MsgRegisterPQCKey {\n const message = createBaseMsgRegisterPQCKey();\n message.sender = object.sender ?? \"\";\n message.dilithiumPubkey = object.dilithiumPubkey ?? new Uint8Array(0);\n message.ecdsaPubkey = object.ecdsaPubkey ?? new Uint8Array(0);\n message.keyType = object.keyType ?? \"\";\n return message;\n },\n};\n\nfunction createBaseMsgRegisterPQCKeyResponse(): MsgRegisterPQCKeyResponse {\n return {};\n}\n\nexport const MsgRegisterPQCKeyResponse: MessageFns<MsgRegisterPQCKeyResponse> = {\n encode(_: MsgRegisterPQCKeyResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): MsgRegisterPQCKeyResponse {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseMsgRegisterPQCKeyResponse();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(_: any): MsgRegisterPQCKeyResponse {\n return {};\n },\n\n toJSON(_: MsgRegisterPQCKeyResponse): unknown {\n const obj: any = {};\n return obj;\n },\n\n create(base?: DeepPartial<MsgRegisterPQCKeyResponse>): MsgRegisterPQCKeyResponse {\n return MsgRegisterPQCKeyResponse.fromPartial(base ?? {});\n },\n fromPartial(_: DeepPartial<MsgRegisterPQCKeyResponse>): MsgRegisterPQCKeyResponse {\n const message = createBaseMsgRegisterPQCKeyResponse();\n return message;\n },\n};\n\nfunction createBaseMsgRegisterPQCKeyV2(): MsgRegisterPQCKeyV2 {\n return { sender: \"\", publicKey: new Uint8Array(0), algorithmId: 0, ecdsaPubkey: new Uint8Array(0), keyType: \"\" };\n}\n\nexport const MsgRegisterPQCKeyV2: MessageFns<MsgRegisterPQCKeyV2> = {\n encode(message: MsgRegisterPQCKeyV2, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.sender !== \"\") {\n writer.uint32(10).string(message.sender);\n }\n if (message.publicKey.length !== 0) {\n writer.uint32(18).bytes(message.publicKey);\n }\n if (message.algorithmId !== 0) {\n writer.uint32(24).uint32(message.algorithmId);\n }\n if (message.ecdsaPubkey.length !== 0) {\n writer.uint32(34).bytes(message.ecdsaPubkey);\n }\n if (message.keyType !== \"\") {\n writer.uint32(42).string(message.keyType);\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): MsgRegisterPQCKeyV2 {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseMsgRegisterPQCKeyV2();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n message.sender = reader.string();\n continue;\n }\n case 2: {\n if (tag !== 18) {\n break;\n }\n\n message.publicKey = reader.bytes();\n continue;\n }\n case 3: {\n if (tag !== 24) {\n break;\n }\n\n message.algorithmId = reader.uint32();\n continue;\n }\n case 4: {\n if (tag !== 34) {\n break;\n }\n\n message.ecdsaPubkey = reader.bytes();\n continue;\n }\n case 5: {\n if (tag !== 42) {\n break;\n }\n\n message.keyType = reader.string();\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): MsgRegisterPQCKeyV2 {\n return {\n sender: isSet(object.sender) ? globalThis.String(object.sender) : \"\",\n publicKey: isSet(object.publicKey)\n ? bytesFromBase64(object.publicKey)\n : isSet(object.public_key)\n ? bytesFromBase64(object.public_key)\n : new Uint8Array(0),\n algorithmId: isSet(object.algorithmId)\n ? globalThis.Number(object.algorithmId)\n : isSet(object.algorithm_id)\n ? globalThis.Number(object.algorithm_id)\n : 0,\n ecdsaPubkey: isSet(object.ecdsaPubkey)\n ? bytesFromBase64(object.ecdsaPubkey)\n : isSet(object.ecdsa_pubkey)\n ? bytesFromBase64(object.ecdsa_pubkey)\n : new Uint8Array(0),\n keyType: isSet(object.keyType)\n ? globalThis.String(object.keyType)\n : isSet(object.key_type)\n ? globalThis.String(object.key_type)\n : \"\",\n };\n },\n\n toJSON(message: MsgRegisterPQCKeyV2): unknown {\n const obj: any = {};\n if (message.sender !== \"\") {\n obj.sender = message.sender;\n }\n if (message.publicKey.length !== 0) {\n obj.publicKey = base64FromBytes(message.publicKey);\n }\n if (message.algorithmId !== 0) {\n obj.algorithmId = Math.round(message.algorithmId);\n }\n if (message.ecdsaPubkey.length !== 0) {\n obj.ecdsaPubkey = base64FromBytes(message.ecdsaPubkey);\n }\n if (message.keyType !== \"\") {\n obj.keyType = message.keyType;\n }\n return obj;\n },\n\n create(base?: DeepPartial<MsgRegisterPQCKeyV2>): MsgRegisterPQCKeyV2 {\n return MsgRegisterPQCKeyV2.fromPartial(base ?? {});\n },\n fromPartial(object: DeepPartial<MsgRegisterPQCKeyV2>): MsgRegisterPQCKeyV2 {\n const message = createBaseMsgRegisterPQCKeyV2();\n message.sender = object.sender ?? \"\";\n message.publicKey = object.publicKey ?? new Uint8Array(0);\n message.algorithmId = object.algorithmId ?? 0;\n message.ecdsaPubkey = object.ecdsaPubkey ?? new Uint8Array(0);\n message.keyType = object.keyType ?? \"\";\n return message;\n },\n};\n\nfunction createBaseMsgRegisterPQCKeyV2Response(): MsgRegisterPQCKeyV2Response {\n return {};\n}\n\nexport const MsgRegisterPQCKeyV2Response: MessageFns<MsgRegisterPQCKeyV2Response> = {\n encode(_: MsgRegisterPQCKeyV2Response, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): MsgRegisterPQCKeyV2Response {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseMsgRegisterPQCKeyV2Response();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(_: any): MsgRegisterPQCKeyV2Response {\n return {};\n },\n\n toJSON(_: MsgRegisterPQCKeyV2Response): unknown {\n const obj: any = {};\n return obj;\n },\n\n create(base?: DeepPartial<MsgRegisterPQCKeyV2Response>): MsgRegisterPQCKeyV2Response {\n return MsgRegisterPQCKeyV2Response.fromPartial(base ?? {});\n },\n fromPartial(_: DeepPartial<MsgRegisterPQCKeyV2Response>): MsgRegisterPQCKeyV2Response {\n const message = createBaseMsgRegisterPQCKeyV2Response();\n return message;\n },\n};\n\nfunction createBaseMsgMigratePQCKey(): MsgMigratePQCKey {\n return {\n sender: \"\",\n oldPublicKey: new Uint8Array(0),\n newPublicKey: new Uint8Array(0),\n newAlgorithmId: 0,\n oldSignature: new Uint8Array(0),\n newSignature: new Uint8Array(0),\n };\n}\n\nexport const MsgMigratePQCKey: MessageFns<MsgMigratePQCKey> = {\n encode(message: MsgMigratePQCKey, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.sender !== \"\") {\n writer.uint32(10).string(message.sender);\n }\n if (message.oldPublicKey.length !== 0) {\n writer.uint32(18).bytes(message.oldPublicKey);\n }\n if (message.newPublicKey.length !== 0) {\n writer.uint32(26).bytes(message.newPublicKey);\n }\n if (message.newAlgorithmId !== 0) {\n writer.uint32(32).uint32(message.newAlgorithmId);\n }\n if (message.oldSignature.length !== 0) {\n writer.uint32(42).bytes(message.oldSignature);\n }\n if (message.newSignature.length !== 0) {\n writer.uint32(50).bytes(message.newSignature);\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): MsgMigratePQCKey {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseMsgMigratePQCKey();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n message.sender = reader.string();\n continue;\n }\n case 2: {\n if (tag !== 18) {\n break;\n }\n\n message.oldPublicKey = reader.bytes();\n continue;\n }\n case 3: {\n if (tag !== 26) {\n break;\n }\n\n message.newPublicKey = reader.bytes();\n continue;\n }\n case 4: {\n if (tag !== 32) {\n break;\n }\n\n message.newAlgorithmId = reader.uint32();\n continue;\n }\n case 5: {\n if (tag !== 42) {\n break;\n }\n\n message.oldSignature = reader.bytes();\n continue;\n }\n case 6: {\n if (tag !== 50) {\n break;\n }\n\n message.newSignature = reader.bytes();\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): MsgMigratePQCKey {\n return {\n sender: isSet(object.sender) ? globalThis.String(object.sender) : \"\",\n oldPublicKey: isSet(object.oldPublicKey)\n ? bytesFromBase64(object.oldPublicKey)\n : isSet(object.old_public_key)\n ? bytesFromBase64(object.old_public_key)\n : new Uint8Array(0),\n newPublicKey: isSet(object.newPublicKey)\n ? bytesFromBase64(object.newPublicKey)\n : isSet(object.new_public_key)\n ? bytesFromBase64(object.new_public_key)\n : new Uint8Array(0),\n newAlgorithmId: isSet(object.newAlgorithmId)\n ? globalThis.Number(object.newAlgorithmId)\n : isSet(object.new_algorithm_id)\n ? globalThis.Number(object.new_algorithm_id)\n : 0,\n oldSignature: isSet(object.oldSignature)\n ? bytesFromBase64(object.oldSignature)\n : isSet(object.old_signature)\n ? bytesFromBase64(object.old_signature)\n : new Uint8Array(0),\n newSignature: isSet(object.newSignature)\n ? bytesFromBase64(object.newSignature)\n : isSet(object.new_signature)\n ? bytesFromBase64(object.new_signature)\n : new Uint8Array(0),\n };\n },\n\n toJSON(message: MsgMigratePQCKey): unknown {\n const obj: any = {};\n if (message.sender !== \"\") {\n obj.sender = message.sender;\n }\n if (message.oldPublicKey.length !== 0) {\n obj.oldPublicKey = base64FromBytes(message.oldPublicKey);\n }\n if (message.newPublicKey.length !== 0) {\n obj.newPublicKey = base64FromBytes(message.newPublicKey);\n }\n if (message.newAlgorithmId !== 0) {\n obj.newAlgorithmId = Math.round(message.newAlgorithmId);\n }\n if (message.oldSignature.length !== 0) {\n obj.oldSignature = base64FromBytes(message.oldSignature);\n }\n if (message.newSignature.length !== 0) {\n obj.newSignature = base64FromBytes(message.newSignature);\n }\n return obj;\n },\n\n create(base?: DeepPartial<MsgMigratePQCKey>): MsgMigratePQCKey {\n return MsgMigratePQCKey.fromPartial(base ?? {});\n },\n fromPartial(object: DeepPartial<MsgMigratePQCKey>): MsgMigratePQCKey {\n const message = createBaseMsgMigratePQCKey();\n message.sender = object.sender ?? \"\";\n message.oldPublicKey = object.oldPublicKey ?? new Uint8Array(0);\n message.newPublicKey = object.newPublicKey ?? new Uint8Array(0);\n message.newAlgorithmId = object.newAlgorithmId ?? 0;\n message.oldSignature = object.oldSignature ?? new Uint8Array(0);\n message.newSignature = object.newSignature ?? new Uint8Array(0);\n return message;\n },\n};\n\nfunction createBaseMsgMigratePQCKeyResponse(): MsgMigratePQCKeyResponse {\n return {};\n}\n\nexport const MsgMigratePQCKeyResponse: MessageFns<MsgMigratePQCKeyResponse> = {\n encode(_: MsgMigratePQCKeyResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): MsgMigratePQCKeyResponse {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseMsgMigratePQCKeyResponse();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(_: any): MsgMigratePQCKeyResponse {\n return {};\n },\n\n toJSON(_: MsgMigratePQCKeyResponse): unknown {\n const obj: any = {};\n return obj;\n },\n\n create(base?: DeepPartial<MsgMigratePQCKeyResponse>): MsgMigratePQCKeyResponse {\n return MsgMigratePQCKeyResponse.fromPartial(base ?? {});\n },\n fromPartial(_: DeepPartial<MsgMigratePQCKeyResponse>): MsgMigratePQCKeyResponse {\n const message = createBaseMsgMigratePQCKeyResponse();\n return message;\n },\n};\n\nfunction createBaseMsgDeprecateAlgorithm(): MsgDeprecateAlgorithm {\n return { authority: \"\", algorithmId: 0, migrationBlocks: \"0\", replacementAlgorithmId: 0 };\n}\n\nexport const MsgDeprecateAlgorithm: MessageFns<MsgDeprecateAlgorithm> = {\n encode(message: MsgDeprecateAlgorithm, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.authority !== \"\") {\n writer.uint32(10).string(message.authority);\n }\n if (message.algorithmId !== 0) {\n writer.uint32(16).uint32(message.algorithmId);\n }\n if (message.migrationBlocks !== \"0\") {\n writer.uint32(24).int64(message.migrationBlocks);\n }\n if (message.replacementAlgorithmId !== 0) {\n writer.uint32(32).uint32(message.replacementAlgorithmId);\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): MsgDeprecateAlgorithm {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseMsgDeprecateAlgorithm();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n message.authority = reader.string();\n continue;\n }\n case 2: {\n if (tag !== 16) {\n break;\n }\n\n message.algorithmId = reader.uint32();\n continue;\n }\n case 3: {\n if (tag !== 24) {\n break;\n }\n\n message.migrationBlocks = reader.int64().toString();\n continue;\n }\n case 4: {\n if (tag !== 32) {\n break;\n }\n\n message.replacementAlgorithmId = reader.uint32();\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): MsgDeprecateAlgorithm {\n return {\n authority: isSet(object.authority) ? globalThis.String(object.authority) : \"\",\n algorithmId: isSet(object.algorithmId)\n ? globalThis.Number(object.algorithmId)\n : isSet(object.algorithm_id)\n ? globalThis.Number(object.algorithm_id)\n : 0,\n migrationBlocks: isSet(object.migrationBlocks)\n ? globalThis.String(object.migrationBlocks)\n : isSet(object.migration_blocks)\n ? globalThis.String(object.migration_blocks)\n : \"0\",\n replacementAlgorithmId: isSet(object.replacementAlgorithmId)\n ? globalThis.Number(object.replacementAlgorithmId)\n : isSet(object.replacement_algorithm_id)\n ? globalThis.Number(object.replacement_algorithm_id)\n : 0,\n };\n },\n\n toJSON(message: MsgDeprecateAlgorithm): unknown {\n const obj: any = {};\n if (message.authority !== \"\") {\n obj.authority = message.authority;\n }\n if (message.algorithmId !== 0) {\n obj.algorithmId = Math.round(message.algorithmId);\n }\n if (message.migrationBlocks !== \"0\") {\n obj.migrationBlocks = message.migrationBlocks;\n }\n if (message.replacementAlgorithmId !== 0) {\n obj.replacementAlgorithmId = Math.round(message.replacementAlgorithmId);\n }\n return obj;\n },\n\n create(base?: DeepPartial<MsgDeprecateAlgorithm>): MsgDeprecateAlgorithm {\n return MsgDeprecateAlgorithm.fromPartial(base ?? {});\n },\n fromPartial(object: DeepPartial<MsgDeprecateAlgorithm>): MsgDeprecateAlgorithm {\n const message = createBaseMsgDeprecateAlgorithm();\n message.authority = object.authority ?? \"\";\n message.algorithmId = object.algorithmId ?? 0;\n message.migrationBlocks = object.migrationBlocks ?? \"0\";\n message.replacementAlgorithmId = object.replacementAlgorithmId ?? 0;\n return message;\n },\n};\n\nfunction createBaseMsgDeprecateAlgorithmResponse(): MsgDeprecateAlgorithmResponse {\n return {};\n}\n\nexport const MsgDeprecateAlgorithmResponse: MessageFns<MsgDeprecateAlgorithmResponse> = {\n encode(_: MsgDeprecateAlgorithmResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): MsgDeprecateAlgorithmResponse {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseMsgDeprecateAlgorithmResponse();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(_: any): MsgDeprecateAlgorithmResponse {\n return {};\n },\n\n toJSON(_: MsgDeprecateAlgorithmResponse): unknown {\n const obj: any = {};\n return obj;\n },\n\n create(base?: DeepPartial<MsgDeprecateAlgorithmResponse>): MsgDeprecateAlgorithmResponse {\n return MsgDeprecateAlgorithmResponse.fromPartial(base ?? {});\n },\n fromPartial(_: DeepPartial<MsgDeprecateAlgorithmResponse>): MsgDeprecateAlgorithmResponse {\n const message = createBaseMsgDeprecateAlgorithmResponse();\n return message;\n },\n};\n\nfunction createBaseMsgDisableAlgorithm(): MsgDisableAlgorithm {\n return { authority: \"\", algorithmId: 0, reason: \"\" };\n}\n\nexport const MsgDisableAlgorithm: MessageFns<MsgDisableAlgorithm> = {\n encode(message: MsgDisableAlgorithm, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.authority !== \"\") {\n writer.uint32(10).string(message.authority);\n }\n if (message.algorithmId !== 0) {\n writer.uint32(16).uint32(message.algorithmId);\n }\n if (message.reason !== \"\") {\n writer.uint32(26).string(message.reason);\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): MsgDisableAlgorithm {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseMsgDisableAlgorithm();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n message.authority = reader.string();\n continue;\n }\n case 2: {\n if (tag !== 16) {\n break;\n }\n\n message.algorithmId = reader.uint32();\n continue;\n }\n case 3: {\n if (tag !== 26) {\n break;\n }\n\n message.reason = reader.string();\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): MsgDisableAlgorithm {\n return {\n authority: isSet(object.authority) ? globalThis.String(object.authority) : \"\",\n algorithmId: isSet(object.algorithmId)\n ? globalThis.Number(object.algorithmId)\n : isSet(object.algorithm_id)\n ? globalThis.Number(object.algorithm_id)\n : 0,\n reason: isSet(object.reason) ? globalThis.String(object.reason) : \"\",\n };\n },\n\n toJSON(message: MsgDisableAlgorithm): unknown {\n const obj: any = {};\n if (message.authority !== \"\") {\n obj.authority = message.authority;\n }\n if (message.algorithmId !== 0) {\n obj.algorithmId = Math.round(message.algorithmId);\n }\n if (message.reason !== \"\") {\n obj.reason = message.reason;\n }\n return obj;\n },\n\n create(base?: DeepPartial<MsgDisableAlgorithm>): MsgDisableAlgorithm {\n return MsgDisableAlgorithm.fromPartial(base ?? {});\n },\n fromPartial(object: DeepPartial<MsgDisableAlgorithm>): MsgDisableAlgorithm {\n const message = createBaseMsgDisableAlgorithm();\n message.authority = object.authority ?? \"\";\n message.algorithmId = object.algorithmId ?? 0;\n message.reason = object.reason ?? \"\";\n return message;\n },\n};\n\nfunction createBaseMsgDisableAlgorithmResponse(): MsgDisableAlgorithmResponse {\n return {};\n}\n\nexport const MsgDisableAlgorithmResponse: MessageFns<MsgDisableAlgorithmResponse> = {\n encode(_: MsgDisableAlgorithmResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): MsgDisableAlgorithmResponse {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseMsgDisableAlgorithmResponse();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(_: any): MsgDisableAlgorithmResponse {\n return {};\n },\n\n toJSON(_: MsgDisableAlgorithmResponse): unknown {\n const obj: any = {};\n return obj;\n },\n\n create(base?: DeepPartial<MsgDisableAlgorithmResponse>): MsgDisableAlgorithmResponse {\n return MsgDisableAlgorithmResponse.fromPartial(base ?? {});\n },\n fromPartial(_: DeepPartial<MsgDisableAlgorithmResponse>): MsgDisableAlgorithmResponse {\n const message = createBaseMsgDisableAlgorithmResponse();\n return message;\n },\n};\n\n/** Msg defines the PQC module's transaction service. */\nexport type MsgDefinition = typeof MsgDefinition;\nexport const MsgDefinition = {\n name: \"Msg\",\n fullName: \"qorechain.pqc.v1.Msg\",\n methods: {\n /** RegisterPQCKey registers a PQC keypair for an account (legacy v1, defaults to Dilithium-5). */\n registerPQCKey: {\n name: \"RegisterPQCKey\",\n requestType: MsgRegisterPQCKey as typeof MsgRegisterPQCKey,\n requestStream: false,\n responseType: MsgRegisterPQCKeyResponse as typeof MsgRegisterPQCKeyResponse,\n responseStream: false,\n options: {},\n },\n /** RegisterPQCKeyV2 registers a PQC key with explicit algorithm selection. */\n registerPQCKeyV2: {\n name: \"RegisterPQCKeyV2\",\n requestType: MsgRegisterPQCKeyV2 as typeof MsgRegisterPQCKeyV2,\n requestStream: false,\n responseType: MsgRegisterPQCKeyV2Response as typeof MsgRegisterPQCKeyV2Response,\n responseStream: false,\n options: {},\n },\n /** MigratePQCKey migrates an account's PQC key from one algorithm to another. */\n migratePQCKey: {\n name: \"MigratePQCKey\",\n requestType: MsgMigratePQCKey as typeof MsgMigratePQCKey,\n requestStream: false,\n responseType: MsgMigratePQCKeyResponse as typeof MsgMigratePQCKeyResponse,\n responseStream: false,\n options: {},\n },\n /** DeprecateAlgorithm starts the migration period for an algorithm (governance). */\n deprecateAlgorithm: {\n name: \"DeprecateAlgorithm\",\n requestType: MsgDeprecateAlgorithm as typeof MsgDeprecateAlgorithm,\n requestStream: false,\n responseType: MsgDeprecateAlgorithmResponse as typeof MsgDeprecateAlgorithmResponse,\n responseStream: false,\n options: {},\n },\n /** DisableAlgorithm emergency-disables an algorithm (governance). */\n disableAlgorithm: {\n name: \"DisableAlgorithm\",\n requestType: MsgDisableAlgorithm as typeof MsgDisableAlgorithm,\n requestStream: false,\n responseType: MsgDisableAlgorithmResponse as typeof MsgDisableAlgorithmResponse,\n responseStream: false,\n options: {},\n },\n },\n} as const;\n\nfunction bytesFromBase64(b64: string): Uint8Array {\n if ((globalThis as any).Buffer) {\n return Uint8Array.from((globalThis as any).Buffer.from(b64, \"base64\"));\n } else {\n const bin = globalThis.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 }\n}\n\nfunction base64FromBytes(arr: Uint8Array): string {\n if ((globalThis as any).Buffer) {\n return (globalThis as any).Buffer.from(arr).toString(\"base64\");\n } else {\n const bin: string[] = [];\n arr.forEach((byte) => {\n bin.push(globalThis.String.fromCharCode(byte));\n });\n return globalThis.btoa(bin.join(\"\"));\n }\n}\n\ntype Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;\n\nexport type DeepPartial<T> = T extends Builtin ? T\n : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>>\n : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>\n : T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }\n : Partial<T>;\n\nfunction isSet(value: any): boolean {\n return value !== null && value !== undefined;\n}\n\nexport interface MessageFns<T> {\n encode(message: T, writer?: BinaryWriter): BinaryWriter;\n decode(input: BinaryReader | Uint8Array, length?: number): T;\n fromJSON(object: any): T;\n toJSON(message: T): unknown;\n create(base?: DeepPartial<T>): T;\n fromPartial(object: DeepPartial<T>): T;\n}\n","// Code generated by protoc-gen-ts_proto. DO NOT EDIT.\n// versions:\n// protoc-gen-ts_proto v2.11.8\n// protoc unknown\n// source: qorechain/svm/v1/tx.proto\n\n/* eslint-disable */\nimport { BinaryReader, BinaryWriter } from \"@bufbuild/protobuf/wire\";\n\nexport const protobufPackage = \"qorechain.svm.v1\";\n\nexport interface MsgDeployProgram {\n sender: string;\n bytecode: Uint8Array;\n}\n\nexport interface MsgDeployProgramResponse {\n programId: Uint8Array;\n}\n\nexport interface MsgCreateAccount {\n sender: string;\n owner: Uint8Array;\n space: string;\n lamports: string;\n salt: Uint8Array;\n}\n\nexport interface MsgCreateAccountResponse {\n}\n\nexport interface SvmAccountMeta {\n address: Uint8Array;\n isSigner: boolean;\n isWritable: boolean;\n}\n\nexport interface MsgExecuteProgram {\n sender: string;\n programId: Uint8Array;\n accounts: SvmAccountMeta[];\n data: Uint8Array;\n}\n\nexport interface MsgExecuteProgramResponse {\n result: Uint8Array;\n}\n\nexport interface MsgRegisterSVMPQCKey {\n sender: string;\n svmAddr: Uint8Array;\n pqcPubKey: Uint8Array;\n}\n\nexport interface MsgRegisterSVMPQCKeyResponse {\n}\n\nfunction createBaseMsgDeployProgram(): MsgDeployProgram {\n return { sender: \"\", bytecode: new Uint8Array(0) };\n}\n\nexport const MsgDeployProgram: MessageFns<MsgDeployProgram> = {\n encode(message: MsgDeployProgram, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.sender !== \"\") {\n writer.uint32(10).string(message.sender);\n }\n if (message.bytecode.length !== 0) {\n writer.uint32(18).bytes(message.bytecode);\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): MsgDeployProgram {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseMsgDeployProgram();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n message.sender = reader.string();\n continue;\n }\n case 2: {\n if (tag !== 18) {\n break;\n }\n\n message.bytecode = reader.bytes();\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): MsgDeployProgram {\n return {\n sender: isSet(object.sender) ? globalThis.String(object.sender) : \"\",\n bytecode: isSet(object.bytecode) ? bytesFromBase64(object.bytecode) : new Uint8Array(0),\n };\n },\n\n toJSON(message: MsgDeployProgram): unknown {\n const obj: any = {};\n if (message.sender !== \"\") {\n obj.sender = message.sender;\n }\n if (message.bytecode.length !== 0) {\n obj.bytecode = base64FromBytes(message.bytecode);\n }\n return obj;\n },\n\n create(base?: DeepPartial<MsgDeployProgram>): MsgDeployProgram {\n return MsgDeployProgram.fromPartial(base ?? {});\n },\n fromPartial(object: DeepPartial<MsgDeployProgram>): MsgDeployProgram {\n const message = createBaseMsgDeployProgram();\n message.sender = object.sender ?? \"\";\n message.bytecode = object.bytecode ?? new Uint8Array(0);\n return message;\n },\n};\n\nfunction createBaseMsgDeployProgramResponse(): MsgDeployProgramResponse {\n return { programId: new Uint8Array(0) };\n}\n\nexport const MsgDeployProgramResponse: MessageFns<MsgDeployProgramResponse> = {\n encode(message: MsgDeployProgramResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.programId.length !== 0) {\n writer.uint32(10).bytes(message.programId);\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): MsgDeployProgramResponse {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseMsgDeployProgramResponse();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n message.programId = reader.bytes();\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): MsgDeployProgramResponse {\n return {\n programId: isSet(object.programId)\n ? bytesFromBase64(object.programId)\n : isSet(object.program_id)\n ? bytesFromBase64(object.program_id)\n : new Uint8Array(0),\n };\n },\n\n toJSON(message: MsgDeployProgramResponse): unknown {\n const obj: any = {};\n if (message.programId.length !== 0) {\n obj.programId = base64FromBytes(message.programId);\n }\n return obj;\n },\n\n create(base?: DeepPartial<MsgDeployProgramResponse>): MsgDeployProgramResponse {\n return MsgDeployProgramResponse.fromPartial(base ?? {});\n },\n fromPartial(object: DeepPartial<MsgDeployProgramResponse>): MsgDeployProgramResponse {\n const message = createBaseMsgDeployProgramResponse();\n message.programId = object.programId ?? new Uint8Array(0);\n return message;\n },\n};\n\nfunction createBaseMsgCreateAccount(): MsgCreateAccount {\n return { sender: \"\", owner: new Uint8Array(0), space: \"0\", lamports: \"0\", salt: new Uint8Array(0) };\n}\n\nexport const MsgCreateAccount: MessageFns<MsgCreateAccount> = {\n encode(message: MsgCreateAccount, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.sender !== \"\") {\n writer.uint32(10).string(message.sender);\n }\n if (message.owner.length !== 0) {\n writer.uint32(18).bytes(message.owner);\n }\n if (message.space !== \"0\") {\n writer.uint32(24).uint64(message.space);\n }\n if (message.lamports !== \"0\") {\n writer.uint32(32).uint64(message.lamports);\n }\n if (message.salt.length !== 0) {\n writer.uint32(42).bytes(message.salt);\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): MsgCreateAccount {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseMsgCreateAccount();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n message.sender = reader.string();\n continue;\n }\n case 2: {\n if (tag !== 18) {\n break;\n }\n\n message.owner = reader.bytes();\n continue;\n }\n case 3: {\n if (tag !== 24) {\n break;\n }\n\n message.space = reader.uint64().toString();\n continue;\n }\n case 4: {\n if (tag !== 32) {\n break;\n }\n\n message.lamports = reader.uint64().toString();\n continue;\n }\n case 5: {\n if (tag !== 42) {\n break;\n }\n\n message.salt = reader.bytes();\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): MsgCreateAccount {\n return {\n sender: isSet(object.sender) ? globalThis.String(object.sender) : \"\",\n owner: isSet(object.owner) ? bytesFromBase64(object.owner) : new Uint8Array(0),\n space: isSet(object.space) ? globalThis.String(object.space) : \"0\",\n lamports: isSet(object.lamports) ? globalThis.String(object.lamports) : \"0\",\n salt: isSet(object.salt) ? bytesFromBase64(object.salt) : new Uint8Array(0),\n };\n },\n\n toJSON(message: MsgCreateAccount): unknown {\n const obj: any = {};\n if (message.sender !== \"\") {\n obj.sender = message.sender;\n }\n if (message.owner.length !== 0) {\n obj.owner = base64FromBytes(message.owner);\n }\n if (message.space !== \"0\") {\n obj.space = message.space;\n }\n if (message.lamports !== \"0\") {\n obj.lamports = message.lamports;\n }\n if (message.salt.length !== 0) {\n obj.salt = base64FromBytes(message.salt);\n }\n return obj;\n },\n\n create(base?: DeepPartial<MsgCreateAccount>): MsgCreateAccount {\n return MsgCreateAccount.fromPartial(base ?? {});\n },\n fromPartial(object: DeepPartial<MsgCreateAccount>): MsgCreateAccount {\n const message = createBaseMsgCreateAccount();\n message.sender = object.sender ?? \"\";\n message.owner = object.owner ?? new Uint8Array(0);\n message.space = object.space ?? \"0\";\n message.lamports = object.lamports ?? \"0\";\n message.salt = object.salt ?? new Uint8Array(0);\n return message;\n },\n};\n\nfunction createBaseMsgCreateAccountResponse(): MsgCreateAccountResponse {\n return {};\n}\n\nexport const MsgCreateAccountResponse: MessageFns<MsgCreateAccountResponse> = {\n encode(_: MsgCreateAccountResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): MsgCreateAccountResponse {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseMsgCreateAccountResponse();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(_: any): MsgCreateAccountResponse {\n return {};\n },\n\n toJSON(_: MsgCreateAccountResponse): unknown {\n const obj: any = {};\n return obj;\n },\n\n create(base?: DeepPartial<MsgCreateAccountResponse>): MsgCreateAccountResponse {\n return MsgCreateAccountResponse.fromPartial(base ?? {});\n },\n fromPartial(_: DeepPartial<MsgCreateAccountResponse>): MsgCreateAccountResponse {\n const message = createBaseMsgCreateAccountResponse();\n return message;\n },\n};\n\nfunction createBaseSvmAccountMeta(): SvmAccountMeta {\n return { address: new Uint8Array(0), isSigner: false, isWritable: false };\n}\n\nexport const SvmAccountMeta: MessageFns<SvmAccountMeta> = {\n encode(message: SvmAccountMeta, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.address.length !== 0) {\n writer.uint32(10).bytes(message.address);\n }\n if (message.isSigner !== false) {\n writer.uint32(16).bool(message.isSigner);\n }\n if (message.isWritable !== false) {\n writer.uint32(24).bool(message.isWritable);\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): SvmAccountMeta {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseSvmAccountMeta();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n message.address = reader.bytes();\n continue;\n }\n case 2: {\n if (tag !== 16) {\n break;\n }\n\n message.isSigner = reader.bool();\n continue;\n }\n case 3: {\n if (tag !== 24) {\n break;\n }\n\n message.isWritable = reader.bool();\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): SvmAccountMeta {\n return {\n address: isSet(object.address) ? bytesFromBase64(object.address) : new Uint8Array(0),\n isSigner: isSet(object.isSigner)\n ? globalThis.Boolean(object.isSigner)\n : isSet(object.is_signer)\n ? globalThis.Boolean(object.is_signer)\n : false,\n isWritable: isSet(object.isWritable)\n ? globalThis.Boolean(object.isWritable)\n : isSet(object.is_writable)\n ? globalThis.Boolean(object.is_writable)\n : false,\n };\n },\n\n toJSON(message: SvmAccountMeta): unknown {\n const obj: any = {};\n if (message.address.length !== 0) {\n obj.address = base64FromBytes(message.address);\n }\n if (message.isSigner !== false) {\n obj.isSigner = message.isSigner;\n }\n if (message.isWritable !== false) {\n obj.isWritable = message.isWritable;\n }\n return obj;\n },\n\n create(base?: DeepPartial<SvmAccountMeta>): SvmAccountMeta {\n return SvmAccountMeta.fromPartial(base ?? {});\n },\n fromPartial(object: DeepPartial<SvmAccountMeta>): SvmAccountMeta {\n const message = createBaseSvmAccountMeta();\n message.address = object.address ?? new Uint8Array(0);\n message.isSigner = object.isSigner ?? false;\n message.isWritable = object.isWritable ?? false;\n return message;\n },\n};\n\nfunction createBaseMsgExecuteProgram(): MsgExecuteProgram {\n return { sender: \"\", programId: new Uint8Array(0), accounts: [], data: new Uint8Array(0) };\n}\n\nexport const MsgExecuteProgram: MessageFns<MsgExecuteProgram> = {\n encode(message: MsgExecuteProgram, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.sender !== \"\") {\n writer.uint32(10).string(message.sender);\n }\n if (message.programId.length !== 0) {\n writer.uint32(18).bytes(message.programId);\n }\n for (const v of message.accounts) {\n SvmAccountMeta.encode(v!, writer.uint32(26).fork()).join();\n }\n if (message.data.length !== 0) {\n writer.uint32(34).bytes(message.data);\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): MsgExecuteProgram {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseMsgExecuteProgram();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n message.sender = reader.string();\n continue;\n }\n case 2: {\n if (tag !== 18) {\n break;\n }\n\n message.programId = reader.bytes();\n continue;\n }\n case 3: {\n if (tag !== 26) {\n break;\n }\n\n message.accounts.push(SvmAccountMeta.decode(reader, reader.uint32()));\n continue;\n }\n case 4: {\n if (tag !== 34) {\n break;\n }\n\n message.data = reader.bytes();\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): MsgExecuteProgram {\n return {\n sender: isSet(object.sender) ? globalThis.String(object.sender) : \"\",\n programId: isSet(object.programId)\n ? bytesFromBase64(object.programId)\n : isSet(object.program_id)\n ? bytesFromBase64(object.program_id)\n : new Uint8Array(0),\n accounts: globalThis.Array.isArray(object?.accounts)\n ? object.accounts.map((e: any) => SvmAccountMeta.fromJSON(e))\n : [],\n data: isSet(object.data) ? bytesFromBase64(object.data) : new Uint8Array(0),\n };\n },\n\n toJSON(message: MsgExecuteProgram): unknown {\n const obj: any = {};\n if (message.sender !== \"\") {\n obj.sender = message.sender;\n }\n if (message.programId.length !== 0) {\n obj.programId = base64FromBytes(message.programId);\n }\n if (message.accounts?.length) {\n obj.accounts = message.accounts.map((e) => SvmAccountMeta.toJSON(e));\n }\n if (message.data.length !== 0) {\n obj.data = base64FromBytes(message.data);\n }\n return obj;\n },\n\n create(base?: DeepPartial<MsgExecuteProgram>): MsgExecuteProgram {\n return MsgExecuteProgram.fromPartial(base ?? {});\n },\n fromPartial(object: DeepPartial<MsgExecuteProgram>): MsgExecuteProgram {\n const message = createBaseMsgExecuteProgram();\n message.sender = object.sender ?? \"\";\n message.programId = object.programId ?? new Uint8Array(0);\n message.accounts = object.accounts?.map((e) => SvmAccountMeta.fromPartial(e)) || [];\n message.data = object.data ?? new Uint8Array(0);\n return message;\n },\n};\n\nfunction createBaseMsgExecuteProgramResponse(): MsgExecuteProgramResponse {\n return { result: new Uint8Array(0) };\n}\n\nexport const MsgExecuteProgramResponse: MessageFns<MsgExecuteProgramResponse> = {\n encode(message: MsgExecuteProgramResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.result.length !== 0) {\n writer.uint32(10).bytes(message.result);\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): MsgExecuteProgramResponse {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseMsgExecuteProgramResponse();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n message.result = reader.bytes();\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): MsgExecuteProgramResponse {\n return { result: isSet(object.result) ? bytesFromBase64(object.result) : new Uint8Array(0) };\n },\n\n toJSON(message: MsgExecuteProgramResponse): unknown {\n const obj: any = {};\n if (message.result.length !== 0) {\n obj.result = base64FromBytes(message.result);\n }\n return obj;\n },\n\n create(base?: DeepPartial<MsgExecuteProgramResponse>): MsgExecuteProgramResponse {\n return MsgExecuteProgramResponse.fromPartial(base ?? {});\n },\n fromPartial(object: DeepPartial<MsgExecuteProgramResponse>): MsgExecuteProgramResponse {\n const message = createBaseMsgExecuteProgramResponse();\n message.result = object.result ?? new Uint8Array(0);\n return message;\n },\n};\n\nfunction createBaseMsgRegisterSVMPQCKey(): MsgRegisterSVMPQCKey {\n return { sender: \"\", svmAddr: new Uint8Array(0), pqcPubKey: new Uint8Array(0) };\n}\n\nexport const MsgRegisterSVMPQCKey: MessageFns<MsgRegisterSVMPQCKey> = {\n encode(message: MsgRegisterSVMPQCKey, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.sender !== \"\") {\n writer.uint32(10).string(message.sender);\n }\n if (message.svmAddr.length !== 0) {\n writer.uint32(18).bytes(message.svmAddr);\n }\n if (message.pqcPubKey.length !== 0) {\n writer.uint32(26).bytes(message.pqcPubKey);\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): MsgRegisterSVMPQCKey {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseMsgRegisterSVMPQCKey();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n message.sender = reader.string();\n continue;\n }\n case 2: {\n if (tag !== 18) {\n break;\n }\n\n message.svmAddr = reader.bytes();\n continue;\n }\n case 3: {\n if (tag !== 26) {\n break;\n }\n\n message.pqcPubKey = reader.bytes();\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): MsgRegisterSVMPQCKey {\n return {\n sender: isSet(object.sender) ? globalThis.String(object.sender) : \"\",\n svmAddr: isSet(object.svmAddr)\n ? bytesFromBase64(object.svmAddr)\n : isSet(object.svm_addr)\n ? bytesFromBase64(object.svm_addr)\n : new Uint8Array(0),\n pqcPubKey: isSet(object.pqcPubKey)\n ? bytesFromBase64(object.pqcPubKey)\n : isSet(object.pqc_pub_key)\n ? bytesFromBase64(object.pqc_pub_key)\n : new Uint8Array(0),\n };\n },\n\n toJSON(message: MsgRegisterSVMPQCKey): unknown {\n const obj: any = {};\n if (message.sender !== \"\") {\n obj.sender = message.sender;\n }\n if (message.svmAddr.length !== 0) {\n obj.svmAddr = base64FromBytes(message.svmAddr);\n }\n if (message.pqcPubKey.length !== 0) {\n obj.pqcPubKey = base64FromBytes(message.pqcPubKey);\n }\n return obj;\n },\n\n create(base?: DeepPartial<MsgRegisterSVMPQCKey>): MsgRegisterSVMPQCKey {\n return MsgRegisterSVMPQCKey.fromPartial(base ?? {});\n },\n fromPartial(object: DeepPartial<MsgRegisterSVMPQCKey>): MsgRegisterSVMPQCKey {\n const message = createBaseMsgRegisterSVMPQCKey();\n message.sender = object.sender ?? \"\";\n message.svmAddr = object.svmAddr ?? new Uint8Array(0);\n message.pqcPubKey = object.pqcPubKey ?? new Uint8Array(0);\n return message;\n },\n};\n\nfunction createBaseMsgRegisterSVMPQCKeyResponse(): MsgRegisterSVMPQCKeyResponse {\n return {};\n}\n\nexport const MsgRegisterSVMPQCKeyResponse: MessageFns<MsgRegisterSVMPQCKeyResponse> = {\n encode(_: MsgRegisterSVMPQCKeyResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): MsgRegisterSVMPQCKeyResponse {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseMsgRegisterSVMPQCKeyResponse();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(_: any): MsgRegisterSVMPQCKeyResponse {\n return {};\n },\n\n toJSON(_: MsgRegisterSVMPQCKeyResponse): unknown {\n const obj: any = {};\n return obj;\n },\n\n create(base?: DeepPartial<MsgRegisterSVMPQCKeyResponse>): MsgRegisterSVMPQCKeyResponse {\n return MsgRegisterSVMPQCKeyResponse.fromPartial(base ?? {});\n },\n fromPartial(_: DeepPartial<MsgRegisterSVMPQCKeyResponse>): MsgRegisterSVMPQCKeyResponse {\n const message = createBaseMsgRegisterSVMPQCKeyResponse();\n return message;\n },\n};\n\nexport type MsgDefinition = typeof MsgDefinition;\nexport const MsgDefinition = {\n name: \"Msg\",\n fullName: \"qorechain.svm.v1.Msg\",\n methods: {\n deployProgram: {\n name: \"DeployProgram\",\n requestType: MsgDeployProgram as typeof MsgDeployProgram,\n requestStream: false,\n responseType: MsgDeployProgramResponse as typeof MsgDeployProgramResponse,\n responseStream: false,\n options: {},\n },\n createAccount: {\n name: \"CreateAccount\",\n requestType: MsgCreateAccount as typeof MsgCreateAccount,\n requestStream: false,\n responseType: MsgCreateAccountResponse as typeof MsgCreateAccountResponse,\n responseStream: false,\n options: {},\n },\n executeProgram: {\n name: \"ExecuteProgram\",\n requestType: MsgExecuteProgram as typeof MsgExecuteProgram,\n requestStream: false,\n responseType: MsgExecuteProgramResponse as typeof MsgExecuteProgramResponse,\n responseStream: false,\n options: {},\n },\n registerSVMPQCKey: {\n name: \"RegisterSVMPQCKey\",\n requestType: MsgRegisterSVMPQCKey as typeof MsgRegisterSVMPQCKey,\n requestStream: false,\n responseType: MsgRegisterSVMPQCKeyResponse as typeof MsgRegisterSVMPQCKeyResponse,\n responseStream: false,\n options: {},\n },\n },\n} as const;\n\nfunction bytesFromBase64(b64: string): Uint8Array {\n if ((globalThis as any).Buffer) {\n return Uint8Array.from((globalThis as any).Buffer.from(b64, \"base64\"));\n } else {\n const bin = globalThis.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 }\n}\n\nfunction base64FromBytes(arr: Uint8Array): string {\n if ((globalThis as any).Buffer) {\n return (globalThis as any).Buffer.from(arr).toString(\"base64\");\n } else {\n const bin: string[] = [];\n arr.forEach((byte) => {\n bin.push(globalThis.String.fromCharCode(byte));\n });\n return globalThis.btoa(bin.join(\"\"));\n }\n}\n\ntype Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;\n\nexport type DeepPartial<T> = T extends Builtin ? T\n : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>>\n : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>\n : T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }\n : Partial<T>;\n\nfunction isSet(value: any): boolean {\n return value !== null && value !== undefined;\n}\n\nexport interface MessageFns<T> {\n encode(message: T, writer?: BinaryWriter): BinaryWriter;\n decode(input: BinaryReader | Uint8Array, length?: number): T;\n fromJSON(object: any): T;\n toJSON(message: T): unknown;\n create(base?: DeepPartial<T>): T;\n fromPartial(object: DeepPartial<T>): T;\n}\n","// Code generated by protoc-gen-ts_proto. DO NOT EDIT.\n// versions:\n// protoc-gen-ts_proto v2.11.8\n// protoc unknown\n// source: qorechain/lightnode/v1/tx.proto\n\n/* eslint-disable */\nimport { BinaryReader, BinaryWriter } from \"@bufbuild/protobuf/wire\";\n\nexport const protobufPackage = \"qorechain.lightnode.v1\";\n\nexport interface MsgRegisterLightNode {\n operator: string;\n nodeType: string;\n version: string;\n capabilities: string[];\n}\n\nexport interface MsgRegisterLightNodeResponse {\n}\n\nexport interface MsgHeartbeat {\n operator: string;\n}\n\nexport interface MsgHeartbeatResponse {\n}\n\nexport interface MsgDeregisterLightNode {\n operator: string;\n}\n\nexport interface MsgDeregisterLightNodeResponse {\n}\n\nexport interface MsgClaimLightNodeRewards {\n operator: string;\n}\n\nexport interface MsgClaimLightNodeRewardsResponse {\n}\n\nfunction createBaseMsgRegisterLightNode(): MsgRegisterLightNode {\n return { operator: \"\", nodeType: \"\", version: \"\", capabilities: [] };\n}\n\nexport const MsgRegisterLightNode: MessageFns<MsgRegisterLightNode> = {\n encode(message: MsgRegisterLightNode, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.operator !== \"\") {\n writer.uint32(10).string(message.operator);\n }\n if (message.nodeType !== \"\") {\n writer.uint32(18).string(message.nodeType);\n }\n if (message.version !== \"\") {\n writer.uint32(26).string(message.version);\n }\n for (const v of message.capabilities) {\n writer.uint32(34).string(v!);\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): MsgRegisterLightNode {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseMsgRegisterLightNode();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n message.operator = reader.string();\n continue;\n }\n case 2: {\n if (tag !== 18) {\n break;\n }\n\n message.nodeType = reader.string();\n continue;\n }\n case 3: {\n if (tag !== 26) {\n break;\n }\n\n message.version = reader.string();\n continue;\n }\n case 4: {\n if (tag !== 34) {\n break;\n }\n\n message.capabilities.push(reader.string());\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): MsgRegisterLightNode {\n return {\n operator: isSet(object.operator) ? globalThis.String(object.operator) : \"\",\n nodeType: isSet(object.nodeType)\n ? globalThis.String(object.nodeType)\n : isSet(object.node_type)\n ? globalThis.String(object.node_type)\n : \"\",\n version: isSet(object.version) ? globalThis.String(object.version) : \"\",\n capabilities: globalThis.Array.isArray(object?.capabilities)\n ? object.capabilities.map((e: any) => globalThis.String(e))\n : [],\n };\n },\n\n toJSON(message: MsgRegisterLightNode): unknown {\n const obj: any = {};\n if (message.operator !== \"\") {\n obj.operator = message.operator;\n }\n if (message.nodeType !== \"\") {\n obj.nodeType = message.nodeType;\n }\n if (message.version !== \"\") {\n obj.version = message.version;\n }\n if (message.capabilities?.length) {\n obj.capabilities = message.capabilities;\n }\n return obj;\n },\n\n create(base?: DeepPartial<MsgRegisterLightNode>): MsgRegisterLightNode {\n return MsgRegisterLightNode.fromPartial(base ?? {});\n },\n fromPartial(object: DeepPartial<MsgRegisterLightNode>): MsgRegisterLightNode {\n const message = createBaseMsgRegisterLightNode();\n message.operator = object.operator ?? \"\";\n message.nodeType = object.nodeType ?? \"\";\n message.version = object.version ?? \"\";\n message.capabilities = object.capabilities?.map((e) => e) || [];\n return message;\n },\n};\n\nfunction createBaseMsgRegisterLightNodeResponse(): MsgRegisterLightNodeResponse {\n return {};\n}\n\nexport const MsgRegisterLightNodeResponse: MessageFns<MsgRegisterLightNodeResponse> = {\n encode(_: MsgRegisterLightNodeResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): MsgRegisterLightNodeResponse {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseMsgRegisterLightNodeResponse();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(_: any): MsgRegisterLightNodeResponse {\n return {};\n },\n\n toJSON(_: MsgRegisterLightNodeResponse): unknown {\n const obj: any = {};\n return obj;\n },\n\n create(base?: DeepPartial<MsgRegisterLightNodeResponse>): MsgRegisterLightNodeResponse {\n return MsgRegisterLightNodeResponse.fromPartial(base ?? {});\n },\n fromPartial(_: DeepPartial<MsgRegisterLightNodeResponse>): MsgRegisterLightNodeResponse {\n const message = createBaseMsgRegisterLightNodeResponse();\n return message;\n },\n};\n\nfunction createBaseMsgHeartbeat(): MsgHeartbeat {\n return { operator: \"\" };\n}\n\nexport const MsgHeartbeat: MessageFns<MsgHeartbeat> = {\n encode(message: MsgHeartbeat, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.operator !== \"\") {\n writer.uint32(10).string(message.operator);\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): MsgHeartbeat {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseMsgHeartbeat();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n message.operator = reader.string();\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): MsgHeartbeat {\n return { operator: isSet(object.operator) ? globalThis.String(object.operator) : \"\" };\n },\n\n toJSON(message: MsgHeartbeat): unknown {\n const obj: any = {};\n if (message.operator !== \"\") {\n obj.operator = message.operator;\n }\n return obj;\n },\n\n create(base?: DeepPartial<MsgHeartbeat>): MsgHeartbeat {\n return MsgHeartbeat.fromPartial(base ?? {});\n },\n fromPartial(object: DeepPartial<MsgHeartbeat>): MsgHeartbeat {\n const message = createBaseMsgHeartbeat();\n message.operator = object.operator ?? \"\";\n return message;\n },\n};\n\nfunction createBaseMsgHeartbeatResponse(): MsgHeartbeatResponse {\n return {};\n}\n\nexport const MsgHeartbeatResponse: MessageFns<MsgHeartbeatResponse> = {\n encode(_: MsgHeartbeatResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): MsgHeartbeatResponse {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseMsgHeartbeatResponse();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(_: any): MsgHeartbeatResponse {\n return {};\n },\n\n toJSON(_: MsgHeartbeatResponse): unknown {\n const obj: any = {};\n return obj;\n },\n\n create(base?: DeepPartial<MsgHeartbeatResponse>): MsgHeartbeatResponse {\n return MsgHeartbeatResponse.fromPartial(base ?? {});\n },\n fromPartial(_: DeepPartial<MsgHeartbeatResponse>): MsgHeartbeatResponse {\n const message = createBaseMsgHeartbeatResponse();\n return message;\n },\n};\n\nfunction createBaseMsgDeregisterLightNode(): MsgDeregisterLightNode {\n return { operator: \"\" };\n}\n\nexport const MsgDeregisterLightNode: MessageFns<MsgDeregisterLightNode> = {\n encode(message: MsgDeregisterLightNode, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.operator !== \"\") {\n writer.uint32(10).string(message.operator);\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): MsgDeregisterLightNode {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseMsgDeregisterLightNode();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n message.operator = reader.string();\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): MsgDeregisterLightNode {\n return { operator: isSet(object.operator) ? globalThis.String(object.operator) : \"\" };\n },\n\n toJSON(message: MsgDeregisterLightNode): unknown {\n const obj: any = {};\n if (message.operator !== \"\") {\n obj.operator = message.operator;\n }\n return obj;\n },\n\n create(base?: DeepPartial<MsgDeregisterLightNode>): MsgDeregisterLightNode {\n return MsgDeregisterLightNode.fromPartial(base ?? {});\n },\n fromPartial(object: DeepPartial<MsgDeregisterLightNode>): MsgDeregisterLightNode {\n const message = createBaseMsgDeregisterLightNode();\n message.operator = object.operator ?? \"\";\n return message;\n },\n};\n\nfunction createBaseMsgDeregisterLightNodeResponse(): MsgDeregisterLightNodeResponse {\n return {};\n}\n\nexport const MsgDeregisterLightNodeResponse: MessageFns<MsgDeregisterLightNodeResponse> = {\n encode(_: MsgDeregisterLightNodeResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): MsgDeregisterLightNodeResponse {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseMsgDeregisterLightNodeResponse();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(_: any): MsgDeregisterLightNodeResponse {\n return {};\n },\n\n toJSON(_: MsgDeregisterLightNodeResponse): unknown {\n const obj: any = {};\n return obj;\n },\n\n create(base?: DeepPartial<MsgDeregisterLightNodeResponse>): MsgDeregisterLightNodeResponse {\n return MsgDeregisterLightNodeResponse.fromPartial(base ?? {});\n },\n fromPartial(_: DeepPartial<MsgDeregisterLightNodeResponse>): MsgDeregisterLightNodeResponse {\n const message = createBaseMsgDeregisterLightNodeResponse();\n return message;\n },\n};\n\nfunction createBaseMsgClaimLightNodeRewards(): MsgClaimLightNodeRewards {\n return { operator: \"\" };\n}\n\nexport const MsgClaimLightNodeRewards: MessageFns<MsgClaimLightNodeRewards> = {\n encode(message: MsgClaimLightNodeRewards, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.operator !== \"\") {\n writer.uint32(10).string(message.operator);\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): MsgClaimLightNodeRewards {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseMsgClaimLightNodeRewards();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n message.operator = reader.string();\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): MsgClaimLightNodeRewards {\n return { operator: isSet(object.operator) ? globalThis.String(object.operator) : \"\" };\n },\n\n toJSON(message: MsgClaimLightNodeRewards): unknown {\n const obj: any = {};\n if (message.operator !== \"\") {\n obj.operator = message.operator;\n }\n return obj;\n },\n\n create(base?: DeepPartial<MsgClaimLightNodeRewards>): MsgClaimLightNodeRewards {\n return MsgClaimLightNodeRewards.fromPartial(base ?? {});\n },\n fromPartial(object: DeepPartial<MsgClaimLightNodeRewards>): MsgClaimLightNodeRewards {\n const message = createBaseMsgClaimLightNodeRewards();\n message.operator = object.operator ?? \"\";\n return message;\n },\n};\n\nfunction createBaseMsgClaimLightNodeRewardsResponse(): MsgClaimLightNodeRewardsResponse {\n return {};\n}\n\nexport const MsgClaimLightNodeRewardsResponse: MessageFns<MsgClaimLightNodeRewardsResponse> = {\n encode(_: MsgClaimLightNodeRewardsResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): MsgClaimLightNodeRewardsResponse {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseMsgClaimLightNodeRewardsResponse();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(_: any): MsgClaimLightNodeRewardsResponse {\n return {};\n },\n\n toJSON(_: MsgClaimLightNodeRewardsResponse): unknown {\n const obj: any = {};\n return obj;\n },\n\n create(base?: DeepPartial<MsgClaimLightNodeRewardsResponse>): MsgClaimLightNodeRewardsResponse {\n return MsgClaimLightNodeRewardsResponse.fromPartial(base ?? {});\n },\n fromPartial(_: DeepPartial<MsgClaimLightNodeRewardsResponse>): MsgClaimLightNodeRewardsResponse {\n const message = createBaseMsgClaimLightNodeRewardsResponse();\n return message;\n },\n};\n\n/** Msg defines the lightnode module's transaction service. */\nexport type MsgDefinition = typeof MsgDefinition;\nexport const MsgDefinition = {\n name: \"Msg\",\n fullName: \"qorechain.lightnode.v1.Msg\",\n methods: {\n registerLightNode: {\n name: \"RegisterLightNode\",\n requestType: MsgRegisterLightNode as typeof MsgRegisterLightNode,\n requestStream: false,\n responseType: MsgRegisterLightNodeResponse as typeof MsgRegisterLightNodeResponse,\n responseStream: false,\n options: {},\n },\n heartbeat: {\n name: \"Heartbeat\",\n requestType: MsgHeartbeat as typeof MsgHeartbeat,\n requestStream: false,\n responseType: MsgHeartbeatResponse as typeof MsgHeartbeatResponse,\n responseStream: false,\n options: {},\n },\n deregisterLightNode: {\n name: \"DeregisterLightNode\",\n requestType: MsgDeregisterLightNode as typeof MsgDeregisterLightNode,\n requestStream: false,\n responseType: MsgDeregisterLightNodeResponse as typeof MsgDeregisterLightNodeResponse,\n responseStream: false,\n options: {},\n },\n claimLightNodeRewards: {\n name: \"ClaimLightNodeRewards\",\n requestType: MsgClaimLightNodeRewards as typeof MsgClaimLightNodeRewards,\n requestStream: false,\n responseType: MsgClaimLightNodeRewardsResponse as typeof MsgClaimLightNodeRewardsResponse,\n responseStream: false,\n options: {},\n },\n },\n} as const;\n\ntype Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;\n\nexport type DeepPartial<T> = T extends Builtin ? T\n : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>>\n : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>\n : T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }\n : Partial<T>;\n\nfunction isSet(value: any): boolean {\n return value !== null && value !== undefined;\n}\n\nexport interface MessageFns<T> {\n encode(message: T, writer?: BinaryWriter): BinaryWriter;\n decode(input: BinaryReader | Uint8Array, length?: number): T;\n fromJSON(object: any): T;\n toJSON(message: T): unknown;\n create(base?: DeepPartial<T>): T;\n fromPartial(object: DeepPartial<T>): T;\n}\n","// Code generated by protoc-gen-ts_proto. DO NOT EDIT.\n// versions:\n// protoc-gen-ts_proto v2.11.8\n// protoc unknown\n// source: qorechain/license/v1/tx.proto\n\n/* eslint-disable */\nimport { BinaryReader, BinaryWriter } from \"@bufbuild/protobuf/wire\";\n\nexport const protobufPackage = \"qorechain.license.v1\";\n\nexport interface MsgGrantLicense {\n authority: string;\n grantee: string;\n featureId: string;\n expiresAt: string;\n metadata: string;\n}\n\nexport interface MsgGrantLicenseResponse {\n}\n\nexport interface MsgRevokeLicense {\n authority: string;\n grantee: string;\n featureId: string;\n}\n\nexport interface MsgRevokeLicenseResponse {\n}\n\nexport interface MsgSuspendLicense {\n authority: string;\n grantee: string;\n featureId: string;\n}\n\nexport interface MsgSuspendLicenseResponse {\n}\n\nexport interface MsgResumeLicense {\n authority: string;\n grantee: string;\n featureId: string;\n}\n\nexport interface MsgResumeLicenseResponse {\n}\n\nfunction createBaseMsgGrantLicense(): MsgGrantLicense {\n return { authority: \"\", grantee: \"\", featureId: \"\", expiresAt: \"0\", metadata: \"\" };\n}\n\nexport const MsgGrantLicense: MessageFns<MsgGrantLicense> = {\n encode(message: MsgGrantLicense, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.authority !== \"\") {\n writer.uint32(10).string(message.authority);\n }\n if (message.grantee !== \"\") {\n writer.uint32(18).string(message.grantee);\n }\n if (message.featureId !== \"\") {\n writer.uint32(26).string(message.featureId);\n }\n if (message.expiresAt !== \"0\") {\n writer.uint32(32).int64(message.expiresAt);\n }\n if (message.metadata !== \"\") {\n writer.uint32(42).string(message.metadata);\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): MsgGrantLicense {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseMsgGrantLicense();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n message.authority = reader.string();\n continue;\n }\n case 2: {\n if (tag !== 18) {\n break;\n }\n\n message.grantee = reader.string();\n continue;\n }\n case 3: {\n if (tag !== 26) {\n break;\n }\n\n message.featureId = reader.string();\n continue;\n }\n case 4: {\n if (tag !== 32) {\n break;\n }\n\n message.expiresAt = reader.int64().toString();\n continue;\n }\n case 5: {\n if (tag !== 42) {\n break;\n }\n\n message.metadata = reader.string();\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): MsgGrantLicense {\n return {\n authority: isSet(object.authority) ? globalThis.String(object.authority) : \"\",\n grantee: isSet(object.grantee) ? globalThis.String(object.grantee) : \"\",\n featureId: isSet(object.featureId)\n ? globalThis.String(object.featureId)\n : isSet(object.feature_id)\n ? globalThis.String(object.feature_id)\n : \"\",\n expiresAt: isSet(object.expiresAt)\n ? globalThis.String(object.expiresAt)\n : isSet(object.expires_at)\n ? globalThis.String(object.expires_at)\n : \"0\",\n metadata: isSet(object.metadata) ? globalThis.String(object.metadata) : \"\",\n };\n },\n\n toJSON(message: MsgGrantLicense): unknown {\n const obj: any = {};\n if (message.authority !== \"\") {\n obj.authority = message.authority;\n }\n if (message.grantee !== \"\") {\n obj.grantee = message.grantee;\n }\n if (message.featureId !== \"\") {\n obj.featureId = message.featureId;\n }\n if (message.expiresAt !== \"0\") {\n obj.expiresAt = message.expiresAt;\n }\n if (message.metadata !== \"\") {\n obj.metadata = message.metadata;\n }\n return obj;\n },\n\n create(base?: DeepPartial<MsgGrantLicense>): MsgGrantLicense {\n return MsgGrantLicense.fromPartial(base ?? {});\n },\n fromPartial(object: DeepPartial<MsgGrantLicense>): MsgGrantLicense {\n const message = createBaseMsgGrantLicense();\n message.authority = object.authority ?? \"\";\n message.grantee = object.grantee ?? \"\";\n message.featureId = object.featureId ?? \"\";\n message.expiresAt = object.expiresAt ?? \"0\";\n message.metadata = object.metadata ?? \"\";\n return message;\n },\n};\n\nfunction createBaseMsgGrantLicenseResponse(): MsgGrantLicenseResponse {\n return {};\n}\n\nexport const MsgGrantLicenseResponse: MessageFns<MsgGrantLicenseResponse> = {\n encode(_: MsgGrantLicenseResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): MsgGrantLicenseResponse {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseMsgGrantLicenseResponse();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(_: any): MsgGrantLicenseResponse {\n return {};\n },\n\n toJSON(_: MsgGrantLicenseResponse): unknown {\n const obj: any = {};\n return obj;\n },\n\n create(base?: DeepPartial<MsgGrantLicenseResponse>): MsgGrantLicenseResponse {\n return MsgGrantLicenseResponse.fromPartial(base ?? {});\n },\n fromPartial(_: DeepPartial<MsgGrantLicenseResponse>): MsgGrantLicenseResponse {\n const message = createBaseMsgGrantLicenseResponse();\n return message;\n },\n};\n\nfunction createBaseMsgRevokeLicense(): MsgRevokeLicense {\n return { authority: \"\", grantee: \"\", featureId: \"\" };\n}\n\nexport const MsgRevokeLicense: MessageFns<MsgRevokeLicense> = {\n encode(message: MsgRevokeLicense, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.authority !== \"\") {\n writer.uint32(10).string(message.authority);\n }\n if (message.grantee !== \"\") {\n writer.uint32(18).string(message.grantee);\n }\n if (message.featureId !== \"\") {\n writer.uint32(26).string(message.featureId);\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): MsgRevokeLicense {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseMsgRevokeLicense();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n message.authority = reader.string();\n continue;\n }\n case 2: {\n if (tag !== 18) {\n break;\n }\n\n message.grantee = reader.string();\n continue;\n }\n case 3: {\n if (tag !== 26) {\n break;\n }\n\n message.featureId = reader.string();\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): MsgRevokeLicense {\n return {\n authority: isSet(object.authority) ? globalThis.String(object.authority) : \"\",\n grantee: isSet(object.grantee) ? globalThis.String(object.grantee) : \"\",\n featureId: isSet(object.featureId)\n ? globalThis.String(object.featureId)\n : isSet(object.feature_id)\n ? globalThis.String(object.feature_id)\n : \"\",\n };\n },\n\n toJSON(message: MsgRevokeLicense): unknown {\n const obj: any = {};\n if (message.authority !== \"\") {\n obj.authority = message.authority;\n }\n if (message.grantee !== \"\") {\n obj.grantee = message.grantee;\n }\n if (message.featureId !== \"\") {\n obj.featureId = message.featureId;\n }\n return obj;\n },\n\n create(base?: DeepPartial<MsgRevokeLicense>): MsgRevokeLicense {\n return MsgRevokeLicense.fromPartial(base ?? {});\n },\n fromPartial(object: DeepPartial<MsgRevokeLicense>): MsgRevokeLicense {\n const message = createBaseMsgRevokeLicense();\n message.authority = object.authority ?? \"\";\n message.grantee = object.grantee ?? \"\";\n message.featureId = object.featureId ?? \"\";\n return message;\n },\n};\n\nfunction createBaseMsgRevokeLicenseResponse(): MsgRevokeLicenseResponse {\n return {};\n}\n\nexport const MsgRevokeLicenseResponse: MessageFns<MsgRevokeLicenseResponse> = {\n encode(_: MsgRevokeLicenseResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): MsgRevokeLicenseResponse {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseMsgRevokeLicenseResponse();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(_: any): MsgRevokeLicenseResponse {\n return {};\n },\n\n toJSON(_: MsgRevokeLicenseResponse): unknown {\n const obj: any = {};\n return obj;\n },\n\n create(base?: DeepPartial<MsgRevokeLicenseResponse>): MsgRevokeLicenseResponse {\n return MsgRevokeLicenseResponse.fromPartial(base ?? {});\n },\n fromPartial(_: DeepPartial<MsgRevokeLicenseResponse>): MsgRevokeLicenseResponse {\n const message = createBaseMsgRevokeLicenseResponse();\n return message;\n },\n};\n\nfunction createBaseMsgSuspendLicense(): MsgSuspendLicense {\n return { authority: \"\", grantee: \"\", featureId: \"\" };\n}\n\nexport const MsgSuspendLicense: MessageFns<MsgSuspendLicense> = {\n encode(message: MsgSuspendLicense, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.authority !== \"\") {\n writer.uint32(10).string(message.authority);\n }\n if (message.grantee !== \"\") {\n writer.uint32(18).string(message.grantee);\n }\n if (message.featureId !== \"\") {\n writer.uint32(26).string(message.featureId);\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): MsgSuspendLicense {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseMsgSuspendLicense();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n message.authority = reader.string();\n continue;\n }\n case 2: {\n if (tag !== 18) {\n break;\n }\n\n message.grantee = reader.string();\n continue;\n }\n case 3: {\n if (tag !== 26) {\n break;\n }\n\n message.featureId = reader.string();\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): MsgSuspendLicense {\n return {\n authority: isSet(object.authority) ? globalThis.String(object.authority) : \"\",\n grantee: isSet(object.grantee) ? globalThis.String(object.grantee) : \"\",\n featureId: isSet(object.featureId)\n ? globalThis.String(object.featureId)\n : isSet(object.feature_id)\n ? globalThis.String(object.feature_id)\n : \"\",\n };\n },\n\n toJSON(message: MsgSuspendLicense): unknown {\n const obj: any = {};\n if (message.authority !== \"\") {\n obj.authority = message.authority;\n }\n if (message.grantee !== \"\") {\n obj.grantee = message.grantee;\n }\n if (message.featureId !== \"\") {\n obj.featureId = message.featureId;\n }\n return obj;\n },\n\n create(base?: DeepPartial<MsgSuspendLicense>): MsgSuspendLicense {\n return MsgSuspendLicense.fromPartial(base ?? {});\n },\n fromPartial(object: DeepPartial<MsgSuspendLicense>): MsgSuspendLicense {\n const message = createBaseMsgSuspendLicense();\n message.authority = object.authority ?? \"\";\n message.grantee = object.grantee ?? \"\";\n message.featureId = object.featureId ?? \"\";\n return message;\n },\n};\n\nfunction createBaseMsgSuspendLicenseResponse(): MsgSuspendLicenseResponse {\n return {};\n}\n\nexport const MsgSuspendLicenseResponse: MessageFns<MsgSuspendLicenseResponse> = {\n encode(_: MsgSuspendLicenseResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): MsgSuspendLicenseResponse {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseMsgSuspendLicenseResponse();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(_: any): MsgSuspendLicenseResponse {\n return {};\n },\n\n toJSON(_: MsgSuspendLicenseResponse): unknown {\n const obj: any = {};\n return obj;\n },\n\n create(base?: DeepPartial<MsgSuspendLicenseResponse>): MsgSuspendLicenseResponse {\n return MsgSuspendLicenseResponse.fromPartial(base ?? {});\n },\n fromPartial(_: DeepPartial<MsgSuspendLicenseResponse>): MsgSuspendLicenseResponse {\n const message = createBaseMsgSuspendLicenseResponse();\n return message;\n },\n};\n\nfunction createBaseMsgResumeLicense(): MsgResumeLicense {\n return { authority: \"\", grantee: \"\", featureId: \"\" };\n}\n\nexport const MsgResumeLicense: MessageFns<MsgResumeLicense> = {\n encode(message: MsgResumeLicense, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.authority !== \"\") {\n writer.uint32(10).string(message.authority);\n }\n if (message.grantee !== \"\") {\n writer.uint32(18).string(message.grantee);\n }\n if (message.featureId !== \"\") {\n writer.uint32(26).string(message.featureId);\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): MsgResumeLicense {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseMsgResumeLicense();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n message.authority = reader.string();\n continue;\n }\n case 2: {\n if (tag !== 18) {\n break;\n }\n\n message.grantee = reader.string();\n continue;\n }\n case 3: {\n if (tag !== 26) {\n break;\n }\n\n message.featureId = reader.string();\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): MsgResumeLicense {\n return {\n authority: isSet(object.authority) ? globalThis.String(object.authority) : \"\",\n grantee: isSet(object.grantee) ? globalThis.String(object.grantee) : \"\",\n featureId: isSet(object.featureId)\n ? globalThis.String(object.featureId)\n : isSet(object.feature_id)\n ? globalThis.String(object.feature_id)\n : \"\",\n };\n },\n\n toJSON(message: MsgResumeLicense): unknown {\n const obj: any = {};\n if (message.authority !== \"\") {\n obj.authority = message.authority;\n }\n if (message.grantee !== \"\") {\n obj.grantee = message.grantee;\n }\n if (message.featureId !== \"\") {\n obj.featureId = message.featureId;\n }\n return obj;\n },\n\n create(base?: DeepPartial<MsgResumeLicense>): MsgResumeLicense {\n return MsgResumeLicense.fromPartial(base ?? {});\n },\n fromPartial(object: DeepPartial<MsgResumeLicense>): MsgResumeLicense {\n const message = createBaseMsgResumeLicense();\n message.authority = object.authority ?? \"\";\n message.grantee = object.grantee ?? \"\";\n message.featureId = object.featureId ?? \"\";\n return message;\n },\n};\n\nfunction createBaseMsgResumeLicenseResponse(): MsgResumeLicenseResponse {\n return {};\n}\n\nexport const MsgResumeLicenseResponse: MessageFns<MsgResumeLicenseResponse> = {\n encode(_: MsgResumeLicenseResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): MsgResumeLicenseResponse {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseMsgResumeLicenseResponse();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(_: any): MsgResumeLicenseResponse {\n return {};\n },\n\n toJSON(_: MsgResumeLicenseResponse): unknown {\n const obj: any = {};\n return obj;\n },\n\n create(base?: DeepPartial<MsgResumeLicenseResponse>): MsgResumeLicenseResponse {\n return MsgResumeLicenseResponse.fromPartial(base ?? {});\n },\n fromPartial(_: DeepPartial<MsgResumeLicenseResponse>): MsgResumeLicenseResponse {\n const message = createBaseMsgResumeLicenseResponse();\n return message;\n },\n};\n\n/** Msg defines the license module's transaction service. */\nexport type MsgDefinition = typeof MsgDefinition;\nexport const MsgDefinition = {\n name: \"Msg\",\n fullName: \"qorechain.license.v1.Msg\",\n methods: {\n grantLicense: {\n name: \"GrantLicense\",\n requestType: MsgGrantLicense as typeof MsgGrantLicense,\n requestStream: false,\n responseType: MsgGrantLicenseResponse as typeof MsgGrantLicenseResponse,\n responseStream: false,\n options: {},\n },\n revokeLicense: {\n name: \"RevokeLicense\",\n requestType: MsgRevokeLicense as typeof MsgRevokeLicense,\n requestStream: false,\n responseType: MsgRevokeLicenseResponse as typeof MsgRevokeLicenseResponse,\n responseStream: false,\n options: {},\n },\n suspendLicense: {\n name: \"SuspendLicense\",\n requestType: MsgSuspendLicense as typeof MsgSuspendLicense,\n requestStream: false,\n responseType: MsgSuspendLicenseResponse as typeof MsgSuspendLicenseResponse,\n responseStream: false,\n options: {},\n },\n resumeLicense: {\n name: \"ResumeLicense\",\n requestType: MsgResumeLicense as typeof MsgResumeLicense,\n requestStream: false,\n responseType: MsgResumeLicenseResponse as typeof MsgResumeLicenseResponse,\n responseStream: false,\n options: {},\n },\n },\n} as const;\n\ntype Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;\n\nexport type DeepPartial<T> = T extends Builtin ? T\n : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>>\n : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>\n : T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }\n : Partial<T>;\n\nfunction isSet(value: any): boolean {\n return value !== null && value !== undefined;\n}\n\nexport interface MessageFns<T> {\n encode(message: T, writer?: BinaryWriter): BinaryWriter;\n decode(input: BinaryReader | Uint8Array, length?: number): T;\n fromJSON(object: any): T;\n toJSON(message: T): unknown;\n create(base?: DeepPartial<T>): T;\n fromPartial(object: DeepPartial<T>): T;\n}\n","// Code generated by protoc-gen-ts_proto. DO NOT EDIT.\n// versions:\n// protoc-gen-ts_proto v2.11.8\n// protoc unknown\n// source: qorechain/abstractaccount/v1/tx.proto\n\n/* eslint-disable */\nimport { BinaryReader, BinaryWriter } from \"@bufbuild/protobuf/wire\";\n\nexport const protobufPackage = \"qorechain.abstractaccount.v1\";\n\n/** SpendingRule defines spending limits for an abstract account. */\nexport interface SpendingRule {\n id: string;\n dailyLimit: string;\n perTxLimit: string;\n allowedDenoms: string[];\n enabled: boolean;\n}\n\nexport interface MsgCreateAbstractAccount {\n owner: string;\n accountType: string;\n}\n\nexport interface MsgCreateAbstractAccountResponse {\n address: string;\n}\n\nexport interface MsgUpdateSpendingRules {\n owner: string;\n accountAddress: string;\n rules: SpendingRule[];\n}\n\nexport interface MsgUpdateSpendingRulesResponse {\n}\n\nfunction createBaseSpendingRule(): SpendingRule {\n return { id: \"\", dailyLimit: \"0\", perTxLimit: \"0\", allowedDenoms: [], enabled: false };\n}\n\nexport const SpendingRule: MessageFns<SpendingRule> = {\n encode(message: SpendingRule, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.id !== \"\") {\n writer.uint32(10).string(message.id);\n }\n if (message.dailyLimit !== \"0\") {\n writer.uint32(16).int64(message.dailyLimit);\n }\n if (message.perTxLimit !== \"0\") {\n writer.uint32(24).int64(message.perTxLimit);\n }\n for (const v of message.allowedDenoms) {\n writer.uint32(34).string(v!);\n }\n if (message.enabled !== false) {\n writer.uint32(40).bool(message.enabled);\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): SpendingRule {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseSpendingRule();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n message.id = reader.string();\n continue;\n }\n case 2: {\n if (tag !== 16) {\n break;\n }\n\n message.dailyLimit = reader.int64().toString();\n continue;\n }\n case 3: {\n if (tag !== 24) {\n break;\n }\n\n message.perTxLimit = reader.int64().toString();\n continue;\n }\n case 4: {\n if (tag !== 34) {\n break;\n }\n\n message.allowedDenoms.push(reader.string());\n continue;\n }\n case 5: {\n if (tag !== 40) {\n break;\n }\n\n message.enabled = reader.bool();\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): SpendingRule {\n return {\n id: isSet(object.id) ? globalThis.String(object.id) : \"\",\n dailyLimit: isSet(object.dailyLimit)\n ? globalThis.String(object.dailyLimit)\n : isSet(object.daily_limit)\n ? globalThis.String(object.daily_limit)\n : \"0\",\n perTxLimit: isSet(object.perTxLimit)\n ? globalThis.String(object.perTxLimit)\n : isSet(object.per_tx_limit)\n ? globalThis.String(object.per_tx_limit)\n : \"0\",\n allowedDenoms: globalThis.Array.isArray(object?.allowedDenoms)\n ? object.allowedDenoms.map((e: any) => globalThis.String(e))\n : globalThis.Array.isArray(object?.allowed_denoms)\n ? object.allowed_denoms.map((e: any) => globalThis.String(e))\n : [],\n enabled: isSet(object.enabled) ? globalThis.Boolean(object.enabled) : false,\n };\n },\n\n toJSON(message: SpendingRule): unknown {\n const obj: any = {};\n if (message.id !== \"\") {\n obj.id = message.id;\n }\n if (message.dailyLimit !== \"0\") {\n obj.dailyLimit = message.dailyLimit;\n }\n if (message.perTxLimit !== \"0\") {\n obj.perTxLimit = message.perTxLimit;\n }\n if (message.allowedDenoms?.length) {\n obj.allowedDenoms = message.allowedDenoms;\n }\n if (message.enabled !== false) {\n obj.enabled = message.enabled;\n }\n return obj;\n },\n\n create(base?: DeepPartial<SpendingRule>): SpendingRule {\n return SpendingRule.fromPartial(base ?? {});\n },\n fromPartial(object: DeepPartial<SpendingRule>): SpendingRule {\n const message = createBaseSpendingRule();\n message.id = object.id ?? \"\";\n message.dailyLimit = object.dailyLimit ?? \"0\";\n message.perTxLimit = object.perTxLimit ?? \"0\";\n message.allowedDenoms = object.allowedDenoms?.map((e) => e) || [];\n message.enabled = object.enabled ?? false;\n return message;\n },\n};\n\nfunction createBaseMsgCreateAbstractAccount(): MsgCreateAbstractAccount {\n return { owner: \"\", accountType: \"\" };\n}\n\nexport const MsgCreateAbstractAccount: MessageFns<MsgCreateAbstractAccount> = {\n encode(message: MsgCreateAbstractAccount, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.owner !== \"\") {\n writer.uint32(10).string(message.owner);\n }\n if (message.accountType !== \"\") {\n writer.uint32(18).string(message.accountType);\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): MsgCreateAbstractAccount {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseMsgCreateAbstractAccount();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n message.owner = reader.string();\n continue;\n }\n case 2: {\n if (tag !== 18) {\n break;\n }\n\n message.accountType = reader.string();\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): MsgCreateAbstractAccount {\n return {\n owner: isSet(object.owner) ? globalThis.String(object.owner) : \"\",\n accountType: isSet(object.accountType)\n ? globalThis.String(object.accountType)\n : isSet(object.account_type)\n ? globalThis.String(object.account_type)\n : \"\",\n };\n },\n\n toJSON(message: MsgCreateAbstractAccount): unknown {\n const obj: any = {};\n if (message.owner !== \"\") {\n obj.owner = message.owner;\n }\n if (message.accountType !== \"\") {\n obj.accountType = message.accountType;\n }\n return obj;\n },\n\n create(base?: DeepPartial<MsgCreateAbstractAccount>): MsgCreateAbstractAccount {\n return MsgCreateAbstractAccount.fromPartial(base ?? {});\n },\n fromPartial(object: DeepPartial<MsgCreateAbstractAccount>): MsgCreateAbstractAccount {\n const message = createBaseMsgCreateAbstractAccount();\n message.owner = object.owner ?? \"\";\n message.accountType = object.accountType ?? \"\";\n return message;\n },\n};\n\nfunction createBaseMsgCreateAbstractAccountResponse(): MsgCreateAbstractAccountResponse {\n return { address: \"\" };\n}\n\nexport const MsgCreateAbstractAccountResponse: MessageFns<MsgCreateAbstractAccountResponse> = {\n encode(message: MsgCreateAbstractAccountResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.address !== \"\") {\n writer.uint32(10).string(message.address);\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): MsgCreateAbstractAccountResponse {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseMsgCreateAbstractAccountResponse();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n message.address = reader.string();\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): MsgCreateAbstractAccountResponse {\n return { address: isSet(object.address) ? globalThis.String(object.address) : \"\" };\n },\n\n toJSON(message: MsgCreateAbstractAccountResponse): unknown {\n const obj: any = {};\n if (message.address !== \"\") {\n obj.address = message.address;\n }\n return obj;\n },\n\n create(base?: DeepPartial<MsgCreateAbstractAccountResponse>): MsgCreateAbstractAccountResponse {\n return MsgCreateAbstractAccountResponse.fromPartial(base ?? {});\n },\n fromPartial(object: DeepPartial<MsgCreateAbstractAccountResponse>): MsgCreateAbstractAccountResponse {\n const message = createBaseMsgCreateAbstractAccountResponse();\n message.address = object.address ?? \"\";\n return message;\n },\n};\n\nfunction createBaseMsgUpdateSpendingRules(): MsgUpdateSpendingRules {\n return { owner: \"\", accountAddress: \"\", rules: [] };\n}\n\nexport const MsgUpdateSpendingRules: MessageFns<MsgUpdateSpendingRules> = {\n encode(message: MsgUpdateSpendingRules, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.owner !== \"\") {\n writer.uint32(10).string(message.owner);\n }\n if (message.accountAddress !== \"\") {\n writer.uint32(18).string(message.accountAddress);\n }\n for (const v of message.rules) {\n SpendingRule.encode(v!, writer.uint32(26).fork()).join();\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): MsgUpdateSpendingRules {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseMsgUpdateSpendingRules();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n message.owner = reader.string();\n continue;\n }\n case 2: {\n if (tag !== 18) {\n break;\n }\n\n message.accountAddress = reader.string();\n continue;\n }\n case 3: {\n if (tag !== 26) {\n break;\n }\n\n message.rules.push(SpendingRule.decode(reader, reader.uint32()));\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): MsgUpdateSpendingRules {\n return {\n owner: isSet(object.owner) ? globalThis.String(object.owner) : \"\",\n accountAddress: isSet(object.accountAddress)\n ? globalThis.String(object.accountAddress)\n : isSet(object.account_address)\n ? globalThis.String(object.account_address)\n : \"\",\n rules: globalThis.Array.isArray(object?.rules) ? object.rules.map((e: any) => SpendingRule.fromJSON(e)) : [],\n };\n },\n\n toJSON(message: MsgUpdateSpendingRules): unknown {\n const obj: any = {};\n if (message.owner !== \"\") {\n obj.owner = message.owner;\n }\n if (message.accountAddress !== \"\") {\n obj.accountAddress = message.accountAddress;\n }\n if (message.rules?.length) {\n obj.rules = message.rules.map((e) => SpendingRule.toJSON(e));\n }\n return obj;\n },\n\n create(base?: DeepPartial<MsgUpdateSpendingRules>): MsgUpdateSpendingRules {\n return MsgUpdateSpendingRules.fromPartial(base ?? {});\n },\n fromPartial(object: DeepPartial<MsgUpdateSpendingRules>): MsgUpdateSpendingRules {\n const message = createBaseMsgUpdateSpendingRules();\n message.owner = object.owner ?? \"\";\n message.accountAddress = object.accountAddress ?? \"\";\n message.rules = object.rules?.map((e) => SpendingRule.fromPartial(e)) || [];\n return message;\n },\n};\n\nfunction createBaseMsgUpdateSpendingRulesResponse(): MsgUpdateSpendingRulesResponse {\n return {};\n}\n\nexport const MsgUpdateSpendingRulesResponse: MessageFns<MsgUpdateSpendingRulesResponse> = {\n encode(_: MsgUpdateSpendingRulesResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): MsgUpdateSpendingRulesResponse {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseMsgUpdateSpendingRulesResponse();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(_: any): MsgUpdateSpendingRulesResponse {\n return {};\n },\n\n toJSON(_: MsgUpdateSpendingRulesResponse): unknown {\n const obj: any = {};\n return obj;\n },\n\n create(base?: DeepPartial<MsgUpdateSpendingRulesResponse>): MsgUpdateSpendingRulesResponse {\n return MsgUpdateSpendingRulesResponse.fromPartial(base ?? {});\n },\n fromPartial(_: DeepPartial<MsgUpdateSpendingRulesResponse>): MsgUpdateSpendingRulesResponse {\n const message = createBaseMsgUpdateSpendingRulesResponse();\n return message;\n },\n};\n\n/** Msg defines the abstractaccount module's transaction service. */\nexport type MsgDefinition = typeof MsgDefinition;\nexport const MsgDefinition = {\n name: \"Msg\",\n fullName: \"qorechain.abstractaccount.v1.Msg\",\n methods: {\n createAbstractAccount: {\n name: \"CreateAbstractAccount\",\n requestType: MsgCreateAbstractAccount as typeof MsgCreateAbstractAccount,\n requestStream: false,\n responseType: MsgCreateAbstractAccountResponse as typeof MsgCreateAbstractAccountResponse,\n responseStream: false,\n options: {},\n },\n updateSpendingRules: {\n name: \"UpdateSpendingRules\",\n requestType: MsgUpdateSpendingRules as typeof MsgUpdateSpendingRules,\n requestStream: false,\n responseType: MsgUpdateSpendingRulesResponse as typeof MsgUpdateSpendingRulesResponse,\n responseStream: false,\n options: {},\n },\n },\n} as const;\n\ntype Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;\n\nexport type DeepPartial<T> = T extends Builtin ? T\n : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>>\n : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>\n : T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }\n : Partial<T>;\n\nfunction isSet(value: any): boolean {\n return value !== null && value !== undefined;\n}\n\nexport interface MessageFns<T> {\n encode(message: T, writer?: BinaryWriter): BinaryWriter;\n decode(input: BinaryReader | Uint8Array, length?: number): T;\n fromJSON(object: any): T;\n toJSON(message: T): unknown;\n create(base?: DeepPartial<T>): T;\n fromPartial(object: DeepPartial<T>): T;\n}\n","// Code generated by protoc-gen-ts_proto. DO NOT EDIT.\n// versions:\n// protoc-gen-ts_proto v2.11.8\n// protoc unknown\n// source: qorechain/crossvm/v1/tx.proto\n\n/* eslint-disable */\nimport { BinaryReader, BinaryWriter } from \"@bufbuild/protobuf/wire\";\nimport { Coin } from \"../../../cosmos/base/v1beta1/coin\";\n\nexport const protobufPackage = \"qorechain.crossvm.v1\";\n\nexport interface MsgCrossVMCall {\n sender: string;\n sourceVm: string;\n targetVm: string;\n targetContract: string;\n payload: Uint8Array;\n funds: Coin[];\n}\n\nexport interface MsgCrossVMCallResponse {\n messageId: string;\n}\n\nexport interface MsgProcessQueue {\n authority: string;\n}\n\nexport interface MsgProcessQueueResponse {\n}\n\nfunction createBaseMsgCrossVMCall(): MsgCrossVMCall {\n return { sender: \"\", sourceVm: \"\", targetVm: \"\", targetContract: \"\", payload: new Uint8Array(0), funds: [] };\n}\n\nexport const MsgCrossVMCall: MessageFns<MsgCrossVMCall> = {\n encode(message: MsgCrossVMCall, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.sender !== \"\") {\n writer.uint32(10).string(message.sender);\n }\n if (message.sourceVm !== \"\") {\n writer.uint32(18).string(message.sourceVm);\n }\n if (message.targetVm !== \"\") {\n writer.uint32(26).string(message.targetVm);\n }\n if (message.targetContract !== \"\") {\n writer.uint32(34).string(message.targetContract);\n }\n if (message.payload.length !== 0) {\n writer.uint32(42).bytes(message.payload);\n }\n for (const v of message.funds) {\n Coin.encode(v!, writer.uint32(50).fork()).join();\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): MsgCrossVMCall {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseMsgCrossVMCall();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n message.sender = reader.string();\n continue;\n }\n case 2: {\n if (tag !== 18) {\n break;\n }\n\n message.sourceVm = reader.string();\n continue;\n }\n case 3: {\n if (tag !== 26) {\n break;\n }\n\n message.targetVm = reader.string();\n continue;\n }\n case 4: {\n if (tag !== 34) {\n break;\n }\n\n message.targetContract = reader.string();\n continue;\n }\n case 5: {\n if (tag !== 42) {\n break;\n }\n\n message.payload = reader.bytes();\n continue;\n }\n case 6: {\n if (tag !== 50) {\n break;\n }\n\n message.funds.push(Coin.decode(reader, reader.uint32()));\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): MsgCrossVMCall {\n return {\n sender: isSet(object.sender) ? globalThis.String(object.sender) : \"\",\n sourceVm: isSet(object.sourceVm)\n ? globalThis.String(object.sourceVm)\n : isSet(object.source_vm)\n ? globalThis.String(object.source_vm)\n : \"\",\n targetVm: isSet(object.targetVm)\n ? globalThis.String(object.targetVm)\n : isSet(object.target_vm)\n ? globalThis.String(object.target_vm)\n : \"\",\n targetContract: isSet(object.targetContract)\n ? globalThis.String(object.targetContract)\n : isSet(object.target_contract)\n ? globalThis.String(object.target_contract)\n : \"\",\n payload: isSet(object.payload) ? bytesFromBase64(object.payload) : new Uint8Array(0),\n funds: globalThis.Array.isArray(object?.funds)\n ? object.funds.map((e: any) => Coin.fromJSON(e))\n : [],\n };\n },\n\n toJSON(message: MsgCrossVMCall): unknown {\n const obj: any = {};\n if (message.sender !== \"\") {\n obj.sender = message.sender;\n }\n if (message.sourceVm !== \"\") {\n obj.sourceVm = message.sourceVm;\n }\n if (message.targetVm !== \"\") {\n obj.targetVm = message.targetVm;\n }\n if (message.targetContract !== \"\") {\n obj.targetContract = message.targetContract;\n }\n if (message.payload.length !== 0) {\n obj.payload = base64FromBytes(message.payload);\n }\n if (message.funds?.length) {\n obj.funds = message.funds.map((e) => Coin.toJSON(e));\n }\n return obj;\n },\n\n create(base?: DeepPartial<MsgCrossVMCall>): MsgCrossVMCall {\n return MsgCrossVMCall.fromPartial(base ?? {});\n },\n fromPartial(object: DeepPartial<MsgCrossVMCall>): MsgCrossVMCall {\n const message = createBaseMsgCrossVMCall();\n message.sender = object.sender ?? \"\";\n message.sourceVm = object.sourceVm ?? \"\";\n message.targetVm = object.targetVm ?? \"\";\n message.targetContract = object.targetContract ?? \"\";\n message.payload = object.payload ?? new Uint8Array(0);\n message.funds = object.funds?.map((e) => Coin.fromPartial(e)) || [];\n return message;\n },\n};\n\nfunction createBaseMsgCrossVMCallResponse(): MsgCrossVMCallResponse {\n return { messageId: \"\" };\n}\n\nexport const MsgCrossVMCallResponse: MessageFns<MsgCrossVMCallResponse> = {\n encode(message: MsgCrossVMCallResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.messageId !== \"\") {\n writer.uint32(10).string(message.messageId);\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): MsgCrossVMCallResponse {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseMsgCrossVMCallResponse();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n message.messageId = reader.string();\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): MsgCrossVMCallResponse {\n return {\n messageId: isSet(object.messageId)\n ? globalThis.String(object.messageId)\n : isSet(object.message_id)\n ? globalThis.String(object.message_id)\n : \"\",\n };\n },\n\n toJSON(message: MsgCrossVMCallResponse): unknown {\n const obj: any = {};\n if (message.messageId !== \"\") {\n obj.messageId = message.messageId;\n }\n return obj;\n },\n\n create(base?: DeepPartial<MsgCrossVMCallResponse>): MsgCrossVMCallResponse {\n return MsgCrossVMCallResponse.fromPartial(base ?? {});\n },\n fromPartial(object: DeepPartial<MsgCrossVMCallResponse>): MsgCrossVMCallResponse {\n const message = createBaseMsgCrossVMCallResponse();\n message.messageId = object.messageId ?? \"\";\n return message;\n },\n};\n\nfunction createBaseMsgProcessQueue(): MsgProcessQueue {\n return { authority: \"\" };\n}\n\nexport const MsgProcessQueue: MessageFns<MsgProcessQueue> = {\n encode(message: MsgProcessQueue, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.authority !== \"\") {\n writer.uint32(10).string(message.authority);\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): MsgProcessQueue {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseMsgProcessQueue();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n message.authority = reader.string();\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): MsgProcessQueue {\n return { authority: isSet(object.authority) ? globalThis.String(object.authority) : \"\" };\n },\n\n toJSON(message: MsgProcessQueue): unknown {\n const obj: any = {};\n if (message.authority !== \"\") {\n obj.authority = message.authority;\n }\n return obj;\n },\n\n create(base?: DeepPartial<MsgProcessQueue>): MsgProcessQueue {\n return MsgProcessQueue.fromPartial(base ?? {});\n },\n fromPartial(object: DeepPartial<MsgProcessQueue>): MsgProcessQueue {\n const message = createBaseMsgProcessQueue();\n message.authority = object.authority ?? \"\";\n return message;\n },\n};\n\nfunction createBaseMsgProcessQueueResponse(): MsgProcessQueueResponse {\n return {};\n}\n\nexport const MsgProcessQueueResponse: MessageFns<MsgProcessQueueResponse> = {\n encode(_: MsgProcessQueueResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): MsgProcessQueueResponse {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseMsgProcessQueueResponse();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(_: any): MsgProcessQueueResponse {\n return {};\n },\n\n toJSON(_: MsgProcessQueueResponse): unknown {\n const obj: any = {};\n return obj;\n },\n\n create(base?: DeepPartial<MsgProcessQueueResponse>): MsgProcessQueueResponse {\n return MsgProcessQueueResponse.fromPartial(base ?? {});\n },\n fromPartial(_: DeepPartial<MsgProcessQueueResponse>): MsgProcessQueueResponse {\n const message = createBaseMsgProcessQueueResponse();\n return message;\n },\n};\n\n/** Msg defines the crossvm module's transaction service. */\nexport type MsgDefinition = typeof MsgDefinition;\nexport const MsgDefinition = {\n name: \"Msg\",\n fullName: \"qorechain.crossvm.v1.Msg\",\n methods: {\n /** CrossVMCall submits a cross-VM message to the queue. */\n crossVMCall: {\n name: \"CrossVMCall\",\n requestType: MsgCrossVMCall as typeof MsgCrossVMCall,\n requestStream: false,\n responseType: MsgCrossVMCallResponse as typeof MsgCrossVMCallResponse,\n responseStream: false,\n options: {},\n },\n /** ProcessQueue processes the pending cross-VM message queue. */\n processQueue: {\n name: \"ProcessQueue\",\n requestType: MsgProcessQueue as typeof MsgProcessQueue,\n requestStream: false,\n responseType: MsgProcessQueueResponse as typeof MsgProcessQueueResponse,\n responseStream: false,\n options: {},\n },\n },\n} as const;\n\nfunction bytesFromBase64(b64: string): Uint8Array {\n if ((globalThis as any).Buffer) {\n return Uint8Array.from((globalThis as any).Buffer.from(b64, \"base64\"));\n } else {\n const bin = globalThis.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 }\n}\n\nfunction base64FromBytes(arr: Uint8Array): string {\n if ((globalThis as any).Buffer) {\n return (globalThis as any).Buffer.from(arr).toString(\"base64\");\n } else {\n const bin: string[] = [];\n arr.forEach((byte) => {\n bin.push(globalThis.String.fromCharCode(byte));\n });\n return globalThis.btoa(bin.join(\"\"));\n }\n}\n\ntype Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;\n\nexport type DeepPartial<T> = T extends Builtin ? T\n : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>>\n : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>\n : T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }\n : Partial<T>;\n\nfunction isSet(value: any): boolean {\n return value !== null && value !== undefined;\n}\n\nexport interface MessageFns<T> {\n encode(message: T, writer?: BinaryWriter): BinaryWriter;\n decode(input: BinaryReader | Uint8Array, length?: number): T;\n fromJSON(object: any): T;\n toJSON(message: T): unknown;\n create(base?: DeepPartial<T>): T;\n fromPartial(object: DeepPartial<T>): T;\n}\n","// Code generated by protoc-gen-ts_proto. DO NOT EDIT.\n// versions:\n// protoc-gen-ts_proto v2.11.8\n// protoc unknown\n// source: qorechain/rlconsensus/v1/tx.proto\n\n/* eslint-disable */\nimport { BinaryReader, BinaryWriter } from \"@bufbuild/protobuf/wire\";\n\nexport const protobufPackage = \"qorechain.rlconsensus.v1\";\n\nexport interface MsgSetAgentMode {\n authority: string;\n /** mode cast to the named AgentMode (uint8) Go type. */\n mode: number;\n}\n\nexport interface MsgSetAgentModeResponse {\n}\n\nexport interface MsgResumeAgent {\n authority: string;\n}\n\nexport interface MsgResumeAgentResponse {\n}\n\nexport interface MsgUpdatePolicy {\n authority: string;\n /** JSON-encoded types.PolicyWeights (epoch + MLP config + weight vector). */\n weightsJson: string;\n}\n\nexport interface MsgUpdatePolicyResponse {\n}\n\nexport interface MsgUpdateRewardWeights {\n authority: string;\n throughput: string;\n finality: string;\n decentralization: string;\n mev: string;\n failedTxs: string;\n}\n\nexport interface MsgUpdateRewardWeightsResponse {\n}\n\nfunction createBaseMsgSetAgentMode(): MsgSetAgentMode {\n return { authority: \"\", mode: 0 };\n}\n\nexport const MsgSetAgentMode: MessageFns<MsgSetAgentMode> = {\n encode(message: MsgSetAgentMode, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.authority !== \"\") {\n writer.uint32(10).string(message.authority);\n }\n if (message.mode !== 0) {\n writer.uint32(16).uint32(message.mode);\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): MsgSetAgentMode {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseMsgSetAgentMode();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n message.authority = reader.string();\n continue;\n }\n case 2: {\n if (tag !== 16) {\n break;\n }\n\n message.mode = reader.uint32();\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): MsgSetAgentMode {\n return {\n authority: isSet(object.authority) ? globalThis.String(object.authority) : \"\",\n mode: isSet(object.mode) ? globalThis.Number(object.mode) : 0,\n };\n },\n\n toJSON(message: MsgSetAgentMode): unknown {\n const obj: any = {};\n if (message.authority !== \"\") {\n obj.authority = message.authority;\n }\n if (message.mode !== 0) {\n obj.mode = Math.round(message.mode);\n }\n return obj;\n },\n\n create(base?: DeepPartial<MsgSetAgentMode>): MsgSetAgentMode {\n return MsgSetAgentMode.fromPartial(base ?? {});\n },\n fromPartial(object: DeepPartial<MsgSetAgentMode>): MsgSetAgentMode {\n const message = createBaseMsgSetAgentMode();\n message.authority = object.authority ?? \"\";\n message.mode = object.mode ?? 0;\n return message;\n },\n};\n\nfunction createBaseMsgSetAgentModeResponse(): MsgSetAgentModeResponse {\n return {};\n}\n\nexport const MsgSetAgentModeResponse: MessageFns<MsgSetAgentModeResponse> = {\n encode(_: MsgSetAgentModeResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): MsgSetAgentModeResponse {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseMsgSetAgentModeResponse();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(_: any): MsgSetAgentModeResponse {\n return {};\n },\n\n toJSON(_: MsgSetAgentModeResponse): unknown {\n const obj: any = {};\n return obj;\n },\n\n create(base?: DeepPartial<MsgSetAgentModeResponse>): MsgSetAgentModeResponse {\n return MsgSetAgentModeResponse.fromPartial(base ?? {});\n },\n fromPartial(_: DeepPartial<MsgSetAgentModeResponse>): MsgSetAgentModeResponse {\n const message = createBaseMsgSetAgentModeResponse();\n return message;\n },\n};\n\nfunction createBaseMsgResumeAgent(): MsgResumeAgent {\n return { authority: \"\" };\n}\n\nexport const MsgResumeAgent: MessageFns<MsgResumeAgent> = {\n encode(message: MsgResumeAgent, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.authority !== \"\") {\n writer.uint32(10).string(message.authority);\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): MsgResumeAgent {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseMsgResumeAgent();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n message.authority = reader.string();\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): MsgResumeAgent {\n return { authority: isSet(object.authority) ? globalThis.String(object.authority) : \"\" };\n },\n\n toJSON(message: MsgResumeAgent): unknown {\n const obj: any = {};\n if (message.authority !== \"\") {\n obj.authority = message.authority;\n }\n return obj;\n },\n\n create(base?: DeepPartial<MsgResumeAgent>): MsgResumeAgent {\n return MsgResumeAgent.fromPartial(base ?? {});\n },\n fromPartial(object: DeepPartial<MsgResumeAgent>): MsgResumeAgent {\n const message = createBaseMsgResumeAgent();\n message.authority = object.authority ?? \"\";\n return message;\n },\n};\n\nfunction createBaseMsgResumeAgentResponse(): MsgResumeAgentResponse {\n return {};\n}\n\nexport const MsgResumeAgentResponse: MessageFns<MsgResumeAgentResponse> = {\n encode(_: MsgResumeAgentResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): MsgResumeAgentResponse {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseMsgResumeAgentResponse();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(_: any): MsgResumeAgentResponse {\n return {};\n },\n\n toJSON(_: MsgResumeAgentResponse): unknown {\n const obj: any = {};\n return obj;\n },\n\n create(base?: DeepPartial<MsgResumeAgentResponse>): MsgResumeAgentResponse {\n return MsgResumeAgentResponse.fromPartial(base ?? {});\n },\n fromPartial(_: DeepPartial<MsgResumeAgentResponse>): MsgResumeAgentResponse {\n const message = createBaseMsgResumeAgentResponse();\n return message;\n },\n};\n\nfunction createBaseMsgUpdatePolicy(): MsgUpdatePolicy {\n return { authority: \"\", weightsJson: \"\" };\n}\n\nexport const MsgUpdatePolicy: MessageFns<MsgUpdatePolicy> = {\n encode(message: MsgUpdatePolicy, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.authority !== \"\") {\n writer.uint32(10).string(message.authority);\n }\n if (message.weightsJson !== \"\") {\n writer.uint32(18).string(message.weightsJson);\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): MsgUpdatePolicy {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseMsgUpdatePolicy();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n message.authority = reader.string();\n continue;\n }\n case 2: {\n if (tag !== 18) {\n break;\n }\n\n message.weightsJson = reader.string();\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): MsgUpdatePolicy {\n return {\n authority: isSet(object.authority) ? globalThis.String(object.authority) : \"\",\n weightsJson: isSet(object.weightsJson)\n ? globalThis.String(object.weightsJson)\n : isSet(object.weights_json)\n ? globalThis.String(object.weights_json)\n : \"\",\n };\n },\n\n toJSON(message: MsgUpdatePolicy): unknown {\n const obj: any = {};\n if (message.authority !== \"\") {\n obj.authority = message.authority;\n }\n if (message.weightsJson !== \"\") {\n obj.weightsJson = message.weightsJson;\n }\n return obj;\n },\n\n create(base?: DeepPartial<MsgUpdatePolicy>): MsgUpdatePolicy {\n return MsgUpdatePolicy.fromPartial(base ?? {});\n },\n fromPartial(object: DeepPartial<MsgUpdatePolicy>): MsgUpdatePolicy {\n const message = createBaseMsgUpdatePolicy();\n message.authority = object.authority ?? \"\";\n message.weightsJson = object.weightsJson ?? \"\";\n return message;\n },\n};\n\nfunction createBaseMsgUpdatePolicyResponse(): MsgUpdatePolicyResponse {\n return {};\n}\n\nexport const MsgUpdatePolicyResponse: MessageFns<MsgUpdatePolicyResponse> = {\n encode(_: MsgUpdatePolicyResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): MsgUpdatePolicyResponse {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseMsgUpdatePolicyResponse();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(_: any): MsgUpdatePolicyResponse {\n return {};\n },\n\n toJSON(_: MsgUpdatePolicyResponse): unknown {\n const obj: any = {};\n return obj;\n },\n\n create(base?: DeepPartial<MsgUpdatePolicyResponse>): MsgUpdatePolicyResponse {\n return MsgUpdatePolicyResponse.fromPartial(base ?? {});\n },\n fromPartial(_: DeepPartial<MsgUpdatePolicyResponse>): MsgUpdatePolicyResponse {\n const message = createBaseMsgUpdatePolicyResponse();\n return message;\n },\n};\n\nfunction createBaseMsgUpdateRewardWeights(): MsgUpdateRewardWeights {\n return { authority: \"\", throughput: \"\", finality: \"\", decentralization: \"\", mev: \"\", failedTxs: \"\" };\n}\n\nexport const MsgUpdateRewardWeights: MessageFns<MsgUpdateRewardWeights> = {\n encode(message: MsgUpdateRewardWeights, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.authority !== \"\") {\n writer.uint32(10).string(message.authority);\n }\n if (message.throughput !== \"\") {\n writer.uint32(18).string(message.throughput);\n }\n if (message.finality !== \"\") {\n writer.uint32(26).string(message.finality);\n }\n if (message.decentralization !== \"\") {\n writer.uint32(34).string(message.decentralization);\n }\n if (message.mev !== \"\") {\n writer.uint32(42).string(message.mev);\n }\n if (message.failedTxs !== \"\") {\n writer.uint32(50).string(message.failedTxs);\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): MsgUpdateRewardWeights {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseMsgUpdateRewardWeights();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n message.authority = reader.string();\n continue;\n }\n case 2: {\n if (tag !== 18) {\n break;\n }\n\n message.throughput = reader.string();\n continue;\n }\n case 3: {\n if (tag !== 26) {\n break;\n }\n\n message.finality = reader.string();\n continue;\n }\n case 4: {\n if (tag !== 34) {\n break;\n }\n\n message.decentralization = reader.string();\n continue;\n }\n case 5: {\n if (tag !== 42) {\n break;\n }\n\n message.mev = reader.string();\n continue;\n }\n case 6: {\n if (tag !== 50) {\n break;\n }\n\n message.failedTxs = reader.string();\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): MsgUpdateRewardWeights {\n return {\n authority: isSet(object.authority) ? globalThis.String(object.authority) : \"\",\n throughput: isSet(object.throughput) ? globalThis.String(object.throughput) : \"\",\n finality: isSet(object.finality) ? globalThis.String(object.finality) : \"\",\n decentralization: isSet(object.decentralization) ? globalThis.String(object.decentralization) : \"\",\n mev: isSet(object.mev) ? globalThis.String(object.mev) : \"\",\n failedTxs: isSet(object.failedTxs)\n ? globalThis.String(object.failedTxs)\n : isSet(object.failed_txs)\n ? globalThis.String(object.failed_txs)\n : \"\",\n };\n },\n\n toJSON(message: MsgUpdateRewardWeights): unknown {\n const obj: any = {};\n if (message.authority !== \"\") {\n obj.authority = message.authority;\n }\n if (message.throughput !== \"\") {\n obj.throughput = message.throughput;\n }\n if (message.finality !== \"\") {\n obj.finality = message.finality;\n }\n if (message.decentralization !== \"\") {\n obj.decentralization = message.decentralization;\n }\n if (message.mev !== \"\") {\n obj.mev = message.mev;\n }\n if (message.failedTxs !== \"\") {\n obj.failedTxs = message.failedTxs;\n }\n return obj;\n },\n\n create(base?: DeepPartial<MsgUpdateRewardWeights>): MsgUpdateRewardWeights {\n return MsgUpdateRewardWeights.fromPartial(base ?? {});\n },\n fromPartial(object: DeepPartial<MsgUpdateRewardWeights>): MsgUpdateRewardWeights {\n const message = createBaseMsgUpdateRewardWeights();\n message.authority = object.authority ?? \"\";\n message.throughput = object.throughput ?? \"\";\n message.finality = object.finality ?? \"\";\n message.decentralization = object.decentralization ?? \"\";\n message.mev = object.mev ?? \"\";\n message.failedTxs = object.failedTxs ?? \"\";\n return message;\n },\n};\n\nfunction createBaseMsgUpdateRewardWeightsResponse(): MsgUpdateRewardWeightsResponse {\n return {};\n}\n\nexport const MsgUpdateRewardWeightsResponse: MessageFns<MsgUpdateRewardWeightsResponse> = {\n encode(_: MsgUpdateRewardWeightsResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): MsgUpdateRewardWeightsResponse {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseMsgUpdateRewardWeightsResponse();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(_: any): MsgUpdateRewardWeightsResponse {\n return {};\n },\n\n toJSON(_: MsgUpdateRewardWeightsResponse): unknown {\n const obj: any = {};\n return obj;\n },\n\n create(base?: DeepPartial<MsgUpdateRewardWeightsResponse>): MsgUpdateRewardWeightsResponse {\n return MsgUpdateRewardWeightsResponse.fromPartial(base ?? {});\n },\n fromPartial(_: DeepPartial<MsgUpdateRewardWeightsResponse>): MsgUpdateRewardWeightsResponse {\n const message = createBaseMsgUpdateRewardWeightsResponse();\n return message;\n },\n};\n\n/** Msg defines the rlconsensus module's governance-authority transactions. */\nexport type MsgDefinition = typeof MsgDefinition;\nexport const MsgDefinition = {\n name: \"Msg\",\n fullName: \"qorechain.rlconsensus.v1.Msg\",\n methods: {\n /** SetAgentMode changes the RL agent operating mode (shadow/conservative/autonomous/paused). */\n setAgentMode: {\n name: \"SetAgentMode\",\n requestType: MsgSetAgentMode as typeof MsgSetAgentMode,\n requestStream: false,\n responseType: MsgSetAgentModeResponse as typeof MsgSetAgentModeResponse,\n responseStream: false,\n options: {},\n },\n /** ResumeAgent resumes the agent from paused back to shadow mode. */\n resumeAgent: {\n name: \"ResumeAgent\",\n requestType: MsgResumeAgent as typeof MsgResumeAgent,\n requestStream: false,\n responseType: MsgResumeAgentResponse as typeof MsgResumeAgentResponse,\n responseStream: false,\n options: {},\n },\n /** UpdatePolicy replaces the policy network weights (passed as JSON). */\n updatePolicy: {\n name: \"UpdatePolicy\",\n requestType: MsgUpdatePolicy as typeof MsgUpdatePolicy,\n requestStream: false,\n responseType: MsgUpdatePolicyResponse as typeof MsgUpdatePolicyResponse,\n responseStream: false,\n options: {},\n },\n /** UpdateRewardWeights changes the reward function weighting. */\n updateRewardWeights: {\n name: \"UpdateRewardWeights\",\n requestType: MsgUpdateRewardWeights as typeof MsgUpdateRewardWeights,\n requestStream: false,\n responseType: MsgUpdateRewardWeightsResponse as typeof MsgUpdateRewardWeightsResponse,\n responseStream: false,\n options: {},\n },\n },\n} as const;\n\ntype Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;\n\nexport type DeepPartial<T> = T extends Builtin ? T\n : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>>\n : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>\n : T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }\n : Partial<T>;\n\nfunction isSet(value: any): boolean {\n return value !== null && value !== undefined;\n}\n\nexport interface MessageFns<T> {\n encode(message: T, writer?: BinaryWriter): BinaryWriter;\n decode(input: BinaryReader | Uint8Array, length?: number): T;\n fromJSON(object: any): T;\n toJSON(message: T): unknown;\n create(base?: DeepPartial<T>): T;\n fromPartial(object: DeepPartial<T>): T;\n}\n","/**\n * Message registry for QoreChain transactions.\n *\n * {@link qorechainRegistry} returns a cosmjs {@link Registry} seeded with the\n * standard Cosmos SDK message types ({@link defaultRegistryTypes}: bank,\n * staking, distribution, gov, authz, feegrant, IBC transfer, …) plus every\n * QoreChain custom module message, keyed by its on-chain `typeUrl`. This is the\n * registry {@link TxClient} uses by default, so `signAndBroadcast` — and the\n * hybrid PQC tx path — can carry any supported message without extra setup.\n *\n * The generated message types are cosmjs-compatible: each exposes\n * `encode`/`decode`/`fromPartial`, which is all {@link Registry} requires.\n */\n\nimport {\n Registry,\n type GeneratedType,\n} from \"@cosmjs/proto-signing\";\nimport { defaultRegistryTypes } from \"@cosmjs/stargate\";\n\nimport * as amm from \"../codegen/qorechain/amm/v1/tx\";\nimport * as bridge from \"../codegen/qorechain/bridge/v1/tx\";\nimport * as rdk from \"../codegen/qorechain/rdk/v1/tx\";\nimport * as multilayer from \"../codegen/qorechain/multilayer/v1/tx\";\nimport * as pqc from \"../codegen/qorechain/pqc/v1/tx\";\nimport * as svm from \"../codegen/qorechain/svm/v1/tx\";\nimport * as lightnode from \"../codegen/qorechain/lightnode/v1/tx\";\nimport * as license from \"../codegen/qorechain/license/v1/tx\";\nimport * as abstractaccount from \"../codegen/qorechain/abstractaccount/v1/tx\";\nimport * as crossvm from \"../codegen/qorechain/crossvm/v1/tx\";\nimport * as rlconsensus from \"../codegen/qorechain/rlconsensus/v1/tx\";\n\n/**\n * Every QoreChain custom-module message type, as `[typeUrl, GeneratedType]`\n * pairs ready to register. The `typeUrl` strings are the canonical on-chain\n * identifiers (`/qorechain.<module>.v1.Msg<Name>`).\n *\n * Generated `Msg*` objects satisfy cosmjs's structural `GeneratedType`\n * (encode/decode/fromPartial); the cast bridges the slightly wider ts-proto\n * `MessageFns` shape to that interface.\n */\nexport const qorechainRegistryTypes: ReadonlyArray<[string, GeneratedType]> = [\n // amm\n [\"/qorechain.amm.v1.MsgCreatePool\", amm.MsgCreatePool],\n [\"/qorechain.amm.v1.MsgAddLiquidity\", amm.MsgAddLiquidity],\n [\"/qorechain.amm.v1.MsgRemoveLiquidity\", amm.MsgRemoveLiquidity],\n [\"/qorechain.amm.v1.MsgSwapExactIn\", amm.MsgSwapExactIn],\n [\"/qorechain.amm.v1.MsgSwapExactOut\", amm.MsgSwapExactOut],\n [\"/qorechain.amm.v1.MsgPausePool\", amm.MsgPausePool],\n [\"/qorechain.amm.v1.MsgResumePool\", amm.MsgResumePool],\n // bridge\n [\"/qorechain.bridge.v1.MsgBridgeDeposit\", bridge.MsgBridgeDeposit],\n [\"/qorechain.bridge.v1.MsgBridgeWithdraw\", bridge.MsgBridgeWithdraw],\n [\n \"/qorechain.bridge.v1.MsgRegisterBridgeValidator\",\n bridge.MsgRegisterBridgeValidator,\n ],\n [\"/qorechain.bridge.v1.MsgBridgeAttestation\", bridge.MsgBridgeAttestation],\n // rdk\n [\"/qorechain.rdk.v1.MsgCreateRollup\", rdk.MsgCreateRollup],\n [\"/qorechain.rdk.v1.MsgSubmitBatch\", rdk.MsgSubmitBatch],\n [\"/qorechain.rdk.v1.MsgChallengeBatch\", rdk.MsgChallengeBatch],\n [\"/qorechain.rdk.v1.MsgResolveChallenge\", rdk.MsgResolveChallenge],\n [\"/qorechain.rdk.v1.MsgPauseRollup\", rdk.MsgPauseRollup],\n [\"/qorechain.rdk.v1.MsgResumeRollup\", rdk.MsgResumeRollup],\n [\"/qorechain.rdk.v1.MsgStopRollup\", rdk.MsgStopRollup],\n // multilayer\n [\n \"/qorechain.multilayer.v1.MsgRegisterSidechain\",\n multilayer.MsgRegisterSidechain,\n ],\n [\n \"/qorechain.multilayer.v1.MsgRegisterPaychain\",\n multilayer.MsgRegisterPaychain,\n ],\n [\"/qorechain.multilayer.v1.MsgAnchorState\", multilayer.MsgAnchorState],\n [\n \"/qorechain.multilayer.v1.MsgRouteTransaction\",\n multilayer.MsgRouteTransaction,\n ],\n [\n \"/qorechain.multilayer.v1.MsgUpdateLayerStatus\",\n multilayer.MsgUpdateLayerStatus,\n ],\n [\"/qorechain.multilayer.v1.MsgChallengeAnchor\", multilayer.MsgChallengeAnchor],\n // pqc\n [\"/qorechain.pqc.v1.MsgRegisterPQCKey\", pqc.MsgRegisterPQCKey],\n [\"/qorechain.pqc.v1.MsgRegisterPQCKeyV2\", pqc.MsgRegisterPQCKeyV2],\n [\"/qorechain.pqc.v1.MsgMigratePQCKey\", pqc.MsgMigratePQCKey],\n [\"/qorechain.pqc.v1.MsgDeprecateAlgorithm\", pqc.MsgDeprecateAlgorithm],\n [\"/qorechain.pqc.v1.MsgDisableAlgorithm\", pqc.MsgDisableAlgorithm],\n // svm\n [\"/qorechain.svm.v1.MsgDeployProgram\", svm.MsgDeployProgram],\n [\"/qorechain.svm.v1.MsgCreateAccount\", svm.MsgCreateAccount],\n [\"/qorechain.svm.v1.MsgExecuteProgram\", svm.MsgExecuteProgram],\n [\"/qorechain.svm.v1.MsgRegisterSVMPQCKey\", svm.MsgRegisterSVMPQCKey],\n // lightnode\n [\"/qorechain.lightnode.v1.MsgRegisterLightNode\", lightnode.MsgRegisterLightNode],\n [\"/qorechain.lightnode.v1.MsgHeartbeat\", lightnode.MsgHeartbeat],\n [\n \"/qorechain.lightnode.v1.MsgDeregisterLightNode\",\n lightnode.MsgDeregisterLightNode,\n ],\n [\n \"/qorechain.lightnode.v1.MsgClaimLightNodeRewards\",\n lightnode.MsgClaimLightNodeRewards,\n ],\n // license\n [\"/qorechain.license.v1.MsgGrantLicense\", license.MsgGrantLicense],\n [\"/qorechain.license.v1.MsgRevokeLicense\", license.MsgRevokeLicense],\n [\"/qorechain.license.v1.MsgSuspendLicense\", license.MsgSuspendLicense],\n [\"/qorechain.license.v1.MsgResumeLicense\", license.MsgResumeLicense],\n // abstractaccount\n [\n \"/qorechain.abstractaccount.v1.MsgCreateAbstractAccount\",\n abstractaccount.MsgCreateAbstractAccount,\n ],\n [\n \"/qorechain.abstractaccount.v1.MsgUpdateSpendingRules\",\n abstractaccount.MsgUpdateSpendingRules,\n ],\n // crossvm\n [\"/qorechain.crossvm.v1.MsgCrossVMCall\", crossvm.MsgCrossVMCall],\n [\"/qorechain.crossvm.v1.MsgProcessQueue\", crossvm.MsgProcessQueue],\n // rlconsensus\n [\"/qorechain.rlconsensus.v1.MsgSetAgentMode\", rlconsensus.MsgSetAgentMode],\n [\"/qorechain.rlconsensus.v1.MsgResumeAgent\", rlconsensus.MsgResumeAgent],\n [\"/qorechain.rlconsensus.v1.MsgUpdatePolicy\", rlconsensus.MsgUpdatePolicy],\n [\n \"/qorechain.rlconsensus.v1.MsgUpdateRewardWeights\",\n rlconsensus.MsgUpdateRewardWeights,\n ],\n].map(([typeUrl, type]) => [typeUrl as string, type as unknown as GeneratedType]);\n\n/**\n * Build a cosmjs {@link Registry} covering the standard Cosmos SDK messages plus\n * every QoreChain custom-module message.\n *\n * @param extraTypes - Optional additional `[typeUrl, GeneratedType]` pairs to\n * register on top (e.g. messages from a private module). Registered last, so\n * they override any colliding built-in `typeUrl`.\n */\nexport function qorechainRegistry(\n extraTypes: ReadonlyArray<[string, GeneratedType]> = [],\n): Registry {\n const registry = new Registry(defaultRegistryTypes);\n for (const [typeUrl, type] of qorechainRegistryTypes) {\n registry.register(typeUrl, type);\n }\n for (const [typeUrl, type] of extraTypes) {\n registry.register(typeUrl, type);\n }\n return registry;\n}\n","/**\n * Structured decoding of failed Cosmos SDK transaction results.\n *\n * When a transaction fails, the node returns an ABCI result with a non-zero\n * `code`, a `codespace` naming the module that rejected it, and a `rawLog`\n * string. The numeric `code` is only meaningful *within* its codespace — code\n * `5` in the `sdk` codespace is \"insufficient funds\", but code `5` in another\n * module means something else entirely. {@link decodeTxError} maps the common\n * `sdk` codespace codes to readable messages and falls back to the raw log for\n * module-specific codespaces (including QoreChain's custom modules).\n *\n * {@link QoreTxError} is the typed error thrown by the tx client on a non-zero\n * broadcast code, carrying the decoded fields so callers can branch on\n * `codespace`/`code` rather than parse strings.\n */\n\n/** The fields of a failed ABCI result needed to decode an error. */\nexport interface TxErrorInput {\n /** ABCI result code. `0` is success; any non-zero value is a failure. */\n code: number;\n /** The codespace (module) that produced the code. Defaults to `\"sdk\"`. */\n codespace?: string;\n /** The raw ABCI log string, used as a fallback message. */\n rawLog?: string;\n /** The transaction hash, when known. */\n txHash?: string;\n}\n\n/** A decoded, human-readable transaction error. */\nexport interface DecodedTxError {\n /** The ABCI result code. */\n code: number;\n /** The codespace the code belongs to. */\n codespace: string;\n /** A human-readable summary of what went wrong. */\n message: string;\n /** A short stable identifier for the error kind (e.g. `insufficient_funds`). */\n kind: string;\n /** The original raw log, preserved for debugging. */\n rawLog?: string;\n}\n\n/**\n * Known error codes in the core `sdk` codespace.\n *\n * These mirror the canonical Cosmos SDK error registry. Only the codes a dApp\n * commonly hits are mapped to friendly text; any other `sdk` code still decodes\n * (with the raw log) but uses a generic message.\n */\nconst SDK_CODES: Record<number, { kind: string; message: string }> = {\n 2: { kind: \"tx_decode_error\", message: \"failed to decode the transaction\" },\n 3: { kind: \"invalid_sequence\", message: \"account sequence mismatch (nonce out of order) — refetch the account and retry\" },\n 4: { kind: \"unauthorized\", message: \"unauthorized: signature or signer does not match\" },\n 5: { kind: \"insufficient_funds\", message: \"insufficient funds to cover the transfer or fee\" },\n 6: { kind: \"unknown_request\", message: \"unknown request\" },\n 7: { kind: \"invalid_address\", message: \"invalid address\" },\n 8: { kind: \"invalid_pubkey\", message: \"invalid public key\" },\n 9: { kind: \"unknown_address\", message: \"unknown address (account does not exist on chain)\" },\n 10: { kind: \"invalid_coins\", message: \"invalid coin amount or denomination\" },\n 11: { kind: \"out_of_gas\", message: \"out of gas — raise the gas limit (or use the \\\"auto\\\" fee path with a higher multiplier)\" },\n 12: { kind: \"memo_too_large\", message: \"memo is too large\" },\n 13: { kind: \"insufficient_fee\", message: \"insufficient fee — the offered fee is below the node's minimum gas price\" },\n 14: { kind: \"maximum_signatures_exceeded\", message: \"transaction has too many signatures\" },\n 15: { kind: \"no_signatures\", message: \"transaction has no signatures\" },\n 16: { kind: \"json_marshal_error\", message: \"failed to marshal JSON\" },\n 17: { kind: \"json_unmarshal_error\", message: \"failed to unmarshal JSON\" },\n 18: { kind: \"invalid_request\", message: \"invalid request\" },\n 19: { kind: \"tx_in_mempool_cache\", message: \"transaction already exists in the mempool\" },\n 20: { kind: \"mempool_is_full\", message: \"mempool is full — retry later\" },\n 21: { kind: \"tx_too_large\", message: \"transaction is too large\" },\n 25: { kind: \"invalid_gas_limit\", message: \"invalid gas limit\" },\n 30: { kind: \"tx_timeout_height\", message: \"transaction timeout height exceeded\" },\n};\n\nconst DEFAULT_CODESPACE = \"sdk\";\n\n/**\n * Decode a failed transaction result into a structured, readable error.\n *\n * For the `sdk` codespace, recognized codes get a friendly message; unrecognized\n * `sdk` codes and all other codespaces (including QoreChain module codespaces\n * such as `pqc`, `crossvm`, `bridge`, `amm`, …) fall back to the raw log, which\n * the module itself populates with a descriptive reason.\n *\n * @param input - The `code`, `codespace`, and `rawLog` from the result.\n */\nexport function decodeTxError(input: TxErrorInput): DecodedTxError {\n const codespace = input.codespace || DEFAULT_CODESPACE;\n const rawLog = input.rawLog;\n\n if (codespace === DEFAULT_CODESPACE) {\n const known = SDK_CODES[input.code];\n if (known) {\n return {\n code: input.code,\n codespace,\n kind: known.kind,\n message: rawLog ? `${known.message} (${rawLog})` : known.message,\n rawLog,\n };\n }\n }\n\n // Module codespace, or an unmapped sdk code: surface the raw log verbatim.\n const detail = rawLog && rawLog.length > 0 ? rawLog : \"(no log provided)\";\n return {\n code: input.code,\n codespace,\n kind: `${codespace}_${input.code}`,\n message: `transaction failed in module \"${codespace}\" with code ${input.code}: ${detail}`,\n rawLog,\n };\n}\n\n/** A result with an ABCI `code` field, as returned by broadcast/query. */\nexport interface TxResultLike {\n code: number;\n}\n\n/**\n * Test whether a broadcast/query result represents a failed transaction\n * (non-zero ABCI code). The inverse of \"success\".\n */\nexport function isTxFailure(result: TxResultLike): boolean {\n return result.code !== 0;\n}\n\n/**\n * The typed error thrown when a transaction is broadcast (or polled) with a\n * non-zero ABCI code. Carries the decoded fields so callers can branch on the\n * error kind without string-matching.\n */\nexport class QoreTxError extends Error {\n /** ABCI result code. */\n readonly code: number;\n /** The codespace (module) that rejected the transaction. */\n readonly codespace: string;\n /** A short stable identifier for the error kind. */\n readonly kind: string;\n /** The raw ABCI log, when present. */\n readonly rawLog?: string;\n /** The transaction hash, when known. */\n readonly txHash?: string;\n\n constructor(decoded: DecodedTxError, txHash?: string) {\n const suffix = txHash ? ` (tx ${txHash})` : \"\";\n super(decoded.message + suffix);\n this.name = \"QoreTxError\";\n this.code = decoded.code;\n this.codespace = decoded.codespace;\n this.kind = decoded.kind;\n this.rawLog = decoded.rawLog;\n this.txHash = txHash;\n Object.setPrototypeOf(this, QoreTxError.prototype);\n }\n}\n\n/**\n * Decode the given failed-tx fields and return a ready-to-throw\n * {@link QoreTxError}. Convenience for broadcast paths.\n */\nexport function txErrorFrom(input: TxErrorInput): QoreTxError {\n return new QoreTxError(decodeTxError(input), input.txHash);\n}\n","/**\n * Gas-price parsing and fee computation for the auto-gas path.\n *\n * A gas price is a decimal amount of a base denom per unit of gas, written as a\n * single token like `\"0.025uqor\"`. {@link GasPrice.fromString} parses that into\n * an exact fraction (numerator / denominator) so fee math stays integer-exact\n * with no floating-point drift, and {@link calculateFee} turns a gas limit plus\n * a gas price into a Cosmos {@link StdFee}.\n *\n * This mirrors the cosmjs `GasPrice`/`calculateFee` concept but is reimplemented\n * here so the SDK does not depend on cosmjs's internal fee module and so the\n * arithmetic is auditable and ceil-rounded the way a node's min-gas-price check\n * expects.\n */\n\nimport type { StdFee } from \"./fees\";\n\n/** A decimal amount of a base denom per unit of gas (e.g. `0.025 uqor`). */\nexport class GasPrice {\n /**\n * @param numerator - The price scaled by `10^scale`, as an integer.\n * @param scale - Number of fractional decimal places encoded in `numerator`.\n * @param denom - The base denomination (e.g. `\"uqor\"`).\n */\n private constructor(\n readonly numerator: bigint,\n readonly scale: number,\n readonly denom: string,\n ) {}\n\n /**\n * Parse a gas price like `\"0.025uqor\"` (decimal amount immediately followed by\n * a denom). The denom must start with a letter; the amount is a non-negative\n * decimal.\n *\n * @throws If the string is not a valid `<amount><denom>` token.\n */\n static fromString(gasPrice: string): GasPrice {\n const match = /^([0-9]+(?:\\.[0-9]+)?)\\s*([a-zA-Z][a-zA-Z0-9/:._-]*)$/.exec(\n gasPrice.trim(),\n );\n if (!match) {\n throw new Error(\n `invalid gas price: \"${gasPrice}\" (expected e.g. \"0.025uqor\")`,\n );\n }\n const [, amount, denom] = match;\n const [intPart, fracPart = \"\"] = amount.split(\".\");\n const scale = fracPart.length;\n const numerator = BigInt((intPart || \"0\") + fracPart);\n return new GasPrice(numerator, scale, denom);\n }\n\n /**\n * Construct directly from a decimal amount string and denom, e.g.\n * `GasPrice.from(\"0.025\", \"uqor\")`.\n */\n static from(amount: string, denom: string): GasPrice {\n return GasPrice.fromString(`${amount}${denom}`);\n }\n\n /** Render back to the canonical `\"<amount><denom>\"` string. */\n toString(): string {\n const s = this.numerator.toString().padStart(this.scale + 1, \"0\");\n const cut = s.length - this.scale;\n const intPart = s.slice(0, cut);\n const fracPart = s.slice(cut).replace(/0+$/, \"\");\n const amount = fracPart.length > 0 ? `${intPart}.${fracPart}` : intPart;\n return `${amount}${this.denom}`;\n }\n}\n\n/**\n * Compute a {@link StdFee} for the given gas limit at the given gas price.\n *\n * The fee amount is `ceil(gas * price)` in the price's denom, computed with\n * BigInt math: `ceil(gas * numerator / 10^scale)`. Ceil rounding ensures the\n * offered fee always meets a node's `gas * minGasPrice` threshold.\n *\n * @param gas - The gas limit, as a number or decimal string.\n * @param gasPrice - A {@link GasPrice} or a parseable string (`\"0.025uqor\"`).\n */\nexport function calculateFee(gas: number | string, gasPrice: GasPrice | string): StdFee {\n const price = typeof gasPrice === \"string\" ? GasPrice.fromString(gasPrice) : gasPrice;\n const gasLimit = typeof gas === \"number\" ? BigInt(Math.ceil(gas)) : BigInt(gas);\n const denominator = 10n ** BigInt(price.scale);\n const raw = gasLimit * price.numerator;\n // ceil division\n const amount = (raw + denominator - 1n) / denominator;\n return {\n amount: [{ denom: price.denom, amount: amount.toString() }],\n gas: gasLimit.toString(),\n };\n}\n","/**\n * Native transaction builder and broadcaster for QoreChain.\n *\n * {@link TxClient} wraps cosmjs's `SigningStargateClient` to simulate, sign, and\n * broadcast native (Cosmos SDK) transactions, with a `bankSend` convenience for\n * the common transfer case. It is constructed in two ways:\n *\n * - {@link TxClient.connect} — the production path: connect to the network's\n * consensus RPC with an offline signer (see {@link directSignerFromPrivateKey})\n * and an optional custom message {@link Registry}.\n * - `new TxClient({ signingClient, senderAddress })` — the testable path: inject\n * any object satisfying {@link SigningClientLike}, so unit tests never touch\n * the network.\n *\n * By default {@link TxClient.connect} uses {@link qorechainRegistry} — cosmjs's\n * standard bank/staking/gov/etc. types plus every QoreChain custom-module\n * message — so any message built via the `msg.*` composers can be carried\n * without extra setup. Callers may still register additional protobuf types\n * (e.g. from a private module) by passing `registryTypes`, or supply a fully\n * custom `registry` to override the default entirely.\n */\n\nimport {\n SigningStargateClient,\n AminoTypes,\n createDefaultAminoConverters,\n type AminoConverters,\n type SigningStargateClientOptions,\n type DeliverTxResponse,\n} from \"@cosmjs/stargate\";\nimport {\n Registry,\n type EncodeObject,\n type OfflineSigner,\n type GeneratedType,\n} from \"@cosmjs/proto-signing\";\nimport { qorechainRegistry } from \"../messages/registry\";\nimport { MsgSend } from \"cosmjs-types/cosmos/bank/v1beta1/tx\";\nimport type { Coin } from \"../query/rest\";\nimport type { StdFee } from \"./fees\";\nimport type { BroadcastMode, BroadcastResult } from \"./broadcast\";\nimport { txErrorFrom } from \"../errors\";\nimport { GasPrice, calculateFee } from \"./gas\";\n\n/** The `/cosmos.bank.v1beta1.MsgSend` type URL. */\nexport const MSG_SEND_TYPE_URL = \"/cosmos.bank.v1beta1.MsgSend\";\n\n/** Default gas-used safety multiplier applied to a simulation result. */\nexport const DEFAULT_GAS_MULTIPLIER = 1.4;\n\n/** Default gas price for the auto-fee path (conservative, matches `tx/fees`). */\nexport const DEFAULT_GAS_PRICE = \"0.025uqor\";\n\n/**\n * A fee that is either an explicit {@link StdFee} or the literal `\"auto\"`, which\n * triggers simulation-based gas estimation and fee computation.\n */\nexport type FeeInput = StdFee | \"auto\";\n\n/** Auto-fee tuning, used when a fee of `\"auto\"` is supplied. */\nexport interface AutoFeeOptions {\n /** Multiplier applied to the simulated gas. Defaults to {@link DEFAULT_GAS_MULTIPLIER}. */\n gasMultiplier?: number;\n /**\n * Gas price (base denom per gas unit) used to price the fee. A\n * {@link GasPrice} or a parseable string. Defaults to {@link DEFAULT_GAS_PRICE}.\n */\n gasPrice?: GasPrice | string;\n}\n\n/**\n * Build the {@link AminoTypes} used for Amino-mode signing.\n *\n * Seeds cosmjs's `createDefaultAminoConverters()` (standard Cosmos modules:\n * bank, staking, gov, distribution, IBC, etc.) and merges any `extra`\n * converters on top — e.g. for QoreChain custom modules to support Ledger.\n *\n * QoreChain custom messages sign via DIRECT mode today (Keplr/Leap support it);\n * full Amino converters for those modules are a follow-up. Use the `extra`\n * argument as the extension point.\n */\nexport function buildAminoTypes(extra?: AminoConverters): AminoTypes {\n return new AminoTypes({\n ...createDefaultAminoConverters(),\n ...(extra ?? {}),\n });\n}\n\n/**\n * The subset of `SigningStargateClient` that {@link TxClient} depends on.\n * Declaring it explicitly lets unit tests inject a lightweight fake.\n */\nexport interface SigningClientLike {\n simulate(\n signerAddress: string,\n messages: readonly EncodeObject[],\n memo: string | undefined,\n ): Promise<number>;\n signAndBroadcast(\n signerAddress: string,\n messages: readonly EncodeObject[],\n fee: StdFee,\n memo?: string,\n ): Promise<DeliverTxResponse>;\n signAndBroadcastSync(\n signerAddress: string,\n messages: readonly EncodeObject[],\n fee: StdFee,\n memo?: string,\n ): Promise<string>;\n disconnect?(): void;\n}\n\n/** Options for constructing a {@link TxClient} directly (testing/advanced). */\nexport interface TxClientOptions {\n /** The underlying signing client (real or fake). */\n signingClient: SigningClientLike;\n /** The bech32 address transactions are signed and sent from. */\n senderAddress: string;\n}\n\n/** Options for {@link TxClient.connect}. */\nexport interface TxConnectOptions {\n /** Consensus RPC endpoint (e.g. `endpoints.rpc`). */\n rpcEndpoint: string;\n /**\n * An offline signer. Either a DIRECT signer (see\n * {@link directSignerFromPrivateKey}) or an Amino signer — including the\n * `OfflineSigner` returned by a browser wallet's `getOfflineSignerAuto`\n * (Keplr/Leap), which picks DIRECT or Amino automatically. Custom QoreChain\n * messages sign via DIRECT mode; Amino mode covers standard Cosmos messages\n * (see `aminoTypes`).\n */\n signer: OfflineSigner;\n /**\n * Extra protobuf message types to register, as `[typeUrl, GeneratedType]`\n * pairs. Added on top of the default {@link qorechainRegistry} (standard\n * Cosmos types + all QoreChain custom-module messages). Use this for messages\n * the SDK does not ship, e.g. from a private module. Ignored if `registry`\n * is supplied.\n */\n registryTypes?: ReadonlyArray<[string, GeneratedType]>;\n /**\n * A fully custom message registry to use instead of the default\n * {@link qorechainRegistry}. When set, `registryTypes` is ignored.\n */\n registry?: Registry;\n /**\n * Amino converters for Amino-mode signing (Ledger and some hardware/mobile\n * wallets sign Amino). Defaults to cosmjs's `createDefaultAminoConverters()`,\n * which covers the standard Cosmos modules (bank, staking, gov, distribution,\n * etc.). When set, this replaces the defaults entirely — to add converters on\n * top of the defaults use {@link extraAminoConverters} instead.\n *\n * Full Amino converters for QoreChain's custom modules are a follow-up; for\n * now those messages sign via DIRECT mode (supported by Keplr/Leap).\n */\n aminoTypes?: AminoTypes;\n /**\n * Extra Amino converters merged on top of the default converters. Use this to\n * register converters for custom modules (e.g. for Ledger support) without\n * losing the standard Cosmos converters. Ignored if `aminoTypes` is supplied.\n */\n extraAminoConverters?: AminoConverters;\n /** Additional cosmjs `SigningStargateClientOptions` (gas price, etc.). */\n clientOptions?: SigningStargateClientOptions;\n}\n\n/** Options accepted when signing and broadcasting. */\nexport interface SignAndBroadcastOptions {\n /** Broadcast mode. Defaults to `\"commit\"`. */\n mode?: BroadcastMode;\n /**\n * Auto-fee tuning, used only when `fee` is `\"auto\"`. Multiplier and gas price\n * applied to the simulated gas to compute the fee.\n */\n autoFee?: AutoFeeOptions;\n}\n\n/** Options for {@link TxClient.simulate}. */\nexport interface SimulateOptions {\n /** Optional tx memo to include in the simulation. */\n memo?: string;\n}\n\n/** Options for {@link TxClient.bankSend}. */\nexport interface BankSendOptions extends SignAndBroadcastOptions {\n /**\n * The fee to pay: an explicit {@link StdFee} or `\"auto\"` to simulate and\n * compute it. Defaults to `\"auto\"` when omitted.\n */\n fee?: FeeInput;\n /** Optional memo. */\n memo?: string;\n}\n\n/**\n * A native-transaction client: simulate, sign, broadcast, and send tokens.\n */\nexport class TxClient {\n private readonly client: SigningClientLike;\n /** The signing/sending bech32 address. */\n readonly senderAddress: string;\n\n constructor(opts: TxClientOptions) {\n this.client = opts.signingClient;\n this.senderAddress = opts.senderAddress;\n }\n\n /**\n * Connect to a network's consensus RPC and build a {@link TxClient}.\n *\n * Resolves the signer's first account as the sender address and merges any\n * `registryTypes` into cosmjs's default message registry.\n */\n static async connect(opts: TxConnectOptions): Promise<TxClient> {\n const registry =\n opts.registry ?? qorechainRegistry(opts.registryTypes ?? []);\n const aminoTypes =\n opts.aminoTypes ?? buildAminoTypes(opts.extraAminoConverters);\n const client = await SigningStargateClient.connectWithSigner(\n opts.rpcEndpoint,\n opts.signer,\n { registry, aminoTypes, ...opts.clientOptions },\n );\n const accounts = await opts.signer.getAccounts();\n if (accounts.length === 0) {\n throw new Error(\"signer exposes no accounts\");\n }\n return new TxClient({\n signingClient: client,\n senderAddress: accounts[0].address,\n });\n }\n\n /**\n * Simulate the given messages and return the estimated gas units.\n *\n * Use the result (with a safety multiplier) as the `gas` for `estimateFee`,\n * or let {@link estimateGas}/the `\"auto\"` fee path apply the multiplier.\n */\n simulate(\n messages: readonly EncodeObject[],\n opts: SimulateOptions = {},\n ): Promise<number> {\n return this.client.simulate(this.senderAddress, messages, opts.memo);\n }\n\n /**\n * Estimate the gas limit for `messages` by simulating and applying a safety\n * multiplier (default {@link DEFAULT_GAS_MULTIPLIER}). Returns the gas units,\n * rounded up.\n */\n async estimateGas(\n messages: readonly EncodeObject[],\n memo?: string,\n gasMultiplier: number = DEFAULT_GAS_MULTIPLIER,\n ): Promise<number> {\n const gasUsed = await this.simulate(messages, { memo });\n return Math.ceil(gasUsed * gasMultiplier);\n }\n\n /**\n * Compute a {@link StdFee} for a gas limit at a gas price. Thin re-export of\n * {@link calculateFee} for callers who already have a gas estimate.\n */\n calculateFee(gas: number | string, gasPrice: GasPrice | string): StdFee {\n return calculateFee(gas, gasPrice);\n }\n\n /**\n * Resolve a {@link FeeInput} to a concrete {@link StdFee}. For `\"auto\"`,\n * simulates `messages`, multiplies the gas by `gasMultiplier`, and prices it\n * with `gasPrice` via {@link calculateFee}.\n */\n async resolveFee(\n messages: readonly EncodeObject[],\n fee: FeeInput,\n memo: string | undefined,\n autoFee: AutoFeeOptions = {},\n ): Promise<StdFee> {\n if (fee !== \"auto\") return fee;\n const gas = await this.estimateGas(\n messages,\n memo,\n autoFee.gasMultiplier ?? DEFAULT_GAS_MULTIPLIER,\n );\n return calculateFee(gas, autoFee.gasPrice ?? DEFAULT_GAS_PRICE);\n }\n\n /**\n * Sign and broadcast the given messages.\n *\n * `fee` may be an explicit {@link StdFee} or the literal `\"auto\"`, which\n * simulates the tx to estimate gas and computes the fee from a gas\n * multiplier (default 1.4) and gas price (default `0.025uqor`); tune both via\n * `opts.autoFee`.\n *\n * Broadcast mode maps onto cosmjs transports:\n * - `commit` (default): polls until the tx lands in a block; returns the full\n * result and throws a {@link QoreTxError} on a non-zero delivery code.\n * - `sync` / `async`: returns after mempool submission with just the tx hash.\n */\n async signAndBroadcast(\n messages: readonly EncodeObject[],\n fee: FeeInput,\n memo = \"\",\n opts: SignAndBroadcastOptions = {},\n ): Promise<BroadcastResult> {\n const mode: BroadcastMode = opts.mode ?? \"commit\";\n const resolvedFee = await this.resolveFee(messages, fee, memo, opts.autoFee);\n\n if (mode === \"commit\") {\n const res = await this.client.signAndBroadcast(\n this.senderAddress,\n messages,\n resolvedFee,\n memo,\n );\n if (res.code !== 0) {\n throw txErrorFrom({\n code: res.code,\n codespace: (res as { codespace?: string }).codespace,\n rawLog: res.rawLog,\n txHash: res.transactionHash,\n });\n }\n return {\n transactionHash: res.transactionHash,\n code: res.code,\n height: res.height,\n gasUsed: res.gasUsed,\n gasWanted: res.gasWanted,\n rawLog: res.rawLog,\n };\n }\n\n // sync / async: both return after CheckTx without polling for a block.\n const hash = await this.client.signAndBroadcastSync(\n this.senderAddress,\n messages,\n resolvedFee,\n memo,\n );\n return { transactionHash: hash, code: 0 };\n }\n\n /**\n * Send `amount` to `toAddress` via a bank `MsgSend`, then broadcast.\n *\n * Constructs `/cosmos.bank.v1beta1.MsgSend` from this client's sender address.\n * The fee defaults to `\"auto\"` (simulation-based) when not supplied.\n */\n bankSend(\n toAddress: string,\n amount: Coin[],\n opts: BankSendOptions = {},\n ): Promise<BroadcastResult> {\n const msg: EncodeObject = {\n typeUrl: MSG_SEND_TYPE_URL,\n value: MsgSend.fromPartial({\n fromAddress: this.senderAddress,\n toAddress,\n amount,\n }),\n };\n return this.signAndBroadcast([msg], opts.fee ?? \"auto\", opts.memo ?? \"\", {\n mode: opts.mode,\n autoFee: opts.autoFee,\n });\n }\n\n /** Disconnect the underlying client's transport, if it supports it. */\n disconnect(): void {\n this.client.disconnect?.();\n }\n}\n","/**\n * CosmWasm contract interaction for QoreChain.\n *\n * This module rounds out the triple-VM surface (native + EVM + SVM + CosmWasm)\n * with thin, type-safe conveniences over `@cosmjs/cosmwasm-stargate`. It does\n * NOT reimplement cosmjs: the wrappers forward to a `CosmWasmClient` (reads) or\n * `SigningCosmWasmClient` (writes) with QoreChain-friendly defaults.\n *\n * Two construction helpers ({@link createCosmWasmClient}, {@link\n * connectCosmWasmSigner}) build the cosmjs clients against a network's `rpc`\n * endpoint. The wrapper functions, however, accept an already-built client so\n * they are unit-testable with a stubbed fake — no real connection required.\n */\n\nimport {\n CosmWasmClient,\n SigningCosmWasmClient,\n} from \"@cosmjs/cosmwasm-stargate\";\nimport type { OfflineSigner } from \"@cosmjs/proto-signing\";\nimport type { Coin, StdFee } from \"@cosmjs/amino\";\n\n/**\n * Arbitrary JSON value accepted/returned by contract calls. Mirrors cosmjs's\n * `JsonObject` (which is `any`) but keeps our public types honest.\n */\nexport type ContractMsg = Record<string, unknown>;\n\n/** A `StdFee`, or cosmjs's `\"auto\"` (simulate) / a raw gas multiplier number. */\nexport type FeeInput = StdFee | \"auto\" | number;\n\n/**\n * Read-only slice of `CosmWasmClient` used by the read wrappers. Declaring the\n * methods we use (rather than importing the concrete class) lets tests inject a\n * minimal fake.\n */\nexport interface CosmWasmReadClient {\n queryContractSmart(address: string, queryMsg: ContractMsg): Promise<unknown>;\n getContract(address: string): Promise<unknown>;\n getCodes(): Promise<unknown>;\n getContracts(codeId: number): Promise<unknown>;\n getCodeDetails(codeId: number): Promise<unknown>;\n}\n\n/** Signing slice of `SigningCosmWasmClient` used by the write wrappers. */\nexport interface CosmWasmSigningClient {\n upload(\n senderAddress: string,\n wasmCode: Uint8Array,\n fee: FeeInput,\n memo?: string,\n ): Promise<unknown>;\n instantiate(\n senderAddress: string,\n codeId: number,\n msg: ContractMsg,\n label: string,\n fee: FeeInput,\n options?: InstantiateOpts,\n ): Promise<unknown>;\n execute(\n senderAddress: string,\n contractAddress: string,\n msg: ContractMsg,\n fee: FeeInput,\n memo?: string,\n funds?: readonly Coin[],\n ): Promise<unknown>;\n instantiate2(\n senderAddress: string,\n codeId: number,\n salt: Uint8Array,\n msg: ContractMsg,\n label: string,\n fee: FeeInput,\n options?: InstantiateOpts,\n ): Promise<unknown>;\n migrate(\n senderAddress: string,\n contractAddress: string,\n codeId: number,\n migrateMsg: ContractMsg,\n fee: FeeInput,\n memo?: string,\n ): Promise<unknown>;\n updateAdmin(\n senderAddress: string,\n contractAddress: string,\n newAdmin: string,\n fee: FeeInput,\n memo?: string,\n ): Promise<unknown>;\n clearAdmin(\n senderAddress: string,\n contractAddress: string,\n fee: FeeInput,\n memo?: string,\n ): Promise<unknown>;\n}\n\n/** Options for {@link instantiate}: cosmjs `InstantiateOptions` plus the fee. */\nexport interface InstantiateOpts {\n /** Fee for the instantiate tx. Defaults to `\"auto\"` (simulate). */\n fee?: FeeInput;\n /** Optional memo. */\n memo?: string;\n /** Native funds sent to the new contract on instantiation. */\n funds?: readonly Coin[];\n /** Optional admin address (can migrate the contract). */\n admin?: string;\n}\n\n/**\n * Connect a read-only {@link CosmWasmClient} to a network's RPC endpoint.\n *\n * @param rpcUrl - The network's `rpc` endpoint (e.g. `endpoints.rpc`).\n */\nexport function createCosmWasmClient(rpcUrl: string): Promise<CosmWasmClient> {\n return CosmWasmClient.connect(rpcUrl);\n}\n\n/**\n * Connect a {@link SigningCosmWasmClient} for contract writes.\n *\n * @param rpcUrl - The network's `rpc` endpoint.\n * @param signer - An offline signer (e.g. from `@cosmjs/proto-signing`).\n */\nexport function connectCosmWasmSigner(\n rpcUrl: string,\n signer: OfflineSigner,\n): Promise<SigningCosmWasmClient> {\n return SigningCosmWasmClient.connectWithSigner(rpcUrl, signer);\n}\n\n/** Run a contract's smart query (`queryContractSmart`). */\nexport function queryContractSmart<T = unknown>(\n client: CosmWasmReadClient,\n contractAddress: string,\n queryMsg: ContractMsg,\n): Promise<T> {\n return client.queryContractSmart(contractAddress, queryMsg) as Promise<T>;\n}\n\n/** Fetch a contract's on-chain metadata (`getContract`). */\nexport function getContractInfo<T = unknown>(\n client: CosmWasmReadClient,\n contractAddress: string,\n): Promise<T> {\n return client.getContract(contractAddress) as Promise<T>;\n}\n\n/**\n * Instantiate a contract from an uploaded code id.\n *\n * Forwards to `SigningCosmWasmClient.instantiate`, splitting our {@link\n * InstantiateOpts} into cosmjs's positional `fee` (default `\"auto\"`) and its\n * `InstantiateOptions` (`memo`/`funds`/`admin`).\n */\nexport function instantiate<T = unknown>(\n client: CosmWasmSigningClient,\n sender: string,\n codeId: number,\n initMsg: ContractMsg,\n label: string,\n opts: InstantiateOpts = {},\n): Promise<T> {\n const { fee = \"auto\", memo, funds, admin } = opts;\n const options: InstantiateOpts = {};\n if (funds !== undefined) options.funds = funds;\n if (admin !== undefined) options.admin = admin;\n if (memo !== undefined) options.memo = memo;\n return client.instantiate(\n sender,\n codeId,\n initMsg,\n label,\n fee,\n options,\n ) as Promise<T>;\n}\n\n/** Execute a message against an instantiated contract. */\nexport function execute<T = unknown>(\n client: CosmWasmSigningClient,\n sender: string,\n contractAddress: string,\n msg: ContractMsg,\n fee: FeeInput,\n funds?: readonly Coin[],\n): Promise<T> {\n return client.execute(\n sender,\n contractAddress,\n msg,\n fee,\n undefined,\n funds,\n ) as Promise<T>;\n}\n\n/** Upload (store) WASM bytecode, returning the assigned code id in the result. */\nexport function uploadCode<T = unknown>(\n client: CosmWasmSigningClient,\n sender: string,\n wasmBytes: Uint8Array,\n fee: FeeInput,\n): Promise<T> {\n return client.upload(sender, wasmBytes, fee) as Promise<T>;\n}\n\n/**\n * Instantiate a contract at a predictable address derived from `(codeId, salt,\n * creator)` via `instantiate2`. The resulting address can be computed ahead of\n * time, enabling counterfactual deployments.\n */\nexport function instantiate2<T = unknown>(\n client: CosmWasmSigningClient,\n sender: string,\n codeId: number,\n salt: Uint8Array,\n initMsg: ContractMsg,\n label: string,\n opts: InstantiateOpts = {},\n): Promise<T> {\n const { fee = \"auto\", memo, funds, admin } = opts;\n const options: InstantiateOpts = {};\n if (funds !== undefined) options.funds = funds;\n if (admin !== undefined) options.admin = admin;\n if (memo !== undefined) options.memo = memo;\n return client.instantiate2(\n sender,\n codeId,\n salt,\n initMsg,\n label,\n fee,\n options,\n ) as Promise<T>;\n}\n\n/** Migrate `contractAddress` to a new `codeId`, running `migrateMsg`. */\nexport function migrate<T = unknown>(\n client: CosmWasmSigningClient,\n sender: string,\n contractAddress: string,\n codeId: number,\n migrateMsg: ContractMsg,\n fee: FeeInput,\n memo?: string,\n): Promise<T> {\n return client.migrate(\n sender,\n contractAddress,\n codeId,\n migrateMsg,\n fee,\n memo,\n ) as Promise<T>;\n}\n\n/** Set a new admin (who may migrate) on `contractAddress`. */\nexport function updateAdmin<T = unknown>(\n client: CosmWasmSigningClient,\n sender: string,\n contractAddress: string,\n newAdmin: string,\n fee: FeeInput,\n memo?: string,\n): Promise<T> {\n return client.updateAdmin(\n sender,\n contractAddress,\n newAdmin,\n fee,\n memo,\n ) as Promise<T>;\n}\n\n/** Clear the admin on `contractAddress`, making it immutable (no more migrates). */\nexport function clearAdmin<T = unknown>(\n client: CosmWasmSigningClient,\n sender: string,\n contractAddress: string,\n fee: FeeInput,\n memo?: string,\n): Promise<T> {\n return client.clearAdmin(sender, contractAddress, fee, memo) as Promise<T>;\n}\n\n/** List all uploaded code metadata (`getCodes`). */\nexport function getCodes<T = unknown>(client: CosmWasmReadClient): Promise<T> {\n return client.getCodes() as Promise<T>;\n}\n\n/** List all contracts instantiated from `codeId` (`getContracts`). */\nexport function getContracts<T = unknown>(\n client: CosmWasmReadClient,\n codeId: number,\n): Promise<T> {\n return client.getContracts(codeId) as Promise<T>;\n}\n\n/** Fetch full details (incl. data hash) for an uploaded `codeId`. */\nexport function getCodeDetails<T = unknown>(\n client: CosmWasmReadClient,\n codeId: number,\n): Promise<T> {\n return client.getCodeDetails(codeId) as Promise<T>;\n}\n","/**\n * Cross-VM read helpers for QoreChain's `x/crossvm` module.\n *\n * These are thin, typed wrappers over {@link RestClient} for the module's REST\n * routes under `/qorechain/crossvm/v1/...`. They are standalone functions taking\n * a {@link RestClient} so they compose with the existing read surface without\n * widening the `RestClient` class itself.\n *\n * Responses are returned as generics defaulting to small interfaces / {@link\n * Record}<string, unknown>: the module returns rich, evolving JSON and the SDK\n * does not model every field.\n *\n * Note on direction: these helpers READ cross-VM message state. The actual\n * EVM→native routing — e.g. an EVM contract triggering a native AMM swap — is\n * performed on-chain via the cross-VM bridge precompile exposed in the\n * `@qorechain/evm` package (not duplicated here). Once a message is in flight,\n * track its status either through these REST reads or via the\n * `qor_getCrossVMMessage` JSON-RPC method already wrapped on `QorClient`.\n */\n\nimport type { RestClient } from \"./rest\";\n\n/** A single cross-VM message record (unmodeled fields surface as-is). */\nexport interface CrossVmMessage {\n [key: string]: unknown;\n}\n\n/** Response of the single-message-by-id route. */\nexport interface CrossVmMessageResponse {\n message?: CrossVmMessage;\n [key: string]: unknown;\n}\n\n/** Response of the pending-messages route. */\nexport interface PendingCrossVmMessagesResponse {\n messages?: CrossVmMessage[];\n [key: string]: unknown;\n}\n\n/** Response of the module params route. */\nexport interface CrossVmParamsResponse {\n params?: Record<string, unknown>;\n [key: string]: unknown;\n}\n\n/**\n * Fetch a cross-VM message by id.\n *\n * GET `/qorechain/crossvm/v1/message/{id}`.\n */\nexport function getCrossVmMessage<T = CrossVmMessageResponse>(\n rest: RestClient,\n id: string,\n): Promise<T> {\n return rest.get<T>(\n `/qorechain/crossvm/v1/message/${encodeURIComponent(id)}`,\n );\n}\n\n/**\n * Fetch all currently pending cross-VM messages.\n *\n * GET `/qorechain/crossvm/v1/pending`.\n */\nexport function getPendingCrossVmMessages<\n T = PendingCrossVmMessagesResponse,\n>(rest: RestClient): Promise<T> {\n return rest.get<T>(\"/qorechain/crossvm/v1/pending\");\n}\n\n/**\n * Fetch the `x/crossvm` module parameters.\n *\n * GET `/qorechain/crossvm/v1/params`.\n */\nexport function getCrossVmParams<T = CrossVmParamsResponse>(\n rest: RestClient,\n): Promise<T> {\n return rest.get<T>(\"/qorechain/crossvm/v1/params\");\n}\n","/**\n * Top-level `createClient` factory for the QoreChain SDK.\n *\n * {@link createClient} resolves a {@link NetworkConfig} (applying any endpoint\n * overrides) and composes the read clients ({@link RestClient}, the EVM\n * {@link JsonRpcClient}, and the `qor_` {@link QorClient}) plus a fee-estimate\n * convenience over {@link estimateFee}. Signing is opt-in: call\n * {@link QoreChainClient.connectTx} with an offline signer to get a\n * {@link TxClient}.\n *\n * Network resolution rules:\n * - The default network is `testnet`. Both `testnet` and `mainnet` are live and\n * ship localhost endpoint defaults; pass `endpoints` to point at real\n * hostnames.\n *\n * Read sub-clients are lazy getters: each only needs its own endpoint, so\n * accessing one whose endpoint is missing throws a clear, actionable error\n * naming the missing endpoint rather than failing later with an opaque request.\n */\n\nimport type { OfflineDirectSigner, GeneratedType } from \"@cosmjs/proto-signing\";\nimport type { StdFee } from \"@cosmjs/amino\";\nimport {\n getNetwork,\n type NetworkConfig,\n type NetworkEndpoints,\n type NetworkName,\n} from \"./config/networks\";\nimport type { FetchLike, HttpOptions } from \"./query/http\";\nimport { RestClient } from \"./query/rest\";\nimport { JsonRpcClient } from \"./query/jsonrpc\";\nimport { QorClient } from \"./query/qor\";\nimport { estimateFee } from \"./tx/fees\";\nimport type { FeeUrgency } from \"./query/rest\";\nimport { TxClient } from \"./tx/builder\";\nimport { createCosmWasmClient } from \"./cosmwasm\";\nimport type { CosmWasmClient } from \"@cosmjs/cosmwasm-stargate\";\nimport {\n getCrossVmMessage,\n getPendingCrossVmMessages,\n getCrossVmParams,\n type CrossVmMessageResponse,\n type PendingCrossVmMessagesResponse,\n type CrossVmParamsResponse,\n} from \"./query/crossvm\";\n\n/** Options for {@link createClient}. */\nexport interface CreateClientOptions {\n /** Network preset to target. Defaults to `\"testnet\"`. */\n network?: NetworkName;\n /**\n * Endpoint overrides, merged over the preset's defaults. Both `testnet` and\n * `mainnet` default to localhost; pass real hostnames here to override them.\n */\n endpoints?: Partial<NetworkEndpoints>;\n /**\n * Chain ID override. Both presets ship a live chain ID, so this is only needed\n * to point at a non-standard chain.\n */\n chainId?: string;\n /** Injectable `fetch` for the read clients (used by tests). */\n fetch?: FetchLike;\n /**\n * Additional HTTP transport options (timeout, retries, headers) shared by the\n * read clients.\n */\n http?: Omit<HttpOptions, \"fetch\">;\n}\n\n/** Options for {@link QoreChainClient.connectTx}. */\nexport interface ConnectTxOptions {\n /**\n * Extra protobuf message types to register, as `[typeUrl, GeneratedType]`\n * pairs (forwarded to {@link TxClient.connect}).\n */\n registryTypes?: ReadonlyArray<[string, GeneratedType]>;\n}\n\n/** Fee convenience surface exposed by {@link QoreChainClient}. */\nexport interface ClientFees {\n /**\n * Estimate a fee for the given urgency via the AI fee oracle (with a static\n * fallback). See {@link estimateFee}.\n */\n estimate(urgency?: FeeUrgency): Promise<StdFee>;\n}\n\n/** Cross-VM read convenience surface, bound to the client's REST endpoint. */\nexport interface ClientCrossVm {\n /** A cross-VM message by id (`/qorechain/crossvm/v1/message/{id}`). */\n message(id: string): Promise<CrossVmMessageResponse>;\n /** Currently pending cross-VM messages (`/qorechain/crossvm/v1/pending`). */\n pending(): Promise<PendingCrossVmMessagesResponse>;\n /** Cross-VM module params (`/qorechain/crossvm/v1/params`). */\n params(): Promise<CrossVmParamsResponse>;\n}\n\n/**\n * A composed QoreChain client: resolved config, read clients, fee helper, and a\n * lazy signing entrypoint.\n */\nexport interface QoreChainClient {\n /** The resolved network config (with any endpoint/chain-id overrides applied). */\n readonly network: NetworkConfig;\n /** Cosmos + QoreChain REST read client (uses `endpoints.rest`). */\n readonly rest: RestClient;\n /** EVM JSON-RPC client (uses `endpoints.evmRpc`). */\n readonly evm: JsonRpcClient;\n /** QoreChain `qor_` namespace client (uses `endpoints.evmRpc`). */\n readonly qor: QorClient;\n /** Fee-estimate convenience over the REST client. */\n readonly fees: ClientFees;\n /** Cross-VM read helpers over the REST client. */\n readonly crossvm: ClientCrossVm;\n /**\n * Connect a read-only CosmWasm client at `endpoints.rpc`.\n *\n * Async (the cosmjs client opens an RPC connection on connect), so this is a\n * method rather than a lazy getter; the result is memoized across calls.\n */\n cosmwasm(): Promise<CosmWasmClient>;\n /**\n * Connect a signer and return a {@link TxClient} bound to `endpoints.rpc`.\n * The heavy lifting lives in {@link TxClient.connect}.\n */\n connectTx(\n signer: OfflineDirectSigner,\n opts?: ConnectTxOptions,\n ): Promise<TxClient>;\n}\n\n/**\n * Resolve the effective {@link NetworkConfig} for the given options.\n *\n * Starts from the live preset (`testnet` or `mainnet`) and overlays\n * `opts.endpoints` and an optional `opts.chainId`.\n */\nfunction resolveNetwork(opts: CreateClientOptions): NetworkConfig {\n const name: NetworkName = opts.network ?? \"testnet\";\n const overrides = opts.endpoints ?? {};\n\n const base = getNetwork(name);\n return {\n ...base,\n chainId: opts.chainId ?? base.chainId,\n endpoints: { ...base.endpoints, ...overrides },\n };\n}\n\n/** Read a required endpoint or throw an actionable error naming it. */\nfunction requireEndpoint(\n endpoints: NetworkEndpoints,\n key: keyof NetworkEndpoints,\n): string {\n const value = endpoints?.[key];\n if (!value) {\n throw new Error(\n `endpoint \"${key}\" is not configured — pass it via createClient({ endpoints: { ${key}: \"...\" } })`,\n );\n }\n return value;\n}\n\n/**\n * Create a composed {@link QoreChainClient}.\n *\n * @param opts - Network selection, endpoint overrides, and transport options.\n */\nexport function createClient(opts: CreateClientOptions = {}): QoreChainClient {\n const network = resolveNetwork(opts);\n const httpOptions: HttpOptions = { ...opts.http, fetch: opts.fetch };\n\n // Memoize each sub-client so repeated access returns the same instance, while\n // still deferring construction (and the missing-endpoint check) until first use.\n let restClient: RestClient | undefined;\n let evmClient: JsonRpcClient | undefined;\n let qorClient: QorClient | undefined;\n\n const getRest = (): RestClient => {\n if (!restClient) {\n restClient = new RestClient(\n requireEndpoint(network.endpoints, \"rest\"),\n httpOptions,\n );\n }\n return restClient;\n };\n const getEvm = (): JsonRpcClient => {\n if (!evmClient) {\n evmClient = new JsonRpcClient(\n requireEndpoint(network.endpoints, \"evmRpc\"),\n httpOptions,\n );\n }\n return evmClient;\n };\n const getQor = (): QorClient => {\n if (!qorClient) {\n qorClient = new QorClient(\n requireEndpoint(network.endpoints, \"evmRpc\"),\n httpOptions,\n );\n }\n return qorClient;\n };\n\n const fees: ClientFees = {\n estimate: (urgency?: FeeUrgency) => estimateFee(getRest(), { urgency }),\n };\n\n const crossvm: ClientCrossVm = {\n message: (id: string) => getCrossVmMessage(getRest(), id),\n pending: () => getPendingCrossVmMessages(getRest()),\n params: () => getCrossVmParams(getRest()),\n };\n\n // Memoize the (async) CosmWasm client so repeated calls reuse one connection.\n let cosmWasmClient: Promise<CosmWasmClient> | undefined;\n\n return {\n network,\n get rest() {\n return getRest();\n },\n get evm() {\n return getEvm();\n },\n get qor() {\n return getQor();\n },\n fees,\n crossvm,\n cosmwasm() {\n if (!cosmWasmClient) {\n cosmWasmClient = createCosmWasmClient(\n requireEndpoint(network.endpoints, \"rpc\"),\n );\n }\n return cosmWasmClient;\n },\n connectTx(signer: OfflineDirectSigner, txOpts: ConnectTxOptions = {}) {\n return TxClient.connect({\n rpcEndpoint: requireEndpoint(network.endpoints, \"rpc\"),\n signer,\n registryTypes: txOpts.registryTypes,\n });\n },\n };\n}\n","/**\n * Block-explorer URL builders.\n *\n * These are config-driven: a URL is produced only when the network's\n * `explorerUrl` is set. No public explorer hostname is baked into the SDK — the\n * built-in presets leave `explorerUrl` undefined, and apps supply it through a\n * network override (e.g. `createClient({ network: { ...getNetwork(\"mainnet\"),\n * explorerUrl: \"https://explorer.example\" } })`).\n */\n\nimport { joinUrl } from \"./query/http\";\nimport type { NetworkConfig } from \"./config/networks\";\n\n/** Minimal shape consumed by the explorer helpers. */\nexport interface ExplorerConfig {\n /** Explorer base URL (no trailing slash required). */\n explorerUrl?: string;\n}\n\nfunction requireExplorerUrl(network: ExplorerConfig): string {\n if (!network.explorerUrl) {\n throw new Error(\n \"explorer URL not configured for this network — set endpoints/explorerUrl\",\n );\n }\n return network.explorerUrl;\n}\n\n/** Build the explorer URL for a transaction hash. */\nexport function explorerTxUrl(\n network: ExplorerConfig | NetworkConfig,\n hash: string,\n): string {\n return joinUrl(requireExplorerUrl(network), `tx/${hash}`);\n}\n\n/** Build the explorer URL for an account/address. */\nexport function explorerAddressUrl(\n network: ExplorerConfig | NetworkConfig,\n address: string,\n): string {\n return joinUrl(requireExplorerUrl(network), `address/${address}`);\n}\n\n/** Build the explorer URL for a block height. */\nexport function explorerBlockUrl(\n network: ExplorerConfig | NetworkConfig,\n height: number | string,\n): string {\n return joinUrl(requireExplorerUrl(network), `block/${height}`);\n}\n","/**\n * Faucet request helper.\n *\n * Config-driven: the faucet endpoint comes from the network's `faucetUrl` (or an\n * explicit override), and a clear error is thrown when neither is configured.\n * No public faucet hostname is baked into the SDK — the built-in presets leave\n * `faucetUrl` undefined; apps supply it via a network override or the `faucetUrl`\n * option here. (For the SVM runtime, `@qorechain/svm` exposes `requestAirdrop`.)\n */\n\nimport type { FetchLike } from \"./query/http\";\nimport type { NetworkConfig } from \"./config/networks\";\n\n/** Minimal shape consumed by {@link requestFaucet}. */\nexport interface FaucetConfig {\n /** Faucet base URL. */\n faucetUrl?: string;\n}\n\n/** Options for {@link requestFaucet}. */\nexport interface RequestFaucetOptions {\n /** Override the network's `faucetUrl`. */\n faucetUrl?: string;\n /** Denomination to request (added to the POST body when set). */\n denom?: string;\n /** Injectable `fetch`. Defaults to `globalThis.fetch`. */\n fetch?: FetchLike;\n}\n\n/**\n * Request testnet funds for `address` from the configured faucet.\n *\n * POSTs `{ address, denom? }` as JSON to the faucet URL. Throws a clear error\n * when no faucet URL is configured, and surfaces non-2xx responses.\n *\n * @returns The parsed JSON response (faucet-specific shape), or `undefined` for\n * an empty body.\n */\nexport async function requestFaucet<T = unknown>(\n network: FaucetConfig | NetworkConfig,\n address: string,\n options: RequestFaucetOptions = {},\n): Promise<T | undefined> {\n const base = options.faucetUrl ?? network.faucetUrl;\n if (!base) {\n throw new Error(\n \"faucet URL not configured for this network — set endpoints/faucetUrl\",\n );\n }\n const doFetch = options.fetch ?? (globalThis.fetch as FetchLike);\n const body: Record<string, string> = { address };\n if (options.denom !== undefined) body.denom = options.denom;\n\n const url = base.replace(/\\/+$/, \"\");\n const res = await doFetch(url, {\n method: \"POST\",\n headers: { \"content-type\": \"application/json\" },\n body: JSON.stringify(body),\n });\n if (!res.ok) {\n const text = await res.text().catch(() => \"\");\n throw new Error(`faucet request failed: HTTP ${res.status} ${text}`.trim());\n }\n const text = await res.text();\n return text ? (JSON.parse(text) as T) : undefined;\n}\n","/**\n * Conversion between human display amounts (e.g. `\"1.5\"` QOR) and integer base\n * amounts (e.g. `\"1500000\"` uqor).\n *\n * All value math is performed with {@link BigInt} on decimal strings — there is\n * no floating-point arithmetic anywhere in this module, so conversions are exact\n * for any magnitude and never drift (e.g. `toBase(\"0.1\")` is exactly\n * `\"100000\"`).\n *\n * QoreChain's staking coin uses a default exponent of `6` (1 QOR = 10^6 uqor),\n * but every function accepts a custom `exponent` for other denominations.\n */\n\n/** The QoreChain staking coin's default decimal exponent (1 QOR = 10^6 uqor). */\nconst DEFAULT_EXPONENT = 6;\n\n/** Options shared by the denom conversion helpers. */\nexport interface DenomOptions {\n /** Decimal exponent relating base to display (1 display = 10^exponent base). Defaults to 6. */\n exponent?: number;\n}\n\nfunction resolveExponent(opts?: DenomOptions): number {\n const exponent = opts?.exponent ?? DEFAULT_EXPONENT;\n if (!Number.isInteger(exponent) || exponent < 0) {\n throw new Error(`invalid exponent: ${exponent} (must be a non-negative integer)`);\n }\n return exponent;\n}\n\n/**\n * Convert a human display amount to its integer base amount string.\n *\n * @param amount - A non-negative decimal string, e.g. `\"1.5\"`. Surrounding\n * whitespace and a single leading `+` are tolerated. Scientific notation,\n * thousands separators, and other formatting are rejected.\n * @param opts - Optional `exponent` (defaults to 6).\n * @returns The integer base amount as a string with no leading zeros, e.g.\n * `\"1500000\"`.\n * @throws If `amount` is not a valid decimal string, is negative, or has more\n * fractional digits than `exponent` allows.\n */\nexport function toBase(amount: string, opts?: DenomOptions): string {\n const exponent = resolveExponent(opts);\n const trimmed = amount.trim();\n\n let body = trimmed;\n if (body.startsWith(\"-\")) {\n throw new Error(`negative amounts are not supported: ${amount}`);\n }\n if (body.startsWith(\"+\")) {\n body = body.slice(1);\n }\n\n // Strict decimal: optional integer part, optional single fractional part,\n // digits only. Rejects \"\", \".\", \"1.2.3\", \"1e3\", \"abc\", etc.\n if (!/^\\d+(\\.\\d+)?$/.test(body)) {\n throw new Error(`invalid decimal amount: ${amount}`);\n }\n\n const [intPart, fracPart = \"\"] = body.split(\".\");\n if (fracPart.length > exponent) {\n throw new Error(\n `too many decimal places in ${amount}: ${fracPart.length} > exponent ${exponent}`,\n );\n }\n\n // Right-pad the fractional digits to exactly `exponent` places, then read the\n // whole thing as one big integer. Pure string + BigInt math, no floats.\n const padded = fracPart.padEnd(exponent, \"0\");\n const base = BigInt(intPart + padded);\n return base.toString();\n}\n\n/**\n * Convert an integer base amount string to a normalized display string.\n *\n * @param base - A non-negative integer string, e.g. `\"1500000\"`.\n * @param opts - Optional `exponent` (defaults to 6).\n * @returns The display amount with no trailing zeros and no trailing dot, e.g.\n * `\"1.5\"`. `\"1000000\"` becomes `\"1\"`, `\"1\"` becomes `\"0.000001\"`, `\"0\"`\n * becomes `\"0\"`.\n * @throws If `base` is not a valid non-negative integer string.\n */\nexport function fromBase(base: string, opts?: DenomOptions): string {\n const exponent = resolveExponent(opts);\n const trimmed = base.trim();\n\n if (trimmed.startsWith(\"-\")) {\n throw new Error(`negative amounts are not supported: ${base}`);\n }\n if (!/^\\d+$/.test(trimmed)) {\n throw new Error(`invalid base amount: ${base}`);\n }\n\n if (exponent === 0) {\n // No fractional component; strip leading zeros via BigInt.\n return BigInt(trimmed).toString();\n }\n\n // Left-pad so there are at least `exponent + 1` digits, then split.\n const padded = trimmed.padStart(exponent + 1, \"0\");\n const intPart = padded.slice(0, padded.length - exponent);\n const fracPart = padded.slice(padded.length - exponent);\n\n const normalizedInt = BigInt(intPart).toString();\n const trimmedFrac = fracPart.replace(/0+$/, \"\");\n return trimmedFrac.length > 0 ? `${normalizedInt}.${trimmedFrac}` : normalizedInt;\n}\n","/**\n * Conversion and validation for QoreChain bech32 addresses (e.g. `qor1...`) and\n * their underlying byte payloads expressed as `0x`-prefixed hex.\n *\n * bech32 stores data as 5-bit groups (\"words\"), so encoding/decoding goes\n * through {@link bech32.toWords}/{@link bech32.fromWords} to convert to and from\n * the 8-bit byte representation that callers work with as hex.\n */\n\nimport { bech32 } from \"bech32\";\n\n/** Default bech32 human-readable prefix for QoreChain account addresses. */\nconst DEFAULT_PREFIX = \"qor\";\n\n/**\n * bech32 enforces a 90-character limit by default. QoreChain addresses are\n * short, but validator/consensus prefixes plus longer payloads can approach it,\n * so we raise the limit to a safe upper bound to avoid spurious failures.\n */\nconst LIMIT = 1023;\n\n/** Strip an optional `0x`/`0X` prefix from a hex string. */\nfunction stripHexPrefix(hex: string): string {\n return hex.startsWith(\"0x\") || hex.startsWith(\"0X\") ? hex.slice(2) : hex;\n}\n\n/** Parse a hex string (with or without `0x`) into bytes, validating strictly. */\nfunction hexToBytes(hex: string): Uint8Array {\n const body = stripHexPrefix(hex);\n if (body.length === 0 || body.length % 2 !== 0 || !/^[0-9a-fA-F]+$/.test(body)) {\n throw new Error(`invalid hex string: ${hex}`);\n }\n const bytes = new Uint8Array(body.length / 2);\n for (let i = 0; i < bytes.length; i++) {\n bytes[i] = parseInt(body.slice(i * 2, i * 2 + 2), 16);\n }\n return bytes;\n}\n\n/** Encode bytes to a lowercase `0x`-prefixed hex string. */\nfunction bytesToHex(bytes: ArrayLike<number>): string {\n let out = \"0x\";\n for (let i = 0; i < bytes.length; i++) {\n out += bytes[i].toString(16).padStart(2, \"0\");\n }\n return out;\n}\n\n/**\n * Decode a bech32 address to a `0x`-prefixed hex string of its byte payload.\n *\n * @param addr - A bech32 address, e.g. `qor1...`.\n * @returns The underlying bytes as lowercase `0x`-prefixed hex.\n * @throws If `addr` is not a valid bech32 string.\n */\nexport function bech32ToHex(addr: string): string {\n const { words } = bech32.decode(addr, LIMIT);\n const bytes = bech32.fromWords(words);\n return bytesToHex(bytes);\n}\n\n/**\n * Encode raw bytes to a bech32 address with the given prefix.\n *\n * This is the primitive encoder; callers holding a `Uint8Array` payload (e.g.\n * the 20-byte `ripemd160(sha256(pubkey))` account hash) should use this\n * directly rather than round-tripping through hex.\n *\n * @param bytes - The raw byte payload.\n * @param prefix - The bech32 human-readable prefix. Defaults to `\"qor\"`.\n * @returns The bech32-encoded address, e.g. `qor1...`.\n */\nexport function bytesToBech32(\n bytes: Uint8Array,\n prefix: string = DEFAULT_PREFIX,\n): string {\n const words = bech32.toWords(bytes);\n return bech32.encode(prefix, words, LIMIT);\n}\n\n/**\n * Encode hex bytes to a bech32 address with the given prefix.\n *\n * @param hex - The byte payload as hex, with or without a `0x` prefix.\n * @param prefix - The bech32 human-readable prefix. Defaults to `\"qor\"`.\n * @returns The bech32-encoded address, e.g. `qor1...`.\n * @throws If `hex` is not a valid hex string.\n */\nexport function hexToBech32(hex: string, prefix: string = DEFAULT_PREFIX): string {\n return bytesToBech32(hexToBytes(hex), prefix);\n}\n\n/**\n * Validate a bech32 address, optionally requiring a specific prefix.\n *\n * @param addr - The candidate address string.\n * @param prefix - If given, the decoded prefix must match exactly.\n * @returns `true` if `addr` is a structurally valid bech32 string (correct\n * checksum) and, when `prefix` is supplied, its prefix matches; `false`\n * otherwise. Never throws.\n */\nexport function isValidBech32(addr: string, prefix?: string): boolean {\n const decoded = bech32.decodeUnsafe(addr, LIMIT);\n if (!decoded) {\n return false;\n }\n return prefix === undefined ? true : decoded.prefix === prefix;\n}\n\n/**\n * Decode a QoreChain bech32 account address into the `0x`-prefixed hex form of\n * its 20-byte payload — the same byte payload an EVM address carries.\n *\n * QoreChain shares one account-key space across its VMs: a native `qor1...`\n * address and the matching EVM `0x...` address are two encodings of the same\n * underlying account bytes. This is the bech32 → EVM-hex direction; it is an\n * alias of {@link bech32ToHex} named for the cross-VM use case.\n *\n * @param addr - A `qor1...` bech32 account address.\n * @returns The 20-byte payload as a lowercase `0x`-prefixed hex string.\n * @throws If `addr` is not a valid bech32 string.\n */\nexport function qorToEvm(addr: string): string {\n return bech32ToHex(addr);\n}\n\n/**\n * Encode an EVM `0x...` address into the matching QoreChain bech32 account\n * address. The hex → bech32 direction of {@link qorToEvm}; an alias of\n * {@link hexToBech32} with the `qor` account prefix.\n *\n * @param hex - A 20-byte EVM address, with or without `0x`.\n * @param prefix - bech32 prefix. Defaults to `\"qor\"`.\n * @returns The bech32 account address, e.g. `qor1...`.\n * @throws If `hex` is not a valid hex string.\n */\nexport function evmToQor(hex: string, prefix: string = DEFAULT_PREFIX): string {\n return hexToBech32(hex, prefix);\n}\n","/**\n * Generic, integer-exact unit conversion for arbitrary token decimals.\n *\n * Where {@link toBase}/{@link fromBase} in `utils/denom` are specialized to the\n * QoreChain staking coin (`uqor`, exponent 6), these helpers take an explicit\n * `decimals` argument and are the right tool for EVM-style 18-decimal tokens,\n * SPL tokens, or any other denomination.\n *\n * All math is performed with {@link BigInt} on decimal strings — there is no\n * floating-point arithmetic, so conversions are exact for any magnitude. Values\n * are returned as `bigint` (for `parseUnits`) and decimal strings (for\n * `formatUnits`) so no precision is lost across the boundary.\n */\n\n/**\n * Parse a human display amount into its integer base-unit value.\n *\n * @param amount - A non-negative decimal string, e.g. `\"1.5\"`. A single leading\n * `+` and surrounding whitespace are tolerated. Scientific notation,\n * thousands separators, and other formatting are rejected.\n * @param decimals - Number of fractional decimals the unit has (e.g. `18` for\n * most ERC-20 tokens). Must be a non-negative integer.\n * @returns The base-unit value as a `bigint`, e.g.\n * `parseUnits(\"1.5\", 18) === 1500000000000000000n`.\n * @throws If `amount` is malformed, negative, or has more fractional digits\n * than `decimals` allows.\n */\nexport function parseUnits(amount: string, decimals: number): bigint {\n if (!Number.isInteger(decimals) || decimals < 0) {\n throw new Error(`invalid decimals: ${decimals} (must be a non-negative integer)`);\n }\n const trimmed = amount.trim();\n\n let body = trimmed;\n if (body.startsWith(\"-\")) {\n throw new Error(`negative amounts are not supported: ${amount}`);\n }\n if (body.startsWith(\"+\")) {\n body = body.slice(1);\n }\n\n if (!/^\\d+(\\.\\d+)?$/.test(body)) {\n throw new Error(`invalid decimal amount: ${amount}`);\n }\n\n const [intPart, fracPart = \"\"] = body.split(\".\");\n if (fracPart.length > decimals) {\n throw new Error(\n `too many decimal places in ${amount}: ${fracPart.length} > decimals ${decimals}`,\n );\n }\n\n const padded = fracPart.padEnd(decimals, \"0\");\n return BigInt(intPart + padded);\n}\n\n/**\n * Format an integer base-unit value as a normalized human display string.\n *\n * @param value - The base-unit value as a `bigint`, `number`, or decimal\n * string. Must be a non-negative integer.\n * @param decimals - Number of fractional decimals the unit has.\n * @returns The display amount with no trailing zeros and no trailing dot, e.g.\n * `formatUnits(1500000000000000000n, 18) === \"1.5\"`. `0` formats as `\"0\"`.\n * @throws If `value` is not a valid non-negative integer or `decimals` is invalid.\n */\nexport function formatUnits(value: bigint | number | string, decimals: number): string {\n if (!Number.isInteger(decimals) || decimals < 0) {\n throw new Error(`invalid decimals: ${decimals} (must be a non-negative integer)`);\n }\n\n let big: bigint;\n if (typeof value === \"bigint\") {\n big = value;\n } else if (typeof value === \"number\") {\n if (!Number.isInteger(value)) {\n throw new Error(`value must be an integer: ${value}`);\n }\n big = BigInt(value);\n } else {\n const t = value.trim();\n if (!/^[+-]?\\d+$/.test(t)) {\n throw new Error(`invalid base value: ${value}`);\n }\n big = BigInt(t);\n }\n\n if (big < 0n) {\n throw new Error(`negative amounts are not supported: ${value}`);\n }\n\n if (decimals === 0) {\n return big.toString();\n }\n\n const digits = big.toString().padStart(decimals + 1, \"0\");\n const intPart = digits.slice(0, digits.length - decimals);\n const fracPart = digits.slice(digits.length - decimals);\n\n const normalizedInt = BigInt(intPart).toString();\n const trimmedFrac = fracPart.replace(/0+$/, \"\");\n return trimmedFrac.length > 0 ? `${normalizedInt}.${trimmedFrac}` : normalizedInt;\n}\n","/**\n * Hash helpers re-exported from [`@noble/hashes`](https://github.com/paulmillr/noble-hashes).\n *\n * Each function accepts a UTF-8 string or raw bytes and returns the digest as\n * raw bytes, with a `*Hex` companion returning a lowercase `0x`-prefixed hex\n * string. No new cryptography is implemented here — these are thin, ergonomic\n * wrappers so callers don't need to depend on `@noble/hashes` directly or pick\n * the right submodule path.\n */\n\nimport { sha256 as nobleSha256 } from \"@noble/hashes/sha256\";\nimport { keccak_256 as nobleKeccak256 } from \"@noble/hashes/sha3\";\nimport { ripemd160 as nobleRipemd160 } from \"@noble/hashes/ripemd160\";\n\n/** Input accepted by the hash helpers: a UTF-8 string or raw bytes. */\nexport type HashInput = string | Uint8Array;\n\nconst encoder = new TextEncoder();\n\n/** Coerce a {@link HashInput} into bytes (UTF-8 encoding strings). */\nfunction toBytes(input: HashInput): Uint8Array {\n return typeof input === \"string\" ? encoder.encode(input) : input;\n}\n\n/** Encode bytes to a lowercase `0x`-prefixed hex string. */\nexport function toHex(bytes: Uint8Array): string {\n let out = \"0x\";\n for (let i = 0; i < bytes.length; i++) {\n out += bytes[i].toString(16).padStart(2, \"0\");\n }\n return out;\n}\n\n/** SHA-256 digest of `input` as raw bytes. */\nexport function sha256(input: HashInput): Uint8Array {\n return nobleSha256(toBytes(input));\n}\n\n/** SHA-256 digest of `input` as a `0x`-prefixed hex string. */\nexport function sha256Hex(input: HashInput): string {\n return toHex(sha256(input));\n}\n\n/** keccak-256 digest of `input` as raw bytes (the EVM hashing primitive). */\nexport function keccak256(input: HashInput): Uint8Array {\n return nobleKeccak256(toBytes(input));\n}\n\n/** keccak-256 digest of `input` as a `0x`-prefixed hex string. */\nexport function keccak256Hex(input: HashInput): string {\n return toHex(keccak256(input));\n}\n\n/** RIPEMD-160 digest of `input` as raw bytes. */\nexport function ripemd160(input: HashInput): Uint8Array {\n return nobleRipemd160(toBytes(input));\n}\n\n/** RIPEMD-160 digest of `input` as a `0x`-prefixed hex string. */\nexport function ripemd160Hex(input: HashInput): string {\n return toHex(ripemd160(input));\n}\n","/**\n * Cross-VM address validation and EIP-55 checksum helpers.\n *\n * QoreChain spans three address formats: bech32 (`qor1...`, validated in\n * `utils/address`), EVM hex (`0x...`, 20 bytes), and SVM ed25519 public keys\n * (base58, 32 bytes). These helpers validate the EVM and SVM forms and expose\n * the EIP-55 mixed-case checksum used by EVM tooling.\n */\n\nimport { keccak_256 } from \"@noble/hashes/sha3\";\nimport { base58 } from \"@scure/base\";\nimport { ed25519 } from \"@noble/curves/ed25519\";\n\nconst encoder = new TextEncoder();\n\n/**\n * Test whether `address` is a structurally valid EVM address: `0x` followed by\n * exactly 40 hex characters (20 bytes). Case is not checked; use\n * {@link isChecksumAddress} to verify an EIP-55 checksum. Never throws.\n */\nexport function isValidEvmAddress(address: string): boolean {\n return /^0x[0-9a-fA-F]{40}$/.test(address);\n}\n\n/**\n * Compute the EIP-55 mixed-case checksum form of an EVM address.\n *\n * Hashes the lowercase hex (without `0x`) with keccak-256 and uppercases each\n * hex nibble whose corresponding hash nibble is >= 8.\n *\n * @param address - A 20-byte EVM address, with or without `0x`, any case.\n * @returns The `0x`-prefixed checksummed address.\n * @throws If `address` is not a valid 20-byte hex address.\n */\nexport function toChecksumAddress(address: string): string {\n const body = (address.startsWith(\"0x\") || address.startsWith(\"0X\")\n ? address.slice(2)\n : address\n ).toLowerCase();\n if (!/^[0-9a-f]{40}$/.test(body)) {\n throw new Error(`invalid EVM address: ${address}`);\n }\n const hash = keccak_256(encoder.encode(body));\n let out = \"0x\";\n for (let i = 0; i < body.length; i++) {\n const ch = body[i];\n if (ch >= \"0\" && ch <= \"9\") {\n out += ch;\n } else {\n // Each byte covers two nibbles; pick the high or low nibble per position.\n const hashByte = hash[i >> 1];\n const nibble = i % 2 === 0 ? hashByte >> 4 : hashByte & 0x0f;\n out += nibble >= 8 ? ch.toUpperCase() : ch;\n }\n }\n return out;\n}\n\n/**\n * Test whether `address` is a correctly EIP-55-checksummed EVM address.\n *\n * Returns `true` only if the address is structurally valid *and* its mixed-case\n * pattern matches {@link toChecksumAddress}. All-lowercase or all-uppercase\n * addresses (which carry no checksum information) return `false`. Never throws.\n */\nexport function isChecksumAddress(address: string): boolean {\n if (!isValidEvmAddress(address)) return false;\n try {\n const body = address.slice(2);\n // Pure single-case addresses are valid hex but carry no checksum.\n if (body === body.toLowerCase() || body === body.toUpperCase()) return false;\n return toChecksumAddress(address) === address;\n } catch {\n return false;\n }\n}\n\n/**\n * Test whether `address` is a valid SVM (Solana-compatible) public-key address:\n * a base58 string decoding to exactly 32 bytes that is a valid ed25519 curve\n * point. Off-curve PDAs are intentionally rejected. Never throws.\n */\nexport function isValidSvmAddress(address: string): boolean {\n let bytes: Uint8Array;\n try {\n bytes = base58.decode(address);\n } catch {\n return false;\n }\n if (bytes.length !== 32) return false;\n try {\n // A valid account address is an ed25519 public key (on the curve).\n ed25519.Point.fromHex(bytes);\n return true;\n } catch {\n return false;\n }\n}\n","/**\n * Mnemonic generation/validation and hierarchical-deterministic (HD) derivation\n * of QoreChain accounts in all three supported schemes:\n *\n * 1. native — Cosmos-style secp256k1, BIP-44 path `m/44'/118'/0'/0/{index}`,\n * address = bech32(`qor`, ripemd160(sha256(compressedPubkey))).\n * 2. evm — secp256k1, BIP-44 path `m/44'/60'/0'/0/{index}`,\n * address = `0x` + last 20 bytes of keccak256(uncompressedPubkey[1:]),\n * rendered with an EIP-55 mixed-case checksum.\n * 3. svm — ed25519, SLIP-0010 path `m/44'/501'/{index}'/0'` (all hardened,\n * the Solana standard), address = base58(32-byte ed25519 public key).\n *\n * Derivation uses audited primitives: @scure/bip39 (mnemonic + seed), @scure/bip32\n * (secp256k1 HD), micro-key-producer SLIP-0010 (ed25519 HD), @noble/hashes and\n * @noble/curves. Secret material is returned explicitly from the derive functions\n * and is never logged.\n *\n * Dependency note: this module pins @noble/hashes/@noble/curves/@scure/base on\n * the 1.x line, while `micro-key-producer` brings its own 2.x copies of those\n * packages. The two majors are installed side by side intentionally. They never\n * exchange hash or curve instances across the boundary — micro-key-producer is\n * used only as a self-contained SLIP-0010 derivation black box (seed in, ed25519\n * node out), so the duplicate copies are isolated and harmless. Do not force a\n * `pnpm.overrides` that drags micro-key-producer onto a different major; that\n * would risk breaking its internals for no behavioural gain here.\n */\n\nimport {\n generateMnemonic as bip39Generate,\n validateMnemonic as bip39Validate,\n mnemonicToSeed,\n} from \"@scure/bip39\";\nimport { wordlist } from \"@scure/bip39/wordlists/english\";\nimport { HDKey } from \"@scure/bip32\";\nimport { HDKey as Slip10HDKey } from \"micro-key-producer/slip10.js\";\nimport { secp256k1 } from \"@noble/curves/secp256k1\";\nimport { sha256 } from \"@noble/hashes/sha256\";\nimport { ripemd160 } from \"@noble/hashes/ripemd160\";\nimport { keccak_256 } from \"@noble/hashes/sha3\";\nimport { base58 } from \"@scure/base\";\n\nimport { bytesToBech32 } from \"../utils/address\";\nimport type {\n DerivationOptions,\n Secp256k1Account,\n Ed25519Account,\n} from \"./types\";\n\n/** Bech32 human-readable prefix for native QoreChain account addresses. */\nconst NATIVE_PREFIX = \"qor\";\n\n/** Coin types per SLIP-0044. */\nconst COIN_TYPE_NATIVE = 118; // Cosmos\nconst COIN_TYPE_EVM = 60; // Ethereum\nconst COIN_TYPE_SVM = 501; // Solana\n\n/**\n * Generate a fresh BIP-39 mnemonic.\n *\n * @param strength - Entropy in bits: `128` → 12 words (default), `256` → 24 words.\n * @returns A space-separated English mnemonic phrase.\n */\nexport function generateMnemonic(strength: 128 | 256 = 128): string {\n return bip39Generate(wordlist, strength);\n}\n\n/**\n * Validate a BIP-39 mnemonic against the English wordlist and its checksum.\n *\n * @param mnemonic - The candidate phrase.\n * @returns `true` if the phrase is a structurally valid, checksum-correct\n * English BIP-39 mnemonic; `false` otherwise. Never throws.\n */\nexport function validateMnemonic(mnemonic: string): boolean {\n return bip39Validate(mnemonic, wordlist);\n}\n\n/** Resolve the address index from options, defaulting to 0. */\nfunction addressIndex(opts?: DerivationOptions): number {\n const index = opts?.accountIndex ?? 0;\n if (!Number.isInteger(index) || index < 0) {\n throw new Error(`accountIndex must be a non-negative integer, got ${index}`);\n }\n return index;\n}\n\n/**\n * Validate a mnemonic and derive its BIP-39 seed.\n *\n * Centralizing this here is the single guard against the fund-loss footgun where\n * a typo'd phrase (valid words, wrong checksum) would otherwise silently derive\n * a valid-looking but WRONG account. {@link mnemonicToSeed} does NOT check the\n * checksum, so we must validate first. The thrown error deliberately omits the\n * mnemonic text to avoid leaking secret material into logs.\n */\nasync function seedFromMnemonic(mnemonic: string): Promise<Uint8Array> {\n if (!validateMnemonic(mnemonic)) {\n throw new Error(\"invalid mnemonic\");\n }\n return mnemonicToSeed(mnemonic);\n}\n\n/** Derive a secp256k1 HD node at the given BIP-44 path from a mnemonic. */\nasync function deriveSecp256k1(\n mnemonic: string,\n coinType: number,\n index: number,\n): Promise<{ privateKey: Uint8Array; publicKey: Uint8Array }> {\n const seed = await seedFromMnemonic(mnemonic);\n const node = HDKey.fromMasterSeed(seed).derive(\n `m/44'/${coinType}'/0'/0/${index}`,\n );\n if (!node.privateKey || !node.publicKey) {\n throw new Error(\"failed to derive secp256k1 key from mnemonic\");\n }\n // node.publicKey is the 33-byte compressed form.\n return { privateKey: node.privateKey, publicKey: node.publicKey };\n}\n\n/**\n * Render 20 address bytes as an EIP-55 mixed-case checksummed `0x` address.\n *\n * EIP-55: lowercase the hex address, take keccak256 of the lowercase hex\n * (without `0x`) as ASCII, and uppercase each hex nibble whose corresponding\n * keccak nibble is >= 8.\n */\nfunction toEip55Checksum(addressBytes: Uint8Array): string {\n const lowerHex = Array.from(addressBytes)\n .map((b) => b.toString(16).padStart(2, \"0\"))\n .join(\"\");\n const hashHex = Array.from(keccak_256(new TextEncoder().encode(lowerHex)))\n .map((b) => b.toString(16).padStart(2, \"0\"))\n .join(\"\");\n let out = \"0x\";\n for (let i = 0; i < lowerHex.length; i++) {\n const c = lowerHex[i];\n out += parseInt(hashHex[i], 16) >= 8 ? c.toUpperCase() : c;\n }\n return out;\n}\n\n/**\n * Derive a native QoreChain account (Cosmos-style secp256k1) from a mnemonic.\n *\n * Path: `m/44'/118'/0'/0/{accountIndex}`. The address is the bech32 (`qor`)\n * encoding of `ripemd160(sha256(compressedPublicKey))`.\n *\n * @returns The account including its 32-byte secp256k1 private key.\n */\nexport async function deriveNativeAccount(\n mnemonic: string,\n opts?: DerivationOptions,\n): Promise<Secp256k1Account> {\n const index = addressIndex(opts);\n const { privateKey, publicKey } = await deriveSecp256k1(\n mnemonic,\n COIN_TYPE_NATIVE,\n index,\n );\n const digest = ripemd160(sha256(publicKey)); // 20 bytes\n const address = bytesToBech32(digest, NATIVE_PREFIX);\n return { type: \"native\", address, publicKey, privateKey };\n}\n\n/**\n * Derive an EVM account from a mnemonic.\n *\n * Path: `m/44'/60'/0'/0/{accountIndex}`. The address is the last 20 bytes of\n * `keccak256(uncompressedPublicKey[1:])`, EIP-55 checksummed.\n *\n * @returns The account including its 32-byte secp256k1 private key.\n */\nexport async function deriveEvmAccount(\n mnemonic: string,\n opts?: DerivationOptions,\n): Promise<Secp256k1Account> {\n const index = addressIndex(opts);\n const { privateKey, publicKey } = await deriveSecp256k1(\n mnemonic,\n COIN_TYPE_EVM,\n index,\n );\n // EVM addresses are computed from the 64-byte uncompressed public key body\n // (drop the 0x04 prefix byte). Decompress the already-derived compressed key\n // rather than touching the private key again.\n const uncompressed = secp256k1.ProjectivePoint.fromHex(publicKey).toRawBytes(\n false,\n ); // 65 bytes\n const hash = keccak_256(uncompressed.slice(1)); // 32 bytes\n const addressBytes = hash.slice(-20); // last 20 bytes\n const address = toEip55Checksum(addressBytes);\n return { type: \"evm\", address, publicKey, privateKey };\n}\n\n/**\n * Derive an SVM (Solana-style ed25519) account from a mnemonic.\n *\n * Path: `m/44'/501'/{accountIndex}'/0'` — the conventional Solana derivation,\n * all segments hardened (SLIP-0010 for ed25519 supports hardened keys only).\n * The address is the base58 encoding of the 32-byte ed25519 public key.\n *\n * @returns The account including its 64-byte Solana-style secret key\n * (`privateSeed32 || publicKey32`).\n */\nexport async function deriveSvmAccount(\n mnemonic: string,\n opts?: DerivationOptions,\n): Promise<Ed25519Account> {\n const index = addressIndex(opts);\n const seed = await seedFromMnemonic(mnemonic);\n const node = Slip10HDKey.fromMasterSeed(seed).derive(\n `m/44'/${COIN_TYPE_SVM}'/${index}'/0'`,\n );\n const publicKey = node.publicKeyRaw; // bare 32-byte ed25519 public key\n // Solana secret keys are 64 bytes: the 32-byte private seed followed by the\n // 32-byte public key (the format Keypair.fromSecretKey expects).\n const secretKey = new Uint8Array(64);\n secretKey.set(node.privateKey, 0);\n secretKey.set(publicKey, 32);\n const address = base58.encode(publicKey);\n return { type: \"svm\", address, publicKey, secretKey };\n}\n","/**\n * PQC algorithm identifiers, mirroring the chain's `x/pqc` cryptographic-agility\n * framework (core `x/pqc/types/algorithm.go`).\n *\n * These numeric IDs are the on-the-wire values the chain expects in\n * `MsgRegisterPQCKeyV2.algorithm_id` and in the `PQCHybridSignature` TX\n * extension's `algorithm_id` field, so they MUST stay in sync with the core enum.\n */\n\n/**\n * Identifies a PQC algorithm. Numeric to match the chain's `uint32 AlgorithmID`.\n * IDs 1–2 are the initial algorithms; 3–255 are reserved for future\n * governance-approved algorithms.\n */\nexport type AlgorithmID = number;\n\n/** Unset / invalid algorithm (core: `AlgorithmUnspecified`). */\nexport const AlgorithmUnspecified: AlgorithmID = 0;\n/** Dilithium-5 = ML-DSA-87, NIST FIPS 204 signatures (core: `AlgorithmDilithium5`). */\nexport const AlgorithmDilithium5: AlgorithmID = 1;\n/** ML-KEM-1024, NIST FIPS 203 key encapsulation (core: `AlgorithmMLKEM1024`). */\nexport const AlgorithmMLKEM1024: AlgorithmID = 2;\n\n/** Human-readable name for an algorithm ID (matches core `AlgorithmID.String()`). */\nexport function algorithmName(id: AlgorithmID): string {\n switch (id) {\n case AlgorithmUnspecified:\n return \"unspecified\";\n case AlgorithmDilithium5:\n return \"dilithium5\";\n case AlgorithmMLKEM1024:\n return \"mlkem1024\";\n default:\n return `algorithm_${id}`;\n }\n}\n\n/** True if the algorithm is a digital-signature scheme (core `IsSignature`). */\nexport function isSignatureAlgorithm(id: AlgorithmID): boolean {\n return id === AlgorithmDilithium5;\n}\n","/**\n * Post-quantum (PQC) signing for QoreChain, using ML-DSA-87 (Dilithium-5,\n * NIST FIPS 204) for digital signatures.\n *\n * QoreChain treats PQC as a first-class signature scheme via a hybrid\n * architecture (see the core `PQC_INTEGRATION.md`): a transaction carries the\n * usual classical (secp256k1 / ed25519) signature PLUS an ML-DSA-87 signature\n * attached as a `PQCHybridSignature` TX extension. The chain's ante handler\n * verifies both, so quantum-safe wallets stay compatible with classical\n * verification.\n *\n * Scope: this module provides the signing PRIMITIVES (keygen / sign / verify),\n * a pluggable {@link Signer} for the `pqc` and `hybrid` postures, and a builder\n * for the on-chain hybrid-signature extension OBJECT. It deliberately does NOT\n * assemble or broadcast transactions — the tx-builder attaches the extension\n * the {@link buildHybridSignatureExtension} result describes.\n *\n * Crypto is delegated entirely to the audited, pure-TS `@noble/post-quantum`\n * (`ml_dsa87`). No primitives are reimplemented here.\n */\n\nimport { ml_dsa87 } from \"@noble/post-quantum/ml-dsa.js\";\nimport { randomBytes } from \"@noble/hashes/utils\";\nimport {\n AlgorithmDilithium5,\n isSignatureAlgorithm,\n algorithmName,\n type AlgorithmID,\n} from \"./pqc-algorithm\";\nimport type { Signer, SignOutput, PqcSignaturePart } from \"./signer\";\n\nexport {\n AlgorithmUnspecified,\n AlgorithmDilithium5,\n AlgorithmMLKEM1024,\n algorithmName,\n isSignatureAlgorithm,\n type AlgorithmID,\n} from \"./pqc-algorithm\";\nexport type {\n Signer,\n SignOutput,\n SignatureMode,\n PqcSignaturePart,\n} from \"./signer\";\n\n/**\n * ML-DSA-87 (Dilithium-5) byte lengths.\n *\n * These are fixed by NIST FIPS 204 and match the chain's `x/pqc` constants\n * exactly. The installed `@noble/post-quantum` `ml_dsa87` does not expose these\n * as runtime properties, so we encode the standard's values directly; the test\n * suite asserts that the library actually produces keys/signatures of these\n * lengths, guarding against any future library drift.\n */\n/** ML-DSA-87 public-key length, in bytes (FIPS 204 / core: 2592). */\nexport const ML_DSA_87_PUBLIC_KEY_LENGTH = 2592;\n/** ML-DSA-87 secret-key length, in bytes (FIPS 204 / core: 4896). */\nexport const ML_DSA_87_SECRET_KEY_LENGTH = 4896;\n/** ML-DSA-87 signature length, in bytes (FIPS 204 / core: 4627). */\nexport const ML_DSA_87_SIGNATURE_LENGTH = 4627;\n\n/** Length, in bytes, of the deterministic-keygen seed (xi) per FIPS 204. */\nexport const ML_DSA_87_SEED_LENGTH = 32;\n\n/**\n * The TX-extension type URL for the on-chain `PQCHybridSignature` message\n * (core: `HybridSigTypeURL`). The tx-builder uses this as the extension's\n * type URL when packing the object from {@link buildHybridSignatureExtension}.\n */\nexport const HYBRID_SIG_TYPE_URL = \"/qorechain.pqc.v1.PQCHybridSignature\";\n\n/** An ML-DSA-87 (Dilithium-5) keypair. Treat `secretKey` as a secret. */\nexport interface PqcKeypair {\n /** 2592-byte ML-DSA-87 public key. */\n publicKey: Uint8Array;\n /** 4896-byte ML-DSA-87 secret key. Handle as a secret; never logged. */\n secretKey: Uint8Array;\n}\n\n/**\n * Generate an ML-DSA-87 (Dilithium-5) keypair.\n *\n * @param seed Optional 32-byte seed for deterministic keygen (e.g. derived from\n * a wallet). When omitted, a cryptographically random keypair is produced.\n * Must be exactly {@link ML_DSA_87_SEED_LENGTH} bytes if provided.\n */\nexport function generatePqcKeypair(seed?: Uint8Array): PqcKeypair {\n if (seed !== undefined && seed.length !== ML_DSA_87_SEED_LENGTH) {\n throw new Error(\n `ML-DSA-87 seed must be ${ML_DSA_87_SEED_LENGTH} bytes, got ${seed.length}`,\n );\n }\n // When no seed is supplied, draw a fresh random 32-byte seed so keygen always\n // receives one explicitly (a random seed yields a random keypair).\n const xi = seed ?? randomBytes(ML_DSA_87_SEED_LENGTH);\n const kp = ml_dsa87.keygen(xi);\n return { publicKey: kp.publicKey, secretKey: kp.secretKey };\n}\n\n/** Sign a message with an ML-DSA-87 (Dilithium-5) secret key. */\nexport function pqcSign(secretKey: Uint8Array, message: Uint8Array): Uint8Array {\n return ml_dsa87.sign(secretKey, message);\n}\n\n/** Verify an ML-DSA-87 (Dilithium-5) signature over a message. */\nexport function pqcVerify(\n publicKey: Uint8Array,\n message: Uint8Array,\n signature: Uint8Array,\n): boolean {\n return ml_dsa87.verify(publicKey, message, signature);\n}\n\n/**\n * The on-chain `PQCHybridSignature` TX extension, as a plain object whose keys\n * mirror the core struct's JSON field tags EXACTLY\n * (`x/pqc/types/hybrid.go`):\n *\n * ```go\n * type PQCHybridSignature struct {\n * AlgorithmID AlgorithmID `json:\"algorithm_id\"`\n * PQCSignature []byte `json:\"pqc_signature\"`\n * PQCPublicKey []byte `json:\"pqc_public_key,omitempty\"`\n * }\n * ```\n *\n * The tx-builder is responsible for encoding this and attaching it under\n * {@link HYBRID_SIG_TYPE_URL}.\n */\nexport interface PQCHybridSignature {\n /** PQC algorithm ID (core `AlgorithmID`). */\n algorithm_id: AlgorithmID;\n /** Raw PQC signature bytes. */\n pqc_signature: Uint8Array;\n /** Optional PQC public key for auto-registration on first use. */\n pqc_public_key?: Uint8Array;\n}\n\n/**\n * Build the on-chain `PQCHybridSignature` extension object from a signature.\n *\n * Validation mirrors the core `PQCHybridSignature.Validate()`: the algorithm\n * must be a signature scheme, the signature must be non-empty, and for\n * Dilithium-5 the signature/public-key lengths are enforced.\n *\n * `pqc_public_key` is omitted entirely when no public key is supplied, matching\n * the `omitempty` JSON tag on the core struct.\n */\nexport function buildHybridSignatureExtension(args: {\n algorithmId: AlgorithmID;\n signature: Uint8Array;\n publicKey?: Uint8Array;\n}): PQCHybridSignature {\n const { algorithmId, signature, publicKey } = args;\n\n if (!isSignatureAlgorithm(algorithmId)) {\n throw new Error(\n `algorithm ${algorithmName(algorithmId)} is not a PQC signature algorithm`,\n );\n }\n if (signature.length === 0) {\n throw new Error(\"PQC signature cannot be empty\");\n }\n if (algorithmId === AlgorithmDilithium5) {\n if (signature.length !== ML_DSA_87_SIGNATURE_LENGTH) {\n throw new Error(\n `dilithium5 signature must be ${ML_DSA_87_SIGNATURE_LENGTH} bytes, got ${signature.length}`,\n );\n }\n if (publicKey !== undefined && publicKey.length !== ML_DSA_87_PUBLIC_KEY_LENGTH) {\n throw new Error(\n `dilithium5 public key must be ${ML_DSA_87_PUBLIC_KEY_LENGTH} bytes, got ${publicKey.length}`,\n );\n }\n }\n\n const ext: PQCHybridSignature = {\n algorithm_id: algorithmId,\n pqc_signature: signature,\n };\n if (publicKey !== undefined) {\n ext.pqc_public_key = publicKey;\n }\n return ext;\n}\n\n/**\n * A pqc-only {@link Signer}: produces an ML-DSA-87 (Dilithium-5) signature and\n * no classical signature. Corresponds to the chain's `pqc_only` key type.\n */\nexport class PqcSigner implements Signer {\n readonly mode = \"pqc\" as const;\n private readonly keypair: PqcKeypair;\n private readonly algorithmId: AlgorithmID;\n\n constructor(keypair: PqcKeypair, algorithmId: AlgorithmID = AlgorithmDilithium5) {\n this.keypair = keypair;\n this.algorithmId = algorithmId;\n }\n\n /** The PQC public key (the signing identity in pqc-only mode). */\n publicKey(): Uint8Array {\n return this.keypair.publicKey;\n }\n\n async sign(message: Uint8Array): Promise<SignOutput> {\n const part: PqcSignaturePart = {\n algorithmId: this.algorithmId,\n signature: pqcSign(this.keypair.secretKey, message),\n publicKey: this.keypair.publicKey,\n };\n return { pqc: part };\n }\n}\n\n/**\n * A hybrid {@link Signer}: wraps a classical signer and an ML-DSA-87 keypair,\n * producing BOTH a classical signature and a PQC signature over the same\n * message. Corresponds to the chain's `hybrid` key type.\n *\n * The account identity is the wrapped classical signer's public key, so a\n * hybrid account is indistinguishable from a classical one to wallets that do\n * not understand the PQC extension.\n */\nexport class HybridSigner implements Signer {\n readonly mode = \"hybrid\" as const;\n private readonly classical: Signer;\n private readonly keypair: PqcKeypair;\n private readonly algorithmId: AlgorithmID;\n\n /**\n * @param classical The wrapped classical signer. Must be a `classical`-mode\n * signer; its `classicalSignature` output is passed through unchanged.\n * @param keypair The ML-DSA-87 keypair used for the PQC half.\n * @throws if `classical` is not a `classical`-mode signer.\n */\n constructor(\n classical: Signer,\n keypair: PqcKeypair,\n algorithmId: AlgorithmID = AlgorithmDilithium5,\n ) {\n if (classical.mode !== \"classical\") {\n throw new Error(\"HybridSigner requires a classical-mode signer\");\n }\n this.classical = classical;\n this.keypair = keypair;\n this.algorithmId = algorithmId;\n }\n\n /** The classical public key — the on-chain account identity. */\n publicKey(): Uint8Array {\n return this.classical.publicKey();\n }\n\n async sign(message: Uint8Array): Promise<SignOutput> {\n const classicalOut = await this.classical.sign(message);\n if (classicalOut.classicalSignature === undefined) {\n throw new Error(\n \"wrapped classical signer did not produce a classical signature\",\n );\n }\n const part: PqcSignaturePart = {\n algorithmId: this.algorithmId,\n signature: pqcSign(this.keypair.secretKey, message),\n publicKey: this.keypair.publicKey,\n };\n return { classicalSignature: classicalOut.classicalSignature, pqc: part };\n }\n}\n","/**\n * Adapter from a native QoreChain secp256k1 key to a cosmjs signer.\n *\n * The accounts module (`deriveNativeAccount`, Task 13) yields a raw 32-byte\n * secp256k1 private key. The transaction layer signs through cosmjs's\n * `SigningStargateClient`, which expects an `OfflineDirectSigner`. This module\n * bridges the two via `@cosmjs/proto-signing`'s `DirectSecp256k1Wallet`, binding\n * the key to the network's bech32 account prefix (`qor`).\n *\n * The signer performs SIGN_MODE_DIRECT (protobuf) signing — the native chain's\n * default — so the produced address and signatures match what the node's ante\n * handler verifies for a classical secp256k1 account.\n */\n\nimport {\n DirectSecp256k1Wallet,\n type OfflineDirectSigner,\n} from \"@cosmjs/proto-signing\";\n\n/**\n * Adapt a raw secp256k1 private key into a cosmjs {@link OfflineDirectSigner}.\n *\n * @param privateKey - Raw 32-byte secp256k1 private key (e.g. the `privateKey`\n * field of a {@link Secp256k1Account} from `deriveNativeAccount`).\n * @param prefix - Bech32 account prefix for the network (QoreChain: `\"qor\"`).\n * @returns A direct (protobuf) offline signer whose single account address is\n * the bech32 encoding of the key under `prefix`.\n */\nexport async function directSignerFromPrivateKey(\n privateKey: Uint8Array,\n prefix: string,\n): Promise<OfflineDirectSigner> {\n if (privateKey.length !== 32) {\n throw new Error(\n `secp256k1 private key must be 32 bytes, got ${privateKey.length}`,\n );\n }\n return DirectSecp256k1Wallet.fromKey(privateKey, prefix);\n}\n","/**\n * Real-time event subscriptions over the chain's consensus RPC websocket.\n *\n * The consensus RPC client (from the CosmJS consensus-RPC package) exposes\n * streaming subscriptions for new blocks and for committed transactions matching a query.\n * Under the hood it opens a single websocket connection to `endpoints.rpc`; this\n * module wraps its `xstream`-style streams in a plain callback API and hands\n * back an unsubscribe function for each subscription, so dApp code never touches\n * the stream type directly.\n *\n * {@link createSubscriptionClient} connects the websocket-capable consensus RPC\n * client. The connection works in Node (where it uses a websocket polyfill) and\n * in the browser; nothing here depends on `window`.\n */\n\nimport { connectComet } from \"@cosmjs/tendermint-rpc\";\n\n/** A handler invoked for each emitted value. */\nexport type Handler<T> = (value: T) => void;\n\n/** Called to tear down a subscription and stop receiving events. */\nexport type Unsubscribe = () => void;\n\n/**\n * The `xstream`-style stream shape returned by the consensus RPC subscriptions.\n * Declared structurally so tests can supply a fake without importing `xstream`.\n */\nexport interface EventStream<T> {\n subscribe(observer: {\n next?: (value: T) => void;\n error?: (err: unknown) => void;\n complete?: () => void;\n }): { unsubscribe(): void };\n}\n\n/** A new-block event (the committed block). */\nexport interface NewBlockEventLike {\n readonly header?: { readonly height?: number };\n}\n\n/** A committed-transaction event. */\nexport interface TxEventLike {\n readonly hash: Uint8Array;\n readonly height: number;\n readonly result: unknown;\n readonly tx: Uint8Array;\n}\n\n/**\n * The subset of the consensus RPC client used for subscriptions. Declared\n * structurally so unit tests can inject a fake that never opens a socket.\n */\nexport interface SubscriptionClient {\n subscribeNewBlock(): EventStream<NewBlockEventLike>;\n subscribeTx(query?: string): EventStream<TxEventLike>;\n disconnect?(): void;\n}\n\n/**\n * Connect a websocket-capable consensus RPC client for subscriptions.\n *\n * @param rpcWsUrl - The consensus RPC endpoint (`endpoints.rpc`). An `http(s)://`\n * URL is accepted — the client upgrades to a websocket internally.\n */\nexport async function createSubscriptionClient(\n rpcWsUrl: string,\n): Promise<SubscriptionClient> {\n // `connectComet` auto-detects the consensus version and returns a client whose\n // subscription methods are backed by a websocket connection.\n return (await connectComet(rpcWsUrl)) as unknown as SubscriptionClient;\n}\n\n/**\n * Subscribe to newly committed blocks.\n *\n * @param client - A {@link SubscriptionClient} (see {@link createSubscriptionClient}).\n * @param handler - Called with each new block event.\n * @param onError - Optional error callback for stream errors.\n * @returns An {@link Unsubscribe} function.\n */\nexport function subscribeNewBlocks(\n client: SubscriptionClient,\n handler: Handler<NewBlockEventLike>,\n onError?: Handler<unknown>,\n): Unsubscribe {\n const sub = client.subscribeNewBlock().subscribe({\n next: handler,\n error: onError,\n });\n return () => sub.unsubscribe();\n}\n\n/** Attribute filters for {@link buildTxQuery}, e.g. `{ \"message.sender\": addr }`. */\nexport type TxQueryFilters = Record<string, string | number>;\n\n/**\n * Build a consensus-RPC subscription query string for transaction events.\n *\n * Always includes `tm.event='Tx'` and ANDs in each attribute filter. String\n * values are single-quoted; numeric values are emitted bare.\n *\n * @example buildTxQuery({ \"message.sender\": \"qor1...\" })\n * // => \"tm.event='Tx' AND message.sender='qor1...'\"\n */\nexport function buildTxQuery(filters: TxQueryFilters = {}): string {\n const parts = [\"tm.event='Tx'\"];\n for (const [key, value] of Object.entries(filters)) {\n const rendered = typeof value === \"number\" ? `${value}` : `'${value}'`;\n parts.push(`${key}=${rendered}`);\n }\n return parts.join(\" AND \");\n}\n\n/**\n * Subscribe to committed transactions matching a query.\n *\n * @param client - A {@link SubscriptionClient}.\n * @param query - A query string (see {@link buildTxQuery}) or an attribute-filter\n * object that is passed through {@link buildTxQuery}.\n * @param handler - Called with each matching tx event.\n * @param onError - Optional error callback.\n * @returns An {@link Unsubscribe} function.\n */\nexport function subscribeTx(\n client: SubscriptionClient,\n query: string | TxQueryFilters,\n handler: Handler<TxEventLike>,\n onError?: Handler<unknown>,\n): Unsubscribe {\n const q = typeof query === \"string\" ? query : buildTxQuery(query);\n const sub = client.subscribeTx(q).subscribe({\n next: handler,\n error: onError,\n });\n return () => sub.unsubscribe();\n}\n","/**\n * Block and transaction lookup/search over the Cosmos REST (LCD) endpoints.\n *\n * Wraps the standard `/cosmos/tx/v1beta1` and `/cosmos/base/tendermint/v1beta1`\n * routes: fetch a single transaction by hash, fetch a block by height (or the\n * latest), and search transactions by an events query. A small query builder\n * turns an attribute map (e.g. `{ \"message.sender\": addr }`) into the\n * `events=...` parameter the REST API expects.\n *\n * Responses are typed loosely (the gateway JSON is large and version-sensitive)\n * via a caller-supplied generic; the shapes here cover the common fields.\n */\n\nimport type { RestClient } from \"./query/rest\";\nimport type { QueryValue } from \"./query/http\";\n\n/** A transaction-response envelope from `/cosmos/tx/v1beta1/txs/{hash}`. */\nexport interface GetTxResponse {\n tx?: unknown;\n tx_response?: {\n txhash: string;\n height: string;\n code: number;\n codespace?: string;\n raw_log?: string;\n gas_used?: string;\n gas_wanted?: string;\n [k: string]: unknown;\n };\n}\n\n/** A block-response envelope from the consensus REST block routes. */\nexport interface GetBlockResponse {\n block_id?: unknown;\n block?: {\n header?: { height?: string; time?: string; chain_id?: string };\n data?: { txs?: string[] };\n [k: string]: unknown;\n };\n}\n\n/** A paginated tx-search response from `/cosmos/tx/v1beta1/txs`. */\nexport interface SearchTxsResponse {\n txs?: unknown[];\n tx_responses?: GetTxResponse[\"tx_response\"][];\n total?: string;\n pagination?: { next_key: string | null; total?: string };\n}\n\n/** Ordering for tx search. */\nexport type TxOrderBy = \"asc\" | \"desc\";\n\n/** Options for {@link searchTxs}. */\nexport interface SearchTxsOptions {\n /** 1-based page number. */\n page?: number;\n /** Page size. */\n limit?: number;\n /** Result ordering by block height. Defaults to the node default. */\n orderBy?: TxOrderBy;\n}\n\n/** Attribute filters for {@link buildEventsQuery}, e.g. `{ \"message.sender\": addr }`. */\nexport type EventFilters = Record<string, string | number>;\n\n/**\n * Build the `events` query value for the REST tx-search endpoint.\n *\n * Each `key=value` pair is rendered as `key='value'` (numbers unquoted) and\n * joined with `&` — the format `/cosmos/tx/v1beta1/txs?events=...` expects.\n *\n * @example buildEventsQuery({ \"message.sender\": \"qor1...\" })\n * // => \"message.sender='qor1...'\"\n */\nexport function buildEventsQuery(filters: EventFilters): string {\n return Object.entries(filters)\n .map(([key, value]) =>\n typeof value === \"number\" ? `${key}=${value}` : `${key}='${value}'`,\n )\n .join(\"&\");\n}\n\n/** Map a REST `order_by` enum value from the friendly {@link TxOrderBy}. */\nfunction orderByParam(orderBy?: TxOrderBy): QueryValue {\n if (orderBy === \"asc\") return \"ORDER_BY_ASC\";\n if (orderBy === \"desc\") return \"ORDER_BY_DESC\";\n return undefined;\n}\n\n/** Fetch a single transaction by its (hex) hash. */\nexport function getTx(rest: RestClient, hash: string): Promise<GetTxResponse> {\n return rest.get<GetTxResponse>(\n `/cosmos/tx/v1beta1/txs/${encodeURIComponent(hash)}`,\n );\n}\n\n/** Fetch a block by height (`/cosmos/base/tendermint/v1beta1/blocks/{height}`). */\nexport function getBlock(\n rest: RestClient,\n height: number | string,\n): Promise<GetBlockResponse> {\n return rest.get<GetBlockResponse>(\n `/cosmos/base/tendermint/v1beta1/blocks/${encodeURIComponent(String(height))}`,\n );\n}\n\n/** Fetch the latest block (`/cosmos/base/tendermint/v1beta1/blocks/latest`). */\nexport function getLatestBlock(rest: RestClient): Promise<GetBlockResponse> {\n return rest.get<GetBlockResponse>(\n \"/cosmos/base/tendermint/v1beta1/blocks/latest\",\n );\n}\n\n/**\n * Search transactions by an events query.\n *\n * @param rest - A {@link RestClient}.\n * @param query - An `events` query string (see {@link buildEventsQuery}) or an\n * attribute-filter object passed through {@link buildEventsQuery}.\n * @param opts - Page, limit, and ordering.\n */\nexport function searchTxs(\n rest: RestClient,\n query: string | EventFilters,\n opts: SearchTxsOptions = {},\n): Promise<SearchTxsResponse> {\n const events = typeof query === \"string\" ? query : buildEventsQuery(query);\n const params: Record<string, QueryValue> = {\n events,\n \"pagination.limit\": opts.limit,\n order_by: orderByParam(opts.orderBy),\n };\n if (opts.page !== undefined) {\n params[\"page\"] = opts.page;\n }\n return rest.get<SearchTxsResponse>(\"/cosmos/tx/v1beta1/txs\", params);\n}\n","/**\n * Transaction tracking, broadcast-and-wait, and a transient-error retry helper.\n *\n * After a `sync`/`async` broadcast you hold only a tx hash; the tx is in the\n * mempool but not yet in a block. {@link waitForTx} polls the REST tx endpoint\n * until the tx is included (or a timeout elapses), decoding the result and\n * throwing a typed {@link QoreTxError} if it landed with a non-zero code.\n *\n * {@link broadcastAndWait} chains a `sync` broadcast with {@link waitForTx}.\n * {@link withRetry} retries a function with exponential backoff — useful for\n * wrapping flaky read RPC calls.\n */\n\nimport { QoreHttpError } from \"./query/http\";\nimport { txErrorFrom } from \"./errors\";\nimport { getTx, type GetTxResponse } from \"./search\";\nimport type { RestClient } from \"./query/rest\";\n\n/** A function that fetches a tx by hash; defaults to {@link getTx} over REST. */\nexport type GetTxFn = (hash: string) => Promise<GetTxResponse>;\n\n/** Options for {@link waitForTx}. */\nexport interface WaitForTxOptions {\n /** Total time to wait before giving up, in ms. Defaults to 60000. */\n timeoutMs?: number;\n /** Delay between polls, in ms. Defaults to 2000. */\n pollIntervalMs?: number;\n}\n\n/** The decoded result of an included transaction. */\nexport interface IncludedTx {\n /** The transaction hash. */\n txHash: string;\n /** Block height the tx was included in. */\n height: number;\n /** ABCI result code (`0` = success). */\n code: number;\n /** Gas used, when reported. */\n gasUsed?: bigint;\n /** Gas wanted, when reported. */\n gasWanted?: bigint;\n /** Raw ABCI log. */\n rawLog?: string;\n /** The full REST response, for callers that need more. */\n raw: GetTxResponse;\n}\n\nfunction sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\n/** A REST \"tx not found yet\" error (404 / NotFound code) is expected while polling. */\nfunction isNotFound(err: unknown): boolean {\n if (err instanceof QoreHttpError) {\n if (err.status === 404) return true;\n // gRPC-gateway returns 400/500 with a NotFound code in the body for an\n // unknown hash on some node versions.\n if (err.body && /not\\s*found|tx not found|code\\s*=\\s*5/i.test(err.body)) {\n return true;\n }\n }\n return false;\n}\n\n/** Map a REST tx response into the decoded {@link IncludedTx}. */\nfunction toIncludedTx(hash: string, res: GetTxResponse): IncludedTx {\n const r = res.tx_response;\n const code = r?.code ?? 0;\n return {\n txHash: r?.txhash ?? hash,\n height: r?.height ? Number(r.height) : 0,\n code,\n gasUsed: r?.gas_used ? BigInt(r.gas_used) : undefined,\n gasWanted: r?.gas_wanted ? BigInt(r.gas_wanted) : undefined,\n rawLog: r?.raw_log,\n raw: res,\n };\n}\n\n/**\n * Poll for a transaction until it is included in a block or the timeout elapses.\n *\n * @param fetcher - A {@link RestClient} (uses {@link getTx}) or a custom\n * {@link GetTxFn}.\n * @param txHash - The transaction hash to wait for.\n * @param opts - Timeout and poll interval.\n * @returns The decoded {@link IncludedTx} once found.\n * @throws A {@link QoreTxError} if the tx is included with a non-zero code, or a\n * timeout `Error` if it is not included within `timeoutMs`.\n */\nexport async function waitForTx(\n fetcher: RestClient | GetTxFn,\n txHash: string,\n opts: WaitForTxOptions = {},\n): Promise<IncludedTx> {\n const timeoutMs = opts.timeoutMs ?? 60_000;\n const pollIntervalMs = opts.pollIntervalMs ?? 2_000;\n const get: GetTxFn =\n typeof fetcher === \"function\" ? fetcher : (h) => getTx(fetcher, h);\n\n const deadline = Date.now() + timeoutMs;\n for (;;) {\n let res: GetTxResponse | undefined;\n try {\n res = await get(txHash);\n } catch (err) {\n if (!isNotFound(err)) throw err;\n }\n\n if (res?.tx_response) {\n const included = toIncludedTx(txHash, res);\n if (included.code !== 0) {\n throw txErrorFrom({\n code: included.code,\n codespace: res.tx_response.codespace,\n rawLog: included.rawLog,\n txHash: included.txHash,\n });\n }\n return included;\n }\n\n if (Date.now() + pollIntervalMs > deadline) {\n throw new Error(\n `timed out after ${timeoutMs}ms waiting for tx ${txHash} to be included`,\n );\n }\n await sleep(pollIntervalMs);\n }\n}\n\n/** A broadcaster returning a tx hash (e.g. `TxClient.signAndBroadcast` in sync mode). */\nexport type SyncBroadcaster = () => Promise<{ transactionHash: string }>;\n\n/**\n * Broadcast (sync) and then wait for inclusion.\n *\n * @param broadcast - A function that submits the tx and resolves to its hash.\n * @param fetcher - A {@link RestClient} or {@link GetTxFn} used to poll.\n * @param opts - {@link WaitForTxOptions}.\n */\nexport async function broadcastAndWait(\n broadcast: SyncBroadcaster,\n fetcher: RestClient | GetTxFn,\n opts: WaitForTxOptions = {},\n): Promise<IncludedTx> {\n const { transactionHash } = await broadcast();\n return waitForTx(fetcher, transactionHash, opts);\n}\n\n/** Options for {@link withRetry}. */\nexport interface RetryOptions {\n /** Number of retries after the first attempt. Defaults to 3. */\n retries?: number;\n /** Initial backoff in ms (doubled each retry). Defaults to 250. */\n backoff?: number;\n /** Maximum backoff in ms. Defaults to 5000. */\n maxBackoff?: number;\n /** Predicate deciding whether an error is retryable. Defaults to retry all. */\n shouldRetry?: (err: unknown, attempt: number) => boolean;\n}\n\n/**\n * Run `fn`, retrying on failure with exponential backoff.\n *\n * @param fn - The operation to run (receives the 0-based attempt number).\n * @param opts - Retry count, backoff, and an optional retry predicate.\n * @returns The first successful result.\n * @throws The last error if all attempts fail or `shouldRetry` returns false.\n */\nexport async function withRetry<T>(\n fn: (attempt: number) => Promise<T>,\n opts: RetryOptions = {},\n): Promise<T> {\n const retries = opts.retries ?? 3;\n const baseBackoff = opts.backoff ?? 250;\n const maxBackoff = opts.maxBackoff ?? 5_000;\n const shouldRetry = opts.shouldRetry ?? (() => true);\n\n let lastError: unknown;\n for (let attempt = 0; attempt <= retries; attempt++) {\n try {\n return await fn(attempt);\n } catch (err) {\n lastError = err;\n if (attempt === retries || !shouldRetry(err, attempt)) throw err;\n const delay = Math.min(baseBackoff * 2 ** attempt, maxBackoff);\n if (delay > 0) await sleep(delay);\n }\n }\n throw lastError;\n}\n","/**\n * Encoding and attachment of the QoreChain PQC hybrid-signature extension to a\n * native tx.\n *\n * ──────────────────────────────────────────────────────────────────────────\n * The wallet ↔ chain contract (now known and enforced)\n * ──────────────────────────────────────────────────────────────────────────\n * These are low-level encode/attach primitives. The full, contract-correct\n * hybrid build sequence lives in {@link ../tx/hybrid-tx} ({@link buildHybridTx}\n * / {@link signAndBroadcastHybrid}) — prefer those for end-to-end signing. This\n * module documents the on-wire encoding the chain reads:\n *\n * - `PQCHybridSignature` struct, JSON field tags (`algorithm_id`,\n * `pqc_signature`, `pqc_public_key,omitempty`), and type URL\n * `/qorechain.pqc.v1.PQCHybridSignature`.\n * - The ante handler extracts the extension by type URL and JSON-decodes it, so\n * the `Any.value` carries the struct's Go-JSON encoding (Go marshals\n * `[]byte` as standard padded base64 strings), NOT a protobuf message. This\n * module encodes accordingly (see {@link toGoJson}).\n * - PLACEMENT: the extension is a CRITICAL extension option — it goes in\n * `TxBody.extension_options`. {@link buildHybridTx} always uses this slot.\n * This module additionally exposes `non_critical_extension_options` via\n * {@link AttachHybridOptions.placement} for callers with other needs, but the\n * chain reads the critical slot.\n * - SIGNED BYTES: the ML-DSA-87 signature is computed over the tx body WITH the\n * PQC extension REMOVED, framed with the authInfo bytes:\n * `BE32(len(B0)) || B0 || BE32(len(A)) || A` (see {@link buildHybridTx} for\n * the full contract). This module does not decide what the PQC signature\n * signs — {@link buildHybridTx} does.\n *\n * Cross-implementation proto byte-determinism (cosmjs encode vs. the chain's\n * re-marshal) is confirmed on the live testnet for the default registry message\n * types.\n */\n\nimport { Any } from \"cosmjs-types/google/protobuf/any\";\nimport { TxBody } from \"cosmjs-types/cosmos/tx/v1beta1/tx\";\nimport {\n HYBRID_SIG_TYPE_URL,\n type PQCHybridSignature,\n} from \"../accounts/pqc\";\n\n/** Where the hybrid-signature extension is placed within the `TxBody`. */\nexport type HybridPlacement =\n | \"non_critical_extension_options\"\n | \"extension_options\";\n\n/** Options for {@link attachHybridExtension}. */\nexport interface AttachHybridOptions {\n /**\n * Which `TxBody` extension list to attach the extension to. Defaults to\n * `\"non_critical_extension_options\"`. See the module header: the exact slot\n * the ante handler reads is not determinable from public core and needs\n * live-testnet verification.\n */\n placement?: HybridPlacement;\n}\n\n/**\n * Serialize a {@link PQCHybridSignature} the way Go's `encoding/json` would\n * marshal the core struct, so the node's JSON-decoding ante handler can read it.\n *\n * Go marshals `[]byte` fields as standard (padded) base64 strings, and omits\n * `pqc_public_key` entirely when empty (`omitempty`). The numeric `algorithm_id`\n * is emitted as a JSON number.\n */\nfunction toGoJson(ext: PQCHybridSignature): string {\n const obj: {\n algorithm_id: number;\n pqc_signature: string;\n pqc_public_key?: string;\n } = {\n algorithm_id: ext.algorithm_id,\n pqc_signature: base64(ext.pqc_signature),\n };\n if (ext.pqc_public_key !== undefined && ext.pqc_public_key.length > 0) {\n obj.pqc_public_key = base64(ext.pqc_public_key);\n }\n return JSON.stringify(obj);\n}\n\n/** Standard base64 (padded) encoding of bytes, matching Go's `[]byte` marshal. */\nfunction base64(bytes: Uint8Array): string {\n let binary = \"\";\n for (const b of bytes) binary += String.fromCharCode(b);\n // btoa is available in Node 16+ and all SDK target runtimes.\n return btoa(binary);\n}\n\n/**\n * Encode a {@link PQCHybridSignature} into a protobuf `Any` for use as a\n * `TxBody` extension option.\n *\n * The `Any.typeUrl` is the core {@link HYBRID_SIG_TYPE_URL}; the `Any.value` is\n * the UTF-8 bytes of the struct's Go-JSON encoding (see {@link toGoJson} and the\n * module header — the chain reads this extension by type URL + JSON decoding,\n * not protobuf).\n */\nexport function encodeHybridExtension(ext: PQCHybridSignature): Any {\n const value = new TextEncoder().encode(toGoJson(ext));\n return Any.fromPartial({ typeUrl: HYBRID_SIG_TYPE_URL, value });\n}\n\n/**\n * Return a copy of `body` with the encoded hybrid-signature extension attached.\n *\n * The input `body` is not mutated. By default the extension is added to\n * `non_critical_extension_options`; pass `placement` to use `extension_options`\n * instead.\n *\n * @see The module header — both the placement and the bytes the PQC signature\n * must cover require live-testnet verification against the `full` build.\n */\nexport function attachHybridExtension(\n body: TxBody,\n ext: PQCHybridSignature,\n opts: AttachHybridOptions = {},\n): TxBody {\n const anyExt = encodeHybridExtension(ext);\n const placement = opts.placement ?? \"non_critical_extension_options\";\n const next = TxBody.fromPartial({\n messages: body.messages,\n memo: body.memo,\n timeoutHeight: body.timeoutHeight,\n extensionOptions: [...body.extensionOptions],\n nonCriticalExtensionOptions: [...body.nonCriticalExtensionOptions],\n });\n if (placement === \"extension_options\") {\n next.extensionOptions.push(anyExt);\n } else {\n next.nonCriticalExtensionOptions.push(anyExt);\n }\n return next;\n}\n","/**\n * End-to-end hybrid (classical + post-quantum) transaction signing for\n * QoreChain.\n *\n * A hybrid transaction carries the usual classical secp256k1 signature in\n * `TxRaw.signatures` PLUS an ML-DSA-87 (Dilithium-5) signature attached to the\n * `TxBody` as a `PQCHybridSignature` extension. The chain's ante handler\n * verifies BOTH, so a hybrid account stays interoperable with classical\n * verification while gaining quantum safety.\n *\n * ──────────────────────────────────────────────────────────────────────────\n * The wallet ↔ chain contract (enforced by the chain)\n * ──────────────────────────────────────────────────────────────────────────\n * The chain verifies the ML-DSA-87 signature over the tx body WITH the PQC\n * extension REMOVED. Concretely:\n *\n * - `B0` = canonical protobuf bytes of the `TxBody` containing the\n * messages/memo/timeoutHeight but NOT the `PQCHybridSignature` extension.\n * - `A` = the tx `authInfoBytes`, verbatim — the same bytes that are\n * broadcast.\n * - PQC signed message = `BE32(len(B0)) || B0 || BE32(len(A)) || A`\n * (4-byte big-endian length prefixes; NO hashing, NO domain prefix).\n * - PQC signature = `ml_dsa87.sign(pqcSecretKey, message)` (pure\n * ML-DSA-87, empty context) — 4627 bytes for Dilithium-5.\n * - The `PQCHybridSignature` extension is then added to\n * `TxBody.extension_options` (CRITICAL extension options) as an `Any` with\n * `type_url = \"/qorechain.pqc.v1.PQCHybridSignature\"` and `value` = UTF-8\n * bytes of the Go-JSON `{ \"algorithm_id\", \"pqc_signature\", \"pqc_public_key\"? }`\n * (standard padded base64; `pqc_public_key` omitted when not provided).\n * - The CLASSICAL signature is computed normally (SIGN_MODE_DIRECT) over the\n * FINAL body (the one WITH the PQC extension) + authInfo + chainId +\n * accountNumber, and goes in `TxRaw.signatures` (outside the body). There is\n * no self-reference: the classical signature never signs itself.\n *\n * The signer's PQC key must be registered on-chain (via `MsgRegisterPQCKey`)\n * before hybrid txs PQC-verify — unless `includePqcPublicKey` is set, which\n * embeds the key for auto-registration on first use. Registering the key is the\n * caller's responsibility.\n *\n * Determinism note: the framing above is byte-for-byte deterministic on the\n * wallet side. Cross-implementation determinism (this `cosmjs`/`cosmjs-types`\n * proto encoding vs. the chain's re-marshal of the same `TxBody`) is confirmed\n * against the live testnet; if a custom message type with non-canonical field\n * ordering were used, callers must ensure their `Registry` encodes canonically.\n */\n\nimport type { OfflineDirectSigner, Registry } from \"@cosmjs/proto-signing\";\nimport {\n encodePubkey,\n makeAuthInfoBytes,\n} from \"@cosmjs/proto-signing\";\nimport { encodeSecp256k1Pubkey } from \"@cosmjs/amino\";\nimport { SignMode } from \"cosmjs-types/cosmos/tx/signing/v1beta1/signing\";\nimport {\n TxBody,\n TxRaw,\n SignDoc,\n} from \"cosmjs-types/cosmos/tx/v1beta1/tx\";\nimport type { EncodeObject } from \"@cosmjs/proto-signing\";\n\nimport {\n pqcSign,\n buildHybridSignatureExtension,\n AlgorithmDilithium5,\n type PqcKeypair,\n} from \"../accounts/pqc\";\nimport { encodeHybridExtension } from \"./hybrid\";\nimport type { StdFee } from \"./fees\";\nimport type { BroadcastMode, BroadcastResult } from \"./broadcast\";\n\n/** The fields shared by {@link buildHybridTx} and {@link signAndBroadcastHybrid}. */\nexport interface BuildHybridTxOptions {\n /**\n * The protobuf message {@link Registry} used to encode the messages into the\n * `TxBody`. Use cosmjs's `defaultRegistryTypes` (plus any custom QoreChain\n * message types) — the same registry the network's `TxClient` is built with.\n */\n registry: Registry;\n /**\n * The classical secp256k1 direct signer (e.g. from\n * `directSignerFromPrivateKey`). Its first account is used as the signer\n * identity and to produce the SIGN_MODE_DIRECT classical signature.\n */\n signer: OfflineDirectSigner;\n /** The ML-DSA-87 (Dilithium-5) keypair providing the post-quantum half. */\n pqcKeypair: PqcKeypair;\n /** The transaction messages, as `{ typeUrl, value }` encode objects. */\n messages: readonly EncodeObject[];\n /** The fee to pay. */\n fee: StdFee;\n /** Optional memo. Defaults to `\"\"`. */\n memo?: string;\n /** The chain id (e.g. `\"qorechain-diana\"`). */\n chainId: string;\n /** The on-chain account number of the signer. */\n accountNumber: number | bigint;\n /** The signer's current account sequence (nonce). */\n sequence: number | bigint;\n /** Optional `timeoutHeight` for the tx body. */\n timeoutHeight?: bigint;\n /**\n * When `true`, embed the 2592-byte ML-DSA-87 public key in the extension so\n * the chain can auto-register it on first use. Defaults to `false` (the key\n * is expected to already be registered via `MsgRegisterPQCKey`).\n */\n includePqcPublicKey?: boolean;\n}\n\n/** The fully assembled hybrid transaction and the intermediate artifacts. */\nexport interface BuiltHybridTx {\n /** The assembled `TxRaw` (final body + authInfo + classical signature). */\n txRaw: TxRaw;\n /** Encoded `TxRaw` bytes, ready to broadcast. */\n txRawBytes: Uint8Array;\n /** The `authInfoBytes` (`A`) — identical in the PQC framing and the SignDoc. */\n authInfoBytes: Uint8Array;\n /** The exact bytes the ML-DSA-87 signature was computed over (the framing). */\n pqcSignedMessage: Uint8Array;\n /** The raw ML-DSA-87 signature (Dilithium-5: 4627 bytes). */\n pqcSignature: Uint8Array;\n}\n\n/** A big-endian 4-byte length prefix, matching the chain contract framing. */\nfunction be32(n: number): Uint8Array {\n const b = new Uint8Array(4);\n b[0] = (n >>> 24) & 0xff;\n b[1] = (n >>> 16) & 0xff;\n b[2] = (n >>> 8) & 0xff;\n b[3] = n & 0xff;\n return b;\n}\n\n/** Decode a standard base64 string to bytes (no extra deps; atob is universal). */\nfunction fromBase64(b64: string): Uint8Array {\n const binary = atob(b64);\n const out = new Uint8Array(binary.length);\n for (let i = 0; i < binary.length; i++) out[i] = binary.charCodeAt(i);\n return out;\n}\n\n/** Concatenate byte arrays. */\nfunction concatBytes(...parts: Uint8Array[]): Uint8Array {\n let total = 0;\n for (const p of parts) total += p.length;\n const out = new Uint8Array(total);\n let off = 0;\n for (const p of parts) {\n out.set(p, off);\n off += p.length;\n }\n return out;\n}\n\n/**\n * Build a fully signed hybrid transaction following the chain contract.\n *\n * The build sequence (see the module header for the exact contract):\n * 1. Encode `B0` — the `TxBody` WITHOUT the PQC extension.\n * 2. Encode `A` — the single-signer `AuthInfo` (SIGN_MODE_DIRECT).\n * 3. Compute `message = BE32(len B0) || B0 || BE32(len A) || A`; ML-DSA-87\n * sign it.\n * 4. Build the PQC extension `Any` and attach it to a NEW body identical to\n * step 1 but with `extensionOptions = [ext]`; encode → final body bytes.\n * 5. SIGN_MODE_DIRECT classical sign over `SignDoc{ finalBody, A, chainId,\n * accountNumber }`.\n * 6. Assemble `TxRaw{ finalBody, A, [classicalSig] }`.\n *\n * The returned {@link BuiltHybridTx} exposes the intermediate artifacts so the\n * contract can be asserted/audited.\n */\nexport async function buildHybridTx(\n opts: BuildHybridTxOptions,\n): Promise<BuiltHybridTx> {\n const {\n registry,\n signer,\n pqcKeypair,\n messages,\n fee,\n chainId,\n accountNumber,\n sequence,\n } = opts;\n const memo = opts.memo ?? \"\";\n const timeoutHeight = opts.timeoutHeight ?? 0n;\n\n const accounts = await signer.getAccounts();\n if (accounts.length === 0) {\n throw new Error(\"signer exposes no accounts\");\n }\n const account = accounts[0];\n\n // 1. B0 — body WITHOUT the PQC extension. Encode the messages via the registry.\n const encodedMessages = messages.map((m) => registry.encodeAsAny(m));\n const baseBody = TxBody.fromPartial({\n messages: encodedMessages,\n memo,\n timeoutHeight,\n });\n const b0 = TxBody.encode(baseBody).finish();\n\n // 2. A — single-signer AuthInfo (SIGN_MODE_DIRECT). The signer's classical\n // secp256k1 pubkey identifies the account.\n const pubkeyAny = encodePubkey(encodeSecp256k1Pubkey(account.pubkey));\n const gasLimit = Number(fee.gas);\n const authInfoBytes = makeAuthInfoBytes(\n [{ pubkey: pubkeyAny, sequence: BigInt(sequence) }],\n fee.amount,\n gasLimit,\n fee.granter,\n fee.payer,\n SignMode.SIGN_MODE_DIRECT,\n );\n\n // 3. PQC framing + ML-DSA-87 signature over B0 + A (NOT the final body).\n const pqcSignedMessage = concatBytes(\n be32(b0.length),\n b0,\n be32(authInfoBytes.length),\n authInfoBytes,\n );\n const pqcSignature = pqcSign(pqcKeypair.secretKey, pqcSignedMessage);\n\n // 4. Build the PQC extension Any and attach it to the FINAL body as a\n // CRITICAL extension option.\n const ext = buildHybridSignatureExtension({\n algorithmId: AlgorithmDilithium5,\n signature: pqcSignature,\n publicKey: opts.includePqcPublicKey ? pqcKeypair.publicKey : undefined,\n });\n const extAny = encodeHybridExtension(ext);\n const finalBody = TxBody.fromPartial({\n messages: encodedMessages,\n memo,\n timeoutHeight,\n extensionOptions: [extAny],\n });\n const bodyBytesFinal = TxBody.encode(finalBody).finish();\n\n // 5. Classical SIGN_MODE_DIRECT signature over the FINAL body + A.\n const signDoc = SignDoc.fromPartial({\n bodyBytes: bodyBytesFinal,\n authInfoBytes,\n chainId,\n accountNumber: BigInt(accountNumber),\n });\n const { signature } = await signer.signDirect(account.address, signDoc);\n const classicalSig = fromBase64(signature.signature);\n\n // 6. Assemble TxRaw.\n const txRaw = TxRaw.fromPartial({\n bodyBytes: bodyBytesFinal,\n authInfoBytes,\n signatures: [classicalSig],\n });\n const txRawBytes = TxRaw.encode(txRaw).finish();\n\n return {\n txRaw,\n txRawBytes,\n authInfoBytes,\n pqcSignedMessage,\n pqcSignature,\n };\n}\n\n/**\n * A minimal broadcast transport for raw tx bytes. cosmjs's `StargateClient`\n * (and `SigningStargateClient`) satisfy this shape via `broadcastTx` /\n * `broadcastTxSync`, so production callers can pass an existing client; unit\n * tests can inject a fake.\n */\nexport interface HybridBroadcaster {\n /** Poll-to-commit broadcast: returns the delivery result. */\n broadcastTx(\n tx: Uint8Array,\n timeoutMs?: number,\n pollIntervalMs?: number,\n ): Promise<{\n code: number;\n transactionHash: string;\n height?: number;\n gasUsed?: bigint;\n gasWanted?: bigint;\n rawLog?: string;\n }>;\n /** Submit and return after CheckTx: returns the tx hash. */\n broadcastTxSync(tx: Uint8Array): Promise<string>;\n}\n\n/** Options for {@link signAndBroadcastHybrid}. */\nexport interface SignAndBroadcastHybridOptions extends BuildHybridTxOptions {\n /** The broadcast transport (e.g. a connected `StargateClient`). */\n transport: HybridBroadcaster;\n /** Broadcast mode. Defaults to `\"commit\"`. */\n mode?: BroadcastMode;\n}\n\n/**\n * Build, sign, and broadcast a hybrid transaction.\n *\n * Broadcast mode maps onto the transport:\n * - `commit` (default): polls until the tx lands in a block; throws on a\n * non-zero delivery code.\n * - `sync` / `async`: returns after mempool submission with just the tx hash.\n */\nexport async function signAndBroadcastHybrid(\n opts: SignAndBroadcastHybridOptions,\n): Promise<BroadcastResult> {\n const { transport } = opts;\n const mode: BroadcastMode = opts.mode ?? \"commit\";\n const built = await buildHybridTx(opts);\n\n if (mode === \"commit\") {\n const res = await transport.broadcastTx(built.txRawBytes);\n if (res.code !== 0) {\n throw new Error(\n `hybrid transaction failed with code ${res.code}: ${res.rawLog ?? \"(no log)\"} (hash ${res.transactionHash})`,\n );\n }\n return {\n transactionHash: res.transactionHash,\n code: res.code,\n height: res.height,\n gasUsed: res.gasUsed,\n gasWanted: res.gasWanted,\n rawLog: res.rawLog,\n };\n }\n\n const hash = await transport.broadcastTxSync(built.txRawBytes);\n return { transactionHash: hash, code: 0 };\n}\n","/**\n * Convenience message builders for the standard Cosmos SDK modules.\n *\n * These wrap `cosmjs-types` message types and return cosmjs\n * {@link EncodeObject}s with the correct on-chain `typeUrl`. The matching types\n * are already in cosmjs's {@link defaultRegistryTypes} (and therefore in\n * {@link qorechainRegistry}), so a tx built from these encodes without extra\n * registration.\n *\n * Builders are grouped by module and re-exported (see {@link messages.ts}) so\n * callers write e.g. `msg.staking.delegate({ ... })` or `msg.gov.vote({ ... })`.\n */\n\nimport type { EncodeObject } from \"@cosmjs/proto-signing\";\n\nimport { MsgSend, MsgMultiSend } from \"cosmjs-types/cosmos/bank/v1beta1/tx\";\nimport {\n MsgDelegate,\n MsgUndelegate,\n MsgBeginRedelegate,\n} from \"cosmjs-types/cosmos/staking/v1beta1/tx\";\nimport {\n MsgWithdrawDelegatorReward,\n MsgSetWithdrawAddress,\n MsgFundCommunityPool,\n} from \"cosmjs-types/cosmos/distribution/v1beta1/tx\";\nimport {\n MsgVote,\n MsgVoteWeighted,\n MsgDeposit,\n MsgSubmitProposal,\n} from \"cosmjs-types/cosmos/gov/v1/tx\";\nimport {\n MsgGrant,\n MsgRevoke,\n MsgExec,\n} from \"cosmjs-types/cosmos/authz/v1beta1/tx\";\nimport {\n MsgGrantAllowance,\n MsgRevokeAllowance,\n} from \"cosmjs-types/cosmos/feegrant/v1beta1/tx\";\nimport { MsgTransfer } from \"cosmjs-types/ibc/applications/transfer/v1/tx\";\n\n/** A ts-proto/cosmjs generated message exposing `fromPartial`. */\ninterface MsgType<T> {\n fromPartial(object: T): T;\n}\n\n/** Build a `{ typeUrl, value }` composer bound to a fixed typeUrl + message. */\nfunction composer<T>(typeUrl: string, msg: MsgType<Partial<T>>) {\n return (value: Partial<T>): EncodeObject => ({\n typeUrl,\n value: msg.fromPartial(value),\n });\n}\n\n/** Bank module message builders. */\nexport const bank = {\n send: composer<MsgSend>(\"/cosmos.bank.v1beta1.MsgSend\", MsgSend),\n multiSend: composer<MsgMultiSend>(\n \"/cosmos.bank.v1beta1.MsgMultiSend\",\n MsgMultiSend,\n ),\n};\n\n/** Staking module message builders. */\nexport const staking = {\n delegate: composer<MsgDelegate>(\n \"/cosmos.staking.v1beta1.MsgDelegate\",\n MsgDelegate,\n ),\n undelegate: composer<MsgUndelegate>(\n \"/cosmos.staking.v1beta1.MsgUndelegate\",\n MsgUndelegate,\n ),\n redelegate: composer<MsgBeginRedelegate>(\n \"/cosmos.staking.v1beta1.MsgBeginRedelegate\",\n MsgBeginRedelegate,\n ),\n};\n\n/** Distribution module message builders. */\nexport const distribution = {\n withdrawDelegatorReward: composer<MsgWithdrawDelegatorReward>(\n \"/cosmos.distribution.v1beta1.MsgWithdrawDelegatorReward\",\n MsgWithdrawDelegatorReward,\n ),\n setWithdrawAddress: composer<MsgSetWithdrawAddress>(\n \"/cosmos.distribution.v1beta1.MsgSetWithdrawAddress\",\n MsgSetWithdrawAddress,\n ),\n fundCommunityPool: composer<MsgFundCommunityPool>(\n \"/cosmos.distribution.v1beta1.MsgFundCommunityPool\",\n MsgFundCommunityPool,\n ),\n};\n\n/** Governance (gov v1) module message builders. */\nexport const gov = {\n vote: composer<MsgVote>(\"/cosmos.gov.v1.MsgVote\", MsgVote),\n voteWeighted: composer<MsgVoteWeighted>(\n \"/cosmos.gov.v1.MsgVoteWeighted\",\n MsgVoteWeighted,\n ),\n deposit: composer<MsgDeposit>(\"/cosmos.gov.v1.MsgDeposit\", MsgDeposit),\n submitProposal: composer<MsgSubmitProposal>(\n \"/cosmos.gov.v1.MsgSubmitProposal\",\n MsgSubmitProposal,\n ),\n};\n\n/** Authz (authorization grants) module message builders. */\nexport const authz = {\n grant: composer<MsgGrant>(\"/cosmos.authz.v1beta1.MsgGrant\", MsgGrant),\n revoke: composer<MsgRevoke>(\"/cosmos.authz.v1beta1.MsgRevoke\", MsgRevoke),\n exec: composer<MsgExec>(\"/cosmos.authz.v1beta1.MsgExec\", MsgExec),\n};\n\n/** Fee-grant module message builders. */\nexport const feegrant = {\n grant: composer<MsgGrantAllowance>(\n \"/cosmos.feegrant.v1beta1.MsgGrantAllowance\",\n MsgGrantAllowance,\n ),\n revoke: composer<MsgRevokeAllowance>(\n \"/cosmos.feegrant.v1beta1.MsgRevokeAllowance\",\n MsgRevokeAllowance,\n ),\n};\n\n/** IBC fungible-token-transfer message builders. */\nexport const ibc = {\n transfer: composer<MsgTransfer>(\n \"/ibc.applications.transfer.v1.MsgTransfer\",\n MsgTransfer,\n ),\n};\n","/**\n * Typed message composers for the QoreChain custom modules.\n *\n * Each composer takes the message's partial value and returns a cosmjs\n * {@link EncodeObject} (`{ typeUrl, value }`) ready to pass to\n * `TxClient.signAndBroadcast` / the hybrid tx path. The `value` is built via the\n * generated `Msg*.fromPartial`, so optional fields default correctly and the\n * input is fully typed.\n *\n * Composers are grouped by module and re-exported as a single `qorechain`\n * object (see {@link messages.ts}) so callers write e.g.\n * `msg.amm.swapExactIn({ ... })` or `msg.pqc.registerPqcKey({ ... })`.\n */\n\nimport type { EncodeObject } from \"@cosmjs/proto-signing\";\n\nimport * as ammTx from \"../codegen/qorechain/amm/v1/tx\";\nimport * as bridgeTx from \"../codegen/qorechain/bridge/v1/tx\";\nimport * as rdkTx from \"../codegen/qorechain/rdk/v1/tx\";\nimport * as multilayerTx from \"../codegen/qorechain/multilayer/v1/tx\";\nimport * as pqcTx from \"../codegen/qorechain/pqc/v1/tx\";\nimport * as svmTx from \"../codegen/qorechain/svm/v1/tx\";\nimport * as lightnodeTx from \"../codegen/qorechain/lightnode/v1/tx\";\nimport * as licenseTx from \"../codegen/qorechain/license/v1/tx\";\nimport * as abstractaccountTx from \"../codegen/qorechain/abstractaccount/v1/tx\";\nimport * as crossvmTx from \"../codegen/qorechain/crossvm/v1/tx\";\nimport * as rlconsensusTx from \"../codegen/qorechain/rlconsensus/v1/tx\";\n\n/**\n * A generated message type with the methods the composers use.\n *\n * `fromPartial` is typed to *return* `T` and accept a structurally-partial\n * input; inferring `T` from the return position (covariant) keeps the emitted\n * `.d.ts` rollup honest. Inferring from the argument position instead caused the\n * bundled declarations to collapse the composer parameters to `never`.\n */\ninterface MsgType<T> {\n fromPartial(object: never): T;\n}\n\n/** A structurally-partial value accepted by a composer. */\ntype PartialMsg<T> = {\n [K in keyof T]?: T[K] extends object ? PartialMsg<T[K]> : T[K];\n};\n\n/** Build a `{ typeUrl, value }` composer bound to a fixed typeUrl + message. */\nfunction composer<T>(typeUrl: string, msg: MsgType<T>) {\n return (value: PartialMsg<T>): EncodeObject => ({\n typeUrl,\n value: msg.fromPartial(value as never),\n });\n}\n\n/** AMM (automated market maker) message composers. */\nexport const amm = {\n createPool: composer(\"/qorechain.amm.v1.MsgCreatePool\", ammTx.MsgCreatePool),\n addLiquidity: composer(\n \"/qorechain.amm.v1.MsgAddLiquidity\",\n ammTx.MsgAddLiquidity,\n ),\n removeLiquidity: composer(\n \"/qorechain.amm.v1.MsgRemoveLiquidity\",\n ammTx.MsgRemoveLiquidity,\n ),\n swapExactIn: composer(\n \"/qorechain.amm.v1.MsgSwapExactIn\",\n ammTx.MsgSwapExactIn,\n ),\n swapExactOut: composer(\n \"/qorechain.amm.v1.MsgSwapExactOut\",\n ammTx.MsgSwapExactOut,\n ),\n pausePool: composer(\"/qorechain.amm.v1.MsgPausePool\", ammTx.MsgPausePool),\n resumePool: composer(\"/qorechain.amm.v1.MsgResumePool\", ammTx.MsgResumePool),\n};\n\n/** Bridge (cross-chain asset transfer) message composers. */\nexport const bridge = {\n bridgeDeposit: composer(\n \"/qorechain.bridge.v1.MsgBridgeDeposit\",\n bridgeTx.MsgBridgeDeposit,\n ),\n bridgeWithdraw: composer(\n \"/qorechain.bridge.v1.MsgBridgeWithdraw\",\n bridgeTx.MsgBridgeWithdraw,\n ),\n registerBridgeValidator: composer(\n \"/qorechain.bridge.v1.MsgRegisterBridgeValidator\",\n bridgeTx.MsgRegisterBridgeValidator,\n ),\n bridgeAttestation: composer(\n \"/qorechain.bridge.v1.MsgBridgeAttestation\",\n bridgeTx.MsgBridgeAttestation,\n ),\n};\n\n/** RDK (rollup development kit) message composers. */\nexport const rdk = {\n createRollup: composer(\n \"/qorechain.rdk.v1.MsgCreateRollup\",\n rdkTx.MsgCreateRollup,\n ),\n submitBatch: composer(\n \"/qorechain.rdk.v1.MsgSubmitBatch\",\n rdkTx.MsgSubmitBatch,\n ),\n challengeBatch: composer(\n \"/qorechain.rdk.v1.MsgChallengeBatch\",\n rdkTx.MsgChallengeBatch,\n ),\n resolveChallenge: composer(\n \"/qorechain.rdk.v1.MsgResolveChallenge\",\n rdkTx.MsgResolveChallenge,\n ),\n pauseRollup: composer(\n \"/qorechain.rdk.v1.MsgPauseRollup\",\n rdkTx.MsgPauseRollup,\n ),\n resumeRollup: composer(\n \"/qorechain.rdk.v1.MsgResumeRollup\",\n rdkTx.MsgResumeRollup,\n ),\n stopRollup: composer(\"/qorechain.rdk.v1.MsgStopRollup\", rdkTx.MsgStopRollup),\n};\n\n/** Multilayer (sidechain / paychain anchoring) message composers. */\nexport const multilayer = {\n registerSidechain: composer(\n \"/qorechain.multilayer.v1.MsgRegisterSidechain\",\n multilayerTx.MsgRegisterSidechain,\n ),\n registerPaychain: composer(\n \"/qorechain.multilayer.v1.MsgRegisterPaychain\",\n multilayerTx.MsgRegisterPaychain,\n ),\n anchorState: composer(\n \"/qorechain.multilayer.v1.MsgAnchorState\",\n multilayerTx.MsgAnchorState,\n ),\n routeTransaction: composer(\n \"/qorechain.multilayer.v1.MsgRouteTransaction\",\n multilayerTx.MsgRouteTransaction,\n ),\n updateLayerStatus: composer(\n \"/qorechain.multilayer.v1.MsgUpdateLayerStatus\",\n multilayerTx.MsgUpdateLayerStatus,\n ),\n challengeAnchor: composer(\n \"/qorechain.multilayer.v1.MsgChallengeAnchor\",\n multilayerTx.MsgChallengeAnchor,\n ),\n};\n\n/** PQC (post-quantum key) message composers. */\nexport const pqc = {\n registerPqcKey: composer(\n \"/qorechain.pqc.v1.MsgRegisterPQCKey\",\n pqcTx.MsgRegisterPQCKey,\n ),\n registerPqcKeyV2: composer(\n \"/qorechain.pqc.v1.MsgRegisterPQCKeyV2\",\n pqcTx.MsgRegisterPQCKeyV2,\n ),\n migratePqcKey: composer(\n \"/qorechain.pqc.v1.MsgMigratePQCKey\",\n pqcTx.MsgMigratePQCKey,\n ),\n deprecateAlgorithm: composer(\n \"/qorechain.pqc.v1.MsgDeprecateAlgorithm\",\n pqcTx.MsgDeprecateAlgorithm,\n ),\n disableAlgorithm: composer(\n \"/qorechain.pqc.v1.MsgDisableAlgorithm\",\n pqcTx.MsgDisableAlgorithm,\n ),\n};\n\n/** SVM (virtual machine programs/accounts) message composers. */\nexport const svm = {\n deployProgram: composer(\n \"/qorechain.svm.v1.MsgDeployProgram\",\n svmTx.MsgDeployProgram,\n ),\n createAccount: composer(\n \"/qorechain.svm.v1.MsgCreateAccount\",\n svmTx.MsgCreateAccount,\n ),\n executeProgram: composer(\n \"/qorechain.svm.v1.MsgExecuteProgram\",\n svmTx.MsgExecuteProgram,\n ),\n registerSvmPqcKey: composer(\n \"/qorechain.svm.v1.MsgRegisterSVMPQCKey\",\n svmTx.MsgRegisterSVMPQCKey,\n ),\n};\n\n/** Light-node lifecycle message composers. */\nexport const lightnode = {\n registerLightNode: composer(\n \"/qorechain.lightnode.v1.MsgRegisterLightNode\",\n lightnodeTx.MsgRegisterLightNode,\n ),\n heartbeat: composer(\n \"/qorechain.lightnode.v1.MsgHeartbeat\",\n lightnodeTx.MsgHeartbeat,\n ),\n deregisterLightNode: composer(\n \"/qorechain.lightnode.v1.MsgDeregisterLightNode\",\n lightnodeTx.MsgDeregisterLightNode,\n ),\n claimLightNodeRewards: composer(\n \"/qorechain.lightnode.v1.MsgClaimLightNodeRewards\",\n lightnodeTx.MsgClaimLightNodeRewards,\n ),\n};\n\n/** Feature-license message composers. */\nexport const license = {\n grantLicense: composer(\n \"/qorechain.license.v1.MsgGrantLicense\",\n licenseTx.MsgGrantLicense,\n ),\n revokeLicense: composer(\n \"/qorechain.license.v1.MsgRevokeLicense\",\n licenseTx.MsgRevokeLicense,\n ),\n suspendLicense: composer(\n \"/qorechain.license.v1.MsgSuspendLicense\",\n licenseTx.MsgSuspendLicense,\n ),\n resumeLicense: composer(\n \"/qorechain.license.v1.MsgResumeLicense\",\n licenseTx.MsgResumeLicense,\n ),\n};\n\n/** Abstract-account message composers. */\nexport const abstractaccount = {\n createAbstractAccount: composer(\n \"/qorechain.abstractaccount.v1.MsgCreateAbstractAccount\",\n abstractaccountTx.MsgCreateAbstractAccount,\n ),\n updateSpendingRules: composer(\n \"/qorechain.abstractaccount.v1.MsgUpdateSpendingRules\",\n abstractaccountTx.MsgUpdateSpendingRules,\n ),\n};\n\n/** Cross-VM message composers. */\nexport const crossvm = {\n crossVmCall: composer(\n \"/qorechain.crossvm.v1.MsgCrossVMCall\",\n crossvmTx.MsgCrossVMCall,\n ),\n processQueue: composer(\n \"/qorechain.crossvm.v1.MsgProcessQueue\",\n crossvmTx.MsgProcessQueue,\n ),\n};\n\n/** RL-consensus (governance authority) message composers. */\nexport const rlconsensus = {\n setAgentMode: composer(\n \"/qorechain.rlconsensus.v1.MsgSetAgentMode\",\n rlconsensusTx.MsgSetAgentMode,\n ),\n resumeAgent: composer(\n \"/qorechain.rlconsensus.v1.MsgResumeAgent\",\n rlconsensusTx.MsgResumeAgent,\n ),\n updatePolicy: composer(\n \"/qorechain.rlconsensus.v1.MsgUpdatePolicy\",\n rlconsensusTx.MsgUpdatePolicy,\n ),\n updateRewardWeights: composer(\n \"/qorechain.rlconsensus.v1.MsgUpdateRewardWeights\",\n rlconsensusTx.MsgUpdateRewardWeights,\n ),\n};\n","/**\n * Typed message composers for every transaction QoreChain supports.\n *\n * The default export shape is a single grouped object so callers can write\n * `msg.amm.swapExactIn({ ... })`, `msg.staking.delegate({ ... })`,\n * `msg.pqc.registerPqcKey({ ... })`, etc. Standard Cosmos SDK modules\n * (bank/staking/distribution/gov/authz/feegrant/ibc) sit alongside the\n * QoreChain custom modules (amm/bridge/rdk/multilayer/pqc/svm/lightnode/\n * license/abstractaccount/crossvm/rlconsensus).\n *\n * Every composer returns a cosmjs `{ typeUrl, value }` `EncodeObject` that\n * {@link qorechainRegistry} can encode — pass an array of them straight to\n * `TxClient.signAndBroadcast` or the hybrid PQC tx path.\n */\n\n// Standard Cosmos SDK modules.\nimport {\n bank,\n staking,\n distribution,\n gov,\n authz,\n feegrant,\n ibc,\n} from \"./cosmos\";\n\n// QoreChain custom modules.\nimport {\n amm,\n bridge,\n rdk,\n multilayer,\n pqc,\n svm,\n lightnode,\n license,\n abstractaccount,\n crossvm,\n rlconsensus,\n} from \"./qorechain\";\n\n/**\n * All message composers, grouped by module. Recommended import:\n *\n * ```ts\n * import { msg } from \"@qorechain/sdk\";\n * const m = msg.amm.swapExactIn({ sender, poolId: \"1\", tokenIn, denomOut, minOut });\n * ```\n */\nexport const msg = {\n // standard cosmos\n bank,\n staking,\n distribution,\n gov,\n authz,\n feegrant,\n ibc,\n // qorechain\n amm,\n bridge,\n rdk,\n multilayer,\n pqc,\n svm,\n lightnode,\n license,\n abstractaccount,\n crossvm,\n rlconsensus,\n} as const;\n\n// Also expose the per-module groups as named exports for tree-shakeable imports.\nexport {\n bank,\n staking,\n distribution,\n gov,\n authz,\n feegrant,\n ibc,\n} from \"./cosmos\";\nexport {\n amm,\n bridge,\n rdk,\n multilayer,\n pqc,\n svm,\n lightnode,\n license,\n abstractaccount,\n crossvm,\n rlconsensus,\n} from \"./qorechain\";\n\n// The registry that resolves all of the above.\nexport { qorechainRegistry, qorechainRegistryTypes } from \"./registry\";\n","/**\n * Barrel for the generated QoreChain message and query types.\n *\n * Re-exported from the SDK root as `qorechainTypes` (namespaced by module) for\n * callers who need the raw generated `Msg*` / `Query*` interfaces and their\n * `encode`/`decode`/`fromPartial` helpers — e.g. to decode a message read back\n * from chain, or to build a value independently of the `msg.*` composers.\n *\n * This file is hand-written (not emitted by codegen) so the generated `tx.ts` /\n * `query.ts` files stay free of cross-module imports.\n */\n\nexport * as amm from \"./qorechain/amm/v1/tx\";\nexport * as bridge from \"./qorechain/bridge/v1/tx\";\nexport * as rdk from \"./qorechain/rdk/v1/tx\";\nexport * as multilayer from \"./qorechain/multilayer/v1/tx\";\nexport * as pqc from \"./qorechain/pqc/v1/tx\";\nexport * as svm from \"./qorechain/svm/v1/tx\";\nexport * as lightnode from \"./qorechain/lightnode/v1/tx\";\nexport * as license from \"./qorechain/license/v1/tx\";\nexport * as abstractaccount from \"./qorechain/abstractaccount/v1/tx\";\nexport * as crossvm from \"./qorechain/crossvm/v1/tx\";\nexport * as rlconsensus from \"./qorechain/rlconsensus/v1/tx\";\n\n// Query types (request/response) for modules that expose a query service.\nexport * as crossvmQuery from \"./qorechain/crossvm/v1/query\";\nexport * as lightnodeQuery from \"./qorechain/lightnode/v1/query\";\nexport * as pqcQuery from \"./qorechain/pqc/v1/query\";\nexport * as qcaQuery from \"./qorechain/qca/v1/query\";\nexport * as reputationQuery from \"./qorechain/reputation/v1/query\";\nexport * as rlconsensusQuery from \"./qorechain/rlconsensus/v1/query\";\nexport * as svmQuery from \"./qorechain/svm/v1/query\";\n","// Code generated by protoc-gen-ts_proto. DO NOT EDIT.\n// versions:\n// protoc-gen-ts_proto v2.11.8\n// protoc unknown\n// source: qorechain/crossvm/v1/query.proto\n\n/* eslint-disable */\nimport { BinaryReader, BinaryWriter } from \"@bufbuild/protobuf/wire\";\n\nexport const protobufPackage = \"qorechain.crossvm.v1\";\n\nexport interface CrossVMMessageView {\n id: string;\n sourceVm: string;\n targetVm: string;\n sender: string;\n sourceContract: string;\n targetContract: string;\n payloadHex: string;\n status: string;\n createdHeight: string;\n executedHeight: string;\n error: string;\n}\n\nexport interface QueryParamsRequest {\n}\n\nexport interface QueryParamsResponse {\n maxMessageSize: string;\n maxQueueSize: number;\n queueTimeoutBlocks: string;\n enabled: boolean;\n}\n\nexport interface QueryPendingMessagesRequest {\n}\n\nexport interface QueryPendingMessagesResponse {\n messages: CrossVMMessageView[];\n count: number;\n}\n\nexport interface QueryMessageRequest {\n id: string;\n}\n\nexport interface QueryMessageResponse {\n message?: CrossVMMessageView | undefined;\n found: boolean;\n}\n\nfunction createBaseCrossVMMessageView(): CrossVMMessageView {\n return {\n id: \"\",\n sourceVm: \"\",\n targetVm: \"\",\n sender: \"\",\n sourceContract: \"\",\n targetContract: \"\",\n payloadHex: \"\",\n status: \"\",\n createdHeight: \"0\",\n executedHeight: \"0\",\n error: \"\",\n };\n}\n\nexport const CrossVMMessageView: MessageFns<CrossVMMessageView> = {\n encode(message: CrossVMMessageView, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.id !== \"\") {\n writer.uint32(10).string(message.id);\n }\n if (message.sourceVm !== \"\") {\n writer.uint32(18).string(message.sourceVm);\n }\n if (message.targetVm !== \"\") {\n writer.uint32(26).string(message.targetVm);\n }\n if (message.sender !== \"\") {\n writer.uint32(34).string(message.sender);\n }\n if (message.sourceContract !== \"\") {\n writer.uint32(42).string(message.sourceContract);\n }\n if (message.targetContract !== \"\") {\n writer.uint32(50).string(message.targetContract);\n }\n if (message.payloadHex !== \"\") {\n writer.uint32(58).string(message.payloadHex);\n }\n if (message.status !== \"\") {\n writer.uint32(66).string(message.status);\n }\n if (message.createdHeight !== \"0\") {\n writer.uint32(72).int64(message.createdHeight);\n }\n if (message.executedHeight !== \"0\") {\n writer.uint32(80).int64(message.executedHeight);\n }\n if (message.error !== \"\") {\n writer.uint32(90).string(message.error);\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): CrossVMMessageView {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseCrossVMMessageView();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n message.id = reader.string();\n continue;\n }\n case 2: {\n if (tag !== 18) {\n break;\n }\n\n message.sourceVm = reader.string();\n continue;\n }\n case 3: {\n if (tag !== 26) {\n break;\n }\n\n message.targetVm = reader.string();\n continue;\n }\n case 4: {\n if (tag !== 34) {\n break;\n }\n\n message.sender = reader.string();\n continue;\n }\n case 5: {\n if (tag !== 42) {\n break;\n }\n\n message.sourceContract = reader.string();\n continue;\n }\n case 6: {\n if (tag !== 50) {\n break;\n }\n\n message.targetContract = reader.string();\n continue;\n }\n case 7: {\n if (tag !== 58) {\n break;\n }\n\n message.payloadHex = reader.string();\n continue;\n }\n case 8: {\n if (tag !== 66) {\n break;\n }\n\n message.status = reader.string();\n continue;\n }\n case 9: {\n if (tag !== 72) {\n break;\n }\n\n message.createdHeight = reader.int64().toString();\n continue;\n }\n case 10: {\n if (tag !== 80) {\n break;\n }\n\n message.executedHeight = reader.int64().toString();\n continue;\n }\n case 11: {\n if (tag !== 90) {\n break;\n }\n\n message.error = reader.string();\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): CrossVMMessageView {\n return {\n id: isSet(object.id) ? globalThis.String(object.id) : \"\",\n sourceVm: isSet(object.sourceVm)\n ? globalThis.String(object.sourceVm)\n : isSet(object.source_vm)\n ? globalThis.String(object.source_vm)\n : \"\",\n targetVm: isSet(object.targetVm)\n ? globalThis.String(object.targetVm)\n : isSet(object.target_vm)\n ? globalThis.String(object.target_vm)\n : \"\",\n sender: isSet(object.sender) ? globalThis.String(object.sender) : \"\",\n sourceContract: isSet(object.sourceContract)\n ? globalThis.String(object.sourceContract)\n : isSet(object.source_contract)\n ? globalThis.String(object.source_contract)\n : \"\",\n targetContract: isSet(object.targetContract)\n ? globalThis.String(object.targetContract)\n : isSet(object.target_contract)\n ? globalThis.String(object.target_contract)\n : \"\",\n payloadHex: isSet(object.payloadHex)\n ? globalThis.String(object.payloadHex)\n : isSet(object.payload_hex)\n ? globalThis.String(object.payload_hex)\n : \"\",\n status: isSet(object.status) ? globalThis.String(object.status) : \"\",\n createdHeight: isSet(object.createdHeight)\n ? globalThis.String(object.createdHeight)\n : isSet(object.created_height)\n ? globalThis.String(object.created_height)\n : \"0\",\n executedHeight: isSet(object.executedHeight)\n ? globalThis.String(object.executedHeight)\n : isSet(object.executed_height)\n ? globalThis.String(object.executed_height)\n : \"0\",\n error: isSet(object.error) ? globalThis.String(object.error) : \"\",\n };\n },\n\n toJSON(message: CrossVMMessageView): unknown {\n const obj: any = {};\n if (message.id !== \"\") {\n obj.id = message.id;\n }\n if (message.sourceVm !== \"\") {\n obj.sourceVm = message.sourceVm;\n }\n if (message.targetVm !== \"\") {\n obj.targetVm = message.targetVm;\n }\n if (message.sender !== \"\") {\n obj.sender = message.sender;\n }\n if (message.sourceContract !== \"\") {\n obj.sourceContract = message.sourceContract;\n }\n if (message.targetContract !== \"\") {\n obj.targetContract = message.targetContract;\n }\n if (message.payloadHex !== \"\") {\n obj.payloadHex = message.payloadHex;\n }\n if (message.status !== \"\") {\n obj.status = message.status;\n }\n if (message.createdHeight !== \"0\") {\n obj.createdHeight = message.createdHeight;\n }\n if (message.executedHeight !== \"0\") {\n obj.executedHeight = message.executedHeight;\n }\n if (message.error !== \"\") {\n obj.error = message.error;\n }\n return obj;\n },\n\n create(base?: DeepPartial<CrossVMMessageView>): CrossVMMessageView {\n return CrossVMMessageView.fromPartial(base ?? {});\n },\n fromPartial(object: DeepPartial<CrossVMMessageView>): CrossVMMessageView {\n const message = createBaseCrossVMMessageView();\n message.id = object.id ?? \"\";\n message.sourceVm = object.sourceVm ?? \"\";\n message.targetVm = object.targetVm ?? \"\";\n message.sender = object.sender ?? \"\";\n message.sourceContract = object.sourceContract ?? \"\";\n message.targetContract = object.targetContract ?? \"\";\n message.payloadHex = object.payloadHex ?? \"\";\n message.status = object.status ?? \"\";\n message.createdHeight = object.createdHeight ?? \"0\";\n message.executedHeight = object.executedHeight ?? \"0\";\n message.error = object.error ?? \"\";\n return message;\n },\n};\n\nfunction createBaseQueryParamsRequest(): QueryParamsRequest {\n return {};\n}\n\nexport const QueryParamsRequest: MessageFns<QueryParamsRequest> = {\n encode(_: QueryParamsRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): QueryParamsRequest {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseQueryParamsRequest();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(_: any): QueryParamsRequest {\n return {};\n },\n\n toJSON(_: QueryParamsRequest): unknown {\n const obj: any = {};\n return obj;\n },\n\n create(base?: DeepPartial<QueryParamsRequest>): QueryParamsRequest {\n return QueryParamsRequest.fromPartial(base ?? {});\n },\n fromPartial(_: DeepPartial<QueryParamsRequest>): QueryParamsRequest {\n const message = createBaseQueryParamsRequest();\n return message;\n },\n};\n\nfunction createBaseQueryParamsResponse(): QueryParamsResponse {\n return { maxMessageSize: \"0\", maxQueueSize: 0, queueTimeoutBlocks: \"0\", enabled: false };\n}\n\nexport const QueryParamsResponse: MessageFns<QueryParamsResponse> = {\n encode(message: QueryParamsResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.maxMessageSize !== \"0\") {\n writer.uint32(8).uint64(message.maxMessageSize);\n }\n if (message.maxQueueSize !== 0) {\n writer.uint32(16).uint32(message.maxQueueSize);\n }\n if (message.queueTimeoutBlocks !== \"0\") {\n writer.uint32(24).int64(message.queueTimeoutBlocks);\n }\n if (message.enabled !== false) {\n writer.uint32(32).bool(message.enabled);\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): QueryParamsResponse {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseQueryParamsResponse();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 8) {\n break;\n }\n\n message.maxMessageSize = reader.uint64().toString();\n continue;\n }\n case 2: {\n if (tag !== 16) {\n break;\n }\n\n message.maxQueueSize = reader.uint32();\n continue;\n }\n case 3: {\n if (tag !== 24) {\n break;\n }\n\n message.queueTimeoutBlocks = reader.int64().toString();\n continue;\n }\n case 4: {\n if (tag !== 32) {\n break;\n }\n\n message.enabled = reader.bool();\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): QueryParamsResponse {\n return {\n maxMessageSize: isSet(object.maxMessageSize)\n ? globalThis.String(object.maxMessageSize)\n : isSet(object.max_message_size)\n ? globalThis.String(object.max_message_size)\n : \"0\",\n maxQueueSize: isSet(object.maxQueueSize)\n ? globalThis.Number(object.maxQueueSize)\n : isSet(object.max_queue_size)\n ? globalThis.Number(object.max_queue_size)\n : 0,\n queueTimeoutBlocks: isSet(object.queueTimeoutBlocks)\n ? globalThis.String(object.queueTimeoutBlocks)\n : isSet(object.queue_timeout_blocks)\n ? globalThis.String(object.queue_timeout_blocks)\n : \"0\",\n enabled: isSet(object.enabled) ? globalThis.Boolean(object.enabled) : false,\n };\n },\n\n toJSON(message: QueryParamsResponse): unknown {\n const obj: any = {};\n if (message.maxMessageSize !== \"0\") {\n obj.maxMessageSize = message.maxMessageSize;\n }\n if (message.maxQueueSize !== 0) {\n obj.maxQueueSize = Math.round(message.maxQueueSize);\n }\n if (message.queueTimeoutBlocks !== \"0\") {\n obj.queueTimeoutBlocks = message.queueTimeoutBlocks;\n }\n if (message.enabled !== false) {\n obj.enabled = message.enabled;\n }\n return obj;\n },\n\n create(base?: DeepPartial<QueryParamsResponse>): QueryParamsResponse {\n return QueryParamsResponse.fromPartial(base ?? {});\n },\n fromPartial(object: DeepPartial<QueryParamsResponse>): QueryParamsResponse {\n const message = createBaseQueryParamsResponse();\n message.maxMessageSize = object.maxMessageSize ?? \"0\";\n message.maxQueueSize = object.maxQueueSize ?? 0;\n message.queueTimeoutBlocks = object.queueTimeoutBlocks ?? \"0\";\n message.enabled = object.enabled ?? false;\n return message;\n },\n};\n\nfunction createBaseQueryPendingMessagesRequest(): QueryPendingMessagesRequest {\n return {};\n}\n\nexport const QueryPendingMessagesRequest: MessageFns<QueryPendingMessagesRequest> = {\n encode(_: QueryPendingMessagesRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): QueryPendingMessagesRequest {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseQueryPendingMessagesRequest();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(_: any): QueryPendingMessagesRequest {\n return {};\n },\n\n toJSON(_: QueryPendingMessagesRequest): unknown {\n const obj: any = {};\n return obj;\n },\n\n create(base?: DeepPartial<QueryPendingMessagesRequest>): QueryPendingMessagesRequest {\n return QueryPendingMessagesRequest.fromPartial(base ?? {});\n },\n fromPartial(_: DeepPartial<QueryPendingMessagesRequest>): QueryPendingMessagesRequest {\n const message = createBaseQueryPendingMessagesRequest();\n return message;\n },\n};\n\nfunction createBaseQueryPendingMessagesResponse(): QueryPendingMessagesResponse {\n return { messages: [], count: 0 };\n}\n\nexport const QueryPendingMessagesResponse: MessageFns<QueryPendingMessagesResponse> = {\n encode(message: QueryPendingMessagesResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n for (const v of message.messages) {\n CrossVMMessageView.encode(v!, writer.uint32(10).fork()).join();\n }\n if (message.count !== 0) {\n writer.uint32(16).uint32(message.count);\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): QueryPendingMessagesResponse {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseQueryPendingMessagesResponse();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n message.messages.push(CrossVMMessageView.decode(reader, reader.uint32()));\n continue;\n }\n case 2: {\n if (tag !== 16) {\n break;\n }\n\n message.count = reader.uint32();\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): QueryPendingMessagesResponse {\n return {\n messages: globalThis.Array.isArray(object?.messages)\n ? object.messages.map((e: any) => CrossVMMessageView.fromJSON(e))\n : [],\n count: isSet(object.count) ? globalThis.Number(object.count) : 0,\n };\n },\n\n toJSON(message: QueryPendingMessagesResponse): unknown {\n const obj: any = {};\n if (message.messages?.length) {\n obj.messages = message.messages.map((e) => CrossVMMessageView.toJSON(e));\n }\n if (message.count !== 0) {\n obj.count = Math.round(message.count);\n }\n return obj;\n },\n\n create(base?: DeepPartial<QueryPendingMessagesResponse>): QueryPendingMessagesResponse {\n return QueryPendingMessagesResponse.fromPartial(base ?? {});\n },\n fromPartial(object: DeepPartial<QueryPendingMessagesResponse>): QueryPendingMessagesResponse {\n const message = createBaseQueryPendingMessagesResponse();\n message.messages = object.messages?.map((e) => CrossVMMessageView.fromPartial(e)) || [];\n message.count = object.count ?? 0;\n return message;\n },\n};\n\nfunction createBaseQueryMessageRequest(): QueryMessageRequest {\n return { id: \"\" };\n}\n\nexport const QueryMessageRequest: MessageFns<QueryMessageRequest> = {\n encode(message: QueryMessageRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.id !== \"\") {\n writer.uint32(10).string(message.id);\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): QueryMessageRequest {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseQueryMessageRequest();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n message.id = reader.string();\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): QueryMessageRequest {\n return { id: isSet(object.id) ? globalThis.String(object.id) : \"\" };\n },\n\n toJSON(message: QueryMessageRequest): unknown {\n const obj: any = {};\n if (message.id !== \"\") {\n obj.id = message.id;\n }\n return obj;\n },\n\n create(base?: DeepPartial<QueryMessageRequest>): QueryMessageRequest {\n return QueryMessageRequest.fromPartial(base ?? {});\n },\n fromPartial(object: DeepPartial<QueryMessageRequest>): QueryMessageRequest {\n const message = createBaseQueryMessageRequest();\n message.id = object.id ?? \"\";\n return message;\n },\n};\n\nfunction createBaseQueryMessageResponse(): QueryMessageResponse {\n return { message: undefined, found: false };\n}\n\nexport const QueryMessageResponse: MessageFns<QueryMessageResponse> = {\n encode(message: QueryMessageResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.message !== undefined) {\n CrossVMMessageView.encode(message.message, writer.uint32(10).fork()).join();\n }\n if (message.found !== false) {\n writer.uint32(16).bool(message.found);\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): QueryMessageResponse {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseQueryMessageResponse();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n message.message = CrossVMMessageView.decode(reader, reader.uint32());\n continue;\n }\n case 2: {\n if (tag !== 16) {\n break;\n }\n\n message.found = reader.bool();\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): QueryMessageResponse {\n return {\n message: isSet(object.message) ? CrossVMMessageView.fromJSON(object.message) : undefined,\n found: isSet(object.found) ? globalThis.Boolean(object.found) : false,\n };\n },\n\n toJSON(message: QueryMessageResponse): unknown {\n const obj: any = {};\n if (message.message !== undefined) {\n obj.message = CrossVMMessageView.toJSON(message.message);\n }\n if (message.found !== false) {\n obj.found = message.found;\n }\n return obj;\n },\n\n create(base?: DeepPartial<QueryMessageResponse>): QueryMessageResponse {\n return QueryMessageResponse.fromPartial(base ?? {});\n },\n fromPartial(object: DeepPartial<QueryMessageResponse>): QueryMessageResponse {\n const message = createBaseQueryMessageResponse();\n message.message = (object.message !== undefined && object.message !== null)\n ? CrossVMMessageView.fromPartial(object.message)\n : undefined;\n message.found = object.found ?? false;\n return message;\n },\n};\n\n/** Query defines the crossvm module's gRPC query service. */\nexport type QueryDefinition = typeof QueryDefinition;\nexport const QueryDefinition = {\n name: \"Query\",\n fullName: \"qorechain.crossvm.v1.Query\",\n methods: {\n /** Params returns the crossvm module parameters. */\n params: {\n name: \"Params\",\n requestType: QueryParamsRequest as typeof QueryParamsRequest,\n requestStream: false,\n responseType: QueryParamsResponse as typeof QueryParamsResponse,\n responseStream: false,\n options: {},\n },\n /** PendingMessages returns the current cross-VM message queue. */\n pendingMessages: {\n name: \"PendingMessages\",\n requestType: QueryPendingMessagesRequest as typeof QueryPendingMessagesRequest,\n requestStream: false,\n responseType: QueryPendingMessagesResponse as typeof QueryPendingMessagesResponse,\n responseStream: false,\n options: {},\n },\n /** Message returns a single cross-VM message by id. */\n message: {\n name: \"Message\",\n requestType: QueryMessageRequest as typeof QueryMessageRequest,\n requestStream: false,\n responseType: QueryMessageResponse as typeof QueryMessageResponse,\n responseStream: false,\n options: {},\n },\n },\n} as const;\n\ntype Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;\n\nexport type DeepPartial<T> = T extends Builtin ? T\n : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>>\n : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>\n : T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }\n : Partial<T>;\n\nfunction isSet(value: any): boolean {\n return value !== null && value !== undefined;\n}\n\nexport interface MessageFns<T> {\n encode(message: T, writer?: BinaryWriter): BinaryWriter;\n decode(input: BinaryReader | Uint8Array, length?: number): T;\n fromJSON(object: any): T;\n toJSON(message: T): unknown;\n create(base?: DeepPartial<T>): T;\n fromPartial(object: DeepPartial<T>): T;\n}\n","// Code generated by protoc-gen-ts_proto. DO NOT EDIT.\n// versions:\n// protoc-gen-ts_proto v2.11.8\n// protoc unknown\n// source: qorechain/lightnode/v1/query.proto\n\n/* eslint-disable */\nimport { BinaryReader, BinaryWriter } from \"@bufbuild/protobuf/wire\";\n\nexport const protobufPackage = \"qorechain.lightnode.v1\";\n\n/** LightNodeView is a flat representation of a registered light node. */\nexport interface LightNodeView {\n address: string;\n nodeType: string;\n version: string;\n capabilities: string[];\n status: string;\n registeredAt: string;\n lastHeartbeat: string;\n totalHeartbeats: string;\n expectedHeartbeats: string;\n delegatedStake: string;\n accumulatedRewards: string;\n initialHeartbeatInterval: string;\n}\n\nexport interface QueryLightNodeRequest {\n address: string;\n}\n\nexport interface QueryLightNodeResponse {\n node?: LightNodeView | undefined;\n found: boolean;\n}\n\nexport interface QueryLightNodesRequest {\n}\n\nexport interface QueryLightNodesResponse {\n nodes: LightNodeView[];\n}\n\nexport interface QueryParamsRequest {\n}\n\nexport interface QueryParamsResponse {\n registrationFee: string;\n heartbeatInterval: string;\n minDelegatedStake: string;\n rewardShare: string;\n minUptimeForRewards: string;\n maxLightNodes: string;\n heartbeatGracePeriod: string;\n}\n\nexport interface QueryRewardsRequest {\n address: string;\n}\n\nexport interface QueryRewardsResponse {\n accumulatedRewards: string;\n}\n\nexport interface QueryStatsRequest {\n}\n\nexport interface QueryStatsResponse {\n totalRegistered: string;\n totalActive: string;\n totalRewards: string;\n lastRewardHeight: string;\n}\n\nfunction createBaseLightNodeView(): LightNodeView {\n return {\n address: \"\",\n nodeType: \"\",\n version: \"\",\n capabilities: [],\n status: \"\",\n registeredAt: \"0\",\n lastHeartbeat: \"0\",\n totalHeartbeats: \"0\",\n expectedHeartbeats: \"0\",\n delegatedStake: \"\",\n accumulatedRewards: \"\",\n initialHeartbeatInterval: \"0\",\n };\n}\n\nexport const LightNodeView: MessageFns<LightNodeView> = {\n encode(message: LightNodeView, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.address !== \"\") {\n writer.uint32(10).string(message.address);\n }\n if (message.nodeType !== \"\") {\n writer.uint32(18).string(message.nodeType);\n }\n if (message.version !== \"\") {\n writer.uint32(26).string(message.version);\n }\n for (const v of message.capabilities) {\n writer.uint32(34).string(v!);\n }\n if (message.status !== \"\") {\n writer.uint32(42).string(message.status);\n }\n if (message.registeredAt !== \"0\") {\n writer.uint32(48).int64(message.registeredAt);\n }\n if (message.lastHeartbeat !== \"0\") {\n writer.uint32(56).int64(message.lastHeartbeat);\n }\n if (message.totalHeartbeats !== \"0\") {\n writer.uint32(64).uint64(message.totalHeartbeats);\n }\n if (message.expectedHeartbeats !== \"0\") {\n writer.uint32(72).uint64(message.expectedHeartbeats);\n }\n if (message.delegatedStake !== \"\") {\n writer.uint32(82).string(message.delegatedStake);\n }\n if (message.accumulatedRewards !== \"\") {\n writer.uint32(90).string(message.accumulatedRewards);\n }\n if (message.initialHeartbeatInterval !== \"0\") {\n writer.uint32(96).int64(message.initialHeartbeatInterval);\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): LightNodeView {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseLightNodeView();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n message.address = reader.string();\n continue;\n }\n case 2: {\n if (tag !== 18) {\n break;\n }\n\n message.nodeType = reader.string();\n continue;\n }\n case 3: {\n if (tag !== 26) {\n break;\n }\n\n message.version = reader.string();\n continue;\n }\n case 4: {\n if (tag !== 34) {\n break;\n }\n\n message.capabilities.push(reader.string());\n continue;\n }\n case 5: {\n if (tag !== 42) {\n break;\n }\n\n message.status = reader.string();\n continue;\n }\n case 6: {\n if (tag !== 48) {\n break;\n }\n\n message.registeredAt = reader.int64().toString();\n continue;\n }\n case 7: {\n if (tag !== 56) {\n break;\n }\n\n message.lastHeartbeat = reader.int64().toString();\n continue;\n }\n case 8: {\n if (tag !== 64) {\n break;\n }\n\n message.totalHeartbeats = reader.uint64().toString();\n continue;\n }\n case 9: {\n if (tag !== 72) {\n break;\n }\n\n message.expectedHeartbeats = reader.uint64().toString();\n continue;\n }\n case 10: {\n if (tag !== 82) {\n break;\n }\n\n message.delegatedStake = reader.string();\n continue;\n }\n case 11: {\n if (tag !== 90) {\n break;\n }\n\n message.accumulatedRewards = reader.string();\n continue;\n }\n case 12: {\n if (tag !== 96) {\n break;\n }\n\n message.initialHeartbeatInterval = reader.int64().toString();\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): LightNodeView {\n return {\n address: isSet(object.address) ? globalThis.String(object.address) : \"\",\n nodeType: isSet(object.nodeType)\n ? globalThis.String(object.nodeType)\n : isSet(object.node_type)\n ? globalThis.String(object.node_type)\n : \"\",\n version: isSet(object.version) ? globalThis.String(object.version) : \"\",\n capabilities: globalThis.Array.isArray(object?.capabilities)\n ? object.capabilities.map((e: any) => globalThis.String(e))\n : [],\n status: isSet(object.status) ? globalThis.String(object.status) : \"\",\n registeredAt: isSet(object.registeredAt)\n ? globalThis.String(object.registeredAt)\n : isSet(object.registered_at)\n ? globalThis.String(object.registered_at)\n : \"0\",\n lastHeartbeat: isSet(object.lastHeartbeat)\n ? globalThis.String(object.lastHeartbeat)\n : isSet(object.last_heartbeat)\n ? globalThis.String(object.last_heartbeat)\n : \"0\",\n totalHeartbeats: isSet(object.totalHeartbeats)\n ? globalThis.String(object.totalHeartbeats)\n : isSet(object.total_heartbeats)\n ? globalThis.String(object.total_heartbeats)\n : \"0\",\n expectedHeartbeats: isSet(object.expectedHeartbeats)\n ? globalThis.String(object.expectedHeartbeats)\n : isSet(object.expected_heartbeats)\n ? globalThis.String(object.expected_heartbeats)\n : \"0\",\n delegatedStake: isSet(object.delegatedStake)\n ? globalThis.String(object.delegatedStake)\n : isSet(object.delegated_stake)\n ? globalThis.String(object.delegated_stake)\n : \"\",\n accumulatedRewards: isSet(object.accumulatedRewards)\n ? globalThis.String(object.accumulatedRewards)\n : isSet(object.accumulated_rewards)\n ? globalThis.String(object.accumulated_rewards)\n : \"\",\n initialHeartbeatInterval: isSet(object.initialHeartbeatInterval)\n ? globalThis.String(object.initialHeartbeatInterval)\n : isSet(object.initial_heartbeat_interval)\n ? globalThis.String(object.initial_heartbeat_interval)\n : \"0\",\n };\n },\n\n toJSON(message: LightNodeView): unknown {\n const obj: any = {};\n if (message.address !== \"\") {\n obj.address = message.address;\n }\n if (message.nodeType !== \"\") {\n obj.nodeType = message.nodeType;\n }\n if (message.version !== \"\") {\n obj.version = message.version;\n }\n if (message.capabilities?.length) {\n obj.capabilities = message.capabilities;\n }\n if (message.status !== \"\") {\n obj.status = message.status;\n }\n if (message.registeredAt !== \"0\") {\n obj.registeredAt = message.registeredAt;\n }\n if (message.lastHeartbeat !== \"0\") {\n obj.lastHeartbeat = message.lastHeartbeat;\n }\n if (message.totalHeartbeats !== \"0\") {\n obj.totalHeartbeats = message.totalHeartbeats;\n }\n if (message.expectedHeartbeats !== \"0\") {\n obj.expectedHeartbeats = message.expectedHeartbeats;\n }\n if (message.delegatedStake !== \"\") {\n obj.delegatedStake = message.delegatedStake;\n }\n if (message.accumulatedRewards !== \"\") {\n obj.accumulatedRewards = message.accumulatedRewards;\n }\n if (message.initialHeartbeatInterval !== \"0\") {\n obj.initialHeartbeatInterval = message.initialHeartbeatInterval;\n }\n return obj;\n },\n\n create(base?: DeepPartial<LightNodeView>): LightNodeView {\n return LightNodeView.fromPartial(base ?? {});\n },\n fromPartial(object: DeepPartial<LightNodeView>): LightNodeView {\n const message = createBaseLightNodeView();\n message.address = object.address ?? \"\";\n message.nodeType = object.nodeType ?? \"\";\n message.version = object.version ?? \"\";\n message.capabilities = object.capabilities?.map((e) => e) || [];\n message.status = object.status ?? \"\";\n message.registeredAt = object.registeredAt ?? \"0\";\n message.lastHeartbeat = object.lastHeartbeat ?? \"0\";\n message.totalHeartbeats = object.totalHeartbeats ?? \"0\";\n message.expectedHeartbeats = object.expectedHeartbeats ?? \"0\";\n message.delegatedStake = object.delegatedStake ?? \"\";\n message.accumulatedRewards = object.accumulatedRewards ?? \"\";\n message.initialHeartbeatInterval = object.initialHeartbeatInterval ?? \"0\";\n return message;\n },\n};\n\nfunction createBaseQueryLightNodeRequest(): QueryLightNodeRequest {\n return { address: \"\" };\n}\n\nexport const QueryLightNodeRequest: MessageFns<QueryLightNodeRequest> = {\n encode(message: QueryLightNodeRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.address !== \"\") {\n writer.uint32(10).string(message.address);\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): QueryLightNodeRequest {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseQueryLightNodeRequest();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n message.address = reader.string();\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): QueryLightNodeRequest {\n return { address: isSet(object.address) ? globalThis.String(object.address) : \"\" };\n },\n\n toJSON(message: QueryLightNodeRequest): unknown {\n const obj: any = {};\n if (message.address !== \"\") {\n obj.address = message.address;\n }\n return obj;\n },\n\n create(base?: DeepPartial<QueryLightNodeRequest>): QueryLightNodeRequest {\n return QueryLightNodeRequest.fromPartial(base ?? {});\n },\n fromPartial(object: DeepPartial<QueryLightNodeRequest>): QueryLightNodeRequest {\n const message = createBaseQueryLightNodeRequest();\n message.address = object.address ?? \"\";\n return message;\n },\n};\n\nfunction createBaseQueryLightNodeResponse(): QueryLightNodeResponse {\n return { node: undefined, found: false };\n}\n\nexport const QueryLightNodeResponse: MessageFns<QueryLightNodeResponse> = {\n encode(message: QueryLightNodeResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.node !== undefined) {\n LightNodeView.encode(message.node, writer.uint32(10).fork()).join();\n }\n if (message.found !== false) {\n writer.uint32(16).bool(message.found);\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): QueryLightNodeResponse {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseQueryLightNodeResponse();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n message.node = LightNodeView.decode(reader, reader.uint32());\n continue;\n }\n case 2: {\n if (tag !== 16) {\n break;\n }\n\n message.found = reader.bool();\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): QueryLightNodeResponse {\n return {\n node: isSet(object.node) ? LightNodeView.fromJSON(object.node) : undefined,\n found: isSet(object.found) ? globalThis.Boolean(object.found) : false,\n };\n },\n\n toJSON(message: QueryLightNodeResponse): unknown {\n const obj: any = {};\n if (message.node !== undefined) {\n obj.node = LightNodeView.toJSON(message.node);\n }\n if (message.found !== false) {\n obj.found = message.found;\n }\n return obj;\n },\n\n create(base?: DeepPartial<QueryLightNodeResponse>): QueryLightNodeResponse {\n return QueryLightNodeResponse.fromPartial(base ?? {});\n },\n fromPartial(object: DeepPartial<QueryLightNodeResponse>): QueryLightNodeResponse {\n const message = createBaseQueryLightNodeResponse();\n message.node = (object.node !== undefined && object.node !== null)\n ? LightNodeView.fromPartial(object.node)\n : undefined;\n message.found = object.found ?? false;\n return message;\n },\n};\n\nfunction createBaseQueryLightNodesRequest(): QueryLightNodesRequest {\n return {};\n}\n\nexport const QueryLightNodesRequest: MessageFns<QueryLightNodesRequest> = {\n encode(_: QueryLightNodesRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): QueryLightNodesRequest {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseQueryLightNodesRequest();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(_: any): QueryLightNodesRequest {\n return {};\n },\n\n toJSON(_: QueryLightNodesRequest): unknown {\n const obj: any = {};\n return obj;\n },\n\n create(base?: DeepPartial<QueryLightNodesRequest>): QueryLightNodesRequest {\n return QueryLightNodesRequest.fromPartial(base ?? {});\n },\n fromPartial(_: DeepPartial<QueryLightNodesRequest>): QueryLightNodesRequest {\n const message = createBaseQueryLightNodesRequest();\n return message;\n },\n};\n\nfunction createBaseQueryLightNodesResponse(): QueryLightNodesResponse {\n return { nodes: [] };\n}\n\nexport const QueryLightNodesResponse: MessageFns<QueryLightNodesResponse> = {\n encode(message: QueryLightNodesResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n for (const v of message.nodes) {\n LightNodeView.encode(v!, writer.uint32(10).fork()).join();\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): QueryLightNodesResponse {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseQueryLightNodesResponse();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n message.nodes.push(LightNodeView.decode(reader, reader.uint32()));\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): QueryLightNodesResponse {\n return {\n nodes: globalThis.Array.isArray(object?.nodes) ? object.nodes.map((e: any) => LightNodeView.fromJSON(e)) : [],\n };\n },\n\n toJSON(message: QueryLightNodesResponse): unknown {\n const obj: any = {};\n if (message.nodes?.length) {\n obj.nodes = message.nodes.map((e) => LightNodeView.toJSON(e));\n }\n return obj;\n },\n\n create(base?: DeepPartial<QueryLightNodesResponse>): QueryLightNodesResponse {\n return QueryLightNodesResponse.fromPartial(base ?? {});\n },\n fromPartial(object: DeepPartial<QueryLightNodesResponse>): QueryLightNodesResponse {\n const message = createBaseQueryLightNodesResponse();\n message.nodes = object.nodes?.map((e) => LightNodeView.fromPartial(e)) || [];\n return message;\n },\n};\n\nfunction createBaseQueryParamsRequest(): QueryParamsRequest {\n return {};\n}\n\nexport const QueryParamsRequest: MessageFns<QueryParamsRequest> = {\n encode(_: QueryParamsRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): QueryParamsRequest {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseQueryParamsRequest();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(_: any): QueryParamsRequest {\n return {};\n },\n\n toJSON(_: QueryParamsRequest): unknown {\n const obj: any = {};\n return obj;\n },\n\n create(base?: DeepPartial<QueryParamsRequest>): QueryParamsRequest {\n return QueryParamsRequest.fromPartial(base ?? {});\n },\n fromPartial(_: DeepPartial<QueryParamsRequest>): QueryParamsRequest {\n const message = createBaseQueryParamsRequest();\n return message;\n },\n};\n\nfunction createBaseQueryParamsResponse(): QueryParamsResponse {\n return {\n registrationFee: \"\",\n heartbeatInterval: \"0\",\n minDelegatedStake: \"\",\n rewardShare: \"\",\n minUptimeForRewards: \"\",\n maxLightNodes: \"0\",\n heartbeatGracePeriod: \"0\",\n };\n}\n\nexport const QueryParamsResponse: MessageFns<QueryParamsResponse> = {\n encode(message: QueryParamsResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.registrationFee !== \"\") {\n writer.uint32(10).string(message.registrationFee);\n }\n if (message.heartbeatInterval !== \"0\") {\n writer.uint32(16).int64(message.heartbeatInterval);\n }\n if (message.minDelegatedStake !== \"\") {\n writer.uint32(26).string(message.minDelegatedStake);\n }\n if (message.rewardShare !== \"\") {\n writer.uint32(34).string(message.rewardShare);\n }\n if (message.minUptimeForRewards !== \"\") {\n writer.uint32(42).string(message.minUptimeForRewards);\n }\n if (message.maxLightNodes !== \"0\") {\n writer.uint32(48).uint64(message.maxLightNodes);\n }\n if (message.heartbeatGracePeriod !== \"0\") {\n writer.uint32(56).int64(message.heartbeatGracePeriod);\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): QueryParamsResponse {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseQueryParamsResponse();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n message.registrationFee = reader.string();\n continue;\n }\n case 2: {\n if (tag !== 16) {\n break;\n }\n\n message.heartbeatInterval = reader.int64().toString();\n continue;\n }\n case 3: {\n if (tag !== 26) {\n break;\n }\n\n message.minDelegatedStake = reader.string();\n continue;\n }\n case 4: {\n if (tag !== 34) {\n break;\n }\n\n message.rewardShare = reader.string();\n continue;\n }\n case 5: {\n if (tag !== 42) {\n break;\n }\n\n message.minUptimeForRewards = reader.string();\n continue;\n }\n case 6: {\n if (tag !== 48) {\n break;\n }\n\n message.maxLightNodes = reader.uint64().toString();\n continue;\n }\n case 7: {\n if (tag !== 56) {\n break;\n }\n\n message.heartbeatGracePeriod = reader.int64().toString();\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): QueryParamsResponse {\n return {\n registrationFee: isSet(object.registrationFee)\n ? globalThis.String(object.registrationFee)\n : isSet(object.registration_fee)\n ? globalThis.String(object.registration_fee)\n : \"\",\n heartbeatInterval: isSet(object.heartbeatInterval)\n ? globalThis.String(object.heartbeatInterval)\n : isSet(object.heartbeat_interval)\n ? globalThis.String(object.heartbeat_interval)\n : \"0\",\n minDelegatedStake: isSet(object.minDelegatedStake)\n ? globalThis.String(object.minDelegatedStake)\n : isSet(object.min_delegated_stake)\n ? globalThis.String(object.min_delegated_stake)\n : \"\",\n rewardShare: isSet(object.rewardShare)\n ? globalThis.String(object.rewardShare)\n : isSet(object.reward_share)\n ? globalThis.String(object.reward_share)\n : \"\",\n minUptimeForRewards: isSet(object.minUptimeForRewards)\n ? globalThis.String(object.minUptimeForRewards)\n : isSet(object.min_uptime_for_rewards)\n ? globalThis.String(object.min_uptime_for_rewards)\n : \"\",\n maxLightNodes: isSet(object.maxLightNodes)\n ? globalThis.String(object.maxLightNodes)\n : isSet(object.max_light_nodes)\n ? globalThis.String(object.max_light_nodes)\n : \"0\",\n heartbeatGracePeriod: isSet(object.heartbeatGracePeriod)\n ? globalThis.String(object.heartbeatGracePeriod)\n : isSet(object.heartbeat_grace_period)\n ? globalThis.String(object.heartbeat_grace_period)\n : \"0\",\n };\n },\n\n toJSON(message: QueryParamsResponse): unknown {\n const obj: any = {};\n if (message.registrationFee !== \"\") {\n obj.registrationFee = message.registrationFee;\n }\n if (message.heartbeatInterval !== \"0\") {\n obj.heartbeatInterval = message.heartbeatInterval;\n }\n if (message.minDelegatedStake !== \"\") {\n obj.minDelegatedStake = message.minDelegatedStake;\n }\n if (message.rewardShare !== \"\") {\n obj.rewardShare = message.rewardShare;\n }\n if (message.minUptimeForRewards !== \"\") {\n obj.minUptimeForRewards = message.minUptimeForRewards;\n }\n if (message.maxLightNodes !== \"0\") {\n obj.maxLightNodes = message.maxLightNodes;\n }\n if (message.heartbeatGracePeriod !== \"0\") {\n obj.heartbeatGracePeriod = message.heartbeatGracePeriod;\n }\n return obj;\n },\n\n create(base?: DeepPartial<QueryParamsResponse>): QueryParamsResponse {\n return QueryParamsResponse.fromPartial(base ?? {});\n },\n fromPartial(object: DeepPartial<QueryParamsResponse>): QueryParamsResponse {\n const message = createBaseQueryParamsResponse();\n message.registrationFee = object.registrationFee ?? \"\";\n message.heartbeatInterval = object.heartbeatInterval ?? \"0\";\n message.minDelegatedStake = object.minDelegatedStake ?? \"\";\n message.rewardShare = object.rewardShare ?? \"\";\n message.minUptimeForRewards = object.minUptimeForRewards ?? \"\";\n message.maxLightNodes = object.maxLightNodes ?? \"0\";\n message.heartbeatGracePeriod = object.heartbeatGracePeriod ?? \"0\";\n return message;\n },\n};\n\nfunction createBaseQueryRewardsRequest(): QueryRewardsRequest {\n return { address: \"\" };\n}\n\nexport const QueryRewardsRequest: MessageFns<QueryRewardsRequest> = {\n encode(message: QueryRewardsRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.address !== \"\") {\n writer.uint32(10).string(message.address);\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): QueryRewardsRequest {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseQueryRewardsRequest();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n message.address = reader.string();\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): QueryRewardsRequest {\n return { address: isSet(object.address) ? globalThis.String(object.address) : \"\" };\n },\n\n toJSON(message: QueryRewardsRequest): unknown {\n const obj: any = {};\n if (message.address !== \"\") {\n obj.address = message.address;\n }\n return obj;\n },\n\n create(base?: DeepPartial<QueryRewardsRequest>): QueryRewardsRequest {\n return QueryRewardsRequest.fromPartial(base ?? {});\n },\n fromPartial(object: DeepPartial<QueryRewardsRequest>): QueryRewardsRequest {\n const message = createBaseQueryRewardsRequest();\n message.address = object.address ?? \"\";\n return message;\n },\n};\n\nfunction createBaseQueryRewardsResponse(): QueryRewardsResponse {\n return { accumulatedRewards: \"\" };\n}\n\nexport const QueryRewardsResponse: MessageFns<QueryRewardsResponse> = {\n encode(message: QueryRewardsResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.accumulatedRewards !== \"\") {\n writer.uint32(10).string(message.accumulatedRewards);\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): QueryRewardsResponse {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseQueryRewardsResponse();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n message.accumulatedRewards = reader.string();\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): QueryRewardsResponse {\n return {\n accumulatedRewards: isSet(object.accumulatedRewards)\n ? globalThis.String(object.accumulatedRewards)\n : isSet(object.accumulated_rewards)\n ? globalThis.String(object.accumulated_rewards)\n : \"\",\n };\n },\n\n toJSON(message: QueryRewardsResponse): unknown {\n const obj: any = {};\n if (message.accumulatedRewards !== \"\") {\n obj.accumulatedRewards = message.accumulatedRewards;\n }\n return obj;\n },\n\n create(base?: DeepPartial<QueryRewardsResponse>): QueryRewardsResponse {\n return QueryRewardsResponse.fromPartial(base ?? {});\n },\n fromPartial(object: DeepPartial<QueryRewardsResponse>): QueryRewardsResponse {\n const message = createBaseQueryRewardsResponse();\n message.accumulatedRewards = object.accumulatedRewards ?? \"\";\n return message;\n },\n};\n\nfunction createBaseQueryStatsRequest(): QueryStatsRequest {\n return {};\n}\n\nexport const QueryStatsRequest: MessageFns<QueryStatsRequest> = {\n encode(_: QueryStatsRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): QueryStatsRequest {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseQueryStatsRequest();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(_: any): QueryStatsRequest {\n return {};\n },\n\n toJSON(_: QueryStatsRequest): unknown {\n const obj: any = {};\n return obj;\n },\n\n create(base?: DeepPartial<QueryStatsRequest>): QueryStatsRequest {\n return QueryStatsRequest.fromPartial(base ?? {});\n },\n fromPartial(_: DeepPartial<QueryStatsRequest>): QueryStatsRequest {\n const message = createBaseQueryStatsRequest();\n return message;\n },\n};\n\nfunction createBaseQueryStatsResponse(): QueryStatsResponse {\n return { totalRegistered: \"0\", totalActive: \"0\", totalRewards: \"\", lastRewardHeight: \"0\" };\n}\n\nexport const QueryStatsResponse: MessageFns<QueryStatsResponse> = {\n encode(message: QueryStatsResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.totalRegistered !== \"0\") {\n writer.uint32(8).uint64(message.totalRegistered);\n }\n if (message.totalActive !== \"0\") {\n writer.uint32(16).uint64(message.totalActive);\n }\n if (message.totalRewards !== \"\") {\n writer.uint32(26).string(message.totalRewards);\n }\n if (message.lastRewardHeight !== \"0\") {\n writer.uint32(32).int64(message.lastRewardHeight);\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): QueryStatsResponse {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseQueryStatsResponse();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 8) {\n break;\n }\n\n message.totalRegistered = reader.uint64().toString();\n continue;\n }\n case 2: {\n if (tag !== 16) {\n break;\n }\n\n message.totalActive = reader.uint64().toString();\n continue;\n }\n case 3: {\n if (tag !== 26) {\n break;\n }\n\n message.totalRewards = reader.string();\n continue;\n }\n case 4: {\n if (tag !== 32) {\n break;\n }\n\n message.lastRewardHeight = reader.int64().toString();\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): QueryStatsResponse {\n return {\n totalRegistered: isSet(object.totalRegistered)\n ? globalThis.String(object.totalRegistered)\n : isSet(object.total_registered)\n ? globalThis.String(object.total_registered)\n : \"0\",\n totalActive: isSet(object.totalActive)\n ? globalThis.String(object.totalActive)\n : isSet(object.total_active)\n ? globalThis.String(object.total_active)\n : \"0\",\n totalRewards: isSet(object.totalRewards)\n ? globalThis.String(object.totalRewards)\n : isSet(object.total_rewards)\n ? globalThis.String(object.total_rewards)\n : \"\",\n lastRewardHeight: isSet(object.lastRewardHeight)\n ? globalThis.String(object.lastRewardHeight)\n : isSet(object.last_reward_height)\n ? globalThis.String(object.last_reward_height)\n : \"0\",\n };\n },\n\n toJSON(message: QueryStatsResponse): unknown {\n const obj: any = {};\n if (message.totalRegistered !== \"0\") {\n obj.totalRegistered = message.totalRegistered;\n }\n if (message.totalActive !== \"0\") {\n obj.totalActive = message.totalActive;\n }\n if (message.totalRewards !== \"\") {\n obj.totalRewards = message.totalRewards;\n }\n if (message.lastRewardHeight !== \"0\") {\n obj.lastRewardHeight = message.lastRewardHeight;\n }\n return obj;\n },\n\n create(base?: DeepPartial<QueryStatsResponse>): QueryStatsResponse {\n return QueryStatsResponse.fromPartial(base ?? {});\n },\n fromPartial(object: DeepPartial<QueryStatsResponse>): QueryStatsResponse {\n const message = createBaseQueryStatsResponse();\n message.totalRegistered = object.totalRegistered ?? \"0\";\n message.totalActive = object.totalActive ?? \"0\";\n message.totalRewards = object.totalRewards ?? \"\";\n message.lastRewardHeight = object.lastRewardHeight ?? \"0\";\n return message;\n },\n};\n\n/** Query defines the lightnode module's gRPC query service. */\nexport type QueryDefinition = typeof QueryDefinition;\nexport const QueryDefinition = {\n name: \"Query\",\n fullName: \"qorechain.lightnode.v1.Query\",\n methods: {\n /** LightNode returns a single light node by operator address. */\n lightNode: {\n name: \"LightNode\",\n requestType: QueryLightNodeRequest as typeof QueryLightNodeRequest,\n requestStream: false,\n responseType: QueryLightNodeResponse as typeof QueryLightNodeResponse,\n responseStream: false,\n options: {},\n },\n /** LightNodes lists all registered light nodes. */\n lightNodes: {\n name: \"LightNodes\",\n requestType: QueryLightNodesRequest as typeof QueryLightNodesRequest,\n requestStream: false,\n responseType: QueryLightNodesResponse as typeof QueryLightNodesResponse,\n responseStream: false,\n options: {},\n },\n /** Params returns the lightnode module parameters. */\n params: {\n name: \"Params\",\n requestType: QueryParamsRequest as typeof QueryParamsRequest,\n requestStream: false,\n responseType: QueryParamsResponse as typeof QueryParamsResponse,\n responseStream: false,\n options: {},\n },\n /** Rewards returns an operator's accumulated (claimable) rewards. */\n rewards: {\n name: \"Rewards\",\n requestType: QueryRewardsRequest as typeof QueryRewardsRequest,\n requestStream: false,\n responseType: QueryRewardsResponse as typeof QueryRewardsResponse,\n responseStream: false,\n options: {},\n },\n /** Stats returns module-level light node statistics. */\n stats: {\n name: \"Stats\",\n requestType: QueryStatsRequest as typeof QueryStatsRequest,\n requestStream: false,\n responseType: QueryStatsResponse as typeof QueryStatsResponse,\n responseStream: false,\n options: {},\n },\n },\n} as const;\n\ntype Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;\n\nexport type DeepPartial<T> = T extends Builtin ? T\n : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>>\n : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>\n : T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }\n : Partial<T>;\n\nfunction isSet(value: any): boolean {\n return value !== null && value !== undefined;\n}\n\nexport interface MessageFns<T> {\n encode(message: T, writer?: BinaryWriter): BinaryWriter;\n decode(input: BinaryReader | Uint8Array, length?: number): T;\n fromJSON(object: any): T;\n toJSON(message: T): unknown;\n create(base?: DeepPartial<T>): T;\n fromPartial(object: DeepPartial<T>): T;\n}\n","// Code generated by protoc-gen-ts_proto. DO NOT EDIT.\n// versions:\n// protoc-gen-ts_proto v2.11.8\n// protoc unknown\n// source: qorechain/pqc/v1/query.proto\n\n/* eslint-disable */\nimport { BinaryReader, BinaryWriter } from \"@bufbuild/protobuf/wire\";\n\nexport const protobufPackage = \"qorechain.pqc.v1\";\n\nexport interface QueryAccountRequest {\n /** address is the bech32 account address whose PQC key is requested. */\n address: string;\n}\n\nexport interface QueryAccountResponse {\n /** found reports whether the account has a registered PQC key. */\n found: boolean;\n account?: PQCAccountView | undefined;\n}\n\n/** PQCAccountView is the query-facing view of a registered PQC account. */\nexport interface PQCAccountView {\n address: string;\n publicKey: Uint8Array;\n algorithmId: number;\n algorithmName: string;\n ecdsaPubkey: Uint8Array;\n keyType: string;\n createdAtHeight: string;\n migrationPublicKey: Uint8Array;\n migrationAlgorithmId: number;\n}\n\nfunction createBaseQueryAccountRequest(): QueryAccountRequest {\n return { address: \"\" };\n}\n\nexport const QueryAccountRequest: MessageFns<QueryAccountRequest> = {\n encode(message: QueryAccountRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.address !== \"\") {\n writer.uint32(10).string(message.address);\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): QueryAccountRequest {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseQueryAccountRequest();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n message.address = reader.string();\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): QueryAccountRequest {\n return { address: isSet(object.address) ? globalThis.String(object.address) : \"\" };\n },\n\n toJSON(message: QueryAccountRequest): unknown {\n const obj: any = {};\n if (message.address !== \"\") {\n obj.address = message.address;\n }\n return obj;\n },\n\n create(base?: DeepPartial<QueryAccountRequest>): QueryAccountRequest {\n return QueryAccountRequest.fromPartial(base ?? {});\n },\n fromPartial(object: DeepPartial<QueryAccountRequest>): QueryAccountRequest {\n const message = createBaseQueryAccountRequest();\n message.address = object.address ?? \"\";\n return message;\n },\n};\n\nfunction createBaseQueryAccountResponse(): QueryAccountResponse {\n return { found: false, account: undefined };\n}\n\nexport const QueryAccountResponse: MessageFns<QueryAccountResponse> = {\n encode(message: QueryAccountResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.found !== false) {\n writer.uint32(8).bool(message.found);\n }\n if (message.account !== undefined) {\n PQCAccountView.encode(message.account, writer.uint32(18).fork()).join();\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): QueryAccountResponse {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseQueryAccountResponse();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 8) {\n break;\n }\n\n message.found = reader.bool();\n continue;\n }\n case 2: {\n if (tag !== 18) {\n break;\n }\n\n message.account = PQCAccountView.decode(reader, reader.uint32());\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): QueryAccountResponse {\n return {\n found: isSet(object.found) ? globalThis.Boolean(object.found) : false,\n account: isSet(object.account) ? PQCAccountView.fromJSON(object.account) : undefined,\n };\n },\n\n toJSON(message: QueryAccountResponse): unknown {\n const obj: any = {};\n if (message.found !== false) {\n obj.found = message.found;\n }\n if (message.account !== undefined) {\n obj.account = PQCAccountView.toJSON(message.account);\n }\n return obj;\n },\n\n create(base?: DeepPartial<QueryAccountResponse>): QueryAccountResponse {\n return QueryAccountResponse.fromPartial(base ?? {});\n },\n fromPartial(object: DeepPartial<QueryAccountResponse>): QueryAccountResponse {\n const message = createBaseQueryAccountResponse();\n message.found = object.found ?? false;\n message.account = (object.account !== undefined && object.account !== null)\n ? PQCAccountView.fromPartial(object.account)\n : undefined;\n return message;\n },\n};\n\nfunction createBasePQCAccountView(): PQCAccountView {\n return {\n address: \"\",\n publicKey: new Uint8Array(0),\n algorithmId: 0,\n algorithmName: \"\",\n ecdsaPubkey: new Uint8Array(0),\n keyType: \"\",\n createdAtHeight: \"0\",\n migrationPublicKey: new Uint8Array(0),\n migrationAlgorithmId: 0,\n };\n}\n\nexport const PQCAccountView: MessageFns<PQCAccountView> = {\n encode(message: PQCAccountView, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.address !== \"\") {\n writer.uint32(10).string(message.address);\n }\n if (message.publicKey.length !== 0) {\n writer.uint32(18).bytes(message.publicKey);\n }\n if (message.algorithmId !== 0) {\n writer.uint32(24).uint32(message.algorithmId);\n }\n if (message.algorithmName !== \"\") {\n writer.uint32(34).string(message.algorithmName);\n }\n if (message.ecdsaPubkey.length !== 0) {\n writer.uint32(42).bytes(message.ecdsaPubkey);\n }\n if (message.keyType !== \"\") {\n writer.uint32(50).string(message.keyType);\n }\n if (message.createdAtHeight !== \"0\") {\n writer.uint32(56).int64(message.createdAtHeight);\n }\n if (message.migrationPublicKey.length !== 0) {\n writer.uint32(66).bytes(message.migrationPublicKey);\n }\n if (message.migrationAlgorithmId !== 0) {\n writer.uint32(72).uint32(message.migrationAlgorithmId);\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): PQCAccountView {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBasePQCAccountView();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n message.address = reader.string();\n continue;\n }\n case 2: {\n if (tag !== 18) {\n break;\n }\n\n message.publicKey = reader.bytes();\n continue;\n }\n case 3: {\n if (tag !== 24) {\n break;\n }\n\n message.algorithmId = reader.uint32();\n continue;\n }\n case 4: {\n if (tag !== 34) {\n break;\n }\n\n message.algorithmName = reader.string();\n continue;\n }\n case 5: {\n if (tag !== 42) {\n break;\n }\n\n message.ecdsaPubkey = reader.bytes();\n continue;\n }\n case 6: {\n if (tag !== 50) {\n break;\n }\n\n message.keyType = reader.string();\n continue;\n }\n case 7: {\n if (tag !== 56) {\n break;\n }\n\n message.createdAtHeight = reader.int64().toString();\n continue;\n }\n case 8: {\n if (tag !== 66) {\n break;\n }\n\n message.migrationPublicKey = reader.bytes();\n continue;\n }\n case 9: {\n if (tag !== 72) {\n break;\n }\n\n message.migrationAlgorithmId = reader.uint32();\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): PQCAccountView {\n return {\n address: isSet(object.address) ? globalThis.String(object.address) : \"\",\n publicKey: isSet(object.publicKey)\n ? bytesFromBase64(object.publicKey)\n : isSet(object.public_key)\n ? bytesFromBase64(object.public_key)\n : new Uint8Array(0),\n algorithmId: isSet(object.algorithmId)\n ? globalThis.Number(object.algorithmId)\n : isSet(object.algorithm_id)\n ? globalThis.Number(object.algorithm_id)\n : 0,\n algorithmName: isSet(object.algorithmName)\n ? globalThis.String(object.algorithmName)\n : isSet(object.algorithm_name)\n ? globalThis.String(object.algorithm_name)\n : \"\",\n ecdsaPubkey: isSet(object.ecdsaPubkey)\n ? bytesFromBase64(object.ecdsaPubkey)\n : isSet(object.ecdsa_pubkey)\n ? bytesFromBase64(object.ecdsa_pubkey)\n : new Uint8Array(0),\n keyType: isSet(object.keyType)\n ? globalThis.String(object.keyType)\n : isSet(object.key_type)\n ? globalThis.String(object.key_type)\n : \"\",\n createdAtHeight: isSet(object.createdAtHeight)\n ? globalThis.String(object.createdAtHeight)\n : isSet(object.created_at_height)\n ? globalThis.String(object.created_at_height)\n : \"0\",\n migrationPublicKey: isSet(object.migrationPublicKey)\n ? bytesFromBase64(object.migrationPublicKey)\n : isSet(object.migration_public_key)\n ? bytesFromBase64(object.migration_public_key)\n : new Uint8Array(0),\n migrationAlgorithmId: isSet(object.migrationAlgorithmId)\n ? globalThis.Number(object.migrationAlgorithmId)\n : isSet(object.migration_algorithm_id)\n ? globalThis.Number(object.migration_algorithm_id)\n : 0,\n };\n },\n\n toJSON(message: PQCAccountView): unknown {\n const obj: any = {};\n if (message.address !== \"\") {\n obj.address = message.address;\n }\n if (message.publicKey.length !== 0) {\n obj.publicKey = base64FromBytes(message.publicKey);\n }\n if (message.algorithmId !== 0) {\n obj.algorithmId = Math.round(message.algorithmId);\n }\n if (message.algorithmName !== \"\") {\n obj.algorithmName = message.algorithmName;\n }\n if (message.ecdsaPubkey.length !== 0) {\n obj.ecdsaPubkey = base64FromBytes(message.ecdsaPubkey);\n }\n if (message.keyType !== \"\") {\n obj.keyType = message.keyType;\n }\n if (message.createdAtHeight !== \"0\") {\n obj.createdAtHeight = message.createdAtHeight;\n }\n if (message.migrationPublicKey.length !== 0) {\n obj.migrationPublicKey = base64FromBytes(message.migrationPublicKey);\n }\n if (message.migrationAlgorithmId !== 0) {\n obj.migrationAlgorithmId = Math.round(message.migrationAlgorithmId);\n }\n return obj;\n },\n\n create(base?: DeepPartial<PQCAccountView>): PQCAccountView {\n return PQCAccountView.fromPartial(base ?? {});\n },\n fromPartial(object: DeepPartial<PQCAccountView>): PQCAccountView {\n const message = createBasePQCAccountView();\n message.address = object.address ?? \"\";\n message.publicKey = object.publicKey ?? new Uint8Array(0);\n message.algorithmId = object.algorithmId ?? 0;\n message.algorithmName = object.algorithmName ?? \"\";\n message.ecdsaPubkey = object.ecdsaPubkey ?? new Uint8Array(0);\n message.keyType = object.keyType ?? \"\";\n message.createdAtHeight = object.createdAtHeight ?? \"0\";\n message.migrationPublicKey = object.migrationPublicKey ?? new Uint8Array(0);\n message.migrationAlgorithmId = object.migrationAlgorithmId ?? 0;\n return message;\n },\n};\n\n/** Query defines the gRPC query service for the PQC module. */\nexport type QueryDefinition = typeof QueryDefinition;\nexport const QueryDefinition = {\n name: \"Query\",\n fullName: \"qorechain.pqc.v1.Query\",\n methods: {\n /** Account returns the registered PQC key information for an address. */\n account: {\n name: \"Account\",\n requestType: QueryAccountRequest as typeof QueryAccountRequest,\n requestStream: false,\n responseType: QueryAccountResponse as typeof QueryAccountResponse,\n responseStream: false,\n options: {},\n },\n },\n} as const;\n\nfunction bytesFromBase64(b64: string): Uint8Array {\n if ((globalThis as any).Buffer) {\n return Uint8Array.from((globalThis as any).Buffer.from(b64, \"base64\"));\n } else {\n const bin = globalThis.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 }\n}\n\nfunction base64FromBytes(arr: Uint8Array): string {\n if ((globalThis as any).Buffer) {\n return (globalThis as any).Buffer.from(arr).toString(\"base64\");\n } else {\n const bin: string[] = [];\n arr.forEach((byte) => {\n bin.push(globalThis.String.fromCharCode(byte));\n });\n return globalThis.btoa(bin.join(\"\"));\n }\n}\n\ntype Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;\n\nexport type DeepPartial<T> = T extends Builtin ? T\n : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>>\n : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>\n : T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }\n : Partial<T>;\n\nfunction isSet(value: any): boolean {\n return value !== null && value !== undefined;\n}\n\nexport interface MessageFns<T> {\n encode(message: T, writer?: BinaryWriter): BinaryWriter;\n decode(input: BinaryReader | Uint8Array, length?: number): T;\n fromJSON(object: any): T;\n toJSON(message: T): unknown;\n create(base?: DeepPartial<T>): T;\n fromPartial(object: DeepPartial<T>): T;\n}\n","// Code generated by protoc-gen-ts_proto. DO NOT EDIT.\n// versions:\n// protoc-gen-ts_proto v2.11.8\n// protoc unknown\n// source: qorechain/qca/v1/query.proto\n\n/* eslint-disable */\nimport { BinaryReader, BinaryWriter } from \"@bufbuild/protobuf/wire\";\n\nexport const protobufPackage = \"qorechain.qca.v1\";\n\nexport interface QueryConfigRequest {\n}\n\nexport interface QueryConfigResponse {\n useReputationWeighting: boolean;\n minReputationScore: number;\n /** PoolConfig */\n poolClassificationInterval: string;\n poolWeightRpos: string;\n poolWeightDpos: string;\n poolMinDelegationDpos: string;\n poolRepPercentileRpos: string;\n /** BondingCurveConfig */\n bondingAlpha: string;\n bondingBeta: string;\n bondingPhaseMultiplier: string;\n /** SlashingConfig */\n slashingBaseRate: string;\n slashingEscalationFactor: string;\n slashingMaxPenalty: string;\n slashingDecayHalflife: string;\n /** QDRWConfig */\n qdrwEnabled: boolean;\n qdrwXqoreMultiplier: string;\n qdrwRepMinMultiplier: string;\n qdrwRepMaxMultiplier: string;\n}\n\nfunction createBaseQueryConfigRequest(): QueryConfigRequest {\n return {};\n}\n\nexport const QueryConfigRequest: MessageFns<QueryConfigRequest> = {\n encode(_: QueryConfigRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): QueryConfigRequest {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseQueryConfigRequest();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(_: any): QueryConfigRequest {\n return {};\n },\n\n toJSON(_: QueryConfigRequest): unknown {\n const obj: any = {};\n return obj;\n },\n\n create(base?: DeepPartial<QueryConfigRequest>): QueryConfigRequest {\n return QueryConfigRequest.fromPartial(base ?? {});\n },\n fromPartial(_: DeepPartial<QueryConfigRequest>): QueryConfigRequest {\n const message = createBaseQueryConfigRequest();\n return message;\n },\n};\n\nfunction createBaseQueryConfigResponse(): QueryConfigResponse {\n return {\n useReputationWeighting: false,\n minReputationScore: 0,\n poolClassificationInterval: \"0\",\n poolWeightRpos: \"\",\n poolWeightDpos: \"\",\n poolMinDelegationDpos: \"0\",\n poolRepPercentileRpos: \"0\",\n bondingAlpha: \"\",\n bondingBeta: \"\",\n bondingPhaseMultiplier: \"\",\n slashingBaseRate: \"\",\n slashingEscalationFactor: \"\",\n slashingMaxPenalty: \"\",\n slashingDecayHalflife: \"0\",\n qdrwEnabled: false,\n qdrwXqoreMultiplier: \"\",\n qdrwRepMinMultiplier: \"\",\n qdrwRepMaxMultiplier: \"\",\n };\n}\n\nexport const QueryConfigResponse: MessageFns<QueryConfigResponse> = {\n encode(message: QueryConfigResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.useReputationWeighting !== false) {\n writer.uint32(8).bool(message.useReputationWeighting);\n }\n if (message.minReputationScore !== 0) {\n writer.uint32(17).double(message.minReputationScore);\n }\n if (message.poolClassificationInterval !== \"0\") {\n writer.uint32(24).uint64(message.poolClassificationInterval);\n }\n if (message.poolWeightRpos !== \"\") {\n writer.uint32(34).string(message.poolWeightRpos);\n }\n if (message.poolWeightDpos !== \"\") {\n writer.uint32(42).string(message.poolWeightDpos);\n }\n if (message.poolMinDelegationDpos !== \"0\") {\n writer.uint32(48).uint64(message.poolMinDelegationDpos);\n }\n if (message.poolRepPercentileRpos !== \"0\") {\n writer.uint32(56).uint64(message.poolRepPercentileRpos);\n }\n if (message.bondingAlpha !== \"\") {\n writer.uint32(66).string(message.bondingAlpha);\n }\n if (message.bondingBeta !== \"\") {\n writer.uint32(74).string(message.bondingBeta);\n }\n if (message.bondingPhaseMultiplier !== \"\") {\n writer.uint32(82).string(message.bondingPhaseMultiplier);\n }\n if (message.slashingBaseRate !== \"\") {\n writer.uint32(90).string(message.slashingBaseRate);\n }\n if (message.slashingEscalationFactor !== \"\") {\n writer.uint32(98).string(message.slashingEscalationFactor);\n }\n if (message.slashingMaxPenalty !== \"\") {\n writer.uint32(106).string(message.slashingMaxPenalty);\n }\n if (message.slashingDecayHalflife !== \"0\") {\n writer.uint32(112).uint64(message.slashingDecayHalflife);\n }\n if (message.qdrwEnabled !== false) {\n writer.uint32(120).bool(message.qdrwEnabled);\n }\n if (message.qdrwXqoreMultiplier !== \"\") {\n writer.uint32(130).string(message.qdrwXqoreMultiplier);\n }\n if (message.qdrwRepMinMultiplier !== \"\") {\n writer.uint32(138).string(message.qdrwRepMinMultiplier);\n }\n if (message.qdrwRepMaxMultiplier !== \"\") {\n writer.uint32(146).string(message.qdrwRepMaxMultiplier);\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): QueryConfigResponse {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseQueryConfigResponse();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 8) {\n break;\n }\n\n message.useReputationWeighting = reader.bool();\n continue;\n }\n case 2: {\n if (tag !== 17) {\n break;\n }\n\n message.minReputationScore = reader.double();\n continue;\n }\n case 3: {\n if (tag !== 24) {\n break;\n }\n\n message.poolClassificationInterval = reader.uint64().toString();\n continue;\n }\n case 4: {\n if (tag !== 34) {\n break;\n }\n\n message.poolWeightRpos = reader.string();\n continue;\n }\n case 5: {\n if (tag !== 42) {\n break;\n }\n\n message.poolWeightDpos = reader.string();\n continue;\n }\n case 6: {\n if (tag !== 48) {\n break;\n }\n\n message.poolMinDelegationDpos = reader.uint64().toString();\n continue;\n }\n case 7: {\n if (tag !== 56) {\n break;\n }\n\n message.poolRepPercentileRpos = reader.uint64().toString();\n continue;\n }\n case 8: {\n if (tag !== 66) {\n break;\n }\n\n message.bondingAlpha = reader.string();\n continue;\n }\n case 9: {\n if (tag !== 74) {\n break;\n }\n\n message.bondingBeta = reader.string();\n continue;\n }\n case 10: {\n if (tag !== 82) {\n break;\n }\n\n message.bondingPhaseMultiplier = reader.string();\n continue;\n }\n case 11: {\n if (tag !== 90) {\n break;\n }\n\n message.slashingBaseRate = reader.string();\n continue;\n }\n case 12: {\n if (tag !== 98) {\n break;\n }\n\n message.slashingEscalationFactor = reader.string();\n continue;\n }\n case 13: {\n if (tag !== 106) {\n break;\n }\n\n message.slashingMaxPenalty = reader.string();\n continue;\n }\n case 14: {\n if (tag !== 112) {\n break;\n }\n\n message.slashingDecayHalflife = reader.uint64().toString();\n continue;\n }\n case 15: {\n if (tag !== 120) {\n break;\n }\n\n message.qdrwEnabled = reader.bool();\n continue;\n }\n case 16: {\n if (tag !== 130) {\n break;\n }\n\n message.qdrwXqoreMultiplier = reader.string();\n continue;\n }\n case 17: {\n if (tag !== 138) {\n break;\n }\n\n message.qdrwRepMinMultiplier = reader.string();\n continue;\n }\n case 18: {\n if (tag !== 146) {\n break;\n }\n\n message.qdrwRepMaxMultiplier = reader.string();\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): QueryConfigResponse {\n return {\n useReputationWeighting: isSet(object.useReputationWeighting)\n ? globalThis.Boolean(object.useReputationWeighting)\n : isSet(object.use_reputation_weighting)\n ? globalThis.Boolean(object.use_reputation_weighting)\n : false,\n minReputationScore: isSet(object.minReputationScore)\n ? globalThis.Number(object.minReputationScore)\n : isSet(object.min_reputation_score)\n ? globalThis.Number(object.min_reputation_score)\n : 0,\n poolClassificationInterval: isSet(object.poolClassificationInterval)\n ? globalThis.String(object.poolClassificationInterval)\n : isSet(object.pool_classification_interval)\n ? globalThis.String(object.pool_classification_interval)\n : \"0\",\n poolWeightRpos: isSet(object.poolWeightRpos)\n ? globalThis.String(object.poolWeightRpos)\n : isSet(object.pool_weight_rpos)\n ? globalThis.String(object.pool_weight_rpos)\n : \"\",\n poolWeightDpos: isSet(object.poolWeightDpos)\n ? globalThis.String(object.poolWeightDpos)\n : isSet(object.pool_weight_dpos)\n ? globalThis.String(object.pool_weight_dpos)\n : \"\",\n poolMinDelegationDpos: isSet(object.poolMinDelegationDpos)\n ? globalThis.String(object.poolMinDelegationDpos)\n : isSet(object.pool_min_delegation_dpos)\n ? globalThis.String(object.pool_min_delegation_dpos)\n : \"0\",\n poolRepPercentileRpos: isSet(object.poolRepPercentileRpos)\n ? globalThis.String(object.poolRepPercentileRpos)\n : isSet(object.pool_rep_percentile_rpos)\n ? globalThis.String(object.pool_rep_percentile_rpos)\n : \"0\",\n bondingAlpha: isSet(object.bondingAlpha)\n ? globalThis.String(object.bondingAlpha)\n : isSet(object.bonding_alpha)\n ? globalThis.String(object.bonding_alpha)\n : \"\",\n bondingBeta: isSet(object.bondingBeta)\n ? globalThis.String(object.bondingBeta)\n : isSet(object.bonding_beta)\n ? globalThis.String(object.bonding_beta)\n : \"\",\n bondingPhaseMultiplier: isSet(object.bondingPhaseMultiplier)\n ? globalThis.String(object.bondingPhaseMultiplier)\n : isSet(object.bonding_phase_multiplier)\n ? globalThis.String(object.bonding_phase_multiplier)\n : \"\",\n slashingBaseRate: isSet(object.slashingBaseRate)\n ? globalThis.String(object.slashingBaseRate)\n : isSet(object.slashing_base_rate)\n ? globalThis.String(object.slashing_base_rate)\n : \"\",\n slashingEscalationFactor: isSet(object.slashingEscalationFactor)\n ? globalThis.String(object.slashingEscalationFactor)\n : isSet(object.slashing_escalation_factor)\n ? globalThis.String(object.slashing_escalation_factor)\n : \"\",\n slashingMaxPenalty: isSet(object.slashingMaxPenalty)\n ? globalThis.String(object.slashingMaxPenalty)\n : isSet(object.slashing_max_penalty)\n ? globalThis.String(object.slashing_max_penalty)\n : \"\",\n slashingDecayHalflife: isSet(object.slashingDecayHalflife)\n ? globalThis.String(object.slashingDecayHalflife)\n : isSet(object.slashing_decay_halflife)\n ? globalThis.String(object.slashing_decay_halflife)\n : \"0\",\n qdrwEnabled: isSet(object.qdrwEnabled)\n ? globalThis.Boolean(object.qdrwEnabled)\n : isSet(object.qdrw_enabled)\n ? globalThis.Boolean(object.qdrw_enabled)\n : false,\n qdrwXqoreMultiplier: isSet(object.qdrwXqoreMultiplier)\n ? globalThis.String(object.qdrwXqoreMultiplier)\n : isSet(object.qdrw_xqore_multiplier)\n ? globalThis.String(object.qdrw_xqore_multiplier)\n : \"\",\n qdrwRepMinMultiplier: isSet(object.qdrwRepMinMultiplier)\n ? globalThis.String(object.qdrwRepMinMultiplier)\n : isSet(object.qdrw_rep_min_multiplier)\n ? globalThis.String(object.qdrw_rep_min_multiplier)\n : \"\",\n qdrwRepMaxMultiplier: isSet(object.qdrwRepMaxMultiplier)\n ? globalThis.String(object.qdrwRepMaxMultiplier)\n : isSet(object.qdrw_rep_max_multiplier)\n ? globalThis.String(object.qdrw_rep_max_multiplier)\n : \"\",\n };\n },\n\n toJSON(message: QueryConfigResponse): unknown {\n const obj: any = {};\n if (message.useReputationWeighting !== false) {\n obj.useReputationWeighting = message.useReputationWeighting;\n }\n if (message.minReputationScore !== 0) {\n obj.minReputationScore = message.minReputationScore;\n }\n if (message.poolClassificationInterval !== \"0\") {\n obj.poolClassificationInterval = message.poolClassificationInterval;\n }\n if (message.poolWeightRpos !== \"\") {\n obj.poolWeightRpos = message.poolWeightRpos;\n }\n if (message.poolWeightDpos !== \"\") {\n obj.poolWeightDpos = message.poolWeightDpos;\n }\n if (message.poolMinDelegationDpos !== \"0\") {\n obj.poolMinDelegationDpos = message.poolMinDelegationDpos;\n }\n if (message.poolRepPercentileRpos !== \"0\") {\n obj.poolRepPercentileRpos = message.poolRepPercentileRpos;\n }\n if (message.bondingAlpha !== \"\") {\n obj.bondingAlpha = message.bondingAlpha;\n }\n if (message.bondingBeta !== \"\") {\n obj.bondingBeta = message.bondingBeta;\n }\n if (message.bondingPhaseMultiplier !== \"\") {\n obj.bondingPhaseMultiplier = message.bondingPhaseMultiplier;\n }\n if (message.slashingBaseRate !== \"\") {\n obj.slashingBaseRate = message.slashingBaseRate;\n }\n if (message.slashingEscalationFactor !== \"\") {\n obj.slashingEscalationFactor = message.slashingEscalationFactor;\n }\n if (message.slashingMaxPenalty !== \"\") {\n obj.slashingMaxPenalty = message.slashingMaxPenalty;\n }\n if (message.slashingDecayHalflife !== \"0\") {\n obj.slashingDecayHalflife = message.slashingDecayHalflife;\n }\n if (message.qdrwEnabled !== false) {\n obj.qdrwEnabled = message.qdrwEnabled;\n }\n if (message.qdrwXqoreMultiplier !== \"\") {\n obj.qdrwXqoreMultiplier = message.qdrwXqoreMultiplier;\n }\n if (message.qdrwRepMinMultiplier !== \"\") {\n obj.qdrwRepMinMultiplier = message.qdrwRepMinMultiplier;\n }\n if (message.qdrwRepMaxMultiplier !== \"\") {\n obj.qdrwRepMaxMultiplier = message.qdrwRepMaxMultiplier;\n }\n return obj;\n },\n\n create(base?: DeepPartial<QueryConfigResponse>): QueryConfigResponse {\n return QueryConfigResponse.fromPartial(base ?? {});\n },\n fromPartial(object: DeepPartial<QueryConfigResponse>): QueryConfigResponse {\n const message = createBaseQueryConfigResponse();\n message.useReputationWeighting = object.useReputationWeighting ?? false;\n message.minReputationScore = object.minReputationScore ?? 0;\n message.poolClassificationInterval = object.poolClassificationInterval ?? \"0\";\n message.poolWeightRpos = object.poolWeightRpos ?? \"\";\n message.poolWeightDpos = object.poolWeightDpos ?? \"\";\n message.poolMinDelegationDpos = object.poolMinDelegationDpos ?? \"0\";\n message.poolRepPercentileRpos = object.poolRepPercentileRpos ?? \"0\";\n message.bondingAlpha = object.bondingAlpha ?? \"\";\n message.bondingBeta = object.bondingBeta ?? \"\";\n message.bondingPhaseMultiplier = object.bondingPhaseMultiplier ?? \"\";\n message.slashingBaseRate = object.slashingBaseRate ?? \"\";\n message.slashingEscalationFactor = object.slashingEscalationFactor ?? \"\";\n message.slashingMaxPenalty = object.slashingMaxPenalty ?? \"\";\n message.slashingDecayHalflife = object.slashingDecayHalflife ?? \"0\";\n message.qdrwEnabled = object.qdrwEnabled ?? false;\n message.qdrwXqoreMultiplier = object.qdrwXqoreMultiplier ?? \"\";\n message.qdrwRepMinMultiplier = object.qdrwRepMinMultiplier ?? \"\";\n message.qdrwRepMaxMultiplier = object.qdrwRepMaxMultiplier ?? \"\";\n return message;\n },\n};\n\n/** Query defines the qca module's gRPC query service. */\nexport type QueryDefinition = typeof QueryDefinition;\nexport const QueryDefinition = {\n name: \"Query\",\n fullName: \"qorechain.qca.v1.Query\",\n methods: {\n /**\n * Config returns the live QCA consensus configuration (pool, bonding curve,\n * slashing and QDRW sub-configs flattened).\n */\n config: {\n name: \"Config\",\n requestType: QueryConfigRequest as typeof QueryConfigRequest,\n requestStream: false,\n responseType: QueryConfigResponse as typeof QueryConfigResponse,\n responseStream: false,\n options: {},\n },\n },\n} as const;\n\ntype Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;\n\nexport type DeepPartial<T> = T extends Builtin ? T\n : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>>\n : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>\n : T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }\n : Partial<T>;\n\nfunction isSet(value: any): boolean {\n return value !== null && value !== undefined;\n}\n\nexport interface MessageFns<T> {\n encode(message: T, writer?: BinaryWriter): BinaryWriter;\n decode(input: BinaryReader | Uint8Array, length?: number): T;\n fromJSON(object: any): T;\n toJSON(message: T): unknown;\n create(base?: DeepPartial<T>): T;\n fromPartial(object: DeepPartial<T>): T;\n}\n","// Code generated by protoc-gen-ts_proto. DO NOT EDIT.\n// versions:\n// protoc-gen-ts_proto v2.11.8\n// protoc unknown\n// source: qorechain/reputation/v1/query.proto\n\n/* eslint-disable */\nimport { BinaryReader, BinaryWriter } from \"@bufbuild/protobuf/wire\";\n\nexport const protobufPackage = \"qorechain.reputation.v1\";\n\nexport interface QueryParamsRequest {\n}\n\nexport interface QueryParamsResponse {\n alpha: string;\n beta: string;\n gamma: string;\n delta: string;\n lambda: string;\n minScore: string;\n}\n\nfunction createBaseQueryParamsRequest(): QueryParamsRequest {\n return {};\n}\n\nexport const QueryParamsRequest: MessageFns<QueryParamsRequest> = {\n encode(_: QueryParamsRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): QueryParamsRequest {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseQueryParamsRequest();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(_: any): QueryParamsRequest {\n return {};\n },\n\n toJSON(_: QueryParamsRequest): unknown {\n const obj: any = {};\n return obj;\n },\n\n create(base?: DeepPartial<QueryParamsRequest>): QueryParamsRequest {\n return QueryParamsRequest.fromPartial(base ?? {});\n },\n fromPartial(_: DeepPartial<QueryParamsRequest>): QueryParamsRequest {\n const message = createBaseQueryParamsRequest();\n return message;\n },\n};\n\nfunction createBaseQueryParamsResponse(): QueryParamsResponse {\n return { alpha: \"\", beta: \"\", gamma: \"\", delta: \"\", lambda: \"\", minScore: \"\" };\n}\n\nexport const QueryParamsResponse: MessageFns<QueryParamsResponse> = {\n encode(message: QueryParamsResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.alpha !== \"\") {\n writer.uint32(10).string(message.alpha);\n }\n if (message.beta !== \"\") {\n writer.uint32(18).string(message.beta);\n }\n if (message.gamma !== \"\") {\n writer.uint32(26).string(message.gamma);\n }\n if (message.delta !== \"\") {\n writer.uint32(34).string(message.delta);\n }\n if (message.lambda !== \"\") {\n writer.uint32(42).string(message.lambda);\n }\n if (message.minScore !== \"\") {\n writer.uint32(50).string(message.minScore);\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): QueryParamsResponse {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseQueryParamsResponse();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n message.alpha = reader.string();\n continue;\n }\n case 2: {\n if (tag !== 18) {\n break;\n }\n\n message.beta = reader.string();\n continue;\n }\n case 3: {\n if (tag !== 26) {\n break;\n }\n\n message.gamma = reader.string();\n continue;\n }\n case 4: {\n if (tag !== 34) {\n break;\n }\n\n message.delta = reader.string();\n continue;\n }\n case 5: {\n if (tag !== 42) {\n break;\n }\n\n message.lambda = reader.string();\n continue;\n }\n case 6: {\n if (tag !== 50) {\n break;\n }\n\n message.minScore = reader.string();\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): QueryParamsResponse {\n return {\n alpha: isSet(object.alpha) ? globalThis.String(object.alpha) : \"\",\n beta: isSet(object.beta) ? globalThis.String(object.beta) : \"\",\n gamma: isSet(object.gamma) ? globalThis.String(object.gamma) : \"\",\n delta: isSet(object.delta) ? globalThis.String(object.delta) : \"\",\n lambda: isSet(object.lambda) ? globalThis.String(object.lambda) : \"\",\n minScore: isSet(object.minScore)\n ? globalThis.String(object.minScore)\n : isSet(object.min_score)\n ? globalThis.String(object.min_score)\n : \"\",\n };\n },\n\n toJSON(message: QueryParamsResponse): unknown {\n const obj: any = {};\n if (message.alpha !== \"\") {\n obj.alpha = message.alpha;\n }\n if (message.beta !== \"\") {\n obj.beta = message.beta;\n }\n if (message.gamma !== \"\") {\n obj.gamma = message.gamma;\n }\n if (message.delta !== \"\") {\n obj.delta = message.delta;\n }\n if (message.lambda !== \"\") {\n obj.lambda = message.lambda;\n }\n if (message.minScore !== \"\") {\n obj.minScore = message.minScore;\n }\n return obj;\n },\n\n create(base?: DeepPartial<QueryParamsResponse>): QueryParamsResponse {\n return QueryParamsResponse.fromPartial(base ?? {});\n },\n fromPartial(object: DeepPartial<QueryParamsResponse>): QueryParamsResponse {\n const message = createBaseQueryParamsResponse();\n message.alpha = object.alpha ?? \"\";\n message.beta = object.beta ?? \"\";\n message.gamma = object.gamma ?? \"\";\n message.delta = object.delta ?? \"\";\n message.lambda = object.lambda ?? \"\";\n message.minScore = object.minScore ?? \"\";\n return message;\n },\n};\n\n/** Query defines the reputation module's gRPC query service. */\nexport type QueryDefinition = typeof QueryDefinition;\nexport const QueryDefinition = {\n name: \"Query\",\n fullName: \"qorechain.reputation.v1.Query\",\n methods: {\n /** Params returns the reputation formula weights (R_i = α·S_i + β·P_i + γ·C_i + δ·T_i). */\n params: {\n name: \"Params\",\n requestType: QueryParamsRequest as typeof QueryParamsRequest,\n requestStream: false,\n responseType: QueryParamsResponse as typeof QueryParamsResponse,\n responseStream: false,\n options: {},\n },\n },\n} as const;\n\ntype Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;\n\nexport type DeepPartial<T> = T extends Builtin ? T\n : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>>\n : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>\n : T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }\n : Partial<T>;\n\nfunction isSet(value: any): boolean {\n return value !== null && value !== undefined;\n}\n\nexport interface MessageFns<T> {\n encode(message: T, writer?: BinaryWriter): BinaryWriter;\n decode(input: BinaryReader | Uint8Array, length?: number): T;\n fromJSON(object: any): T;\n toJSON(message: T): unknown;\n create(base?: DeepPartial<T>): T;\n fromPartial(object: DeepPartial<T>): T;\n}\n","// Code generated by protoc-gen-ts_proto. DO NOT EDIT.\n// versions:\n// protoc-gen-ts_proto v2.11.8\n// protoc unknown\n// source: qorechain/rlconsensus/v1/query.proto\n\n/* eslint-disable */\nimport { BinaryReader, BinaryWriter } from \"@bufbuild/protobuf/wire\";\n\nexport const protobufPackage = \"qorechain.rlconsensus.v1\";\n\nexport interface QueryObservationRequest {\n}\n\nexport interface QueryObservationResponse {\n height: string;\n values: string[];\n}\n\nexport interface QueryRewardRequest {\n}\n\nexport interface QueryRewardResponse {\n height: string;\n totalReward: string;\n throughputDelta: string;\n finalityDelta: string;\n decentralizationDelta: string;\n mevEstimate: string;\n failedTxRatio: string;\n}\n\nexport interface QueryPolicyRequest {\n}\n\nexport interface QueryPolicyResponse {\n epoch: string;\n updatedAt: string;\n weightCount: string;\n}\n\nexport interface QueryAgentStatusRequest {\n}\n\nexport interface QueryAgentStatusResponse {\n mode: string;\n currentEpoch: string;\n totalSteps: string;\n lastObservationAt: string;\n lastActionAt: string;\n circuitBreakerActive: boolean;\n blocksSinceRevert: string;\n}\n\nexport interface QueryParamsRequest {\n}\n\nexport interface QueryParamsResponse {\n enabled: boolean;\n observationInterval: string;\n agentMode: string;\n maxChangeConservative: string;\n maxChangeAutonomous: string;\n circuitBreakerWindow: string;\n circuitBreakerThreshold: string;\n /**\n * Reward weights (flattened to avoid clashing with the hand-written\n * types.RewardWeights struct used in genesis state).\n */\n rewardWeightThroughput: string;\n rewardWeightFinality: string;\n rewardWeightDecentralization: string;\n rewardWeightMev: string;\n rewardWeightFailedTxs: string;\n defaultBlockTimeMs: string;\n defaultBaseGasPrice: string;\n defaultValidatorSetSize: string;\n}\n\nfunction createBaseQueryObservationRequest(): QueryObservationRequest {\n return {};\n}\n\nexport const QueryObservationRequest: MessageFns<QueryObservationRequest> = {\n encode(_: QueryObservationRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): QueryObservationRequest {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseQueryObservationRequest();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(_: any): QueryObservationRequest {\n return {};\n },\n\n toJSON(_: QueryObservationRequest): unknown {\n const obj: any = {};\n return obj;\n },\n\n create(base?: DeepPartial<QueryObservationRequest>): QueryObservationRequest {\n return QueryObservationRequest.fromPartial(base ?? {});\n },\n fromPartial(_: DeepPartial<QueryObservationRequest>): QueryObservationRequest {\n const message = createBaseQueryObservationRequest();\n return message;\n },\n};\n\nfunction createBaseQueryObservationResponse(): QueryObservationResponse {\n return { height: \"0\", values: [] };\n}\n\nexport const QueryObservationResponse: MessageFns<QueryObservationResponse> = {\n encode(message: QueryObservationResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.height !== \"0\") {\n writer.uint32(8).int64(message.height);\n }\n for (const v of message.values) {\n writer.uint32(18).string(v!);\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): QueryObservationResponse {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseQueryObservationResponse();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 8) {\n break;\n }\n\n message.height = reader.int64().toString();\n continue;\n }\n case 2: {\n if (tag !== 18) {\n break;\n }\n\n message.values.push(reader.string());\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): QueryObservationResponse {\n return {\n height: isSet(object.height) ? globalThis.String(object.height) : \"0\",\n values: globalThis.Array.isArray(object?.values) ? object.values.map((e: any) => globalThis.String(e)) : [],\n };\n },\n\n toJSON(message: QueryObservationResponse): unknown {\n const obj: any = {};\n if (message.height !== \"0\") {\n obj.height = message.height;\n }\n if (message.values?.length) {\n obj.values = message.values;\n }\n return obj;\n },\n\n create(base?: DeepPartial<QueryObservationResponse>): QueryObservationResponse {\n return QueryObservationResponse.fromPartial(base ?? {});\n },\n fromPartial(object: DeepPartial<QueryObservationResponse>): QueryObservationResponse {\n const message = createBaseQueryObservationResponse();\n message.height = object.height ?? \"0\";\n message.values = object.values?.map((e) => e) || [];\n return message;\n },\n};\n\nfunction createBaseQueryRewardRequest(): QueryRewardRequest {\n return {};\n}\n\nexport const QueryRewardRequest: MessageFns<QueryRewardRequest> = {\n encode(_: QueryRewardRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): QueryRewardRequest {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseQueryRewardRequest();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(_: any): QueryRewardRequest {\n return {};\n },\n\n toJSON(_: QueryRewardRequest): unknown {\n const obj: any = {};\n return obj;\n },\n\n create(base?: DeepPartial<QueryRewardRequest>): QueryRewardRequest {\n return QueryRewardRequest.fromPartial(base ?? {});\n },\n fromPartial(_: DeepPartial<QueryRewardRequest>): QueryRewardRequest {\n const message = createBaseQueryRewardRequest();\n return message;\n },\n};\n\nfunction createBaseQueryRewardResponse(): QueryRewardResponse {\n return {\n height: \"0\",\n totalReward: \"\",\n throughputDelta: \"\",\n finalityDelta: \"\",\n decentralizationDelta: \"\",\n mevEstimate: \"\",\n failedTxRatio: \"\",\n };\n}\n\nexport const QueryRewardResponse: MessageFns<QueryRewardResponse> = {\n encode(message: QueryRewardResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.height !== \"0\") {\n writer.uint32(8).int64(message.height);\n }\n if (message.totalReward !== \"\") {\n writer.uint32(18).string(message.totalReward);\n }\n if (message.throughputDelta !== \"\") {\n writer.uint32(26).string(message.throughputDelta);\n }\n if (message.finalityDelta !== \"\") {\n writer.uint32(34).string(message.finalityDelta);\n }\n if (message.decentralizationDelta !== \"\") {\n writer.uint32(42).string(message.decentralizationDelta);\n }\n if (message.mevEstimate !== \"\") {\n writer.uint32(50).string(message.mevEstimate);\n }\n if (message.failedTxRatio !== \"\") {\n writer.uint32(58).string(message.failedTxRatio);\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): QueryRewardResponse {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseQueryRewardResponse();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 8) {\n break;\n }\n\n message.height = reader.int64().toString();\n continue;\n }\n case 2: {\n if (tag !== 18) {\n break;\n }\n\n message.totalReward = reader.string();\n continue;\n }\n case 3: {\n if (tag !== 26) {\n break;\n }\n\n message.throughputDelta = reader.string();\n continue;\n }\n case 4: {\n if (tag !== 34) {\n break;\n }\n\n message.finalityDelta = reader.string();\n continue;\n }\n case 5: {\n if (tag !== 42) {\n break;\n }\n\n message.decentralizationDelta = reader.string();\n continue;\n }\n case 6: {\n if (tag !== 50) {\n break;\n }\n\n message.mevEstimate = reader.string();\n continue;\n }\n case 7: {\n if (tag !== 58) {\n break;\n }\n\n message.failedTxRatio = reader.string();\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): QueryRewardResponse {\n return {\n height: isSet(object.height) ? globalThis.String(object.height) : \"0\",\n totalReward: isSet(object.totalReward)\n ? globalThis.String(object.totalReward)\n : isSet(object.total_reward)\n ? globalThis.String(object.total_reward)\n : \"\",\n throughputDelta: isSet(object.throughputDelta)\n ? globalThis.String(object.throughputDelta)\n : isSet(object.throughput_delta)\n ? globalThis.String(object.throughput_delta)\n : \"\",\n finalityDelta: isSet(object.finalityDelta)\n ? globalThis.String(object.finalityDelta)\n : isSet(object.finality_delta)\n ? globalThis.String(object.finality_delta)\n : \"\",\n decentralizationDelta: isSet(object.decentralizationDelta)\n ? globalThis.String(object.decentralizationDelta)\n : isSet(object.decentralization_delta)\n ? globalThis.String(object.decentralization_delta)\n : \"\",\n mevEstimate: isSet(object.mevEstimate)\n ? globalThis.String(object.mevEstimate)\n : isSet(object.mev_estimate)\n ? globalThis.String(object.mev_estimate)\n : \"\",\n failedTxRatio: isSet(object.failedTxRatio)\n ? globalThis.String(object.failedTxRatio)\n : isSet(object.failed_tx_ratio)\n ? globalThis.String(object.failed_tx_ratio)\n : \"\",\n };\n },\n\n toJSON(message: QueryRewardResponse): unknown {\n const obj: any = {};\n if (message.height !== \"0\") {\n obj.height = message.height;\n }\n if (message.totalReward !== \"\") {\n obj.totalReward = message.totalReward;\n }\n if (message.throughputDelta !== \"\") {\n obj.throughputDelta = message.throughputDelta;\n }\n if (message.finalityDelta !== \"\") {\n obj.finalityDelta = message.finalityDelta;\n }\n if (message.decentralizationDelta !== \"\") {\n obj.decentralizationDelta = message.decentralizationDelta;\n }\n if (message.mevEstimate !== \"\") {\n obj.mevEstimate = message.mevEstimate;\n }\n if (message.failedTxRatio !== \"\") {\n obj.failedTxRatio = message.failedTxRatio;\n }\n return obj;\n },\n\n create(base?: DeepPartial<QueryRewardResponse>): QueryRewardResponse {\n return QueryRewardResponse.fromPartial(base ?? {});\n },\n fromPartial(object: DeepPartial<QueryRewardResponse>): QueryRewardResponse {\n const message = createBaseQueryRewardResponse();\n message.height = object.height ?? \"0\";\n message.totalReward = object.totalReward ?? \"\";\n message.throughputDelta = object.throughputDelta ?? \"\";\n message.finalityDelta = object.finalityDelta ?? \"\";\n message.decentralizationDelta = object.decentralizationDelta ?? \"\";\n message.mevEstimate = object.mevEstimate ?? \"\";\n message.failedTxRatio = object.failedTxRatio ?? \"\";\n return message;\n },\n};\n\nfunction createBaseQueryPolicyRequest(): QueryPolicyRequest {\n return {};\n}\n\nexport const QueryPolicyRequest: MessageFns<QueryPolicyRequest> = {\n encode(_: QueryPolicyRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): QueryPolicyRequest {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseQueryPolicyRequest();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(_: any): QueryPolicyRequest {\n return {};\n },\n\n toJSON(_: QueryPolicyRequest): unknown {\n const obj: any = {};\n return obj;\n },\n\n create(base?: DeepPartial<QueryPolicyRequest>): QueryPolicyRequest {\n return QueryPolicyRequest.fromPartial(base ?? {});\n },\n fromPartial(_: DeepPartial<QueryPolicyRequest>): QueryPolicyRequest {\n const message = createBaseQueryPolicyRequest();\n return message;\n },\n};\n\nfunction createBaseQueryPolicyResponse(): QueryPolicyResponse {\n return { epoch: \"0\", updatedAt: \"0\", weightCount: \"0\" };\n}\n\nexport const QueryPolicyResponse: MessageFns<QueryPolicyResponse> = {\n encode(message: QueryPolicyResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.epoch !== \"0\") {\n writer.uint32(8).uint64(message.epoch);\n }\n if (message.updatedAt !== \"0\") {\n writer.uint32(16).int64(message.updatedAt);\n }\n if (message.weightCount !== \"0\") {\n writer.uint32(24).uint64(message.weightCount);\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): QueryPolicyResponse {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseQueryPolicyResponse();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 8) {\n break;\n }\n\n message.epoch = reader.uint64().toString();\n continue;\n }\n case 2: {\n if (tag !== 16) {\n break;\n }\n\n message.updatedAt = reader.int64().toString();\n continue;\n }\n case 3: {\n if (tag !== 24) {\n break;\n }\n\n message.weightCount = reader.uint64().toString();\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): QueryPolicyResponse {\n return {\n epoch: isSet(object.epoch) ? globalThis.String(object.epoch) : \"0\",\n updatedAt: isSet(object.updatedAt)\n ? globalThis.String(object.updatedAt)\n : isSet(object.updated_at)\n ? globalThis.String(object.updated_at)\n : \"0\",\n weightCount: isSet(object.weightCount)\n ? globalThis.String(object.weightCount)\n : isSet(object.weight_count)\n ? globalThis.String(object.weight_count)\n : \"0\",\n };\n },\n\n toJSON(message: QueryPolicyResponse): unknown {\n const obj: any = {};\n if (message.epoch !== \"0\") {\n obj.epoch = message.epoch;\n }\n if (message.updatedAt !== \"0\") {\n obj.updatedAt = message.updatedAt;\n }\n if (message.weightCount !== \"0\") {\n obj.weightCount = message.weightCount;\n }\n return obj;\n },\n\n create(base?: DeepPartial<QueryPolicyResponse>): QueryPolicyResponse {\n return QueryPolicyResponse.fromPartial(base ?? {});\n },\n fromPartial(object: DeepPartial<QueryPolicyResponse>): QueryPolicyResponse {\n const message = createBaseQueryPolicyResponse();\n message.epoch = object.epoch ?? \"0\";\n message.updatedAt = object.updatedAt ?? \"0\";\n message.weightCount = object.weightCount ?? \"0\";\n return message;\n },\n};\n\nfunction createBaseQueryAgentStatusRequest(): QueryAgentStatusRequest {\n return {};\n}\n\nexport const QueryAgentStatusRequest: MessageFns<QueryAgentStatusRequest> = {\n encode(_: QueryAgentStatusRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): QueryAgentStatusRequest {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseQueryAgentStatusRequest();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(_: any): QueryAgentStatusRequest {\n return {};\n },\n\n toJSON(_: QueryAgentStatusRequest): unknown {\n const obj: any = {};\n return obj;\n },\n\n create(base?: DeepPartial<QueryAgentStatusRequest>): QueryAgentStatusRequest {\n return QueryAgentStatusRequest.fromPartial(base ?? {});\n },\n fromPartial(_: DeepPartial<QueryAgentStatusRequest>): QueryAgentStatusRequest {\n const message = createBaseQueryAgentStatusRequest();\n return message;\n },\n};\n\nfunction createBaseQueryAgentStatusResponse(): QueryAgentStatusResponse {\n return {\n mode: \"\",\n currentEpoch: \"0\",\n totalSteps: \"0\",\n lastObservationAt: \"0\",\n lastActionAt: \"0\",\n circuitBreakerActive: false,\n blocksSinceRevert: \"0\",\n };\n}\n\nexport const QueryAgentStatusResponse: MessageFns<QueryAgentStatusResponse> = {\n encode(message: QueryAgentStatusResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.mode !== \"\") {\n writer.uint32(10).string(message.mode);\n }\n if (message.currentEpoch !== \"0\") {\n writer.uint32(16).uint64(message.currentEpoch);\n }\n if (message.totalSteps !== \"0\") {\n writer.uint32(24).uint64(message.totalSteps);\n }\n if (message.lastObservationAt !== \"0\") {\n writer.uint32(32).int64(message.lastObservationAt);\n }\n if (message.lastActionAt !== \"0\") {\n writer.uint32(40).int64(message.lastActionAt);\n }\n if (message.circuitBreakerActive !== false) {\n writer.uint32(48).bool(message.circuitBreakerActive);\n }\n if (message.blocksSinceRevert !== \"0\") {\n writer.uint32(56).int64(message.blocksSinceRevert);\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): QueryAgentStatusResponse {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseQueryAgentStatusResponse();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n message.mode = reader.string();\n continue;\n }\n case 2: {\n if (tag !== 16) {\n break;\n }\n\n message.currentEpoch = reader.uint64().toString();\n continue;\n }\n case 3: {\n if (tag !== 24) {\n break;\n }\n\n message.totalSteps = reader.uint64().toString();\n continue;\n }\n case 4: {\n if (tag !== 32) {\n break;\n }\n\n message.lastObservationAt = reader.int64().toString();\n continue;\n }\n case 5: {\n if (tag !== 40) {\n break;\n }\n\n message.lastActionAt = reader.int64().toString();\n continue;\n }\n case 6: {\n if (tag !== 48) {\n break;\n }\n\n message.circuitBreakerActive = reader.bool();\n continue;\n }\n case 7: {\n if (tag !== 56) {\n break;\n }\n\n message.blocksSinceRevert = reader.int64().toString();\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): QueryAgentStatusResponse {\n return {\n mode: isSet(object.mode) ? globalThis.String(object.mode) : \"\",\n currentEpoch: isSet(object.currentEpoch)\n ? globalThis.String(object.currentEpoch)\n : isSet(object.current_epoch)\n ? globalThis.String(object.current_epoch)\n : \"0\",\n totalSteps: isSet(object.totalSteps)\n ? globalThis.String(object.totalSteps)\n : isSet(object.total_steps)\n ? globalThis.String(object.total_steps)\n : \"0\",\n lastObservationAt: isSet(object.lastObservationAt)\n ? globalThis.String(object.lastObservationAt)\n : isSet(object.last_observation_at)\n ? globalThis.String(object.last_observation_at)\n : \"0\",\n lastActionAt: isSet(object.lastActionAt)\n ? globalThis.String(object.lastActionAt)\n : isSet(object.last_action_at)\n ? globalThis.String(object.last_action_at)\n : \"0\",\n circuitBreakerActive: isSet(object.circuitBreakerActive)\n ? globalThis.Boolean(object.circuitBreakerActive)\n : isSet(object.circuit_breaker_active)\n ? globalThis.Boolean(object.circuit_breaker_active)\n : false,\n blocksSinceRevert: isSet(object.blocksSinceRevert)\n ? globalThis.String(object.blocksSinceRevert)\n : isSet(object.blocks_since_revert)\n ? globalThis.String(object.blocks_since_revert)\n : \"0\",\n };\n },\n\n toJSON(message: QueryAgentStatusResponse): unknown {\n const obj: any = {};\n if (message.mode !== \"\") {\n obj.mode = message.mode;\n }\n if (message.currentEpoch !== \"0\") {\n obj.currentEpoch = message.currentEpoch;\n }\n if (message.totalSteps !== \"0\") {\n obj.totalSteps = message.totalSteps;\n }\n if (message.lastObservationAt !== \"0\") {\n obj.lastObservationAt = message.lastObservationAt;\n }\n if (message.lastActionAt !== \"0\") {\n obj.lastActionAt = message.lastActionAt;\n }\n if (message.circuitBreakerActive !== false) {\n obj.circuitBreakerActive = message.circuitBreakerActive;\n }\n if (message.blocksSinceRevert !== \"0\") {\n obj.blocksSinceRevert = message.blocksSinceRevert;\n }\n return obj;\n },\n\n create(base?: DeepPartial<QueryAgentStatusResponse>): QueryAgentStatusResponse {\n return QueryAgentStatusResponse.fromPartial(base ?? {});\n },\n fromPartial(object: DeepPartial<QueryAgentStatusResponse>): QueryAgentStatusResponse {\n const message = createBaseQueryAgentStatusResponse();\n message.mode = object.mode ?? \"\";\n message.currentEpoch = object.currentEpoch ?? \"0\";\n message.totalSteps = object.totalSteps ?? \"0\";\n message.lastObservationAt = object.lastObservationAt ?? \"0\";\n message.lastActionAt = object.lastActionAt ?? \"0\";\n message.circuitBreakerActive = object.circuitBreakerActive ?? false;\n message.blocksSinceRevert = object.blocksSinceRevert ?? \"0\";\n return message;\n },\n};\n\nfunction createBaseQueryParamsRequest(): QueryParamsRequest {\n return {};\n}\n\nexport const QueryParamsRequest: MessageFns<QueryParamsRequest> = {\n encode(_: QueryParamsRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): QueryParamsRequest {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseQueryParamsRequest();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(_: any): QueryParamsRequest {\n return {};\n },\n\n toJSON(_: QueryParamsRequest): unknown {\n const obj: any = {};\n return obj;\n },\n\n create(base?: DeepPartial<QueryParamsRequest>): QueryParamsRequest {\n return QueryParamsRequest.fromPartial(base ?? {});\n },\n fromPartial(_: DeepPartial<QueryParamsRequest>): QueryParamsRequest {\n const message = createBaseQueryParamsRequest();\n return message;\n },\n};\n\nfunction createBaseQueryParamsResponse(): QueryParamsResponse {\n return {\n enabled: false,\n observationInterval: \"0\",\n agentMode: \"\",\n maxChangeConservative: \"\",\n maxChangeAutonomous: \"\",\n circuitBreakerWindow: \"0\",\n circuitBreakerThreshold: \"\",\n rewardWeightThroughput: \"\",\n rewardWeightFinality: \"\",\n rewardWeightDecentralization: \"\",\n rewardWeightMev: \"\",\n rewardWeightFailedTxs: \"\",\n defaultBlockTimeMs: \"0\",\n defaultBaseGasPrice: \"\",\n defaultValidatorSetSize: \"0\",\n };\n}\n\nexport const QueryParamsResponse: MessageFns<QueryParamsResponse> = {\n encode(message: QueryParamsResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.enabled !== false) {\n writer.uint32(8).bool(message.enabled);\n }\n if (message.observationInterval !== \"0\") {\n writer.uint32(16).uint64(message.observationInterval);\n }\n if (message.agentMode !== \"\") {\n writer.uint32(26).string(message.agentMode);\n }\n if (message.maxChangeConservative !== \"\") {\n writer.uint32(34).string(message.maxChangeConservative);\n }\n if (message.maxChangeAutonomous !== \"\") {\n writer.uint32(42).string(message.maxChangeAutonomous);\n }\n if (message.circuitBreakerWindow !== \"0\") {\n writer.uint32(48).uint64(message.circuitBreakerWindow);\n }\n if (message.circuitBreakerThreshold !== \"\") {\n writer.uint32(58).string(message.circuitBreakerThreshold);\n }\n if (message.rewardWeightThroughput !== \"\") {\n writer.uint32(66).string(message.rewardWeightThroughput);\n }\n if (message.rewardWeightFinality !== \"\") {\n writer.uint32(74).string(message.rewardWeightFinality);\n }\n if (message.rewardWeightDecentralization !== \"\") {\n writer.uint32(82).string(message.rewardWeightDecentralization);\n }\n if (message.rewardWeightMev !== \"\") {\n writer.uint32(90).string(message.rewardWeightMev);\n }\n if (message.rewardWeightFailedTxs !== \"\") {\n writer.uint32(98).string(message.rewardWeightFailedTxs);\n }\n if (message.defaultBlockTimeMs !== \"0\") {\n writer.uint32(104).int64(message.defaultBlockTimeMs);\n }\n if (message.defaultBaseGasPrice !== \"\") {\n writer.uint32(114).string(message.defaultBaseGasPrice);\n }\n if (message.defaultValidatorSetSize !== \"0\") {\n writer.uint32(120).uint64(message.defaultValidatorSetSize);\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): QueryParamsResponse {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseQueryParamsResponse();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 8) {\n break;\n }\n\n message.enabled = reader.bool();\n continue;\n }\n case 2: {\n if (tag !== 16) {\n break;\n }\n\n message.observationInterval = reader.uint64().toString();\n continue;\n }\n case 3: {\n if (tag !== 26) {\n break;\n }\n\n message.agentMode = reader.string();\n continue;\n }\n case 4: {\n if (tag !== 34) {\n break;\n }\n\n message.maxChangeConservative = reader.string();\n continue;\n }\n case 5: {\n if (tag !== 42) {\n break;\n }\n\n message.maxChangeAutonomous = reader.string();\n continue;\n }\n case 6: {\n if (tag !== 48) {\n break;\n }\n\n message.circuitBreakerWindow = reader.uint64().toString();\n continue;\n }\n case 7: {\n if (tag !== 58) {\n break;\n }\n\n message.circuitBreakerThreshold = reader.string();\n continue;\n }\n case 8: {\n if (tag !== 66) {\n break;\n }\n\n message.rewardWeightThroughput = reader.string();\n continue;\n }\n case 9: {\n if (tag !== 74) {\n break;\n }\n\n message.rewardWeightFinality = reader.string();\n continue;\n }\n case 10: {\n if (tag !== 82) {\n break;\n }\n\n message.rewardWeightDecentralization = reader.string();\n continue;\n }\n case 11: {\n if (tag !== 90) {\n break;\n }\n\n message.rewardWeightMev = reader.string();\n continue;\n }\n case 12: {\n if (tag !== 98) {\n break;\n }\n\n message.rewardWeightFailedTxs = reader.string();\n continue;\n }\n case 13: {\n if (tag !== 104) {\n break;\n }\n\n message.defaultBlockTimeMs = reader.int64().toString();\n continue;\n }\n case 14: {\n if (tag !== 114) {\n break;\n }\n\n message.defaultBaseGasPrice = reader.string();\n continue;\n }\n case 15: {\n if (tag !== 120) {\n break;\n }\n\n message.defaultValidatorSetSize = reader.uint64().toString();\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): QueryParamsResponse {\n return {\n enabled: isSet(object.enabled) ? globalThis.Boolean(object.enabled) : false,\n observationInterval: isSet(object.observationInterval)\n ? globalThis.String(object.observationInterval)\n : isSet(object.observation_interval)\n ? globalThis.String(object.observation_interval)\n : \"0\",\n agentMode: isSet(object.agentMode)\n ? globalThis.String(object.agentMode)\n : isSet(object.agent_mode)\n ? globalThis.String(object.agent_mode)\n : \"\",\n maxChangeConservative: isSet(object.maxChangeConservative)\n ? globalThis.String(object.maxChangeConservative)\n : isSet(object.max_change_conservative)\n ? globalThis.String(object.max_change_conservative)\n : \"\",\n maxChangeAutonomous: isSet(object.maxChangeAutonomous)\n ? globalThis.String(object.maxChangeAutonomous)\n : isSet(object.max_change_autonomous)\n ? globalThis.String(object.max_change_autonomous)\n : \"\",\n circuitBreakerWindow: isSet(object.circuitBreakerWindow)\n ? globalThis.String(object.circuitBreakerWindow)\n : isSet(object.circuit_breaker_window)\n ? globalThis.String(object.circuit_breaker_window)\n : \"0\",\n circuitBreakerThreshold: isSet(object.circuitBreakerThreshold)\n ? globalThis.String(object.circuitBreakerThreshold)\n : isSet(object.circuit_breaker_threshold)\n ? globalThis.String(object.circuit_breaker_threshold)\n : \"\",\n rewardWeightThroughput: isSet(object.rewardWeightThroughput)\n ? globalThis.String(object.rewardWeightThroughput)\n : isSet(object.reward_weight_throughput)\n ? globalThis.String(object.reward_weight_throughput)\n : \"\",\n rewardWeightFinality: isSet(object.rewardWeightFinality)\n ? globalThis.String(object.rewardWeightFinality)\n : isSet(object.reward_weight_finality)\n ? globalThis.String(object.reward_weight_finality)\n : \"\",\n rewardWeightDecentralization: isSet(object.rewardWeightDecentralization)\n ? globalThis.String(object.rewardWeightDecentralization)\n : isSet(object.reward_weight_decentralization)\n ? globalThis.String(object.reward_weight_decentralization)\n : \"\",\n rewardWeightMev: isSet(object.rewardWeightMev)\n ? globalThis.String(object.rewardWeightMev)\n : isSet(object.reward_weight_mev)\n ? globalThis.String(object.reward_weight_mev)\n : \"\",\n rewardWeightFailedTxs: isSet(object.rewardWeightFailedTxs)\n ? globalThis.String(object.rewardWeightFailedTxs)\n : isSet(object.reward_weight_failed_txs)\n ? globalThis.String(object.reward_weight_failed_txs)\n : \"\",\n defaultBlockTimeMs: isSet(object.defaultBlockTimeMs)\n ? globalThis.String(object.defaultBlockTimeMs)\n : isSet(object.default_block_time_ms)\n ? globalThis.String(object.default_block_time_ms)\n : \"0\",\n defaultBaseGasPrice: isSet(object.defaultBaseGasPrice)\n ? globalThis.String(object.defaultBaseGasPrice)\n : isSet(object.default_base_gas_price)\n ? globalThis.String(object.default_base_gas_price)\n : \"\",\n defaultValidatorSetSize: isSet(object.defaultValidatorSetSize)\n ? globalThis.String(object.defaultValidatorSetSize)\n : isSet(object.default_validator_set_size)\n ? globalThis.String(object.default_validator_set_size)\n : \"0\",\n };\n },\n\n toJSON(message: QueryParamsResponse): unknown {\n const obj: any = {};\n if (message.enabled !== false) {\n obj.enabled = message.enabled;\n }\n if (message.observationInterval !== \"0\") {\n obj.observationInterval = message.observationInterval;\n }\n if (message.agentMode !== \"\") {\n obj.agentMode = message.agentMode;\n }\n if (message.maxChangeConservative !== \"\") {\n obj.maxChangeConservative = message.maxChangeConservative;\n }\n if (message.maxChangeAutonomous !== \"\") {\n obj.maxChangeAutonomous = message.maxChangeAutonomous;\n }\n if (message.circuitBreakerWindow !== \"0\") {\n obj.circuitBreakerWindow = message.circuitBreakerWindow;\n }\n if (message.circuitBreakerThreshold !== \"\") {\n obj.circuitBreakerThreshold = message.circuitBreakerThreshold;\n }\n if (message.rewardWeightThroughput !== \"\") {\n obj.rewardWeightThroughput = message.rewardWeightThroughput;\n }\n if (message.rewardWeightFinality !== \"\") {\n obj.rewardWeightFinality = message.rewardWeightFinality;\n }\n if (message.rewardWeightDecentralization !== \"\") {\n obj.rewardWeightDecentralization = message.rewardWeightDecentralization;\n }\n if (message.rewardWeightMev !== \"\") {\n obj.rewardWeightMev = message.rewardWeightMev;\n }\n if (message.rewardWeightFailedTxs !== \"\") {\n obj.rewardWeightFailedTxs = message.rewardWeightFailedTxs;\n }\n if (message.defaultBlockTimeMs !== \"0\") {\n obj.defaultBlockTimeMs = message.defaultBlockTimeMs;\n }\n if (message.defaultBaseGasPrice !== \"\") {\n obj.defaultBaseGasPrice = message.defaultBaseGasPrice;\n }\n if (message.defaultValidatorSetSize !== \"0\") {\n obj.defaultValidatorSetSize = message.defaultValidatorSetSize;\n }\n return obj;\n },\n\n create(base?: DeepPartial<QueryParamsResponse>): QueryParamsResponse {\n return QueryParamsResponse.fromPartial(base ?? {});\n },\n fromPartial(object: DeepPartial<QueryParamsResponse>): QueryParamsResponse {\n const message = createBaseQueryParamsResponse();\n message.enabled = object.enabled ?? false;\n message.observationInterval = object.observationInterval ?? \"0\";\n message.agentMode = object.agentMode ?? \"\";\n message.maxChangeConservative = object.maxChangeConservative ?? \"\";\n message.maxChangeAutonomous = object.maxChangeAutonomous ?? \"\";\n message.circuitBreakerWindow = object.circuitBreakerWindow ?? \"0\";\n message.circuitBreakerThreshold = object.circuitBreakerThreshold ?? \"\";\n message.rewardWeightThroughput = object.rewardWeightThroughput ?? \"\";\n message.rewardWeightFinality = object.rewardWeightFinality ?? \"\";\n message.rewardWeightDecentralization = object.rewardWeightDecentralization ?? \"\";\n message.rewardWeightMev = object.rewardWeightMev ?? \"\";\n message.rewardWeightFailedTxs = object.rewardWeightFailedTxs ?? \"\";\n message.defaultBlockTimeMs = object.defaultBlockTimeMs ?? \"0\";\n message.defaultBaseGasPrice = object.defaultBaseGasPrice ?? \"\";\n message.defaultValidatorSetSize = object.defaultValidatorSetSize ?? \"0\";\n return message;\n },\n};\n\n/** Query defines the rlconsensus module's gRPC query service. */\nexport type QueryDefinition = typeof QueryDefinition;\nexport const QueryDefinition = {\n name: \"Query\",\n fullName: \"qorechain.rlconsensus.v1.Query\",\n methods: {\n /** AgentStatus returns the live RL agent status (epoch, steps, mode). */\n agentStatus: {\n name: \"AgentStatus\",\n requestType: QueryAgentStatusRequest as typeof QueryAgentStatusRequest,\n requestStream: false,\n responseType: QueryAgentStatusResponse as typeof QueryAgentStatusResponse,\n responseStream: false,\n options: {},\n },\n /** Params returns the rlconsensus module parameters. */\n params: {\n name: \"Params\",\n requestType: QueryParamsRequest as typeof QueryParamsRequest,\n requestStream: false,\n responseType: QueryParamsResponse as typeof QueryParamsResponse,\n responseStream: false,\n options: {},\n },\n /** Observation returns the latest 25-dim observation vector captured by the agent. */\n observation: {\n name: \"Observation\",\n requestType: QueryObservationRequest as typeof QueryObservationRequest,\n requestStream: false,\n responseType: QueryObservationResponse as typeof QueryObservationResponse,\n responseStream: false,\n options: {},\n },\n /** Reward returns the latest reward signal (total + per-component deltas). */\n reward: {\n name: \"Reward\",\n requestType: QueryRewardRequest as typeof QueryRewardRequest,\n requestStream: false,\n responseType: QueryRewardResponse as typeof QueryRewardResponse,\n responseStream: false,\n options: {},\n },\n /** Policy returns the current policy network summary (epoch, params, update height). */\n policy: {\n name: \"Policy\",\n requestType: QueryPolicyRequest as typeof QueryPolicyRequest,\n requestStream: false,\n responseType: QueryPolicyResponse as typeof QueryPolicyResponse,\n responseStream: false,\n options: {},\n },\n },\n} as const;\n\ntype Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;\n\nexport type DeepPartial<T> = T extends Builtin ? T\n : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>>\n : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>\n : T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }\n : Partial<T>;\n\nfunction isSet(value: any): boolean {\n return value !== null && value !== undefined;\n}\n\nexport interface MessageFns<T> {\n encode(message: T, writer?: BinaryWriter): BinaryWriter;\n decode(input: BinaryReader | Uint8Array, length?: number): T;\n fromJSON(object: any): T;\n toJSON(message: T): unknown;\n create(base?: DeepPartial<T>): T;\n fromPartial(object: DeepPartial<T>): T;\n}\n","// Code generated by protoc-gen-ts_proto. DO NOT EDIT.\n// versions:\n// protoc-gen-ts_proto v2.11.8\n// protoc unknown\n// source: qorechain/svm/v1/query.proto\n\n/* eslint-disable */\nimport { BinaryReader, BinaryWriter } from \"@bufbuild/protobuf/wire\";\n\nexport const protobufPackage = \"qorechain.svm.v1\";\n\nexport interface QuerySlotRequest {\n}\n\nexport interface QuerySlotResponse {\n slot: string;\n}\n\nexport interface QueryAccountRequest {\n /** address is the base58-encoded 32-byte SVM account address. */\n address: string;\n}\n\nexport interface QueryAccountResponse {\n account?: SVMAccountInfo | undefined;\n}\n\nexport interface QueryProgramRequest {\n /** address is the base58-encoded 32-byte program address. */\n address: string;\n}\n\nexport interface QueryProgramResponse {\n program?: ProgramInfo | undefined;\n}\n\n/** SVMAccountInfo is the query-facing view of an SVM account. */\nexport interface SVMAccountInfo {\n address: string;\n lamports: string;\n dataLen: string;\n data: Uint8Array;\n owner: string;\n executable: boolean;\n rentEpoch: string;\n}\n\n/** ProgramInfo is the query-facing view of program metadata. */\nexport interface ProgramInfo {\n programAddress: string;\n upgradeAuthority: string;\n deploySlot: string;\n lastDeploySlot: string;\n dataAccount: string;\n}\n\nfunction createBaseQuerySlotRequest(): QuerySlotRequest {\n return {};\n}\n\nexport const QuerySlotRequest: MessageFns<QuerySlotRequest> = {\n encode(_: QuerySlotRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): QuerySlotRequest {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseQuerySlotRequest();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(_: any): QuerySlotRequest {\n return {};\n },\n\n toJSON(_: QuerySlotRequest): unknown {\n const obj: any = {};\n return obj;\n },\n\n create(base?: DeepPartial<QuerySlotRequest>): QuerySlotRequest {\n return QuerySlotRequest.fromPartial(base ?? {});\n },\n fromPartial(_: DeepPartial<QuerySlotRequest>): QuerySlotRequest {\n const message = createBaseQuerySlotRequest();\n return message;\n },\n};\n\nfunction createBaseQuerySlotResponse(): QuerySlotResponse {\n return { slot: \"0\" };\n}\n\nexport const QuerySlotResponse: MessageFns<QuerySlotResponse> = {\n encode(message: QuerySlotResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.slot !== \"0\") {\n writer.uint32(8).uint64(message.slot);\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): QuerySlotResponse {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseQuerySlotResponse();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 8) {\n break;\n }\n\n message.slot = reader.uint64().toString();\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): QuerySlotResponse {\n return { slot: isSet(object.slot) ? globalThis.String(object.slot) : \"0\" };\n },\n\n toJSON(message: QuerySlotResponse): unknown {\n const obj: any = {};\n if (message.slot !== \"0\") {\n obj.slot = message.slot;\n }\n return obj;\n },\n\n create(base?: DeepPartial<QuerySlotResponse>): QuerySlotResponse {\n return QuerySlotResponse.fromPartial(base ?? {});\n },\n fromPartial(object: DeepPartial<QuerySlotResponse>): QuerySlotResponse {\n const message = createBaseQuerySlotResponse();\n message.slot = object.slot ?? \"0\";\n return message;\n },\n};\n\nfunction createBaseQueryAccountRequest(): QueryAccountRequest {\n return { address: \"\" };\n}\n\nexport const QueryAccountRequest: MessageFns<QueryAccountRequest> = {\n encode(message: QueryAccountRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.address !== \"\") {\n writer.uint32(10).string(message.address);\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): QueryAccountRequest {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseQueryAccountRequest();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n message.address = reader.string();\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): QueryAccountRequest {\n return { address: isSet(object.address) ? globalThis.String(object.address) : \"\" };\n },\n\n toJSON(message: QueryAccountRequest): unknown {\n const obj: any = {};\n if (message.address !== \"\") {\n obj.address = message.address;\n }\n return obj;\n },\n\n create(base?: DeepPartial<QueryAccountRequest>): QueryAccountRequest {\n return QueryAccountRequest.fromPartial(base ?? {});\n },\n fromPartial(object: DeepPartial<QueryAccountRequest>): QueryAccountRequest {\n const message = createBaseQueryAccountRequest();\n message.address = object.address ?? \"\";\n return message;\n },\n};\n\nfunction createBaseQueryAccountResponse(): QueryAccountResponse {\n return { account: undefined };\n}\n\nexport const QueryAccountResponse: MessageFns<QueryAccountResponse> = {\n encode(message: QueryAccountResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.account !== undefined) {\n SVMAccountInfo.encode(message.account, writer.uint32(10).fork()).join();\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): QueryAccountResponse {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseQueryAccountResponse();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n message.account = SVMAccountInfo.decode(reader, reader.uint32());\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): QueryAccountResponse {\n return { account: isSet(object.account) ? SVMAccountInfo.fromJSON(object.account) : undefined };\n },\n\n toJSON(message: QueryAccountResponse): unknown {\n const obj: any = {};\n if (message.account !== undefined) {\n obj.account = SVMAccountInfo.toJSON(message.account);\n }\n return obj;\n },\n\n create(base?: DeepPartial<QueryAccountResponse>): QueryAccountResponse {\n return QueryAccountResponse.fromPartial(base ?? {});\n },\n fromPartial(object: DeepPartial<QueryAccountResponse>): QueryAccountResponse {\n const message = createBaseQueryAccountResponse();\n message.account = (object.account !== undefined && object.account !== null)\n ? SVMAccountInfo.fromPartial(object.account)\n : undefined;\n return message;\n },\n};\n\nfunction createBaseQueryProgramRequest(): QueryProgramRequest {\n return { address: \"\" };\n}\n\nexport const QueryProgramRequest: MessageFns<QueryProgramRequest> = {\n encode(message: QueryProgramRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.address !== \"\") {\n writer.uint32(10).string(message.address);\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): QueryProgramRequest {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseQueryProgramRequest();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n message.address = reader.string();\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): QueryProgramRequest {\n return { address: isSet(object.address) ? globalThis.String(object.address) : \"\" };\n },\n\n toJSON(message: QueryProgramRequest): unknown {\n const obj: any = {};\n if (message.address !== \"\") {\n obj.address = message.address;\n }\n return obj;\n },\n\n create(base?: DeepPartial<QueryProgramRequest>): QueryProgramRequest {\n return QueryProgramRequest.fromPartial(base ?? {});\n },\n fromPartial(object: DeepPartial<QueryProgramRequest>): QueryProgramRequest {\n const message = createBaseQueryProgramRequest();\n message.address = object.address ?? \"\";\n return message;\n },\n};\n\nfunction createBaseQueryProgramResponse(): QueryProgramResponse {\n return { program: undefined };\n}\n\nexport const QueryProgramResponse: MessageFns<QueryProgramResponse> = {\n encode(message: QueryProgramResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.program !== undefined) {\n ProgramInfo.encode(message.program, writer.uint32(10).fork()).join();\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): QueryProgramResponse {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseQueryProgramResponse();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n message.program = ProgramInfo.decode(reader, reader.uint32());\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): QueryProgramResponse {\n return { program: isSet(object.program) ? ProgramInfo.fromJSON(object.program) : undefined };\n },\n\n toJSON(message: QueryProgramResponse): unknown {\n const obj: any = {};\n if (message.program !== undefined) {\n obj.program = ProgramInfo.toJSON(message.program);\n }\n return obj;\n },\n\n create(base?: DeepPartial<QueryProgramResponse>): QueryProgramResponse {\n return QueryProgramResponse.fromPartial(base ?? {});\n },\n fromPartial(object: DeepPartial<QueryProgramResponse>): QueryProgramResponse {\n const message = createBaseQueryProgramResponse();\n message.program = (object.program !== undefined && object.program !== null)\n ? ProgramInfo.fromPartial(object.program)\n : undefined;\n return message;\n },\n};\n\nfunction createBaseSVMAccountInfo(): SVMAccountInfo {\n return {\n address: \"\",\n lamports: \"0\",\n dataLen: \"0\",\n data: new Uint8Array(0),\n owner: \"\",\n executable: false,\n rentEpoch: \"0\",\n };\n}\n\nexport const SVMAccountInfo: MessageFns<SVMAccountInfo> = {\n encode(message: SVMAccountInfo, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.address !== \"\") {\n writer.uint32(10).string(message.address);\n }\n if (message.lamports !== \"0\") {\n writer.uint32(16).uint64(message.lamports);\n }\n if (message.dataLen !== \"0\") {\n writer.uint32(24).uint64(message.dataLen);\n }\n if (message.data.length !== 0) {\n writer.uint32(34).bytes(message.data);\n }\n if (message.owner !== \"\") {\n writer.uint32(42).string(message.owner);\n }\n if (message.executable !== false) {\n writer.uint32(48).bool(message.executable);\n }\n if (message.rentEpoch !== \"0\") {\n writer.uint32(56).uint64(message.rentEpoch);\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): SVMAccountInfo {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseSVMAccountInfo();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n message.address = reader.string();\n continue;\n }\n case 2: {\n if (tag !== 16) {\n break;\n }\n\n message.lamports = reader.uint64().toString();\n continue;\n }\n case 3: {\n if (tag !== 24) {\n break;\n }\n\n message.dataLen = reader.uint64().toString();\n continue;\n }\n case 4: {\n if (tag !== 34) {\n break;\n }\n\n message.data = reader.bytes();\n continue;\n }\n case 5: {\n if (tag !== 42) {\n break;\n }\n\n message.owner = reader.string();\n continue;\n }\n case 6: {\n if (tag !== 48) {\n break;\n }\n\n message.executable = reader.bool();\n continue;\n }\n case 7: {\n if (tag !== 56) {\n break;\n }\n\n message.rentEpoch = reader.uint64().toString();\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): SVMAccountInfo {\n return {\n address: isSet(object.address) ? globalThis.String(object.address) : \"\",\n lamports: isSet(object.lamports) ? globalThis.String(object.lamports) : \"0\",\n dataLen: isSet(object.dataLen)\n ? globalThis.String(object.dataLen)\n : isSet(object.data_len)\n ? globalThis.String(object.data_len)\n : \"0\",\n data: isSet(object.data) ? bytesFromBase64(object.data) : new Uint8Array(0),\n owner: isSet(object.owner) ? globalThis.String(object.owner) : \"\",\n executable: isSet(object.executable) ? globalThis.Boolean(object.executable) : false,\n rentEpoch: isSet(object.rentEpoch)\n ? globalThis.String(object.rentEpoch)\n : isSet(object.rent_epoch)\n ? globalThis.String(object.rent_epoch)\n : \"0\",\n };\n },\n\n toJSON(message: SVMAccountInfo): unknown {\n const obj: any = {};\n if (message.address !== \"\") {\n obj.address = message.address;\n }\n if (message.lamports !== \"0\") {\n obj.lamports = message.lamports;\n }\n if (message.dataLen !== \"0\") {\n obj.dataLen = message.dataLen;\n }\n if (message.data.length !== 0) {\n obj.data = base64FromBytes(message.data);\n }\n if (message.owner !== \"\") {\n obj.owner = message.owner;\n }\n if (message.executable !== false) {\n obj.executable = message.executable;\n }\n if (message.rentEpoch !== \"0\") {\n obj.rentEpoch = message.rentEpoch;\n }\n return obj;\n },\n\n create(base?: DeepPartial<SVMAccountInfo>): SVMAccountInfo {\n return SVMAccountInfo.fromPartial(base ?? {});\n },\n fromPartial(object: DeepPartial<SVMAccountInfo>): SVMAccountInfo {\n const message = createBaseSVMAccountInfo();\n message.address = object.address ?? \"\";\n message.lamports = object.lamports ?? \"0\";\n message.dataLen = object.dataLen ?? \"0\";\n message.data = object.data ?? new Uint8Array(0);\n message.owner = object.owner ?? \"\";\n message.executable = object.executable ?? false;\n message.rentEpoch = object.rentEpoch ?? \"0\";\n return message;\n },\n};\n\nfunction createBaseProgramInfo(): ProgramInfo {\n return { programAddress: \"\", upgradeAuthority: \"\", deploySlot: \"0\", lastDeploySlot: \"0\", dataAccount: \"\" };\n}\n\nexport const ProgramInfo: MessageFns<ProgramInfo> = {\n encode(message: ProgramInfo, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n if (message.programAddress !== \"\") {\n writer.uint32(10).string(message.programAddress);\n }\n if (message.upgradeAuthority !== \"\") {\n writer.uint32(18).string(message.upgradeAuthority);\n }\n if (message.deploySlot !== \"0\") {\n writer.uint32(24).uint64(message.deploySlot);\n }\n if (message.lastDeploySlot !== \"0\") {\n writer.uint32(32).uint64(message.lastDeploySlot);\n }\n if (message.dataAccount !== \"\") {\n writer.uint32(42).string(message.dataAccount);\n }\n return writer;\n },\n\n decode(input: BinaryReader | Uint8Array, length?: number): ProgramInfo {\n const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n const end = length === undefined ? reader.len : reader.pos + length;\n const message = createBaseProgramInfo();\n while (reader.pos < end) {\n const tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (tag !== 10) {\n break;\n }\n\n message.programAddress = reader.string();\n continue;\n }\n case 2: {\n if (tag !== 18) {\n break;\n }\n\n message.upgradeAuthority = reader.string();\n continue;\n }\n case 3: {\n if (tag !== 24) {\n break;\n }\n\n message.deploySlot = reader.uint64().toString();\n continue;\n }\n case 4: {\n if (tag !== 32) {\n break;\n }\n\n message.lastDeploySlot = reader.uint64().toString();\n continue;\n }\n case 5: {\n if (tag !== 42) {\n break;\n }\n\n message.dataAccount = reader.string();\n continue;\n }\n }\n if ((tag & 7) === 4 || tag === 0) {\n break;\n }\n reader.skip(tag & 7);\n }\n return message;\n },\n\n fromJSON(object: any): ProgramInfo {\n return {\n programAddress: isSet(object.programAddress)\n ? globalThis.String(object.programAddress)\n : isSet(object.program_address)\n ? globalThis.String(object.program_address)\n : \"\",\n upgradeAuthority: isSet(object.upgradeAuthority)\n ? globalThis.String(object.upgradeAuthority)\n : isSet(object.upgrade_authority)\n ? globalThis.String(object.upgrade_authority)\n : \"\",\n deploySlot: isSet(object.deploySlot)\n ? globalThis.String(object.deploySlot)\n : isSet(object.deploy_slot)\n ? globalThis.String(object.deploy_slot)\n : \"0\",\n lastDeploySlot: isSet(object.lastDeploySlot)\n ? globalThis.String(object.lastDeploySlot)\n : isSet(object.last_deploy_slot)\n ? globalThis.String(object.last_deploy_slot)\n : \"0\",\n dataAccount: isSet(object.dataAccount)\n ? globalThis.String(object.dataAccount)\n : isSet(object.data_account)\n ? globalThis.String(object.data_account)\n : \"\",\n };\n },\n\n toJSON(message: ProgramInfo): unknown {\n const obj: any = {};\n if (message.programAddress !== \"\") {\n obj.programAddress = message.programAddress;\n }\n if (message.upgradeAuthority !== \"\") {\n obj.upgradeAuthority = message.upgradeAuthority;\n }\n if (message.deploySlot !== \"0\") {\n obj.deploySlot = message.deploySlot;\n }\n if (message.lastDeploySlot !== \"0\") {\n obj.lastDeploySlot = message.lastDeploySlot;\n }\n if (message.dataAccount !== \"\") {\n obj.dataAccount = message.dataAccount;\n }\n return obj;\n },\n\n create(base?: DeepPartial<ProgramInfo>): ProgramInfo {\n return ProgramInfo.fromPartial(base ?? {});\n },\n fromPartial(object: DeepPartial<ProgramInfo>): ProgramInfo {\n const message = createBaseProgramInfo();\n message.programAddress = object.programAddress ?? \"\";\n message.upgradeAuthority = object.upgradeAuthority ?? \"\";\n message.deploySlot = object.deploySlot ?? \"0\";\n message.lastDeploySlot = object.lastDeploySlot ?? \"0\";\n message.dataAccount = object.dataAccount ?? \"\";\n return message;\n },\n};\n\n/** Query defines the gRPC query service for the SVM module. */\nexport type QueryDefinition = typeof QueryDefinition;\nexport const QueryDefinition = {\n name: \"Query\",\n fullName: \"qorechain.svm.v1.Query\",\n methods: {\n /** Slot returns the current SVM virtual slot. */\n slot: {\n name: \"Slot\",\n requestType: QuerySlotRequest as typeof QuerySlotRequest,\n requestStream: false,\n responseType: QuerySlotResponse as typeof QuerySlotResponse,\n responseStream: false,\n options: {},\n },\n /** Account returns the SVM account at a base58 address. */\n account: {\n name: \"Account\",\n requestType: QueryAccountRequest as typeof QueryAccountRequest,\n requestStream: false,\n responseType: QueryAccountResponse as typeof QueryAccountResponse,\n responseStream: false,\n options: {},\n },\n /** Program returns program metadata for a base58 program address. */\n program: {\n name: \"Program\",\n requestType: QueryProgramRequest as typeof QueryProgramRequest,\n requestStream: false,\n responseType: QueryProgramResponse as typeof QueryProgramResponse,\n responseStream: false,\n options: {},\n },\n },\n} as const;\n\nfunction bytesFromBase64(b64: string): Uint8Array {\n if ((globalThis as any).Buffer) {\n return Uint8Array.from((globalThis as any).Buffer.from(b64, \"base64\"));\n } else {\n const bin = globalThis.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 }\n}\n\nfunction base64FromBytes(arr: Uint8Array): string {\n if ((globalThis as any).Buffer) {\n return (globalThis as any).Buffer.from(arr).toString(\"base64\");\n } else {\n const bin: string[] = [];\n arr.forEach((byte) => {\n bin.push(globalThis.String.fromCharCode(byte));\n });\n return globalThis.btoa(bin.join(\"\"));\n }\n}\n\ntype Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;\n\nexport type DeepPartial<T> = T extends Builtin ? T\n : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>>\n : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>\n : T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }\n : Partial<T>;\n\nfunction isSet(value: any): boolean {\n return value !== null && value !== undefined;\n}\n\nexport interface MessageFns<T> {\n encode(message: T, writer?: BinaryWriter): BinaryWriter;\n decode(input: BinaryReader | Uint8Array, length?: number): T;\n fromJSON(object: any): T;\n toJSON(message: T): unknown;\n create(base?: DeepPartial<T>): T;\n fromPartial(object: DeepPartial<T>): T;\n}\n","/**\n * Cosmos browser-wallet integration for QoreChain (Keplr and Leap).\n *\n * Keplr and Leap inject the same API shape under `window.keplr` / `window.leap`,\n * so this module targets both through a light structural interface — it does not\n * take a hard dependency on `@keplr-wallet/types`.\n *\n * The typical flow:\n *\n * ```ts\n * import { getCosmosWallet } from \"@qorechain/sdk\";\n * import { getNetwork, TxClient } from \"@qorechain/sdk\";\n *\n * const network = getNetwork(\"mainnet\");\n * const { signer } = await getCosmosWallet({ wallet: \"keplr\", network });\n * const tx = await TxClient.connect({ rpcEndpoint: network.endpoints.rpc, signer });\n * // `signer` plugs straight into TxClient and can carry any registered message\n * // (standard Cosmos + QoreChain custom) via DIRECT signing.\n * ```\n */\n\nimport type { OfflineSigner } from \"@cosmjs/proto-signing\";\nimport type { NetworkConfig } from \"../config/networks\";\n\n/** Supported Cosmos wallet providers (same injected API shape). */\nexport type CosmosWalletName = \"keplr\" | \"leap\";\n\n/**\n * A bech32 address config for a single account type, matching the shape Keplr\n * and Leap expect in {@link KeplrChainInfo.bech32Config}.\n */\nexport interface Bech32Config {\n bech32PrefixAccAddr: string;\n bech32PrefixAccPub: string;\n bech32PrefixValAddr: string;\n bech32PrefixValPub: string;\n bech32PrefixConsAddr: string;\n bech32PrefixConsPub: string;\n}\n\n/** A currency descriptor in a {@link KeplrChainInfo}. */\nexport interface KeplrCurrency {\n coinDenom: string;\n coinMinimalDenom: string;\n coinDecimals: number;\n coinGeckoId?: string;\n}\n\n/** A fee currency, i.e. a {@link KeplrCurrency} with optional gas price steps. */\nexport interface KeplrFeeCurrency extends KeplrCurrency {\n gasPriceStep?: { low: number; average: number; high: number };\n}\n\n/**\n * The subset of Keplr/Leap's `ChainInfo` that {@link suggestChainInfo} produces.\n * Kept structural so apps don't need `@keplr-wallet/types` installed.\n */\nexport interface KeplrChainInfo {\n chainId: string;\n chainName: string;\n rpc: string;\n rest: string;\n bip44: { coinType: number };\n bech32Config: Bech32Config;\n currencies: KeplrCurrency[];\n feeCurrencies: KeplrFeeCurrency[];\n stakeCurrency: KeplrCurrency;\n features?: string[];\n}\n\n/**\n * The minimal injected-wallet surface this module uses. Both Keplr and Leap\n * implement (at least) these methods. Declared structurally so no wallet types\n * package is required; apps that have `@keplr-wallet/types` can pass a real\n * `Keplr` here — it is structurally compatible.\n */\nexport interface InjectedCosmosWallet {\n experimentalSuggestChain(chainInfo: KeplrChainInfo): Promise<void>;\n enable(chainIds: string | string[]): Promise<void>;\n getOfflineSigner(chainId: string): OfflineSigner;\n getOfflineSignerAuto(chainId: string): Promise<OfflineSigner>;\n}\n\n/** Window augmentation for the injected Cosmos wallets. */\ninterface CosmosWalletWindow {\n keplr?: InjectedCosmosWallet;\n leap?: InjectedCosmosWallet;\n}\n\n/** Options for {@link getCosmosWallet}. */\nexport interface GetCosmosWalletOptions {\n /** Which injected wallet to use. Defaults to `\"keplr\"`. */\n wallet?: CosmosWalletName;\n /** The QoreChain network to connect to. */\n network: NetworkConfig;\n /**\n * Provide the injected wallet object directly instead of reading it off\n * `window` — primarily for testing or non-browser embedding.\n */\n provider?: InjectedCosmosWallet;\n /**\n * Use Amino signing (`getOfflineSigner` Amino path) instead of the auto\n * signer. Defaults to `false` — `getOfflineSignerAuto` is used, which picks\n * DIRECT (preferred; required for QoreChain custom messages) or Amino.\n */\n preferAmino?: boolean;\n}\n\n/** The result of a successful {@link getCosmosWallet} connection. */\nexport interface CosmosWalletConnection {\n /** The CosmJS offline signer. Plugs into `TxClient.connect`. */\n signer: OfflineSigner;\n /** The accounts exposed by the wallet for this chain. */\n accounts: readonly { address: string; pubkey: Uint8Array }[];\n /** Which wallet was connected. */\n wallet: CosmosWalletName;\n /** The connected chain id. */\n chainId: string;\n}\n\n/**\n * Build a Keplr/Leap `ChainInfo` object from a QoreChain {@link NetworkConfig}.\n *\n * Pass the result to a wallet's `experimentalSuggestChain` so the wallet learns\n * about the chain (Keplr and Leap require this for non-registry chains). It is\n * exported so apps can call `experimentalSuggestChain(suggestChainInfo(network))`\n * directly if they manage the connection themselves.\n */\nexport function suggestChainInfo(network: NetworkConfig): KeplrChainInfo {\n const { bech32, coin, endpoints, chainId } = network;\n const currency: KeplrCurrency = {\n coinDenom: coin.display,\n coinMinimalDenom: coin.base,\n coinDecimals: coin.exponent,\n };\n const feeCurrency: KeplrFeeCurrency = {\n ...currency,\n gasPriceStep: { low: 0.01, average: 0.025, high: 0.04 },\n };\n\n return {\n chainId,\n chainName: network.name === \"mainnet\" ? \"QoreChain\" : \"QoreChain Testnet\",\n rpc: endpoints.rpc,\n rest: endpoints.rest,\n bip44: { coinType: 118 },\n bech32Config: {\n bech32PrefixAccAddr: bech32.account,\n bech32PrefixAccPub: `${bech32.account}pub`,\n bech32PrefixValAddr: bech32.validator,\n bech32PrefixValPub: `${bech32.validator}pub`,\n bech32PrefixConsAddr: bech32.consensus,\n bech32PrefixConsPub: `${bech32.consensus}pub`,\n },\n currencies: [currency],\n feeCurrencies: [feeCurrency],\n stakeCurrency: currency,\n features: [\"ibc-transfer\", \"ibc-go\"],\n };\n}\n\n/** Resolve the injected wallet from options or `window`, or throw. */\nfunction resolveProvider(\n opts: GetCosmosWalletOptions,\n): { provider: InjectedCosmosWallet; name: CosmosWalletName } {\n const name = opts.wallet ?? \"keplr\";\n if (opts.provider) return { provider: opts.provider, name };\n\n if (typeof window === \"undefined\") {\n throw new Error(\n \"getCosmosWallet: no browser `window` available. Run in a browser, or pass `provider` explicitly.\",\n );\n }\n const injected = (window as unknown as CosmosWalletWindow)[name];\n if (!injected) {\n throw new Error(\n `getCosmosWallet: ${name} wallet not found. Install the ${name} extension, or pass \\`provider\\`.`,\n );\n }\n return { provider: injected, name };\n}\n\n/**\n * Detect a Keplr/Leap wallet, register the QoreChain network with it, enable it,\n * and return a CosmJS {@link OfflineSigner} plus the connected accounts.\n *\n * The returned `signer` plugs straight into\n * `TxClient.connect(network.endpoints.rpc, signer)` and can send any registered\n * message — standard Cosmos *and* QoreChain custom messages — via DIRECT mode,\n * which both Keplr and Leap support. (Amino mode covers standard messages only\n * until custom-module Amino converters land; see `TxClient` `aminoTypes`.)\n *\n * Browser-only: throws a clear error if no `window` or no injected provider.\n */\nexport async function getCosmosWallet(\n opts: GetCosmosWalletOptions,\n): Promise<CosmosWalletConnection> {\n const { provider, name } = resolveProvider(opts);\n const { chainId } = opts.network;\n\n await provider.experimentalSuggestChain(suggestChainInfo(opts.network));\n await provider.enable(chainId);\n\n const signer = opts.preferAmino\n ? provider.getOfflineSigner(chainId)\n : await provider.getOfflineSignerAuto(chainId);\n\n const accounts = await signer.getAccounts();\n\n return { signer, accounts, wallet: name, chainId };\n}\n","/**\n * Typed gRPC-style query clients for the QoreChain modules with a query service.\n *\n * The chain exposes module queries over the consensus RPC's ABCI query path. We\n * reuse cosmjs's {@link QueryClient} + {@link createProtobufRpcClient}, which\n * turns that path into a `ProtobufRpcClient` (`request(service, method, data)`\n * → `Uint8Array`). Each typed client below encodes the request, dispatches by\n * the proto service/method name, and decodes the response — so callers get\n * fully typed `Query*Request` → `Query*Response` calls without hand-rolling ABCI\n * paths.\n *\n * Construct one with {@link connectQueryClients}, or wrap an existing\n * `ProtobufRpcClient` (e.g. one you already built) with the per-module helpers.\n */\n\nimport {\n QueryClient,\n createProtobufRpcClient,\n type ProtobufRpcClient,\n} from \"@cosmjs/stargate\";\n\nimport * as crossvm from \"../codegen/qorechain/crossvm/v1/query\";\nimport * as lightnode from \"../codegen/qorechain/lightnode/v1/query\";\nimport * as pqc from \"../codegen/qorechain/pqc/v1/query\";\nimport * as qca from \"../codegen/qorechain/qca/v1/query\";\nimport * as reputation from \"../codegen/qorechain/reputation/v1/query\";\nimport * as rlconsensus from \"../codegen/qorechain/rlconsensus/v1/query\";\nimport * as svm from \"../codegen/qorechain/svm/v1/query\";\n\n/** Minimal Comet RPC client shape cosmjs's `QueryClient.withExtensions` needs. */\ntype CometClientLike = Parameters<typeof QueryClient.withExtensions>[0];\n\n/** A generated message with encode/decode (ts-proto `MessageFns`). */\ninterface Codec<T> {\n encode(message: T): { finish(): Uint8Array };\n decode(input: Uint8Array): T;\n}\n\n/**\n * Build a typed unary caller bound to a proto service + method name.\n *\n * Encodes the request, dispatches via the `ProtobufRpcClient`, and decodes the\n * response.\n */\nfunction unary<Req, Res>(\n rpc: ProtobufRpcClient,\n service: string,\n method: string,\n reqCodec: Codec<Req>,\n resCodec: Codec<Res>,\n): (request: Req) => Promise<Res> {\n return async (request: Req): Promise<Res> => {\n const data = reqCodec.encode(request).finish();\n const response = await rpc.request(service, method, data);\n return resCodec.decode(response);\n };\n}\n\n/** Cross-VM module query client. */\nexport interface CrossVmQueryClient {\n params(req?: crossvm.QueryParamsRequest): Promise<crossvm.QueryParamsResponse>;\n pendingMessages(\n req?: crossvm.QueryPendingMessagesRequest,\n ): Promise<crossvm.QueryPendingMessagesResponse>;\n message(\n req: crossvm.QueryMessageRequest,\n ): Promise<crossvm.QueryMessageResponse>;\n}\n\n/** Light-node module query client. */\nexport interface LightNodeQueryClient {\n lightNode(\n req: lightnode.QueryLightNodeRequest,\n ): Promise<lightnode.QueryLightNodeResponse>;\n lightNodes(\n req?: lightnode.QueryLightNodesRequest,\n ): Promise<lightnode.QueryLightNodesResponse>;\n}\n\n/** PQC module query client. */\nexport interface PqcQueryClient {\n account(req: pqc.QueryAccountRequest): Promise<pqc.QueryAccountResponse>;\n}\n\n/** QCA module query client. */\nexport interface QcaQueryClient {\n config(req?: qca.QueryConfigRequest): Promise<qca.QueryConfigResponse>;\n}\n\n/** Reputation module query client. */\nexport interface ReputationQueryClient {\n params(\n req?: reputation.QueryParamsRequest,\n ): Promise<reputation.QueryParamsResponse>;\n}\n\n/** RL-consensus module query client. */\nexport interface RlConsensusQueryClient {\n agentStatus(\n req?: rlconsensus.QueryAgentStatusRequest,\n ): Promise<rlconsensus.QueryAgentStatusResponse>;\n}\n\n/** SVM module query client. */\nexport interface SvmQueryClient {\n slot(req?: svm.QuerySlotRequest): Promise<svm.QuerySlotResponse>;\n account(req: svm.QueryAccountRequest): Promise<svm.QueryAccountResponse>;\n}\n\n/** All typed module query clients, grouped by module. */\nexport interface QoreChainQueryClients {\n crossvm: CrossVmQueryClient;\n lightnode: LightNodeQueryClient;\n pqc: PqcQueryClient;\n qca: QcaQueryClient;\n reputation: ReputationQueryClient;\n rlconsensus: RlConsensusQueryClient;\n svm: SvmQueryClient;\n}\n\n/**\n * Build the typed module query clients over an existing `ProtobufRpcClient`.\n *\n * Use this when you already have a cosmjs `QueryClient`/RPC client; otherwise\n * {@link connectQueryClients} sets one up from a Comet RPC client for you.\n */\nexport function createQueryClients(\n rpc: ProtobufRpcClient,\n): QoreChainQueryClients {\n return {\n crossvm: {\n params: unary(\n rpc,\n \"qorechain.crossvm.v1.Query\",\n \"Params\",\n crossvm.QueryParamsRequest,\n crossvm.QueryParamsResponse,\n ),\n pendingMessages: unary(\n rpc,\n \"qorechain.crossvm.v1.Query\",\n \"PendingMessages\",\n crossvm.QueryPendingMessagesRequest,\n crossvm.QueryPendingMessagesResponse,\n ),\n message: unary(\n rpc,\n \"qorechain.crossvm.v1.Query\",\n \"Message\",\n crossvm.QueryMessageRequest,\n crossvm.QueryMessageResponse,\n ),\n },\n lightnode: {\n lightNode: unary(\n rpc,\n \"qorechain.lightnode.v1.Query\",\n \"LightNode\",\n lightnode.QueryLightNodeRequest,\n lightnode.QueryLightNodeResponse,\n ),\n lightNodes: unary(\n rpc,\n \"qorechain.lightnode.v1.Query\",\n \"LightNodes\",\n lightnode.QueryLightNodesRequest,\n lightnode.QueryLightNodesResponse,\n ),\n },\n pqc: {\n account: unary(\n rpc,\n \"qorechain.pqc.v1.Query\",\n \"Account\",\n pqc.QueryAccountRequest,\n pqc.QueryAccountResponse,\n ),\n },\n qca: {\n config: unary(\n rpc,\n \"qorechain.qca.v1.Query\",\n \"Config\",\n qca.QueryConfigRequest,\n qca.QueryConfigResponse,\n ),\n },\n reputation: {\n params: unary(\n rpc,\n \"qorechain.reputation.v1.Query\",\n \"Params\",\n reputation.QueryParamsRequest,\n reputation.QueryParamsResponse,\n ),\n },\n rlconsensus: {\n agentStatus: unary(\n rpc,\n \"qorechain.rlconsensus.v1.Query\",\n \"AgentStatus\",\n rlconsensus.QueryAgentStatusRequest,\n rlconsensus.QueryAgentStatusResponse,\n ),\n },\n svm: {\n slot: unary(\n rpc,\n \"qorechain.svm.v1.Query\",\n \"Slot\",\n svm.QuerySlotRequest,\n svm.QuerySlotResponse,\n ),\n account: unary(\n rpc,\n \"qorechain.svm.v1.Query\",\n \"Account\",\n svm.QueryAccountRequest,\n svm.QueryAccountResponse,\n ),\n },\n };\n}\n\n/**\n * Build the typed module query clients from a Comet RPC client.\n *\n * Wraps the RPC client in a cosmjs {@link QueryClient}, derives a\n * `ProtobufRpcClient`, and returns the per-module typed clients. The caller owns\n * the RPC client's lifecycle (disconnect it when done).\n */\nexport function connectQueryClients(\n cometClient: CometClientLike,\n): QoreChainQueryClients {\n const base = QueryClient.withExtensions(cometClient);\n const rpc = createProtobufRpcClient(base);\n return createQueryClients(rpc);\n}\n","/**\n * `@qorechain/sdk` public API.\n *\n * The exports below are the deliberate, supported surface of the SDK. Start with\n * {@link createClient} for the high-level composed client; the individual\n * networks, accounts, query clients, and tx primitives are also exported for\n * callers who want to compose them directly. Internal helpers are not exported.\n */\n\n/** SDK version. */\nexport const VERSION = \"0.3.0\";\n\n// Top-level factory: the recommended entrypoint that resolves a network and\n// composes the read clients, fee helper, and a lazy signing entrypoint.\nexport { createClient } from \"./client\";\nexport type {\n QoreChainClient,\n CreateClientOptions,\n ConnectTxOptions,\n ClientFees,\n} from \"./client\";\n\n// Networks: presets, lookup/list helpers, and config types.\nexport * from \"./config/networks\";\n\n// Explorer + faucet helpers (config-driven; no hostnames baked in). The\n// explorer URL builders and faucet request require the network's\n// `explorerUrl` / `faucetUrl` (both `undefined` by default) and throw a clear\n// error otherwise.\nexport {\n explorerTxUrl,\n explorerAddressUrl,\n explorerBlockUrl,\n type ExplorerConfig,\n} from \"./explorer\";\nexport {\n requestFaucet,\n type FaucetConfig,\n type RequestFaucetOptions,\n} from \"./faucet\";\n\n// Utilities: denom conversion and address encoding/validation.\nexport * from \"./utils/denom\";\nexport * from \"./utils/address\";\n// Generic integer-exact unit math (EVM 18-decimals etc.), hash helpers, and\n// cross-VM address validation + EIP-55 checksum.\nexport { parseUnits, formatUnits } from \"./utils/units\";\nexport {\n sha256,\n sha256Hex,\n keccak256,\n keccak256Hex,\n ripemd160,\n ripemd160Hex,\n toHex,\n} from \"./utils/hash\";\nexport type { HashInput } from \"./utils/hash\";\nexport {\n isValidEvmAddress,\n toChecksumAddress,\n isChecksumAddress,\n isValidSvmAddress,\n} from \"./utils/validation\";\n\n// Accounts & keys. Re-export the documented derivation functions and types only.\n// The derive functions return key material deliberately (callers need it for\n// signing); nothing here leaks secrets implicitly.\nexport {\n generateMnemonic,\n validateMnemonic,\n deriveNativeAccount,\n deriveEvmAccount,\n deriveSvmAccount,\n} from \"./accounts/wallet\";\nexport type {\n KeyType,\n Account,\n DerivationOptions,\n Secp256k1Account,\n Ed25519Account,\n} from \"./accounts/types\";\n\n// Post-quantum (PQC) signing: ML-DSA-87 (Dilithium-5) primitives, the pluggable\n// Signer abstraction, and the on-chain hybrid-signature extension builder.\nexport {\n AlgorithmUnspecified,\n AlgorithmDilithium5,\n AlgorithmMLKEM1024,\n algorithmName,\n isSignatureAlgorithm,\n ML_DSA_87_PUBLIC_KEY_LENGTH,\n ML_DSA_87_SECRET_KEY_LENGTH,\n ML_DSA_87_SIGNATURE_LENGTH,\n ML_DSA_87_SEED_LENGTH,\n HYBRID_SIG_TYPE_URL,\n generatePqcKeypair,\n pqcSign,\n pqcVerify,\n buildHybridSignatureExtension,\n PqcSigner,\n HybridSigner,\n} from \"./accounts/pqc\";\nexport type {\n AlgorithmID,\n PqcKeypair,\n PQCHybridSignature,\n Signer,\n SignOutput,\n SignatureMode,\n PqcSignaturePart,\n} from \"./accounts/pqc\";\n\n// Read/query clients: shared HTTP transport, Cosmos+custom REST, the generic\n// JSON-RPC 2.0 client (with thin EVM helpers), and the typed `qor_` namespace.\nexport {\n getJson,\n postJsonRpc,\n buildUrl,\n joinUrl,\n QoreHttpError,\n} from \"./query/http\";\nexport type {\n FetchLike,\n QueryValue,\n HttpOptions,\n GetJsonOptions,\n} from \"./query/http\";\nexport { JsonRpcClient, JsonRpcError } from \"./query/jsonrpc\";\nexport type {\n JsonRpcClientOptions,\n JsonRpcResponse,\n JsonRpcErrorObject,\n} from \"./query/jsonrpc\";\nexport { RestClient } from \"./query/rest\";\nexport type {\n RestClientOptions,\n Coin,\n PageResponse,\n AllBalancesResponse,\n BalanceResponse,\n Pagination,\n PaginatedOptions,\n FeeUrgency,\n} from \"./query/rest\";\nexport { QorClient } from \"./query/qor\";\n\n// Cross-VM reads: typed REST wrappers over `x/crossvm`. EVM→native routing\n// itself runs on-chain via the cross-VM bridge precompile in `@qorechain/evm`;\n// these helpers (and `QorClient.getCrossVmMessage`) track message state.\nexport {\n getCrossVmMessage,\n getPendingCrossVmMessages,\n getCrossVmParams,\n} from \"./query/crossvm\";\nexport type {\n CrossVmMessage,\n CrossVmMessageResponse,\n PendingCrossVmMessagesResponse,\n CrossVmParamsResponse,\n} from \"./query/crossvm\";\n\n// CosmWasm: read/signing client constructors plus thin typed wrappers over\n// `@cosmjs/cosmwasm-stargate` (query/instantiate/execute/upload).\nexport {\n createCosmWasmClient,\n connectCosmWasmSigner,\n queryContractSmart,\n getContractInfo,\n instantiate,\n execute,\n uploadCode,\n instantiate2,\n migrate,\n updateAdmin,\n clearAdmin,\n getCodes,\n getContracts,\n getCodeDetails,\n} from \"./cosmwasm\";\nexport type {\n ContractMsg,\n FeeInput,\n CosmWasmReadClient,\n CosmWasmSigningClient,\n InstantiateOpts,\n} from \"./cosmwasm\";\n\n// Native transactions: fee estimation, the signer adapter, the tx builder /\n// broadcaster, the low-level PQC hybrid extension encode/attach helpers, and the\n// end-to-end hybrid (classical + PQC) signing/broadcast builder. See each module\n// for details.\nexport { estimateFee, STATIC_FALLBACK } from \"./tx/fees\";\nexport type { StdFee, EstimateFeeOptions } from \"./tx/fees\";\nexport { directSignerFromPrivateKey } from \"./tx/signer-adapter\";\nexport type { BroadcastMode, BroadcastResult } from \"./tx/broadcast\";\nexport {\n TxClient,\n MSG_SEND_TYPE_URL,\n buildAminoTypes,\n DEFAULT_GAS_MULTIPLIER,\n DEFAULT_GAS_PRICE,\n} from \"./tx/builder\";\nexport type {\n SigningClientLike,\n TxClientOptions,\n TxConnectOptions,\n SignAndBroadcastOptions,\n SimulateOptions,\n BankSendOptions,\n AutoFeeOptions,\n FeeInput as TxFeeInput,\n} from \"./tx/builder\";\n// Auto-gas fee math: gas-price parsing and ceil(gas * price) fee computation.\nexport { GasPrice, calculateFee } from \"./tx/gas\";\n\n// Transaction error decoding: structured, human-readable errors with a typed\n// QoreTxError thrown on non-zero ABCI codes.\nexport {\n decodeTxError,\n isTxFailure,\n QoreTxError,\n txErrorFrom,\n} from \"./errors\";\nexport type {\n TxErrorInput,\n DecodedTxError,\n TxResultLike,\n} from \"./errors\";\n\n// Event subscriptions over the consensus RPC websocket: new blocks and Tx\n// events, each returning an unsubscribe function.\nexport {\n createSubscriptionClient,\n subscribeNewBlocks,\n subscribeTx,\n buildTxQuery,\n} from \"./subscribe\";\nexport type {\n Handler,\n Unsubscribe,\n EventStream,\n NewBlockEventLike,\n TxEventLike,\n SubscriptionClient,\n TxQueryFilters,\n} from \"./subscribe\";\n\n// Tx tracking + retry: poll for inclusion, broadcast-and-wait, and a transient\n// error retry helper.\nexport { waitForTx, broadcastAndWait, withRetry } from \"./track\";\nexport type {\n GetTxFn,\n WaitForTxOptions,\n IncludedTx,\n SyncBroadcaster,\n RetryOptions,\n} from \"./track\";\n\n// Block/tx lookup + search over REST, with an events query builder.\nexport {\n getTx,\n getBlock,\n getLatestBlock,\n searchTxs,\n buildEventsQuery,\n} from \"./search\";\nexport type {\n GetTxResponse,\n GetBlockResponse,\n SearchTxsResponse,\n TxOrderBy,\n SearchTxsOptions,\n EventFilters,\n} from \"./search\";\nexport { encodeHybridExtension, attachHybridExtension } from \"./tx/hybrid\";\nexport type { HybridPlacement, AttachHybridOptions } from \"./tx/hybrid\";\nexport { buildHybridTx, signAndBroadcastHybrid } from \"./tx/hybrid-tx\";\nexport type {\n BuildHybridTxOptions,\n BuiltHybridTx,\n HybridBroadcaster,\n SignAndBroadcastHybridOptions,\n} from \"./tx/hybrid-tx\";\n\n// Messages: typed composers for every transaction the chain supports, plus the\n// message registry that resolves them. `msg.<module>.<message>(value)` returns a\n// cosmjs `{ typeUrl, value }` ready for `TxClient.signAndBroadcast` or the hybrid\n// tx path; `qorechainRegistry()` seeds a cosmjs Registry with the standard Cosmos\n// types and all QoreChain custom-module messages (the default for `TxClient`).\nexport {\n msg,\n qorechainRegistry,\n qorechainRegistryTypes,\n} from \"./messages\";\n// Per-module composer groups, also re-exported for tree-shakeable named imports.\nexport {\n bank,\n staking,\n distribution,\n gov,\n authz,\n feegrant,\n ibc,\n amm,\n bridge,\n rdk,\n multilayer,\n pqc as pqcMsg,\n svm,\n lightnode,\n license,\n abstractaccount,\n crossvm,\n rlconsensus,\n} from \"./messages\";\n// Generated message types, namespaced by module, for callers who want the raw\n// encode/decode/interface types (e.g. to decode a message read back from chain).\nexport * as qorechainTypes from \"./codegen\";\n\n// Browser wallets: Keplr/Leap connection + chain-suggestion helper. The\n// returned signer plugs straight into `TxClient.connect` and can carry standard\n// and custom messages via DIRECT signing.\nexport { getCosmosWallet, suggestChainInfo } from \"./wallet/cosmos\";\nexport type {\n CosmosWalletName,\n GetCosmosWalletOptions,\n CosmosWalletConnection,\n InjectedCosmosWallet,\n KeplrChainInfo,\n KeplrCurrency,\n KeplrFeeCurrency,\n Bech32Config,\n} from \"./wallet/cosmos\";\n\n// Typed gRPC query clients for the modules with a query service (crossvm,\n// lightnode, pqc, qca, reputation, rlconsensus, svm) over a cosmjs QueryClient.\nexport { createQueryClients, connectQueryClients } from \"./query/grpc\";\nexport type {\n QoreChainQueryClients,\n CrossVmQueryClient,\n LightNodeQueryClient,\n PqcQueryClient,\n QcaQueryClient,\n ReputationQueryClient,\n RlConsensusQueryClient,\n SvmQueryClient,\n} from \"./query/grpc\";\n"]}
|