@monolythium/core-sdk 0.1.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/LICENSE +204 -0
- package/README.md +200 -0
- package/dist/client-CpnpVkrR.d.cts +2237 -0
- package/dist/client-CpnpVkrR.d.ts +2237 -0
- package/dist/crypto/index.cjs +593 -0
- package/dist/crypto/index.cjs.map +1 -0
- package/dist/crypto/index.d.cts +166 -0
- package/dist/crypto/index.d.ts +166 -0
- package/dist/crypto/index.js +542 -0
- package/dist/crypto/index.js.map +1 -0
- package/dist/index.cjs +2285 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +949 -0
- package/dist/index.d.ts +949 -0
- package/dist/index.js +2214 -0
- package/dist/index.js.map +1 -0
- package/package.json +66 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/error.ts","../src/types.ts","../src/api.ts","../src/consts.ts","../src/node-registry.ts","../src/registry.ts","../src/client.ts","../src/address.ts","../src/spending-policy.ts","../src/pubkey-registry.ts","../src/ethers/network.ts","../src/ethers/provider.ts","../src/ethers/signer.ts","../src/ethers/tx-translate.ts","../src/index.ts"],"names":["SDK_VERSION","expectLength","concatBytes","bytesToHex","hexToBytes","toBytes","encodeSingleAddressCall","toAddressBytes"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * Error surfaced by `RpcClient`. Distinguishes transport failures\n * (HTTP errors, network), protocol errors (JSON-RPC `error` envelopes),\n * and shape mismatches.\n */\nexport class SdkError extends Error {\n public readonly kind: \"transport\" | \"rpc\" | \"malformed\" | \"endpoint\";\n public readonly code?: number;\n public readonly data?: unknown;\n\n constructor(\n kind: \"transport\" | \"rpc\" | \"malformed\" | \"endpoint\",\n message: string,\n opts?: { code?: number; data?: unknown; cause?: unknown },\n ) {\n super(message, opts?.cause ? { cause: opts.cause } : undefined);\n this.name = \"SdkError\";\n this.kind = kind;\n this.code = opts?.code;\n this.data = opts?.data;\n }\n\n static transport(message: string, cause?: unknown): SdkError {\n return new SdkError(\"transport\", message, { cause });\n }\n static rpc(code: number, message: string, data?: unknown): SdkError {\n return new SdkError(\"rpc\", `rpc error ${code}: ${message}`, { code, data });\n }\n static malformed(message: string): SdkError {\n return new SdkError(\"malformed\", message);\n }\n static endpoint(message: string): SdkError {\n return new SdkError(\"endpoint\", message);\n }\n}\n","/**\n * Wire-shape types served by a `mono-core` node.\n *\n * Re-exports the `ts-rs`-generated definitions in `./bindings/`. Those\n * files are the authoritative source — they are written from Rust by\n * `cargo test --features ts-bindings` and copied into this package via\n * `pnpm run build:bindings` / `bash scripts/sync-bindings.sh`.\n *\n * Quantities (`u64` etc.) surface as `bigint` to preserve full\n * precision against the chain's 256-bit world. Hashes / addresses /\n * `0x`-hex byte vectors surface as `string`.\n */\n\nexport type * from \"./bindings/index.js\";\n\n/** `0x`-prefixed hex byte vector. */\nexport type Hex = string;\n\n/** `0x`-prefixed hex 20-byte address. */\nexport type Address = string;\n\n/** `0x`-prefixed hex 32-byte hash. */\nexport type Hash = string;\n\n/** `0x`-prefixed hex unsigned quantity. */\nexport type Quantity = string;\n\nimport type { BlockTag } from \"./bindings/BlockTag.js\";\nexport type { BlockTag };\n\n/**\n * Block selector for `eth_getBlock*`, `eth_call`, etc. — accepts a tag,\n * a numeric height (encoded by the client as `0x`-hex), a `bigint`, or\n * a 32-byte hash where the spec allows it.\n */\nexport type BlockSelector = BlockTag | number | bigint | Hash;\n\n/** Encode a `BlockSelector` for a JSON-RPC params array. */\nexport function encodeBlockSelector(b: BlockSelector): string {\n if (typeof b === \"number\") return `0x${b.toString(16)}`;\n if (typeof b === \"bigint\") return `0x${b.toString(16)}`;\n return b;\n}\n","/**\n * Typed HTTP client for the explorer-facing `/api/v1` surface served by\n * `mono-core`.\n *\n * JSON-RPC stays on `RpcClient`; this class is for REST-shaped node API\n * routes used by explorers, wallets, and status pages.\n */\n\nimport { SdkError } from \"./error.js\";\nimport type { ClobMarketResponse } from \"./bindings/ClobMarketResponse.js\";\nimport type { BlockSelector } from \"./types.js\";\nimport { encodeBlockSelector } from \"./types.js\";\nimport type {\n AddressFlowResponse,\n AddressProfileResponse,\n ChainStatsResponse,\n ClobMarketsResponse,\n ClobOhlcResponse,\n ClobOrderBookResponse,\n ClobTradesResponse,\n OperatorCapabilitiesResponse,\n RuntimeBuildProvenance,\n RuntimeUpgradeStatus,\n SearchResponse,\n ServiceProbeResponse,\n TxFeedResponse,\n} from \"./client.js\";\n\nconst SDK_VERSION = \"0.1.0\";\n\nexport interface ApiClientOptions {\n /** Override `fetch`. Useful for tests or non-browser runtimes. */\n fetch?: typeof fetch;\n /** Extra headers to attach to every request. */\n headers?: Record<string, string>;\n /** Explicit `/api/v1` base URL. Defaults to deriving it from the RPC URL. */\n apiBaseUrl?: string;\n}\n\nexport interface ApiErrorEnvelope {\n schemaVersion?: number;\n error: {\n code: number;\n message: string;\n data?: unknown;\n };\n}\n\nexport interface ApiLatestAnchor {\n available: boolean;\n height?: number;\n blockHash?: string | null;\n stateRoot?: string;\n timestamp?: number;\n error?: {\n code: number;\n message: string;\n };\n}\n\nexport interface ApiEnvelope<T> {\n schemaVersion: number;\n chainId: number;\n genesisHash: string | null;\n latest: ApiLatestAnchor;\n data: T;\n}\n\nexport interface ApiHealthResponse {\n schemaVersion: number;\n status: \"ok\" | \"syncing\" | string;\n chainId: number;\n latest: ApiLatestAnchor;\n api: {\n enabled: boolean;\n version: string;\n };\n}\n\nexport interface ApiIndexerStatus {\n enabled: boolean;\n currentHeight?: number;\n latestHeight?: number | null;\n schemaVersion?: number;\n retention?: unknown;\n error?: {\n code: number;\n message: string;\n };\n}\n\nexport interface ApiCapabilitiesResponse {\n schemaVersion: number;\n chainId: number;\n genesisHash: string | null;\n clientVersion: string;\n latest: ApiLatestAnchor;\n api: {\n enabled: boolean;\n version: string;\n docs: string;\n openapi: string;\n };\n jsonRpc: {\n endpoint: string;\n webSocket: string;\n protocolVersion: string;\n debugEnabled: boolean;\n };\n streams: {\n transport: \"sse\" | string;\n index: string;\n topicEndpoint: string;\n keepAliveSeconds: number;\n };\n indexer: ApiIndexerStatus;\n rateLimit: {\n perIp: {\n ratePerSec: number;\n burst: number;\n };\n apiKeysConfigured: boolean;\n apiKeyOverrideCount: number;\n budgetIdentity: \"api_key_or_resolved_client_ip\" | string;\n defaultCostBudgetPerMin: number;\n retryAfterHeader: boolean;\n costWeights: {\n api: Record<string, number>;\n jsonRpc: Record<string, number>;\n };\n };\n operatorCapabilities: {\n jsonRpcMethod: \"lyth_operatorCapabilities\" | string;\n schemaVersion: number | null;\n surfaces: OperatorCapabilitiesResponse[\"surfaces\"];\n };\n accessPolicy: {\n trustedProxy: {\n configured: boolean;\n cidrCount: number;\n };\n clientCidr: {\n unrestricted: boolean;\n allowCidrCount: number;\n denyCidrCount: number;\n };\n paidServiceEligibility: {\n source: \"external_probe\" | string;\n selfDeclaration: boolean;\n };\n };\n}\n\nexport interface ApiBlockHeader {\n height: number;\n blockHash: string;\n parentHash: string;\n stateRoot: string;\n timestamp: number;\n gasUsed: number;\n gasLimit: number;\n baseFeePerGas: string;\n}\n\nexport interface ApiLogEntry {\n address: string;\n topics: string[];\n data: string;\n}\n\nexport interface ApiTransactionView {\n txHash: string;\n blockHash: string;\n blockHeight: number;\n txIndex: number;\n from: string;\n to: string | null;\n nonce: number;\n value: string;\n maxFeePerGas: string;\n maxPriorityFeePerGas: string;\n gasLimit: number;\n input: string;\n signedEnvelope: string;\n}\n\nexport interface ApiTransactionReceipt {\n txHash: string;\n blockHash: string;\n blockHeight: number;\n txIndex: number;\n status: number;\n gasUsed: number;\n logs: ApiLogEntry[];\n}\n\nexport interface ApiAddressActivityEntry {\n blockHeight: number;\n txIndex: number;\n logIndex: number;\n kind: \"transfer\" | \"swap\" | \"staking\" | \"delegation\" | string;\n direction: \"in\" | \"out\" | string | null;\n counterparty: string | null;\n tokenId: string | null;\n amount: string | null;\n cluster: number | null;\n weightBps: number | null;\n subKind: string | null;\n}\n\nexport interface ApiBlockData {\n block: ApiBlockHeader;\n transactionCount: number;\n transactionHashes: string[];\n source: { chainProvider: string };\n}\n\nexport interface ApiBlockTransactionsData {\n block: ApiBlockHeader;\n page: number;\n limit: number;\n totalTransactions: number;\n transactions: ApiTransactionView[];\n source: { chainProvider: string };\n}\n\nexport interface ApiTransactionData {\n transaction: ApiTransactionView;\n receipt: ApiTransactionReceipt | null;\n source: { chainProvider: string };\n}\n\nexport interface ApiTransactionReceiptData {\n receipt: ApiTransactionReceipt;\n source: { chainProvider: string };\n}\n\nexport interface ApiAddressActivityData {\n address: string;\n limit: number;\n entries: ApiAddressActivityEntry[];\n indexer: ApiIndexerStatus;\n}\n\nexport type ApiAddressActivityKind =\n | \"found\"\n | \"not_found\"\n | \"indexer_disabled\"\n | \"pruned\"\n | \"private\"\n | string;\n\nexport interface ApiAddressActivityKindSummary {\n kind: ApiAddressActivityKind;\n retention?: unknown;\n}\n\nexport interface ApiAddressActivityKindData {\n address: string;\n activity: ApiAddressActivityKindSummary;\n indexer: ApiIndexerStatus;\n}\n\nexport interface ApiClusterDirectoryEntry {\n clusterId: number;\n size: number;\n threshold: number;\n aggregateHealth: string;\n regionDiversity: string[] | null;\n active: boolean;\n}\n\nexport interface ApiClusterDirectoryPage {\n page: number;\n limit: number;\n totalClusters: number;\n clusters: ApiClusterDirectoryEntry[];\n}\n\nexport interface ApiClusterMember {\n operatorId: string;\n blsPubkey: string;\n state: string;\n}\n\nexport interface ApiClusterStatus {\n clusterId: number;\n threshold: number;\n size: number;\n live: number;\n lagging: number;\n offline: number;\n maintenance: number;\n members: ApiClusterMember[];\n epoch: number | null;\n round: number | null;\n quorum: string;\n reputationScore: number | null;\n livenessScore: number | null;\n lastUpdateHeight: number;\n}\n\nexport interface ApiClustersData {\n clusters: ApiClusterDirectoryPage;\n source: { registryProvider: string };\n}\n\nexport interface ApiClusterData {\n cluster: ApiClusterStatus;\n source: { registryProvider: string };\n}\n\nexport interface ApiOperatorInfo {\n operatorId: string;\n moniker: string | null;\n alias: string | null;\n chainAddress: string;\n bonded: boolean;\n commissionBps: number | null;\n delegationCount: number | null;\n bondedAmount: string;\n activeClusterIds: number[];\n operatorKeyFingerprint: string | null;\n blsKeyFingerprint: string | null;\n lifecycleState: string;\n capability: Record<string, unknown>;\n}\n\nexport interface ApiOperatorData {\n operator: ApiOperatorInfo;\n source: { registryProvider: string };\n}\n\nexport interface ApiServiceProbeData {\n peerId: string;\n serviceMask: number;\n probe: ServiceProbeResponse | null;\n source: { registryProvider: string };\n}\n\nexport interface ApiUpgradePlanStatus {\n upgradeId: string;\n activationHeight: number;\n activationRound: number | null;\n requiredBinaryVersion: string;\n expectedBinaryDigest: string;\n p2pProtocolVersion: number;\n requiredFeatures: string[];\n milestoneFileDigest: string | null;\n stateMigrationId: string | null;\n stateMigrationHash: string | null;\n}\n\nexport interface ApiUpgradeStatus {\n blockHeight: number;\n configured: boolean;\n planCount: number;\n active: ApiUpgradePlanStatus | null;\n pending: ApiUpgradePlanStatus[];\n}\n\nexport interface ApiUpgradeStatusData {\n upgrade: ApiUpgradeStatus;\n source: { chainProvider: string };\n}\n\nexport interface ApiRuntimeProvenanceData {\n runtime: RuntimeBuildProvenance;\n upgrade: RuntimeUpgradeStatus | null;\n source: { chainProvider: string };\n}\n\nexport type ApiQueryValue = string | number | bigint | boolean | null | undefined;\n\nexport function apiEndpointFromRpcEndpoint(endpoint: string): string {\n const raw = endpoint.trim();\n if (raw.length === 0) {\n throw SdkError.endpoint(\"endpoint cannot be empty\");\n }\n const noTrailing = raw.replace(/\\/+$/, \"\");\n if (noTrailing.endsWith(\"/api/v1\")) {\n return noTrailing;\n }\n\n if (/^[a-zA-Z][a-zA-Z\\d+\\-.]*:/.test(noTrailing)) {\n const url = new URL(noTrailing);\n const path = url.pathname.replace(/\\/+$/, \"\");\n if (path === \"\" || path === \"/\" || path === \"/rpc\") {\n url.pathname = \"/api/v1\";\n } else if (path.endsWith(\"/rpc\")) {\n url.pathname = `${path.slice(0, -\"/rpc\".length)}/api/v1`;\n } else {\n url.pathname = \"/api/v1\";\n }\n url.search = \"\";\n url.hash = \"\";\n return url.toString().replace(/\\/+$/, \"\");\n }\n\n return \"/api/v1\";\n}\n\nexport class ApiClient {\n readonly baseUrl: string;\n readonly #fetch: typeof fetch;\n readonly #headers: Record<string, string>;\n\n constructor(endpoint: string, options: ApiClientOptions = {}) {\n this.baseUrl = (options.apiBaseUrl ?? apiEndpointFromRpcEndpoint(endpoint)).replace(/\\/+$/, \"\");\n this.#fetch = options.fetch ?? globalThis.fetch.bind(globalThis);\n this.#headers = {\n accept: \"application/json\",\n \"user-agent\": `monolythium-core-sdk/${SDK_VERSION}`,\n ...(options.headers ?? {}),\n };\n }\n\n async get<T>(path: string, query: Record<string, ApiQueryValue> = {}): Promise<T> {\n return this.#get<T>(path, query, false);\n }\n\n async health(): Promise<ApiHealthResponse> {\n return this.#get(\"/health\", {}, true);\n }\n\n async capabilities(): Promise<ApiCapabilitiesResponse> {\n return this.get(\"/capabilities\");\n }\n\n async provenance(): Promise<ApiEnvelope<ApiRuntimeProvenanceData>> {\n return this.get(\"/provenance\");\n }\n\n async search(query: string, limit = 10): Promise<ApiEnvelope<SearchResponse>> {\n return this.get(\"/search\", { q: query, limit });\n }\n\n async stats(): Promise<ApiEnvelope<ChainStatsResponse>> {\n return this.get(\"/stats\");\n }\n\n async block(block: BlockSelector = \"latest\"): Promise<ApiEnvelope<ApiBlockData>> {\n return this.get(`/blocks/${encodePathBlock(block)}`);\n }\n\n async blockTransactions(\n block: BlockSelector = \"latest\",\n page = 0,\n limit = 25,\n ): Promise<ApiEnvelope<ApiBlockTransactionsData>> {\n return this.get(`/blocks/${encodePathBlock(block)}/transactions`, { page, limit });\n }\n\n async transactions(limit = 50, cursor?: string | null): Promise<ApiEnvelope<TxFeedResponse>> {\n return this.get(\"/transactions\", { limit, cursor });\n }\n\n async transaction(hash: string): Promise<ApiEnvelope<ApiTransactionData>> {\n return this.get(`/transactions/${encodePathSegment(hash)}`);\n }\n\n async transactionReceipt(hash: string): Promise<ApiEnvelope<ApiTransactionReceiptData>> {\n return this.get(`/transactions/${encodePathSegment(hash)}/receipt`);\n }\n\n async addressProfile(address: string): Promise<ApiEnvelope<AddressProfileResponse>> {\n return this.get(`/addresses/${encodePathSegment(address)}/profile`);\n }\n\n async addressFlow(address: string, limit = 250): Promise<ApiEnvelope<AddressFlowResponse>> {\n return this.get(`/addresses/${encodePathSegment(address)}/flow`, { limit });\n }\n\n async addressActivity(\n address: string,\n limit = 50,\n cursor?: string | null,\n ): Promise<ApiEnvelope<ApiAddressActivityData>> {\n return this.get(`/addresses/${encodePathSegment(address)}/activity`, {\n limit,\n cursor,\n });\n }\n\n async addressActivityKind(address: string): Promise<ApiEnvelope<ApiAddressActivityKindData>> {\n return this.get(`/addresses/${encodePathSegment(address)}/activity-kind`);\n }\n\n async clusters(page = 0, limit = 25): Promise<ApiEnvelope<ApiClustersData>> {\n return this.get(\"/clusters\", { page, limit });\n }\n\n async cluster(clusterId: number): Promise<ApiEnvelope<ApiClusterData>> {\n return this.get(`/clusters/${encodePathSegment(clusterId)}`);\n }\n\n async operator(operatorId: string): Promise<ApiEnvelope<ApiOperatorData>> {\n return this.get(`/operators/${encodePathSegment(operatorId)}`);\n }\n\n async serviceProbe(\n peerId: string,\n serviceMask: number | string,\n ): Promise<ApiEnvelope<ApiServiceProbeData>> {\n return this.get(\n `/service-probes/${encodePathSegment(peerId)}/${encodePathSegment(serviceMask)}`,\n );\n }\n\n async markets(limit = 50): Promise<ApiEnvelope<ClobMarketsResponse>> {\n return this.get(\"/markets\", { limit });\n }\n\n async market(marketId: string): Promise<ApiEnvelope<ClobMarketResponse>> {\n return this.get(`/markets/${encodePathSegment(marketId)}`);\n }\n\n async marketTrades(\n marketId: string,\n limit = 50,\n cursor?: string | null,\n ): Promise<ApiEnvelope<ClobTradesResponse>> {\n return this.get(`/markets/${encodePathSegment(marketId)}/trades`, { limit, cursor });\n }\n\n async marketOhlc(\n marketId: string,\n fromBlock?: number | bigint | null,\n toBlock?: number | bigint | null,\n bucketBlocks?: number | bigint | null,\n ): Promise<ApiEnvelope<ClobOhlcResponse>> {\n return this.get(`/markets/${encodePathSegment(marketId)}/ohlc`, {\n fromBlock,\n toBlock,\n bucketBlocks,\n });\n }\n\n async marketOrderBook(\n marketId: string,\n levels = 20,\n ): Promise<ApiEnvelope<ClobOrderBookResponse>> {\n return this.get(`/markets/${encodePathSegment(marketId)}/orderbook`, { levels });\n }\n\n async upgradeStatus(height?: BlockSelector | null): Promise<ApiEnvelope<ApiUpgradeStatusData>> {\n return this.get(\"/upgrades/status\", {\n height: height == null ? undefined : encodeBlockSelector(height),\n });\n }\n\n async #get<T>(\n path: string,\n query: Record<string, ApiQueryValue>,\n allowUnavailableBody: boolean,\n ): Promise<T> {\n const url = buildUrl(this.baseUrl, path, query);\n let resp: Response;\n try {\n resp = await this.#fetch(url, {\n method: \"GET\",\n headers: this.#headers,\n });\n } catch (cause) {\n throw SdkError.transport(\n `transport failure calling ${url}: ${(cause as Error)?.message ?? cause}`,\n cause,\n );\n }\n\n let parsed: unknown;\n try {\n parsed = await resp.json();\n } catch (cause) {\n throw SdkError.malformed(\n `non-JSON response (HTTP ${resp.status}): ${(cause as Error)?.message ?? cause}`,\n );\n }\n\n const error = parseApiError(parsed);\n if (error) {\n throw SdkError.rpc(error.code, error.message, error.data);\n }\n if (!resp.ok && !(allowUnavailableBody && resp.status === 503)) {\n throw SdkError.transport(`HTTP ${resp.status} calling ${url}`);\n }\n return parsed as T;\n }\n}\n\nfunction parseApiError(value: unknown): ApiErrorEnvelope[\"error\"] | null {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) return null;\n const error = (value as Record<string, unknown>)[\"error\"];\n if (!error || typeof error !== \"object\" || Array.isArray(error)) return null;\n const row = error as Record<string, unknown>;\n if (typeof row[\"code\"] !== \"number\" || typeof row[\"message\"] !== \"string\") {\n return null;\n }\n return {\n code: row[\"code\"],\n message: row[\"message\"],\n data: row[\"data\"],\n };\n}\n\nfunction buildUrl(baseUrl: string, path: string, query: Record<string, ApiQueryValue>): string {\n const cleanBase = baseUrl.replace(/\\/+$/, \"\");\n const cleanPath = path.startsWith(\"/\") ? path : `/${path}`;\n const params = new URLSearchParams();\n for (const [key, value] of Object.entries(query)) {\n if (value === undefined || value === null) continue;\n params.set(key, typeof value === \"bigint\" ? value.toString() : String(value));\n }\n const qs = params.toString();\n return qs.length === 0 ? `${cleanBase}${cleanPath}` : `${cleanBase}${cleanPath}?${qs}`;\n}\n\nfunction encodePathBlock(block: BlockSelector): string {\n return encodePathSegment(encodeBlockSelector(block));\n}\n\nfunction encodePathSegment(value: string | number | bigint): string {\n return encodeURIComponent(typeof value === \"bigint\" ? value.toString() : String(value));\n}\n","/**\n * Canonical chain constants exported from `@monolythium/core-sdk`.\n *\n * These values are sourced from the mono-core runtime — never hand-pick\n * a different address or pretend the burn destination lives elsewhere.\n * Cross-references below cite the runtime files that own each value.\n */\n\n/**\n * EIP-1559 base-fee burn destination (Law §5.2).\n *\n * Every base-fee unit consumed by a transaction is sent to this address\n * and removed from circulating supply. The address is the canonical\n * zero address — there is no private key for it on any chain, so funds\n * routed here are unrecoverable by construction.\n *\n * Surfaces (wallets, explorers, dashboards) display burn balances by\n * reading the balance of `BURN_ADDR` directly; do not roll a separate\n * \"treasury\" representation for burnt fees.\n */\nexport const BURN_ADDR = \"0x0000000000000000000000000000000000000000\" as const;\n\n/**\n * SDK-exposed precompile address map (whitepaper v4.0).\n *\n * Sourced from `mono-core` runtime/precompile constants and pinned here\n * so surfaces can render precompile traffic by name without\n * re-defining low-band address literals.\n *\n * `0x1002` and `0x1006` are intentionally absent from the SDK surface\n * because whitepaper v4.0 does not define those application surfaces.\n */\nexport const PRECOMPILE_ADDRESSES = {\n /** Native fungible-token factory — non-gateable, foundational. */\n TOKEN_FACTORY: \"0x0000000000000000000000000000000000001000\",\n /** Native central-limit order book — gateable. */\n CLOB: \"0x0000000000000000000000000000000000001001\",\n /** Agent execution surface (zkML-gated, ADR-0011/ADR-0020) — gateable. */\n AGENT: \"0x0000000000000000000000000000000000001003\",\n /** Account privacy policy + stealth/confidential ops — gateable. */\n PRIVACY: \"0x0000000000000000000000000000000000001004\",\n /** Operator + RPC node registry — non-gateable consensus invariant. */\n NODE_REGISTRY: \"0x0000000000000000000000000000000000001005\",\n /** IBC light-client + packet routing — gateable. */\n IBC: \"0x0000000000000000000000000000000000001007\",\n /** Native zk-light-client bridge — gateable. */\n BRIDGE: \"0x0000000000000000000000000000000000001008\",\n /** Decentralized multi-signer oracle (OI-0036) — non-gateable. */\n ORACLE: \"0x0000000000000000000000000000000000001009\",\n /** Distributed delegation primitive (Stage E.5a, Law §7.6) — gateable. */\n DELEGATION: \"0x000000000000000000000000000000000000100A\",\n /** One-time emergency-key registry (Law §5.4 / §2.9) — non-gateable. */\n EMERGENCY_KEY: \"0x0000000000000000000000000000000000001100\",\n /** VRF precompile (Law §5.4 / §5.6). */\n VRF: \"0x0000000000000000000000000000000000001101\",\n /** Streaming-payments primitive (Law §5.4 / §5.7) — gateable. */\n STREAMING_PAYMENTS: \"0x0000000000000000000000000000000000001102\",\n /** Human-readable name registry (Law §5.4 / §5.8) — gateable. */\n NAME_REGISTRY: \"0x0000000000000000000000000000000000001103\",\n /** Cluster-name registry. */\n CLUSTER_NAME_REGISTRY: \"0x0000000000000000000000000000000000001104\",\n /** Agent-commerce attestation precompile. */\n ATTESTATION: \"0x0000000000000000000000000000000000001105\",\n /** Agent-commerce consent precompile. */\n CONSENT: \"0x0000000000000000000000000000000000001106\",\n /** Agent-commerce issuer registry. */\n ISSUER_REGISTRY: \"0x0000000000000000000000000000000000001107\",\n /** Agent-commerce discovery precompile. */\n DISCOVERY: \"0x0000000000000000000000000000000000001108\",\n /** Agent-commerce availability precompile. */\n AVAILABILITY: \"0x0000000000000000000000000000000000001109\",\n /** Agent-commerce escrow precompile. */\n ESCROW: \"0x000000000000000000000000000000000000110A\",\n /** Agent-commerce arbiter registry. */\n ARBITER_REGISTRY: \"0x000000000000000000000000000000000000110B\",\n /** Agent spending policy — gateable, activated by Stage 7 milestones. */\n SPENDING_POLICY: \"0x000000000000000000000000000000000000110C\",\n /** Primary ML-DSA-65 pubkey registry — gateable, ADR-0034. */\n PUBKEY_REGISTRY: \"0x000000000000000000000000000000000000110D\",\n} as const;\n\n/** Precompile address-key type — useful for typed maps over the surface. */\nexport type PrecompileName = keyof typeof PRECOMPILE_ADDRESSES;\n\n/** Precompile address value type. */\nexport type PrecompileAddress = (typeof PRECOMPILE_ADDRESSES)[PrecompileName];\n","/**\n * Node-registry precompile ABI helpers and service capability constants.\n *\n * These constants mirror `protocore-node-registry::capabilities` and\n * `protocore-node-registry::abi`. They are exported for wallets,\n * service probers, faucets, and operator dashboards that need to build\n * canonical registry transactions without retyping low-level values.\n */\n\nimport { PRECOMPILE_ADDRESSES } from \"./consts.js\";\n\nexport const NODE_REGISTRY_CAPABILITIES = {\n SERVES_RPC: 0x0000_0001,\n SERVES_INDEXER: 0x0000_0002,\n SERVES_BROADCASTER: 0x0000_0004,\n SERVES_ARCHIVE: 0x0000_0008,\n SERVES_WEBSOCKET: 0x0000_0010,\n SERVES_LIGHT_CLIENT: 0x0000_0020,\n SERVES_ORACLE_WRITER: 0x0000_0040,\n SERVES_BRIDGE_RELAY: 0x0000_0080,\n SERVES_PUBLIC_API: 0x0000_0100,\n} as const;\n\nexport const NODE_REGISTRY_CAPABILITY_MASK = 0x0000_ffff;\n\nexport const NODE_REGISTRY_PUBLIC_SERVICE_MASK =\n NODE_REGISTRY_CAPABILITIES.SERVES_RPC |\n NODE_REGISTRY_CAPABILITIES.SERVES_INDEXER |\n NODE_REGISTRY_CAPABILITIES.SERVES_ARCHIVE |\n NODE_REGISTRY_CAPABILITIES.SERVES_WEBSOCKET |\n NODE_REGISTRY_CAPABILITIES.SERVES_PUBLIC_API;\n\nexport const SERVICE_PROBE_STATUS = {\n UNKNOWN: 0,\n REACHABLE: 1,\n DEGRADED: 2,\n UNREACHABLE: 3,\n} as const;\n\nexport const NODE_REGISTRY_SELECTORS = {\n reportServiceProbe: \"0xeee31bba\",\n getServiceProbe: \"0x1fcbfbce\",\n} as const;\n\nexport interface ReportServiceProbeCalldataArgs {\n peerId: string | Uint8Array | readonly number[];\n serviceMask: number;\n status: number;\n latencyMs: number;\n probeDigest: string | Uint8Array | readonly number[];\n}\n\nexport class NodeRegistryError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"NodeRegistryError\";\n }\n}\n\nexport function nodeRegistryAddressHex(): string {\n return PRECOMPILE_ADDRESSES.NODE_REGISTRY.toLowerCase();\n}\n\nexport function isValidNodeRegistryCapabilities(flags: number): boolean {\n return Number.isInteger(flags) && flags >= 0 && (flags & ~NODE_REGISTRY_CAPABILITY_MASK) === 0;\n}\n\nexport function isValidPublicServiceProbeMask(mask: number): boolean {\n return (\n Number.isInteger(mask) &&\n mask > 0 &&\n (mask & ~NODE_REGISTRY_PUBLIC_SERVICE_MASK) === 0\n );\n}\n\nexport function isSinglePublicServiceProbeMask(mask: number): boolean {\n return isValidPublicServiceProbeMask(mask) && bitCount(mask) === 1;\n}\n\nexport function isConcreteServiceProbeStatus(status: number): boolean {\n return (\n status === SERVICE_PROBE_STATUS.REACHABLE ||\n status === SERVICE_PROBE_STATUS.DEGRADED ||\n status === SERVICE_PROBE_STATUS.UNREACHABLE\n );\n}\n\nexport function serviceProbeStatusLabel(status: number): string {\n switch (status) {\n case SERVICE_PROBE_STATUS.REACHABLE:\n return \"reachable\";\n case SERVICE_PROBE_STATUS.DEGRADED:\n return \"degraded\";\n case SERVICE_PROBE_STATUS.UNREACHABLE:\n return \"unreachable\";\n default:\n return \"unknown\";\n }\n}\n\nexport function encodeReportServiceProbeCalldata(args: ReportServiceProbeCalldataArgs): string {\n if (!isValidPublicServiceProbeMask(args.serviceMask)) {\n throw new NodeRegistryError(\n `serviceMask 0x${args.serviceMask.toString(16).padStart(8, \"0\")} is not a valid public-service mask`,\n );\n }\n if (!isConcreteServiceProbeStatus(args.status)) {\n throw new NodeRegistryError(`status ${args.status} is not a concrete service-probe outcome`);\n }\n const latencyMs = expectUint32(args.latencyMs, \"latencyMs\");\n return bytesToHex(\n concatBytes(\n hexToBytes(NODE_REGISTRY_SELECTORS.reportServiceProbe),\n expectLength(toBytes(args.peerId), 32, \"peerId\"),\n uint32Word(args.serviceMask),\n uint8Word(args.status),\n uint32Word(latencyMs),\n expectLength(toBytes(args.probeDigest), 32, \"probeDigest\"),\n ),\n );\n}\n\nfunction bitCount(value: number): number {\n let n = value >>> 0;\n let count = 0;\n while (n !== 0) {\n count += n & 1;\n n >>>= 1;\n }\n return count;\n}\n\nfunction expectUint32(value: number, name: string): number {\n if (!Number.isInteger(value) || value < 0 || value > 0xffff_ffff) {\n throw new NodeRegistryError(`${name} must be a uint32`);\n }\n return value;\n}\n\nfunction uint32Word(value: number): Uint8Array {\n const out = new Uint8Array(32);\n const n = expectUint32(value, \"uint32\");\n out[28] = (n >>> 24) & 0xff;\n out[29] = (n >>> 16) & 0xff;\n out[30] = (n >>> 8) & 0xff;\n out[31] = n & 0xff;\n return out;\n}\n\nfunction uint8Word(value: number): Uint8Array {\n if (!Number.isInteger(value) || value < 0 || value > 0xff) {\n throw new NodeRegistryError(\"uint8 value out of range\");\n }\n const out = new Uint8Array(32);\n out[31] = value;\n return out;\n}\n\nfunction toBytes(value: string | Uint8Array | readonly number[]): Uint8Array {\n if (typeof value === \"string\") {\n return hexToBytes(value);\n }\n return value instanceof Uint8Array ? value : Uint8Array.from(value);\n}\n\nfunction hexToBytes(hex: string): Uint8Array {\n const body = hex.startsWith(\"0x\") || hex.startsWith(\"0X\") ? hex.slice(2) : hex;\n if (body.length % 2 !== 0 || !/^[0-9a-fA-F]*$/.test(body)) {\n throw new NodeRegistryError(\"invalid hex bytes\");\n }\n const out = new Uint8Array(body.length / 2);\n for (let i = 0; i < out.length; i++) {\n out[i] = Number.parseInt(body.slice(i * 2, i * 2 + 2), 16);\n }\n return out;\n}\n\nfunction bytesToHex(bytes: Uint8Array): string {\n return `0x${[...bytes].map((b) => b.toString(16).padStart(2, \"0\")).join(\"\")}`;\n}\n\nfunction concatBytes(...parts: Uint8Array[]): Uint8Array {\n const out = new Uint8Array(parts.reduce((acc, p) => acc + p.length, 0));\n let offset = 0;\n for (const part of parts) {\n out.set(part, offset);\n offset += part.length;\n }\n return out;\n}\n\nfunction expectLength(value: Uint8Array, len: number, name: string): Uint8Array {\n if (value.length !== len) {\n throw new NodeRegistryError(`${name} must be ${len} bytes, got ${value.length}`);\n }\n return value;\n}\n","/**\n * Chain-registry snapshot and helpers.\n *\n * Source of truth:\n * https://github.com/monolythium/chain-registry\n *\n * The SDK vendors a release-time snapshot so callers can bootstrap without\n * network access to GitHub. Callers that want the newest registry state can\n * opt into `fetchChainRegistryLatest()`.\n */\n\nexport type NetworkSlug = \"testnet-69420\";\n\nexport interface RpcEndpoint {\n url: string;\n provider: string;\n region?: string;\n tier: \"official\" | \"community\";\n archive?: boolean;\n ws_url?: string;\n notes?: string;\n}\n\nexport interface P2pSeed {\n multiaddr: string;\n region?: string;\n}\n\nexport interface ExplorerEndpoint {\n url: string;\n name: string;\n kind?: \"monoscan\" | \"etherscan-fork\" | \"custom\";\n}\n\nexport interface ChainInfo {\n chain_id: number;\n network: NetworkSlug | string;\n display_name?: string;\n description?: string;\n genesis_hash: string;\n binary_sha: string;\n rpc: RpcEndpoint[];\n p2p: P2pSeed[];\n explorer?: ExplorerEndpoint[];\n}\n\nexport type ChainRegistry = Record<NetworkSlug | string, ChainInfo>;\n\nexport const TESTNET_69420: ChainInfo = {\n chain_id: 69420,\n network: \"testnet-69420\",\n display_name: \"Monolythium Testnet\",\n description:\n \"Live development testnet for Monolythium v4.0 / LythiumDAG-BFT. Foundation-operated. Wipe + regenesis is allowed without notice — do NOT store value on this network.\",\n genesis_hash:\n \"0x325057e476b7be3730a22c92b9289f4a14a3414a2a081bd279b43eeba36b0075\",\n binary_sha: \"44a9ec4\",\n rpc: [\n {\n url: \"http://178.105.15.216:8545\",\n provider: \"monolythium-foundation\",\n region: \"fsn1\",\n tier: \"official\",\n notes: \"operator-2; primary foundation seed (operator-1 offline pending BLS key reissue)\",\n },\n {\n url: \"http://178.104.233.182:8545\",\n provider: \"monolythium-foundation\",\n region: \"nbg1\",\n tier: \"official\",\n notes: \"operator-3\",\n },\n {\n url: \"http://65.108.94.1:8545\",\n provider: \"monolythium-foundation\",\n region: \"hel1\",\n tier: \"official\",\n notes: \"operator-4\",\n },\n {\n url: \"http://95.216.154.155:8545\",\n provider: \"monolythium-foundation\",\n region: \"hel1\",\n tier: \"official\",\n notes: \"operator-5\",\n },\n {\n url: \"http://87.99.145.48:8545\",\n provider: \"monolythium-foundation\",\n region: \"ash\",\n tier: \"official\",\n notes: \"operator-6; US east\",\n },\n {\n url: \"http://5.223.85.76:8545\",\n provider: \"monolythium-foundation\",\n region: \"sin\",\n tier: \"official\",\n notes: \"operator-7; APAC\",\n },\n ],\n p2p: [\n {\n multiaddr:\n \"/ip4/178.105.15.216/tcp/29898/p2p/12D3KooWDKk9ALxqchazXGcRGbqyopWtAGRbf4WQFS2dABV7gQGb\",\n region: \"fsn1\",\n },\n {\n multiaddr:\n \"/ip4/178.104.233.182/tcp/29898/p2p/12D3KooW9uVG8csFCtSxoFaYBsGzXBgVwQhAw84TGj4dfRi9LH1c\",\n region: \"nbg1\",\n },\n {\n multiaddr:\n \"/ip4/65.108.94.1/tcp/29898/p2p/12D3KooWKvkjEVkA64TdbSoVjDW2sWUzgkAMbPZsZvfxZw2W6zVy\",\n region: \"hel1\",\n },\n {\n multiaddr:\n \"/ip4/95.216.154.155/tcp/29898/p2p/12D3KooWCcVjSuERAGzG6Xb3wjUj22fGrgP2QXDJfquxQ72TBMd8\",\n region: \"hel1\",\n },\n {\n multiaddr:\n \"/ip4/87.99.145.48/tcp/29898/p2p/12D3KooWMKw9Qxx7RE3PjQGMZq94C23UDjnTbZCNWFy6Dc4YcCdL\",\n region: \"ash\",\n },\n {\n multiaddr:\n \"/ip4/5.223.85.76/tcp/29898/p2p/12D3KooWSTeApBSKR4DpKvJAuqKfHxNhdbNg9mi9u8f4UNfzN5Cu\",\n region: \"sin\",\n },\n ],\n};\n\nexport const CHAIN_REGISTRY: ChainRegistry = {\n \"testnet-69420\": TESTNET_69420,\n};\n\nexport const CHAIN_REGISTRY_RAW_BASE =\n \"https://raw.githubusercontent.com/monolythium/chain-registry/master/chains\" as const;\n\nexport function getChainInfo(network: NetworkSlug | string): ChainInfo {\n const info = CHAIN_REGISTRY[network];\n if (!info) {\n throw new Error(`unknown Monolythium network: ${network}`);\n }\n return info;\n}\n\nexport function getRpcEndpoints(network: NetworkSlug | string): readonly RpcEndpoint[] {\n return getChainInfo(network).rpc;\n}\n\nexport function getP2pSeeds(network: NetworkSlug | string): readonly P2pSeed[] {\n return getChainInfo(network).p2p;\n}\n\nexport interface FetchChainRegistryOptions {\n fetch?: typeof fetch;\n rawBaseUrl?: string;\n}\n\nexport async function fetchChainInfoLatest(\n network: NetworkSlug | string,\n options: FetchChainRegistryOptions = {},\n): Promise<ChainInfo> {\n const fetchImpl = options.fetch ?? globalThis.fetch.bind(globalThis);\n const rawBaseUrl = options.rawBaseUrl ?? CHAIN_REGISTRY_RAW_BASE;\n const resp = await fetchImpl(`${rawBaseUrl}/${network}.toml`);\n if (!resp.ok) {\n throw new Error(`failed to fetch chain registry ${network}: HTTP ${resp.status}`);\n }\n return parseChainRegistryToml(await resp.text());\n}\n\nexport async function fetchChainRegistryLatest(\n networks: readonly (NetworkSlug | string)[] = [\"testnet-69420\"],\n options: FetchChainRegistryOptions = {},\n): Promise<ChainRegistry> {\n const entries = await Promise.all(\n networks.map(async (network) => [network, await fetchChainInfoLatest(network, options)] as const),\n );\n return Object.fromEntries(entries);\n}\n\nexport function parseChainRegistryToml(input: string): ChainInfo {\n const info: Partial<ChainInfo> & { rpc: RpcEndpoint[]; p2p: P2pSeed[]; explorer: ExplorerEndpoint[] } = {\n rpc: [],\n p2p: [],\n explorer: [],\n };\n let section: \"root\" | \"rpc\" | \"p2p\" | \"explorer\" = \"root\";\n for (const rawLine of input.split(/\\r?\\n/)) {\n const line = rawLine.replace(/\\s+#.*$/, \"\").trim();\n if (!line || line.startsWith(\"#\")) continue;\n if (line === \"[[rpc]]\") {\n section = \"rpc\";\n info.rpc.push({ url: \"\", provider: \"\", tier: \"community\" });\n continue;\n }\n if (line === \"[[p2p]]\") {\n section = \"p2p\";\n info.p2p.push({ multiaddr: \"\" });\n continue;\n }\n if (line === \"[[explorer]]\") {\n section = \"explorer\";\n info.explorer.push({ url: \"\", name: \"\" });\n continue;\n }\n const match = /^([A-Za-z0-9_]+)\\s*=\\s*(.+)$/.exec(line);\n if (!match) continue;\n const [, key, rawValue] = match;\n const value = parseTomlScalar(rawValue);\n if (section === \"root\") {\n (info as Record<string, unknown>)[key] = value;\n } else {\n const list = info[section];\n const target = list[list.length - 1] as unknown as Record<string, unknown>;\n target[key] = value;\n }\n }\n if (!info.network || !info.chain_id || !info.genesis_hash || !info.binary_sha) {\n throw new Error(\"chain registry TOML is missing required top-level fields\");\n }\n if (info.rpc.length === 0 || info.rpc.some((r) => !r.url || !r.provider || !r.tier)) {\n throw new Error(\"chain registry TOML must include at least one complete rpc endpoint\");\n }\n if (info.p2p.length === 0 || info.p2p.some((p) => !p.multiaddr)) {\n throw new Error(\"chain registry TOML must include at least one p2p seed\");\n }\n const out: ChainInfo = {\n chain_id: Number(info.chain_id),\n network: String(info.network),\n display_name: info.display_name ? String(info.display_name) : undefined,\n description: info.description ? String(info.description) : undefined,\n genesis_hash: String(info.genesis_hash),\n binary_sha: String(info.binary_sha),\n rpc: info.rpc,\n p2p: info.p2p,\n };\n if (info.explorer.length > 0) out.explorer = info.explorer;\n return out;\n}\n\nfunction parseTomlScalar(raw: string): string | number | boolean {\n const value = raw.trim();\n if (value.startsWith('\"') && value.endsWith('\"')) {\n return value.slice(1, -1).replace(/\\\\\"/g, '\"').replace(/\\\\\\\\/g, \"\\\\\");\n }\n if (value === \"true\") return true;\n if (value === \"false\") return false;\n if (/^-?\\d+$/.test(value)) return Number(value);\n return value;\n}\n","/**\n * Typed JSON-RPC client for a `mono-core` node.\n *\n * Mirrors the Rust SDK's `RpcClient` — every public method maps 1:1 to\n * a method on the Rust client, returns the same wire-shape value, and\n * sends the same `lyth_*` / `eth_*` / `debug_*` JSON-RPC method strings\n * (Law §13.2).\n */\n\nimport { SdkError } from \"./error.js\";\nimport {\n isConcreteServiceProbeStatus,\n isSinglePublicServiceProbeMask,\n isValidPublicServiceProbeMask,\n} from \"./node-registry.js\";\nimport { getChainInfo, type ChainInfo, type ChainRegistry, type NetworkSlug } from \"./registry.js\";\nimport type {\n AccountPolicy,\n AccountProofResponse,\n AddressActivityEntry,\n AddressActivityKindResponse,\n AddressLabelRecord,\n AssetPolicy,\n BlsCertificateResponse,\n BlockHeader,\n CallRequest,\n CapabilitiesResponse,\n CheckpointRecord,\n ClobMarketResponse,\n ClusterDelegatorsResponse,\n ClusterEntityResponse,\n ClusterResignationsResponse,\n DagParentsResponse,\n DagSyncStatus,\n DecodeTxResponse,\n DelegationCapResponse,\n DelegationHistoryRecord,\n DelegationsResponse,\n EncryptionKeyResponse,\n EntityRatchetResponse,\n FeeHistoryResponse,\n GapRecordsResponse,\n IndexerStatus,\n MempoolSnapshot,\n MeshDecodedTx,\n MeshSignedTxResponse,\n MeshTxIntent,\n MeshUnsignedTxResponse,\n PeerSummary,\n PendingTxSummary,\n PrecompileDescriptor,\n RegistryRecord,\n RichListResponse,\n RoundInfo,\n StorageProofBatch,\n SyncStatus,\n TpmAttestationResponse,\n TransactionReceipt,\n TransactionView,\n TokenBalanceRecord,\n} from \"./bindings/index.js\";\nimport type { BlockSelector } from \"./types.js\";\nimport { encodeBlockSelector } from \"./types.js\";\n\n/** Optional per-client configuration. */\nexport interface RpcClientOptions {\n /** Override `fetch`. Useful for tests or non-Node environments. */\n fetch?: typeof fetch;\n /** Extra headers to attach to every request. */\n headers?: Record<string, string>;\n}\n\nexport interface NetworkClientOptions extends RpcClientOptions {\n /** Registry snapshot to use instead of the SDK-bundled snapshot. */\n registry?: ChainRegistry;\n /** Probe all known endpoints and choose the first one that answers. */\n probe?: boolean;\n}\n\nexport interface TxFeedReceipt {\n status: number;\n gasUsed: number;\n logsCount: number;\n}\n\nexport interface TxFeedTransaction {\n txHash: string;\n blockHash: string;\n blockNumber: number;\n blockTimestamp: number | null;\n txIndex: number;\n from: string;\n to: string | null;\n nonce: number;\n value: string;\n gasLimit: number;\n maxFeePerGas: string;\n maxPriorityFeePerGas: string;\n input: string;\n receipt: TxFeedReceipt | null;\n}\n\nexport interface TxFeedResponse {\n schemaVersion: number;\n latestHeight: number;\n limit: number;\n nextCursor: string | null;\n transactions: TxFeedTransaction[];\n}\n\nexport interface AddressProfileResponse {\n schemaVersion: number;\n address: string;\n account: {\n nativeBalance: string;\n nonce: number;\n codeHash: string;\n isContract: boolean;\n };\n label: {\n category: string;\n displayName: string | null;\n updatedAtBlock: number;\n } | null;\n activity: {\n kind: string;\n retention: unknown | null;\n latest: unknown | null;\n };\n tokenBalances: Array<{\n tokenId: string;\n balance: string;\n updatedAtBlock: number;\n }>;\n}\n\nexport interface AddressFlowResponse {\n schemaVersion: number;\n address: string;\n sampleSize: number;\n limit: number;\n totals: {\n inbound: string;\n outbound: string;\n swapVolume: string;\n stake: string;\n unstake: string;\n };\n topCounterparties: Array<{\n address: string;\n eventCount: number;\n inbound: string;\n outbound: string;\n }>;\n}\n\nexport interface SearchHit {\n type: string;\n id: string;\n route: string;\n label: string;\n score: number;\n meta?: unknown;\n}\n\nexport interface SearchResponse {\n schemaVersion: number;\n query: string;\n hits: SearchHit[];\n nextCursor: string | null;\n}\n\nexport interface ChainStatsResponse {\n schemaVersion: number;\n chainId: number;\n genesisHash: string | null;\n latestHeight: number;\n latestBlockHash: string | null;\n latestTimestamp: number | null;\n peerCount: number;\n mempool: {\n ready: number;\n pending: number;\n mailboxDepth: number;\n };\n indexer: unknown | null;\n clusters: {\n total: number;\n pageSize: number;\n };\n}\n\nexport interface ClobMarketSummary {\n marketId: string;\n tradeCount: number;\n totalVolumeBase: string;\n lastPrice: string;\n lastBlockHeight: number;\n}\n\nexport interface ClobMarketsResponse {\n schemaVersion: number;\n limit: number;\n markets: ClobMarketSummary[];\n source: string;\n}\n\nexport interface ClobTrade {\n blockHeight: number;\n txIndex: number;\n logIndex: number;\n marketId: string;\n takerOrder: string;\n makerOrder: string;\n price: string;\n amount: string;\n taker: string;\n maker: string;\n}\n\nexport interface ClobTradesResponse {\n schemaVersion: number;\n marketId: string;\n limit: number;\n nextCursor: string | null;\n trades: ClobTrade[];\n}\n\nexport interface ClobOhlcResponse {\n schemaVersion: number;\n marketId: string;\n fromBlock: number;\n toBlock: number;\n bucketBlocks: number;\n candles: Array<{\n startBlock: number;\n endBlock: number;\n open: string;\n high: string;\n low: string;\n close: string;\n volumeBase: string;\n tradeCount: number;\n }>;\n}\n\nexport interface ClobOrderBookResponse {\n schemaVersion: number;\n marketId: string;\n levels?: number;\n bids: Array<{ price: string; size: string }>;\n asks: Array<{ price: string; size: string }>;\n}\n\n/** Public-safe aggregate returned by `lyth_peerSummary`. */\nexport interface PeerSummaryAggregate {\n peerCount: number;\n inboundCount: number | null;\n outboundCount: number | null;\n latencyBands: {\n lt_50ms: number;\n lt_200ms: number;\n lt_1s: number;\n ge_1s: number;\n } | null;\n versionDistribution: Record<string, number>;\n healthSummary: {\n synced: number;\n lagging: number;\n stale: number;\n };\n asOfBlock: number;\n}\n\n/** Live `lyth_listActivePrecompiles` response envelope. */\nexport interface PrecompileCatalogueResponse {\n /** Block height sampled by the node. */\n blockNumber: bigint;\n /** Precompile descriptors active or known at the sampled block. */\n precompiles: PrecompileDescriptor[];\n}\n\nexport interface OperatorInfoResponse {\n operatorId: string;\n moniker: string | null;\n alias: string | null;\n chainAddress: string;\n bonded: boolean;\n commissionBps: number | null;\n delegationCount: number | null;\n bondedAmount: string;\n activeClusterIds: number[];\n operatorKeyFingerprint: string | null;\n blsKeyFingerprint: string | null;\n lifecycleState: string;\n capability: Record<string, unknown>;\n}\n\nexport interface ClusterMemberResponse {\n operatorId: string;\n blsPubkey: string;\n state: string;\n}\n\nexport interface ClusterStatusResponse {\n clusterId: number;\n threshold: number;\n size: number;\n live: number;\n lagging: number;\n offline: number;\n maintenance: number;\n members: ClusterMemberResponse[];\n epoch: bigint | null;\n round: bigint | null;\n quorum: string;\n reputationScore: number | null;\n livenessScore: number | null;\n lastUpdateHeight: bigint;\n}\n\nexport interface ClusterDirectoryEntryResponse {\n clusterId: number;\n size: number;\n threshold: number;\n aggregateHealth: string;\n regionDiversity: string[] | null;\n active: boolean;\n}\n\nexport interface ClusterDirectoryPageResponse {\n page: number;\n limit: number;\n totalClusters: number;\n clusters: ClusterDirectoryEntryResponse[];\n}\n\nexport type OperatorSurfaceStatus =\n | \"available\"\n | \"disabled\"\n | \"not_implemented\"\n | \"not_retained\"\n | \"ws_only\"\n | string;\n\nexport interface OperatorSurfaceCapability {\n status: OperatorSurfaceStatus;\n tracking?: string;\n}\n\nexport interface OperatorCapabilitiesResponse {\n schemaVersion: number;\n surfaces: Record<string, OperatorSurfaceCapability>;\n}\n\nexport interface OperatorAuthorityResponse {\n schemaVersion: number;\n operatorId: string;\n authorityIndex: number;\n blsPubkey: string;\n active: boolean;\n}\n\nexport type SigningEntryStatus = \"signed\" | \"missed\" | \"no_cert\" | string;\n\nexport interface OperatorSigningEntry {\n round: bigint;\n status: SigningEntryStatus;\n}\n\nexport interface OperatorSigningActivityResponse {\n schemaVersion: number;\n authorityIndex: number;\n currentRound: bigint;\n limit: number;\n entries: OperatorSigningEntry[];\n}\n\nexport interface AttestationWindow {\n startRound: bigint;\n endRound: bigint;\n kind: string;\n}\n\nexport interface DutyAbsence {\n reason: string;\n}\n\nexport type KeyRotationWindow =\n | { nextRound: bigint; epochLengthRounds: bigint }\n | DutyAbsence;\n\nexport interface UpcomingDutyMap {\n attestation: AttestationWindow;\n blockProduction: DutyAbsence;\n sync: DutyAbsence;\n keyRotation: KeyRotationWindow;\n}\n\nexport interface UpcomingDutiesResponse {\n schemaVersion: number;\n authorityIndex: number;\n currentRound: bigint;\n horizonRounds: number;\n duties: UpcomingDutyMap;\n}\n\nexport type JailStatusWindow =\n | {\n jailed: boolean;\n tombstoned: boolean;\n jailedUntilHeight: bigint;\n unjailCount: bigint;\n }\n | DutyAbsence;\n\nexport interface OperatorRiskResponse {\n schemaVersion: number;\n authorityIndex: number;\n dataHeight: bigint;\n windowRounds: number;\n missedRounds: number;\n observedRounds: number;\n missRateBps: number;\n thresholdBps: number;\n remainingHeadroomBps: number;\n jailStatus: JailStatusWindow;\n reasons: string[];\n}\n\nexport interface LythUpgradePlanStatus {\n upgradeId: string;\n activationHeight: number;\n activationRound: number | null;\n requiredBinaryVersion: string;\n expectedBinaryDigest: string;\n p2pProtocolVersion: number;\n requiredFeatures: string[];\n milestoneFileDigest: string | null;\n stateMigrationId: string | null;\n stateMigrationHash: string | null;\n expectedPreStateRoot: string | null;\n expectedPostStateRoot: string | null;\n}\n\nexport interface LythUpgradeStatusResponse {\n chainId: number;\n blockNumber: number;\n configured: boolean;\n planCount: number;\n state: \"active\" | \"none\" | \"pending\" | string;\n active: LythUpgradePlanStatus | null;\n pendingCount: number;\n pending: LythUpgradePlanStatus[];\n}\n\nexport interface RuntimeBuildProvenance {\n clientName: string;\n version: string;\n gitCommit: string;\n gitDirty: boolean;\n buildTimestampUtc: number;\n rustc: string;\n target: string;\n profile: string;\n features: string;\n p2pProtocolVersion: number;\n binarySha256: string | null;\n stateMigrations: string[];\n}\n\nexport interface RuntimeUpgradeStatus {\n blockNumber: number;\n configured: boolean;\n planCount: number;\n state: \"active\" | \"none\" | \"pending\" | string;\n active: LythUpgradePlanStatus | null;\n pending: LythUpgradePlanStatus[];\n}\n\nexport interface RuntimeProvenanceResponse {\n schemaVersion: number;\n chainId: number;\n genesisHash: string | null;\n latestHeight: number;\n runtime: RuntimeBuildProvenance;\n upgrade: RuntimeUpgradeStatus | null;\n}\n\nexport type ServiceProbeStatusLabel =\n | \"unknown\"\n | \"reachable\"\n | \"degraded\"\n | \"unreachable\"\n | string;\n\nexport interface ServiceProbeResponse {\n serviceMask: number;\n status: ServiceProbeStatusLabel;\n statusCode: number;\n lastProbeBlock: number;\n latencyMs: number;\n probeDigest: string;\n reporter: string;\n}\n\nexport interface ReportServiceProbeRequest {\n peerId: string;\n serviceMask: number;\n status: number;\n latencyMs: number;\n probeDigest: string;\n signedRawTx: string;\n}\n\nexport interface ReportServiceProbeResponse {\n txHash: string;\n peerId: string;\n serviceMask: number;\n statusCode: number;\n}\n\nexport type TxStatusResponse = TxStatusFoundResponse | TxStatusNotFoundResponse;\n\nexport interface TxStatusFoundResponse {\n status: \"found\";\n txHash: string;\n blockHash: string;\n blockNumber: number;\n txIndex: number;\n}\n\nexport interface TxStatusNotFoundResponse {\n status: \"not_found\";\n txHash: string;\n latestHeight: number;\n indexerEnabled: boolean;\n providerKind: string;\n}\n\nexport interface VertexAtRound {\n vertexHash: string;\n author: number;\n}\n\nexport interface VerticesAtRoundResponse {\n schemaVersion: number;\n round: number;\n vertices: VertexAtRound[] | null;\n}\n\nexport type MetricsRangeStatus = \"available\" | \"not_retained\" | \"unknown\" | string;\n\nexport interface MetricsRangeSample {\n blockNumber: number;\n value: number;\n}\n\nexport interface MetricsRangeSeries {\n selector: string;\n status: MetricsRangeStatus;\n unit: string | null;\n samples: MetricsRangeSample[] | null;\n}\n\nexport interface MetricsRangeResponse {\n schemaVersion: number;\n range: [number, number] | null;\n tracking: string;\n series: MetricsRangeSeries[];\n}\n\nexport type AddressActivityKind =\n | \"found\"\n | \"not_found\"\n | \"indexer_disabled\"\n | \"pruned\"\n | \"private\"\n | string;\n\ninterface JsonRpcRequest {\n jsonrpc: \"2.0\";\n id: number;\n method: string;\n params: unknown;\n}\n\ninterface JsonRpcResponse {\n jsonrpc?: \"2.0\";\n id?: number;\n result?: unknown;\n error?: { code: number; message: string; data?: unknown };\n}\n\nconst SDK_VERSION = \"0.1.0\";\n\nfunction resolveChainInfo(network: NetworkSlug | string, registry?: ChainRegistry): ChainInfo {\n if (registry) {\n const info = registry[network];\n if (!info) {\n throw SdkError.endpoint(`unknown Monolythium network: ${network}`);\n }\n return info;\n }\n try {\n return getChainInfo(network);\n } catch (err) {\n throw SdkError.endpoint((err as Error)?.message ?? String(err));\n }\n}\n\nexport class RpcClient {\n readonly endpoint: string;\n readonly #fetch: typeof fetch;\n readonly #headers: Record<string, string>;\n #nextId: number;\n\n constructor(endpoint: string, options: RpcClientOptions = {}) {\n if (!endpoint || endpoint.length === 0) {\n throw SdkError.endpoint(\"endpoint cannot be empty\");\n }\n this.endpoint = endpoint;\n this.#fetch = options.fetch ?? globalThis.fetch.bind(globalThis);\n this.#headers = {\n \"content-type\": \"application/json\",\n \"user-agent\": `monolythium-core-sdk/${SDK_VERSION}`,\n ...(options.headers ?? {}),\n };\n this.#nextId = 1;\n }\n\n /**\n * Construct a client from the chain-registry network slug.\n *\n * Defaults to the SDK-bundled registry snapshot from\n * `monolythium/chain-registry`. Set `probe: true` to walk the\n * registry endpoints in order and return the first endpoint whose\n * `eth_chainId` matches the registry chain id.\n */\n static async forNetwork(\n network: NetworkSlug | string = \"testnet-69420\",\n options: NetworkClientOptions = {},\n ): Promise<RpcClient> {\n const info = resolveChainInfo(network, options.registry);\n if (info.rpc.length === 0) {\n throw SdkError.endpoint(`network ${network} has no RPC endpoints`);\n }\n if (options.probe) {\n return this.fromFirstReachable(info, options);\n }\n return new RpcClient(info.rpc[0].url, options);\n }\n\n /**\n * Walk a chain-registry entry in order and return the first endpoint\n * whose `eth_chainId` matches the registry `chain_id`.\n */\n static async fromFirstReachable(\n chain: ChainInfo,\n options: RpcClientOptions = {},\n ): Promise<RpcClient> {\n const errors: string[] = [];\n for (const endpoint of chain.rpc) {\n const client = new RpcClient(endpoint.url, options);\n try {\n const chainId = await client.ethChainId();\n if (chainId === BigInt(chain.chain_id)) {\n return client;\n }\n errors.push(`${endpoint.url}: chain id ${chainId} != ${chain.chain_id}`);\n } catch (err) {\n errors.push(`${endpoint.url}: ${(err as Error)?.message ?? err}`);\n }\n }\n throw SdkError.endpoint(\n `no reachable RPC endpoint for ${chain.network}; tried ${errors.join(\"; \")}`,\n );\n }\n\n /**\n * Send an arbitrary JSON-RPC method. Most callers should prefer the\n * typed wrappers below; this is the escape hatch for methods the\n * SDK does not yet wrap.\n */\n async call<T>(method: string, params: unknown = []): Promise<T> {\n const id = this.#nextId++;\n const body: JsonRpcRequest = { jsonrpc: \"2.0\", id, method, params };\n let resp: Response;\n try {\n resp = await this.#fetch(this.endpoint, {\n method: \"POST\",\n headers: this.#headers,\n body: JSON.stringify(body),\n });\n } catch (cause) {\n throw SdkError.transport(\n `transport failure calling ${method}: ${(cause as Error)?.message ?? cause}`,\n cause,\n );\n }\n let parsed: JsonRpcResponse;\n try {\n parsed = (await resp.json()) as JsonRpcResponse;\n } catch (cause) {\n throw SdkError.malformed(\n `non-JSON response (HTTP ${resp.status}): ${(cause as Error)?.message ?? cause}`,\n );\n }\n if (parsed.error) {\n throw SdkError.rpc(parsed.error.code, parsed.error.message, parsed.error.data);\n }\n if (!(\"result\" in parsed) || parsed.result === undefined) {\n if (!resp.ok) {\n throw SdkError.malformed(`HTTP ${resp.status} with no JSON-RPC result`);\n }\n throw SdkError.malformed(\"response is missing both `result` and `error`\");\n }\n return parsed.result as T;\n }\n\n // ---- eth_* / net_* / web3_* ---------------------------------------\n\n /** `eth_chainId` — configured chain id. */\n async ethChainId(): Promise<bigint> {\n return parseQuantityBig(await this.call<string>(\"eth_chainId\", []));\n }\n\n /** `eth_blockNumber` — latest committed height. */\n async ethBlockNumber(): Promise<bigint> {\n return parseQuantityBig(await this.call<string>(\"eth_blockNumber\", []));\n }\n\n /** `eth_getBalance` — balance + Merkle proof envelope. */\n async ethGetBalance(\n address: string,\n block: BlockSelector = \"latest\",\n ): Promise<AccountProofResponse> {\n return this.call(\"eth_getBalance\", [address, encodeBlockSelector(block)]);\n }\n\n /** `eth_getStorageAt` — storage word + Merkle proof. */\n async ethGetStorageAt(\n address: string,\n slot: string,\n block: BlockSelector = \"latest\",\n ): Promise<AccountProofResponse> {\n return this.call(\"eth_getStorageAt\", [\n address,\n slot,\n encodeBlockSelector(block),\n ]);\n }\n\n /** `eth_getTransactionCount` — sender nonce. */\n async ethGetTransactionCount(\n address: string,\n block: BlockSelector = \"latest\",\n ): Promise<bigint> {\n return parseQuantityBig(\n await this.call<string>(\"eth_getTransactionCount\", [\n address,\n encodeBlockSelector(block),\n ]),\n );\n }\n\n /** `eth_getCode` — deployed bytecode (`0x` for an EOA, `0xfe` for a precompile). */\n async ethGetCode(address: string, block: BlockSelector = \"latest\"): Promise<string> {\n return this.call(\"eth_getCode\", [address, encodeBlockSelector(block)]);\n }\n\n /** `eth_getBlockByNumber` — fetch a block header by height/tag. */\n async ethGetBlockByNumber(\n block: BlockSelector = \"latest\",\n ): Promise<BlockHeader | null> {\n return normalizeBlockHeader(await this.call(\"eth_getBlockByNumber\", [encodeBlockSelector(block)]));\n }\n\n /** `eth_getBlockByHash` — fetch a block header by hash. */\n async ethGetBlockByHash(hash: string): Promise<BlockHeader | null> {\n return normalizeBlockHeader(await this.call(\"eth_getBlockByHash\", [hash]));\n }\n\n /** `eth_getTransactionByHash` — fetch an included transaction by hash. */\n async ethGetTransactionByHash(txHash: string): Promise<TransactionView | null> {\n return this.call(\"eth_getTransactionByHash\", [txHash]);\n }\n\n /** `eth_getTransactionReceipt` — receipt for a confirmed tx. */\n async ethGetTransactionReceipt(txHash: string): Promise<TransactionReceipt | null> {\n return this.call(\"eth_getTransactionReceipt\", [txHash]);\n }\n\n /** `eth_sendRawTransaction` — submit a signed raw tx. */\n async ethSendRawTransaction(rawTx: string): Promise<string> {\n return this.call(\"eth_sendRawTransaction\", [rawTx]);\n }\n\n /** `eth_call` — dry-run a transaction. */\n async ethCall(request: CallRequest, block: BlockSelector = \"latest\"): Promise<string> {\n return this.call(\"eth_call\", [request, encodeBlockSelector(block)]);\n }\n\n /** `eth_estimateGas` — gas estimate for a dry-run. */\n async ethEstimateGas(\n request: CallRequest,\n block: BlockSelector = \"latest\",\n ): Promise<bigint> {\n return parseQuantityBig(\n await this.call<string>(\"eth_estimateGas\", [request, encodeBlockSelector(block)]),\n );\n }\n\n /** `eth_gasPrice` — minimum gas price the node will accept. */\n async ethGasPrice(): Promise<bigint> {\n return parseQuantityBig(await this.call<string>(\"eth_gasPrice\", []));\n }\n\n /** `eth_feeHistory` — base-fee + gas-used history. */\n async ethFeeHistory(\n blockCount: number,\n newestBlock: BlockSelector = \"latest\",\n rewardPercentiles: number[] = [],\n ): Promise<FeeHistoryResponse> {\n return this.call(\"eth_feeHistory\", [\n `0x${blockCount.toString(16)}`,\n encodeBlockSelector(newestBlock),\n rewardPercentiles,\n ]);\n }\n\n /** `eth_syncing` — `null` when caught up. */\n async ethSyncing(): Promise<SyncStatus | null> {\n const v = await this.call<unknown>(\"eth_syncing\", []);\n if (v === false || v === null || v === undefined) return null;\n return v as SyncStatus;\n }\n\n /** `net_version` — chain id as a decimal string. */\n async netVersion(): Promise<string> {\n return this.call(\"net_version\", []);\n }\n\n /** `net_peerCount` — number of connected peers. */\n async netPeerCount(): Promise<bigint> {\n return parseQuantityBig(await this.call<string>(\"net_peerCount\", []));\n }\n\n /** `net_listening` — whether the node accepts inbound peers. */\n async netListening(): Promise<boolean> {\n return this.call(\"net_listening\", []);\n }\n\n /** `web3_clientVersion` — server's client-version string. */\n async web3ClientVersion(): Promise<string> {\n return this.call(\"web3_clientVersion\", []);\n }\n\n /** `web3_sha3` — Keccak-256 of `data`. */\n async web3Sha3(data: string): Promise<string> {\n return this.call(\"web3_sha3\", [data]);\n }\n\n // ---- lyth_* (Law §13.2 native namespace) --------------------------\n\n /** `lyth_listProviders` — paged registry enumeration. */\n async lythListProviders(\n capabilityMask: number,\n cursor: string | null = null,\n limit = 100,\n ): Promise<RegistryRecord[]> {\n return this.call(\"lyth_listProviders\", [capabilityMask, cursor, limit]);\n }\n\n /** `lyth_getRegistration` — single registry lookup. */\n async lythGetRegistration(peerId: string): Promise<RegistryRecord | null> {\n return this.call(\"lyth_getRegistration\", [peerId]);\n }\n\n /** `lyth_registryStateProof` — Merkle proof for a registry entry. */\n async lythRegistryStateProof(peerId: string): Promise<AccountProofResponse> {\n return this.call(\"lyth_registryStateProof\", [peerId]);\n }\n\n /** `lyth_getAccountPolicy` — privacy posture for an account. */\n async lythGetAccountPolicy(address: string): Promise<AccountPolicy> {\n return this.call(\"lyth_getAccountPolicy\", [address]);\n }\n\n /** `lyth_getAssetPolicy` — privacy posture for an asset. */\n async lythGetAssetPolicy(tokenId: string): Promise<AssetPolicy> {\n return this.call(\"lyth_getAssetPolicy\", [tokenId]);\n }\n\n /** `lyth_getTokenBalances` — indexed per-asset balances for one address. */\n async lythGetTokenBalances(address: string): Promise<TokenBalanceRecord[]> {\n return this.call(\"lyth_getTokenBalances\", [address]);\n }\n\n /** `lyth_getAddressLabel` — indexed display/category label for one address. */\n async lythGetAddressLabel(address: string): Promise<AddressLabelRecord | null> {\n const v = await this.call<unknown>(\"lyth_getAddressLabel\", [address]);\n if (v === null || v === undefined) return null;\n return v as AddressLabelRecord;\n }\n\n /** `lyth_getAddressActivity` — indexed per-address activity timeline. */\n async lythGetAddressActivity(\n address: string,\n limit = 50,\n cursor?: string | null,\n ): Promise<AddressActivityEntry[]> {\n const params = cursor === undefined ? [address, limit] : [address, limit, cursor];\n return this.call(\"lyth_getAddressActivity\", params);\n }\n\n /** `lyth_addressActivityKind` — activity index coverage for one address. */\n async lythAddressActivityKind(address: string): Promise<AddressActivityKindResponse> {\n return this.call(\"lyth_addressActivityKind\", [address]);\n }\n\n /** `lyth_decodeTx` — explorer-grade decoded transaction envelope. */\n async lythDecodeTx(txHash: string): Promise<DecodeTxResponse> {\n return this.call(\"lyth_decodeTx\", [txHash]);\n }\n\n /** `lyth_gapRecords` — retained ingestion/indexing gaps for a block range. */\n async lythGapRecords(\n fromBlock: number | bigint | string,\n toBlock: number | bigint | string,\n ): Promise<GapRecordsResponse> {\n return this.call(\"lyth_gapRecords\", [\n encodeRpcU64Number(fromBlock, \"fromBlock\"),\n encodeRpcU64Number(toBlock, \"toBlock\"),\n ]);\n }\n\n /** `lyth_dagParents` — parent vertices for a DAG round. */\n async lythDagParents(round: number | bigint | string): Promise<DagParentsResponse> {\n return this.call(\"lyth_dagParents\", [encodeRpcU64Number(round, \"round\")]);\n }\n\n /** `lyth_richList` — top holders for a token id. */\n async lythRichList(tokenId: string, limit?: number | null): Promise<RichListResponse> {\n const params = limit == null ? [tokenId] : [tokenId, limit];\n return this.call(\"lyth_richList\", params);\n }\n\n /** `lyth_clobMarket` — live CLOB market metadata for a market id. */\n async lythClobMarket(marketId: string): Promise<ClobMarketResponse> {\n return this.call(\"lyth_clobMarket\", [marketId]);\n }\n\n /** `lyth_clobMarkets` — CLOB markets observed through indexed trades. */\n async lythClobMarkets(limit?: number | null): Promise<ClobMarketsResponse> {\n const params = limit == null ? [] : [limit];\n return this.call(\"lyth_clobMarkets\", params);\n }\n\n /** `lyth_clobTrades` — CLOB fills for one market. */\n async lythClobTrades(\n marketId: string,\n limit = 50,\n cursor?: string | null,\n ): Promise<ClobTradesResponse> {\n const params = cursor === undefined ? [marketId, limit] : [marketId, limit, cursor];\n return this.call(\"lyth_clobTrades\", params);\n }\n\n /** `lyth_clobOhlc` — CLOB OHLC candles for a market over a block range. */\n async lythClobOhlc(\n marketId: string,\n fromBlock?: number | bigint | string | null,\n toBlock?: number | bigint | string | null,\n bucketBlocks?: number | bigint | string | null,\n ): Promise<ClobOhlcResponse> {\n const params =\n fromBlock == null && toBlock == null && bucketBlocks == null\n ? [marketId]\n : [\n marketId,\n fromBlock == null ? null : encodeRpcU64Number(fromBlock, \"fromBlock\"),\n toBlock == null ? null : encodeRpcU64Number(toBlock, \"toBlock\"),\n bucketBlocks == null ? null : encodeRpcU64Number(bucketBlocks, \"bucketBlocks\"),\n ];\n return this.call(\"lyth_clobOhlc\", params);\n }\n\n /** `lyth_clobOrderBook` — live CLOB depth from canonical state. */\n async lythClobOrderBook(\n marketId: string,\n levels?: number | null,\n ): Promise<ClobOrderBookResponse> {\n const params = levels == null ? [marketId] : [marketId, levels];\n return this.call(\"lyth_clobOrderBook\", params);\n }\n\n /** `lyth_txFeed` — paged global transaction feed. */\n async lythTxFeed(limit = 50, cursor?: string | null): Promise<TxFeedResponse> {\n const params = cursor === undefined ? [limit] : [limit, cursor];\n return this.call(\"lyth_txFeed\", params);\n }\n\n /** `lyth_addressProfile` — live account + label + activity aggregate. */\n async lythAddressProfile(address: string): Promise<AddressProfileResponse> {\n return this.call(\"lyth_addressProfile\", [address]);\n }\n\n /** `lyth_addressFlow` — recent indexed address-flow aggregate. */\n async lythAddressFlow(address: string, limit = 250): Promise<AddressFlowResponse> {\n return this.call(\"lyth_addressFlow\", [address, limit]);\n }\n\n /** `lyth_search` — exact live resolver for hashes, addresses, blocks, and clusters. */\n async lythSearch(query: string, limit = 10): Promise<SearchResponse> {\n return this.call(\"lyth_search\", [query, limit]);\n }\n\n /** `lyth_chainStats` — compact live chain/indexer/mempool summary. */\n async lythChainStats(): Promise<ChainStatsResponse> {\n return this.call(\"lyth_chainStats\", []);\n }\n\n /** `lyth_mempoolStatus` — aggregate mempool snapshot. */\n async lythMempoolStatus(): Promise<MempoolSnapshot> {\n return normalizeMempoolSnapshot(await this.call(\"lyth_mempoolStatus\", []));\n }\n\n /** `lyth_mempoolPending` — pending txs for a sender. */\n async lythMempoolPending(sender: string): Promise<PendingTxSummary[]> {\n return this.call(\"lyth_mempoolPending\", [sender]);\n }\n\n /** `lyth_currentRound` — latest committed height. */\n async lythCurrentRound(): Promise<RoundInfo> {\n return normalizeRoundInfo(await this.call(\"lyth_currentRound\", []));\n }\n\n /** `lyth_peerSummary` — public-safe aggregate peer-network diagnostics. */\n async lythPeerSummary(): Promise<PeerSummaryAggregate> {\n return this.call(\"lyth_peerSummary\", []);\n }\n\n /**\n * `lyth_listActivePrecompiles` — milestone-gated precompile catalogue\n * (OI-0170 / ADR-0015 §5).\n */\n async lythListActivePrecompiles(\n block: BlockSelector = \"latest\",\n ): Promise<PrecompileCatalogueResponse> {\n return this.call(\"lyth_listActivePrecompiles\", [encodeBlockSelector(block)]);\n }\n\n /** `lyth_capabilities` — address-keyed precompile capability map. */\n async lythCapabilities(block?: BlockSelector): Promise<CapabilitiesResponse> {\n const params = block === undefined ? [] : [encodeBlockSelector(block)];\n return this.call(\"lyth_capabilities\", params);\n }\n\n /**\n * `lyth_operatorCapabilities` — node-level availability for operator UI\n * and explorer surfaces.\n */\n async lythOperatorCapabilities(): Promise<OperatorCapabilitiesResponse> {\n return this.call(\"lyth_operatorCapabilities\", []);\n }\n\n /** `lyth_indexerStatus` — indexer status; `null` when disabled. */\n async lythIndexerStatus(): Promise<IndexerStatus | null> {\n const v = await this.call<unknown>(\"lyth_indexerStatus\", []);\n if (v === null || v === undefined) return null;\n return v as IndexerStatus;\n }\n\n /** `lyth_getStorageProof` — batched Merkle proofs. */\n async lythGetStorageProof(\n address: string,\n slots: string[],\n ): Promise<StorageProofBatch> {\n return this.call(\"lyth_getStorageProof\", [address, slots]);\n }\n\n /** `lyth_getDelegations` — wallet delegation rows at a block. */\n async lythGetDelegations(\n wallet: string,\n block?: BlockSelector,\n ): Promise<DelegationsResponse> {\n const params =\n block === undefined ? [wallet] : [wallet, encodeBlockSelector(block)];\n return this.call(\"lyth_getDelegations\", params);\n }\n\n /** `lyth_getDelegationHistory` — indexed per-wallet delegation event timeline. */\n async lythGetDelegationHistory(\n wallet: string,\n limit = 50,\n cursor?: string | null,\n ): Promise<DelegationHistoryRecord[]> {\n const params = cursor === undefined ? [wallet, limit] : [wallet, limit, cursor];\n return this.call(\"lyth_getDelegationHistory\", params);\n }\n\n /** `lyth_getClusterDelegators` — delegator addresses for a cluster. */\n async lythGetClusterDelegators(\n cluster: number,\n block?: BlockSelector,\n ): Promise<ClusterDelegatorsResponse> {\n const params =\n block === undefined ? [cluster] : [cluster, encodeBlockSelector(block)];\n return this.call(\"lyth_getClusterDelegators\", params);\n }\n\n /** `lyth_getDelegationCap` — active per-cluster cap at a block. */\n async lythGetDelegationCap(\n block?: BlockSelector,\n ): Promise<DelegationCapResponse> {\n const params = block === undefined ? [] : [encodeBlockSelector(block)];\n return this.call(\"lyth_getDelegationCap\", params);\n }\n\n /** `lyth_getTpmAttestation` — TPM quote digest + EK id for a peer. */\n async lythGetTpmAttestation(\n peerId: string,\n block?: BlockSelector,\n ): Promise<TpmAttestationResponse> {\n const params =\n block === undefined ? [peerId] : [peerId, encodeBlockSelector(block)];\n return this.call(\"lyth_getTpmAttestation\", params);\n }\n\n /** `lyth_getClusterEntity` — entity flag for a cluster. */\n async lythGetClusterEntity(\n cluster: number,\n block?: BlockSelector,\n ): Promise<ClusterEntityResponse> {\n const params =\n block === undefined ? [cluster] : [cluster, encodeBlockSelector(block)];\n return this.call(\"lyth_getClusterEntity\", params);\n }\n\n /** `lyth_getEntityRatchet` — entity-ratchet snapshot at a block. */\n async lythGetEntityRatchet(\n block?: BlockSelector,\n ): Promise<EntityRatchetResponse> {\n const params = block === undefined ? [] : [encodeBlockSelector(block)];\n return this.call(\"lyth_getEntityRatchet\", params);\n }\n\n /** `lyth_operatorInfo` — canonical operator identity envelope. */\n async lythOperatorInfo(operatorId: string): Promise<OperatorInfoResponse> {\n return normalizeOperatorInfo(await this.call(\"lyth_operatorInfo\", [operatorId]));\n }\n\n /** `lyth_getServiceProbe` — latest external reachability report for one public service. */\n async lythGetServiceProbe(\n peerId: string,\n serviceMask: number,\n ): Promise<ServiceProbeResponse | null> {\n assertHexBytes(peerId, 32, \"peerId\");\n if (!isSinglePublicServiceProbeMask(serviceMask)) {\n throw SdkError.malformed(\"serviceMask must contain exactly one public-service bit\");\n }\n const value = await this.call<unknown>(\"lyth_getServiceProbe\", [peerId, serviceMask]);\n if (value === null || value === undefined) return null;\n return normalizeServiceProbe(value);\n }\n\n /** `lyth_reportServiceProbe` — submit a pre-signed public-service probe report. */\n async lythReportServiceProbe(\n req: ReportServiceProbeRequest,\n ): Promise<ReportServiceProbeResponse> {\n assertHexBytes(req.peerId, 32, \"peerId\");\n if (!isValidPublicServiceProbeMask(req.serviceMask)) {\n throw SdkError.malformed(\"serviceMask must name one or more public-service bits\");\n }\n if (!isConcreteServiceProbeStatus(req.status)) {\n throw SdkError.malformed(\"status must be reachable, degraded, or unreachable\");\n }\n assertSafeUint32(req.latencyMs, \"latencyMs\");\n assertHexBytes(req.probeDigest, 32, \"probeDigest\");\n assertNonEmptyHex(req.signedRawTx, \"signedRawTx\");\n return this.call(\"lyth_reportServiceProbe\", [req]);\n }\n\n /** `lyth_clusterStatus` — canonical cluster status envelope. */\n async lythClusterStatus(clusterId: number): Promise<ClusterStatusResponse> {\n return normalizeClusterStatus(await this.call(\"lyth_clusterStatus\", [clusterId]));\n }\n\n /** `lyth_clusterDirectory` — paged public cluster directory. */\n async lythClusterDirectory(page = 0, limit = 25): Promise<ClusterDirectoryPageResponse> {\n return normalizeClusterDirectoryPage(\n await this.call(\"lyth_clusterDirectory\", [page, limit]),\n );\n }\n\n /** `lyth_clusters` — alias for `lyth_clusterDirectory`. */\n async lythClusters(page = 0, limit = 25): Promise<ClusterDirectoryPageResponse> {\n return normalizeClusterDirectoryPage(await this.call(\"lyth_clusters\", [page, limit]));\n }\n\n /**\n * `lyth_submitPendingChange` — operator-onboarding transport for the\n * pending-change ledger. Server validates the envelope shape.\n */\n async lythSubmitPendingChange(envelope: unknown): Promise<unknown> {\n return this.call(\"lyth_submitPendingChange\", [envelope]);\n }\n\n /** `lyth_submitEncrypted` — submit a bincode-encoded encrypted envelope hex. */\n async lythSubmitEncrypted(envelopeHex: string): Promise<string> {\n return this.call(\"lyth_submitEncrypted\", [envelopeHex]);\n }\n\n /** `lyth_getEncryptionKey` — cluster ML-KEM encapsulation key. */\n async lythGetEncryptionKey(): Promise<EncryptionKeyResponse> {\n return this.call(\"lyth_getEncryptionKey\", []);\n }\n\n /** `lyth_syncStatus` — DAG-sync driver snapshot. */\n async lythSyncStatus(): Promise<DagSyncStatus | null> {\n const v = await this.call<unknown>(\"lyth_syncStatus\", []);\n if (v === null || v === undefined) return null;\n return v as DagSyncStatus;\n }\n\n /** `lyth_resolveOperatorAuthority` — operator id to authority index. */\n async lythResolveOperatorAuthority(operatorId: string): Promise<OperatorAuthorityResponse> {\n return normalizeOperatorAuthority(\n await this.call(\"lyth_resolveOperatorAuthority\", [operatorId]),\n );\n }\n\n /** `lyth_signingActivity` — recent per-round signing participation. */\n async lythSigningActivity(\n authorityIndex: number,\n limit?: number | null,\n ): Promise<OperatorSigningActivityResponse> {\n const params = limit == null ? [authorityIndex] : [authorityIndex, limit];\n return normalizeSigningActivity(await this.call(\"lyth_signingActivity\", params));\n }\n\n /** `lyth_upcomingDuties` — deterministic upcoming duty windows. */\n async lythUpcomingDuties(\n authorityIndex: number,\n horizonRounds?: number | null,\n ): Promise<UpcomingDutiesResponse> {\n const params =\n horizonRounds == null ? [authorityIndex] : [authorityIndex, horizonRounds];\n return normalizeUpcomingDuties(await this.call(\"lyth_upcomingDuties\", params));\n }\n\n /** `lyth_operatorRisk` — miss-rate and jail-status window. */\n async lythOperatorRisk(\n authorityIndex: number,\n windowRounds?: number | null,\n ): Promise<OperatorRiskResponse> {\n const params =\n windowRounds == null ? [authorityIndex] : [authorityIndex, windowRounds];\n return normalizeOperatorRisk(await this.call(\"lyth_operatorRisk\", params));\n }\n\n /** `lyth_upgradeStatus` — signed network-upgrade readiness at a height. */\n async lythUpgradeStatus(block?: BlockSelector): Promise<LythUpgradeStatusResponse> {\n const params = block === undefined ? [] : [encodeBlockSelector(block)];\n return this.call(\"lyth_upgradeStatus\", params);\n }\n\n /** `lyth_runtimeProvenance` — public-safe build/runtime provenance. */\n async lythRuntimeProvenance(): Promise<RuntimeProvenanceResponse> {\n return this.call(\"lyth_runtimeProvenance\", []);\n }\n\n /** `lyth_txStatus` — discriminated transaction lookup outcome. */\n async lythTxStatus(txHash: string): Promise<TxStatusResponse> {\n return this.call(\"lyth_txStatus\", [txHash]);\n }\n\n /** `lyth_verticesAtRound` — per-vertex authorship observed at a DAG round. */\n async lythVerticesAtRound(\n round: number | bigint | string,\n ): Promise<VerticesAtRoundResponse> {\n return this.call(\"lyth_verticesAtRound\", [\n encodeRpcU64Number(round, \"round\"),\n ]);\n }\n\n /** `lyth_metricsRange` — retained telemetry series when the node has them. */\n async lythMetricsRange(\n selectors: string[],\n range?: readonly [number | bigint | string, number | bigint | string] | null,\n ): Promise<MetricsRangeResponse> {\n const params =\n range === undefined\n ? [selectors]\n : [\n selectors,\n range === null\n ? null\n : [\n encodeRpcU64Number(range[0], \"fromBlock\"),\n encodeRpcU64Number(range[1], \"toBlock\"),\n ],\n ];\n return this.call(\"lyth_metricsRange\", params);\n }\n\n /** `lyth_getLatestCheckpoint` — latest PQ-finality checkpoint rows. */\n async lythGetLatestCheckpoint(belowHeight?: number | bigint | string | null): Promise<CheckpointRecord[]> {\n const params = belowHeight === undefined ? [] : [encodeOptionalHeight(belowHeight)];\n return this.call(\"lyth_getLatestCheckpoint\", params);\n }\n\n /** `lyth_getClusterResignations` — in-flight + applied operator resignations. */\n async lythGetClusterResignations(\n operator?: string | null,\n status?: \"pending\" | \"applied\" | \"all\" | string | null,\n ): Promise<ClusterResignationsResponse> {\n const params =\n status === undefined\n ? operator == null\n ? []\n : [operator]\n : [operator ?? null, status];\n return this.call(\"lyth_getClusterResignations\", params);\n }\n\n /** `lyth_getBlsRoundCertificate` — round-advancement BLS aggregate. */\n async lythGetBlsRoundCertificate(round: number | bigint | string): Promise<BlsCertificateResponse | null> {\n return this.call(\"lyth_getBlsRoundCertificate\", [encodeRpcInteger(round)]);\n }\n\n /** `lyth_getLeaderCertificate` — leader-vote BLS aggregate for a block ref. */\n async lythGetLeaderCertificate(\n round: number | bigint | string,\n authority: number,\n digest: string,\n ): Promise<BlsCertificateResponse | null> {\n return this.call(\"lyth_getLeaderCertificate\", [encodeRpcInteger(round), authority, digest]);\n }\n\n /** `lyth_getDacCertificate` — data-availability certificate for a block ref. */\n async lythGetDacCertificate(\n round: number | bigint | string,\n authority: number,\n digest: string,\n ): Promise<BlsCertificateResponse | null> {\n return this.call(\"lyth_getDacCertificate\", [encodeRpcInteger(round), authority, digest]);\n }\n\n /** `lyth_subscribe` — WebSocket-only; returns an RPC error over HTTP. */\n async lythSubscribe(channel: string): Promise<unknown> {\n return this.call(\"lyth_subscribe\", [channel]);\n }\n\n /** `lyth_unsubscribe` — counterpart to `lythSubscribe`. */\n async lythUnsubscribe(subId: string): Promise<unknown> {\n return this.call(\"lyth_unsubscribe\", [subId]);\n }\n\n // ---- debug_* ------------------------------------------------------\n // Server-side gated by `RpcConfig::debug_enabled`. When the namespace\n // is disabled, every call surfaces as `SdkError.rpc`.\n\n /** `debug_traceTransaction` — revm trace for a confirmed tx. */\n async debugTraceTransaction(txHash: string): Promise<unknown> {\n return this.call(\"debug_traceTransaction\", [txHash]);\n }\n\n /** `debug_traceCall` — revm trace for a dry-run. */\n async debugTraceCall(\n request: CallRequest,\n block: BlockSelector = \"latest\",\n ): Promise<unknown> {\n return this.call(\"debug_traceCall\", [request, encodeBlockSelector(block)]);\n }\n\n /** `debug_traceBlockByNumber` — revm traces for an entire block. */\n async debugTraceBlockByNumber(block: BlockSelector): Promise<unknown> {\n return this.call(\"debug_traceBlockByNumber\", [encodeBlockSelector(block)]);\n }\n\n /** `debug_mempoolDump` — full mempool snapshot. */\n async debugMempoolDump(): Promise<MempoolSnapshot> {\n return normalizeMempoolSnapshot(await this.call(\"debug_mempoolDump\", []));\n }\n\n /** `debug_p2pPeers` — connected libp2p peer list. */\n async debugP2pPeers(): Promise<PeerSummary[]> {\n return this.call(\"debug_p2pPeers\", []);\n }\n\n /** `debug_stateDiff` — state-diff for a block range. */\n async debugStateDiff(params: unknown): Promise<unknown> {\n return this.call(\"debug_stateDiff\", params);\n }\n\n /** `debug_chainReorg` — testnet-only reorg trigger. */\n async debugChainReorg(params: unknown): Promise<unknown> {\n return this.call(\"debug_chainReorg\", params);\n }\n\n // ---- mesh_* -------------------------------------------------------\n\n /** `mesh_buildUnsignedTx` — build an unsigned transaction envelope. */\n async meshBuildUnsignedTx(intent: MeshTxIntent): Promise<MeshUnsignedTxResponse> {\n return this.call(\"mesh_buildUnsignedTx\", [intent]);\n }\n\n /** `mesh_combineTx` — combine an unsigned envelope with a wallet signature. */\n async meshCombineTx(\n unsignedTx: string,\n signatureHex: string,\n algo?: \"secp256k1\" | \"ml_dsa_65\" | string,\n pubkeyHex?: string,\n ): Promise<MeshSignedTxResponse> {\n const params =\n algo === undefined\n ? [unsignedTx, signatureHex]\n : pubkeyHex === undefined\n ? [unsignedTx, signatureHex, algo]\n : [unsignedTx, signatureHex, algo, pubkeyHex];\n return this.call(\"mesh_combineTx\", params);\n }\n\n /** `mesh_decodeTx` — decode a signed or unsigned mesh envelope. */\n async meshDecodeTx(envelopeHex: string, signed = false): Promise<MeshDecodedTx> {\n return this.call(\"mesh_decodeTx\", [envelopeHex, signed]);\n }\n\n /** `mesh_submitTx` — submit a signed mesh envelope. */\n async meshSubmitTx(signedTx: string): Promise<string> {\n return this.call(\"mesh_submitTx\", [signedTx]);\n }\n}\n\n/** Decode a `0x`-prefixed hex quantity to a `bigint`. */\nexport function parseQuantityBig(hex: string): bigint {\n if (!hex) return 0n;\n const rest = hex.startsWith(\"0x\") || hex.startsWith(\"0X\") ? hex.slice(2) : hex;\n if (rest.length === 0) return 0n;\n if (!/^[0-9a-fA-F]+$/.test(rest)) {\n throw SdkError.malformed(`invalid hex quantity: ${hex}`);\n }\n return BigInt(`0x${rest}`);\n}\n\n/**\n * Decode a `0x`-prefixed hex quantity to a JS `number`. Convenience for\n * small quantities (chain id, block height, gas estimate). Throws if the\n * value exceeds `Number.MAX_SAFE_INTEGER`.\n */\nexport function parseQuantity(hex: string): number {\n const big = parseQuantityBig(hex);\n if (big > BigInt(Number.MAX_SAFE_INTEGER)) {\n throw SdkError.malformed(`hex quantity exceeds safe integer: ${hex}`);\n }\n return Number(big);\n}\n\nfunction encodeRpcInteger(v: number | bigint | string): number | string {\n if (typeof v === \"bigint\") return `0x${v.toString(16)}`;\n return v;\n}\n\nfunction encodeOptionalHeight(v: number | bigint | string | null): number | string | null {\n if (v === null) return null;\n return encodeRpcInteger(v);\n}\n\nfunction encodeRpcU64Number(v: number | bigint | string, label: string): number {\n return parseRpcNumber(v, label);\n}\n\nfunction parseRpcBigint(value: unknown, label: string): bigint {\n if (typeof value === \"bigint\") {\n if (value < 0n) {\n throw SdkError.malformed(`${label} must be a non-negative quantity`);\n }\n return value;\n }\n if (typeof value === \"number\") {\n if (!Number.isSafeInteger(value) || value < 0) {\n throw SdkError.malformed(`${label} must be a non-negative safe integer`);\n }\n return BigInt(value);\n }\n if (typeof value === \"string\") {\n if (value.startsWith(\"0x\") || value.startsWith(\"0X\")) return parseQuantityBig(value);\n if (/^\\d+$/.test(value)) return BigInt(value);\n }\n throw SdkError.malformed(`${label} must be a bigint-compatible quantity`);\n}\n\nfunction parseRpcNumber(value: unknown, label: string): number {\n const big = parseRpcBigint(value, label);\n if (big > BigInt(Number.MAX_SAFE_INTEGER)) {\n throw SdkError.malformed(`${label} exceeds safe integer range`);\n }\n return Number(big);\n}\n\nfunction parseRpcNumberNullable(value: unknown, label: string): number | null {\n return value === null || value === undefined ? null : parseRpcNumber(value, label);\n}\n\nfunction parseRpcBigintNullable(value: unknown, label: string): bigint | null {\n return value === null || value === undefined ? null : parseRpcBigint(value, label);\n}\n\nfunction parseStringNullable(value: unknown): string | null {\n return value === null || value === undefined ? null : String(value);\n}\n\nfunction expectObject(value: unknown, label: string): Record<string, unknown> {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) {\n throw SdkError.malformed(`${label} must be an object`);\n }\n return value as Record<string, unknown>;\n}\n\nfunction normalizeServiceProbe(value: unknown): ServiceProbeResponse {\n const row = expectObject(value, \"service probe response\");\n return {\n serviceMask: parseRpcNumber(row[\"serviceMask\"], \"service probe serviceMask\"),\n status: String(row[\"status\"]),\n statusCode: parseRpcNumber(row[\"statusCode\"], \"service probe statusCode\"),\n lastProbeBlock: parseRpcNumber(row[\"lastProbeBlock\"], \"service probe lastProbeBlock\"),\n latencyMs: parseRpcNumber(row[\"latencyMs\"], \"service probe latencyMs\"),\n probeDigest: String(row[\"probeDigest\"]),\n reporter: String(row[\"reporter\"]),\n };\n}\n\nfunction assertSafeUint32(value: number, label: string): void {\n if (!Number.isInteger(value) || value < 0 || value > 0xffff_ffff) {\n throw SdkError.malformed(`${label} must be a uint32`);\n }\n}\n\nfunction assertHexBytes(value: string, expectedLen: number, label: string): void {\n const body = hexBody(value, label);\n if (body.length !== expectedLen * 2) {\n throw SdkError.malformed(`${label} must be ${expectedLen} bytes`);\n }\n}\n\nfunction assertNonEmptyHex(value: string, label: string): void {\n const body = hexBody(value, label);\n if (body.length === 0) {\n throw SdkError.malformed(`${label} must be non-empty`);\n }\n}\n\nfunction hexBody(value: string, label: string): string {\n const body = value.startsWith(\"0x\") || value.startsWith(\"0X\") ? value.slice(2) : value;\n if (body.length % 2 !== 0 || !/^[0-9a-fA-F]*$/.test(body)) {\n throw SdkError.malformed(`${label} must be hex bytes`);\n }\n return body;\n}\n\nfunction normalizeOperatorInfo(value: unknown): OperatorInfoResponse {\n const row = expectObject(value, \"operator info response\");\n const activeClusterIds = row[\"activeClusterIds\"];\n if (!Array.isArray(activeClusterIds)) {\n throw SdkError.malformed(\"operator info activeClusterIds must be an array\");\n }\n const capability = row[\"capability\"];\n return {\n operatorId: String(row[\"operatorId\"]),\n moniker: parseStringNullable(row[\"moniker\"]),\n alias: parseStringNullable(row[\"alias\"]),\n chainAddress: String(row[\"chainAddress\"]),\n bonded: Boolean(row[\"bonded\"]),\n commissionBps: parseRpcNumberNullable(row[\"commissionBps\"], \"operator info commissionBps\"),\n delegationCount: parseRpcNumberNullable(\n row[\"delegationCount\"],\n \"operator info delegationCount\",\n ),\n bondedAmount: String(row[\"bondedAmount\"]),\n activeClusterIds: activeClusterIds.map((v, i) =>\n parseRpcNumber(v, `operator info activeClusterIds[${i}]`),\n ),\n operatorKeyFingerprint: parseStringNullable(row[\"operatorKeyFingerprint\"]),\n blsKeyFingerprint: parseStringNullable(row[\"blsKeyFingerprint\"]),\n lifecycleState: String(row[\"lifecycleState\"]),\n capability:\n capability && typeof capability === \"object\" && !Array.isArray(capability)\n ? (capability as Record<string, unknown>)\n : {},\n };\n}\n\nfunction normalizeClusterMember(value: unknown, label: string): ClusterMemberResponse {\n const row = expectObject(value, label);\n return {\n operatorId: String(row[\"operatorId\"]),\n blsPubkey: String(row[\"blsPubkey\"]),\n state: String(row[\"state\"]),\n };\n}\n\nfunction normalizeClusterStatus(value: unknown): ClusterStatusResponse {\n const row = expectObject(value, \"cluster status response\");\n const members = row[\"members\"];\n if (!Array.isArray(members)) {\n throw SdkError.malformed(\"cluster status members must be an array\");\n }\n return {\n clusterId: parseRpcNumber(row[\"clusterId\"], \"cluster status clusterId\"),\n threshold: parseRpcNumber(row[\"threshold\"], \"cluster status threshold\"),\n size: parseRpcNumber(row[\"size\"], \"cluster status size\"),\n live: parseRpcNumber(row[\"live\"], \"cluster status live\"),\n lagging: parseRpcNumber(row[\"lagging\"], \"cluster status lagging\"),\n offline: parseRpcNumber(row[\"offline\"], \"cluster status offline\"),\n maintenance: parseRpcNumber(row[\"maintenance\"], \"cluster status maintenance\"),\n members: members.map((member, i) => normalizeClusterMember(member, `cluster status members[${i}]`)),\n epoch: parseRpcBigintNullable(row[\"epoch\"], \"cluster status epoch\"),\n round: parseRpcBigintNullable(row[\"round\"], \"cluster status round\"),\n quorum: String(row[\"quorum\"]),\n reputationScore: parseRpcNumberNullable(\n row[\"reputationScore\"],\n \"cluster status reputationScore\",\n ),\n livenessScore: parseRpcNumberNullable(row[\"livenessScore\"], \"cluster status livenessScore\"),\n lastUpdateHeight: parseRpcBigint(row[\"lastUpdateHeight\"], \"cluster status lastUpdateHeight\"),\n };\n}\n\nfunction normalizeClusterDirectoryEntry(value: unknown, label: string): ClusterDirectoryEntryResponse {\n const row = expectObject(value, label);\n const regionDiversity = row[\"regionDiversity\"];\n if (regionDiversity !== null && regionDiversity !== undefined && !Array.isArray(regionDiversity)) {\n throw SdkError.malformed(`${label}.regionDiversity must be an array or null`);\n }\n return {\n clusterId: parseRpcNumber(row[\"clusterId\"], `${label}.clusterId`),\n size: parseRpcNumber(row[\"size\"], `${label}.size`),\n threshold: parseRpcNumber(row[\"threshold\"], `${label}.threshold`),\n aggregateHealth: String(row[\"aggregateHealth\"]),\n regionDiversity: Array.isArray(regionDiversity) ? regionDiversity.map(String) : null,\n active: Boolean(row[\"active\"]),\n };\n}\n\nfunction normalizeClusterDirectoryPage(value: unknown): ClusterDirectoryPageResponse {\n const row = expectObject(value, \"cluster directory response\");\n const clusters = row[\"clusters\"];\n if (!Array.isArray(clusters)) {\n throw SdkError.malformed(\"cluster directory clusters must be an array\");\n }\n return {\n page: parseRpcNumber(row[\"page\"], \"cluster directory page\"),\n limit: parseRpcNumber(row[\"limit\"], \"cluster directory limit\"),\n totalClusters: parseRpcNumber(row[\"totalClusters\"], \"cluster directory totalClusters\"),\n clusters: clusters.map((cluster, i) =>\n normalizeClusterDirectoryEntry(cluster, `cluster directory clusters[${i}]`),\n ),\n };\n}\n\nfunction normalizeOperatorAuthority(value: unknown): OperatorAuthorityResponse {\n const row = expectObject(value, \"operator authority response\");\n return {\n schemaVersion: parseRpcNumber(row[\"schemaVersion\"], \"operator authority schemaVersion\"),\n operatorId: String(row[\"operatorId\"]),\n authorityIndex: parseRpcNumber(row[\"authorityIndex\"], \"operator authority authorityIndex\"),\n blsPubkey: String(row[\"blsPubkey\"]),\n active: Boolean(row[\"active\"]),\n };\n}\n\nfunction normalizeSigningActivity(value: unknown): OperatorSigningActivityResponse {\n const row = expectObject(value, \"signing activity response\");\n const entries = row[\"entries\"];\n if (!Array.isArray(entries)) {\n throw SdkError.malformed(\"signing activity entries must be an array\");\n }\n return {\n schemaVersion: parseRpcNumber(row[\"schemaVersion\"], \"signing activity schemaVersion\"),\n authorityIndex: parseRpcNumber(row[\"authorityIndex\"], \"signing activity authorityIndex\"),\n currentRound: parseRpcBigint(row[\"currentRound\"], \"signing activity currentRound\"),\n limit: parseRpcNumber(row[\"limit\"], \"signing activity limit\"),\n entries: entries.map((entry, i) => {\n const e = expectObject(entry, `signing activity entries[${i}]`);\n return {\n round: parseRpcBigint(e[\"round\"], `signing activity entries[${i}].round`),\n status: String(e[\"status\"]),\n };\n }),\n };\n}\n\nfunction normalizeDutyAbsence(value: unknown, label: string): DutyAbsence {\n const row = expectObject(value, label);\n return { reason: String(row[\"reason\"]) };\n}\n\nfunction normalizeKeyRotationWindow(value: unknown): KeyRotationWindow {\n const row = expectObject(value, \"upcoming duties keyRotation\");\n if (\"nextRound\" in row) {\n return {\n nextRound: parseRpcBigint(row[\"nextRound\"], \"upcoming duties keyRotation.nextRound\"),\n epochLengthRounds: parseRpcBigint(\n row[\"epochLengthRounds\"],\n \"upcoming duties keyRotation.epochLengthRounds\",\n ),\n };\n }\n return { reason: String(row[\"reason\"]) };\n}\n\nfunction normalizeUpcomingDuties(value: unknown): UpcomingDutiesResponse {\n const row = expectObject(value, \"upcoming duties response\");\n const duties = expectObject(row[\"duties\"], \"upcoming duties duties\");\n const attestation = expectObject(duties[\"attestation\"], \"upcoming duties attestation\");\n return {\n schemaVersion: parseRpcNumber(row[\"schemaVersion\"], \"upcoming duties schemaVersion\"),\n authorityIndex: parseRpcNumber(row[\"authorityIndex\"], \"upcoming duties authorityIndex\"),\n currentRound: parseRpcBigint(row[\"currentRound\"], \"upcoming duties currentRound\"),\n horizonRounds: parseRpcNumber(row[\"horizonRounds\"], \"upcoming duties horizonRounds\"),\n duties: {\n attestation: {\n startRound: parseRpcBigint(attestation[\"startRound\"], \"upcoming duties attestation.startRound\"),\n endRound: parseRpcBigint(attestation[\"endRound\"], \"upcoming duties attestation.endRound\"),\n kind: String(attestation[\"kind\"]),\n },\n blockProduction: normalizeDutyAbsence(\n duties[\"blockProduction\"],\n \"upcoming duties blockProduction\",\n ),\n sync: normalizeDutyAbsence(duties[\"sync\"], \"upcoming duties sync\"),\n keyRotation: normalizeKeyRotationWindow(duties[\"keyRotation\"]),\n },\n };\n}\n\nfunction normalizeJailStatus(value: unknown): JailStatusWindow {\n const row = expectObject(value, \"operator risk jailStatus\");\n if (\"jailed\" in row || \"tombstoned\" in row) {\n return {\n jailed: Boolean(row[\"jailed\"]),\n tombstoned: Boolean(row[\"tombstoned\"]),\n jailedUntilHeight: parseRpcBigint(\n row[\"jailedUntilHeight\"],\n \"operator risk jailStatus.jailedUntilHeight\",\n ),\n unjailCount: parseRpcBigint(row[\"unjailCount\"], \"operator risk jailStatus.unjailCount\"),\n };\n }\n return { reason: String(row[\"reason\"]) };\n}\n\nfunction normalizeOperatorRisk(value: unknown): OperatorRiskResponse {\n const row = expectObject(value, \"operator risk response\");\n const reasons = row[\"reasons\"];\n if (!Array.isArray(reasons)) {\n throw SdkError.malformed(\"operator risk reasons must be an array\");\n }\n return {\n schemaVersion: parseRpcNumber(row[\"schemaVersion\"], \"operator risk schemaVersion\"),\n authorityIndex: parseRpcNumber(row[\"authorityIndex\"], \"operator risk authorityIndex\"),\n dataHeight: parseRpcBigint(row[\"dataHeight\"], \"operator risk dataHeight\"),\n windowRounds: parseRpcNumber(row[\"windowRounds\"], \"operator risk windowRounds\"),\n missedRounds: parseRpcNumber(row[\"missedRounds\"], \"operator risk missedRounds\"),\n observedRounds: parseRpcNumber(row[\"observedRounds\"], \"operator risk observedRounds\"),\n missRateBps: parseRpcNumber(row[\"missRateBps\"], \"operator risk missRateBps\"),\n thresholdBps: parseRpcNumber(row[\"thresholdBps\"], \"operator risk thresholdBps\"),\n remainingHeadroomBps: parseRpcNumber(\n row[\"remainingHeadroomBps\"],\n \"operator risk remainingHeadroomBps\",\n ),\n jailStatus: normalizeJailStatus(row[\"jailStatus\"]),\n reasons: reasons.map(String),\n };\n}\n\nfunction normalizeBlockHeader(value: unknown): BlockHeader | null {\n if (value === null || value === undefined) return null;\n if (!value || typeof value !== \"object\") {\n throw SdkError.malformed(\"block header must be an object or null\");\n }\n const h = value as Record<string, unknown>;\n return {\n number: parseRpcBigint(h[\"number\"], \"block header number\"),\n hash: String(h[\"hash\"]),\n parent_hash: String(h[\"parent_hash\"]),\n state_root: String(h[\"state_root\"]),\n timestamp: parseRpcBigint(h[\"timestamp\"], \"block header timestamp\"),\n gas_used: parseRpcBigint(h[\"gas_used\"], \"block header gas_used\"),\n gas_limit: parseRpcBigint(h[\"gas_limit\"], \"block header gas_limit\"),\n };\n}\n\nfunction normalizeRoundInfo(value: unknown): RoundInfo {\n if (!value || typeof value !== \"object\") {\n throw SdkError.malformed(\"round info must be an object\");\n }\n const row = value as Record<string, unknown>;\n return {\n height: parseRpcBigint(row[\"height\"], \"round height\"),\n };\n}\n\nfunction normalizeMempoolSnapshot(value: unknown): MempoolSnapshot {\n if (!value || typeof value !== \"object\") {\n throw SdkError.malformed(\"mempool snapshot must be an object\");\n }\n const row = value as Record<string, unknown>;\n const bytesByClass = row[\"bytes_by_class\"];\n if (!Array.isArray(bytesByClass) || bytesByClass.length !== 7) {\n throw SdkError.malformed(\"mempool bytes_by_class must contain 7 entries\");\n }\n return {\n count_ready: parseRpcBigint(row[\"count_ready\"], \"mempool count_ready\"),\n count_pending: parseRpcBigint(row[\"count_pending\"], \"mempool count_pending\"),\n mailbox_depth: parseRpcBigint(row[\"mailbox_depth\"], \"mempool mailbox_depth\"),\n bytes_by_class: bytesByClass.map((v, i) => parseRpcBigint(v, `mempool bytes_by_class[${i}]`)) as MempoolSnapshot[\"bytes_by_class\"],\n };\n}\n","/**\n * Address display helpers.\n *\n * Monolythium keeps 20-byte EVM-compatible addresses on the wire, but\n * user-facing surfaces display them as `mono1...` bech32m strings.\n */\n\nexport const ADDRESS_HRP = \"mono\" as const;\n\nconst CHARSET = \"qpzry9x8gf2tvdw0s3jn54khce6mua7l\";\nconst CHARSET_MAP = new Map([...CHARSET].map((c, i) => [c, i]));\nconst BECH32M_CONST = 0x2bc830a3;\nconst HEX_20_BYTE_RE = /^0x[0-9a-fA-F]{40}$/;\n\nexport class AddressError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"AddressError\";\n }\n}\n\nexport function hexToAddressBytes(address: string): Uint8Array {\n if (!HEX_20_BYTE_RE.test(address)) {\n throw new AddressError(\"expected 0x-prefixed 20-byte hex address\");\n }\n const out = new Uint8Array(20);\n const body = address.slice(2);\n for (let i = 0; i < 20; i++) {\n out[i] = Number.parseInt(body.slice(i * 2, i * 2 + 2), 16);\n }\n return out;\n}\n\nexport function addressBytesToHex(address: Uint8Array | readonly number[]): string {\n const bytes = expectLength(address, 20, \"address\");\n return `0x${[...bytes].map((b) => b.toString(16).padStart(2, \"0\")).join(\"\")}`;\n}\n\nexport function addressToBech32(address: string | Uint8Array | readonly number[]): string {\n const bytes = typeof address === \"string\" ? hexToAddressBytes(address) : expectLength(address, 20, \"address\");\n const words = convertBits([...bytes], 8, 5, true);\n const checksum = createChecksum(ADDRESS_HRP, words);\n return `${ADDRESS_HRP}1${[...words, ...checksum].map((v) => CHARSET[v]).join(\"\")}`;\n}\n\nexport function bech32ToAddressBytes(address: string): Uint8Array {\n const parsed = decodeBech32m(address);\n if (parsed.hrp !== ADDRESS_HRP) {\n throw new AddressError(`unexpected hrp '${parsed.hrp}', expected '${ADDRESS_HRP}'`);\n }\n const bytes = convertBits(parsed.data, 5, 8, false);\n if (bytes.length !== 20) {\n throw new AddressError(`expected 20-byte payload, got ${bytes.length} bytes`);\n }\n return Uint8Array.from(bytes);\n}\n\nexport function bech32ToAddress(address: string): string {\n return addressBytesToHex(bech32ToAddressBytes(address));\n}\n\nexport function parseAddress(address: string): Uint8Array {\n if (address.startsWith(\"0x\") || address.startsWith(\"0X\")) {\n return hexToAddressBytes(address);\n }\n return bech32ToAddressBytes(address);\n}\n\nexport function normalizeAddressHex(address: string): string {\n return addressBytesToHex(parseAddress(address));\n}\n\nfunction decodeBech32m(input: string): { hrp: string; data: number[] } {\n if (input.length < 8) {\n throw new AddressError(\"bech32m address is too short\");\n }\n const hasLower = input !== input.toUpperCase();\n const hasUpper = input !== input.toLowerCase();\n if (hasLower && hasUpper) {\n throw new AddressError(\"bech32m address cannot mix upper and lower case\");\n }\n const s = input.toLowerCase();\n const sep = s.lastIndexOf(\"1\");\n if (sep <= 0 || sep + 7 > s.length) {\n throw new AddressError(\"bech32m separator/checksum shape is invalid\");\n }\n const hrp = s.slice(0, sep);\n const values: number[] = [];\n for (const c of s.slice(sep + 1)) {\n const v = CHARSET_MAP.get(c);\n if (v === undefined) {\n throw new AddressError(`invalid bech32m character '${c}'`);\n }\n values.push(v);\n }\n if (!verifyChecksum(hrp, values)) {\n throw new AddressError(\"bech32m checksum mismatch\");\n }\n return { hrp, data: values.slice(0, -6) };\n}\n\nfunction hrpExpand(hrp: string): number[] {\n const high = [...hrp].map((c) => c.charCodeAt(0) >> 5);\n const low = [...hrp].map((c) => c.charCodeAt(0) & 31);\n return [...high, 0, ...low];\n}\n\nfunction polymod(values: number[]): number {\n const generators = [0x3b6a57b2, 0x26508e6d, 0x1ea119fa, 0x3d4233dd, 0x2a1462b3];\n let chk = 1;\n for (const value of values) {\n const top = chk >> 25;\n chk = ((chk & 0x1ffffff) << 5) ^ value;\n for (let i = 0; i < 5; i++) {\n if (((top >> i) & 1) === 1) {\n chk ^= generators[i];\n }\n }\n }\n return chk >>> 0;\n}\n\nfunction createChecksum(hrp: string, data: number[]): number[] {\n const values = [...hrpExpand(hrp), ...data, 0, 0, 0, 0, 0, 0];\n const mod = polymod(values) ^ BECH32M_CONST;\n const out: number[] = [];\n for (let p = 0; p < 6; p++) {\n out.push((mod >> (5 * (5 - p))) & 31);\n }\n return out;\n}\n\nfunction verifyChecksum(hrp: string, values: number[]): boolean {\n return polymod([...hrpExpand(hrp), ...values]) === BECH32M_CONST;\n}\n\nfunction convertBits(data: readonly number[], fromBits: number, toBits: number, pad: boolean): number[] {\n let acc = 0;\n let bits = 0;\n const ret: number[] = [];\n const maxv = (1 << toBits) - 1;\n const maxAcc = (1 << (fromBits + toBits - 1)) - 1;\n for (const value of data) {\n if (value < 0 || value >> fromBits !== 0) {\n throw new AddressError(\"invalid address payload value\");\n }\n acc = ((acc << fromBits) | value) & maxAcc;\n bits += fromBits;\n while (bits >= toBits) {\n bits -= toBits;\n ret.push((acc >> bits) & maxv);\n }\n }\n if (pad) {\n if (bits > 0) {\n ret.push((acc << (toBits - bits)) & maxv);\n }\n } else if (bits >= fromBits || ((acc << (toBits - bits)) & maxv) !== 0) {\n throw new AddressError(\"invalid bech32m padding\");\n }\n return ret;\n}\n\nfunction expectLength(value: Uint8Array | readonly number[], len: number, name: string): Uint8Array {\n if (value.length !== len) {\n throw new AddressError(`${name} must be ${len} bytes`);\n }\n return value instanceof Uint8Array ? value : Uint8Array.from(value);\n}\n","/**\n * Spending-policy precompile ABI helpers.\n *\n * These helpers build calldata and claim messages for the live\n * `mono-core` spending-policy precompile. Fresh sub-account claims\n * must use `setPolicyClaim` or `claimPolicyByAddress`; legacy\n * `setPolicy` is only for re-claims where the principal is already\n * recorded on-chain.\n */\n\nimport { hexToAddressBytes, addressBytesToHex } from \"./address.js\";\nimport { PRECOMPILE_ADDRESSES } from \"./consts.js\";\n\nexport const SET_POLICY_CLAIM_DOMAIN_TAG = \"lyth.spending-policy.claim.v1\" as const;\nexport const ML_DSA_65_PUBLIC_KEY_LEN = 1952;\nexport const ML_DSA_65_SIGNATURE_LEN = 3309;\n\nexport const SPENDING_POLICY_SELECTORS = {\n setPolicy: \"0xd6a518b2\",\n setPolicyClaim: \"0x08d78f9c\",\n claimPolicyByAddress: \"0xc2397fe9\",\n enable: \"0x5bfa1b68\",\n disable: \"0xe6c09edf\",\n recordSpend: \"0xdca04292\",\n} as const;\n\nexport interface SpendingPolicyArgs {\n subAccount: string | Uint8Array | readonly number[];\n principal: string | Uint8Array | readonly number[];\n dailyCapWei: bigint | number | string;\n perTxCapWei: bigint | number | string;\n allowRoot: string | Uint8Array | readonly number[];\n denyRoot: string | Uint8Array | readonly number[];\n}\n\nexport class SpendingPolicyError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"SpendingPolicyError\";\n }\n}\n\nexport function spendingPolicyAddressHex(): string {\n return PRECOMPILE_ADDRESSES.SPENDING_POLICY.toLowerCase();\n}\n\nexport function composeClaimBoundMessage(\n chainId: bigint | number | string,\n args: SpendingPolicyArgs,\n opts?: { precompileAddress?: string | Uint8Array | readonly number[]; expectedPolicyVersion?: bigint | number | string },\n): Uint8Array {\n const precompileAddress = toAddressBytes(opts?.precompileAddress ?? PRECOMPILE_ADDRESSES.SPENDING_POLICY);\n const normalized = normalizeArgs(args);\n return concatBytes(\n new TextEncoder().encode(SET_POLICY_CLAIM_DOMAIN_TAG),\n uint64Bytes(chainId, \"chainId\"),\n precompileAddress,\n normalized.subAccount,\n normalized.principal,\n uint128Bytes(normalized.dailyCapWei, \"dailyCapWei\"),\n uint128Bytes(normalized.perTxCapWei, \"perTxCapWei\"),\n normalized.allowRoot,\n normalized.denyRoot,\n uint64Bytes(opts?.expectedPolicyVersion ?? 0n, \"expectedPolicyVersion\"),\n );\n}\n\nexport function encodeSetPolicyCalldata(args: SpendingPolicyArgs): string {\n const normalized = normalizeArgs(args);\n return bytesToHex(\n concatBytes(\n hexToBytes(SPENDING_POLICY_SELECTORS.setPolicy),\n encodePolicyWords(normalized),\n ),\n );\n}\n\nexport function encodeSetPolicyClaimCalldata(\n args: SpendingPolicyArgs,\n subAccountPubkey: Uint8Array | readonly number[] | string,\n subAccountSig: Uint8Array | readonly number[] | string,\n): string {\n const normalized = normalizeArgs(args);\n const pubkey = toBytes(subAccountPubkey);\n const sig = toBytes(subAccountSig);\n if (pubkey.length !== ML_DSA_65_PUBLIC_KEY_LEN) {\n throw new SpendingPolicyError(\n `subAccountPubkey must be ${ML_DSA_65_PUBLIC_KEY_LEN} bytes, got ${pubkey.length}`,\n );\n }\n if (sig.length !== ML_DSA_65_SIGNATURE_LEN) {\n throw new SpendingPolicyError(\n `subAccountSig must be ${ML_DSA_65_SIGNATURE_LEN} bytes, got ${sig.length}`,\n );\n }\n return bytesToHex(\n concatBytes(\n hexToBytes(SPENDING_POLICY_SELECTORS.setPolicyClaim),\n encodePolicyWords(normalized),\n pubkey,\n sig,\n ),\n );\n}\n\nexport function encodeClaimPolicyByAddressCalldata(\n args: SpendingPolicyArgs,\n subAccountSig: Uint8Array | readonly number[] | string,\n): string {\n const normalized = normalizeArgs(args);\n const sig = toBytes(subAccountSig);\n if (sig.length !== ML_DSA_65_SIGNATURE_LEN) {\n throw new SpendingPolicyError(\n `subAccountSig must be ${ML_DSA_65_SIGNATURE_LEN} bytes, got ${sig.length}`,\n );\n }\n return bytesToHex(\n concatBytes(\n hexToBytes(SPENDING_POLICY_SELECTORS.claimPolicyByAddress),\n encodePolicyWords(normalized),\n sig,\n ),\n );\n}\n\nexport function encodeEnableCalldata(subAccount: string | Uint8Array | readonly number[]): string {\n return encodeSingleAddressCall(SPENDING_POLICY_SELECTORS.enable, subAccount);\n}\n\nexport function encodeDisableCalldata(subAccount: string | Uint8Array | readonly number[]): string {\n return encodeSingleAddressCall(SPENDING_POLICY_SELECTORS.disable, subAccount);\n}\n\ninterface NormalizedSpendingPolicyArgs {\n subAccount: Uint8Array;\n principal: Uint8Array;\n dailyCapWei: bigint;\n perTxCapWei: bigint;\n allowRoot: Uint8Array;\n denyRoot: Uint8Array;\n}\n\nfunction normalizeArgs(args: SpendingPolicyArgs): NormalizedSpendingPolicyArgs {\n return {\n subAccount: toAddressBytes(args.subAccount),\n principal: toAddressBytes(args.principal),\n dailyCapWei: toBigint(args.dailyCapWei, \"dailyCapWei\"),\n perTxCapWei: toBigint(args.perTxCapWei, \"perTxCapWei\"),\n allowRoot: expectLength(toBytes(args.allowRoot), 32, \"allowRoot\"),\n denyRoot: expectLength(toBytes(args.denyRoot), 32, \"denyRoot\"),\n };\n}\n\nfunction encodePolicyWords(args: NormalizedSpendingPolicyArgs): Uint8Array {\n return concatBytes(\n encodeAddressWord(args.subAccount),\n encodeAddressWord(args.principal),\n encodeUint128Word(args.dailyCapWei),\n encodeUint128Word(args.perTxCapWei),\n args.allowRoot,\n args.denyRoot,\n );\n}\n\nfunction encodeSingleAddressCall(selector: string, address: string | Uint8Array | readonly number[]): string {\n return bytesToHex(concatBytes(hexToBytes(selector), encodeAddressWord(toAddressBytes(address))));\n}\n\nfunction encodeAddressWord(address: Uint8Array): Uint8Array {\n return concatBytes(new Uint8Array(12), address);\n}\n\nfunction encodeUint128Word(value: bigint): Uint8Array {\n return concatBytes(new Uint8Array(16), uint128Bytes(value, \"uint128\"));\n}\n\nfunction toAddressBytes(value: string | Uint8Array | readonly number[]): Uint8Array {\n if (typeof value === \"string\") {\n return hexToAddressBytes(value);\n }\n return expectLength(value instanceof Uint8Array ? value : Uint8Array.from(value), 20, \"address\");\n}\n\nfunction toBytes(value: string | Uint8Array | readonly number[]): Uint8Array {\n if (typeof value === \"string\") {\n return hexToBytes(value);\n }\n return value instanceof Uint8Array ? value : Uint8Array.from(value);\n}\n\nfunction hexToBytes(hex: string): Uint8Array {\n const body = hex.startsWith(\"0x\") || hex.startsWith(\"0X\") ? hex.slice(2) : hex;\n if (body.length % 2 !== 0 || !/^[0-9a-fA-F]*$/.test(body)) {\n throw new SpendingPolicyError(\"invalid hex bytes\");\n }\n const out = new Uint8Array(body.length / 2);\n for (let i = 0; i < out.length; i++) {\n out[i] = Number.parseInt(body.slice(i * 2, i * 2 + 2), 16);\n }\n return out;\n}\n\nfunction bytesToHex(bytes: Uint8Array): string {\n return `0x${[...bytes].map((b) => b.toString(16).padStart(2, \"0\")).join(\"\")}`;\n}\n\nfunction concatBytes(...parts: Uint8Array[]): Uint8Array {\n const out = new Uint8Array(parts.reduce((acc, p) => acc + p.length, 0));\n let offset = 0;\n for (const part of parts) {\n out.set(part, offset);\n offset += part.length;\n }\n return out;\n}\n\nfunction expectLength(value: Uint8Array, len: number, name: string): Uint8Array {\n if (value.length !== len) {\n throw new SpendingPolicyError(`${name} must be ${len} bytes`);\n }\n return value;\n}\n\nfunction toBigint(value: bigint | number | string, name: string): bigint {\n const n = typeof value === \"bigint\" ? value : BigInt(value);\n if (n < 0n) {\n throw new SpendingPolicyError(`${name} must be non-negative`);\n }\n return n;\n}\n\nfunction uint64Bytes(value: bigint | number | string, name: string): Uint8Array {\n const n = toBigint(value, name);\n if (n > 0xffff_ffff_ffff_ffffn) {\n throw new SpendingPolicyError(`${name} exceeds uint64`);\n }\n return bigintBytes(n, 8);\n}\n\nfunction uint128Bytes(value: bigint, name: string): Uint8Array {\n if (value > 0xffff_ffff_ffff_ffff_ffff_ffff_ffff_ffffn) {\n throw new SpendingPolicyError(`${name} exceeds uint128`);\n }\n return bigintBytes(value, 16);\n}\n\nfunction bigintBytes(value: bigint, len: number): Uint8Array {\n const out = new Uint8Array(len);\n let n = value;\n for (let i = len - 1; i >= 0; i--) {\n out[i] = Number(n & 0xffn);\n n >>= 8n;\n }\n return out;\n}\n\nexport { addressBytesToHex };\n","/**\n * Pubkey-registry precompile ABI helpers.\n *\n * The pubkey-registry at `0x110D` lets an account publish its primary\n * ML-DSA-65 public key once, so later contract-context verification can\n * look the key up by address.\n */\n\nimport { hexToAddressBytes } from \"./address.js\";\nimport { PRECOMPILE_ADDRESSES } from \"./consts.js\";\n\nexport const PUBKEY_REGISTRY_ML_DSA_65_PUBLIC_KEY_LEN = 1952;\n\nexport const PUBKEY_REGISTRY_SELECTORS = {\n registerPubkey: \"0x5fe984e7\",\n lookupPubkey: \"0x87c42001\",\n hasPubkey: \"0x01c0d167\",\n} as const;\n\nexport interface PubkeyLookup {\n pubkey: Uint8Array;\n setBlock: bigint;\n}\n\nexport class PubkeyRegistryError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"PubkeyRegistryError\";\n }\n}\n\nexport function pubkeyRegistryAddressHex(): string {\n return PRECOMPILE_ADDRESSES.PUBKEY_REGISTRY.toLowerCase();\n}\n\nexport function encodeRegisterPubkeyCalldata(pubkey: Uint8Array | readonly number[] | string): string {\n const bytes = toBytes(pubkey);\n if (bytes.length !== PUBKEY_REGISTRY_ML_DSA_65_PUBLIC_KEY_LEN) {\n throw new PubkeyRegistryError(\n `pubkey must be ${PUBKEY_REGISTRY_ML_DSA_65_PUBLIC_KEY_LEN} bytes, got ${bytes.length}`,\n );\n }\n return bytesToHex(\n concatBytes(\n hexToBytes(PUBKEY_REGISTRY_SELECTORS.registerPubkey),\n uint256Word(32n),\n uint256Word(BigInt(bytes.length)),\n bytes,\n ),\n );\n}\n\nexport function encodeLookupPubkeyCalldata(address: string | Uint8Array | readonly number[]): string {\n return encodeSingleAddressCall(PUBKEY_REGISTRY_SELECTORS.lookupPubkey, address);\n}\n\nexport function encodeHasPubkeyCalldata(address: string | Uint8Array | readonly number[]): string {\n return encodeSingleAddressCall(PUBKEY_REGISTRY_SELECTORS.hasPubkey, address);\n}\n\nexport function decodeLookupPubkeyReturn(data: Uint8Array | readonly number[] | string): PubkeyLookup {\n const bytes = toBytes(data);\n if (bytes.length < 96) {\n throw new PubkeyRegistryError(\"lookup return must be at least 96 bytes\");\n }\n const offset = wordToBigint(bytes.slice(0, 32));\n if (offset !== 64n) {\n throw new PubkeyRegistryError(\"lookup pubkey offset must be 0x40\");\n }\n const setBlock = wordToBigint(bytes.slice(32, 64));\n const len = wordToBigint(bytes.slice(Number(offset), Number(offset) + 32));\n if (len > BigInt(Number.MAX_SAFE_INTEGER)) {\n throw new PubkeyRegistryError(\"pubkey length exceeds safe integer range\");\n }\n const bodyLen = Number(len);\n const bodyStart = Number(offset) + 32;\n const padded = Math.ceil(bodyLen / 32) * 32;\n if (bytes.length < bodyStart + padded) {\n throw new PubkeyRegistryError(\"lookup return bytes body is truncated\");\n }\n return {\n pubkey: bytes.slice(bodyStart, bodyStart + bodyLen),\n setBlock,\n };\n}\n\nexport function decodeHasPubkeyReturn(data: Uint8Array | readonly number[] | string): boolean {\n const bytes = toBytes(data);\n if (bytes.length !== 32) {\n throw new PubkeyRegistryError(\"hasPubkey return must be 32 bytes\");\n }\n for (let i = 0; i < 31; i++) {\n if (bytes[i] !== 0) {\n throw new PubkeyRegistryError(\"hasPubkey bool high bytes must be zero\");\n }\n }\n if (bytes[31] === 0) return false;\n if (bytes[31] === 1) return true;\n throw new PubkeyRegistryError(\"hasPubkey bool must be 0 or 1\");\n}\n\nfunction encodeSingleAddressCall(selector: string, address: string | Uint8Array | readonly number[]): string {\n return bytesToHex(concatBytes(hexToBytes(selector), addressWord(toAddressBytes(address))));\n}\n\nfunction addressWord(address: Uint8Array): Uint8Array {\n return concatBytes(new Uint8Array(12), address);\n}\n\nfunction toAddressBytes(value: string | Uint8Array | readonly number[]): Uint8Array {\n if (typeof value === \"string\") {\n return hexToAddressBytes(value);\n }\n return expectLength(value instanceof Uint8Array ? value : Uint8Array.from(value), 20, \"address\");\n}\n\nfunction toBytes(value: string | Uint8Array | readonly number[]): Uint8Array {\n if (typeof value === \"string\") {\n return hexToBytes(value);\n }\n return value instanceof Uint8Array ? value : Uint8Array.from(value);\n}\n\nfunction hexToBytes(hex: string): Uint8Array {\n const body = hex.startsWith(\"0x\") || hex.startsWith(\"0X\") ? hex.slice(2) : hex;\n if (body.length % 2 !== 0 || !/^[0-9a-fA-F]*$/.test(body)) {\n throw new PubkeyRegistryError(\"invalid hex bytes\");\n }\n const out = new Uint8Array(body.length / 2);\n for (let i = 0; i < out.length; i++) {\n out[i] = Number.parseInt(body.slice(i * 2, i * 2 + 2), 16);\n }\n return out;\n}\n\nfunction bytesToHex(bytes: Uint8Array): string {\n return `0x${[...bytes].map((b) => b.toString(16).padStart(2, \"0\")).join(\"\")}`;\n}\n\nfunction concatBytes(...parts: Uint8Array[]): Uint8Array {\n const out = new Uint8Array(parts.reduce((acc, p) => acc + p.length, 0));\n let offset = 0;\n for (const part of parts) {\n out.set(part, offset);\n offset += part.length;\n }\n return out;\n}\n\nfunction expectLength(value: Uint8Array, len: number, name: string): Uint8Array {\n if (value.length !== len) {\n throw new PubkeyRegistryError(`${name} must be ${len} bytes`);\n }\n return value;\n}\n\nfunction uint256Word(value: bigint): Uint8Array {\n if (value < 0n || value > (1n << 256n) - 1n) {\n throw new PubkeyRegistryError(\"uint256 value out of range\");\n }\n const out = new Uint8Array(32);\n let n = value;\n for (let i = 31; i >= 0; i--) {\n out[i] = Number(n & 0xffn);\n n >>= 8n;\n }\n return out;\n}\n\nfunction wordToBigint(word: Uint8Array): bigint {\n if (word.length !== 32) {\n throw new PubkeyRegistryError(\"ABI word must be 32 bytes\");\n }\n let out = 0n;\n for (const b of word) {\n out = (out << 8n) | BigInt(b);\n }\n return out;\n}\n","/**\n * Network identity for the ethers.js compat shim.\n *\n * Per whitepaper v4.0, Monolythium testnet `chain_id` is **`69420`**.\n * Mainnet chain id is reserved for the genesis ceremony and not yet\n * exported.\n */\n\n/** Monolythium v4.0 testnet chain id. */\nexport const MONOLYTHIUM_TESTNET_CHAIN_ID = 69420n;\n\n/** Network name surfaced to ethers `Network` instances. */\nexport const MONOLYTHIUM_TESTNET_NETWORK_NAME = \"monolythium-testnet\";\n\n/**\n * Built-in network presets for the ethers shim. Callers that point at a\n * different chain id (e.g. a local dev node) construct `MonolythiumProvider`\n * with an explicit `network` option instead.\n */\nexport const MONOLYTHIUM_NETWORKS = {\n testnet: {\n chainId: MONOLYTHIUM_TESTNET_CHAIN_ID,\n name: MONOLYTHIUM_TESTNET_NETWORK_NAME,\n },\n} as const;\n\n/** Configuration object accepted by the ethers shim factory functions. */\nexport interface MonolythiumNetworkConfig {\n /** Numeric chain id (e.g. `69420n`). */\n chainId: bigint;\n /** Human-readable network name. */\n name: string;\n}\n","/**\n * `MonolythiumProvider` — ethers v6 `JsonRpcApiProvider` that routes\n * every call through the native `RpcClient`.\n *\n * `JsonRpcApiProvider` already knows how to translate the rich\n * `_perform(req)` surface into the standard `eth_*` JSON-RPC calls,\n * so we only need to override `_send`: instead of opening its own\n * fetch transport, we reuse the SDK's transport and `lyth_*`-aware\n * error handling.\n *\n * That keeps a single transport in the process — no double-counted\n * connection pools, no duplicated retry/backoff logic, and any\n * future SDK-side feature (auth headers, ws upgrade, registry-based\n * routing) lights up for ethers callers automatically.\n *\n * **SDK-only compat.** Per `feedback_no_ethereum_wire_retrofit.md`,\n * this shim never alters the chain's wire — it only wraps the chain's\n * existing `eth_*` namespace in ethers' interface so existing\n * Solidity tooling (Hardhat, Foundry, ethers-based dApps) can target\n * Monolythium without code rewrites.\n */\n\nimport {\n type JsonRpcPayload,\n type JsonRpcResult,\n type JsonRpcError,\n JsonRpcApiProvider,\n Network,\n} from \"ethers\";\nimport { RpcClient, type RpcClientOptions } from \"../client.js\";\nimport { SdkError } from \"../error.js\";\nimport {\n MONOLYTHIUM_TESTNET_CHAIN_ID,\n MONOLYTHIUM_TESTNET_NETWORK_NAME,\n type MonolythiumNetworkConfig,\n} from \"./network.js\";\n\n/** Optional configuration for `MonolythiumProvider`. */\nexport interface MonolythiumProviderOptions extends RpcClientOptions {\n /**\n * Override the chain id / network name surfaced to ethers. Defaults\n * to the Monolythium v4.0 testnet preset (`chain_id` `69420`, name\n * `monolythium-testnet`).\n */\n network?: MonolythiumNetworkConfig;\n}\n\n/**\n * `MonolythiumProvider` adapts `mono-core`'s JSON-RPC surface to\n * ethers v6.\n *\n * Use it the same way you'd use any ethers provider:\n *\n * ```ts\n * import { MonolythiumProvider } from \"@monolythium/core-sdk\";\n *\n * const provider = new MonolythiumProvider(\"https://rpc.testnet.monolythium.com\");\n * const block = await provider.getBlockNumber();\n * ```\n *\n * Anything ethers normally does — `getBlockNumber`, `getBalance`,\n * `getTransactionReceipt`, `call`, `estimateGas`, `broadcastTransaction`\n * — flows through `RpcClient.call` (which already handles JSON-RPC\n * error envelopes via `SdkError`).\n */\nexport class MonolythiumProvider extends JsonRpcApiProvider {\n /** Underlying SDK client. Exposed for callers that want native types. */\n readonly rpcClient: RpcClient;\n\n constructor(\n endpointOrClient: string | RpcClient,\n options: MonolythiumProviderOptions = {},\n ) {\n const network = options.network ?? {\n chainId: MONOLYTHIUM_TESTNET_CHAIN_ID,\n name: MONOLYTHIUM_TESTNET_NETWORK_NAME,\n };\n // `Network`'s constructor takes `BigNumberish` for `chainId`, which\n // accepts a `bigint` directly — `Networkish` (the literal-shape\n // alternative) restricts to `number`, which would clip our `69420n`\n // testnet id when callers point at a chain id past `Number.MAX_SAFE_INTEGER`.\n //\n // We register the name with ethers' global registry on first\n // construction so any later `Network.from(name)` resolves cleanly,\n // but swallow the error when the same name is registered twice\n // (re-instantiation in tests, multiple shim consumers in one\n // process — both legitimate).\n try {\n Network.register(\n network.name,\n () => new Network(network.name, network.chainId),\n );\n } catch (_e) {\n // already registered — fine, fall through.\n }\n super(new Network(network.name, network.chainId));\n\n this.rpcClient =\n typeof endpointOrClient === \"string\"\n ? new RpcClient(endpointOrClient, {\n fetch: options.fetch,\n headers: options.headers,\n })\n : endpointOrClient;\n }\n\n /**\n * Forward a single JSON-RPC method through the SDK transport. Ethers'\n * `_perform` calls this and ethers callers can also call `provider.send`\n * directly to access methods the rich provider interface does not wrap\n * (e.g. `lyth_*`).\n */\n override async _send(\n payload: JsonRpcPayload | Array<JsonRpcPayload>,\n ): Promise<Array<JsonRpcResult | JsonRpcError>> {\n const calls = Array.isArray(payload) ? payload : [payload];\n return Promise.all(calls.map((p) => this.#sendOne(p)));\n }\n\n async #sendOne(p: JsonRpcPayload): Promise<JsonRpcResult | JsonRpcError> {\n try {\n const params = Array.isArray(p.params)\n ? p.params\n : p.params === undefined\n ? []\n : (p.params as unknown[]);\n const result = await this.rpcClient.call<unknown>(p.method, params);\n return { id: p.id, result };\n } catch (e) {\n if (e instanceof SdkError && e.kind === \"rpc\") {\n return {\n id: p.id,\n error: {\n code: e.code ?? -32603,\n message: e.message,\n data: e.data,\n },\n };\n }\n // Transport / malformed / endpoint errors don't have a JSON-RPC\n // shape — surface them as a generic internal error so ethers'\n // own error wrapper can pick them up cleanly.\n const msg = (e as Error)?.message ?? String(e);\n return {\n id: p.id,\n error: { code: -32603, message: `${msg}` },\n };\n }\n }\n}\n","/**\n * `MonolythiumSigner` — ethers v6 `AbstractSigner` adapter.\n *\n * Two backend strategies are supported, both via the same external\n * surface — `getAddress`, `signTransaction`, `signMessage`,\n * `signTypedData`:\n *\n * 1. **`fromEthersWallet`** — wraps a normal `ethers.Wallet`\n * (secp256k1). Useful for tests, scripts, and any path where the\n * user already has an Ethereum-style key. The SDK does not store\n * the key — the wallet does.\n *\n * 2. **`MonolythiumSignerBackend`** — generic interface a non-ethers\n * backend (keychain, hardware wallet, future ML-DSA-65 signer)\n * implements to plug into ethers without forcing the SDK to take\n * a hard ethers dependency on either the chain side or the\n * consumer side.\n *\n * The address derivation rule for any backend is **Law §2.6**:\n * `keccak256(canonical_pubkey_bytes)[12..32]`, with algo-tagged domain\n * separation. For secp256k1 (the ethers Wallet path) this collapses\n * to the standard Ethereum derivation that `ethers.computeAddress`\n * already implements — so wallets the user already has work as-is.\n *\n * **What the shim is not.** This is SDK-level compat (per\n * `feedback_no_ethereum_wire_retrofit.md`). The chain's protocol-native\n * signing path is ML-DSA-65 (Law §2.1); ethers cannot produce ML-DSA\n * signatures, and the chain accepts secp256k1 only via the\n * crypto-agile `SignedTransaction` envelope. Use\n * `MonolythiumSignerBackend` to plug a native ML-DSA path in.\n */\n\nimport {\n AbstractSigner,\n type BaseWallet,\n type Provider,\n type Signer as EthersSigner,\n type TransactionRequest,\n type TypedDataDomain,\n type TypedDataField,\n} from \"ethers\";\n\n/**\n * Backend the `MonolythiumSigner` delegates signing to.\n *\n * The intent is to let consumers wire up any signing source — local\n * keystore, OS keychain, hardware wallet, or a future ML-DSA-65\n * adapter — without the shim forcing a particular implementation.\n *\n * Every method's return shape mirrors what ethers'\n * `AbstractSigner` callers expect, so the backend can compose with\n * any tooling built on ethers.\n */\nexport interface MonolythiumSignerBackend {\n /** Resolves to the 20-byte 0x-hex address (Law §2.6 derivation). */\n getAddress(): Promise<string>;\n\n /**\n * Resolves to a fully-encoded raw signed transaction (a 0x-hex\n * string). For secp256k1 this is the canonical EIP-1559 RLP that\n * `eth_sendRawTransaction` expects.\n */\n signTransaction(tx: TransactionRequest): Promise<string>;\n\n /**\n * Resolves to an EIP-191 personal-sign signature (`0x` + 65 bytes\n * for secp256k1 / variable for non-recoverable algorithms).\n */\n signMessage(message: string | Uint8Array): Promise<string>;\n\n /** Resolves to an EIP-712 typed-data signature. */\n signTypedData(\n domain: TypedDataDomain,\n types: Record<string, Array<TypedDataField>>,\n value: Record<string, unknown>,\n ): Promise<string>;\n}\n\n/**\n * `MonolythiumSigner` — ethers v6 `Signer` for the Monolythium chain.\n *\n * Construct one of three ways:\n *\n * 1. `MonolythiumSigner.fromEthersWallet(wallet, provider)` — the\n * fastest path; wraps a normal `ethers.Wallet`.\n * 2. `new MonolythiumSigner(backend, provider)` — supply any object\n * implementing `MonolythiumSignerBackend`.\n *\n * The signer is fully spec-compatible with ethers v6 — it can be\n * passed anywhere a `Signer` is accepted (e.g.\n * `new ethers.Contract(address, abi, signer)`), and works with\n * `Contract.deploy`, `Contract.call`, all ContractFactory paths,\n * and `provider.broadcastTransaction(signed)`.\n */\nexport class MonolythiumSigner extends AbstractSigner<Provider | null> {\n readonly #backend: MonolythiumSignerBackend;\n\n constructor(backend: MonolythiumSignerBackend, provider?: Provider | null) {\n super(provider ?? null);\n this.#backend = backend;\n }\n\n /**\n * Wrap any ethers v6 `BaseWallet` (the parent class of `Wallet`,\n * `HDNodeWallet`, and friends) so callers don't have to write a\n * `MonolythiumSignerBackend` for the common test / dev path.\n *\n * Both `new Wallet(privateKey)` and `Wallet.createRandom()` /\n * `HDNodeWallet.fromMnemonic(...)` are accepted.\n */\n static fromEthersWallet(\n wallet: BaseWallet,\n provider?: Provider | null,\n ): MonolythiumSigner {\n const backend: MonolythiumSignerBackend = {\n getAddress: async () => wallet.address,\n signTransaction: (tx) => wallet.signTransaction(tx),\n signMessage: (message) => wallet.signMessage(message),\n signTypedData: (domain, types, value) =>\n wallet.signTypedData(domain, types, value),\n };\n return new MonolythiumSigner(backend, provider);\n }\n\n override async getAddress(): Promise<string> {\n return this.#backend.getAddress();\n }\n\n override connect(provider: Provider | null): EthersSigner {\n return new MonolythiumSigner(this.#backend, provider);\n }\n\n override async signTransaction(tx: TransactionRequest): Promise<string> {\n return this.#backend.signTransaction(tx);\n }\n\n override async signMessage(message: string | Uint8Array): Promise<string> {\n return this.#backend.signMessage(message);\n }\n\n override async signTypedData(\n domain: TypedDataDomain,\n types: Record<string, Array<TypedDataField>>,\n value: Record<string, unknown>,\n ): Promise<string> {\n return this.#backend.signTypedData(domain, types, value);\n }\n}\n","/**\n * Tx wire translation between ethers.js and `mono-core`.\n *\n * The chain natively accepts EIP-1559-shape EVM transactions on the\n * `Tx::Evm` (kind tag `0x01`) wire path — a `SignedTransaction` payload\n * carries the legacy EIP-1559 envelope plus the secp256k1 signature.\n * That makes the round-trip simple: ethers produces the canonical\n * EIP-1559 RLP, the client posts it via `eth_sendRawTransaction`, the\n * chain decodes it, and the receipt comes back through the same\n * `eth_getTransactionReceipt` shape ethers expects.\n *\n * Two notes for any future maintainer:\n *\n * 1. **No chain-level Ethereum retrofit.** This shim is SDK-only — see\n * `feedback_no_ethereum_wire_retrofit.md`. The chain keeps its\n * custom envelope and native tx hash for the protocol-native path\n * (ML-DSA-65 signing, native tx kinds beyond EVM). The shim only\n * spans the **EIP-1559 EVM subset** of the chain's tx surface.\n * 2. **Fields ethers does not see.** Monolythium-specific extension\n * fields (privacy flags, native tx kinds, ML-DSA-65 signatures) are\n * intentionally dropped by these helpers. Callers that need those\n * surfaces use the native SDK signer trait, not the ethers shim.\n */\n\nimport type { CallRequest } from \"../bindings/CallRequest.js\";\nimport type { TransactionReceipt as MonoTransactionReceipt } from \"../bindings/TransactionReceipt.js\";\n\n/**\n * The EIP-1559 subset of fields ethers' `TransactionRequest` carries\n * across the shim. We don't import ethers' type here so the shim can be\n * compiled (and its types re-exported) even when ethers isn't installed\n * — ethers is a peerDependency, not a hard dependency.\n */\nexport interface EthersTxRequestSubset {\n to?: string | null;\n from?: string | null;\n nonce?: number | bigint | null;\n gasLimit?: bigint | string | null;\n gasPrice?: bigint | string | null;\n maxFeePerGas?: bigint | string | null;\n maxPriorityFeePerGas?: bigint | string | null;\n value?: bigint | string | null;\n data?: string | null;\n chainId?: bigint | number | null;\n type?: number | null;\n}\n\n/** `0x`-prefixed hex helpers — kept local so this module has no import surface. */\nfunction toHexQuantity(v: bigint | number | string | null | undefined): string | undefined {\n if (v === null || v === undefined) return undefined;\n if (typeof v === \"string\") {\n if (v.startsWith(\"0x\") || v.startsWith(\"0X\")) return v;\n // Ethers occasionally hands us decimal strings — be lenient.\n return `0x${BigInt(v).toString(16)}`;\n }\n if (typeof v === \"number\") return `0x${v.toString(16)}`;\n return `0x${v.toString(16)}`;\n}\n\n/**\n * Translate ethers' `TransactionRequest` into the wire shape the\n * `mono-core` JSON-RPC accepts for `eth_call` / `eth_estimateGas`.\n *\n * Returns the SDK's `CallRequest` shape (which mirrors the chain's\n * accepted `eth_call` argument). Round-trips losslessly for the\n * EIP-1559 EVM subset; Monolythium-specific extension fields are\n * intentionally not surfaced here.\n */\nexport function translateTxIn(req: EthersTxRequestSubset): CallRequest {\n const out: CallRequest = {};\n if (req.from !== undefined && req.from !== null) out.from = req.from;\n if (req.to !== undefined && req.to !== null) out.to = req.to;\n const gas = toHexQuantity(req.gasLimit);\n if (gas !== undefined) out.gas = gas;\n // Use `gasPrice` for legacy / non-EIP-1559 paths. EIP-1559 priority +\n // fee fields are not part of the v0.0.x server's `eth_call` shape; the\n // chain ignores them on dry-runs.\n const gasPrice = toHexQuantity(req.gasPrice);\n if (gasPrice !== undefined) out.gasPrice = gasPrice;\n const value = toHexQuantity(req.value);\n if (value !== undefined) out.value = value;\n if (req.data !== undefined && req.data !== null) out.data = req.data;\n return out;\n}\n\n/**\n * The ethers v6 wire shape for `eth_getTransactionReceipt`. We hand-roll\n * this rather than importing ethers' internal types because the shim\n * has to compile without ethers installed (peerDependency).\n *\n * Field naming and casing match what `JsonRpcApiProvider._perform` expects\n * back — the provider then normalises into ethers' rich\n * `TransactionReceipt` for callers.\n */\nexport interface EthersReceiptShape {\n transactionHash: string;\n blockHash: string;\n blockNumber: string; // 0x-hex\n transactionIndex: string; // 0x-hex\n status: string; // \"0x0\" | \"0x1\"\n gasUsed: string; // 0x-hex\n cumulativeGasUsed: string; // 0x-hex\n effectiveGasPrice: string; // 0x-hex\n contractAddress: string | null;\n from: string;\n to: string | null;\n type: string; // 0x-hex\n logsBloom: string; // 0x-hex 256 bytes\n logs: unknown[];\n}\n\n/**\n * Translate `mono-core`'s native `TransactionReceipt` into the wire\n * shape ethers expects. Required for `eth_getTransactionReceipt` to\n * surface a usable `TransactionResponse` to ethers callers.\n *\n * The chain's receipt today is intentionally narrow — log emission,\n * cumulative-gas aggregation, and effective-gas-price disclosure are\n * tracked OI items. This translator fills in zero-equivalent values for\n * those gaps; callers that need the full surface (logs, effective gas\n * price) consume the native SDK shape directly.\n */\nexport function translateReceiptOut(\n monoReceipt: MonoTransactionReceipt,\n fromAddress: string | null,\n toAddress: string | null,\n): EthersReceiptShape {\n return {\n transactionHash: monoReceipt.tx_hash,\n blockHash: monoReceipt.block_hash,\n blockNumber: `0x${BigInt(monoReceipt.block_number).toString(16)}`,\n transactionIndex: `0x${monoReceipt.tx_index.toString(16)}`,\n status: monoReceipt.status === 1 ? \"0x1\" : \"0x0\",\n gasUsed: `0x${BigInt(monoReceipt.gas_used).toString(16)}`,\n cumulativeGasUsed: `0x${BigInt(monoReceipt.gas_used).toString(16)}`,\n effectiveGasPrice: \"0x0\",\n contractAddress: null,\n from: fromAddress ?? \"0x0000000000000000000000000000000000000000\",\n to: toAddress,\n type: \"0x2\",\n logsBloom: `0x${\"0\".repeat(512)}`,\n logs: [],\n };\n}\n\n/**\n * Translate `mono-core`'s `BlockHeader` into the ethers v6 wire shape\n * for `eth_getBlockByNumber` / `eth_getBlockByHash`.\n *\n * The chain's block header is intentionally narrower than Ethereum's\n * — it omits fields that don't exist in Monolythium (uncles, mix hash,\n * difficulty, nonce, sha3Uncles). This translator emits zero-valued\n * stand-ins so ethers' normaliser does not throw. Callers needing the\n * authoritative shape import the native `BlockHeader` from the SDK.\n */\nexport interface EthersBlockShape {\n number: string;\n hash: string;\n parentHash: string;\n timestamp: string;\n gasUsed: string;\n gasLimit: string;\n stateRoot: string;\n miner: string;\n difficulty: string;\n nonce: string;\n baseFeePerGas: string | null;\n extraData: string;\n mixHash: string;\n transactions: string[];\n transactionsRoot: string;\n receiptsRoot: string;\n logsBloom: string;\n sha3Uncles: string;\n uncles: string[];\n size: string;\n}\n\n/**\n * Translate `mono-core`'s `BlockHeader` to the ethers wire shape.\n * `transactions` defaults to an empty list — the SDK's\n * `eth_getBlockByNumber` does not yet return tx hashes; once Stage 1+\n * surfaces them, callers update this translator.\n */\nexport function translateBlockOut(header: {\n number: bigint;\n hash: string;\n parent_hash: string;\n state_root: string;\n timestamp: bigint;\n gas_used: bigint;\n gas_limit: bigint;\n}): EthersBlockShape {\n return {\n number: `0x${header.number.toString(16)}`,\n hash: header.hash,\n parentHash: header.parent_hash,\n timestamp: `0x${header.timestamp.toString(16)}`,\n gasUsed: `0x${header.gas_used.toString(16)}`,\n gasLimit: `0x${header.gas_limit.toString(16)}`,\n stateRoot: header.state_root,\n miner: \"0x0000000000000000000000000000000000000000\",\n difficulty: \"0x0\",\n nonce: \"0x0000000000000000\",\n baseFeePerGas: null,\n extraData: \"0x\",\n mixHash: \"0x0000000000000000000000000000000000000000000000000000000000000000\",\n transactions: [],\n transactionsRoot: \"0x0000000000000000000000000000000000000000000000000000000000000000\",\n receiptsRoot: \"0x0000000000000000000000000000000000000000000000000000000000000000\",\n logsBloom: `0x${\"0\".repeat(512)}`,\n sha3Uncles: \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n uncles: [],\n size: \"0x0\",\n };\n}\n","/**\n * Official TypeScript SDK for Monolythium v4.0 / LythiumDAG-BFT.\n *\n * The wire types in `./bindings/` are generated from Rust by\n * `cargo test --features ts-bindings`; never edit them by hand. The\n * `RpcClient` mirrors the Rust SDK 1:1 and sends `lyth_*` / `eth_*` /\n * `debug_*` JSON-RPC methods (Law §13.2).\n *\n * The optional `ethers.js` v6 compat shim lives under `./ethers/`\n * and is re-exported below. `ethers` is a peerDependency — install\n * it alongside this SDK when you use the shim.\n */\n\nexport const version = \"0.1.0\";\n\nexport { ApiClient, apiEndpointFromRpcEndpoint } from \"./api.js\";\nexport type {\n ApiAddressActivityData,\n ApiAddressActivityEntry,\n ApiAddressActivityKind,\n ApiAddressActivityKindData,\n ApiAddressActivityKindSummary,\n ApiBlockData,\n ApiBlockHeader,\n ApiBlockTransactionsData,\n ApiCapabilitiesResponse,\n ApiClientOptions,\n ApiClusterData,\n ApiClusterDirectoryEntry,\n ApiClusterDirectoryPage,\n ApiClusterMember,\n ApiClustersData,\n ApiClusterStatus,\n ApiEnvelope,\n ApiErrorEnvelope,\n ApiHealthResponse,\n ApiIndexerStatus,\n ApiLatestAnchor,\n ApiLogEntry,\n ApiOperatorData,\n ApiOperatorInfo,\n ApiQueryValue,\n ApiRuntimeProvenanceData,\n ApiServiceProbeData,\n ApiTransactionData,\n ApiTransactionReceipt,\n ApiTransactionReceiptData,\n ApiTransactionView,\n ApiUpgradePlanStatus,\n ApiUpgradeStatus,\n ApiUpgradeStatusData,\n} from \"./api.js\";\nexport { RpcClient, parseQuantity, parseQuantityBig } from \"./client.js\";\nexport type {\n AddressActivityKind,\n AddressFlowResponse,\n AddressProfileResponse,\n AttestationWindow,\n ChainStatsResponse,\n ClobMarketsResponse,\n ClobMarketSummary,\n ClobOhlcResponse,\n ClobOrderBookResponse,\n ClobTrade,\n ClobTradesResponse,\n ClusterDirectoryEntryResponse,\n ClusterDirectoryPageResponse,\n ClusterMemberResponse,\n ClusterStatusResponse,\n DutyAbsence,\n JailStatusWindow,\n KeyRotationWindow,\n LythUpgradePlanStatus,\n LythUpgradeStatusResponse,\n MetricsRangeResponse,\n MetricsRangeSample,\n MetricsRangeSeries,\n MetricsRangeStatus,\n NetworkClientOptions,\n OperatorAuthorityResponse,\n OperatorCapabilitiesResponse,\n OperatorInfoResponse,\n OperatorRiskResponse,\n OperatorSigningActivityResponse,\n OperatorSigningEntry,\n OperatorSurfaceCapability,\n OperatorSurfaceStatus,\n PeerSummaryAggregate,\n PrecompileCatalogueResponse,\n RpcClientOptions,\n RuntimeBuildProvenance,\n RuntimeProvenanceResponse,\n RuntimeUpgradeStatus,\n ReportServiceProbeRequest,\n ReportServiceProbeResponse,\n ServiceProbeResponse,\n ServiceProbeStatusLabel,\n SigningEntryStatus,\n SearchHit,\n SearchResponse,\n TxFeedReceipt,\n TxFeedResponse,\n TxFeedTransaction,\n TxStatusFoundResponse,\n TxStatusNotFoundResponse,\n TxStatusResponse,\n UpcomingDutiesResponse,\n UpcomingDutyMap,\n VertexAtRound,\n VerticesAtRoundResponse,\n} from \"./client.js\";\nexport type { ClobMarketRecord } from \"./bindings/ClobMarketRecord.js\";\nexport type { ClobMarketResponse } from \"./bindings/ClobMarketResponse.js\";\nexport {\n CHAIN_REGISTRY,\n CHAIN_REGISTRY_RAW_BASE,\n TESTNET_69420,\n fetchChainInfoLatest,\n fetchChainRegistryLatest,\n getChainInfo,\n getP2pSeeds,\n getRpcEndpoints,\n parseChainRegistryToml,\n} from \"./registry.js\";\nexport type {\n ChainInfo,\n ChainRegistry,\n ExplorerEndpoint,\n NetworkSlug,\n P2pSeed,\n RpcEndpoint,\n} from \"./registry.js\";\nexport { SdkError } from \"./error.js\";\nexport * from \"./types.js\";\nexport { BURN_ADDR, PRECOMPILE_ADDRESSES } from \"./consts.js\";\nexport type { PrecompileName, PrecompileAddress } from \"./consts.js\";\nexport {\n NODE_REGISTRY_CAPABILITIES,\n NODE_REGISTRY_CAPABILITY_MASK,\n NODE_REGISTRY_PUBLIC_SERVICE_MASK,\n NODE_REGISTRY_SELECTORS,\n NodeRegistryError,\n SERVICE_PROBE_STATUS,\n encodeReportServiceProbeCalldata,\n isConcreteServiceProbeStatus,\n isSinglePublicServiceProbeMask,\n isValidNodeRegistryCapabilities,\n isValidPublicServiceProbeMask,\n nodeRegistryAddressHex,\n serviceProbeStatusLabel,\n} from \"./node-registry.js\";\nexport type { ReportServiceProbeCalldataArgs } from \"./node-registry.js\";\nexport {\n ADDRESS_HRP,\n AddressError,\n addressBytesToHex,\n addressToBech32,\n bech32ToAddress,\n bech32ToAddressBytes,\n hexToAddressBytes,\n normalizeAddressHex,\n parseAddress,\n} from \"./address.js\";\nexport {\n ML_DSA_65_PUBLIC_KEY_LEN,\n ML_DSA_65_SIGNATURE_LEN,\n SET_POLICY_CLAIM_DOMAIN_TAG,\n SPENDING_POLICY_SELECTORS,\n SpendingPolicyError,\n composeClaimBoundMessage,\n encodeClaimPolicyByAddressCalldata,\n encodeDisableCalldata,\n encodeEnableCalldata,\n encodeSetPolicyCalldata,\n encodeSetPolicyClaimCalldata,\n spendingPolicyAddressHex,\n} from \"./spending-policy.js\";\nexport type { SpendingPolicyArgs } from \"./spending-policy.js\";\nexport {\n PUBKEY_REGISTRY_ML_DSA_65_PUBLIC_KEY_LEN,\n PUBKEY_REGISTRY_SELECTORS,\n PubkeyRegistryError,\n decodeHasPubkeyReturn,\n decodeLookupPubkeyReturn,\n encodeHasPubkeyCalldata,\n encodeLookupPubkeyCalldata,\n encodeRegisterPubkeyCalldata,\n pubkeyRegistryAddressHex,\n} from \"./pubkey-registry.js\";\nexport type { PubkeyLookup } from \"./pubkey-registry.js\";\n\n// ethers.js compat shim — ethers is a peerDependency. Importers that\n// don't use the shim never pay for the ethers types.\nexport {\n MonolythiumProvider,\n MonolythiumSigner,\n MONOLYTHIUM_NETWORKS,\n MONOLYTHIUM_TESTNET_CHAIN_ID,\n MONOLYTHIUM_TESTNET_NETWORK_NAME,\n translateBlockOut,\n translateReceiptOut,\n translateTxIn,\n} from \"./ethers/index.js\";\nexport type {\n EthersBlockShape,\n EthersReceiptShape,\n EthersTxRequestSubset,\n MonolythiumNetworkConfig,\n MonolythiumProviderOptions,\n MonolythiumSignerBackend,\n} from \"./ethers/index.js\";\n"]}
|