@monolythium/core-sdk 0.3.9 → 0.3.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -5
- package/dist/crypto/index.cjs +58 -0
- package/dist/crypto/index.cjs.map +1 -1
- package/dist/crypto/index.d.cts +2 -2
- package/dist/crypto/index.d.ts +2 -2
- package/dist/crypto/index.js +56 -1
- package/dist/crypto/index.js.map +1 -1
- package/dist/index.cjs +966 -77
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +140 -473
- package/dist/index.d.ts +140 -473
- package/dist/index.js +918 -78
- package/dist/index.js.map +1 -1
- package/dist/{submission-D8xzCLNl.d.cts → submission-CA8L21An.d.cts} +1722 -58
- package/dist/{submission-D8xzCLNl.d.ts → submission-CA8L21An.d.ts} +1722 -58
- package/package.json +1 -1
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/error.ts","../src/address.ts","../src/native-events.ts","../src/consts.ts","../src/node-registry.ts","../src/crypto/bytes.ts","../src/crypto/bincode.ts","../src/crypto/ml-dsa.ts","../src/crypto/envelope.ts","../src/crypto/submission.ts","../src/mrv.ts","../src/registry.ts","../src/types.ts","../src/client.ts","../src/streams.ts","../src/api.ts","../src/bridge.ts","../src/receipt-proof.ts","../src/native-dev.ts","../src/delegation.ts","../src/spending-policy.ts","../src/pubkey-registry.ts","../src/market-actions.ts","../src/agent-actions.ts","../src/network.ts","../src/index.ts"],"names":["expectLength","concatBytes","bytesToHex","hexToBytes","blake3","ml_kem768","randomBytes","chacha20poly1305","keccak_256","field","version","optionalString","expectObject","SDK_VERSION","sdkTypedAddress","toBytes","score","isRecord","stringField","BLS_PUBLIC_KEY_BYTE_LENGTH","ml_dsa65","bls12_381","uint64Word","uint32Word","toBigint","ML_DSA_65_PUBLIC_KEY_LEN","ML_DSA_65_SIGNATURE_LEN","encodeSingleAddressCall","uint8Word","uint256Word","uint16Word","mrvCodeHashHex","monoAddressInto","uint64","bytes32FromHex","positiveU128Decimal","normalizeHexBytes","normalizeBytes32Hex","positiveDecimal"],"mappings":"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","file":"index.cjs","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 * Address display helpers.\n *\n * Monolythium keeps 20-byte account identifiers on the wire, but\n * user-facing surfaces display them as `mono1...` bech32m strings.\n */\n\nexport const ADDRESS_HRP = \"mono\" as const;\nexport const ADDRESS_KIND_HRPS = {\n user: \"mono\",\n smartAccount: \"monos\",\n contract: \"monoc\",\n cluster: \"monok\",\n multisig: \"monom\",\n systemModule: \"monox\",\n} as const;\nexport const RESERVED_ADDRESS_HRPS = [\"monor\", \"monop\", \"monoi\", \"monoa\"] as const;\n\nexport type AddressKind = keyof typeof ADDRESS_KIND_HRPS;\n\nexport interface TypedAddress {\n kind: AddressKind;\n address: string;\n bytes: Uint8Array;\n hex: string;\n}\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 return addressToTypedBech32(\"user\", address);\n}\n\nexport function addressToTypedBech32(\n kind: AddressKind,\n address: string | Uint8Array | readonly number[],\n): string {\n const bytes = typeof address === \"string\" ? hexToAddressBytes(address) : expectLength(address, 20, \"address\");\n return encodeBech32m(ADDRESS_KIND_HRPS[kind], bytes);\n}\n\nfunction encodeBech32m(hrp: string, bytes: Uint8Array): string {\n const words = convertBits([...bytes], 8, 5, true);\n const checksum = createChecksum(hrp, words);\n return `${hrp}1${[...words, ...checksum].map((v) => CHARSET[v]).join(\"\")}`;\n}\n\nexport function bech32ToAddressBytes(address: string): Uint8Array {\n return typedBech32ToAddress(address, \"user\").bytes;\n}\n\nexport function bech32ToAddress(address: string): string {\n return addressBytesToHex(bech32ToAddressBytes(address));\n}\n\nexport function typedBech32ToAddress(address: string, expectedKind?: AddressKind): TypedAddress {\n const parsed = decodeBech32m(address);\n if ((RESERVED_ADDRESS_HRPS as readonly string[]).includes(parsed.hrp)) {\n throw new AddressError(`reserved address hrp '${parsed.hrp}'`);\n }\n const kind = addressKindFromHrp(parsed.hrp);\n if (kind === undefined) {\n throw new AddressError(`unknown address hrp '${parsed.hrp}'`);\n }\n if (expectedKind !== undefined && kind !== expectedKind) {\n throw new AddressError(`unexpected hrp '${parsed.hrp}', expected '${ADDRESS_KIND_HRPS[expectedKind]}'`);\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 const out = Uint8Array.from(bytes);\n return { kind, address: address.toLowerCase(), bytes: out, hex: addressBytesToHex(out) };\n}\n\nexport function requireTypedAddress(\n address: string,\n expectedKind: AddressKind,\n label = \"address\",\n): string {\n if (address.startsWith(\"0x\") || address.startsWith(\"0X\")) {\n throw new AddressError(\n `${label} raw 0x addresses are retired; use typed ${ADDRESS_KIND_HRPS[expectedKind]} bech32m addresses`,\n );\n }\n try {\n return typedBech32ToAddress(address, expectedKind).address;\n } catch (err) {\n const message = err instanceof Error ? err.message : String(err);\n throw new AddressError(\n `${label} must be typed ${ADDRESS_KIND_HRPS[expectedKind]} bech32m address: ${message}`,\n );\n }\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\n/** Address-validation result for non-throwing callers (UI forms, search). */\nexport type AddressValidation =\n | {\n valid: true;\n /** Lower-case bech32m representation; matches what the wire format expects. */\n normalized: string;\n /** Bech32m kind when the input is a typed bech32m address, otherwise null. */\n kind: AddressKind | null;\n /** Which surface the input came from. */\n format: \"hex\" | \"bech32m\";\n /** Raw 20-byte payload, useful for client-side bytes-derived lookups. */\n bytes: Uint8Array;\n }\n | { valid: false; reason: string };\n\n/**\n * Validate an address string without throwing. Accepts both raw hex and\n * typed bech32m. On success returns the canonical bech32m form along with\n * the kind/format/bytes; on failure returns a short reason string.\n */\nexport function validateAddress(address: string): AddressValidation {\n if (typeof address !== \"string\" || address.length === 0) {\n return { valid: false, reason: \"address cannot be empty\" };\n }\n const trimmed = address.trim();\n if (trimmed.length === 0) {\n return { valid: false, reason: \"address cannot be empty\" };\n }\n if (trimmed.startsWith(\"0x\") || trimmed.startsWith(\"0X\")) {\n try {\n const bytes = hexToAddressBytes(trimmed);\n return {\n valid: true,\n normalized: addressToBech32(bytes),\n kind: null,\n format: \"hex\",\n bytes,\n };\n } catch (err) {\n return { valid: false, reason: err instanceof Error ? err.message : String(err) };\n }\n }\n try {\n const typed = typedBech32ToAddress(trimmed);\n return {\n valid: true,\n normalized: typed.address,\n kind: typed.kind,\n format: \"bech32m\",\n bytes: typed.bytes,\n };\n } catch (err) {\n return { valid: false, reason: err instanceof Error ? err.message : String(err) };\n }\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 addressKindFromHrp(hrp: string): AddressKind | undefined {\n for (const [kind, kindHrp] of Object.entries(ADDRESS_KIND_HRPS) as Array<[AddressKind, string]>) {\n if (kindHrp === hrp) return kind;\n }\n return undefined;\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","import { SdkError } from \"./error.js\";\nimport type {\n NativeEventsResponse,\n NativeReceiptEvent,\n NativeReceiptResponse,\n} from \"./client.js\";\n\n/** Common typed payload envelope emitted by the native event projector. */\nexport interface NativeDecodedEvent {\n block_height: number;\n tx_index: number;\n sequence: number;\n family: string;\n event_name: string;\n nonce?: number | null;\n market_surface?: string | null;\n marketSurface?: string | null;\n market_asset_id?: string | null;\n marketAssetId?: string | null;\n market_related_asset_id?: string | null;\n marketRelatedAssetId?: string | null;\n market_order_id?: string | null;\n marketOrderId?: string | null;\n market_related_order_id?: string | null;\n marketRelatedOrderId?: string | null;\n price?: string | null;\n quantity?: string | null;\n remaining?: string | null;\n side?: string | null;\n status?: string | null;\n nft_standard?: string | null;\n nftStandard?: string | null;\n policy?: NativeMrcPolicyProjection | null;\n royalty_bps?: number | null;\n royaltyBps?: number | null;\n listing_kind?: unknown;\n listingKind?: unknown;\n expires_at_block?: number | null;\n expiresAtBlock?: number | null;\n tick_size?: string | null;\n tickSize?: string | null;\n lot_size?: string | null;\n lotSize?: string | null;\n min_quantity?: string | null;\n minQuantity?: string | null;\n min_notional?: string | null;\n minNotional?: string | null;\n payload_hash: string;\n [field: string]: unknown;\n}\n\n/** Canonical policy body projected from native MRC policy-account events. */\nexport interface NativeMrcPolicyProjection {\n enabled: boolean;\n per_action_limit: string | number;\n window_limit: string | number;\n allowed_assets: Array<string | Array<number>>;\n}\n\nexport type NativeEventProjection = NativeDecodedEvent;\n\nexport const NATIVE_MARKET_EVENT_FAMILY = \"market\" as const;\n\n/** Optional filters applied to native receipt event rows. */\nexport interface NativeEventFilter {\n address?: string;\n eventTopic?: string;\n family?: string;\n eventName?: string;\n}\n\nexport function nativeMarketEventFilter(filter: NativeEventFilter = {}): NativeEventFilter {\n return { ...filter, family: NATIVE_MARKET_EVENT_FAMILY };\n}\n\nexport type TypedNativeReceiptEvent<TDecoded extends NativeDecodedEvent = NativeDecodedEvent> =\n NativeReceiptEvent<TDecoded>;\n\nexport type NativeEventConsumer<TDecoded extends NativeDecodedEvent = NativeDecodedEvent> = (\n event: TypedNativeReceiptEvent<TDecoded>,\n) => void | Promise<void>;\n\nexport function isNativeDecodedEvent(value: unknown): value is NativeDecodedEvent {\n const row = asRecord(value);\n return (\n row !== null &&\n typeof row[\"block_height\"] === \"number\" &&\n typeof row[\"tx_index\"] === \"number\" &&\n typeof row[\"sequence\"] === \"number\" &&\n typeof row[\"family\"] === \"string\" &&\n typeof row[\"event_name\"] === \"string\" &&\n typeof row[\"payload_hash\"] === \"string\"\n );\n}\n\nexport function parseNativeDecodedEvent<TDecoded extends NativeDecodedEvent = NativeDecodedEvent>(\n event: Pick<NativeReceiptEvent<unknown>, \"decoded\" | \"decodedJson\" | \"eventTopic\" | \"logIndex\">,\n): TDecoded {\n if (isNativeDecodedEvent(event.decoded)) {\n return event.decoded as TDecoded;\n }\n\n try {\n const parsed = JSON.parse(event.decodedJson) as unknown;\n if (isNativeDecodedEvent(parsed)) {\n return parsed as TDecoded;\n }\n } catch {\n // Fall through to the shape error below.\n }\n\n throw SdkError.malformed(\n `native event ${event.eventTopic} at logIndex ${event.logIndex} is missing a typed decoded payload`,\n );\n}\n\nexport function nativeEventMatches(\n event: NativeReceiptEvent<unknown>,\n filter: NativeEventFilter = {},\n): boolean {\n if (filter.address !== undefined && event.address !== filter.address) return false;\n if (filter.eventTopic !== undefined && event.eventTopic !== filter.eventTopic) return false;\n\n if (filter.family === undefined && filter.eventName === undefined) return true;\n\n let decoded: NativeDecodedEvent;\n try {\n decoded = parseNativeDecodedEvent(event);\n } catch {\n return false;\n }\n if (filter.family !== undefined && decoded.family !== filter.family) return false;\n if (filter.eventName !== undefined && decoded.event_name !== filter.eventName) return false;\n return true;\n}\n\nexport function nativeEventsFromReceipt<\n TDecoded extends NativeDecodedEvent = NativeDecodedEvent,\n>(\n receipt: NativeReceiptResponse<unknown>,\n filter: NativeEventFilter = {},\n): Array<TypedNativeReceiptEvent<TDecoded>> {\n return receipt.events\n .filter((event) => nativeEventMatches(event, filter))\n .map((event) => ({\n ...event,\n decoded: parseNativeDecodedEvent<TDecoded>(event),\n }));\n}\n\nexport function nativeMarketEventsFromReceipt<\n TDecoded extends NativeDecodedEvent = NativeDecodedEvent,\n>(\n receipt: NativeReceiptResponse<unknown>,\n filter: NativeEventFilter = {},\n): Array<TypedNativeReceiptEvent<TDecoded>> {\n return nativeEventsFromReceipt<TDecoded>(receipt, nativeMarketEventFilter(filter));\n}\n\nexport function nativeEventsFromHistory<\n TDecoded extends NativeDecodedEvent = NativeDecodedEvent,\n>(response: NativeEventsResponse<unknown>): NativeEventsResponse<TDecoded> {\n return {\n ...response,\n events: response.events.map((event) => ({\n ...event,\n decoded: parseNativeDecodedEvent<TDecoded>(event),\n })),\n };\n}\n\nexport function nativeMarketEventsFromHistory<\n TDecoded extends NativeDecodedEvent = NativeDecodedEvent,\n>(response: NativeEventsResponse<unknown>): NativeEventsResponse<TDecoded> {\n return {\n ...response,\n filters: { ...response.filters, family: NATIVE_MARKET_EVENT_FAMILY },\n events: response.events\n .filter((event) => nativeEventMatches(event, { family: NATIVE_MARKET_EVENT_FAMILY }))\n .map((event) => ({\n ...event,\n decoded: parseNativeDecodedEvent<TDecoded>(event),\n })),\n };\n}\n\nexport async function consumeNativeEvents<\n TDecoded extends NativeDecodedEvent = NativeDecodedEvent,\n>(\n receipt: NativeReceiptResponse<unknown>,\n consumer: NativeEventConsumer<TDecoded>,\n filter: NativeEventFilter = {},\n): Promise<number> {\n const events = nativeEventsFromReceipt<TDecoded>(receipt, filter);\n for (const event of events) {\n await consumer(event);\n }\n return events.length;\n}\n\nfunction asRecord(value: unknown): Record<string, unknown> | null {\n if (value === null || typeof value !== \"object\" || Array.isArray(value)) return null;\n return value as Record<string, unknown>;\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 * Base-fee burn destination.\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 native/precompile address map for the current v4.1 surface.\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`, `0x1006`, `0x1007`, and `0x1103` are intentionally absent.\n * They are not part of the current SDK surface.\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 — 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 /** Native bridge route-control surface — gateable. */\n BRIDGE: \"0x0000000000000000000000000000000000001008\",\n /** Decentralized multi-signer oracle — non-gateable. */\n ORACLE: \"0x0000000000000000000000000000000000001009\",\n /** Distributed delegation primitive — gateable. */\n DELEGATION: \"0x000000000000000000000000000000000000100A\",\n /** One-time emergency-key registry — non-gateable. */\n EMERGENCY_KEY: \"0x0000000000000000000000000000000000001100\",\n /** VRF precompile. */\n VRF: \"0x0000000000000000000000000000000000001101\",\n /** Streaming-payments primitive — gateable. */\n STREAMING_PAYMENTS: \"0x0000000000000000000000000000000000001102\",\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. */\n SPENDING_POLICY: \"0x000000000000000000000000000000000000110C\",\n /** Primary ML-DSA-65 pubkey registry — gateable. */\n PUBKEY_REGISTRY: \"0x000000000000000000000000000000000000110D\",\n /** Hierarchical name registry — gateable. */\n NAME_REGISTRY: \"0x000000000000000000000000000000000000110E\",\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","export function concatBytes(...chunks: Uint8Array[]): Uint8Array {\n const len = chunks.reduce((n, c) => n + c.length, 0);\n const out = new Uint8Array(len);\n let off = 0;\n for (const chunk of chunks) {\n out.set(chunk, off);\n off += chunk.length;\n }\n return out;\n}\n\nexport function bytesToHex(bytes: Uint8Array): string {\n let out = \"0x\";\n for (let i = 0; i < bytes.length; i++) {\n out += bytes[i]!.toString(16).padStart(2, \"0\");\n }\n return out;\n}\n\nexport function hexToBytes(hex: string, label = \"hex\"): Uint8Array {\n const stripped = hex.startsWith(\"0x\") || hex.startsWith(\"0X\") ? hex.slice(2) : hex;\n if (stripped.length % 2 !== 0) {\n throw new Error(`${label} must have even length`);\n }\n const out = new Uint8Array(stripped.length / 2);\n for (let i = 0; i < out.length; i++) {\n const b = Number.parseInt(stripped.slice(i * 2, i * 2 + 2), 16);\n if (Number.isNaN(b)) {\n throw new Error(`${label} contains invalid hex`);\n }\n out[i] = b;\n }\n return out;\n}\n\nexport function expectBytes(value: Uint8Array | readonly number[], len: number, label: string): Uint8Array {\n if (value.length !== len) {\n throw new Error(`${label} must be ${len} bytes, got ${value.length}`);\n }\n return value instanceof Uint8Array ? value : Uint8Array.from(value);\n}\n\nexport function bigintToBeBytes(value: bigint, bytes: number, label: string): Uint8Array {\n if (value < 0n || value >= (1n << BigInt(bytes * 8))) {\n throw new Error(`${label} out of ${bytes * 8}-bit range`);\n }\n const out = new Uint8Array(bytes);\n let v = value;\n for (let i = bytes - 1; i >= 0; i--) {\n out[i] = Number(v & 0xffn);\n v >>= 8n;\n }\n return out;\n}\n\nexport function parseBigint(value: bigint | number | string | undefined, label: string): bigint {\n if (value === undefined) throw new Error(`${label} missing`);\n if (typeof value === \"bigint\") return value;\n if (typeof value === \"number\") {\n if (!Number.isSafeInteger(value) || value < 0) throw new Error(`${label} must be a non-negative safe integer`);\n return BigInt(value);\n }\n if (value.startsWith(\"0x\") || value.startsWith(\"0X\")) return BigInt(value);\n return BigInt(value);\n}\n","export class BincodeWriter {\n #chunks: number[] = [];\n\n u8(value: number): void {\n this.#int(value, 1);\n }\n\n u16(value: number): void {\n this.#int(value, 2);\n }\n\n u32(value: number): void {\n this.#int(value, 4);\n }\n\n u64(value: bigint | number): void {\n this.#big(value, 8);\n }\n\n u128(value: bigint | number): void {\n this.#big(value, 16);\n }\n\n enumVariant(value: number): void {\n this.u32(value);\n }\n\n rawBytes(bytes: Uint8Array): void {\n for (const b of bytes) this.#chunks.push(b);\n }\n\n bytes(bytes: Uint8Array): void {\n this.u64(BigInt(bytes.length));\n this.rawBytes(bytes);\n }\n\n optionBytes(bytes: Uint8Array | null): void {\n if (bytes === null) {\n this.u8(0);\n return;\n }\n this.u8(1);\n this.rawBytes(bytes);\n }\n\n toBytes(): Uint8Array {\n return Uint8Array.from(this.#chunks);\n }\n\n #int(value: number, bytes: number): void {\n if (!Number.isSafeInteger(value) || value < 0 || value >= 2 ** (bytes * 8)) {\n throw new Error(`integer out of u${bytes * 8} range`);\n }\n for (let i = 0; i < bytes; i++) {\n this.#chunks.push((value >> (8 * i)) & 0xff);\n }\n }\n\n #big(value: bigint | number, bytes: number): void {\n let v = typeof value === \"bigint\" ? value : BigInt(value);\n if (v < 0n || v >= (1n << BigInt(bytes * 8))) {\n throw new Error(`integer out of u${bytes * 8} range`);\n }\n for (let i = 0; i < bytes; i++) {\n this.#chunks.push(Number(v & 0xffn));\n v >>= 8n;\n }\n }\n}\n","import { ml_dsa65 } from \"@noble/post-quantum/ml-dsa.js\";\nimport { blake3 } from \"@noble/hashes/blake3.js\";\nimport { keccak_256 } from \"@noble/hashes/sha3.js\";\nimport { bigintToBeBytes, bytesToHex, concatBytes, expectBytes } from \"./bytes.js\";\nimport { bincodeSignedTransaction, encodeTransactionForHash, type NativeEvmTxFields } from \"./tx.js\";\n\nexport const ML_DSA_65_SEED_LEN = 32;\nexport const ML_DSA_65_SIGNING_KEY_LEN = 4032;\nexport const ML_DSA_65_PUBLIC_KEY_LEN = 1952;\nexport const ML_DSA_65_SIGNATURE_LEN = 3309;\nexport const STANDARD_ALGO_NUMBER_ML_DSA_65 = 1001;\nexport const ENUM_VARIANT_INDEX_ML_DSA_65 = 5;\nexport const ADDRESS_DERIVATION_DOMAIN = \"MONO_ADDRESS_BLAKE3_20_V1\";\n\nconst ADDRESS_DERIVATION_DOMAIN_BYTES = new TextEncoder().encode(ADDRESS_DERIVATION_DOMAIN);\n\nexport class MlDsa65Backend {\n readonly #secretKey: Uint8Array;\n readonly #publicKey: Uint8Array;\n readonly #addressBytes: Uint8Array;\n\n private constructor(secretKey: Uint8Array, publicKey: Uint8Array) {\n this.#secretKey = expectBytes(secretKey, ML_DSA_65_SIGNING_KEY_LEN, \"ML-DSA-65 secret key\").slice();\n this.#publicKey = expectBytes(publicKey, ML_DSA_65_PUBLIC_KEY_LEN, \"ML-DSA-65 public key\").slice();\n this.#addressBytes = mlDsa65AddressBytes(this.#publicKey);\n }\n\n static fromSeed(seed: Uint8Array | readonly number[]): MlDsa65Backend {\n const kp = ml_dsa65.keygen(expectBytes(seed, ML_DSA_65_SEED_LEN, \"ML-DSA-65 seed\"));\n return new MlDsa65Backend(kp.secretKey, kp.publicKey);\n }\n\n publicKey(): Uint8Array {\n return this.#publicKey.slice();\n }\n\n addressBytes(): Uint8Array {\n return this.#addressBytes.slice();\n }\n\n getAddress(): string {\n return bytesToHex(this.#addressBytes);\n }\n\n sign(message: Uint8Array): Uint8Array {\n return ml_dsa65.sign(message, this.#secretKey, { extraEntropy: false });\n }\n\n signPrehash(digest: Uint8Array): Uint8Array {\n return this.sign(expectBytes(digest, 32, \"prehash\"));\n }\n\n verify(message: Uint8Array, signature: Uint8Array): boolean {\n return ml_dsa65.verify(\n expectBytes(signature, ML_DSA_65_SIGNATURE_LEN, \"ML-DSA-65 signature\"),\n message,\n this.#publicKey,\n );\n }\n\n signEvmTx(fields: NativeEvmTxFields): {\n wireHex: string;\n wireBytes: Uint8Array;\n sighash: Uint8Array;\n txHash: Uint8Array;\n } {\n const txHashPreimage = encodeTransactionForHash(fields, 0x01);\n const sighash = keccak_256(txHashPreimage);\n const signature = this.sign(sighash);\n const wireBytes = bincodeSignedTransaction(fields, signature, this.#publicKey);\n const txHash = keccak_256(\n concatBytes(\n encodeTransactionForHash(fields, 0x02),\n signature,\n this.#publicKey,\n ),\n );\n return {\n wireHex: bytesToHex(wireBytes).slice(2),\n wireBytes,\n sighash,\n txHash,\n };\n }\n}\n\nexport function mlDsa65AddressFromPublicKey(publicKey: Uint8Array | readonly number[]): string {\n return bytesToHex(mlDsa65AddressBytes(publicKey));\n}\n\nexport function mlDsa65AddressBytes(publicKey: Uint8Array | readonly number[]): Uint8Array {\n const bytes = expectBytes(publicKey, ML_DSA_65_PUBLIC_KEY_LEN, \"ML-DSA-65 public key\");\n return blake3(concatBytes(\n ADDRESS_DERIVATION_DOMAIN_BYTES,\n bigintToBeBytes(BigInt(STANDARD_ALGO_NUMBER_ML_DSA_65), 2, \"ML-DSA-65 algo id\"),\n bytes,\n )).slice(0, 20);\n}\n\nexport function encodeMlDsa65Opaque(raw: Uint8Array | readonly number[]): Uint8Array {\n const bytes = raw instanceof Uint8Array ? raw : Uint8Array.from(raw);\n const len = bytes.length === ML_DSA_65_PUBLIC_KEY_LEN ? ML_DSA_65_PUBLIC_KEY_LEN : ML_DSA_65_SIGNATURE_LEN;\n expectBytes(bytes, len, \"ML-DSA-65 opaque bytes\");\n const out = new Uint8Array(4 + 2 + 8 + bytes.length);\n const dv = new DataView(out.buffer);\n dv.setUint32(0, ENUM_VARIANT_INDEX_ML_DSA_65, true);\n dv.setUint16(4, STANDARD_ALGO_NUMBER_ML_DSA_65, true);\n dv.setBigUint64(6, BigInt(bytes.length), true);\n out.set(bytes, 14);\n return out;\n}\n\nexport function uint256Bytes(value: bigint | number | string, label: string): Uint8Array {\n const v = typeof value === \"bigint\" ? value : typeof value === \"number\" ? BigInt(value) : BigInt(value);\n return bigintToBeBytes(v, 32, label);\n}\n","import { ml_kem768 } from \"@noble/post-quantum/ml-kem.js\";\nimport { chacha20poly1305 } from \"@noble/ciphers/chacha.js\";\nimport { keccak_256 } from \"@noble/hashes/sha3.js\";\nimport { randomBytes } from \"@noble/hashes/utils.js\";\nimport { BincodeWriter } from \"./bincode.js\";\nimport { bytesToHex, concatBytes, expectBytes } from \"./bytes.js\";\nimport {\n ENUM_VARIANT_INDEX_ML_DSA_65,\n ML_DSA_65_PUBLIC_KEY_LEN,\n ML_DSA_65_SIGNATURE_LEN,\n STANDARD_ALGO_NUMBER_ML_DSA_65,\n} from \"./ml-dsa.js\";\n\nconst DKG_AEAD_DOMAIN_TAG = new TextEncoder().encode(\"protocore/v2/mempool/dkg-mlkem768/1\");\n\nexport const ML_KEM_768_CIPHERTEXT_LEN = 1088;\nexport const ML_KEM_768_ENCAPSULATION_KEY_LEN = 1184;\nexport const ML_KEM_768_SHARED_SECRET_LEN = 32;\nexport const DKG_NONCE_LEN = 12;\nexport const DKG_AEAD_TAG_LEN = 16;\n\nexport const MempoolClass = {\n Transfer: 0,\n ContractCall: 1,\n PrivacyOp: 2,\n CLOBOp: 3,\n AgentOp: 4,\n FoundationOp: 5,\n /** @deprecated Use FoundationOp. */\n GovernanceOp: 5,\n RWAOp: 6,\n} as const;\nexport type MempoolClass = (typeof MempoolClass)[keyof typeof MempoolClass];\n\nexport interface NonceAad {\n sender: Uint8Array;\n nonce: bigint;\n chainId: bigint;\n class: MempoolClass;\n maxFeePerGas: bigint;\n maxPriorityFeePerGas: bigint;\n gasLimit: bigint;\n}\n\nexport interface DecryptHint {\n epoch: bigint;\n scheme: number;\n}\n\nexport interface EncryptedEnvelope {\n nonceAad: NonceAad;\n ciphertext: Uint8Array;\n decryptionHint: DecryptHint;\n senderPubkey: Uint8Array;\n outerSignature: Uint8Array;\n sender: Uint8Array;\n}\n\nexport function bincodeNonceAad(aad: NonceAad): Uint8Array {\n const w = new BincodeWriter();\n w.bytes(expectBytes(aad.sender, 20, \"NonceAad.sender\"));\n w.u64(aad.nonce);\n w.u64(aad.chainId);\n w.enumVariant(aad.class);\n w.u128(aad.maxFeePerGas);\n w.u128(aad.maxPriorityFeePerGas);\n w.u64(aad.gasLimit);\n return w.toBytes();\n}\n\nexport function bincodeDecryptHint(hint: DecryptHint): Uint8Array {\n const w = new BincodeWriter();\n w.u64(hint.epoch);\n w.u16(hint.scheme);\n return w.toBytes();\n}\n\nexport function bincodeEncryptedEnvelope(env: EncryptedEnvelope): Uint8Array {\n const w = new BincodeWriter();\n w.rawBytes(bincodeNonceAad(env.nonceAad));\n w.bytes(env.ciphertext);\n w.rawBytes(bincodeDecryptHint(env.decryptionHint));\n bincodeMlDsa65OpaqueInto(w, expectBytes(env.senderPubkey, ML_DSA_65_PUBLIC_KEY_LEN, \"senderPubkey\"));\n bincodeMlDsa65OpaqueInto(w, expectBytes(env.outerSignature, ML_DSA_65_SIGNATURE_LEN, \"outerSignature\"));\n w.bytes(expectBytes(env.sender, 20, \"sender\"));\n return w.toBytes();\n}\n\nexport function encryptInnerTx(\n signedInnerTxBincode: Uint8Array,\n nonceAad: NonceAad,\n kemEncapsulationKey: Uint8Array,\n): Uint8Array {\n expectBytes(kemEncapsulationKey, ML_KEM_768_ENCAPSULATION_KEY_LEN, \"kemEncapsulationKey\");\n const { cipherText: kemCt, sharedSecret } = ml_kem768.encapsulate(kemEncapsulationKey);\n const nonce = randomBytes(DKG_NONCE_LEN);\n const cipher = chacha20poly1305(sharedSecret, nonce, aadFor(nonceAad));\n const aeadCt = cipher.encrypt(signedInnerTxBincode);\n sharedSecret.fill(0);\n return concatBytes(kemCt, nonce, aeadCt);\n}\n\nexport function outerSigDigest(\n nonceAad: NonceAad,\n ciphertext: Uint8Array,\n decryptionHint: DecryptHint,\n senderPubkey: Uint8Array,\n): Uint8Array {\n const aad = bincodeNonceAad(nonceAad);\n const hint = bincodeDecryptHint(decryptionHint);\n return keccak_256(concatBytes(aad, ciphertext, hint, expectBytes(senderPubkey, ML_DSA_65_PUBLIC_KEY_LEN, \"senderPubkey\")));\n}\n\nexport async function buildEncryptedEnvelope(args: {\n signedInnerTxBincode: Uint8Array;\n nonceAad: NonceAad;\n decryptionHint: DecryptHint;\n kemEncapsulationKey: Uint8Array;\n senderAddress: Uint8Array;\n senderPubkey: Uint8Array;\n signOuterDigest: (digest: Uint8Array) => Promise<Uint8Array> | Uint8Array;\n}): Promise<{ envelope: EncryptedEnvelope; wireBytes: Uint8Array; wireHex: string }> {\n const ciphertext = encryptInnerTx(args.signedInnerTxBincode, args.nonceAad, args.kemEncapsulationKey);\n const digest = outerSigDigest(args.nonceAad, ciphertext, args.decryptionHint, args.senderPubkey);\n const outerSignature = await args.signOuterDigest(digest);\n const envelope: EncryptedEnvelope = {\n nonceAad: args.nonceAad,\n ciphertext,\n decryptionHint: args.decryptionHint,\n senderPubkey: expectBytes(args.senderPubkey, ML_DSA_65_PUBLIC_KEY_LEN, \"senderPubkey\"),\n outerSignature: expectBytes(outerSignature, ML_DSA_65_SIGNATURE_LEN, \"outerSignature\"),\n sender: expectBytes(args.senderAddress, 20, \"senderAddress\"),\n };\n const wireBytes = bincodeEncryptedEnvelope(envelope);\n return { envelope, wireBytes, wireHex: bytesToHex(wireBytes) };\n}\n\nfunction aadFor(aad: NonceAad): Uint8Array {\n return concatBytes(DKG_AEAD_DOMAIN_TAG, bincodeNonceAad(aad));\n}\n\nfunction bincodeMlDsa65OpaqueInto(w: BincodeWriter, raw: Uint8Array): void {\n w.enumVariant(ENUM_VARIANT_INDEX_ML_DSA_65);\n w.u16(STANDARD_ALGO_NUMBER_ML_DSA_65);\n w.bytes(raw);\n}\n","import { RpcClient } from \"../client.js\";\nimport { hexToAddressBytes } from \"../address.js\";\nimport { bytesToHex, hexToBytes, parseBigint } from \"./bytes.js\";\nimport { buildEncryptedEnvelope, MempoolClass, type DecryptHint, type NonceAad } from \"./envelope.js\";\nimport type { MlDsa65Backend } from \"./ml-dsa.js\";\nimport type { NativeEvmTxFields } from \"./tx.js\";\n\nexport interface EncryptionKey {\n algo: string;\n epoch: bigint;\n encapsulationKey: Uint8Array;\n}\n\nexport interface EncryptedSubmission {\n envelopeWireHex: string;\n innerSighashHex: string;\n innerTxHashHex: string;\n innerWireBytes: number;\n}\n\nexport async function fetchEncryptionKey(client: RpcClient): Promise<EncryptionKey> {\n const result = await client.call<{ algo?: string; epoch: number | string; encapsulationKey: string }>(\n \"lyth_getEncryptionKey\",\n [],\n );\n return {\n algo: result.algo ?? \"ml-kem-768\",\n epoch: typeof result.epoch === \"string\" ? BigInt(result.epoch) : BigInt(result.epoch),\n encapsulationKey: hexToBytes(result.encapsulationKey, \"encapsulationKey\"),\n };\n}\n\nexport async function buildEncryptedSubmission(args: {\n backend: MlDsa65Backend;\n tx: NativeEvmTxFields;\n encryptionKey: EncryptionKey;\n class?: MempoolClass;\n}): Promise<EncryptedSubmission> {\n const input = normalizeInput(args.tx.input);\n const to = normalizeTo(args.tx.to);\n const nonceAad: NonceAad = {\n sender: args.backend.addressBytes(),\n nonce: parseBigint(args.tx.nonce, \"nonce\"),\n chainId: parseBigint(args.tx.chainId, \"chainId\"),\n class: args.class ?? (to !== null && input.length === 0 ? MempoolClass.Transfer : MempoolClass.ContractCall),\n maxFeePerGas: u128Checked(parseBigint(args.tx.maxFeePerGas, \"maxFeePerGas\"), \"maxFeePerGas\"),\n maxPriorityFeePerGas: u128Checked(\n parseBigint(args.tx.maxPriorityFeePerGas, \"maxPriorityFeePerGas\"),\n \"maxPriorityFeePerGas\",\n ),\n gasLimit: parseBigint(args.tx.gasLimit, \"gasLimit\"),\n };\n const signed = args.backend.signEvmTx(args.tx);\n const decryptionHint: DecryptHint = { epoch: args.encryptionKey.epoch, scheme: 0 };\n const built = await buildEncryptedEnvelope({\n signedInnerTxBincode: signed.wireBytes,\n nonceAad,\n decryptionHint,\n kemEncapsulationKey: args.encryptionKey.encapsulationKey,\n senderAddress: args.backend.addressBytes(),\n senderPubkey: args.backend.publicKey(),\n signOuterDigest: (digest) => args.backend.signPrehash(digest),\n });\n return {\n envelopeWireHex: built.wireHex,\n innerSighashHex: `0x${[...signed.sighash].map((b) => b.toString(16).padStart(2, \"0\")).join(\"\")}`,\n innerTxHashHex: bytesToHex(signed.txHash),\n innerWireBytes: signed.wireBytes.length,\n };\n}\n\nexport async function submitEncryptedEnvelope(client: RpcClient, envelopeWireHex: string): Promise<string> {\n return client.call(\"lyth_submitEncrypted\", [envelopeWireHex]);\n}\n\nfunction u128Checked(value: bigint, field: string): bigint {\n const cap = (1n << 128n) - 1n;\n if (value < 0n || value > cap) {\n throw new Error(`${field} must fit in u128 for encrypted nonce AAD`);\n }\n return value;\n}\n\nfunction normalizeTo(value: NativeEvmTxFields[\"to\"]): Uint8Array | null {\n if (value === null) return null;\n if (typeof value === \"string\") return hexToAddressBytes(value);\n const bytes = value instanceof Uint8Array ? value : Uint8Array.from(value);\n if (bytes.length !== 20) throw new Error(\"to must be 20 bytes\");\n return bytes;\n}\n\nfunction normalizeInput(value: NativeEvmTxFields[\"input\"]): Uint8Array {\n if (value === undefined) return new Uint8Array(0);\n if (typeof value === \"string\") return hexToBytes(value, \"input\");\n return value instanceof Uint8Array ? value : Uint8Array.from(value);\n}\n","import { blake3 } from \"@noble/hashes/blake3.js\";\nimport { ADDRESS_KIND_HRPS, addressToTypedBech32, typedBech32ToAddress } from \"./address.js\";\nimport {\n buildEncryptedSubmission,\n fetchEncryptionKey,\n submitEncryptedEnvelope,\n type EncryptionKey,\n} from \"./crypto/submission.js\";\nimport { BincodeWriter } from \"./crypto/bincode.js\";\n\nexport type { MrvAbiManifest } from \"./bindings/MrvAbiManifest.js\";\nexport type { MrvAbiParam } from \"./bindings/MrvAbiParam.js\";\nexport type { MrvAbiSymbol } from \"./bindings/MrvAbiSymbol.js\";\nexport type { MrvAbiSymbolKind } from \"./bindings/MrvAbiSymbolKind.js\";\nexport type { MrvAbiType } from \"./bindings/MrvAbiType.js\";\nexport type { MrvAddressKind } from \"./bindings/MrvAddressKind.js\";\nexport type { MrvArtifactMetadata } from \"./bindings/MrvArtifactMetadata.js\";\nexport type { MrvBuildMetadata } from \"./bindings/MrvBuildMetadata.js\";\nexport type { MrvCallRequest } from \"./bindings/MrvCallRequest.js\";\nexport type { MrvCallResponse } from \"./bindings/MrvCallResponse.js\";\nexport type { MrvCallStatus } from \"./bindings/MrvCallStatus.js\";\nexport type { MrvDeployPayload } from \"./bindings/MrvDeployPayload.js\";\nexport type { MrvDeployRequest } from \"./bindings/MrvDeployRequest.js\";\nexport type { MrvDeployResponse } from \"./bindings/MrvDeployResponse.js\";\nexport type { MrvEventRecord } from \"./bindings/MrvEventRecord.js\";\nexport type { MrvExecutionReceipt } from \"./bindings/MrvExecutionReceipt.js\";\nexport type { MrvMemoryLimits } from \"./bindings/MrvMemoryLimits.js\";\nexport type { MrvMeterCounters } from \"./bindings/MrvMeterCounters.js\";\nexport type { MrvNativeStateDelta } from \"./bindings/MrvNativeStateDelta.js\";\nexport type { MrvResolvedSyscall } from \"./bindings/MrvResolvedSyscall.js\";\nexport type { MrvRevertPayload } from \"./bindings/MrvRevertPayload.js\";\nexport type { MrvRiscvProfile } from \"./bindings/MrvRiscvProfile.js\";\nexport type { MrvStorageNamespace } from \"./bindings/MrvStorageNamespace.js\";\nexport type { MrvSyscallImport } from \"./bindings/MrvSyscallImport.js\";\nexport type { MrvTransactionExtension } from \"./bindings/MrvTransactionExtension.js\";\nexport type { MrvTypedAddress } from \"./bindings/MrvTypedAddress.js\";\nexport type { MrvValidatedArtifactMetadata } from \"./bindings/MrvValidatedArtifactMetadata.js\";\n\nimport type { AddressKind } from \"./address.js\";\nimport type { MrvAbiManifest } from \"./bindings/MrvAbiManifest.js\";\nimport type { MrvAbiType } from \"./bindings/MrvAbiType.js\";\nimport type { MrvAddressKind } from \"./bindings/MrvAddressKind.js\";\nimport type { MrvArtifactMetadata } from \"./bindings/MrvArtifactMetadata.js\";\nimport type { MrvCallRequest } from \"./bindings/MrvCallRequest.js\";\nimport type { MrvDeployRequest } from \"./bindings/MrvDeployRequest.js\";\nimport type { MrvResolvedSyscall } from \"./bindings/MrvResolvedSyscall.js\";\nimport type { MrvTransactionExtension } from \"./bindings/MrvTransactionExtension.js\";\nimport type { MrvValidatedArtifactMetadata } from \"./bindings/MrvValidatedArtifactMetadata.js\";\nimport type { RpcClient } from \"./client.js\";\nimport type { MempoolClass } from \"./crypto/envelope.js\";\nimport type { MlDsa65Backend } from \"./crypto/ml-dsa.js\";\nimport type { NativeEvmTxFields, NativeTxExtensionLike } from \"./crypto/tx.js\";\nimport type { NativeReceiptFee } from \"./client.js\";\n\nexport type MrvBytesLike = string | Uint8Array | readonly number[];\nexport type MrvDecimalLike = string | number | bigint;\n\nexport interface MrvRequestBuildOptions {\n from?: string;\n valueLythoshi?: MrvDecimalLike;\n executionUnitLimit?: number | bigint;\n maxExecutionFeeLythoshi?: MrvDecimalLike;\n priorityTipLythoshi?: MrvDecimalLike;\n nonce?: number | bigint;\n}\n\nexport interface MrvDeployPlanOptions extends MrvRequestBuildOptions {\n artifactHash?: string;\n}\n\nexport interface MrvDeployPayloadRequestOptions extends MrvRequestBuildOptions {\n constructorInput?: MrvBytesLike | null;\n}\n\nexport interface MrvDeployPayloadPlanOptions extends MrvDeployPayloadRequestOptions {\n artifactHash?: string;\n}\n\nexport interface MrvDeployPlan {\n request: MrvDeployRequest;\n extension: MrvTransactionExtension;\n expectedContractAddress?: string;\n}\n\nexport interface MrvCallPlan {\n request: MrvCallRequest;\n extension: MrvTransactionExtension;\n}\n\nexport type MrvDeployNativeTxOptions = Omit<\n MrvDeployPlanOptions,\n \"executionUnitLimit\" | \"maxExecutionFeeLythoshi\" | \"nonce\"\n> & {\n chainId: number | bigint;\n nonce: number | bigint;\n executionUnitLimit: number | bigint;\n maxExecutionFeeLythoshi: MrvDecimalLike;\n};\n\nexport type MrvDeployPayloadNativeTxOptions = Omit<\n MrvDeployPayloadPlanOptions,\n \"executionUnitLimit\" | \"maxExecutionFeeLythoshi\" | \"nonce\"\n> & {\n chainId: number | bigint;\n nonce: number | bigint;\n executionUnitLimit: number | bigint;\n maxExecutionFeeLythoshi: MrvDecimalLike;\n};\n\nexport type MrvCallNativeTxOptions = Omit<\n MrvRequestBuildOptions,\n \"executionUnitLimit\" | \"maxExecutionFeeLythoshi\" | \"nonce\"\n> & {\n chainId: number | bigint;\n nonce: number | bigint;\n executionUnitLimit: number | bigint;\n maxExecutionFeeLythoshi: MrvDecimalLike;\n};\n\nexport interface MrvNativeTxFacade {\n chainId: bigint;\n nonce: bigint;\n valueLythoshi: string;\n executionUnitLimit: bigint;\n maxExecutionFeeLythoshi: string;\n priorityTipLythoshi: string;\n}\n\nexport interface MrvNativeFeePreview {\n totalLythoshi: string;\n totalLyth: string;\n cyclesUsed: bigint;\n executionUnitLimit: bigint;\n maxExecutionFeeLythoshi: string;\n priorityTipLythoshi: string;\n}\n\nexport interface MrvDeployNativeTxPlan extends MrvDeployPlan {\n nativeTx: MrvNativeTxFacade;\n feePreview: MrvNativeFeePreview;\n tx: NativeEvmTxFields;\n}\n\nexport interface MrvCallNativeTxPlan extends MrvCallPlan {\n nativeTx: MrvNativeTxFacade;\n feePreview: MrvNativeFeePreview;\n tx: NativeEvmTxFields;\n}\n\nexport interface MrvEncryptedSubmissionResult {\n envelopeWireHex: string;\n innerSighashHex: string;\n innerTxHashHex: string;\n innerWireBytes: number;\n txHash: string;\n}\n\nexport type MrvDeploySubmitOptions = MrvDeployNativeTxOptions & {\n encryptionKey?: EncryptionKey;\n class?: MempoolClass;\n};\n\nexport type MrvDeployPayloadSubmitOptions = MrvDeployPayloadNativeTxOptions & {\n encryptionKey?: EncryptionKey;\n class?: MempoolClass;\n};\n\nexport type MrvCallSubmitOptions = MrvCallNativeTxOptions & {\n encryptionKey?: EncryptionKey;\n class?: MempoolClass;\n};\n\nexport type MrvDeploySubmission = MrvDeployNativeTxPlan & MrvEncryptedSubmissionResult;\nexport type MrvDeployPayloadSubmission = MrvDeployNativeTxPlan & MrvEncryptedSubmissionResult;\nexport type MrvCallSubmission = MrvCallNativeTxPlan & MrvEncryptedSubmissionResult;\n\nexport const MRV_FORMAT_VERSION = 1 as const;\nexport const MRV_DEPLOY_PAYLOAD_VERSION = 1 as const;\nexport const MRV_PROFILE_MONO_RV32IM_V1 = \"mono_rv32im_v1\" as const;\nexport const MRV_MEMORY_PAGE_BYTES = 65_536 as const;\nexport const MRV_MAX_CODE_BYTES = 16 * 1024 * 1024;\nexport const MRV_MAX_DEBUG_BYTES = 16 * 1024 * 1024;\nexport const MRV_MAX_MEMORY_PAGES = 1024 as const;\nexport const MRV_MAX_ABI_SYMBOLS = 1024 as const;\nexport const MRV_MAX_STORAGE_NAMESPACE_BYTES = 64 as const;\nexport const LYTH_DECIMALS = 8 as const;\nexport const NATIVE_LYTH_DECIMALS = LYTH_DECIMALS;\nexport const LYTHOSHI_PER_LYTH = 100_000_000n;\nexport const MRV_TX_EXTENSION_KIND = 0x30 as const;\nexport const MRV_TX_EXTENSION_V1 = 0x01 as const;\n\nconst MRV_CODE_HASH_DOMAIN = new TextEncoder().encode(\"MONO_MRV_CODE_V1\");\nconst MRV_CONTRACT_ADDRESS_DOMAIN = new TextEncoder().encode(\"mono:riscv:contract-address:v1\");\nconst MONO_SYSCALL_MODULE = \"mono\";\n\nconst SYSCALLS = [\n [0x0101, \"storage_read\"],\n [0x0102, \"storage_write\"],\n [0x0103, \"storage_delete\"],\n [0x0201, \"caller\"],\n [0x0202, \"contract_address\"],\n [0x0203, \"block_height\"],\n [0x0204, \"block_hash\"],\n [0x0301, \"call_contract\"],\n [0x0302, \"emit_event\"],\n [0x0303, \"transfer_native\"],\n [0x0401, \"verify_signature\"],\n [0x0402, \"hash\"],\n [0x0501, \"revert\"],\n] as const;\n\nconst SYSCALL_NAME_BY_ID = new Map<number, string>(SYSCALLS);\nconst SYSCALL_ID_BY_NAME = new Map<string, number>(SYSCALLS.map(([id, name]) => [name, id]));\n\nexport class MrvValidationError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"MrvValidationError\";\n }\n}\n\nexport interface LythFormatOptions {\n includeUnit?: boolean;\n}\n\nexport const MRV_STRUCTURED_FEE_FIELDS = [\n \"total_lythoshi\",\n \"cycles_used\",\n \"base_price_per_cycle_lythoshi\",\n \"state_io_units\",\n \"state_io_price_per_unit_lythoshi\",\n \"priority_tip_lythoshi\",\n] as const;\n\nexport interface MrvFeeDisplayConformanceInput {\n expectedTotalLythoshi: MrvDecimalLike;\n defaultFeeText: string;\n detailTexts?: readonly string[];\n structuredFee?: unknown;\n customFeeInputVisible?: boolean;\n speedUpCancelVisible?: boolean;\n}\n\nexport interface MrvFeeDisplayConformanceReport {\n passed: boolean;\n failures: string[];\n expectedDefaultFeeText: string;\n}\n\nexport interface MrvStructuredFeeConformanceOptions {\n expectedTotalLythoshi?: MrvDecimalLike;\n label?: string;\n}\n\nexport interface MrvStructuredFeeConformanceReport {\n passed: boolean;\n failures: string[];\n}\n\nexport interface NativeReceiptFeeDisplay {\n defaultFeeText: string;\n detailTexts: string[];\n totalLythoshi: string;\n totalLyth: string;\n}\n\nexport function formatLyth(lythoshi: MrvDecimalLike, options: LythFormatOptions = {}): string {\n const amount = BigInt(normalizeDecimalLike(\"lythoshi\", lythoshi));\n const whole = amount / LYTHOSHI_PER_LYTH;\n const fraction = amount % LYTHOSHI_PER_LYTH;\n let formatted = formatWholeWithCommas(whole);\n if (fraction !== 0n) {\n formatted += `.${fraction.toString().padStart(NATIVE_LYTH_DECIMALS, \"0\").replace(/0+$/, \"\")}`;\n }\n if (options.includeUnit !== false) {\n formatted += \" LYTH\";\n }\n return formatted;\n}\n\nexport function formatLythoshi(lythoshi: MrvDecimalLike, options: LythFormatOptions = {}): string {\n return formatLyth(lythoshi, options);\n}\n\nexport function parseLythToLythoshi(input: string): bigint {\n const numeric = stripLythUnit(input);\n const parts = numeric.split(\".\");\n if (parts.length > 2) {\n throw new MrvValidationError(\"lyth amount must be a canonical LYTH decimal\");\n }\n const [wholeRaw, fractionRaw = \"\"] = parts;\n if (!isCanonicalWholeLyth(wholeRaw)) {\n throw new MrvValidationError(\"lyth amount must be a canonical LYTH decimal\");\n }\n if (numeric.includes(\".\") && fractionRaw.length === 0) {\n throw new MrvValidationError(\"lyth amount must be a canonical LYTH decimal\");\n }\n if (fractionRaw.length > NATIVE_LYTH_DECIMALS || !/^[0-9]*$/.test(fractionRaw)) {\n throw new MrvValidationError(\"lyth amount supports at most 8 decimal places\");\n }\n const whole = BigInt(wholeRaw.replaceAll(\",\", \"\"));\n const fraction = fractionRaw === \"\" ? 0n : BigInt(fractionRaw.padEnd(NATIVE_LYTH_DECIMALS, \"0\"));\n return whole * LYTHOSHI_PER_LYTH + fraction;\n}\n\nexport function checkMrvFeeDisplayConformance(\n input: MrvFeeDisplayConformanceInput,\n): MrvFeeDisplayConformanceReport {\n const expectedTotalLythoshi = normalizeDecimalLike(\"expectedTotalLythoshi\", input.expectedTotalLythoshi);\n const expectedDefaultFeeText = formatLyth(expectedTotalLythoshi);\n const failures: string[] = [];\n const amountCandidates = extractLythAmountCandidates(input.defaultFeeText);\n\n if (amountCandidates.length !== 1) {\n failures.push(\"defaultFeeText must contain exactly one LYTH-denominated fee amount\");\n } else {\n const renderedCandidate = `${amountCandidates[0]} LYTH`;\n if (renderedCandidate !== expectedDefaultFeeText) {\n failures.push(`defaultFeeText fee must be ${expectedDefaultFeeText}`);\n }\n try {\n const parsed = parseLythToLythoshi(renderedCandidate);\n if (parsed.toString() !== expectedTotalLythoshi) {\n failures.push(`defaultFeeText fee must total ${expectedTotalLythoshi} lythoshi`);\n }\n } catch {\n failures.push(\"defaultFeeText fee must be a canonical 8-decimal LYTH amount\");\n }\n }\n\n const defaultForbidden = firstForbiddenDefaultFeeTerm(input.defaultFeeText);\n if (defaultForbidden !== undefined) {\n failures.push(`defaultFeeText exposes detail-only fee term '${defaultForbidden}'`);\n }\n\n for (const [index, detailText] of (input.detailTexts ?? []).entries()) {\n const detailForbidden = firstForbiddenDetailFeeTerm(detailText);\n if (detailForbidden !== undefined) {\n failures.push(`detailTexts[${index}] exposes inherited fee term '${detailForbidden}'`);\n }\n }\n\n if (input.structuredFee !== undefined) {\n checkStructuredFeeObject(input.structuredFee, expectedTotalLythoshi, failures);\n }\n\n if (input.customFeeInputVisible === true) {\n failures.push(\"default surface must not expose custom fee inputs\");\n }\n if (input.speedUpCancelVisible === true) {\n failures.push(\"default surface must not expose speed-up or cancel controls\");\n }\n\n return {\n passed: failures.length === 0,\n failures,\n expectedDefaultFeeText,\n };\n}\n\nexport function checkMrvStructuredFeeConformance(\n value: unknown,\n options: MrvStructuredFeeConformanceOptions = {},\n): MrvStructuredFeeConformanceReport {\n const failures: string[] = [];\n const expectedTotalLythoshi =\n options.expectedTotalLythoshi === undefined\n ? undefined\n : normalizeDecimalLike(\"expectedTotalLythoshi\", options.expectedTotalLythoshi);\n checkStructuredFeeObject(\n value,\n expectedTotalLythoshi,\n failures,\n options.label ?? \"structuredFee\",\n );\n return {\n passed: failures.length === 0,\n failures,\n };\n}\n\nexport function assertMrvStructuredFeeConformance(\n value: unknown,\n options: MrvStructuredFeeConformanceOptions = {},\n): asserts value is NativeReceiptFee {\n const report = checkMrvStructuredFeeConformance(value, options);\n if (!report.passed) {\n throw new MrvValidationError(`structured fee conformance failed: ${report.failures.join(\"; \")}`);\n }\n}\n\nexport function assertMrvFeeDisplayConformance(input: MrvFeeDisplayConformanceInput): void {\n const report = checkMrvFeeDisplayConformance(input);\n if (!report.passed) {\n throw new MrvValidationError(`fee display conformance failed: ${report.failures.join(\"; \")}`);\n }\n}\n\nexport function formatNativeReceiptFeeDisplay(\n fee: Pick<\n NativeReceiptFee,\n | \"total_lythoshi\"\n | \"cycles_used\"\n | \"state_io_units\"\n | \"base_price_per_cycle_lythoshi\"\n | \"state_io_price_per_unit_lythoshi\"\n | \"priority_tip_lythoshi\"\n >,\n): NativeReceiptFeeDisplay {\n const totalLythoshi = normalizeDecimalLike(\"fee.total_lythoshi\", fee.total_lythoshi);\n const totalLyth = formatLyth(totalLythoshi, { includeUnit: false });\n return {\n defaultFeeText: `Network fee: ${totalLyth} LYTH`,\n detailTexts: [\n `cycles ${fee.cycles_used}, state I/O ${fee.state_io_units}, total ${totalLythoshi} lythoshi`,\n `cycle price ${fee.base_price_per_cycle_lythoshi} lythoshi, state I/O price ${fee.state_io_price_per_unit_lythoshi} lythoshi, priority tip ${fee.priority_tip_lythoshi} lythoshi`,\n ],\n totalLythoshi,\n totalLyth,\n };\n}\n\nexport function mrvCodeHashHex(code: MrvBytesLike): string {\n const codeBytes = bytesFrom(code, \"code\");\n const len = new Uint8Array(8);\n new DataView(len.buffer).setBigUint64(0, BigInt(codeBytes.length), false);\n return bytesToHex(blake3(concatBytes(MRV_CODE_HASH_DOMAIN, len, codeBytes)));\n}\n\nexport function mrvV1TransactionExtension(): MrvTransactionExtension {\n return { kind: MRV_TX_EXTENSION_KIND, bodyHex: \"0x01\" };\n}\n\nexport function encodeMrvDeployPayload(\n artifactBytes: MrvBytesLike,\n constructorInput?: MrvBytesLike | null,\n): string {\n const artifact = bytesFrom(artifactBytes, \"artifactBytes\");\n const w = new BincodeWriter();\n w.u16(MRV_DEPLOY_PAYLOAD_VERSION);\n w.bytes(artifact);\n if (constructorInput === undefined || constructorInput === null) {\n w.u8(0);\n } else {\n const constructor = bytesFrom(constructorInput, \"constructorInput\");\n w.u8(1);\n w.bytes(constructor);\n }\n return bytesToHex(w.toBytes());\n}\n\nexport function mrvAddressToBech32(kind: MrvAddressKind, bytes: MrvBytesLike): string {\n return addressToTypedBech32(kind as AddressKind, bytesFrom(bytes, \"address\"));\n}\n\nexport function mrvBech32ToAddress(address: string, expectedKind?: MrvAddressKind) {\n return typedBech32ToAddress(address, expectedKind as AddressKind | undefined);\n}\n\nexport function deriveMrvContractAddress(\n deployerAddress: string,\n deployerNonce: number | bigint,\n artifactHashHex: string,\n): string {\n const deployer = typedBech32ToAddress(deployerAddress);\n const artifactHash = hexToBytes(artifactHashHex, \"artifactHash\");\n if (artifactHash.length !== 32) throw new MrvValidationError(\"artifactHash must be 32 bytes\");\n const nonceValue = normalizeU64(deployerNonce, \"deployerNonce\");\n const nonce = new Uint8Array(8);\n new DataView(nonce.buffer).setBigUint64(0, nonceValue, false);\n const digest = blake3(\n concatBytes(\n MRV_CONTRACT_ADDRESS_DOMAIN,\n new TextEncoder().encode(ADDRESS_KIND_HRPS[deployer.kind]),\n Uint8Array.of(0),\n hexToBytes(deployer.hex, \"deployerAddress\"),\n nonce,\n artifactHash,\n ),\n );\n return addressToTypedBech32(\"contract\", digest.slice(0, 20));\n}\n\nexport function validateMrvArtifactMetadata(\n metadata: MrvArtifactMetadata,\n code: MrvBytesLike,\n): MrvValidatedArtifactMetadata {\n const codeBytes = bytesFrom(code, \"code\");\n if (metadata.formatVersion !== MRV_FORMAT_VERSION) {\n throw new MrvValidationError(\n `unsupported MRV format version ${metadata.formatVersion}, expected ${MRV_FORMAT_VERSION}`,\n );\n }\n if (metadata.profile !== MRV_PROFILE_MONO_RV32IM_V1) {\n throw new MrvValidationError(`unsupported MRV profile ${metadata.profile}`);\n }\n if (codeBytes.length === 0) {\n throw new MrvValidationError(\"MRV code is empty\");\n }\n if (codeBytes.length > MRV_MAX_CODE_BYTES) {\n throw new MrvValidationError(`MRV code has ${codeBytes.length} bytes, max ${MRV_MAX_CODE_BYTES}`);\n }\n if (metadata.codeBytes !== BigInt(codeBytes.length)) {\n throw new MrvValidationError(\n `metadata codeBytes ${metadata.codeBytes.toString()} does not match supplied code length ${codeBytes.length}`,\n );\n }\n if (metadata.debugBytes > BigInt(MRV_MAX_DEBUG_BYTES)) {\n throw new MrvValidationError(`MRV debug section has ${metadata.debugBytes.toString()} bytes`);\n }\n validateHexLength(\"codeHash\", metadata.codeHash, 32);\n validateHexLength(\"sourceDigest\", metadata.build.sourceDigest, 32);\n validateMemory(metadata.memory.initialPages, metadata.memory.maxPages, metadata.memory.stackBytes);\n validateStorageNamespace(metadata.storageNamespace.name, metadata.storageNamespace.version);\n validateAbi(metadata.abi);\n const syscalls = validateImports(metadata.imports);\n const computed = mrvCodeHashHex(codeBytes);\n if (metadata.codeHash.toLowerCase() !== computed) {\n throw new MrvValidationError(`MRV code hash mismatch: declared ${metadata.codeHash}, computed ${computed}`);\n }\n return {\n codeHash: computed,\n profile: metadata.profile,\n memory: metadata.memory,\n storageNamespace: metadata.storageNamespace,\n syscalls,\n abiSymbolCount: BigInt(metadata.abi.symbols.length),\n codeBytes: BigInt(codeBytes.length),\n };\n}\n\nexport function validateMrvDeployRequest(request: MrvDeployRequest): void {\n if (request.from !== undefined) typedBech32ToAddress(request.from, \"user\");\n hexToBytes(request.artifactBytes, \"artifactBytes\");\n validateDecimal(\"valueLythoshi\", request.valueLythoshi);\n validateOptionalDecimal(\"maxExecutionFeeLythoshi\", request.maxExecutionFeeLythoshi);\n validateOptionalDecimal(\"priorityTipLythoshi\", request.priorityTipLythoshi);\n validateExecutionUnitLimit(\"executionUnitLimit\", request.executionUnitLimit);\n}\n\nexport function validateMrvCallRequest(request: MrvCallRequest): void {\n if (request.from !== undefined) typedBech32ToAddress(request.from, \"user\");\n typedBech32ToAddress(request.contractAddress, \"contract\");\n hexToBytes(request.input, \"input\");\n validateDecimal(\"valueLythoshi\", request.valueLythoshi);\n validateOptionalDecimal(\"maxExecutionFeeLythoshi\", request.maxExecutionFeeLythoshi);\n validateOptionalDecimal(\"priorityTipLythoshi\", request.priorityTipLythoshi);\n validateExecutionUnitLimit(\"executionUnitLimit\", request.executionUnitLimit);\n}\n\nexport function buildMrvDeployRequest(\n artifactBytes: MrvBytesLike,\n options: MrvRequestBuildOptions = {},\n): MrvDeployRequest {\n const request: MrvDeployRequest = {\n artifactBytes: normalizeBytesHex(artifactBytes, \"artifactBytes\"),\n valueLythoshi: normalizeDecimalLike(\"valueLythoshi\", options.valueLythoshi, \"0\"),\n };\n applyRequestOptions(request, options);\n validateMrvDeployRequest(request);\n return request;\n}\n\nexport function buildMrvDeployPayloadRequest(\n artifactBytes: MrvBytesLike,\n options: MrvDeployPayloadRequestOptions = {},\n): MrvDeployRequest {\n const request = buildMrvDeployRequest(\n encodeMrvDeployPayload(artifactBytes, options.constructorInput),\n options,\n );\n return request;\n}\n\nexport function buildMrvCallRequest(\n contractAddress: string,\n input: MrvBytesLike = \"0x\",\n options: MrvRequestBuildOptions = {},\n): MrvCallRequest {\n const request: MrvCallRequest = {\n contractAddress,\n input: normalizeBytesHex(input, \"input\"),\n valueLythoshi: normalizeDecimalLike(\"valueLythoshi\", options.valueLythoshi, \"0\"),\n };\n applyRequestOptions(request, options);\n validateMrvCallRequest(request);\n return request;\n}\n\nexport function buildMrvDeployPlan(\n artifactBytes: MrvBytesLike,\n options: MrvDeployPlanOptions = {},\n): MrvDeployPlan {\n const request = buildMrvDeployRequest(artifactBytes, options);\n const plan: MrvDeployPlan = {\n request,\n extension: mrvV1TransactionExtension(),\n };\n if (options.artifactHash !== undefined && request.from !== undefined && request.nonce !== undefined) {\n plan.expectedContractAddress = deriveMrvContractAddress(request.from, request.nonce, options.artifactHash);\n } else if (options.artifactHash !== undefined) {\n validateHexLength(\"artifactHash\", options.artifactHash, 32);\n }\n return plan;\n}\n\nexport function buildMrvDeployPayloadPlan(\n artifactBytes: MrvBytesLike,\n options: MrvDeployPayloadPlanOptions = {},\n): MrvDeployPlan {\n const request = buildMrvDeployPayloadRequest(artifactBytes, options);\n const plan: MrvDeployPlan = {\n request,\n extension: mrvV1TransactionExtension(),\n };\n if (options.artifactHash !== undefined && request.from !== undefined && request.nonce !== undefined) {\n plan.expectedContractAddress = deriveMrvContractAddress(request.from, request.nonce, options.artifactHash);\n } else if (options.artifactHash !== undefined) {\n validateHexLength(\"artifactHash\", options.artifactHash, 32);\n }\n return plan;\n}\n\nexport function buildMrvCallPlan(\n contractAddress: string,\n input: MrvBytesLike = \"0x\",\n options: MrvRequestBuildOptions = {},\n): MrvCallPlan {\n return {\n request: buildMrvCallRequest(contractAddress, input, options),\n extension: mrvV1TransactionExtension(),\n };\n}\n\nexport function buildMrvDeployNativeTxPlan(\n artifactBytes: MrvBytesLike,\n options: MrvDeployNativeTxOptions,\n): MrvDeployNativeTxPlan {\n const chainId = normalizeU64(options.chainId, \"chainId\");\n const nonce = normalizeU64(options.nonce, \"nonce\");\n const executionUnitLimit = normalizeU64(options.executionUnitLimit, \"executionUnitLimit\");\n const maxExecutionFee = normalizeDecimalLike(\"maxExecutionFeeLythoshi\", options.maxExecutionFeeLythoshi);\n const priorityTip =\n options.priorityTipLythoshi === undefined\n ? undefined\n : normalizeDecimalLike(\"priorityTipLythoshi\", options.priorityTipLythoshi);\n const plan = buildMrvDeployPlan(artifactBytes, {\n ...options,\n nonce,\n executionUnitLimit,\n maxExecutionFeeLythoshi: maxExecutionFee,\n priorityTipLythoshi: priorityTip,\n });\n return {\n ...plan,\n nativeTx: {\n chainId,\n nonce,\n valueLythoshi: plan.request.valueLythoshi,\n executionUnitLimit,\n maxExecutionFeeLythoshi: maxExecutionFee,\n priorityTipLythoshi: priorityTip ?? \"0\",\n },\n feePreview: buildMrvNativeFeePreview(executionUnitLimit, maxExecutionFee, priorityTip ?? \"0\"),\n tx: {\n chainId,\n nonce,\n maxPriorityFeePerGas: priorityTip ?? \"0\",\n maxFeePerGas: maxExecutionFee,\n gasLimit: executionUnitLimit,\n to: null,\n value: plan.request.valueLythoshi,\n input: plan.request.artifactBytes,\n extensions: [plan.extension],\n },\n };\n}\n\nexport function buildMrvDeployPayloadNativeTxPlan(\n artifactBytes: MrvBytesLike,\n options: MrvDeployPayloadNativeTxOptions,\n): MrvDeployNativeTxPlan {\n const chainId = normalizeU64(options.chainId, \"chainId\");\n const nonce = normalizeU64(options.nonce, \"nonce\");\n const executionUnitLimit = normalizeU64(options.executionUnitLimit, \"executionUnitLimit\");\n const maxExecutionFee = normalizeDecimalLike(\"maxExecutionFeeLythoshi\", options.maxExecutionFeeLythoshi);\n const priorityTip =\n options.priorityTipLythoshi === undefined\n ? undefined\n : normalizeDecimalLike(\"priorityTipLythoshi\", options.priorityTipLythoshi);\n const plan = buildMrvDeployPayloadPlan(artifactBytes, {\n ...options,\n nonce,\n executionUnitLimit,\n maxExecutionFeeLythoshi: maxExecutionFee,\n priorityTipLythoshi: priorityTip,\n });\n return {\n ...plan,\n nativeTx: {\n chainId,\n nonce,\n valueLythoshi: plan.request.valueLythoshi,\n executionUnitLimit,\n maxExecutionFeeLythoshi: maxExecutionFee,\n priorityTipLythoshi: priorityTip ?? \"0\",\n },\n feePreview: buildMrvNativeFeePreview(executionUnitLimit, maxExecutionFee, priorityTip ?? \"0\"),\n tx: {\n chainId,\n nonce,\n maxPriorityFeePerGas: priorityTip ?? \"0\",\n maxFeePerGas: maxExecutionFee,\n gasLimit: executionUnitLimit,\n to: null,\n value: plan.request.valueLythoshi,\n input: plan.request.artifactBytes,\n extensions: [plan.extension],\n },\n };\n}\n\nexport function buildMrvCallNativeTxPlan(\n contractAddress: string,\n input: MrvBytesLike,\n options: MrvCallNativeTxOptions,\n): MrvCallNativeTxPlan {\n const chainId = normalizeU64(options.chainId, \"chainId\");\n const nonce = normalizeU64(options.nonce, \"nonce\");\n const executionUnitLimit = normalizeU64(options.executionUnitLimit, \"executionUnitLimit\");\n const maxExecutionFee = normalizeDecimalLike(\"maxExecutionFeeLythoshi\", options.maxExecutionFeeLythoshi);\n const priorityTip =\n options.priorityTipLythoshi === undefined\n ? undefined\n : normalizeDecimalLike(\"priorityTipLythoshi\", options.priorityTipLythoshi);\n const plan = buildMrvCallPlan(contractAddress, input, {\n ...options,\n nonce,\n executionUnitLimit,\n maxExecutionFeeLythoshi: maxExecutionFee,\n priorityTipLythoshi: priorityTip,\n });\n return {\n ...plan,\n nativeTx: {\n chainId,\n nonce,\n valueLythoshi: plan.request.valueLythoshi,\n executionUnitLimit,\n maxExecutionFeeLythoshi: maxExecutionFee,\n priorityTipLythoshi: priorityTip ?? \"0\",\n },\n feePreview: buildMrvNativeFeePreview(executionUnitLimit, maxExecutionFee, priorityTip ?? \"0\"),\n tx: {\n chainId,\n nonce,\n maxPriorityFeePerGas: priorityTip ?? \"0\",\n maxFeePerGas: maxExecutionFee,\n gasLimit: executionUnitLimit,\n to: typedBech32ToAddress(plan.request.contractAddress, \"contract\").hex,\n value: plan.request.valueLythoshi,\n input: plan.request.input,\n extensions: [plan.extension],\n },\n };\n}\n\nexport function assertMrvDeployNativeSubmissionPlan(plan: MrvDeployNativeTxPlan): void {\n assertMrvNativeSubmissionEnvelope(plan);\n if (plan.tx.to !== null) {\n throw new MrvValidationError(\"MRV deploy submission tx.to must be null\");\n }\n const txInput = normalizeBytesHex(plan.tx.input ?? \"0x\", \"tx.input\");\n if (txInput !== plan.request.artifactBytes) {\n throw new MrvValidationError(\"MRV deploy submission tx.input must match artifactBytes\");\n }\n}\n\nexport function assertMrvCallNativeSubmissionPlan(plan: MrvCallNativeTxPlan): void {\n assertMrvNativeSubmissionEnvelope(plan);\n const actualTo = normalizeNativeTxToHex(plan.tx.to, \"tx.to\");\n if (actualTo === null) {\n throw new MrvValidationError(\"MRV call submission tx.to must be a 20-byte contract address\");\n }\n const expectedTo = typedBech32ToAddress(plan.request.contractAddress, \"contract\").hex.toLowerCase();\n if (actualTo !== expectedTo) {\n throw new MrvValidationError(\"MRV call submission tx.to must match contractAddress\");\n }\n const txInput = normalizeBytesHex(plan.tx.input ?? \"0x\", \"tx.input\");\n if (txInput !== plan.request.input) {\n throw new MrvValidationError(\"MRV call submission tx.input must match request input\");\n }\n}\n\nfunction buildMrvNativeFeePreview(\n executionUnitLimit: bigint,\n maxExecutionFeeLythoshi: string,\n priorityTipLythoshi: string,\n): MrvNativeFeePreview {\n const totalLythoshi = normalizeDecimalLike(\"maxExecutionFeeLythoshi\", maxExecutionFeeLythoshi);\n return {\n totalLythoshi,\n totalLyth: formatLyth(totalLythoshi, { includeUnit: false }),\n cyclesUsed: executionUnitLimit,\n executionUnitLimit,\n maxExecutionFeeLythoshi: totalLythoshi,\n priorityTipLythoshi: normalizeDecimalLike(\"priorityTipLythoshi\", priorityTipLythoshi),\n };\n}\n\nexport async function submitMrvDeployNativeTx(\n client: RpcClient,\n backend: MlDsa65Backend,\n artifactBytes: MrvBytesLike,\n options: MrvDeploySubmitOptions,\n): Promise<MrvDeploySubmission> {\n const plan = buildMrvDeployNativeTxPlan(artifactBytes, options);\n assertMrvDeployNativeSubmissionPlan(plan);\n const submission = await buildEncryptedSubmission({\n backend,\n tx: plan.tx,\n encryptionKey: options.encryptionKey ?? (await fetchEncryptionKey(client)),\n class: options.class,\n });\n return {\n ...plan,\n ...submission,\n txHash: await submitEncryptedEnvelope(client, submission.envelopeWireHex),\n };\n}\n\nexport async function submitMrvDeployPayloadNativeTx(\n client: RpcClient,\n backend: MlDsa65Backend,\n artifactBytes: MrvBytesLike,\n options: MrvDeployPayloadSubmitOptions,\n): Promise<MrvDeployPayloadSubmission> {\n const plan = buildMrvDeployPayloadNativeTxPlan(artifactBytes, options);\n assertMrvDeployNativeSubmissionPlan(plan);\n const submission = await buildEncryptedSubmission({\n backend,\n tx: plan.tx,\n encryptionKey: options.encryptionKey ?? (await fetchEncryptionKey(client)),\n class: options.class,\n });\n return {\n ...plan,\n ...submission,\n txHash: await submitEncryptedEnvelope(client, submission.envelopeWireHex),\n };\n}\n\nexport async function submitMrvCallNativeTx(\n client: RpcClient,\n backend: MlDsa65Backend,\n contractAddress: string,\n input: MrvBytesLike,\n options: MrvCallSubmitOptions,\n): Promise<MrvCallSubmission> {\n const plan = buildMrvCallNativeTxPlan(contractAddress, input, options);\n assertMrvCallNativeSubmissionPlan(plan);\n const submission = await buildEncryptedSubmission({\n backend,\n tx: plan.tx,\n encryptionKey: options.encryptionKey ?? (await fetchEncryptionKey(client)),\n class: options.class,\n });\n return {\n ...plan,\n ...submission,\n txHash: await submitEncryptedEnvelope(client, submission.envelopeWireHex),\n };\n}\n\nfunction assertMrvNativeSubmissionEnvelope(plan: MrvDeployNativeTxPlan | MrvCallNativeTxPlan): void {\n const extensions = plan.tx.extensions ?? [];\n if (extensions.length !== 1) {\n throw new MrvValidationError(\"MRV native submission must carry exactly one transaction extension\");\n }\n assertMrvV1Extension(plan.extension, \"extension\");\n assertMrvV1Extension(extensions[0], \"tx.extensions[0]\");\n assertSameBigint(\"tx.chainId\", plan.tx.chainId, plan.nativeTx.chainId);\n assertSameBigint(\"tx.nonce\", plan.tx.nonce, plan.nativeTx.nonce);\n assertSameBigint(\"tx.gasLimit\", plan.tx.gasLimit, plan.nativeTx.executionUnitLimit);\n assertSameDecimal(\"tx.value\", plan.tx.value, plan.nativeTx.valueLythoshi);\n assertSameDecimal(\"tx.maxFeePerGas\", plan.tx.maxFeePerGas, plan.nativeTx.maxExecutionFeeLythoshi);\n assertSameDecimal(\"tx.maxPriorityFeePerGas\", plan.tx.maxPriorityFeePerGas, plan.nativeTx.priorityTipLythoshi);\n assertU128Lythoshi(\"maxExecutionFeeLythoshi\", plan.nativeTx.maxExecutionFeeLythoshi);\n assertU128Lythoshi(\"priorityTipLythoshi\", plan.nativeTx.priorityTipLythoshi);\n}\n\nfunction assertMrvV1Extension(extension: NativeTxExtensionLike, field: string): void {\n if (extension.kind !== MRV_TX_EXTENSION_KIND) {\n throw new MrvValidationError(`${field}.kind must be MRV v1 extension kind`);\n }\n const bodyHex = normalizeBytesHex(\"bodyHex\" in extension ? extension.bodyHex : extension.body, `${field}.body`);\n if (bodyHex !== \"0x01\") {\n throw new MrvValidationError(`${field}.body must be MRV v1 extension body`);\n }\n}\n\nfunction assertSameBigint(field: string, actual: bigint | number | string, expected: bigint): void {\n if (normalizeU64Like(actual, field) !== expected) {\n throw new MrvValidationError(`${field} must match nativeTx`);\n }\n}\n\nfunction assertSameDecimal(field: string, actual: MrvDecimalLike, expected: string): void {\n if (normalizeDecimalLike(field, actual) !== expected) {\n throw new MrvValidationError(`${field} must match nativeTx`);\n }\n}\n\nfunction assertU128Lythoshi(field: string, value: MrvDecimalLike): void {\n const normalized = BigInt(normalizeDecimalLike(field, value));\n if (normalized > (1n << 128n) - 1n) {\n throw new MrvValidationError(`${field} must fit in u128 for encrypted submission`);\n }\n}\n\nfunction normalizeNativeTxToHex(value: NativeEvmTxFields[\"to\"], field: string): string | null {\n if (value === null) return null;\n const bytes = bytesFrom(value, field);\n if (bytes.length !== 20) {\n throw new MrvValidationError(`${field} must be a 20-byte address`);\n }\n return bytesToHex(bytes).toLowerCase();\n}\n\nfunction normalizeU64Like(value: bigint | number | string, field: string): bigint {\n if (typeof value === \"string\") {\n return normalizeU64(BigInt(normalizeDecimalLike(field, value)), field);\n }\n return normalizeU64(value, field);\n}\n\nfunction validateMemory(initialPages: number, maxPages: number, stackBytes: number): void {\n if (initialPages === 0) throw new MrvValidationError(\"initialPages is zero\");\n if (maxPages === 0) throw new MrvValidationError(\"maxPages is zero\");\n if (initialPages > maxPages) throw new MrvValidationError(\"initialPages exceeds maxPages\");\n if (maxPages > MRV_MAX_MEMORY_PAGES) throw new MrvValidationError(\"maxPages exceeds bound\");\n if (stackBytes === 0) throw new MrvValidationError(\"stackBytes is zero\");\n const maxBytes = maxPages * MRV_MEMORY_PAGE_BYTES;\n if (stackBytes > maxBytes) throw new MrvValidationError(\"stackBytes exceeds max memory\");\n if (stackBytes % 16 !== 0) throw new MrvValidationError(\"stackBytes must be 16-byte aligned\");\n}\n\nfunction validateStorageNamespace(name: string, version: number): void {\n if (version === 0) throw new MrvValidationError(\"storage namespace version must be non-zero\");\n if (name.length > MRV_MAX_STORAGE_NAMESPACE_BYTES) throw new MrvValidationError(\"storage namespace is too long\");\n if (!isIdentifier(name)) throw new MrvValidationError(\"storage namespace is not canonical\");\n}\n\nfunction validateAbi(abi: MrvAbiManifest): void {\n if (abi.symbols.length === 0) throw new MrvValidationError(\"MRV ABI must declare at least one symbol\");\n if (abi.symbols.length > MRV_MAX_ABI_SYMBOLS) {\n throw new MrvValidationError(`MRV ABI has ${abi.symbols.length} symbols, max ${MRV_MAX_ABI_SYMBOLS}`);\n }\n const seen = new Set<string>();\n for (const symbol of abi.symbols) {\n if (!isIdentifier(symbol.name)) throw new MrvValidationError(`invalid MRV ABI symbol '${symbol.name}'`);\n if (seen.has(symbol.name)) throw new MrvValidationError(`duplicate MRV ABI symbol '${symbol.name}'`);\n seen.add(symbol.name);\n for (const param of [...symbol.inputs, ...symbol.outputs]) {\n if (!isIdentifier(param.name)) throw new MrvValidationError(`invalid MRV ABI parameter '${param.name}'`);\n validateAbiType(param.ty);\n }\n }\n}\n\nfunction validateAbiType(ty: MrvAbiType): void {\n if (ty.kind === \"fixedBytes\" && ty.len === 0) {\n throw new MrvValidationError(\"fixed bytes length is zero\");\n }\n}\n\nfunction validateImports(imports: MrvArtifactMetadata[\"imports\"]): MrvResolvedSyscall[] {\n const seen = new Set<number>();\n const resolved: MrvResolvedSyscall[] = [];\n for (const imp of imports) {\n if (imp.module !== MONO_SYSCALL_MODULE) {\n throw new MrvValidationError(`forbidden host import ${imp.module}.${imp.name}`);\n }\n const expectedName = SYSCALL_NAME_BY_ID.get(imp.id);\n if (expectedName === undefined) throw new MrvValidationError(`unknown MRV syscall id ${imp.id}`);\n const expectedId = SYSCALL_ID_BY_NAME.get(imp.name);\n if (expectedId === undefined) throw new MrvValidationError(`unknown MRV syscall name '${imp.name}'`);\n if (expectedId !== imp.id) {\n throw new MrvValidationError(`MRV syscall name/id mismatch for ${imp.name}: declared ${imp.id}`);\n }\n if (seen.has(imp.id)) throw new MrvValidationError(`duplicate MRV syscall '${expectedName}'`);\n seen.add(imp.id);\n resolved.push({ id: imp.id, name: expectedName });\n }\n return resolved;\n}\n\nfunction validateOptionalDecimal(field: string, value: string | undefined): void {\n if (value !== undefined) validateDecimal(field, value);\n}\n\nfunction applyRequestOptions(request: MrvDeployRequest | MrvCallRequest, options: MrvRequestBuildOptions): void {\n if (options.from !== undefined) request.from = options.from;\n const executionUnitLimit = normalizeOptionalU64(\"executionUnitLimit\", options.executionUnitLimit);\n if (executionUnitLimit !== undefined) request.executionUnitLimit = executionUnitLimit;\n const maxExecutionFee = normalizeOptionalDecimalLike(\n \"maxExecutionFeeLythoshi\",\n options.maxExecutionFeeLythoshi,\n );\n if (maxExecutionFee !== undefined) request.maxExecutionFeeLythoshi = maxExecutionFee;\n const priorityTip = normalizeOptionalDecimalLike(\"priorityTipLythoshi\", options.priorityTipLythoshi);\n if (priorityTip !== undefined) request.priorityTipLythoshi = priorityTip;\n const nonce = normalizeOptionalU64(\"nonce\", options.nonce);\n if (nonce !== undefined) request.nonce = nonce;\n}\n\nfunction normalizeBytesHex(value: MrvBytesLike, field: string): string {\n return bytesToHex(bytesFrom(value, field));\n}\n\nfunction normalizeOptionalDecimalLike(field: string, value: MrvDecimalLike | undefined): string | undefined {\n return value === undefined ? undefined : normalizeDecimalLike(field, value);\n}\n\nfunction formatWholeWithCommas(value: bigint): string {\n const digits = value.toString();\n const firstGroupLen = digits.length % 3;\n const groups: string[] = [];\n let index = 0;\n if (firstGroupLen !== 0) {\n groups.push(digits.slice(0, firstGroupLen));\n index = firstGroupLen;\n }\n while (index < digits.length) {\n groups.push(digits.slice(index, index + 3));\n index += 3;\n }\n return groups.join(\",\");\n}\n\nfunction stripLythUnit(input: string): string {\n const trimmed = input.trim();\n const withoutUnit = trimmed.replace(/\\s+LYTH$/i, \"\").trim();\n if (withoutUnit.length === 0) {\n throw new MrvValidationError(\"lyth amount must be a canonical LYTH decimal\");\n }\n return withoutUnit;\n}\n\nfunction isCanonicalWholeLyth(value: string): boolean {\n if (/^(0|[1-9][0-9]*)$/.test(value)) {\n return true;\n }\n return /^[1-9][0-9]{0,2}(,[0-9]{3})+$/.test(value);\n}\n\nfunction extractLythAmountCandidates(text: string): string[] {\n return [...text.matchAll(/(?:^|[^A-Za-z0-9_])([0-9][0-9,]*(?:\\.[0-9]+)?)\\s+LYTH\\b/g)].map(\n (match) => match[1],\n );\n}\n\nfunction firstForbiddenDefaultFeeTerm(text: string): string | undefined {\n const tokens = feeTermTokens(text);\n for (const forbidden of [\"gas\", \"gwei\", \"wei\", \"cycle\", \"cycles\", \"lythoshi\"]) {\n if (tokens.includes(forbidden)) return forbidden;\n }\n if (hasAdjacentTerms(tokens, \"state\", \"io\") || hasStateIOTerms(tokens)) return \"state I/O\";\n return undefined;\n}\n\nfunction firstForbiddenDetailFeeTerm(text: string): string | undefined {\n const tokens = feeTermTokens(text);\n for (const forbidden of [\"gas\", \"gwei\", \"wei\"]) {\n if (tokens.includes(forbidden)) return forbidden;\n }\n return undefined;\n}\n\nfunction feeTermTokens(text: string): string[] {\n return text.toLowerCase().match(/[a-z]+/g) ?? [];\n}\n\nfunction hasAdjacentTerms(tokens: readonly string[], first: string, second: string): boolean {\n return tokens.some((token, index) => token === first && tokens[index + 1] === second);\n}\n\nfunction hasStateIOTerms(tokens: readonly string[]): boolean {\n return tokens.some((token, index) => token === \"state\" && tokens[index + 1] === \"i\" && tokens[index + 2] === \"o\");\n}\n\nfunction checkStructuredFeeObject(\n value: unknown,\n expectedTotalLythoshi: string | undefined,\n failures: string[],\n label = \"structuredFee\",\n): void {\n if (!isRecord(value)) {\n failures.push(`${label} must be an object`);\n return;\n }\n const expectedFields = new Set<string>([...MRV_STRUCTURED_FEE_FIELDS, \"total_lyth\"]);\n const actualFields = Object.keys(value);\n for (const field of MRV_STRUCTURED_FEE_FIELDS) {\n if (!(field in value)) failures.push(`${label} is missing '${field}'`);\n }\n for (const field of actualFields) {\n if (!expectedFields.has(field)) failures.push(`${label} has unexpected field '${field}'`);\n }\n\n const totalLythoshi = stringField(value, \"total_lythoshi\", failures, label);\n const expectedTotal = expectedTotalLythoshi ?? totalLythoshi;\n if (\n totalLythoshi !== undefined &&\n expectedTotalLythoshi !== undefined &&\n totalLythoshi !== expectedTotalLythoshi\n ) {\n failures.push(`${label}.total_lythoshi must be ${expectedTotalLythoshi}`);\n }\n const totalLyth =\n \"total_lyth\" in value ? lythDecimalField(value, \"total_lyth\", failures, label) : undefined;\n if (totalLyth !== undefined && expectedTotal !== undefined) {\n const expectedTotalLyth = formatLyth(expectedTotal, { includeUnit: false });\n if (totalLyth !== expectedTotalLyth) {\n failures.push(`${label}.total_lyth must be ${expectedTotalLyth}`);\n }\n }\n for (const field of [\n \"base_price_per_cycle_lythoshi\",\n \"state_io_price_per_unit_lythoshi\",\n \"priority_tip_lythoshi\",\n ]) {\n stringField(value, field, failures, label);\n }\n for (const field of [\"cycles_used\", \"state_io_units\"]) {\n integerField(value, field, failures, label);\n }\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nfunction stringField(\n value: Record<string, unknown>,\n field: string,\n failures: string[],\n label: string,\n): string | undefined {\n const fieldValue = value[field];\n if (typeof fieldValue !== \"string\" || !isCanonicalUnsignedDecimalString(fieldValue)) {\n failures.push(`${label}.${field} must be a canonical unsigned decimal string`);\n return undefined;\n }\n return fieldValue;\n}\n\nfunction lythDecimalField(\n value: Record<string, unknown>,\n field: string,\n failures: string[],\n label: string,\n): string | undefined {\n const fieldValue = value[field];\n if (typeof fieldValue !== \"string\") {\n failures.push(`${label}.${field} must be a canonical LYTH decimal string`);\n return undefined;\n }\n try {\n parseLythToLythoshi(`${fieldValue} LYTH`);\n } catch {\n failures.push(`${label}.${field} must be a canonical LYTH decimal string`);\n return undefined;\n }\n return fieldValue;\n}\n\nfunction integerField(\n value: Record<string, unknown>,\n field: string,\n failures: string[],\n label: string,\n): void {\n const fieldValue = value[field];\n if (\n typeof fieldValue !== \"number\" ||\n !Number.isSafeInteger(fieldValue) ||\n fieldValue < 0\n ) {\n failures.push(`${label}.${field} must be a non-negative safe integer`);\n }\n}\n\nfunction isCanonicalUnsignedDecimalString(value: string): boolean {\n if (!/^(0|[1-9][0-9]*)$/.test(value)) return false;\n try {\n BigInt(value);\n return true;\n } catch {\n return false;\n }\n}\n\nfunction normalizeDecimalLike(field: string, value: MrvDecimalLike | undefined, defaultValue?: string): string {\n if (value === undefined) {\n if (defaultValue === undefined) throw new MrvValidationError(`${field} is required`);\n return defaultValue;\n }\n if (typeof value === \"string\") {\n validateDecimal(field, value);\n return value;\n }\n if (typeof value === \"number\" && !Number.isSafeInteger(value)) {\n throw new MrvValidationError(`${field} must be a safe unsigned integer`);\n }\n const out = BigInt(value);\n if (out < 0n) throw new MrvValidationError(`${field} must be a canonical unsigned decimal string`);\n return out.toString();\n}\n\nfunction normalizeOptionalU64(field: string, value: number | bigint | undefined): bigint | undefined {\n return value === undefined ? undefined : normalizeU64(value, field);\n}\n\nfunction validateDecimal(field: string, value: string): void {\n if (!/^(0|[1-9][0-9]*)$/.test(value)) {\n throw new MrvValidationError(`${field} must be a canonical unsigned decimal string`);\n }\n try {\n BigInt(value);\n } catch {\n throw new MrvValidationError(`${field} must be a canonical unsigned decimal string`);\n }\n}\n\nfunction validateExecutionUnitLimit(field: string, value: number | bigint | undefined): void {\n if (value !== undefined && BigInt(value) === 0n) {\n throw new MrvValidationError(`${field} must be greater than zero`);\n }\n}\n\nfunction normalizeU64(value: number | bigint, field: string): bigint {\n if (typeof value === \"number\" && !Number.isSafeInteger(value)) {\n throw new MrvValidationError(`${field} must be a safe unsigned integer`);\n }\n const out = BigInt(value);\n if (out < 0n || out > 0xffff_ffff_ffff_ffffn) {\n throw new MrvValidationError(`${field} must fit in u64`);\n }\n return out;\n}\n\nfunction validateHexLength(field: string, value: string, expected: number): void {\n const bytes = hexToBytes(value, field);\n if (bytes.length !== expected) throw new MrvValidationError(`${field} must be ${expected} bytes`);\n}\n\nfunction bytesFrom(value: MrvBytesLike, field: string): Uint8Array {\n if (typeof value === \"string\") return hexToBytes(value, field);\n return value instanceof Uint8Array ? value : Uint8Array.from(value);\n}\n\nfunction hexToBytes(value: string, field: string): Uint8Array {\n if (!/^0x(?:[0-9a-fA-F]{2})*$/.test(value)) {\n throw new MrvValidationError(`${field} must be 0x-prefixed even-length hex`);\n }\n const out = new Uint8Array((value.length - 2) / 2);\n for (let i = 0; i < out.length; i++) {\n out[i] = Number.parseInt(value.slice(2 + i * 2, 4 + i * 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 len = parts.reduce((sum, item) => sum + item.length, 0);\n const out = new Uint8Array(len);\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 isIdentifier(value: string): boolean {\n return /^[a-z][a-z0-9_]*$/.test(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\nimport { ML_DSA_65_PUBLIC_KEY_LEN } from \"./crypto/ml-dsa.js\";\nimport { hexToBytes } from \"./crypto/bytes.js\";\nimport type { NoEvmReceiptTrustPolicy } from \"./receipt-proof.js\";\n\nexport type NetworkSlug = \"testnet-69420\";\n\nconst BLS_PUBLIC_KEY_BYTE_LENGTH = 48;\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 ReceiptProofTrustArchiveSigner {\n public_key: string;\n signer_id?: string;\n valid_from_height?: number;\n valid_to_height?: number;\n notes?: string;\n}\n\nexport interface ReceiptProofTrustArchivePolicy {\n signature_threshold: number;\n valid_from_height?: number;\n valid_to_height?: number;\n signers: ReceiptProofTrustArchiveSigner[];\n}\n\nexport interface ReceiptProofTrustFinalitySigner {\n authority_index: number;\n public_key: string;\n valid_from_round?: number;\n valid_to_round?: number;\n notes?: string;\n}\n\nexport interface ReceiptProofTrustFinalityPolicy {\n mode: \"cluster\" | \"multisig\";\n chain_id?: number;\n threshold: number;\n committee_size?: number;\n cluster_public_key?: string;\n valid_from_round?: number;\n valid_to_round?: number;\n signers?: ReceiptProofTrustFinalitySigner[];\n}\n\nexport interface ReceiptProofTrustPolicy {\n archive?: ReceiptProofTrustArchivePolicy;\n finality?: ReceiptProofTrustFinalityPolicy;\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 receipt_proof_trust?: ReceiptProofTrustPolicy;\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 \"Public Monolythium testnet. Testnet state may reset without notice; do not store value on this network.\",\n genesis_hash:\n \"0xad64b785debc17aef3fb4a8d944c2c7c9156394bb08d5ab576ec85782732f897\",\n binary_sha: \"058c883\",\n rpc: [\n {\n url: \"https://rpc.monolythium.com\",\n provider: \"monolythium\",\n tier: \"official\",\n },\n ],\n p2p: [],\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 function getNoEvmReceiptTrustPolicy(\n network: NetworkSlug | string,\n registry: ChainRegistry = CHAIN_REGISTRY,\n): NoEvmReceiptTrustPolicy | null {\n const info = registry[network];\n if (!info) {\n throw new Error(`unknown Monolythium network: ${network}`);\n }\n return noEvmReceiptTrustPolicyFromChainInfo(info);\n}\n\nexport function noEvmReceiptTrustPolicyFromChainInfo(\n info: ChainInfo,\n): NoEvmReceiptTrustPolicy | null {\n const trust = info.receipt_proof_trust;\n if (trust == null || (trust.archive == null && trust.finality == null)) return null;\n\n const policy: NoEvmReceiptTrustPolicy = { chainId: info.chain_id };\n if (trust.archive != null) {\n policy.archive = {\n threshold: assertSafeIntegerAtLeast(\n trust.archive.signature_threshold,\n 1,\n \"receipt_proof_trust.archive.signature_threshold\",\n ),\n validFromHeight: trust.archive.valid_from_height,\n validToHeight: trust.archive.valid_to_height,\n trustedSigners: trust.archive.signers.map((signer, index) => ({\n publicKey: decodeFixedHex(\n signer.public_key,\n ML_DSA_65_PUBLIC_KEY_LEN,\n `receipt_proof_trust.archive.signers[${index}].public_key`,\n ),\n signerId: signer.signer_id,\n validFromHeight: signer.valid_from_height,\n validToHeight: signer.valid_to_height,\n })),\n };\n }\n if (trust.finality != null) {\n const threshold = assertSafeIntegerAtLeast(\n trust.finality.threshold,\n 1,\n \"receipt_proof_trust.finality.threshold\",\n );\n const chainId = trust.finality.chain_id ?? info.chain_id;\n if (trust.finality.mode === \"cluster\") {\n if (trust.finality.cluster_public_key == null) {\n throw new Error(\n \"receipt_proof_trust.finality.cluster_public_key is required for cluster mode\",\n );\n }\n policy.finality = {\n mode: \"cluster\",\n chainId,\n threshold,\n validFromRound: trust.finality.valid_from_round,\n validToRound: trust.finality.valid_to_round,\n committeeSize: assertSafeIntegerAtLeast(\n trust.finality.committee_size,\n 1,\n \"receipt_proof_trust.finality.committee_size\",\n ),\n clusterPublicKey: decodeFixedHex(\n trust.finality.cluster_public_key,\n BLS_PUBLIC_KEY_BYTE_LENGTH,\n \"receipt_proof_trust.finality.cluster_public_key\",\n ),\n };\n } else if (trust.finality.mode === \"multisig\") {\n const signers = trust.finality.signers ?? [];\n policy.finality = {\n mode: \"multisig\",\n chainId,\n threshold,\n validFromRound: trust.finality.valid_from_round,\n validToRound: trust.finality.valid_to_round,\n trustedSigners: signers.map((signer, index) => ({\n authorityIndex: assertSafeIntegerAtLeast(\n signer.authority_index,\n 0,\n `receipt_proof_trust.finality.signers[${index}].authority_index`,\n ),\n publicKey: decodeFixedHex(\n signer.public_key,\n BLS_PUBLIC_KEY_BYTE_LENGTH,\n `receipt_proof_trust.finality.signers[${index}].public_key`,\n ),\n validFromRound: signer.valid_from_round,\n validToRound: signer.valid_to_round,\n })),\n };\n } else {\n throw new Error(\n `unsupported receipt_proof_trust.finality.mode: ${String(trust.finality.mode)}`,\n );\n }\n }\n\n return policy;\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> & {\n rpc: RpcEndpoint[];\n p2p: P2pSeed[];\n explorer: ExplorerEndpoint[];\n receipt_proof_trust?: ReceiptProofTrustPolicy;\n } = {\n rpc: [],\n p2p: [],\n explorer: [],\n };\n let section:\n | \"root\"\n | \"rpc\"\n | \"p2p\"\n | \"explorer\"\n | \"receipt_proof_trust.archive\"\n | \"receipt_proof_trust.archive.signers\"\n | \"receipt_proof_trust.finality\"\n | \"receipt_proof_trust.finality.signers\" = \"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 if (line === \"[receipt_proof_trust.archive]\") {\n section = \"receipt_proof_trust.archive\";\n ensureReceiptProofTrust(info).archive ??= { signature_threshold: 0, signers: [] };\n continue;\n }\n if (line === \"[[receipt_proof_trust.archive.signers]]\") {\n section = \"receipt_proof_trust.archive.signers\";\n const trust = ensureReceiptProofTrust(info);\n trust.archive ??= { signature_threshold: 0, signers: [] };\n trust.archive.signers.push({ public_key: \"\" });\n continue;\n }\n if (line === \"[receipt_proof_trust.finality]\") {\n section = \"receipt_proof_trust.finality\";\n ensureReceiptProofTrust(info).finality ??= {\n mode: \"cluster\",\n threshold: 0,\n };\n continue;\n }\n if (line === \"[[receipt_proof_trust.finality.signers]]\") {\n section = \"receipt_proof_trust.finality.signers\";\n const trust = ensureReceiptProofTrust(info);\n trust.finality ??= {\n mode: \"multisig\",\n threshold: 0,\n signers: [],\n };\n trust.finality.signers ??= [];\n trust.finality.signers.push({ authority_index: 0, public_key: \"\" });\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 if (section === \"rpc\" || section === \"p2p\" || section === \"explorer\") {\n const list = info[section];\n const target = list[list.length - 1] as unknown as Record<string, unknown>;\n target[key] = value;\n } else if (section === \"receipt_proof_trust.archive\") {\n const trust = ensureReceiptProofTrust(info);\n trust.archive ??= { signature_threshold: 0, signers: [] };\n (trust.archive as unknown as Record<string, unknown>)[key] = value;\n } else if (section === \"receipt_proof_trust.archive.signers\") {\n const archive = ensureReceiptProofTrust(info).archive ??= {\n signature_threshold: 0,\n signers: [],\n };\n const target = archive.signers[archive.signers.length - 1] as unknown as Record<\n string,\n unknown\n >;\n target[key] = value;\n } else if (section === \"receipt_proof_trust.finality\") {\n const trust = ensureReceiptProofTrust(info);\n trust.finality ??= { mode: \"cluster\", threshold: 0 };\n (trust.finality as unknown as Record<string, unknown>)[key] = value;\n } else {\n const finality = ensureReceiptProofTrust(info).finality ??= {\n mode: \"multisig\",\n threshold: 0,\n signers: [],\n };\n finality.signers ??= [];\n const target = finality.signers[finality.signers.length - 1] as unknown as Record<\n string,\n unknown\n >;\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 if (info.receipt_proof_trust) {\n out.receipt_proof_trust = normalizeReceiptProofTrust(info.receipt_proof_trust);\n }\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\nfunction ensureReceiptProofTrust(\n info: Partial<ChainInfo> & { receipt_proof_trust?: ReceiptProofTrustPolicy },\n): ReceiptProofTrustPolicy {\n info.receipt_proof_trust ??= {};\n return info.receipt_proof_trust;\n}\n\nfunction normalizeReceiptProofTrust(trust: ReceiptProofTrustPolicy): ReceiptProofTrustPolicy {\n const out: ReceiptProofTrustPolicy = {};\n if (trust.archive == null || trust.finality == null) {\n throw new Error(\"receipt_proof_trust must include both archive and finality policies\");\n }\n if (trust.archive != null) {\n const threshold = assertSafeIntegerAtLeast(\n trust.archive.signature_threshold,\n 1,\n \"receipt_proof_trust.archive.signature_threshold\",\n );\n if (trust.archive.signers.length === 0 || trust.archive.signers.some((s) => !s.public_key)) {\n throw new Error(\"receipt_proof_trust.archive.signers must contain complete signer rows\");\n }\n if (threshold > trust.archive.signers.length) {\n throw new Error(\"receipt_proof_trust.archive.signature_threshold exceeds signer count\");\n }\n assertOptionalRange(\n trust.archive.valid_from_height,\n trust.archive.valid_to_height,\n \"receipt_proof_trust.archive\",\n );\n assertUniqueStrings(\n trust.archive.signers.map((signer) => signer.public_key),\n \"receipt_proof_trust.archive.signers.public_key\",\n );\n assertUniqueStrings(\n trust.archive.signers.flatMap((signer) => (signer.signer_id ? [signer.signer_id] : [])),\n \"receipt_proof_trust.archive.signers.signer_id\",\n );\n out.archive = {\n signature_threshold: threshold,\n valid_from_height: optionalSafeInteger(trust.archive.valid_from_height),\n valid_to_height: optionalSafeInteger(trust.archive.valid_to_height),\n signers: trust.archive.signers.map((signer) => {\n assertOptionalRange(\n signer.valid_from_height,\n signer.valid_to_height,\n \"receipt_proof_trust.archive.signers\",\n );\n return {\n public_key: assertString(\n signer.public_key,\n \"receipt_proof_trust.archive.signers.public_key\",\n ),\n signer_id: optionalString(signer.signer_id),\n valid_from_height: optionalSafeInteger(signer.valid_from_height),\n valid_to_height: optionalSafeInteger(signer.valid_to_height),\n notes: optionalString(signer.notes),\n };\n }),\n };\n }\n if (trust.finality != null) {\n const mode = trust.finality.mode;\n if (mode !== \"cluster\" && mode !== \"multisig\") {\n throw new Error(`unsupported receipt_proof_trust.finality.mode: ${String(mode)}`);\n }\n const finality: ReceiptProofTrustFinalityPolicy = {\n mode,\n chain_id: optionalSafeInteger(trust.finality.chain_id),\n threshold: assertSafeIntegerAtLeast(\n trust.finality.threshold,\n 1,\n \"receipt_proof_trust.finality.threshold\",\n ),\n valid_from_round: optionalSafeInteger(trust.finality.valid_from_round),\n valid_to_round: optionalSafeInteger(trust.finality.valid_to_round),\n };\n assertOptionalRange(\n trust.finality.valid_from_round,\n trust.finality.valid_to_round,\n \"receipt_proof_trust.finality\",\n );\n if (mode === \"cluster\") {\n finality.committee_size = assertSafeIntegerAtLeast(\n trust.finality.committee_size,\n 1,\n \"receipt_proof_trust.finality.committee_size\",\n );\n if (finality.threshold > finality.committee_size) {\n throw new Error(\"receipt_proof_trust.finality.threshold exceeds committee_size\");\n }\n finality.cluster_public_key = assertString(\n trust.finality.cluster_public_key,\n \"receipt_proof_trust.finality.cluster_public_key\",\n );\n if ((trust.finality.signers ?? []).length > 0) {\n throw new Error(\"receipt_proof_trust.finality.signers are invalid in cluster mode\");\n }\n } else {\n const signers = trust.finality.signers ?? [];\n if (signers.length === 0 || signers.some((s) => !s.public_key)) {\n throw new Error(\"receipt_proof_trust.finality.signers must contain complete signer rows\");\n }\n if (finality.threshold > signers.length) {\n throw new Error(\"receipt_proof_trust.finality.threshold exceeds signer count\");\n }\n if (trust.finality.committee_size != null || trust.finality.cluster_public_key != null) {\n throw new Error(\"receipt_proof_trust.finality cluster fields are invalid in multisig mode\");\n }\n assertUniqueNumbers(\n signers.map((signer) => signer.authority_index),\n \"receipt_proof_trust.finality.signers.authority_index\",\n );\n assertUniqueStrings(\n signers.map((signer) => signer.public_key),\n \"receipt_proof_trust.finality.signers.public_key\",\n );\n finality.signers = signers.map((signer) => {\n assertOptionalRange(\n signer.valid_from_round,\n signer.valid_to_round,\n \"receipt_proof_trust.finality.signers\",\n );\n return {\n authority_index: assertSafeIntegerAtLeast(\n signer.authority_index,\n 0,\n \"receipt_proof_trust.finality.signers.authority_index\",\n ),\n public_key: assertString(\n signer.public_key,\n \"receipt_proof_trust.finality.signers.public_key\",\n ),\n valid_from_round: optionalSafeInteger(signer.valid_from_round),\n valid_to_round: optionalSafeInteger(signer.valid_to_round),\n notes: optionalString(signer.notes),\n };\n });\n }\n out.finality = finality;\n }\n return out;\n}\n\nfunction decodeFixedHex(value: string, expectedLength: number, field: string): Uint8Array {\n const bytes = hexToBytes(assertString(value, field), field);\n if (bytes.length !== expectedLength) {\n throw new Error(`${field} must be ${expectedLength} bytes, got ${bytes.length}`);\n }\n return bytes;\n}\n\nfunction assertString(value: unknown, field: string): string {\n if (typeof value !== \"string\" || value.length === 0) {\n throw new Error(`${field} must be a non-empty string`);\n }\n return value;\n}\n\nfunction optionalString(value: unknown): string | undefined {\n return value === undefined ? undefined : assertString(value, \"optional string field\");\n}\n\nfunction optionalSafeInteger(value: unknown): number | undefined {\n if (value === undefined) return undefined;\n if (!Number.isSafeInteger(value) || Number(value) < 0) {\n throw new Error(\"optional integer field must be a non-negative safe integer\");\n }\n return Number(value);\n}\n\nfunction assertSafeIntegerAtLeast(value: unknown, min: number, field: string): number {\n if (!Number.isSafeInteger(value) || Number(value) < min) {\n throw new Error(`${field} must be a safe integer >= ${min}`);\n }\n return Number(value);\n}\n\nfunction assertOptionalRange(from: unknown, to: unknown, field: string): void {\n const start = optionalSafeInteger(from);\n const end = optionalSafeInteger(to);\n if (start != null && end != null && end < start) {\n throw new Error(`${field} valid_to must be >= valid_from`);\n }\n}\n\nfunction assertUniqueStrings(values: readonly string[], field: string): void {\n const seen = new Set<string>();\n for (const value of values) {\n const normalized = assertString(value, field).toLowerCase();\n if (seen.has(normalized)) {\n throw new Error(`${field} values must be unique`);\n }\n seen.add(normalized);\n }\n}\n\nfunction assertUniqueNumbers(values: readonly number[], field: string): void {\n const seen = new Set<number>();\n for (const value of values) {\n const normalized = assertSafeIntegerAtLeast(value, 0, field);\n if (seen.has(normalized)) {\n throw new Error(`${field} values must be unique`);\n }\n seen.add(normalized);\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 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 */\n\nimport {\n requireTypedAddress,\n type AddressKind,\n} from \"./address.js\";\nimport { SdkError } from \"./error.js\";\nimport type { BridgeRouteDisclosure, BridgeRoutesRequest, BridgeRoutesResponse } from \"./bridge.js\";\nimport {\n nativeEventsFromHistory,\n nativeEventsFromReceipt,\n nativeMarketEventsFromHistory,\n nativeMarketEventsFromReceipt,\n} from \"./native-events.js\";\nimport {\n isConcreteServiceProbeStatus,\n isSinglePublicServiceProbeMask,\n isValidPublicServiceProbeMask,\n} from \"./node-registry.js\";\nimport { assertMrvStructuredFeeConformance } from \"./mrv.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 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 MrcAccountRequest,\n MrcAccountResponse,\n MrcHoldersRequest,\n MrcHoldersResponse,\n MrcMetadataResponse,\n PeerSummary,\n PendingRewardsResponse,\n PendingTxSummary,\n PrecompileDescriptor,\n RedemptionQueueResponse,\n RegistryRecord,\n RichListResponse,\n RoundInfo,\n StorageProofBatch,\n SyncStatus,\n TpmAttestationResponse,\n TransactionReceipt,\n TransactionView,\n TokenBalanceMrcIdentity,\n TokenBalanceRecord,\n} from \"./bindings/index.js\";\nimport type { BlockSelector } from \"./types.js\";\nimport { encodeBlockSelector } from \"./types.js\";\nimport type { ApiStreamTopic } from \"./streams.js\";\nimport type {\n NativeDecodedEvent,\n NativeEventFilter,\n TypedNativeReceiptEvent,\n} from \"./native-events.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\n/** Typed user address (`mono1...`) accepted at public SDK boundaries. */\nexport type UserAddressInput = string;\n\nexport interface TxFeedReceipt {\n status: number;\n executionUnitsUsed: 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 /** Native value in lythoshi. The tx-feed wire key is still `value`. */\n value: string;\n executionUnitLimit: number;\n maxExecutionFeeLythoshi: string;\n priorityTipLythoshi: string;\n fee: NativeReceiptFee;\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 ExecutionUnitPriceResponse {\n executionUnitPriceLythoshi: string;\n basePricePerExecutionUnitLythoshi: string;\n priorityTipLythoshi: string;\n blockNumber: number | null;\n source: string;\n}\n\nexport const MAX_NATIVE_RECEIPT_EVENTS = 1_000;\n\nexport interface NativeReceiptCounters {\n cycles: number;\n syscallUnits: number;\n stateIoUnits: number;\n}\n\nexport interface NativeReceiptFee {\n total_lythoshi: string;\n total_lyth?: string;\n cycles_used: number;\n base_price_per_cycle_lythoshi: string;\n state_io_units: number;\n state_io_price_per_unit_lythoshi: string;\n priority_tip_lythoshi: string;\n}\n\nexport interface NativeReceiptEvent<TDecoded = unknown> {\n blockHeight: number;\n txIndex: number;\n logIndex: number;\n address: string;\n eventTopic: string;\n decoded: TDecoded;\n decodedJson: string;\n}\n\nexport interface NativeReceiptSource {\n chainProvider: string;\n indexerProvider: string;\n metadataLogIndex: number;\n}\n\nexport interface NoEvmCompactInclusionProof {\n schema: \"mono.no_evm_receipt_compact_inclusion.v1\";\n treeAlgorithm: \"binary-keccak-receipt-tree\";\n root: string;\n leafHash: string;\n siblingHashes: string[];\n pathSides: boolean[];\n}\n\nexport interface NoEvmArchiveProof {\n schema: \"mono.no_evm_receipt_archive_binding.v1\";\n source: \"indexerReceiptArchiveContentDigest\" | string;\n manifestHash: string;\n contentHash: string;\n signatureDigest?: string | null;\n signatures: string[];\n coveringSnapshot?: NoEvmArchiveCoveringSnapshot | null;\n}\n\nexport interface NoEvmArchiveCoveringSnapshot {\n snapshotHeight: number;\n manifestHash: string;\n signatureDigest: string;\n contentHash: string;\n checkpointContentHash: string;\n checkpointFrom: number;\n checkpointTo: number;\n signatures: string[];\n}\n\nexport interface NoEvmFinalityCertificate {\n round: number;\n signature: string;\n signersBitmap: string;\n signerIndices: number[];\n signerCount: number;\n}\n\nexport interface NoEvmFinalityBlockReference {\n round: number;\n authority: number;\n digest: string;\n}\n\nexport interface NoEvmFinalityEvidence {\n schema: \"mono.no_evm_receipt_finality.v1\";\n source: \"blsRoundCertificate\" | string;\n round: number;\n certificate: NoEvmFinalityCertificate;\n blockReference?: NoEvmFinalityBlockReference | null;\n leaderCertificate?: NoEvmFinalityCertificate | null;\n dacCertificate?: NoEvmFinalityCertificate | null;\n}\n\ninterface NoEvmReceiptProofBase {\n schema: \"mono.no_evm_receipt_proof.v1\";\n rootAlgorithm: string;\n receiptCodec: \"bincode(protocore_execution_types::Receipt)\";\n blockHash: string;\n txHash: string;\n receiptsRoot: string;\n targetReceiptHash: string;\n blockHeight: number;\n txIndex: number;\n receiptCount: number;\n finalityEvidence?: NoEvmFinalityEvidence | null;\n}\n\nexport interface NoEvmBoundedReceiptProof extends NoEvmReceiptProofBase {\n proofKind?: \"boundedCacheTranscript\";\n proofType: \"canonicalReceiptsTranscript\";\n historySource?: \"legacyUnspecified\" | \"liveBlockCache\";\n compactInclusionProof?: null;\n archiveProof?: null;\n missingProofMaterial?: string[];\n receiptTranscript: string[];\n}\n\nexport interface NoEvmCompactReceiptProof extends NoEvmReceiptProofBase {\n proofKind: \"compactInclusion\";\n proofType: \"canonicalReceiptInclusion\";\n historySource: \"liveBlockCache\" | \"indexerReceiptArchive\";\n compactInclusionProof: NoEvmCompactInclusionProof;\n archiveProof?: NoEvmArchiveProof | null;\n missingProofMaterial?: string[];\n targetReceiptBytes: string;\n receiptTranscript?: string[];\n}\n\nexport type NoEvmReceiptProof = NoEvmBoundedReceiptProof | NoEvmCompactReceiptProof;\n\nexport interface NativeReceiptResponse<TDecoded = unknown> {\n txHash: string;\n blockHash: string;\n blockHeight: number;\n txIndex: number;\n schema: string;\n artifactHash: string;\n receiptCommitment: string;\n /** Current nodes may return `null`; older nodes may omit the field. */\n noEvmProof?: NoEvmReceiptProof | null;\n counters: NativeReceiptCounters;\n fee: NativeReceiptFee;\n reverted: boolean;\n nativeDeltaCount: number;\n eventCount: number;\n events: Array<NativeReceiptEvent<TDecoded>>;\n source: NativeReceiptSource;\n}\n\n/** Filter object passed to `lyth_nativeEvents` and `/api/v1/native-events`. */\nexport interface NativeEventsFilter {\n fromBlock: number | bigint | string;\n toBlock: number | bigint | string;\n limit?: number | bigint | string | null;\n txIndex?: number | bigint | string | null;\n logIndex?: number | bigint | string | null;\n address?: string | null;\n eventTopic?: string | null;\n family?: string | null;\n eventName?: string | null;\n primaryId?: string | null;\n relatedId?: string | null;\n tokenId?: string | null;\n account?: string | null;\n counterparty?: string | null;\n}\n\nexport interface NativeEventsResponseFilters {\n txIndex?: number | null;\n logIndex?: number | null;\n address?: string | null;\n eventTopic?: string | null;\n family?: string | null;\n eventName?: string | null;\n primaryId?: string | null;\n relatedId?: string | null;\n tokenId?: string | null;\n account?: string | null;\n counterparty?: string | null;\n}\n\nexport interface NativeEventsSource {\n indexerProvider: string;\n}\n\nexport interface NativeEventsResponse<TDecoded = unknown> {\n schemaVersion: number;\n fromBlock: number;\n toBlock: number;\n limit: number;\n filters: NativeEventsResponseFilters;\n events: Array<NativeReceiptEvent<TDecoded>>;\n source: NativeEventsSource;\n}\n\n/** Filter object passed to `lyth_nativeAgentState` and `/api/v1/native-agent-state`. */\nexport interface NativeAgentStateFilter {\n policyId?: string | null;\n escrowId?: string | null;\n account?: string | null;\n includePolicySpends?: boolean | null;\n limit?: number | bigint | string | null;\n}\n\nexport interface NativeAgentStateResponseFilters {\n policyId?: string | null;\n escrowId?: string | null;\n account?: string | null;\n includePolicySpends: boolean;\n}\n\nexport interface NativeAgentStateSource {\n indexerProvider: string;\n projection: string;\n}\n\nexport interface NativeAgentPolicyStateRecord {\n policyId: string;\n owner: string;\n controller: string;\n assetId: string;\n /** Owner/controller-local policy nonce; omitted by older nodes. */\n nonce?: number | null;\n enabled: boolean;\n perActionLimit: string;\n windowLimit: string;\n windowSecs: number;\n updatedAtBlock: number;\n}\n\nexport interface NativeAgentPolicySpendStateRecord {\n policyId: string;\n controller: string;\n assetId: string;\n window: number;\n amount: string;\n spent: string;\n updatedAtBlock: number;\n}\n\nexport interface NativeAgentEscrowStateRecord {\n escrowId: string;\n buyer: string;\n provider: string;\n arbiter: string;\n assetId: string;\n /** Buyer-local escrow nonce; omitted by older nodes. */\n nonce?: number | null;\n amount: string;\n termsHash: string;\n round: number;\n buyerAccepted: boolean;\n providerAccepted: boolean;\n submittedPayloadHash?: string | null;\n status: string;\n resolution?: string | null;\n lastActor?: string | null;\n createdAtBlock: number;\n updatedAtBlock: number;\n}\n\nexport interface NativeAgentIssuerStateRecord {\n issuerId: string;\n issuer: string;\n /** Issuer-local nonce; omitted by older nodes. */\n nonce?: number | null;\n metadataHash?: string | null;\n updatedAtBlock: number;\n}\n\nexport interface NativeAgentAttestationStateRecord {\n attestationId: string;\n /** Issuer-local attestation nonce; omitted by older nodes. */\n nonce?: number | null;\n issuerId?: string | null;\n issuer?: string | null;\n subject: string;\n schemaHash?: string | null;\n payloadHash?: string | null;\n active: boolean;\n updatedAtBlock: number;\n}\n\nexport interface NativeAgentConsentStateRecord {\n consentId: string;\n subject: string;\n grantee: string;\n /** Subject-local consent nonce; omitted by older nodes. */\n nonce?: number | null;\n scopeHash?: string | null;\n expiresAt?: number | null;\n active: boolean;\n updatedAtBlock: number;\n}\n\nexport interface NativeAgentServiceStateRecord {\n serviceId: string;\n provider: string;\n /** Provider-local service nonce; omitted by older nodes. */\n nonce?: number | null;\n categoryHash?: string | null;\n metadataHash?: string | null;\n active: boolean;\n updatedAtBlock: number;\n}\n\nexport interface NativeAgentAvailabilityStateRecord {\n provider: string;\n maxConcurrent: number;\n openRequests: number;\n paused: boolean;\n updatedAtBlock: number;\n}\n\nexport interface NativeAgentArbiterStateRecord {\n arbiterId: string;\n arbiter: string;\n /** Arbiter-local registration nonce; omitted by older nodes. */\n nonce?: number | null;\n tier?: number | null;\n metadataHash?: string | null;\n updatedAtBlock: number;\n}\n\nexport interface NativeAgentReputationReviewStateRecord {\n reviewId: string;\n reviewer: string;\n subject: string;\n categoryId: number;\n speedScore: number;\n qualityScore: number;\n communicationScore: number;\n accuracyScore: number;\n payloadHash?: string | null;\n updatedAtBlock: number;\n}\n\nexport interface NativeAgentStateResponse {\n schemaVersion: number;\n limit: number;\n filters: NativeAgentStateResponseFilters;\n issuers: NativeAgentIssuerStateRecord[];\n attestations: NativeAgentAttestationStateRecord[];\n consents: NativeAgentConsentStateRecord[];\n services: NativeAgentServiceStateRecord[];\n availability: NativeAgentAvailabilityStateRecord[];\n arbiters: NativeAgentArbiterStateRecord[];\n reputationReviews: NativeAgentReputationReviewStateRecord[];\n spendingPolicies: NativeAgentPolicyStateRecord[];\n policySpends: NativeAgentPolicySpendStateRecord[];\n escrows: NativeAgentEscrowStateRecord[];\n source: NativeAgentStateSource;\n}\n\nexport type NativeAgentStateFilterParamValue = string | number | boolean;\n\n/** Filter object passed to `lyth_nativeMarketState` and `/api/v1/native-market-state`. */\nexport interface NativeMarketStateFilter {\n marketId?: string | null;\n orderId?: string | null;\n listingId?: string | null;\n collectionId?: string | null;\n account?: string | null;\n includeSpotOrders?: boolean | null;\n limit?: number | bigint | string | null;\n}\n\nexport interface NativeMarketStateResponseFilters {\n marketId?: string | null;\n orderId?: string | null;\n listingId?: string | null;\n collectionId?: string | null;\n account?: string | null;\n includeSpotOrders: boolean;\n}\n\nexport interface NativeMarketStateSource {\n indexerProvider: string;\n projection: string;\n}\n\nexport interface NativeSpotMarketStateRecord {\n marketId: string;\n owner: string;\n baseAssetId: string;\n quoteAssetId: string;\n tickSize: string;\n lotSize: string;\n minQuantity: string;\n minNotional: string;\n tradeCount: string;\n totalVolumeBase: string;\n lastPrice: string | null;\n lastBlockHeight: number | null;\n createdAtBlock: number;\n updatedAtBlock: number;\n}\n\nexport interface NativeSpotOrderStateRecord {\n orderId: string;\n marketId: string;\n owner: string;\n /** Owner-local spot order nonce; omitted by older nodes. */\n nonce?: number | null;\n side: string;\n price: string;\n quantity: string;\n remaining: string;\n status: string;\n expiresAtBlock: number;\n updatedAtBlock: number;\n}\n\nexport interface NativeNftListingStateRecord {\n listingId: string;\n seller: string;\n /** Seller-local NFT listing nonce; omitted by older nodes. */\n nonce?: number | null;\n standard: string;\n collectionId: string;\n tokenId: string;\n quantity: string;\n paymentAssetId: string;\n price: string;\n listingKind: unknown;\n status: string;\n expiresAtBlock: number;\n highestBidder: string | null;\n highestBid: string | null;\n updatedAtBlock: number;\n}\n\nexport interface NativeCollectionRoyaltyStateRecord {\n collectionId: string;\n creator: string | null;\n recipient: string;\n bps: number;\n updatedAtBlock: number;\n}\n\nexport interface NativeMarketStateResponse {\n schemaVersion: number;\n limit: number;\n filters: NativeMarketStateResponseFilters;\n spotMarkets: NativeSpotMarketStateRecord[];\n spotOrders: NativeSpotOrderStateRecord[];\n nftListings: NativeNftListingStateRecord[];\n collectionRoyalties: NativeCollectionRoyaltyStateRecord[];\n source: NativeMarketStateSource;\n}\n\nexport type NativeMarketStateFilterParamValue = string | number | boolean;\n\nexport type AgentReputationCategoryScope = \"global\" | \"category\";\n\nexport interface AgentReputationRecord {\n provider: string;\n categoryId: number;\n blockHeight: number;\n speedSumX10: number;\n qualitySumX10: number;\n communicationSumX10: number;\n accuracySumX10: number;\n sampleCount: number;\n avgSpeedX10: number;\n avgQualityX10: number;\n avgCommunicationX10: number;\n avgAccuracyX10: number;\n}\n\nexport interface AgentReputationResponse {\n schemaVersion: 1;\n provider: string;\n categoryId: number;\n categoryScope: AgentReputationCategoryScope;\n record: AgentReputationRecord | null;\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 mrc?: TokenBalanceMrcIdentity | null;\n }>;\n bridgeRouteDisclosures?: BridgeRouteDisclosure[] | null;\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\";\nconst ETH_COMPAT_RPC_PREFIX = \"eth_\";\nconst ethCompatMethod = (name: string): string => `${ETH_COMPAT_RPC_PREFIX}${name}`;\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 /** Compatibility block-height read. */\n async ethBlockNumber(): Promise<bigint> {\n return parseQuantityBig(await this.call<string>(ethCompatMethod(\"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 /** Compatibility block-header read by height/tag. */\n async ethGetBlockByNumber(\n block: BlockSelector = \"latest\",\n ): Promise<BlockHeader | null> {\n return normalizeBlockHeader(await this.call(ethCompatMethod(\"getBlockByNumber\"), [encodeBlockSelector(block)]));\n }\n\n /** Compatibility block-header read by hash. */\n async ethGetBlockByHash(hash: string): Promise<BlockHeader | null> {\n return normalizeBlockHeader(await this.call(ethCompatMethod(\"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 normalizeTransactionReceipt(await this.call(\"eth_getTransactionReceipt\", [txHash]));\n }\n\n /**\n * `eth_gasPrice` — passive compatibility fee quote for EVM-shaped read\n * tooling. Native callers should prefer `lythExecutionUnitPrice`.\n */\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_* 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\", [sdkTypedAddress(address, \"user\", \"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\", [sdkTypedAddress(address, \"user\", \"address\")]);\n }\n\n /** `lyth_bridgeRoutes` — read-only bridge route-selection/readiness. */\n async lythBridgeRoutes(request: BridgeRoutesRequest): Promise<BridgeRoutesResponse> {\n return this.call(\"lyth_bridgeRoutes\", [request]);\n }\n\n /** `lyth_mrcMetadata` — exact current-state native MRC metadata lookup. */\n async lythMrcMetadata(\n assetId: string,\n tokenId?: string | null,\n ): Promise<MrcMetadataResponse> {\n const params = tokenId == null ? [assetId] : [assetId, tokenId];\n return this.call(\"lyth_mrcMetadata\", params);\n }\n\n /** `lyth_mrcAccount` — exact current-state native MRC account lookup. */\n async lythMrcAccount(\n account: string,\n spendLimit?: number | null,\n ): Promise<MrcAccountResponse> {\n const request: MrcAccountRequest = {\n account: sdkTypedAddress(account, \"smartAccount\", \"account\"),\n };\n if (spendLimit != null) request.spendLimit = spendLimit;\n const params =\n request.spendLimit == null\n ? [request.account]\n : [request.account, request.spendLimit];\n return this.call(\"lyth_mrcAccount\", params);\n }\n\n /** `lyth_mrcHolders` — top holders for a native MRC asset/token key. */\n async lythMrcHolders(\n standard: string,\n assetId: string,\n tokenId: string,\n limit?: number | null,\n ): Promise<MrcHoldersResponse> {\n return this.lythMrcHoldersScoped(standard, assetId, tokenId, limit);\n }\n\n /**\n * `lyth_mrcHolders` — top holders for a native MRC asset/vault key.\n *\n * This is the asset-scoped form used by MRC-4626 vault share balances.\n */\n async lythMrcAssetHolders(\n standard: string,\n assetId: string,\n limit?: number | null,\n ): Promise<MrcHoldersResponse> {\n return this.lythMrcHoldersScoped(standard, assetId, null, limit);\n }\n\n /** `lyth_mrcHolders` — top holders for MRC-4626 vault shares. */\n async lythMrc4626Holders(\n vaultId: string,\n limit?: number | null,\n ): Promise<MrcHoldersResponse> {\n return this.lythMrcAssetHolders(\"mrc4626\", vaultId, limit);\n }\n\n private async lythMrcHoldersScoped(\n standard: string,\n assetId: string,\n tokenId: string | null,\n limit?: number | null,\n ): Promise<MrcHoldersResponse> {\n const request: MrcHoldersRequest = {\n standard,\n assetId,\n tokenId,\n };\n if (limit != null) request.limit = limit;\n const params =\n request.limit == null\n ? [request.standard, request.assetId, request.tokenId]\n : [request.standard, request.assetId, request.tokenId, request.limit];\n return this.call(\"lyth_mrcHolders\", params);\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\", [\n sdkTypedAddress(address, \"user\", \"address\"),\n ]);\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 userAddress = sdkTypedAddress(address, \"user\", \"address\");\n const params = cursor === undefined ? [userAddress, limit] : [userAddress, 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\", [sdkTypedAddress(address, \"user\", \"address\")]);\n }\n\n /** `lyth_agentReputation` — reputation accumulators for an agent provider. */\n async lythAgentReputation(\n provider: UserAddressInput,\n categoryId = 0,\n ): Promise<AgentReputationResponse> {\n return this.call(\"lyth_agentReputation\", [\n sdkTypedAddress(provider, \"user\", \"provider address\"),\n categoryId,\n ]);\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_nativeReceipt` — native RISC-V receipt metadata and typed native event rows. */\n async lythNativeReceipt<TDecoded = unknown>(\n txHash: string,\n ): Promise<NativeReceiptResponse<TDecoded>> {\n return decodeNativeReceiptResponse<TDecoded>(\n await this.call<unknown>(\"lyth_nativeReceipt\", [txHash]),\n );\n }\n\n /**\n * Typed native event rows from `lyth_nativeReceipt`.\n *\n * This helper intentionally consumes the existing receipt RPC surface;\n * it does not require a separate `lyth_nativeEvents` node method.\n */\n async lythNativeReceiptEvents<TDecoded extends NativeDecodedEvent = NativeDecodedEvent>(\n txHash: string,\n filter: NativeEventFilter = {},\n ): Promise<Array<TypedNativeReceiptEvent<TDecoded>>> {\n const receipt = await this.lythNativeReceipt(txHash);\n return nativeEventsFromReceipt<TDecoded>(receipt, filter);\n }\n\n /** Typed native market event rows from `lyth_nativeReceipt`. */\n async lythNativeReceiptMarketEvents<TDecoded extends NativeDecodedEvent = NativeDecodedEvent>(\n txHash: string,\n filter: NativeEventFilter = {},\n ): Promise<Array<TypedNativeReceiptEvent<TDecoded>>> {\n const receipt = await this.lythNativeReceipt(txHash);\n return nativeMarketEventsFromReceipt<TDecoded>(receipt, filter);\n }\n\n /** `lyth_nativeEvents` — historical indexed native event rows. */\n async lythNativeEvents<TDecoded = unknown>(\n filter: NativeEventsFilter,\n ): Promise<NativeEventsResponse<TDecoded>> {\n return this.call(\"lyth_nativeEvents\", [nativeEventsFilterParams(filter)]);\n }\n\n /** `lyth_nativeEvents` with decoded rows converted into a caller-selected type. */\n async lythNativeEventsTyped<\n TDecoded extends NativeDecodedEvent = NativeDecodedEvent,\n >(filter: NativeEventsFilter): Promise<NativeEventsResponse<TDecoded>> {\n const response = await this.lythNativeEvents(filter);\n return nativeEventsFromHistory<TDecoded>(response);\n }\n\n /** `lyth_nativeEvents` restricted to native marketplace event rows. */\n async lythNativeMarketEvents<TDecoded = unknown>(\n filter: NativeEventsFilter,\n ): Promise<NativeEventsResponse<TDecoded>> {\n return this.lythNativeEvents<TDecoded>({\n ...filter,\n family: \"market\",\n });\n }\n\n /** `lyth_nativeEvents` market rows with decoded rows converted into a caller-selected type. */\n async lythNativeMarketEventsTyped<\n TDecoded extends NativeDecodedEvent = NativeDecodedEvent,\n >(filter: NativeEventsFilter): Promise<NativeEventsResponse<TDecoded>> {\n const response = await this.lythNativeEvents({\n ...filter,\n family: \"market\",\n });\n return nativeMarketEventsFromHistory<TDecoded>(response);\n }\n\n /** `lyth_nativeAgentState` — current-state native agent policy and escrow rows. */\n async lythNativeAgentState(\n filter: NativeAgentStateFilter = {},\n ): Promise<NativeAgentStateResponse> {\n const response = await this.call(\"lyth_nativeAgentState\", [\n nativeAgentStateFilterParams(filter),\n ]);\n return decodeNativeAgentStateResponse(response);\n }\n\n /** `lyth_nativeMarketState` — current-state native spot and NFT market rows. */\n async lythNativeMarketState(\n filter: NativeMarketStateFilter = {},\n ): Promise<NativeMarketStateResponse> {\n return this.call(\"lyth_nativeMarketState\", [nativeMarketStateFilterParams(filter)]);\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 decodeTxFeedResponse(await this.call<unknown>(\"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\", [sdkTypedAddress(address, \"user\", \"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\", [sdkTypedAddress(address, \"user\", \"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\", [sdkTypedAddress(sender, \"user\", \"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_getTransactionCount` — native sender nonce. */\n async lythGetTransactionCount(address: string): Promise<bigint> {\n return parseRpcBigint(\n await this.call<unknown>(\"lyth_getTransactionCount\", [\n sdkTypedAddress(address, \"user\", \"address\"),\n ]),\n \"lyth_getTransactionCount\",\n );\n }\n\n /** `lyth_executionUnitPrice` — native execution-unit price in lythoshi. */\n async lythExecutionUnitPrice(): Promise<ExecutionUnitPriceResponse> {\n return normalizeExecutionUnitPriceResponse(\n await this.call<unknown>(\"lyth_executionUnitPrice\", []),\n );\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 /** `lyth_listActivePrecompiles` — native precompile catalogue. */\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 normalizeCapabilitiesResponse(\n await this.call<CapabilitiesResponse>(\"lyth_capabilities\", params),\n );\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 userWallet = sdkTypedAddress(wallet, \"user\", \"wallet\");\n const params =\n block === undefined ? [userWallet] : [userWallet, encodeBlockSelector(block)];\n return this.call(\"lyth_getDelegations\", params);\n }\n\n /** `lyth_pendingRewards` — wallet pending rewards at a block. */\n async lythPendingRewards(\n wallet: string,\n block?: BlockSelector,\n ): Promise<PendingRewardsResponse> {\n const userWallet = sdkTypedAddress(wallet, \"user\", \"wallet\");\n const params =\n block === undefined ? [userWallet] : [userWallet, encodeBlockSelector(block)];\n return this.call(\"lyth_pendingRewards\", params);\n }\n\n /** `lyth_redemptionQueue` — wallet redemption tickets at a block. */\n async lythRedemptionQueue(\n wallet: string,\n block?: BlockSelector,\n ): Promise<RedemptionQueueResponse> {\n const userWallet = sdkTypedAddress(wallet, \"user\", \"wallet\");\n const params =\n block === undefined ? [userWallet] : [userWallet, encodeBlockSelector(block)];\n return this.call(\"lyth_redemptionQueue\", 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 userWallet = sdkTypedAddress(wallet, \"user\", \"wallet\");\n const params = cursor === undefined ? [userWallet, limit] : [userWallet, 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: ApiStreamTopic | (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` — legacy compatibility trace for a confirmed tx. */\n async debugTraceTransaction(txHash: string): Promise<unknown> {\n return this.call(\"debug_traceTransaction\", [txHash]);\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\nexport function nativeEventsFilterParams(filter: NativeEventsFilter): Record<string, unknown> {\n return {\n fromBlock: encodeRpcU64Number(filter.fromBlock, \"fromBlock\"),\n toBlock: encodeRpcU64Number(filter.toBlock, \"toBlock\"),\n ...optionalRpcNumber(\"limit\", filter.limit),\n ...optionalRpcNumber(\"txIndex\", filter.txIndex),\n ...optionalRpcNumber(\"logIndex\", filter.logIndex),\n ...optionalString(\"address\", filter.address),\n ...optionalString(\"eventTopic\", filter.eventTopic),\n ...optionalString(\"family\", filter.family),\n ...optionalString(\"eventName\", filter.eventName),\n ...optionalString(\"primaryId\", filter.primaryId),\n ...optionalString(\"relatedId\", filter.relatedId),\n ...optionalString(\"tokenId\", filter.tokenId),\n ...optionalString(\"account\", filter.account),\n ...optionalString(\"counterparty\", filter.counterparty),\n };\n}\n\nfunction optionalRpcNumber(\n key: string,\n value: number | bigint | string | null | undefined,\n): Record<string, number> {\n return value == null ? {} : { [key]: encodeRpcU64Number(value, key) };\n}\n\nfunction optionalString(key: string, value: string | null | undefined): Record<string, string> {\n return value == null ? {} : { [key]: value };\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 parseStringField(value: unknown, label: string): string {\n if (value === null || value === undefined) {\n throw SdkError.malformed(`${label} is missing`);\n }\n return String(value);\n}\n\nfunction parseBooleanField(value: unknown, label: string): boolean {\n if (typeof value !== \"boolean\") {\n throw SdkError.malformed(`${label} must be a boolean`);\n }\n return value;\n}\n\nfunction parseRpcUint(value: unknown, label: string, max: number, typeName: string): number {\n const parsed = parseRpcNumber(value, label);\n if (parsed > max) {\n throw SdkError.malformed(`${label} must be a ${typeName}`);\n }\n return parsed;\n}\n\nfunction parseRpcUintNullable(\n value: unknown,\n label: string,\n max: number,\n typeName: string,\n): number | null {\n return value === null || value === undefined ? null : parseRpcUint(value, label, max, typeName);\n}\n\nfunction decodeNativeAgentStateArray<T>(\n row: Record<string, unknown>,\n key: string,\n decode: (value: unknown, label: string) => T,\n defaultMissing: boolean,\n): T[] {\n const value = row[key];\n if (value === undefined && defaultMissing) return [];\n if (!Array.isArray(value)) {\n throw SdkError.malformed(`native agent state ${key} must be an array`);\n }\n return value.map((item, index) => decode(item, `native agent state ${key}[${index}]`));\n}\n\nfunction decodeNativeAgentExistingStateRecord<T>(value: unknown, label: string): T {\n return expectObject(value, label) as unknown as T;\n}\n\nfunction decodeNativeAgentIssuerStateRecord(\n value: unknown,\n label: string,\n): NativeAgentIssuerStateRecord {\n const row = expectObject(value, label);\n return {\n issuerId: parseStringField(row[\"issuerId\"], `${label}.issuerId`),\n issuer: parseStringField(row[\"issuer\"], `${label}.issuer`),\n nonce: parseRpcNumberNullable(row[\"nonce\"], `${label}.nonce`),\n metadataHash: parseStringNullable(row[\"metadataHash\"]),\n updatedAtBlock: parseRpcNumber(row[\"updatedAtBlock\"], `${label}.updatedAtBlock`),\n };\n}\n\nfunction decodeNativeAgentAttestationStateRecord(\n value: unknown,\n label: string,\n): NativeAgentAttestationStateRecord {\n const row = expectObject(value, label);\n return {\n attestationId: parseStringField(row[\"attestationId\"], `${label}.attestationId`),\n nonce: parseRpcNumberNullable(row[\"nonce\"], `${label}.nonce`),\n issuerId: parseStringNullable(row[\"issuerId\"]),\n issuer: parseStringNullable(row[\"issuer\"]),\n subject: parseStringField(row[\"subject\"], `${label}.subject`),\n schemaHash: parseStringNullable(row[\"schemaHash\"]),\n payloadHash: parseStringNullable(row[\"payloadHash\"]),\n active: parseBooleanField(row[\"active\"], `${label}.active`),\n updatedAtBlock: parseRpcNumber(row[\"updatedAtBlock\"], `${label}.updatedAtBlock`),\n };\n}\n\nfunction decodeNativeAgentConsentStateRecord(\n value: unknown,\n label: string,\n): NativeAgentConsentStateRecord {\n const row = expectObject(value, label);\n return {\n consentId: parseStringField(row[\"consentId\"], `${label}.consentId`),\n subject: parseStringField(row[\"subject\"], `${label}.subject`),\n grantee: parseStringField(row[\"grantee\"], `${label}.grantee`),\n nonce: parseRpcNumberNullable(row[\"nonce\"], `${label}.nonce`),\n scopeHash: parseStringNullable(row[\"scopeHash\"]),\n expiresAt: parseRpcNumberNullable(row[\"expiresAt\"], `${label}.expiresAt`),\n active: parseBooleanField(row[\"active\"], `${label}.active`),\n updatedAtBlock: parseRpcNumber(row[\"updatedAtBlock\"], `${label}.updatedAtBlock`),\n };\n}\n\nfunction decodeNativeAgentServiceStateRecord(\n value: unknown,\n label: string,\n): NativeAgentServiceStateRecord {\n const row = expectObject(value, label);\n return {\n serviceId: parseStringField(row[\"serviceId\"], `${label}.serviceId`),\n provider: parseStringField(row[\"provider\"], `${label}.provider`),\n nonce: parseRpcNumberNullable(row[\"nonce\"], `${label}.nonce`),\n categoryHash: parseStringNullable(row[\"categoryHash\"]),\n metadataHash: parseStringNullable(row[\"metadataHash\"]),\n active: parseBooleanField(row[\"active\"], `${label}.active`),\n updatedAtBlock: parseRpcNumber(row[\"updatedAtBlock\"], `${label}.updatedAtBlock`),\n };\n}\n\nfunction decodeNativeAgentAvailabilityStateRecord(\n value: unknown,\n label: string,\n): NativeAgentAvailabilityStateRecord {\n const row = expectObject(value, label);\n return {\n provider: parseStringField(row[\"provider\"], `${label}.provider`),\n maxConcurrent: parseRpcUint(row[\"maxConcurrent\"], `${label}.maxConcurrent`, 0xffffffff, \"uint32\"),\n openRequests: parseRpcUint(row[\"openRequests\"], `${label}.openRequests`, 0xffffffff, \"uint32\"),\n paused: parseBooleanField(row[\"paused\"], `${label}.paused`),\n updatedAtBlock: parseRpcNumber(row[\"updatedAtBlock\"], `${label}.updatedAtBlock`),\n };\n}\n\nfunction decodeNativeAgentArbiterStateRecord(\n value: unknown,\n label: string,\n): NativeAgentArbiterStateRecord {\n const row = expectObject(value, label);\n return {\n arbiterId: parseStringField(row[\"arbiterId\"], `${label}.arbiterId`),\n arbiter: parseStringField(row[\"arbiter\"], `${label}.arbiter`),\n nonce: parseRpcNumberNullable(row[\"nonce\"], `${label}.nonce`),\n tier: parseRpcUintNullable(row[\"tier\"], `${label}.tier`, 0xffff, \"uint16\"),\n metadataHash: parseStringNullable(row[\"metadataHash\"]),\n updatedAtBlock: parseRpcNumber(row[\"updatedAtBlock\"], `${label}.updatedAtBlock`),\n };\n}\n\nfunction decodeNativeAgentReputationReviewStateRecord(\n value: unknown,\n label: string,\n): NativeAgentReputationReviewStateRecord {\n const row = expectObject(value, label);\n return {\n reviewId: parseStringField(row[\"reviewId\"], `${label}.reviewId`),\n reviewer: parseStringField(row[\"reviewer\"], `${label}.reviewer`),\n subject: parseStringField(row[\"subject\"], `${label}.subject`),\n categoryId: parseRpcUint(row[\"categoryId\"], `${label}.categoryId`, 0xffffffff, \"uint32\"),\n speedScore: parseRpcUint(row[\"speedScore\"], `${label}.speedScore`, 0xff, \"uint8\"),\n qualityScore: parseRpcUint(row[\"qualityScore\"], `${label}.qualityScore`, 0xff, \"uint8\"),\n communicationScore: parseRpcUint(\n row[\"communicationScore\"],\n `${label}.communicationScore`,\n 0xff,\n \"uint8\",\n ),\n accuracyScore: parseRpcUint(row[\"accuracyScore\"], `${label}.accuracyScore`, 0xff, \"uint8\"),\n payloadHash: parseStringNullable(row[\"payloadHash\"]),\n updatedAtBlock: parseRpcNumber(row[\"updatedAtBlock\"], `${label}.updatedAtBlock`),\n };\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\nexport function decodeNativeReceiptResponse<TDecoded = unknown>(\n value: unknown,\n): NativeReceiptResponse<TDecoded> {\n const row = expectObject(value, \"native receipt response\");\n assertNativeReceiptFee(row[\"fee\"], \"native receipt response.fee\");\n return value as NativeReceiptResponse<TDecoded>;\n}\n\nexport function decodeTxFeedResponse(value: unknown): TxFeedResponse {\n const row = expectObject(value, \"tx feed response\");\n const transactions = row[\"transactions\"];\n if (!Array.isArray(transactions)) {\n throw SdkError.malformed(\"tx feed response.transactions must be an array\");\n }\n transactions.forEach((transaction, index) => {\n const tx = expectObject(transaction, `tx feed response.transactions[${index}]`);\n assertNativeReceiptFee(tx[\"fee\"], `tx feed response.transactions[${index}].fee`);\n });\n return value as TxFeedResponse;\n}\n\nfunction assertNativeReceiptFee(value: unknown, label: string): asserts value is NativeReceiptFee {\n try {\n assertMrvStructuredFeeConformance(value, { label });\n } catch (err) {\n const message = err instanceof Error ? err.message : String(err);\n throw SdkError.malformed(`structured native fee violation: ${message}`);\n }\n}\n\nfunction firstField(row: Record<string, unknown>, keys: readonly string[], label: string): unknown {\n for (const key of keys) {\n if (row[key] !== undefined) return row[key];\n }\n throw SdkError.malformed(`${label} is missing (${keys.join(\" | \")})`);\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\nexport function nativeAgentStateFilterParams(\n filter: NativeAgentStateFilter,\n): Record<string, NativeAgentStateFilterParamValue> {\n const out: Record<string, NativeAgentStateFilterParamValue> = {};\n if (filter.policyId != null) out.policyId = filter.policyId;\n if (filter.escrowId != null) out.escrowId = filter.escrowId;\n if (filter.account != null) out.account = filter.account;\n if (filter.includePolicySpends != null) out.includePolicySpends = filter.includePolicySpends;\n if (filter.limit != null) out.limit = encodeRpcU64Number(filter.limit, \"limit\");\n return out;\n}\n\nexport function decodeNativeAgentStateResponse(value: unknown): NativeAgentStateResponse {\n const row = expectObject(value, \"native agent state response\");\n return {\n schemaVersion: parseRpcNumber(row[\"schemaVersion\"], \"native agent state schemaVersion\"),\n limit: parseRpcNumber(row[\"limit\"], \"native agent state limit\"),\n filters: expectObject(\n row[\"filters\"],\n \"native agent state filters\",\n ) as unknown as NativeAgentStateResponseFilters,\n issuers: decodeNativeAgentStateArray(\n row,\n \"issuers\",\n decodeNativeAgentIssuerStateRecord,\n true,\n ),\n attestations: decodeNativeAgentStateArray(\n row,\n \"attestations\",\n decodeNativeAgentAttestationStateRecord,\n true,\n ),\n consents: decodeNativeAgentStateArray(\n row,\n \"consents\",\n decodeNativeAgentConsentStateRecord,\n true,\n ),\n services: decodeNativeAgentStateArray(\n row,\n \"services\",\n decodeNativeAgentServiceStateRecord,\n true,\n ),\n availability: decodeNativeAgentStateArray(\n row,\n \"availability\",\n decodeNativeAgentAvailabilityStateRecord,\n true,\n ),\n arbiters: decodeNativeAgentStateArray(\n row,\n \"arbiters\",\n decodeNativeAgentArbiterStateRecord,\n true,\n ),\n reputationReviews: decodeNativeAgentStateArray(\n row,\n \"reputationReviews\",\n decodeNativeAgentReputationReviewStateRecord,\n true,\n ),\n spendingPolicies: decodeNativeAgentStateArray(\n row,\n \"spendingPolicies\",\n decodeNativeAgentExistingStateRecord<NativeAgentPolicyStateRecord>,\n false,\n ),\n policySpends: decodeNativeAgentStateArray(\n row,\n \"policySpends\",\n decodeNativeAgentExistingStateRecord<NativeAgentPolicySpendStateRecord>,\n false,\n ),\n escrows: decodeNativeAgentStateArray(\n row,\n \"escrows\",\n decodeNativeAgentExistingStateRecord<NativeAgentEscrowStateRecord>,\n false,\n ),\n source: expectObject(\n row[\"source\"],\n \"native agent state source\",\n ) as unknown as NativeAgentStateSource,\n };\n}\n\nexport function nativeMarketStateFilterParams(\n filter: NativeMarketStateFilter,\n): Record<string, NativeMarketStateFilterParamValue> {\n const out: Record<string, NativeMarketStateFilterParamValue> = {};\n if (filter.marketId != null) out.marketId = filter.marketId;\n if (filter.orderId != null) out.orderId = filter.orderId;\n if (filter.listingId != null) out.listingId = filter.listingId;\n if (filter.collectionId != null) out.collectionId = filter.collectionId;\n if (filter.account != null) out.account = filter.account;\n if (filter.includeSpotOrders != null) out.includeSpotOrders = filter.includeSpotOrders;\n if (filter.limit != null) out.limit = encodeRpcU64Number(filter.limit, \"limit\");\n return out;\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(firstField(h, [\"parent_hash\", \"parentHash\"], \"block header parent hash\")),\n state_root: String(firstField(h, [\"state_root\", \"stateRoot\"], \"block header state root\")),\n timestamp: parseRpcBigint(h[\"timestamp\"], \"block header timestamp\"),\n executionUnitsUsed: parseRpcBigint(\n firstField(\n h,\n [\"executionUnitsUsed\", \"execution_units_used\", \"gas_used\", \"gasUsed\"],\n \"block header execution units used\",\n ),\n \"block header execution units used\",\n ),\n executionUnitLimit: parseRpcBigint(\n firstField(\n h,\n [\"executionUnitLimit\", \"execution_unit_limit\", \"gas_limit\", \"gasLimit\"],\n \"block header execution unit limit\",\n ),\n \"block header execution unit limit\",\n ),\n };\n}\n\nfunction normalizeTransactionReceipt(value: unknown): TransactionReceipt | null {\n if (value === null || value === undefined) return null;\n const r = expectObject(value, \"transaction receipt\");\n return {\n tx_hash: String(\n firstField(r, [\"tx_hash\", \"txHash\", \"transactionHash\"], \"transaction receipt tx hash\"),\n ),\n block_hash: String(\n firstField(r, [\"block_hash\", \"blockHash\"], \"transaction receipt block hash\"),\n ),\n block_number: parseRpcBigint(\n firstField(r, [\"block_number\", \"blockNumber\"], \"transaction receipt block number\"),\n \"transaction receipt block number\",\n ),\n tx_index: parseRpcNumber(\n firstField(r, [\"tx_index\", \"txIndex\", \"transactionIndex\"], \"transaction receipt tx index\"),\n \"transaction receipt tx index\",\n ),\n status: parseRpcNumber(firstField(r, [\"status\"], \"transaction receipt status\"), \"transaction receipt status\"),\n executionUnitsUsed: parseRpcBigint(\n firstField(\n r,\n [\"executionUnitsUsed\", \"execution_units_used\", \"gas_used\", \"gasUsed\"],\n \"transaction receipt execution units used\",\n ),\n \"transaction receipt execution units used\",\n ),\n };\n}\n\nfunction sdkTypedAddress(address: string, kind: AddressKind, label: string): string {\n try {\n return requireTypedAddress(address, kind, label);\n } catch (err) {\n const message = err instanceof Error ? err.message : String(err);\n throw SdkError.malformed(message);\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 normalizeExecutionUnitPriceResponse(value: unknown): ExecutionUnitPriceResponse {\n if (!value || typeof value !== \"object\") {\n throw SdkError.malformed(\"execution unit price response must be an object\");\n }\n const row = value as Record<string, unknown>;\n return {\n executionUnitPriceLythoshi: parseRpcBigint(\n fieldAlias(row, [\"executionUnitPriceLythoshi\", \"execution_unit_price_lythoshi\"]),\n \"executionUnitPriceLythoshi\",\n ).toString(),\n basePricePerExecutionUnitLythoshi: parseRpcBigint(\n fieldAlias(row, [\n \"basePricePerExecutionUnitLythoshi\",\n \"base_price_per_execution_unit_lythoshi\",\n ]),\n \"basePricePerExecutionUnitLythoshi\",\n ).toString(),\n priorityTipLythoshi: parseRpcBigint(\n fieldAlias(row, [\"priorityTipLythoshi\", \"priority_tip_lythoshi\"]),\n \"priorityTipLythoshi\",\n ).toString(),\n blockNumber: parseRpcNumberNullable(\n fieldAlias(row, [\"blockNumber\", \"block_number\"]),\n \"blockNumber\",\n ),\n source: readStringField(row, [\"source\"], \"execution unit price source\"),\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\nfunction fieldAlias(record: Record<string, unknown>, keys: readonly string[]): unknown {\n for (const key of keys) {\n if (Object.prototype.hasOwnProperty.call(record, key)) return record[key];\n }\n return undefined;\n}\n\nfunction readStringField(\n record: Record<string, unknown>,\n keys: readonly string[],\n label: string,\n): string {\n const value = fieldAlias(record, keys);\n if (typeof value !== \"string\" || value.trim().length === 0) {\n throw SdkError.malformed(`${label} must be a non-empty string`);\n }\n return value.trim();\n}\n\nfunction normalizeCapabilitiesResponse(value: CapabilitiesResponse): CapabilitiesResponse {\n return {\n ...value,\n nativeModuleForwarders: value.nativeModuleForwarders ?? {},\n };\n}\n","import { SdkError } from \"./error.js\";\n\nexport const NATIVE_MARKET_ORDER_BOOK_STREAM_TOPIC = \"nativeMarketOrderBook\" as const;\n\nexport const API_STREAM_TOPICS = [\n \"newHeads\",\n \"newPendingTx\",\n \"logs\",\n \"newCommit\",\n \"dagVertices\",\n \"registry\",\n \"marketTrades\",\n NATIVE_MARKET_ORDER_BOOK_STREAM_TOPIC,\n \"gapRecords\",\n \"nativeEvents\",\n] as const;\n\nexport type ApiStreamTopic = (typeof API_STREAM_TOPICS)[number];\nexport type NativeMarketOrderBookStreamAction = \"upsert\" | \"remove\";\nexport type NativeMarketOrderBookDelta = NativeMarketOrderBookStreamPayload;\n\nexport interface NativeMarketOrderBookStreamPayload {\n marketId: string;\n orderId: string;\n relatedOrderId?: string;\n eventName: string;\n action: NativeMarketOrderBookStreamAction;\n side?: string;\n price?: string;\n quantity?: string;\n remaining?: string;\n status?: string;\n blockHeight: number;\n txIndex: number;\n logIndex: number;\n}\n\nexport interface NativeMarketOrderBookDeltasRequest {\n fromBlock: number | bigint | string;\n toBlock: number | bigint | string;\n limit?: number | bigint | string | null;\n cursor?: string | null;\n txIndex?: number | bigint | string | null;\n logIndex?: number | bigint | string | null;\n address?: string | null;\n eventTopic?: string | null;\n eventName?: string | null;\n marketId?: string | null;\n listingId?: string | null;\n primaryId?: string | null;\n relatedId?: string | null;\n tokenId?: string | null;\n account?: string | null;\n counterparty?: string | null;\n}\n\nexport interface NativeMarketOrderBookDeltasResponseFilters {\n family?: \"market\" | string | null;\n txIndex?: number | null;\n logIndex?: number | null;\n address?: string | null;\n eventTopic?: string | null;\n eventName?: string | null;\n marketId?: string | null;\n listingId?: string | null;\n primaryId?: string | null;\n relatedId?: string | null;\n tokenId?: string | null;\n account?: string | null;\n counterparty?: string | null;\n}\n\nexport interface NativeMarketOrderBookDeltasSource {\n indexerProvider: string;\n projection: \"native_market_orderbook_deltas\" | string;\n historyApi: \"lyth_nativeMarketEvents\" | string;\n [key: string]: unknown;\n}\n\nexport interface NativeMarketOrderBookDeltasResponse {\n schemaVersion: number;\n fromBlock: number;\n toBlock: number;\n limit: number | null;\n cursor: string | null;\n nextCursor: string | null;\n filters: NativeMarketOrderBookDeltasResponseFilters;\n replay: true;\n streamTopic: typeof NATIVE_MARKET_ORDER_BOOK_STREAM_TOPIC;\n deltas: NativeMarketOrderBookDelta[];\n source: NativeMarketOrderBookDeltasSource;\n}\n\nexport interface ApiStreamTopicRetention {\n kind: \"live_broadcast\" | string;\n replay?: boolean;\n historyApis?: string[];\n [key: string]: unknown;\n}\n\nexport interface ApiStreamTopicMetadata<TTopic extends string = ApiStreamTopic | string> {\n topic: TTopic;\n endpoint: string;\n description?: string;\n shape?: string;\n source?: string;\n queryFilters?: string[];\n retention?: ApiStreamTopicRetention;\n}\n\nexport interface ApiStreamsIndexResponse {\n schemaVersion: number;\n chainId: number;\n transport: \"sse\" | string;\n keepAliveSeconds: number;\n perConnectionMailbox?: number;\n topics: ApiStreamTopicMetadata[];\n}\n\nexport function isNativeMarketOrderBookStreamPayload(\n value: unknown,\n): value is NativeMarketOrderBookStreamPayload {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) return false;\n const row = value as Record<string, unknown>;\n return (\n isString(row[\"marketId\"]) &&\n isString(row[\"orderId\"]) &&\n isOptionalString(row[\"relatedOrderId\"]) &&\n isString(row[\"eventName\"]) &&\n isNativeMarketOrderBookStreamAction(row[\"action\"]) &&\n isOptionalString(row[\"side\"]) &&\n isOptionalString(row[\"price\"]) &&\n isOptionalString(row[\"quantity\"]) &&\n isOptionalString(row[\"remaining\"]) &&\n isOptionalString(row[\"status\"]) &&\n isNonNegativeSafeInteger(row[\"blockHeight\"]) &&\n isNonNegativeSafeInteger(row[\"txIndex\"]) &&\n isNonNegativeSafeInteger(row[\"logIndex\"])\n );\n}\n\nexport function assertNativeMarketOrderBookStreamPayload(\n value: unknown,\n): asserts value is NativeMarketOrderBookStreamPayload {\n if (!isNativeMarketOrderBookStreamPayload(value)) {\n throw SdkError.malformed(\"nativeMarketOrderBook stream payload is malformed\");\n }\n}\n\nexport function decodeNativeMarketOrderBookDeltasResponse(\n value: unknown,\n): NativeMarketOrderBookDeltasResponse {\n const row = expectObject(value, \"nativeMarketOrderBook delta replay response\");\n const replay = row[\"replay\"];\n const streamTopic = row[\"streamTopic\"];\n if (replay !== true || streamTopic !== NATIVE_MARKET_ORDER_BOOK_STREAM_TOPIC) {\n throw SdkError.malformed(\n \"nativeMarketOrderBook delta replay response has invalid replay metadata\",\n );\n }\n const rawDeltas = row[\"deltas\"];\n if (!Array.isArray(rawDeltas)) {\n throw SdkError.malformed(\"nativeMarketOrderBook delta replay response deltas must be an array\");\n }\n const deltas = rawDeltas.map((delta, index) => {\n if (!isNativeMarketOrderBookStreamPayload(delta)) {\n throw SdkError.malformed(\n `nativeMarketOrderBook delta replay response deltas[${index}] is malformed`,\n );\n }\n return delta;\n });\n return {\n schemaVersion: parseSafeInteger(row[\"schemaVersion\"], \"schemaVersion\"),\n fromBlock: parseSafeInteger(row[\"fromBlock\"], \"fromBlock\"),\n toBlock: parseSafeInteger(row[\"toBlock\"], \"toBlock\"),\n limit: parseNullableSafeInteger(row[\"limit\"], \"limit\"),\n cursor: parseNullableString(row[\"cursor\"], \"cursor\"),\n nextCursor: parseNullableString(row[\"nextCursor\"], \"nextCursor\"),\n filters: expectObject(\n row[\"filters\"],\n \"nativeMarketOrderBook delta replay response filters\",\n ) as unknown as NativeMarketOrderBookDeltasResponseFilters,\n replay,\n streamTopic,\n deltas,\n source: expectObject(\n row[\"source\"],\n \"nativeMarketOrderBook delta replay response source\",\n ) as unknown as NativeMarketOrderBookDeltasSource,\n };\n}\n\nfunction isNativeMarketOrderBookStreamAction(\n value: unknown,\n): value is NativeMarketOrderBookStreamAction {\n return value === \"upsert\" || value === \"remove\";\n}\n\nfunction isString(value: unknown): value is string {\n return typeof value === \"string\";\n}\n\nfunction isOptionalString(value: unknown): value is string | undefined {\n return value === undefined || typeof value === \"string\";\n}\n\nfunction isNonNegativeSafeInteger(value: unknown): value is number {\n return typeof value === \"number\" && Number.isSafeInteger(value) && value >= 0;\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 parseSafeInteger(value: unknown, label: string): number {\n if (!isNonNegativeSafeInteger(value)) {\n throw SdkError.malformed(`nativeMarketOrderBook delta replay response ${label} is malformed`);\n }\n return value;\n}\n\nfunction parseNullableSafeInteger(value: unknown, label: string): number | null {\n if (value === null || value === undefined) return null;\n return parseSafeInteger(value, label);\n}\n\nfunction parseNullableString(value: unknown, label: string): string | null {\n if (value === null || value === undefined) return null;\n if (typeof value !== \"string\") {\n throw SdkError.malformed(`nativeMarketOrderBook delta replay response ${label} is malformed`);\n }\n return value;\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 { BridgeRoutesRequest, BridgeRoutesResponse } from \"./bridge.js\";\nimport {\n decodeNativeAgentStateResponse,\n nativeAgentStateFilterParams,\n decodeNativeReceiptResponse,\n decodeTxFeedResponse,\n nativeMarketStateFilterParams,\n} from \"./client.js\";\nimport {\n nativeEventsFromHistory,\n nativeEventsFromReceipt,\n nativeMarketEventsFromHistory,\n nativeMarketEventsFromReceipt,\n} from \"./native-events.js\";\nimport type { ClobMarketResponse } from \"./bindings/ClobMarketResponse.js\";\nimport type { MrcAccountResponse } from \"./bindings/MrcAccountResponse.js\";\nimport type { MrcHoldersResponse } from \"./bindings/MrcHoldersResponse.js\";\nimport type { MrcMetadataResponse } from \"./bindings/MrcMetadataResponse.js\";\nimport type { PendingRewardsResponse } from \"./bindings/PendingRewardsResponse.js\";\nimport type { RedemptionQueueResponse } from \"./bindings/RedemptionQueueResponse.js\";\nimport type { BlockSelector } from \"./types.js\";\nimport { encodeBlockSelector } from \"./types.js\";\nimport { decodeNativeMarketOrderBookDeltasResponse } from \"./streams.js\";\nimport type {\n ApiStreamsIndexResponse,\n NativeMarketOrderBookDeltasRequest,\n NativeMarketOrderBookDeltasResponse,\n} from \"./streams.js\";\nimport type {\n NativeDecodedEvent,\n NativeEventFilter,\n TypedNativeReceiptEvent,\n} from \"./native-events.js\";\nimport {\n requireTypedAddress,\n type AddressKind,\n} from \"./address.js\";\nimport type {\n AddressFlowResponse,\n AddressProfileResponse,\n ChainStatsResponse,\n ClobMarketsResponse,\n ClobOhlcResponse,\n ClobOrderBookResponse,\n ClobTradesResponse,\n NativeReceiptFee,\n NativeReceiptResponse,\n NativeEventsFilter,\n NativeEventsResponse,\n NativeAgentStateFilter,\n NativeAgentStateResponse,\n NativeMarketStateFilter,\n NativeMarketStateResponse,\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 executionUnitsUsed: number;\n executionUnitLimit: number;\n basePricePerCycleLythoshi: 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 valueLythoshi: string;\n maxExecutionFeeLythoshi: string;\n priorityTipLythoshi: string;\n executionUnitLimit: number;\n fee: NativeReceiptFee;\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 executionUnitsUsed: 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 type ApiTransactionNativeReceiptData<TDecoded = unknown> =\n NativeReceiptResponse<TDecoded>;\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 streams(): Promise<ApiStreamsIndexResponse> {\n return this.get(\"/streams\");\n }\n\n async transactions(limit = 50, cursor?: string | null): Promise<ApiEnvelope<TxFeedResponse>> {\n const response = await this.get<ApiEnvelope<unknown>>(\"/transactions\", { limit, cursor });\n return {\n ...response,\n data: decodeTxFeedResponse(response.data),\n };\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 transactionNativeReceipt<TDecoded = unknown>(\n hash: string,\n ): Promise<ApiEnvelope<ApiTransactionNativeReceiptData<TDecoded>>> {\n const response = await this.get<ApiEnvelope<unknown>>(\n `/transactions/${encodePathSegment(hash)}/native-receipt`,\n );\n return {\n ...response,\n data: decodeNativeReceiptResponse<TDecoded>(response.data),\n };\n }\n\n /**\n * Typed native event rows from `/transactions/{hash}/native-receipt`.\n *\n * This helper consumes the existing native receipt API route and returns\n * its envelope metadata with `data` replaced by the filtered event rows.\n */\n async transactionNativeReceiptEvents<\n TDecoded extends NativeDecodedEvent = NativeDecodedEvent,\n >(\n hash: string,\n filter: NativeEventFilter = {},\n ): Promise<ApiEnvelope<Array<TypedNativeReceiptEvent<TDecoded>>>> {\n const receipt = await this.transactionNativeReceipt(hash);\n return {\n ...receipt,\n data: nativeEventsFromReceipt<TDecoded>(receipt.data, filter),\n };\n }\n\n async transactionNativeReceiptMarketEvents<\n TDecoded extends NativeDecodedEvent = NativeDecodedEvent,\n >(\n hash: string,\n filter: NativeEventFilter = {},\n ): Promise<ApiEnvelope<Array<TypedNativeReceiptEvent<TDecoded>>>> {\n const receipt = await this.transactionNativeReceipt(hash);\n return {\n ...receipt,\n data: nativeMarketEventsFromReceipt<TDecoded>(receipt.data, filter),\n };\n }\n\n async nativeEvents<TDecoded = unknown>(\n filter: NativeEventsFilter,\n ): Promise<ApiEnvelope<NativeEventsResponse<TDecoded>>> {\n return this.get(\"/native-events\", nativeEventsFilterQuery(filter));\n }\n\n async nativeEventsTyped<\n TDecoded extends NativeDecodedEvent = NativeDecodedEvent,\n >(filter: NativeEventsFilter): Promise<ApiEnvelope<NativeEventsResponse<TDecoded>>> {\n const response = await this.nativeEvents(filter);\n return {\n ...response,\n data: nativeEventsFromHistory<TDecoded>(response.data),\n };\n }\n\n async nativeMarketEvents<TDecoded = unknown>(\n filter: NativeEventsFilter,\n ): Promise<ApiEnvelope<NativeEventsResponse<TDecoded>>> {\n return this.nativeEvents<TDecoded>({\n ...filter,\n family: \"market\",\n });\n }\n\n async nativeMarketEventsTyped<\n TDecoded extends NativeDecodedEvent = NativeDecodedEvent,\n >(filter: NativeEventsFilter): Promise<ApiEnvelope<NativeEventsResponse<TDecoded>>> {\n const response = await this.nativeEvents({\n ...filter,\n family: \"market\",\n });\n return {\n ...response,\n data: nativeMarketEventsFromHistory<TDecoded>(response.data),\n };\n }\n\n async nativeAgentState(\n filter: NativeAgentStateFilter = {},\n ): Promise<ApiEnvelope<NativeAgentStateResponse>> {\n const response = await this.get<ApiEnvelope<unknown>>(\n \"/native-agent-state\",\n nativeAgentStateFilterParams(filter),\n );\n return {\n ...response,\n data: decodeNativeAgentStateResponse(response.data),\n };\n }\n\n async nativeMarketState(\n filter: NativeMarketStateFilter = {},\n ): Promise<ApiEnvelope<NativeMarketStateResponse>> {\n return this.get(\"/native-market-state\", nativeMarketStateFilterParams(filter));\n }\n\n async nativeMarketOrderBookDeltas(\n filter: NativeMarketOrderBookDeltasRequest,\n ): Promise<ApiEnvelope<NativeMarketOrderBookDeltasResponse>> {\n const response = await this.get<ApiEnvelope<unknown>>(\n \"/native-market-orderbook-deltas\",\n nativeMarketOrderBookDeltasQuery(filter),\n );\n return {\n ...response,\n data: decodeNativeMarketOrderBookDeltasResponse(response.data),\n };\n }\n\n async addressProfile(address: string): Promise<ApiEnvelope<AddressProfileResponse>> {\n const userAddress = sdkTypedAddress(address, \"user\", \"address\");\n return this.get(`/addresses/${encodePathSegment(userAddress)}/profile`);\n }\n\n async addressFlow(address: string, limit = 250): Promise<ApiEnvelope<AddressFlowResponse>> {\n const userAddress = sdkTypedAddress(address, \"user\", \"address\");\n return this.get(`/addresses/${encodePathSegment(userAddress)}/flow`, { limit });\n }\n\n async addressActivity(\n address: string,\n limit = 50,\n cursor?: string | null,\n ): Promise<ApiEnvelope<ApiAddressActivityData>> {\n const userAddress = sdkTypedAddress(address, \"user\", \"address\");\n return this.get(`/addresses/${encodePathSegment(userAddress)}/activity`, {\n limit,\n cursor,\n });\n }\n\n async addressActivityKind(address: string): Promise<ApiEnvelope<ApiAddressActivityKindData>> {\n const userAddress = sdkTypedAddress(address, \"user\", \"address\");\n return this.get(`/addresses/${encodePathSegment(userAddress)}/activity-kind`);\n }\n\n async addressPendingRewards(\n address: string,\n block?: BlockSelector | null,\n ): Promise<ApiEnvelope<PendingRewardsResponse>> {\n const userAddress = sdkTypedAddress(address, \"user\", \"address\");\n return this.get(`/addresses/${encodePathSegment(userAddress)}/pending-rewards`, {\n block: block == null ? undefined : encodeBlockSelector(block),\n });\n }\n\n async addressRedemptionQueue(\n address: string,\n block?: BlockSelector | null,\n ): Promise<ApiEnvelope<RedemptionQueueResponse>> {\n const userAddress = sdkTypedAddress(address, \"user\", \"address\");\n return this.get(`/addresses/${encodePathSegment(userAddress)}/redemption-queue`, {\n block: block == null ? undefined : encodeBlockSelector(block),\n });\n }\n\n async assetMrcMetadata(\n assetId: string,\n mrcTokenId?: string | null,\n ): Promise<ApiEnvelope<MrcMetadataResponse>> {\n return this.get(`/assets/${encodePathSegment(assetId)}/metadata`, {\n mrcTokenId: mrcTokenId ?? undefined,\n });\n }\n\n async mrcAccount(\n account: string,\n limit?: number | null,\n ): Promise<ApiEnvelope<MrcAccountResponse>> {\n const smartAccount = sdkTypedAddress(account, \"smartAccount\", \"account\");\n return this.get(`/mrc/accounts/${encodePathSegment(smartAccount)}`, {\n limit: limit ?? undefined,\n });\n }\n\n async mrcHolders(\n standard: string,\n assetId: string,\n tokenId: string,\n limit?: number | null,\n ): Promise<ApiEnvelope<MrcHoldersResponse>> {\n return this.get(\n `/mrc/${encodePathSegment(standard)}/${encodePathSegment(assetId)}/${encodePathSegment(\n tokenId,\n )}/holders`,\n { limit: limit ?? undefined },\n );\n }\n\n /**\n * Asset-scoped `/api/v1/mrc/{standard}/{assetId}/holders`.\n *\n * This is the REST form used by MRC-4626 vault share balances.\n */\n async mrcAssetHolders(\n standard: string,\n assetId: string,\n limit?: number | null,\n ): Promise<ApiEnvelope<MrcHoldersResponse>> {\n return this.get(\n `/mrc/${encodePathSegment(standard)}/${encodePathSegment(assetId)}/holders`,\n { limit: limit ?? undefined },\n );\n }\n\n /** `/api/v1/mrc/mrc4626/{vaultId}/holders`. */\n async mrc4626Holders(\n vaultId: string,\n limit?: number | null,\n ): Promise<ApiEnvelope<MrcHoldersResponse>> {\n return this.mrcAssetHolders(\"mrc4626\", vaultId, limit);\n }\n\n /**\n * `/api/v1/bridge/routes`.\n *\n * The forthcoming route is read-only `GET`, so the typed request is encoded\n * as a single JSON query value named `request`.\n */\n async bridgeRoutes(\n request: BridgeRoutesRequest,\n ): Promise<ApiEnvelope<BridgeRoutesResponse>> {\n return this.get(\"/bridge/routes\", {\n request: JSON.stringify(request),\n });\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 nativeEventsFilterQuery(filter: NativeEventsFilter): Record<string, ApiQueryValue> {\n return {\n fromBlock: filter.fromBlock,\n toBlock: filter.toBlock,\n limit: filter.limit,\n txIndex: filter.txIndex,\n logIndex: filter.logIndex,\n address: filter.address,\n eventTopic: filter.eventTopic,\n family: filter.family,\n eventName: filter.eventName,\n primaryId: filter.primaryId,\n relatedId: filter.relatedId,\n tokenId: filter.tokenId,\n account: filter.account,\n counterparty: filter.counterparty,\n };\n}\n\nfunction nativeMarketOrderBookDeltasQuery(\n filter: NativeMarketOrderBookDeltasRequest,\n): Record<string, ApiQueryValue> {\n return {\n fromBlock: filter.fromBlock,\n toBlock: filter.toBlock,\n limit: filter.limit,\n cursor: filter.cursor,\n txIndex: filter.txIndex,\n logIndex: filter.logIndex,\n address: filter.address,\n eventTopic: filter.eventTopic,\n eventName: filter.eventName,\n marketId: filter.marketId,\n listingId: filter.listingId,\n primaryId: filter.primaryId,\n relatedId: filter.relatedId,\n tokenId: filter.tokenId,\n account: filter.account,\n counterparty: filter.counterparty,\n };\n}\n\nfunction sdkTypedAddress(address: string, kind: AddressKind, label: string): string {\n try {\n return requireTypedAddress(address, kind, label);\n } catch (err) {\n const message = err instanceof Error ? err.message : String(err);\n throw SdkError.malformed(message);\n }\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 * Third-party bridge route disclosure helpers.\n *\n * These helpers assess caller-supplied route disclosures. They do not call a\n * node route and do not claim any bridge integration is live.\n */\n\nimport { PRECOMPILE_ADDRESSES } from \"./consts.js\";\n\nexport const BRIDGE_SELECTORS = {\n lockBridgeConfig: \"0x8956feb3\",\n setBridgeResumeCooldown: \"0x1a3a0672\",\n setBridgeRouteFinality: \"0x8a061e99\",\n} as const;\n\nexport const BRIDGE_REVERT_TAGS = {\n bridgeAdminLocked: \"0xf807\",\n bridgeResumeCooldownActive: \"0xf808\",\n bridgeCooldownZero: \"0xfd08\",\n bridgeFinalityZero: \"0xfd09\",\n} as const;\n\nexport const BRIDGE_QUOTE_API_BLOCKED_REASON =\n \"bridge quote requires a mono-core live quote API/runtime primitive\";\n\nexport const BRIDGE_SUBMIT_API_BLOCKED_REASON =\n \"bridge submit requires a mono-core live submit API/runtime primitive\";\n\nexport const V1_BRIDGE_ALLOWED_FEE_TOKEN = \"LINK\";\nexport const V1_BRIDGE_ALLOWED_PROTOCOL = \"chainlink-ccip\";\n\nexport type BridgeBytesInput = string | Uint8Array | readonly number[];\n\nexport type BridgeAdminControl = \"none\" | \"consensusOnly\" | \"operatorKey\" | \"unknown\";\nexport type BridgeCircuitBreakerState = \"armed\" | \"paused\" | \"disabled\" | \"unknown\";\nexport type BridgeRiskTier = \"low\" | \"medium\" | \"high\" | \"blocked\";\n\nexport class BridgePrecompileError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"BridgePrecompileError\";\n }\n}\n\nexport class BridgeRouteCatalogueError extends Error {\n readonly blockedReasons: string[];\n\n constructor(blockedReasons: readonly string[]) {\n super(`invalid bridge route catalogue: ${blockedReasons.join(\"; \")}`);\n this.name = \"BridgeRouteCatalogueError\";\n this.blockedReasons = [...blockedReasons];\n }\n}\n\nexport function bridgeAddressHex(): string {\n return PRECOMPILE_ADDRESSES.BRIDGE.toLowerCase();\n}\n\nexport function encodeLockBridgeConfigCalldata(bridgeId: BridgeBytesInput): string {\n return bytesToHex(\n concatBytes(\n hexToBytes(BRIDGE_SELECTORS.lockBridgeConfig),\n expectLength(toBytes(bridgeId), 32, \"bridgeId\"),\n ),\n );\n}\n\nexport function encodeSetBridgeResumeCooldownCalldata(\n bridgeId: BridgeBytesInput,\n cooldownBlocks: bigint | number | string,\n): string {\n return bytesToHex(\n concatBytes(\n hexToBytes(BRIDGE_SELECTORS.setBridgeResumeCooldown),\n expectLength(toBytes(bridgeId), 32, \"bridgeId\"),\n uint64Word(cooldownBlocks, \"cooldownBlocks\"),\n ),\n );\n}\n\nexport function encodeSetBridgeRouteFinalityCalldata(\n bridgeId: BridgeBytesInput,\n finalityBlocks: bigint | number | string,\n): string {\n return bytesToHex(\n concatBytes(\n hexToBytes(BRIDGE_SELECTORS.setBridgeRouteFinality),\n expectLength(toBytes(bridgeId), 32, \"bridgeId\"),\n uint64Word(finalityBlocks, \"finalityBlocks\"),\n ),\n );\n}\n\nexport function isBridgeAdminLockedRevert(data: BridgeBytesInput): boolean {\n return bytesToHex(toBytes(data)).toLowerCase() === BRIDGE_REVERT_TAGS.bridgeAdminLocked;\n}\n\nexport function isBridgeResumeCooldownActiveRevert(data: BridgeBytesInput): boolean {\n return bytesToHex(toBytes(data)).toLowerCase() === BRIDGE_REVERT_TAGS.bridgeResumeCooldownActive;\n}\n\nexport function isBridgeCooldownZeroRevert(data: BridgeBytesInput): boolean {\n return bytesToHex(toBytes(data)).toLowerCase() === BRIDGE_REVERT_TAGS.bridgeCooldownZero;\n}\n\nexport function isBridgeFinalityZeroRevert(data: BridgeBytesInput): boolean {\n return bytesToHex(toBytes(data)).toLowerCase() === BRIDGE_REVERT_TAGS.bridgeFinalityZero;\n}\n\nexport interface BridgeVerifierDisclosure {\n model: string;\n participantCount: number;\n threshold: number;\n}\n\nexport interface BridgeRouteDisclosure {\n routeId: string;\n bridge: string;\n protocol?: string | null;\n asset: string;\n feeToken: string;\n sourceChain: string;\n destinationChain: string;\n verifier: BridgeVerifierDisclosure;\n drainCapAtomic: string;\n finalityBlocks: number;\n cooldownSeconds: number;\n adminControl: BridgeAdminControl;\n circuitBreaker: BridgeCircuitBreakerState;\n insuranceAtomic: string;\n lastIncidentDate?: string | null;\n}\n\nexport interface BridgeRouteCatalogueRoute {\n tokenId: string;\n routeId: string;\n bridgeId: string;\n wrappedAsset: string;\n bridge: string;\n protocol?: string | null;\n asset: string;\n feeToken: string;\n sourceChain: string;\n destinationChain: string;\n verifier: BridgeVerifierDisclosure;\n drainCapAtomic: string;\n finalityBlocks: number;\n cooldownSeconds: number;\n adminControl: BridgeAdminControl;\n circuitBreaker: BridgeCircuitBreakerState;\n insuranceAtomic: string;\n updatedAtBlock: number;\n lastIncidentDate?: string | null;\n}\n\nexport interface BridgeRouteCatalogue {\n routes: BridgeRouteCatalogueRoute[];\n}\n\nexport type BridgeRouteCataloguePayload =\n | BridgeRouteCatalogue\n | readonly BridgeRouteCatalogueRoute[];\n\nexport interface BridgeRouteCatalogueValidation {\n accepted: boolean;\n routeCount: number;\n blockedReasons: string[];\n}\n\nexport interface BridgeRouteCatalogueJsonOptions {\n /**\n * Export as `{ routes: [...] }` by default. Set false for mono-core's raw-array import form.\n */\n envelope?: boolean;\n /**\n * JSON.stringify spacing. Defaults to two spaces to match CLI fixture style.\n */\n space?: number | string;\n}\n\nexport interface BridgeRouteAssessment {\n routeId: string;\n accepted: boolean;\n score: number;\n riskTier: BridgeRiskTier;\n blockedReasons: string[];\n warnings: string[];\n}\n\nexport interface RankedBridgeRoute {\n route: BridgeRouteDisclosure;\n assessment: BridgeRouteAssessment;\n}\n\nexport interface BridgeTransferIntent {\n asset: string;\n amountAtomic: string;\n sourceChain: string;\n destinationChain: string;\n recipient: string;\n sender?: string | null;\n allowedRouteIds?: string[] | null;\n minimumScore?: number | null;\n maxFinalityBlocks?: number | null;\n maxCooldownSeconds?: number | null;\n}\n\nexport interface BridgeRouteCandidate {\n route: BridgeRouteDisclosure;\n assessment: BridgeRouteAssessment;\n eligible: boolean;\n score: number;\n blockedReasons: string[];\n warnings: string[];\n}\n\nexport interface BridgeTransferRequest {\n intent: BridgeTransferIntent;\n route: BridgeRouteDisclosure;\n assessment: BridgeRouteAssessment;\n}\n\nexport interface BridgeRouteSelection {\n selected: BridgeTransferRequest | null;\n candidates: BridgeRouteCandidate[];\n blockedReasons: string[];\n}\n\n/**\n * SDK-only readiness report for the quote/submit boundary.\n *\n * The SDK can verify route-selection readiness from supplied disclosures, but\n * live quote and submit remain blocked until mono-core exposes those\n * API/runtime primitives.\n */\nexport interface BridgeQuoteSubmitReadiness {\n selection: BridgeRouteSelection;\n routeSelectionReady: boolean;\n quoteReady: boolean;\n submitReady: boolean;\n blockedReasons: string[];\n warnings: string[];\n}\n\nexport interface BridgeRoutesRequest {\n address?: string | null;\n intent?: BridgeTransferIntent | null;\n routeDisclosures?: BridgeRouteDisclosure[] | null;\n limit?: number | null;\n}\n\nexport interface BridgeRoutesSource {\n address?: string | null;\n routeCount: number;\n globalRouteIndexAvailable: boolean;\n routeDisclosureSource: string;\n}\n\nexport interface BridgeRoutesResponse {\n selection: BridgeRouteSelection;\n routeSelectionReady: boolean;\n quoteReady: boolean;\n submitReady: boolean;\n blockedReasons: string[];\n warnings: string[];\n routes?: BridgeRouteDisclosure[] | null;\n bridgeRouteDisclosures?: BridgeRouteDisclosure[] | null;\n source?: BridgeRoutesSource | null;\n}\n\nexport function assessBridgeRoute(route: BridgeRouteDisclosure): BridgeRouteAssessment {\n const blockedReasons: string[] = [];\n const warnings: string[] = [];\n const feeToken = String(route.feeToken ?? \"\").trim();\n\n if (route.routeId.trim() === \"\") blockedReasons.push(\"route id missing\");\n if (route.bridge.trim() === \"\") blockedReasons.push(\"bridge name missing\");\n if (!isChainlinkCcipRoute(route.protocol, route.bridge, route.verifier.model)) {\n blockedReasons.push(\"bridge protocol must be Chainlink CCIP\");\n }\n if (route.asset.trim() === \"\") blockedReasons.push(\"asset disclosure missing\");\n if (feeToken === \"\") {\n blockedReasons.push(\"route fee token missing\");\n } else if (feeToken.toUpperCase() !== V1_BRIDGE_ALLOWED_FEE_TOKEN) {\n blockedReasons.push(\"CCIP route fee token must be LINK\");\n }\n if (route.verifier.model.trim() === \"\") blockedReasons.push(\"verifier model missing\");\n if (route.verifier.threshold < 2 || route.verifier.participantCount < 2) {\n blockedReasons.push(\"verifier set must not be 1-of-1\");\n }\n if (route.verifier.threshold > route.verifier.participantCount) {\n blockedReasons.push(\"verifier threshold exceeds participant count\");\n }\n if (!decimalStringIsPositive(route.drainCapAtomic)) {\n blockedReasons.push(\"per-asset drain cap missing or zero\");\n }\n if (route.finalityBlocks === 0) blockedReasons.push(\"route finality delay missing\");\n if (route.cooldownSeconds === 0) blockedReasons.push(\"route cooldown missing\");\n if (route.adminControl !== \"none\" && route.adminControl !== \"consensusOnly\") {\n blockedReasons.push(\"Mono-side admin control is not consensus-only\");\n }\n if (route.circuitBreaker === \"paused\") {\n blockedReasons.push(\"route circuit breaker is paused\");\n } else if (route.circuitBreaker === \"disabled\" || route.circuitBreaker === \"unknown\") {\n blockedReasons.push(\"route circuit breaker missing\");\n }\n if (!decimalStringIsPositive(route.insuranceAtomic)) {\n blockedReasons.push(\"slashable insurance pool missing or zero\");\n }\n if (route.lastIncidentDate != null) {\n warnings.push(\"route reports a prior bridge incident\");\n }\n\n if (blockedReasons.length > 0) {\n return {\n routeId: route.routeId,\n accepted: false,\n score: 0,\n riskTier: \"blocked\",\n blockedReasons,\n warnings,\n };\n }\n\n let score = 100;\n if (route.verifier.threshold * 3 <= route.verifier.participantCount) {\n score -= 10;\n warnings.push(\"verifier threshold is below one-third-plus quorum\");\n }\n if (route.cooldownSeconds < 3_600) {\n score -= 10;\n warnings.push(\"cooldown is under one hour\");\n }\n if (route.finalityBlocks < 2) {\n score -= 5;\n warnings.push(\"finality delay is under two blocks\");\n }\n\n return {\n routeId: route.routeId,\n accepted: true,\n score,\n riskTier: score >= 90 ? \"low\" : score >= 75 ? \"medium\" : \"high\",\n blockedReasons,\n warnings,\n };\n}\n\nexport function rankBridgeRoutes(routes: readonly BridgeRouteDisclosure[]): RankedBridgeRoute[] {\n return routes\n .map((route) => ({ route, assessment: assessBridgeRoute(route) }))\n .sort((left, right) => {\n if (left.assessment.accepted !== right.assessment.accepted) {\n return left.assessment.accepted ? -1 : 1;\n }\n if (left.assessment.score !== right.assessment.score) {\n return right.assessment.score - left.assessment.score;\n }\n if (left.route.cooldownSeconds !== right.route.cooldownSeconds) {\n return left.route.cooldownSeconds - right.route.cooldownSeconds;\n }\n if (left.route.finalityBlocks !== right.route.finalityBlocks) {\n return left.route.finalityBlocks - right.route.finalityBlocks;\n }\n return left.assessment.routeId.localeCompare(right.assessment.routeId);\n });\n}\n\nexport function bridgeTransferCandidates(\n intent: BridgeTransferIntent,\n routes: readonly BridgeRouteDisclosure[],\n): BridgeRouteCandidate[] {\n const intentReasons = validateBridgeTransferIntent(intent);\n return routes\n .map((route) => bridgeRouteCandidate(intent, intentReasons, route))\n .sort(compareBridgeCandidates);\n}\n\nexport function selectBridgeTransferRoute(\n intent: BridgeTransferIntent,\n routes: readonly BridgeRouteDisclosure[],\n): BridgeRouteSelection {\n const blockedReasons = validateBridgeTransferIntent(intent);\n const candidates = bridgeTransferCandidates(intent, routes);\n\n if (routes.length === 0) {\n blockedReasons.push(\"no route disclosures supplied\");\n }\n\n const selectedCandidate =\n blockedReasons.length === 0 ? candidates.find((candidate) => candidate.eligible) : undefined;\n const selected =\n selectedCandidate == null\n ? null\n : {\n intent,\n route: selectedCandidate.route,\n assessment: selectedCandidate.assessment,\n };\n\n if (selected == null && blockedReasons.length === 0) {\n blockedReasons.push(\"no eligible bridge route satisfies the transfer intent and route floor\");\n }\n\n return { selected, candidates, blockedReasons };\n}\n\nexport function bridgeQuoteSubmitReadiness(\n intent: BridgeTransferIntent,\n routes: readonly BridgeRouteDisclosure[],\n): BridgeQuoteSubmitReadiness {\n const selection = selectBridgeTransferRoute(intent, routes);\n const routeSelectionReady = selection.selected != null;\n const blockedReasons = [...selection.blockedReasons];\n\n if (routeSelectionReady) {\n blockedReasons.push(BRIDGE_QUOTE_API_BLOCKED_REASON, BRIDGE_SUBMIT_API_BLOCKED_REASON);\n }\n\n return {\n selection,\n routeSelectionReady,\n quoteReady: false,\n submitReady: false,\n blockedReasons,\n warnings: selection.selected == null ? [] : [...selection.selected.assessment.warnings],\n };\n}\n\nexport function bridgeRoutesReadiness(request: BridgeRoutesRequest): BridgeRoutesResponse {\n const routeDisclosures = request.routeDisclosures ?? [];\n const source: BridgeRoutesSource = {\n address: request.address,\n routeCount: routeDisclosures.length,\n globalRouteIndexAvailable: false,\n routeDisclosureSource: \"request.routeDisclosures\",\n };\n\n if (request.intent == null) {\n const blockedReasons = [\"bridge route selection requires transfer intent\"];\n if (routeDisclosures.length === 0) {\n blockedReasons.push(\"no route disclosures supplied\");\n }\n return {\n selection: {\n selected: null,\n candidates: [],\n blockedReasons: [...blockedReasons],\n },\n routeSelectionReady: false,\n quoteReady: false,\n submitReady: false,\n blockedReasons,\n warnings: [],\n routes: [...routeDisclosures],\n bridgeRouteDisclosures: [...routeDisclosures],\n source,\n };\n }\n\n const readiness = bridgeQuoteSubmitReadiness(request.intent, routeDisclosures);\n return {\n ...readiness,\n quoteReady: false,\n submitReady: false,\n routes: [...routeDisclosures],\n bridgeRouteDisclosures: [...routeDisclosures],\n source,\n };\n}\n\nexport function buildBridgeRouteCatalogue(\n routes: readonly BridgeRouteCatalogueRoute[],\n): BridgeRouteCatalogue {\n return { routes: routes.map(cloneBridgeRouteCatalogueRoute) };\n}\n\nexport function parseBridgeRouteCatalogueJson(json: string): BridgeRouteCatalogue {\n const decoded = JSON.parse(json) as unknown;\n return normalizeBridgeRouteCatalogue(decoded);\n}\n\nexport function normalizeBridgeRouteCatalogue(payload: unknown): BridgeRouteCatalogue {\n const validation = validateBridgeRouteCatalogue(payload);\n if (!validation.accepted) {\n throw new BridgeRouteCatalogueError(validation.blockedReasons);\n }\n const routes = routeArrayFromCataloguePayload(payload);\n if (routes == null) {\n throw new BridgeRouteCatalogueError([\"route catalogue must be an array or { routes: [...] }\"]);\n }\n return { routes: routes.map((route) => coerceBridgeRouteCatalogueRoute(route)) };\n}\n\nexport function validateBridgeRouteCatalogue(payload: unknown): BridgeRouteCatalogueValidation {\n const routes = routeArrayFromCataloguePayload(payload);\n const blockedReasons: string[] = [];\n\n if (routes == null) {\n return {\n accepted: false,\n routeCount: 0,\n blockedReasons: [\"route catalogue must be an array or { routes: [...] }\"],\n };\n }\n if (routes.length === 0) {\n blockedReasons.push(\"bridge route import must contain at least one route\");\n }\n\n const seen = new Set<string>();\n routes.forEach((route, idx) =>\n validateBridgeRouteCatalogueRoute(idx, route, seen, blockedReasons),\n );\n\n return {\n accepted: blockedReasons.length === 0,\n routeCount: routes.length,\n blockedReasons,\n };\n}\n\nexport function exportBridgeRouteCatalogueJson(\n payload: BridgeRouteCataloguePayload,\n options: BridgeRouteCatalogueJsonOptions = {},\n): string {\n const catalogue = normalizeBridgeRouteCatalogue(payload);\n const value = options.envelope === false ? catalogue.routes : catalogue;\n return JSON.stringify(value, null, options.space ?? 2);\n}\n\ntype JsonRecord = Record<string, unknown>;\n\nconst MAX_U256 = (1n << 256n) - 1n;\n\nfunction routeArrayFromCataloguePayload(payload: unknown): readonly unknown[] | null {\n if (Array.isArray(payload)) return payload;\n if (isRecord(payload) && Array.isArray(payload.routes)) return payload.routes;\n return null;\n}\n\nfunction validateBridgeRouteCatalogueRoute(\n idx: number,\n value: unknown,\n seen: Set<string>,\n blockedReasons: string[],\n): void {\n const prefix = `routes[${idx}]`;\n if (!isRecord(value)) {\n blockedReasons.push(`${prefix} must be an object`);\n return;\n }\n\n const tokenId = validateHexBytes(\n `${prefix}.tokenId`,\n field(value, \"tokenId\", \"token_id\"),\n 32,\n blockedReasons,\n );\n const routeId = validateTextField(\n `${prefix}.routeId`,\n field(value, \"routeId\", \"route_id\"),\n 96,\n blockedReasons,\n );\n if (tokenId != null && routeId != null) {\n const key = `${tokenId}:${routeId}`;\n if (seen.has(key)) {\n blockedReasons.push(`${prefix}.routeId duplicate (tokenId, routeId) in bridge route import`);\n } else {\n seen.add(key);\n }\n }\n\n validateHexBytes(\n `${prefix}.bridgeId`,\n field(value, \"bridgeId\", \"bridge_id\"),\n 32,\n blockedReasons,\n );\n validateHexBytes(\n `${prefix}.wrappedAsset`,\n field(value, \"wrappedAsset\", \"wrapped_asset\"),\n 20,\n blockedReasons,\n );\n const bridge = validateTextField(`${prefix}.bridge`, value.bridge, 64, blockedReasons);\n const protocol = validateOptionalTextField(\n `${prefix}.protocol`,\n field(value, \"protocol\", \"routeProtocol\", \"route_protocol\"),\n 64,\n blockedReasons,\n );\n validateTextField(`${prefix}.asset`, value.asset, 64, blockedReasons);\n const feeToken = validateTextField(\n `${prefix}.feeToken`,\n field(value, \"feeToken\", \"fee_token\"),\n 32,\n blockedReasons,\n );\n if (feeToken != null && feeToken.toUpperCase() !== V1_BRIDGE_ALLOWED_FEE_TOKEN) {\n blockedReasons.push(`${prefix}.feeToken must be LINK for CCIP routes`);\n }\n validateTextField(\n `${prefix}.sourceChain`,\n field(value, \"sourceChain\", \"source_chain\"),\n 64,\n blockedReasons,\n );\n validateTextField(\n `${prefix}.destinationChain`,\n field(value, \"destinationChain\", \"destination_chain\"),\n 64,\n blockedReasons,\n );\n\n const verifier = value.verifier;\n let verifierModel: string | null = null;\n if (!isRecord(verifier)) {\n blockedReasons.push(`${prefix}.verifier must be an object`);\n } else {\n verifierModel = validateTextField(`${prefix}.verifier.model`, verifier.model, 64, blockedReasons);\n const participantCount = field(verifier, \"participantCount\", \"participant_count\");\n if (!isU16(participantCount) || participantCount === 0) {\n blockedReasons.push(`${prefix}.verifier.participantCount must be non-zero`);\n }\n if (!isU16(verifier.threshold) || verifier.threshold === 0) {\n blockedReasons.push(`${prefix}.verifier.threshold must be in 1..=participantCount`);\n } else if (isU16(participantCount) && verifier.threshold > participantCount) {\n blockedReasons.push(`${prefix}.verifier.threshold must be in 1..=participantCount`);\n }\n }\n if (!isChainlinkCcipRoute(protocol, bridge ?? \"\", verifierModel ?? \"\")) {\n blockedReasons.push(`${prefix}.protocol must be Chainlink CCIP`);\n }\n\n if (!decimalStringIsPositiveU256(field(value, \"drainCapAtomic\", \"drain_cap_atomic\"))) {\n blockedReasons.push(`${prefix}.drainCapAtomic must be a non-zero decimal u256`);\n }\n if (!isSafeIntegerAtLeast(field(value, \"finalityBlocks\", \"finality_blocks\"), 1)) {\n blockedReasons.push(`${prefix}.finalityBlocks must be non-zero`);\n }\n if (!isSafeIntegerAtLeast(field(value, \"cooldownSeconds\", \"cooldown_seconds\"), 1)) {\n blockedReasons.push(`${prefix}.cooldownSeconds must be non-zero`);\n }\n if (parseBridgeAdminControl(field(value, \"adminControl\", \"admin_control\")) == null) {\n blockedReasons.push(\n `${prefix}.adminControl expected none, consensusOnly, operatorKey, or unknown`,\n );\n }\n if (parseBridgeCircuitBreaker(field(value, \"circuitBreaker\", \"circuit_breaker\")) == null) {\n blockedReasons.push(`${prefix}.circuitBreaker expected armed, paused, disabled, or unknown`);\n }\n if (!decimalStringIsPositiveU256(field(value, \"insuranceAtomic\", \"insurance_atomic\"))) {\n blockedReasons.push(`${prefix}.insuranceAtomic must be a non-zero decimal u256`);\n }\n if (!isSafeIntegerAtLeast(field(value, \"updatedAtBlock\", \"updated_at_block\"), 0)) {\n blockedReasons.push(`${prefix}.updatedAtBlock must be a non-negative safe integer`);\n }\n\n const incident = field(value, \"lastIncidentDate\", \"last_incident_date\");\n if (incident !== undefined && incident !== null) {\n if (typeof incident !== \"string\" || !incidentDateIsValid(incident)) {\n blockedReasons.push(`${prefix}.lastIncidentDate must be YYYY-MM-DD`);\n }\n }\n}\n\nfunction coerceBridgeRouteCatalogueRoute(value: unknown): BridgeRouteCatalogueRoute {\n if (!isRecord(value) || !isRecord(value.verifier)) {\n throw new BridgeRouteCatalogueError([\"route catalogue validation did not normalize an object\"]);\n }\n const lastIncidentDate = field(value, \"lastIncidentDate\", \"last_incident_date\");\n const route: BridgeRouteCatalogueRoute = {\n tokenId: stringField(value, \"tokenId\", \"token_id\"),\n routeId: stringField(value, \"routeId\", \"route_id\").trim(),\n bridgeId: stringField(value, \"bridgeId\", \"bridge_id\"),\n wrappedAsset: stringField(value, \"wrappedAsset\", \"wrapped_asset\"),\n bridge: stringField(value, \"bridge\").trim(),\n protocol: optionalStringField(value, \"protocol\", \"routeProtocol\", \"route_protocol\"),\n asset: stringField(value, \"asset\").trim(),\n feeToken: stringField(value, \"feeToken\", \"fee_token\").trim(),\n sourceChain: stringField(value, \"sourceChain\", \"source_chain\").trim(),\n destinationChain: stringField(value, \"destinationChain\", \"destination_chain\").trim(),\n verifier: {\n model: stringField(value.verifier, \"model\").trim(),\n participantCount: numberField(value.verifier, \"participantCount\", \"participant_count\"),\n threshold: numberField(value.verifier, \"threshold\"),\n },\n drainCapAtomic: stringField(value, \"drainCapAtomic\", \"drain_cap_atomic\").trim(),\n finalityBlocks: numberField(value, \"finalityBlocks\", \"finality_blocks\"),\n cooldownSeconds: numberField(value, \"cooldownSeconds\", \"cooldown_seconds\"),\n adminControl: parseBridgeAdminControl(field(value, \"adminControl\", \"admin_control\"))!,\n circuitBreaker: parseBridgeCircuitBreaker(field(value, \"circuitBreaker\", \"circuit_breaker\"))!,\n insuranceAtomic: stringField(value, \"insuranceAtomic\", \"insurance_atomic\").trim(),\n updatedAtBlock: numberField(value, \"updatedAtBlock\", \"updated_at_block\"),\n };\n if (typeof lastIncidentDate === \"string\") {\n route.lastIncidentDate = lastIncidentDate.trim();\n } else if (lastIncidentDate === null) {\n route.lastIncidentDate = null;\n }\n return route;\n}\n\nfunction cloneBridgeRouteCatalogueRoute(route: BridgeRouteCatalogueRoute): BridgeRouteCatalogueRoute {\n return {\n ...route,\n verifier: { ...route.verifier },\n };\n}\n\nfunction isChainlinkCcipRoute(\n protocol: string | null | undefined,\n bridge: string,\n verifierModel: string,\n): boolean {\n const normalizedProtocol = normalizeBridgeProtocol(protocol ?? \"\");\n if (normalizedProtocol.length > 0) {\n return normalizedProtocol === \"chainlinkccip\" || normalizedProtocol === \"ccip\";\n }\n return bridgeLabelLooksCcip(bridge) || bridgeLabelLooksCcip(verifierModel);\n}\n\nfunction bridgeLabelLooksCcip(value: string): boolean {\n return normalizeBridgeProtocol(value).includes(\"ccip\");\n}\n\nfunction normalizeBridgeProtocol(value: string): string {\n return value.trim().toLowerCase().replace(/[^a-z0-9]/g, \"\");\n}\n\nfunction bridgeRouteCandidate(\n intent: BridgeTransferIntent,\n intentReasons: readonly string[],\n route: BridgeRouteDisclosure,\n): BridgeRouteCandidate {\n const assessment = assessBridgeRoute(route);\n const blockedReasons = [...intentReasons, ...assessment.blockedReasons];\n\n if (!trimmedEq(route.asset, intent.asset)) {\n blockedReasons.push(\"route asset does not match transfer intent\");\n }\n if (!trimmedEq(route.sourceChain, intent.sourceChain)) {\n blockedReasons.push(\"route source chain does not match transfer intent\");\n }\n if (!trimmedEq(route.destinationChain, intent.destinationChain)) {\n blockedReasons.push(\"route destination chain does not match transfer intent\");\n }\n if (\n intent.allowedRouteIds != null &&\n !intent.allowedRouteIds.some((routeId) => trimmedEq(routeId, route.routeId))\n ) {\n blockedReasons.push(\"route id not allowed by transfer policy\");\n }\n if (intent.minimumScore != null && assessment.score < intent.minimumScore) {\n blockedReasons.push(\"route score below transfer policy minimum\");\n }\n if (intent.maxFinalityBlocks != null && route.finalityBlocks > intent.maxFinalityBlocks) {\n blockedReasons.push(\"route finality exceeds transfer policy maximum\");\n }\n if (intent.maxCooldownSeconds != null && route.cooldownSeconds > intent.maxCooldownSeconds) {\n blockedReasons.push(\"route cooldown exceeds transfer policy maximum\");\n }\n if (\n decimalStringIsPositive(intent.amountAtomic) &&\n decimalStringIsPositive(route.drainCapAtomic) &&\n decimalStringGt(intent.amountAtomic, route.drainCapAtomic)\n ) {\n blockedReasons.push(\"transfer amount exceeds route drain cap\");\n }\n if (\n decimalStringIsPositive(intent.amountAtomic) &&\n decimalStringIsPositive(route.insuranceAtomic) &&\n decimalStringGt(intent.amountAtomic, route.insuranceAtomic)\n ) {\n blockedReasons.push(\"transfer amount exceeds disclosed insurance coverage\");\n }\n\n return {\n route,\n assessment,\n eligible: blockedReasons.length === 0,\n score: assessment.score,\n blockedReasons,\n warnings: [...assessment.warnings],\n };\n}\n\nfunction validateBridgeTransferIntent(intent: BridgeTransferIntent): string[] {\n const blockedReasons: string[] = [];\n if (intent.asset.trim() === \"\") blockedReasons.push(\"transfer asset missing\");\n if (!decimalStringIsPositive(intent.amountAtomic)) {\n blockedReasons.push(\"transfer amount missing or zero\");\n }\n if (intent.sourceChain.trim() === \"\") blockedReasons.push(\"transfer source chain missing\");\n if (intent.destinationChain.trim() === \"\") {\n blockedReasons.push(\"transfer destination chain missing\");\n }\n if (intent.recipient.trim() === \"\") blockedReasons.push(\"transfer recipient missing\");\n if (intent.minimumScore != null && intent.minimumScore > 100) {\n blockedReasons.push(\"minimum route score exceeds 100\");\n }\n return blockedReasons;\n}\n\nfunction compareBridgeCandidates(left: BridgeRouteCandidate, right: BridgeRouteCandidate): number {\n if (left.eligible !== right.eligible) return left.eligible ? -1 : 1;\n if (left.score !== right.score) return right.score - left.score;\n if (left.route.cooldownSeconds !== right.route.cooldownSeconds) {\n return left.route.cooldownSeconds - right.route.cooldownSeconds;\n }\n if (left.route.finalityBlocks !== right.route.finalityBlocks) {\n return left.route.finalityBlocks - right.route.finalityBlocks;\n }\n return left.route.routeId.localeCompare(right.route.routeId);\n}\n\nfunction decimalStringIsPositive(value: string): boolean {\n const trimmed = value.trim();\n return /^[0-9]+$/.test(trimmed) && /[1-9]/.test(trimmed);\n}\n\nfunction decimalStringGt(left: string, right: string): boolean {\n return decimalStringCompare(left, right) === 1;\n}\n\nfunction decimalStringCompare(left: string, right: string): -1 | 0 | 1 | null {\n const normalizedLeft = normalizedDecimalDigits(left);\n const normalizedRight = normalizedDecimalDigits(right);\n if (normalizedLeft == null || normalizedRight == null) return null;\n if (normalizedLeft.length !== normalizedRight.length) {\n return normalizedLeft.length > normalizedRight.length ? 1 : -1;\n }\n if (normalizedLeft === normalizedRight) return 0;\n return normalizedLeft > normalizedRight ? 1 : -1;\n}\n\nfunction normalizedDecimalDigits(value: string): string | null {\n const trimmed = value.trim();\n if (!/^[0-9]+$/.test(trimmed)) return null;\n const normalized = trimmed.replace(/^0+/, \"\");\n return normalized === \"\" ? \"0\" : normalized;\n}\n\nfunction trimmedEq(left: string, right: string): boolean {\n return left.trim() === right.trim();\n}\n\nfunction isRecord(value: unknown): value is JsonRecord {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nfunction field(record: JsonRecord, ...keys: string[]): unknown {\n for (const key of keys) {\n if (Object.prototype.hasOwnProperty.call(record, key)) return record[key];\n }\n return undefined;\n}\n\nfunction stringField(record: JsonRecord, ...keys: string[]): string {\n return field(record, ...keys) as string;\n}\n\nfunction optionalStringField(record: JsonRecord, ...keys: string[]): string | null {\n let raw: unknown;\n for (const key of keys) {\n if (Object.prototype.hasOwnProperty.call(record, key)) {\n raw = record[key];\n break;\n }\n }\n if (raw === undefined || raw === null) return null;\n return typeof raw === \"string\" ? raw.trim() : \"\";\n}\n\nfunction numberField(record: JsonRecord, ...keys: string[]): number {\n return field(record, ...keys) as number;\n}\n\nfunction validateTextField(\n name: string,\n value: unknown,\n maxLen: number,\n blockedReasons: string[],\n): string | null {\n if (typeof value !== \"string\") {\n blockedReasons.push(`${name} must be 1..=${maxLen} bytes`);\n return null;\n }\n const trimmed = value.trim();\n if (trimmed.length === 0 || utf8ByteLength(trimmed) > maxLen) {\n blockedReasons.push(`${name} must be 1..=${maxLen} bytes`);\n return null;\n }\n return trimmed;\n}\n\nfunction validateOptionalTextField(\n name: string,\n value: unknown,\n maxLen: number,\n blockedReasons: string[],\n): string | null {\n if (value === undefined || value === null) return null;\n return validateTextField(name, value, maxLen, blockedReasons);\n}\n\nfunction validateHexBytes(\n name: string,\n value: unknown,\n expectedBytes: number,\n blockedReasons: string[],\n): string | null {\n if (typeof value !== \"string\") {\n blockedReasons.push(`${name} must be ${expectedBytes} bytes of hex`);\n return null;\n }\n const trimmed = value.trim();\n const body = trimmed.startsWith(\"0x\") ? trimmed.slice(2) : trimmed;\n if (body.length !== expectedBytes * 2 || !/^[0-9a-fA-F]+$/.test(body)) {\n blockedReasons.push(`${name} must be ${expectedBytes} bytes of hex`);\n return null;\n }\n return body.toLowerCase();\n}\n\nfunction isU16(value: unknown): value is number {\n return typeof value === \"number\" && Number.isInteger(value) && value >= 0 && value <= 0xffff;\n}\n\nfunction isSafeIntegerAtLeast(value: unknown, minimum: number): value is number {\n return typeof value === \"number\" && Number.isSafeInteger(value) && value >= minimum;\n}\n\nfunction decimalStringIsPositiveU256(value: unknown): boolean {\n if (typeof value !== \"string\") return false;\n const trimmed = value.trim();\n if (!/^[0-9]+$/.test(trimmed)) return false;\n const parsed = BigInt(trimmed);\n return parsed > 0n && parsed <= MAX_U256;\n}\n\nfunction parseBridgeAdminControl(value: unknown): BridgeAdminControl | null {\n if (typeof value !== \"string\") return null;\n switch (enumKey(value)) {\n case \"none\":\n return \"none\";\n case \"consensusonly\":\n return \"consensusOnly\";\n case \"operatorkey\":\n return \"operatorKey\";\n case \"unknown\":\n return \"unknown\";\n default:\n return null;\n }\n}\n\nfunction parseBridgeCircuitBreaker(value: unknown): BridgeCircuitBreakerState | null {\n if (typeof value !== \"string\") return null;\n switch (enumKey(value)) {\n case \"armed\":\n return \"armed\";\n case \"paused\":\n return \"paused\";\n case \"disabled\":\n return \"disabled\";\n case \"unknown\":\n return \"unknown\";\n default:\n return null;\n }\n}\n\nfunction enumKey(value: string): string {\n return [...value]\n .filter((c) => c !== \"_\" && c !== \"-\")\n .join(\"\")\n .toLowerCase();\n}\n\nfunction incidentDateIsValid(value: string): boolean {\n return /^\\d{4}-\\d{2}-\\d{2}$/.test(value.trim());\n}\n\nfunction utf8ByteLength(value: string): number {\n return new TextEncoder().encode(value).length;\n}\n\nfunction expectLength(value: Uint8Array, len: number, name: string): Uint8Array {\n if (value.length !== len) {\n throw new BridgePrecompileError(`${name} must be ${len} bytes, got ${value.length}`);\n }\n return value;\n}\n\nfunction uint64Word(value: bigint | number | string, name: string): Uint8Array {\n const n = toBigint(value, name);\n if (n < 0n || n > 0xffff_ffff_ffff_ffffn) {\n throw new BridgePrecompileError(`${name} must fit uint64`);\n }\n const out = new Uint8Array(32);\n let rest = n;\n for (let i = 31; i >= 24; i--) {\n out[i] = Number(rest & 0xffn);\n rest >>= 8n;\n }\n return out;\n}\n\nfunction toBigint(value: bigint | number | string, name: string): bigint {\n if (typeof value === \"bigint\") return value;\n if (typeof value === \"number\") {\n if (!Number.isInteger(value) || !Number.isSafeInteger(value)) {\n throw new BridgePrecompileError(`${name} must be a safe integer`);\n }\n return BigInt(value);\n }\n if (!/^(0x[0-9a-fA-F]+|[0-9]+)$/.test(value)) {\n throw new BridgePrecompileError(`${name} must be an integer string`);\n }\n return BigInt(value);\n}\n\nfunction toBytes(value: BridgeBytesInput): 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 BridgePrecompileError(\"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","import { blake3 } from \"@noble/hashes/blake3.js\";\nimport { keccak_256 } from \"@noble/hashes/sha3.js\";\nimport { bls12_381 } from \"@noble/curves/bls12-381.js\";\nimport { ml_dsa65 } from \"@noble/post-quantum/ml-dsa.js\";\nimport {\n ML_DSA_65_PUBLIC_KEY_LEN,\n ML_DSA_65_SIGNATURE_LEN,\n mlDsa65AddressFromPublicKey,\n} from \"./crypto/ml-dsa.js\";\nimport type {\n NoEvmArchiveProof,\n NoEvmBoundedReceiptProof,\n NoEvmCompactReceiptProof,\n NoEvmFinalityBlockReference,\n NoEvmFinalityCertificate,\n NoEvmFinalityEvidence,\n NoEvmReceiptProof,\n} from \"./client.js\";\n\nexport const NO_EVM_RECEIPT_PROOF_SCHEMA = \"mono.no_evm_receipt_proof.v1\";\nexport const NO_EVM_RECEIPT_PROOF_TYPE = \"canonicalReceiptsTranscript\";\nexport const NO_EVM_RECEIPT_INCLUSION_PROOF_TYPE = \"canonicalReceiptInclusion\";\nexport const NO_EVM_RECEIPT_ROOT_ALGORITHM =\n \"keccak256-binary-merkle(monolythium/v4.1/receipt_leaf/1, monolythium/v4.1/receipt_node/1, duplicate-last padding)\";\nexport const NO_EVM_LEGACY_BINARY_RECEIPT_ROOT_ALGORITHM =\n \"keccak256(monolythium/v4.1/receipts_root_empty/1|receipt_leaf/1|receipt_node/1 binary Merkle)\";\nexport const NO_EVM_LEGACY_RECEIPT_ROOT_ALGORITHM =\n \"keccak256(monolythium/v2/receipts_root/1 || len || indexed bincode receipts)\";\nexport const NO_EVM_RECEIPT_CODEC = \"bincode(protocore_execution_types::Receipt)\";\nexport const NO_EVM_RECEIPTS_ROOT_DOMAIN = \"monolythium/v4.1/receipts_root_empty/1\";\nexport const NO_EVM_RECEIPT_LEAF_DOMAIN = \"monolythium/v4.1/receipt_leaf/1\";\nexport const NO_EVM_RECEIPT_NODE_DOMAIN = \"monolythium/v4.1/receipt_node/1\";\nexport const NO_EVM_COMPACT_INCLUSION_PROOF_SCHEMA =\n \"mono.no_evm_receipt_compact_inclusion.v1\";\nexport const NO_EVM_COMPACT_INCLUSION_TREE_ALGORITHM = \"binary-keccak-receipt-tree\";\nexport const NO_EVM_ARCHIVE_PROOF_SCHEMA = \"mono.no_evm_receipt_archive_binding.v1\";\nexport const NO_EVM_ARCHIVE_SIGNATURE_SCHEME = \"mono.snapshot.sig.v1\";\nexport const NO_EVM_FINALITY_EVIDENCE_SCHEMA = \"mono.no_evm_receipt_finality.v1\";\nexport const NO_EVM_FINALITY_EVIDENCE_SOURCE = \"blsRoundCertificate\";\n\nconst EMPTY_ROOT_DOMAIN_BYTES = new TextEncoder().encode(NO_EVM_RECEIPTS_ROOT_DOMAIN);\nconst LEAF_DOMAIN_BYTES = new TextEncoder().encode(NO_EVM_RECEIPT_LEAF_DOMAIN);\nconst NODE_DOMAIN_BYTES = new TextEncoder().encode(NO_EVM_RECEIPT_NODE_DOMAIN);\nconst UINT32_MAX = 0xffff_ffff;\nconst HASH_BYTE_LENGTH = 32;\nconst ARCHIVE_SIGNATURE_SIGNER_ID_BYTE_LENGTH = 20;\nconst BLS_PUBLIC_KEY_BYTE_LENGTH = 48;\nconst BLS_SIGNATURE_BYTE_LENGTH = 96;\nconst BLS_DST = \"BLS_SIG_BLS12381G2_XMD:SHA-256_SSWU_RO_POP_\";\nconst HEX_RE = /^[0-9a-fA-F]*$/u;\n\nexport type NoEvmReceiptProofErrorCode =\n | \"unsupported_schema\"\n | \"unsupported_proof_kind\"\n | \"unsupported_proof_type\"\n | \"unsupported_history_source\"\n | \"unsupported_root_algorithm\"\n | \"unsupported_receipt_codec\"\n | \"unsupported_compact_schema\"\n | \"unsupported_tree_algorithm\"\n | \"invalid_uint32\"\n | \"invalid_hex\"\n | \"invalid_hash_length\"\n | \"invalid_archive_signature\"\n | \"invalid_proof_shape\"\n | \"missing_target_receipt_bytes\"\n | \"too_many_receipts\"\n | \"receipt_too_large\"\n | \"receipt_count_mismatch\"\n | \"tx_index_out_of_bounds\"\n | \"receipts_root_mismatch\"\n | \"target_receipt_hash_mismatch\"\n | \"compact_root_mismatch\"\n | \"compact_leaf_hash_mismatch\"\n | \"compact_path_mismatch\";\n\nexport class NoEvmReceiptProofError extends Error {\n constructor(\n public readonly code: NoEvmReceiptProofErrorCode,\n message: string,\n ) {\n super(message);\n this.name = \"NoEvmReceiptProofError\";\n }\n}\n\nexport interface NoEvmReceiptProofVerification {\n /** Full decoded transcript for bounded proofs; compact proofs carry only the target. */\n receipts: Uint8Array[];\n receiptsRoot: string;\n targetReceiptHash: string;\n receiptCount: number;\n txIndex: number;\n targetReceipt: Uint8Array;\n proofKind: \"boundedCacheTranscript\" | \"compactInclusion\";\n}\n\nexport interface NoEvmArchiveTrustedSigner {\n publicKey: Uint8Array | readonly number[];\n signerId?: string;\n validFromHeight?: number | bigint;\n validToHeight?: number | bigint;\n}\n\nexport type NoEvmArchiveSignatureVerificationIssueCode =\n | \"missing_signature_digest\"\n | \"threshold_not_met\"\n | \"duplicate_signer\"\n | \"untrusted_signer\"\n | \"invalid_signature\"\n | \"invalid_trusted_public_key\";\n\nexport interface NoEvmArchiveSignatureVerificationIssue {\n code: NoEvmArchiveSignatureVerificationIssueCode;\n message: string;\n signatureIndex?: number;\n signerId?: string;\n}\n\nexport interface NoEvmArchiveSignatureVerification {\n verified: boolean;\n threshold: number;\n validSigners: string[];\n checkedSignatures: number;\n issues: NoEvmArchiveSignatureVerificationIssue[];\n}\n\nexport interface NoEvmReceiptTrustedBlsSigner {\n authorityIndex: number;\n publicKey: Uint8Array | readonly number[];\n validFromRound?: number | bigint;\n validToRound?: number | bigint;\n}\n\nexport interface NoEvmBlsFinalityVerification {\n finalityEvidencePresent: boolean;\n signerCountMatches: boolean;\n signerBitmapMatchesIndices: boolean;\n signerIndicesInRange: boolean;\n allSignersTrusted: boolean;\n thresholdMet: boolean;\n signatureValid: boolean;\n acceptedSignatureCount: number;\n requiredSignatureCount: number;\n verified: boolean;\n}\n\nexport interface NoEvmBlockBlsFinalityVerification {\n blockReference: NoEvmFinalityBlockReference;\n leaderCertificate: NoEvmBlsFinalityVerification;\n dacCertificate: NoEvmBlsFinalityVerification;\n verified: boolean;\n}\n\nexport type NoEvmReceiptFinalityTrustPolicy =\n | {\n mode: \"cluster\";\n chainId?: number | bigint;\n clusterPublicKey: Uint8Array | readonly number[];\n committeeSize: number;\n threshold: number;\n validFromRound?: number | bigint;\n validToRound?: number | bigint;\n }\n | {\n mode: \"multisig\";\n chainId?: number | bigint;\n trustedSigners: readonly NoEvmReceiptTrustedBlsSigner[];\n threshold: number;\n validFromRound?: number | bigint;\n validToRound?: number | bigint;\n };\n\nexport interface NoEvmReceiptTrustPolicy {\n chainId?: number | bigint;\n archive?: {\n trustedSigners: readonly NoEvmArchiveTrustedSigner[];\n threshold: number;\n validFromHeight?: number | bigint;\n validToHeight?: number | bigint;\n };\n finality?: NoEvmReceiptFinalityTrustPolicy;\n}\n\nexport type NoEvmReceiptTrustIssueCode =\n | \"missing_receipt_proof\"\n | \"missing_archive_proof\"\n | \"archive_policy_not_valid_at_height\"\n | \"archive_verification_failed\"\n | \"missing_finality_evidence\"\n | \"missing_finality_chain_id\"\n | \"finality_policy_not_valid_at_round\"\n | \"finality_verification_failed\";\n\nexport interface NoEvmReceiptTrustIssue {\n code: NoEvmReceiptTrustIssueCode;\n message: string;\n}\n\nexport interface NoEvmReceiptTrustVerification {\n verified: boolean;\n receiptProof: NoEvmReceiptProofVerification | null;\n archiveSignatures: NoEvmArchiveSignatureVerification | null;\n finalityEvidence: NoEvmBlsFinalityVerification | null;\n issues: NoEvmReceiptTrustIssue[];\n}\n\nexport function decodeNoEvmReceiptTranscript(proof: NoEvmReceiptProof): Uint8Array[] {\n if (!Array.isArray(proof.receiptTranscript)) {\n throw new NoEvmReceiptProofError(\n \"invalid_proof_shape\",\n \"boundedCacheTranscript proof requires receiptTranscript\",\n );\n }\n\n return proof.receiptTranscript.map((hex, index) =>\n decodeHexBytes(hex, `receiptTranscript[${index}]`),\n );\n}\n\nexport function computeNoEvmReceiptsRoot(receipts: readonly Uint8Array[]): string {\n return bytesToHex(computeNoEvmReceiptsRootBytes(receipts));\n}\n\nexport function computeNoEvmTargetReceiptHash(receiptBytes: Uint8Array): string {\n return bytesToHex(keccak_256(receiptBytes));\n}\n\nexport function verifyNoEvmReceiptProof(\n proof: NoEvmReceiptProof | null | undefined,\n): NoEvmReceiptProofVerification | null {\n if (proof == null) return null;\n\n const proofKind = getProofKind(proof);\n switch (proofKind) {\n case \"boundedCacheTranscript\":\n return verifyBoundedReceiptProof(proof);\n case \"compactInclusion\":\n return verifyCompactReceiptProof(proof);\n default:\n throw new NoEvmReceiptProofError(\n \"unsupported_proof_kind\",\n `unsupported no-EVM receipt proofKind: ${proofKind}`,\n );\n }\n}\n\nexport function verifyNoEvmArchiveProofSignatures(\n archiveProof: NoEvmArchiveProof,\n trustedSigners: readonly NoEvmArchiveTrustedSigner[],\n threshold: number,\n): NoEvmArchiveSignatureVerification {\n if (!Number.isSafeInteger(threshold) || threshold < 1) {\n throw new NoEvmReceiptProofError(\"invalid_proof_shape\", \"threshold must be at least 1\");\n }\n validateArchiveProofObject(archiveProof);\n\n const roster = new Map<string, Uint8Array>();\n trustedSigners.forEach((signer, index) => {\n const publicKey = expectArchivePublicKey(signer.publicKey, `trustedSigners[${index}].publicKey`);\n const signerId = mlDsa65AddressFromPublicKey(publicKey);\n if (signer.signerId !== undefined && normalizeSignerId(signer.signerId) !== signerId) {\n throw new NoEvmReceiptProofError(\n \"invalid_proof_shape\",\n `trustedSigners[${index}].signerId does not match public key signer id ${signerId}`,\n );\n }\n if (roster.has(signerId)) {\n throw new NoEvmReceiptProofError(\n \"invalid_proof_shape\",\n `trustedSigners contains duplicate signer id ${signerId}`,\n );\n }\n roster.set(signerId, publicKey);\n });\n\n const signatureMaterial =\n archiveProof.signatureDigest != null || archiveProof.signatures.length > 0\n ? {\n digestValue: archiveProof.signatureDigest,\n digestField: \"archiveProof.signatureDigest\",\n signatures: archiveProof.signatures,\n signatureFieldPrefix: \"archiveProof.signatures\",\n }\n : archiveProof.coveringSnapshot != null\n ? {\n digestValue: archiveProof.coveringSnapshot.signatureDigest,\n digestField: \"archiveProof.coveringSnapshot.signatureDigest\",\n signatures: archiveProof.coveringSnapshot.signatures,\n signatureFieldPrefix: \"archiveProof.coveringSnapshot.signatures\",\n }\n : {\n digestValue: archiveProof.signatureDigest,\n digestField: \"archiveProof.signatureDigest\",\n signatures: archiveProof.signatures,\n signatureFieldPrefix: \"archiveProof.signatures\",\n };\n\n const issues: NoEvmArchiveSignatureVerificationIssue[] = [];\n const digestValue = signatureMaterial.digestValue;\n if (digestValue == null) {\n issues.push({\n code: \"missing_signature_digest\",\n message: \"archiveProof.signatureDigest is required for signature verification\",\n });\n return {\n verified: false,\n threshold,\n validSigners: [],\n checkedSignatures: signatureMaterial.signatures.length,\n issues,\n };\n }\n const signatureDigest = decodeHash(digestValue, signatureMaterial.digestField);\n const seen = new Set<string>();\n const validSigners: string[] = [];\n\n signatureMaterial.signatures.forEach((signature, signatureIndex) => {\n const parsed = parseArchiveProofSignature(\n signature,\n signatureIndex,\n signatureMaterial.signatureFieldPrefix,\n );\n if (seen.has(parsed.signerId)) {\n issues.push({\n code: \"duplicate_signer\",\n message: `duplicate archive proof signer ${parsed.signerId}`,\n signatureIndex,\n signerId: parsed.signerId,\n });\n return;\n }\n seen.add(parsed.signerId);\n\n const publicKey = roster.get(parsed.signerId);\n if (publicKey === undefined) {\n issues.push({\n code: \"untrusted_signer\",\n message: `archive proof signer ${parsed.signerId} is not trusted`,\n signatureIndex,\n signerId: parsed.signerId,\n });\n return;\n }\n if (parsed.payload.length !== ML_DSA_65_SIGNATURE_LEN) {\n issues.push({\n code: \"invalid_signature\",\n message: `archive proof signature payload must be ${ML_DSA_65_SIGNATURE_LEN} bytes`,\n signatureIndex,\n signerId: parsed.signerId,\n });\n return;\n }\n let ok = false;\n try {\n ok = ml_dsa65.verify(parsed.payload, signatureDigest, publicKey);\n } catch {\n issues.push({\n code: \"invalid_trusted_public_key\",\n message: `trusted public key for ${parsed.signerId} is malformed`,\n signatureIndex,\n signerId: parsed.signerId,\n });\n return;\n }\n if (ok) {\n validSigners.push(parsed.signerId);\n } else {\n issues.push({\n code: \"invalid_signature\",\n message: `archive proof signature from ${parsed.signerId} is invalid`,\n signatureIndex,\n signerId: parsed.signerId,\n });\n }\n });\n\n if (validSigners.length < threshold) {\n issues.push({\n code: \"threshold_not_met\",\n message: `archive proof has ${validSigners.length} valid trusted signatures, below threshold ${threshold}`,\n });\n }\n\n return {\n verified: issues.length === 0,\n threshold,\n validSigners,\n checkedSignatures: signatureMaterial.signatures.length,\n issues,\n };\n}\n\nexport function computeNoEvmRoundFinalityMessage(\n chainId: number | bigint,\n round: number | bigint,\n): Uint8Array {\n const preimage = new Uint8Array(5 + 8 + 8);\n preimage.set(new TextEncoder().encode(\"round\"), 0);\n writeU64Le(preimage, 5, chainId, \"chainId\");\n writeU64Le(preimage, 13, round, \"round\");\n return blake3(preimage);\n}\n\nexport function computeNoEvmLeaderFinalityMessage(\n chainId: number | bigint,\n blockReference: NoEvmFinalityBlockReference,\n): Uint8Array {\n return computeNoEvmBlockFinalityMessage(\"leader\", chainId, blockReference);\n}\n\nexport function computeNoEvmDacFinalityMessage(\n chainId: number | bigint,\n blockReference: NoEvmFinalityBlockReference,\n): Uint8Array {\n return computeNoEvmBlockFinalityMessage(\"dac\", chainId, blockReference);\n}\n\nfunction computeNoEvmBlockFinalityMessage(\n domain: \"leader\" | \"dac\",\n chainId: number | bigint,\n blockReference: NoEvmFinalityBlockReference,\n): Uint8Array {\n const domainBytes = new TextEncoder().encode(domain);\n const digest = decodeHash(\n blockReference.digest,\n \"finalityEvidence.blockReference.digest\",\n );\n const preimage = new Uint8Array(domainBytes.length + 8 + 2 + 8 + HASH_BYTE_LENGTH);\n let offset = 0;\n preimage.set(domainBytes, offset);\n offset += domainBytes.length;\n writeU64Le(preimage, offset, chainId, \"chainId\");\n offset += 8;\n writeU16Le(preimage, offset, blockReference.authority, \"finalityEvidence.blockReference.authority\");\n offset += 2;\n writeU64Le(preimage, offset, blockReference.round, \"finalityEvidence.blockReference.round\");\n offset += 8;\n preimage.set(digest, offset);\n return blake3(preimage);\n}\n\nexport function verifyNoEvmFinalityEvidenceThreshold(\n finalityEvidence: NoEvmFinalityEvidence,\n options: {\n chainId: number | bigint;\n clusterPublicKey: Uint8Array | readonly number[];\n committeeSize: number;\n threshold: number;\n },\n): NoEvmBlsFinalityVerification {\n validateFinalityThreshold(options.threshold, options.committeeSize);\n const clusterPublicKey = expectBlsBytes(\n options.clusterPublicKey,\n BLS_PUBLIC_KEY_BYTE_LENGTH,\n \"clusterPublicKey\",\n );\n validateFinalityEvidenceForVerification(finalityEvidence);\n const message = computeNoEvmRoundFinalityMessage(options.chainId, finalityEvidence.round);\n return verifyFinalityCertificateThreshold(\n finalityEvidence.certificate,\n \"finalityEvidence.certificate\",\n message,\n clusterPublicKey,\n options.committeeSize,\n options.threshold,\n );\n}\n\nexport function verifyNoEvmFinalityEvidenceMultisig(\n finalityEvidence: NoEvmFinalityEvidence,\n options: {\n chainId: number | bigint;\n trustedSigners: readonly NoEvmReceiptTrustedBlsSigner[];\n threshold: number;\n },\n): NoEvmBlsFinalityVerification {\n validateFinalityThreshold(options.threshold, options.trustedSigners.length);\n validateFinalityEvidenceForVerification(finalityEvidence);\n const message = computeNoEvmRoundFinalityMessage(options.chainId, finalityEvidence.round);\n return verifyFinalityCertificateMultisig(\n finalityEvidence.certificate,\n \"finalityEvidence.certificate\",\n message,\n options.trustedSigners,\n options.threshold,\n );\n}\n\nexport function verifyNoEvmBlockFinalityEvidenceThreshold(\n finalityEvidence: NoEvmFinalityEvidence,\n options: {\n chainId: number | bigint;\n clusterPublicKey: Uint8Array | readonly number[];\n committeeSize: number;\n threshold: number;\n },\n): NoEvmBlockBlsFinalityVerification {\n validateFinalityThreshold(options.threshold, options.committeeSize);\n validateFinalityEvidenceForVerification(finalityEvidence);\n const clusterPublicKey = expectBlsBytes(\n options.clusterPublicKey,\n BLS_PUBLIC_KEY_BYTE_LENGTH,\n \"clusterPublicKey\",\n );\n const blockReference = requireBlockReference(finalityEvidence);\n const leaderCertificate = requireBlockFinalityCertificate(\n finalityEvidence.leaderCertificate,\n \"finalityEvidence.leaderCertificate\",\n );\n const dacCertificate = requireBlockFinalityCertificate(\n finalityEvidence.dacCertificate,\n \"finalityEvidence.dacCertificate\",\n );\n const leaderMessage = computeNoEvmLeaderFinalityMessage(options.chainId, blockReference);\n const dacMessage = computeNoEvmDacFinalityMessage(options.chainId, blockReference);\n const leaderVerification = verifyFinalityCertificateThreshold(\n leaderCertificate,\n \"finalityEvidence.leaderCertificate\",\n leaderMessage,\n clusterPublicKey,\n options.committeeSize,\n options.threshold,\n );\n const dacVerification = verifyFinalityCertificateThreshold(\n dacCertificate,\n \"finalityEvidence.dacCertificate\",\n dacMessage,\n clusterPublicKey,\n options.committeeSize,\n options.threshold,\n );\n return {\n blockReference,\n leaderCertificate: leaderVerification,\n dacCertificate: dacVerification,\n verified: leaderVerification.verified && dacVerification.verified,\n };\n}\n\nexport function verifyNoEvmBlockFinalityEvidenceMultisig(\n finalityEvidence: NoEvmFinalityEvidence,\n options: {\n chainId: number | bigint;\n trustedSigners: readonly NoEvmReceiptTrustedBlsSigner[];\n threshold: number;\n },\n): NoEvmBlockBlsFinalityVerification {\n validateFinalityThreshold(options.threshold, options.trustedSigners.length);\n validateFinalityEvidenceForVerification(finalityEvidence);\n const blockReference = requireBlockReference(finalityEvidence);\n const leaderCertificate = requireBlockFinalityCertificate(\n finalityEvidence.leaderCertificate,\n \"finalityEvidence.leaderCertificate\",\n );\n const dacCertificate = requireBlockFinalityCertificate(\n finalityEvidence.dacCertificate,\n \"finalityEvidence.dacCertificate\",\n );\n const leaderMessage = computeNoEvmLeaderFinalityMessage(options.chainId, blockReference);\n const dacMessage = computeNoEvmDacFinalityMessage(options.chainId, blockReference);\n const leaderVerification = verifyFinalityCertificateMultisig(\n leaderCertificate,\n \"finalityEvidence.leaderCertificate\",\n leaderMessage,\n options.trustedSigners,\n options.threshold,\n );\n const dacVerification = verifyFinalityCertificateMultisig(\n dacCertificate,\n \"finalityEvidence.dacCertificate\",\n dacMessage,\n options.trustedSigners,\n options.threshold,\n );\n return {\n blockReference,\n leaderCertificate: leaderVerification,\n dacCertificate: dacVerification,\n verified: leaderVerification.verified && dacVerification.verified,\n };\n}\n\nfunction verifyFinalityCertificateMultisig(\n certificate: NoEvmFinalityCertificate,\n field: string,\n message: Uint8Array,\n trustedSigners: readonly NoEvmReceiptTrustedBlsSigner[],\n threshold: number,\n): NoEvmBlsFinalityVerification {\n const signature = decodeFinalityCertificateSignature(certificate, field);\n const signerIndices = signerIndicesFromBitmap(\n decodeHexBytes(certificate.signersBitmap, `${field}.signersBitmap`),\n );\n const committeeSize =\n trustedSigners.reduce((max, signer) => Math.max(max, signer.authorityIndex), -1) + 1;\n const base = finalityCertificateVerificationBase(\n certificate,\n signerIndices,\n committeeSize,\n threshold,\n );\n\n const roster = new Map<number, Uint8Array>();\n trustedSigners.forEach((signer, index) => {\n assertUint32(signer.authorityIndex, `trustedSigners[${index}].authorityIndex`);\n if (signer.authorityIndex > 0xffff) {\n throw new NoEvmReceiptProofError(\n \"invalid_proof_shape\",\n `trustedSigners[${index}].authorityIndex must fit u16`,\n );\n }\n if (roster.has(signer.authorityIndex)) {\n throw new NoEvmReceiptProofError(\n \"invalid_proof_shape\",\n `trustedSigners contains duplicate authority index ${signer.authorityIndex}`,\n );\n }\n roster.set(\n signer.authorityIndex,\n expectBlsBytes(\n signer.publicKey,\n BLS_PUBLIC_KEY_BYTE_LENGTH,\n `trustedSigners[${index}].publicKey`,\n ),\n );\n });\n\n const publicKeys: Uint8Array[] = [];\n let allSignersTrusted = true;\n signerIndices.forEach((signerIndex) => {\n const publicKey = roster.get(signerIndex);\n if (publicKey === undefined) {\n allSignersTrusted = false;\n } else {\n publicKeys.push(publicKey);\n }\n });\n\n const signatureValid =\n allSignersTrusted &&\n publicKeys.length > 0 &&\n verifyBlsAggregateSignature(publicKeys, message, signature);\n\n return finalizeBlsFinalityVerification({\n ...base,\n allSignersTrusted,\n signatureValid,\n });\n}\n\nfunction verifyFinalityCertificateThreshold(\n certificate: NoEvmFinalityCertificate,\n field: string,\n message: Uint8Array,\n clusterPublicKey: Uint8Array,\n committeeSize: number,\n threshold: number,\n): NoEvmBlsFinalityVerification {\n const signature = decodeFinalityCertificateSignature(certificate, field);\n const signerIndices = signerIndicesFromBitmap(\n decodeHexBytes(certificate.signersBitmap, `${field}.signersBitmap`),\n );\n const base = finalityCertificateVerificationBase(\n certificate,\n signerIndices,\n committeeSize,\n threshold,\n );\n const signatureValid =\n base.signerIndicesInRange && verifyBlsSignature(clusterPublicKey, message, signature);\n\n return finalizeBlsFinalityVerification({\n ...base,\n allSignersTrusted: base.signerIndicesInRange,\n signatureValid,\n });\n}\n\nexport function verifyNoEvmReceiptProofTrust(\n proof: NoEvmReceiptProof | null | undefined,\n policy: NoEvmReceiptTrustPolicy,\n): NoEvmReceiptTrustVerification {\n const receiptProof = verifyNoEvmReceiptProof(proof);\n const issues: NoEvmReceiptTrustIssue[] = [];\n let archiveSignatures: NoEvmArchiveSignatureVerification | null = null;\n let finalityEvidence: NoEvmBlsFinalityVerification | null = null;\n\n if (receiptProof == null) {\n issues.push({\n code: \"missing_receipt_proof\",\n message: \"native receipt proof is required for trust verification\",\n });\n }\n\n if (policy.archive != null) {\n const archiveProof = proof == null ? null : (proof as NoEvmCompactReceiptProof).archiveProof;\n if (archiveProof == null) {\n issues.push({\n code: \"missing_archive_proof\",\n message: \"native receipt proof does not carry archive signature material\",\n });\n } else {\n const proofBlockHeight = proof!.blockHeight;\n const blockHeight = BigInt(proofBlockHeight);\n const archivePolicyValid = isWithinOptionalBounds(\n blockHeight,\n policy.archive.validFromHeight,\n policy.archive.validToHeight,\n );\n const activeTrustedSigners = policy.archive.trustedSigners.filter((signer) =>\n isWithinOptionalBounds(blockHeight, signer.validFromHeight, signer.validToHeight),\n );\n if (!archivePolicyValid) {\n issues.push({\n code: \"archive_policy_not_valid_at_height\",\n message: `archive trust policy is not valid at block height ${proofBlockHeight}`,\n });\n }\n archiveSignatures = verifyNoEvmArchiveProofSignatures(\n archiveProof,\n activeTrustedSigners,\n policy.archive.threshold,\n );\n if (!archiveSignatures.verified) {\n issues.push({\n code: \"archive_verification_failed\",\n message: \"archive signature material did not satisfy the trusted policy\",\n });\n }\n }\n }\n\n if (policy.finality != null) {\n const proofFinality = proof == null ? null : proof.finalityEvidence;\n if (proofFinality == null) {\n issues.push({\n code: \"missing_finality_evidence\",\n message: \"native receipt proof does not carry BLS finality evidence\",\n });\n } else {\n const chainId = policy.finality.chainId ?? policy.chainId;\n if (chainId == null) {\n issues.push({\n code: \"missing_finality_chain_id\",\n message: \"finality trust policy requires a chain id\",\n });\n } else if (policy.finality.mode === \"cluster\") {\n const round = BigInt(proofFinality.round);\n const finalityPolicyValid = isWithinOptionalBounds(\n round,\n policy.finality.validFromRound,\n policy.finality.validToRound,\n );\n if (!finalityPolicyValid) {\n issues.push({\n code: \"finality_policy_not_valid_at_round\",\n message: `finality trust policy is not valid at round ${proofFinality.round}`,\n });\n }\n finalityEvidence = verifyNoEvmFinalityEvidenceThreshold(proofFinality, {\n chainId,\n clusterPublicKey: policy.finality.clusterPublicKey,\n committeeSize: policy.finality.committeeSize,\n threshold: policy.finality.threshold,\n });\n } else {\n const round = BigInt(proofFinality.round);\n const finalityPolicyValid = isWithinOptionalBounds(\n round,\n policy.finality.validFromRound,\n policy.finality.validToRound,\n );\n const activeTrustedSigners = policy.finality.trustedSigners.filter((signer) =>\n isWithinOptionalBounds(round, signer.validFromRound, signer.validToRound),\n );\n if (!finalityPolicyValid) {\n issues.push({\n code: \"finality_policy_not_valid_at_round\",\n message: `finality trust policy is not valid at round ${proofFinality.round}`,\n });\n }\n finalityEvidence = verifyNoEvmFinalityEvidenceMultisig(proofFinality, {\n chainId,\n trustedSigners: activeTrustedSigners,\n threshold: policy.finality.threshold,\n });\n }\n if (finalityEvidence != null && !finalityEvidence.verified) {\n issues.push({\n code: \"finality_verification_failed\",\n message: \"BLS finality evidence did not satisfy the trusted policy\",\n });\n }\n }\n }\n\n return {\n verified: receiptProof != null && issues.length === 0,\n receiptProof,\n archiveSignatures,\n finalityEvidence,\n issues,\n };\n}\n\nfunction isWithinOptionalBounds(\n value: bigint,\n validFrom: number | bigint | undefined,\n validTo: number | bigint | undefined,\n): boolean {\n if (validFrom != null && value < BigInt(validFrom)) return false;\n if (validTo != null && value > BigInt(validTo)) return false;\n return true;\n}\n\nfunction verifyBoundedReceiptProof(proof: NoEvmReceiptProof): NoEvmReceiptProofVerification {\n validateCommonProofMetadata(proof);\n assertSupported(\n proof.proofType,\n NO_EVM_RECEIPT_PROOF_TYPE,\n \"proofType\",\n \"unsupported_proof_type\",\n );\n validateBoundedHistorySource(proof);\n validateNoCompactOrArchiveMaterial(proof);\n assertUint32(proof.receiptCount, \"receiptCount\");\n assertUint32(proof.txIndex, \"txIndex\");\n\n const receipts = decodeNoEvmReceiptTranscript(proof);\n if (proof.receiptCount !== receipts.length) {\n throw new NoEvmReceiptProofError(\n \"receipt_count_mismatch\",\n `receiptCount declares ${proof.receiptCount} receipts but receiptTranscript has ${receipts.length}`,\n );\n }\n\n const targetReceipt = receipts[proof.txIndex];\n if (targetReceipt === undefined) {\n throw new NoEvmReceiptProofError(\n \"tx_index_out_of_bounds\",\n `txIndex ${proof.txIndex} is out of bounds for ${receipts.length} decoded receipts`,\n );\n }\n\n const actualRoot = computeNoEvmReceiptsRoot(receipts);\n const expectedRoot = decodeHash(proof.receiptsRoot, \"receiptsRoot\");\n if (!bytesEqual(expectedRoot, decodeHash(actualRoot, \"computedReceiptsRoot\"))) {\n throw new NoEvmReceiptProofError(\n \"receipts_root_mismatch\",\n `receiptsRoot mismatch: expected ${proof.receiptsRoot}, computed ${actualRoot}`,\n );\n }\n\n const actualTargetHash = computeNoEvmTargetReceiptHash(targetReceipt);\n const expectedTargetHash = decodeHash(proof.targetReceiptHash, \"targetReceiptHash\");\n if (!bytesEqual(expectedTargetHash, decodeHash(actualTargetHash, \"computedTargetReceiptHash\"))) {\n throw new NoEvmReceiptProofError(\n \"target_receipt_hash_mismatch\",\n `targetReceiptHash mismatch: expected ${proof.targetReceiptHash}, computed ${actualTargetHash}`,\n );\n }\n\n return {\n receipts,\n receiptsRoot: actualRoot,\n targetReceiptHash: actualTargetHash,\n receiptCount: receipts.length,\n txIndex: proof.txIndex,\n targetReceipt,\n proofKind: \"boundedCacheTranscript\",\n };\n}\n\nfunction verifyCompactReceiptProof(proof: NoEvmReceiptProof): NoEvmReceiptProofVerification {\n validateCommonProofMetadata(proof);\n assertSupported(\n proof.proofType,\n NO_EVM_RECEIPT_INCLUSION_PROOF_TYPE,\n \"proofType\",\n \"unsupported_proof_type\",\n );\n validateCompactHistorySource(proof);\n validateOptionalArchiveProof(proof);\n assertUint32(proof.receiptCount, \"receiptCount\");\n assertUint32(proof.txIndex, \"txIndex\");\n\n const compactProof = getCompactInclusionProof(proof);\n assertSupported(\n compactProof.schema,\n NO_EVM_COMPACT_INCLUSION_PROOF_SCHEMA,\n \"compactInclusionProof.schema\",\n \"unsupported_compact_schema\",\n );\n assertSupported(\n compactProof.treeAlgorithm,\n NO_EVM_COMPACT_INCLUSION_TREE_ALGORITHM,\n \"compactInclusionProof.treeAlgorithm\",\n \"unsupported_tree_algorithm\",\n );\n\n if (!Array.isArray(compactProof.siblingHashes) || !Array.isArray(compactProof.pathSides)) {\n throw new NoEvmReceiptProofError(\n \"invalid_proof_shape\",\n \"compactInclusionProof siblingHashes and pathSides must be arrays\",\n );\n }\n if (compactProof.siblingHashes.length !== compactProof.pathSides.length) {\n throw new NoEvmReceiptProofError(\n \"invalid_proof_shape\",\n \"compactInclusionProof siblingHashes/pathSides length mismatch\",\n );\n }\n\n const targetReceiptBytes = getTargetReceiptBytes(proof);\n const targetReceipt = decodeHexBytes(targetReceiptBytes, \"targetReceiptBytes\");\n const actualTargetHash = computeNoEvmTargetReceiptHash(targetReceipt);\n const expectedTargetHash = decodeHash(proof.targetReceiptHash, \"targetReceiptHash\");\n if (!bytesEqual(expectedTargetHash, decodeHash(actualTargetHash, \"computedTargetReceiptHash\"))) {\n throw new NoEvmReceiptProofError(\n \"target_receipt_hash_mismatch\",\n `targetReceiptHash mismatch: expected ${proof.targetReceiptHash}, computed ${actualTargetHash}`,\n );\n }\n\n const actualLeafHashBytes = computeNoEvmReceiptLeafHashBytes(targetReceipt, proof.txIndex);\n const expectedLeafHashBytes = decodeHash(\n compactProof.leafHash,\n \"compactInclusionProof.leafHash\",\n );\n if (!bytesEqual(expectedLeafHashBytes, actualLeafHashBytes)) {\n throw new NoEvmReceiptProofError(\n \"compact_leaf_hash_mismatch\",\n `compactInclusionProof.leafHash mismatch: expected ${compactProof.leafHash}, computed ${bytesToHex(\n actualLeafHashBytes,\n )}`,\n );\n }\n\n const compactRootBytes = decodeHash(compactProof.root, \"compactInclusionProof.root\");\n const receiptsRootBytes = decodeHash(proof.receiptsRoot, \"receiptsRoot\");\n if (!bytesEqual(receiptsRootBytes, compactRootBytes)) {\n throw new NoEvmReceiptProofError(\n \"compact_root_mismatch\",\n `receiptsRoot must equal compactInclusionProof.root: receiptsRoot ${proof.receiptsRoot}, compact root ${compactProof.root}`,\n );\n }\n\n const siblingHashes = compactProof.siblingHashes.map((hash, index) =>\n decodeHash(hash, `compactInclusionProof.siblingHashes[${index}]`),\n );\n const pathSides = compactProof.pathSides.map((side, index) => {\n if (typeof side !== \"boolean\") {\n throw new NoEvmReceiptProofError(\n \"invalid_proof_shape\",\n `compactInclusionProof.pathSides[${index}] must be a boolean`,\n );\n }\n return side;\n });\n const actualRootBytes = computeCompactRootFromPath(\n actualLeafHashBytes,\n siblingHashes,\n pathSides,\n );\n if (!bytesEqual(actualRootBytes, compactRootBytes)) {\n throw new NoEvmReceiptProofError(\n \"compact_path_mismatch\",\n `compact inclusion path mismatch: expected ${compactProof.root}, computed ${bytesToHex(\n actualRootBytes,\n )}`,\n );\n }\n\n return {\n receipts: [],\n receiptsRoot: bytesToHex(actualRootBytes),\n targetReceiptHash: actualTargetHash,\n receiptCount: proof.receiptCount,\n txIndex: proof.txIndex,\n targetReceipt,\n proofKind: \"compactInclusion\",\n };\n}\n\nfunction validateCommonProofMetadata(proof: NoEvmReceiptProof): void {\n assertSupported(\n proof.schema,\n NO_EVM_RECEIPT_PROOF_SCHEMA,\n \"schema\",\n \"unsupported_schema\",\n );\n assertSupportedRootAlgorithm(proof.rootAlgorithm);\n assertSupported(\n proof.receiptCodec,\n NO_EVM_RECEIPT_CODEC,\n \"receiptCodec\",\n \"unsupported_receipt_codec\",\n );\n validateOptionalFinalityEvidence(proof);\n}\n\nfunction validateBoundedHistorySource(proof: NoEvmReceiptProof): void {\n const historySource = getOptionalHistorySource(proof);\n if (\n historySource !== undefined &&\n historySource !== \"legacyUnspecified\" &&\n historySource !== \"liveBlockCache\"\n ) {\n throw new NoEvmReceiptProofError(\n \"unsupported_history_source\",\n `unsupported no-EVM receipt proof historySource: ${historySource}`,\n );\n }\n}\n\nfunction validateCompactHistorySource(proof: NoEvmReceiptProof): void {\n const historySource = getHistorySource(proof);\n if (historySource !== \"liveBlockCache\" && historySource !== \"indexerReceiptArchive\") {\n throw new NoEvmReceiptProofError(\n \"unsupported_history_source\",\n `unsupported no-EVM receipt proof historySource: ${historySource}`,\n );\n }\n}\n\nfunction validateNoCompactOrArchiveMaterial(proof: NoEvmReceiptProof): void {\n const maybeBounded = proof as NoEvmBoundedReceiptProof & {\n archiveProof?: unknown;\n compactInclusionProof?: unknown;\n };\n if (maybeBounded.compactInclusionProof != null) {\n throw new NoEvmReceiptProofError(\n \"invalid_proof_shape\",\n \"boundedCacheTranscript proof cannot carry compactInclusionProof\",\n );\n }\n if (maybeBounded.archiveProof != null) {\n throw new NoEvmReceiptProofError(\n \"invalid_proof_shape\",\n \"boundedCacheTranscript proof cannot carry archiveProof\",\n );\n }\n}\n\nfunction validateOptionalArchiveProof(proof: NoEvmReceiptProof): void {\n const archiveProof = (proof as NoEvmCompactReceiptProof).archiveProof;\n if (archiveProof == null) return;\n validateArchiveProofObject(archiveProof, proof.blockHeight);\n}\n\nfunction validateArchiveProofObject(\n archiveProof: NoEvmArchiveProof | unknown,\n proofBlockHeight?: number,\n): void {\n if (!isRecord(archiveProof)) {\n throw new NoEvmReceiptProofError(\n \"invalid_proof_shape\",\n \"archiveProof must be an object when present\",\n );\n }\n assertSupported(\n archiveProof.schema,\n NO_EVM_ARCHIVE_PROOF_SCHEMA,\n \"archiveProof.schema\",\n \"unsupported_schema\",\n );\n if (typeof archiveProof.source !== \"string\" || archiveProof.source.length === 0) {\n throw new NoEvmReceiptProofError(\n \"invalid_proof_shape\",\n \"archiveProof.source must be a non-empty string\",\n );\n }\n decodeHash(archiveProof.manifestHash, \"archiveProof.manifestHash\");\n const archiveContentHash = decodeHash(archiveProof.contentHash, \"archiveProof.contentHash\");\n if (archiveProof.signatureDigest != null) {\n decodeHash(archiveProof.signatureDigest, \"archiveProof.signatureDigest\");\n }\n if (\n !Array.isArray(archiveProof.signatures) ||\n archiveProof.signatures.some((signature) => typeof signature !== \"string\")\n ) {\n throw new NoEvmReceiptProofError(\n \"invalid_proof_shape\",\n \"archiveProof.signatures must be an array of strings\",\n );\n }\n archiveProof.signatures.forEach((signature, index) =>\n validateArchiveProofSignature(signature, index, \"archiveProof.signatures\"),\n );\n if (archiveProof.coveringSnapshot != null) {\n validateCoveringSnapshotObject(\n archiveProof.coveringSnapshot,\n archiveContentHash,\n proofBlockHeight,\n );\n }\n}\n\nfunction validateCoveringSnapshotObject(\n snapshot: unknown,\n archiveContentHash: Uint8Array,\n proofBlockHeight?: number,\n): void {\n if (!isRecord(snapshot)) {\n throw new NoEvmReceiptProofError(\n \"invalid_proof_shape\",\n \"archiveProof.coveringSnapshot must be an object when present\",\n );\n }\n assertSafeNonNegativeInteger(\n snapshot.snapshotHeight,\n \"archiveProof.coveringSnapshot.snapshotHeight\",\n );\n assertSafeNonNegativeInteger(\n snapshot.checkpointFrom,\n \"archiveProof.coveringSnapshot.checkpointFrom\",\n );\n assertSafeNonNegativeInteger(snapshot.checkpointTo, \"archiveProof.coveringSnapshot.checkpointTo\");\n decodeHash(snapshot.manifestHash, \"archiveProof.coveringSnapshot.manifestHash\");\n decodeHash(snapshot.signatureDigest, \"archiveProof.coveringSnapshot.signatureDigest\");\n decodeHash(snapshot.contentHash, \"archiveProof.coveringSnapshot.contentHash\");\n const checkpointContentHash = decodeHash(\n snapshot.checkpointContentHash,\n \"archiveProof.coveringSnapshot.checkpointContentHash\",\n );\n if (snapshot.checkpointFrom !== 0) {\n throw new NoEvmReceiptProofError(\n \"invalid_proof_shape\",\n \"archiveProof.coveringSnapshot.checkpointFrom must be 0\",\n );\n }\n if (snapshot.checkpointTo > snapshot.snapshotHeight) {\n throw new NoEvmReceiptProofError(\n \"invalid_proof_shape\",\n \"archiveProof.coveringSnapshot.checkpointTo must be <= snapshotHeight\",\n );\n }\n if (proofBlockHeight !== undefined && snapshot.checkpointTo !== proofBlockHeight) {\n throw new NoEvmReceiptProofError(\n \"invalid_proof_shape\",\n \"archiveProof.coveringSnapshot.checkpointTo must match blockHeight\",\n );\n }\n if (!bytesEqual(checkpointContentHash, archiveContentHash)) {\n throw new NoEvmReceiptProofError(\n \"invalid_proof_shape\",\n \"archiveProof.coveringSnapshot.checkpointContentHash must match archiveProof.contentHash\",\n );\n }\n if (\n !Array.isArray(snapshot.signatures) ||\n snapshot.signatures.some((signature) => typeof signature !== \"string\")\n ) {\n throw new NoEvmReceiptProofError(\n \"invalid_proof_shape\",\n \"archiveProof.coveringSnapshot.signatures must be an array of strings\",\n );\n }\n if (snapshot.signatures.length === 0) {\n throw new NoEvmReceiptProofError(\n \"invalid_proof_shape\",\n \"archiveProof.coveringSnapshot.signatures must be non-empty\",\n );\n }\n snapshot.signatures.forEach((signature, index) =>\n validateArchiveProofSignature(\n signature,\n index,\n \"archiveProof.coveringSnapshot.signatures\",\n ),\n );\n}\n\nfunction validateArchiveProofSignature(\n signature: string,\n index: number,\n fieldPrefix: string,\n): void {\n parseArchiveProofSignature(signature, index, fieldPrefix);\n}\n\nfunction parseArchiveProofSignature(\n signature: string,\n index: number,\n fieldPrefix = \"archiveProof.signatures\",\n): { signerId: string; payload: Uint8Array } {\n const field = `${fieldPrefix}[${index}]`;\n const parts = signature.split(\":\");\n if (parts.length !== 3 || parts[0] !== NO_EVM_ARCHIVE_SIGNATURE_SCHEME) {\n throw new NoEvmReceiptProofError(\n \"invalid_archive_signature\",\n `${field} must match ${NO_EVM_ARCHIVE_SIGNATURE_SCHEME}:0x<20-byte signer-id hex>:0x<non-empty payload hex>`,\n );\n }\n\n const signerIdHex = parts[1]!;\n const payloadHex = parts[2]!;\n if (!signerIdHex.startsWith(\"0x\")) {\n throw new NoEvmReceiptProofError(\n \"invalid_archive_signature\",\n `${field}.signerId must be 0x-prefixed`,\n );\n }\n if (!payloadHex.startsWith(\"0x\")) {\n throw new NoEvmReceiptProofError(\n \"invalid_archive_signature\",\n `${field}.payload must be 0x-prefixed`,\n );\n }\n\n const signerId = decodeHexBytes(signerIdHex, `${field}.signerId`);\n if (signerId.length !== ARCHIVE_SIGNATURE_SIGNER_ID_BYTE_LENGTH) {\n throw new NoEvmReceiptProofError(\n \"invalid_archive_signature\",\n `${field}.signerId must be ${ARCHIVE_SIGNATURE_SIGNER_ID_BYTE_LENGTH} bytes, got ${signerId.length}`,\n );\n }\n\n const payload = decodeHexBytes(payloadHex, `${field}.payload`);\n if (payload.length === 0) {\n throw new NoEvmReceiptProofError(\n \"invalid_archive_signature\",\n `${field}.payload must be non-empty`,\n );\n }\n return { signerId: bytesToHex(signerId), payload };\n}\n\nfunction normalizeSignerId(value: string): string {\n const bytes = decodeHexBytes(value, \"signerId\");\n if (bytes.length !== ARCHIVE_SIGNATURE_SIGNER_ID_BYTE_LENGTH) {\n throw new NoEvmReceiptProofError(\n \"invalid_archive_signature\",\n `signerId must be ${ARCHIVE_SIGNATURE_SIGNER_ID_BYTE_LENGTH} bytes, got ${bytes.length}`,\n );\n }\n return bytesToHex(bytes);\n}\n\nfunction expectArchivePublicKey(value: Uint8Array | readonly number[], field: string): Uint8Array {\n if (value.length !== ML_DSA_65_PUBLIC_KEY_LEN) {\n throw new NoEvmReceiptProofError(\n \"invalid_proof_shape\",\n `${field} must be ${ML_DSA_65_PUBLIC_KEY_LEN} bytes, got ${value.length}`,\n );\n }\n return value instanceof Uint8Array ? value : Uint8Array.from(value);\n}\n\nfunction validateOptionalFinalityEvidence(proof: NoEvmReceiptProof): void {\n const finalityEvidence = (proof as { finalityEvidence?: unknown }).finalityEvidence;\n if (finalityEvidence == null) return;\n if (!isRecord(finalityEvidence)) {\n throw new NoEvmReceiptProofError(\n \"invalid_proof_shape\",\n \"finalityEvidence must be an object when present\",\n );\n }\n assertSupported(\n finalityEvidence[\"schema\"],\n NO_EVM_FINALITY_EVIDENCE_SCHEMA,\n \"finalityEvidence.schema\",\n \"unsupported_schema\",\n );\n assertSupported(\n finalityEvidence[\"source\"],\n NO_EVM_FINALITY_EVIDENCE_SOURCE,\n \"finalityEvidence.source\",\n \"unsupported_schema\",\n );\n assertUint32(finalityEvidence[\"round\"], \"finalityEvidence.round\");\n const round = finalityEvidence[\"round\"];\n validateFinalityCertificateObject(\n finalityEvidence[\"certificate\"],\n round,\n \"finalityEvidence.certificate\",\n );\n validateOptionalBlockFinalityFields(finalityEvidence, round, proof.blockHash);\n}\n\nfunction validateFinalityEvidenceForVerification(\n finalityEvidence: NoEvmFinalityEvidence,\n): void {\n if (!isRecord(finalityEvidence)) {\n throw new NoEvmReceiptProofError(\n \"invalid_proof_shape\",\n \"finalityEvidence must be an object\",\n );\n }\n assertSupported(\n finalityEvidence.schema,\n NO_EVM_FINALITY_EVIDENCE_SCHEMA,\n \"finalityEvidence.schema\",\n \"unsupported_schema\",\n );\n assertSupported(\n finalityEvidence.source,\n NO_EVM_FINALITY_EVIDENCE_SOURCE,\n \"finalityEvidence.source\",\n \"unsupported_schema\",\n );\n assertUint32(finalityEvidence.round, \"finalityEvidence.round\");\n validateFinalityCertificateObject(\n finalityEvidence.certificate,\n finalityEvidence.round,\n \"finalityEvidence.certificate\",\n );\n validateOptionalBlockFinalityFields(\n finalityEvidence as unknown as Record<string, unknown>,\n finalityEvidence.round,\n );\n}\n\nfunction validateOptionalBlockFinalityFields(\n finalityEvidence: Record<string, unknown>,\n round: number,\n proofBlockHash?: unknown,\n): void {\n const blockReference = finalityEvidence[\"blockReference\"];\n if (blockReference != null) {\n validateFinalityBlockReference(blockReference, round, proofBlockHash);\n } else if (\n finalityEvidence[\"leaderCertificate\"] != null ||\n finalityEvidence[\"dacCertificate\"] != null\n ) {\n throw new NoEvmReceiptProofError(\n \"invalid_proof_shape\",\n \"finalityEvidence.blockReference is required for block-bound certificates\",\n );\n }\n if (finalityEvidence[\"leaderCertificate\"] != null) {\n validateFinalityCertificateObject(\n finalityEvidence[\"leaderCertificate\"],\n round,\n \"finalityEvidence.leaderCertificate\",\n );\n }\n if (finalityEvidence[\"dacCertificate\"] != null) {\n validateFinalityCertificateObject(\n finalityEvidence[\"dacCertificate\"],\n round,\n \"finalityEvidence.dacCertificate\",\n );\n }\n}\n\nfunction validateFinalityBlockReference(\n blockReference: unknown,\n round: number,\n proofBlockHash?: unknown,\n): void {\n if (!isRecord(blockReference)) {\n throw new NoEvmReceiptProofError(\n \"invalid_proof_shape\",\n \"finalityEvidence.blockReference must be an object\",\n );\n }\n assertUint32(blockReference[\"round\"], \"finalityEvidence.blockReference.round\");\n if (blockReference[\"round\"] !== round) {\n throw new NoEvmReceiptProofError(\n \"invalid_proof_shape\",\n \"finalityEvidence.blockReference.round must match finalityEvidence.round\",\n );\n }\n assertUint32(blockReference[\"authority\"], \"finalityEvidence.blockReference.authority\");\n if ((blockReference[\"authority\"] as number) > 0xffff) {\n throw new NoEvmReceiptProofError(\n \"invalid_proof_shape\",\n \"finalityEvidence.blockReference.authority must fit u16\",\n );\n }\n const digest = decodeHash(\n blockReference[\"digest\"],\n \"finalityEvidence.blockReference.digest\",\n );\n if (proofBlockHash !== undefined) {\n const blockHash = decodeHash(proofBlockHash, \"blockHash\");\n if (!bytesEqual(digest, blockHash)) {\n throw new NoEvmReceiptProofError(\n \"invalid_proof_shape\",\n \"finalityEvidence.blockReference.digest must match blockHash\",\n );\n }\n }\n}\n\nfunction validateFinalityCertificateObject(\n certificate: unknown,\n round: number,\n field: string,\n): void {\n if (!isRecord(certificate)) {\n throw new NoEvmReceiptProofError(\"invalid_proof_shape\", `${field} must be an object`);\n }\n assertUint32(certificate[\"round\"], `${field}.round`);\n if (certificate[\"round\"] !== round) {\n throw new NoEvmReceiptProofError(\n \"invalid_proof_shape\",\n `${field}.round must match finalityEvidence.round`,\n );\n }\n decodeHexBytes(certificate[\"signature\"], `${field}.signature`);\n decodeHexBytes(certificate[\"signersBitmap\"], `${field}.signersBitmap`);\n const signerIndices = certificate[\"signerIndices\"];\n if (!Array.isArray(signerIndices)) {\n throw new NoEvmReceiptProofError(\n \"invalid_proof_shape\",\n `${field}.signerIndices must be an array`,\n );\n }\n signerIndices.forEach((index, signerIndex) => {\n assertUint32(index, `${field}.signerIndices[${signerIndex}]`);\n if ((index as number) > 0xffff) {\n throw new NoEvmReceiptProofError(\n \"invalid_proof_shape\",\n `${field}.signerIndices[${signerIndex}] must fit u16`,\n );\n }\n });\n assertUint32(certificate[\"signerCount\"], `${field}.signerCount`);\n if ((certificate[\"signerCount\"] as number) > 0xffff) {\n throw new NoEvmReceiptProofError(\"invalid_proof_shape\", `${field}.signerCount must fit u16`);\n }\n if (certificate[\"signerCount\"] !== signerIndices.length) {\n throw new NoEvmReceiptProofError(\n \"invalid_proof_shape\",\n `${field}.signerCount must match signerIndices length`,\n );\n }\n}\n\nfunction validateFinalityThreshold(threshold: number, trustedCapacity: number): void {\n if (!Number.isSafeInteger(threshold) || threshold < 1) {\n throw new NoEvmReceiptProofError(\n \"invalid_proof_shape\",\n \"finality evidence threshold must be at least 1\",\n );\n }\n if (!Number.isSafeInteger(trustedCapacity) || trustedCapacity < 0 || trustedCapacity > 0xffff) {\n throw new NoEvmReceiptProofError(\n \"invalid_proof_shape\",\n \"finality evidence trusted signer capacity must fit u16\",\n );\n }\n if (threshold > trustedCapacity) {\n throw new NoEvmReceiptProofError(\n \"invalid_proof_shape\",\n `finality evidence threshold ${threshold} exceeds trusted signer capacity ${trustedCapacity}`,\n );\n }\n}\n\nfunction requireBlockReference(\n finalityEvidence: NoEvmFinalityEvidence,\n): NoEvmFinalityBlockReference {\n const blockReference = finalityEvidence.blockReference;\n if (blockReference == null) {\n throw new NoEvmReceiptProofError(\n \"invalid_proof_shape\",\n \"finalityEvidence.blockReference is required for block-bound finality verification\",\n );\n }\n validateFinalityBlockReference(blockReference, finalityEvidence.round);\n return blockReference;\n}\n\nfunction requireBlockFinalityCertificate(\n certificate: NoEvmFinalityCertificate | null | undefined,\n field: string,\n): NoEvmFinalityCertificate {\n if (certificate == null) {\n throw new NoEvmReceiptProofError(\n \"invalid_proof_shape\",\n `${field} is required for block-bound finality verification`,\n );\n }\n return certificate;\n}\n\nfunction decodeFinalityCertificateSignature(\n certificate: NoEvmFinalityCertificate,\n field: string,\n): Uint8Array {\n const signature = decodeHexBytes(certificate.signature, `${field}.signature`);\n if (signature.length !== BLS_SIGNATURE_BYTE_LENGTH) {\n throw new NoEvmReceiptProofError(\n \"invalid_hash_length\",\n `${field}.signature must be ${BLS_SIGNATURE_BYTE_LENGTH} bytes, got ${signature.length}`,\n );\n }\n return signature;\n}\n\nfunction signerIndicesFromBitmap(bitmap: Uint8Array): number[] {\n const out: number[] = [];\n bitmap.forEach((byte, byteIndex) => {\n for (let bitIndex = 0; bitIndex < 8; bitIndex += 1) {\n if ((byte & (1 << bitIndex)) === 0) continue;\n const signerIndex = byteIndex * 8 + bitIndex;\n if (signerIndex > 0xffff) {\n throw new NoEvmReceiptProofError(\n \"invalid_proof_shape\",\n \"finalityEvidence signer bitmap index exceeds u16 authority range\",\n );\n }\n out.push(signerIndex);\n }\n });\n return out;\n}\n\nfunction finalityCertificateVerificationBase(\n certificate: NoEvmFinalityCertificate,\n bitmapSignerIndices: readonly number[],\n committeeSize: number,\n threshold: number,\n): Omit<NoEvmBlsFinalityVerification, \"verified\"> {\n const signerCountMatches =\n certificate.signerCount === certificate.signerIndices.length &&\n certificate.signerCount === bitmapSignerIndices.length;\n const signerBitmapMatchesIndices = arraysEqual(certificate.signerIndices, bitmapSignerIndices);\n const signerIndicesInRange = bitmapSignerIndices.every(\n (signerIndex) => signerIndex < committeeSize,\n );\n const acceptedSignatureCount = bitmapSignerIndices.length;\n return {\n finalityEvidencePresent: true,\n signerCountMatches,\n signerBitmapMatchesIndices,\n signerIndicesInRange,\n allSignersTrusted: false,\n thresholdMet: acceptedSignatureCount >= threshold,\n signatureValid: false,\n acceptedSignatureCount,\n requiredSignatureCount: threshold,\n };\n}\n\nfunction finalizeBlsFinalityVerification(\n verification: Omit<NoEvmBlsFinalityVerification, \"verified\">,\n): NoEvmBlsFinalityVerification {\n return {\n ...verification,\n verified:\n verification.finalityEvidencePresent &&\n verification.signerCountMatches &&\n verification.signerBitmapMatchesIndices &&\n verification.signerIndicesInRange &&\n verification.allSignersTrusted &&\n verification.thresholdMet &&\n verification.signatureValid,\n };\n}\n\nfunction verifyBlsSignature(\n publicKey: Uint8Array,\n message: Uint8Array,\n signature: Uint8Array,\n): boolean {\n try {\n const hashedMessage = bls12_381.longSignatures.hash(message, BLS_DST);\n return bls12_381.longSignatures.verify(signature, hashedMessage, publicKey);\n } catch {\n return false;\n }\n}\n\nfunction verifyBlsAggregateSignature(\n publicKeys: readonly Uint8Array[],\n message: Uint8Array,\n signature: Uint8Array,\n): boolean {\n try {\n const aggregatePublicKey = bls12_381.longSignatures.aggregatePublicKeys([...publicKeys]);\n return verifyBlsSignature(\n aggregatePublicKey.toBytes(),\n message,\n signature,\n );\n } catch {\n return false;\n }\n}\n\nfunction expectBlsBytes(\n value: Uint8Array | readonly number[],\n expectedLength: number,\n field: string,\n): Uint8Array {\n const bytes = value instanceof Uint8Array ? value : Uint8Array.from(value);\n if (bytes.length !== expectedLength) {\n throw new NoEvmReceiptProofError(\n \"invalid_hash_length\",\n `${field} must be ${expectedLength} bytes, got ${bytes.length}`,\n );\n }\n return bytes;\n}\n\nfunction writeU64Le(\n out: Uint8Array,\n offset: number,\n value: number | bigint,\n field: string,\n): void {\n if (typeof value === \"number\" && (!Number.isSafeInteger(value) || value < 0)) {\n throw new NoEvmReceiptProofError(\"invalid_uint32\", `${field} must fit u64`);\n }\n const big = typeof value === \"bigint\" ? value : BigInt(value);\n if (big < 0n || big > 0xffff_ffff_ffff_ffffn) {\n throw new NoEvmReceiptProofError(\"invalid_uint32\", `${field} must fit u64`);\n }\n for (let i = 0; i < 8; i += 1) {\n out[offset + i] = Number((big >> BigInt(i * 8)) & 0xffn);\n }\n}\n\nfunction writeU16Le(out: Uint8Array, offset: number, value: unknown, field: string): void {\n if (!Number.isInteger(value) || (value as number) < 0 || (value as number) > 0xffff) {\n throw new NoEvmReceiptProofError(\"invalid_uint32\", `${field} must fit u16`);\n }\n const int = value as number;\n out[offset] = int & 0xff;\n out[offset + 1] = (int >> 8) & 0xff;\n}\n\nfunction arraysEqual(a: readonly number[], b: readonly number[]): boolean {\n return a.length === b.length && a.every((value, index) => value === b[index]);\n}\n\nfunction getCompactInclusionProof(\n proof: NoEvmReceiptProof,\n): NoEvmCompactReceiptProof[\"compactInclusionProof\"] {\n const compactProof = (proof as NoEvmCompactReceiptProof).compactInclusionProof;\n if (!isRecord(compactProof)) {\n throw new NoEvmReceiptProofError(\n \"invalid_proof_shape\",\n \"compactInclusion proof requires compactInclusionProof\",\n );\n }\n return compactProof as NoEvmCompactReceiptProof[\"compactInclusionProof\"];\n}\n\nfunction getTargetReceiptBytes(proof: NoEvmReceiptProof): string {\n const value = (proof as NoEvmCompactReceiptProof & { targetReceiptBytes?: unknown })\n .targetReceiptBytes;\n if (typeof value !== \"string\") {\n throw new NoEvmReceiptProofError(\n \"missing_target_receipt_bytes\",\n \"compactInclusion proof requires targetReceiptBytes\",\n );\n }\n return value;\n}\n\nfunction getProofKind(proof: NoEvmReceiptProof): string {\n return (proof as { proofKind?: unknown }).proofKind === undefined\n ? \"boundedCacheTranscript\"\n : String((proof as { proofKind?: unknown }).proofKind);\n}\n\nfunction getHistorySource(proof: NoEvmReceiptProof): string {\n return getOptionalHistorySource(proof) ?? \"legacyUnspecified\";\n}\n\nfunction getOptionalHistorySource(proof: NoEvmReceiptProof): string | undefined {\n const value = (proof as { historySource?: unknown }).historySource;\n return value === undefined ? undefined : String(value);\n}\n\nfunction assertSupportedRootAlgorithm(actual: string): void {\n if (\n actual !== NO_EVM_RECEIPT_ROOT_ALGORITHM &&\n actual !== NO_EVM_LEGACY_BINARY_RECEIPT_ROOT_ALGORITHM &&\n actual !== NO_EVM_LEGACY_RECEIPT_ROOT_ALGORITHM &&\n actual !== NO_EVM_COMPACT_INCLUSION_TREE_ALGORITHM\n ) {\n throw new NoEvmReceiptProofError(\n \"unsupported_root_algorithm\",\n `unsupported no-EVM receipt proof rootAlgorithm: ${actual}`,\n );\n }\n}\n\nfunction assertSupported(\n actual: unknown,\n expected: string,\n field: string,\n code: NoEvmReceiptProofErrorCode,\n): void {\n if (actual !== expected) {\n throw new NoEvmReceiptProofError(code, `unsupported no-EVM receipt proof ${field}: ${actual}`);\n }\n}\n\nfunction assertUint32(value: unknown, field: string): asserts value is number {\n if (!Number.isInteger(value) || (value as number) < 0 || (value as number) > UINT32_MAX) {\n throw new NoEvmReceiptProofError(\"invalid_uint32\", `${field} must be a uint32`);\n }\n}\n\nfunction assertSafeNonNegativeInteger(value: unknown, field: string): asserts value is number {\n if (!Number.isSafeInteger(value) || (value as number) < 0) {\n throw new NoEvmReceiptProofError(\n \"invalid_proof_shape\",\n `${field} must be a non-negative safe integer`,\n );\n }\n}\n\nfunction computeNoEvmReceiptsRootBytes(receipts: readonly Uint8Array[]): Uint8Array {\n if (receipts.length > UINT32_MAX) {\n throw new NoEvmReceiptProofError(\n \"too_many_receipts\",\n `receiptTranscript has ${receipts.length} receipts, exceeding u32::MAX`,\n );\n }\n\n if (receipts.length === 0) {\n const preimage = new Uint8Array(EMPTY_ROOT_DOMAIN_BYTES.length + 4);\n const view = new DataView(preimage.buffer);\n preimage.set(EMPTY_ROOT_DOMAIN_BYTES, 0);\n view.setUint32(EMPTY_ROOT_DOMAIN_BYTES.length, 0, true);\n return keccak_256(preimage);\n }\n\n let level = receipts.map((receipt, index) => computeNoEvmReceiptLeafHashBytes(receipt, index));\n while (level.length > 1) {\n const nextLevel: Uint8Array[] = [];\n for (let index = 0; index < level.length; index += 2) {\n const left = level[index]!;\n const right = level[index + 1] ?? left;\n nextLevel.push(computeNoEvmReceiptNodeHashBytes(left, right));\n }\n level = nextLevel;\n }\n return level[0]!;\n}\n\nfunction computeNoEvmReceiptLeafHashBytes(receiptBytes: Uint8Array, txIndex: number): Uint8Array {\n assertUint32(txIndex, \"txIndex\");\n if (receiptBytes.length > UINT32_MAX) {\n throw new NoEvmReceiptProofError(\n \"receipt_too_large\",\n `receiptTranscript[${txIndex}] has ${receiptBytes.length} bytes, exceeding u32::MAX`,\n );\n }\n\n const preimage = new Uint8Array(LEAF_DOMAIN_BYTES.length + 8 + receiptBytes.length);\n const view = new DataView(preimage.buffer);\n let offset = 0;\n preimage.set(LEAF_DOMAIN_BYTES, offset);\n offset += LEAF_DOMAIN_BYTES.length;\n view.setUint32(offset, txIndex, true);\n offset += 4;\n view.setUint32(offset, receiptBytes.length, true);\n offset += 4;\n preimage.set(receiptBytes, offset);\n return keccak_256(preimage);\n}\n\nfunction computeNoEvmReceiptNodeHashBytes(left: Uint8Array, right: Uint8Array): Uint8Array {\n assertHashBytes(left, \"left receipt node hash\");\n assertHashBytes(right, \"right receipt node hash\");\n\n const preimage = new Uint8Array(NODE_DOMAIN_BYTES.length + HASH_BYTE_LENGTH * 2);\n let offset = 0;\n preimage.set(NODE_DOMAIN_BYTES, offset);\n offset += NODE_DOMAIN_BYTES.length;\n preimage.set(left, offset);\n offset += HASH_BYTE_LENGTH;\n preimage.set(right, offset);\n return keccak_256(preimage);\n}\n\nfunction computeCompactRootFromPath(\n leafHash: Uint8Array,\n siblingHashes: readonly Uint8Array[],\n pathSides: readonly boolean[],\n): Uint8Array {\n let current = leafHash;\n for (let index = 0; index < siblingHashes.length; index++) {\n const sibling = siblingHashes[index]!;\n current = pathSides[index]!\n ? computeNoEvmReceiptNodeHashBytes(sibling, current)\n : computeNoEvmReceiptNodeHashBytes(current, sibling);\n }\n return current;\n}\n\nfunction decodeHash(value: unknown, field: string): Uint8Array {\n const bytes = decodeHexBytes(value, field);\n if (bytes.length !== HASH_BYTE_LENGTH) {\n throw new NoEvmReceiptProofError(\n \"invalid_hash_length\",\n `${field} must be 32 bytes, got ${bytes.length}`,\n );\n }\n return bytes;\n}\n\nfunction decodeHexBytes(value: unknown, field: string): Uint8Array {\n if (typeof value !== \"string\" || !(value.startsWith(\"0x\") || value.startsWith(\"0X\"))) {\n throw new NoEvmReceiptProofError(\"invalid_hex\", `${field} must be 0x-prefixed even-length hex`);\n }\n const body = value.slice(2);\n if (body.length % 2 !== 0 || !HEX_RE.test(body)) {\n throw new NoEvmReceiptProofError(\"invalid_hex\", `${field} must be 0x-prefixed even-length hex`);\n }\n\n const out = new Uint8Array(body.length / 2);\n for (let index = 0; index < out.length; index++) {\n out[index] = Number.parseInt(body.slice(index * 2, index * 2 + 2), 16);\n }\n return out;\n}\n\nfunction assertHashBytes(value: Uint8Array, field: string): void {\n if (value.length !== HASH_BYTE_LENGTH) {\n throw new NoEvmReceiptProofError(\n \"invalid_hash_length\",\n `${field} must be 32 bytes, got ${value.length}`,\n );\n }\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nfunction bytesEqual(a: Uint8Array, b: Uint8Array): boolean {\n if (a.length !== b.length) return false;\n let diff = 0;\n for (let index = 0; index < a.length; index++) {\n diff |= a[index]! ^ b[index]!;\n }\n return diff === 0;\n}\n\nfunction bytesToHex(bytes: Uint8Array): string {\n let out = \"0x\";\n for (let index = 0; index < bytes.length; index++) {\n out += bytes[index]!.toString(16).padStart(2, \"0\");\n }\n return out;\n}\n","import { typedBech32ToAddress } from \"./address.js\";\nimport type { MrvAbiManifest } from \"./bindings/MrvAbiManifest.js\";\n\nexport const NATIVE_DEV_HOST_API_VERSION = \"0.1.0\" as const;\nexport const NATIVE_DEV_MANIFEST_SCHEMA_VERSION = 1 as const;\nexport const NATIVE_DEV_IPC_PROTOCOL_VERSION = \"mono.native-dev.ipc.v1\" as const;\n\nexport type NativeDevkitChannel = \"stable\" | \"testnet\" | \"local\";\nexport type NativeDevkitSidecarStatus = \"missing\" | \"stopped\" | \"starting\" | \"running\" | \"unhealthy\";\nexport type NativeDevkitCompatibility = \"compatible\" | \"too_old_for_host\" | \"too_new_for_host\" | \"invalid_manifest\";\nexport type StudioHostState = \"disabled\" | \"missing_devkit\" | \"incompatible_devkit\" | \"ready\";\nexport type NativeDevRiskSeverity = \"info\" | \"warning\" | \"critical\";\n\nexport interface NativeDevRiskLabel {\n id: string;\n title: string;\n severity: NativeDevRiskSeverity;\n detail: string;\n}\n\nexport interface NativeDevkitArchive {\n url: string;\n sha256: string;\n signature: string;\n signatureScheme?: \"ed25519\";\n signingKeyId?: string;\n trustRoot?: string;\n signingPublicKey?: string;\n sizeBytes?: number;\n}\n\nexport interface NativeDevkitSidecarManifest {\n binaryName: string;\n ipcProtocolVersion: string;\n}\n\nexport interface NativeDevkitManifest {\n schemaVersion: typeof NATIVE_DEV_MANIFEST_SCHEMA_VERSION;\n devkitVersion: string;\n channel: NativeDevkitChannel;\n minimumWalletHostApi: string;\n maximumWalletHostApi: string;\n monoCoreCommit: string;\n monoCoreSdkCommit: string;\n archive: NativeDevkitArchive;\n sidecar: NativeDevkitSidecarManifest;\n releaseNotesUrl?: string;\n}\n\nexport interface NativeDevkitStatus {\n installedVersion?: string;\n channel: NativeDevkitChannel;\n hostApiVersion: string;\n installPath?: string;\n sidecarStatus: NativeDevkitSidecarStatus;\n manifest?: NativeDevkitManifest;\n compatibility: NativeDevkitCompatibility;\n message: string;\n}\n\nexport interface StudioHostStatus {\n state: StudioHostState;\n developerModeEnabled: boolean;\n hostApiVersion: string;\n devkit: NativeDevkitStatus;\n}\n\nexport interface NativeDevSidecarReadyMessage {\n direction: \"sidecar_to_host\";\n kind: \"ready\";\n protocolVersion: string;\n devkitVersion: string;\n workspaceRoot?: string;\n}\n\nexport interface NativeDevSidecarProjectEventMessage {\n direction: \"sidecar_to_host\";\n kind: \"project_event\";\n protocolVersion?: string;\n projectId: string;\n event: \"created\" | \"opened\" | \"build_started\" | \"build_finished\" | \"test_finished\" | \"simulation_finished\";\n summary: string;\n}\n\nexport interface NativeDevSidecarApprovalRequestMessage {\n direction: \"sidecar_to_host\";\n kind: \"approval_request\";\n protocolVersion?: string;\n request: NativeDevWalletApprovalRequest;\n}\n\nexport type NativeDevCommandName =\n | \"readiness\"\n | \"build\"\n | \"validate\"\n | \"test\"\n | \"simulate\"\n | \"trace\"\n | \"deploy_plan\";\n\nexport interface NativeDevSidecarCommandResultMessage {\n direction: \"sidecar_to_host\";\n kind: \"command_result\";\n protocolVersion?: string;\n command: NativeDevCommandName;\n requestId: string;\n ok: boolean;\n preview: boolean;\n output?: unknown;\n error?: string;\n}\n\nexport interface NativeDevHostContextMessage {\n direction: \"host_to_sidecar\";\n kind: \"host_context\";\n selectedProjectRoot?: string;\n activeNetwork: {\n networkId: string;\n name: string;\n };\n readOnlyWalletAddress?: string;\n}\n\nexport interface NativeDevHostApprovalResultMessage {\n direction: \"host_to_sidecar\";\n kind: \"approval_result\";\n protocolVersion?: string;\n requestId: string;\n approved: boolean;\n reason?: string;\n}\n\nexport interface NativeDevHostCommandMessage {\n direction: \"host_to_sidecar\";\n kind: \"devkit_command\";\n protocolVersion?: string;\n requestId: string;\n command: NativeDevCommandName;\n selectedProjectRoot?: string;\n authorityAddress?: string;\n networkId?: string;\n}\n\nexport type NativeDevIpcMessage =\n | NativeDevSidecarReadyMessage\n | NativeDevSidecarProjectEventMessage\n | NativeDevSidecarApprovalRequestMessage\n | NativeDevSidecarCommandResultMessage\n | NativeDevHostContextMessage\n | NativeDevHostApprovalResultMessage\n | NativeDevHostCommandMessage;\n\nexport type NativeDevApprovalKind =\n | \"mrv_deploy\"\n | \"mrv_call\"\n | \"mrc_token_create\"\n | \"verification_publish\";\n\nexport interface NativeDevWalletApprovalRequest {\n id: string;\n kind: NativeDevApprovalKind;\n createdAt: string;\n origin: \"mono_studio_host\" | \"mono_devkit\" | \"lyth_dev_mcp\";\n networkId: string;\n authorityAddress: string;\n title: string;\n summary: string;\n riskLabels: NativeDevRiskLabel[];\n payload: Record<string, unknown>;\n}\n\nexport interface NativeDevMrvDeployPlan {\n networkId: string;\n authorityAddress: string;\n expectedContractAddress: string;\n artifactHash: string;\n abiHash: string;\n valueLythoshi: string;\n executionUnitLimit: string;\n maxExecutionFeeLythoshi: string;\n constructorInput: string;\n riskLabels: NativeDevRiskLabel[];\n abiManifest?: MrvAbiManifest;\n walletApprovalRequest: NativeDevWalletApprovalRequest;\n}\n\nexport type NativeDevMrcAssetKind =\n | \"mrc20_fixed_supply\"\n | \"mrc20_capped_mint\"\n | \"mrc721_collection\"\n | \"mrc1155_collection\"\n | \"mrc4626_vault\";\n\nexport interface NativeDevMrcAllocation {\n address: string;\n amount: string;\n}\n\nexport interface NativeDevMrcTokenPlan {\n assetKind: NativeDevMrcAssetKind;\n name: string;\n symbol: string;\n decimals: number;\n supplyPolicy: \"fixed\" | \"capped\" | \"collection\" | \"vault\";\n mintPolicy: \"none\" | \"issuer\" | \"role\";\n transferPolicy: \"open\" | \"restricted\";\n metadataPolicy: \"immutable\" | \"mutable\";\n adminRoles: string[];\n issuerAddress: string;\n initialAllocations: NativeDevMrcAllocation[];\n riskLabels: NativeDevRiskLabel[];\n walletApprovalRequest: NativeDevWalletApprovalRequest;\n}\n\nexport interface NativeDevVerificationBundle {\n bundleHash: string;\n contractPassport: NativeDevContractPassport;\n artifact: {\n artifactHash: string;\n sourceBundleHash: string;\n abiHash: string;\n };\n files: Array<{\n path: string;\n hash: string;\n }>;\n walletApprovalRequest?: NativeDevWalletApprovalRequest;\n}\n\nexport interface NativeDevContractPassport {\n address: string;\n artifactHash: string;\n sourceBundleHash: string;\n abiHash: string;\n compilerVersion: string;\n sdkVersion: string;\n templateId?: string;\n verificationStatus: \"draft\" | \"submitted\" | \"verified\" | \"rejected\";\n riskLabels: NativeDevRiskLabel[];\n deployTx?: string;\n issuer: string;\n}\n\nexport function compareNativeDevVersions(left: string, right: string): number {\n const leftParts = parseVersionParts(left);\n const rightParts = parseVersionParts(right);\n for (let index = 0; index < 3; index += 1) {\n const delta = (leftParts[index] ?? 0) - (rightParts[index] ?? 0);\n if (delta !== 0) return delta > 0 ? 1 : -1;\n }\n return 0;\n}\n\nexport function checkNativeDevkitCompatibility(\n manifest: NativeDevkitManifest | undefined,\n hostApiVersion: string = NATIVE_DEV_HOST_API_VERSION,\n): NativeDevkitCompatibility {\n if (manifest === undefined || manifest.schemaVersion !== NATIVE_DEV_MANIFEST_SCHEMA_VERSION) {\n return \"invalid_manifest\";\n }\n if (manifest.sidecar.ipcProtocolVersion !== NATIVE_DEV_IPC_PROTOCOL_VERSION) {\n return \"invalid_manifest\";\n }\n if (compareNativeDevVersions(hostApiVersion, manifest.minimumWalletHostApi) < 0) {\n return \"too_new_for_host\";\n }\n if (compareNativeDevVersions(hostApiVersion, manifest.maximumWalletHostApi) > 0) {\n return \"too_old_for_host\";\n }\n return \"compatible\";\n}\n\nexport function resolveStudioHostStatus(args: {\n developerModeEnabled: boolean;\n channel: NativeDevkitChannel;\n hostApiVersion?: string;\n installPath?: string;\n manifest?: NativeDevkitManifest;\n sidecarStatus?: NativeDevkitSidecarStatus;\n}): StudioHostStatus {\n const hostApiVersion = args.hostApiVersion ?? NATIVE_DEV_HOST_API_VERSION;\n const compatibility = checkNativeDevkitCompatibility(args.manifest, hostApiVersion);\n const installedVersion = args.manifest?.devkitVersion;\n const devkit: NativeDevkitStatus = {\n installedVersion,\n channel: args.channel,\n hostApiVersion,\n installPath: args.installPath,\n sidecarStatus: args.sidecarStatus ?? (args.installPath ? \"stopped\" : \"missing\"),\n manifest: args.manifest,\n compatibility,\n message: nativeDevkitStatusMessage(compatibility, args.installPath),\n };\n\n if (!args.developerModeEnabled) {\n return {\n state: \"disabled\",\n developerModeEnabled: false,\n hostApiVersion,\n devkit,\n };\n }\n if (!args.installPath || !args.manifest) {\n return {\n state: \"missing_devkit\",\n developerModeEnabled: true,\n hostApiVersion,\n devkit,\n };\n }\n if (compatibility !== \"compatible\") {\n return {\n state: \"incompatible_devkit\",\n developerModeEnabled: true,\n hostApiVersion,\n devkit,\n };\n }\n return {\n state: \"ready\",\n developerModeEnabled: true,\n hostApiVersion,\n devkit,\n };\n}\n\nexport function assertNativeDevWalletApprovalRequest(request: NativeDevWalletApprovalRequest): void {\n typedBech32ToAddress(request.authorityAddress, \"user\");\n if (!request.id.trim()) throw new Error(\"approval request id is required\");\n if (!request.networkId.trim()) throw new Error(\"approval request network id is required\");\n if (!request.title.trim()) throw new Error(\"approval request title is required\");\n if (!request.summary.trim()) throw new Error(\"approval request summary is required\");\n}\n\nexport function assertNativeDevMrvDeployPlan(plan: NativeDevMrvDeployPlan): void {\n typedBech32ToAddress(plan.authorityAddress, \"user\");\n typedBech32ToAddress(plan.expectedContractAddress, \"contract\");\n assertHash(\"artifactHash\", plan.artifactHash);\n assertHash(\"abiHash\", plan.abiHash);\n assertWholeNumber(\"valueLythoshi\", plan.valueLythoshi);\n assertWholeNumber(\"executionUnitLimit\", plan.executionUnitLimit);\n assertWholeNumber(\"maxExecutionFeeLythoshi\", plan.maxExecutionFeeLythoshi);\n assertNativeDevWalletApprovalRequest(plan.walletApprovalRequest);\n}\n\nexport function assertNativeDevMrcTokenPlan(plan: NativeDevMrcTokenPlan): void {\n typedBech32ToAddress(plan.issuerAddress, \"user\");\n if (!plan.name.trim()) throw new Error(\"token name is required\");\n if (!/^[A-Z0-9]{2,12}$/.test(plan.symbol)) throw new Error(\"token symbol must be uppercase\");\n if (!Number.isInteger(plan.decimals) || plan.decimals < 0 || plan.decimals > 18) {\n throw new Error(\"token decimals must be between 0 and 18\");\n }\n for (const allocation of plan.initialAllocations) {\n typedBech32ToAddress(allocation.address, \"user\");\n assertWholeNumber(\"allocation.amount\", allocation.amount);\n }\n assertNativeDevWalletApprovalRequest(plan.walletApprovalRequest);\n}\n\nexport function nativeDevUiStrings(): readonly string[] {\n return [\n \"Mono Studio Host\",\n \"Developer Mode\",\n \"DevKit missing\",\n \"DevKit incompatible\",\n \"DevKit ready\",\n \"Wallet approval required\",\n \"Execution units\",\n \"Maximum execution fee\",\n \"Lythoshi value\",\n \"Artifact hash\",\n \"ABI manifest\",\n \"Token passport\",\n \"Verification bundle\",\n ] as const;\n}\n\nexport function nativeDevSchemaFieldNames(): readonly string[] {\n return [\n \"schemaVersion\",\n \"devkitVersion\",\n \"channel\",\n \"minimumWalletHostApi\",\n \"maximumWalletHostApi\",\n \"monoCoreCommit\",\n \"monoCoreSdkCommit\",\n \"archive\",\n \"signatureScheme\",\n \"signingKeyId\",\n \"trustRoot\",\n \"signingPublicKey\",\n \"sidecar\",\n \"releaseNotesUrl\",\n \"installedVersion\",\n \"hostApiVersion\",\n \"installPath\",\n \"sidecarStatus\",\n \"compatibility\",\n \"developerModeEnabled\",\n \"selectedProjectRoot\",\n \"activeNetwork\",\n \"networkId\",\n \"readOnlyWalletAddress\",\n \"requestId\",\n \"approved\",\n \"command\",\n \"output\",\n \"preview\",\n \"authorityAddress\",\n \"expectedContractAddress\",\n \"artifactHash\",\n \"abiHash\",\n \"valueLythoshi\",\n \"executionUnitLimit\",\n \"maxExecutionFeeLythoshi\",\n \"constructorInput\",\n \"walletApprovalRequest\",\n \"issuerAddress\",\n \"initialAllocations\",\n \"bundleHash\",\n \"contractPassport\",\n \"sourceBundleHash\",\n \"compilerVersion\",\n \"sdkVersion\",\n \"verificationStatus\",\n ] as const;\n}\n\nfunction nativeDevkitStatusMessage(compatibility: NativeDevkitCompatibility, installPath?: string): string {\n if (!installPath) return \"DevKit is not installed.\";\n if (compatibility === \"compatible\") return \"DevKit is compatible with this wallet host.\";\n if (compatibility === \"too_old_for_host\") return \"DevKit is older than this wallet host API.\";\n if (compatibility === \"too_new_for_host\") return \"DevKit requires a newer wallet host API.\";\n return \"DevKit manifest is invalid.\";\n}\n\nfunction parseVersionParts(version: string): [number, number, number] {\n const match = version.trim().match(/^(\\d+)\\.(\\d+)\\.(\\d+)/);\n if (!match) return [0, 0, 0];\n return [Number(match[1]), Number(match[2]), Number(match[3])];\n}\n\nfunction assertHash(field: string, value: string): void {\n if (!/^[0-9a-f]{64}$/i.test(value)) {\n throw new Error(`${field} must be a 32 byte lowercase hex hash`);\n }\n}\n\nfunction assertWholeNumber(field: string, value: string): void {\n if (!/^[0-9]+$/.test(value)) {\n throw new Error(`${field} must be a whole number`);\n }\n}\n","/**\n * Delegation precompile ABI helpers.\n *\n * The V4.1 redemption completion call prunes a matured redemption\n * queue ticket. It does not imply principal payout until mono-core adds\n * stake-vault/redemption-escrow accounting.\n */\n\nimport { PRECOMPILE_ADDRESSES } from \"./consts.js\";\n\nexport const DELEGATION_SELECTORS = {\n delegate: \"0x662337de\",\n undelegate: \"0x914f3ca8\",\n redelegate: \"0xa06ac18f\",\n claim: \"0x4e71d92d\",\n setAutoCompound: \"0x86593454\",\n completeRedemption: \"0x26169d0a\",\n} as const;\n\nexport const DELEGATION_REVERT_TAGS = {\n redemptionQueueFull: \"0x020e\",\n redemptionTicketNotFound: \"0x020f\",\n redemptionNotMature: \"0x0210\",\n redemptionPrincipalUnavailable: \"0x0211\",\n} as const;\n\nexport class DelegationPrecompileError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"DelegationPrecompileError\";\n }\n}\n\nexport function delegationAddressHex(): string {\n return PRECOMPILE_ADDRESSES.DELEGATION.toLowerCase();\n}\n\nexport function encodeCompleteRedemptionCalldata(index: bigint | number | string): string {\n return bytesToHex(\n concatBytes(\n hexToBytes(DELEGATION_SELECTORS.completeRedemption),\n uint64Word(index, \"index\"),\n ),\n );\n}\n\n/** `delegate(uint32 cluster, uint16 weightBps)` — caller sends LYTH as msg.value\n * to set their principal stake for `cluster`; `weightBps` is the fraction\n * of voting power (max 10_000 = 100%). */\nexport function encodeDelegateCalldata(\n cluster: bigint | number | string,\n weightBps: bigint | number | string,\n): string {\n return bytesToHex(\n concatBytes(\n hexToBytes(DELEGATION_SELECTORS.delegate),\n uint32Word(cluster, \"cluster\"),\n uint16Word(weightBps, \"weightBps\"),\n ),\n );\n}\n\n/** `undelegate(uint32 cluster)` — removes the caller's row + appends a\n * redemption ticket. Principal becomes claimable through\n * `completeRedemption(uint64 index)` once the ticket matures. */\nexport function encodeUndelegateCalldata(cluster: bigint | number | string): string {\n return bytesToHex(\n concatBytes(\n hexToBytes(DELEGATION_SELECTORS.undelegate),\n uint32Word(cluster, \"cluster\"),\n ),\n );\n}\n\n/** `redelegate(uint32 fromCluster, uint32 toCluster, uint16 weightBps)`. */\nexport function encodeRedelegateCalldata(\n fromCluster: bigint | number | string,\n toCluster: bigint | number | string,\n weightBps: bigint | number | string,\n): string {\n return bytesToHex(\n concatBytes(\n hexToBytes(DELEGATION_SELECTORS.redelegate),\n uint32Word(fromCluster, \"fromCluster\"),\n uint32Word(toCluster, \"toCluster\"),\n uint16Word(weightBps, \"weightBps\"),\n ),\n );\n}\n\n/** `claim()` — settle + withdraw the caller's pending delegation rewards. */\nexport function encodeClaimCalldata(): string {\n return DELEGATION_SELECTORS.claim;\n}\n\n/** `setAutoCompound(bool enabled)` — persists the caller's auto-compound\n * preference. */\nexport function encodeSetAutoCompoundCalldata(enabled: boolean): string {\n const flag = new Uint8Array(32);\n flag[31] = enabled ? 1 : 0;\n return bytesToHex(\n concatBytes(hexToBytes(DELEGATION_SELECTORS.setAutoCompound), flag),\n );\n}\n\nexport function isRedemptionPrincipalUnavailableRevert(data: string | Uint8Array | readonly number[]): boolean {\n return bytesToHex(toBytes(data)).toLowerCase() === DELEGATION_REVERT_TAGS.redemptionPrincipalUnavailable;\n}\n\nfunction uint64Word(value: bigint | number | string, name: string): Uint8Array {\n const n = toBigint(value, name);\n if (n < 0n || n > 0xffff_ffff_ffff_ffffn) {\n throw new DelegationPrecompileError(`${name} must fit uint64`);\n }\n const out = new Uint8Array(32);\n let rest = n;\n for (let i = 31; i >= 24; i--) {\n out[i] = Number(rest & 0xffn);\n rest >>= 8n;\n }\n return out;\n}\n\nfunction uint32Word(value: bigint | number | string, name: string): Uint8Array {\n const n = toBigint(value, name);\n if (n < 0n || n > 0xffff_ffffn) {\n throw new DelegationPrecompileError(`${name} must fit uint32`);\n }\n const out = new Uint8Array(32);\n let rest = n;\n for (let i = 31; i >= 28; i--) {\n out[i] = Number(rest & 0xffn);\n rest >>= 8n;\n }\n return out;\n}\n\nfunction uint16Word(value: bigint | number | string, name: string): Uint8Array {\n const n = toBigint(value, name);\n if (n < 0n || n > 0xffffn) {\n throw new DelegationPrecompileError(`${name} must fit uint16`);\n }\n const out = new Uint8Array(32);\n let rest = n;\n for (let i = 31; i >= 30; i--) {\n out[i] = Number(rest & 0xffn);\n rest >>= 8n;\n }\n return out;\n}\n\nfunction toBigint(value: bigint | number | string, name: string): bigint {\n if (typeof value === \"bigint\") return value;\n if (typeof value === \"number\") {\n if (!Number.isInteger(value) || !Number.isSafeInteger(value)) {\n throw new DelegationPrecompileError(`${name} must be a safe integer`);\n }\n return BigInt(value);\n }\n if (!/^(0x[0-9a-fA-F]+|[0-9]+)$/.test(value)) {\n throw new DelegationPrecompileError(`${name} must be an integer string`);\n }\n return BigInt(value);\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 DelegationPrecompileError(\"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","/**\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 { addressBytesToHex, hexToAddressBytes, typedBech32ToAddress } 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 /** Typed `mono` bech32m sub-account address. */\n subAccount: string;\n /** Typed `mono` bech32m principal address. */\n principal: string;\n dailyCapLythoshi: bigint | number | string;\n perTxCapLythoshi: 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 = toRawAddressBytes(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.dailyCapLythoshi, \"dailyCapLythoshi\"),\n uint128Bytes(normalized.perTxCapLythoshi, \"perTxCapLythoshi\"),\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): string {\n return encodeSingleAddressCall(SPENDING_POLICY_SELECTORS.enable, subAccount, \"subAccount\");\n}\n\nexport function encodeDisableCalldata(subAccount: string): string {\n return encodeSingleAddressCall(SPENDING_POLICY_SELECTORS.disable, subAccount, \"subAccount\");\n}\n\ninterface NormalizedSpendingPolicyArgs {\n subAccount: Uint8Array;\n principal: Uint8Array;\n dailyCapLythoshi: bigint;\n perTxCapLythoshi: bigint;\n allowRoot: Uint8Array;\n denyRoot: Uint8Array;\n}\n\nfunction normalizeArgs(args: SpendingPolicyArgs): NormalizedSpendingPolicyArgs {\n return {\n subAccount: toUserAddressBytes(args.subAccount, \"subAccount\"),\n principal: toUserAddressBytes(args.principal, \"principal\"),\n dailyCapLythoshi: toBigint(args.dailyCapLythoshi, \"dailyCapLythoshi\"),\n perTxCapLythoshi: toBigint(args.perTxCapLythoshi, \"perTxCapLythoshi\"),\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.dailyCapLythoshi),\n encodeUint128Word(args.perTxCapLythoshi),\n args.allowRoot,\n args.denyRoot,\n );\n}\n\nfunction encodeSingleAddressCall(selector: string, address: string, name: string): string {\n return bytesToHex(concatBytes(hexToBytes(selector), encodeAddressWord(toUserAddressBytes(address, name))));\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 toUserAddressBytes(value: string, name: string): Uint8Array {\n if (typeof value !== \"string\") {\n throw new SpendingPolicyError(`${name} must be a typed mono bech32m address`);\n }\n if (value.startsWith(\"0x\") || value.startsWith(\"0X\")) {\n throw new SpendingPolicyError(`${name} raw 0x addresses are retired; use typed mono bech32m addresses`);\n }\n try {\n return typedBech32ToAddress(value, \"user\").bytes;\n } catch (error) {\n const detail = error instanceof Error ? `: ${error.message}` : \"\";\n throw new SpendingPolicyError(`${name} must be a typed mono bech32m address${detail}`);\n }\n}\n\nfunction toRawAddressBytes(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 { typedBech32ToAddress } 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): string {\n return encodeSingleAddressCall(PUBKEY_REGISTRY_SELECTORS.lookupPubkey, address);\n}\n\nexport function encodeHasPubkeyCalldata(address: string): 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): 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 {\n if (typeof value !== \"string\") {\n throw new PubkeyRegistryError(\"address must be a typed mono bech32m address\");\n }\n if (value.startsWith(\"0x\") || value.startsWith(\"0X\")) {\n throw new PubkeyRegistryError(\"raw 0x addresses are retired; use typed mono bech32m addresses\");\n }\n try {\n return typedBech32ToAddress(value, \"user\").bytes;\n } catch (error) {\n const detail = error instanceof Error ? `: ${error.message}` : \"\";\n throw new PubkeyRegistryError(`address must be a typed mono bech32m address${detail}`);\n }\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 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 * Native market transaction-plan builders.\n *\n * These helpers only build signer-ready transaction requests or native module\n * call material. They do not predict fills, trades, or execution success.\n */\n\nimport { blake3 } from \"@noble/hashes/blake3.js\";\nimport { keccak_256 } from \"@noble/hashes/sha3.js\";\nimport {\n ADDRESS_KIND_HRPS,\n addressToTypedBech32,\n typedBech32ToAddress,\n type AddressKind,\n} from \"./address.js\";\nimport { PRECOMPILE_ADDRESSES } from \"./consts.js\";\nimport { BincodeWriter } from \"./crypto/bincode.js\";\nimport { bytesToHex, concatBytes, hexToBytes } from \"./crypto/bytes.js\";\nimport { MempoolClass } from \"./crypto/envelope.js\";\n\nexport const CLOB_MARKET_ID_DOMAIN_TAG = 0xc1 as const;\nexport const NATIVE_MARKET_MODULE_ADDRESS_BYTES = \"0x4d41524b45545f4e41544956455f4d4f445f5631\" as const;\nexport const NATIVE_MARKET_MODULE_ADDRESS = addressToTypedBech32(\n \"systemModule\",\n NATIVE_MARKET_MODULE_ADDRESS_BYTES,\n);\nexport const NATIVE_CALL_FORWARDER_ARTIFACT_PROFILE = \"native-call-forwarder-v1\" as const;\nexport const NATIVE_CALL_FORWARDER_RESPONSE_OFFSET = 768 as const;\nexport const NATIVE_CALL_FORWARDER_RESPONSE_CAPACITY = 256 as const;\nexport const MAX_NATIVE_CALL_FORWARDER_REQUEST_BYTES = 2047 as const;\n\nexport const CLOB_SELECTORS = {\n /**\n * `placeLimitOrder(bytes32,bytes32,uint8,uint256,uint256,uint64)`\n *\n * Args: `baseTokenId, quoteTokenId, side, price, amount, expiresAtBlock`.\n */\n placeLimitOrder: \"0x2468786f\",\n /**\n * `placeMarketOrder(bytes32,bytes32,uint8,uint256,uint16)`\n *\n * Args: `baseTokenId, quoteTokenId, side, quantity, maxSlippageBps`.\n */\n placeMarketOrder: \"0xb9b1fa86\",\n /**\n * `placeMarketOrderEx(bytes32,bytes32,uint8,uint256,uint16,uint8)`\n *\n * Args: `baseTokenId, quoteTokenId, side, quantity, maxSlippageBps, mode`.\n */\n placeMarketOrderEx: \"0xa6f092f0\",\n /** `cancelOrder(bytes32)` */\n cancelOrder: \"0x7489ec23\",\n /** `setMinNotional(bytes32,bytes32,uint256)` — foundation-authorized. */\n setMinNotional: \"0x395dc48f\",\n /** `setTickSize(bytes32,bytes32,uint256)` — foundation-authorized per-market grid tune. */\n setTickSize: \"0x10666f0b\",\n /** `setLotSize(bytes32,bytes32,uint256)` — foundation-authorized per-market grid tune. */\n setLotSize: \"0x9909be80\",\n} as const;\n\nexport type SpotLimitOrderSide = \"buy\" | \"sell\";\nexport type SpotMarketOrderMode = \"fill-or-refund\" | \"fill-or-rest-at-cap\";\nexport type NativeMarketAddressKind = AddressKind;\nexport type NativeMarketAddressInput =\n | string\n | {\n kind?: NativeMarketAddressKind;\n address: string;\n };\n\nexport interface PlaceSpotLimitOrderArgs {\n /**\n * Canonical 32-byte CLOB market id, derived as\n * `keccak256(0xC1 || baseTokenId || quoteTokenId)`.\n */\n marketId: string;\n /** 32-byte base token id accepted by the CLOB precompile. */\n baseTokenId: string;\n /** 32-byte quote token id accepted by the CLOB precompile. */\n quoteTokenId: string;\n /** `buy` maps to side byte `0`; `sell` maps to side byte `1`. */\n side: SpotLimitOrderSide;\n /** Positive integer decimal string encoded as uint256. */\n price: string;\n /** Positive integer decimal string encoded as uint256 amount. */\n quantity: string;\n /** Optional uint64 block height; omitted means `0` / no explicit expiry. */\n expiryBlock?: string | number | bigint;\n}\n\nexport interface PlaceSpotMarketOrderArgs {\n /**\n * Canonical 32-byte CLOB market id, derived as\n * `keccak256(0xC1 || baseTokenId || quoteTokenId)`.\n */\n marketId: string;\n /** 32-byte base token id accepted by the CLOB precompile. */\n baseTokenId: string;\n /** 32-byte quote token id accepted by the CLOB precompile. */\n quoteTokenId: string;\n /** `buy` maps to side byte `0`; `sell` maps to side byte `1`. */\n side: SpotLimitOrderSide;\n /** Positive integer decimal string encoded as uint256 amount. */\n quantity: string;\n /** Slippage bound in basis points; must be less than 10,000. */\n maxSlippageBps: string | number | bigint;\n}\n\nexport interface PlaceSpotMarketOrderExArgs extends PlaceSpotMarketOrderArgs {\n /**\n * `fill-or-refund` keeps legacy market-order semantics; `fill-or-rest-at-cap`\n * rests the unfilled remainder at the slippage cap.\n */\n mode: SpotMarketOrderMode;\n}\n\nexport interface CancelSpotOrderArgs {\n /** 32-byte order id returned by the CLOB precompile. */\n orderId: string;\n}\n\nexport interface EncodeNativeSpotLimitOrderArgs {\n /** 32-byte native spot market id. */\n marketId: string;\n /** Owner typed bech32m MonoAddress; optional object `kind` asserts the expected HRP. */\n owner: NativeMarketAddressInput;\n /** Per-owner order nonce encoded as uint64. */\n nonce: string | number | bigint;\n /** `buy` maps to native `OrderSide::Bid`; `sell` maps to native `OrderSide::Ask`. */\n side: SpotLimitOrderSide;\n /** Positive integer decimal string encoded as native MrcAmount/u128. */\n price: string;\n /** Positive integer decimal string encoded as native MrcAmount/u128. */\n quantity: string;\n /** uint64 expiry block encoded as `expires_at_block`. */\n expiresAtBlock: string | number | bigint;\n}\n\nexport interface EncodeNativeSpotCreateMarketArgs {\n /** Market owner typed bech32m MonoAddress; optional object `kind` asserts the expected HRP. */\n owner: NativeMarketAddressInput;\n /** Owner-local market nonce encoded as uint64. */\n nonce: string | number | bigint;\n /** 32-byte base asset id. */\n baseAsset: string;\n /** 32-byte quote asset id. */\n quoteAsset: string;\n /** Positive integer decimal string encoded as native MrcAmount/u128. */\n tickSize: string;\n /** Positive integer decimal string encoded as native MrcAmount/u128. */\n lotSize: string;\n /** Positive integer decimal string encoded as native MrcAmount/u128. */\n minQuantity: string;\n /** Nonnegative integer decimal string encoded as native MrcAmount/u128; 0 disables the floor. */\n minNotional: string;\n}\n\nexport interface EncodeNativeSpotCancelOrderArgs {\n /** 32-byte native order id. */\n orderId: string;\n /** Caller typed bech32m MonoAddress; optional object `kind` asserts the expected HRP. */\n caller: NativeMarketAddressInput;\n}\n\nexport interface EncodeNativeSpotSettleLimitOrderArgs {\n /** Resting maker order id to match. */\n makerOrderId: string;\n /** Taker limit order parameters. */\n takerOrder: EncodeNativeSpotLimitOrderArgs;\n}\n\nexport interface EncodeNativeSpotSettleRoutedLimitOrderArgs {\n /** Resting maker order ids in deterministic settlement order; mono-core accepts 1..64 ids. */\n makerOrderIds: readonly string[];\n /** Taker limit order parameters. */\n takerOrder: EncodeNativeSpotLimitOrderArgs;\n}\n\nexport type NativeNftAssetStandard = \"mrc721\" | \"mrc1155\";\nexport type NativeNftListingKind =\n | \"fixed-price\"\n | {\n english: {\n /** Minimum starting bid encoded as native MrcAmount/u128. */\n reserve: string;\n /** Auction end block encoded as uint64. */\n endBlock: string | number | bigint;\n /** Minimum bid bump in basis points; must be less than 10,000. */\n minBidIncrementBps: string | number | bigint;\n };\n };\n\nexport interface EncodeNativeNftCreateListingArgs {\n /** Seller typed bech32m MonoAddress; optional object `kind` asserts the expected HRP. */\n seller: NativeMarketAddressInput;\n /** Seller-local listing nonce encoded as uint64. */\n nonce: string | number | bigint;\n /** Native NFT asset standard. */\n standard: NativeNftAssetStandard;\n /** 32-byte collection id. */\n collectionId: string;\n /** 32-byte token id. */\n tokenId: string;\n /** Positive integer decimal string encoded as native MrcAmount/u128. */\n quantity: string;\n /** 32-byte payment asset id. */\n paymentAsset: string;\n /** Positive integer decimal string encoded as native MrcAmount/u128. */\n price: string;\n /** Fixed-price or English-auction sale model. */\n kind: NativeNftListingKind;\n /** uint64 expiry block encoded as `expires_at_block`; 0 means never. */\n expiresAtBlock: string | number | bigint;\n}\n\nexport interface EncodeNativeNftBuyListingArgs {\n /** 32-byte native NFT listing id. */\n listingId: string;\n /** Buyer typed bech32m MonoAddress; optional object `kind` asserts the expected HRP. */\n buyer: NativeMarketAddressInput;\n /** Current block attached to the native buy call. */\n currentBlock: string | number | bigint;\n}\n\nexport interface EncodeNativeNftCancelListingArgs {\n /** 32-byte native NFT listing id. */\n listingId: string;\n /** Caller typed bech32m MonoAddress; optional object `kind` asserts the expected HRP. */\n caller: NativeMarketAddressInput;\n}\n\nexport interface EncodeNativeNftPlaceAuctionBidArgs {\n /** 32-byte native NFT auction listing id. */\n listingId: string;\n /** Bidder typed bech32m MonoAddress; optional object `kind` asserts the expected HRP. */\n bidder: NativeMarketAddressInput;\n /** Positive integer decimal string encoded as native MrcAmount/u128. */\n amount: string;\n /** Current block attached to the native auction bid call. */\n currentBlock: string | number | bigint;\n}\n\nexport interface EncodeNativeNftSettleAuctionArgs {\n /** 32-byte native NFT auction listing id. */\n listingId: string;\n /** Current block attached to the native auction settlement call. */\n currentBlock: string | number | bigint;\n}\n\nexport interface EncodeNativeNftSweepExpiredListingsArgs {\n /** Candidate 32-byte native NFT listing ids; mono-core accepts 1..64 ids. */\n listingIds: readonly string[];\n /** Current block attached to the native listing sweep call. */\n currentBlock: string | number | bigint;\n}\n\nexport interface NativeMarketModuleContractCall {\n /** Stable typed system-module address (`MARKET_NATIVE_MOD_V1`). */\n to: string;\n /** Native market router bincode payload. */\n input: string;\n /** Native market module calls must not carry native value. */\n valueLythoshi: \"0\";\n /** Maximum cycles delegated to the RISC-V host call. */\n maxCycles: string;\n}\n\nexport interface NativeMarketModuleCallEnvelope {\n module: \"market\";\n call: NativeMarketModuleContractCall;\n}\n\nexport interface NativeMarketForwarderInput {\n /** Canonical `SyscallRequest::CallContract` bytes for MRV call input. */\n input: string;\n /** Byte length of `input`, useful because the minimal forwarder artifact pins this as an immediate. */\n requestBytes: number;\n}\n\nexport interface NativeCallForwarderArtifact {\n /** Raw bincode MRV artifact bytes for a fixed-size native-call forwarder. */\n artifactBytes: string;\n /** Byte length accepted by the generated forwarder. */\n requestBytes: number;\n /** Stable runtime profile string used for capability matching. */\n artifactProfile: typeof NATIVE_CALL_FORWARDER_ARTIFACT_PROFILE;\n /** Forwarder code-section hash as `0x` hex. */\n codeHash: string;\n}\n\nexport interface EthSendTransactionRequest {\n to: string;\n value: \"0x0\";\n data: string;\n}\n\nexport interface MarketTransactionPlan {\n method: \"eth_sendTransaction\";\n params: [EthSendTransactionRequest];\n mempoolClass: MempoolClass;\n}\n\nexport class MarketActionError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"MarketActionError\";\n }\n}\n\nexport function clobAddressHex(): string {\n return PRECOMPILE_ADDRESSES.CLOB.toLowerCase();\n}\n\nexport function deriveClobMarketId(baseTokenId: string, quoteTokenId: string): string {\n const base = bytes32FromHex(baseTokenId, \"baseTokenId\");\n const quote = bytes32FromHex(quoteTokenId, \"quoteTokenId\");\n return bytesToHex(keccak_256(concatBytes(new Uint8Array([CLOB_MARKET_ID_DOMAIN_TAG]), base, quote)));\n}\n\nexport function deriveNativeSpotMarketId(args: Pick<EncodeNativeSpotCreateMarketArgs, \"owner\" | \"baseAsset\" | \"quoteAsset\" | \"nonce\">): string {\n const owner = normalizeNativeMarketAddress(args.owner, \"owner\");\n const nonce = uint64(args.nonce, \"nonce\");\n return bytesToHex(\n blake3(\n concatBytes(\n asciiBytes(\"MONO_MARKET_ID_V1\"),\n asciiBytes(ADDRESS_KIND_HRPS[owner.kind]),\n owner.bytes,\n bytes32FromHex(args.baseAsset, \"baseAsset\"),\n bytes32FromHex(args.quoteAsset, \"quoteAsset\"),\n uint64BeBytes(nonce),\n ),\n ),\n );\n}\n\nexport function deriveNativeSpotOrderId(args: Pick<EncodeNativeSpotLimitOrderArgs, \"marketId\" | \"owner\" | \"side\" | \"nonce\">): string {\n const owner = normalizeNativeMarketAddress(args.owner, \"owner\");\n const side = normalizeSide(args.side);\n const nonce = uint64(args.nonce, \"nonce\");\n return bytesToHex(\n blake3(\n concatBytes(\n asciiBytes(\"MONO_MARKET_ORDER_ID_V1\"),\n bytes32FromHex(args.marketId, \"marketId\"),\n asciiBytes(ADDRESS_KIND_HRPS[owner.kind]),\n owner.bytes,\n new Uint8Array([nativeOrderSideDiscriminator(side)]),\n uint64BeBytes(nonce),\n ),\n ),\n );\n}\n\nexport function encodePlaceLimitOrderCalldata(args: PlaceSpotLimitOrderArgs): string {\n const normalized = normalizePlaceSpotLimitOrderArgs(args);\n return bytesToHex(\n concatBytes(\n hexToBytes(CLOB_SELECTORS.placeLimitOrder, \"placeLimitOrder selector\"),\n normalized.baseTokenId,\n normalized.quoteTokenId,\n uint8Word(normalized.side),\n uint256Word(normalized.price, \"price\"),\n uint256Word(normalized.quantity, \"quantity\"),\n uint64Word(normalized.expiryBlock, \"expiryBlock\"),\n ),\n );\n}\n\nexport function encodePlaceMarketOrderCalldata(args: PlaceSpotMarketOrderArgs): string {\n const normalized = normalizePlaceSpotMarketOrderArgs(args);\n return bytesToHex(\n concatBytes(\n hexToBytes(CLOB_SELECTORS.placeMarketOrder, \"placeMarketOrder selector\"),\n normalized.baseTokenId,\n normalized.quoteTokenId,\n uint8Word(normalized.side),\n uint256Word(normalized.quantity, \"quantity\"),\n uint16Word(normalized.maxSlippageBps, \"maxSlippageBps\"),\n ),\n );\n}\n\nexport function encodePlaceMarketOrderExCalldata(args: PlaceSpotMarketOrderExArgs): string {\n const normalized = normalizePlaceSpotMarketOrderExArgs(args);\n return bytesToHex(\n concatBytes(\n hexToBytes(CLOB_SELECTORS.placeMarketOrderEx, \"placeMarketOrderEx selector\"),\n normalized.baseTokenId,\n normalized.quoteTokenId,\n uint8Word(normalized.side),\n uint256Word(normalized.quantity, \"quantity\"),\n uint16Word(normalized.maxSlippageBps, \"maxSlippageBps\"),\n uint8Word(normalized.mode),\n ),\n );\n}\n\nexport function encodeCancelOrderCalldata(args: CancelSpotOrderArgs): string {\n return bytesToHex(\n concatBytes(\n hexToBytes(CLOB_SELECTORS.cancelOrder, \"cancelOrder selector\"),\n bytes32FromHex(args.orderId, \"orderId\"),\n ),\n );\n}\n\n/** Three foundation-authorized per-market grid tuners share the\n * same `(bytes32,bytes32,uint256)` shape: minNotional, tickSize,\n * lotSize. They auto-create the market record if absent. */\nexport interface MarketGridTuneArgs {\n baseTokenId: string;\n quoteTokenId: string;\n /** Decimal string of quote atoms (minNotional) or atoms-per-unit (tick/lot). */\n newValue: string;\n}\n\nfunction encodeMarketGridTuneCalldata(selector: string, label: string, args: MarketGridTuneArgs): string {\n return bytesToHex(\n concatBytes(\n hexToBytes(selector, `${label} selector`),\n bytes32FromHex(args.baseTokenId, \"baseTokenId\"),\n bytes32FromHex(args.quoteTokenId, \"quoteTokenId\"),\n uint256Word(BigInt(args.newValue), \"newValue\"),\n ),\n );\n}\n\nexport function encodeSetMinNotionalCalldata(args: MarketGridTuneArgs): string {\n return encodeMarketGridTuneCalldata(CLOB_SELECTORS.setMinNotional, \"setMinNotional\", args);\n}\n\nexport function encodeSetTickSizeCalldata(args: MarketGridTuneArgs): string {\n return encodeMarketGridTuneCalldata(CLOB_SELECTORS.setTickSize, \"setTickSize\", args);\n}\n\nexport function encodeSetLotSizeCalldata(args: MarketGridTuneArgs): string {\n return encodeMarketGridTuneCalldata(CLOB_SELECTORS.setLotSize, \"setLotSize\", args);\n}\n\nexport function encodeNativeSpotLimitOrderCall(args: EncodeNativeSpotLimitOrderArgs): string {\n const w = new BincodeWriter();\n w.enumVariant(0); // NativeMarketCall::Spot\n w.enumVariant(1); // SpotMarketCall::PlaceLimitOrder\n spotLimitOrderInto(w, args, \"\");\n return bytesToHex(w.toBytes());\n}\n\nexport function encodeNativeSpotCreateMarketCall(args: EncodeNativeSpotCreateMarketArgs): string {\n const w = new BincodeWriter();\n w.enumVariant(0); // NativeMarketCall::Spot\n w.enumVariant(0); // SpotMarketCall::CreateMarket\n monoAddressInto(w, args.owner, \"owner\");\n w.u64(uint64(args.nonce, \"nonce\"));\n w.rawBytes(bytes32FromHex(args.baseAsset, \"baseAsset\"));\n w.rawBytes(bytes32FromHex(args.quoteAsset, \"quoteAsset\"));\n w.u128(positiveU128Decimal(args.tickSize, \"tickSize\"));\n w.u128(positiveU128Decimal(args.lotSize, \"lotSize\"));\n w.u128(positiveU128Decimal(args.minQuantity, \"minQuantity\"));\n w.u128(u128Decimal(args.minNotional, \"minNotional\"));\n return bytesToHex(w.toBytes());\n}\n\nexport function encodeNativeSpotCancelOrderCall(args: EncodeNativeSpotCancelOrderArgs): string {\n const w = new BincodeWriter();\n w.enumVariant(0); // NativeMarketCall::Spot\n w.enumVariant(4); // SpotMarketCall::CancelOrder\n w.rawBytes(bytes32FromHex(args.orderId, \"orderId\"));\n monoAddressInto(w, args.caller, \"caller\");\n return bytesToHex(w.toBytes());\n}\n\nexport function encodeNativeSpotSettleLimitOrderCall(args: EncodeNativeSpotSettleLimitOrderArgs): string {\n const w = new BincodeWriter();\n w.enumVariant(0); // NativeMarketCall::Spot\n w.enumVariant(2); // SpotMarketCall::SettleLimitOrder\n w.rawBytes(bytes32FromHex(args.makerOrderId, \"makerOrderId\"));\n spotLimitOrderInto(w, args.takerOrder, \"takerOrder.\");\n return bytesToHex(w.toBytes());\n}\n\nexport function encodeNativeSpotSettleRoutedLimitOrderCall(\n args: EncodeNativeSpotSettleRoutedLimitOrderArgs,\n): string {\n const makerOrderIds = normalizeListingIds(args.makerOrderIds, \"makerOrderIds\");\n const w = new BincodeWriter();\n w.enumVariant(0); // NativeMarketCall::Spot\n w.enumVariant(3); // SpotMarketCall::SettleRoutedLimitOrder\n w.u64(BigInt(makerOrderIds.length));\n for (const makerOrderId of makerOrderIds) {\n w.rawBytes(makerOrderId);\n }\n spotLimitOrderInto(w, args.takerOrder, \"takerOrder.\");\n return bytesToHex(w.toBytes());\n}\n\nexport function encodeNativeNftCreateListingCall(args: EncodeNativeNftCreateListingArgs): string {\n const w = new BincodeWriter();\n w.enumVariant(1); // NativeMarketCall::Nft\n w.enumVariant(0); // NftMarketCall::CreateListing\n monoAddressInto(w, args.seller, \"seller\");\n w.u64(uint64(args.nonce, \"nonce\"));\n w.enumVariant(normalizeNftAssetStandard(args.standard));\n w.rawBytes(bytes32FromHex(args.collectionId, \"collectionId\"));\n w.rawBytes(bytes32FromHex(args.tokenId, \"tokenId\"));\n w.u128(positiveU128Decimal(args.quantity, \"quantity\"));\n w.rawBytes(bytes32FromHex(args.paymentAsset, \"paymentAsset\"));\n w.u128(positiveU128Decimal(args.price, \"price\"));\n listingKindInto(w, args.kind);\n w.u64(uint64(args.expiresAtBlock, \"expiresAtBlock\"));\n return bytesToHex(w.toBytes());\n}\n\nexport function encodeNativeNftBuyListingCall(args: EncodeNativeNftBuyListingArgs): string {\n const w = new BincodeWriter();\n w.enumVariant(1); // NativeMarketCall::Nft\n w.enumVariant(1); // NftMarketCall::BuyListing\n w.rawBytes(bytes32FromHex(args.listingId, \"listingId\"));\n monoAddressInto(w, args.buyer, \"buyer\");\n w.u64(uint64(args.currentBlock, \"currentBlock\"));\n return bytesToHex(w.toBytes());\n}\n\nexport function encodeNativeNftCancelListingCall(args: EncodeNativeNftCancelListingArgs): string {\n const w = new BincodeWriter();\n w.enumVariant(1); // NativeMarketCall::Nft\n w.enumVariant(2); // NftMarketCall::CancelListing\n w.rawBytes(bytes32FromHex(args.listingId, \"listingId\"));\n monoAddressInto(w, args.caller, \"caller\");\n return bytesToHex(w.toBytes());\n}\n\nexport function encodeNativeNftPlaceAuctionBidCall(args: EncodeNativeNftPlaceAuctionBidArgs): string {\n const w = new BincodeWriter();\n w.enumVariant(1); // NativeMarketCall::Nft\n w.enumVariant(5); // NftMarketCall::PlaceAuctionBid\n w.rawBytes(bytes32FromHex(args.listingId, \"listingId\"));\n monoAddressInto(w, args.bidder, \"bidder\");\n w.u128(positiveU128Decimal(args.amount, \"amount\"));\n w.u64(uint64(args.currentBlock, \"currentBlock\"));\n return bytesToHex(w.toBytes());\n}\n\nexport function encodeNativeNftSettleAuctionCall(args: EncodeNativeNftSettleAuctionArgs): string {\n const w = new BincodeWriter();\n w.enumVariant(1); // NativeMarketCall::Nft\n w.enumVariant(6); // NftMarketCall::SettleAuction\n w.rawBytes(bytes32FromHex(args.listingId, \"listingId\"));\n w.u64(uint64(args.currentBlock, \"currentBlock\"));\n return bytesToHex(w.toBytes());\n}\n\nexport function encodeNativeNftSweepExpiredListingsCall(args: EncodeNativeNftSweepExpiredListingsArgs): string {\n const listingIds = normalizeListingIds(args.listingIds, \"listingIds\");\n const w = new BincodeWriter();\n w.enumVariant(1); // NativeMarketCall::Nft\n w.enumVariant(3); // NftMarketCall::SweepExpiredListings\n w.u64(BigInt(listingIds.length));\n for (const listingId of listingIds) {\n w.rawBytes(listingId);\n }\n w.u64(uint64(args.currentBlock, \"currentBlock\"));\n return bytesToHex(w.toBytes());\n}\n\nexport function buildNativeMarketModuleCallEnvelope(\n input: string,\n maxCycles: string | number | bigint,\n): NativeMarketModuleCallEnvelope {\n return {\n module: \"market\",\n call: {\n to: NATIVE_MARKET_MODULE_ADDRESS,\n input: normalizeHexBytes(input, \"input\"),\n valueLythoshi: \"0\",\n maxCycles: uint64(maxCycles, \"maxCycles\").toString(10),\n },\n };\n}\n\nexport function encodeNativeMarketModuleForwarderInput(\n envelope: NativeMarketModuleCallEnvelope,\n): NativeMarketForwarderInput {\n if (envelope.module !== \"market\") {\n throw new MarketActionError(\"native market forwarder envelope module must be 'market'\");\n }\n if (!isNativeMarketModuleAddress(envelope.call.to)) {\n throw new MarketActionError(\"native market forwarder call target must be the market system module\");\n }\n if (envelope.call.valueLythoshi !== \"0\") {\n throw new MarketActionError(\"native market forwarder call valueLythoshi must be 0\");\n }\n const payload = hexToBytes(normalizeHexBytes(envelope.call.input, \"input\"), \"input\");\n const maxCycles = uint64(envelope.call.maxCycles, \"maxCycles\");\n const w = new BincodeWriter();\n w.enumVariant(7); // SyscallRequest::CallContract\n w.enumVariant(NATIVE_MARKET_ADDRESS_KIND_VARIANTS.systemModule);\n w.rawBytes(hexToBytes(NATIVE_MARKET_MODULE_ADDRESS_BYTES, \"native market module address\"));\n w.bytes(payload);\n w.u128(0n);\n w.u64(maxCycles);\n const input = bytesToHex(w.toBytes());\n return { input, requestBytes: (input.length - 2) / 2 };\n}\n\nexport function buildNativeSpotLimitOrderForwarderInput(\n args: EncodeNativeSpotLimitOrderArgs,\n maxCycles: string | number | bigint,\n): NativeMarketForwarderInput {\n return encodeNativeMarketModuleForwarderInput(buildNativeSpotLimitOrderModuleCall(args, maxCycles));\n}\n\nexport function buildNativeSpotCreateMarketForwarderInput(\n args: EncodeNativeSpotCreateMarketArgs,\n maxCycles: string | number | bigint,\n): NativeMarketForwarderInput {\n return encodeNativeMarketModuleForwarderInput(buildNativeSpotCreateMarketModuleCall(args, maxCycles));\n}\n\nexport function buildNativeSpotCancelOrderForwarderInput(\n args: EncodeNativeSpotCancelOrderArgs,\n maxCycles: string | number | bigint,\n): NativeMarketForwarderInput {\n return encodeNativeMarketModuleForwarderInput(buildNativeSpotCancelOrderModuleCall(args, maxCycles));\n}\n\nexport function buildNativeSpotSettleLimitOrderForwarderInput(\n args: EncodeNativeSpotSettleLimitOrderArgs,\n maxCycles: string | number | bigint,\n): NativeMarketForwarderInput {\n return encodeNativeMarketModuleForwarderInput(buildNativeSpotSettleLimitOrderModuleCall(args, maxCycles));\n}\n\nexport function buildNativeSpotSettleRoutedLimitOrderForwarderInput(\n args: EncodeNativeSpotSettleRoutedLimitOrderArgs,\n maxCycles: string | number | bigint,\n): NativeMarketForwarderInput {\n return encodeNativeMarketModuleForwarderInput(buildNativeSpotSettleRoutedLimitOrderModuleCall(args, maxCycles));\n}\n\nexport function buildNativeNftCreateListingForwarderInput(\n args: EncodeNativeNftCreateListingArgs,\n maxCycles: string | number | bigint,\n): NativeMarketForwarderInput {\n return encodeNativeMarketModuleForwarderInput(buildNativeNftCreateListingModuleCall(args, maxCycles));\n}\n\nexport function buildNativeNftBuyListingForwarderInput(\n args: EncodeNativeNftBuyListingArgs,\n maxCycles: string | number | bigint,\n): NativeMarketForwarderInput {\n return encodeNativeMarketModuleForwarderInput(buildNativeNftBuyListingModuleCall(args, maxCycles));\n}\n\nexport function buildNativeNftCancelListingForwarderInput(\n args: EncodeNativeNftCancelListingArgs,\n maxCycles: string | number | bigint,\n): NativeMarketForwarderInput {\n return encodeNativeMarketModuleForwarderInput(buildNativeNftCancelListingModuleCall(args, maxCycles));\n}\n\nexport function buildNativeNftPlaceAuctionBidForwarderInput(\n args: EncodeNativeNftPlaceAuctionBidArgs,\n maxCycles: string | number | bigint,\n): NativeMarketForwarderInput {\n return encodeNativeMarketModuleForwarderInput(buildNativeNftPlaceAuctionBidModuleCall(args, maxCycles));\n}\n\nexport function buildNativeNftSettleAuctionForwarderInput(\n args: EncodeNativeNftSettleAuctionArgs,\n maxCycles: string | number | bigint,\n): NativeMarketForwarderInput {\n return encodeNativeMarketModuleForwarderInput(buildNativeNftSettleAuctionModuleCall(args, maxCycles));\n}\n\nexport function buildNativeNftSweepExpiredListingsForwarderInput(\n args: EncodeNativeNftSweepExpiredListingsArgs,\n maxCycles: string | number | bigint,\n): NativeMarketForwarderInput {\n return encodeNativeMarketModuleForwarderInput(buildNativeNftSweepExpiredListingsModuleCall(args, maxCycles));\n}\n\nexport function buildNativeSpotLimitOrderModuleCall(\n args: EncodeNativeSpotLimitOrderArgs,\n maxCycles: string | number | bigint,\n): NativeMarketModuleCallEnvelope {\n return buildNativeMarketModuleCallEnvelope(encodeNativeSpotLimitOrderCall(args), maxCycles);\n}\n\nexport function buildNativeSpotCreateMarketModuleCall(\n args: EncodeNativeSpotCreateMarketArgs,\n maxCycles: string | number | bigint,\n): NativeMarketModuleCallEnvelope {\n return buildNativeMarketModuleCallEnvelope(encodeNativeSpotCreateMarketCall(args), maxCycles);\n}\n\nexport function buildNativeSpotCancelOrderModuleCall(\n args: EncodeNativeSpotCancelOrderArgs,\n maxCycles: string | number | bigint,\n): NativeMarketModuleCallEnvelope {\n return buildNativeMarketModuleCallEnvelope(encodeNativeSpotCancelOrderCall(args), maxCycles);\n}\n\nexport function buildNativeSpotSettleLimitOrderModuleCall(\n args: EncodeNativeSpotSettleLimitOrderArgs,\n maxCycles: string | number | bigint,\n): NativeMarketModuleCallEnvelope {\n return buildNativeMarketModuleCallEnvelope(encodeNativeSpotSettleLimitOrderCall(args), maxCycles);\n}\n\nexport function buildNativeSpotSettleRoutedLimitOrderModuleCall(\n args: EncodeNativeSpotSettleRoutedLimitOrderArgs,\n maxCycles: string | number | bigint,\n): NativeMarketModuleCallEnvelope {\n return buildNativeMarketModuleCallEnvelope(encodeNativeSpotSettleRoutedLimitOrderCall(args), maxCycles);\n}\n\nexport function buildNativeNftCreateListingModuleCall(\n args: EncodeNativeNftCreateListingArgs,\n maxCycles: string | number | bigint,\n): NativeMarketModuleCallEnvelope {\n return buildNativeMarketModuleCallEnvelope(encodeNativeNftCreateListingCall(args), maxCycles);\n}\n\nexport function buildNativeNftBuyListingModuleCall(\n args: EncodeNativeNftBuyListingArgs,\n maxCycles: string | number | bigint,\n): NativeMarketModuleCallEnvelope {\n return buildNativeMarketModuleCallEnvelope(encodeNativeNftBuyListingCall(args), maxCycles);\n}\n\nexport function buildNativeNftCancelListingModuleCall(\n args: EncodeNativeNftCancelListingArgs,\n maxCycles: string | number | bigint,\n): NativeMarketModuleCallEnvelope {\n return buildNativeMarketModuleCallEnvelope(encodeNativeNftCancelListingCall(args), maxCycles);\n}\n\nexport function buildNativeNftPlaceAuctionBidModuleCall(\n args: EncodeNativeNftPlaceAuctionBidArgs,\n maxCycles: string | number | bigint,\n): NativeMarketModuleCallEnvelope {\n return buildNativeMarketModuleCallEnvelope(encodeNativeNftPlaceAuctionBidCall(args), maxCycles);\n}\n\nexport function buildNativeNftSettleAuctionModuleCall(\n args: EncodeNativeNftSettleAuctionArgs,\n maxCycles: string | number | bigint,\n): NativeMarketModuleCallEnvelope {\n return buildNativeMarketModuleCallEnvelope(encodeNativeNftSettleAuctionCall(args), maxCycles);\n}\n\nexport function buildNativeNftSweepExpiredListingsModuleCall(\n args: EncodeNativeNftSweepExpiredListingsArgs,\n maxCycles: string | number | bigint,\n): NativeMarketModuleCallEnvelope {\n return buildNativeMarketModuleCallEnvelope(encodeNativeNftSweepExpiredListingsCall(args), maxCycles);\n}\n\nexport function buildPlaceSpotLimitOrderPlan(args: PlaceSpotLimitOrderArgs): MarketTransactionPlan {\n return {\n method: \"eth_sendTransaction\",\n params: [\n {\n to: PRECOMPILE_ADDRESSES.CLOB,\n value: \"0x0\",\n data: encodePlaceLimitOrderCalldata(args),\n },\n ],\n mempoolClass: MempoolClass.CLOBOp,\n };\n}\n\nexport function buildPlaceSpotMarketOrderPlan(args: PlaceSpotMarketOrderArgs): MarketTransactionPlan {\n return {\n method: \"eth_sendTransaction\",\n params: [\n {\n to: PRECOMPILE_ADDRESSES.CLOB,\n value: \"0x0\",\n data: encodePlaceMarketOrderCalldata(args),\n },\n ],\n mempoolClass: MempoolClass.CLOBOp,\n };\n}\n\nexport function buildPlaceSpotMarketOrderExPlan(args: PlaceSpotMarketOrderExArgs): MarketTransactionPlan {\n return {\n method: \"eth_sendTransaction\",\n params: [\n {\n to: PRECOMPILE_ADDRESSES.CLOB,\n value: \"0x0\",\n data: encodePlaceMarketOrderExCalldata(args),\n },\n ],\n mempoolClass: MempoolClass.CLOBOp,\n };\n}\n\nexport function buildCancelSpotOrderPlan(args: CancelSpotOrderArgs): MarketTransactionPlan {\n return {\n method: \"eth_sendTransaction\",\n params: [\n {\n to: PRECOMPILE_ADDRESSES.CLOB,\n value: \"0x0\",\n data: encodeCancelOrderCalldata(args),\n },\n ],\n mempoolClass: MempoolClass.CLOBOp,\n };\n}\n\nexport function buildNativeCallForwarderArtifact(requestBytes: string | number | bigint): NativeCallForwarderArtifact {\n const size = uint64(requestBytes, \"requestBytes\");\n if (size === 0n) {\n throw new MarketActionError(\"requestBytes must be non-zero\");\n }\n if (size > BigInt(MAX_NATIVE_CALL_FORWARDER_REQUEST_BYTES)) {\n throw new MarketActionError(`requestBytes must be <= ${MAX_NATIVE_CALL_FORWARDER_REQUEST_BYTES}`);\n }\n const requestBytesNumber = Number(size);\n const code = nativeCallForwarderCode(requestBytesNumber);\n const codeHash = mrvCodeHashHex(code);\n return {\n artifactBytes: encodeNativeCallForwarderArtifact(code, codeHash),\n requestBytes: requestBytesNumber,\n artifactProfile: NATIVE_CALL_FORWARDER_ARTIFACT_PROFILE,\n codeHash,\n };\n}\n\ninterface NormalizedPlaceSpotLimitOrderArgs {\n marketId: string;\n baseTokenId: Uint8Array;\n quoteTokenId: Uint8Array;\n side: 0 | 1;\n price: bigint;\n quantity: bigint;\n expiryBlock: bigint;\n}\n\ninterface NormalizedPlaceSpotMarketOrderArgs {\n marketId: string;\n baseTokenId: Uint8Array;\n quoteTokenId: Uint8Array;\n side: 0 | 1;\n quantity: bigint;\n maxSlippageBps: bigint;\n}\n\ninterface NormalizedPlaceSpotMarketOrderExArgs extends NormalizedPlaceSpotMarketOrderArgs {\n mode: 0 | 1;\n}\n\nconst NATIVE_MARKET_ADDRESS_KIND_VARIANTS: Record<NativeMarketAddressKind, number> = {\n user: 0,\n smartAccount: 1,\n contract: 2,\n cluster: 3,\n multisig: 4,\n systemModule: 5,\n};\n\nfunction normalizePlaceSpotLimitOrderArgs(args: PlaceSpotLimitOrderArgs): NormalizedPlaceSpotLimitOrderArgs {\n const normalized = normalizeSpotMarketArgs(args);\n return {\n ...normalized,\n price: positiveDecimal(args.price, \"price\"),\n expiryBlock: uint64(args.expiryBlock ?? 0n, \"expiryBlock\"),\n };\n}\n\nfunction normalizePlaceSpotMarketOrderArgs(args: PlaceSpotMarketOrderArgs): NormalizedPlaceSpotMarketOrderArgs {\n const normalized = normalizeSpotMarketArgs(args);\n return {\n ...normalized,\n maxSlippageBps: uint16Bps(args.maxSlippageBps, \"maxSlippageBps\"),\n };\n}\n\nfunction normalizePlaceSpotMarketOrderExArgs(args: PlaceSpotMarketOrderExArgs): NormalizedPlaceSpotMarketOrderExArgs {\n return {\n ...normalizePlaceSpotMarketOrderArgs(args),\n mode: normalizeMarketOrderMode(args.mode),\n };\n}\n\nfunction normalizeSpotMarketArgs(args: {\n marketId: string;\n baseTokenId: string;\n quoteTokenId: string;\n side: SpotLimitOrderSide;\n quantity: string;\n}): Omit<NormalizedPlaceSpotMarketOrderArgs, \"maxSlippageBps\"> {\n const marketId = normalizeBytes32Hex(args.marketId, \"marketId\");\n const expectedMarketId = deriveClobMarketId(args.baseTokenId, args.quoteTokenId);\n if (marketId !== expectedMarketId) {\n throw new MarketActionError(\"marketId must match baseTokenId and quoteTokenId\");\n }\n return {\n marketId,\n baseTokenId: bytes32FromHex(args.baseTokenId, \"baseTokenId\"),\n quoteTokenId: bytes32FromHex(args.quoteTokenId, \"quoteTokenId\"),\n side: normalizeSide(args.side),\n quantity: positiveDecimal(args.quantity, \"quantity\"),\n };\n}\n\nfunction normalizeBytes32Hex(value: string, name: string): string {\n if (typeof value !== \"string\" || !/^0x[0-9a-fA-F]{64}$/.test(value)) {\n throw new MarketActionError(`${name} must be a 32-byte 0x-prefixed hex string`);\n }\n return value.toLowerCase();\n}\n\nfunction bytes32FromHex(value: string, name: string): Uint8Array {\n normalizeBytes32Hex(value, name);\n return hexToBytes(value, name);\n}\n\nfunction normalizeSide(side: SpotLimitOrderSide): 0 | 1 {\n if (side === \"buy\") return 0;\n if (side === \"sell\") return 1;\n throw new MarketActionError(\"side must be 'buy' or 'sell'\");\n}\n\nfunction nativeOrderSideDiscriminator(side: 0 | 1): 1 | 2 {\n return side === 0 ? 1 : 2;\n}\n\nfunction normalizeMarketOrderMode(mode: SpotMarketOrderMode): 0 | 1 {\n if (mode === \"fill-or-refund\") return 0;\n if (mode === \"fill-or-rest-at-cap\") return 1;\n throw new MarketActionError(\"mode must be 'fill-or-refund' or 'fill-or-rest-at-cap'\");\n}\n\nfunction normalizeNftAssetStandard(standard: NativeNftAssetStandard): 0 | 1 {\n if (standard === \"mrc721\") return 0;\n if (standard === \"mrc1155\") return 1;\n throw new MarketActionError(\"standard must be 'mrc721' or 'mrc1155'\");\n}\n\nfunction listingKindInto(w: BincodeWriter, kind: NativeNftListingKind): void {\n if (kind === \"fixed-price\") {\n w.enumVariant(0); // ListingKind::FixedPrice\n return;\n }\n if (typeof kind === \"object\" && kind !== null && \"english\" in kind) {\n const english = kind.english;\n if (typeof english !== \"object\" || english === null) {\n throw new MarketActionError(\"kind.english must be an object\");\n }\n w.enumVariant(1); // ListingKind::English\n w.u128(positiveU128Decimal(english.reserve, \"kind.english.reserve\"));\n w.u64(uint64(english.endBlock, \"kind.english.endBlock\"));\n w.u16(Number(uint16Bps(english.minBidIncrementBps, \"kind.english.minBidIncrementBps\")));\n return;\n }\n throw new MarketActionError(\"kind must be 'fixed-price' or an english auction\");\n}\n\nfunction normalizeListingIds(listingIds: readonly string[], name: string): Uint8Array[] {\n if (!Array.isArray(listingIds)) {\n throw new MarketActionError(`${name} must be an array`);\n }\n if (listingIds.length === 0 || listingIds.length > 64) {\n throw new MarketActionError(`${name} must contain 1 to 64 listing ids`);\n }\n return listingIds.map((listingId, i) => bytes32FromHex(listingId, `${name}[${i}]`));\n}\n\nfunction positiveDecimal(value: string, name: string): bigint {\n if (typeof value !== \"string\" || !/^(0|[1-9][0-9]*)$/.test(value)) {\n throw new MarketActionError(`${name} must be an integer decimal string`);\n }\n const n = BigInt(value);\n if (n <= 0n) {\n throw new MarketActionError(`${name} must be positive`);\n }\n return n;\n}\n\nfunction uint16Bps(value: string | number | bigint, name: string): bigint {\n const n = uint64(value, name);\n if (n >= 10_000n) {\n throw new MarketActionError(`${name} must be less than 10000`);\n }\n return n;\n}\n\nfunction uint64(value: string | number | bigint, name: string): bigint {\n let n: bigint;\n if (typeof value === \"bigint\") {\n n = value;\n } else if (typeof value === \"number\") {\n if (!Number.isSafeInteger(value)) {\n throw new MarketActionError(`${name} must be a safe integer`);\n }\n n = BigInt(value);\n } else if (/^(0|[1-9][0-9]*|0x[0-9a-fA-F]+)$/.test(value)) {\n n = BigInt(value);\n } else {\n throw new MarketActionError(`${name} must be a nonnegative integer`);\n }\n if (n < 0n || n > 0xffff_ffff_ffff_ffffn) {\n throw new MarketActionError(`${name} must fit uint64`);\n }\n return n;\n}\n\nfunction positiveU128Decimal(value: string, name: string): bigint {\n const n = positiveDecimal(value, name);\n return u128(n, name);\n}\n\nfunction u128Decimal(value: string, name: string): bigint {\n if (typeof value !== \"string\" || !/^(0|[1-9][0-9]*)$/.test(value)) {\n throw new MarketActionError(`${name} must be an integer decimal string`);\n }\n return u128(BigInt(value), name);\n}\n\nfunction u128(n: bigint, name: string): bigint {\n if (n >= (1n << 128n)) {\n throw new MarketActionError(`${name} must fit uint128`);\n }\n return n;\n}\n\nfunction normalizeHexBytes(value: string, name: string): string {\n if (typeof value !== \"string\" || !value.startsWith(\"0x\")) {\n throw new MarketActionError(`${name} must be 0x-prefixed hex bytes`);\n }\n try {\n hexToBytes(value, name);\n } catch (error) {\n const detail = error instanceof Error ? `: ${error.message}` : \"\";\n throw new MarketActionError(`${name} must be 0x-prefixed hex bytes${detail}`);\n }\n return value.toLowerCase();\n}\n\nfunction isNativeMarketModuleAddress(value: string): boolean {\n const normalized = value.toLowerCase();\n return normalized === NATIVE_MARKET_MODULE_ADDRESS || normalized === NATIVE_MARKET_MODULE_ADDRESS_BYTES;\n}\n\nfunction monoAddressInto(w: BincodeWriter, input: NativeMarketAddressInput, name: string): void {\n const { kind, bytes } = normalizeNativeMarketAddress(input, name);\n w.enumVariant(NATIVE_MARKET_ADDRESS_KIND_VARIANTS[kind]);\n w.rawBytes(bytes);\n}\n\nfunction normalizeNativeMarketAddress(\n input: NativeMarketAddressInput,\n name: string,\n): { kind: NativeMarketAddressKind; bytes: Uint8Array } {\n if (typeof input === \"string\") {\n return normalizeNativeMarketAddressString(input, undefined, name);\n }\n if (typeof input === \"object\" && input !== null && \"address\" in input) {\n const kind = input.kind;\n if (kind !== undefined && !(kind in NATIVE_MARKET_ADDRESS_KIND_VARIANTS)) {\n throw new MarketActionError(`${name}.kind is not a supported native address kind`);\n }\n if (typeof input.address !== \"string\") {\n throw new MarketActionError(`${name}.address must be a typed bech32m address`);\n }\n return normalizeNativeMarketAddressString(input.address, kind, name);\n }\n throw new MarketActionError(`${name} must be a typed bech32m address`);\n}\n\nfunction normalizeNativeMarketAddressString(\n address: string,\n expectedKind: NativeMarketAddressKind | undefined,\n name: string,\n): { kind: NativeMarketAddressKind; bytes: Uint8Array } {\n if (address.startsWith(\"0x\") || address.startsWith(\"0X\")) {\n throw new MarketActionError(`${name} raw 0x addresses are retired; use typed bech32m addresses`);\n }\n try {\n const parsed = typedBech32ToAddress(address, expectedKind);\n return { kind: parsed.kind, bytes: parsed.bytes };\n } catch (error) {\n const detail = error instanceof Error ? `: ${error.message}` : \"\";\n throw new MarketActionError(`${name} must be a typed bech32m address${detail}`);\n }\n}\n\nfunction uint8Word(value: 0 | 1): Uint8Array {\n const out = new Uint8Array(32);\n out[31] = value;\n return out;\n}\n\nfunction uint64Word(value: bigint, name: string): Uint8Array {\n if (value < 0n || value > 0xffff_ffff_ffff_ffffn) {\n throw new MarketActionError(`${name} must fit uint64`);\n }\n const out = new Uint8Array(32);\n let rest = value;\n for (let i = 31; i >= 24; i--) {\n out[i] = Number(rest & 0xffn);\n rest >>= 8n;\n }\n return out;\n}\n\nfunction uint16Word(value: bigint, name: string): Uint8Array {\n if (value < 0n || value > 0xffffn) {\n throw new MarketActionError(`${name} must fit uint16`);\n }\n const out = new Uint8Array(32);\n out[30] = Number((value >> 8n) & 0xffn);\n out[31] = Number(value & 0xffn);\n return out;\n}\n\nfunction uint256Word(value: bigint, name: string): Uint8Array {\n if (value < 0n || value >= (1n << 256n)) {\n throw new MarketActionError(`${name} must fit uint256`);\n }\n const out = new Uint8Array(32);\n let rest = value;\n for (let i = 31; i >= 0; i--) {\n out[i] = Number(rest & 0xffn);\n rest >>= 8n;\n }\n return out;\n}\n\nfunction spotLimitOrderInto(w: BincodeWriter, args: EncodeNativeSpotLimitOrderArgs, prefix: string): void {\n w.rawBytes(bytes32FromHex(args.marketId, `${prefix}marketId`));\n monoAddressInto(w, args.owner, `${prefix}owner`);\n w.u64(uint64(args.nonce, `${prefix}nonce`));\n w.enumVariant(normalizeSide(args.side));\n w.u128(positiveU128Decimal(args.price, `${prefix}price`));\n w.u128(positiveU128Decimal(args.quantity, `${prefix}quantity`));\n w.u64(uint64(args.expiresAtBlock, `${prefix}expiresAtBlock`));\n}\n\nfunction uint64BeBytes(value: bigint): Uint8Array {\n const out = new Uint8Array(8);\n let rest = value;\n for (let i = 7; i >= 0; i--) {\n out[i] = Number(rest & 0xffn);\n rest >>= 8n;\n }\n return out;\n}\n\nfunction asciiBytes(value: string): Uint8Array {\n return new TextEncoder().encode(value);\n}\n\nfunction mrvCodeHashHex(code: Uint8Array): string {\n const len = uint64BeBytes(BigInt(code.length));\n return bytesToHex(blake3(concatBytes(asciiBytes(\"MONO_MRV_CODE_V1\"), len, code)));\n}\n\nfunction nativeCallForwarderCode(requestBytes: number): Uint8Array {\n return rvCode([\n rvAddi(17, 0, 0x0301),\n rvAddi(10, 0, 0),\n rvAddi(11, 0, requestBytes),\n rvAddi(12, 0, NATIVE_CALL_FORWARDER_RESPONSE_OFFSET),\n rvAddi(13, 0, NATIVE_CALL_FORWARDER_RESPONSE_CAPACITY),\n 0x0000_0073,\n ]);\n}\n\nfunction rvCode(words: readonly number[]): Uint8Array {\n const out = new Uint8Array(words.length * 4);\n const view = new DataView(out.buffer);\n words.forEach((word, i) => view.setUint32(i * 4, word >>> 0, true));\n return out;\n}\n\nfunction rvAddi(rd: number, rs1: number, imm: number): number {\n return ((imm & 0x0fff) << 20) | (rs1 << 15) | (rd << 7) | 0x13;\n}\n\nfunction encodeNativeCallForwarderArtifact(code: Uint8Array, codeHash: string): string {\n const w = new BincodeWriter();\n w.u16(1); // MRV format version.\n w.enumVariant(0); // RiscvProfile::MonoRv32ImV1\n w.bytes(code);\n w.u64(1n); // abi.symbols\n writeString(w, \"forward_call_contract\");\n w.enumVariant(1); // AbiSymbolKind::Function\n w.u64(1n); // inputs\n writeString(w, \"request\");\n w.enumVariant(6); // AbiType::Bytes\n w.u64(1n); // outputs\n writeString(w, \"response\");\n w.enumVariant(6); // AbiType::Bytes\n w.u64(1n); // imports\n writeString(w, \"mono\");\n writeString(w, \"call_contract\");\n w.u16(0x0301);\n w.u32(1);\n w.u32(1);\n w.u32(16 * 1024);\n writeString(w, \"native_call_forwarder\");\n w.u16(1);\n w.rawBytes(hexToBytes(codeHash, \"codeHash\"));\n writeString(w, \"mono-sdk-rv32im-forwarder\");\n w.rawBytes(hexToBytes(mrvCodeHashHex(asciiBytes(\"mono-sdk-native-call-forwarder-v1\")), \"sourceDigest\"));\n writeString(w, NATIVE_CALL_FORWARDER_ARTIFACT_PROFILE);\n w.bytes(new Uint8Array());\n return bytesToHex(w.toBytes());\n}\n\nfunction writeString(w: BincodeWriter, value: string): void {\n w.bytes(asciiBytes(value));\n}\n","/**\n * Native agent-commerce transaction-plan builders.\n *\n * These helpers encode the native Rust router bincode payloads consumed by\n * `AGENT_NATIVE_MOD_V01`. They do not predict record ids, escrow settlement,\n * reputation effects, or execution success.\n */\n\nimport { addressToTypedBech32, typedBech32ToAddress, type AddressKind } from \"./address.js\";\nimport { BincodeWriter } from \"./crypto/bincode.js\";\nimport { bytesToHex, hexToBytes } from \"./crypto/bytes.js\";\n\nexport const NATIVE_AGENT_MODULE_ADDRESS_BYTES = \"0x4147454e545f4e41544956455f4d4f445f563031\" as const;\nexport const NATIVE_AGENT_MODULE_ADDRESS = addressToTypedBech32(\n \"systemModule\",\n NATIVE_AGENT_MODULE_ADDRESS_BYTES,\n);\n\nexport type NativeAgentAddressKind = AddressKind;\nexport type NativeAgentAddressInput =\n | string\n | {\n kind?: NativeAgentAddressKind;\n address: string;\n };\n\nexport interface NativeAgentModuleContractCall {\n /** Stable typed system-module address (`AGENT_NATIVE_MOD_V01`). */\n to: string;\n /** Native agent router bincode payload. */\n input: string;\n /** Native agent module calls must not carry native value. */\n valueLythoshi: \"0\";\n /** Maximum cycles delegated to the RISC-V host call. */\n maxCycles: string;\n}\n\nexport interface NativeAgentModuleCallEnvelope {\n module: \"agent\";\n call: NativeAgentModuleContractCall;\n}\n\nexport interface NativeAgentForwarderInput {\n /** Canonical `SyscallRequest::CallContract` bytes for MRV call input. */\n input: string;\n /** Byte length of `input`, useful because the minimal forwarder artifact pins this as an immediate. */\n requestBytes: number;\n}\n\nexport interface EncodeNativeAgentRegisterIssuerArgs {\n issuer: NativeAgentAddressInput;\n nonce: string | number | bigint;\n metadataHash: string;\n}\n\nexport interface EncodeNativeAgentIssueAttestationArgs {\n issuerId: string;\n issuer: NativeAgentAddressInput;\n subject: NativeAgentAddressInput;\n nonce: string | number | bigint;\n schemaHash: string;\n payloadHash: string;\n}\n\nexport interface EncodeNativeAgentRevokeAttestationArgs {\n attestationId: string;\n issuer: NativeAgentAddressInput;\n}\n\nexport interface EncodeNativeAgentGrantConsentArgs {\n subject: NativeAgentAddressInput;\n grantee: NativeAgentAddressInput;\n nonce: string | number | bigint;\n scopeHash: string;\n expiresAt: string | number | bigint;\n}\n\nexport interface EncodeNativeAgentRevokeConsentArgs {\n consentId: string;\n subject: NativeAgentAddressInput;\n}\n\nexport interface EncodeNativeAgentListServiceArgs {\n provider: NativeAgentAddressInput;\n nonce: string | number | bigint;\n categoryHash: string;\n metadataHash: string;\n}\n\nexport interface EncodeNativeAgentDeactivateServiceArgs {\n serviceId: string;\n provider: NativeAgentAddressInput;\n}\n\nexport interface EncodeNativeAgentSetAvailabilityArgs {\n provider: NativeAgentAddressInput;\n maxConcurrent: string | number | bigint;\n paused: boolean;\n}\n\nexport interface EncodeNativeAgentAvailabilitySlotArgs {\n provider: NativeAgentAddressInput;\n consumer: NativeAgentAddressInput;\n}\n\nexport interface EncodeNativeAgentRegisterArbiterArgs {\n arbiter: NativeAgentAddressInput;\n nonce: string | number | bigint;\n tier: string | number | bigint;\n metadataHash: string;\n}\n\nexport interface EncodeNativeAgentSetSpendingPolicyArgs {\n owner: NativeAgentAddressInput;\n controller: NativeAgentAddressInput;\n nonce: string | number | bigint;\n assetId: string;\n perActionLimit: string;\n windowLimit: string;\n windowSecs: string | number | bigint;\n}\n\nexport interface EncodeNativeAgentRecordPolicySpendArgs {\n policyId: string;\n controller: NativeAgentAddressInput;\n window: string | number | bigint;\n amount: string;\n}\n\nexport interface EncodeNativeAgentCreateEscrowArgs {\n buyer: NativeAgentAddressInput;\n provider: NativeAgentAddressInput;\n arbiter: NativeAgentAddressInput;\n nonce: string | number | bigint;\n assetId: string;\n amount: string;\n termsHash: string;\n}\n\nexport interface EncodeNativeAgentCounterEscrowArgs {\n escrowId: string;\n actor: NativeAgentAddressInput;\n termsHash: string;\n}\n\nexport interface EncodeNativeAgentEscrowActorArgs {\n escrowId: string;\n actor: NativeAgentAddressInput;\n}\n\nexport interface EncodeNativeAgentStartEscrowArgs {\n escrowId: string;\n provider: NativeAgentAddressInput;\n}\n\nexport interface EncodeNativeAgentSubmitEscrowArgs {\n escrowId: string;\n provider: NativeAgentAddressInput;\n payloadHash: string;\n}\n\nexport type NativeAgentEscrowResolution = \"release-provider\" | \"refund-buyer\";\n\nexport interface EncodeNativeAgentResolveEscrowArgs {\n escrowId: string;\n actor: NativeAgentAddressInput;\n resolution: NativeAgentEscrowResolution;\n}\n\nexport interface NativeAgentReputationScores {\n speed: string | number | bigint;\n quality: string | number | bigint;\n communication: string | number | bigint;\n accuracy: string | number | bigint;\n}\n\nexport interface EncodeNativeAgentRecordReputationArgs {\n reviewer: NativeAgentAddressInput;\n subject: NativeAgentAddressInput;\n categoryId: string | number | bigint;\n scores: NativeAgentReputationScores;\n payloadHash: string;\n}\n\nexport class AgentActionError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"AgentActionError\";\n }\n}\n\nexport function encodeNativeAgentRegisterIssuerCall(args: EncodeNativeAgentRegisterIssuerArgs): string {\n const w = agentCallWriter(0, 0); // NativeAgentCall::Issuer / IssuerCall::Register\n monoAddressInto(w, args.issuer, \"issuer\");\n w.u64(uint64(args.nonce, \"nonce\"));\n w.rawBytes(bytes32FromHex(args.metadataHash, \"metadataHash\"));\n return bytesToHex(w.toBytes());\n}\n\nexport function encodeNativeAgentIssuerGetCall(issuerId: string): string {\n const w = agentCallWriter(0, 1); // NativeAgentCall::Issuer / IssuerCall::Get\n w.rawBytes(bytes32FromHex(issuerId, \"issuerId\"));\n return bytesToHex(w.toBytes());\n}\n\nexport function encodeNativeAgentIssueAttestationCall(args: EncodeNativeAgentIssueAttestationArgs): string {\n const w = agentCallWriter(1, 0); // NativeAgentCall::Attestation / AttestationCall::Issue\n w.rawBytes(bytes32FromHex(args.issuerId, \"issuerId\"));\n monoAddressInto(w, args.issuer, \"issuer\");\n monoAddressInto(w, args.subject, \"subject\");\n w.u64(uint64(args.nonce, \"nonce\"));\n w.rawBytes(bytes32FromHex(args.schemaHash, \"schemaHash\"));\n w.rawBytes(bytes32FromHex(args.payloadHash, \"payloadHash\"));\n return bytesToHex(w.toBytes());\n}\n\nexport function encodeNativeAgentRevokeAttestationCall(args: EncodeNativeAgentRevokeAttestationArgs): string {\n const w = agentCallWriter(1, 1); // NativeAgentCall::Attestation / AttestationCall::Revoke\n w.rawBytes(bytes32FromHex(args.attestationId, \"attestationId\"));\n monoAddressInto(w, args.issuer, \"issuer\");\n return bytesToHex(w.toBytes());\n}\n\nexport function encodeNativeAgentAttestationGetCall(attestationId: string): string {\n const w = agentCallWriter(1, 2); // NativeAgentCall::Attestation / AttestationCall::Get\n w.rawBytes(bytes32FromHex(attestationId, \"attestationId\"));\n return bytesToHex(w.toBytes());\n}\n\nexport function encodeNativeAgentGrantConsentCall(args: EncodeNativeAgentGrantConsentArgs): string {\n const w = agentCallWriter(2, 0); // NativeAgentCall::Consent / ConsentCall::Grant\n monoAddressInto(w, args.subject, \"subject\");\n monoAddressInto(w, args.grantee, \"grantee\");\n w.u64(uint64(args.nonce, \"nonce\"));\n w.rawBytes(bytes32FromHex(args.scopeHash, \"scopeHash\"));\n w.u64(uint64(args.expiresAt, \"expiresAt\"));\n return bytesToHex(w.toBytes());\n}\n\nexport function encodeNativeAgentRevokeConsentCall(args: EncodeNativeAgentRevokeConsentArgs): string {\n const w = agentCallWriter(2, 1); // NativeAgentCall::Consent / ConsentCall::Revoke\n w.rawBytes(bytes32FromHex(args.consentId, \"consentId\"));\n monoAddressInto(w, args.subject, \"subject\");\n return bytesToHex(w.toBytes());\n}\n\nexport function encodeNativeAgentConsentGetCall(consentId: string): string {\n const w = agentCallWriter(2, 2); // NativeAgentCall::Consent / ConsentCall::Get\n w.rawBytes(bytes32FromHex(consentId, \"consentId\"));\n return bytesToHex(w.toBytes());\n}\n\nexport function encodeNativeAgentListServiceCall(args: EncodeNativeAgentListServiceArgs): string {\n const w = agentCallWriter(3, 0); // NativeAgentCall::Discovery / DiscoveryCall::List\n monoAddressInto(w, args.provider, \"provider\");\n w.u64(uint64(args.nonce, \"nonce\"));\n w.rawBytes(bytes32FromHex(args.categoryHash, \"categoryHash\"));\n w.rawBytes(bytes32FromHex(args.metadataHash, \"metadataHash\"));\n return bytesToHex(w.toBytes());\n}\n\nexport function encodeNativeAgentDeactivateServiceCall(args: EncodeNativeAgentDeactivateServiceArgs): string {\n const w = agentCallWriter(3, 1); // NativeAgentCall::Discovery / DiscoveryCall::Deactivate\n w.rawBytes(bytes32FromHex(args.serviceId, \"serviceId\"));\n monoAddressInto(w, args.provider, \"provider\");\n return bytesToHex(w.toBytes());\n}\n\nexport function encodeNativeAgentServiceGetCall(serviceId: string): string {\n const w = agentCallWriter(3, 2); // NativeAgentCall::Discovery / DiscoveryCall::Get\n w.rawBytes(bytes32FromHex(serviceId, \"serviceId\"));\n return bytesToHex(w.toBytes());\n}\n\nexport function encodeNativeAgentSetAvailabilityCall(args: EncodeNativeAgentSetAvailabilityArgs): string {\n const w = agentCallWriter(4, 0); // NativeAgentCall::Availability / AvailabilityCall::Set\n monoAddressInto(w, args.provider, \"provider\");\n w.u32(uint32(args.maxConcurrent, \"maxConcurrent\"));\n w.u8(boolByte(args.paused, \"paused\"));\n return bytesToHex(w.toBytes());\n}\n\nexport function encodeNativeAgentOpenAvailabilityCall(args: EncodeNativeAgentAvailabilitySlotArgs): string {\n const w = agentCallWriter(4, 1); // NativeAgentCall::Availability / AvailabilityCall::Open\n monoAddressInto(w, args.provider, \"provider\");\n monoAddressInto(w, args.consumer, \"consumer\");\n return bytesToHex(w.toBytes());\n}\n\nexport function encodeNativeAgentCloseAvailabilityCall(args: EncodeNativeAgentAvailabilitySlotArgs): string {\n const w = agentCallWriter(4, 2); // NativeAgentCall::Availability / AvailabilityCall::Close\n monoAddressInto(w, args.provider, \"provider\");\n monoAddressInto(w, args.consumer, \"consumer\");\n return bytesToHex(w.toBytes());\n}\n\nexport function encodeNativeAgentAvailabilityGetCall(provider: NativeAgentAddressInput): string {\n const w = agentCallWriter(4, 3); // NativeAgentCall::Availability / AvailabilityCall::Get\n monoAddressInto(w, provider, \"provider\");\n return bytesToHex(w.toBytes());\n}\n\nexport function encodeNativeAgentRegisterArbiterCall(args: EncodeNativeAgentRegisterArbiterArgs): string {\n const w = agentCallWriter(5, 0); // NativeAgentCall::Arbiter / ArbiterCall::Register\n monoAddressInto(w, args.arbiter, \"arbiter\");\n w.u64(uint64(args.nonce, \"nonce\"));\n w.u16(uint16(args.tier, \"tier\"));\n w.rawBytes(bytes32FromHex(args.metadataHash, \"metadataHash\"));\n return bytesToHex(w.toBytes());\n}\n\nexport function encodeNativeAgentArbiterGetCall(arbiterId: string): string {\n const w = agentCallWriter(5, 1); // NativeAgentCall::Arbiter / ArbiterCall::Get\n w.rawBytes(bytes32FromHex(arbiterId, \"arbiterId\"));\n return bytesToHex(w.toBytes());\n}\n\nexport function encodeNativeAgentSetSpendingPolicyCall(args: EncodeNativeAgentSetSpendingPolicyArgs): string {\n const w = agentCallWriter(6, 0); // NativeAgentCall::SpendingPolicy / SpendingPolicyCall::Set\n monoAddressInto(w, args.owner, \"owner\");\n monoAddressInto(w, args.controller, \"controller\");\n w.u64(uint64(args.nonce, \"nonce\"));\n w.rawBytes(bytes32FromHex(args.assetId, \"assetId\"));\n w.u128(positiveU128Decimal(args.perActionLimit, \"perActionLimit\"));\n w.u128(positiveU128Decimal(args.windowLimit, \"windowLimit\"));\n w.u64(uint64(args.windowSecs, \"windowSecs\"));\n return bytesToHex(w.toBytes());\n}\n\nexport function encodeNativeAgentRecordPolicySpendCall(args: EncodeNativeAgentRecordPolicySpendArgs): string {\n const w = agentCallWriter(6, 1); // NativeAgentCall::SpendingPolicy / SpendingPolicyCall::RecordSpend\n w.rawBytes(bytes32FromHex(args.policyId, \"policyId\"));\n monoAddressInto(w, args.controller, \"controller\");\n w.u64(uint64(args.window, \"window\"));\n w.u128(positiveU128Decimal(args.amount, \"amount\"));\n return bytesToHex(w.toBytes());\n}\n\nexport function encodeNativeAgentSpendingPolicyGetCall(policyId: string): string {\n const w = agentCallWriter(6, 2); // NativeAgentCall::SpendingPolicy / SpendingPolicyCall::Get\n w.rawBytes(bytes32FromHex(policyId, \"policyId\"));\n return bytesToHex(w.toBytes());\n}\n\nexport function encodeNativeAgentCreateEscrowCall(args: EncodeNativeAgentCreateEscrowArgs): string {\n const w = agentCallWriter(7, 0); // NativeAgentCall::Escrow / EscrowCall::Create\n monoAddressInto(w, args.buyer, \"buyer\");\n monoAddressInto(w, args.provider, \"provider\");\n monoAddressInto(w, args.arbiter, \"arbiter\");\n w.u64(uint64(args.nonce, \"nonce\"));\n w.rawBytes(bytes32FromHex(args.assetId, \"assetId\"));\n w.u128(positiveU128Decimal(args.amount, \"amount\"));\n w.rawBytes(bytes32FromHex(args.termsHash, \"termsHash\"));\n return bytesToHex(w.toBytes());\n}\n\nexport function encodeNativeAgentCounterEscrowCall(args: EncodeNativeAgentCounterEscrowArgs): string {\n const w = agentCallWriter(7, 1); // NativeAgentCall::Escrow / EscrowCall::Counter\n w.rawBytes(bytes32FromHex(args.escrowId, \"escrowId\"));\n monoAddressInto(w, args.actor, \"actor\");\n w.rawBytes(bytes32FromHex(args.termsHash, \"termsHash\"));\n return bytesToHex(w.toBytes());\n}\n\nexport function encodeNativeAgentAcceptEscrowCall(args: EncodeNativeAgentEscrowActorArgs): string {\n const w = agentCallWriter(7, 2); // NativeAgentCall::Escrow / EscrowCall::Accept\n escrowActorInto(w, args);\n return bytesToHex(w.toBytes());\n}\n\nexport function encodeNativeAgentStartEscrowCall(args: EncodeNativeAgentStartEscrowArgs): string {\n const w = agentCallWriter(7, 3); // NativeAgentCall::Escrow / EscrowCall::Start\n w.rawBytes(bytes32FromHex(args.escrowId, \"escrowId\"));\n monoAddressInto(w, args.provider, \"provider\");\n return bytesToHex(w.toBytes());\n}\n\nexport function encodeNativeAgentSubmitEscrowCall(args: EncodeNativeAgentSubmitEscrowArgs): string {\n const w = agentCallWriter(7, 4); // NativeAgentCall::Escrow / EscrowCall::Submit\n w.rawBytes(bytes32FromHex(args.escrowId, \"escrowId\"));\n monoAddressInto(w, args.provider, \"provider\");\n w.rawBytes(bytes32FromHex(args.payloadHash, \"payloadHash\"));\n return bytesToHex(w.toBytes());\n}\n\nexport function encodeNativeAgentApproveEscrowCall(args: EncodeNativeAgentEscrowActorArgs): string {\n const w = agentCallWriter(7, 5); // NativeAgentCall::Escrow / EscrowCall::Approve\n escrowActorInto(w, args);\n return bytesToHex(w.toBytes());\n}\n\nexport function encodeNativeAgentDisputeEscrowCall(args: EncodeNativeAgentEscrowActorArgs): string {\n const w = agentCallWriter(7, 6); // NativeAgentCall::Escrow / EscrowCall::Dispute\n escrowActorInto(w, args);\n return bytesToHex(w.toBytes());\n}\n\nexport function encodeNativeAgentCancelEscrowCall(args: EncodeNativeAgentEscrowActorArgs): string {\n const w = agentCallWriter(7, 7); // NativeAgentCall::Escrow / EscrowCall::Cancel\n escrowActorInto(w, args);\n return bytesToHex(w.toBytes());\n}\n\nexport function encodeNativeAgentResolveEscrowCall(args: EncodeNativeAgentResolveEscrowArgs): string {\n const w = agentCallWriter(7, 8); // NativeAgentCall::Escrow / EscrowCall::Resolve\n w.rawBytes(bytes32FromHex(args.escrowId, \"escrowId\"));\n monoAddressInto(w, args.actor, \"actor\");\n w.enumVariant(normalizeEscrowResolution(args.resolution));\n return bytesToHex(w.toBytes());\n}\n\nexport function encodeNativeAgentEscrowGetCall(escrowId: string): string {\n const w = agentCallWriter(7, 9); // NativeAgentCall::Escrow / EscrowCall::Get\n w.rawBytes(bytes32FromHex(escrowId, \"escrowId\"));\n return bytesToHex(w.toBytes());\n}\n\nexport function encodeNativeAgentRecordReputationCall(args: EncodeNativeAgentRecordReputationArgs): string {\n const w = agentCallWriter(8, 0); // NativeAgentCall::Reputation / ReputationCall::Record\n monoAddressInto(w, args.reviewer, \"reviewer\");\n monoAddressInto(w, args.subject, \"subject\");\n w.u32(uint32(args.categoryId, \"categoryId\"));\n reputationScoresInto(w, args.scores);\n w.rawBytes(bytes32FromHex(args.payloadHash, \"payloadHash\"));\n return bytesToHex(w.toBytes());\n}\n\nexport function encodeNativeAgentReputationGetCall(\n subject: NativeAgentAddressInput,\n categoryId: string | number | bigint,\n): string {\n const w = agentCallWriter(8, 1); // NativeAgentCall::Reputation / ReputationCall::Get\n monoAddressInto(w, subject, \"subject\");\n w.u32(uint32(categoryId, \"categoryId\"));\n return bytesToHex(w.toBytes());\n}\n\nexport function buildNativeAgentModuleCallEnvelope(\n input: string,\n maxCycles: string | number | bigint,\n): NativeAgentModuleCallEnvelope {\n return {\n module: \"agent\",\n call: {\n to: NATIVE_AGENT_MODULE_ADDRESS,\n input: normalizeHexBytes(input, \"input\"),\n valueLythoshi: \"0\",\n maxCycles: uint64(maxCycles, \"maxCycles\").toString(10),\n },\n };\n}\n\nexport function encodeNativeAgentModuleForwarderInput(\n envelope: NativeAgentModuleCallEnvelope,\n): NativeAgentForwarderInput {\n if (envelope.module !== \"agent\") {\n throw new AgentActionError(\"native agent forwarder envelope module must be 'agent'\");\n }\n if (!isNativeAgentModuleAddress(envelope.call.to)) {\n throw new AgentActionError(\"native agent forwarder call target must be the agent system module\");\n }\n if (envelope.call.valueLythoshi !== \"0\") {\n throw new AgentActionError(\"native agent forwarder call valueLythoshi must be 0\");\n }\n const payload = hexToBytes(normalizeHexBytes(envelope.call.input, \"input\"), \"input\");\n const maxCycles = uint64(envelope.call.maxCycles, \"maxCycles\");\n const w = new BincodeWriter();\n w.enumVariant(7); // SyscallRequest::CallContract\n w.enumVariant(NATIVE_AGENT_ADDRESS_KIND_VARIANTS.systemModule);\n w.rawBytes(hexToBytes(NATIVE_AGENT_MODULE_ADDRESS_BYTES, \"native agent module address\"));\n w.bytes(payload);\n w.u128(0n);\n w.u64(maxCycles);\n const input = bytesToHex(w.toBytes());\n return { input, requestBytes: (input.length - 2) / 2 };\n}\n\nexport function buildNativeAgentSetSpendingPolicyModuleCall(\n args: EncodeNativeAgentSetSpendingPolicyArgs,\n maxCycles: string | number | bigint,\n): NativeAgentModuleCallEnvelope {\n return buildNativeAgentModuleCallEnvelope(encodeNativeAgentSetSpendingPolicyCall(args), maxCycles);\n}\n\nexport function buildNativeAgentSetSpendingPolicyForwarderInput(\n args: EncodeNativeAgentSetSpendingPolicyArgs,\n maxCycles: string | number | bigint,\n): NativeAgentForwarderInput {\n return encodeNativeAgentModuleForwarderInput(buildNativeAgentSetSpendingPolicyModuleCall(args, maxCycles));\n}\n\nexport function buildNativeAgentCreateEscrowModuleCall(\n args: EncodeNativeAgentCreateEscrowArgs,\n maxCycles: string | number | bigint,\n): NativeAgentModuleCallEnvelope {\n return buildNativeAgentModuleCallEnvelope(encodeNativeAgentCreateEscrowCall(args), maxCycles);\n}\n\nexport function buildNativeAgentCreateEscrowForwarderInput(\n args: EncodeNativeAgentCreateEscrowArgs,\n maxCycles: string | number | bigint,\n): NativeAgentForwarderInput {\n return encodeNativeAgentModuleForwarderInput(buildNativeAgentCreateEscrowModuleCall(args, maxCycles));\n}\n\nexport function buildNativeAgentRecordReputationModuleCall(\n args: EncodeNativeAgentRecordReputationArgs,\n maxCycles: string | number | bigint,\n): NativeAgentModuleCallEnvelope {\n return buildNativeAgentModuleCallEnvelope(encodeNativeAgentRecordReputationCall(args), maxCycles);\n}\n\nexport function buildNativeAgentRecordReputationForwarderInput(\n args: EncodeNativeAgentRecordReputationArgs,\n maxCycles: string | number | bigint,\n): NativeAgentForwarderInput {\n return encodeNativeAgentModuleForwarderInput(buildNativeAgentRecordReputationModuleCall(args, maxCycles));\n}\n\nconst NATIVE_AGENT_ADDRESS_KIND_VARIANTS: Record<NativeAgentAddressKind, number> = {\n user: 0,\n smartAccount: 1,\n contract: 2,\n cluster: 3,\n multisig: 4,\n systemModule: 5,\n};\n\nfunction agentCallWriter(surfaceVariant: number, callVariant: number): BincodeWriter {\n const w = new BincodeWriter();\n w.enumVariant(surfaceVariant);\n w.enumVariant(callVariant);\n return w;\n}\n\nfunction escrowActorInto(w: BincodeWriter, args: EncodeNativeAgentEscrowActorArgs): void {\n w.rawBytes(bytes32FromHex(args.escrowId, \"escrowId\"));\n monoAddressInto(w, args.actor, \"actor\");\n}\n\nfunction reputationScoresInto(w: BincodeWriter, scores: NativeAgentReputationScores): void {\n w.u8(score(scores.speed, \"scores.speed\"));\n w.u8(score(scores.quality, \"scores.quality\"));\n w.u8(score(scores.communication, \"scores.communication\"));\n w.u8(score(scores.accuracy, \"scores.accuracy\"));\n}\n\nfunction normalizeEscrowResolution(resolution: NativeAgentEscrowResolution): 0 | 1 {\n if (resolution === \"release-provider\") return 0;\n if (resolution === \"refund-buyer\") return 1;\n throw new AgentActionError(\"resolution must be 'release-provider' or 'refund-buyer'\");\n}\n\nfunction normalizeBytes32Hex(value: string, name: string): string {\n if (typeof value !== \"string\" || !/^0x[0-9a-fA-F]{64}$/.test(value)) {\n throw new AgentActionError(`${name} must be a 32-byte 0x-prefixed hex string`);\n }\n return value.toLowerCase();\n}\n\nfunction bytes32FromHex(value: string, name: string): Uint8Array {\n normalizeBytes32Hex(value, name);\n return hexToBytes(value, name);\n}\n\nfunction positiveDecimal(value: string, name: string): bigint {\n if (typeof value !== \"string\" || !/^(0|[1-9][0-9]*)$/.test(value)) {\n throw new AgentActionError(`${name} must be an integer decimal string`);\n }\n const n = BigInt(value);\n if (n <= 0n) {\n throw new AgentActionError(`${name} must be positive`);\n }\n return n;\n}\n\nfunction uint64(value: string | number | bigint, name: string): bigint {\n let n: bigint;\n if (typeof value === \"bigint\") {\n n = value;\n } else if (typeof value === \"number\") {\n if (!Number.isSafeInteger(value)) {\n throw new AgentActionError(`${name} must be a safe integer`);\n }\n n = BigInt(value);\n } else if (/^(0|[1-9][0-9]*|0x[0-9a-fA-F]+)$/.test(value)) {\n n = BigInt(value);\n } else {\n throw new AgentActionError(`${name} must be a nonnegative integer`);\n }\n if (n < 0n || n > 0xffff_ffff_ffff_ffffn) {\n throw new AgentActionError(`${name} must fit uint64`);\n }\n return n;\n}\n\nfunction uint32(value: string | number | bigint, name: string): number {\n const n = uint64(value, name);\n if (n > 0xffff_ffffn) {\n throw new AgentActionError(`${name} must fit uint32`);\n }\n return Number(n);\n}\n\nfunction uint16(value: string | number | bigint, name: string): number {\n const n = uint64(value, name);\n if (n > 0xffffn) {\n throw new AgentActionError(`${name} must fit uint16`);\n }\n return Number(n);\n}\n\nfunction score(value: string | number | bigint, name: string): number {\n const n = uint64(value, name);\n if (n < 1n || n > 5n) {\n throw new AgentActionError(`${name} must be between 1 and 5`);\n }\n return Number(n);\n}\n\nfunction boolByte(value: boolean, name: string): 0 | 1 {\n if (value === true) return 1;\n if (value === false) return 0;\n throw new AgentActionError(`${name} must be boolean`);\n}\n\nfunction positiveU128Decimal(value: string, name: string): bigint {\n const n = positiveDecimal(value, name);\n if (n >= (1n << 128n)) {\n throw new AgentActionError(`${name} must fit uint128`);\n }\n return n;\n}\n\nfunction normalizeHexBytes(value: string, name: string): string {\n if (typeof value !== \"string\" || !value.startsWith(\"0x\")) {\n throw new AgentActionError(`${name} must be 0x-prefixed hex bytes`);\n }\n try {\n hexToBytes(value, name);\n } catch (error) {\n const detail = error instanceof Error ? `: ${error.message}` : \"\";\n throw new AgentActionError(`${name} must be 0x-prefixed hex bytes${detail}`);\n }\n return value.toLowerCase();\n}\n\nfunction isNativeAgentModuleAddress(value: string): boolean {\n const normalized = value.toLowerCase();\n return normalized === NATIVE_AGENT_MODULE_ADDRESS || normalized === NATIVE_AGENT_MODULE_ADDRESS_BYTES;\n}\n\nfunction monoAddressInto(w: BincodeWriter, input: NativeAgentAddressInput, name: string): void {\n const { kind, bytes } = normalizeNativeAgentAddress(input, name);\n w.enumVariant(NATIVE_AGENT_ADDRESS_KIND_VARIANTS[kind]);\n w.rawBytes(bytes);\n}\n\nfunction normalizeNativeAgentAddress(\n input: NativeAgentAddressInput,\n name: string,\n): { kind: NativeAgentAddressKind; bytes: Uint8Array } {\n if (typeof input === \"string\") {\n return normalizeNativeAgentAddressString(input, undefined, name);\n }\n if (typeof input === \"object\" && input !== null && \"address\" in input) {\n const kind = input.kind;\n if (kind !== undefined && !(kind in NATIVE_AGENT_ADDRESS_KIND_VARIANTS)) {\n throw new AgentActionError(`${name}.kind is not a supported native address kind`);\n }\n if (typeof input.address !== \"string\") {\n throw new AgentActionError(`${name}.address must be a typed bech32m address`);\n }\n return normalizeNativeAgentAddressString(input.address, kind, name);\n }\n throw new AgentActionError(`${name} must be a typed bech32m address`);\n}\n\nfunction normalizeNativeAgentAddressString(\n address: string,\n expectedKind: NativeAgentAddressKind | undefined,\n name: string,\n): { kind: NativeAgentAddressKind; bytes: Uint8Array } {\n if (address.startsWith(\"0x\") || address.startsWith(\"0X\")) {\n throw new AgentActionError(`${name} raw 0x addresses are retired; use typed bech32m addresses`);\n }\n try {\n const parsed = typedBech32ToAddress(address, expectedKind);\n return { kind: parsed.kind, bytes: parsed.bytes };\n } catch (error) {\n const detail = error instanceof Error ? `: ${error.message}` : \"\";\n throw new AgentActionError(`${name} must be a typed bech32m address${detail}`);\n }\n}\n","/**\n * Network identity constants.\n *\n * Monolythium testnet `chain_id` is **`69420`**. Mainnet chain id is\n * reserved for the genesis ceremony and not yet exported.\n */\n\n/** Monolythium testnet chain id. */\nexport const MONOLYTHIUM_TESTNET_CHAIN_ID = 69420n;\n\n/** Network name surfaced alongside chain identity. */\nexport const MONOLYTHIUM_TESTNET_NETWORK_NAME = \"monolythium-testnet\";\n\n/**\n * Built-in network presets. Callers that point at a different chain id\n * (e.g. a local dev node) construct identity records explicitly.\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/** Network identity record. */\nexport interface MonolythiumNetworkConfig {\n /** Numeric chain id (e.g. `69420n`). */\n chainId: bigint;\n /** Human-readable network name. */\n name: string;\n}\n","/**\n * Official TypeScript SDK for Monolythium v4.1 / 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 across current `lyth_*` native methods,\n * passive compatibility reads, and server-gated legacy/debug methods.\n *\n * Optional compatibility adapters live under the explicit `./ethers`\n * subpath so native SDK consumers do not import that peer dependency.\n */\n\nexport const version = \"0.2.2\";\n\nexport { ApiClient, apiEndpointFromRpcEndpoint } from \"./api.js\";\nexport {\n BRIDGE_QUOTE_API_BLOCKED_REASON,\n BRIDGE_REVERT_TAGS,\n BRIDGE_SELECTORS,\n BRIDGE_SUBMIT_API_BLOCKED_REASON,\n V1_BRIDGE_ALLOWED_FEE_TOKEN,\n V1_BRIDGE_ALLOWED_PROTOCOL,\n BridgePrecompileError,\n BridgeRouteCatalogueError,\n assessBridgeRoute,\n bridgeAddressHex,\n bridgeQuoteSubmitReadiness,\n bridgeRoutesReadiness,\n bridgeTransferCandidates,\n buildBridgeRouteCatalogue,\n encodeLockBridgeConfigCalldata,\n encodeSetBridgeRouteFinalityCalldata,\n encodeSetBridgeResumeCooldownCalldata,\n exportBridgeRouteCatalogueJson,\n isBridgeAdminLockedRevert,\n isBridgeCooldownZeroRevert,\n isBridgeFinalityZeroRevert,\n isBridgeResumeCooldownActiveRevert,\n normalizeBridgeRouteCatalogue,\n parseBridgeRouteCatalogueJson,\n rankBridgeRoutes,\n selectBridgeTransferRoute,\n validateBridgeRouteCatalogue,\n} from \"./bridge.js\";\nexport type {\n BridgeAdminControl,\n BridgeBytesInput,\n BridgeCircuitBreakerState,\n BridgeQuoteSubmitReadiness,\n BridgeRiskTier,\n BridgeRouteAssessment,\n BridgeRouteCandidate,\n BridgeRouteCatalogue,\n BridgeRouteCatalogueJsonOptions,\n BridgeRouteCataloguePayload,\n BridgeRouteCatalogueRoute,\n BridgeRouteCatalogueValidation,\n BridgeRouteDisclosure,\n BridgeRouteSelection,\n BridgeRoutesRequest,\n BridgeRoutesResponse,\n BridgeRoutesSource,\n BridgeTransferIntent,\n BridgeTransferRequest,\n BridgeVerifierDisclosure,\n RankedBridgeRoute,\n} from \"./bridge.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 ApiTransactionNativeReceiptData,\n ApiTransactionReceipt,\n ApiTransactionReceiptData,\n ApiTransactionView,\n ApiUpgradePlanStatus,\n ApiUpgradeStatus,\n ApiUpgradeStatusData,\n} from \"./api.js\";\nexport {\n MAX_NATIVE_RECEIPT_EVENTS,\n RpcClient,\n decodeNativeAgentStateResponse,\n decodeNativeReceiptResponse,\n decodeTxFeedResponse,\n nativeAgentStateFilterParams,\n nativeMarketStateFilterParams,\n nativeEventsFilterParams,\n parseQuantity,\n parseQuantityBig,\n} from \"./client.js\";\nexport type {\n AddressActivityKind,\n AddressFlowResponse,\n AddressProfileResponse,\n AgentReputationCategoryScope,\n AgentReputationRecord,\n AgentReputationResponse,\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 ExecutionUnitPriceResponse,\n JailStatusWindow,\n KeyRotationWindow,\n LythUpgradePlanStatus,\n LythUpgradeStatusResponse,\n MetricsRangeResponse,\n MetricsRangeSample,\n MetricsRangeSeries,\n MetricsRangeStatus,\n NoEvmArchiveProof,\n NoEvmArchiveCoveringSnapshot,\n NoEvmFinalityCertificate,\n NoEvmFinalityBlockReference,\n NoEvmFinalityEvidence,\n NoEvmReceiptProof,\n NativeReceiptCounters,\n NativeReceiptEvent,\n NativeReceiptFee,\n NativeReceiptResponse,\n NativeReceiptSource,\n NativeEventsFilter,\n NativeEventsResponse,\n NativeEventsResponseFilters,\n NativeEventsSource,\n NativeAgentArbiterStateRecord,\n NativeAgentAttestationStateRecord,\n NativeAgentAvailabilityStateRecord,\n NativeAgentConsentStateRecord,\n NativeAgentEscrowStateRecord,\n NativeAgentIssuerStateRecord,\n NativeAgentPolicySpendStateRecord,\n NativeAgentPolicyStateRecord,\n NativeAgentReputationReviewStateRecord,\n NativeAgentServiceStateRecord,\n NativeAgentStateFilterParamValue,\n NativeAgentStateFilter,\n NativeAgentStateResponse,\n NativeAgentStateResponseFilters,\n NativeAgentStateSource,\n NativeCollectionRoyaltyStateRecord,\n NativeMarketStateFilterParamValue,\n NativeMarketStateFilter,\n NativeMarketStateResponse,\n NativeMarketStateResponseFilters,\n NativeMarketStateSource,\n NativeNftListingStateRecord,\n NativeSpotMarketStateRecord,\n NativeSpotOrderStateRecord,\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 UserAddressInput,\n VertexAtRound,\n VerticesAtRoundResponse,\n} from \"./client.js\";\nexport {\n API_STREAM_TOPICS,\n NATIVE_MARKET_ORDER_BOOK_STREAM_TOPIC,\n assertNativeMarketOrderBookStreamPayload,\n decodeNativeMarketOrderBookDeltasResponse,\n isNativeMarketOrderBookStreamPayload,\n} from \"./streams.js\";\nexport type {\n ApiStreamTopic,\n ApiStreamTopicMetadata,\n ApiStreamTopicRetention,\n ApiStreamsIndexResponse,\n NativeMarketOrderBookDelta,\n NativeMarketOrderBookDeltasRequest,\n NativeMarketOrderBookDeltasResponse,\n NativeMarketOrderBookDeltasResponseFilters,\n NativeMarketOrderBookDeltasSource,\n NativeMarketOrderBookStreamAction,\n NativeMarketOrderBookStreamPayload,\n} from \"./streams.js\";\nexport {\n NO_EVM_ARCHIVE_PROOF_SCHEMA,\n NO_EVM_ARCHIVE_SIGNATURE_SCHEME,\n NO_EVM_FINALITY_EVIDENCE_SCHEMA,\n NO_EVM_FINALITY_EVIDENCE_SOURCE,\n NO_EVM_RECEIPTS_ROOT_DOMAIN,\n NO_EVM_RECEIPT_CODEC,\n NO_EVM_RECEIPT_PROOF_SCHEMA,\n NO_EVM_RECEIPT_PROOF_TYPE,\n NO_EVM_RECEIPT_ROOT_ALGORITHM,\n NoEvmReceiptProofError,\n computeNoEvmDacFinalityMessage,\n computeNoEvmLeaderFinalityMessage,\n computeNoEvmReceiptsRoot,\n computeNoEvmRoundFinalityMessage,\n computeNoEvmTargetReceiptHash,\n decodeNoEvmReceiptTranscript,\n verifyNoEvmBlockFinalityEvidenceMultisig,\n verifyNoEvmBlockFinalityEvidenceThreshold,\n verifyNoEvmFinalityEvidenceMultisig,\n verifyNoEvmFinalityEvidenceThreshold,\n verifyNoEvmArchiveProofSignatures,\n verifyNoEvmReceiptProof,\n verifyNoEvmReceiptProofTrust,\n} from \"./receipt-proof.js\";\nexport type {\n NoEvmBlockBlsFinalityVerification,\n NoEvmBlsFinalityVerification,\n NoEvmArchiveSignatureVerification,\n NoEvmArchiveSignatureVerificationIssue,\n NoEvmArchiveSignatureVerificationIssueCode,\n NoEvmArchiveTrustedSigner,\n NoEvmReceiptFinalityTrustPolicy,\n NoEvmReceiptProofErrorCode,\n NoEvmReceiptProofVerification,\n NoEvmReceiptTrustIssue,\n NoEvmReceiptTrustIssueCode,\n NoEvmReceiptTrustPolicy,\n NoEvmReceiptTrustVerification,\n NoEvmReceiptTrustedBlsSigner,\n} from \"./receipt-proof.js\";\nexport {\n NATIVE_MARKET_EVENT_FAMILY,\n consumeNativeEvents,\n isNativeDecodedEvent,\n nativeMarketEventFilter,\n nativeMarketEventsFromHistory,\n nativeMarketEventsFromReceipt,\n nativeEventMatches,\n nativeEventsFromHistory,\n nativeEventsFromReceipt,\n parseNativeDecodedEvent,\n} from \"./native-events.js\";\nexport type {\n NativeDecodedEvent,\n NativeEventProjection,\n NativeEventConsumer,\n NativeEventFilter,\n NativeMrcPolicyProjection,\n TypedNativeReceiptEvent,\n} from \"./native-events.js\";\nexport type { ClobMarketRecord } from \"./bindings/ClobMarketRecord.js\";\nexport type { ClobMarketResponse } from \"./bindings/ClobMarketResponse.js\";\nexport type { MrcAccountRecord } from \"./bindings/MrcAccountRecord.js\";\nexport type { MrcAccountRequest } from \"./bindings/MrcAccountRequest.js\";\nexport type { MrcAccountResponse } from \"./bindings/MrcAccountResponse.js\";\nexport type { MrcHoldersRequest } from \"./bindings/MrcHoldersRequest.js\";\nexport type { MrcHoldersResponse } from \"./bindings/MrcHoldersResponse.js\";\nexport type { MrcMetadataRecord } from \"./bindings/MrcMetadataRecord.js\";\nexport type { MrcMetadataResponse } from \"./bindings/MrcMetadataResponse.js\";\nexport type { MrcPolicyRecord } from \"./bindings/MrcPolicyRecord.js\";\nexport type { MrcPolicySpendRecord } from \"./bindings/MrcPolicySpendRecord.js\";\nexport type { RedemptionQueueResponse } from \"./bindings/RedemptionQueueResponse.js\";\nexport type { RedemptionQueueTicket } from \"./bindings/RedemptionQueueTicket.js\";\nexport * from \"./native-dev.js\";\nexport * from \"./mrv.js\";\nexport {\n CHAIN_REGISTRY,\n CHAIN_REGISTRY_RAW_BASE,\n TESTNET_69420,\n fetchChainInfoLatest,\n fetchChainRegistryLatest,\n getChainInfo,\n getNoEvmReceiptTrustPolicy,\n getP2pSeeds,\n getRpcEndpoints,\n noEvmReceiptTrustPolicyFromChainInfo,\n parseChainRegistryToml,\n} from \"./registry.js\";\nexport type {\n ChainInfo,\n ChainRegistry,\n ExplorerEndpoint,\n NetworkSlug,\n P2pSeed,\n ReceiptProofTrustArchivePolicy,\n ReceiptProofTrustArchiveSigner,\n ReceiptProofTrustFinalityPolicy,\n ReceiptProofTrustFinalitySigner,\n ReceiptProofTrustPolicy,\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_KIND_HRPS,\n ADDRESS_HRP,\n RESERVED_ADDRESS_HRPS,\n AddressError,\n addressBytesToHex,\n addressToBech32,\n addressToTypedBech32,\n bech32ToAddress,\n bech32ToAddressBytes,\n hexToAddressBytes,\n normalizeAddressHex,\n parseAddress,\n requireTypedAddress,\n typedBech32ToAddress,\n validateAddress,\n} from \"./address.js\";\nexport type { AddressKind, AddressValidation, TypedAddress } from \"./address.js\";\nexport {\n DELEGATION_REVERT_TAGS,\n DELEGATION_SELECTORS,\n DelegationPrecompileError,\n delegationAddressHex,\n encodeClaimCalldata,\n encodeCompleteRedemptionCalldata,\n encodeDelegateCalldata,\n encodeRedelegateCalldata,\n encodeSetAutoCompoundCalldata,\n encodeUndelegateCalldata,\n isRedemptionPrincipalUnavailableRevert,\n} from \"./delegation.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\";\nexport {\n CLOB_MARKET_ID_DOMAIN_TAG,\n CLOB_SELECTORS,\n MarketActionError,\n MAX_NATIVE_CALL_FORWARDER_REQUEST_BYTES,\n NATIVE_CALL_FORWARDER_ARTIFACT_PROFILE,\n NATIVE_CALL_FORWARDER_RESPONSE_CAPACITY,\n NATIVE_CALL_FORWARDER_RESPONSE_OFFSET,\n NATIVE_MARKET_MODULE_ADDRESS,\n NATIVE_MARKET_MODULE_ADDRESS_BYTES,\n buildNativeCallForwarderArtifact,\n buildNativeMarketModuleCallEnvelope,\n buildNativeNftBuyListingModuleCall,\n buildNativeNftBuyListingForwarderInput,\n buildNativeNftCancelListingModuleCall,\n buildNativeNftCancelListingForwarderInput,\n buildNativeNftCreateListingModuleCall,\n buildNativeNftCreateListingForwarderInput,\n buildNativeNftPlaceAuctionBidModuleCall,\n buildNativeNftPlaceAuctionBidForwarderInput,\n buildNativeNftSettleAuctionModuleCall,\n buildNativeNftSettleAuctionForwarderInput,\n buildNativeNftSweepExpiredListingsModuleCall,\n buildNativeNftSweepExpiredListingsForwarderInput,\n buildNativeSpotCancelOrderModuleCall,\n buildNativeSpotCancelOrderForwarderInput,\n buildNativeSpotCreateMarketModuleCall,\n buildNativeSpotCreateMarketForwarderInput,\n buildNativeSpotLimitOrderModuleCall,\n buildNativeSpotLimitOrderForwarderInput,\n buildNativeSpotSettleLimitOrderModuleCall,\n buildNativeSpotSettleLimitOrderForwarderInput,\n buildNativeSpotSettleRoutedLimitOrderModuleCall,\n buildNativeSpotSettleRoutedLimitOrderForwarderInput,\n buildCancelSpotOrderPlan,\n buildPlaceSpotLimitOrderPlan,\n buildPlaceSpotMarketOrderExPlan,\n buildPlaceSpotMarketOrderPlan,\n clobAddressHex,\n deriveClobMarketId,\n deriveNativeSpotMarketId,\n deriveNativeSpotOrderId,\n encodeCancelOrderCalldata,\n encodeSetLotSizeCalldata,\n encodeSetMinNotionalCalldata,\n encodeSetTickSizeCalldata,\n encodeNativeMarketModuleForwarderInput,\n encodeNativeNftBuyListingCall,\n encodeNativeNftCancelListingCall,\n encodeNativeNftCreateListingCall,\n encodeNativeNftPlaceAuctionBidCall,\n encodeNativeNftSettleAuctionCall,\n encodeNativeNftSweepExpiredListingsCall,\n encodeNativeSpotCancelOrderCall,\n encodeNativeSpotCreateMarketCall,\n encodeNativeSpotLimitOrderCall,\n encodeNativeSpotSettleLimitOrderCall,\n encodeNativeSpotSettleRoutedLimitOrderCall,\n encodePlaceLimitOrderCalldata,\n encodePlaceMarketOrderCalldata,\n encodePlaceMarketOrderExCalldata,\n} from \"./market-actions.js\";\nexport type {\n CancelSpotOrderArgs,\n EncodeNativeNftBuyListingArgs,\n EncodeNativeNftCancelListingArgs,\n EncodeNativeNftCreateListingArgs,\n EncodeNativeNftPlaceAuctionBidArgs,\n EncodeNativeNftSettleAuctionArgs,\n EncodeNativeNftSweepExpiredListingsArgs,\n EncodeNativeSpotCancelOrderArgs,\n EncodeNativeSpotCreateMarketArgs,\n EncodeNativeSpotLimitOrderArgs,\n EncodeNativeSpotSettleLimitOrderArgs,\n EncodeNativeSpotSettleRoutedLimitOrderArgs,\n EthSendTransactionRequest,\n MarketTransactionPlan,\n NativeCallForwarderArtifact,\n NativeMarketAddressInput,\n NativeMarketAddressKind,\n NativeMarketForwarderInput,\n NativeMarketModuleCallEnvelope,\n NativeMarketModuleContractCall,\n NativeNftAssetStandard,\n NativeNftListingKind,\n PlaceSpotLimitOrderArgs,\n PlaceSpotMarketOrderArgs,\n PlaceSpotMarketOrderExArgs,\n SpotLimitOrderSide,\n SpotMarketOrderMode,\n} from \"./market-actions.js\";\nexport {\n AgentActionError,\n NATIVE_AGENT_MODULE_ADDRESS,\n NATIVE_AGENT_MODULE_ADDRESS_BYTES,\n buildNativeAgentCreateEscrowForwarderInput,\n buildNativeAgentCreateEscrowModuleCall,\n buildNativeAgentModuleCallEnvelope,\n buildNativeAgentRecordReputationForwarderInput,\n buildNativeAgentRecordReputationModuleCall,\n buildNativeAgentSetSpendingPolicyForwarderInput,\n buildNativeAgentSetSpendingPolicyModuleCall,\n encodeNativeAgentAcceptEscrowCall,\n encodeNativeAgentApproveEscrowCall,\n encodeNativeAgentArbiterGetCall,\n encodeNativeAgentAttestationGetCall,\n encodeNativeAgentAvailabilityGetCall,\n encodeNativeAgentCancelEscrowCall,\n encodeNativeAgentCloseAvailabilityCall,\n encodeNativeAgentConsentGetCall,\n encodeNativeAgentCounterEscrowCall,\n encodeNativeAgentCreateEscrowCall,\n encodeNativeAgentDeactivateServiceCall,\n encodeNativeAgentDisputeEscrowCall,\n encodeNativeAgentEscrowGetCall,\n encodeNativeAgentGrantConsentCall,\n encodeNativeAgentIssueAttestationCall,\n encodeNativeAgentIssuerGetCall,\n encodeNativeAgentListServiceCall,\n encodeNativeAgentModuleForwarderInput,\n encodeNativeAgentOpenAvailabilityCall,\n encodeNativeAgentRecordPolicySpendCall,\n encodeNativeAgentRecordReputationCall,\n encodeNativeAgentRegisterArbiterCall,\n encodeNativeAgentRegisterIssuerCall,\n encodeNativeAgentReputationGetCall,\n encodeNativeAgentResolveEscrowCall,\n encodeNativeAgentRevokeAttestationCall,\n encodeNativeAgentRevokeConsentCall,\n encodeNativeAgentServiceGetCall,\n encodeNativeAgentSetAvailabilityCall,\n encodeNativeAgentSetSpendingPolicyCall,\n encodeNativeAgentSpendingPolicyGetCall,\n encodeNativeAgentStartEscrowCall,\n encodeNativeAgentSubmitEscrowCall,\n} from \"./agent-actions.js\";\nexport type {\n EncodeNativeAgentAvailabilitySlotArgs,\n EncodeNativeAgentCreateEscrowArgs,\n EncodeNativeAgentCounterEscrowArgs,\n EncodeNativeAgentDeactivateServiceArgs,\n EncodeNativeAgentEscrowActorArgs,\n EncodeNativeAgentGrantConsentArgs,\n EncodeNativeAgentIssueAttestationArgs,\n EncodeNativeAgentListServiceArgs,\n EncodeNativeAgentRecordPolicySpendArgs,\n EncodeNativeAgentRecordReputationArgs,\n EncodeNativeAgentRegisterArbiterArgs,\n EncodeNativeAgentRegisterIssuerArgs,\n EncodeNativeAgentResolveEscrowArgs,\n EncodeNativeAgentRevokeAttestationArgs,\n EncodeNativeAgentRevokeConsentArgs,\n EncodeNativeAgentSetAvailabilityArgs,\n EncodeNativeAgentSetSpendingPolicyArgs,\n EncodeNativeAgentStartEscrowArgs,\n EncodeNativeAgentSubmitEscrowArgs,\n NativeAgentAddressInput,\n NativeAgentAddressKind,\n NativeAgentEscrowResolution,\n NativeAgentForwarderInput,\n NativeAgentModuleCallEnvelope,\n NativeAgentModuleContractCall,\n NativeAgentReputationScores,\n} from \"./agent-actions.js\";\nexport {\n MONOLYTHIUM_NETWORKS,\n MONOLYTHIUM_TESTNET_CHAIN_ID,\n MONOLYTHIUM_TESTNET_NETWORK_NAME,\n} from \"./network.js\";\nexport type { MonolythiumNetworkConfig } from \"./network.js\";\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/error.ts","../src/address.ts","../src/native-events.ts","../src/consts.ts","../src/node-registry.ts","../src/crypto/bytes.ts","../src/crypto/bincode.ts","../src/crypto/ml-dsa.ts","../src/crypto/envelope.ts","../src/crypto/submission.ts","../src/mrv.ts","../src/registry.ts","../src/types.ts","../src/client.ts","../src/streams.ts","../src/api.ts","../src/bridge.ts","../src/receipt-proof.ts","../src/native-dev.ts","../src/tx-fee.ts","../src/oracle.ts","../src/prover-market.ts","../src/delegation.ts","../src/spending-policy.ts","../src/pubkey-registry.ts","../src/market-actions.ts","../src/agent-actions.ts","../src/network.ts","../src/index.ts"],"names":["expectLength","blake3","keccak_256","concatBytes","bytesToHex","hexToBytes","ml_kem768","randomBytes","chacha20poly1305","field","version","optionalString","expectObject","SDK_VERSION","sdkTypedAddress","toBytes","score","isRecord","stringField","BLS_PUBLIC_KEY_BYTE_LENGTH","ml_dsa65","bls12_381","u64FromWord","u32FromWord","selectorHex","toBigint","uint64Word","uint32Word","ML_DSA_65_PUBLIC_KEY_LEN","ML_DSA_65_SIGNATURE_LEN","bigintBytes","encodeSingleAddressCall","uint8Word","uint256Word","uint16Word","addressWord","mrvCodeHashHex","monoAddressInto","uint64","bytes32FromHex","positiveU128Decimal","normalizeHexBytes","normalizeBytes32Hex","positiveDecimal"],"mappings":"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","file":"index.cjs","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 * Address display helpers.\n *\n * Monolythium keeps 20-byte account identifiers on the wire, but\n * user-facing surfaces display them as `mono1...` bech32m strings.\n */\n\nexport const ADDRESS_HRP = \"mono\" as const;\nexport const ADDRESS_KIND_HRPS = {\n user: \"mono\",\n smartAccount: \"monos\",\n contract: \"monoc\",\n cluster: \"monok\",\n multisig: \"monom\",\n systemModule: \"monox\",\n} as const;\nexport const RESERVED_ADDRESS_HRPS = [\"monor\", \"monop\", \"monoi\", \"monoa\"] as const;\n\nexport type AddressKind = keyof typeof ADDRESS_KIND_HRPS;\n\nexport interface TypedAddress {\n kind: AddressKind;\n address: string;\n bytes: Uint8Array;\n hex: string;\n}\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 return addressToTypedBech32(\"user\", address);\n}\n\nexport function addressToTypedBech32(\n kind: AddressKind,\n address: string | Uint8Array | readonly number[],\n): string {\n const bytes = typeof address === \"string\" ? hexToAddressBytes(address) : expectLength(address, 20, \"address\");\n return encodeBech32m(ADDRESS_KIND_HRPS[kind], bytes);\n}\n\nfunction encodeBech32m(hrp: string, bytes: Uint8Array): string {\n const words = convertBits([...bytes], 8, 5, true);\n const checksum = createChecksum(hrp, words);\n return `${hrp}1${[...words, ...checksum].map((v) => CHARSET[v]).join(\"\")}`;\n}\n\nexport function bech32ToAddressBytes(address: string): Uint8Array {\n return typedBech32ToAddress(address, \"user\").bytes;\n}\n\nexport function bech32ToAddress(address: string): string {\n return addressBytesToHex(bech32ToAddressBytes(address));\n}\n\nexport function typedBech32ToAddress(address: string, expectedKind?: AddressKind): TypedAddress {\n const parsed = decodeBech32m(address);\n if ((RESERVED_ADDRESS_HRPS as readonly string[]).includes(parsed.hrp)) {\n throw new AddressError(`reserved address hrp '${parsed.hrp}'`);\n }\n const kind = addressKindFromHrp(parsed.hrp);\n if (kind === undefined) {\n throw new AddressError(`unknown address hrp '${parsed.hrp}'`);\n }\n if (expectedKind !== undefined && kind !== expectedKind) {\n throw new AddressError(`unexpected hrp '${parsed.hrp}', expected '${ADDRESS_KIND_HRPS[expectedKind]}'`);\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 const out = Uint8Array.from(bytes);\n return { kind, address: address.toLowerCase(), bytes: out, hex: addressBytesToHex(out) };\n}\n\nexport function requireTypedAddress(\n address: string,\n expectedKind: AddressKind,\n label = \"address\",\n): string {\n if (address.startsWith(\"0x\") || address.startsWith(\"0X\")) {\n throw new AddressError(\n `${label} raw 0x addresses are retired; use typed ${ADDRESS_KIND_HRPS[expectedKind]} bech32m addresses`,\n );\n }\n try {\n return typedBech32ToAddress(address, expectedKind).address;\n } catch (err) {\n const message = err instanceof Error ? err.message : String(err);\n throw new AddressError(\n `${label} must be typed ${ADDRESS_KIND_HRPS[expectedKind]} bech32m address: ${message}`,\n );\n }\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\n/** Address-validation result for non-throwing callers (UI forms, search). */\nexport type AddressValidation =\n | {\n valid: true;\n /** Lower-case bech32m representation; matches what the wire format expects. */\n normalized: string;\n /** Bech32m kind when the input is a typed bech32m address, otherwise null. */\n kind: AddressKind | null;\n /** Which surface the input came from. */\n format: \"hex\" | \"bech32m\";\n /** Raw 20-byte payload, useful for client-side bytes-derived lookups. */\n bytes: Uint8Array;\n }\n | { valid: false; reason: string };\n\n/**\n * Validate an address string without throwing. Accepts both raw hex and\n * typed bech32m. On success returns the canonical bech32m form along with\n * the kind/format/bytes; on failure returns a short reason string.\n */\nexport function validateAddress(address: string): AddressValidation {\n if (typeof address !== \"string\" || address.length === 0) {\n return { valid: false, reason: \"address cannot be empty\" };\n }\n const trimmed = address.trim();\n if (trimmed.length === 0) {\n return { valid: false, reason: \"address cannot be empty\" };\n }\n if (trimmed.startsWith(\"0x\") || trimmed.startsWith(\"0X\")) {\n try {\n const bytes = hexToAddressBytes(trimmed);\n return {\n valid: true,\n normalized: addressToBech32(bytes),\n kind: null,\n format: \"hex\",\n bytes,\n };\n } catch (err) {\n return { valid: false, reason: err instanceof Error ? err.message : String(err) };\n }\n }\n try {\n const typed = typedBech32ToAddress(trimmed);\n return {\n valid: true,\n normalized: typed.address,\n kind: typed.kind,\n format: \"bech32m\",\n bytes: typed.bytes,\n };\n } catch (err) {\n return { valid: false, reason: err instanceof Error ? err.message : String(err) };\n }\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 addressKindFromHrp(hrp: string): AddressKind | undefined {\n for (const [kind, kindHrp] of Object.entries(ADDRESS_KIND_HRPS) as Array<[AddressKind, string]>) {\n if (kindHrp === hrp) return kind;\n }\n return undefined;\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","import { SdkError } from \"./error.js\";\nimport type {\n NativeEventsResponse,\n NativeReceiptEvent,\n NativeReceiptResponse,\n} from \"./client.js\";\n\n/** Common typed payload envelope emitted by the native event projector. */\nexport interface NativeDecodedEvent {\n block_height: number;\n tx_index: number;\n sequence: number;\n family: string;\n event_name: string;\n nonce?: number | null;\n market_surface?: string | null;\n marketSurface?: string | null;\n market_asset_id?: string | null;\n marketAssetId?: string | null;\n market_related_asset_id?: string | null;\n marketRelatedAssetId?: string | null;\n market_order_id?: string | null;\n marketOrderId?: string | null;\n market_related_order_id?: string | null;\n marketRelatedOrderId?: string | null;\n price?: string | null;\n quantity?: string | null;\n remaining?: string | null;\n side?: string | null;\n status?: string | null;\n nft_standard?: string | null;\n nftStandard?: string | null;\n policy?: NativeMrcPolicyProjection | null;\n royalty_bps?: number | null;\n royaltyBps?: number | null;\n listing_kind?: unknown;\n listingKind?: unknown;\n expires_at_block?: number | null;\n expiresAtBlock?: number | null;\n tick_size?: string | null;\n tickSize?: string | null;\n lot_size?: string | null;\n lotSize?: string | null;\n min_quantity?: string | null;\n minQuantity?: string | null;\n min_notional?: string | null;\n minNotional?: string | null;\n payload_hash: string;\n [field: string]: unknown;\n}\n\n/** Canonical policy body projected from native MRC policy-account events. */\nexport interface NativeMrcPolicyProjection {\n enabled: boolean;\n per_action_limit: string | number;\n window_limit: string | number;\n allowed_assets: Array<string | Array<number>>;\n}\n\nexport type NativeEventProjection = NativeDecodedEvent;\n\nexport const NATIVE_MARKET_EVENT_FAMILY = \"market\" as const;\n\n/** Optional filters applied to native receipt event rows. */\nexport interface NativeEventFilter {\n address?: string;\n eventTopic?: string;\n family?: string;\n eventName?: string;\n}\n\nexport function nativeMarketEventFilter(filter: NativeEventFilter = {}): NativeEventFilter {\n return { ...filter, family: NATIVE_MARKET_EVENT_FAMILY };\n}\n\nexport type TypedNativeReceiptEvent<TDecoded extends NativeDecodedEvent = NativeDecodedEvent> =\n NativeReceiptEvent<TDecoded>;\n\nexport type NativeEventConsumer<TDecoded extends NativeDecodedEvent = NativeDecodedEvent> = (\n event: TypedNativeReceiptEvent<TDecoded>,\n) => void | Promise<void>;\n\nexport function isNativeDecodedEvent(value: unknown): value is NativeDecodedEvent {\n const row = asRecord(value);\n return (\n row !== null &&\n typeof row[\"block_height\"] === \"number\" &&\n typeof row[\"tx_index\"] === \"number\" &&\n typeof row[\"sequence\"] === \"number\" &&\n typeof row[\"family\"] === \"string\" &&\n typeof row[\"event_name\"] === \"string\" &&\n typeof row[\"payload_hash\"] === \"string\"\n );\n}\n\nexport function parseNativeDecodedEvent<TDecoded extends NativeDecodedEvent = NativeDecodedEvent>(\n event: Pick<NativeReceiptEvent<unknown>, \"decoded\" | \"decodedJson\" | \"eventTopic\" | \"logIndex\">,\n): TDecoded {\n if (isNativeDecodedEvent(event.decoded)) {\n return event.decoded as TDecoded;\n }\n\n try {\n const parsed = JSON.parse(event.decodedJson) as unknown;\n if (isNativeDecodedEvent(parsed)) {\n return parsed as TDecoded;\n }\n } catch {\n // Fall through to the shape error below.\n }\n\n throw SdkError.malformed(\n `native event ${event.eventTopic} at logIndex ${event.logIndex} is missing a typed decoded payload`,\n );\n}\n\nexport function nativeEventMatches(\n event: NativeReceiptEvent<unknown>,\n filter: NativeEventFilter = {},\n): boolean {\n if (filter.address !== undefined && event.address !== filter.address) return false;\n if (filter.eventTopic !== undefined && event.eventTopic !== filter.eventTopic) return false;\n\n if (filter.family === undefined && filter.eventName === undefined) return true;\n\n let decoded: NativeDecodedEvent;\n try {\n decoded = parseNativeDecodedEvent(event);\n } catch {\n return false;\n }\n if (filter.family !== undefined && decoded.family !== filter.family) return false;\n if (filter.eventName !== undefined && decoded.event_name !== filter.eventName) return false;\n return true;\n}\n\nexport function nativeEventsFromReceipt<\n TDecoded extends NativeDecodedEvent = NativeDecodedEvent,\n>(\n receipt: NativeReceiptResponse<unknown>,\n filter: NativeEventFilter = {},\n): Array<TypedNativeReceiptEvent<TDecoded>> {\n return receipt.events\n .filter((event) => nativeEventMatches(event, filter))\n .map((event) => ({\n ...event,\n decoded: parseNativeDecodedEvent<TDecoded>(event),\n }));\n}\n\nexport function nativeMarketEventsFromReceipt<\n TDecoded extends NativeDecodedEvent = NativeDecodedEvent,\n>(\n receipt: NativeReceiptResponse<unknown>,\n filter: NativeEventFilter = {},\n): Array<TypedNativeReceiptEvent<TDecoded>> {\n return nativeEventsFromReceipt<TDecoded>(receipt, nativeMarketEventFilter(filter));\n}\n\nexport function nativeEventsFromHistory<\n TDecoded extends NativeDecodedEvent = NativeDecodedEvent,\n>(response: NativeEventsResponse<unknown>): NativeEventsResponse<TDecoded> {\n return {\n ...response,\n events: response.events.map((event) => ({\n ...event,\n decoded: parseNativeDecodedEvent<TDecoded>(event),\n })),\n };\n}\n\nexport function nativeMarketEventsFromHistory<\n TDecoded extends NativeDecodedEvent = NativeDecodedEvent,\n>(response: NativeEventsResponse<unknown>): NativeEventsResponse<TDecoded> {\n return {\n ...response,\n filters: { ...response.filters, family: NATIVE_MARKET_EVENT_FAMILY },\n events: response.events\n .filter((event) => nativeEventMatches(event, { family: NATIVE_MARKET_EVENT_FAMILY }))\n .map((event) => ({\n ...event,\n decoded: parseNativeDecodedEvent<TDecoded>(event),\n })),\n };\n}\n\nexport async function consumeNativeEvents<\n TDecoded extends NativeDecodedEvent = NativeDecodedEvent,\n>(\n receipt: NativeReceiptResponse<unknown>,\n consumer: NativeEventConsumer<TDecoded>,\n filter: NativeEventFilter = {},\n): Promise<number> {\n const events = nativeEventsFromReceipt<TDecoded>(receipt, filter);\n for (const event of events) {\n await consumer(event);\n }\n return events.length;\n}\n\nfunction asRecord(value: unknown): Record<string, unknown> | null {\n if (value === null || typeof value !== \"object\" || Array.isArray(value)) return null;\n return value as Record<string, unknown>;\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 * Base-fee burn destination.\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 native/precompile address map for the current v4.1 surface.\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`, `0x1006`, `0x1007`, and `0x1103` are intentionally absent.\n * They are not part of the current SDK surface.\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 — 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 /** Native bridge route-control surface — gateable. */\n BRIDGE: \"0x0000000000000000000000000000000000001008\",\n /** Decentralized multi-signer oracle — non-gateable. */\n ORACLE: \"0x0000000000000000000000000000000000001009\",\n /** Distributed delegation primitive — gateable. */\n DELEGATION: \"0x000000000000000000000000000000000000100A\",\n /** Operator-fee router — skims an operator surcharge on routed CLOB ops; gateable. */\n OPERATOR_ROUTER: \"0x000000000000000000000000000000000000100B\",\n /** GPU prover market — gateable, genesis-disabled (foundation milestone flip). */\n PROVER_MARKET: \"0x000000000000000000000000000000000000100C\",\n /** One-time emergency-key registry — non-gateable. */\n EMERGENCY_KEY: \"0x0000000000000000000000000000000000001100\",\n /** VRF precompile. */\n VRF: \"0x0000000000000000000000000000000000001101\",\n /** Streaming-payments primitive — gateable. */\n STREAMING_PAYMENTS: \"0x0000000000000000000000000000000000001102\",\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. */\n SPENDING_POLICY: \"0x000000000000000000000000000000000000110C\",\n /** Primary ML-DSA-65 pubkey registry — gateable. */\n PUBKEY_REGISTRY: \"0x000000000000000000000000000000000000110D\",\n /** Hierarchical name registry — gateable. */\n NAME_REGISTRY: \"0x000000000000000000000000000000000000110E\",\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/**\n * Operator-router precompile address (`0x100B`).\n *\n * Convenience alias for {@link PRECOMPILE_ADDRESSES}`.OPERATOR_ROUTER`.\n * Sourced from `mono-core` `operator-router::storage::OPERATOR_ROUTER_ADDRESS`.\n */\nexport const OPERATOR_ROUTER_ADDRESS = PRECOMPILE_ADDRESSES.OPERATOR_ROUTER;\n\n/**\n * Protocol ceiling on the operator surcharge, in basis points\n * (`100 = 1.00%`).\n *\n * Enforced on-chain at both write time (operator registration / update)\n * and read time (the `placeLimitOrderVia` op); this constant is the\n * advisory UX mirror so wallets can validate / display a fee before\n * submitting. Sourced from `mono-core`\n * `operator-router::storage::PROTOCOL_MAX_OPERATOR_FEE_BPS`.\n */\nexport const PROTOCOL_MAX_OPERATOR_FEE_BPS = 100 as const;\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 { blake3 } from \"@noble/hashes/blake3.js\";\nimport { keccak_256 } from \"@noble/hashes/sha3.js\";\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 /** GPU prover — may bid on + serve the GPU prover market (MB-4, bit 9). */\n SERVES_GPU_PROVE: 0x0000_0200,\n} as const;\n\n/** Maximum basis-point value for any PF-6 diversity term / the headline score. */\nexport const DIVERSITY_SCORE_MAX = 10_000;\n\n/** BLAKE3 multisig address-derivation domain (cluster-anchor preimage, MB-5). */\nexport const MULTISIG_ADDRESS_DERIVATION_DOMAIN = \"MONO_MULTISIG_BLAKE3_20_V1\" 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 /** `setNetworkMetadata(bytes32,uint16,bytes3,bytes)` — owner-callable (PF-6). */\n setNetworkMetadata: \"0x\" + selectorHex(\"setNetworkMetadata(bytes32,uint16,bytes3,bytes)\"),\n /** `getOperatorNetworkMetadata(bytes32)` view (PF-6). */\n getOperatorNetworkMetadata: \"0x\" + selectorHex(\"getOperatorNetworkMetadata(bytes32)\"),\n /** `getClusterDiversity(uint32)` view (PF-6). */\n getClusterDiversity: \"0x\" + selectorHex(\"getClusterDiversity(uint32)\"),\n} as const;\n\n/** Canonical `ClusterFormed(uint32,uint64,address,bytes)` event topic0 (MB-5). */\nexport const CLUSTER_FORMED_EVENT_SIG = \"ClusterFormed(uint32,uint64,address,bytes)\" 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\n/**\n * Hosting class an operator runs under (PF-6). Mirrors\n * `node-registry::registration::HostingClass`. Any byte outside `0..=2`\n * decodes to `cloud` (the least-diverse class).\n */\nexport type NodeHostingClass = \"bareMetal\" | \"coLocation\" | \"cloud\";\n\n/** Decode a hosting-class byte. Values outside `0..=2` → `cloud`. */\nexport function nodeHostingClassFromByte(b: number): NodeHostingClass {\n if (b === 0) return \"bareMetal\";\n if (b === 1) return \"coLocation\";\n return \"cloud\";\n}\n\n/** Encode a hosting class to its right-aligned `u8` enum byte. */\nexport function nodeHostingClassToByte(c: NodeHostingClass): number {\n switch (c) {\n case \"bareMetal\":\n return 0;\n case \"coLocation\":\n return 1;\n default:\n return 2;\n }\n}\n\n/**\n * `lyth_getOperatorNetworkMetadata` view (PF-6). Mirrors the\n * `(uint16 asn, bytes3 geoRegion, uint8 hostingClass, bytes32\n * ipAddressHash, bytes32 pcrDigest)` return tuple. The raw IP never\n * lives on-chain — `ipAddressHash` is `keccak256(ipHint)`.\n */\nexport interface OperatorNetworkMetadata {\n /** Autonomous-system number; `0` = not declared. */\n asn: number;\n /** ISO-3166-1 alpha-3 region as `0x` 3-byte hex; all-zero = not declared. */\n geoRegion: string;\n /** Declared hosting class. */\n hostingClass: NodeHostingClass;\n /** `keccak256` of the operator's public IP (`0x` 32 bytes). */\n ipAddressHash: string;\n /** `keccak256` of the TPM PCR digest (`0x` 32 bytes). */\n pcrDigest: string;\n}\n\n/**\n * `lyth_getClusterDiversity` view (PF-6). Mirrors the\n * `(uint16 score, uint16 asnVariance, uint16 geoVariance, uint16\n * hostingSpread)` return tuple. Every field is in `0..=10000` bps.\n */\nexport interface ClusterDiversity {\n /** Headline diversity score (`0..=10000`). */\n score: number;\n /** Normalised ASN-distribution entropy (`0..=10000`). */\n asnVariance: number;\n /** Normalised country-distribution entropy (`0..=10000`). */\n geoVariance: number;\n /** Normalised hosting-class-distribution entropy (`0..=10000`). */\n hostingSpread: number;\n}\n\n/**\n * `lyth_getClusterDiversity` RPC response (PF-6).\n *\n * Distinct from {@link ClusterDiversity} (which decodes the\n * `getClusterDiversity(uint32)` ABI return tuple from an `eth_call`):\n * this is the JSON the `lyth_getClusterDiversity` method returns,\n * serialized from the chain's `ClusterDiversity` struct with camelCase\n * keys. It carries the `clusterId` echo that the ABI tuple omits. Every\n * value is in `0..=10000` basis points.\n */\nexport interface ClusterDiversityView {\n /** Cluster id whose roster was scored. */\n clusterId: number;\n /** Headline diversity score (`0..=10000`). */\n score: number;\n /** Normalised ASN-distribution entropy (`0..=10000`). */\n asnVariance: number;\n /** Normalised country-distribution entropy (`0..=10000`). */\n geoVariance: number;\n /** Normalised hosting-class-distribution entropy (`0..=10000`). */\n hostingSpread: number;\n}\n\n/**\n * `lyth_getOperatorNetworkMetadata` RPC response (PF-6).\n *\n * Distinct from {@link OperatorNetworkMetadata} (the ABI-decode tuple):\n * this is the JSON the `lyth_getOperatorNetworkMetadata` method returns,\n * read from the node-registry registration record (`0x1005`). `geoRegion`\n * here is the decoded ISO-3166-1 alpha-3 region **string** (or `null`);\n * `hostingClass` is the snake_case wire string (`bare_metal` /\n * `co_location` / `cloud`); `asn` is `null` when not declared.\n */\nexport interface OperatorNetworkMetadataView {\n /** Response schema version (`1`). */\n schemaVersion: number;\n /** Data source — `\"native_state_storage\"`. */\n source: string;\n /** Node-registry precompile address (`0x1005`). */\n precompile: string;\n /** Operator/peer id (`0x` 32-byte hex). */\n operatorId: string;\n /** Autonomous-system number; `null` when not declared. */\n asn: number | null;\n /** Decoded ISO-3166-1 alpha-3 region string; `null` when not declared. */\n geoRegion: string | null;\n /** Declared hosting class as the wire string. */\n hostingClass: \"bare_metal\" | \"co_location\" | \"cloud\";\n /** `keccak256` of the operator's public IP (`0x` 32 bytes). */\n ipAddressHash: string;\n /** `keccak256` of the TPM PCR digest (`0x` 32 bytes). */\n pcrDigest: string;\n}\n\n/**\n * Decoded `ClusterFormed(uint32,uint64,address,bytes)` event (MB-5).\n * Mirrors `node-registry::events::CLUSTER_FORMED`.\n */\nexport interface ClusterFormedEvent {\n /** Cluster identifier (indexed topic 1). */\n clusterId: number;\n /** Activation epoch (indexed topic 2). */\n effectiveEpoch: bigint;\n /** Primary anchor address (`0x` 20 bytes). */\n anchorAddress: string;\n /** Concatenated 48-byte compressed BLS pubkeys (`0x` hex). */\n operatorRoster: string;\n}\n\n/**\n * Decode a `getOperatorNetworkMetadata` return tuple — a flat 5-word\n * head: `(uint16 asn, bytes3 geoRegion, uint8 hostingClass, bytes32\n * ipAddressHash, bytes32 pcrDigest)`.\n */\nexport function decodeOperatorNetworkMetadata(\n returnData: string | Uint8Array | readonly number[],\n): OperatorNetworkMetadata {\n const bytes = expectLength(toBytes(returnData), 5 * 32, \"operatorNetworkMetadata\");\n return {\n asn: (bytes[30] << 8) | bytes[31],\n // bytes3 is left-aligned in the head word.\n geoRegion: bytesToHex(bytes.slice(64, 67)),\n hostingClass: nodeHostingClassFromByte(bytes[95]),\n ipAddressHash: bytesToHex(bytes.slice(96, 128)),\n pcrDigest: bytesToHex(bytes.slice(128, 160)),\n };\n}\n\n/**\n * Decode a `getClusterDiversity` return tuple — a flat 4-word head:\n * `(uint16 score, uint16 asnVariance, uint16 geoVariance, uint16\n * hostingSpread)`.\n */\nexport function decodeClusterDiversity(\n returnData: string | Uint8Array | readonly number[],\n): ClusterDiversity {\n const bytes = expectLength(toBytes(returnData), 4 * 32, \"clusterDiversity\");\n const word = (i: number) => (bytes[i * 32 + 30] << 8) | bytes[i * 32 + 31];\n return {\n score: word(0),\n asnVariance: word(1),\n geoVariance: word(2),\n hostingSpread: word(3),\n };\n}\n\n/**\n * Decode a `ClusterFormed` log (MB-5) into a typed {@link ClusterFormedEvent}.\n *\n * `topics` is the log topic vector (`topic0`, indexed `clusterId`,\n * indexed `effectiveEpoch`); `data` is the non-indexed ABI payload\n * `(address anchorAddress, bytes operatorRoster)`.\n */\nexport function decodeClusterFormedEvent(\n topics: readonly (string | Uint8Array | readonly number[])[],\n data: string | Uint8Array | readonly number[],\n): ClusterFormedEvent {\n if (topics.length !== 3) {\n throw new NodeRegistryError(`ClusterFormed expects 3 topics, got ${topics.length}`);\n }\n const body = toBytes(data);\n if (body.length < 96) {\n throw new NodeRegistryError(\"ClusterFormed data shorter than head + roster length\");\n }\n const clusterIdTopic = expectLength(toBytes(topics[1]), 32, \"clusterId topic\");\n const epochTopic = expectLength(toBytes(topics[2]), 32, \"effectiveEpoch topic\");\n const clusterId = u32FromWord(clusterIdTopic);\n const effectiveEpoch = u64FromWord(epochTopic);\n // data: [0..32) anchorAddress word, [32..64) offset (0x40), [64..96) roster len.\n const anchorAddress = bytesToHex(body.slice(12, 32));\n const rosterLen = Number(u64FromWord(body.slice(64, 96)));\n const rosterEnd = 96 + rosterLen;\n if (body.length < rosterEnd) {\n throw new NodeRegistryError(\"ClusterFormed roster payload truncated\");\n }\n return {\n clusterId,\n effectiveEpoch,\n anchorAddress,\n operatorRoster: bytesToHex(body.slice(96, rosterEnd)),\n };\n}\n\n/**\n * Derive a runtime-formed cluster's primary-anchor address from its\n * operator roster (MB-5 / Law §7.13).\n *\n * Mirrors `node-registry::cluster_anchor::derive_cluster_anchor_address`:\n * the order-insensitive multisig rule `address = BLAKE3(\n * MONO_MULTISIG_BLAKE3_20_V1 || threshold_be16 ||\n * (member_len_be8 || member)*sorted)[..20]`. Returns the `0x`-prefixed\n * 20-byte address payload.\n */\nexport function deriveClusterAnchorAddress(\n roster: readonly (string | Uint8Array | readonly number[])[],\n threshold: number,\n): string {\n if (!Number.isInteger(threshold) || threshold < 0 || threshold > 0xffff) {\n throw new NodeRegistryError(\"threshold must be a uint16\");\n }\n const members = roster.map((m, i) => expectLength(toBytes(m), 48, `roster[${i}]`));\n members.sort(compareBytes);\n const parts: Uint8Array[] = [\n new TextEncoder().encode(MULTISIG_ADDRESS_DERIVATION_DOMAIN),\n Uint8Array.from([(threshold >> 8) & 0xff, threshold & 0xff]),\n ];\n for (const member of members) {\n parts.push(u64BeBytes(BigInt(member.length)));\n parts.push(member);\n }\n return bytesToHex(blake3(concatBytes(...parts)).slice(0, 20));\n}\n\n/** Stable selector hex (without `0x`) for a canonical signature. */\nfunction selectorHex(sig: string): string {\n return [...keccak_256(new TextEncoder().encode(sig)).slice(0, 4)]\n .map((b) => b.toString(16).padStart(2, \"0\"))\n .join(\"\");\n}\n\nfunction u32FromWord(word: Uint8Array): number {\n return ((word[28] << 24) | (word[29] << 16) | (word[30] << 8) | word[31]) >>> 0;\n}\n\nfunction u64FromWord(word: Uint8Array): bigint {\n let v = 0n;\n for (let i = 24; i < 32; i++) {\n v = (v << 8n) | BigInt(word[i]);\n }\n return v;\n}\n\nfunction u64BeBytes(value: bigint): Uint8Array {\n const out = new Uint8Array(8);\n let n = value;\n for (let i = 7; i >= 0; i--) {\n out[i] = Number(n & 0xffn);\n n >>= 8n;\n }\n return out;\n}\n\nfunction compareBytes(a: Uint8Array, b: Uint8Array): number {\n const len = Math.min(a.length, b.length);\n for (let i = 0; i < len; i++) {\n if (a[i] !== b[i]) return a[i] - b[i];\n }\n return a.length - b.length;\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","export function concatBytes(...chunks: Uint8Array[]): Uint8Array {\n const len = chunks.reduce((n, c) => n + c.length, 0);\n const out = new Uint8Array(len);\n let off = 0;\n for (const chunk of chunks) {\n out.set(chunk, off);\n off += chunk.length;\n }\n return out;\n}\n\nexport function bytesToHex(bytes: Uint8Array): string {\n let out = \"0x\";\n for (let i = 0; i < bytes.length; i++) {\n out += bytes[i]!.toString(16).padStart(2, \"0\");\n }\n return out;\n}\n\nexport function hexToBytes(hex: string, label = \"hex\"): Uint8Array {\n const stripped = hex.startsWith(\"0x\") || hex.startsWith(\"0X\") ? hex.slice(2) : hex;\n if (stripped.length % 2 !== 0) {\n throw new Error(`${label} must have even length`);\n }\n const out = new Uint8Array(stripped.length / 2);\n for (let i = 0; i < out.length; i++) {\n const b = Number.parseInt(stripped.slice(i * 2, i * 2 + 2), 16);\n if (Number.isNaN(b)) {\n throw new Error(`${label} contains invalid hex`);\n }\n out[i] = b;\n }\n return out;\n}\n\nexport function expectBytes(value: Uint8Array | readonly number[], len: number, label: string): Uint8Array {\n if (value.length !== len) {\n throw new Error(`${label} must be ${len} bytes, got ${value.length}`);\n }\n return value instanceof Uint8Array ? value : Uint8Array.from(value);\n}\n\nexport function bigintToBeBytes(value: bigint, bytes: number, label: string): Uint8Array {\n if (value < 0n || value >= (1n << BigInt(bytes * 8))) {\n throw new Error(`${label} out of ${bytes * 8}-bit range`);\n }\n const out = new Uint8Array(bytes);\n let v = value;\n for (let i = bytes - 1; i >= 0; i--) {\n out[i] = Number(v & 0xffn);\n v >>= 8n;\n }\n return out;\n}\n\nexport function parseBigint(value: bigint | number | string | undefined, label: string): bigint {\n if (value === undefined) throw new Error(`${label} missing`);\n if (typeof value === \"bigint\") return value;\n if (typeof value === \"number\") {\n if (!Number.isSafeInteger(value) || value < 0) throw new Error(`${label} must be a non-negative safe integer`);\n return BigInt(value);\n }\n if (value.startsWith(\"0x\") || value.startsWith(\"0X\")) return BigInt(value);\n return BigInt(value);\n}\n","export class BincodeWriter {\n #chunks: number[] = [];\n\n u8(value: number): void {\n this.#int(value, 1);\n }\n\n u16(value: number): void {\n this.#int(value, 2);\n }\n\n u32(value: number): void {\n this.#int(value, 4);\n }\n\n u64(value: bigint | number): void {\n this.#big(value, 8);\n }\n\n u128(value: bigint | number): void {\n this.#big(value, 16);\n }\n\n enumVariant(value: number): void {\n this.u32(value);\n }\n\n rawBytes(bytes: Uint8Array): void {\n for (const b of bytes) this.#chunks.push(b);\n }\n\n bytes(bytes: Uint8Array): void {\n this.u64(BigInt(bytes.length));\n this.rawBytes(bytes);\n }\n\n optionBytes(bytes: Uint8Array | null): void {\n if (bytes === null) {\n this.u8(0);\n return;\n }\n this.u8(1);\n this.rawBytes(bytes);\n }\n\n toBytes(): Uint8Array {\n return Uint8Array.from(this.#chunks);\n }\n\n #int(value: number, bytes: number): void {\n if (!Number.isSafeInteger(value) || value < 0 || value >= 2 ** (bytes * 8)) {\n throw new Error(`integer out of u${bytes * 8} range`);\n }\n for (let i = 0; i < bytes; i++) {\n this.#chunks.push((value >> (8 * i)) & 0xff);\n }\n }\n\n #big(value: bigint | number, bytes: number): void {\n let v = typeof value === \"bigint\" ? value : BigInt(value);\n if (v < 0n || v >= (1n << BigInt(bytes * 8))) {\n throw new Error(`integer out of u${bytes * 8} range`);\n }\n for (let i = 0; i < bytes; i++) {\n this.#chunks.push(Number(v & 0xffn));\n v >>= 8n;\n }\n }\n}\n","import { ml_dsa65 } from \"@noble/post-quantum/ml-dsa.js\";\nimport { blake3 } from \"@noble/hashes/blake3.js\";\nimport { keccak_256 } from \"@noble/hashes/sha3.js\";\nimport { bigintToBeBytes, bytesToHex, concatBytes, expectBytes } from \"./bytes.js\";\nimport { bincodeSignedTransaction, encodeTransactionForHash, type NativeEvmTxFields } from \"./tx.js\";\n\nexport const ML_DSA_65_SEED_LEN = 32;\nexport const ML_DSA_65_SIGNING_KEY_LEN = 4032;\nexport const ML_DSA_65_PUBLIC_KEY_LEN = 1952;\nexport const ML_DSA_65_SIGNATURE_LEN = 3309;\nexport const STANDARD_ALGO_NUMBER_ML_DSA_65 = 1001;\nexport const ENUM_VARIANT_INDEX_ML_DSA_65 = 5;\nexport const ADDRESS_DERIVATION_DOMAIN = \"MONO_ADDRESS_BLAKE3_20_V1\";\n\nconst ADDRESS_DERIVATION_DOMAIN_BYTES = new TextEncoder().encode(ADDRESS_DERIVATION_DOMAIN);\n\nexport class MlDsa65Backend {\n readonly #secretKey: Uint8Array;\n readonly #publicKey: Uint8Array;\n readonly #addressBytes: Uint8Array;\n\n private constructor(secretKey: Uint8Array, publicKey: Uint8Array) {\n this.#secretKey = expectBytes(secretKey, ML_DSA_65_SIGNING_KEY_LEN, \"ML-DSA-65 secret key\").slice();\n this.#publicKey = expectBytes(publicKey, ML_DSA_65_PUBLIC_KEY_LEN, \"ML-DSA-65 public key\").slice();\n this.#addressBytes = mlDsa65AddressBytes(this.#publicKey);\n }\n\n static fromSeed(seed: Uint8Array | readonly number[]): MlDsa65Backend {\n const kp = ml_dsa65.keygen(expectBytes(seed, ML_DSA_65_SEED_LEN, \"ML-DSA-65 seed\"));\n return new MlDsa65Backend(kp.secretKey, kp.publicKey);\n }\n\n publicKey(): Uint8Array {\n return this.#publicKey.slice();\n }\n\n addressBytes(): Uint8Array {\n return this.#addressBytes.slice();\n }\n\n getAddress(): string {\n return bytesToHex(this.#addressBytes);\n }\n\n sign(message: Uint8Array): Uint8Array {\n return ml_dsa65.sign(message, this.#secretKey, { extraEntropy: false });\n }\n\n signPrehash(digest: Uint8Array): Uint8Array {\n return this.sign(expectBytes(digest, 32, \"prehash\"));\n }\n\n verify(message: Uint8Array, signature: Uint8Array): boolean {\n return ml_dsa65.verify(\n expectBytes(signature, ML_DSA_65_SIGNATURE_LEN, \"ML-DSA-65 signature\"),\n message,\n this.#publicKey,\n );\n }\n\n signEvmTx(fields: NativeEvmTxFields): {\n wireHex: string;\n wireBytes: Uint8Array;\n sighash: Uint8Array;\n txHash: Uint8Array;\n } {\n const txHashPreimage = encodeTransactionForHash(fields, 0x01);\n const sighash = keccak_256(txHashPreimage);\n const signature = this.sign(sighash);\n const wireBytes = bincodeSignedTransaction(fields, signature, this.#publicKey);\n const txHash = keccak_256(\n concatBytes(\n encodeTransactionForHash(fields, 0x02),\n signature,\n this.#publicKey,\n ),\n );\n return {\n wireHex: bytesToHex(wireBytes).slice(2),\n wireBytes,\n sighash,\n txHash,\n };\n }\n}\n\nexport function mlDsa65AddressFromPublicKey(publicKey: Uint8Array | readonly number[]): string {\n return bytesToHex(mlDsa65AddressBytes(publicKey));\n}\n\nexport function mlDsa65AddressBytes(publicKey: Uint8Array | readonly number[]): Uint8Array {\n const bytes = expectBytes(publicKey, ML_DSA_65_PUBLIC_KEY_LEN, \"ML-DSA-65 public key\");\n return blake3(concatBytes(\n ADDRESS_DERIVATION_DOMAIN_BYTES,\n bigintToBeBytes(BigInt(STANDARD_ALGO_NUMBER_ML_DSA_65), 2, \"ML-DSA-65 algo id\"),\n bytes,\n )).slice(0, 20);\n}\n\nexport function encodeMlDsa65Opaque(raw: Uint8Array | readonly number[]): Uint8Array {\n const bytes = raw instanceof Uint8Array ? raw : Uint8Array.from(raw);\n const len = bytes.length === ML_DSA_65_PUBLIC_KEY_LEN ? ML_DSA_65_PUBLIC_KEY_LEN : ML_DSA_65_SIGNATURE_LEN;\n expectBytes(bytes, len, \"ML-DSA-65 opaque bytes\");\n const out = new Uint8Array(4 + 2 + 8 + bytes.length);\n const dv = new DataView(out.buffer);\n dv.setUint32(0, ENUM_VARIANT_INDEX_ML_DSA_65, true);\n dv.setUint16(4, STANDARD_ALGO_NUMBER_ML_DSA_65, true);\n dv.setBigUint64(6, BigInt(bytes.length), true);\n out.set(bytes, 14);\n return out;\n}\n\nexport function uint256Bytes(value: bigint | number | string, label: string): Uint8Array {\n const v = typeof value === \"bigint\" ? value : typeof value === \"number\" ? BigInt(value) : BigInt(value);\n return bigintToBeBytes(v, 32, label);\n}\n","import { ml_kem768 } from \"@noble/post-quantum/ml-kem.js\";\nimport { chacha20poly1305 } from \"@noble/ciphers/chacha.js\";\nimport { keccak_256 } from \"@noble/hashes/sha3.js\";\nimport { randomBytes } from \"@noble/hashes/utils.js\";\nimport { BincodeWriter } from \"./bincode.js\";\nimport { bytesToHex, concatBytes, expectBytes } from \"./bytes.js\";\nimport {\n ENUM_VARIANT_INDEX_ML_DSA_65,\n ML_DSA_65_PUBLIC_KEY_LEN,\n ML_DSA_65_SIGNATURE_LEN,\n STANDARD_ALGO_NUMBER_ML_DSA_65,\n} from \"./ml-dsa.js\";\n\nconst DKG_AEAD_DOMAIN_TAG = new TextEncoder().encode(\"protocore/v2/mempool/dkg-mlkem768/1\");\n\nexport const ML_KEM_768_CIPHERTEXT_LEN = 1088;\nexport const ML_KEM_768_ENCAPSULATION_KEY_LEN = 1184;\nexport const ML_KEM_768_SHARED_SECRET_LEN = 32;\nexport const DKG_NONCE_LEN = 12;\nexport const DKG_AEAD_TAG_LEN = 16;\n\nexport const MempoolClass = {\n Transfer: 0,\n ContractCall: 1,\n PrivacyOp: 2,\n CLOBOp: 3,\n AgentOp: 4,\n FoundationOp: 5,\n /** @deprecated Use FoundationOp. */\n GovernanceOp: 5,\n RWAOp: 6,\n} as const;\nexport type MempoolClass = (typeof MempoolClass)[keyof typeof MempoolClass];\n\nexport interface NonceAad {\n sender: Uint8Array;\n nonce: bigint;\n chainId: bigint;\n class: MempoolClass;\n maxFeePerGas: bigint;\n maxPriorityFeePerGas: bigint;\n gasLimit: bigint;\n}\n\nexport interface DecryptHint {\n epoch: bigint;\n scheme: number;\n}\n\nexport interface EncryptedEnvelope {\n nonceAad: NonceAad;\n ciphertext: Uint8Array;\n decryptionHint: DecryptHint;\n senderPubkey: Uint8Array;\n outerSignature: Uint8Array;\n sender: Uint8Array;\n}\n\nexport function bincodeNonceAad(aad: NonceAad): Uint8Array {\n const w = new BincodeWriter();\n w.bytes(expectBytes(aad.sender, 20, \"NonceAad.sender\"));\n w.u64(aad.nonce);\n w.u64(aad.chainId);\n w.enumVariant(aad.class);\n w.u128(aad.maxFeePerGas);\n w.u128(aad.maxPriorityFeePerGas);\n w.u64(aad.gasLimit);\n return w.toBytes();\n}\n\nexport function bincodeDecryptHint(hint: DecryptHint): Uint8Array {\n const w = new BincodeWriter();\n w.u64(hint.epoch);\n w.u16(hint.scheme);\n return w.toBytes();\n}\n\nexport function bincodeEncryptedEnvelope(env: EncryptedEnvelope): Uint8Array {\n const w = new BincodeWriter();\n w.rawBytes(bincodeNonceAad(env.nonceAad));\n w.bytes(env.ciphertext);\n w.rawBytes(bincodeDecryptHint(env.decryptionHint));\n bincodeMlDsa65OpaqueInto(w, expectBytes(env.senderPubkey, ML_DSA_65_PUBLIC_KEY_LEN, \"senderPubkey\"));\n bincodeMlDsa65OpaqueInto(w, expectBytes(env.outerSignature, ML_DSA_65_SIGNATURE_LEN, \"outerSignature\"));\n w.bytes(expectBytes(env.sender, 20, \"sender\"));\n return w.toBytes();\n}\n\nexport function encryptInnerTx(\n signedInnerTxBincode: Uint8Array,\n nonceAad: NonceAad,\n kemEncapsulationKey: Uint8Array,\n): Uint8Array {\n expectBytes(kemEncapsulationKey, ML_KEM_768_ENCAPSULATION_KEY_LEN, \"kemEncapsulationKey\");\n const { cipherText: kemCt, sharedSecret } = ml_kem768.encapsulate(kemEncapsulationKey);\n const nonce = randomBytes(DKG_NONCE_LEN);\n const cipher = chacha20poly1305(sharedSecret, nonce, aadFor(nonceAad));\n const aeadCt = cipher.encrypt(signedInnerTxBincode);\n sharedSecret.fill(0);\n return concatBytes(kemCt, nonce, aeadCt);\n}\n\nexport function outerSigDigest(\n nonceAad: NonceAad,\n ciphertext: Uint8Array,\n decryptionHint: DecryptHint,\n senderPubkey: Uint8Array,\n): Uint8Array {\n const aad = bincodeNonceAad(nonceAad);\n const hint = bincodeDecryptHint(decryptionHint);\n return keccak_256(concatBytes(aad, ciphertext, hint, expectBytes(senderPubkey, ML_DSA_65_PUBLIC_KEY_LEN, \"senderPubkey\")));\n}\n\nexport async function buildEncryptedEnvelope(args: {\n signedInnerTxBincode: Uint8Array;\n nonceAad: NonceAad;\n decryptionHint: DecryptHint;\n kemEncapsulationKey: Uint8Array;\n senderAddress: Uint8Array;\n senderPubkey: Uint8Array;\n signOuterDigest: (digest: Uint8Array) => Promise<Uint8Array> | Uint8Array;\n}): Promise<{ envelope: EncryptedEnvelope; wireBytes: Uint8Array; wireHex: string }> {\n const ciphertext = encryptInnerTx(args.signedInnerTxBincode, args.nonceAad, args.kemEncapsulationKey);\n const digest = outerSigDigest(args.nonceAad, ciphertext, args.decryptionHint, args.senderPubkey);\n const outerSignature = await args.signOuterDigest(digest);\n const envelope: EncryptedEnvelope = {\n nonceAad: args.nonceAad,\n ciphertext,\n decryptionHint: args.decryptionHint,\n senderPubkey: expectBytes(args.senderPubkey, ML_DSA_65_PUBLIC_KEY_LEN, \"senderPubkey\"),\n outerSignature: expectBytes(outerSignature, ML_DSA_65_SIGNATURE_LEN, \"outerSignature\"),\n sender: expectBytes(args.senderAddress, 20, \"senderAddress\"),\n };\n const wireBytes = bincodeEncryptedEnvelope(envelope);\n return { envelope, wireBytes, wireHex: bytesToHex(wireBytes) };\n}\n\nfunction aadFor(aad: NonceAad): Uint8Array {\n return concatBytes(DKG_AEAD_DOMAIN_TAG, bincodeNonceAad(aad));\n}\n\nfunction bincodeMlDsa65OpaqueInto(w: BincodeWriter, raw: Uint8Array): void {\n w.enumVariant(ENUM_VARIANT_INDEX_ML_DSA_65);\n w.u16(STANDARD_ALGO_NUMBER_ML_DSA_65);\n w.bytes(raw);\n}\n","import { RpcClient } from \"../client.js\";\nimport { hexToAddressBytes } from \"../address.js\";\nimport { bytesToHex, hexToBytes, parseBigint } from \"./bytes.js\";\nimport { buildEncryptedEnvelope, MempoolClass, type DecryptHint, type NonceAad } from \"./envelope.js\";\nimport type { MlDsa65Backend } from \"./ml-dsa.js\";\nimport type { NativeEvmTxFields } from \"./tx.js\";\n\nexport interface EncryptionKey {\n algo: string;\n epoch: bigint;\n encapsulationKey: Uint8Array;\n}\n\nexport interface EncryptedSubmission {\n envelopeWireHex: string;\n innerSighashHex: string;\n innerTxHashHex: string;\n innerWireBytes: number;\n}\n\n/**\n * A built plaintext submission — the bincode-encoded chain-side\n * `SignedTransaction` (`0x`-prefixed hex) ready to hand to\n * `mesh_submitTx`, plus the canonical hashes the wallet validates the\n * node echo against.\n *\n * Mirrors the chain-side artefacts produced by the Rust SDK's\n * `build_chain_signed_tx` (`mono-core/crates/core/sdk/src/tx.rs`): the\n * ML-DSA-65 signature is taken over the canonical chain-side `sighash`\n * (keccak-256 of the 0x01-tagged preimage) and the canonical native tx\n * hash is the keccak-256 of the 0x02-tagged preimage with the signature\n * and public key appended.\n */\nexport interface PlaintextSubmission {\n /** Bincode `SignedTransaction` wire bytes, `0x`-prefixed. */\n signedTxWireHex: string;\n /** Canonical native tx hash the node echoes on admission. */\n innerTxHashHex: string;\n /** Canonical chain-side sighash that was signed. */\n innerSighashHex: string;\n /** Length in bytes of the bincode `SignedTransaction`. */\n innerWireBytes: number;\n}\n\nexport async function fetchEncryptionKey(client: RpcClient): Promise<EncryptionKey> {\n const result = await client.call<{ algo?: string; epoch: number | string; encapsulationKey: string }>(\n \"lyth_getEncryptionKey\",\n [],\n );\n return {\n algo: result.algo ?? \"ml-kem-768\",\n epoch: typeof result.epoch === \"string\" ? BigInt(result.epoch) : BigInt(result.epoch),\n encapsulationKey: hexToBytes(result.encapsulationKey, \"encapsulationKey\"),\n };\n}\n\nexport async function buildEncryptedSubmission(args: {\n backend: MlDsa65Backend;\n tx: NativeEvmTxFields;\n encryptionKey: EncryptionKey;\n class?: MempoolClass;\n}): Promise<EncryptedSubmission> {\n const input = normalizeInput(args.tx.input);\n const to = normalizeTo(args.tx.to);\n const nonceAad: NonceAad = {\n sender: args.backend.addressBytes(),\n nonce: parseBigint(args.tx.nonce, \"nonce\"),\n chainId: parseBigint(args.tx.chainId, \"chainId\"),\n class: args.class ?? (to !== null && input.length === 0 ? MempoolClass.Transfer : MempoolClass.ContractCall),\n maxFeePerGas: u128Checked(parseBigint(args.tx.maxFeePerGas, \"maxFeePerGas\"), \"maxFeePerGas\"),\n maxPriorityFeePerGas: u128Checked(\n parseBigint(args.tx.maxPriorityFeePerGas, \"maxPriorityFeePerGas\"),\n \"maxPriorityFeePerGas\",\n ),\n gasLimit: parseBigint(args.tx.gasLimit, \"gasLimit\"),\n };\n const signed = args.backend.signEvmTx(args.tx);\n const decryptionHint: DecryptHint = { epoch: args.encryptionKey.epoch, scheme: 0 };\n const built = await buildEncryptedEnvelope({\n signedInnerTxBincode: signed.wireBytes,\n nonceAad,\n decryptionHint,\n kemEncapsulationKey: args.encryptionKey.encapsulationKey,\n senderAddress: args.backend.addressBytes(),\n senderPubkey: args.backend.publicKey(),\n signOuterDigest: (digest) => args.backend.signPrehash(digest),\n });\n return {\n envelopeWireHex: built.wireHex,\n innerSighashHex: `0x${[...signed.sighash].map((b) => b.toString(16).padStart(2, \"0\")).join(\"\")}`,\n innerTxHashHex: bytesToHex(signed.txHash),\n innerWireBytes: signed.wireBytes.length,\n };\n}\n\nexport async function submitEncryptedEnvelope(client: RpcClient, envelopeWireHex: string): Promise<string> {\n return client.call(\"lyth_submitEncrypted\", [envelopeWireHex]);\n}\n\n/**\n * Build a PLAINTEXT submission — the opt-OUT-of-privacy counterpart to\n * {@link buildEncryptedSubmission}.\n *\n * Unlike the encrypted path, this never engages the Ferveo\n * threshold-decrypt pipeline. It re-shapes the native tx into the\n * chain-side `SignedTransaction`, signs over the canonical `sighash`\n * with the ML-DSA-65 backend, bincode-serializes the result, and\n * `0x`-hex-encodes it. The bytes are forwarded verbatim through\n * `mesh_submitTx` (the node routes them to `MempoolTx::plaintext` via\n * `submit_raw`) — the functional inclusion path on a chain running with\n * `encrypted_mempool_required = false`.\n *\n * Mirrors `TxClient::submit_plaintext` in the Rust SDK.\n */\nexport function buildPlaintextSubmission(args: {\n backend: MlDsa65Backend;\n tx: NativeEvmTxFields;\n}): PlaintextSubmission {\n const signed = args.backend.signEvmTx(args.tx);\n return {\n signedTxWireHex: `0x${signed.wireHex}`,\n innerTxHashHex: bytesToHex(signed.txHash),\n innerSighashHex: bytesToHex(signed.sighash),\n innerWireBytes: signed.wireBytes.length,\n };\n}\n\n/**\n * Submit a bincode-encoded chain-side `SignedTransaction` (`0x`-hex)\n * through the plaintext `mesh_submitTx` path and validate the node's\n * echoed canonical tx hash against the locally computed one.\n *\n * Mirrors the validation in `TxClient::submit_plaintext`: the node\n * echoes the 32-byte canonical native tx hash on admission, and any\n * mismatch (or non-32-byte response) is rejected loud so a wallet never\n * trusts a hash it did not derive itself.\n *\n * @returns the validated canonical native tx hash (`0x`-prefixed).\n */\nexport async function submitPlaintextTransaction(\n client: RpcClient,\n signedTxWireHex: string,\n expectedTxHashHex: string,\n): Promise<string> {\n const returned = await client.call<string>(\"mesh_submitTx\", [signedTxWireHex]);\n const returnedBytes = hexToBytes(returned, \"mesh_submitTx tx hash\");\n if (returnedBytes.length !== 32) {\n throw new Error(\n `mesh_submitTx tx hash must be 32 bytes, got ${returnedBytes.length}`,\n );\n }\n const expectedBytes = hexToBytes(expectedTxHashHex, \"expected tx hash\");\n if (!bytesEqual(returnedBytes, expectedBytes)) {\n throw new Error(\n `mesh_submitTx returned tx hash ${bytesToHex(returnedBytes)} but the locally computed canonical hash is ${bytesToHex(expectedBytes)}`,\n );\n }\n return bytesToHex(returnedBytes);\n}\n\n/**\n * Build, sign, and submit a native transaction with an explicit\n * encryption toggle. `private == false` (the default for the RC testnet\n * / operator posture) routes through the plaintext `mesh_submitTx`\n * path; `private == true` routes through the Ferveo encrypt-then-submit\n * pipeline. Wallets wire a UI privacy toggle straight onto `private`.\n *\n * Mirrors `TxClient::build_sign_submit_with_privacy` in the Rust SDK.\n * The default is PLAINTEXT; the encrypted path is engaged only when\n * `private === true`, and requires an {@link EncryptionKey} (fetch it\n * via {@link fetchEncryptionKey}).\n *\n * @returns the canonical native tx hash (`0x`-prefixed). For the\n * plaintext path this is the node-echoed-and-validated hash; for the\n * encrypted path it is the locally computed inner tx hash (the\n * `lyth_submitEncrypted` RPC returns the encrypted-envelope admission\n * hash, so wallets track the canonical inner hash for receipts /\n * `lyth_txStatus` / indexer history).\n */\nexport async function submitTransactionWithPrivacy(args: {\n client: RpcClient;\n backend: MlDsa65Backend;\n tx: NativeEvmTxFields;\n private: boolean;\n encryptionKey?: EncryptionKey;\n class?: MempoolClass;\n}): Promise<string> {\n if (args.private) {\n if (args.encryptionKey === undefined) {\n throw new Error(\n \"private submission requires an encryptionKey; fetch it via fetchEncryptionKey()\",\n );\n }\n const built = await buildEncryptedSubmission({\n backend: args.backend,\n tx: args.tx,\n encryptionKey: args.encryptionKey,\n class: args.class,\n });\n await submitEncryptedEnvelope(args.client, built.envelopeWireHex);\n return built.innerTxHashHex;\n }\n const plaintext = buildPlaintextSubmission({ backend: args.backend, tx: args.tx });\n return submitPlaintextTransaction(\n args.client,\n plaintext.signedTxWireHex,\n plaintext.innerTxHashHex,\n );\n}\n\nfunction bytesEqual(a: Uint8Array, b: Uint8Array): boolean {\n if (a.length !== b.length) return false;\n for (let i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) return false;\n }\n return true;\n}\n\nfunction u128Checked(value: bigint, field: string): bigint {\n const cap = (1n << 128n) - 1n;\n if (value < 0n || value > cap) {\n throw new Error(`${field} must fit in u128 for encrypted nonce AAD`);\n }\n return value;\n}\n\nfunction normalizeTo(value: NativeEvmTxFields[\"to\"]): Uint8Array | null {\n if (value === null) return null;\n if (typeof value === \"string\") return hexToAddressBytes(value);\n const bytes = value instanceof Uint8Array ? value : Uint8Array.from(value);\n if (bytes.length !== 20) throw new Error(\"to must be 20 bytes\");\n return bytes;\n}\n\nfunction normalizeInput(value: NativeEvmTxFields[\"input\"]): Uint8Array {\n if (value === undefined) return new Uint8Array(0);\n if (typeof value === \"string\") return hexToBytes(value, \"input\");\n return value instanceof Uint8Array ? value : Uint8Array.from(value);\n}\n","import { blake3 } from \"@noble/hashes/blake3.js\";\nimport { ADDRESS_KIND_HRPS, addressToTypedBech32, typedBech32ToAddress } from \"./address.js\";\nimport {\n buildEncryptedSubmission,\n fetchEncryptionKey,\n submitEncryptedEnvelope,\n type EncryptionKey,\n} from \"./crypto/submission.js\";\nimport { BincodeWriter } from \"./crypto/bincode.js\";\n\nexport type { MrvAbiManifest } from \"./bindings/MrvAbiManifest.js\";\nexport type { MrvAbiParam } from \"./bindings/MrvAbiParam.js\";\nexport type { MrvAbiSymbol } from \"./bindings/MrvAbiSymbol.js\";\nexport type { MrvAbiSymbolKind } from \"./bindings/MrvAbiSymbolKind.js\";\nexport type { MrvAbiType } from \"./bindings/MrvAbiType.js\";\nexport type { MrvAddressKind } from \"./bindings/MrvAddressKind.js\";\nexport type { MrvArtifactMetadata } from \"./bindings/MrvArtifactMetadata.js\";\nexport type { MrvBuildMetadata } from \"./bindings/MrvBuildMetadata.js\";\nexport type { MrvCallRequest } from \"./bindings/MrvCallRequest.js\";\nexport type { MrvCallResponse } from \"./bindings/MrvCallResponse.js\";\nexport type { MrvCallStatus } from \"./bindings/MrvCallStatus.js\";\nexport type { MrvDeployPayload } from \"./bindings/MrvDeployPayload.js\";\nexport type { MrvDeployRequest } from \"./bindings/MrvDeployRequest.js\";\nexport type { MrvDeployResponse } from \"./bindings/MrvDeployResponse.js\";\nexport type { MrvEventRecord } from \"./bindings/MrvEventRecord.js\";\nexport type { MrvExecutionReceipt } from \"./bindings/MrvExecutionReceipt.js\";\nexport type { MrvMemoryLimits } from \"./bindings/MrvMemoryLimits.js\";\nexport type { MrvMeterCounters } from \"./bindings/MrvMeterCounters.js\";\nexport type { MrvNativeStateDelta } from \"./bindings/MrvNativeStateDelta.js\";\nexport type { MrvResolvedSyscall } from \"./bindings/MrvResolvedSyscall.js\";\nexport type { MrvRevertPayload } from \"./bindings/MrvRevertPayload.js\";\nexport type { MrvRiscvProfile } from \"./bindings/MrvRiscvProfile.js\";\nexport type { MrvStorageNamespace } from \"./bindings/MrvStorageNamespace.js\";\nexport type { MrvSyscallImport } from \"./bindings/MrvSyscallImport.js\";\nexport type { MrvTransactionExtension } from \"./bindings/MrvTransactionExtension.js\";\nexport type { MrvTypedAddress } from \"./bindings/MrvTypedAddress.js\";\nexport type { MrvValidatedArtifactMetadata } from \"./bindings/MrvValidatedArtifactMetadata.js\";\n\nimport type { AddressKind } from \"./address.js\";\nimport type { MrvAbiManifest } from \"./bindings/MrvAbiManifest.js\";\nimport type { MrvAbiType } from \"./bindings/MrvAbiType.js\";\nimport type { MrvAddressKind } from \"./bindings/MrvAddressKind.js\";\nimport type { MrvArtifactMetadata } from \"./bindings/MrvArtifactMetadata.js\";\nimport type { MrvCallRequest } from \"./bindings/MrvCallRequest.js\";\nimport type { MrvDeployRequest } from \"./bindings/MrvDeployRequest.js\";\nimport type { MrvResolvedSyscall } from \"./bindings/MrvResolvedSyscall.js\";\nimport type { MrvTransactionExtension } from \"./bindings/MrvTransactionExtension.js\";\nimport type { MrvValidatedArtifactMetadata } from \"./bindings/MrvValidatedArtifactMetadata.js\";\nimport type { RpcClient } from \"./client.js\";\nimport type { MempoolClass } from \"./crypto/envelope.js\";\nimport type { MlDsa65Backend } from \"./crypto/ml-dsa.js\";\nimport type { NativeEvmTxFields, NativeTxExtensionLike } from \"./crypto/tx.js\";\nimport type { NativeReceiptFee } from \"./client.js\";\n\nexport type MrvBytesLike = string | Uint8Array | readonly number[];\nexport type MrvDecimalLike = string | number | bigint;\n\nexport interface MrvRequestBuildOptions {\n from?: string;\n valueLythoshi?: MrvDecimalLike;\n executionUnitLimit?: number | bigint;\n maxExecutionFeeLythoshi?: MrvDecimalLike;\n priorityTipLythoshi?: MrvDecimalLike;\n nonce?: number | bigint;\n}\n\nexport interface MrvDeployPlanOptions extends MrvRequestBuildOptions {\n artifactHash?: string;\n}\n\nexport interface MrvDeployPayloadRequestOptions extends MrvRequestBuildOptions {\n constructorInput?: MrvBytesLike | null;\n}\n\nexport interface MrvDeployPayloadPlanOptions extends MrvDeployPayloadRequestOptions {\n artifactHash?: string;\n}\n\nexport interface MrvDeployPlan {\n request: MrvDeployRequest;\n extension: MrvTransactionExtension;\n expectedContractAddress?: string;\n}\n\nexport interface MrvCallPlan {\n request: MrvCallRequest;\n extension: MrvTransactionExtension;\n}\n\nexport type MrvDeployNativeTxOptions = Omit<\n MrvDeployPlanOptions,\n \"executionUnitLimit\" | \"maxExecutionFeeLythoshi\" | \"nonce\"\n> & {\n chainId: number | bigint;\n nonce: number | bigint;\n executionUnitLimit: number | bigint;\n maxExecutionFeeLythoshi: MrvDecimalLike;\n};\n\nexport type MrvDeployPayloadNativeTxOptions = Omit<\n MrvDeployPayloadPlanOptions,\n \"executionUnitLimit\" | \"maxExecutionFeeLythoshi\" | \"nonce\"\n> & {\n chainId: number | bigint;\n nonce: number | bigint;\n executionUnitLimit: number | bigint;\n maxExecutionFeeLythoshi: MrvDecimalLike;\n};\n\nexport type MrvCallNativeTxOptions = Omit<\n MrvRequestBuildOptions,\n \"executionUnitLimit\" | \"maxExecutionFeeLythoshi\" | \"nonce\"\n> & {\n chainId: number | bigint;\n nonce: number | bigint;\n executionUnitLimit: number | bigint;\n maxExecutionFeeLythoshi: MrvDecimalLike;\n};\n\nexport interface MrvNativeTxFacade {\n chainId: bigint;\n nonce: bigint;\n valueLythoshi: string;\n executionUnitLimit: bigint;\n maxExecutionFeeLythoshi: string;\n priorityTipLythoshi: string;\n}\n\nexport interface MrvNativeFeePreview {\n totalLythoshi: string;\n totalLyth: string;\n cyclesUsed: bigint;\n executionUnitLimit: bigint;\n maxExecutionFeeLythoshi: string;\n priorityTipLythoshi: string;\n}\n\nexport interface MrvDeployNativeTxPlan extends MrvDeployPlan {\n nativeTx: MrvNativeTxFacade;\n feePreview: MrvNativeFeePreview;\n tx: NativeEvmTxFields;\n}\n\nexport interface MrvCallNativeTxPlan extends MrvCallPlan {\n nativeTx: MrvNativeTxFacade;\n feePreview: MrvNativeFeePreview;\n tx: NativeEvmTxFields;\n}\n\nexport interface MrvEncryptedSubmissionResult {\n envelopeWireHex: string;\n innerSighashHex: string;\n innerTxHashHex: string;\n innerWireBytes: number;\n txHash: string;\n}\n\nexport type MrvDeploySubmitOptions = MrvDeployNativeTxOptions & {\n encryptionKey?: EncryptionKey;\n class?: MempoolClass;\n};\n\nexport type MrvDeployPayloadSubmitOptions = MrvDeployPayloadNativeTxOptions & {\n encryptionKey?: EncryptionKey;\n class?: MempoolClass;\n};\n\nexport type MrvCallSubmitOptions = MrvCallNativeTxOptions & {\n encryptionKey?: EncryptionKey;\n class?: MempoolClass;\n};\n\nexport type MrvDeploySubmission = MrvDeployNativeTxPlan & MrvEncryptedSubmissionResult;\nexport type MrvDeployPayloadSubmission = MrvDeployNativeTxPlan & MrvEncryptedSubmissionResult;\nexport type MrvCallSubmission = MrvCallNativeTxPlan & MrvEncryptedSubmissionResult;\n\nexport const MRV_FORMAT_VERSION = 1 as const;\nexport const MRV_DEPLOY_PAYLOAD_VERSION = 1 as const;\nexport const MRV_PROFILE_MONO_RV32IM_V1 = \"mono_rv32im_v1\" as const;\nexport const MRV_MEMORY_PAGE_BYTES = 65_536 as const;\nexport const MRV_MAX_CODE_BYTES = 16 * 1024 * 1024;\nexport const MRV_MAX_DEBUG_BYTES = 16 * 1024 * 1024;\nexport const MRV_MAX_MEMORY_PAGES = 1024 as const;\nexport const MRV_MAX_ABI_SYMBOLS = 1024 as const;\nexport const MRV_MAX_STORAGE_NAMESPACE_BYTES = 64 as const;\nexport const LYTH_DECIMALS = 8 as const;\nexport const NATIVE_LYTH_DECIMALS = LYTH_DECIMALS;\nexport const LYTHOSHI_PER_LYTH = 100_000_000n;\nexport const MRV_TX_EXTENSION_KIND = 0x30 as const;\nexport const MRV_TX_EXTENSION_V1 = 0x01 as const;\n\nconst MRV_CODE_HASH_DOMAIN = new TextEncoder().encode(\"MONO_MRV_CODE_V1\");\nconst MRV_CONTRACT_ADDRESS_DOMAIN = new TextEncoder().encode(\"mono:riscv:contract-address:v1\");\nconst MONO_SYSCALL_MODULE = \"mono\";\n\nconst SYSCALLS = [\n [0x0101, \"storage_read\"],\n [0x0102, \"storage_write\"],\n [0x0103, \"storage_delete\"],\n [0x0201, \"caller\"],\n [0x0202, \"contract_address\"],\n [0x0203, \"block_height\"],\n [0x0204, \"block_hash\"],\n [0x0301, \"call_contract\"],\n [0x0302, \"emit_event\"],\n [0x0303, \"transfer_native\"],\n [0x0401, \"verify_signature\"],\n [0x0402, \"hash\"],\n [0x0501, \"revert\"],\n] as const;\n\nconst SYSCALL_NAME_BY_ID = new Map<number, string>(SYSCALLS);\nconst SYSCALL_ID_BY_NAME = new Map<string, number>(SYSCALLS.map(([id, name]) => [name, id]));\n\nexport class MrvValidationError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"MrvValidationError\";\n }\n}\n\nexport interface LythFormatOptions {\n includeUnit?: boolean;\n}\n\nexport const MRV_STRUCTURED_FEE_FIELDS = [\n \"total_lythoshi\",\n \"cycles_used\",\n \"base_price_per_cycle_lythoshi\",\n \"state_io_units\",\n \"state_io_price_per_unit_lythoshi\",\n \"priority_tip_lythoshi\",\n] as const;\n\nexport interface MrvFeeDisplayConformanceInput {\n expectedTotalLythoshi: MrvDecimalLike;\n defaultFeeText: string;\n detailTexts?: readonly string[];\n structuredFee?: unknown;\n customFeeInputVisible?: boolean;\n speedUpCancelVisible?: boolean;\n}\n\nexport interface MrvFeeDisplayConformanceReport {\n passed: boolean;\n failures: string[];\n expectedDefaultFeeText: string;\n}\n\nexport interface MrvStructuredFeeConformanceOptions {\n expectedTotalLythoshi?: MrvDecimalLike;\n label?: string;\n}\n\nexport interface MrvStructuredFeeConformanceReport {\n passed: boolean;\n failures: string[];\n}\n\nexport interface NativeReceiptFeeDisplay {\n defaultFeeText: string;\n detailTexts: string[];\n totalLythoshi: string;\n totalLyth: string;\n}\n\nexport function formatLyth(lythoshi: MrvDecimalLike, options: LythFormatOptions = {}): string {\n const amount = BigInt(normalizeDecimalLike(\"lythoshi\", lythoshi));\n const whole = amount / LYTHOSHI_PER_LYTH;\n const fraction = amount % LYTHOSHI_PER_LYTH;\n let formatted = formatWholeWithCommas(whole);\n if (fraction !== 0n) {\n formatted += `.${fraction.toString().padStart(NATIVE_LYTH_DECIMALS, \"0\").replace(/0+$/, \"\")}`;\n }\n if (options.includeUnit !== false) {\n formatted += \" LYTH\";\n }\n return formatted;\n}\n\nexport function formatLythoshi(lythoshi: MrvDecimalLike, options: LythFormatOptions = {}): string {\n return formatLyth(lythoshi, options);\n}\n\nexport function parseLythToLythoshi(input: string): bigint {\n const numeric = stripLythUnit(input);\n const parts = numeric.split(\".\");\n if (parts.length > 2) {\n throw new MrvValidationError(\"lyth amount must be a canonical LYTH decimal\");\n }\n const [wholeRaw, fractionRaw = \"\"] = parts;\n if (!isCanonicalWholeLyth(wholeRaw)) {\n throw new MrvValidationError(\"lyth amount must be a canonical LYTH decimal\");\n }\n if (numeric.includes(\".\") && fractionRaw.length === 0) {\n throw new MrvValidationError(\"lyth amount must be a canonical LYTH decimal\");\n }\n if (fractionRaw.length > NATIVE_LYTH_DECIMALS || !/^[0-9]*$/.test(fractionRaw)) {\n throw new MrvValidationError(\"lyth amount supports at most 8 decimal places\");\n }\n const whole = BigInt(wholeRaw.replaceAll(\",\", \"\"));\n const fraction = fractionRaw === \"\" ? 0n : BigInt(fractionRaw.padEnd(NATIVE_LYTH_DECIMALS, \"0\"));\n return whole * LYTHOSHI_PER_LYTH + fraction;\n}\n\nexport function checkMrvFeeDisplayConformance(\n input: MrvFeeDisplayConformanceInput,\n): MrvFeeDisplayConformanceReport {\n const expectedTotalLythoshi = normalizeDecimalLike(\"expectedTotalLythoshi\", input.expectedTotalLythoshi);\n const expectedDefaultFeeText = formatLyth(expectedTotalLythoshi);\n const failures: string[] = [];\n const amountCandidates = extractLythAmountCandidates(input.defaultFeeText);\n\n if (amountCandidates.length !== 1) {\n failures.push(\"defaultFeeText must contain exactly one LYTH-denominated fee amount\");\n } else {\n const renderedCandidate = `${amountCandidates[0]} LYTH`;\n if (renderedCandidate !== expectedDefaultFeeText) {\n failures.push(`defaultFeeText fee must be ${expectedDefaultFeeText}`);\n }\n try {\n const parsed = parseLythToLythoshi(renderedCandidate);\n if (parsed.toString() !== expectedTotalLythoshi) {\n failures.push(`defaultFeeText fee must total ${expectedTotalLythoshi} lythoshi`);\n }\n } catch {\n failures.push(\"defaultFeeText fee must be a canonical 8-decimal LYTH amount\");\n }\n }\n\n const defaultForbidden = firstForbiddenDefaultFeeTerm(input.defaultFeeText);\n if (defaultForbidden !== undefined) {\n failures.push(`defaultFeeText exposes detail-only fee term '${defaultForbidden}'`);\n }\n\n for (const [index, detailText] of (input.detailTexts ?? []).entries()) {\n const detailForbidden = firstForbiddenDetailFeeTerm(detailText);\n if (detailForbidden !== undefined) {\n failures.push(`detailTexts[${index}] exposes inherited fee term '${detailForbidden}'`);\n }\n }\n\n if (input.structuredFee !== undefined) {\n checkStructuredFeeObject(input.structuredFee, expectedTotalLythoshi, failures);\n }\n\n if (input.customFeeInputVisible === true) {\n failures.push(\"default surface must not expose custom fee inputs\");\n }\n if (input.speedUpCancelVisible === true) {\n failures.push(\"default surface must not expose speed-up or cancel controls\");\n }\n\n return {\n passed: failures.length === 0,\n failures,\n expectedDefaultFeeText,\n };\n}\n\nexport function checkMrvStructuredFeeConformance(\n value: unknown,\n options: MrvStructuredFeeConformanceOptions = {},\n): MrvStructuredFeeConformanceReport {\n const failures: string[] = [];\n const expectedTotalLythoshi =\n options.expectedTotalLythoshi === undefined\n ? undefined\n : normalizeDecimalLike(\"expectedTotalLythoshi\", options.expectedTotalLythoshi);\n checkStructuredFeeObject(\n value,\n expectedTotalLythoshi,\n failures,\n options.label ?? \"structuredFee\",\n );\n return {\n passed: failures.length === 0,\n failures,\n };\n}\n\nexport function assertMrvStructuredFeeConformance(\n value: unknown,\n options: MrvStructuredFeeConformanceOptions = {},\n): asserts value is NativeReceiptFee {\n const report = checkMrvStructuredFeeConformance(value, options);\n if (!report.passed) {\n throw new MrvValidationError(`structured fee conformance failed: ${report.failures.join(\"; \")}`);\n }\n}\n\nexport function assertMrvFeeDisplayConformance(input: MrvFeeDisplayConformanceInput): void {\n const report = checkMrvFeeDisplayConformance(input);\n if (!report.passed) {\n throw new MrvValidationError(`fee display conformance failed: ${report.failures.join(\"; \")}`);\n }\n}\n\nexport function formatNativeReceiptFeeDisplay(\n fee: Pick<\n NativeReceiptFee,\n | \"total_lythoshi\"\n | \"cycles_used\"\n | \"state_io_units\"\n | \"base_price_per_cycle_lythoshi\"\n | \"state_io_price_per_unit_lythoshi\"\n | \"priority_tip_lythoshi\"\n >,\n): NativeReceiptFeeDisplay {\n const totalLythoshi = normalizeDecimalLike(\"fee.total_lythoshi\", fee.total_lythoshi);\n const totalLyth = formatLyth(totalLythoshi, { includeUnit: false });\n return {\n defaultFeeText: `Network fee: ${totalLyth} LYTH`,\n detailTexts: [\n `cycles ${fee.cycles_used}, state I/O ${fee.state_io_units}, total ${totalLythoshi} lythoshi`,\n `cycle price ${fee.base_price_per_cycle_lythoshi} lythoshi, state I/O price ${fee.state_io_price_per_unit_lythoshi} lythoshi, priority tip ${fee.priority_tip_lythoshi} lythoshi`,\n ],\n totalLythoshi,\n totalLyth,\n };\n}\n\nexport function mrvCodeHashHex(code: MrvBytesLike): string {\n const codeBytes = bytesFrom(code, \"code\");\n const len = new Uint8Array(8);\n new DataView(len.buffer).setBigUint64(0, BigInt(codeBytes.length), false);\n return bytesToHex(blake3(concatBytes(MRV_CODE_HASH_DOMAIN, len, codeBytes)));\n}\n\nexport function mrvV1TransactionExtension(): MrvTransactionExtension {\n return { kind: MRV_TX_EXTENSION_KIND, bodyHex: \"0x01\" };\n}\n\nexport function encodeMrvDeployPayload(\n artifactBytes: MrvBytesLike,\n constructorInput?: MrvBytesLike | null,\n): string {\n const artifact = bytesFrom(artifactBytes, \"artifactBytes\");\n const w = new BincodeWriter();\n w.u16(MRV_DEPLOY_PAYLOAD_VERSION);\n w.bytes(artifact);\n if (constructorInput === undefined || constructorInput === null) {\n w.u8(0);\n } else {\n const constructor = bytesFrom(constructorInput, \"constructorInput\");\n w.u8(1);\n w.bytes(constructor);\n }\n return bytesToHex(w.toBytes());\n}\n\nexport function mrvAddressToBech32(kind: MrvAddressKind, bytes: MrvBytesLike): string {\n return addressToTypedBech32(kind as AddressKind, bytesFrom(bytes, \"address\"));\n}\n\nexport function mrvBech32ToAddress(address: string, expectedKind?: MrvAddressKind) {\n return typedBech32ToAddress(address, expectedKind as AddressKind | undefined);\n}\n\nexport function deriveMrvContractAddress(\n deployerAddress: string,\n deployerNonce: number | bigint,\n artifactHashHex: string,\n): string {\n const deployer = typedBech32ToAddress(deployerAddress);\n const artifactHash = hexToBytes(artifactHashHex, \"artifactHash\");\n if (artifactHash.length !== 32) throw new MrvValidationError(\"artifactHash must be 32 bytes\");\n const nonceValue = normalizeU64(deployerNonce, \"deployerNonce\");\n const nonce = new Uint8Array(8);\n new DataView(nonce.buffer).setBigUint64(0, nonceValue, false);\n const digest = blake3(\n concatBytes(\n MRV_CONTRACT_ADDRESS_DOMAIN,\n new TextEncoder().encode(ADDRESS_KIND_HRPS[deployer.kind]),\n Uint8Array.of(0),\n hexToBytes(deployer.hex, \"deployerAddress\"),\n nonce,\n artifactHash,\n ),\n );\n return addressToTypedBech32(\"contract\", digest.slice(0, 20));\n}\n\nexport function validateMrvArtifactMetadata(\n metadata: MrvArtifactMetadata,\n code: MrvBytesLike,\n): MrvValidatedArtifactMetadata {\n const codeBytes = bytesFrom(code, \"code\");\n if (metadata.formatVersion !== MRV_FORMAT_VERSION) {\n throw new MrvValidationError(\n `unsupported MRV format version ${metadata.formatVersion}, expected ${MRV_FORMAT_VERSION}`,\n );\n }\n if (metadata.profile !== MRV_PROFILE_MONO_RV32IM_V1) {\n throw new MrvValidationError(`unsupported MRV profile ${metadata.profile}`);\n }\n if (codeBytes.length === 0) {\n throw new MrvValidationError(\"MRV code is empty\");\n }\n if (codeBytes.length > MRV_MAX_CODE_BYTES) {\n throw new MrvValidationError(`MRV code has ${codeBytes.length} bytes, max ${MRV_MAX_CODE_BYTES}`);\n }\n if (metadata.codeBytes !== BigInt(codeBytes.length)) {\n throw new MrvValidationError(\n `metadata codeBytes ${metadata.codeBytes.toString()} does not match supplied code length ${codeBytes.length}`,\n );\n }\n if (metadata.debugBytes > BigInt(MRV_MAX_DEBUG_BYTES)) {\n throw new MrvValidationError(`MRV debug section has ${metadata.debugBytes.toString()} bytes`);\n }\n validateHexLength(\"codeHash\", metadata.codeHash, 32);\n validateHexLength(\"sourceDigest\", metadata.build.sourceDigest, 32);\n validateMemory(metadata.memory.initialPages, metadata.memory.maxPages, metadata.memory.stackBytes);\n validateStorageNamespace(metadata.storageNamespace.name, metadata.storageNamespace.version);\n validateAbi(metadata.abi);\n const syscalls = validateImports(metadata.imports);\n const computed = mrvCodeHashHex(codeBytes);\n if (metadata.codeHash.toLowerCase() !== computed) {\n throw new MrvValidationError(`MRV code hash mismatch: declared ${metadata.codeHash}, computed ${computed}`);\n }\n return {\n codeHash: computed,\n profile: metadata.profile,\n memory: metadata.memory,\n storageNamespace: metadata.storageNamespace,\n syscalls,\n abiSymbolCount: BigInt(metadata.abi.symbols.length),\n codeBytes: BigInt(codeBytes.length),\n };\n}\n\nexport function validateMrvDeployRequest(request: MrvDeployRequest): void {\n if (request.from !== undefined) typedBech32ToAddress(request.from, \"user\");\n hexToBytes(request.artifactBytes, \"artifactBytes\");\n validateDecimal(\"valueLythoshi\", request.valueLythoshi);\n validateOptionalDecimal(\"maxExecutionFeeLythoshi\", request.maxExecutionFeeLythoshi);\n validateOptionalDecimal(\"priorityTipLythoshi\", request.priorityTipLythoshi);\n validateExecutionUnitLimit(\"executionUnitLimit\", request.executionUnitLimit);\n}\n\nexport function validateMrvCallRequest(request: MrvCallRequest): void {\n if (request.from !== undefined) typedBech32ToAddress(request.from, \"user\");\n typedBech32ToAddress(request.contractAddress, \"contract\");\n hexToBytes(request.input, \"input\");\n validateDecimal(\"valueLythoshi\", request.valueLythoshi);\n validateOptionalDecimal(\"maxExecutionFeeLythoshi\", request.maxExecutionFeeLythoshi);\n validateOptionalDecimal(\"priorityTipLythoshi\", request.priorityTipLythoshi);\n validateExecutionUnitLimit(\"executionUnitLimit\", request.executionUnitLimit);\n}\n\nexport function buildMrvDeployRequest(\n artifactBytes: MrvBytesLike,\n options: MrvRequestBuildOptions = {},\n): MrvDeployRequest {\n const request: MrvDeployRequest = {\n artifactBytes: normalizeBytesHex(artifactBytes, \"artifactBytes\"),\n valueLythoshi: normalizeDecimalLike(\"valueLythoshi\", options.valueLythoshi, \"0\"),\n };\n applyRequestOptions(request, options);\n validateMrvDeployRequest(request);\n return request;\n}\n\nexport function buildMrvDeployPayloadRequest(\n artifactBytes: MrvBytesLike,\n options: MrvDeployPayloadRequestOptions = {},\n): MrvDeployRequest {\n const request = buildMrvDeployRequest(\n encodeMrvDeployPayload(artifactBytes, options.constructorInput),\n options,\n );\n return request;\n}\n\nexport function buildMrvCallRequest(\n contractAddress: string,\n input: MrvBytesLike = \"0x\",\n options: MrvRequestBuildOptions = {},\n): MrvCallRequest {\n const request: MrvCallRequest = {\n contractAddress,\n input: normalizeBytesHex(input, \"input\"),\n valueLythoshi: normalizeDecimalLike(\"valueLythoshi\", options.valueLythoshi, \"0\"),\n };\n applyRequestOptions(request, options);\n validateMrvCallRequest(request);\n return request;\n}\n\nexport function buildMrvDeployPlan(\n artifactBytes: MrvBytesLike,\n options: MrvDeployPlanOptions = {},\n): MrvDeployPlan {\n const request = buildMrvDeployRequest(artifactBytes, options);\n const plan: MrvDeployPlan = {\n request,\n extension: mrvV1TransactionExtension(),\n };\n if (options.artifactHash !== undefined && request.from !== undefined && request.nonce !== undefined) {\n plan.expectedContractAddress = deriveMrvContractAddress(request.from, request.nonce, options.artifactHash);\n } else if (options.artifactHash !== undefined) {\n validateHexLength(\"artifactHash\", options.artifactHash, 32);\n }\n return plan;\n}\n\nexport function buildMrvDeployPayloadPlan(\n artifactBytes: MrvBytesLike,\n options: MrvDeployPayloadPlanOptions = {},\n): MrvDeployPlan {\n const request = buildMrvDeployPayloadRequest(artifactBytes, options);\n const plan: MrvDeployPlan = {\n request,\n extension: mrvV1TransactionExtension(),\n };\n if (options.artifactHash !== undefined && request.from !== undefined && request.nonce !== undefined) {\n plan.expectedContractAddress = deriveMrvContractAddress(request.from, request.nonce, options.artifactHash);\n } else if (options.artifactHash !== undefined) {\n validateHexLength(\"artifactHash\", options.artifactHash, 32);\n }\n return plan;\n}\n\nexport function buildMrvCallPlan(\n contractAddress: string,\n input: MrvBytesLike = \"0x\",\n options: MrvRequestBuildOptions = {},\n): MrvCallPlan {\n return {\n request: buildMrvCallRequest(contractAddress, input, options),\n extension: mrvV1TransactionExtension(),\n };\n}\n\nexport function buildMrvDeployNativeTxPlan(\n artifactBytes: MrvBytesLike,\n options: MrvDeployNativeTxOptions,\n): MrvDeployNativeTxPlan {\n const chainId = normalizeU64(options.chainId, \"chainId\");\n const nonce = normalizeU64(options.nonce, \"nonce\");\n const executionUnitLimit = normalizeU64(options.executionUnitLimit, \"executionUnitLimit\");\n const maxExecutionFee = normalizeDecimalLike(\"maxExecutionFeeLythoshi\", options.maxExecutionFeeLythoshi);\n const priorityTip =\n options.priorityTipLythoshi === undefined\n ? undefined\n : normalizeDecimalLike(\"priorityTipLythoshi\", options.priorityTipLythoshi);\n const plan = buildMrvDeployPlan(artifactBytes, {\n ...options,\n nonce,\n executionUnitLimit,\n maxExecutionFeeLythoshi: maxExecutionFee,\n priorityTipLythoshi: priorityTip,\n });\n return {\n ...plan,\n nativeTx: {\n chainId,\n nonce,\n valueLythoshi: plan.request.valueLythoshi,\n executionUnitLimit,\n maxExecutionFeeLythoshi: maxExecutionFee,\n priorityTipLythoshi: priorityTip ?? \"0\",\n },\n feePreview: buildMrvNativeFeePreview(executionUnitLimit, maxExecutionFee, priorityTip ?? \"0\"),\n tx: {\n chainId,\n nonce,\n maxPriorityFeePerGas: priorityTip ?? \"0\",\n maxFeePerGas: maxExecutionFee,\n gasLimit: executionUnitLimit,\n to: null,\n value: plan.request.valueLythoshi,\n input: plan.request.artifactBytes,\n extensions: [plan.extension],\n },\n };\n}\n\nexport function buildMrvDeployPayloadNativeTxPlan(\n artifactBytes: MrvBytesLike,\n options: MrvDeployPayloadNativeTxOptions,\n): MrvDeployNativeTxPlan {\n const chainId = normalizeU64(options.chainId, \"chainId\");\n const nonce = normalizeU64(options.nonce, \"nonce\");\n const executionUnitLimit = normalizeU64(options.executionUnitLimit, \"executionUnitLimit\");\n const maxExecutionFee = normalizeDecimalLike(\"maxExecutionFeeLythoshi\", options.maxExecutionFeeLythoshi);\n const priorityTip =\n options.priorityTipLythoshi === undefined\n ? undefined\n : normalizeDecimalLike(\"priorityTipLythoshi\", options.priorityTipLythoshi);\n const plan = buildMrvDeployPayloadPlan(artifactBytes, {\n ...options,\n nonce,\n executionUnitLimit,\n maxExecutionFeeLythoshi: maxExecutionFee,\n priorityTipLythoshi: priorityTip,\n });\n return {\n ...plan,\n nativeTx: {\n chainId,\n nonce,\n valueLythoshi: plan.request.valueLythoshi,\n executionUnitLimit,\n maxExecutionFeeLythoshi: maxExecutionFee,\n priorityTipLythoshi: priorityTip ?? \"0\",\n },\n feePreview: buildMrvNativeFeePreview(executionUnitLimit, maxExecutionFee, priorityTip ?? \"0\"),\n tx: {\n chainId,\n nonce,\n maxPriorityFeePerGas: priorityTip ?? \"0\",\n maxFeePerGas: maxExecutionFee,\n gasLimit: executionUnitLimit,\n to: null,\n value: plan.request.valueLythoshi,\n input: plan.request.artifactBytes,\n extensions: [plan.extension],\n },\n };\n}\n\nexport function buildMrvCallNativeTxPlan(\n contractAddress: string,\n input: MrvBytesLike,\n options: MrvCallNativeTxOptions,\n): MrvCallNativeTxPlan {\n const chainId = normalizeU64(options.chainId, \"chainId\");\n const nonce = normalizeU64(options.nonce, \"nonce\");\n const executionUnitLimit = normalizeU64(options.executionUnitLimit, \"executionUnitLimit\");\n const maxExecutionFee = normalizeDecimalLike(\"maxExecutionFeeLythoshi\", options.maxExecutionFeeLythoshi);\n const priorityTip =\n options.priorityTipLythoshi === undefined\n ? undefined\n : normalizeDecimalLike(\"priorityTipLythoshi\", options.priorityTipLythoshi);\n const plan = buildMrvCallPlan(contractAddress, input, {\n ...options,\n nonce,\n executionUnitLimit,\n maxExecutionFeeLythoshi: maxExecutionFee,\n priorityTipLythoshi: priorityTip,\n });\n return {\n ...plan,\n nativeTx: {\n chainId,\n nonce,\n valueLythoshi: plan.request.valueLythoshi,\n executionUnitLimit,\n maxExecutionFeeLythoshi: maxExecutionFee,\n priorityTipLythoshi: priorityTip ?? \"0\",\n },\n feePreview: buildMrvNativeFeePreview(executionUnitLimit, maxExecutionFee, priorityTip ?? \"0\"),\n tx: {\n chainId,\n nonce,\n maxPriorityFeePerGas: priorityTip ?? \"0\",\n maxFeePerGas: maxExecutionFee,\n gasLimit: executionUnitLimit,\n to: typedBech32ToAddress(plan.request.contractAddress, \"contract\").hex,\n value: plan.request.valueLythoshi,\n input: plan.request.input,\n extensions: [plan.extension],\n },\n };\n}\n\nexport function assertMrvDeployNativeSubmissionPlan(plan: MrvDeployNativeTxPlan): void {\n assertMrvNativeSubmissionEnvelope(plan);\n if (plan.tx.to !== null) {\n throw new MrvValidationError(\"MRV deploy submission tx.to must be null\");\n }\n const txInput = normalizeBytesHex(plan.tx.input ?? \"0x\", \"tx.input\");\n if (txInput !== plan.request.artifactBytes) {\n throw new MrvValidationError(\"MRV deploy submission tx.input must match artifactBytes\");\n }\n}\n\nexport function assertMrvCallNativeSubmissionPlan(plan: MrvCallNativeTxPlan): void {\n assertMrvNativeSubmissionEnvelope(plan);\n const actualTo = normalizeNativeTxToHex(plan.tx.to, \"tx.to\");\n if (actualTo === null) {\n throw new MrvValidationError(\"MRV call submission tx.to must be a 20-byte contract address\");\n }\n const expectedTo = typedBech32ToAddress(plan.request.contractAddress, \"contract\").hex.toLowerCase();\n if (actualTo !== expectedTo) {\n throw new MrvValidationError(\"MRV call submission tx.to must match contractAddress\");\n }\n const txInput = normalizeBytesHex(plan.tx.input ?? \"0x\", \"tx.input\");\n if (txInput !== plan.request.input) {\n throw new MrvValidationError(\"MRV call submission tx.input must match request input\");\n }\n}\n\nfunction buildMrvNativeFeePreview(\n executionUnitLimit: bigint,\n maxExecutionFeeLythoshi: string,\n priorityTipLythoshi: string,\n): MrvNativeFeePreview {\n const totalLythoshi = normalizeDecimalLike(\"maxExecutionFeeLythoshi\", maxExecutionFeeLythoshi);\n return {\n totalLythoshi,\n totalLyth: formatLyth(totalLythoshi, { includeUnit: false }),\n cyclesUsed: executionUnitLimit,\n executionUnitLimit,\n maxExecutionFeeLythoshi: totalLythoshi,\n priorityTipLythoshi: normalizeDecimalLike(\"priorityTipLythoshi\", priorityTipLythoshi),\n };\n}\n\nexport async function submitMrvDeployNativeTx(\n client: RpcClient,\n backend: MlDsa65Backend,\n artifactBytes: MrvBytesLike,\n options: MrvDeploySubmitOptions,\n): Promise<MrvDeploySubmission> {\n const plan = buildMrvDeployNativeTxPlan(artifactBytes, options);\n assertMrvDeployNativeSubmissionPlan(plan);\n const submission = await buildEncryptedSubmission({\n backend,\n tx: plan.tx,\n encryptionKey: options.encryptionKey ?? (await fetchEncryptionKey(client)),\n class: options.class,\n });\n return {\n ...plan,\n ...submission,\n txHash: await submitEncryptedEnvelope(client, submission.envelopeWireHex),\n };\n}\n\nexport async function submitMrvDeployPayloadNativeTx(\n client: RpcClient,\n backend: MlDsa65Backend,\n artifactBytes: MrvBytesLike,\n options: MrvDeployPayloadSubmitOptions,\n): Promise<MrvDeployPayloadSubmission> {\n const plan = buildMrvDeployPayloadNativeTxPlan(artifactBytes, options);\n assertMrvDeployNativeSubmissionPlan(plan);\n const submission = await buildEncryptedSubmission({\n backend,\n tx: plan.tx,\n encryptionKey: options.encryptionKey ?? (await fetchEncryptionKey(client)),\n class: options.class,\n });\n return {\n ...plan,\n ...submission,\n txHash: await submitEncryptedEnvelope(client, submission.envelopeWireHex),\n };\n}\n\nexport async function submitMrvCallNativeTx(\n client: RpcClient,\n backend: MlDsa65Backend,\n contractAddress: string,\n input: MrvBytesLike,\n options: MrvCallSubmitOptions,\n): Promise<MrvCallSubmission> {\n const plan = buildMrvCallNativeTxPlan(contractAddress, input, options);\n assertMrvCallNativeSubmissionPlan(plan);\n const submission = await buildEncryptedSubmission({\n backend,\n tx: plan.tx,\n encryptionKey: options.encryptionKey ?? (await fetchEncryptionKey(client)),\n class: options.class,\n });\n return {\n ...plan,\n ...submission,\n txHash: await submitEncryptedEnvelope(client, submission.envelopeWireHex),\n };\n}\n\nfunction assertMrvNativeSubmissionEnvelope(plan: MrvDeployNativeTxPlan | MrvCallNativeTxPlan): void {\n const extensions = plan.tx.extensions ?? [];\n if (extensions.length !== 1) {\n throw new MrvValidationError(\"MRV native submission must carry exactly one transaction extension\");\n }\n assertMrvV1Extension(plan.extension, \"extension\");\n assertMrvV1Extension(extensions[0], \"tx.extensions[0]\");\n assertSameBigint(\"tx.chainId\", plan.tx.chainId, plan.nativeTx.chainId);\n assertSameBigint(\"tx.nonce\", plan.tx.nonce, plan.nativeTx.nonce);\n assertSameBigint(\"tx.gasLimit\", plan.tx.gasLimit, plan.nativeTx.executionUnitLimit);\n assertSameDecimal(\"tx.value\", plan.tx.value, plan.nativeTx.valueLythoshi);\n assertSameDecimal(\"tx.maxFeePerGas\", plan.tx.maxFeePerGas, plan.nativeTx.maxExecutionFeeLythoshi);\n assertSameDecimal(\"tx.maxPriorityFeePerGas\", plan.tx.maxPriorityFeePerGas, plan.nativeTx.priorityTipLythoshi);\n assertU128Lythoshi(\"maxExecutionFeeLythoshi\", plan.nativeTx.maxExecutionFeeLythoshi);\n assertU128Lythoshi(\"priorityTipLythoshi\", plan.nativeTx.priorityTipLythoshi);\n}\n\nfunction assertMrvV1Extension(extension: NativeTxExtensionLike, field: string): void {\n if (extension.kind !== MRV_TX_EXTENSION_KIND) {\n throw new MrvValidationError(`${field}.kind must be MRV v1 extension kind`);\n }\n const bodyHex = normalizeBytesHex(\"bodyHex\" in extension ? extension.bodyHex : extension.body, `${field}.body`);\n if (bodyHex !== \"0x01\") {\n throw new MrvValidationError(`${field}.body must be MRV v1 extension body`);\n }\n}\n\nfunction assertSameBigint(field: string, actual: bigint | number | string, expected: bigint): void {\n if (normalizeU64Like(actual, field) !== expected) {\n throw new MrvValidationError(`${field} must match nativeTx`);\n }\n}\n\nfunction assertSameDecimal(field: string, actual: MrvDecimalLike, expected: string): void {\n if (normalizeDecimalLike(field, actual) !== expected) {\n throw new MrvValidationError(`${field} must match nativeTx`);\n }\n}\n\nfunction assertU128Lythoshi(field: string, value: MrvDecimalLike): void {\n const normalized = BigInt(normalizeDecimalLike(field, value));\n if (normalized > (1n << 128n) - 1n) {\n throw new MrvValidationError(`${field} must fit in u128 for encrypted submission`);\n }\n}\n\nfunction normalizeNativeTxToHex(value: NativeEvmTxFields[\"to\"], field: string): string | null {\n if (value === null) return null;\n const bytes = bytesFrom(value, field);\n if (bytes.length !== 20) {\n throw new MrvValidationError(`${field} must be a 20-byte address`);\n }\n return bytesToHex(bytes).toLowerCase();\n}\n\nfunction normalizeU64Like(value: bigint | number | string, field: string): bigint {\n if (typeof value === \"string\") {\n return normalizeU64(BigInt(normalizeDecimalLike(field, value)), field);\n }\n return normalizeU64(value, field);\n}\n\nfunction validateMemory(initialPages: number, maxPages: number, stackBytes: number): void {\n if (initialPages === 0) throw new MrvValidationError(\"initialPages is zero\");\n if (maxPages === 0) throw new MrvValidationError(\"maxPages is zero\");\n if (initialPages > maxPages) throw new MrvValidationError(\"initialPages exceeds maxPages\");\n if (maxPages > MRV_MAX_MEMORY_PAGES) throw new MrvValidationError(\"maxPages exceeds bound\");\n if (stackBytes === 0) throw new MrvValidationError(\"stackBytes is zero\");\n const maxBytes = maxPages * MRV_MEMORY_PAGE_BYTES;\n if (stackBytes > maxBytes) throw new MrvValidationError(\"stackBytes exceeds max memory\");\n if (stackBytes % 16 !== 0) throw new MrvValidationError(\"stackBytes must be 16-byte aligned\");\n}\n\nfunction validateStorageNamespace(name: string, version: number): void {\n if (version === 0) throw new MrvValidationError(\"storage namespace version must be non-zero\");\n if (name.length > MRV_MAX_STORAGE_NAMESPACE_BYTES) throw new MrvValidationError(\"storage namespace is too long\");\n if (!isIdentifier(name)) throw new MrvValidationError(\"storage namespace is not canonical\");\n}\n\nfunction validateAbi(abi: MrvAbiManifest): void {\n if (abi.symbols.length === 0) throw new MrvValidationError(\"MRV ABI must declare at least one symbol\");\n if (abi.symbols.length > MRV_MAX_ABI_SYMBOLS) {\n throw new MrvValidationError(`MRV ABI has ${abi.symbols.length} symbols, max ${MRV_MAX_ABI_SYMBOLS}`);\n }\n const seen = new Set<string>();\n for (const symbol of abi.symbols) {\n if (!isIdentifier(symbol.name)) throw new MrvValidationError(`invalid MRV ABI symbol '${symbol.name}'`);\n if (seen.has(symbol.name)) throw new MrvValidationError(`duplicate MRV ABI symbol '${symbol.name}'`);\n seen.add(symbol.name);\n for (const param of [...symbol.inputs, ...symbol.outputs]) {\n if (!isIdentifier(param.name)) throw new MrvValidationError(`invalid MRV ABI parameter '${param.name}'`);\n validateAbiType(param.ty);\n }\n }\n}\n\nfunction validateAbiType(ty: MrvAbiType): void {\n if (ty.kind === \"fixedBytes\" && ty.len === 0) {\n throw new MrvValidationError(\"fixed bytes length is zero\");\n }\n}\n\nfunction validateImports(imports: MrvArtifactMetadata[\"imports\"]): MrvResolvedSyscall[] {\n const seen = new Set<number>();\n const resolved: MrvResolvedSyscall[] = [];\n for (const imp of imports) {\n if (imp.module !== MONO_SYSCALL_MODULE) {\n throw new MrvValidationError(`forbidden host import ${imp.module}.${imp.name}`);\n }\n const expectedName = SYSCALL_NAME_BY_ID.get(imp.id);\n if (expectedName === undefined) throw new MrvValidationError(`unknown MRV syscall id ${imp.id}`);\n const expectedId = SYSCALL_ID_BY_NAME.get(imp.name);\n if (expectedId === undefined) throw new MrvValidationError(`unknown MRV syscall name '${imp.name}'`);\n if (expectedId !== imp.id) {\n throw new MrvValidationError(`MRV syscall name/id mismatch for ${imp.name}: declared ${imp.id}`);\n }\n if (seen.has(imp.id)) throw new MrvValidationError(`duplicate MRV syscall '${expectedName}'`);\n seen.add(imp.id);\n resolved.push({ id: imp.id, name: expectedName });\n }\n return resolved;\n}\n\nfunction validateOptionalDecimal(field: string, value: string | undefined): void {\n if (value !== undefined) validateDecimal(field, value);\n}\n\nfunction applyRequestOptions(request: MrvDeployRequest | MrvCallRequest, options: MrvRequestBuildOptions): void {\n if (options.from !== undefined) request.from = options.from;\n const executionUnitLimit = normalizeOptionalU64(\"executionUnitLimit\", options.executionUnitLimit);\n if (executionUnitLimit !== undefined) request.executionUnitLimit = executionUnitLimit;\n const maxExecutionFee = normalizeOptionalDecimalLike(\n \"maxExecutionFeeLythoshi\",\n options.maxExecutionFeeLythoshi,\n );\n if (maxExecutionFee !== undefined) request.maxExecutionFeeLythoshi = maxExecutionFee;\n const priorityTip = normalizeOptionalDecimalLike(\"priorityTipLythoshi\", options.priorityTipLythoshi);\n if (priorityTip !== undefined) request.priorityTipLythoshi = priorityTip;\n const nonce = normalizeOptionalU64(\"nonce\", options.nonce);\n if (nonce !== undefined) request.nonce = nonce;\n}\n\nfunction normalizeBytesHex(value: MrvBytesLike, field: string): string {\n return bytesToHex(bytesFrom(value, field));\n}\n\nfunction normalizeOptionalDecimalLike(field: string, value: MrvDecimalLike | undefined): string | undefined {\n return value === undefined ? undefined : normalizeDecimalLike(field, value);\n}\n\nfunction formatWholeWithCommas(value: bigint): string {\n const digits = value.toString();\n const firstGroupLen = digits.length % 3;\n const groups: string[] = [];\n let index = 0;\n if (firstGroupLen !== 0) {\n groups.push(digits.slice(0, firstGroupLen));\n index = firstGroupLen;\n }\n while (index < digits.length) {\n groups.push(digits.slice(index, index + 3));\n index += 3;\n }\n return groups.join(\",\");\n}\n\nfunction stripLythUnit(input: string): string {\n const trimmed = input.trim();\n const withoutUnit = trimmed.replace(/\\s+LYTH$/i, \"\").trim();\n if (withoutUnit.length === 0) {\n throw new MrvValidationError(\"lyth amount must be a canonical LYTH decimal\");\n }\n return withoutUnit;\n}\n\nfunction isCanonicalWholeLyth(value: string): boolean {\n if (/^(0|[1-9][0-9]*)$/.test(value)) {\n return true;\n }\n return /^[1-9][0-9]{0,2}(,[0-9]{3})+$/.test(value);\n}\n\nfunction extractLythAmountCandidates(text: string): string[] {\n return [...text.matchAll(/(?:^|[^A-Za-z0-9_])([0-9][0-9,]*(?:\\.[0-9]+)?)\\s+LYTH\\b/g)].map(\n (match) => match[1],\n );\n}\n\nfunction firstForbiddenDefaultFeeTerm(text: string): string | undefined {\n const tokens = feeTermTokens(text);\n for (const forbidden of [\"gas\", \"gwei\", \"wei\", \"cycle\", \"cycles\", \"lythoshi\"]) {\n if (tokens.includes(forbidden)) return forbidden;\n }\n if (hasAdjacentTerms(tokens, \"state\", \"io\") || hasStateIOTerms(tokens)) return \"state I/O\";\n return undefined;\n}\n\nfunction firstForbiddenDetailFeeTerm(text: string): string | undefined {\n const tokens = feeTermTokens(text);\n for (const forbidden of [\"gas\", \"gwei\", \"wei\"]) {\n if (tokens.includes(forbidden)) return forbidden;\n }\n return undefined;\n}\n\nfunction feeTermTokens(text: string): string[] {\n return text.toLowerCase().match(/[a-z]+/g) ?? [];\n}\n\nfunction hasAdjacentTerms(tokens: readonly string[], first: string, second: string): boolean {\n return tokens.some((token, index) => token === first && tokens[index + 1] === second);\n}\n\nfunction hasStateIOTerms(tokens: readonly string[]): boolean {\n return tokens.some((token, index) => token === \"state\" && tokens[index + 1] === \"i\" && tokens[index + 2] === \"o\");\n}\n\nfunction checkStructuredFeeObject(\n value: unknown,\n expectedTotalLythoshi: string | undefined,\n failures: string[],\n label = \"structuredFee\",\n): void {\n if (!isRecord(value)) {\n failures.push(`${label} must be an object`);\n return;\n }\n const expectedFields = new Set<string>([...MRV_STRUCTURED_FEE_FIELDS, \"total_lyth\"]);\n const actualFields = Object.keys(value);\n for (const field of MRV_STRUCTURED_FEE_FIELDS) {\n if (!(field in value)) failures.push(`${label} is missing '${field}'`);\n }\n for (const field of actualFields) {\n if (!expectedFields.has(field)) failures.push(`${label} has unexpected field '${field}'`);\n }\n\n const totalLythoshi = stringField(value, \"total_lythoshi\", failures, label);\n const expectedTotal = expectedTotalLythoshi ?? totalLythoshi;\n if (\n totalLythoshi !== undefined &&\n expectedTotalLythoshi !== undefined &&\n totalLythoshi !== expectedTotalLythoshi\n ) {\n failures.push(`${label}.total_lythoshi must be ${expectedTotalLythoshi}`);\n }\n const totalLyth =\n \"total_lyth\" in value ? lythDecimalField(value, \"total_lyth\", failures, label) : undefined;\n if (totalLyth !== undefined && expectedTotal !== undefined) {\n const expectedTotalLyth = formatLyth(expectedTotal, { includeUnit: false });\n if (totalLyth !== expectedTotalLyth) {\n failures.push(`${label}.total_lyth must be ${expectedTotalLyth}`);\n }\n }\n for (const field of [\n \"base_price_per_cycle_lythoshi\",\n \"state_io_price_per_unit_lythoshi\",\n \"priority_tip_lythoshi\",\n ]) {\n stringField(value, field, failures, label);\n }\n for (const field of [\"cycles_used\", \"state_io_units\"]) {\n integerField(value, field, failures, label);\n }\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nfunction stringField(\n value: Record<string, unknown>,\n field: string,\n failures: string[],\n label: string,\n): string | undefined {\n const fieldValue = value[field];\n if (typeof fieldValue !== \"string\" || !isCanonicalUnsignedDecimalString(fieldValue)) {\n failures.push(`${label}.${field} must be a canonical unsigned decimal string`);\n return undefined;\n }\n return fieldValue;\n}\n\nfunction lythDecimalField(\n value: Record<string, unknown>,\n field: string,\n failures: string[],\n label: string,\n): string | undefined {\n const fieldValue = value[field];\n if (typeof fieldValue !== \"string\") {\n failures.push(`${label}.${field} must be a canonical LYTH decimal string`);\n return undefined;\n }\n try {\n parseLythToLythoshi(`${fieldValue} LYTH`);\n } catch {\n failures.push(`${label}.${field} must be a canonical LYTH decimal string`);\n return undefined;\n }\n return fieldValue;\n}\n\nfunction integerField(\n value: Record<string, unknown>,\n field: string,\n failures: string[],\n label: string,\n): void {\n const fieldValue = value[field];\n if (\n typeof fieldValue !== \"number\" ||\n !Number.isSafeInteger(fieldValue) ||\n fieldValue < 0\n ) {\n failures.push(`${label}.${field} must be a non-negative safe integer`);\n }\n}\n\nfunction isCanonicalUnsignedDecimalString(value: string): boolean {\n if (!/^(0|[1-9][0-9]*)$/.test(value)) return false;\n try {\n BigInt(value);\n return true;\n } catch {\n return false;\n }\n}\n\nfunction normalizeDecimalLike(field: string, value: MrvDecimalLike | undefined, defaultValue?: string): string {\n if (value === undefined) {\n if (defaultValue === undefined) throw new MrvValidationError(`${field} is required`);\n return defaultValue;\n }\n if (typeof value === \"string\") {\n validateDecimal(field, value);\n return value;\n }\n if (typeof value === \"number\" && !Number.isSafeInteger(value)) {\n throw new MrvValidationError(`${field} must be a safe unsigned integer`);\n }\n const out = BigInt(value);\n if (out < 0n) throw new MrvValidationError(`${field} must be a canonical unsigned decimal string`);\n return out.toString();\n}\n\nfunction normalizeOptionalU64(field: string, value: number | bigint | undefined): bigint | undefined {\n return value === undefined ? undefined : normalizeU64(value, field);\n}\n\nfunction validateDecimal(field: string, value: string): void {\n if (!/^(0|[1-9][0-9]*)$/.test(value)) {\n throw new MrvValidationError(`${field} must be a canonical unsigned decimal string`);\n }\n try {\n BigInt(value);\n } catch {\n throw new MrvValidationError(`${field} must be a canonical unsigned decimal string`);\n }\n}\n\nfunction validateExecutionUnitLimit(field: string, value: number | bigint | undefined): void {\n if (value !== undefined && BigInt(value) === 0n) {\n throw new MrvValidationError(`${field} must be greater than zero`);\n }\n}\n\nfunction normalizeU64(value: number | bigint, field: string): bigint {\n if (typeof value === \"number\" && !Number.isSafeInteger(value)) {\n throw new MrvValidationError(`${field} must be a safe unsigned integer`);\n }\n const out = BigInt(value);\n if (out < 0n || out > 0xffff_ffff_ffff_ffffn) {\n throw new MrvValidationError(`${field} must fit in u64`);\n }\n return out;\n}\n\nfunction validateHexLength(field: string, value: string, expected: number): void {\n const bytes = hexToBytes(value, field);\n if (bytes.length !== expected) throw new MrvValidationError(`${field} must be ${expected} bytes`);\n}\n\nfunction bytesFrom(value: MrvBytesLike, field: string): Uint8Array {\n if (typeof value === \"string\") return hexToBytes(value, field);\n return value instanceof Uint8Array ? value : Uint8Array.from(value);\n}\n\nfunction hexToBytes(value: string, field: string): Uint8Array {\n if (!/^0x(?:[0-9a-fA-F]{2})*$/.test(value)) {\n throw new MrvValidationError(`${field} must be 0x-prefixed even-length hex`);\n }\n const out = new Uint8Array((value.length - 2) / 2);\n for (let i = 0; i < out.length; i++) {\n out[i] = Number.parseInt(value.slice(2 + i * 2, 4 + i * 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 len = parts.reduce((sum, item) => sum + item.length, 0);\n const out = new Uint8Array(len);\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 isIdentifier(value: string): boolean {\n return /^[a-z][a-z0-9_]*$/.test(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\nimport { ML_DSA_65_PUBLIC_KEY_LEN } from \"./crypto/ml-dsa.js\";\nimport { hexToBytes } from \"./crypto/bytes.js\";\nimport type { NoEvmReceiptTrustPolicy } from \"./receipt-proof.js\";\n\nexport type NetworkSlug = \"testnet-69420\";\n\nconst BLS_PUBLIC_KEY_BYTE_LENGTH = 48;\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 ReceiptProofTrustArchiveSigner {\n public_key: string;\n signer_id?: string;\n valid_from_height?: number;\n valid_to_height?: number;\n notes?: string;\n}\n\nexport interface ReceiptProofTrustArchivePolicy {\n signature_threshold: number;\n valid_from_height?: number;\n valid_to_height?: number;\n signers: ReceiptProofTrustArchiveSigner[];\n}\n\nexport interface ReceiptProofTrustFinalitySigner {\n authority_index: number;\n public_key: string;\n valid_from_round?: number;\n valid_to_round?: number;\n notes?: string;\n}\n\nexport interface ReceiptProofTrustFinalityPolicy {\n mode: \"cluster\" | \"multisig\";\n chain_id?: number;\n threshold: number;\n committee_size?: number;\n cluster_public_key?: string;\n valid_from_round?: number;\n valid_to_round?: number;\n signers?: ReceiptProofTrustFinalitySigner[];\n}\n\nexport interface ReceiptProofTrustPolicy {\n archive?: ReceiptProofTrustArchivePolicy;\n finality?: ReceiptProofTrustFinalityPolicy;\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 receipt_proof_trust?: ReceiptProofTrustPolicy;\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 \"Public Monolythium testnet. Testnet state may reset without notice; do not store value on this network.\",\n genesis_hash:\n \"0xad64b785debc17aef3fb4a8d944c2c7c9156394bb08d5ab576ec85782732f897\",\n binary_sha: \"058c883\",\n rpc: [\n {\n url: \"https://rpc.monolythium.com\",\n provider: \"monolythium\",\n tier: \"official\",\n },\n ],\n p2p: [],\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 function getNoEvmReceiptTrustPolicy(\n network: NetworkSlug | string,\n registry: ChainRegistry = CHAIN_REGISTRY,\n): NoEvmReceiptTrustPolicy | null {\n const info = registry[network];\n if (!info) {\n throw new Error(`unknown Monolythium network: ${network}`);\n }\n return noEvmReceiptTrustPolicyFromChainInfo(info);\n}\n\nexport function noEvmReceiptTrustPolicyFromChainInfo(\n info: ChainInfo,\n): NoEvmReceiptTrustPolicy | null {\n const trust = info.receipt_proof_trust;\n if (trust == null || (trust.archive == null && trust.finality == null)) return null;\n\n const policy: NoEvmReceiptTrustPolicy = { chainId: info.chain_id };\n if (trust.archive != null) {\n policy.archive = {\n threshold: assertSafeIntegerAtLeast(\n trust.archive.signature_threshold,\n 1,\n \"receipt_proof_trust.archive.signature_threshold\",\n ),\n validFromHeight: trust.archive.valid_from_height,\n validToHeight: trust.archive.valid_to_height,\n trustedSigners: trust.archive.signers.map((signer, index) => ({\n publicKey: decodeFixedHex(\n signer.public_key,\n ML_DSA_65_PUBLIC_KEY_LEN,\n `receipt_proof_trust.archive.signers[${index}].public_key`,\n ),\n signerId: signer.signer_id,\n validFromHeight: signer.valid_from_height,\n validToHeight: signer.valid_to_height,\n })),\n };\n }\n if (trust.finality != null) {\n const threshold = assertSafeIntegerAtLeast(\n trust.finality.threshold,\n 1,\n \"receipt_proof_trust.finality.threshold\",\n );\n const chainId = trust.finality.chain_id ?? info.chain_id;\n if (trust.finality.mode === \"cluster\") {\n if (trust.finality.cluster_public_key == null) {\n throw new Error(\n \"receipt_proof_trust.finality.cluster_public_key is required for cluster mode\",\n );\n }\n policy.finality = {\n mode: \"cluster\",\n chainId,\n threshold,\n validFromRound: trust.finality.valid_from_round,\n validToRound: trust.finality.valid_to_round,\n committeeSize: assertSafeIntegerAtLeast(\n trust.finality.committee_size,\n 1,\n \"receipt_proof_trust.finality.committee_size\",\n ),\n clusterPublicKey: decodeFixedHex(\n trust.finality.cluster_public_key,\n BLS_PUBLIC_KEY_BYTE_LENGTH,\n \"receipt_proof_trust.finality.cluster_public_key\",\n ),\n };\n } else if (trust.finality.mode === \"multisig\") {\n const signers = trust.finality.signers ?? [];\n policy.finality = {\n mode: \"multisig\",\n chainId,\n threshold,\n validFromRound: trust.finality.valid_from_round,\n validToRound: trust.finality.valid_to_round,\n trustedSigners: signers.map((signer, index) => ({\n authorityIndex: assertSafeIntegerAtLeast(\n signer.authority_index,\n 0,\n `receipt_proof_trust.finality.signers[${index}].authority_index`,\n ),\n publicKey: decodeFixedHex(\n signer.public_key,\n BLS_PUBLIC_KEY_BYTE_LENGTH,\n `receipt_proof_trust.finality.signers[${index}].public_key`,\n ),\n validFromRound: signer.valid_from_round,\n validToRound: signer.valid_to_round,\n })),\n };\n } else {\n throw new Error(\n `unsupported receipt_proof_trust.finality.mode: ${String(trust.finality.mode)}`,\n );\n }\n }\n\n return policy;\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> & {\n rpc: RpcEndpoint[];\n p2p: P2pSeed[];\n explorer: ExplorerEndpoint[];\n receipt_proof_trust?: ReceiptProofTrustPolicy;\n } = {\n rpc: [],\n p2p: [],\n explorer: [],\n };\n let section:\n | \"root\"\n | \"rpc\"\n | \"p2p\"\n | \"explorer\"\n | \"receipt_proof_trust.archive\"\n | \"receipt_proof_trust.archive.signers\"\n | \"receipt_proof_trust.finality\"\n | \"receipt_proof_trust.finality.signers\" = \"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 if (line === \"[receipt_proof_trust.archive]\") {\n section = \"receipt_proof_trust.archive\";\n ensureReceiptProofTrust(info).archive ??= { signature_threshold: 0, signers: [] };\n continue;\n }\n if (line === \"[[receipt_proof_trust.archive.signers]]\") {\n section = \"receipt_proof_trust.archive.signers\";\n const trust = ensureReceiptProofTrust(info);\n trust.archive ??= { signature_threshold: 0, signers: [] };\n trust.archive.signers.push({ public_key: \"\" });\n continue;\n }\n if (line === \"[receipt_proof_trust.finality]\") {\n section = \"receipt_proof_trust.finality\";\n ensureReceiptProofTrust(info).finality ??= {\n mode: \"cluster\",\n threshold: 0,\n };\n continue;\n }\n if (line === \"[[receipt_proof_trust.finality.signers]]\") {\n section = \"receipt_proof_trust.finality.signers\";\n const trust = ensureReceiptProofTrust(info);\n trust.finality ??= {\n mode: \"multisig\",\n threshold: 0,\n signers: [],\n };\n trust.finality.signers ??= [];\n trust.finality.signers.push({ authority_index: 0, public_key: \"\" });\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 if (section === \"rpc\" || section === \"p2p\" || section === \"explorer\") {\n const list = info[section];\n const target = list[list.length - 1] as unknown as Record<string, unknown>;\n target[key] = value;\n } else if (section === \"receipt_proof_trust.archive\") {\n const trust = ensureReceiptProofTrust(info);\n trust.archive ??= { signature_threshold: 0, signers: [] };\n (trust.archive as unknown as Record<string, unknown>)[key] = value;\n } else if (section === \"receipt_proof_trust.archive.signers\") {\n const archive = ensureReceiptProofTrust(info).archive ??= {\n signature_threshold: 0,\n signers: [],\n };\n const target = archive.signers[archive.signers.length - 1] as unknown as Record<\n string,\n unknown\n >;\n target[key] = value;\n } else if (section === \"receipt_proof_trust.finality\") {\n const trust = ensureReceiptProofTrust(info);\n trust.finality ??= { mode: \"cluster\", threshold: 0 };\n (trust.finality as unknown as Record<string, unknown>)[key] = value;\n } else {\n const finality = ensureReceiptProofTrust(info).finality ??= {\n mode: \"multisig\",\n threshold: 0,\n signers: [],\n };\n finality.signers ??= [];\n const target = finality.signers[finality.signers.length - 1] as unknown as Record<\n string,\n unknown\n >;\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 if (info.receipt_proof_trust) {\n out.receipt_proof_trust = normalizeReceiptProofTrust(info.receipt_proof_trust);\n }\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\nfunction ensureReceiptProofTrust(\n info: Partial<ChainInfo> & { receipt_proof_trust?: ReceiptProofTrustPolicy },\n): ReceiptProofTrustPolicy {\n info.receipt_proof_trust ??= {};\n return info.receipt_proof_trust;\n}\n\nfunction normalizeReceiptProofTrust(trust: ReceiptProofTrustPolicy): ReceiptProofTrustPolicy {\n const out: ReceiptProofTrustPolicy = {};\n if (trust.archive == null || trust.finality == null) {\n throw new Error(\"receipt_proof_trust must include both archive and finality policies\");\n }\n if (trust.archive != null) {\n const threshold = assertSafeIntegerAtLeast(\n trust.archive.signature_threshold,\n 1,\n \"receipt_proof_trust.archive.signature_threshold\",\n );\n if (trust.archive.signers.length === 0 || trust.archive.signers.some((s) => !s.public_key)) {\n throw new Error(\"receipt_proof_trust.archive.signers must contain complete signer rows\");\n }\n if (threshold > trust.archive.signers.length) {\n throw new Error(\"receipt_proof_trust.archive.signature_threshold exceeds signer count\");\n }\n assertOptionalRange(\n trust.archive.valid_from_height,\n trust.archive.valid_to_height,\n \"receipt_proof_trust.archive\",\n );\n assertUniqueStrings(\n trust.archive.signers.map((signer) => signer.public_key),\n \"receipt_proof_trust.archive.signers.public_key\",\n );\n assertUniqueStrings(\n trust.archive.signers.flatMap((signer) => (signer.signer_id ? [signer.signer_id] : [])),\n \"receipt_proof_trust.archive.signers.signer_id\",\n );\n out.archive = {\n signature_threshold: threshold,\n valid_from_height: optionalSafeInteger(trust.archive.valid_from_height),\n valid_to_height: optionalSafeInteger(trust.archive.valid_to_height),\n signers: trust.archive.signers.map((signer) => {\n assertOptionalRange(\n signer.valid_from_height,\n signer.valid_to_height,\n \"receipt_proof_trust.archive.signers\",\n );\n return {\n public_key: assertString(\n signer.public_key,\n \"receipt_proof_trust.archive.signers.public_key\",\n ),\n signer_id: optionalString(signer.signer_id),\n valid_from_height: optionalSafeInteger(signer.valid_from_height),\n valid_to_height: optionalSafeInteger(signer.valid_to_height),\n notes: optionalString(signer.notes),\n };\n }),\n };\n }\n if (trust.finality != null) {\n const mode = trust.finality.mode;\n if (mode !== \"cluster\" && mode !== \"multisig\") {\n throw new Error(`unsupported receipt_proof_trust.finality.mode: ${String(mode)}`);\n }\n const finality: ReceiptProofTrustFinalityPolicy = {\n mode,\n chain_id: optionalSafeInteger(trust.finality.chain_id),\n threshold: assertSafeIntegerAtLeast(\n trust.finality.threshold,\n 1,\n \"receipt_proof_trust.finality.threshold\",\n ),\n valid_from_round: optionalSafeInteger(trust.finality.valid_from_round),\n valid_to_round: optionalSafeInteger(trust.finality.valid_to_round),\n };\n assertOptionalRange(\n trust.finality.valid_from_round,\n trust.finality.valid_to_round,\n \"receipt_proof_trust.finality\",\n );\n if (mode === \"cluster\") {\n finality.committee_size = assertSafeIntegerAtLeast(\n trust.finality.committee_size,\n 1,\n \"receipt_proof_trust.finality.committee_size\",\n );\n if (finality.threshold > finality.committee_size) {\n throw new Error(\"receipt_proof_trust.finality.threshold exceeds committee_size\");\n }\n finality.cluster_public_key = assertString(\n trust.finality.cluster_public_key,\n \"receipt_proof_trust.finality.cluster_public_key\",\n );\n if ((trust.finality.signers ?? []).length > 0) {\n throw new Error(\"receipt_proof_trust.finality.signers are invalid in cluster mode\");\n }\n } else {\n const signers = trust.finality.signers ?? [];\n if (signers.length === 0 || signers.some((s) => !s.public_key)) {\n throw new Error(\"receipt_proof_trust.finality.signers must contain complete signer rows\");\n }\n if (finality.threshold > signers.length) {\n throw new Error(\"receipt_proof_trust.finality.threshold exceeds signer count\");\n }\n if (trust.finality.committee_size != null || trust.finality.cluster_public_key != null) {\n throw new Error(\"receipt_proof_trust.finality cluster fields are invalid in multisig mode\");\n }\n assertUniqueNumbers(\n signers.map((signer) => signer.authority_index),\n \"receipt_proof_trust.finality.signers.authority_index\",\n );\n assertUniqueStrings(\n signers.map((signer) => signer.public_key),\n \"receipt_proof_trust.finality.signers.public_key\",\n );\n finality.signers = signers.map((signer) => {\n assertOptionalRange(\n signer.valid_from_round,\n signer.valid_to_round,\n \"receipt_proof_trust.finality.signers\",\n );\n return {\n authority_index: assertSafeIntegerAtLeast(\n signer.authority_index,\n 0,\n \"receipt_proof_trust.finality.signers.authority_index\",\n ),\n public_key: assertString(\n signer.public_key,\n \"receipt_proof_trust.finality.signers.public_key\",\n ),\n valid_from_round: optionalSafeInteger(signer.valid_from_round),\n valid_to_round: optionalSafeInteger(signer.valid_to_round),\n notes: optionalString(signer.notes),\n };\n });\n }\n out.finality = finality;\n }\n return out;\n}\n\nfunction decodeFixedHex(value: string, expectedLength: number, field: string): Uint8Array {\n const bytes = hexToBytes(assertString(value, field), field);\n if (bytes.length !== expectedLength) {\n throw new Error(`${field} must be ${expectedLength} bytes, got ${bytes.length}`);\n }\n return bytes;\n}\n\nfunction assertString(value: unknown, field: string): string {\n if (typeof value !== \"string\" || value.length === 0) {\n throw new Error(`${field} must be a non-empty string`);\n }\n return value;\n}\n\nfunction optionalString(value: unknown): string | undefined {\n return value === undefined ? undefined : assertString(value, \"optional string field\");\n}\n\nfunction optionalSafeInteger(value: unknown): number | undefined {\n if (value === undefined) return undefined;\n if (!Number.isSafeInteger(value) || Number(value) < 0) {\n throw new Error(\"optional integer field must be a non-negative safe integer\");\n }\n return Number(value);\n}\n\nfunction assertSafeIntegerAtLeast(value: unknown, min: number, field: string): number {\n if (!Number.isSafeInteger(value) || Number(value) < min) {\n throw new Error(`${field} must be a safe integer >= ${min}`);\n }\n return Number(value);\n}\n\nfunction assertOptionalRange(from: unknown, to: unknown, field: string): void {\n const start = optionalSafeInteger(from);\n const end = optionalSafeInteger(to);\n if (start != null && end != null && end < start) {\n throw new Error(`${field} valid_to must be >= valid_from`);\n }\n}\n\nfunction assertUniqueStrings(values: readonly string[], field: string): void {\n const seen = new Set<string>();\n for (const value of values) {\n const normalized = assertString(value, field).toLowerCase();\n if (seen.has(normalized)) {\n throw new Error(`${field} values must be unique`);\n }\n seen.add(normalized);\n }\n}\n\nfunction assertUniqueNumbers(values: readonly number[], field: string): void {\n const seen = new Set<number>();\n for (const value of values) {\n const normalized = assertSafeIntegerAtLeast(value, 0, field);\n if (seen.has(normalized)) {\n throw new Error(`${field} values must be unique`);\n }\n seen.add(normalized);\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 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 */\n\nimport {\n requireTypedAddress,\n type AddressKind,\n} from \"./address.js\";\nimport { SdkError } from \"./error.js\";\nimport type {\n BridgeDrainStatus,\n BridgeHealthResponse,\n BridgeRouteDisclosure,\n BridgeRoutesRequest,\n BridgeRoutesResponse,\n} from \"./bridge.js\";\nimport type {\n ClusterDiversityView,\n OperatorNetworkMetadataView,\n} from \"./node-registry.js\";\nimport type {\n OperatorFeeConfig,\n OperatorRouterConfig,\n} from \"./market-actions.js\";\nimport type {\n OracleFeedConfig,\n OracleLatestPrice,\n OracleSignersResponse,\n OracleWriters,\n} from \"./oracle.js\";\nimport type {\n ListProofRequestsResponse,\n ProofRequestView,\n ProverBidsResponse,\n ProverMarketStatusResponse,\n} from \"./prover-market.js\";\nimport type { SpendingPolicyView } from \"./spending-policy.js\";\nimport {\n nativeEventsFromHistory,\n nativeEventsFromReceipt,\n nativeMarketEventsFromHistory,\n nativeMarketEventsFromReceipt,\n} from \"./native-events.js\";\nimport {\n isConcreteServiceProbeStatus,\n isSinglePublicServiceProbeMask,\n isValidPublicServiceProbeMask,\n} from \"./node-registry.js\";\nimport { assertMrvStructuredFeeConformance } from \"./mrv.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 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 MrcAccountRequest,\n MrcAccountResponse,\n MrcHoldersRequest,\n MrcHoldersResponse,\n MrcMetadataResponse,\n PeerSummary,\n PendingRewardsResponse,\n PendingTxSummary,\n PrecompileDescriptor,\n RedemptionQueueResponse,\n RegistryRecord,\n RichListResponse,\n RoundInfo,\n StorageProofBatch,\n SyncStatus,\n TpmAttestationResponse,\n TransactionReceipt,\n TransactionView,\n TokenBalanceMrcIdentity,\n TokenBalanceRecord,\n} from \"./bindings/index.js\";\nimport type { BlockSelector } from \"./types.js\";\nimport { encodeBlockSelector } from \"./types.js\";\nimport type { ApiStreamTopic } from \"./streams.js\";\nimport type {\n NativeDecodedEvent,\n NativeEventFilter,\n TypedNativeReceiptEvent,\n} from \"./native-events.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\n/** Typed user address (`mono1...`) accepted at public SDK boundaries. */\nexport type UserAddressInput = string;\n\nexport interface TxFeedReceipt {\n status: number;\n executionUnitsUsed: 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 /** Native value in lythoshi. The tx-feed wire key is still `value`. */\n value: string;\n executionUnitLimit: number;\n maxExecutionFeeLythoshi: string;\n priorityTipLythoshi: string;\n fee: NativeReceiptFee;\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 ExecutionUnitPriceResponse {\n executionUnitPriceLythoshi: string;\n basePricePerExecutionUnitLythoshi: string;\n priorityTipLythoshi: string;\n blockNumber: number | null;\n source: string;\n}\n\nexport const MAX_NATIVE_RECEIPT_EVENTS = 1_000;\n\nexport interface NativeReceiptCounters {\n cycles: number;\n syscallUnits: number;\n stateIoUnits: number;\n}\n\nexport interface NativeReceiptFee {\n total_lythoshi: string;\n total_lyth?: string;\n cycles_used: number;\n base_price_per_cycle_lythoshi: string;\n state_io_units: number;\n state_io_price_per_unit_lythoshi: string;\n priority_tip_lythoshi: string;\n}\n\nexport interface NativeReceiptEvent<TDecoded = unknown> {\n blockHeight: number;\n txIndex: number;\n logIndex: number;\n address: string;\n eventTopic: string;\n decoded: TDecoded;\n decodedJson: string;\n}\n\nexport interface NativeReceiptSource {\n chainProvider: string;\n indexerProvider: string;\n metadataLogIndex: number;\n}\n\nexport interface NoEvmCompactInclusionProof {\n schema: \"mono.no_evm_receipt_compact_inclusion.v1\";\n treeAlgorithm: \"binary-keccak-receipt-tree\";\n root: string;\n leafHash: string;\n siblingHashes: string[];\n pathSides: boolean[];\n}\n\nexport interface NoEvmArchiveProof {\n schema: \"mono.no_evm_receipt_archive_binding.v1\";\n source: \"indexerReceiptArchiveContentDigest\" | string;\n manifestHash: string;\n contentHash: string;\n signatureDigest?: string | null;\n signatures: string[];\n coveringSnapshot?: NoEvmArchiveCoveringSnapshot | null;\n}\n\nexport interface NoEvmArchiveCoveringSnapshot {\n snapshotHeight: number;\n manifestHash: string;\n signatureDigest: string;\n contentHash: string;\n checkpointContentHash: string;\n checkpointFrom: number;\n checkpointTo: number;\n signatures: string[];\n}\n\nexport interface NoEvmFinalityCertificate {\n round: number;\n signature: string;\n signersBitmap: string;\n signerIndices: number[];\n signerCount: number;\n}\n\nexport interface NoEvmFinalityBlockReference {\n round: number;\n authority: number;\n digest: string;\n}\n\nexport interface NoEvmFinalityEvidence {\n schema: \"mono.no_evm_receipt_finality.v1\";\n source: \"blsRoundCertificate\" | string;\n round: number;\n certificate: NoEvmFinalityCertificate;\n blockReference?: NoEvmFinalityBlockReference | null;\n leaderCertificate?: NoEvmFinalityCertificate | null;\n dacCertificate?: NoEvmFinalityCertificate | null;\n}\n\ninterface NoEvmReceiptProofBase {\n schema: \"mono.no_evm_receipt_proof.v1\";\n rootAlgorithm: string;\n receiptCodec: \"bincode(protocore_execution_types::Receipt)\";\n blockHash: string;\n txHash: string;\n receiptsRoot: string;\n targetReceiptHash: string;\n blockHeight: number;\n txIndex: number;\n receiptCount: number;\n finalityEvidence?: NoEvmFinalityEvidence | null;\n}\n\nexport interface NoEvmBoundedReceiptProof extends NoEvmReceiptProofBase {\n proofKind?: \"boundedCacheTranscript\";\n proofType: \"canonicalReceiptsTranscript\";\n historySource?: \"legacyUnspecified\" | \"liveBlockCache\";\n compactInclusionProof?: null;\n archiveProof?: null;\n missingProofMaterial?: string[];\n receiptTranscript: string[];\n}\n\nexport interface NoEvmCompactReceiptProof extends NoEvmReceiptProofBase {\n proofKind: \"compactInclusion\";\n proofType: \"canonicalReceiptInclusion\";\n historySource: \"liveBlockCache\" | \"indexerReceiptArchive\";\n compactInclusionProof: NoEvmCompactInclusionProof;\n archiveProof?: NoEvmArchiveProof | null;\n missingProofMaterial?: string[];\n targetReceiptBytes: string;\n receiptTranscript?: string[];\n}\n\nexport type NoEvmReceiptProof = NoEvmBoundedReceiptProof | NoEvmCompactReceiptProof;\n\nexport interface NativeReceiptResponse<TDecoded = unknown> {\n txHash: string;\n blockHash: string;\n blockHeight: number;\n txIndex: number;\n schema: string;\n artifactHash: string;\n receiptCommitment: string;\n /** Current nodes may return `null`; older nodes may omit the field. */\n noEvmProof?: NoEvmReceiptProof | null;\n counters: NativeReceiptCounters;\n fee: NativeReceiptFee;\n reverted: boolean;\n nativeDeltaCount: number;\n eventCount: number;\n events: Array<NativeReceiptEvent<TDecoded>>;\n source: NativeReceiptSource;\n}\n\n/** Filter object passed to `lyth_nativeEvents` and `/api/v1/native-events`. */\nexport interface NativeEventsFilter {\n fromBlock: number | bigint | string;\n toBlock: number | bigint | string;\n limit?: number | bigint | string | null;\n txIndex?: number | bigint | string | null;\n logIndex?: number | bigint | string | null;\n address?: string | null;\n eventTopic?: string | null;\n family?: string | null;\n eventName?: string | null;\n primaryId?: string | null;\n relatedId?: string | null;\n tokenId?: string | null;\n account?: string | null;\n counterparty?: string | null;\n}\n\nexport interface NativeEventsResponseFilters {\n txIndex?: number | null;\n logIndex?: number | null;\n address?: string | null;\n eventTopic?: string | null;\n family?: string | null;\n eventName?: string | null;\n primaryId?: string | null;\n relatedId?: string | null;\n tokenId?: string | null;\n account?: string | null;\n counterparty?: string | null;\n}\n\nexport interface NativeEventsSource {\n indexerProvider: string;\n}\n\nexport interface NativeEventsResponse<TDecoded = unknown> {\n schemaVersion: number;\n fromBlock: number;\n toBlock: number;\n limit: number;\n filters: NativeEventsResponseFilters;\n events: Array<NativeReceiptEvent<TDecoded>>;\n source: NativeEventsSource;\n}\n\n/** Filter object passed to `lyth_nativeAgentState` and `/api/v1/native-agent-state`. */\nexport interface NativeAgentStateFilter {\n policyId?: string | null;\n escrowId?: string | null;\n account?: string | null;\n includePolicySpends?: boolean | null;\n limit?: number | bigint | string | null;\n}\n\nexport interface NativeAgentStateResponseFilters {\n policyId?: string | null;\n escrowId?: string | null;\n account?: string | null;\n includePolicySpends: boolean;\n}\n\nexport interface NativeAgentStateSource {\n indexerProvider: string;\n projection: string;\n}\n\nexport interface NativeAgentPolicyStateRecord {\n policyId: string;\n owner: string;\n controller: string;\n assetId: string;\n /** Owner/controller-local policy nonce; omitted by older nodes. */\n nonce?: number | null;\n enabled: boolean;\n perActionLimit: string;\n windowLimit: string;\n windowSecs: number;\n updatedAtBlock: number;\n}\n\nexport interface NativeAgentPolicySpendStateRecord {\n policyId: string;\n controller: string;\n assetId: string;\n window: number;\n amount: string;\n spent: string;\n updatedAtBlock: number;\n}\n\nexport interface NativeAgentEscrowStateRecord {\n escrowId: string;\n buyer: string;\n provider: string;\n arbiter: string;\n assetId: string;\n /** Buyer-local escrow nonce; omitted by older nodes. */\n nonce?: number | null;\n amount: string;\n termsHash: string;\n round: number;\n buyerAccepted: boolean;\n providerAccepted: boolean;\n submittedPayloadHash?: string | null;\n status: string;\n resolution?: string | null;\n lastActor?: string | null;\n createdAtBlock: number;\n updatedAtBlock: number;\n}\n\nexport interface NativeAgentIssuerStateRecord {\n issuerId: string;\n issuer: string;\n /** Issuer-local nonce; omitted by older nodes. */\n nonce?: number | null;\n metadataHash?: string | null;\n updatedAtBlock: number;\n}\n\nexport interface NativeAgentAttestationStateRecord {\n attestationId: string;\n /** Issuer-local attestation nonce; omitted by older nodes. */\n nonce?: number | null;\n issuerId?: string | null;\n issuer?: string | null;\n subject: string;\n schemaHash?: string | null;\n payloadHash?: string | null;\n active: boolean;\n updatedAtBlock: number;\n}\n\nexport interface NativeAgentConsentStateRecord {\n consentId: string;\n subject: string;\n grantee: string;\n /** Subject-local consent nonce; omitted by older nodes. */\n nonce?: number | null;\n scopeHash?: string | null;\n expiresAt?: number | null;\n active: boolean;\n updatedAtBlock: number;\n}\n\nexport interface NativeAgentServiceStateRecord {\n serviceId: string;\n provider: string;\n /** Provider-local service nonce; omitted by older nodes. */\n nonce?: number | null;\n categoryHash?: string | null;\n metadataHash?: string | null;\n active: boolean;\n updatedAtBlock: number;\n}\n\nexport interface NativeAgentAvailabilityStateRecord {\n provider: string;\n maxConcurrent: number;\n openRequests: number;\n paused: boolean;\n updatedAtBlock: number;\n}\n\nexport interface NativeAgentArbiterStateRecord {\n arbiterId: string;\n arbiter: string;\n /** Arbiter-local registration nonce; omitted by older nodes. */\n nonce?: number | null;\n tier?: number | null;\n metadataHash?: string | null;\n updatedAtBlock: number;\n}\n\nexport interface NativeAgentReputationReviewStateRecord {\n reviewId: string;\n reviewer: string;\n subject: string;\n categoryId: number;\n speedScore: number;\n qualityScore: number;\n communicationScore: number;\n accuracyScore: number;\n payloadHash?: string | null;\n updatedAtBlock: number;\n}\n\nexport interface NativeAgentStateResponse {\n schemaVersion: number;\n limit: number;\n filters: NativeAgentStateResponseFilters;\n issuers: NativeAgentIssuerStateRecord[];\n attestations: NativeAgentAttestationStateRecord[];\n consents: NativeAgentConsentStateRecord[];\n services: NativeAgentServiceStateRecord[];\n availability: NativeAgentAvailabilityStateRecord[];\n arbiters: NativeAgentArbiterStateRecord[];\n reputationReviews: NativeAgentReputationReviewStateRecord[];\n spendingPolicies: NativeAgentPolicyStateRecord[];\n policySpends: NativeAgentPolicySpendStateRecord[];\n escrows: NativeAgentEscrowStateRecord[];\n source: NativeAgentStateSource;\n}\n\nexport type NativeAgentStateFilterParamValue = string | number | boolean;\n\n/** Filter object passed to `lyth_nativeMarketState` and `/api/v1/native-market-state`. */\nexport interface NativeMarketStateFilter {\n marketId?: string | null;\n orderId?: string | null;\n listingId?: string | null;\n collectionId?: string | null;\n account?: string | null;\n includeSpotOrders?: boolean | null;\n limit?: number | bigint | string | null;\n}\n\nexport interface NativeMarketStateResponseFilters {\n marketId?: string | null;\n orderId?: string | null;\n listingId?: string | null;\n collectionId?: string | null;\n account?: string | null;\n includeSpotOrders: boolean;\n}\n\nexport interface NativeMarketStateSource {\n indexerProvider: string;\n projection: string;\n}\n\nexport interface NativeSpotMarketStateRecord {\n marketId: string;\n owner: string;\n baseAssetId: string;\n quoteAssetId: string;\n tickSize: string;\n lotSize: string;\n minQuantity: string;\n minNotional: string;\n tradeCount: string;\n totalVolumeBase: string;\n lastPrice: string | null;\n lastBlockHeight: number | null;\n createdAtBlock: number;\n updatedAtBlock: number;\n}\n\nexport interface NativeSpotOrderStateRecord {\n orderId: string;\n marketId: string;\n owner: string;\n /** Owner-local spot order nonce; omitted by older nodes. */\n nonce?: number | null;\n side: string;\n price: string;\n quantity: string;\n remaining: string;\n status: string;\n expiresAtBlock: number;\n updatedAtBlock: number;\n}\n\nexport interface NativeNftListingStateRecord {\n listingId: string;\n seller: string;\n /** Seller-local NFT listing nonce; omitted by older nodes. */\n nonce?: number | null;\n standard: string;\n collectionId: string;\n tokenId: string;\n quantity: string;\n paymentAssetId: string;\n price: string;\n listingKind: unknown;\n status: string;\n expiresAtBlock: number;\n highestBidder: string | null;\n highestBid: string | null;\n updatedAtBlock: number;\n}\n\nexport interface NativeCollectionRoyaltyStateRecord {\n collectionId: string;\n creator: string | null;\n recipient: string;\n bps: number;\n updatedAtBlock: number;\n}\n\nexport interface NativeMarketStateResponse {\n schemaVersion: number;\n limit: number;\n filters: NativeMarketStateResponseFilters;\n spotMarkets: NativeSpotMarketStateRecord[];\n spotOrders: NativeSpotOrderStateRecord[];\n nftListings: NativeNftListingStateRecord[];\n collectionRoyalties: NativeCollectionRoyaltyStateRecord[];\n source: NativeMarketStateSource;\n}\n\nexport type NativeMarketStateFilterParamValue = string | number | boolean;\n\nexport type AgentReputationCategoryScope = \"global\" | \"category\";\n\nexport interface AgentReputationRecord {\n provider: string;\n categoryId: number;\n blockHeight: number;\n speedSumX10: number;\n qualitySumX10: number;\n communicationSumX10: number;\n accuracySumX10: number;\n sampleCount: number;\n avgSpeedX10: number;\n avgQualityX10: number;\n avgCommunicationX10: number;\n avgAccuracyX10: number;\n}\n\nexport interface AgentReputationResponse {\n schemaVersion: 1;\n provider: string;\n categoryId: number;\n categoryScope: AgentReputationCategoryScope;\n record: AgentReputationRecord | null;\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 mrc?: TokenBalanceMrcIdentity | null;\n }>;\n bridgeRouteDisclosures?: BridgeRouteDisclosure[] | null;\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\";\nconst ETH_COMPAT_RPC_PREFIX = \"eth_\";\nconst ethCompatMethod = (name: string): string => `${ETH_COMPAT_RPC_PREFIX}${name}`;\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 /** Compatibility block-height read. */\n async ethBlockNumber(): Promise<bigint> {\n return parseQuantityBig(await this.call<string>(ethCompatMethod(\"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 /** Compatibility block-header read by height/tag. */\n async ethGetBlockByNumber(\n block: BlockSelector = \"latest\",\n ): Promise<BlockHeader | null> {\n return normalizeBlockHeader(await this.call(ethCompatMethod(\"getBlockByNumber\"), [encodeBlockSelector(block)]));\n }\n\n /** Compatibility block-header read by hash. */\n async ethGetBlockByHash(hash: string): Promise<BlockHeader | null> {\n return normalizeBlockHeader(await this.call(ethCompatMethod(\"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 normalizeTransactionReceipt(await this.call(\"eth_getTransactionReceipt\", [txHash]));\n }\n\n /**\n * `eth_gasPrice` — passive compatibility fee quote for EVM-shaped read\n * tooling. Native callers should prefer `lythExecutionUnitPrice`.\n */\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_* 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\", [sdkTypedAddress(address, \"user\", \"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\", [sdkTypedAddress(address, \"user\", \"address\")]);\n }\n\n /** `lyth_bridgeRoutes` — read-only bridge route-selection/readiness. */\n async lythBridgeRoutes(request: BridgeRoutesRequest): Promise<BridgeRoutesResponse> {\n return this.call(\"lyth_bridgeRoutes\", [request]);\n }\n\n /** `lyth_mrcMetadata` — exact current-state native MRC metadata lookup. */\n async lythMrcMetadata(\n assetId: string,\n tokenId?: string | null,\n ): Promise<MrcMetadataResponse> {\n const params = tokenId == null ? [assetId] : [assetId, tokenId];\n return this.call(\"lyth_mrcMetadata\", params);\n }\n\n /** `lyth_mrcAccount` — exact current-state native MRC account lookup. */\n async lythMrcAccount(\n account: string,\n spendLimit?: number | null,\n ): Promise<MrcAccountResponse> {\n const request: MrcAccountRequest = {\n account: sdkTypedAddress(account, \"smartAccount\", \"account\"),\n };\n if (spendLimit != null) request.spendLimit = spendLimit;\n const params =\n request.spendLimit == null\n ? [request.account]\n : [request.account, request.spendLimit];\n return this.call(\"lyth_mrcAccount\", params);\n }\n\n /** `lyth_mrcHolders` — top holders for a native MRC asset/token key. */\n async lythMrcHolders(\n standard: string,\n assetId: string,\n tokenId: string,\n limit?: number | null,\n ): Promise<MrcHoldersResponse> {\n return this.lythMrcHoldersScoped(standard, assetId, tokenId, limit);\n }\n\n /**\n * `lyth_mrcHolders` — top holders for a native MRC asset/vault key.\n *\n * This is the asset-scoped form used by MRC-4626 vault share balances.\n */\n async lythMrcAssetHolders(\n standard: string,\n assetId: string,\n limit?: number | null,\n ): Promise<MrcHoldersResponse> {\n return this.lythMrcHoldersScoped(standard, assetId, null, limit);\n }\n\n /** `lyth_mrcHolders` — top holders for MRC-4626 vault shares. */\n async lythMrc4626Holders(\n vaultId: string,\n limit?: number | null,\n ): Promise<MrcHoldersResponse> {\n return this.lythMrcAssetHolders(\"mrc4626\", vaultId, limit);\n }\n\n private async lythMrcHoldersScoped(\n standard: string,\n assetId: string,\n tokenId: string | null,\n limit?: number | null,\n ): Promise<MrcHoldersResponse> {\n const request: MrcHoldersRequest = {\n standard,\n assetId,\n tokenId,\n };\n if (limit != null) request.limit = limit;\n const params =\n request.limit == null\n ? [request.standard, request.assetId, request.tokenId]\n : [request.standard, request.assetId, request.tokenId, request.limit];\n return this.call(\"lyth_mrcHolders\", params);\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\", [\n sdkTypedAddress(address, \"user\", \"address\"),\n ]);\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 userAddress = sdkTypedAddress(address, \"user\", \"address\");\n const params = cursor === undefined ? [userAddress, limit] : [userAddress, 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\", [sdkTypedAddress(address, \"user\", \"address\")]);\n }\n\n /** `lyth_agentReputation` — reputation accumulators for an agent provider. */\n async lythAgentReputation(\n provider: UserAddressInput,\n categoryId = 0,\n ): Promise<AgentReputationResponse> {\n return this.call(\"lyth_agentReputation\", [\n sdkTypedAddress(provider, \"user\", \"provider address\"),\n categoryId,\n ]);\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_nativeReceipt` — native RISC-V receipt metadata and typed native event rows. */\n async lythNativeReceipt<TDecoded = unknown>(\n txHash: string,\n ): Promise<NativeReceiptResponse<TDecoded>> {\n return decodeNativeReceiptResponse<TDecoded>(\n await this.call<unknown>(\"lyth_nativeReceipt\", [txHash]),\n );\n }\n\n /**\n * Typed native event rows from `lyth_nativeReceipt`.\n *\n * This helper intentionally consumes the existing receipt RPC surface;\n * it does not require a separate `lyth_nativeEvents` node method.\n */\n async lythNativeReceiptEvents<TDecoded extends NativeDecodedEvent = NativeDecodedEvent>(\n txHash: string,\n filter: NativeEventFilter = {},\n ): Promise<Array<TypedNativeReceiptEvent<TDecoded>>> {\n const receipt = await this.lythNativeReceipt(txHash);\n return nativeEventsFromReceipt<TDecoded>(receipt, filter);\n }\n\n /** Typed native market event rows from `lyth_nativeReceipt`. */\n async lythNativeReceiptMarketEvents<TDecoded extends NativeDecodedEvent = NativeDecodedEvent>(\n txHash: string,\n filter: NativeEventFilter = {},\n ): Promise<Array<TypedNativeReceiptEvent<TDecoded>>> {\n const receipt = await this.lythNativeReceipt(txHash);\n return nativeMarketEventsFromReceipt<TDecoded>(receipt, filter);\n }\n\n /** `lyth_nativeEvents` — historical indexed native event rows. */\n async lythNativeEvents<TDecoded = unknown>(\n filter: NativeEventsFilter,\n ): Promise<NativeEventsResponse<TDecoded>> {\n return this.call(\"lyth_nativeEvents\", [nativeEventsFilterParams(filter)]);\n }\n\n /** `lyth_nativeEvents` with decoded rows converted into a caller-selected type. */\n async lythNativeEventsTyped<\n TDecoded extends NativeDecodedEvent = NativeDecodedEvent,\n >(filter: NativeEventsFilter): Promise<NativeEventsResponse<TDecoded>> {\n const response = await this.lythNativeEvents(filter);\n return nativeEventsFromHistory<TDecoded>(response);\n }\n\n /** `lyth_nativeEvents` restricted to native marketplace event rows. */\n async lythNativeMarketEvents<TDecoded = unknown>(\n filter: NativeEventsFilter,\n ): Promise<NativeEventsResponse<TDecoded>> {\n return this.lythNativeEvents<TDecoded>({\n ...filter,\n family: \"market\",\n });\n }\n\n /** `lyth_nativeEvents` market rows with decoded rows converted into a caller-selected type. */\n async lythNativeMarketEventsTyped<\n TDecoded extends NativeDecodedEvent = NativeDecodedEvent,\n >(filter: NativeEventsFilter): Promise<NativeEventsResponse<TDecoded>> {\n const response = await this.lythNativeEvents({\n ...filter,\n family: \"market\",\n });\n return nativeMarketEventsFromHistory<TDecoded>(response);\n }\n\n /** `lyth_nativeAgentState` — current-state native agent policy and escrow rows. */\n async lythNativeAgentState(\n filter: NativeAgentStateFilter = {},\n ): Promise<NativeAgentStateResponse> {\n const response = await this.call(\"lyth_nativeAgentState\", [\n nativeAgentStateFilterParams(filter),\n ]);\n return decodeNativeAgentStateResponse(response);\n }\n\n /** `lyth_nativeMarketState` — current-state native spot and NFT market rows. */\n async lythNativeMarketState(\n filter: NativeMarketStateFilter = {},\n ): Promise<NativeMarketStateResponse> {\n return this.call(\"lyth_nativeMarketState\", [nativeMarketStateFilterParams(filter)]);\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 decodeTxFeedResponse(await this.call<unknown>(\"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\", [sdkTypedAddress(address, \"user\", \"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\", [sdkTypedAddress(address, \"user\", \"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\", [sdkTypedAddress(sender, \"user\", \"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_getTransactionCount` — native sender nonce. */\n async lythGetTransactionCount(address: string): Promise<bigint> {\n return parseRpcBigint(\n await this.call<unknown>(\"lyth_getTransactionCount\", [\n sdkTypedAddress(address, \"user\", \"address\"),\n ]),\n \"lyth_getTransactionCount\",\n );\n }\n\n /** `lyth_executionUnitPrice` — native execution-unit price in lythoshi. */\n async lythExecutionUnitPrice(): Promise<ExecutionUnitPriceResponse> {\n return normalizeExecutionUnitPriceResponse(\n await this.call<unknown>(\"lyth_executionUnitPrice\", []),\n );\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 /** `lyth_listActivePrecompiles` — native precompile catalogue. */\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 normalizeCapabilitiesResponse(\n await this.call<CapabilitiesResponse>(\"lyth_capabilities\", params),\n );\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 userWallet = sdkTypedAddress(wallet, \"user\", \"wallet\");\n const params =\n block === undefined ? [userWallet] : [userWallet, encodeBlockSelector(block)];\n return this.call(\"lyth_getDelegations\", params);\n }\n\n /** `lyth_pendingRewards` — wallet pending rewards at a block. */\n async lythPendingRewards(\n wallet: string,\n block?: BlockSelector,\n ): Promise<PendingRewardsResponse> {\n const userWallet = sdkTypedAddress(wallet, \"user\", \"wallet\");\n const params =\n block === undefined ? [userWallet] : [userWallet, encodeBlockSelector(block)];\n return this.call(\"lyth_pendingRewards\", params);\n }\n\n /** `lyth_redemptionQueue` — wallet redemption tickets at a block. */\n async lythRedemptionQueue(\n wallet: string,\n block?: BlockSelector,\n ): Promise<RedemptionQueueResponse> {\n const userWallet = sdkTypedAddress(wallet, \"user\", \"wallet\");\n const params =\n block === undefined ? [userWallet] : [userWallet, encodeBlockSelector(block)];\n return this.call(\"lyth_redemptionQueue\", 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 userWallet = sdkTypedAddress(wallet, \"user\", \"wallet\");\n const params = cursor === undefined ? [userWallet, limit] : [userWallet, 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 // --- PF-4 / PF-6 / MB-6 / MB-4 / MB-2 + operator-router read wrappers ----\n //\n // Reconciled against the FINAL mono-core RPC surface (master 2eff9fed):\n // every method name + response shape below matches the chain's `lyth_*`\n // dispatch + impls exactly (camelCase keys, 0x-hex uint256 amounts,\n // bech32m addresses). The three indexer-backed methods —\n // `lyth_oracleSigners`, `lyth_listProofRequests`, `lyth_proverMarketStatus`\n // — return a graceful `{ status: \"indexer_unavailable\", … }` envelope\n // when the node runs without its indexer projection.\n\n /** PF-4 — `lyth_getSpendingPolicy`: the §18.8 spending-policy view for a sub-account. */\n async lythGetSpendingPolicy(subAccount: string): Promise<SpendingPolicyView> {\n return this.call(\"lyth_getSpendingPolicy\", [sdkTypedAddress(subAccount, \"user\", \"subAccount\")]);\n }\n\n /** PF-6 — `lyth_getClusterDiversity`: diversity score + asn/geo/hosting breakdown. */\n async lythGetClusterDiversity(clusterId: number): Promise<ClusterDiversityView> {\n return this.call(\"lyth_getClusterDiversity\", [clusterId]);\n }\n\n /**\n * PF-6 — `lyth_getOperatorNetworkMetadata`: ASN/geo/hosting-class/IP/PCR\n * for a peer. `operatorId` is the 32-byte operator/peer id as `0x…` hex\n * (the form `lyth_operatorInfo` returns).\n */\n async lythGetOperatorNetworkMetadata(operatorId: string): Promise<OperatorNetworkMetadataView> {\n return this.call(\"lyth_getOperatorNetworkMetadata\", [operatorId]);\n }\n\n /**\n * MB-6 — `lyth_oracleSigners`: the global oracle writer roster (folded\n * from `OracleWriterAdded` / `OracleWriterRemoved`). Returns the\n * `{ status: \"indexer_unavailable\", writers: [] }` fallback when the\n * node runs without the oracle writer-roster indexer projection.\n */\n async lythOracleSigners(): Promise<OracleSignersResponse> {\n return this.call(\"lyth_oracleSigners\", []);\n }\n\n /** MB-6 — `lyth_oracleWriters`: the allowed writer set for a feed. */\n async lythOracleWriters(feedId: string): Promise<OracleWriters> {\n return this.call(\"lyth_oracleWriters\", [feedId]);\n }\n\n /** MB-6 — `lyth_oracleLatestPrice`: the latest finalized median for a feed. */\n async lythOracleLatestPrice(feedId: string): Promise<OracleLatestPrice> {\n return this.call(\"lyth_oracleLatestPrice\", [feedId]);\n }\n\n /** MB-6 — `lyth_oracleFeedConfig`: a feed's decimals / min-signers / circuit-breaker config. */\n async lythOracleFeedConfig(feedId: string): Promise<OracleFeedConfig> {\n return this.call(\"lyth_oracleFeedConfig\", [feedId]);\n }\n\n /** MB-4 — `lyth_getProofRequest`: a single GPU prover-market proof request. */\n async lythGetProofRequest(requestId: string): Promise<ProofRequestView> {\n return this.call(\"lyth_getProofRequest\", [requestId]);\n }\n\n /**\n * MB-4 — `lyth_listProofRequests`: open/recent prover-market proof\n * requests. Params are `[stateFilter?, limit?]` (the chain's order),\n * where `stateFilter` is one of `open|assigned|settled|slashed|expired`.\n * Returns the `{ status: \"indexer_unavailable\", requests: [] }` fallback\n * when the node runs without the prover-market indexer projection.\n */\n async lythListProofRequests(\n stateFilter?: string | null,\n limit?: number,\n ): Promise<ListProofRequestsResponse> {\n const params: unknown[] = [];\n if (stateFilter != null || limit != null) params.push(stateFilter ?? null);\n if (limit != null) params.push(limit);\n return this.call(\"lyth_listProofRequests\", params);\n }\n\n /** MB-4 — `lyth_getProverBids`: the fee bids placed on one proof request. */\n async lythGetProverBids(requestId: string): Promise<ProverBidsResponse> {\n return this.call(\"lyth_getProverBids\", [requestId]);\n }\n\n /**\n * MB-4 — `lyth_proverMarketStatus`: prover-market summary. `feeFloor` is\n * always present (on-chain genesis singleton); the aggregate counts are\n * `null` on the `{ status: \"indexer_unavailable\" }` fallback path.\n */\n async lythProverMarketStatus(): Promise<ProverMarketStatusResponse> {\n return this.call(\"lyth_proverMarketStatus\", []);\n }\n\n /**\n * Operator-router — `lyth_operatorRouterConfig`: the router's static\n * posture (`0x100B` address, the protocol fee ceiling, and whether the\n * gateable router precompile is currently milestone-activated).\n */\n async lythOperatorRouterConfig(): Promise<OperatorRouterConfig> {\n return this.call(\"lyth_operatorRouterConfig\", []);\n }\n\n /**\n * Operator-router — `lyth_operatorFeeConfig`: one operator's fee\n * registration (recipient, fee bps, enabled flag, registered-at block).\n * `operator` is a `mono` bech32m user address.\n */\n async lythOperatorFeeConfig(operator: string): Promise<OperatorFeeConfig> {\n return this.call(\"lyth_operatorFeeConfig\", [sdkTypedAddress(operator, \"user\", \"operator\")]);\n }\n\n /**\n * MB-2 — `lyth_bridgeHealth`: a paged set of bridge-record health\n * envelopes. Each record carries the circuit-breaker posture\n * (`defaultDrainCapPerWindow`, `defaultDrainWindowBlocks`, `paused`,\n * `pausedAtBlock`, `resumeCooldownBlocks`). Params are `[cursor?, limit?]`\n * (the chain pages the global bridge set; there is no single-bridge form).\n */\n async lythBridgeHealth(cursor?: string | null, limit?: number): Promise<BridgeHealthResponse> {\n const params: unknown[] = [];\n if (cursor != null || limit != null) params.push(cursor ?? null);\n if (limit != null) params.push(limit);\n return this.call(\"lyth_bridgeHealth\", params);\n }\n\n /**\n * MB-2 — `lyth_bridgeDrainStatus`: the live per-route circuit-breaker\n * drain bucket for one `(bridgeId, wrappedAsset)` route. `bridgeId` is a\n * 32-byte `0x…` hex id; `wrappedAsset` is a `mono` bech32m user address.\n */\n async lythBridgeDrainStatus(bridgeId: string, wrappedAsset: string): Promise<BridgeDrainStatus> {\n return this.call(\"lyth_bridgeDrainStatus\", [\n bridgeId,\n sdkTypedAddress(wrappedAsset, \"user\", \"wrappedAsset\"),\n ]);\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: ApiStreamTopic | (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` — legacy compatibility trace for a confirmed tx. */\n async debugTraceTransaction(txHash: string): Promise<unknown> {\n return this.call(\"debug_traceTransaction\", [txHash]);\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\nexport function nativeEventsFilterParams(filter: NativeEventsFilter): Record<string, unknown> {\n return {\n fromBlock: encodeRpcU64Number(filter.fromBlock, \"fromBlock\"),\n toBlock: encodeRpcU64Number(filter.toBlock, \"toBlock\"),\n ...optionalRpcNumber(\"limit\", filter.limit),\n ...optionalRpcNumber(\"txIndex\", filter.txIndex),\n ...optionalRpcNumber(\"logIndex\", filter.logIndex),\n ...optionalString(\"address\", filter.address),\n ...optionalString(\"eventTopic\", filter.eventTopic),\n ...optionalString(\"family\", filter.family),\n ...optionalString(\"eventName\", filter.eventName),\n ...optionalString(\"primaryId\", filter.primaryId),\n ...optionalString(\"relatedId\", filter.relatedId),\n ...optionalString(\"tokenId\", filter.tokenId),\n ...optionalString(\"account\", filter.account),\n ...optionalString(\"counterparty\", filter.counterparty),\n };\n}\n\nfunction optionalRpcNumber(\n key: string,\n value: number | bigint | string | null | undefined,\n): Record<string, number> {\n return value == null ? {} : { [key]: encodeRpcU64Number(value, key) };\n}\n\nfunction optionalString(key: string, value: string | null | undefined): Record<string, string> {\n return value == null ? {} : { [key]: value };\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 parseStringField(value: unknown, label: string): string {\n if (value === null || value === undefined) {\n throw SdkError.malformed(`${label} is missing`);\n }\n return String(value);\n}\n\nfunction parseBooleanField(value: unknown, label: string): boolean {\n if (typeof value !== \"boolean\") {\n throw SdkError.malformed(`${label} must be a boolean`);\n }\n return value;\n}\n\nfunction parseRpcUint(value: unknown, label: string, max: number, typeName: string): number {\n const parsed = parseRpcNumber(value, label);\n if (parsed > max) {\n throw SdkError.malformed(`${label} must be a ${typeName}`);\n }\n return parsed;\n}\n\nfunction parseRpcUintNullable(\n value: unknown,\n label: string,\n max: number,\n typeName: string,\n): number | null {\n return value === null || value === undefined ? null : parseRpcUint(value, label, max, typeName);\n}\n\nfunction decodeNativeAgentStateArray<T>(\n row: Record<string, unknown>,\n key: string,\n decode: (value: unknown, label: string) => T,\n defaultMissing: boolean,\n): T[] {\n const value = row[key];\n if (value === undefined && defaultMissing) return [];\n if (!Array.isArray(value)) {\n throw SdkError.malformed(`native agent state ${key} must be an array`);\n }\n return value.map((item, index) => decode(item, `native agent state ${key}[${index}]`));\n}\n\nfunction decodeNativeAgentExistingStateRecord<T>(value: unknown, label: string): T {\n return expectObject(value, label) as unknown as T;\n}\n\nfunction decodeNativeAgentIssuerStateRecord(\n value: unknown,\n label: string,\n): NativeAgentIssuerStateRecord {\n const row = expectObject(value, label);\n return {\n issuerId: parseStringField(row[\"issuerId\"], `${label}.issuerId`),\n issuer: parseStringField(row[\"issuer\"], `${label}.issuer`),\n nonce: parseRpcNumberNullable(row[\"nonce\"], `${label}.nonce`),\n metadataHash: parseStringNullable(row[\"metadataHash\"]),\n updatedAtBlock: parseRpcNumber(row[\"updatedAtBlock\"], `${label}.updatedAtBlock`),\n };\n}\n\nfunction decodeNativeAgentAttestationStateRecord(\n value: unknown,\n label: string,\n): NativeAgentAttestationStateRecord {\n const row = expectObject(value, label);\n return {\n attestationId: parseStringField(row[\"attestationId\"], `${label}.attestationId`),\n nonce: parseRpcNumberNullable(row[\"nonce\"], `${label}.nonce`),\n issuerId: parseStringNullable(row[\"issuerId\"]),\n issuer: parseStringNullable(row[\"issuer\"]),\n subject: parseStringField(row[\"subject\"], `${label}.subject`),\n schemaHash: parseStringNullable(row[\"schemaHash\"]),\n payloadHash: parseStringNullable(row[\"payloadHash\"]),\n active: parseBooleanField(row[\"active\"], `${label}.active`),\n updatedAtBlock: parseRpcNumber(row[\"updatedAtBlock\"], `${label}.updatedAtBlock`),\n };\n}\n\nfunction decodeNativeAgentConsentStateRecord(\n value: unknown,\n label: string,\n): NativeAgentConsentStateRecord {\n const row = expectObject(value, label);\n return {\n consentId: parseStringField(row[\"consentId\"], `${label}.consentId`),\n subject: parseStringField(row[\"subject\"], `${label}.subject`),\n grantee: parseStringField(row[\"grantee\"], `${label}.grantee`),\n nonce: parseRpcNumberNullable(row[\"nonce\"], `${label}.nonce`),\n scopeHash: parseStringNullable(row[\"scopeHash\"]),\n expiresAt: parseRpcNumberNullable(row[\"expiresAt\"], `${label}.expiresAt`),\n active: parseBooleanField(row[\"active\"], `${label}.active`),\n updatedAtBlock: parseRpcNumber(row[\"updatedAtBlock\"], `${label}.updatedAtBlock`),\n };\n}\n\nfunction decodeNativeAgentServiceStateRecord(\n value: unknown,\n label: string,\n): NativeAgentServiceStateRecord {\n const row = expectObject(value, label);\n return {\n serviceId: parseStringField(row[\"serviceId\"], `${label}.serviceId`),\n provider: parseStringField(row[\"provider\"], `${label}.provider`),\n nonce: parseRpcNumberNullable(row[\"nonce\"], `${label}.nonce`),\n categoryHash: parseStringNullable(row[\"categoryHash\"]),\n metadataHash: parseStringNullable(row[\"metadataHash\"]),\n active: parseBooleanField(row[\"active\"], `${label}.active`),\n updatedAtBlock: parseRpcNumber(row[\"updatedAtBlock\"], `${label}.updatedAtBlock`),\n };\n}\n\nfunction decodeNativeAgentAvailabilityStateRecord(\n value: unknown,\n label: string,\n): NativeAgentAvailabilityStateRecord {\n const row = expectObject(value, label);\n return {\n provider: parseStringField(row[\"provider\"], `${label}.provider`),\n maxConcurrent: parseRpcUint(row[\"maxConcurrent\"], `${label}.maxConcurrent`, 0xffffffff, \"uint32\"),\n openRequests: parseRpcUint(row[\"openRequests\"], `${label}.openRequests`, 0xffffffff, \"uint32\"),\n paused: parseBooleanField(row[\"paused\"], `${label}.paused`),\n updatedAtBlock: parseRpcNumber(row[\"updatedAtBlock\"], `${label}.updatedAtBlock`),\n };\n}\n\nfunction decodeNativeAgentArbiterStateRecord(\n value: unknown,\n label: string,\n): NativeAgentArbiterStateRecord {\n const row = expectObject(value, label);\n return {\n arbiterId: parseStringField(row[\"arbiterId\"], `${label}.arbiterId`),\n arbiter: parseStringField(row[\"arbiter\"], `${label}.arbiter`),\n nonce: parseRpcNumberNullable(row[\"nonce\"], `${label}.nonce`),\n tier: parseRpcUintNullable(row[\"tier\"], `${label}.tier`, 0xffff, \"uint16\"),\n metadataHash: parseStringNullable(row[\"metadataHash\"]),\n updatedAtBlock: parseRpcNumber(row[\"updatedAtBlock\"], `${label}.updatedAtBlock`),\n };\n}\n\nfunction decodeNativeAgentReputationReviewStateRecord(\n value: unknown,\n label: string,\n): NativeAgentReputationReviewStateRecord {\n const row = expectObject(value, label);\n return {\n reviewId: parseStringField(row[\"reviewId\"], `${label}.reviewId`),\n reviewer: parseStringField(row[\"reviewer\"], `${label}.reviewer`),\n subject: parseStringField(row[\"subject\"], `${label}.subject`),\n categoryId: parseRpcUint(row[\"categoryId\"], `${label}.categoryId`, 0xffffffff, \"uint32\"),\n speedScore: parseRpcUint(row[\"speedScore\"], `${label}.speedScore`, 0xff, \"uint8\"),\n qualityScore: parseRpcUint(row[\"qualityScore\"], `${label}.qualityScore`, 0xff, \"uint8\"),\n communicationScore: parseRpcUint(\n row[\"communicationScore\"],\n `${label}.communicationScore`,\n 0xff,\n \"uint8\",\n ),\n accuracyScore: parseRpcUint(row[\"accuracyScore\"], `${label}.accuracyScore`, 0xff, \"uint8\"),\n payloadHash: parseStringNullable(row[\"payloadHash\"]),\n updatedAtBlock: parseRpcNumber(row[\"updatedAtBlock\"], `${label}.updatedAtBlock`),\n };\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\nexport function decodeNativeReceiptResponse<TDecoded = unknown>(\n value: unknown,\n): NativeReceiptResponse<TDecoded> {\n const row = expectObject(value, \"native receipt response\");\n assertNativeReceiptFee(row[\"fee\"], \"native receipt response.fee\");\n return value as NativeReceiptResponse<TDecoded>;\n}\n\nexport function decodeTxFeedResponse(value: unknown): TxFeedResponse {\n const row = expectObject(value, \"tx feed response\");\n const transactions = row[\"transactions\"];\n if (!Array.isArray(transactions)) {\n throw SdkError.malformed(\"tx feed response.transactions must be an array\");\n }\n transactions.forEach((transaction, index) => {\n const tx = expectObject(transaction, `tx feed response.transactions[${index}]`);\n assertNativeReceiptFee(tx[\"fee\"], `tx feed response.transactions[${index}].fee`);\n });\n return value as TxFeedResponse;\n}\n\nfunction assertNativeReceiptFee(value: unknown, label: string): asserts value is NativeReceiptFee {\n try {\n assertMrvStructuredFeeConformance(value, { label });\n } catch (err) {\n const message = err instanceof Error ? err.message : String(err);\n throw SdkError.malformed(`structured native fee violation: ${message}`);\n }\n}\n\nfunction firstField(row: Record<string, unknown>, keys: readonly string[], label: string): unknown {\n for (const key of keys) {\n if (row[key] !== undefined) return row[key];\n }\n throw SdkError.malformed(`${label} is missing (${keys.join(\" | \")})`);\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\nexport function nativeAgentStateFilterParams(\n filter: NativeAgentStateFilter,\n): Record<string, NativeAgentStateFilterParamValue> {\n const out: Record<string, NativeAgentStateFilterParamValue> = {};\n if (filter.policyId != null) out.policyId = filter.policyId;\n if (filter.escrowId != null) out.escrowId = filter.escrowId;\n if (filter.account != null) out.account = filter.account;\n if (filter.includePolicySpends != null) out.includePolicySpends = filter.includePolicySpends;\n if (filter.limit != null) out.limit = encodeRpcU64Number(filter.limit, \"limit\");\n return out;\n}\n\nexport function decodeNativeAgentStateResponse(value: unknown): NativeAgentStateResponse {\n const row = expectObject(value, \"native agent state response\");\n return {\n schemaVersion: parseRpcNumber(row[\"schemaVersion\"], \"native agent state schemaVersion\"),\n limit: parseRpcNumber(row[\"limit\"], \"native agent state limit\"),\n filters: expectObject(\n row[\"filters\"],\n \"native agent state filters\",\n ) as unknown as NativeAgentStateResponseFilters,\n issuers: decodeNativeAgentStateArray(\n row,\n \"issuers\",\n decodeNativeAgentIssuerStateRecord,\n true,\n ),\n attestations: decodeNativeAgentStateArray(\n row,\n \"attestations\",\n decodeNativeAgentAttestationStateRecord,\n true,\n ),\n consents: decodeNativeAgentStateArray(\n row,\n \"consents\",\n decodeNativeAgentConsentStateRecord,\n true,\n ),\n services: decodeNativeAgentStateArray(\n row,\n \"services\",\n decodeNativeAgentServiceStateRecord,\n true,\n ),\n availability: decodeNativeAgentStateArray(\n row,\n \"availability\",\n decodeNativeAgentAvailabilityStateRecord,\n true,\n ),\n arbiters: decodeNativeAgentStateArray(\n row,\n \"arbiters\",\n decodeNativeAgentArbiterStateRecord,\n true,\n ),\n reputationReviews: decodeNativeAgentStateArray(\n row,\n \"reputationReviews\",\n decodeNativeAgentReputationReviewStateRecord,\n true,\n ),\n spendingPolicies: decodeNativeAgentStateArray(\n row,\n \"spendingPolicies\",\n decodeNativeAgentExistingStateRecord<NativeAgentPolicyStateRecord>,\n false,\n ),\n policySpends: decodeNativeAgentStateArray(\n row,\n \"policySpends\",\n decodeNativeAgentExistingStateRecord<NativeAgentPolicySpendStateRecord>,\n false,\n ),\n escrows: decodeNativeAgentStateArray(\n row,\n \"escrows\",\n decodeNativeAgentExistingStateRecord<NativeAgentEscrowStateRecord>,\n false,\n ),\n source: expectObject(\n row[\"source\"],\n \"native agent state source\",\n ) as unknown as NativeAgentStateSource,\n };\n}\n\nexport function nativeMarketStateFilterParams(\n filter: NativeMarketStateFilter,\n): Record<string, NativeMarketStateFilterParamValue> {\n const out: Record<string, NativeMarketStateFilterParamValue> = {};\n if (filter.marketId != null) out.marketId = filter.marketId;\n if (filter.orderId != null) out.orderId = filter.orderId;\n if (filter.listingId != null) out.listingId = filter.listingId;\n if (filter.collectionId != null) out.collectionId = filter.collectionId;\n if (filter.account != null) out.account = filter.account;\n if (filter.includeSpotOrders != null) out.includeSpotOrders = filter.includeSpotOrders;\n if (filter.limit != null) out.limit = encodeRpcU64Number(filter.limit, \"limit\");\n return out;\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(firstField(h, [\"parent_hash\", \"parentHash\"], \"block header parent hash\")),\n state_root: String(firstField(h, [\"state_root\", \"stateRoot\"], \"block header state root\")),\n timestamp: parseRpcBigint(h[\"timestamp\"], \"block header timestamp\"),\n executionUnitsUsed: parseRpcBigint(\n firstField(\n h,\n [\"executionUnitsUsed\", \"execution_units_used\", \"gas_used\", \"gasUsed\"],\n \"block header execution units used\",\n ),\n \"block header execution units used\",\n ),\n executionUnitLimit: parseRpcBigint(\n firstField(\n h,\n [\"executionUnitLimit\", \"execution_unit_limit\", \"gas_limit\", \"gasLimit\"],\n \"block header execution unit limit\",\n ),\n \"block header execution unit limit\",\n ),\n };\n}\n\nfunction normalizeTransactionReceipt(value: unknown): TransactionReceipt | null {\n if (value === null || value === undefined) return null;\n const r = expectObject(value, \"transaction receipt\");\n return {\n tx_hash: String(\n firstField(r, [\"tx_hash\", \"txHash\", \"transactionHash\"], \"transaction receipt tx hash\"),\n ),\n block_hash: String(\n firstField(r, [\"block_hash\", \"blockHash\"], \"transaction receipt block hash\"),\n ),\n block_number: parseRpcBigint(\n firstField(r, [\"block_number\", \"blockNumber\"], \"transaction receipt block number\"),\n \"transaction receipt block number\",\n ),\n tx_index: parseRpcNumber(\n firstField(r, [\"tx_index\", \"txIndex\", \"transactionIndex\"], \"transaction receipt tx index\"),\n \"transaction receipt tx index\",\n ),\n status: parseRpcNumber(firstField(r, [\"status\"], \"transaction receipt status\"), \"transaction receipt status\"),\n executionUnitsUsed: parseRpcBigint(\n firstField(\n r,\n [\"executionUnitsUsed\", \"execution_units_used\", \"gas_used\", \"gasUsed\"],\n \"transaction receipt execution units used\",\n ),\n \"transaction receipt execution units used\",\n ),\n };\n}\n\nfunction sdkTypedAddress(address: string, kind: AddressKind, label: string): string {\n try {\n return requireTypedAddress(address, kind, label);\n } catch (err) {\n const message = err instanceof Error ? err.message : String(err);\n throw SdkError.malformed(message);\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 normalizeExecutionUnitPriceResponse(value: unknown): ExecutionUnitPriceResponse {\n if (!value || typeof value !== \"object\") {\n throw SdkError.malformed(\"execution unit price response must be an object\");\n }\n const row = value as Record<string, unknown>;\n return {\n executionUnitPriceLythoshi: parseRpcBigint(\n fieldAlias(row, [\"executionUnitPriceLythoshi\", \"execution_unit_price_lythoshi\"]),\n \"executionUnitPriceLythoshi\",\n ).toString(),\n basePricePerExecutionUnitLythoshi: parseRpcBigint(\n fieldAlias(row, [\n \"basePricePerExecutionUnitLythoshi\",\n \"base_price_per_execution_unit_lythoshi\",\n ]),\n \"basePricePerExecutionUnitLythoshi\",\n ).toString(),\n priorityTipLythoshi: parseRpcBigint(\n fieldAlias(row, [\"priorityTipLythoshi\", \"priority_tip_lythoshi\"]),\n \"priorityTipLythoshi\",\n ).toString(),\n blockNumber: parseRpcNumberNullable(\n fieldAlias(row, [\"blockNumber\", \"block_number\"]),\n \"blockNumber\",\n ),\n source: readStringField(row, [\"source\"], \"execution unit price source\"),\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\nfunction fieldAlias(record: Record<string, unknown>, keys: readonly string[]): unknown {\n for (const key of keys) {\n if (Object.prototype.hasOwnProperty.call(record, key)) return record[key];\n }\n return undefined;\n}\n\nfunction readStringField(\n record: Record<string, unknown>,\n keys: readonly string[],\n label: string,\n): string {\n const value = fieldAlias(record, keys);\n if (typeof value !== \"string\" || value.trim().length === 0) {\n throw SdkError.malformed(`${label} must be a non-empty string`);\n }\n return value.trim();\n}\n\nfunction normalizeCapabilitiesResponse(value: CapabilitiesResponse): CapabilitiesResponse {\n return {\n ...value,\n nativeModuleForwarders: value.nativeModuleForwarders ?? {},\n };\n}\n","import { SdkError } from \"./error.js\";\n\nexport const NATIVE_MARKET_ORDER_BOOK_STREAM_TOPIC = \"nativeMarketOrderBook\" as const;\n\nexport const API_STREAM_TOPICS = [\n \"newHeads\",\n \"newPendingTx\",\n \"logs\",\n \"newCommit\",\n \"dagVertices\",\n \"registry\",\n \"marketTrades\",\n NATIVE_MARKET_ORDER_BOOK_STREAM_TOPIC,\n \"gapRecords\",\n \"nativeEvents\",\n] as const;\n\nexport type ApiStreamTopic = (typeof API_STREAM_TOPICS)[number];\nexport type NativeMarketOrderBookStreamAction = \"upsert\" | \"remove\";\nexport type NativeMarketOrderBookDelta = NativeMarketOrderBookStreamPayload;\n\nexport interface NativeMarketOrderBookStreamPayload {\n marketId: string;\n orderId: string;\n relatedOrderId?: string;\n eventName: string;\n action: NativeMarketOrderBookStreamAction;\n side?: string;\n price?: string;\n quantity?: string;\n remaining?: string;\n status?: string;\n blockHeight: number;\n txIndex: number;\n logIndex: number;\n}\n\nexport interface NativeMarketOrderBookDeltasRequest {\n fromBlock: number | bigint | string;\n toBlock: number | bigint | string;\n limit?: number | bigint | string | null;\n cursor?: string | null;\n txIndex?: number | bigint | string | null;\n logIndex?: number | bigint | string | null;\n address?: string | null;\n eventTopic?: string | null;\n eventName?: string | null;\n marketId?: string | null;\n listingId?: string | null;\n primaryId?: string | null;\n relatedId?: string | null;\n tokenId?: string | null;\n account?: string | null;\n counterparty?: string | null;\n}\n\nexport interface NativeMarketOrderBookDeltasResponseFilters {\n family?: \"market\" | string | null;\n txIndex?: number | null;\n logIndex?: number | null;\n address?: string | null;\n eventTopic?: string | null;\n eventName?: string | null;\n marketId?: string | null;\n listingId?: string | null;\n primaryId?: string | null;\n relatedId?: string | null;\n tokenId?: string | null;\n account?: string | null;\n counterparty?: string | null;\n}\n\nexport interface NativeMarketOrderBookDeltasSource {\n indexerProvider: string;\n projection: \"native_market_orderbook_deltas\" | string;\n historyApi: \"lyth_nativeMarketEvents\" | string;\n [key: string]: unknown;\n}\n\nexport interface NativeMarketOrderBookDeltasResponse {\n schemaVersion: number;\n fromBlock: number;\n toBlock: number;\n limit: number | null;\n cursor: string | null;\n nextCursor: string | null;\n filters: NativeMarketOrderBookDeltasResponseFilters;\n replay: true;\n streamTopic: typeof NATIVE_MARKET_ORDER_BOOK_STREAM_TOPIC;\n deltas: NativeMarketOrderBookDelta[];\n source: NativeMarketOrderBookDeltasSource;\n}\n\nexport interface ApiStreamTopicRetention {\n kind: \"live_broadcast\" | string;\n replay?: boolean;\n historyApis?: string[];\n [key: string]: unknown;\n}\n\nexport interface ApiStreamTopicMetadata<TTopic extends string = ApiStreamTopic | string> {\n topic: TTopic;\n endpoint: string;\n description?: string;\n shape?: string;\n source?: string;\n queryFilters?: string[];\n retention?: ApiStreamTopicRetention;\n}\n\nexport interface ApiStreamsIndexResponse {\n schemaVersion: number;\n chainId: number;\n transport: \"sse\" | string;\n keepAliveSeconds: number;\n perConnectionMailbox?: number;\n topics: ApiStreamTopicMetadata[];\n}\n\nexport function isNativeMarketOrderBookStreamPayload(\n value: unknown,\n): value is NativeMarketOrderBookStreamPayload {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) return false;\n const row = value as Record<string, unknown>;\n return (\n isString(row[\"marketId\"]) &&\n isString(row[\"orderId\"]) &&\n isOptionalString(row[\"relatedOrderId\"]) &&\n isString(row[\"eventName\"]) &&\n isNativeMarketOrderBookStreamAction(row[\"action\"]) &&\n isOptionalString(row[\"side\"]) &&\n isOptionalString(row[\"price\"]) &&\n isOptionalString(row[\"quantity\"]) &&\n isOptionalString(row[\"remaining\"]) &&\n isOptionalString(row[\"status\"]) &&\n isNonNegativeSafeInteger(row[\"blockHeight\"]) &&\n isNonNegativeSafeInteger(row[\"txIndex\"]) &&\n isNonNegativeSafeInteger(row[\"logIndex\"])\n );\n}\n\nexport function assertNativeMarketOrderBookStreamPayload(\n value: unknown,\n): asserts value is NativeMarketOrderBookStreamPayload {\n if (!isNativeMarketOrderBookStreamPayload(value)) {\n throw SdkError.malformed(\"nativeMarketOrderBook stream payload is malformed\");\n }\n}\n\nexport function decodeNativeMarketOrderBookDeltasResponse(\n value: unknown,\n): NativeMarketOrderBookDeltasResponse {\n const row = expectObject(value, \"nativeMarketOrderBook delta replay response\");\n const replay = row[\"replay\"];\n const streamTopic = row[\"streamTopic\"];\n if (replay !== true || streamTopic !== NATIVE_MARKET_ORDER_BOOK_STREAM_TOPIC) {\n throw SdkError.malformed(\n \"nativeMarketOrderBook delta replay response has invalid replay metadata\",\n );\n }\n const rawDeltas = row[\"deltas\"];\n if (!Array.isArray(rawDeltas)) {\n throw SdkError.malformed(\"nativeMarketOrderBook delta replay response deltas must be an array\");\n }\n const deltas = rawDeltas.map((delta, index) => {\n if (!isNativeMarketOrderBookStreamPayload(delta)) {\n throw SdkError.malformed(\n `nativeMarketOrderBook delta replay response deltas[${index}] is malformed`,\n );\n }\n return delta;\n });\n return {\n schemaVersion: parseSafeInteger(row[\"schemaVersion\"], \"schemaVersion\"),\n fromBlock: parseSafeInteger(row[\"fromBlock\"], \"fromBlock\"),\n toBlock: parseSafeInteger(row[\"toBlock\"], \"toBlock\"),\n limit: parseNullableSafeInteger(row[\"limit\"], \"limit\"),\n cursor: parseNullableString(row[\"cursor\"], \"cursor\"),\n nextCursor: parseNullableString(row[\"nextCursor\"], \"nextCursor\"),\n filters: expectObject(\n row[\"filters\"],\n \"nativeMarketOrderBook delta replay response filters\",\n ) as unknown as NativeMarketOrderBookDeltasResponseFilters,\n replay,\n streamTopic,\n deltas,\n source: expectObject(\n row[\"source\"],\n \"nativeMarketOrderBook delta replay response source\",\n ) as unknown as NativeMarketOrderBookDeltasSource,\n };\n}\n\nfunction isNativeMarketOrderBookStreamAction(\n value: unknown,\n): value is NativeMarketOrderBookStreamAction {\n return value === \"upsert\" || value === \"remove\";\n}\n\nfunction isString(value: unknown): value is string {\n return typeof value === \"string\";\n}\n\nfunction isOptionalString(value: unknown): value is string | undefined {\n return value === undefined || typeof value === \"string\";\n}\n\nfunction isNonNegativeSafeInteger(value: unknown): value is number {\n return typeof value === \"number\" && Number.isSafeInteger(value) && value >= 0;\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 parseSafeInteger(value: unknown, label: string): number {\n if (!isNonNegativeSafeInteger(value)) {\n throw SdkError.malformed(`nativeMarketOrderBook delta replay response ${label} is malformed`);\n }\n return value;\n}\n\nfunction parseNullableSafeInteger(value: unknown, label: string): number | null {\n if (value === null || value === undefined) return null;\n return parseSafeInteger(value, label);\n}\n\nfunction parseNullableString(value: unknown, label: string): string | null {\n if (value === null || value === undefined) return null;\n if (typeof value !== \"string\") {\n throw SdkError.malformed(`nativeMarketOrderBook delta replay response ${label} is malformed`);\n }\n return value;\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 { BridgeRoutesRequest, BridgeRoutesResponse } from \"./bridge.js\";\nimport {\n decodeNativeAgentStateResponse,\n nativeAgentStateFilterParams,\n decodeNativeReceiptResponse,\n decodeTxFeedResponse,\n nativeMarketStateFilterParams,\n} from \"./client.js\";\nimport {\n nativeEventsFromHistory,\n nativeEventsFromReceipt,\n nativeMarketEventsFromHistory,\n nativeMarketEventsFromReceipt,\n} from \"./native-events.js\";\nimport type { ClobMarketResponse } from \"./bindings/ClobMarketResponse.js\";\nimport type { MrcAccountResponse } from \"./bindings/MrcAccountResponse.js\";\nimport type { MrcHoldersResponse } from \"./bindings/MrcHoldersResponse.js\";\nimport type { MrcMetadataResponse } from \"./bindings/MrcMetadataResponse.js\";\nimport type { PendingRewardsResponse } from \"./bindings/PendingRewardsResponse.js\";\nimport type { RedemptionQueueResponse } from \"./bindings/RedemptionQueueResponse.js\";\nimport type { BlockSelector } from \"./types.js\";\nimport { encodeBlockSelector } from \"./types.js\";\nimport { decodeNativeMarketOrderBookDeltasResponse } from \"./streams.js\";\nimport type {\n ApiStreamsIndexResponse,\n NativeMarketOrderBookDeltasRequest,\n NativeMarketOrderBookDeltasResponse,\n} from \"./streams.js\";\nimport type {\n NativeDecodedEvent,\n NativeEventFilter,\n TypedNativeReceiptEvent,\n} from \"./native-events.js\";\nimport {\n requireTypedAddress,\n type AddressKind,\n} from \"./address.js\";\nimport type {\n AddressFlowResponse,\n AddressProfileResponse,\n ChainStatsResponse,\n ClobMarketsResponse,\n ClobOhlcResponse,\n ClobOrderBookResponse,\n ClobTradesResponse,\n NativeReceiptFee,\n NativeReceiptResponse,\n NativeEventsFilter,\n NativeEventsResponse,\n NativeAgentStateFilter,\n NativeAgentStateResponse,\n NativeMarketStateFilter,\n NativeMarketStateResponse,\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 executionUnitsUsed: number;\n executionUnitLimit: number;\n basePricePerCycleLythoshi: 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 valueLythoshi: string;\n maxExecutionFeeLythoshi: string;\n priorityTipLythoshi: string;\n executionUnitLimit: number;\n fee: NativeReceiptFee;\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 executionUnitsUsed: 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 type ApiTransactionNativeReceiptData<TDecoded = unknown> =\n NativeReceiptResponse<TDecoded>;\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 streams(): Promise<ApiStreamsIndexResponse> {\n return this.get(\"/streams\");\n }\n\n async transactions(limit = 50, cursor?: string | null): Promise<ApiEnvelope<TxFeedResponse>> {\n const response = await this.get<ApiEnvelope<unknown>>(\"/transactions\", { limit, cursor });\n return {\n ...response,\n data: decodeTxFeedResponse(response.data),\n };\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 transactionNativeReceipt<TDecoded = unknown>(\n hash: string,\n ): Promise<ApiEnvelope<ApiTransactionNativeReceiptData<TDecoded>>> {\n const response = await this.get<ApiEnvelope<unknown>>(\n `/transactions/${encodePathSegment(hash)}/native-receipt`,\n );\n return {\n ...response,\n data: decodeNativeReceiptResponse<TDecoded>(response.data),\n };\n }\n\n /**\n * Typed native event rows from `/transactions/{hash}/native-receipt`.\n *\n * This helper consumes the existing native receipt API route and returns\n * its envelope metadata with `data` replaced by the filtered event rows.\n */\n async transactionNativeReceiptEvents<\n TDecoded extends NativeDecodedEvent = NativeDecodedEvent,\n >(\n hash: string,\n filter: NativeEventFilter = {},\n ): Promise<ApiEnvelope<Array<TypedNativeReceiptEvent<TDecoded>>>> {\n const receipt = await this.transactionNativeReceipt(hash);\n return {\n ...receipt,\n data: nativeEventsFromReceipt<TDecoded>(receipt.data, filter),\n };\n }\n\n async transactionNativeReceiptMarketEvents<\n TDecoded extends NativeDecodedEvent = NativeDecodedEvent,\n >(\n hash: string,\n filter: NativeEventFilter = {},\n ): Promise<ApiEnvelope<Array<TypedNativeReceiptEvent<TDecoded>>>> {\n const receipt = await this.transactionNativeReceipt(hash);\n return {\n ...receipt,\n data: nativeMarketEventsFromReceipt<TDecoded>(receipt.data, filter),\n };\n }\n\n async nativeEvents<TDecoded = unknown>(\n filter: NativeEventsFilter,\n ): Promise<ApiEnvelope<NativeEventsResponse<TDecoded>>> {\n return this.get(\"/native-events\", nativeEventsFilterQuery(filter));\n }\n\n async nativeEventsTyped<\n TDecoded extends NativeDecodedEvent = NativeDecodedEvent,\n >(filter: NativeEventsFilter): Promise<ApiEnvelope<NativeEventsResponse<TDecoded>>> {\n const response = await this.nativeEvents(filter);\n return {\n ...response,\n data: nativeEventsFromHistory<TDecoded>(response.data),\n };\n }\n\n async nativeMarketEvents<TDecoded = unknown>(\n filter: NativeEventsFilter,\n ): Promise<ApiEnvelope<NativeEventsResponse<TDecoded>>> {\n return this.nativeEvents<TDecoded>({\n ...filter,\n family: \"market\",\n });\n }\n\n async nativeMarketEventsTyped<\n TDecoded extends NativeDecodedEvent = NativeDecodedEvent,\n >(filter: NativeEventsFilter): Promise<ApiEnvelope<NativeEventsResponse<TDecoded>>> {\n const response = await this.nativeEvents({\n ...filter,\n family: \"market\",\n });\n return {\n ...response,\n data: nativeMarketEventsFromHistory<TDecoded>(response.data),\n };\n }\n\n async nativeAgentState(\n filter: NativeAgentStateFilter = {},\n ): Promise<ApiEnvelope<NativeAgentStateResponse>> {\n const response = await this.get<ApiEnvelope<unknown>>(\n \"/native-agent-state\",\n nativeAgentStateFilterParams(filter),\n );\n return {\n ...response,\n data: decodeNativeAgentStateResponse(response.data),\n };\n }\n\n async nativeMarketState(\n filter: NativeMarketStateFilter = {},\n ): Promise<ApiEnvelope<NativeMarketStateResponse>> {\n return this.get(\"/native-market-state\", nativeMarketStateFilterParams(filter));\n }\n\n async nativeMarketOrderBookDeltas(\n filter: NativeMarketOrderBookDeltasRequest,\n ): Promise<ApiEnvelope<NativeMarketOrderBookDeltasResponse>> {\n const response = await this.get<ApiEnvelope<unknown>>(\n \"/native-market-orderbook-deltas\",\n nativeMarketOrderBookDeltasQuery(filter),\n );\n return {\n ...response,\n data: decodeNativeMarketOrderBookDeltasResponse(response.data),\n };\n }\n\n async addressProfile(address: string): Promise<ApiEnvelope<AddressProfileResponse>> {\n const userAddress = sdkTypedAddress(address, \"user\", \"address\");\n return this.get(`/addresses/${encodePathSegment(userAddress)}/profile`);\n }\n\n async addressFlow(address: string, limit = 250): Promise<ApiEnvelope<AddressFlowResponse>> {\n const userAddress = sdkTypedAddress(address, \"user\", \"address\");\n return this.get(`/addresses/${encodePathSegment(userAddress)}/flow`, { limit });\n }\n\n async addressActivity(\n address: string,\n limit = 50,\n cursor?: string | null,\n ): Promise<ApiEnvelope<ApiAddressActivityData>> {\n const userAddress = sdkTypedAddress(address, \"user\", \"address\");\n return this.get(`/addresses/${encodePathSegment(userAddress)}/activity`, {\n limit,\n cursor,\n });\n }\n\n async addressActivityKind(address: string): Promise<ApiEnvelope<ApiAddressActivityKindData>> {\n const userAddress = sdkTypedAddress(address, \"user\", \"address\");\n return this.get(`/addresses/${encodePathSegment(userAddress)}/activity-kind`);\n }\n\n async addressPendingRewards(\n address: string,\n block?: BlockSelector | null,\n ): Promise<ApiEnvelope<PendingRewardsResponse>> {\n const userAddress = sdkTypedAddress(address, \"user\", \"address\");\n return this.get(`/addresses/${encodePathSegment(userAddress)}/pending-rewards`, {\n block: block == null ? undefined : encodeBlockSelector(block),\n });\n }\n\n async addressRedemptionQueue(\n address: string,\n block?: BlockSelector | null,\n ): Promise<ApiEnvelope<RedemptionQueueResponse>> {\n const userAddress = sdkTypedAddress(address, \"user\", \"address\");\n return this.get(`/addresses/${encodePathSegment(userAddress)}/redemption-queue`, {\n block: block == null ? undefined : encodeBlockSelector(block),\n });\n }\n\n async assetMrcMetadata(\n assetId: string,\n mrcTokenId?: string | null,\n ): Promise<ApiEnvelope<MrcMetadataResponse>> {\n return this.get(`/assets/${encodePathSegment(assetId)}/metadata`, {\n mrcTokenId: mrcTokenId ?? undefined,\n });\n }\n\n async mrcAccount(\n account: string,\n limit?: number | null,\n ): Promise<ApiEnvelope<MrcAccountResponse>> {\n const smartAccount = sdkTypedAddress(account, \"smartAccount\", \"account\");\n return this.get(`/mrc/accounts/${encodePathSegment(smartAccount)}`, {\n limit: limit ?? undefined,\n });\n }\n\n async mrcHolders(\n standard: string,\n assetId: string,\n tokenId: string,\n limit?: number | null,\n ): Promise<ApiEnvelope<MrcHoldersResponse>> {\n return this.get(\n `/mrc/${encodePathSegment(standard)}/${encodePathSegment(assetId)}/${encodePathSegment(\n tokenId,\n )}/holders`,\n { limit: limit ?? undefined },\n );\n }\n\n /**\n * Asset-scoped `/api/v1/mrc/{standard}/{assetId}/holders`.\n *\n * This is the REST form used by MRC-4626 vault share balances.\n */\n async mrcAssetHolders(\n standard: string,\n assetId: string,\n limit?: number | null,\n ): Promise<ApiEnvelope<MrcHoldersResponse>> {\n return this.get(\n `/mrc/${encodePathSegment(standard)}/${encodePathSegment(assetId)}/holders`,\n { limit: limit ?? undefined },\n );\n }\n\n /** `/api/v1/mrc/mrc4626/{vaultId}/holders`. */\n async mrc4626Holders(\n vaultId: string,\n limit?: number | null,\n ): Promise<ApiEnvelope<MrcHoldersResponse>> {\n return this.mrcAssetHolders(\"mrc4626\", vaultId, limit);\n }\n\n /**\n * `/api/v1/bridge/routes`.\n *\n * The forthcoming route is read-only `GET`, so the typed request is encoded\n * as a single JSON query value named `request`.\n */\n async bridgeRoutes(\n request: BridgeRoutesRequest,\n ): Promise<ApiEnvelope<BridgeRoutesResponse>> {\n return this.get(\"/bridge/routes\", {\n request: JSON.stringify(request),\n });\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 nativeEventsFilterQuery(filter: NativeEventsFilter): Record<string, ApiQueryValue> {\n return {\n fromBlock: filter.fromBlock,\n toBlock: filter.toBlock,\n limit: filter.limit,\n txIndex: filter.txIndex,\n logIndex: filter.logIndex,\n address: filter.address,\n eventTopic: filter.eventTopic,\n family: filter.family,\n eventName: filter.eventName,\n primaryId: filter.primaryId,\n relatedId: filter.relatedId,\n tokenId: filter.tokenId,\n account: filter.account,\n counterparty: filter.counterparty,\n };\n}\n\nfunction nativeMarketOrderBookDeltasQuery(\n filter: NativeMarketOrderBookDeltasRequest,\n): Record<string, ApiQueryValue> {\n return {\n fromBlock: filter.fromBlock,\n toBlock: filter.toBlock,\n limit: filter.limit,\n cursor: filter.cursor,\n txIndex: filter.txIndex,\n logIndex: filter.logIndex,\n address: filter.address,\n eventTopic: filter.eventTopic,\n eventName: filter.eventName,\n marketId: filter.marketId,\n listingId: filter.listingId,\n primaryId: filter.primaryId,\n relatedId: filter.relatedId,\n tokenId: filter.tokenId,\n account: filter.account,\n counterparty: filter.counterparty,\n };\n}\n\nfunction sdkTypedAddress(address: string, kind: AddressKind, label: string): string {\n try {\n return requireTypedAddress(address, kind, label);\n } catch (err) {\n const message = err instanceof Error ? err.message : String(err);\n throw SdkError.malformed(message);\n }\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 * Third-party bridge route disclosure helpers.\n *\n * These helpers assess caller-supplied route disclosures. They do not call a\n * node route and do not claim any bridge integration is live.\n */\n\nimport { PRECOMPILE_ADDRESSES } from \"./consts.js\";\n\nexport const BRIDGE_SELECTORS = {\n lockBridgeConfig: \"0x8956feb3\",\n setBridgeResumeCooldown: \"0x1a3a0672\",\n setBridgeRouteFinality: \"0x8a061e99\",\n} as const;\n\nexport const BRIDGE_REVERT_TAGS = {\n bridgeAdminLocked: \"0xf807\",\n bridgeResumeCooldownActive: \"0xf808\",\n bridgeCooldownZero: \"0xfd08\",\n bridgeFinalityZero: \"0xfd09\",\n} as const;\n\nexport const BRIDGE_QUOTE_API_BLOCKED_REASON =\n \"bridge quote requires a mono-core live quote API/runtime primitive\";\n\nexport const BRIDGE_SUBMIT_API_BLOCKED_REASON =\n \"bridge submit requires a mono-core live submit API/runtime primitive\";\n\nexport const V1_BRIDGE_ALLOWED_FEE_TOKEN = \"LINK\";\nexport const V1_BRIDGE_ALLOWED_PROTOCOL = \"chainlink-ccip\";\n\nexport type BridgeBytesInput = string | Uint8Array | readonly number[];\n\nexport type BridgeAdminControl = \"none\" | \"consensusOnly\" | \"operatorKey\" | \"unknown\";\nexport type BridgeCircuitBreakerState = \"armed\" | \"paused\" | \"disabled\" | \"unknown\";\nexport type BridgeRiskTier = \"low\" | \"medium\" | \"high\" | \"blocked\";\n\nexport class BridgePrecompileError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"BridgePrecompileError\";\n }\n}\n\nexport class BridgeRouteCatalogueError extends Error {\n readonly blockedReasons: string[];\n\n constructor(blockedReasons: readonly string[]) {\n super(`invalid bridge route catalogue: ${blockedReasons.join(\"; \")}`);\n this.name = \"BridgeRouteCatalogueError\";\n this.blockedReasons = [...blockedReasons];\n }\n}\n\nexport function bridgeAddressHex(): string {\n return PRECOMPILE_ADDRESSES.BRIDGE.toLowerCase();\n}\n\nexport function encodeLockBridgeConfigCalldata(bridgeId: BridgeBytesInput): string {\n return bytesToHex(\n concatBytes(\n hexToBytes(BRIDGE_SELECTORS.lockBridgeConfig),\n expectLength(toBytes(bridgeId), 32, \"bridgeId\"),\n ),\n );\n}\n\nexport function encodeSetBridgeResumeCooldownCalldata(\n bridgeId: BridgeBytesInput,\n cooldownBlocks: bigint | number | string,\n): string {\n return bytesToHex(\n concatBytes(\n hexToBytes(BRIDGE_SELECTORS.setBridgeResumeCooldown),\n expectLength(toBytes(bridgeId), 32, \"bridgeId\"),\n uint64Word(cooldownBlocks, \"cooldownBlocks\"),\n ),\n );\n}\n\nexport function encodeSetBridgeRouteFinalityCalldata(\n bridgeId: BridgeBytesInput,\n finalityBlocks: bigint | number | string,\n): string {\n return bytesToHex(\n concatBytes(\n hexToBytes(BRIDGE_SELECTORS.setBridgeRouteFinality),\n expectLength(toBytes(bridgeId), 32, \"bridgeId\"),\n uint64Word(finalityBlocks, \"finalityBlocks\"),\n ),\n );\n}\n\nexport function isBridgeAdminLockedRevert(data: BridgeBytesInput): boolean {\n return bytesToHex(toBytes(data)).toLowerCase() === BRIDGE_REVERT_TAGS.bridgeAdminLocked;\n}\n\nexport function isBridgeResumeCooldownActiveRevert(data: BridgeBytesInput): boolean {\n return bytesToHex(toBytes(data)).toLowerCase() === BRIDGE_REVERT_TAGS.bridgeResumeCooldownActive;\n}\n\nexport function isBridgeCooldownZeroRevert(data: BridgeBytesInput): boolean {\n return bytesToHex(toBytes(data)).toLowerCase() === BRIDGE_REVERT_TAGS.bridgeCooldownZero;\n}\n\nexport function isBridgeFinalityZeroRevert(data: BridgeBytesInput): boolean {\n return bytesToHex(toBytes(data)).toLowerCase() === BRIDGE_REVERT_TAGS.bridgeFinalityZero;\n}\n\nexport interface BridgeVerifierDisclosure {\n model: string;\n participantCount: number;\n threshold: number;\n}\n\nexport interface BridgeRouteDisclosure {\n routeId: string;\n bridge: string;\n protocol?: string | null;\n asset: string;\n feeToken: string;\n sourceChain: string;\n destinationChain: string;\n verifier: BridgeVerifierDisclosure;\n drainCapAtomic: string;\n finalityBlocks: number;\n cooldownSeconds: number;\n adminControl: BridgeAdminControl;\n circuitBreaker: BridgeCircuitBreakerState;\n insuranceAtomic: string;\n lastIncidentDate?: string | null;\n}\n\nexport interface BridgeRouteCatalogueRoute {\n tokenId: string;\n routeId: string;\n bridgeId: string;\n wrappedAsset: string;\n bridge: string;\n protocol?: string | null;\n asset: string;\n feeToken: string;\n sourceChain: string;\n destinationChain: string;\n verifier: BridgeVerifierDisclosure;\n drainCapAtomic: string;\n finalityBlocks: number;\n cooldownSeconds: number;\n adminControl: BridgeAdminControl;\n circuitBreaker: BridgeCircuitBreakerState;\n insuranceAtomic: string;\n updatedAtBlock: number;\n lastIncidentDate?: string | null;\n}\n\nexport interface BridgeRouteCatalogue {\n routes: BridgeRouteCatalogueRoute[];\n}\n\nexport type BridgeRouteCataloguePayload =\n | BridgeRouteCatalogue\n | readonly BridgeRouteCatalogueRoute[];\n\nexport interface BridgeRouteCatalogueValidation {\n accepted: boolean;\n routeCount: number;\n blockedReasons: string[];\n}\n\nexport interface BridgeRouteCatalogueJsonOptions {\n /**\n * Export as `{ routes: [...] }` by default. Set false for mono-core's raw-array import form.\n */\n envelope?: boolean;\n /**\n * JSON.stringify spacing. Defaults to two spaces to match CLI fixture style.\n */\n space?: number | string;\n}\n\nexport interface BridgeRouteAssessment {\n routeId: string;\n accepted: boolean;\n score: number;\n riskTier: BridgeRiskTier;\n blockedReasons: string[];\n warnings: string[];\n}\n\nexport interface RankedBridgeRoute {\n route: BridgeRouteDisclosure;\n assessment: BridgeRouteAssessment;\n}\n\nexport interface BridgeTransferIntent {\n asset: string;\n amountAtomic: string;\n sourceChain: string;\n destinationChain: string;\n recipient: string;\n sender?: string | null;\n allowedRouteIds?: string[] | null;\n minimumScore?: number | null;\n maxFinalityBlocks?: number | null;\n maxCooldownSeconds?: number | null;\n}\n\nexport interface BridgeRouteCandidate {\n route: BridgeRouteDisclosure;\n assessment: BridgeRouteAssessment;\n eligible: boolean;\n score: number;\n blockedReasons: string[];\n warnings: string[];\n}\n\nexport interface BridgeTransferRequest {\n intent: BridgeTransferIntent;\n route: BridgeRouteDisclosure;\n assessment: BridgeRouteAssessment;\n}\n\nexport interface BridgeRouteSelection {\n selected: BridgeTransferRequest | null;\n candidates: BridgeRouteCandidate[];\n blockedReasons: string[];\n}\n\n/**\n * SDK-only readiness report for the quote/submit boundary.\n *\n * The SDK can verify route-selection readiness from supplied disclosures, but\n * live quote and submit remain blocked until mono-core exposes those\n * API/runtime primitives.\n */\nexport interface BridgeQuoteSubmitReadiness {\n selection: BridgeRouteSelection;\n routeSelectionReady: boolean;\n quoteReady: boolean;\n submitReady: boolean;\n blockedReasons: string[];\n warnings: string[];\n}\n\nexport interface BridgeRoutesRequest {\n address?: string | null;\n intent?: BridgeTransferIntent | null;\n routeDisclosures?: BridgeRouteDisclosure[] | null;\n limit?: number | null;\n}\n\nexport interface BridgeRoutesSource {\n address?: string | null;\n routeCount: number;\n globalRouteIndexAvailable: boolean;\n routeDisclosureSource: string;\n}\n\nexport interface BridgeRoutesResponse {\n selection: BridgeRouteSelection;\n routeSelectionReady: boolean;\n quoteReady: boolean;\n submitReady: boolean;\n blockedReasons: string[];\n warnings: string[];\n routes?: BridgeRouteDisclosure[] | null;\n bridgeRouteDisclosures?: BridgeRouteDisclosure[] | null;\n source?: BridgeRoutesSource | null;\n}\n\n/**\n * Per-asset drain rate-limit + circuit-breaker state (MB-2).\n *\n * Mirrors the `TAG_DRAIN_CAP` (`0x26`) family in the chain bridge\n * storage. `capPerWindow === \"0\"` disables the breaker for the\n * `(bridge, asset)` pair. `drained` is the running total for the active\n * window; `remaining` is the SDK-computed `cap - drained` floored at\n * zero (decimal string), or `null` when the cap is disabled.\n */\nexport interface BridgeDrainCap {\n /** Maximum aggregate drain per rolling window (`uint256` decimal). */\n capPerWindow: string;\n /** Window length in Protocore blocks. */\n windowBlocks: string;\n /** `block_number / window_blocks` at the last drain. */\n currentBucket: string;\n /** Running drained total for the active window (`uint256` decimal). */\n drained: string;\n /** SDK-computed `capPerWindow - drained` floored at `0`; `null` if disabled. */\n remaining?: string | null;\n}\n\n/**\n * Bridge route circuit-breaker + resume-cooldown health (MB-2).\n *\n * Mirrors the bridge-record fields `PAUSED_AT_BLOCK` (`0x13`),\n * `RESUME_COOLDOWN_BLOCKS` (`0x12`), `ROUTE_FINALITY_BLOCKS` (`0x14`),\n * and `ADMIN_LOCKED_AT_BLOCK` (`0x11`) plus the per-asset drain cap.\n * `paused` is derived from `pausedAt !== \"0\"`.\n */\nexport interface BridgeBreakerState {\n /** Bridge id the breaker state belongs to (`0x` 32 bytes). */\n bridgeId: string;\n /** `true` when the route is in a recorded pause window. */\n paused: boolean;\n /** Block at which the current pause was committed; `\"0\"` when not paused. */\n pausedAt: string;\n /** Cooldown blocks that must elapse after a pause before resume. */\n resumeCooldownBlocks: string;\n /** Route-specific foreign-chain finality depth. */\n routeFinalityBlocks: string;\n /** Block at which mutable route config was frozen; `\"0\"` = unlocked. */\n adminLockedAtBlock: string;\n /** Per-asset drain rate-limit + breaker counters, when a cap is set. */\n drainCap?: BridgeDrainCap | null;\n}\n\n/**\n * Latest light-client anchor metadata on a {@link BridgeHealthRecord}.\n */\nexport interface BridgeAnchorState {\n /** Latest verified foreign-chain header root (`0x` 32 bytes). */\n headerRoot: string;\n /** Latest verified foreign-chain block number. */\n headerBlock: number;\n /** Protocore block at which the latest anchor was recorded. */\n updatedAtProtocoreBlock: number;\n}\n\n/**\n * MB-2 — bridge-level circuit-breaker + pause posture on a\n * {@link BridgeHealthRecord}. Amounts are `0x`-hex `uint256` strings;\n * block counts are numbers.\n */\nexport interface BridgeCircuitBreakerFields {\n /** Bridge-default drain cap per rolling window (`0x`-hex `uint256`); `0x0` disables it. */\n defaultDrainCapPerWindow: string;\n /** Bridge-default drain-window length in Protocore blocks. */\n defaultDrainWindowBlocks: number;\n /** `true` when the route is currently in a recorded pause window. */\n paused: boolean;\n /** Protocore block the current pause was committed at; `null` when not paused. */\n pausedAtBlock: number | null;\n /** Cooldown (blocks) that must elapse after a pause before resume. */\n resumeCooldownBlocks: number;\n}\n\n/** One bridge-health row in a {@link BridgeHealthResponse}. */\nexport interface BridgeHealthRecord {\n /** 32-byte bridge id (`0x` hex). */\n bridgeId: string;\n /** Stable bridge lifecycle status label. */\n status: string;\n /** Raw bridge lifecycle status byte. */\n statusCode: number;\n /** Latest light-client anchor metadata. */\n latestAnchor: BridgeAnchorState;\n /** MB-2 bridge-level circuit-breaker / pause posture. */\n circuitBreaker: BridgeCircuitBreakerFields;\n}\n\n/**\n * `lyth_bridgeHealth` response — a page of bridge-record health envelopes\n * (MB-2). The chain pages the **global** bridge set keyed by `cursor` +\n * `limit`; there is no single-bridge form. Each record's `circuitBreaker`\n * answers \"is this route paused / rate-limited\" in one round-trip; the\n * per-route live drain bucket is `lyth_bridgeDrainStatus`.\n */\nexport interface BridgeHealthResponse {\n /** Response schema version (`1`). */\n schemaVersion: number;\n /** Data source — `\"native_state_storage\"`. */\n source: string;\n /** Bridge precompile address (`0x1008`). */\n precompile: string;\n /** Bridge-health rows in this page. */\n records: BridgeHealthRecord[];\n /** Opaque cursor for the next page (`0x` hex), or `null` at the end. */\n nextCursor: string | null;\n}\n\n/**\n * `lyth_bridgeDrainStatus` response — the live per-route circuit-breaker\n * drain bucket for one `(bridgeId, wrappedAsset)` route (MB-2).\n *\n * `remaining` is `capPerWindow - drainedThisBucket` (clamped at `0x0`)\n * when a per-asset cap is set; `0x0` when no per-asset cap exists (no\n * per-asset rate limit — the `bridgeDefault` applies). Amounts are\n * `0x`-hex `uint256` strings; block counts are numbers.\n */\nexport interface BridgeDrainStatus {\n /** Response schema version (`1`). */\n schemaVersion: number;\n /** Data source — `\"native_state_storage\"`. */\n source: string;\n /** Bridge precompile address (`0x1008`). */\n precompile: string;\n /** Bridge id the bucket belongs to (`0x` 32 bytes). */\n bridgeId: string;\n /** Wrapped (Protocore-side) asset (`mono` bech32m). */\n wrappedAsset: string;\n /** Per-asset drain cap per window (`0x`-hex `uint256`); `0x0` = no per-asset cap. */\n capPerWindow: string;\n /** Per-asset window length in Protocore blocks. */\n windowBlocks: number;\n /** `block_number / window_blocks` at the last drain. */\n currentBucket: number;\n /** Running drained total for the active window (`0x`-hex `uint256`). */\n drainedThisBucket: string;\n /** `capPerWindow - drainedThisBucket` clamped at `0x0` (`0x0` when no per-asset cap). */\n remaining: string;\n /** Bridge-default fallback fields, surfaced when no per-asset cap is configured. */\n bridgeDefault: {\n /** Bridge-default drain cap per window (`0x`-hex `uint256`). */\n drainCapPerWindow: string;\n /** Bridge-default drain-window length in Protocore blocks. */\n drainWindowBlocks: number;\n };\n}\n\n/**\n * Compute the `remaining` field for a {@link BridgeDrainCap} from its\n * `capPerWindow` and `drained` decimal strings, floored at `0`. Returns\n * `null` when the cap is disabled (`capPerWindow === \"0\"`).\n */\nexport function bridgeDrainRemaining(capPerWindow: string, drained: string): string | null {\n const cap = BigInt(capPerWindow);\n if (cap === 0n) return null;\n const used = BigInt(drained);\n const left = cap > used ? cap - used : 0n;\n return left.toString(10);\n}\n\nexport function assessBridgeRoute(route: BridgeRouteDisclosure): BridgeRouteAssessment {\n const blockedReasons: string[] = [];\n const warnings: string[] = [];\n const feeToken = String(route.feeToken ?? \"\").trim();\n\n if (route.routeId.trim() === \"\") blockedReasons.push(\"route id missing\");\n if (route.bridge.trim() === \"\") blockedReasons.push(\"bridge name missing\");\n if (!isChainlinkCcipRoute(route.protocol, route.bridge, route.verifier.model)) {\n blockedReasons.push(\"bridge protocol must be Chainlink CCIP\");\n }\n if (route.asset.trim() === \"\") blockedReasons.push(\"asset disclosure missing\");\n if (feeToken === \"\") {\n blockedReasons.push(\"route fee token missing\");\n } else if (feeToken.toUpperCase() !== V1_BRIDGE_ALLOWED_FEE_TOKEN) {\n blockedReasons.push(\"CCIP route fee token must be LINK\");\n }\n if (route.verifier.model.trim() === \"\") blockedReasons.push(\"verifier model missing\");\n if (route.verifier.threshold < 2 || route.verifier.participantCount < 2) {\n blockedReasons.push(\"verifier set must not be 1-of-1\");\n }\n if (route.verifier.threshold > route.verifier.participantCount) {\n blockedReasons.push(\"verifier threshold exceeds participant count\");\n }\n if (!decimalStringIsPositive(route.drainCapAtomic)) {\n blockedReasons.push(\"per-asset drain cap missing or zero\");\n }\n if (route.finalityBlocks === 0) blockedReasons.push(\"route finality delay missing\");\n if (route.cooldownSeconds === 0) blockedReasons.push(\"route cooldown missing\");\n if (route.adminControl !== \"none\" && route.adminControl !== \"consensusOnly\") {\n blockedReasons.push(\"Mono-side admin control is not consensus-only\");\n }\n if (route.circuitBreaker === \"paused\") {\n blockedReasons.push(\"route circuit breaker is paused\");\n } else if (route.circuitBreaker === \"disabled\" || route.circuitBreaker === \"unknown\") {\n blockedReasons.push(\"route circuit breaker missing\");\n }\n if (!decimalStringIsPositive(route.insuranceAtomic)) {\n blockedReasons.push(\"slashable insurance pool missing or zero\");\n }\n if (route.lastIncidentDate != null) {\n warnings.push(\"route reports a prior bridge incident\");\n }\n\n if (blockedReasons.length > 0) {\n return {\n routeId: route.routeId,\n accepted: false,\n score: 0,\n riskTier: \"blocked\",\n blockedReasons,\n warnings,\n };\n }\n\n let score = 100;\n if (route.verifier.threshold * 3 <= route.verifier.participantCount) {\n score -= 10;\n warnings.push(\"verifier threshold is below one-third-plus quorum\");\n }\n if (route.cooldownSeconds < 3_600) {\n score -= 10;\n warnings.push(\"cooldown is under one hour\");\n }\n if (route.finalityBlocks < 2) {\n score -= 5;\n warnings.push(\"finality delay is under two blocks\");\n }\n\n return {\n routeId: route.routeId,\n accepted: true,\n score,\n riskTier: score >= 90 ? \"low\" : score >= 75 ? \"medium\" : \"high\",\n blockedReasons,\n warnings,\n };\n}\n\nexport function rankBridgeRoutes(routes: readonly BridgeRouteDisclosure[]): RankedBridgeRoute[] {\n return routes\n .map((route) => ({ route, assessment: assessBridgeRoute(route) }))\n .sort((left, right) => {\n if (left.assessment.accepted !== right.assessment.accepted) {\n return left.assessment.accepted ? -1 : 1;\n }\n if (left.assessment.score !== right.assessment.score) {\n return right.assessment.score - left.assessment.score;\n }\n if (left.route.cooldownSeconds !== right.route.cooldownSeconds) {\n return left.route.cooldownSeconds - right.route.cooldownSeconds;\n }\n if (left.route.finalityBlocks !== right.route.finalityBlocks) {\n return left.route.finalityBlocks - right.route.finalityBlocks;\n }\n return left.assessment.routeId.localeCompare(right.assessment.routeId);\n });\n}\n\nexport function bridgeTransferCandidates(\n intent: BridgeTransferIntent,\n routes: readonly BridgeRouteDisclosure[],\n): BridgeRouteCandidate[] {\n const intentReasons = validateBridgeTransferIntent(intent);\n return routes\n .map((route) => bridgeRouteCandidate(intent, intentReasons, route))\n .sort(compareBridgeCandidates);\n}\n\nexport function selectBridgeTransferRoute(\n intent: BridgeTransferIntent,\n routes: readonly BridgeRouteDisclosure[],\n): BridgeRouteSelection {\n const blockedReasons = validateBridgeTransferIntent(intent);\n const candidates = bridgeTransferCandidates(intent, routes);\n\n if (routes.length === 0) {\n blockedReasons.push(\"no route disclosures supplied\");\n }\n\n const selectedCandidate =\n blockedReasons.length === 0 ? candidates.find((candidate) => candidate.eligible) : undefined;\n const selected =\n selectedCandidate == null\n ? null\n : {\n intent,\n route: selectedCandidate.route,\n assessment: selectedCandidate.assessment,\n };\n\n if (selected == null && blockedReasons.length === 0) {\n blockedReasons.push(\"no eligible bridge route satisfies the transfer intent and route floor\");\n }\n\n return { selected, candidates, blockedReasons };\n}\n\nexport function bridgeQuoteSubmitReadiness(\n intent: BridgeTransferIntent,\n routes: readonly BridgeRouteDisclosure[],\n): BridgeQuoteSubmitReadiness {\n const selection = selectBridgeTransferRoute(intent, routes);\n const routeSelectionReady = selection.selected != null;\n const blockedReasons = [...selection.blockedReasons];\n\n if (routeSelectionReady) {\n blockedReasons.push(BRIDGE_QUOTE_API_BLOCKED_REASON, BRIDGE_SUBMIT_API_BLOCKED_REASON);\n }\n\n return {\n selection,\n routeSelectionReady,\n quoteReady: false,\n submitReady: false,\n blockedReasons,\n warnings: selection.selected == null ? [] : [...selection.selected.assessment.warnings],\n };\n}\n\nexport function bridgeRoutesReadiness(request: BridgeRoutesRequest): BridgeRoutesResponse {\n const routeDisclosures = request.routeDisclosures ?? [];\n const source: BridgeRoutesSource = {\n address: request.address,\n routeCount: routeDisclosures.length,\n globalRouteIndexAvailable: false,\n routeDisclosureSource: \"request.routeDisclosures\",\n };\n\n if (request.intent == null) {\n const blockedReasons = [\"bridge route selection requires transfer intent\"];\n if (routeDisclosures.length === 0) {\n blockedReasons.push(\"no route disclosures supplied\");\n }\n return {\n selection: {\n selected: null,\n candidates: [],\n blockedReasons: [...blockedReasons],\n },\n routeSelectionReady: false,\n quoteReady: false,\n submitReady: false,\n blockedReasons,\n warnings: [],\n routes: [...routeDisclosures],\n bridgeRouteDisclosures: [...routeDisclosures],\n source,\n };\n }\n\n const readiness = bridgeQuoteSubmitReadiness(request.intent, routeDisclosures);\n return {\n ...readiness,\n quoteReady: false,\n submitReady: false,\n routes: [...routeDisclosures],\n bridgeRouteDisclosures: [...routeDisclosures],\n source,\n };\n}\n\nexport function buildBridgeRouteCatalogue(\n routes: readonly BridgeRouteCatalogueRoute[],\n): BridgeRouteCatalogue {\n return { routes: routes.map(cloneBridgeRouteCatalogueRoute) };\n}\n\nexport function parseBridgeRouteCatalogueJson(json: string): BridgeRouteCatalogue {\n const decoded = JSON.parse(json) as unknown;\n return normalizeBridgeRouteCatalogue(decoded);\n}\n\nexport function normalizeBridgeRouteCatalogue(payload: unknown): BridgeRouteCatalogue {\n const validation = validateBridgeRouteCatalogue(payload);\n if (!validation.accepted) {\n throw new BridgeRouteCatalogueError(validation.blockedReasons);\n }\n const routes = routeArrayFromCataloguePayload(payload);\n if (routes == null) {\n throw new BridgeRouteCatalogueError([\"route catalogue must be an array or { routes: [...] }\"]);\n }\n return { routes: routes.map((route) => coerceBridgeRouteCatalogueRoute(route)) };\n}\n\nexport function validateBridgeRouteCatalogue(payload: unknown): BridgeRouteCatalogueValidation {\n const routes = routeArrayFromCataloguePayload(payload);\n const blockedReasons: string[] = [];\n\n if (routes == null) {\n return {\n accepted: false,\n routeCount: 0,\n blockedReasons: [\"route catalogue must be an array or { routes: [...] }\"],\n };\n }\n if (routes.length === 0) {\n blockedReasons.push(\"bridge route import must contain at least one route\");\n }\n\n const seen = new Set<string>();\n routes.forEach((route, idx) =>\n validateBridgeRouteCatalogueRoute(idx, route, seen, blockedReasons),\n );\n\n return {\n accepted: blockedReasons.length === 0,\n routeCount: routes.length,\n blockedReasons,\n };\n}\n\nexport function exportBridgeRouteCatalogueJson(\n payload: BridgeRouteCataloguePayload,\n options: BridgeRouteCatalogueJsonOptions = {},\n): string {\n const catalogue = normalizeBridgeRouteCatalogue(payload);\n const value = options.envelope === false ? catalogue.routes : catalogue;\n return JSON.stringify(value, null, options.space ?? 2);\n}\n\ntype JsonRecord = Record<string, unknown>;\n\nconst MAX_U256 = (1n << 256n) - 1n;\n\nfunction routeArrayFromCataloguePayload(payload: unknown): readonly unknown[] | null {\n if (Array.isArray(payload)) return payload;\n if (isRecord(payload) && Array.isArray(payload.routes)) return payload.routes;\n return null;\n}\n\nfunction validateBridgeRouteCatalogueRoute(\n idx: number,\n value: unknown,\n seen: Set<string>,\n blockedReasons: string[],\n): void {\n const prefix = `routes[${idx}]`;\n if (!isRecord(value)) {\n blockedReasons.push(`${prefix} must be an object`);\n return;\n }\n\n const tokenId = validateHexBytes(\n `${prefix}.tokenId`,\n field(value, \"tokenId\", \"token_id\"),\n 32,\n blockedReasons,\n );\n const routeId = validateTextField(\n `${prefix}.routeId`,\n field(value, \"routeId\", \"route_id\"),\n 96,\n blockedReasons,\n );\n if (tokenId != null && routeId != null) {\n const key = `${tokenId}:${routeId}`;\n if (seen.has(key)) {\n blockedReasons.push(`${prefix}.routeId duplicate (tokenId, routeId) in bridge route import`);\n } else {\n seen.add(key);\n }\n }\n\n validateHexBytes(\n `${prefix}.bridgeId`,\n field(value, \"bridgeId\", \"bridge_id\"),\n 32,\n blockedReasons,\n );\n validateHexBytes(\n `${prefix}.wrappedAsset`,\n field(value, \"wrappedAsset\", \"wrapped_asset\"),\n 20,\n blockedReasons,\n );\n const bridge = validateTextField(`${prefix}.bridge`, value.bridge, 64, blockedReasons);\n const protocol = validateOptionalTextField(\n `${prefix}.protocol`,\n field(value, \"protocol\", \"routeProtocol\", \"route_protocol\"),\n 64,\n blockedReasons,\n );\n validateTextField(`${prefix}.asset`, value.asset, 64, blockedReasons);\n const feeToken = validateTextField(\n `${prefix}.feeToken`,\n field(value, \"feeToken\", \"fee_token\"),\n 32,\n blockedReasons,\n );\n if (feeToken != null && feeToken.toUpperCase() !== V1_BRIDGE_ALLOWED_FEE_TOKEN) {\n blockedReasons.push(`${prefix}.feeToken must be LINK for CCIP routes`);\n }\n validateTextField(\n `${prefix}.sourceChain`,\n field(value, \"sourceChain\", \"source_chain\"),\n 64,\n blockedReasons,\n );\n validateTextField(\n `${prefix}.destinationChain`,\n field(value, \"destinationChain\", \"destination_chain\"),\n 64,\n blockedReasons,\n );\n\n const verifier = value.verifier;\n let verifierModel: string | null = null;\n if (!isRecord(verifier)) {\n blockedReasons.push(`${prefix}.verifier must be an object`);\n } else {\n verifierModel = validateTextField(`${prefix}.verifier.model`, verifier.model, 64, blockedReasons);\n const participantCount = field(verifier, \"participantCount\", \"participant_count\");\n if (!isU16(participantCount) || participantCount === 0) {\n blockedReasons.push(`${prefix}.verifier.participantCount must be non-zero`);\n }\n if (!isU16(verifier.threshold) || verifier.threshold === 0) {\n blockedReasons.push(`${prefix}.verifier.threshold must be in 1..=participantCount`);\n } else if (isU16(participantCount) && verifier.threshold > participantCount) {\n blockedReasons.push(`${prefix}.verifier.threshold must be in 1..=participantCount`);\n }\n }\n if (!isChainlinkCcipRoute(protocol, bridge ?? \"\", verifierModel ?? \"\")) {\n blockedReasons.push(`${prefix}.protocol must be Chainlink CCIP`);\n }\n\n if (!decimalStringIsPositiveU256(field(value, \"drainCapAtomic\", \"drain_cap_atomic\"))) {\n blockedReasons.push(`${prefix}.drainCapAtomic must be a non-zero decimal u256`);\n }\n if (!isSafeIntegerAtLeast(field(value, \"finalityBlocks\", \"finality_blocks\"), 1)) {\n blockedReasons.push(`${prefix}.finalityBlocks must be non-zero`);\n }\n if (!isSafeIntegerAtLeast(field(value, \"cooldownSeconds\", \"cooldown_seconds\"), 1)) {\n blockedReasons.push(`${prefix}.cooldownSeconds must be non-zero`);\n }\n if (parseBridgeAdminControl(field(value, \"adminControl\", \"admin_control\")) == null) {\n blockedReasons.push(\n `${prefix}.adminControl expected none, consensusOnly, operatorKey, or unknown`,\n );\n }\n if (parseBridgeCircuitBreaker(field(value, \"circuitBreaker\", \"circuit_breaker\")) == null) {\n blockedReasons.push(`${prefix}.circuitBreaker expected armed, paused, disabled, or unknown`);\n }\n if (!decimalStringIsPositiveU256(field(value, \"insuranceAtomic\", \"insurance_atomic\"))) {\n blockedReasons.push(`${prefix}.insuranceAtomic must be a non-zero decimal u256`);\n }\n if (!isSafeIntegerAtLeast(field(value, \"updatedAtBlock\", \"updated_at_block\"), 0)) {\n blockedReasons.push(`${prefix}.updatedAtBlock must be a non-negative safe integer`);\n }\n\n const incident = field(value, \"lastIncidentDate\", \"last_incident_date\");\n if (incident !== undefined && incident !== null) {\n if (typeof incident !== \"string\" || !incidentDateIsValid(incident)) {\n blockedReasons.push(`${prefix}.lastIncidentDate must be YYYY-MM-DD`);\n }\n }\n}\n\nfunction coerceBridgeRouteCatalogueRoute(value: unknown): BridgeRouteCatalogueRoute {\n if (!isRecord(value) || !isRecord(value.verifier)) {\n throw new BridgeRouteCatalogueError([\"route catalogue validation did not normalize an object\"]);\n }\n const lastIncidentDate = field(value, \"lastIncidentDate\", \"last_incident_date\");\n const route: BridgeRouteCatalogueRoute = {\n tokenId: stringField(value, \"tokenId\", \"token_id\"),\n routeId: stringField(value, \"routeId\", \"route_id\").trim(),\n bridgeId: stringField(value, \"bridgeId\", \"bridge_id\"),\n wrappedAsset: stringField(value, \"wrappedAsset\", \"wrapped_asset\"),\n bridge: stringField(value, \"bridge\").trim(),\n protocol: optionalStringField(value, \"protocol\", \"routeProtocol\", \"route_protocol\"),\n asset: stringField(value, \"asset\").trim(),\n feeToken: stringField(value, \"feeToken\", \"fee_token\").trim(),\n sourceChain: stringField(value, \"sourceChain\", \"source_chain\").trim(),\n destinationChain: stringField(value, \"destinationChain\", \"destination_chain\").trim(),\n verifier: {\n model: stringField(value.verifier, \"model\").trim(),\n participantCount: numberField(value.verifier, \"participantCount\", \"participant_count\"),\n threshold: numberField(value.verifier, \"threshold\"),\n },\n drainCapAtomic: stringField(value, \"drainCapAtomic\", \"drain_cap_atomic\").trim(),\n finalityBlocks: numberField(value, \"finalityBlocks\", \"finality_blocks\"),\n cooldownSeconds: numberField(value, \"cooldownSeconds\", \"cooldown_seconds\"),\n adminControl: parseBridgeAdminControl(field(value, \"adminControl\", \"admin_control\"))!,\n circuitBreaker: parseBridgeCircuitBreaker(field(value, \"circuitBreaker\", \"circuit_breaker\"))!,\n insuranceAtomic: stringField(value, \"insuranceAtomic\", \"insurance_atomic\").trim(),\n updatedAtBlock: numberField(value, \"updatedAtBlock\", \"updated_at_block\"),\n };\n if (typeof lastIncidentDate === \"string\") {\n route.lastIncidentDate = lastIncidentDate.trim();\n } else if (lastIncidentDate === null) {\n route.lastIncidentDate = null;\n }\n return route;\n}\n\nfunction cloneBridgeRouteCatalogueRoute(route: BridgeRouteCatalogueRoute): BridgeRouteCatalogueRoute {\n return {\n ...route,\n verifier: { ...route.verifier },\n };\n}\n\nfunction isChainlinkCcipRoute(\n protocol: string | null | undefined,\n bridge: string,\n verifierModel: string,\n): boolean {\n const normalizedProtocol = normalizeBridgeProtocol(protocol ?? \"\");\n if (normalizedProtocol.length > 0) {\n return normalizedProtocol === \"chainlinkccip\" || normalizedProtocol === \"ccip\";\n }\n return bridgeLabelLooksCcip(bridge) || bridgeLabelLooksCcip(verifierModel);\n}\n\nfunction bridgeLabelLooksCcip(value: string): boolean {\n return normalizeBridgeProtocol(value).includes(\"ccip\");\n}\n\nfunction normalizeBridgeProtocol(value: string): string {\n return value.trim().toLowerCase().replace(/[^a-z0-9]/g, \"\");\n}\n\nfunction bridgeRouteCandidate(\n intent: BridgeTransferIntent,\n intentReasons: readonly string[],\n route: BridgeRouteDisclosure,\n): BridgeRouteCandidate {\n const assessment = assessBridgeRoute(route);\n const blockedReasons = [...intentReasons, ...assessment.blockedReasons];\n\n if (!trimmedEq(route.asset, intent.asset)) {\n blockedReasons.push(\"route asset does not match transfer intent\");\n }\n if (!trimmedEq(route.sourceChain, intent.sourceChain)) {\n blockedReasons.push(\"route source chain does not match transfer intent\");\n }\n if (!trimmedEq(route.destinationChain, intent.destinationChain)) {\n blockedReasons.push(\"route destination chain does not match transfer intent\");\n }\n if (\n intent.allowedRouteIds != null &&\n !intent.allowedRouteIds.some((routeId) => trimmedEq(routeId, route.routeId))\n ) {\n blockedReasons.push(\"route id not allowed by transfer policy\");\n }\n if (intent.minimumScore != null && assessment.score < intent.minimumScore) {\n blockedReasons.push(\"route score below transfer policy minimum\");\n }\n if (intent.maxFinalityBlocks != null && route.finalityBlocks > intent.maxFinalityBlocks) {\n blockedReasons.push(\"route finality exceeds transfer policy maximum\");\n }\n if (intent.maxCooldownSeconds != null && route.cooldownSeconds > intent.maxCooldownSeconds) {\n blockedReasons.push(\"route cooldown exceeds transfer policy maximum\");\n }\n if (\n decimalStringIsPositive(intent.amountAtomic) &&\n decimalStringIsPositive(route.drainCapAtomic) &&\n decimalStringGt(intent.amountAtomic, route.drainCapAtomic)\n ) {\n blockedReasons.push(\"transfer amount exceeds route drain cap\");\n }\n if (\n decimalStringIsPositive(intent.amountAtomic) &&\n decimalStringIsPositive(route.insuranceAtomic) &&\n decimalStringGt(intent.amountAtomic, route.insuranceAtomic)\n ) {\n blockedReasons.push(\"transfer amount exceeds disclosed insurance coverage\");\n }\n\n return {\n route,\n assessment,\n eligible: blockedReasons.length === 0,\n score: assessment.score,\n blockedReasons,\n warnings: [...assessment.warnings],\n };\n}\n\nfunction validateBridgeTransferIntent(intent: BridgeTransferIntent): string[] {\n const blockedReasons: string[] = [];\n if (intent.asset.trim() === \"\") blockedReasons.push(\"transfer asset missing\");\n if (!decimalStringIsPositive(intent.amountAtomic)) {\n blockedReasons.push(\"transfer amount missing or zero\");\n }\n if (intent.sourceChain.trim() === \"\") blockedReasons.push(\"transfer source chain missing\");\n if (intent.destinationChain.trim() === \"\") {\n blockedReasons.push(\"transfer destination chain missing\");\n }\n if (intent.recipient.trim() === \"\") blockedReasons.push(\"transfer recipient missing\");\n if (intent.minimumScore != null && intent.minimumScore > 100) {\n blockedReasons.push(\"minimum route score exceeds 100\");\n }\n return blockedReasons;\n}\n\nfunction compareBridgeCandidates(left: BridgeRouteCandidate, right: BridgeRouteCandidate): number {\n if (left.eligible !== right.eligible) return left.eligible ? -1 : 1;\n if (left.score !== right.score) return right.score - left.score;\n if (left.route.cooldownSeconds !== right.route.cooldownSeconds) {\n return left.route.cooldownSeconds - right.route.cooldownSeconds;\n }\n if (left.route.finalityBlocks !== right.route.finalityBlocks) {\n return left.route.finalityBlocks - right.route.finalityBlocks;\n }\n return left.route.routeId.localeCompare(right.route.routeId);\n}\n\nfunction decimalStringIsPositive(value: string): boolean {\n const trimmed = value.trim();\n return /^[0-9]+$/.test(trimmed) && /[1-9]/.test(trimmed);\n}\n\nfunction decimalStringGt(left: string, right: string): boolean {\n return decimalStringCompare(left, right) === 1;\n}\n\nfunction decimalStringCompare(left: string, right: string): -1 | 0 | 1 | null {\n const normalizedLeft = normalizedDecimalDigits(left);\n const normalizedRight = normalizedDecimalDigits(right);\n if (normalizedLeft == null || normalizedRight == null) return null;\n if (normalizedLeft.length !== normalizedRight.length) {\n return normalizedLeft.length > normalizedRight.length ? 1 : -1;\n }\n if (normalizedLeft === normalizedRight) return 0;\n return normalizedLeft > normalizedRight ? 1 : -1;\n}\n\nfunction normalizedDecimalDigits(value: string): string | null {\n const trimmed = value.trim();\n if (!/^[0-9]+$/.test(trimmed)) return null;\n const normalized = trimmed.replace(/^0+/, \"\");\n return normalized === \"\" ? \"0\" : normalized;\n}\n\nfunction trimmedEq(left: string, right: string): boolean {\n return left.trim() === right.trim();\n}\n\nfunction isRecord(value: unknown): value is JsonRecord {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nfunction field(record: JsonRecord, ...keys: string[]): unknown {\n for (const key of keys) {\n if (Object.prototype.hasOwnProperty.call(record, key)) return record[key];\n }\n return undefined;\n}\n\nfunction stringField(record: JsonRecord, ...keys: string[]): string {\n return field(record, ...keys) as string;\n}\n\nfunction optionalStringField(record: JsonRecord, ...keys: string[]): string | null {\n let raw: unknown;\n for (const key of keys) {\n if (Object.prototype.hasOwnProperty.call(record, key)) {\n raw = record[key];\n break;\n }\n }\n if (raw === undefined || raw === null) return null;\n return typeof raw === \"string\" ? raw.trim() : \"\";\n}\n\nfunction numberField(record: JsonRecord, ...keys: string[]): number {\n return field(record, ...keys) as number;\n}\n\nfunction validateTextField(\n name: string,\n value: unknown,\n maxLen: number,\n blockedReasons: string[],\n): string | null {\n if (typeof value !== \"string\") {\n blockedReasons.push(`${name} must be 1..=${maxLen} bytes`);\n return null;\n }\n const trimmed = value.trim();\n if (trimmed.length === 0 || utf8ByteLength(trimmed) > maxLen) {\n blockedReasons.push(`${name} must be 1..=${maxLen} bytes`);\n return null;\n }\n return trimmed;\n}\n\nfunction validateOptionalTextField(\n name: string,\n value: unknown,\n maxLen: number,\n blockedReasons: string[],\n): string | null {\n if (value === undefined || value === null) return null;\n return validateTextField(name, value, maxLen, blockedReasons);\n}\n\nfunction validateHexBytes(\n name: string,\n value: unknown,\n expectedBytes: number,\n blockedReasons: string[],\n): string | null {\n if (typeof value !== \"string\") {\n blockedReasons.push(`${name} must be ${expectedBytes} bytes of hex`);\n return null;\n }\n const trimmed = value.trim();\n const body = trimmed.startsWith(\"0x\") ? trimmed.slice(2) : trimmed;\n if (body.length !== expectedBytes * 2 || !/^[0-9a-fA-F]+$/.test(body)) {\n blockedReasons.push(`${name} must be ${expectedBytes} bytes of hex`);\n return null;\n }\n return body.toLowerCase();\n}\n\nfunction isU16(value: unknown): value is number {\n return typeof value === \"number\" && Number.isInteger(value) && value >= 0 && value <= 0xffff;\n}\n\nfunction isSafeIntegerAtLeast(value: unknown, minimum: number): value is number {\n return typeof value === \"number\" && Number.isSafeInteger(value) && value >= minimum;\n}\n\nfunction decimalStringIsPositiveU256(value: unknown): boolean {\n if (typeof value !== \"string\") return false;\n const trimmed = value.trim();\n if (!/^[0-9]+$/.test(trimmed)) return false;\n const parsed = BigInt(trimmed);\n return parsed > 0n && parsed <= MAX_U256;\n}\n\nfunction parseBridgeAdminControl(value: unknown): BridgeAdminControl | null {\n if (typeof value !== \"string\") return null;\n switch (enumKey(value)) {\n case \"none\":\n return \"none\";\n case \"consensusonly\":\n return \"consensusOnly\";\n case \"operatorkey\":\n return \"operatorKey\";\n case \"unknown\":\n return \"unknown\";\n default:\n return null;\n }\n}\n\nfunction parseBridgeCircuitBreaker(value: unknown): BridgeCircuitBreakerState | null {\n if (typeof value !== \"string\") return null;\n switch (enumKey(value)) {\n case \"armed\":\n return \"armed\";\n case \"paused\":\n return \"paused\";\n case \"disabled\":\n return \"disabled\";\n case \"unknown\":\n return \"unknown\";\n default:\n return null;\n }\n}\n\nfunction enumKey(value: string): string {\n return [...value]\n .filter((c) => c !== \"_\" && c !== \"-\")\n .join(\"\")\n .toLowerCase();\n}\n\nfunction incidentDateIsValid(value: string): boolean {\n return /^\\d{4}-\\d{2}-\\d{2}$/.test(value.trim());\n}\n\nfunction utf8ByteLength(value: string): number {\n return new TextEncoder().encode(value).length;\n}\n\nfunction expectLength(value: Uint8Array, len: number, name: string): Uint8Array {\n if (value.length !== len) {\n throw new BridgePrecompileError(`${name} must be ${len} bytes, got ${value.length}`);\n }\n return value;\n}\n\nfunction uint64Word(value: bigint | number | string, name: string): Uint8Array {\n const n = toBigint(value, name);\n if (n < 0n || n > 0xffff_ffff_ffff_ffffn) {\n throw new BridgePrecompileError(`${name} must fit uint64`);\n }\n const out = new Uint8Array(32);\n let rest = n;\n for (let i = 31; i >= 24; i--) {\n out[i] = Number(rest & 0xffn);\n rest >>= 8n;\n }\n return out;\n}\n\nfunction toBigint(value: bigint | number | string, name: string): bigint {\n if (typeof value === \"bigint\") return value;\n if (typeof value === \"number\") {\n if (!Number.isInteger(value) || !Number.isSafeInteger(value)) {\n throw new BridgePrecompileError(`${name} must be a safe integer`);\n }\n return BigInt(value);\n }\n if (!/^(0x[0-9a-fA-F]+|[0-9]+)$/.test(value)) {\n throw new BridgePrecompileError(`${name} must be an integer string`);\n }\n return BigInt(value);\n}\n\nfunction toBytes(value: BridgeBytesInput): 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 BridgePrecompileError(\"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","import { blake3 } from \"@noble/hashes/blake3.js\";\nimport { keccak_256 } from \"@noble/hashes/sha3.js\";\nimport { bls12_381 } from \"@noble/curves/bls12-381.js\";\nimport { ml_dsa65 } from \"@noble/post-quantum/ml-dsa.js\";\nimport {\n ML_DSA_65_PUBLIC_KEY_LEN,\n ML_DSA_65_SIGNATURE_LEN,\n mlDsa65AddressFromPublicKey,\n} from \"./crypto/ml-dsa.js\";\nimport type {\n NoEvmArchiveProof,\n NoEvmBoundedReceiptProof,\n NoEvmCompactReceiptProof,\n NoEvmFinalityBlockReference,\n NoEvmFinalityCertificate,\n NoEvmFinalityEvidence,\n NoEvmReceiptProof,\n} from \"./client.js\";\n\nexport const NO_EVM_RECEIPT_PROOF_SCHEMA = \"mono.no_evm_receipt_proof.v1\";\nexport const NO_EVM_RECEIPT_PROOF_TYPE = \"canonicalReceiptsTranscript\";\nexport const NO_EVM_RECEIPT_INCLUSION_PROOF_TYPE = \"canonicalReceiptInclusion\";\nexport const NO_EVM_RECEIPT_ROOT_ALGORITHM =\n \"keccak256-binary-merkle(monolythium/v4.1/receipt_leaf/1, monolythium/v4.1/receipt_node/1, duplicate-last padding)\";\nexport const NO_EVM_LEGACY_BINARY_RECEIPT_ROOT_ALGORITHM =\n \"keccak256(monolythium/v4.1/receipts_root_empty/1|receipt_leaf/1|receipt_node/1 binary Merkle)\";\nexport const NO_EVM_LEGACY_RECEIPT_ROOT_ALGORITHM =\n \"keccak256(monolythium/v2/receipts_root/1 || len || indexed bincode receipts)\";\nexport const NO_EVM_RECEIPT_CODEC = \"bincode(protocore_execution_types::Receipt)\";\nexport const NO_EVM_RECEIPTS_ROOT_DOMAIN = \"monolythium/v4.1/receipts_root_empty/1\";\nexport const NO_EVM_RECEIPT_LEAF_DOMAIN = \"monolythium/v4.1/receipt_leaf/1\";\nexport const NO_EVM_RECEIPT_NODE_DOMAIN = \"monolythium/v4.1/receipt_node/1\";\nexport const NO_EVM_COMPACT_INCLUSION_PROOF_SCHEMA =\n \"mono.no_evm_receipt_compact_inclusion.v1\";\nexport const NO_EVM_COMPACT_INCLUSION_TREE_ALGORITHM = \"binary-keccak-receipt-tree\";\nexport const NO_EVM_ARCHIVE_PROOF_SCHEMA = \"mono.no_evm_receipt_archive_binding.v1\";\nexport const NO_EVM_ARCHIVE_SIGNATURE_SCHEME = \"mono.snapshot.sig.v1\";\nexport const NO_EVM_FINALITY_EVIDENCE_SCHEMA = \"mono.no_evm_receipt_finality.v1\";\nexport const NO_EVM_FINALITY_EVIDENCE_SOURCE = \"blsRoundCertificate\";\n\nconst EMPTY_ROOT_DOMAIN_BYTES = new TextEncoder().encode(NO_EVM_RECEIPTS_ROOT_DOMAIN);\nconst LEAF_DOMAIN_BYTES = new TextEncoder().encode(NO_EVM_RECEIPT_LEAF_DOMAIN);\nconst NODE_DOMAIN_BYTES = new TextEncoder().encode(NO_EVM_RECEIPT_NODE_DOMAIN);\nconst UINT32_MAX = 0xffff_ffff;\nconst HASH_BYTE_LENGTH = 32;\nconst ARCHIVE_SIGNATURE_SIGNER_ID_BYTE_LENGTH = 20;\nconst BLS_PUBLIC_KEY_BYTE_LENGTH = 48;\nconst BLS_SIGNATURE_BYTE_LENGTH = 96;\nconst BLS_DST = \"BLS_SIG_BLS12381G2_XMD:SHA-256_SSWU_RO_POP_\";\nconst HEX_RE = /^[0-9a-fA-F]*$/u;\n\nexport type NoEvmReceiptProofErrorCode =\n | \"unsupported_schema\"\n | \"unsupported_proof_kind\"\n | \"unsupported_proof_type\"\n | \"unsupported_history_source\"\n | \"unsupported_root_algorithm\"\n | \"unsupported_receipt_codec\"\n | \"unsupported_compact_schema\"\n | \"unsupported_tree_algorithm\"\n | \"invalid_uint32\"\n | \"invalid_hex\"\n | \"invalid_hash_length\"\n | \"invalid_archive_signature\"\n | \"invalid_proof_shape\"\n | \"missing_target_receipt_bytes\"\n | \"too_many_receipts\"\n | \"receipt_too_large\"\n | \"receipt_count_mismatch\"\n | \"tx_index_out_of_bounds\"\n | \"receipts_root_mismatch\"\n | \"target_receipt_hash_mismatch\"\n | \"compact_root_mismatch\"\n | \"compact_leaf_hash_mismatch\"\n | \"compact_path_mismatch\";\n\nexport class NoEvmReceiptProofError extends Error {\n constructor(\n public readonly code: NoEvmReceiptProofErrorCode,\n message: string,\n ) {\n super(message);\n this.name = \"NoEvmReceiptProofError\";\n }\n}\n\nexport interface NoEvmReceiptProofVerification {\n /** Full decoded transcript for bounded proofs; compact proofs carry only the target. */\n receipts: Uint8Array[];\n receiptsRoot: string;\n targetReceiptHash: string;\n receiptCount: number;\n txIndex: number;\n targetReceipt: Uint8Array;\n proofKind: \"boundedCacheTranscript\" | \"compactInclusion\";\n}\n\nexport interface NoEvmArchiveTrustedSigner {\n publicKey: Uint8Array | readonly number[];\n signerId?: string;\n validFromHeight?: number | bigint;\n validToHeight?: number | bigint;\n}\n\nexport type NoEvmArchiveSignatureVerificationIssueCode =\n | \"missing_signature_digest\"\n | \"threshold_not_met\"\n | \"duplicate_signer\"\n | \"untrusted_signer\"\n | \"invalid_signature\"\n | \"invalid_trusted_public_key\";\n\nexport interface NoEvmArchiveSignatureVerificationIssue {\n code: NoEvmArchiveSignatureVerificationIssueCode;\n message: string;\n signatureIndex?: number;\n signerId?: string;\n}\n\nexport interface NoEvmArchiveSignatureVerification {\n verified: boolean;\n threshold: number;\n validSigners: string[];\n checkedSignatures: number;\n issues: NoEvmArchiveSignatureVerificationIssue[];\n}\n\nexport interface NoEvmReceiptTrustedBlsSigner {\n authorityIndex: number;\n publicKey: Uint8Array | readonly number[];\n validFromRound?: number | bigint;\n validToRound?: number | bigint;\n}\n\nexport interface NoEvmBlsFinalityVerification {\n finalityEvidencePresent: boolean;\n signerCountMatches: boolean;\n signerBitmapMatchesIndices: boolean;\n signerIndicesInRange: boolean;\n allSignersTrusted: boolean;\n thresholdMet: boolean;\n signatureValid: boolean;\n acceptedSignatureCount: number;\n requiredSignatureCount: number;\n verified: boolean;\n}\n\nexport interface NoEvmBlockBlsFinalityVerification {\n blockReference: NoEvmFinalityBlockReference;\n leaderCertificate: NoEvmBlsFinalityVerification;\n dacCertificate: NoEvmBlsFinalityVerification;\n verified: boolean;\n}\n\nexport type NoEvmReceiptFinalityTrustPolicy =\n | {\n mode: \"cluster\";\n chainId?: number | bigint;\n clusterPublicKey: Uint8Array | readonly number[];\n committeeSize: number;\n threshold: number;\n validFromRound?: number | bigint;\n validToRound?: number | bigint;\n }\n | {\n mode: \"multisig\";\n chainId?: number | bigint;\n trustedSigners: readonly NoEvmReceiptTrustedBlsSigner[];\n threshold: number;\n validFromRound?: number | bigint;\n validToRound?: number | bigint;\n };\n\nexport interface NoEvmReceiptTrustPolicy {\n chainId?: number | bigint;\n archive?: {\n trustedSigners: readonly NoEvmArchiveTrustedSigner[];\n threshold: number;\n validFromHeight?: number | bigint;\n validToHeight?: number | bigint;\n };\n finality?: NoEvmReceiptFinalityTrustPolicy;\n}\n\nexport type NoEvmReceiptTrustIssueCode =\n | \"missing_receipt_proof\"\n | \"missing_archive_proof\"\n | \"archive_policy_not_valid_at_height\"\n | \"archive_verification_failed\"\n | \"missing_finality_evidence\"\n | \"missing_finality_chain_id\"\n | \"finality_policy_not_valid_at_round\"\n | \"finality_verification_failed\";\n\nexport interface NoEvmReceiptTrustIssue {\n code: NoEvmReceiptTrustIssueCode;\n message: string;\n}\n\nexport interface NoEvmReceiptTrustVerification {\n verified: boolean;\n receiptProof: NoEvmReceiptProofVerification | null;\n archiveSignatures: NoEvmArchiveSignatureVerification | null;\n finalityEvidence: NoEvmBlsFinalityVerification | null;\n issues: NoEvmReceiptTrustIssue[];\n}\n\nexport function decodeNoEvmReceiptTranscript(proof: NoEvmReceiptProof): Uint8Array[] {\n if (!Array.isArray(proof.receiptTranscript)) {\n throw new NoEvmReceiptProofError(\n \"invalid_proof_shape\",\n \"boundedCacheTranscript proof requires receiptTranscript\",\n );\n }\n\n return proof.receiptTranscript.map((hex, index) =>\n decodeHexBytes(hex, `receiptTranscript[${index}]`),\n );\n}\n\nexport function computeNoEvmReceiptsRoot(receipts: readonly Uint8Array[]): string {\n return bytesToHex(computeNoEvmReceiptsRootBytes(receipts));\n}\n\nexport function computeNoEvmTargetReceiptHash(receiptBytes: Uint8Array): string {\n return bytesToHex(keccak_256(receiptBytes));\n}\n\nexport function verifyNoEvmReceiptProof(\n proof: NoEvmReceiptProof | null | undefined,\n): NoEvmReceiptProofVerification | null {\n if (proof == null) return null;\n\n const proofKind = getProofKind(proof);\n switch (proofKind) {\n case \"boundedCacheTranscript\":\n return verifyBoundedReceiptProof(proof);\n case \"compactInclusion\":\n return verifyCompactReceiptProof(proof);\n default:\n throw new NoEvmReceiptProofError(\n \"unsupported_proof_kind\",\n `unsupported no-EVM receipt proofKind: ${proofKind}`,\n );\n }\n}\n\nexport function verifyNoEvmArchiveProofSignatures(\n archiveProof: NoEvmArchiveProof,\n trustedSigners: readonly NoEvmArchiveTrustedSigner[],\n threshold: number,\n): NoEvmArchiveSignatureVerification {\n if (!Number.isSafeInteger(threshold) || threshold < 1) {\n throw new NoEvmReceiptProofError(\"invalid_proof_shape\", \"threshold must be at least 1\");\n }\n validateArchiveProofObject(archiveProof);\n\n const roster = new Map<string, Uint8Array>();\n trustedSigners.forEach((signer, index) => {\n const publicKey = expectArchivePublicKey(signer.publicKey, `trustedSigners[${index}].publicKey`);\n const signerId = mlDsa65AddressFromPublicKey(publicKey);\n if (signer.signerId !== undefined && normalizeSignerId(signer.signerId) !== signerId) {\n throw new NoEvmReceiptProofError(\n \"invalid_proof_shape\",\n `trustedSigners[${index}].signerId does not match public key signer id ${signerId}`,\n );\n }\n if (roster.has(signerId)) {\n throw new NoEvmReceiptProofError(\n \"invalid_proof_shape\",\n `trustedSigners contains duplicate signer id ${signerId}`,\n );\n }\n roster.set(signerId, publicKey);\n });\n\n const signatureMaterial =\n archiveProof.signatureDigest != null || archiveProof.signatures.length > 0\n ? {\n digestValue: archiveProof.signatureDigest,\n digestField: \"archiveProof.signatureDigest\",\n signatures: archiveProof.signatures,\n signatureFieldPrefix: \"archiveProof.signatures\",\n }\n : archiveProof.coveringSnapshot != null\n ? {\n digestValue: archiveProof.coveringSnapshot.signatureDigest,\n digestField: \"archiveProof.coveringSnapshot.signatureDigest\",\n signatures: archiveProof.coveringSnapshot.signatures,\n signatureFieldPrefix: \"archiveProof.coveringSnapshot.signatures\",\n }\n : {\n digestValue: archiveProof.signatureDigest,\n digestField: \"archiveProof.signatureDigest\",\n signatures: archiveProof.signatures,\n signatureFieldPrefix: \"archiveProof.signatures\",\n };\n\n const issues: NoEvmArchiveSignatureVerificationIssue[] = [];\n const digestValue = signatureMaterial.digestValue;\n if (digestValue == null) {\n issues.push({\n code: \"missing_signature_digest\",\n message: \"archiveProof.signatureDigest is required for signature verification\",\n });\n return {\n verified: false,\n threshold,\n validSigners: [],\n checkedSignatures: signatureMaterial.signatures.length,\n issues,\n };\n }\n const signatureDigest = decodeHash(digestValue, signatureMaterial.digestField);\n const seen = new Set<string>();\n const validSigners: string[] = [];\n\n signatureMaterial.signatures.forEach((signature, signatureIndex) => {\n const parsed = parseArchiveProofSignature(\n signature,\n signatureIndex,\n signatureMaterial.signatureFieldPrefix,\n );\n if (seen.has(parsed.signerId)) {\n issues.push({\n code: \"duplicate_signer\",\n message: `duplicate archive proof signer ${parsed.signerId}`,\n signatureIndex,\n signerId: parsed.signerId,\n });\n return;\n }\n seen.add(parsed.signerId);\n\n const publicKey = roster.get(parsed.signerId);\n if (publicKey === undefined) {\n issues.push({\n code: \"untrusted_signer\",\n message: `archive proof signer ${parsed.signerId} is not trusted`,\n signatureIndex,\n signerId: parsed.signerId,\n });\n return;\n }\n if (parsed.payload.length !== ML_DSA_65_SIGNATURE_LEN) {\n issues.push({\n code: \"invalid_signature\",\n message: `archive proof signature payload must be ${ML_DSA_65_SIGNATURE_LEN} bytes`,\n signatureIndex,\n signerId: parsed.signerId,\n });\n return;\n }\n let ok = false;\n try {\n ok = ml_dsa65.verify(parsed.payload, signatureDigest, publicKey);\n } catch {\n issues.push({\n code: \"invalid_trusted_public_key\",\n message: `trusted public key for ${parsed.signerId} is malformed`,\n signatureIndex,\n signerId: parsed.signerId,\n });\n return;\n }\n if (ok) {\n validSigners.push(parsed.signerId);\n } else {\n issues.push({\n code: \"invalid_signature\",\n message: `archive proof signature from ${parsed.signerId} is invalid`,\n signatureIndex,\n signerId: parsed.signerId,\n });\n }\n });\n\n if (validSigners.length < threshold) {\n issues.push({\n code: \"threshold_not_met\",\n message: `archive proof has ${validSigners.length} valid trusted signatures, below threshold ${threshold}`,\n });\n }\n\n return {\n verified: issues.length === 0,\n threshold,\n validSigners,\n checkedSignatures: signatureMaterial.signatures.length,\n issues,\n };\n}\n\nexport function computeNoEvmRoundFinalityMessage(\n chainId: number | bigint,\n round: number | bigint,\n): Uint8Array {\n const preimage = new Uint8Array(5 + 8 + 8);\n preimage.set(new TextEncoder().encode(\"round\"), 0);\n writeU64Le(preimage, 5, chainId, \"chainId\");\n writeU64Le(preimage, 13, round, \"round\");\n return blake3(preimage);\n}\n\nexport function computeNoEvmLeaderFinalityMessage(\n chainId: number | bigint,\n blockReference: NoEvmFinalityBlockReference,\n): Uint8Array {\n return computeNoEvmBlockFinalityMessage(\"leader\", chainId, blockReference);\n}\n\nexport function computeNoEvmDacFinalityMessage(\n chainId: number | bigint,\n blockReference: NoEvmFinalityBlockReference,\n): Uint8Array {\n return computeNoEvmBlockFinalityMessage(\"dac\", chainId, blockReference);\n}\n\nfunction computeNoEvmBlockFinalityMessage(\n domain: \"leader\" | \"dac\",\n chainId: number | bigint,\n blockReference: NoEvmFinalityBlockReference,\n): Uint8Array {\n const domainBytes = new TextEncoder().encode(domain);\n const digest = decodeHash(\n blockReference.digest,\n \"finalityEvidence.blockReference.digest\",\n );\n const preimage = new Uint8Array(domainBytes.length + 8 + 2 + 8 + HASH_BYTE_LENGTH);\n let offset = 0;\n preimage.set(domainBytes, offset);\n offset += domainBytes.length;\n writeU64Le(preimage, offset, chainId, \"chainId\");\n offset += 8;\n writeU16Le(preimage, offset, blockReference.authority, \"finalityEvidence.blockReference.authority\");\n offset += 2;\n writeU64Le(preimage, offset, blockReference.round, \"finalityEvidence.blockReference.round\");\n offset += 8;\n preimage.set(digest, offset);\n return blake3(preimage);\n}\n\nexport function verifyNoEvmFinalityEvidenceThreshold(\n finalityEvidence: NoEvmFinalityEvidence,\n options: {\n chainId: number | bigint;\n clusterPublicKey: Uint8Array | readonly number[];\n committeeSize: number;\n threshold: number;\n },\n): NoEvmBlsFinalityVerification {\n validateFinalityThreshold(options.threshold, options.committeeSize);\n const clusterPublicKey = expectBlsBytes(\n options.clusterPublicKey,\n BLS_PUBLIC_KEY_BYTE_LENGTH,\n \"clusterPublicKey\",\n );\n validateFinalityEvidenceForVerification(finalityEvidence);\n const message = computeNoEvmRoundFinalityMessage(options.chainId, finalityEvidence.round);\n return verifyFinalityCertificateThreshold(\n finalityEvidence.certificate,\n \"finalityEvidence.certificate\",\n message,\n clusterPublicKey,\n options.committeeSize,\n options.threshold,\n );\n}\n\nexport function verifyNoEvmFinalityEvidenceMultisig(\n finalityEvidence: NoEvmFinalityEvidence,\n options: {\n chainId: number | bigint;\n trustedSigners: readonly NoEvmReceiptTrustedBlsSigner[];\n threshold: number;\n },\n): NoEvmBlsFinalityVerification {\n validateFinalityThreshold(options.threshold, options.trustedSigners.length);\n validateFinalityEvidenceForVerification(finalityEvidence);\n const message = computeNoEvmRoundFinalityMessage(options.chainId, finalityEvidence.round);\n return verifyFinalityCertificateMultisig(\n finalityEvidence.certificate,\n \"finalityEvidence.certificate\",\n message,\n options.trustedSigners,\n options.threshold,\n );\n}\n\nexport function verifyNoEvmBlockFinalityEvidenceThreshold(\n finalityEvidence: NoEvmFinalityEvidence,\n options: {\n chainId: number | bigint;\n clusterPublicKey: Uint8Array | readonly number[];\n committeeSize: number;\n threshold: number;\n },\n): NoEvmBlockBlsFinalityVerification {\n validateFinalityThreshold(options.threshold, options.committeeSize);\n validateFinalityEvidenceForVerification(finalityEvidence);\n const clusterPublicKey = expectBlsBytes(\n options.clusterPublicKey,\n BLS_PUBLIC_KEY_BYTE_LENGTH,\n \"clusterPublicKey\",\n );\n const blockReference = requireBlockReference(finalityEvidence);\n const leaderCertificate = requireBlockFinalityCertificate(\n finalityEvidence.leaderCertificate,\n \"finalityEvidence.leaderCertificate\",\n );\n const dacCertificate = requireBlockFinalityCertificate(\n finalityEvidence.dacCertificate,\n \"finalityEvidence.dacCertificate\",\n );\n const leaderMessage = computeNoEvmLeaderFinalityMessage(options.chainId, blockReference);\n const dacMessage = computeNoEvmDacFinalityMessage(options.chainId, blockReference);\n const leaderVerification = verifyFinalityCertificateThreshold(\n leaderCertificate,\n \"finalityEvidence.leaderCertificate\",\n leaderMessage,\n clusterPublicKey,\n options.committeeSize,\n options.threshold,\n );\n const dacVerification = verifyFinalityCertificateThreshold(\n dacCertificate,\n \"finalityEvidence.dacCertificate\",\n dacMessage,\n clusterPublicKey,\n options.committeeSize,\n options.threshold,\n );\n return {\n blockReference,\n leaderCertificate: leaderVerification,\n dacCertificate: dacVerification,\n verified: leaderVerification.verified && dacVerification.verified,\n };\n}\n\nexport function verifyNoEvmBlockFinalityEvidenceMultisig(\n finalityEvidence: NoEvmFinalityEvidence,\n options: {\n chainId: number | bigint;\n trustedSigners: readonly NoEvmReceiptTrustedBlsSigner[];\n threshold: number;\n },\n): NoEvmBlockBlsFinalityVerification {\n validateFinalityThreshold(options.threshold, options.trustedSigners.length);\n validateFinalityEvidenceForVerification(finalityEvidence);\n const blockReference = requireBlockReference(finalityEvidence);\n const leaderCertificate = requireBlockFinalityCertificate(\n finalityEvidence.leaderCertificate,\n \"finalityEvidence.leaderCertificate\",\n );\n const dacCertificate = requireBlockFinalityCertificate(\n finalityEvidence.dacCertificate,\n \"finalityEvidence.dacCertificate\",\n );\n const leaderMessage = computeNoEvmLeaderFinalityMessage(options.chainId, blockReference);\n const dacMessage = computeNoEvmDacFinalityMessage(options.chainId, blockReference);\n const leaderVerification = verifyFinalityCertificateMultisig(\n leaderCertificate,\n \"finalityEvidence.leaderCertificate\",\n leaderMessage,\n options.trustedSigners,\n options.threshold,\n );\n const dacVerification = verifyFinalityCertificateMultisig(\n dacCertificate,\n \"finalityEvidence.dacCertificate\",\n dacMessage,\n options.trustedSigners,\n options.threshold,\n );\n return {\n blockReference,\n leaderCertificate: leaderVerification,\n dacCertificate: dacVerification,\n verified: leaderVerification.verified && dacVerification.verified,\n };\n}\n\nfunction verifyFinalityCertificateMultisig(\n certificate: NoEvmFinalityCertificate,\n field: string,\n message: Uint8Array,\n trustedSigners: readonly NoEvmReceiptTrustedBlsSigner[],\n threshold: number,\n): NoEvmBlsFinalityVerification {\n const signature = decodeFinalityCertificateSignature(certificate, field);\n const signerIndices = signerIndicesFromBitmap(\n decodeHexBytes(certificate.signersBitmap, `${field}.signersBitmap`),\n );\n const committeeSize =\n trustedSigners.reduce((max, signer) => Math.max(max, signer.authorityIndex), -1) + 1;\n const base = finalityCertificateVerificationBase(\n certificate,\n signerIndices,\n committeeSize,\n threshold,\n );\n\n const roster = new Map<number, Uint8Array>();\n trustedSigners.forEach((signer, index) => {\n assertUint32(signer.authorityIndex, `trustedSigners[${index}].authorityIndex`);\n if (signer.authorityIndex > 0xffff) {\n throw new NoEvmReceiptProofError(\n \"invalid_proof_shape\",\n `trustedSigners[${index}].authorityIndex must fit u16`,\n );\n }\n if (roster.has(signer.authorityIndex)) {\n throw new NoEvmReceiptProofError(\n \"invalid_proof_shape\",\n `trustedSigners contains duplicate authority index ${signer.authorityIndex}`,\n );\n }\n roster.set(\n signer.authorityIndex,\n expectBlsBytes(\n signer.publicKey,\n BLS_PUBLIC_KEY_BYTE_LENGTH,\n `trustedSigners[${index}].publicKey`,\n ),\n );\n });\n\n const publicKeys: Uint8Array[] = [];\n let allSignersTrusted = true;\n signerIndices.forEach((signerIndex) => {\n const publicKey = roster.get(signerIndex);\n if (publicKey === undefined) {\n allSignersTrusted = false;\n } else {\n publicKeys.push(publicKey);\n }\n });\n\n const signatureValid =\n allSignersTrusted &&\n publicKeys.length > 0 &&\n verifyBlsAggregateSignature(publicKeys, message, signature);\n\n return finalizeBlsFinalityVerification({\n ...base,\n allSignersTrusted,\n signatureValid,\n });\n}\n\nfunction verifyFinalityCertificateThreshold(\n certificate: NoEvmFinalityCertificate,\n field: string,\n message: Uint8Array,\n clusterPublicKey: Uint8Array,\n committeeSize: number,\n threshold: number,\n): NoEvmBlsFinalityVerification {\n const signature = decodeFinalityCertificateSignature(certificate, field);\n const signerIndices = signerIndicesFromBitmap(\n decodeHexBytes(certificate.signersBitmap, `${field}.signersBitmap`),\n );\n const base = finalityCertificateVerificationBase(\n certificate,\n signerIndices,\n committeeSize,\n threshold,\n );\n const signatureValid =\n base.signerIndicesInRange && verifyBlsSignature(clusterPublicKey, message, signature);\n\n return finalizeBlsFinalityVerification({\n ...base,\n allSignersTrusted: base.signerIndicesInRange,\n signatureValid,\n });\n}\n\nexport function verifyNoEvmReceiptProofTrust(\n proof: NoEvmReceiptProof | null | undefined,\n policy: NoEvmReceiptTrustPolicy,\n): NoEvmReceiptTrustVerification {\n const receiptProof = verifyNoEvmReceiptProof(proof);\n const issues: NoEvmReceiptTrustIssue[] = [];\n let archiveSignatures: NoEvmArchiveSignatureVerification | null = null;\n let finalityEvidence: NoEvmBlsFinalityVerification | null = null;\n\n if (receiptProof == null) {\n issues.push({\n code: \"missing_receipt_proof\",\n message: \"native receipt proof is required for trust verification\",\n });\n }\n\n if (policy.archive != null) {\n const archiveProof = proof == null ? null : (proof as NoEvmCompactReceiptProof).archiveProof;\n if (archiveProof == null) {\n issues.push({\n code: \"missing_archive_proof\",\n message: \"native receipt proof does not carry archive signature material\",\n });\n } else {\n const proofBlockHeight = proof!.blockHeight;\n const blockHeight = BigInt(proofBlockHeight);\n const archivePolicyValid = isWithinOptionalBounds(\n blockHeight,\n policy.archive.validFromHeight,\n policy.archive.validToHeight,\n );\n const activeTrustedSigners = policy.archive.trustedSigners.filter((signer) =>\n isWithinOptionalBounds(blockHeight, signer.validFromHeight, signer.validToHeight),\n );\n if (!archivePolicyValid) {\n issues.push({\n code: \"archive_policy_not_valid_at_height\",\n message: `archive trust policy is not valid at block height ${proofBlockHeight}`,\n });\n }\n archiveSignatures = verifyNoEvmArchiveProofSignatures(\n archiveProof,\n activeTrustedSigners,\n policy.archive.threshold,\n );\n if (!archiveSignatures.verified) {\n issues.push({\n code: \"archive_verification_failed\",\n message: \"archive signature material did not satisfy the trusted policy\",\n });\n }\n }\n }\n\n if (policy.finality != null) {\n const proofFinality = proof == null ? null : proof.finalityEvidence;\n if (proofFinality == null) {\n issues.push({\n code: \"missing_finality_evidence\",\n message: \"native receipt proof does not carry BLS finality evidence\",\n });\n } else {\n const chainId = policy.finality.chainId ?? policy.chainId;\n if (chainId == null) {\n issues.push({\n code: \"missing_finality_chain_id\",\n message: \"finality trust policy requires a chain id\",\n });\n } else if (policy.finality.mode === \"cluster\") {\n const round = BigInt(proofFinality.round);\n const finalityPolicyValid = isWithinOptionalBounds(\n round,\n policy.finality.validFromRound,\n policy.finality.validToRound,\n );\n if (!finalityPolicyValid) {\n issues.push({\n code: \"finality_policy_not_valid_at_round\",\n message: `finality trust policy is not valid at round ${proofFinality.round}`,\n });\n }\n finalityEvidence = verifyNoEvmFinalityEvidenceThreshold(proofFinality, {\n chainId,\n clusterPublicKey: policy.finality.clusterPublicKey,\n committeeSize: policy.finality.committeeSize,\n threshold: policy.finality.threshold,\n });\n } else {\n const round = BigInt(proofFinality.round);\n const finalityPolicyValid = isWithinOptionalBounds(\n round,\n policy.finality.validFromRound,\n policy.finality.validToRound,\n );\n const activeTrustedSigners = policy.finality.trustedSigners.filter((signer) =>\n isWithinOptionalBounds(round, signer.validFromRound, signer.validToRound),\n );\n if (!finalityPolicyValid) {\n issues.push({\n code: \"finality_policy_not_valid_at_round\",\n message: `finality trust policy is not valid at round ${proofFinality.round}`,\n });\n }\n finalityEvidence = verifyNoEvmFinalityEvidenceMultisig(proofFinality, {\n chainId,\n trustedSigners: activeTrustedSigners,\n threshold: policy.finality.threshold,\n });\n }\n if (finalityEvidence != null && !finalityEvidence.verified) {\n issues.push({\n code: \"finality_verification_failed\",\n message: \"BLS finality evidence did not satisfy the trusted policy\",\n });\n }\n }\n }\n\n return {\n verified: receiptProof != null && issues.length === 0,\n receiptProof,\n archiveSignatures,\n finalityEvidence,\n issues,\n };\n}\n\nfunction isWithinOptionalBounds(\n value: bigint,\n validFrom: number | bigint | undefined,\n validTo: number | bigint | undefined,\n): boolean {\n if (validFrom != null && value < BigInt(validFrom)) return false;\n if (validTo != null && value > BigInt(validTo)) return false;\n return true;\n}\n\nfunction verifyBoundedReceiptProof(proof: NoEvmReceiptProof): NoEvmReceiptProofVerification {\n validateCommonProofMetadata(proof);\n assertSupported(\n proof.proofType,\n NO_EVM_RECEIPT_PROOF_TYPE,\n \"proofType\",\n \"unsupported_proof_type\",\n );\n validateBoundedHistorySource(proof);\n validateNoCompactOrArchiveMaterial(proof);\n assertUint32(proof.receiptCount, \"receiptCount\");\n assertUint32(proof.txIndex, \"txIndex\");\n\n const receipts = decodeNoEvmReceiptTranscript(proof);\n if (proof.receiptCount !== receipts.length) {\n throw new NoEvmReceiptProofError(\n \"receipt_count_mismatch\",\n `receiptCount declares ${proof.receiptCount} receipts but receiptTranscript has ${receipts.length}`,\n );\n }\n\n const targetReceipt = receipts[proof.txIndex];\n if (targetReceipt === undefined) {\n throw new NoEvmReceiptProofError(\n \"tx_index_out_of_bounds\",\n `txIndex ${proof.txIndex} is out of bounds for ${receipts.length} decoded receipts`,\n );\n }\n\n const actualRoot = computeNoEvmReceiptsRoot(receipts);\n const expectedRoot = decodeHash(proof.receiptsRoot, \"receiptsRoot\");\n if (!bytesEqual(expectedRoot, decodeHash(actualRoot, \"computedReceiptsRoot\"))) {\n throw new NoEvmReceiptProofError(\n \"receipts_root_mismatch\",\n `receiptsRoot mismatch: expected ${proof.receiptsRoot}, computed ${actualRoot}`,\n );\n }\n\n const actualTargetHash = computeNoEvmTargetReceiptHash(targetReceipt);\n const expectedTargetHash = decodeHash(proof.targetReceiptHash, \"targetReceiptHash\");\n if (!bytesEqual(expectedTargetHash, decodeHash(actualTargetHash, \"computedTargetReceiptHash\"))) {\n throw new NoEvmReceiptProofError(\n \"target_receipt_hash_mismatch\",\n `targetReceiptHash mismatch: expected ${proof.targetReceiptHash}, computed ${actualTargetHash}`,\n );\n }\n\n return {\n receipts,\n receiptsRoot: actualRoot,\n targetReceiptHash: actualTargetHash,\n receiptCount: receipts.length,\n txIndex: proof.txIndex,\n targetReceipt,\n proofKind: \"boundedCacheTranscript\",\n };\n}\n\nfunction verifyCompactReceiptProof(proof: NoEvmReceiptProof): NoEvmReceiptProofVerification {\n validateCommonProofMetadata(proof);\n assertSupported(\n proof.proofType,\n NO_EVM_RECEIPT_INCLUSION_PROOF_TYPE,\n \"proofType\",\n \"unsupported_proof_type\",\n );\n validateCompactHistorySource(proof);\n validateOptionalArchiveProof(proof);\n assertUint32(proof.receiptCount, \"receiptCount\");\n assertUint32(proof.txIndex, \"txIndex\");\n\n const compactProof = getCompactInclusionProof(proof);\n assertSupported(\n compactProof.schema,\n NO_EVM_COMPACT_INCLUSION_PROOF_SCHEMA,\n \"compactInclusionProof.schema\",\n \"unsupported_compact_schema\",\n );\n assertSupported(\n compactProof.treeAlgorithm,\n NO_EVM_COMPACT_INCLUSION_TREE_ALGORITHM,\n \"compactInclusionProof.treeAlgorithm\",\n \"unsupported_tree_algorithm\",\n );\n\n if (!Array.isArray(compactProof.siblingHashes) || !Array.isArray(compactProof.pathSides)) {\n throw new NoEvmReceiptProofError(\n \"invalid_proof_shape\",\n \"compactInclusionProof siblingHashes and pathSides must be arrays\",\n );\n }\n if (compactProof.siblingHashes.length !== compactProof.pathSides.length) {\n throw new NoEvmReceiptProofError(\n \"invalid_proof_shape\",\n \"compactInclusionProof siblingHashes/pathSides length mismatch\",\n );\n }\n\n const targetReceiptBytes = getTargetReceiptBytes(proof);\n const targetReceipt = decodeHexBytes(targetReceiptBytes, \"targetReceiptBytes\");\n const actualTargetHash = computeNoEvmTargetReceiptHash(targetReceipt);\n const expectedTargetHash = decodeHash(proof.targetReceiptHash, \"targetReceiptHash\");\n if (!bytesEqual(expectedTargetHash, decodeHash(actualTargetHash, \"computedTargetReceiptHash\"))) {\n throw new NoEvmReceiptProofError(\n \"target_receipt_hash_mismatch\",\n `targetReceiptHash mismatch: expected ${proof.targetReceiptHash}, computed ${actualTargetHash}`,\n );\n }\n\n const actualLeafHashBytes = computeNoEvmReceiptLeafHashBytes(targetReceipt, proof.txIndex);\n const expectedLeafHashBytes = decodeHash(\n compactProof.leafHash,\n \"compactInclusionProof.leafHash\",\n );\n if (!bytesEqual(expectedLeafHashBytes, actualLeafHashBytes)) {\n throw new NoEvmReceiptProofError(\n \"compact_leaf_hash_mismatch\",\n `compactInclusionProof.leafHash mismatch: expected ${compactProof.leafHash}, computed ${bytesToHex(\n actualLeafHashBytes,\n )}`,\n );\n }\n\n const compactRootBytes = decodeHash(compactProof.root, \"compactInclusionProof.root\");\n const receiptsRootBytes = decodeHash(proof.receiptsRoot, \"receiptsRoot\");\n if (!bytesEqual(receiptsRootBytes, compactRootBytes)) {\n throw new NoEvmReceiptProofError(\n \"compact_root_mismatch\",\n `receiptsRoot must equal compactInclusionProof.root: receiptsRoot ${proof.receiptsRoot}, compact root ${compactProof.root}`,\n );\n }\n\n const siblingHashes = compactProof.siblingHashes.map((hash, index) =>\n decodeHash(hash, `compactInclusionProof.siblingHashes[${index}]`),\n );\n const pathSides = compactProof.pathSides.map((side, index) => {\n if (typeof side !== \"boolean\") {\n throw new NoEvmReceiptProofError(\n \"invalid_proof_shape\",\n `compactInclusionProof.pathSides[${index}] must be a boolean`,\n );\n }\n return side;\n });\n const actualRootBytes = computeCompactRootFromPath(\n actualLeafHashBytes,\n siblingHashes,\n pathSides,\n );\n if (!bytesEqual(actualRootBytes, compactRootBytes)) {\n throw new NoEvmReceiptProofError(\n \"compact_path_mismatch\",\n `compact inclusion path mismatch: expected ${compactProof.root}, computed ${bytesToHex(\n actualRootBytes,\n )}`,\n );\n }\n\n return {\n receipts: [],\n receiptsRoot: bytesToHex(actualRootBytes),\n targetReceiptHash: actualTargetHash,\n receiptCount: proof.receiptCount,\n txIndex: proof.txIndex,\n targetReceipt,\n proofKind: \"compactInclusion\",\n };\n}\n\nfunction validateCommonProofMetadata(proof: NoEvmReceiptProof): void {\n assertSupported(\n proof.schema,\n NO_EVM_RECEIPT_PROOF_SCHEMA,\n \"schema\",\n \"unsupported_schema\",\n );\n assertSupportedRootAlgorithm(proof.rootAlgorithm);\n assertSupported(\n proof.receiptCodec,\n NO_EVM_RECEIPT_CODEC,\n \"receiptCodec\",\n \"unsupported_receipt_codec\",\n );\n validateOptionalFinalityEvidence(proof);\n}\n\nfunction validateBoundedHistorySource(proof: NoEvmReceiptProof): void {\n const historySource = getOptionalHistorySource(proof);\n if (\n historySource !== undefined &&\n historySource !== \"legacyUnspecified\" &&\n historySource !== \"liveBlockCache\"\n ) {\n throw new NoEvmReceiptProofError(\n \"unsupported_history_source\",\n `unsupported no-EVM receipt proof historySource: ${historySource}`,\n );\n }\n}\n\nfunction validateCompactHistorySource(proof: NoEvmReceiptProof): void {\n const historySource = getHistorySource(proof);\n if (historySource !== \"liveBlockCache\" && historySource !== \"indexerReceiptArchive\") {\n throw new NoEvmReceiptProofError(\n \"unsupported_history_source\",\n `unsupported no-EVM receipt proof historySource: ${historySource}`,\n );\n }\n}\n\nfunction validateNoCompactOrArchiveMaterial(proof: NoEvmReceiptProof): void {\n const maybeBounded = proof as NoEvmBoundedReceiptProof & {\n archiveProof?: unknown;\n compactInclusionProof?: unknown;\n };\n if (maybeBounded.compactInclusionProof != null) {\n throw new NoEvmReceiptProofError(\n \"invalid_proof_shape\",\n \"boundedCacheTranscript proof cannot carry compactInclusionProof\",\n );\n }\n if (maybeBounded.archiveProof != null) {\n throw new NoEvmReceiptProofError(\n \"invalid_proof_shape\",\n \"boundedCacheTranscript proof cannot carry archiveProof\",\n );\n }\n}\n\nfunction validateOptionalArchiveProof(proof: NoEvmReceiptProof): void {\n const archiveProof = (proof as NoEvmCompactReceiptProof).archiveProof;\n if (archiveProof == null) return;\n validateArchiveProofObject(archiveProof, proof.blockHeight);\n}\n\nfunction validateArchiveProofObject(\n archiveProof: NoEvmArchiveProof | unknown,\n proofBlockHeight?: number,\n): void {\n if (!isRecord(archiveProof)) {\n throw new NoEvmReceiptProofError(\n \"invalid_proof_shape\",\n \"archiveProof must be an object when present\",\n );\n }\n assertSupported(\n archiveProof.schema,\n NO_EVM_ARCHIVE_PROOF_SCHEMA,\n \"archiveProof.schema\",\n \"unsupported_schema\",\n );\n if (typeof archiveProof.source !== \"string\" || archiveProof.source.length === 0) {\n throw new NoEvmReceiptProofError(\n \"invalid_proof_shape\",\n \"archiveProof.source must be a non-empty string\",\n );\n }\n decodeHash(archiveProof.manifestHash, \"archiveProof.manifestHash\");\n const archiveContentHash = decodeHash(archiveProof.contentHash, \"archiveProof.contentHash\");\n if (archiveProof.signatureDigest != null) {\n decodeHash(archiveProof.signatureDigest, \"archiveProof.signatureDigest\");\n }\n if (\n !Array.isArray(archiveProof.signatures) ||\n archiveProof.signatures.some((signature) => typeof signature !== \"string\")\n ) {\n throw new NoEvmReceiptProofError(\n \"invalid_proof_shape\",\n \"archiveProof.signatures must be an array of strings\",\n );\n }\n archiveProof.signatures.forEach((signature, index) =>\n validateArchiveProofSignature(signature, index, \"archiveProof.signatures\"),\n );\n if (archiveProof.coveringSnapshot != null) {\n validateCoveringSnapshotObject(\n archiveProof.coveringSnapshot,\n archiveContentHash,\n proofBlockHeight,\n );\n }\n}\n\nfunction validateCoveringSnapshotObject(\n snapshot: unknown,\n archiveContentHash: Uint8Array,\n proofBlockHeight?: number,\n): void {\n if (!isRecord(snapshot)) {\n throw new NoEvmReceiptProofError(\n \"invalid_proof_shape\",\n \"archiveProof.coveringSnapshot must be an object when present\",\n );\n }\n assertSafeNonNegativeInteger(\n snapshot.snapshotHeight,\n \"archiveProof.coveringSnapshot.snapshotHeight\",\n );\n assertSafeNonNegativeInteger(\n snapshot.checkpointFrom,\n \"archiveProof.coveringSnapshot.checkpointFrom\",\n );\n assertSafeNonNegativeInteger(snapshot.checkpointTo, \"archiveProof.coveringSnapshot.checkpointTo\");\n decodeHash(snapshot.manifestHash, \"archiveProof.coveringSnapshot.manifestHash\");\n decodeHash(snapshot.signatureDigest, \"archiveProof.coveringSnapshot.signatureDigest\");\n decodeHash(snapshot.contentHash, \"archiveProof.coveringSnapshot.contentHash\");\n const checkpointContentHash = decodeHash(\n snapshot.checkpointContentHash,\n \"archiveProof.coveringSnapshot.checkpointContentHash\",\n );\n if (snapshot.checkpointFrom !== 0) {\n throw new NoEvmReceiptProofError(\n \"invalid_proof_shape\",\n \"archiveProof.coveringSnapshot.checkpointFrom must be 0\",\n );\n }\n if (snapshot.checkpointTo > snapshot.snapshotHeight) {\n throw new NoEvmReceiptProofError(\n \"invalid_proof_shape\",\n \"archiveProof.coveringSnapshot.checkpointTo must be <= snapshotHeight\",\n );\n }\n if (proofBlockHeight !== undefined && snapshot.checkpointTo !== proofBlockHeight) {\n throw new NoEvmReceiptProofError(\n \"invalid_proof_shape\",\n \"archiveProof.coveringSnapshot.checkpointTo must match blockHeight\",\n );\n }\n if (!bytesEqual(checkpointContentHash, archiveContentHash)) {\n throw new NoEvmReceiptProofError(\n \"invalid_proof_shape\",\n \"archiveProof.coveringSnapshot.checkpointContentHash must match archiveProof.contentHash\",\n );\n }\n if (\n !Array.isArray(snapshot.signatures) ||\n snapshot.signatures.some((signature) => typeof signature !== \"string\")\n ) {\n throw new NoEvmReceiptProofError(\n \"invalid_proof_shape\",\n \"archiveProof.coveringSnapshot.signatures must be an array of strings\",\n );\n }\n if (snapshot.signatures.length === 0) {\n throw new NoEvmReceiptProofError(\n \"invalid_proof_shape\",\n \"archiveProof.coveringSnapshot.signatures must be non-empty\",\n );\n }\n snapshot.signatures.forEach((signature, index) =>\n validateArchiveProofSignature(\n signature,\n index,\n \"archiveProof.coveringSnapshot.signatures\",\n ),\n );\n}\n\nfunction validateArchiveProofSignature(\n signature: string,\n index: number,\n fieldPrefix: string,\n): void {\n parseArchiveProofSignature(signature, index, fieldPrefix);\n}\n\nfunction parseArchiveProofSignature(\n signature: string,\n index: number,\n fieldPrefix = \"archiveProof.signatures\",\n): { signerId: string; payload: Uint8Array } {\n const field = `${fieldPrefix}[${index}]`;\n const parts = signature.split(\":\");\n if (parts.length !== 3 || parts[0] !== NO_EVM_ARCHIVE_SIGNATURE_SCHEME) {\n throw new NoEvmReceiptProofError(\n \"invalid_archive_signature\",\n `${field} must match ${NO_EVM_ARCHIVE_SIGNATURE_SCHEME}:0x<20-byte signer-id hex>:0x<non-empty payload hex>`,\n );\n }\n\n const signerIdHex = parts[1]!;\n const payloadHex = parts[2]!;\n if (!signerIdHex.startsWith(\"0x\")) {\n throw new NoEvmReceiptProofError(\n \"invalid_archive_signature\",\n `${field}.signerId must be 0x-prefixed`,\n );\n }\n if (!payloadHex.startsWith(\"0x\")) {\n throw new NoEvmReceiptProofError(\n \"invalid_archive_signature\",\n `${field}.payload must be 0x-prefixed`,\n );\n }\n\n const signerId = decodeHexBytes(signerIdHex, `${field}.signerId`);\n if (signerId.length !== ARCHIVE_SIGNATURE_SIGNER_ID_BYTE_LENGTH) {\n throw new NoEvmReceiptProofError(\n \"invalid_archive_signature\",\n `${field}.signerId must be ${ARCHIVE_SIGNATURE_SIGNER_ID_BYTE_LENGTH} bytes, got ${signerId.length}`,\n );\n }\n\n const payload = decodeHexBytes(payloadHex, `${field}.payload`);\n if (payload.length === 0) {\n throw new NoEvmReceiptProofError(\n \"invalid_archive_signature\",\n `${field}.payload must be non-empty`,\n );\n }\n return { signerId: bytesToHex(signerId), payload };\n}\n\nfunction normalizeSignerId(value: string): string {\n const bytes = decodeHexBytes(value, \"signerId\");\n if (bytes.length !== ARCHIVE_SIGNATURE_SIGNER_ID_BYTE_LENGTH) {\n throw new NoEvmReceiptProofError(\n \"invalid_archive_signature\",\n `signerId must be ${ARCHIVE_SIGNATURE_SIGNER_ID_BYTE_LENGTH} bytes, got ${bytes.length}`,\n );\n }\n return bytesToHex(bytes);\n}\n\nfunction expectArchivePublicKey(value: Uint8Array | readonly number[], field: string): Uint8Array {\n if (value.length !== ML_DSA_65_PUBLIC_KEY_LEN) {\n throw new NoEvmReceiptProofError(\n \"invalid_proof_shape\",\n `${field} must be ${ML_DSA_65_PUBLIC_KEY_LEN} bytes, got ${value.length}`,\n );\n }\n return value instanceof Uint8Array ? value : Uint8Array.from(value);\n}\n\nfunction validateOptionalFinalityEvidence(proof: NoEvmReceiptProof): void {\n const finalityEvidence = (proof as { finalityEvidence?: unknown }).finalityEvidence;\n if (finalityEvidence == null) return;\n if (!isRecord(finalityEvidence)) {\n throw new NoEvmReceiptProofError(\n \"invalid_proof_shape\",\n \"finalityEvidence must be an object when present\",\n );\n }\n assertSupported(\n finalityEvidence[\"schema\"],\n NO_EVM_FINALITY_EVIDENCE_SCHEMA,\n \"finalityEvidence.schema\",\n \"unsupported_schema\",\n );\n assertSupported(\n finalityEvidence[\"source\"],\n NO_EVM_FINALITY_EVIDENCE_SOURCE,\n \"finalityEvidence.source\",\n \"unsupported_schema\",\n );\n assertUint32(finalityEvidence[\"round\"], \"finalityEvidence.round\");\n const round = finalityEvidence[\"round\"];\n validateFinalityCertificateObject(\n finalityEvidence[\"certificate\"],\n round,\n \"finalityEvidence.certificate\",\n );\n validateOptionalBlockFinalityFields(finalityEvidence, round, proof.blockHash);\n}\n\nfunction validateFinalityEvidenceForVerification(\n finalityEvidence: NoEvmFinalityEvidence,\n): void {\n if (!isRecord(finalityEvidence)) {\n throw new NoEvmReceiptProofError(\n \"invalid_proof_shape\",\n \"finalityEvidence must be an object\",\n );\n }\n assertSupported(\n finalityEvidence.schema,\n NO_EVM_FINALITY_EVIDENCE_SCHEMA,\n \"finalityEvidence.schema\",\n \"unsupported_schema\",\n );\n assertSupported(\n finalityEvidence.source,\n NO_EVM_FINALITY_EVIDENCE_SOURCE,\n \"finalityEvidence.source\",\n \"unsupported_schema\",\n );\n assertUint32(finalityEvidence.round, \"finalityEvidence.round\");\n validateFinalityCertificateObject(\n finalityEvidence.certificate,\n finalityEvidence.round,\n \"finalityEvidence.certificate\",\n );\n validateOptionalBlockFinalityFields(\n finalityEvidence as unknown as Record<string, unknown>,\n finalityEvidence.round,\n );\n}\n\nfunction validateOptionalBlockFinalityFields(\n finalityEvidence: Record<string, unknown>,\n round: number,\n proofBlockHash?: unknown,\n): void {\n const blockReference = finalityEvidence[\"blockReference\"];\n if (blockReference != null) {\n validateFinalityBlockReference(blockReference, round, proofBlockHash);\n } else if (\n finalityEvidence[\"leaderCertificate\"] != null ||\n finalityEvidence[\"dacCertificate\"] != null\n ) {\n throw new NoEvmReceiptProofError(\n \"invalid_proof_shape\",\n \"finalityEvidence.blockReference is required for block-bound certificates\",\n );\n }\n if (finalityEvidence[\"leaderCertificate\"] != null) {\n validateFinalityCertificateObject(\n finalityEvidence[\"leaderCertificate\"],\n round,\n \"finalityEvidence.leaderCertificate\",\n );\n }\n if (finalityEvidence[\"dacCertificate\"] != null) {\n validateFinalityCertificateObject(\n finalityEvidence[\"dacCertificate\"],\n round,\n \"finalityEvidence.dacCertificate\",\n );\n }\n}\n\nfunction validateFinalityBlockReference(\n blockReference: unknown,\n round: number,\n proofBlockHash?: unknown,\n): void {\n if (!isRecord(blockReference)) {\n throw new NoEvmReceiptProofError(\n \"invalid_proof_shape\",\n \"finalityEvidence.blockReference must be an object\",\n );\n }\n assertUint32(blockReference[\"round\"], \"finalityEvidence.blockReference.round\");\n if (blockReference[\"round\"] !== round) {\n throw new NoEvmReceiptProofError(\n \"invalid_proof_shape\",\n \"finalityEvidence.blockReference.round must match finalityEvidence.round\",\n );\n }\n assertUint32(blockReference[\"authority\"], \"finalityEvidence.blockReference.authority\");\n if ((blockReference[\"authority\"] as number) > 0xffff) {\n throw new NoEvmReceiptProofError(\n \"invalid_proof_shape\",\n \"finalityEvidence.blockReference.authority must fit u16\",\n );\n }\n const digest = decodeHash(\n blockReference[\"digest\"],\n \"finalityEvidence.blockReference.digest\",\n );\n if (proofBlockHash !== undefined) {\n const blockHash = decodeHash(proofBlockHash, \"blockHash\");\n if (!bytesEqual(digest, blockHash)) {\n throw new NoEvmReceiptProofError(\n \"invalid_proof_shape\",\n \"finalityEvidence.blockReference.digest must match blockHash\",\n );\n }\n }\n}\n\nfunction validateFinalityCertificateObject(\n certificate: unknown,\n round: number,\n field: string,\n): void {\n if (!isRecord(certificate)) {\n throw new NoEvmReceiptProofError(\"invalid_proof_shape\", `${field} must be an object`);\n }\n assertUint32(certificate[\"round\"], `${field}.round`);\n if (certificate[\"round\"] !== round) {\n throw new NoEvmReceiptProofError(\n \"invalid_proof_shape\",\n `${field}.round must match finalityEvidence.round`,\n );\n }\n decodeHexBytes(certificate[\"signature\"], `${field}.signature`);\n decodeHexBytes(certificate[\"signersBitmap\"], `${field}.signersBitmap`);\n const signerIndices = certificate[\"signerIndices\"];\n if (!Array.isArray(signerIndices)) {\n throw new NoEvmReceiptProofError(\n \"invalid_proof_shape\",\n `${field}.signerIndices must be an array`,\n );\n }\n signerIndices.forEach((index, signerIndex) => {\n assertUint32(index, `${field}.signerIndices[${signerIndex}]`);\n if ((index as number) > 0xffff) {\n throw new NoEvmReceiptProofError(\n \"invalid_proof_shape\",\n `${field}.signerIndices[${signerIndex}] must fit u16`,\n );\n }\n });\n assertUint32(certificate[\"signerCount\"], `${field}.signerCount`);\n if ((certificate[\"signerCount\"] as number) > 0xffff) {\n throw new NoEvmReceiptProofError(\"invalid_proof_shape\", `${field}.signerCount must fit u16`);\n }\n if (certificate[\"signerCount\"] !== signerIndices.length) {\n throw new NoEvmReceiptProofError(\n \"invalid_proof_shape\",\n `${field}.signerCount must match signerIndices length`,\n );\n }\n}\n\nfunction validateFinalityThreshold(threshold: number, trustedCapacity: number): void {\n if (!Number.isSafeInteger(threshold) || threshold < 1) {\n throw new NoEvmReceiptProofError(\n \"invalid_proof_shape\",\n \"finality evidence threshold must be at least 1\",\n );\n }\n if (!Number.isSafeInteger(trustedCapacity) || trustedCapacity < 0 || trustedCapacity > 0xffff) {\n throw new NoEvmReceiptProofError(\n \"invalid_proof_shape\",\n \"finality evidence trusted signer capacity must fit u16\",\n );\n }\n if (threshold > trustedCapacity) {\n throw new NoEvmReceiptProofError(\n \"invalid_proof_shape\",\n `finality evidence threshold ${threshold} exceeds trusted signer capacity ${trustedCapacity}`,\n );\n }\n}\n\nfunction requireBlockReference(\n finalityEvidence: NoEvmFinalityEvidence,\n): NoEvmFinalityBlockReference {\n const blockReference = finalityEvidence.blockReference;\n if (blockReference == null) {\n throw new NoEvmReceiptProofError(\n \"invalid_proof_shape\",\n \"finalityEvidence.blockReference is required for block-bound finality verification\",\n );\n }\n validateFinalityBlockReference(blockReference, finalityEvidence.round);\n return blockReference;\n}\n\nfunction requireBlockFinalityCertificate(\n certificate: NoEvmFinalityCertificate | null | undefined,\n field: string,\n): NoEvmFinalityCertificate {\n if (certificate == null) {\n throw new NoEvmReceiptProofError(\n \"invalid_proof_shape\",\n `${field} is required for block-bound finality verification`,\n );\n }\n return certificate;\n}\n\nfunction decodeFinalityCertificateSignature(\n certificate: NoEvmFinalityCertificate,\n field: string,\n): Uint8Array {\n const signature = decodeHexBytes(certificate.signature, `${field}.signature`);\n if (signature.length !== BLS_SIGNATURE_BYTE_LENGTH) {\n throw new NoEvmReceiptProofError(\n \"invalid_hash_length\",\n `${field}.signature must be ${BLS_SIGNATURE_BYTE_LENGTH} bytes, got ${signature.length}`,\n );\n }\n return signature;\n}\n\nfunction signerIndicesFromBitmap(bitmap: Uint8Array): number[] {\n const out: number[] = [];\n bitmap.forEach((byte, byteIndex) => {\n for (let bitIndex = 0; bitIndex < 8; bitIndex += 1) {\n if ((byte & (1 << bitIndex)) === 0) continue;\n const signerIndex = byteIndex * 8 + bitIndex;\n if (signerIndex > 0xffff) {\n throw new NoEvmReceiptProofError(\n \"invalid_proof_shape\",\n \"finalityEvidence signer bitmap index exceeds u16 authority range\",\n );\n }\n out.push(signerIndex);\n }\n });\n return out;\n}\n\nfunction finalityCertificateVerificationBase(\n certificate: NoEvmFinalityCertificate,\n bitmapSignerIndices: readonly number[],\n committeeSize: number,\n threshold: number,\n): Omit<NoEvmBlsFinalityVerification, \"verified\"> {\n const signerCountMatches =\n certificate.signerCount === certificate.signerIndices.length &&\n certificate.signerCount === bitmapSignerIndices.length;\n const signerBitmapMatchesIndices = arraysEqual(certificate.signerIndices, bitmapSignerIndices);\n const signerIndicesInRange = bitmapSignerIndices.every(\n (signerIndex) => signerIndex < committeeSize,\n );\n const acceptedSignatureCount = bitmapSignerIndices.length;\n return {\n finalityEvidencePresent: true,\n signerCountMatches,\n signerBitmapMatchesIndices,\n signerIndicesInRange,\n allSignersTrusted: false,\n thresholdMet: acceptedSignatureCount >= threshold,\n signatureValid: false,\n acceptedSignatureCount,\n requiredSignatureCount: threshold,\n };\n}\n\nfunction finalizeBlsFinalityVerification(\n verification: Omit<NoEvmBlsFinalityVerification, \"verified\">,\n): NoEvmBlsFinalityVerification {\n return {\n ...verification,\n verified:\n verification.finalityEvidencePresent &&\n verification.signerCountMatches &&\n verification.signerBitmapMatchesIndices &&\n verification.signerIndicesInRange &&\n verification.allSignersTrusted &&\n verification.thresholdMet &&\n verification.signatureValid,\n };\n}\n\nfunction verifyBlsSignature(\n publicKey: Uint8Array,\n message: Uint8Array,\n signature: Uint8Array,\n): boolean {\n try {\n const hashedMessage = bls12_381.longSignatures.hash(message, BLS_DST);\n return bls12_381.longSignatures.verify(signature, hashedMessage, publicKey);\n } catch {\n return false;\n }\n}\n\nfunction verifyBlsAggregateSignature(\n publicKeys: readonly Uint8Array[],\n message: Uint8Array,\n signature: Uint8Array,\n): boolean {\n try {\n const aggregatePublicKey = bls12_381.longSignatures.aggregatePublicKeys([...publicKeys]);\n return verifyBlsSignature(\n aggregatePublicKey.toBytes(),\n message,\n signature,\n );\n } catch {\n return false;\n }\n}\n\nfunction expectBlsBytes(\n value: Uint8Array | readonly number[],\n expectedLength: number,\n field: string,\n): Uint8Array {\n const bytes = value instanceof Uint8Array ? value : Uint8Array.from(value);\n if (bytes.length !== expectedLength) {\n throw new NoEvmReceiptProofError(\n \"invalid_hash_length\",\n `${field} must be ${expectedLength} bytes, got ${bytes.length}`,\n );\n }\n return bytes;\n}\n\nfunction writeU64Le(\n out: Uint8Array,\n offset: number,\n value: number | bigint,\n field: string,\n): void {\n if (typeof value === \"number\" && (!Number.isSafeInteger(value) || value < 0)) {\n throw new NoEvmReceiptProofError(\"invalid_uint32\", `${field} must fit u64`);\n }\n const big = typeof value === \"bigint\" ? value : BigInt(value);\n if (big < 0n || big > 0xffff_ffff_ffff_ffffn) {\n throw new NoEvmReceiptProofError(\"invalid_uint32\", `${field} must fit u64`);\n }\n for (let i = 0; i < 8; i += 1) {\n out[offset + i] = Number((big >> BigInt(i * 8)) & 0xffn);\n }\n}\n\nfunction writeU16Le(out: Uint8Array, offset: number, value: unknown, field: string): void {\n if (!Number.isInteger(value) || (value as number) < 0 || (value as number) > 0xffff) {\n throw new NoEvmReceiptProofError(\"invalid_uint32\", `${field} must fit u16`);\n }\n const int = value as number;\n out[offset] = int & 0xff;\n out[offset + 1] = (int >> 8) & 0xff;\n}\n\nfunction arraysEqual(a: readonly number[], b: readonly number[]): boolean {\n return a.length === b.length && a.every((value, index) => value === b[index]);\n}\n\nfunction getCompactInclusionProof(\n proof: NoEvmReceiptProof,\n): NoEvmCompactReceiptProof[\"compactInclusionProof\"] {\n const compactProof = (proof as NoEvmCompactReceiptProof).compactInclusionProof;\n if (!isRecord(compactProof)) {\n throw new NoEvmReceiptProofError(\n \"invalid_proof_shape\",\n \"compactInclusion proof requires compactInclusionProof\",\n );\n }\n return compactProof as NoEvmCompactReceiptProof[\"compactInclusionProof\"];\n}\n\nfunction getTargetReceiptBytes(proof: NoEvmReceiptProof): string {\n const value = (proof as NoEvmCompactReceiptProof & { targetReceiptBytes?: unknown })\n .targetReceiptBytes;\n if (typeof value !== \"string\") {\n throw new NoEvmReceiptProofError(\n \"missing_target_receipt_bytes\",\n \"compactInclusion proof requires targetReceiptBytes\",\n );\n }\n return value;\n}\n\nfunction getProofKind(proof: NoEvmReceiptProof): string {\n return (proof as { proofKind?: unknown }).proofKind === undefined\n ? \"boundedCacheTranscript\"\n : String((proof as { proofKind?: unknown }).proofKind);\n}\n\nfunction getHistorySource(proof: NoEvmReceiptProof): string {\n return getOptionalHistorySource(proof) ?? \"legacyUnspecified\";\n}\n\nfunction getOptionalHistorySource(proof: NoEvmReceiptProof): string | undefined {\n const value = (proof as { historySource?: unknown }).historySource;\n return value === undefined ? undefined : String(value);\n}\n\nfunction assertSupportedRootAlgorithm(actual: string): void {\n if (\n actual !== NO_EVM_RECEIPT_ROOT_ALGORITHM &&\n actual !== NO_EVM_LEGACY_BINARY_RECEIPT_ROOT_ALGORITHM &&\n actual !== NO_EVM_LEGACY_RECEIPT_ROOT_ALGORITHM &&\n actual !== NO_EVM_COMPACT_INCLUSION_TREE_ALGORITHM\n ) {\n throw new NoEvmReceiptProofError(\n \"unsupported_root_algorithm\",\n `unsupported no-EVM receipt proof rootAlgorithm: ${actual}`,\n );\n }\n}\n\nfunction assertSupported(\n actual: unknown,\n expected: string,\n field: string,\n code: NoEvmReceiptProofErrorCode,\n): void {\n if (actual !== expected) {\n throw new NoEvmReceiptProofError(code, `unsupported no-EVM receipt proof ${field}: ${actual}`);\n }\n}\n\nfunction assertUint32(value: unknown, field: string): asserts value is number {\n if (!Number.isInteger(value) || (value as number) < 0 || (value as number) > UINT32_MAX) {\n throw new NoEvmReceiptProofError(\"invalid_uint32\", `${field} must be a uint32`);\n }\n}\n\nfunction assertSafeNonNegativeInteger(value: unknown, field: string): asserts value is number {\n if (!Number.isSafeInteger(value) || (value as number) < 0) {\n throw new NoEvmReceiptProofError(\n \"invalid_proof_shape\",\n `${field} must be a non-negative safe integer`,\n );\n }\n}\n\nfunction computeNoEvmReceiptsRootBytes(receipts: readonly Uint8Array[]): Uint8Array {\n if (receipts.length > UINT32_MAX) {\n throw new NoEvmReceiptProofError(\n \"too_many_receipts\",\n `receiptTranscript has ${receipts.length} receipts, exceeding u32::MAX`,\n );\n }\n\n if (receipts.length === 0) {\n const preimage = new Uint8Array(EMPTY_ROOT_DOMAIN_BYTES.length + 4);\n const view = new DataView(preimage.buffer);\n preimage.set(EMPTY_ROOT_DOMAIN_BYTES, 0);\n view.setUint32(EMPTY_ROOT_DOMAIN_BYTES.length, 0, true);\n return keccak_256(preimage);\n }\n\n let level = receipts.map((receipt, index) => computeNoEvmReceiptLeafHashBytes(receipt, index));\n while (level.length > 1) {\n const nextLevel: Uint8Array[] = [];\n for (let index = 0; index < level.length; index += 2) {\n const left = level[index]!;\n const right = level[index + 1] ?? left;\n nextLevel.push(computeNoEvmReceiptNodeHashBytes(left, right));\n }\n level = nextLevel;\n }\n return level[0]!;\n}\n\nfunction computeNoEvmReceiptLeafHashBytes(receiptBytes: Uint8Array, txIndex: number): Uint8Array {\n assertUint32(txIndex, \"txIndex\");\n if (receiptBytes.length > UINT32_MAX) {\n throw new NoEvmReceiptProofError(\n \"receipt_too_large\",\n `receiptTranscript[${txIndex}] has ${receiptBytes.length} bytes, exceeding u32::MAX`,\n );\n }\n\n const preimage = new Uint8Array(LEAF_DOMAIN_BYTES.length + 8 + receiptBytes.length);\n const view = new DataView(preimage.buffer);\n let offset = 0;\n preimage.set(LEAF_DOMAIN_BYTES, offset);\n offset += LEAF_DOMAIN_BYTES.length;\n view.setUint32(offset, txIndex, true);\n offset += 4;\n view.setUint32(offset, receiptBytes.length, true);\n offset += 4;\n preimage.set(receiptBytes, offset);\n return keccak_256(preimage);\n}\n\nfunction computeNoEvmReceiptNodeHashBytes(left: Uint8Array, right: Uint8Array): Uint8Array {\n assertHashBytes(left, \"left receipt node hash\");\n assertHashBytes(right, \"right receipt node hash\");\n\n const preimage = new Uint8Array(NODE_DOMAIN_BYTES.length + HASH_BYTE_LENGTH * 2);\n let offset = 0;\n preimage.set(NODE_DOMAIN_BYTES, offset);\n offset += NODE_DOMAIN_BYTES.length;\n preimage.set(left, offset);\n offset += HASH_BYTE_LENGTH;\n preimage.set(right, offset);\n return keccak_256(preimage);\n}\n\nfunction computeCompactRootFromPath(\n leafHash: Uint8Array,\n siblingHashes: readonly Uint8Array[],\n pathSides: readonly boolean[],\n): Uint8Array {\n let current = leafHash;\n for (let index = 0; index < siblingHashes.length; index++) {\n const sibling = siblingHashes[index]!;\n current = pathSides[index]!\n ? computeNoEvmReceiptNodeHashBytes(sibling, current)\n : computeNoEvmReceiptNodeHashBytes(current, sibling);\n }\n return current;\n}\n\nfunction decodeHash(value: unknown, field: string): Uint8Array {\n const bytes = decodeHexBytes(value, field);\n if (bytes.length !== HASH_BYTE_LENGTH) {\n throw new NoEvmReceiptProofError(\n \"invalid_hash_length\",\n `${field} must be 32 bytes, got ${bytes.length}`,\n );\n }\n return bytes;\n}\n\nfunction decodeHexBytes(value: unknown, field: string): Uint8Array {\n if (typeof value !== \"string\" || !(value.startsWith(\"0x\") || value.startsWith(\"0X\"))) {\n throw new NoEvmReceiptProofError(\"invalid_hex\", `${field} must be 0x-prefixed even-length hex`);\n }\n const body = value.slice(2);\n if (body.length % 2 !== 0 || !HEX_RE.test(body)) {\n throw new NoEvmReceiptProofError(\"invalid_hex\", `${field} must be 0x-prefixed even-length hex`);\n }\n\n const out = new Uint8Array(body.length / 2);\n for (let index = 0; index < out.length; index++) {\n out[index] = Number.parseInt(body.slice(index * 2, index * 2 + 2), 16);\n }\n return out;\n}\n\nfunction assertHashBytes(value: Uint8Array, field: string): void {\n if (value.length !== HASH_BYTE_LENGTH) {\n throw new NoEvmReceiptProofError(\n \"invalid_hash_length\",\n `${field} must be 32 bytes, got ${value.length}`,\n );\n }\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nfunction bytesEqual(a: Uint8Array, b: Uint8Array): boolean {\n if (a.length !== b.length) return false;\n let diff = 0;\n for (let index = 0; index < a.length; index++) {\n diff |= a[index]! ^ b[index]!;\n }\n return diff === 0;\n}\n\nfunction bytesToHex(bytes: Uint8Array): string {\n let out = \"0x\";\n for (let index = 0; index < bytes.length; index++) {\n out += bytes[index]!.toString(16).padStart(2, \"0\");\n }\n return out;\n}\n","import { typedBech32ToAddress } from \"./address.js\";\nimport type { MrvAbiManifest } from \"./bindings/MrvAbiManifest.js\";\n\nexport const NATIVE_DEV_HOST_API_VERSION = \"0.1.0\" as const;\nexport const NATIVE_DEV_MANIFEST_SCHEMA_VERSION = 1 as const;\nexport const NATIVE_DEV_IPC_PROTOCOL_VERSION = \"mono.native-dev.ipc.v1\" as const;\n\nexport type NativeDevkitChannel = \"stable\" | \"testnet\" | \"local\";\nexport type NativeDevkitSidecarStatus = \"missing\" | \"stopped\" | \"starting\" | \"running\" | \"unhealthy\";\nexport type NativeDevkitCompatibility = \"compatible\" | \"too_old_for_host\" | \"too_new_for_host\" | \"invalid_manifest\";\nexport type StudioHostState = \"disabled\" | \"missing_devkit\" | \"incompatible_devkit\" | \"ready\";\nexport type NativeDevRiskSeverity = \"info\" | \"warning\" | \"critical\";\n\nexport interface NativeDevRiskLabel {\n id: string;\n title: string;\n severity: NativeDevRiskSeverity;\n detail: string;\n}\n\nexport interface NativeDevkitArchive {\n url: string;\n sha256: string;\n signature: string;\n signatureScheme?: \"ed25519\";\n signingKeyId?: string;\n trustRoot?: string;\n signingPublicKey?: string;\n sizeBytes?: number;\n}\n\nexport interface NativeDevkitSidecarManifest {\n binaryName: string;\n ipcProtocolVersion: string;\n}\n\nexport interface NativeDevkitManifest {\n schemaVersion: typeof NATIVE_DEV_MANIFEST_SCHEMA_VERSION;\n devkitVersion: string;\n channel: NativeDevkitChannel;\n minimumWalletHostApi: string;\n maximumWalletHostApi: string;\n monoCoreCommit: string;\n monoCoreSdkCommit: string;\n archive: NativeDevkitArchive;\n sidecar: NativeDevkitSidecarManifest;\n releaseNotesUrl?: string;\n}\n\nexport interface NativeDevkitStatus {\n installedVersion?: string;\n channel: NativeDevkitChannel;\n hostApiVersion: string;\n installPath?: string;\n sidecarStatus: NativeDevkitSidecarStatus;\n manifest?: NativeDevkitManifest;\n compatibility: NativeDevkitCompatibility;\n message: string;\n}\n\nexport interface StudioHostStatus {\n state: StudioHostState;\n developerModeEnabled: boolean;\n hostApiVersion: string;\n devkit: NativeDevkitStatus;\n}\n\nexport interface NativeDevSidecarReadyMessage {\n direction: \"sidecar_to_host\";\n kind: \"ready\";\n protocolVersion: string;\n devkitVersion: string;\n workspaceRoot?: string;\n}\n\nexport interface NativeDevSidecarProjectEventMessage {\n direction: \"sidecar_to_host\";\n kind: \"project_event\";\n protocolVersion?: string;\n projectId: string;\n event: \"created\" | \"opened\" | \"build_started\" | \"build_finished\" | \"test_finished\" | \"simulation_finished\";\n summary: string;\n}\n\nexport interface NativeDevSidecarApprovalRequestMessage {\n direction: \"sidecar_to_host\";\n kind: \"approval_request\";\n protocolVersion?: string;\n request: NativeDevWalletApprovalRequest;\n}\n\nexport type NativeDevCommandName =\n | \"readiness\"\n | \"build\"\n | \"validate\"\n | \"test\"\n | \"simulate\"\n | \"trace\"\n | \"deploy_plan\";\n\nexport interface NativeDevSidecarCommandResultMessage {\n direction: \"sidecar_to_host\";\n kind: \"command_result\";\n protocolVersion?: string;\n command: NativeDevCommandName;\n requestId: string;\n ok: boolean;\n preview: boolean;\n output?: unknown;\n error?: string;\n}\n\nexport interface NativeDevHostContextMessage {\n direction: \"host_to_sidecar\";\n kind: \"host_context\";\n selectedProjectRoot?: string;\n activeNetwork: {\n networkId: string;\n name: string;\n };\n readOnlyWalletAddress?: string;\n}\n\nexport interface NativeDevHostApprovalResultMessage {\n direction: \"host_to_sidecar\";\n kind: \"approval_result\";\n protocolVersion?: string;\n requestId: string;\n approved: boolean;\n reason?: string;\n}\n\nexport interface NativeDevHostCommandMessage {\n direction: \"host_to_sidecar\";\n kind: \"devkit_command\";\n protocolVersion?: string;\n requestId: string;\n command: NativeDevCommandName;\n selectedProjectRoot?: string;\n authorityAddress?: string;\n networkId?: string;\n}\n\nexport type NativeDevIpcMessage =\n | NativeDevSidecarReadyMessage\n | NativeDevSidecarProjectEventMessage\n | NativeDevSidecarApprovalRequestMessage\n | NativeDevSidecarCommandResultMessage\n | NativeDevHostContextMessage\n | NativeDevHostApprovalResultMessage\n | NativeDevHostCommandMessage;\n\nexport type NativeDevApprovalKind =\n | \"mrv_deploy\"\n | \"mrv_call\"\n | \"mrc_token_create\"\n | \"verification_publish\";\n\nexport interface NativeDevWalletApprovalRequest {\n id: string;\n kind: NativeDevApprovalKind;\n createdAt: string;\n origin: \"mono_studio_host\" | \"mono_devkit\" | \"lyth_dev_mcp\";\n networkId: string;\n authorityAddress: string;\n title: string;\n summary: string;\n riskLabels: NativeDevRiskLabel[];\n payload: Record<string, unknown>;\n}\n\nexport interface NativeDevMrvDeployPlan {\n networkId: string;\n authorityAddress: string;\n expectedContractAddress: string;\n artifactHash: string;\n abiHash: string;\n valueLythoshi: string;\n executionUnitLimit: string;\n maxExecutionFeeLythoshi: string;\n constructorInput: string;\n riskLabels: NativeDevRiskLabel[];\n abiManifest?: MrvAbiManifest;\n walletApprovalRequest: NativeDevWalletApprovalRequest;\n}\n\nexport type NativeDevMrcAssetKind =\n | \"mrc20_fixed_supply\"\n | \"mrc20_capped_mint\"\n | \"mrc721_collection\"\n | \"mrc1155_collection\"\n | \"mrc4626_vault\";\n\nexport interface NativeDevMrcAllocation {\n address: string;\n amount: string;\n}\n\nexport interface NativeDevMrcTokenPlan {\n assetKind: NativeDevMrcAssetKind;\n name: string;\n symbol: string;\n decimals: number;\n supplyPolicy: \"fixed\" | \"capped\" | \"collection\" | \"vault\";\n mintPolicy: \"none\" | \"issuer\" | \"role\";\n transferPolicy: \"open\" | \"restricted\";\n metadataPolicy: \"immutable\" | \"mutable\";\n adminRoles: string[];\n issuerAddress: string;\n initialAllocations: NativeDevMrcAllocation[];\n riskLabels: NativeDevRiskLabel[];\n walletApprovalRequest: NativeDevWalletApprovalRequest;\n}\n\nexport interface NativeDevVerificationBundle {\n bundleHash: string;\n contractPassport: NativeDevContractPassport;\n artifact: {\n artifactHash: string;\n sourceBundleHash: string;\n abiHash: string;\n };\n files: Array<{\n path: string;\n hash: string;\n }>;\n walletApprovalRequest?: NativeDevWalletApprovalRequest;\n}\n\nexport interface NativeDevContractPassport {\n address: string;\n artifactHash: string;\n sourceBundleHash: string;\n abiHash: string;\n compilerVersion: string;\n sdkVersion: string;\n templateId?: string;\n verificationStatus: \"draft\" | \"submitted\" | \"verified\" | \"rejected\";\n riskLabels: NativeDevRiskLabel[];\n deployTx?: string;\n issuer: string;\n}\n\nexport function compareNativeDevVersions(left: string, right: string): number {\n const leftParts = parseVersionParts(left);\n const rightParts = parseVersionParts(right);\n for (let index = 0; index < 3; index += 1) {\n const delta = (leftParts[index] ?? 0) - (rightParts[index] ?? 0);\n if (delta !== 0) return delta > 0 ? 1 : -1;\n }\n return 0;\n}\n\nexport function checkNativeDevkitCompatibility(\n manifest: NativeDevkitManifest | undefined,\n hostApiVersion: string = NATIVE_DEV_HOST_API_VERSION,\n): NativeDevkitCompatibility {\n if (manifest === undefined || manifest.schemaVersion !== NATIVE_DEV_MANIFEST_SCHEMA_VERSION) {\n return \"invalid_manifest\";\n }\n if (manifest.sidecar.ipcProtocolVersion !== NATIVE_DEV_IPC_PROTOCOL_VERSION) {\n return \"invalid_manifest\";\n }\n if (compareNativeDevVersions(hostApiVersion, manifest.minimumWalletHostApi) < 0) {\n return \"too_new_for_host\";\n }\n if (compareNativeDevVersions(hostApiVersion, manifest.maximumWalletHostApi) > 0) {\n return \"too_old_for_host\";\n }\n return \"compatible\";\n}\n\nexport function resolveStudioHostStatus(args: {\n developerModeEnabled: boolean;\n channel: NativeDevkitChannel;\n hostApiVersion?: string;\n installPath?: string;\n manifest?: NativeDevkitManifest;\n sidecarStatus?: NativeDevkitSidecarStatus;\n}): StudioHostStatus {\n const hostApiVersion = args.hostApiVersion ?? NATIVE_DEV_HOST_API_VERSION;\n const compatibility = checkNativeDevkitCompatibility(args.manifest, hostApiVersion);\n const installedVersion = args.manifest?.devkitVersion;\n const devkit: NativeDevkitStatus = {\n installedVersion,\n channel: args.channel,\n hostApiVersion,\n installPath: args.installPath,\n sidecarStatus: args.sidecarStatus ?? (args.installPath ? \"stopped\" : \"missing\"),\n manifest: args.manifest,\n compatibility,\n message: nativeDevkitStatusMessage(compatibility, args.installPath),\n };\n\n if (!args.developerModeEnabled) {\n return {\n state: \"disabled\",\n developerModeEnabled: false,\n hostApiVersion,\n devkit,\n };\n }\n if (!args.installPath || !args.manifest) {\n return {\n state: \"missing_devkit\",\n developerModeEnabled: true,\n hostApiVersion,\n devkit,\n };\n }\n if (compatibility !== \"compatible\") {\n return {\n state: \"incompatible_devkit\",\n developerModeEnabled: true,\n hostApiVersion,\n devkit,\n };\n }\n return {\n state: \"ready\",\n developerModeEnabled: true,\n hostApiVersion,\n devkit,\n };\n}\n\nexport function assertNativeDevWalletApprovalRequest(request: NativeDevWalletApprovalRequest): void {\n typedBech32ToAddress(request.authorityAddress, \"user\");\n if (!request.id.trim()) throw new Error(\"approval request id is required\");\n if (!request.networkId.trim()) throw new Error(\"approval request network id is required\");\n if (!request.title.trim()) throw new Error(\"approval request title is required\");\n if (!request.summary.trim()) throw new Error(\"approval request summary is required\");\n}\n\nexport function assertNativeDevMrvDeployPlan(plan: NativeDevMrvDeployPlan): void {\n typedBech32ToAddress(plan.authorityAddress, \"user\");\n typedBech32ToAddress(plan.expectedContractAddress, \"contract\");\n assertHash(\"artifactHash\", plan.artifactHash);\n assertHash(\"abiHash\", plan.abiHash);\n assertWholeNumber(\"valueLythoshi\", plan.valueLythoshi);\n assertWholeNumber(\"executionUnitLimit\", plan.executionUnitLimit);\n assertWholeNumber(\"maxExecutionFeeLythoshi\", plan.maxExecutionFeeLythoshi);\n assertNativeDevWalletApprovalRequest(plan.walletApprovalRequest);\n}\n\nexport function assertNativeDevMrcTokenPlan(plan: NativeDevMrcTokenPlan): void {\n typedBech32ToAddress(plan.issuerAddress, \"user\");\n if (!plan.name.trim()) throw new Error(\"token name is required\");\n if (!/^[A-Z0-9]{2,12}$/.test(plan.symbol)) throw new Error(\"token symbol must be uppercase\");\n if (!Number.isInteger(plan.decimals) || plan.decimals < 0 || plan.decimals > 18) {\n throw new Error(\"token decimals must be between 0 and 18\");\n }\n for (const allocation of plan.initialAllocations) {\n typedBech32ToAddress(allocation.address, \"user\");\n assertWholeNumber(\"allocation.amount\", allocation.amount);\n }\n assertNativeDevWalletApprovalRequest(plan.walletApprovalRequest);\n}\n\nexport function nativeDevUiStrings(): readonly string[] {\n return [\n \"Mono Studio Host\",\n \"Developer Mode\",\n \"DevKit missing\",\n \"DevKit incompatible\",\n \"DevKit ready\",\n \"Wallet approval required\",\n \"Execution units\",\n \"Maximum execution fee\",\n \"Lythoshi value\",\n \"Artifact hash\",\n \"ABI manifest\",\n \"Token passport\",\n \"Verification bundle\",\n ] as const;\n}\n\nexport function nativeDevSchemaFieldNames(): readonly string[] {\n return [\n \"schemaVersion\",\n \"devkitVersion\",\n \"channel\",\n \"minimumWalletHostApi\",\n \"maximumWalletHostApi\",\n \"monoCoreCommit\",\n \"monoCoreSdkCommit\",\n \"archive\",\n \"signatureScheme\",\n \"signingKeyId\",\n \"trustRoot\",\n \"signingPublicKey\",\n \"sidecar\",\n \"releaseNotesUrl\",\n \"installedVersion\",\n \"hostApiVersion\",\n \"installPath\",\n \"sidecarStatus\",\n \"compatibility\",\n \"developerModeEnabled\",\n \"selectedProjectRoot\",\n \"activeNetwork\",\n \"networkId\",\n \"readOnlyWalletAddress\",\n \"requestId\",\n \"approved\",\n \"command\",\n \"output\",\n \"preview\",\n \"authorityAddress\",\n \"expectedContractAddress\",\n \"artifactHash\",\n \"abiHash\",\n \"valueLythoshi\",\n \"executionUnitLimit\",\n \"maxExecutionFeeLythoshi\",\n \"constructorInput\",\n \"walletApprovalRequest\",\n \"issuerAddress\",\n \"initialAllocations\",\n \"bundleHash\",\n \"contractPassport\",\n \"sourceBundleHash\",\n \"compilerVersion\",\n \"sdkVersion\",\n \"verificationStatus\",\n ] as const;\n}\n\nfunction nativeDevkitStatusMessage(compatibility: NativeDevkitCompatibility, installPath?: string): string {\n if (!installPath) return \"DevKit is not installed.\";\n if (compatibility === \"compatible\") return \"DevKit is compatible with this wallet host.\";\n if (compatibility === \"too_old_for_host\") return \"DevKit is older than this wallet host API.\";\n if (compatibility === \"too_new_for_host\") return \"DevKit requires a newer wallet host API.\";\n return \"DevKit manifest is invalid.\";\n}\n\nfunction parseVersionParts(version: string): [number, number, number] {\n const match = version.trim().match(/^(\\d+)\\.(\\d+)\\.(\\d+)/);\n if (!match) return [0, 0, 0];\n return [Number(match[1]), Number(match[2]), Number(match[3])];\n}\n\nfunction assertHash(field: string, value: string): void {\n if (!/^[0-9a-f]{64}$/i.test(value)) {\n throw new Error(`${field} must be a 32 byte lowercase hex hash`);\n }\n}\n\nfunction assertWholeNumber(field: string, value: string): void {\n if (!/^[0-9]+$/.test(value)) {\n throw new Error(`${field} must be a whole number`);\n }\n}\n","/**\n * Transaction fee + execution-unit defaults and resolution helpers.\n *\n * These mirror the fee handling the Rust CLI / SDK uses for the\n * plaintext + registry write paths (`mono-core/crates/core/cli/src/commands/registry.rs`\n * and `crates/core/sdk/src/tx.rs`). The chain admits a transaction only\n * if\n *\n * `max_execution_unit_price_lythoshi × execution_unit_limit <= free_balance`\n *\n * and the plaintext path additionally enforces `priority_tip <=\n * max_execution_unit_price` (a `FeeMismatch` revert otherwise). Two\n * footguns motivated these helpers:\n *\n * 1. The registry `register_op` BLS proof-of-possession pairing verify\n * burns ~151k execution units; a 100k limit reverts. Registry /\n * register writes therefore default to a higher limit.\n * 2. `priority_tip_lythoshi` is a PER-UNIT price, not a total tip. The\n * legacy registry default of `1e10` dwarfed the live per-unit cap\n * (~2000-6000 lythoshi) and made the chain reject every registry\n * write. The resolver below derives the cap from the live\n * `lyth_executionUnitPrice` quote and clamps the tip to it.\n */\n\nimport type { RpcClient } from \"./client.js\";\nimport { SdkError } from \"./error.js\";\n\n/**\n * Default execution-unit limit for registry / register writes.\n *\n * The `register_op` BLS-PoP pairing verify uses ~151k execution units,\n * so the prior 100k default reverted. Pinned above the observed cost\n * with headroom. Mirrors the corrected\n * `REGISTRY_DEFAULT_EXECUTION_UNIT_LIMIT` in the Rust CLI.\n */\nexport const REGISTRY_DEFAULT_EXECUTION_UNIT_LIMIT = 250_000n;\n\n/**\n * Default execution-unit limit for a bare native transfer.\n *\n * The 21000 intrinsic floor plus calldata + signature-byte units; a\n * round 100k covers an ML-DSA-65-signed transfer with margin.\n */\nexport const TRANSFER_DEFAULT_EXECUTION_UNIT_LIMIT = 100_000n;\n\n/**\n * Per-unit price floor used when the node quote is unexpectedly low or\n * zero (e.g. a fresh chain), so the declared cap never collapses to 0.\n * Mirrors `REGISTRY_MIN_EXECUTION_UNIT_PRICE_LYTHOSHI` in the Rust CLI.\n */\nexport const MIN_EXECUTION_UNIT_PRICE_LYTHOSHI = 2_000n;\n\n/**\n * Safety multiplier applied to the live per-unit execution price when\n * declaring a write's `maxExecutionUnitPrice`. A small headroom over the\n * latest-block quote tolerates a fee bump between the quote and\n * inclusion without over-reserving the sender's balance. Mirrors\n * `REGISTRY_EXECUTION_UNIT_PRICE_SAFETY_MULTIPLIER` in the Rust CLI.\n */\nexport const EXECUTION_UNIT_PRICE_SAFETY_MULTIPLIER = 3n;\n\n/**\n * Resolved per-unit fee parameters for a transaction, in the\n * `NativeEvmTxFields` shape (`maxFeePerGas` is the per-unit max price,\n * `maxPriorityFeePerGas` is the per-unit priority tip).\n *\n * Both values are PER-UNIT prices in lythoshi; the on-chain mempool\n * reserves `maxFeePerGas × gasLimit` against the sender's balance, and\n * the plaintext path requires `maxPriorityFeePerGas <= maxFeePerGas`.\n */\nexport interface ResolvedExecutionFee {\n /** Per-unit max execution price in lythoshi. */\n maxFeePerGas: bigint;\n /** Per-unit priority tip in lythoshi (always `<= maxFeePerGas`). */\n maxPriorityFeePerGas: bigint;\n /** Execution-unit limit. */\n gasLimit: bigint;\n}\n\nfunction asBigint(value: bigint | number | string, label: string): bigint {\n try {\n return typeof value === \"bigint\" ? value : BigInt(value);\n } catch {\n throw new Error(`${label} is not an integer: ${String(value)}`);\n }\n}\n\n/**\n * Clamp a priority tip so it never exceeds the per-unit max price.\n *\n * The plaintext submit path enforces `priority_tip <=\n * max_execution_unit_price` (a `FeeMismatch` revert otherwise), so any\n * caller-supplied tip is capped here rather than reverting on-chain.\n */\nexport function clampPriorityTip(\n priorityTipLythoshi: bigint | number | string,\n maxExecutionUnitPriceLythoshi: bigint | number | string,\n): bigint {\n const tip = asBigint(priorityTipLythoshi, \"priorityTipLythoshi\");\n const cap = asBigint(maxExecutionUnitPriceLythoshi, \"maxExecutionUnitPriceLythoshi\");\n if (tip < 0n) throw new Error(\"priorityTipLythoshi must be non-negative\");\n return tip > cap ? cap : tip;\n}\n\n/**\n * Resolve the per-unit `maxFeePerGas` cap from the live\n * `lyth_executionUnitPrice` quote: take the latest quote, apply the\n * safety multiplier as headroom, and clamp up to the price floor so the\n * declared cap never collapses to 0. Mirrors\n * `registry_max_execution_unit_price_lythoshi` in the Rust CLI.\n */\nexport async function resolveMaxExecutionUnitPrice(\n client: RpcClient,\n options: {\n minPriceLythoshi?: bigint;\n safetyMultiplier?: bigint;\n } = {},\n): Promise<bigint> {\n const floor = options.minPriceLythoshi ?? MIN_EXECUTION_UNIT_PRICE_LYTHOSHI;\n const multiplier = options.safetyMultiplier ?? EXECUTION_UNIT_PRICE_SAFETY_MULTIPLIER;\n const quote = await client.lythExecutionUnitPrice();\n let unitPrice: bigint;\n try {\n unitPrice = BigInt(quote.executionUnitPriceLythoshi);\n } catch {\n throw SdkError.malformed(\n `lyth_executionUnitPrice returned a non-integer executionUnitPriceLythoshi: ${quote.executionUnitPriceLythoshi}`,\n );\n }\n const base = unitPrice > floor ? unitPrice : floor;\n return base * multiplier;\n}\n\n/**\n * Resolve sane per-unit fee parameters for a write from the live node\n * quote, with the priority tip clamped to the resolved cap.\n *\n * `priorityTipLythoshi` defaults to the resolved cap (the highest tip\n * the plaintext path accepts) when omitted, so registry / register\n * writes meet the public-testnet tip floor without a caller-supplied\n * flag. Pass an explicit value to bid lower.\n */\nexport async function resolveExecutionFee(\n client: RpcClient,\n options: {\n executionUnitLimit?: bigint;\n priorityTipLythoshi?: bigint | number | string;\n minPriceLythoshi?: bigint;\n safetyMultiplier?: bigint;\n } = {},\n): Promise<ResolvedExecutionFee> {\n const maxFeePerGas = await resolveMaxExecutionUnitPrice(client, {\n minPriceLythoshi: options.minPriceLythoshi,\n safetyMultiplier: options.safetyMultiplier,\n });\n const tip =\n options.priorityTipLythoshi === undefined\n ? maxFeePerGas\n : clampPriorityTip(options.priorityTipLythoshi, maxFeePerGas);\n return {\n maxFeePerGas,\n maxPriorityFeePerGas: tip,\n gasLimit: options.executionUnitLimit ?? TRANSFER_DEFAULT_EXECUTION_UNIT_LIMIT,\n };\n}\n\n/**\n * Convenience wrapper for registry / register writes: the same fee\n * resolution as {@link resolveExecutionFee} but defaulting the\n * execution-unit limit to {@link REGISTRY_DEFAULT_EXECUTION_UNIT_LIMIT}\n * so the `register_op` BLS-PoP pairing verify does not revert.\n */\nexport async function resolveRegistryExecutionFee(\n client: RpcClient,\n options: {\n executionUnitLimit?: bigint;\n priorityTipLythoshi?: bigint | number | string;\n minPriceLythoshi?: bigint;\n safetyMultiplier?: bigint;\n } = {},\n): Promise<ResolvedExecutionFee> {\n return resolveExecutionFee(client, {\n ...options,\n executionUnitLimit: options.executionUnitLimit ?? REGISTRY_DEFAULT_EXECUTION_UNIT_LIMIT,\n });\n}\n","/**\n * Oracle-precompile (`0x1009`) event decode types + read-method\n * signatures (MB-6).\n *\n * Mirrors `mono-core/crates/precompiles/platform/oracle/src/events.rs`:\n * the canonical event signatures and a pure decoder that turns one EVM\n * log (topics + data) into a typed {@link OracleEvent}. The decoder is\n * the exact inverse of the chain-side `emit_*` helpers.\n */\n\nimport { keccak_256 } from \"@noble/hashes/sha3.js\";\nimport { PRECOMPILE_ADDRESSES } from \"./consts.js\";\n\nexport const ORACLE_EVENT_SIGS = {\n oracleRoundFinalized: \"OracleRoundFinalized(bytes32,uint64,uint256,uint64,uint32)\",\n observationSubmitted: \"ObservationSubmitted(bytes32,uint64,address,uint256,uint64)\",\n feedAdded: \"FeedAdded(bytes32,uint8,uint16,uint32,uint32)\",\n feedUpdated: \"FeedUpdated(bytes32,uint8,uint16,uint32,uint32)\",\n oracleFraudSlashed: \"OracleFraudSlashed(bytes32,uint64,address,bytes32)\",\n oracleAdminUpdated: \"OracleAdminUpdated(address)\",\n oracleWriterAdded: \"OracleWriterAdded(address,address)\",\n oracleWriterRemoved: \"OracleWriterRemoved(address,address)\",\n} as const;\n\nexport class OracleEventError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"OracleEventError\";\n }\n}\n\n/** One active oracle writer in a {@link OracleSignersResponse}. */\nexport interface OracleSignerRow {\n /** Writer address in the active global oracle signer roster (`mono` bech32m). */\n writer: string;\n /** Admin that last authorized this writer's membership (`mono` bech32m). */\n admin: string;\n /** Block height of the latest membership fold. */\n updatedAtBlock: number;\n}\n\n/**\n * `lyth_oracleSigners` response — the global oracle writer roster, folded\n * from `OracleWriterAdded` / `OracleWriterRemoved` by the oracle indexer\n * projection (MB-6).\n *\n * When the node runs without that projection it returns the graceful\n * fallback `{ status: \"indexer_unavailable\", writers: [] }` — `writers`\n * is always present so callers can iterate unconditionally; use\n * `lyth_oracleWriters(feedId)` for the per-feed writer set in that case.\n */\nexport interface OracleSignersResponse {\n /** Response schema version (`1`). */\n schemaVersion: number;\n /** `\"indexer_unavailable\"` on the graceful-fallback path; absent when served. */\n status?: \"indexer_unavailable\";\n /** Data source — `\"oracle_indexer_projection\"`. */\n source: string;\n /** Oracle precompile address (`0x1009`). */\n precompile: string;\n /** Active writers; empty on the fallback path. */\n writers: OracleSignerRow[];\n /** Human-readable reason on the fallback path. */\n reason?: string;\n}\n\n/**\n * `lyth_oracleWriters` response — the allowed-writer roster for one feed\n * (MB-6), read from the feed-config writer list (`0x1009`).\n */\nexport interface OracleWriters {\n /** Response schema version (`1`). */\n schemaVersion: number;\n /** Data source — `\"native_state_storage\"`. */\n source: string;\n /** Oracle precompile address (`0x1009`). */\n precompile: string;\n /** Feed the writers are scoped to (`0x` 32 bytes). */\n feedId: string;\n /** Allowed writer addresses (`mono` bech32m). */\n writers: string[];\n}\n\n/**\n * `lyth_oracleLatestPrice` response — the latest finalized round's median\n * for one feed (MB-6). A registered feed with no closed round yet returns\n * `round: 0`, `median: null`, `finalized: false`.\n */\nexport interface OracleLatestPrice {\n /** Response schema version (`1`). */\n schemaVersion: number;\n /** Data source — `\"native_state_storage\"`. */\n source: string;\n /** Oracle precompile address (`0x1009`). */\n precompile: string;\n /** Feed id (`0x` 32 bytes). */\n feedId: string;\n /** Feed decimals. */\n decimals: number;\n /** Latest round id; `0` before the first round closes. */\n round: number;\n /** `true` once the latest round is finalized. */\n finalized: boolean;\n /** Finalized median (`0x`-hex `uint256`); `null` while unfinalized. */\n median: string | null;\n /** Block the latest round finalized at; `null` while unfinalized. */\n finalizedAtBlock: number | null;\n}\n\n/**\n * `lyth_oracleFeedConfig` response — one feed's decimals / heartbeat /\n * deviation-bps (circuit breaker) / min-signers config (MB-6).\n */\nexport interface OracleFeedConfig {\n /** Response schema version (`1`). */\n schemaVersion: number;\n /** Data source — `\"native_state_storage\"`. */\n source: string;\n /** Oracle precompile address (`0x1009`). */\n precompile: string;\n /** Feed id (`0x` 32 bytes). */\n feedId: string;\n /** Feed decimals. */\n decimals: number;\n /** Minimum signers required to finalize a round. */\n minSigners: number;\n /** Max observation age (heartbeat) in seconds. */\n heartbeatSeconds: number;\n /** Circuit-breaker deviation bound in basis points. */\n deviationBps: number;\n /** Number of allowed writers configured for the feed. */\n allowedWritersLen: number;\n}\n\n/** Return the oracle precompile address (`0x1009`) as lower-case hex. */\nexport function oracleAddressHex(): string {\n return PRECOMPILE_ADDRESSES.ORACLE.toLowerCase();\n}\n\n/**\n * Typed view of one oracle-precompile log (MB-6). One variant per\n * chain-side emit helper. `feedId` / `evidenceHash` / address fields are\n * `0x`-prefixed hex; `computedMedian` / `value` are decimal strings of\n * their on-chain `uint256` value.\n */\nexport type OracleEvent =\n | {\n kind: \"roundFinalized\";\n feedId: string;\n roundId: bigint;\n computedMedian: string;\n finalizedAtBlock: bigint;\n observationsLen: number;\n }\n | {\n kind: \"observationSubmitted\";\n feedId: string;\n roundId: bigint;\n writer: string;\n value: string;\n observedAt: bigint;\n }\n | {\n kind: \"fraudSlashed\";\n feedId: string;\n roundId: bigint;\n writer: string;\n evidenceHash: string;\n }\n | {\n kind: \"feedAdded\";\n feedId: string;\n decimals: number;\n minSigners: number;\n circuitBreakerBps: number;\n allowedWritersLen: number;\n }\n | {\n kind: \"feedUpdated\";\n feedId: string;\n decimals: number;\n minSigners: number;\n circuitBreakerBps: number;\n allowedWritersLen: number;\n }\n | { kind: \"adminUpdated\"; admin: string }\n | { kind: \"writerAdded\"; admin: string; writer: string }\n | { kind: \"writerRemoved\"; admin: string; writer: string };\n\n/**\n * Decode one EVM log emitted by the oracle precompile into a typed\n * {@link OracleEvent}. Pure + deterministic; dispatches on `topic0`,\n * then reads fixed-width 32-byte words.\n *\n * @throws {OracleEventError} on a foreign `topic0`, a topic-arity\n * mismatch, or a data-length mismatch.\n */\nexport function decodeOracleEvent(\n topics: readonly (string | Uint8Array | readonly number[])[],\n data: string | Uint8Array | readonly number[],\n): OracleEvent {\n if (topics.length === 0) {\n throw new OracleEventError(\"event record has no topics\");\n }\n const topic0 = bytesToHex(expectLength(toBytes(topics[0]), 32, \"topic0\"));\n const body = toBytes(data);\n\n if (topic0 === topicHex(ORACLE_EVENT_SIGS.oracleRoundFinalized)) {\n checkArity(\"OracleRoundFinalized\", 3, topics.length);\n checkData(\"OracleRoundFinalized\", 3 * 32, body.length);\n return {\n kind: \"roundFinalized\",\n feedId: hex32(topics[1]),\n roundId: u64FromTopic(topics[2]),\n computedMedian: u256Decimal(body.subarray(0, 32)),\n finalizedAtBlock: u64FromWord(body.subarray(32, 64)),\n observationsLen: u32FromWord(body.subarray(64, 96)),\n };\n }\n if (topic0 === topicHex(ORACLE_EVENT_SIGS.observationSubmitted)) {\n checkArity(\"ObservationSubmitted\", 4, topics.length);\n checkData(\"ObservationSubmitted\", 2 * 32, body.length);\n return {\n kind: \"observationSubmitted\",\n feedId: hex32(topics[1]),\n roundId: u64FromTopic(topics[2]),\n writer: addressFromTopic(topics[3]),\n value: u256Decimal(body.subarray(0, 32)),\n observedAt: u64FromWord(body.subarray(32, 64)),\n };\n }\n if (topic0 === topicHex(ORACLE_EVENT_SIGS.oracleFraudSlashed)) {\n checkArity(\"OracleFraudSlashed\", 4, topics.length);\n checkData(\"OracleFraudSlashed\", 32, body.length);\n return {\n kind: \"fraudSlashed\",\n feedId: hex32(topics[1]),\n roundId: u64FromTopic(topics[2]),\n writer: addressFromTopic(topics[3]),\n evidenceHash: bytesToHex(body.subarray(0, 32)),\n };\n }\n if (topic0 === topicHex(ORACLE_EVENT_SIGS.feedAdded)) {\n checkArity(\"FeedAdded\", 2, topics.length);\n checkData(\"FeedAdded\", 4 * 32, body.length);\n return { kind: \"feedAdded\", ...decodeFeedFields(topics[1], body) };\n }\n if (topic0 === topicHex(ORACLE_EVENT_SIGS.feedUpdated)) {\n checkArity(\"FeedUpdated\", 2, topics.length);\n checkData(\"FeedUpdated\", 4 * 32, body.length);\n return { kind: \"feedUpdated\", ...decodeFeedFields(topics[1], body) };\n }\n if (topic0 === topicHex(ORACLE_EVENT_SIGS.oracleAdminUpdated)) {\n checkArity(\"OracleAdminUpdated\", 2, topics.length);\n checkData(\"OracleAdminUpdated\", 0, body.length);\n return { kind: \"adminUpdated\", admin: addressFromTopic(topics[1]) };\n }\n if (topic0 === topicHex(ORACLE_EVENT_SIGS.oracleWriterAdded)) {\n checkArity(\"OracleWriterAdded\", 3, topics.length);\n checkData(\"OracleWriterAdded\", 0, body.length);\n return {\n kind: \"writerAdded\",\n admin: addressFromTopic(topics[1]),\n writer: addressFromTopic(topics[2]),\n };\n }\n if (topic0 === topicHex(ORACLE_EVENT_SIGS.oracleWriterRemoved)) {\n checkArity(\"OracleWriterRemoved\", 3, topics.length);\n checkData(\"OracleWriterRemoved\", 0, body.length);\n return {\n kind: \"writerRemoved\",\n admin: addressFromTopic(topics[1]),\n writer: addressFromTopic(topics[2]),\n };\n }\n\n throw new OracleEventError(\"unknown oracle event topic0\");\n}\n\nfunction decodeFeedFields(\n feedTopic: string | Uint8Array | readonly number[],\n body: Uint8Array,\n): {\n feedId: string;\n decimals: number;\n minSigners: number;\n circuitBreakerBps: number;\n allowedWritersLen: number;\n} {\n return {\n feedId: hex32(feedTopic),\n decimals: body[31],\n minSigners: (body[62] << 8) | body[63],\n circuitBreakerBps: u32FromWord(body.subarray(64, 96)),\n allowedWritersLen: u32FromWord(body.subarray(96, 128)),\n };\n}\n\nfunction topicHex(sig: string): string {\n return bytesToHex(keccak_256(new TextEncoder().encode(sig)));\n}\n\nfunction checkArity(event: string, expected: number, found: number): void {\n if (found !== expected) {\n throw new OracleEventError(`${event} expected ${expected} topics, found ${found}`);\n }\n}\n\nfunction checkData(event: string, expected: number, found: number): void {\n if (found !== expected) {\n throw new OracleEventError(`${event} expected ${expected} data bytes, found ${found}`);\n }\n}\n\nfunction hex32(topic: string | Uint8Array | readonly number[]): string {\n return bytesToHex(expectLength(toBytes(topic), 32, \"feedId topic\"));\n}\n\nfunction addressFromTopic(topic: string | Uint8Array | readonly number[]): string {\n return bytesToHex(expectLength(toBytes(topic), 32, \"address topic\").subarray(12, 32));\n}\n\nfunction u64FromTopic(topic: string | Uint8Array | readonly number[]): bigint {\n return u64FromWord(expectLength(toBytes(topic), 32, \"u64 topic\"));\n}\n\nfunction u64FromWord(word: Uint8Array): bigint {\n let v = 0n;\n for (let i = 24; i < 32; i++) v = (v << 8n) | BigInt(word[i]);\n return v;\n}\n\nfunction u32FromWord(word: Uint8Array): number {\n return ((word[28] << 24) | (word[29] << 16) | (word[30] << 8) | word[31]) >>> 0;\n}\n\nfunction u256Decimal(word: Uint8Array): string {\n let v = 0n;\n for (const b of word) v = (v << 8n) | BigInt(b);\n return v.toString(10);\n}\n\nfunction toBytes(value: string | Uint8Array | readonly number[]): Uint8Array {\n if (typeof value === \"string\") return hexToBytes(value);\n return value instanceof Uint8Array ? value : Uint8Array.from(value);\n}\n\nfunction hexToBytes(hex: string): Uint8Array {\n const b = hex.startsWith(\"0x\") || hex.startsWith(\"0X\") ? hex.slice(2) : hex;\n if (b.length % 2 !== 0 || !/^[0-9a-fA-F]*$/.test(b)) {\n throw new OracleEventError(\"invalid hex bytes\");\n }\n const out = new Uint8Array(b.length / 2);\n for (let i = 0; i < out.length; i++) out[i] = Number.parseInt(b.slice(i * 2, i * 2 + 2), 16);\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 expectLength(value: Uint8Array, len: number, name: string): Uint8Array {\n if (value.length !== len) {\n throw new OracleEventError(`${name} must be ${len} bytes, got ${value.length}`);\n }\n return value;\n}\n","/**\n * GPU prover-market precompile ABI helpers + read types (MB-4).\n *\n * Mirrors `mono-core/crates/precompiles/platform/prover-market`. The six\n * ops (`createRequest` / `submitBid` / `closeRequest` / `submitProof` /\n * `settle` / `slash`) all take a single `bytes` canonical payload; their\n * selectors are `keccak256(sig)[..4]`.\n *\n * Only the `createRequest` canonical payload is finalized on the chain\n * side today (`ProofRequest::encode_canonical`). The other five op\n * bodies land at the deferred runtime-wiring wave, so their canonical\n * payload encoders carry a `TODO(monolythium-vision)` below.\n */\n\nimport { keccak_256 } from \"@noble/hashes/sha3.js\";\nimport { PRECOMPILE_ADDRESSES } from \"./consts.js\";\n\n/**\n * GPU prover-market precompile address (`0x100C`).\n *\n * Final, registered slot. (The earlier first-pass guess of `0x1110`\n * assumed MB-5 took `0x1110` for a new precompile; MB-5 instead shipped\n * `attestDkgReshare` as a selector inside node-registry `0x1005`, so the\n * platform extension band's lowest free slot — `0x100C`, after the\n * operator router at `0x100B` — is where the prover market binds.) The\n * precompile is gateable + genesis-disabled per ADR-0015 §3; activation\n * is a foundation milestone flip, but the `lyth_*` read surfaces work\n * regardless.\n */\nexport const PROVER_MARKET_ADDRESS = PRECOMPILE_ADDRESSES.PROVER_MARKET;\n\n/** `SERVES_GPU_PROVE` capability bit (MB-4) — bit 9 of the node-registry field. */\nexport const SERVES_GPU_PROVE = 0x0000_0200 as const;\n\nexport const PROVER_MARKET_SELECTORS = {\n createRequest: \"0x\" + selectorHex(\"createRequest(bytes)\"),\n submitBid: \"0x\" + selectorHex(\"submitBid(bytes)\"),\n closeRequest: \"0x\" + selectorHex(\"closeRequest(bytes)\"),\n submitProof: \"0x\" + selectorHex(\"submitProof(bytes)\"),\n settle: \"0x\" + selectorHex(\"settle(bytes)\"),\n slash: \"0x\" + selectorHex(\"slash(bytes)\"),\n} as const;\n\nexport const PROVER_MARKET_EVENT_SIGS = {\n proofRequested: \"ProofRequested(bytes32,address,bytes32,uint128,uint64)\",\n bidSubmitted: \"BidSubmitted(bytes32,address,uint128)\",\n requestAssigned: \"RequestAssigned(bytes32,address,uint128)\",\n proofSettled: \"ProofSettled(bytes32,address,uint128,uint128)\",\n proverSlashed: \"ProverSlashed(bytes32,address,uint16,bytes32)\",\n requestExpired: \"RequestExpired(bytes32,address,uint128)\",\n} as const;\n\n/** `ProverSlashed` reason code: non-delivery past deadline. */\nexport const PROVER_SLASH_REASON_NON_DELIVERY = 0x0400 as const;\n/** `ProverSlashed` reason code: bad proof. */\nexport const PROVER_SLASH_REASON_BAD_PROOF = 0x0401 as const;\n\nexport const PROVER_MARKET_REQUEST_DOMAIN = \"prover_market.request.v1\" as const;\nexport const PROVER_MARKET_BID_DOMAIN = \"prover_market.bid.v1\" as const;\nexport const PROVER_MARKET_SUBMIT_DOMAIN = \"prover_market.submit.v1\" as const;\n\n/** State machine for a proof request (mirrors `ProverMarketState`). */\nexport type ProverMarketState =\n | \"open\"\n | \"assigned\"\n | \"settled\"\n | \"slashed\"\n | \"expired\";\n\n/** Decode a `ProverMarketState` from its on-chain wire byte, or `null`. */\nexport function proverMarketStateFromByte(b: number): ProverMarketState | null {\n switch (b) {\n case 0:\n return \"open\";\n case 1:\n return \"assigned\";\n case 2:\n return \"settled\";\n case 3:\n return \"slashed\";\n case 4:\n return \"expired\";\n default:\n return null;\n }\n}\n\n/**\n * `lyth_getProofRequest` response — one proof-request record read\n * directly from the prover-market state tree (`0x100C`).\n *\n * Mirrors the chain JSON exactly (camelCase keys). Fee amounts are\n * `0x`-hex `uint256` strings; addresses are `mono` bech32m (null while\n * unset); hashes are `0x`-hex words. This is the exact-lookup shape; the\n * indexer-backed list rows ({@link ProofRequestRow}) carry a different\n * field set.\n */\nexport interface ProofRequestView {\n /** Response schema version (`1`). */\n schemaVersion: number;\n /** Data source — `\"native_state_storage\"`. */\n source: string;\n /** Prover-market precompile address (`0x100C`). */\n precompile: string;\n /** Canonical request id (`0x` 32 bytes). */\n requestId: string;\n /** Lifecycle state name. */\n state: ProverMarketState | string;\n /** Lifecycle state wire byte (`0`..=`4`). */\n stateCode: number;\n /** Buyer (`mono` bech32m); `null` when unset. */\n buyer: string | null;\n /** Verification-key hash the proof must satisfy (`0x` 32 bytes). */\n vkeyHash: string;\n /** Public-inputs commitment (`0x` 32 bytes). */\n inputsHash: string;\n /** Maximum fee escrowed (`0x`-hex `uint256`). */\n maxFee: string;\n /** Deterministic Unix-seconds deadline. */\n deadlineUnixSeconds: number;\n /** Assigned prover (`mono` bech32m); `null` while Open/Expired. */\n assignedProver: string | null;\n /** Winning fee bid (`0x`-hex `uint256`); `0x0` while Open. */\n winningFee: string;\n /** Unix seconds of the last state transition. */\n stateAtUnixSeconds: number;\n /** Delivered proof hash (`0x` 32 bytes); zero until `submitProof`. */\n proofHash: string;\n /** Number of bids recorded against the request. */\n bidCount: number;\n}\n\n/**\n * `lyth_listProofRequests` row — one indexer-projection proof-request\n * record. Distinct from {@link ProofRequestView}: fee amounts here are\n * decimal atomic-unit strings (the indexer projection's wire form), and\n * the row carries `feePaid` + `createdAtBlock` instead of the\n * state-tree-only `inputsHash` / `stateCode` / `proofHash` fields.\n */\nexport interface ProofRequestRow {\n /** Content-addressed request id (`0x` 32 bytes). */\n requestId: string;\n /** Requesting buyer (`mono` bech32m). */\n buyer: string;\n /** Verification-key hash bound to the request (`0x` 32 bytes). */\n vkeyHash: string;\n /** Maximum fee escrowed (decimal atomic-unit string). */\n maxFee: string;\n /** Deadline (unix seconds). */\n deadlineUnixSeconds: number;\n /** Lifecycle state name. */\n state: ProverMarketState | string;\n /** Assigned prover (`mono` bech32m); `null` until a winner is selected. */\n assignedProver: string | null;\n /** Winning fee (decimal atomic-unit string); `null` until assigned. */\n winningFee: string | null;\n /** Number of bids recorded against the request. */\n bidCount: number;\n /** Fee paid out on settlement (decimal atomic-unit string); `null` otherwise. */\n feePaid: string | null;\n /** Block height the request was first observed at. */\n createdAtBlock: number;\n}\n\n/**\n * `lyth_listProofRequests` response envelope.\n *\n * When the node runs without the prover-market indexer projection it\n * returns the graceful fallback `{ status: \"indexer_unavailable\", … }`\n * with an empty `requests` array — `requests` is always present so\n * callers can iterate unconditionally.\n */\nexport interface ListProofRequestsResponse {\n /** Response schema version (`1`). */\n schemaVersion: number;\n /** `\"indexer_unavailable\"` on the graceful-fallback path; absent when served. */\n status?: \"indexer_unavailable\";\n /** Data source — `\"prover_market_indexer_projection\"`. */\n source: string;\n /** Prover-market precompile address (`0x100C`). */\n precompile: string;\n /** Echo of the lifecycle-state filter, when one was supplied. */\n stateFilter?: ProverMarketState | string | null;\n /** Echo of the page cap, when served. */\n limit?: number;\n /** Matching rows, newest-first. Empty on the fallback path. */\n requests: ProofRequestRow[];\n /** Human-readable reason on the fallback path. */\n reason?: string;\n}\n\n/**\n * `lyth_getProverBids` response — every recorded bid against one request,\n * read from the prover-market bid slots (`0x100C`).\n */\nexport interface ProverBidsResponse {\n /** Response schema version (`1`). */\n schemaVersion: number;\n /** Data source — `\"native_state_storage\"`. */\n source: string;\n /** Prover-market precompile address (`0x100C`). */\n precompile: string;\n /** Request the bids target (`0x` 32 bytes). */\n requestId: string;\n /** Number of bids recorded. */\n bidCount: number;\n /** Recorded fee bids. */\n bids: ProverBidView[];\n}\n\n/** One prover fee bid in a {@link ProverBidsResponse}. */\nexport interface ProverBidView {\n /** Slot index of this bid within the request's bid list. */\n index: number;\n /** Bidding prover (`mono` bech32m); must hold `SERVES_GPU_PROVE`. */\n prover: string;\n /** Fee bid (`0x`-hex `uint256`); must be `<= maxFee`. */\n fee: string;\n}\n\n/**\n * `lyth_proverMarketStatus` response — market-wide prover-market stats.\n *\n * `feeFloor` is the on-chain genesis singleton (always present, read\n * directly from `0x100C`). The aggregate counts come from the indexer\n * projection; when the node runs without it the response carries\n * `status: \"indexer_unavailable\"` and the count fields are `null`.\n */\nexport interface ProverMarketStatusResponse {\n /** Response schema version (`1`). */\n schemaVersion: number;\n /** `\"indexer_unavailable\"` on the graceful-fallback path; absent when served. */\n status?: \"indexer_unavailable\";\n /** Data source — `\"prover_market_indexer_projection\"`. */\n source: string;\n /** Prover-market precompile address (`0x100C`). */\n precompile: string;\n /** Genesis-configured minimum prover fee (`0x`-hex `uint256`). */\n feeFloor: string;\n /** Requests in the `open` state; `null` on the fallback path. */\n openRequests: number | null;\n /** Requests in the `assigned` state; `null` on the fallback path. */\n assignedRequests: number | null;\n /** Requests in the `settled` state; `null` on the fallback path. */\n settledRequests: number | null;\n /** Requests in the `slashed` state; absent on the fallback path. */\n slashedRequests?: number | null;\n /** Requests in the `expired` state; absent on the fallback path. */\n expiredRequests?: number | null;\n /** Total requests observed; absent on the fallback path. */\n totalRequests?: number | null;\n /** Human-readable reason on the fallback path. */\n reason?: string;\n}\n\nexport class ProverMarketError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"ProverMarketError\";\n }\n}\n\n/** Compute the buyer's `request` sighash (`prover_market.request.v1`). */\nexport function requestSighash(\n vkeyHash: string | Uint8Array | readonly number[],\n inputsHash: string | Uint8Array | readonly number[],\n maxFee: bigint | number | string,\n deadline: bigint | number | string,\n nonce: bigint | number | string,\n): string {\n return bytesToHex(\n keccak_256(\n concatBytes(\n new TextEncoder().encode(PROVER_MARKET_REQUEST_DOMAIN),\n expectLength(toBytes(vkeyHash), 32, \"vkeyHash\"),\n expectLength(toBytes(inputsHash), 32, \"inputsHash\"),\n u128Bytes(maxFee, \"maxFee\"),\n u64Bytes(deadline, \"deadline\"),\n u64Bytes(nonce, \"nonce\"),\n ),\n ),\n );\n}\n\n/** Compute the prover's `bid` sighash (`prover_market.bid.v1`). */\nexport function bidSighash(\n requestId: string | Uint8Array | readonly number[],\n fee: bigint | number | string,\n): string {\n return bytesToHex(\n keccak_256(\n concatBytes(\n new TextEncoder().encode(PROVER_MARKET_BID_DOMAIN),\n expectLength(toBytes(requestId), 32, \"requestId\"),\n u128Bytes(fee, \"fee\"),\n ),\n ),\n );\n}\n\n/** Compute the assigned prover's `submit` sighash (`prover_market.submit.v1`). */\nexport function submitSighash(\n requestId: string | Uint8Array | readonly number[],\n proofHash: string | Uint8Array | readonly number[],\n): string {\n return bytesToHex(\n keccak_256(\n concatBytes(\n new TextEncoder().encode(PROVER_MARKET_SUBMIT_DOMAIN),\n expectLength(toBytes(requestId), 32, \"requestId\"),\n expectLength(toBytes(proofHash), 32, \"proofHash\"),\n ),\n ),\n );\n}\n\nexport interface CreateRequestCanonicalArgs {\n /** Buyer address (`0x` 20 bytes). */\n buyer: string | Uint8Array | readonly number[];\n /** Buyer's ML-DSA-65 pubkey bytes. */\n buyerPubkey: string | Uint8Array | readonly number[];\n /** Verification-key hash (`0x` 32 bytes). */\n vkeyHash: string | Uint8Array | readonly number[];\n /** Public-inputs commitment (`0x` 32 bytes). */\n inputsHash: string | Uint8Array | readonly number[];\n /** Maximum fee escrowed (lythoshi). */\n maxFee: bigint | number | string;\n /** Deterministic Unix-seconds deadline. */\n deadline: bigint | number | string;\n /** Buyer-supplied uniqueness nonce. */\n nonce: bigint | number | string;\n /** Buyer's ML-DSA-65 signature over {@link requestSighash}. */\n sig: string | Uint8Array | readonly number[];\n}\n\n/**\n * Encode the canonical `createRequest` payload (the `bytes` body the\n * precompile accepts). Mirrors `ProofRequest::encode_canonical`:\n *\n * ```text\n * buyer (20) || buyerPubkeyLen (be16) || buyerPubkey\n * || vkeyHash (32) || inputsHash (32) || maxFee (be16)\n * || deadline (be8) || nonce (be8) || sigLen (be16) || sig\n * ```\n */\nexport function encodeCreateRequestCanonical(args: CreateRequestCanonicalArgs): string {\n const buyer = expectLength(toBytes(args.buyer), 20, \"buyer\");\n const buyerPubkey = toBytes(args.buyerPubkey);\n const sig = toBytes(args.sig);\n if (buyerPubkey.length === 0 || buyerPubkey.length > 0xffff) {\n throw new ProverMarketError(\"buyerPubkey length out of range (1..=65535)\");\n }\n if (sig.length === 0 || sig.length > 0xffff) {\n throw new ProverMarketError(\"sig length out of range (1..=65535)\");\n }\n return bytesToHex(\n concatBytes(\n buyer,\n u16Bytes(buyerPubkey.length),\n buyerPubkey,\n expectLength(toBytes(args.vkeyHash), 32, \"vkeyHash\"),\n expectLength(toBytes(args.inputsHash), 32, \"inputsHash\"),\n u128Bytes(args.maxFee, \"maxFee\"),\n u64Bytes(args.deadline, \"deadline\"),\n u64Bytes(args.nonce, \"nonce\"),\n u16Bytes(sig.length),\n sig,\n ),\n );\n}\n\n/**\n * Encode full `createRequest(bytes)` calldata: the 4-byte selector\n * followed by the ABI-`bytes`-wrapped canonical payload.\n */\nexport function encodeCreateRequestCalldata(args: CreateRequestCanonicalArgs): string {\n const canonical = toBytes(encodeCreateRequestCanonical(args));\n const offset = new Uint8Array(32);\n offset[31] = 0x20;\n const lenWord = new Uint8Array(32);\n const len = canonical.length;\n lenWord[28] = (len >>> 24) & 0xff;\n lenWord[29] = (len >>> 16) & 0xff;\n lenWord[30] = (len >>> 8) & 0xff;\n lenWord[31] = len & 0xff;\n const pad = (32 - (len % 32)) % 32;\n return bytesToHex(\n concatBytes(hexToBytes(PROVER_MARKET_SELECTORS.createRequest), offset, lenWord, canonical, new Uint8Array(pad)),\n );\n}\n\n// TODO(monolythium-vision): mono-core-sdk missing submitBid / closeRequest /\n// submitProof / settle / slash canonical-payload encoders — the chain side\n// (`prover-market::precompile`) defers those op bodies to the runtime-wiring\n// wave, so their canonical `bytes` layouts are not yet final. Add the encoders\n// once they land. The selectors + sighash helpers above are final.\n\nfunction selectorHex(sig: string): string {\n return [...keccak_256(new TextEncoder().encode(sig)).slice(0, 4)]\n .map((b) => b.toString(16).padStart(2, \"0\"))\n .join(\"\");\n}\n\nfunction toBytes(value: string | Uint8Array | readonly number[]): Uint8Array {\n if (typeof value === \"string\") return hexToBytes(value);\n return value instanceof Uint8Array ? value : Uint8Array.from(value);\n}\n\nfunction hexToBytes(hex: string): Uint8Array {\n const b = hex.startsWith(\"0x\") || hex.startsWith(\"0X\") ? hex.slice(2) : hex;\n if (b.length % 2 !== 0 || !/^[0-9a-fA-F]*$/.test(b)) {\n throw new ProverMarketError(\"invalid hex bytes\");\n }\n const out = new Uint8Array(b.length / 2);\n for (let i = 0; i < out.length; i++) out[i] = Number.parseInt(b.slice(i * 2, i * 2 + 2), 16);\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 ProverMarketError(`${name} must be ${len} bytes, got ${value.length}`);\n }\n return value;\n}\n\nfunction toBigint(value: bigint | number | string, name: string): bigint {\n let n: bigint;\n if (typeof value === \"bigint\") n = value;\n else if (typeof value === \"number\") {\n if (!Number.isSafeInteger(value)) throw new ProverMarketError(`${name} must be a safe integer`);\n n = BigInt(value);\n } else if (/^(0|[1-9][0-9]*|0x[0-9a-fA-F]+)$/.test(value)) n = BigInt(value);\n else throw new ProverMarketError(`${name} must be a non-negative integer`);\n if (n < 0n) throw new ProverMarketError(`${name} must be non-negative`);\n return n;\n}\n\nfunction u16Bytes(value: number): Uint8Array {\n if (!Number.isInteger(value) || value < 0 || value > 0xffff) {\n throw new ProverMarketError(\"u16 value out of range\");\n }\n return Uint8Array.from([(value >> 8) & 0xff, value & 0xff]);\n}\n\nfunction u64Bytes(value: bigint | number | string, name: string): Uint8Array {\n const n = toBigint(value, name);\n if (n > 0xffff_ffff_ffff_ffffn) throw new ProverMarketError(`${name} exceeds uint64`);\n return bigintBytes(n, 8);\n}\n\nfunction u128Bytes(value: bigint | number | string, name: string): Uint8Array {\n const n = toBigint(value, name);\n if (n > (1n << 128n) - 1n) throw new ProverMarketError(`${name} exceeds uint128`);\n return bigintBytes(n, 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","/**\n * Delegation precompile ABI helpers.\n *\n * The V4.1 redemption completion call prunes a matured redemption\n * queue ticket. It does not imply principal payout until mono-core adds\n * stake-vault/redemption-escrow accounting.\n */\n\nimport { PRECOMPILE_ADDRESSES } from \"./consts.js\";\n\nexport const DELEGATION_SELECTORS = {\n delegate: \"0x662337de\",\n undelegate: \"0x914f3ca8\",\n redelegate: \"0xa06ac18f\",\n claim: \"0x4e71d92d\",\n setAutoCompound: \"0x86593454\",\n completeRedemption: \"0x26169d0a\",\n} as const;\n\nexport const DELEGATION_REVERT_TAGS = {\n redemptionQueueFull: \"0x020e\",\n redemptionTicketNotFound: \"0x020f\",\n redemptionNotMature: \"0x0210\",\n redemptionPrincipalUnavailable: \"0x0211\",\n} as const;\n\nexport class DelegationPrecompileError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"DelegationPrecompileError\";\n }\n}\n\nexport function delegationAddressHex(): string {\n return PRECOMPILE_ADDRESSES.DELEGATION.toLowerCase();\n}\n\nexport function encodeCompleteRedemptionCalldata(index: bigint | number | string): string {\n return bytesToHex(\n concatBytes(\n hexToBytes(DELEGATION_SELECTORS.completeRedemption),\n uint64Word(index, \"index\"),\n ),\n );\n}\n\n/** `delegate(uint32 cluster, uint16 weightBps)` — caller sends LYTH as msg.value\n * to set their principal stake for `cluster`; `weightBps` is the fraction\n * of voting power (max 10_000 = 100%). */\nexport function encodeDelegateCalldata(\n cluster: bigint | number | string,\n weightBps: bigint | number | string,\n): string {\n return bytesToHex(\n concatBytes(\n hexToBytes(DELEGATION_SELECTORS.delegate),\n uint32Word(cluster, \"cluster\"),\n uint16Word(weightBps, \"weightBps\"),\n ),\n );\n}\n\n/** `undelegate(uint32 cluster)` — removes the caller's row + appends a\n * redemption ticket. Principal becomes claimable through\n * `completeRedemption(uint64 index)` once the ticket matures. */\nexport function encodeUndelegateCalldata(cluster: bigint | number | string): string {\n return bytesToHex(\n concatBytes(\n hexToBytes(DELEGATION_SELECTORS.undelegate),\n uint32Word(cluster, \"cluster\"),\n ),\n );\n}\n\n/** `redelegate(uint32 fromCluster, uint32 toCluster, uint16 weightBps)`. */\nexport function encodeRedelegateCalldata(\n fromCluster: bigint | number | string,\n toCluster: bigint | number | string,\n weightBps: bigint | number | string,\n): string {\n return bytesToHex(\n concatBytes(\n hexToBytes(DELEGATION_SELECTORS.redelegate),\n uint32Word(fromCluster, \"fromCluster\"),\n uint32Word(toCluster, \"toCluster\"),\n uint16Word(weightBps, \"weightBps\"),\n ),\n );\n}\n\n/** `claim()` — settle + withdraw the caller's pending delegation rewards. */\nexport function encodeClaimCalldata(): string {\n return DELEGATION_SELECTORS.claim;\n}\n\n/** `setAutoCompound(bool enabled)` — persists the caller's auto-compound\n * preference. */\nexport function encodeSetAutoCompoundCalldata(enabled: boolean): string {\n const flag = new Uint8Array(32);\n flag[31] = enabled ? 1 : 0;\n return bytesToHex(\n concatBytes(hexToBytes(DELEGATION_SELECTORS.setAutoCompound), flag),\n );\n}\n\nexport function isRedemptionPrincipalUnavailableRevert(data: string | Uint8Array | readonly number[]): boolean {\n return bytesToHex(toBytes(data)).toLowerCase() === DELEGATION_REVERT_TAGS.redemptionPrincipalUnavailable;\n}\n\nfunction uint64Word(value: bigint | number | string, name: string): Uint8Array {\n const n = toBigint(value, name);\n if (n < 0n || n > 0xffff_ffff_ffff_ffffn) {\n throw new DelegationPrecompileError(`${name} must fit uint64`);\n }\n const out = new Uint8Array(32);\n let rest = n;\n for (let i = 31; i >= 24; i--) {\n out[i] = Number(rest & 0xffn);\n rest >>= 8n;\n }\n return out;\n}\n\nfunction uint32Word(value: bigint | number | string, name: string): Uint8Array {\n const n = toBigint(value, name);\n if (n < 0n || n > 0xffff_ffffn) {\n throw new DelegationPrecompileError(`${name} must fit uint32`);\n }\n const out = new Uint8Array(32);\n let rest = n;\n for (let i = 31; i >= 28; i--) {\n out[i] = Number(rest & 0xffn);\n rest >>= 8n;\n }\n return out;\n}\n\nfunction uint16Word(value: bigint | number | string, name: string): Uint8Array {\n const n = toBigint(value, name);\n if (n < 0n || n > 0xffffn) {\n throw new DelegationPrecompileError(`${name} must fit uint16`);\n }\n const out = new Uint8Array(32);\n let rest = n;\n for (let i = 31; i >= 30; i--) {\n out[i] = Number(rest & 0xffn);\n rest >>= 8n;\n }\n return out;\n}\n\nfunction toBigint(value: bigint | number | string, name: string): bigint {\n if (typeof value === \"bigint\") return value;\n if (typeof value === \"number\") {\n if (!Number.isInteger(value) || !Number.isSafeInteger(value)) {\n throw new DelegationPrecompileError(`${name} must be a safe integer`);\n }\n return BigInt(value);\n }\n if (!/^(0x[0-9a-fA-F]+|[0-9]+)$/.test(value)) {\n throw new DelegationPrecompileError(`${name} must be an integer string`);\n }\n return BigInt(value);\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 DelegationPrecompileError(\"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","/**\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 { addressBytesToHex, hexToAddressBytes, typedBech32ToAddress } 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 // WP §18.8 widened the setPolicy* sighash strings to 11 words, so their\n // selectors changed; enable/disable/recordSpend are unchanged.\n setPolicy: \"0x8da1a765\",\n setPolicyClaim: \"0x35531f6c\",\n claimPolicyByAddress: \"0x0c21376c\",\n enable: \"0x5bfa1b68\",\n disable: \"0xe6c09edf\",\n recordSpend: \"0xdca04292\",\n} as const;\n\nexport interface SpendingPolicyArgs {\n /** Typed `mono` bech32m sub-account address. */\n subAccount: string;\n /** Typed `mono` bech32m principal address. */\n principal: string;\n dailyCapLythoshi: bigint | number | string;\n perTxCapLythoshi: bigint | number | string;\n allowRoot: string | Uint8Array | readonly number[];\n denyRoot: string | Uint8Array | readonly number[];\n /**\n * WP §18.8 per-week rolling cap in lythoshi (wire code `0x07`).\n * Omit or `0` for \"no weekly cap\".\n */\n weeklyCapLythoshi?: bigint | number | string;\n /**\n * WP §18.8 per-month rolling cap in lythoshi (wire code `0x08`).\n * Omit or `0` for \"no monthly cap\".\n */\n monthlyCapLythoshi?: bigint | number | string;\n /**\n * WP §18.8 per-category allow-list Merkle root (wire code `0x09`).\n * Omit or the zero hash for \"no category constraint\".\n */\n categoryAllowRoot?: string | Uint8Array | readonly number[];\n /**\n * WP §18.8 packed time-of-day window (wire code `0x0A`), a 32-byte\n * `uint256` word. Build it with {@link packTimeWindow}; omit or the\n * zero word for \"no time-of-day window\".\n */\n timeWindow?: string | Uint8Array | readonly number[];\n /**\n * WP §18.8 explicit policy-expiry timestamp in unix seconds (wire\n * code `0x0B`), encoded as a `uint256`. Omit or `0` for \"never\n * auto-expires\".\n */\n policyExpiry?: bigint | number | string;\n}\n\n/**\n * Decoded `lyth_getSpendingPolicy` time-of-day window. `enabled` is\n * always `true` when present (the chain omits the object as `null` when\n * no window is configured). `[startHour, endHour]` are `0..=23`,\n * inclusive, and may wrap past midnight.\n */\nexport interface SpendingPolicyTimeWindow {\n /** Always `true` when the window object is present. */\n enabled: boolean;\n /** Window start hour (`0..=23`). */\n startHour: number;\n /** Window end hour (`0..=23`). */\n endHour: number;\n}\n\n/**\n * `lyth_getSpendingPolicy` response — the §18.8 spending-policy view for\n * a sub-account, read directly from the spending-policy precompile slots\n * (`0x110C`).\n *\n * Mirrors the chain JSON exactly (camelCase keys). Caps are `0x`-hex\n * `uint256` strings; roots are `0x`-hex 32-byte words. `timeOfDayWindow`\n * is `null` when no window is configured; `expiryUnixSeconds` is `null`\n * when the policy never auto-expires. Note: the chain surfaces the policy\n * keyed by the controlled sub-account (`address`); the managing principal\n * is NOT part of this read shape.\n */\nexport interface SpendingPolicyView {\n /** Response schema version (`1`). */\n schemaVersion: number;\n /** Data source — `\"native_state_storage\"`. */\n source: string;\n /** Spending-policy precompile address (`0x110C`). */\n precompile: string;\n /** Sub-account the policy controls (`mono` bech32m). */\n address: string;\n /** `true` when a policy is written for this sub-account. */\n exists: boolean;\n /** `true` when the policy exists and is not disabled. */\n enabled: boolean;\n /** Monotonic policy version; `0` means no policy is written. */\n version: number;\n /** Per-transaction cap (`0x`-hex `uint256`); `0x0` = no cap. */\n perTxCap: string;\n /** Daily spend cap (`0x`-hex `uint256`); `0x0` = no cap. */\n dailyCap: string;\n /** §18.8 per-week cap (`0x`-hex `uint256`); `0x0` = no weekly cap. */\n weeklyCap: string;\n /** §18.8 per-month cap (`0x`-hex `uint256`); `0x0` = no monthly cap. */\n monthlyCap: string;\n /** §18.8 category allow-list root (`0x` 32 bytes). */\n categoryAllowRoot: string;\n /** Destination allow-list Merkle root (`0x` 32 bytes). */\n destinationAllowRoot: string;\n /** Destination deny-list Merkle root (`0x` 32 bytes). */\n destinationDenyRoot: string;\n /** §18.8 decoded time-of-day window, or `null` if unset. */\n timeOfDayWindow: SpendingPolicyTimeWindow | null;\n /** §18.8 policy-expiry unix seconds; `null` = never expires. */\n expiryUnixSeconds: number | null;\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 = toRawAddressBytes(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.dailyCapLythoshi, \"dailyCapLythoshi\"),\n uint128Bytes(normalized.perTxCapLythoshi, \"perTxCapLythoshi\"),\n normalized.allowRoot,\n normalized.denyRoot,\n // WP §18.8 dimensions, in wire order: weekly cap (be16), monthly cap\n // (be16), category allow-root (32), packed time window (32),\n // policy expiry (be8). These slot in before the expected-version word.\n uint128Bytes(normalized.weeklyCapLythoshi, \"weeklyCapLythoshi\"),\n uint128Bytes(normalized.monthlyCapLythoshi, \"monthlyCapLythoshi\"),\n normalized.categoryAllowRoot,\n normalized.timeWindow,\n uint64Bytes(normalized.policyExpiry, \"policyExpiry\"),\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): string {\n return encodeSingleAddressCall(SPENDING_POLICY_SELECTORS.enable, subAccount, \"subAccount\");\n}\n\nexport function encodeDisableCalldata(subAccount: string): string {\n return encodeSingleAddressCall(SPENDING_POLICY_SELECTORS.disable, subAccount, \"subAccount\");\n}\n\ninterface NormalizedSpendingPolicyArgs {\n subAccount: Uint8Array;\n principal: Uint8Array;\n dailyCapLythoshi: bigint;\n perTxCapLythoshi: bigint;\n allowRoot: Uint8Array;\n denyRoot: Uint8Array;\n weeklyCapLythoshi: bigint;\n monthlyCapLythoshi: bigint;\n categoryAllowRoot: Uint8Array;\n timeWindow: Uint8Array;\n policyExpiry: bigint;\n}\n\nconst ZERO_WORD = new Uint8Array(32);\n\nfunction normalizeArgs(args: SpendingPolicyArgs): NormalizedSpendingPolicyArgs {\n return {\n subAccount: toUserAddressBytes(args.subAccount, \"subAccount\"),\n principal: toUserAddressBytes(args.principal, \"principal\"),\n dailyCapLythoshi: toBigint(args.dailyCapLythoshi, \"dailyCapLythoshi\"),\n perTxCapLythoshi: toBigint(args.perTxCapLythoshi, \"perTxCapLythoshi\"),\n allowRoot: expectLength(toBytes(args.allowRoot), 32, \"allowRoot\"),\n denyRoot: expectLength(toBytes(args.denyRoot), 32, \"denyRoot\"),\n weeklyCapLythoshi: toBigint(args.weeklyCapLythoshi ?? 0n, \"weeklyCapLythoshi\"),\n monthlyCapLythoshi: toBigint(args.monthlyCapLythoshi ?? 0n, \"monthlyCapLythoshi\"),\n categoryAllowRoot:\n args.categoryAllowRoot == null\n ? ZERO_WORD\n : expectLength(toBytes(args.categoryAllowRoot), 32, \"categoryAllowRoot\"),\n timeWindow:\n args.timeWindow == null\n ? ZERO_WORD\n : expectLength(toBytes(args.timeWindow), 32, \"timeWindow\"),\n policyExpiry: toBigint(args.policyExpiry ?? 0n, \"policyExpiry\"),\n };\n}\n\nfunction encodePolicyWords(args: NormalizedSpendingPolicyArgs): Uint8Array {\n return concatBytes(\n encodeAddressWord(args.subAccount),\n encodeAddressWord(args.principal),\n encodeUint128Word(args.dailyCapLythoshi),\n encodeUint128Word(args.perTxCapLythoshi),\n args.allowRoot,\n args.denyRoot,\n // WP §18.8 trailing 5 words: weekly cap, monthly cap, category\n // allow-root, packed time window, policy expiry.\n encodeUint128Word(args.weeklyCapLythoshi),\n encodeUint128Word(args.monthlyCapLythoshi),\n args.categoryAllowRoot,\n args.timeWindow,\n encodeUint64Word(args.policyExpiry),\n );\n}\n\n/**\n * Pack a time-of-day window into the 32-byte `timeWindow` word used by\n * the WP §18.8 spending-policy dimensions.\n *\n * Mirrors `spending-policy::storage::pack_time_window`: hours clamp to\n * `0..=23`; when `enabled` is `false` the word is all-zero (the \"no\n * window configured\" sentinel). Layout (low 3 bytes of the big-endian\n * word): byte 29 = enabled sentinel (`0x01`), byte 30 = `startHour`,\n * byte 31 = `endHour`.\n */\nexport function packTimeWindow(enabled: boolean, startHour: number, endHour: number): Uint8Array {\n const out = new Uint8Array(32);\n if (!enabled) return out;\n out[29] = 0x01;\n out[30] = clampHour(startHour);\n out[31] = clampHour(endHour);\n return out;\n}\n\n/**\n * Decode a packed `timeWindow` word into `[startHour, endHour]`, or\n * `null` when no window is configured. Inverse of {@link packTimeWindow}.\n */\nexport function decodeTimeWindow(word: string | Uint8Array | readonly number[]): [number, number] | null {\n const bytes = expectLength(toBytes(word), 32, \"timeWindow\");\n if (bytes.every((b) => b === 0)) return null;\n if (bytes[29] === 0) return null;\n return [Math.min(bytes[30], 23), Math.min(bytes[31], 23)];\n}\n\nfunction clampHour(hour: number): number {\n if (!Number.isInteger(hour) || hour < 0) {\n throw new SpendingPolicyError(\"time-window hour must be a non-negative integer\");\n }\n return Math.min(hour, 23);\n}\n\nfunction encodeUint64Word(value: bigint): Uint8Array {\n return concatBytes(new Uint8Array(24), uint64Bytes(value, \"policyExpiry\"));\n}\n\nfunction encodeSingleAddressCall(selector: string, address: string, name: string): string {\n return bytesToHex(concatBytes(hexToBytes(selector), encodeAddressWord(toUserAddressBytes(address, name))));\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 toUserAddressBytes(value: string, name: string): Uint8Array {\n if (typeof value !== \"string\") {\n throw new SpendingPolicyError(`${name} must be a typed mono bech32m address`);\n }\n if (value.startsWith(\"0x\") || value.startsWith(\"0X\")) {\n throw new SpendingPolicyError(`${name} raw 0x addresses are retired; use typed mono bech32m addresses`);\n }\n try {\n return typedBech32ToAddress(value, \"user\").bytes;\n } catch (error) {\n const detail = error instanceof Error ? `: ${error.message}` : \"\";\n throw new SpendingPolicyError(`${name} must be a typed mono bech32m address${detail}`);\n }\n}\n\nfunction toRawAddressBytes(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 { typedBech32ToAddress } 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): string {\n return encodeSingleAddressCall(PUBKEY_REGISTRY_SELECTORS.lookupPubkey, address);\n}\n\nexport function encodeHasPubkeyCalldata(address: string): 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): 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 {\n if (typeof value !== \"string\") {\n throw new PubkeyRegistryError(\"address must be a typed mono bech32m address\");\n }\n if (value.startsWith(\"0x\") || value.startsWith(\"0X\")) {\n throw new PubkeyRegistryError(\"raw 0x addresses are retired; use typed mono bech32m addresses\");\n }\n try {\n return typedBech32ToAddress(value, \"user\").bytes;\n } catch (error) {\n const detail = error instanceof Error ? `: ${error.message}` : \"\";\n throw new PubkeyRegistryError(`address must be a typed mono bech32m address${detail}`);\n }\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 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 * Native market transaction-plan builders.\n *\n * These helpers only build signer-ready transaction requests or native module\n * call material. They do not predict fills, trades, or execution success.\n */\n\nimport { blake3 } from \"@noble/hashes/blake3.js\";\nimport { keccak_256 } from \"@noble/hashes/sha3.js\";\nimport {\n ADDRESS_KIND_HRPS,\n addressToTypedBech32,\n typedBech32ToAddress,\n type AddressKind,\n} from \"./address.js\";\nimport {\n PRECOMPILE_ADDRESSES,\n PROTOCOL_MAX_OPERATOR_FEE_BPS,\n} from \"./consts.js\";\nimport { BincodeWriter } from \"./crypto/bincode.js\";\nimport { bytesToHex, concatBytes, hexToBytes } from \"./crypto/bytes.js\";\nimport { MempoolClass } from \"./crypto/envelope.js\";\n\nexport const CLOB_MARKET_ID_DOMAIN_TAG = 0xc1 as const;\nexport const NATIVE_MARKET_MODULE_ADDRESS_BYTES = \"0x4d41524b45545f4e41544956455f4d4f445f5631\" as const;\nexport const NATIVE_MARKET_MODULE_ADDRESS = addressToTypedBech32(\n \"systemModule\",\n NATIVE_MARKET_MODULE_ADDRESS_BYTES,\n);\nexport const NATIVE_CALL_FORWARDER_ARTIFACT_PROFILE = \"native-call-forwarder-v1\" as const;\nexport const NATIVE_CALL_FORWARDER_RESPONSE_OFFSET = 768 as const;\nexport const NATIVE_CALL_FORWARDER_RESPONSE_CAPACITY = 256 as const;\nexport const MAX_NATIVE_CALL_FORWARDER_REQUEST_BYTES = 2047 as const;\n\nexport const CLOB_SELECTORS = {\n /**\n * `placeLimitOrder(bytes32,bytes32,uint8,uint256,uint256,uint64)`\n *\n * Args: `baseTokenId, quoteTokenId, side, price, amount, expiresAtBlock`.\n */\n placeLimitOrder: \"0x2468786f\",\n /**\n * `placeMarketOrder(bytes32,bytes32,uint8,uint256,uint16)`\n *\n * Args: `baseTokenId, quoteTokenId, side, quantity, maxSlippageBps`.\n */\n placeMarketOrder: \"0xb9b1fa86\",\n /**\n * `placeMarketOrderEx(bytes32,bytes32,uint8,uint256,uint16,uint8)`\n *\n * Args: `baseTokenId, quoteTokenId, side, quantity, maxSlippageBps, mode`.\n */\n placeMarketOrderEx: \"0xa6f092f0\",\n /** `cancelOrder(bytes32)` */\n cancelOrder: \"0x7489ec23\",\n /** `setMinNotional(bytes32,bytes32,uint256)` — foundation-authorized. */\n setMinNotional: \"0x395dc48f\",\n /** `setTickSize(bytes32,bytes32,uint256)` — foundation-authorized per-market grid tune. */\n setTickSize: \"0x10666f0b\",\n /** `setLotSize(bytes32,bytes32,uint256)` — foundation-authorized per-market grid tune. */\n setLotSize: \"0x9909be80\",\n} as const;\n\n/**\n * Canonical operator-fee router selector signatures (`0x100B`).\n *\n * Mirrors `mono-core/crates/precompiles/platform/operator-router/src/abi.rs`\n * (`sig::*`). Selectors are `keccak256(signature)[0..4]`.\n */\nexport const OPERATOR_ROUTER_SIGS = {\n /** `registerOperator(address recipient, uint16 feeBps)`. */\n registerOperator: \"registerOperator(address,uint16)\",\n /** `updateOperator(address recipient, uint16 feeBps)`. */\n updateOperator: \"updateOperator(address,uint16)\",\n /** `disableOperator(address operator)` — foundation-authorized. */\n disableOperator: \"disableOperator(address)\",\n /**\n * `placeLimitOrderVia(address operator, bytes32 base, bytes32 quote,\n * uint8 side, uint256 price, uint256 amount, uint64 expiresAtBlock)`\n * → `bytes32 orderId`.\n *\n * Skims the operator fee (quote token, `user -> recipient`) then\n * re-enters the CLOB `placeLimitOrder` op with `caller = user`, so the\n * resting order is owned + escrowed + cancellable by the user,\n * identical to a direct CLOB placement.\n */\n placeLimitOrderVia:\n \"placeLimitOrderVia(address,bytes32,bytes32,uint8,uint256,uint256,uint64)\",\n} as const;\n\n/** Operator-router selectors as `0x`-prefixed 4-byte hex. */\nexport const OPERATOR_ROUTER_SELECTORS = {\n registerOperator: operatorRouterSelectorHex(OPERATOR_ROUTER_SIGS.registerOperator),\n updateOperator: operatorRouterSelectorHex(OPERATOR_ROUTER_SIGS.updateOperator),\n disableOperator: operatorRouterSelectorHex(OPERATOR_ROUTER_SIGS.disableOperator),\n placeLimitOrderVia: operatorRouterSelectorHex(OPERATOR_ROUTER_SIGS.placeLimitOrderVia),\n} as const;\n\n/**\n * Canonical operator-router event declaration strings (`0x100B`).\n *\n * Mirrors `operator-router/src/events.rs::sig`. Indexed args are\n * `operator`, `user`, `marketId` (for `OperatorFeeCharged`).\n */\nexport const OPERATOR_ROUTER_EVENT_SIGS = {\n operatorFeeCharged:\n \"OperatorFeeCharged(address,address,bytes32,address,bytes32,uint256,bytes32)\",\n operatorRegistered: \"OperatorRegistered(address,address,uint16)\",\n operatorUpdated: \"OperatorUpdated(address,address,uint16,bool)\",\n} as const;\n\nfunction operatorRouterSelectorHex(sig: string): string {\n return (\n \"0x\" +\n [...keccak_256(new TextEncoder().encode(sig)).slice(0, 4)]\n .map((b) => b.toString(16).padStart(2, \"0\"))\n .join(\"\")\n );\n}\n\nexport type SpotLimitOrderSide = \"buy\" | \"sell\";\nexport type SpotMarketOrderMode = \"fill-or-refund\" | \"fill-or-rest-at-cap\";\nexport type NativeMarketAddressKind = AddressKind;\nexport type NativeMarketAddressInput =\n | string\n | {\n kind?: NativeMarketAddressKind;\n address: string;\n };\n\nexport interface PlaceSpotLimitOrderArgs {\n /**\n * Canonical 32-byte CLOB market id, derived as\n * `keccak256(0xC1 || baseTokenId || quoteTokenId)`.\n */\n marketId: string;\n /** 32-byte base token id accepted by the CLOB precompile. */\n baseTokenId: string;\n /** 32-byte quote token id accepted by the CLOB precompile. */\n quoteTokenId: string;\n /** `buy` maps to side byte `0`; `sell` maps to side byte `1`. */\n side: SpotLimitOrderSide;\n /** Positive integer decimal string encoded as uint256. */\n price: string;\n /** Positive integer decimal string encoded as uint256 amount. */\n quantity: string;\n /** Optional uint64 block height; omitted means `0` / no explicit expiry. */\n expiryBlock?: string | number | bigint;\n}\n\nexport interface PlaceLimitOrderViaArgs {\n /**\n * Operator the order routes through (`mono` bech32m user address). Its\n * fee registration (`lyth_operatorFeeConfig`) sets the surcharge skimmed\n * from the quote escrow.\n */\n operator: string;\n /** 32-byte base token id accepted by the CLOB precompile. */\n base: string;\n /** 32-byte quote token id accepted by the CLOB precompile. */\n quote: string;\n /** `buy` maps to side byte `0`; `sell` maps to side byte `1`. */\n side: SpotLimitOrderSide;\n /** Positive integer decimal string encoded as uint256 price. */\n price: string;\n /** Positive integer decimal string encoded as uint256 amount. */\n amount: string;\n /** Optional uint64 block height; omitted means `0` / no explicit expiry. */\n expiresAtBlock?: string | number | bigint;\n}\n\n/**\n * Wallet-display projection of the declared operator fee for a\n * {@link PlaceLimitOrderViaArgs} order, computed off-chain as\n * `quoteBasis * feeBps / 10_000` where `quoteBasis = price * amount`.\n *\n * Advisory only — the binding fee is skimmed on-chain at execution time\n * from the same `quoteBasis`. The fee is denominated in the quote token.\n */\nexport interface OperatorFeeQuote {\n /** Operator the order routes through (`mono` bech32m). */\n operator: string;\n /** Declared operator fee in basis points (from `lyth_operatorFeeConfig`). */\n feeBps: number;\n /** `price * amount` (the quote-token basis the fee is skimmed from), decimal string. */\n quoteBasis: string;\n /** `quoteBasis * feeBps / 10_000`, floored, decimal string of quote-token atoms. */\n feeAmount: string;\n}\n\n/** A {@link MarketTransactionPlan} that also carries the declared operator fee. */\nexport interface PlaceLimitOrderViaPlan extends MarketTransactionPlan {\n /** Off-chain operator-fee projection for wallet display. */\n operatorFee: OperatorFeeQuote;\n}\n\n/**\n * Decoded `OperatorFeeCharged` log (`0x100B`). Mirrors\n * `operator-router/src/events.rs::emit_operator_fee_charged_to_host`:\n * indexed `operator` / `user` / `marketId`; body `recipient`,\n * `quoteToken`, `feeAmount`, `clobOrderId`. `clobOrderId` joins the\n * router fee to the CLOB `OrderPlaced` / `OrderMatched` rows.\n */\nexport interface OperatorFeeChargedEvent {\n /** Operator that charged the fee (`0x` 20-byte hex, indexed). */\n operator: string;\n /** User that paid the fee (`0x` 20-byte hex, indexed). */\n user: string;\n /** CLOB market id the order targets (`0x` 32 bytes, indexed). */\n marketId: string;\n /** Fee recipient configured by the operator (`0x` 20-byte hex). */\n recipient: string;\n /** Quote token the fee was skimmed in (`0x` 32 bytes). */\n quoteToken: string;\n /** Fee amount skimmed (quote-token atoms, decimal string). */\n feeAmount: string;\n /** CLOB order id the routed placement produced (`0x` 32 bytes). */\n clobOrderId: string;\n}\n\n/**\n * `lyth_operatorRouterConfig` response — the router's static posture.\n *\n * Mirrors the chain JSON exactly (camelCase). `enabled` reflects whether\n * the gateable router precompile is currently milestone-activated; the\n * read surfaces work regardless.\n */\nexport interface OperatorRouterConfig {\n /** Response schema version (`1`). */\n schemaVersion: number;\n /** Data source — `\"native_state_storage\"`. */\n source: string;\n /** Router precompile address (`0x100B`). */\n routerAddress: string;\n /** On-chain protocol fee ceiling in bps (`100` = 1.00%). */\n protocolMaxOperatorFeeBps: number;\n /** `true` when the router precompile is milestone-activated. */\n enabled: boolean;\n}\n\n/**\n * `lyth_operatorFeeConfig` response — one operator's fee registration.\n *\n * Mirrors the chain JSON exactly (camelCase). A zero recipient is the\n * \"operator not registered\" sentinel on-chain, so the chain returns a\n * not-found error rather than this shape in that case.\n */\nexport interface OperatorFeeConfig {\n /** Response schema version (`1`). */\n schemaVersion: number;\n /** Data source — `\"native_state_storage\"`. */\n source: string;\n /** Router precompile address (`0x100B`). */\n precompile: string;\n /** Operator the registration belongs to (`mono` bech32m). */\n operator: string;\n /** Configured fee recipient (`mono` bech32m). */\n recipient: string;\n /** Operator surcharge in basis points. */\n feeBps: number;\n /** `true` when the operator's surcharge is active. */\n enabled: boolean;\n /** Block height the operator was first registered at. */\n registeredAtBlock: number;\n}\n\nexport interface PlaceSpotMarketOrderArgs {\n /**\n * Canonical 32-byte CLOB market id, derived as\n * `keccak256(0xC1 || baseTokenId || quoteTokenId)`.\n */\n marketId: string;\n /** 32-byte base token id accepted by the CLOB precompile. */\n baseTokenId: string;\n /** 32-byte quote token id accepted by the CLOB precompile. */\n quoteTokenId: string;\n /** `buy` maps to side byte `0`; `sell` maps to side byte `1`. */\n side: SpotLimitOrderSide;\n /** Positive integer decimal string encoded as uint256 amount. */\n quantity: string;\n /** Slippage bound in basis points; must be less than 10,000. */\n maxSlippageBps: string | number | bigint;\n}\n\nexport interface PlaceSpotMarketOrderExArgs extends PlaceSpotMarketOrderArgs {\n /**\n * `fill-or-refund` keeps legacy market-order semantics; `fill-or-rest-at-cap`\n * rests the unfilled remainder at the slippage cap.\n */\n mode: SpotMarketOrderMode;\n}\n\nexport interface CancelSpotOrderArgs {\n /** 32-byte order id returned by the CLOB precompile. */\n orderId: string;\n}\n\nexport interface EncodeNativeSpotLimitOrderArgs {\n /** 32-byte native spot market id. */\n marketId: string;\n /** Owner typed bech32m MonoAddress; optional object `kind` asserts the expected HRP. */\n owner: NativeMarketAddressInput;\n /** Per-owner order nonce encoded as uint64. */\n nonce: string | number | bigint;\n /** `buy` maps to native `OrderSide::Bid`; `sell` maps to native `OrderSide::Ask`. */\n side: SpotLimitOrderSide;\n /** Positive integer decimal string encoded as native MrcAmount/u128. */\n price: string;\n /** Positive integer decimal string encoded as native MrcAmount/u128. */\n quantity: string;\n /** uint64 expiry block encoded as `expires_at_block`. */\n expiresAtBlock: string | number | bigint;\n}\n\nexport interface EncodeNativeSpotCreateMarketArgs {\n /** Market owner typed bech32m MonoAddress; optional object `kind` asserts the expected HRP. */\n owner: NativeMarketAddressInput;\n /** Owner-local market nonce encoded as uint64. */\n nonce: string | number | bigint;\n /** 32-byte base asset id. */\n baseAsset: string;\n /** 32-byte quote asset id. */\n quoteAsset: string;\n /** Positive integer decimal string encoded as native MrcAmount/u128. */\n tickSize: string;\n /** Positive integer decimal string encoded as native MrcAmount/u128. */\n lotSize: string;\n /** Positive integer decimal string encoded as native MrcAmount/u128. */\n minQuantity: string;\n /** Nonnegative integer decimal string encoded as native MrcAmount/u128; 0 disables the floor. */\n minNotional: string;\n}\n\nexport interface EncodeNativeSpotCancelOrderArgs {\n /** 32-byte native order id. */\n orderId: string;\n /** Caller typed bech32m MonoAddress; optional object `kind` asserts the expected HRP. */\n caller: NativeMarketAddressInput;\n}\n\nexport interface EncodeNativeSpotSettleLimitOrderArgs {\n /** Resting maker order id to match. */\n makerOrderId: string;\n /** Taker limit order parameters. */\n takerOrder: EncodeNativeSpotLimitOrderArgs;\n}\n\nexport interface EncodeNativeSpotSettleRoutedLimitOrderArgs {\n /** Resting maker order ids in deterministic settlement order; mono-core accepts 1..64 ids. */\n makerOrderIds: readonly string[];\n /** Taker limit order parameters. */\n takerOrder: EncodeNativeSpotLimitOrderArgs;\n}\n\nexport type NativeNftAssetStandard = \"mrc721\" | \"mrc1155\";\nexport type NativeNftListingKind =\n | \"fixed-price\"\n | {\n english: {\n /** Minimum starting bid encoded as native MrcAmount/u128. */\n reserve: string;\n /** Auction end block encoded as uint64. */\n endBlock: string | number | bigint;\n /** Minimum bid bump in basis points; must be less than 10,000. */\n minBidIncrementBps: string | number | bigint;\n };\n };\n\nexport interface EncodeNativeNftCreateListingArgs {\n /** Seller typed bech32m MonoAddress; optional object `kind` asserts the expected HRP. */\n seller: NativeMarketAddressInput;\n /** Seller-local listing nonce encoded as uint64. */\n nonce: string | number | bigint;\n /** Native NFT asset standard. */\n standard: NativeNftAssetStandard;\n /** 32-byte collection id. */\n collectionId: string;\n /** 32-byte token id. */\n tokenId: string;\n /** Positive integer decimal string encoded as native MrcAmount/u128. */\n quantity: string;\n /** 32-byte payment asset id. */\n paymentAsset: string;\n /** Positive integer decimal string encoded as native MrcAmount/u128. */\n price: string;\n /** Fixed-price or English-auction sale model. */\n kind: NativeNftListingKind;\n /** uint64 expiry block encoded as `expires_at_block`; 0 means never. */\n expiresAtBlock: string | number | bigint;\n}\n\nexport interface EncodeNativeNftBuyListingArgs {\n /** 32-byte native NFT listing id. */\n listingId: string;\n /** Buyer typed bech32m MonoAddress; optional object `kind` asserts the expected HRP. */\n buyer: NativeMarketAddressInput;\n /** Current block attached to the native buy call. */\n currentBlock: string | number | bigint;\n}\n\nexport interface EncodeNativeNftCancelListingArgs {\n /** 32-byte native NFT listing id. */\n listingId: string;\n /** Caller typed bech32m MonoAddress; optional object `kind` asserts the expected HRP. */\n caller: NativeMarketAddressInput;\n}\n\nexport interface EncodeNativeNftPlaceAuctionBidArgs {\n /** 32-byte native NFT auction listing id. */\n listingId: string;\n /** Bidder typed bech32m MonoAddress; optional object `kind` asserts the expected HRP. */\n bidder: NativeMarketAddressInput;\n /** Positive integer decimal string encoded as native MrcAmount/u128. */\n amount: string;\n /** Current block attached to the native auction bid call. */\n currentBlock: string | number | bigint;\n}\n\nexport interface EncodeNativeNftSettleAuctionArgs {\n /** 32-byte native NFT auction listing id. */\n listingId: string;\n /** Current block attached to the native auction settlement call. */\n currentBlock: string | number | bigint;\n}\n\nexport interface EncodeNativeNftSweepExpiredListingsArgs {\n /** Candidate 32-byte native NFT listing ids; mono-core accepts 1..64 ids. */\n listingIds: readonly string[];\n /** Current block attached to the native listing sweep call. */\n currentBlock: string | number | bigint;\n}\n\nexport interface NativeMarketModuleContractCall {\n /** Stable typed system-module address (`MARKET_NATIVE_MOD_V1`). */\n to: string;\n /** Native market router bincode payload. */\n input: string;\n /** Native market module calls must not carry native value. */\n valueLythoshi: \"0\";\n /** Maximum cycles delegated to the RISC-V host call. */\n maxCycles: string;\n}\n\nexport interface NativeMarketModuleCallEnvelope {\n module: \"market\";\n call: NativeMarketModuleContractCall;\n}\n\nexport interface NativeMarketForwarderInput {\n /** Canonical `SyscallRequest::CallContract` bytes for MRV call input. */\n input: string;\n /** Byte length of `input`, useful because the minimal forwarder artifact pins this as an immediate. */\n requestBytes: number;\n}\n\nexport interface NativeCallForwarderArtifact {\n /** Raw bincode MRV artifact bytes for a fixed-size native-call forwarder. */\n artifactBytes: string;\n /** Byte length accepted by the generated forwarder. */\n requestBytes: number;\n /** Stable runtime profile string used for capability matching. */\n artifactProfile: typeof NATIVE_CALL_FORWARDER_ARTIFACT_PROFILE;\n /** Forwarder code-section hash as `0x` hex. */\n codeHash: string;\n}\n\nexport interface EthSendTransactionRequest {\n to: string;\n value: \"0x0\";\n data: string;\n}\n\nexport interface MarketTransactionPlan {\n method: \"eth_sendTransaction\";\n params: [EthSendTransactionRequest];\n mempoolClass: MempoolClass;\n}\n\nexport class MarketActionError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"MarketActionError\";\n }\n}\n\nexport function clobAddressHex(): string {\n return PRECOMPILE_ADDRESSES.CLOB.toLowerCase();\n}\n\nexport function deriveClobMarketId(baseTokenId: string, quoteTokenId: string): string {\n const base = bytes32FromHex(baseTokenId, \"baseTokenId\");\n const quote = bytes32FromHex(quoteTokenId, \"quoteTokenId\");\n return bytesToHex(keccak_256(concatBytes(new Uint8Array([CLOB_MARKET_ID_DOMAIN_TAG]), base, quote)));\n}\n\nexport function deriveNativeSpotMarketId(args: Pick<EncodeNativeSpotCreateMarketArgs, \"owner\" | \"baseAsset\" | \"quoteAsset\" | \"nonce\">): string {\n const owner = normalizeNativeMarketAddress(args.owner, \"owner\");\n const nonce = uint64(args.nonce, \"nonce\");\n return bytesToHex(\n blake3(\n concatBytes(\n asciiBytes(\"MONO_MARKET_ID_V1\"),\n asciiBytes(ADDRESS_KIND_HRPS[owner.kind]),\n owner.bytes,\n bytes32FromHex(args.baseAsset, \"baseAsset\"),\n bytes32FromHex(args.quoteAsset, \"quoteAsset\"),\n uint64BeBytes(nonce),\n ),\n ),\n );\n}\n\nexport function deriveNativeSpotOrderId(args: Pick<EncodeNativeSpotLimitOrderArgs, \"marketId\" | \"owner\" | \"side\" | \"nonce\">): string {\n const owner = normalizeNativeMarketAddress(args.owner, \"owner\");\n const side = normalizeSide(args.side);\n const nonce = uint64(args.nonce, \"nonce\");\n return bytesToHex(\n blake3(\n concatBytes(\n asciiBytes(\"MONO_MARKET_ORDER_ID_V1\"),\n bytes32FromHex(args.marketId, \"marketId\"),\n asciiBytes(ADDRESS_KIND_HRPS[owner.kind]),\n owner.bytes,\n new Uint8Array([nativeOrderSideDiscriminator(side)]),\n uint64BeBytes(nonce),\n ),\n ),\n );\n}\n\nexport function encodePlaceLimitOrderCalldata(args: PlaceSpotLimitOrderArgs): string {\n const normalized = normalizePlaceSpotLimitOrderArgs(args);\n return bytesToHex(\n concatBytes(\n hexToBytes(CLOB_SELECTORS.placeLimitOrder, \"placeLimitOrder selector\"),\n normalized.baseTokenId,\n normalized.quoteTokenId,\n uint8Word(normalized.side),\n uint256Word(normalized.price, \"price\"),\n uint256Word(normalized.quantity, \"quantity\"),\n uint64Word(normalized.expiryBlock, \"expiryBlock\"),\n ),\n );\n}\n\nexport function encodePlaceMarketOrderCalldata(args: PlaceSpotMarketOrderArgs): string {\n const normalized = normalizePlaceSpotMarketOrderArgs(args);\n return bytesToHex(\n concatBytes(\n hexToBytes(CLOB_SELECTORS.placeMarketOrder, \"placeMarketOrder selector\"),\n normalized.baseTokenId,\n normalized.quoteTokenId,\n uint8Word(normalized.side),\n uint256Word(normalized.quantity, \"quantity\"),\n uint16Word(normalized.maxSlippageBps, \"maxSlippageBps\"),\n ),\n );\n}\n\nexport function encodePlaceMarketOrderExCalldata(args: PlaceSpotMarketOrderExArgs): string {\n const normalized = normalizePlaceSpotMarketOrderExArgs(args);\n return bytesToHex(\n concatBytes(\n hexToBytes(CLOB_SELECTORS.placeMarketOrderEx, \"placeMarketOrderEx selector\"),\n normalized.baseTokenId,\n normalized.quoteTokenId,\n uint8Word(normalized.side),\n uint256Word(normalized.quantity, \"quantity\"),\n uint16Word(normalized.maxSlippageBps, \"maxSlippageBps\"),\n uint8Word(normalized.mode),\n ),\n );\n}\n\nexport function encodeCancelOrderCalldata(args: CancelSpotOrderArgs): string {\n return bytesToHex(\n concatBytes(\n hexToBytes(CLOB_SELECTORS.cancelOrder, \"cancelOrder selector\"),\n bytes32FromHex(args.orderId, \"orderId\"),\n ),\n );\n}\n\n/** Three foundation-authorized per-market grid tuners share the\n * same `(bytes32,bytes32,uint256)` shape: minNotional, tickSize,\n * lotSize. They auto-create the market record if absent. */\nexport interface MarketGridTuneArgs {\n baseTokenId: string;\n quoteTokenId: string;\n /** Decimal string of quote atoms (minNotional) or atoms-per-unit (tick/lot). */\n newValue: string;\n}\n\nfunction encodeMarketGridTuneCalldata(selector: string, label: string, args: MarketGridTuneArgs): string {\n return bytesToHex(\n concatBytes(\n hexToBytes(selector, `${label} selector`),\n bytes32FromHex(args.baseTokenId, \"baseTokenId\"),\n bytes32FromHex(args.quoteTokenId, \"quoteTokenId\"),\n uint256Word(BigInt(args.newValue), \"newValue\"),\n ),\n );\n}\n\nexport function encodeSetMinNotionalCalldata(args: MarketGridTuneArgs): string {\n return encodeMarketGridTuneCalldata(CLOB_SELECTORS.setMinNotional, \"setMinNotional\", args);\n}\n\nexport function encodeSetTickSizeCalldata(args: MarketGridTuneArgs): string {\n return encodeMarketGridTuneCalldata(CLOB_SELECTORS.setTickSize, \"setTickSize\", args);\n}\n\nexport function encodeSetLotSizeCalldata(args: MarketGridTuneArgs): string {\n return encodeMarketGridTuneCalldata(CLOB_SELECTORS.setLotSize, \"setLotSize\", args);\n}\n\nexport function encodeNativeSpotLimitOrderCall(args: EncodeNativeSpotLimitOrderArgs): string {\n const w = new BincodeWriter();\n w.enumVariant(0); // NativeMarketCall::Spot\n w.enumVariant(1); // SpotMarketCall::PlaceLimitOrder\n spotLimitOrderInto(w, args, \"\");\n return bytesToHex(w.toBytes());\n}\n\nexport function encodeNativeSpotCreateMarketCall(args: EncodeNativeSpotCreateMarketArgs): string {\n const w = new BincodeWriter();\n w.enumVariant(0); // NativeMarketCall::Spot\n w.enumVariant(0); // SpotMarketCall::CreateMarket\n monoAddressInto(w, args.owner, \"owner\");\n w.u64(uint64(args.nonce, \"nonce\"));\n w.rawBytes(bytes32FromHex(args.baseAsset, \"baseAsset\"));\n w.rawBytes(bytes32FromHex(args.quoteAsset, \"quoteAsset\"));\n w.u128(positiveU128Decimal(args.tickSize, \"tickSize\"));\n w.u128(positiveU128Decimal(args.lotSize, \"lotSize\"));\n w.u128(positiveU128Decimal(args.minQuantity, \"minQuantity\"));\n w.u128(u128Decimal(args.minNotional, \"minNotional\"));\n return bytesToHex(w.toBytes());\n}\n\nexport function encodeNativeSpotCancelOrderCall(args: EncodeNativeSpotCancelOrderArgs): string {\n const w = new BincodeWriter();\n w.enumVariant(0); // NativeMarketCall::Spot\n w.enumVariant(4); // SpotMarketCall::CancelOrder\n w.rawBytes(bytes32FromHex(args.orderId, \"orderId\"));\n monoAddressInto(w, args.caller, \"caller\");\n return bytesToHex(w.toBytes());\n}\n\nexport function encodeNativeSpotSettleLimitOrderCall(args: EncodeNativeSpotSettleLimitOrderArgs): string {\n const w = new BincodeWriter();\n w.enumVariant(0); // NativeMarketCall::Spot\n w.enumVariant(2); // SpotMarketCall::SettleLimitOrder\n w.rawBytes(bytes32FromHex(args.makerOrderId, \"makerOrderId\"));\n spotLimitOrderInto(w, args.takerOrder, \"takerOrder.\");\n return bytesToHex(w.toBytes());\n}\n\nexport function encodeNativeSpotSettleRoutedLimitOrderCall(\n args: EncodeNativeSpotSettleRoutedLimitOrderArgs,\n): string {\n const makerOrderIds = normalizeListingIds(args.makerOrderIds, \"makerOrderIds\");\n const w = new BincodeWriter();\n w.enumVariant(0); // NativeMarketCall::Spot\n w.enumVariant(3); // SpotMarketCall::SettleRoutedLimitOrder\n w.u64(BigInt(makerOrderIds.length));\n for (const makerOrderId of makerOrderIds) {\n w.rawBytes(makerOrderId);\n }\n spotLimitOrderInto(w, args.takerOrder, \"takerOrder.\");\n return bytesToHex(w.toBytes());\n}\n\nexport function encodeNativeNftCreateListingCall(args: EncodeNativeNftCreateListingArgs): string {\n const w = new BincodeWriter();\n w.enumVariant(1); // NativeMarketCall::Nft\n w.enumVariant(0); // NftMarketCall::CreateListing\n monoAddressInto(w, args.seller, \"seller\");\n w.u64(uint64(args.nonce, \"nonce\"));\n w.enumVariant(normalizeNftAssetStandard(args.standard));\n w.rawBytes(bytes32FromHex(args.collectionId, \"collectionId\"));\n w.rawBytes(bytes32FromHex(args.tokenId, \"tokenId\"));\n w.u128(positiveU128Decimal(args.quantity, \"quantity\"));\n w.rawBytes(bytes32FromHex(args.paymentAsset, \"paymentAsset\"));\n w.u128(positiveU128Decimal(args.price, \"price\"));\n listingKindInto(w, args.kind);\n w.u64(uint64(args.expiresAtBlock, \"expiresAtBlock\"));\n return bytesToHex(w.toBytes());\n}\n\nexport function encodeNativeNftBuyListingCall(args: EncodeNativeNftBuyListingArgs): string {\n const w = new BincodeWriter();\n w.enumVariant(1); // NativeMarketCall::Nft\n w.enumVariant(1); // NftMarketCall::BuyListing\n w.rawBytes(bytes32FromHex(args.listingId, \"listingId\"));\n monoAddressInto(w, args.buyer, \"buyer\");\n w.u64(uint64(args.currentBlock, \"currentBlock\"));\n return bytesToHex(w.toBytes());\n}\n\nexport function encodeNativeNftCancelListingCall(args: EncodeNativeNftCancelListingArgs): string {\n const w = new BincodeWriter();\n w.enumVariant(1); // NativeMarketCall::Nft\n w.enumVariant(2); // NftMarketCall::CancelListing\n w.rawBytes(bytes32FromHex(args.listingId, \"listingId\"));\n monoAddressInto(w, args.caller, \"caller\");\n return bytesToHex(w.toBytes());\n}\n\nexport function encodeNativeNftPlaceAuctionBidCall(args: EncodeNativeNftPlaceAuctionBidArgs): string {\n const w = new BincodeWriter();\n w.enumVariant(1); // NativeMarketCall::Nft\n w.enumVariant(5); // NftMarketCall::PlaceAuctionBid\n w.rawBytes(bytes32FromHex(args.listingId, \"listingId\"));\n monoAddressInto(w, args.bidder, \"bidder\");\n w.u128(positiveU128Decimal(args.amount, \"amount\"));\n w.u64(uint64(args.currentBlock, \"currentBlock\"));\n return bytesToHex(w.toBytes());\n}\n\nexport function encodeNativeNftSettleAuctionCall(args: EncodeNativeNftSettleAuctionArgs): string {\n const w = new BincodeWriter();\n w.enumVariant(1); // NativeMarketCall::Nft\n w.enumVariant(6); // NftMarketCall::SettleAuction\n w.rawBytes(bytes32FromHex(args.listingId, \"listingId\"));\n w.u64(uint64(args.currentBlock, \"currentBlock\"));\n return bytesToHex(w.toBytes());\n}\n\nexport function encodeNativeNftSweepExpiredListingsCall(args: EncodeNativeNftSweepExpiredListingsArgs): string {\n const listingIds = normalizeListingIds(args.listingIds, \"listingIds\");\n const w = new BincodeWriter();\n w.enumVariant(1); // NativeMarketCall::Nft\n w.enumVariant(3); // NftMarketCall::SweepExpiredListings\n w.u64(BigInt(listingIds.length));\n for (const listingId of listingIds) {\n w.rawBytes(listingId);\n }\n w.u64(uint64(args.currentBlock, \"currentBlock\"));\n return bytesToHex(w.toBytes());\n}\n\nexport function buildNativeMarketModuleCallEnvelope(\n input: string,\n maxCycles: string | number | bigint,\n): NativeMarketModuleCallEnvelope {\n return {\n module: \"market\",\n call: {\n to: NATIVE_MARKET_MODULE_ADDRESS,\n input: normalizeHexBytes(input, \"input\"),\n valueLythoshi: \"0\",\n maxCycles: uint64(maxCycles, \"maxCycles\").toString(10),\n },\n };\n}\n\nexport function encodeNativeMarketModuleForwarderInput(\n envelope: NativeMarketModuleCallEnvelope,\n): NativeMarketForwarderInput {\n if (envelope.module !== \"market\") {\n throw new MarketActionError(\"native market forwarder envelope module must be 'market'\");\n }\n if (!isNativeMarketModuleAddress(envelope.call.to)) {\n throw new MarketActionError(\"native market forwarder call target must be the market system module\");\n }\n if (envelope.call.valueLythoshi !== \"0\") {\n throw new MarketActionError(\"native market forwarder call valueLythoshi must be 0\");\n }\n const payload = hexToBytes(normalizeHexBytes(envelope.call.input, \"input\"), \"input\");\n const maxCycles = uint64(envelope.call.maxCycles, \"maxCycles\");\n const w = new BincodeWriter();\n w.enumVariant(7); // SyscallRequest::CallContract\n w.enumVariant(NATIVE_MARKET_ADDRESS_KIND_VARIANTS.systemModule);\n w.rawBytes(hexToBytes(NATIVE_MARKET_MODULE_ADDRESS_BYTES, \"native market module address\"));\n w.bytes(payload);\n w.u128(0n);\n w.u64(maxCycles);\n const input = bytesToHex(w.toBytes());\n return { input, requestBytes: (input.length - 2) / 2 };\n}\n\nexport function buildNativeSpotLimitOrderForwarderInput(\n args: EncodeNativeSpotLimitOrderArgs,\n maxCycles: string | number | bigint,\n): NativeMarketForwarderInput {\n return encodeNativeMarketModuleForwarderInput(buildNativeSpotLimitOrderModuleCall(args, maxCycles));\n}\n\nexport function buildNativeSpotCreateMarketForwarderInput(\n args: EncodeNativeSpotCreateMarketArgs,\n maxCycles: string | number | bigint,\n): NativeMarketForwarderInput {\n return encodeNativeMarketModuleForwarderInput(buildNativeSpotCreateMarketModuleCall(args, maxCycles));\n}\n\nexport function buildNativeSpotCancelOrderForwarderInput(\n args: EncodeNativeSpotCancelOrderArgs,\n maxCycles: string | number | bigint,\n): NativeMarketForwarderInput {\n return encodeNativeMarketModuleForwarderInput(buildNativeSpotCancelOrderModuleCall(args, maxCycles));\n}\n\nexport function buildNativeSpotSettleLimitOrderForwarderInput(\n args: EncodeNativeSpotSettleLimitOrderArgs,\n maxCycles: string | number | bigint,\n): NativeMarketForwarderInput {\n return encodeNativeMarketModuleForwarderInput(buildNativeSpotSettleLimitOrderModuleCall(args, maxCycles));\n}\n\nexport function buildNativeSpotSettleRoutedLimitOrderForwarderInput(\n args: EncodeNativeSpotSettleRoutedLimitOrderArgs,\n maxCycles: string | number | bigint,\n): NativeMarketForwarderInput {\n return encodeNativeMarketModuleForwarderInput(buildNativeSpotSettleRoutedLimitOrderModuleCall(args, maxCycles));\n}\n\nexport function buildNativeNftCreateListingForwarderInput(\n args: EncodeNativeNftCreateListingArgs,\n maxCycles: string | number | bigint,\n): NativeMarketForwarderInput {\n return encodeNativeMarketModuleForwarderInput(buildNativeNftCreateListingModuleCall(args, maxCycles));\n}\n\nexport function buildNativeNftBuyListingForwarderInput(\n args: EncodeNativeNftBuyListingArgs,\n maxCycles: string | number | bigint,\n): NativeMarketForwarderInput {\n return encodeNativeMarketModuleForwarderInput(buildNativeNftBuyListingModuleCall(args, maxCycles));\n}\n\nexport function buildNativeNftCancelListingForwarderInput(\n args: EncodeNativeNftCancelListingArgs,\n maxCycles: string | number | bigint,\n): NativeMarketForwarderInput {\n return encodeNativeMarketModuleForwarderInput(buildNativeNftCancelListingModuleCall(args, maxCycles));\n}\n\nexport function buildNativeNftPlaceAuctionBidForwarderInput(\n args: EncodeNativeNftPlaceAuctionBidArgs,\n maxCycles: string | number | bigint,\n): NativeMarketForwarderInput {\n return encodeNativeMarketModuleForwarderInput(buildNativeNftPlaceAuctionBidModuleCall(args, maxCycles));\n}\n\nexport function buildNativeNftSettleAuctionForwarderInput(\n args: EncodeNativeNftSettleAuctionArgs,\n maxCycles: string | number | bigint,\n): NativeMarketForwarderInput {\n return encodeNativeMarketModuleForwarderInput(buildNativeNftSettleAuctionModuleCall(args, maxCycles));\n}\n\nexport function buildNativeNftSweepExpiredListingsForwarderInput(\n args: EncodeNativeNftSweepExpiredListingsArgs,\n maxCycles: string | number | bigint,\n): NativeMarketForwarderInput {\n return encodeNativeMarketModuleForwarderInput(buildNativeNftSweepExpiredListingsModuleCall(args, maxCycles));\n}\n\nexport function buildNativeSpotLimitOrderModuleCall(\n args: EncodeNativeSpotLimitOrderArgs,\n maxCycles: string | number | bigint,\n): NativeMarketModuleCallEnvelope {\n return buildNativeMarketModuleCallEnvelope(encodeNativeSpotLimitOrderCall(args), maxCycles);\n}\n\nexport function buildNativeSpotCreateMarketModuleCall(\n args: EncodeNativeSpotCreateMarketArgs,\n maxCycles: string | number | bigint,\n): NativeMarketModuleCallEnvelope {\n return buildNativeMarketModuleCallEnvelope(encodeNativeSpotCreateMarketCall(args), maxCycles);\n}\n\nexport function buildNativeSpotCancelOrderModuleCall(\n args: EncodeNativeSpotCancelOrderArgs,\n maxCycles: string | number | bigint,\n): NativeMarketModuleCallEnvelope {\n return buildNativeMarketModuleCallEnvelope(encodeNativeSpotCancelOrderCall(args), maxCycles);\n}\n\nexport function buildNativeSpotSettleLimitOrderModuleCall(\n args: EncodeNativeSpotSettleLimitOrderArgs,\n maxCycles: string | number | bigint,\n): NativeMarketModuleCallEnvelope {\n return buildNativeMarketModuleCallEnvelope(encodeNativeSpotSettleLimitOrderCall(args), maxCycles);\n}\n\nexport function buildNativeSpotSettleRoutedLimitOrderModuleCall(\n args: EncodeNativeSpotSettleRoutedLimitOrderArgs,\n maxCycles: string | number | bigint,\n): NativeMarketModuleCallEnvelope {\n return buildNativeMarketModuleCallEnvelope(encodeNativeSpotSettleRoutedLimitOrderCall(args), maxCycles);\n}\n\nexport function buildNativeNftCreateListingModuleCall(\n args: EncodeNativeNftCreateListingArgs,\n maxCycles: string | number | bigint,\n): NativeMarketModuleCallEnvelope {\n return buildNativeMarketModuleCallEnvelope(encodeNativeNftCreateListingCall(args), maxCycles);\n}\n\nexport function buildNativeNftBuyListingModuleCall(\n args: EncodeNativeNftBuyListingArgs,\n maxCycles: string | number | bigint,\n): NativeMarketModuleCallEnvelope {\n return buildNativeMarketModuleCallEnvelope(encodeNativeNftBuyListingCall(args), maxCycles);\n}\n\nexport function buildNativeNftCancelListingModuleCall(\n args: EncodeNativeNftCancelListingArgs,\n maxCycles: string | number | bigint,\n): NativeMarketModuleCallEnvelope {\n return buildNativeMarketModuleCallEnvelope(encodeNativeNftCancelListingCall(args), maxCycles);\n}\n\nexport function buildNativeNftPlaceAuctionBidModuleCall(\n args: EncodeNativeNftPlaceAuctionBidArgs,\n maxCycles: string | number | bigint,\n): NativeMarketModuleCallEnvelope {\n return buildNativeMarketModuleCallEnvelope(encodeNativeNftPlaceAuctionBidCall(args), maxCycles);\n}\n\nexport function buildNativeNftSettleAuctionModuleCall(\n args: EncodeNativeNftSettleAuctionArgs,\n maxCycles: string | number | bigint,\n): NativeMarketModuleCallEnvelope {\n return buildNativeMarketModuleCallEnvelope(encodeNativeNftSettleAuctionCall(args), maxCycles);\n}\n\nexport function buildNativeNftSweepExpiredListingsModuleCall(\n args: EncodeNativeNftSweepExpiredListingsArgs,\n maxCycles: string | number | bigint,\n): NativeMarketModuleCallEnvelope {\n return buildNativeMarketModuleCallEnvelope(encodeNativeNftSweepExpiredListingsCall(args), maxCycles);\n}\n\nexport function buildPlaceSpotLimitOrderPlan(args: PlaceSpotLimitOrderArgs): MarketTransactionPlan {\n return {\n method: \"eth_sendTransaction\",\n params: [\n {\n to: PRECOMPILE_ADDRESSES.CLOB,\n value: \"0x0\",\n data: encodePlaceLimitOrderCalldata(args),\n },\n ],\n mempoolClass: MempoolClass.CLOBOp,\n };\n}\n\nexport function buildPlaceSpotMarketOrderPlan(args: PlaceSpotMarketOrderArgs): MarketTransactionPlan {\n return {\n method: \"eth_sendTransaction\",\n params: [\n {\n to: PRECOMPILE_ADDRESSES.CLOB,\n value: \"0x0\",\n data: encodePlaceMarketOrderCalldata(args),\n },\n ],\n mempoolClass: MempoolClass.CLOBOp,\n };\n}\n\nexport function buildPlaceSpotMarketOrderExPlan(args: PlaceSpotMarketOrderExArgs): MarketTransactionPlan {\n return {\n method: \"eth_sendTransaction\",\n params: [\n {\n to: PRECOMPILE_ADDRESSES.CLOB,\n value: \"0x0\",\n data: encodePlaceMarketOrderExCalldata(args),\n },\n ],\n mempoolClass: MempoolClass.CLOBOp,\n };\n}\n\nexport function buildCancelSpotOrderPlan(args: CancelSpotOrderArgs): MarketTransactionPlan {\n return {\n method: \"eth_sendTransaction\",\n params: [\n {\n to: PRECOMPILE_ADDRESSES.CLOB,\n value: \"0x0\",\n data: encodeCancelOrderCalldata(args),\n },\n ],\n mempoolClass: MempoolClass.CLOBOp,\n };\n}\n\n/**\n * Encode `placeLimitOrderVia(address,bytes32,bytes32,uint8,uint256,\n * uint256,uint64)` calldata for the operator-fee router (`0x100B`).\n *\n * The argument layout mirrors the direct CLOB `placeLimitOrder` encoder\n * exactly, prefixed with the left-padded `operator` address word. The\n * router strips that leading word and forwards the remaining six fields\n * to the CLOB unchanged.\n */\nexport function encodePlaceLimitOrderViaCalldata(args: PlaceLimitOrderViaArgs): string {\n const operator = normalizeNativeMarketAddress(args.operator, \"operator\");\n if (operator.kind !== \"user\") {\n throw new MarketActionError(\"operator must be a 'mono' user address\");\n }\n const side = normalizeSide(args.side);\n const price = positiveDecimal(args.price, \"price\");\n const amount = positiveDecimal(args.amount, \"amount\");\n const expiresAtBlock = uint64(args.expiresAtBlock ?? 0n, \"expiresAtBlock\");\n return bytesToHex(\n concatBytes(\n hexToBytes(OPERATOR_ROUTER_SELECTORS.placeLimitOrderVia, \"placeLimitOrderVia selector\"),\n addressWord(operator.bytes),\n bytes32FromHex(args.base, \"base\"),\n bytes32FromHex(args.quote, \"quote\"),\n uint8Word(side),\n uint256Word(price, \"price\"),\n uint256Word(amount, \"amount\"),\n uint64Word(expiresAtBlock, \"expiresAtBlock\"),\n ),\n );\n}\n\n/**\n * Compute the off-chain declared operator fee for wallet display:\n * `quoteBasis * feeBps / 10_000` (floored) where `quoteBasis =\n * price * amount`. `feeBps` is the operator's registered fee\n * (`lyth_operatorFeeConfig`). Rejects a `feeBps` above the protocol\n * ceiling so a stale / hostile registration can't be displayed as valid.\n */\nexport function quoteOperatorFee(\n args: Pick<PlaceLimitOrderViaArgs, \"operator\" | \"price\" | \"amount\">,\n feeBps: number,\n): OperatorFeeQuote {\n if (!Number.isInteger(feeBps) || feeBps < 0 || feeBps > PROTOCOL_MAX_OPERATOR_FEE_BPS) {\n throw new MarketActionError(\n `feeBps must be an integer in 0..=${PROTOCOL_MAX_OPERATOR_FEE_BPS}`,\n );\n }\n const operator = normalizeNativeMarketAddress(args.operator, \"operator\");\n if (operator.kind !== \"user\") {\n throw new MarketActionError(\"operator must be a 'mono' user address\");\n }\n const price = positiveDecimal(args.price, \"price\");\n const amount = positiveDecimal(args.amount, \"amount\");\n const quoteBasis = price * amount;\n const feeAmount = (quoteBasis * BigInt(feeBps)) / 10_000n;\n return {\n operator: args.operator,\n feeBps,\n quoteBasis: quoteBasis.toString(10),\n feeAmount: feeAmount.toString(10),\n };\n}\n\n/**\n * Build a routed limit-order plan (`placeLimitOrderVia` against the\n * operator router at `0x100B`) plus the declared operator-fee projection\n * for wallet display.\n *\n * Two-spender approval model: the user must approve **two** spenders for\n * this order to succeed — the CLOB (`0x1001`) for the order's quote/base\n * escrow, AND the operator router (`0x100B`) for the fee skim. A wallet\n * surfacing this plan should prompt both approvals (or one combined\n * approval covering `quoteBasis + feeAmount`).\n */\nexport function buildPlaceLimitOrderViaPlan(\n args: PlaceLimitOrderViaArgs,\n feeBps: number,\n): PlaceLimitOrderViaPlan {\n return {\n method: \"eth_sendTransaction\",\n params: [\n {\n to: PRECOMPILE_ADDRESSES.OPERATOR_ROUTER,\n value: \"0x0\",\n data: encodePlaceLimitOrderViaCalldata(args),\n },\n ],\n mempoolClass: MempoolClass.CLOBOp,\n operatorFee: quoteOperatorFee(args, feeBps),\n };\n}\n\n/**\n * Decode an `OperatorFeeCharged` log (`0x100B`) into a typed\n * {@link OperatorFeeChargedEvent}. `topics` is the log topic vector\n * (`topic0`, indexed `operator`, indexed `user`, indexed `marketId`);\n * `data` is the non-indexed ABI body\n * `(address recipient, bytes32 quoteToken, uint256 feeAmount, bytes32 clobOrderId)`.\n */\nexport function decodeOperatorFeeChargedEvent(\n topics: readonly (string | Uint8Array | readonly number[])[],\n data: string | Uint8Array | readonly number[],\n): OperatorFeeChargedEvent {\n if (topics.length !== 4) {\n throw new MarketActionError(\n `OperatorFeeCharged expects 4 topics, got ${topics.length}`,\n );\n }\n const topic0 = bytesToHex(expectWordLen(toEventBytes(topics[0]), \"topic0\"));\n const expected = bytesToHex(\n keccak_256(new TextEncoder().encode(OPERATOR_ROUTER_EVENT_SIGS.operatorFeeCharged)),\n );\n if (topic0 !== expected) {\n throw new MarketActionError(\"topic0 is not OperatorFeeCharged\");\n }\n const body = toEventBytes(data);\n if (body.length !== 4 * 32) {\n throw new MarketActionError(\n `OperatorFeeCharged expects 128 data bytes, got ${body.length}`,\n );\n }\n return {\n operator: addressFromEventTopic(topics[1]),\n user: addressFromEventTopic(topics[2]),\n marketId: bytesToHex(expectWordLen(toEventBytes(topics[3]), \"marketId\")),\n recipient: bytesToHex(body.subarray(12, 32)),\n quoteToken: bytesToHex(body.subarray(32, 64)),\n feeAmount: u256DecimalWord(body.subarray(64, 96)),\n clobOrderId: bytesToHex(body.subarray(96, 128)),\n };\n}\n\nexport function buildNativeCallForwarderArtifact(requestBytes: string | number | bigint): NativeCallForwarderArtifact {\n const size = uint64(requestBytes, \"requestBytes\");\n if (size === 0n) {\n throw new MarketActionError(\"requestBytes must be non-zero\");\n }\n if (size > BigInt(MAX_NATIVE_CALL_FORWARDER_REQUEST_BYTES)) {\n throw new MarketActionError(`requestBytes must be <= ${MAX_NATIVE_CALL_FORWARDER_REQUEST_BYTES}`);\n }\n const requestBytesNumber = Number(size);\n const code = nativeCallForwarderCode(requestBytesNumber);\n const codeHash = mrvCodeHashHex(code);\n return {\n artifactBytes: encodeNativeCallForwarderArtifact(code, codeHash),\n requestBytes: requestBytesNumber,\n artifactProfile: NATIVE_CALL_FORWARDER_ARTIFACT_PROFILE,\n codeHash,\n };\n}\n\ninterface NormalizedPlaceSpotLimitOrderArgs {\n marketId: string;\n baseTokenId: Uint8Array;\n quoteTokenId: Uint8Array;\n side: 0 | 1;\n price: bigint;\n quantity: bigint;\n expiryBlock: bigint;\n}\n\ninterface NormalizedPlaceSpotMarketOrderArgs {\n marketId: string;\n baseTokenId: Uint8Array;\n quoteTokenId: Uint8Array;\n side: 0 | 1;\n quantity: bigint;\n maxSlippageBps: bigint;\n}\n\ninterface NormalizedPlaceSpotMarketOrderExArgs extends NormalizedPlaceSpotMarketOrderArgs {\n mode: 0 | 1;\n}\n\nconst NATIVE_MARKET_ADDRESS_KIND_VARIANTS: Record<NativeMarketAddressKind, number> = {\n user: 0,\n smartAccount: 1,\n contract: 2,\n cluster: 3,\n multisig: 4,\n systemModule: 5,\n};\n\nfunction normalizePlaceSpotLimitOrderArgs(args: PlaceSpotLimitOrderArgs): NormalizedPlaceSpotLimitOrderArgs {\n const normalized = normalizeSpotMarketArgs(args);\n return {\n ...normalized,\n price: positiveDecimal(args.price, \"price\"),\n expiryBlock: uint64(args.expiryBlock ?? 0n, \"expiryBlock\"),\n };\n}\n\nfunction normalizePlaceSpotMarketOrderArgs(args: PlaceSpotMarketOrderArgs): NormalizedPlaceSpotMarketOrderArgs {\n const normalized = normalizeSpotMarketArgs(args);\n return {\n ...normalized,\n maxSlippageBps: uint16Bps(args.maxSlippageBps, \"maxSlippageBps\"),\n };\n}\n\nfunction normalizePlaceSpotMarketOrderExArgs(args: PlaceSpotMarketOrderExArgs): NormalizedPlaceSpotMarketOrderExArgs {\n return {\n ...normalizePlaceSpotMarketOrderArgs(args),\n mode: normalizeMarketOrderMode(args.mode),\n };\n}\n\nfunction normalizeSpotMarketArgs(args: {\n marketId: string;\n baseTokenId: string;\n quoteTokenId: string;\n side: SpotLimitOrderSide;\n quantity: string;\n}): Omit<NormalizedPlaceSpotMarketOrderArgs, \"maxSlippageBps\"> {\n const marketId = normalizeBytes32Hex(args.marketId, \"marketId\");\n const expectedMarketId = deriveClobMarketId(args.baseTokenId, args.quoteTokenId);\n if (marketId !== expectedMarketId) {\n throw new MarketActionError(\"marketId must match baseTokenId and quoteTokenId\");\n }\n return {\n marketId,\n baseTokenId: bytes32FromHex(args.baseTokenId, \"baseTokenId\"),\n quoteTokenId: bytes32FromHex(args.quoteTokenId, \"quoteTokenId\"),\n side: normalizeSide(args.side),\n quantity: positiveDecimal(args.quantity, \"quantity\"),\n };\n}\n\nfunction normalizeBytes32Hex(value: string, name: string): string {\n if (typeof value !== \"string\" || !/^0x[0-9a-fA-F]{64}$/.test(value)) {\n throw new MarketActionError(`${name} must be a 32-byte 0x-prefixed hex string`);\n }\n return value.toLowerCase();\n}\n\nfunction bytes32FromHex(value: string, name: string): Uint8Array {\n normalizeBytes32Hex(value, name);\n return hexToBytes(value, name);\n}\n\nfunction normalizeSide(side: SpotLimitOrderSide): 0 | 1 {\n if (side === \"buy\") return 0;\n if (side === \"sell\") return 1;\n throw new MarketActionError(\"side must be 'buy' or 'sell'\");\n}\n\nfunction nativeOrderSideDiscriminator(side: 0 | 1): 1 | 2 {\n return side === 0 ? 1 : 2;\n}\n\nfunction normalizeMarketOrderMode(mode: SpotMarketOrderMode): 0 | 1 {\n if (mode === \"fill-or-refund\") return 0;\n if (mode === \"fill-or-rest-at-cap\") return 1;\n throw new MarketActionError(\"mode must be 'fill-or-refund' or 'fill-or-rest-at-cap'\");\n}\n\nfunction normalizeNftAssetStandard(standard: NativeNftAssetStandard): 0 | 1 {\n if (standard === \"mrc721\") return 0;\n if (standard === \"mrc1155\") return 1;\n throw new MarketActionError(\"standard must be 'mrc721' or 'mrc1155'\");\n}\n\nfunction listingKindInto(w: BincodeWriter, kind: NativeNftListingKind): void {\n if (kind === \"fixed-price\") {\n w.enumVariant(0); // ListingKind::FixedPrice\n return;\n }\n if (typeof kind === \"object\" && kind !== null && \"english\" in kind) {\n const english = kind.english;\n if (typeof english !== \"object\" || english === null) {\n throw new MarketActionError(\"kind.english must be an object\");\n }\n w.enumVariant(1); // ListingKind::English\n w.u128(positiveU128Decimal(english.reserve, \"kind.english.reserve\"));\n w.u64(uint64(english.endBlock, \"kind.english.endBlock\"));\n w.u16(Number(uint16Bps(english.minBidIncrementBps, \"kind.english.minBidIncrementBps\")));\n return;\n }\n throw new MarketActionError(\"kind must be 'fixed-price' or an english auction\");\n}\n\nfunction normalizeListingIds(listingIds: readonly string[], name: string): Uint8Array[] {\n if (!Array.isArray(listingIds)) {\n throw new MarketActionError(`${name} must be an array`);\n }\n if (listingIds.length === 0 || listingIds.length > 64) {\n throw new MarketActionError(`${name} must contain 1 to 64 listing ids`);\n }\n return listingIds.map((listingId, i) => bytes32FromHex(listingId, `${name}[${i}]`));\n}\n\nfunction positiveDecimal(value: string, name: string): bigint {\n if (typeof value !== \"string\" || !/^(0|[1-9][0-9]*)$/.test(value)) {\n throw new MarketActionError(`${name} must be an integer decimal string`);\n }\n const n = BigInt(value);\n if (n <= 0n) {\n throw new MarketActionError(`${name} must be positive`);\n }\n return n;\n}\n\nfunction uint16Bps(value: string | number | bigint, name: string): bigint {\n const n = uint64(value, name);\n if (n >= 10_000n) {\n throw new MarketActionError(`${name} must be less than 10000`);\n }\n return n;\n}\n\nfunction uint64(value: string | number | bigint, name: string): bigint {\n let n: bigint;\n if (typeof value === \"bigint\") {\n n = value;\n } else if (typeof value === \"number\") {\n if (!Number.isSafeInteger(value)) {\n throw new MarketActionError(`${name} must be a safe integer`);\n }\n n = BigInt(value);\n } else if (/^(0|[1-9][0-9]*|0x[0-9a-fA-F]+)$/.test(value)) {\n n = BigInt(value);\n } else {\n throw new MarketActionError(`${name} must be a nonnegative integer`);\n }\n if (n < 0n || n > 0xffff_ffff_ffff_ffffn) {\n throw new MarketActionError(`${name} must fit uint64`);\n }\n return n;\n}\n\nfunction positiveU128Decimal(value: string, name: string): bigint {\n const n = positiveDecimal(value, name);\n return u128(n, name);\n}\n\nfunction u128Decimal(value: string, name: string): bigint {\n if (typeof value !== \"string\" || !/^(0|[1-9][0-9]*)$/.test(value)) {\n throw new MarketActionError(`${name} must be an integer decimal string`);\n }\n return u128(BigInt(value), name);\n}\n\nfunction u128(n: bigint, name: string): bigint {\n if (n >= (1n << 128n)) {\n throw new MarketActionError(`${name} must fit uint128`);\n }\n return n;\n}\n\nfunction normalizeHexBytes(value: string, name: string): string {\n if (typeof value !== \"string\" || !value.startsWith(\"0x\")) {\n throw new MarketActionError(`${name} must be 0x-prefixed hex bytes`);\n }\n try {\n hexToBytes(value, name);\n } catch (error) {\n const detail = error instanceof Error ? `: ${error.message}` : \"\";\n throw new MarketActionError(`${name} must be 0x-prefixed hex bytes${detail}`);\n }\n return value.toLowerCase();\n}\n\nfunction isNativeMarketModuleAddress(value: string): boolean {\n const normalized = value.toLowerCase();\n return normalized === NATIVE_MARKET_MODULE_ADDRESS || normalized === NATIVE_MARKET_MODULE_ADDRESS_BYTES;\n}\n\nfunction monoAddressInto(w: BincodeWriter, input: NativeMarketAddressInput, name: string): void {\n const { kind, bytes } = normalizeNativeMarketAddress(input, name);\n w.enumVariant(NATIVE_MARKET_ADDRESS_KIND_VARIANTS[kind]);\n w.rawBytes(bytes);\n}\n\nfunction normalizeNativeMarketAddress(\n input: NativeMarketAddressInput,\n name: string,\n): { kind: NativeMarketAddressKind; bytes: Uint8Array } {\n if (typeof input === \"string\") {\n return normalizeNativeMarketAddressString(input, undefined, name);\n }\n if (typeof input === \"object\" && input !== null && \"address\" in input) {\n const kind = input.kind;\n if (kind !== undefined && !(kind in NATIVE_MARKET_ADDRESS_KIND_VARIANTS)) {\n throw new MarketActionError(`${name}.kind is not a supported native address kind`);\n }\n if (typeof input.address !== \"string\") {\n throw new MarketActionError(`${name}.address must be a typed bech32m address`);\n }\n return normalizeNativeMarketAddressString(input.address, kind, name);\n }\n throw new MarketActionError(`${name} must be a typed bech32m address`);\n}\n\nfunction normalizeNativeMarketAddressString(\n address: string,\n expectedKind: NativeMarketAddressKind | undefined,\n name: string,\n): { kind: NativeMarketAddressKind; bytes: Uint8Array } {\n if (address.startsWith(\"0x\") || address.startsWith(\"0X\")) {\n throw new MarketActionError(`${name} raw 0x addresses are retired; use typed bech32m addresses`);\n }\n try {\n const parsed = typedBech32ToAddress(address, expectedKind);\n return { kind: parsed.kind, bytes: parsed.bytes };\n } catch (error) {\n const detail = error instanceof Error ? `: ${error.message}` : \"\";\n throw new MarketActionError(`${name} must be a typed bech32m address${detail}`);\n }\n}\n\nfunction uint8Word(value: 0 | 1): Uint8Array {\n const out = new Uint8Array(32);\n out[31] = value;\n return out;\n}\n\nfunction uint64Word(value: bigint, name: string): Uint8Array {\n if (value < 0n || value > 0xffff_ffff_ffff_ffffn) {\n throw new MarketActionError(`${name} must fit uint64`);\n }\n const out = new Uint8Array(32);\n let rest = value;\n for (let i = 31; i >= 24; i--) {\n out[i] = Number(rest & 0xffn);\n rest >>= 8n;\n }\n return out;\n}\n\nfunction uint16Word(value: bigint, name: string): Uint8Array {\n if (value < 0n || value > 0xffffn) {\n throw new MarketActionError(`${name} must fit uint16`);\n }\n const out = new Uint8Array(32);\n out[30] = Number((value >> 8n) & 0xffn);\n out[31] = Number(value & 0xffn);\n return out;\n}\n\nfunction uint256Word(value: bigint, name: string): Uint8Array {\n if (value < 0n || value >= (1n << 256n)) {\n throw new MarketActionError(`${name} must fit uint256`);\n }\n const out = new Uint8Array(32);\n let rest = value;\n for (let i = 31; i >= 0; i--) {\n out[i] = Number(rest & 0xffn);\n rest >>= 8n;\n }\n return out;\n}\n\n/** Left-pad a 20-byte address into a 32-byte ABI head word. */\nfunction addressWord(addr: Uint8Array): Uint8Array {\n if (addr.length !== 20) {\n throw new MarketActionError(\"address must be 20 bytes\");\n }\n const out = new Uint8Array(32);\n out.set(addr, 12);\n return out;\n}\n\n/** Coerce a hex/byte input to bytes for event decoding. */\nfunction toEventBytes(value: string | Uint8Array | readonly number[]): Uint8Array {\n if (typeof value === \"string\") return hexToBytes(value, \"event word\");\n return value instanceof Uint8Array ? value : Uint8Array.from(value);\n}\n\nfunction expectWordLen(value: Uint8Array, name: string): Uint8Array {\n if (value.length !== 32) {\n throw new MarketActionError(`${name} must be 32 bytes, got ${value.length}`);\n }\n return value;\n}\n\n/** Decode a left-padded address from a 32-byte indexed topic. */\nfunction addressFromEventTopic(topic: string | Uint8Array | readonly number[]): string {\n return bytesToHex(expectWordLen(toEventBytes(topic), \"address topic\").subarray(12, 32));\n}\n\n/** Decode a `uint256` word to a decimal string. */\nfunction u256DecimalWord(word: Uint8Array): string {\n let v = 0n;\n for (const b of word) v = (v << 8n) | BigInt(b);\n return v.toString(10);\n}\n\nfunction spotLimitOrderInto(w: BincodeWriter, args: EncodeNativeSpotLimitOrderArgs, prefix: string): void {\n w.rawBytes(bytes32FromHex(args.marketId, `${prefix}marketId`));\n monoAddressInto(w, args.owner, `${prefix}owner`);\n w.u64(uint64(args.nonce, `${prefix}nonce`));\n w.enumVariant(normalizeSide(args.side));\n w.u128(positiveU128Decimal(args.price, `${prefix}price`));\n w.u128(positiveU128Decimal(args.quantity, `${prefix}quantity`));\n w.u64(uint64(args.expiresAtBlock, `${prefix}expiresAtBlock`));\n}\n\nfunction uint64BeBytes(value: bigint): Uint8Array {\n const out = new Uint8Array(8);\n let rest = value;\n for (let i = 7; i >= 0; i--) {\n out[i] = Number(rest & 0xffn);\n rest >>= 8n;\n }\n return out;\n}\n\nfunction asciiBytes(value: string): Uint8Array {\n return new TextEncoder().encode(value);\n}\n\nfunction mrvCodeHashHex(code: Uint8Array): string {\n const len = uint64BeBytes(BigInt(code.length));\n return bytesToHex(blake3(concatBytes(asciiBytes(\"MONO_MRV_CODE_V1\"), len, code)));\n}\n\nfunction nativeCallForwarderCode(requestBytes: number): Uint8Array {\n return rvCode([\n rvAddi(17, 0, 0x0301),\n rvAddi(10, 0, 0),\n rvAddi(11, 0, requestBytes),\n rvAddi(12, 0, NATIVE_CALL_FORWARDER_RESPONSE_OFFSET),\n rvAddi(13, 0, NATIVE_CALL_FORWARDER_RESPONSE_CAPACITY),\n 0x0000_0073,\n ]);\n}\n\nfunction rvCode(words: readonly number[]): Uint8Array {\n const out = new Uint8Array(words.length * 4);\n const view = new DataView(out.buffer);\n words.forEach((word, i) => view.setUint32(i * 4, word >>> 0, true));\n return out;\n}\n\nfunction rvAddi(rd: number, rs1: number, imm: number): number {\n return ((imm & 0x0fff) << 20) | (rs1 << 15) | (rd << 7) | 0x13;\n}\n\nfunction encodeNativeCallForwarderArtifact(code: Uint8Array, codeHash: string): string {\n const w = new BincodeWriter();\n w.u16(1); // MRV format version.\n w.enumVariant(0); // RiscvProfile::MonoRv32ImV1\n w.bytes(code);\n w.u64(1n); // abi.symbols\n writeString(w, \"forward_call_contract\");\n w.enumVariant(1); // AbiSymbolKind::Function\n w.u64(1n); // inputs\n writeString(w, \"request\");\n w.enumVariant(6); // AbiType::Bytes\n w.u64(1n); // outputs\n writeString(w, \"response\");\n w.enumVariant(6); // AbiType::Bytes\n w.u64(1n); // imports\n writeString(w, \"mono\");\n writeString(w, \"call_contract\");\n w.u16(0x0301);\n w.u32(1);\n w.u32(1);\n w.u32(16 * 1024);\n writeString(w, \"native_call_forwarder\");\n w.u16(1);\n w.rawBytes(hexToBytes(codeHash, \"codeHash\"));\n writeString(w, \"mono-sdk-rv32im-forwarder\");\n w.rawBytes(hexToBytes(mrvCodeHashHex(asciiBytes(\"mono-sdk-native-call-forwarder-v1\")), \"sourceDigest\"));\n writeString(w, NATIVE_CALL_FORWARDER_ARTIFACT_PROFILE);\n w.bytes(new Uint8Array());\n return bytesToHex(w.toBytes());\n}\n\nfunction writeString(w: BincodeWriter, value: string): void {\n w.bytes(asciiBytes(value));\n}\n","/**\n * Native agent-commerce transaction-plan builders.\n *\n * These helpers encode the native Rust router bincode payloads consumed by\n * `AGENT_NATIVE_MOD_V01`. They do not predict record ids, escrow settlement,\n * reputation effects, or execution success.\n */\n\nimport { addressToTypedBech32, typedBech32ToAddress, type AddressKind } from \"./address.js\";\nimport { BincodeWriter } from \"./crypto/bincode.js\";\nimport { bytesToHex, hexToBytes } from \"./crypto/bytes.js\";\n\nexport const NATIVE_AGENT_MODULE_ADDRESS_BYTES = \"0x4147454e545f4e41544956455f4d4f445f563031\" as const;\nexport const NATIVE_AGENT_MODULE_ADDRESS = addressToTypedBech32(\n \"systemModule\",\n NATIVE_AGENT_MODULE_ADDRESS_BYTES,\n);\n\nexport type NativeAgentAddressKind = AddressKind;\nexport type NativeAgentAddressInput =\n | string\n | {\n kind?: NativeAgentAddressKind;\n address: string;\n };\n\nexport interface NativeAgentModuleContractCall {\n /** Stable typed system-module address (`AGENT_NATIVE_MOD_V01`). */\n to: string;\n /** Native agent router bincode payload. */\n input: string;\n /** Native agent module calls must not carry native value. */\n valueLythoshi: \"0\";\n /** Maximum cycles delegated to the RISC-V host call. */\n maxCycles: string;\n}\n\nexport interface NativeAgentModuleCallEnvelope {\n module: \"agent\";\n call: NativeAgentModuleContractCall;\n}\n\nexport interface NativeAgentForwarderInput {\n /** Canonical `SyscallRequest::CallContract` bytes for MRV call input. */\n input: string;\n /** Byte length of `input`, useful because the minimal forwarder artifact pins this as an immediate. */\n requestBytes: number;\n}\n\nexport interface EncodeNativeAgentRegisterIssuerArgs {\n issuer: NativeAgentAddressInput;\n nonce: string | number | bigint;\n metadataHash: string;\n}\n\nexport interface EncodeNativeAgentIssueAttestationArgs {\n issuerId: string;\n issuer: NativeAgentAddressInput;\n subject: NativeAgentAddressInput;\n nonce: string | number | bigint;\n schemaHash: string;\n payloadHash: string;\n}\n\nexport interface EncodeNativeAgentRevokeAttestationArgs {\n attestationId: string;\n issuer: NativeAgentAddressInput;\n}\n\nexport interface EncodeNativeAgentGrantConsentArgs {\n subject: NativeAgentAddressInput;\n grantee: NativeAgentAddressInput;\n nonce: string | number | bigint;\n scopeHash: string;\n expiresAt: string | number | bigint;\n}\n\nexport interface EncodeNativeAgentRevokeConsentArgs {\n consentId: string;\n subject: NativeAgentAddressInput;\n}\n\nexport interface EncodeNativeAgentListServiceArgs {\n provider: NativeAgentAddressInput;\n nonce: string | number | bigint;\n categoryHash: string;\n metadataHash: string;\n}\n\nexport interface EncodeNativeAgentDeactivateServiceArgs {\n serviceId: string;\n provider: NativeAgentAddressInput;\n}\n\nexport interface EncodeNativeAgentSetAvailabilityArgs {\n provider: NativeAgentAddressInput;\n maxConcurrent: string | number | bigint;\n paused: boolean;\n}\n\nexport interface EncodeNativeAgentAvailabilitySlotArgs {\n provider: NativeAgentAddressInput;\n consumer: NativeAgentAddressInput;\n}\n\nexport interface EncodeNativeAgentRegisterArbiterArgs {\n arbiter: NativeAgentAddressInput;\n nonce: string | number | bigint;\n tier: string | number | bigint;\n metadataHash: string;\n}\n\nexport interface EncodeNativeAgentSetSpendingPolicyArgs {\n owner: NativeAgentAddressInput;\n controller: NativeAgentAddressInput;\n nonce: string | number | bigint;\n assetId: string;\n perActionLimit: string;\n windowLimit: string;\n windowSecs: string | number | bigint;\n}\n\nexport interface EncodeNativeAgentRecordPolicySpendArgs {\n policyId: string;\n controller: NativeAgentAddressInput;\n window: string | number | bigint;\n amount: string;\n}\n\nexport interface EncodeNativeAgentCreateEscrowArgs {\n buyer: NativeAgentAddressInput;\n provider: NativeAgentAddressInput;\n arbiter: NativeAgentAddressInput;\n nonce: string | number | bigint;\n assetId: string;\n amount: string;\n termsHash: string;\n}\n\nexport interface EncodeNativeAgentCounterEscrowArgs {\n escrowId: string;\n actor: NativeAgentAddressInput;\n termsHash: string;\n}\n\nexport interface EncodeNativeAgentEscrowActorArgs {\n escrowId: string;\n actor: NativeAgentAddressInput;\n}\n\nexport interface EncodeNativeAgentStartEscrowArgs {\n escrowId: string;\n provider: NativeAgentAddressInput;\n}\n\nexport interface EncodeNativeAgentSubmitEscrowArgs {\n escrowId: string;\n provider: NativeAgentAddressInput;\n payloadHash: string;\n}\n\nexport type NativeAgentEscrowResolution = \"release-provider\" | \"refund-buyer\";\n\nexport interface EncodeNativeAgentResolveEscrowArgs {\n escrowId: string;\n actor: NativeAgentAddressInput;\n resolution: NativeAgentEscrowResolution;\n}\n\nexport interface NativeAgentReputationScores {\n speed: string | number | bigint;\n quality: string | number | bigint;\n communication: string | number | bigint;\n accuracy: string | number | bigint;\n}\n\nexport interface EncodeNativeAgentRecordReputationArgs {\n reviewer: NativeAgentAddressInput;\n subject: NativeAgentAddressInput;\n categoryId: string | number | bigint;\n scores: NativeAgentReputationScores;\n payloadHash: string;\n}\n\nexport class AgentActionError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"AgentActionError\";\n }\n}\n\nexport function encodeNativeAgentRegisterIssuerCall(args: EncodeNativeAgentRegisterIssuerArgs): string {\n const w = agentCallWriter(0, 0); // NativeAgentCall::Issuer / IssuerCall::Register\n monoAddressInto(w, args.issuer, \"issuer\");\n w.u64(uint64(args.nonce, \"nonce\"));\n w.rawBytes(bytes32FromHex(args.metadataHash, \"metadataHash\"));\n return bytesToHex(w.toBytes());\n}\n\nexport function encodeNativeAgentIssuerGetCall(issuerId: string): string {\n const w = agentCallWriter(0, 1); // NativeAgentCall::Issuer / IssuerCall::Get\n w.rawBytes(bytes32FromHex(issuerId, \"issuerId\"));\n return bytesToHex(w.toBytes());\n}\n\nexport function encodeNativeAgentIssueAttestationCall(args: EncodeNativeAgentIssueAttestationArgs): string {\n const w = agentCallWriter(1, 0); // NativeAgentCall::Attestation / AttestationCall::Issue\n w.rawBytes(bytes32FromHex(args.issuerId, \"issuerId\"));\n monoAddressInto(w, args.issuer, \"issuer\");\n monoAddressInto(w, args.subject, \"subject\");\n w.u64(uint64(args.nonce, \"nonce\"));\n w.rawBytes(bytes32FromHex(args.schemaHash, \"schemaHash\"));\n w.rawBytes(bytes32FromHex(args.payloadHash, \"payloadHash\"));\n return bytesToHex(w.toBytes());\n}\n\nexport function encodeNativeAgentRevokeAttestationCall(args: EncodeNativeAgentRevokeAttestationArgs): string {\n const w = agentCallWriter(1, 1); // NativeAgentCall::Attestation / AttestationCall::Revoke\n w.rawBytes(bytes32FromHex(args.attestationId, \"attestationId\"));\n monoAddressInto(w, args.issuer, \"issuer\");\n return bytesToHex(w.toBytes());\n}\n\nexport function encodeNativeAgentAttestationGetCall(attestationId: string): string {\n const w = agentCallWriter(1, 2); // NativeAgentCall::Attestation / AttestationCall::Get\n w.rawBytes(bytes32FromHex(attestationId, \"attestationId\"));\n return bytesToHex(w.toBytes());\n}\n\nexport function encodeNativeAgentGrantConsentCall(args: EncodeNativeAgentGrantConsentArgs): string {\n const w = agentCallWriter(2, 0); // NativeAgentCall::Consent / ConsentCall::Grant\n monoAddressInto(w, args.subject, \"subject\");\n monoAddressInto(w, args.grantee, \"grantee\");\n w.u64(uint64(args.nonce, \"nonce\"));\n w.rawBytes(bytes32FromHex(args.scopeHash, \"scopeHash\"));\n w.u64(uint64(args.expiresAt, \"expiresAt\"));\n return bytesToHex(w.toBytes());\n}\n\nexport function encodeNativeAgentRevokeConsentCall(args: EncodeNativeAgentRevokeConsentArgs): string {\n const w = agentCallWriter(2, 1); // NativeAgentCall::Consent / ConsentCall::Revoke\n w.rawBytes(bytes32FromHex(args.consentId, \"consentId\"));\n monoAddressInto(w, args.subject, \"subject\");\n return bytesToHex(w.toBytes());\n}\n\nexport function encodeNativeAgentConsentGetCall(consentId: string): string {\n const w = agentCallWriter(2, 2); // NativeAgentCall::Consent / ConsentCall::Get\n w.rawBytes(bytes32FromHex(consentId, \"consentId\"));\n return bytesToHex(w.toBytes());\n}\n\nexport function encodeNativeAgentListServiceCall(args: EncodeNativeAgentListServiceArgs): string {\n const w = agentCallWriter(3, 0); // NativeAgentCall::Discovery / DiscoveryCall::List\n monoAddressInto(w, args.provider, \"provider\");\n w.u64(uint64(args.nonce, \"nonce\"));\n w.rawBytes(bytes32FromHex(args.categoryHash, \"categoryHash\"));\n w.rawBytes(bytes32FromHex(args.metadataHash, \"metadataHash\"));\n return bytesToHex(w.toBytes());\n}\n\nexport function encodeNativeAgentDeactivateServiceCall(args: EncodeNativeAgentDeactivateServiceArgs): string {\n const w = agentCallWriter(3, 1); // NativeAgentCall::Discovery / DiscoveryCall::Deactivate\n w.rawBytes(bytes32FromHex(args.serviceId, \"serviceId\"));\n monoAddressInto(w, args.provider, \"provider\");\n return bytesToHex(w.toBytes());\n}\n\nexport function encodeNativeAgentServiceGetCall(serviceId: string): string {\n const w = agentCallWriter(3, 2); // NativeAgentCall::Discovery / DiscoveryCall::Get\n w.rawBytes(bytes32FromHex(serviceId, \"serviceId\"));\n return bytesToHex(w.toBytes());\n}\n\nexport function encodeNativeAgentSetAvailabilityCall(args: EncodeNativeAgentSetAvailabilityArgs): string {\n const w = agentCallWriter(4, 0); // NativeAgentCall::Availability / AvailabilityCall::Set\n monoAddressInto(w, args.provider, \"provider\");\n w.u32(uint32(args.maxConcurrent, \"maxConcurrent\"));\n w.u8(boolByte(args.paused, \"paused\"));\n return bytesToHex(w.toBytes());\n}\n\nexport function encodeNativeAgentOpenAvailabilityCall(args: EncodeNativeAgentAvailabilitySlotArgs): string {\n const w = agentCallWriter(4, 1); // NativeAgentCall::Availability / AvailabilityCall::Open\n monoAddressInto(w, args.provider, \"provider\");\n monoAddressInto(w, args.consumer, \"consumer\");\n return bytesToHex(w.toBytes());\n}\n\nexport function encodeNativeAgentCloseAvailabilityCall(args: EncodeNativeAgentAvailabilitySlotArgs): string {\n const w = agentCallWriter(4, 2); // NativeAgentCall::Availability / AvailabilityCall::Close\n monoAddressInto(w, args.provider, \"provider\");\n monoAddressInto(w, args.consumer, \"consumer\");\n return bytesToHex(w.toBytes());\n}\n\nexport function encodeNativeAgentAvailabilityGetCall(provider: NativeAgentAddressInput): string {\n const w = agentCallWriter(4, 3); // NativeAgentCall::Availability / AvailabilityCall::Get\n monoAddressInto(w, provider, \"provider\");\n return bytesToHex(w.toBytes());\n}\n\nexport function encodeNativeAgentRegisterArbiterCall(args: EncodeNativeAgentRegisterArbiterArgs): string {\n const w = agentCallWriter(5, 0); // NativeAgentCall::Arbiter / ArbiterCall::Register\n monoAddressInto(w, args.arbiter, \"arbiter\");\n w.u64(uint64(args.nonce, \"nonce\"));\n w.u16(uint16(args.tier, \"tier\"));\n w.rawBytes(bytes32FromHex(args.metadataHash, \"metadataHash\"));\n return bytesToHex(w.toBytes());\n}\n\nexport function encodeNativeAgentArbiterGetCall(arbiterId: string): string {\n const w = agentCallWriter(5, 1); // NativeAgentCall::Arbiter / ArbiterCall::Get\n w.rawBytes(bytes32FromHex(arbiterId, \"arbiterId\"));\n return bytesToHex(w.toBytes());\n}\n\nexport function encodeNativeAgentSetSpendingPolicyCall(args: EncodeNativeAgentSetSpendingPolicyArgs): string {\n const w = agentCallWriter(6, 0); // NativeAgentCall::SpendingPolicy / SpendingPolicyCall::Set\n monoAddressInto(w, args.owner, \"owner\");\n monoAddressInto(w, args.controller, \"controller\");\n w.u64(uint64(args.nonce, \"nonce\"));\n w.rawBytes(bytes32FromHex(args.assetId, \"assetId\"));\n w.u128(positiveU128Decimal(args.perActionLimit, \"perActionLimit\"));\n w.u128(positiveU128Decimal(args.windowLimit, \"windowLimit\"));\n w.u64(uint64(args.windowSecs, \"windowSecs\"));\n return bytesToHex(w.toBytes());\n}\n\nexport function encodeNativeAgentRecordPolicySpendCall(args: EncodeNativeAgentRecordPolicySpendArgs): string {\n const w = agentCallWriter(6, 1); // NativeAgentCall::SpendingPolicy / SpendingPolicyCall::RecordSpend\n w.rawBytes(bytes32FromHex(args.policyId, \"policyId\"));\n monoAddressInto(w, args.controller, \"controller\");\n w.u64(uint64(args.window, \"window\"));\n w.u128(positiveU128Decimal(args.amount, \"amount\"));\n return bytesToHex(w.toBytes());\n}\n\nexport function encodeNativeAgentSpendingPolicyGetCall(policyId: string): string {\n const w = agentCallWriter(6, 2); // NativeAgentCall::SpendingPolicy / SpendingPolicyCall::Get\n w.rawBytes(bytes32FromHex(policyId, \"policyId\"));\n return bytesToHex(w.toBytes());\n}\n\nexport function encodeNativeAgentCreateEscrowCall(args: EncodeNativeAgentCreateEscrowArgs): string {\n const w = agentCallWriter(7, 0); // NativeAgentCall::Escrow / EscrowCall::Create\n monoAddressInto(w, args.buyer, \"buyer\");\n monoAddressInto(w, args.provider, \"provider\");\n monoAddressInto(w, args.arbiter, \"arbiter\");\n w.u64(uint64(args.nonce, \"nonce\"));\n w.rawBytes(bytes32FromHex(args.assetId, \"assetId\"));\n w.u128(positiveU128Decimal(args.amount, \"amount\"));\n w.rawBytes(bytes32FromHex(args.termsHash, \"termsHash\"));\n return bytesToHex(w.toBytes());\n}\n\nexport function encodeNativeAgentCounterEscrowCall(args: EncodeNativeAgentCounterEscrowArgs): string {\n const w = agentCallWriter(7, 1); // NativeAgentCall::Escrow / EscrowCall::Counter\n w.rawBytes(bytes32FromHex(args.escrowId, \"escrowId\"));\n monoAddressInto(w, args.actor, \"actor\");\n w.rawBytes(bytes32FromHex(args.termsHash, \"termsHash\"));\n return bytesToHex(w.toBytes());\n}\n\nexport function encodeNativeAgentAcceptEscrowCall(args: EncodeNativeAgentEscrowActorArgs): string {\n const w = agentCallWriter(7, 2); // NativeAgentCall::Escrow / EscrowCall::Accept\n escrowActorInto(w, args);\n return bytesToHex(w.toBytes());\n}\n\nexport function encodeNativeAgentStartEscrowCall(args: EncodeNativeAgentStartEscrowArgs): string {\n const w = agentCallWriter(7, 3); // NativeAgentCall::Escrow / EscrowCall::Start\n w.rawBytes(bytes32FromHex(args.escrowId, \"escrowId\"));\n monoAddressInto(w, args.provider, \"provider\");\n return bytesToHex(w.toBytes());\n}\n\nexport function encodeNativeAgentSubmitEscrowCall(args: EncodeNativeAgentSubmitEscrowArgs): string {\n const w = agentCallWriter(7, 4); // NativeAgentCall::Escrow / EscrowCall::Submit\n w.rawBytes(bytes32FromHex(args.escrowId, \"escrowId\"));\n monoAddressInto(w, args.provider, \"provider\");\n w.rawBytes(bytes32FromHex(args.payloadHash, \"payloadHash\"));\n return bytesToHex(w.toBytes());\n}\n\nexport function encodeNativeAgentApproveEscrowCall(args: EncodeNativeAgentEscrowActorArgs): string {\n const w = agentCallWriter(7, 5); // NativeAgentCall::Escrow / EscrowCall::Approve\n escrowActorInto(w, args);\n return bytesToHex(w.toBytes());\n}\n\nexport function encodeNativeAgentDisputeEscrowCall(args: EncodeNativeAgentEscrowActorArgs): string {\n const w = agentCallWriter(7, 6); // NativeAgentCall::Escrow / EscrowCall::Dispute\n escrowActorInto(w, args);\n return bytesToHex(w.toBytes());\n}\n\nexport function encodeNativeAgentCancelEscrowCall(args: EncodeNativeAgentEscrowActorArgs): string {\n const w = agentCallWriter(7, 7); // NativeAgentCall::Escrow / EscrowCall::Cancel\n escrowActorInto(w, args);\n return bytesToHex(w.toBytes());\n}\n\nexport function encodeNativeAgentResolveEscrowCall(args: EncodeNativeAgentResolveEscrowArgs): string {\n const w = agentCallWriter(7, 8); // NativeAgentCall::Escrow / EscrowCall::Resolve\n w.rawBytes(bytes32FromHex(args.escrowId, \"escrowId\"));\n monoAddressInto(w, args.actor, \"actor\");\n w.enumVariant(normalizeEscrowResolution(args.resolution));\n return bytesToHex(w.toBytes());\n}\n\nexport function encodeNativeAgentEscrowGetCall(escrowId: string): string {\n const w = agentCallWriter(7, 9); // NativeAgentCall::Escrow / EscrowCall::Get\n w.rawBytes(bytes32FromHex(escrowId, \"escrowId\"));\n return bytesToHex(w.toBytes());\n}\n\nexport function encodeNativeAgentRecordReputationCall(args: EncodeNativeAgentRecordReputationArgs): string {\n const w = agentCallWriter(8, 0); // NativeAgentCall::Reputation / ReputationCall::Record\n monoAddressInto(w, args.reviewer, \"reviewer\");\n monoAddressInto(w, args.subject, \"subject\");\n w.u32(uint32(args.categoryId, \"categoryId\"));\n reputationScoresInto(w, args.scores);\n w.rawBytes(bytes32FromHex(args.payloadHash, \"payloadHash\"));\n return bytesToHex(w.toBytes());\n}\n\nexport function encodeNativeAgentReputationGetCall(\n subject: NativeAgentAddressInput,\n categoryId: string | number | bigint,\n): string {\n const w = agentCallWriter(8, 1); // NativeAgentCall::Reputation / ReputationCall::Get\n monoAddressInto(w, subject, \"subject\");\n w.u32(uint32(categoryId, \"categoryId\"));\n return bytesToHex(w.toBytes());\n}\n\nexport function buildNativeAgentModuleCallEnvelope(\n input: string,\n maxCycles: string | number | bigint,\n): NativeAgentModuleCallEnvelope {\n return {\n module: \"agent\",\n call: {\n to: NATIVE_AGENT_MODULE_ADDRESS,\n input: normalizeHexBytes(input, \"input\"),\n valueLythoshi: \"0\",\n maxCycles: uint64(maxCycles, \"maxCycles\").toString(10),\n },\n };\n}\n\nexport function encodeNativeAgentModuleForwarderInput(\n envelope: NativeAgentModuleCallEnvelope,\n): NativeAgentForwarderInput {\n if (envelope.module !== \"agent\") {\n throw new AgentActionError(\"native agent forwarder envelope module must be 'agent'\");\n }\n if (!isNativeAgentModuleAddress(envelope.call.to)) {\n throw new AgentActionError(\"native agent forwarder call target must be the agent system module\");\n }\n if (envelope.call.valueLythoshi !== \"0\") {\n throw new AgentActionError(\"native agent forwarder call valueLythoshi must be 0\");\n }\n const payload = hexToBytes(normalizeHexBytes(envelope.call.input, \"input\"), \"input\");\n const maxCycles = uint64(envelope.call.maxCycles, \"maxCycles\");\n const w = new BincodeWriter();\n w.enumVariant(7); // SyscallRequest::CallContract\n w.enumVariant(NATIVE_AGENT_ADDRESS_KIND_VARIANTS.systemModule);\n w.rawBytes(hexToBytes(NATIVE_AGENT_MODULE_ADDRESS_BYTES, \"native agent module address\"));\n w.bytes(payload);\n w.u128(0n);\n w.u64(maxCycles);\n const input = bytesToHex(w.toBytes());\n return { input, requestBytes: (input.length - 2) / 2 };\n}\n\nexport function buildNativeAgentSetSpendingPolicyModuleCall(\n args: EncodeNativeAgentSetSpendingPolicyArgs,\n maxCycles: string | number | bigint,\n): NativeAgentModuleCallEnvelope {\n return buildNativeAgentModuleCallEnvelope(encodeNativeAgentSetSpendingPolicyCall(args), maxCycles);\n}\n\nexport function buildNativeAgentSetSpendingPolicyForwarderInput(\n args: EncodeNativeAgentSetSpendingPolicyArgs,\n maxCycles: string | number | bigint,\n): NativeAgentForwarderInput {\n return encodeNativeAgentModuleForwarderInput(buildNativeAgentSetSpendingPolicyModuleCall(args, maxCycles));\n}\n\nexport function buildNativeAgentCreateEscrowModuleCall(\n args: EncodeNativeAgentCreateEscrowArgs,\n maxCycles: string | number | bigint,\n): NativeAgentModuleCallEnvelope {\n return buildNativeAgentModuleCallEnvelope(encodeNativeAgentCreateEscrowCall(args), maxCycles);\n}\n\nexport function buildNativeAgentCreateEscrowForwarderInput(\n args: EncodeNativeAgentCreateEscrowArgs,\n maxCycles: string | number | bigint,\n): NativeAgentForwarderInput {\n return encodeNativeAgentModuleForwarderInput(buildNativeAgentCreateEscrowModuleCall(args, maxCycles));\n}\n\nexport function buildNativeAgentRecordReputationModuleCall(\n args: EncodeNativeAgentRecordReputationArgs,\n maxCycles: string | number | bigint,\n): NativeAgentModuleCallEnvelope {\n return buildNativeAgentModuleCallEnvelope(encodeNativeAgentRecordReputationCall(args), maxCycles);\n}\n\nexport function buildNativeAgentRecordReputationForwarderInput(\n args: EncodeNativeAgentRecordReputationArgs,\n maxCycles: string | number | bigint,\n): NativeAgentForwarderInput {\n return encodeNativeAgentModuleForwarderInput(buildNativeAgentRecordReputationModuleCall(args, maxCycles));\n}\n\nconst NATIVE_AGENT_ADDRESS_KIND_VARIANTS: Record<NativeAgentAddressKind, number> = {\n user: 0,\n smartAccount: 1,\n contract: 2,\n cluster: 3,\n multisig: 4,\n systemModule: 5,\n};\n\nfunction agentCallWriter(surfaceVariant: number, callVariant: number): BincodeWriter {\n const w = new BincodeWriter();\n w.enumVariant(surfaceVariant);\n w.enumVariant(callVariant);\n return w;\n}\n\nfunction escrowActorInto(w: BincodeWriter, args: EncodeNativeAgentEscrowActorArgs): void {\n w.rawBytes(bytes32FromHex(args.escrowId, \"escrowId\"));\n monoAddressInto(w, args.actor, \"actor\");\n}\n\nfunction reputationScoresInto(w: BincodeWriter, scores: NativeAgentReputationScores): void {\n w.u8(score(scores.speed, \"scores.speed\"));\n w.u8(score(scores.quality, \"scores.quality\"));\n w.u8(score(scores.communication, \"scores.communication\"));\n w.u8(score(scores.accuracy, \"scores.accuracy\"));\n}\n\nfunction normalizeEscrowResolution(resolution: NativeAgentEscrowResolution): 0 | 1 {\n if (resolution === \"release-provider\") return 0;\n if (resolution === \"refund-buyer\") return 1;\n throw new AgentActionError(\"resolution must be 'release-provider' or 'refund-buyer'\");\n}\n\nfunction normalizeBytes32Hex(value: string, name: string): string {\n if (typeof value !== \"string\" || !/^0x[0-9a-fA-F]{64}$/.test(value)) {\n throw new AgentActionError(`${name} must be a 32-byte 0x-prefixed hex string`);\n }\n return value.toLowerCase();\n}\n\nfunction bytes32FromHex(value: string, name: string): Uint8Array {\n normalizeBytes32Hex(value, name);\n return hexToBytes(value, name);\n}\n\nfunction positiveDecimal(value: string, name: string): bigint {\n if (typeof value !== \"string\" || !/^(0|[1-9][0-9]*)$/.test(value)) {\n throw new AgentActionError(`${name} must be an integer decimal string`);\n }\n const n = BigInt(value);\n if (n <= 0n) {\n throw new AgentActionError(`${name} must be positive`);\n }\n return n;\n}\n\nfunction uint64(value: string | number | bigint, name: string): bigint {\n let n: bigint;\n if (typeof value === \"bigint\") {\n n = value;\n } else if (typeof value === \"number\") {\n if (!Number.isSafeInteger(value)) {\n throw new AgentActionError(`${name} must be a safe integer`);\n }\n n = BigInt(value);\n } else if (/^(0|[1-9][0-9]*|0x[0-9a-fA-F]+)$/.test(value)) {\n n = BigInt(value);\n } else {\n throw new AgentActionError(`${name} must be a nonnegative integer`);\n }\n if (n < 0n || n > 0xffff_ffff_ffff_ffffn) {\n throw new AgentActionError(`${name} must fit uint64`);\n }\n return n;\n}\n\nfunction uint32(value: string | number | bigint, name: string): number {\n const n = uint64(value, name);\n if (n > 0xffff_ffffn) {\n throw new AgentActionError(`${name} must fit uint32`);\n }\n return Number(n);\n}\n\nfunction uint16(value: string | number | bigint, name: string): number {\n const n = uint64(value, name);\n if (n > 0xffffn) {\n throw new AgentActionError(`${name} must fit uint16`);\n }\n return Number(n);\n}\n\nfunction score(value: string | number | bigint, name: string): number {\n const n = uint64(value, name);\n if (n < 1n || n > 5n) {\n throw new AgentActionError(`${name} must be between 1 and 5`);\n }\n return Number(n);\n}\n\nfunction boolByte(value: boolean, name: string): 0 | 1 {\n if (value === true) return 1;\n if (value === false) return 0;\n throw new AgentActionError(`${name} must be boolean`);\n}\n\nfunction positiveU128Decimal(value: string, name: string): bigint {\n const n = positiveDecimal(value, name);\n if (n >= (1n << 128n)) {\n throw new AgentActionError(`${name} must fit uint128`);\n }\n return n;\n}\n\nfunction normalizeHexBytes(value: string, name: string): string {\n if (typeof value !== \"string\" || !value.startsWith(\"0x\")) {\n throw new AgentActionError(`${name} must be 0x-prefixed hex bytes`);\n }\n try {\n hexToBytes(value, name);\n } catch (error) {\n const detail = error instanceof Error ? `: ${error.message}` : \"\";\n throw new AgentActionError(`${name} must be 0x-prefixed hex bytes${detail}`);\n }\n return value.toLowerCase();\n}\n\nfunction isNativeAgentModuleAddress(value: string): boolean {\n const normalized = value.toLowerCase();\n return normalized === NATIVE_AGENT_MODULE_ADDRESS || normalized === NATIVE_AGENT_MODULE_ADDRESS_BYTES;\n}\n\nfunction monoAddressInto(w: BincodeWriter, input: NativeAgentAddressInput, name: string): void {\n const { kind, bytes } = normalizeNativeAgentAddress(input, name);\n w.enumVariant(NATIVE_AGENT_ADDRESS_KIND_VARIANTS[kind]);\n w.rawBytes(bytes);\n}\n\nfunction normalizeNativeAgentAddress(\n input: NativeAgentAddressInput,\n name: string,\n): { kind: NativeAgentAddressKind; bytes: Uint8Array } {\n if (typeof input === \"string\") {\n return normalizeNativeAgentAddressString(input, undefined, name);\n }\n if (typeof input === \"object\" && input !== null && \"address\" in input) {\n const kind = input.kind;\n if (kind !== undefined && !(kind in NATIVE_AGENT_ADDRESS_KIND_VARIANTS)) {\n throw new AgentActionError(`${name}.kind is not a supported native address kind`);\n }\n if (typeof input.address !== \"string\") {\n throw new AgentActionError(`${name}.address must be a typed bech32m address`);\n }\n return normalizeNativeAgentAddressString(input.address, kind, name);\n }\n throw new AgentActionError(`${name} must be a typed bech32m address`);\n}\n\nfunction normalizeNativeAgentAddressString(\n address: string,\n expectedKind: NativeAgentAddressKind | undefined,\n name: string,\n): { kind: NativeAgentAddressKind; bytes: Uint8Array } {\n if (address.startsWith(\"0x\") || address.startsWith(\"0X\")) {\n throw new AgentActionError(`${name} raw 0x addresses are retired; use typed bech32m addresses`);\n }\n try {\n const parsed = typedBech32ToAddress(address, expectedKind);\n return { kind: parsed.kind, bytes: parsed.bytes };\n } catch (error) {\n const detail = error instanceof Error ? `: ${error.message}` : \"\";\n throw new AgentActionError(`${name} must be a typed bech32m address${detail}`);\n }\n}\n","/**\n * Network identity constants.\n *\n * Monolythium testnet `chain_id` is **`69420`**. Mainnet chain id is\n * reserved for the genesis ceremony and not yet exported.\n */\n\n/** Monolythium testnet chain id. */\nexport const MONOLYTHIUM_TESTNET_CHAIN_ID = 69420n;\n\n/** Network name surfaced alongside chain identity. */\nexport const MONOLYTHIUM_TESTNET_NETWORK_NAME = \"monolythium-testnet\";\n\n/**\n * Built-in network presets. Callers that point at a different chain id\n * (e.g. a local dev node) construct identity records explicitly.\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/** Network identity record. */\nexport interface MonolythiumNetworkConfig {\n /** Numeric chain id (e.g. `69420n`). */\n chainId: bigint;\n /** Human-readable network name. */\n name: string;\n}\n","/**\n * Official TypeScript SDK for Monolythium v4.1 / 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 across current `lyth_*` native methods,\n * passive compatibility reads, and server-gated legacy/debug methods.\n *\n * Optional compatibility adapters live under the explicit `./ethers`\n * subpath so native SDK consumers do not import that peer dependency.\n */\n\nexport const version = \"0.2.2\";\n\nexport { ApiClient, apiEndpointFromRpcEndpoint } from \"./api.js\";\nexport {\n BRIDGE_QUOTE_API_BLOCKED_REASON,\n BRIDGE_REVERT_TAGS,\n BRIDGE_SELECTORS,\n BRIDGE_SUBMIT_API_BLOCKED_REASON,\n V1_BRIDGE_ALLOWED_FEE_TOKEN,\n V1_BRIDGE_ALLOWED_PROTOCOL,\n BridgePrecompileError,\n BridgeRouteCatalogueError,\n assessBridgeRoute,\n bridgeAddressHex,\n bridgeDrainRemaining,\n bridgeQuoteSubmitReadiness,\n bridgeRoutesReadiness,\n bridgeTransferCandidates,\n buildBridgeRouteCatalogue,\n encodeLockBridgeConfigCalldata,\n encodeSetBridgeRouteFinalityCalldata,\n encodeSetBridgeResumeCooldownCalldata,\n exportBridgeRouteCatalogueJson,\n isBridgeAdminLockedRevert,\n isBridgeCooldownZeroRevert,\n isBridgeFinalityZeroRevert,\n isBridgeResumeCooldownActiveRevert,\n normalizeBridgeRouteCatalogue,\n parseBridgeRouteCatalogueJson,\n rankBridgeRoutes,\n selectBridgeTransferRoute,\n validateBridgeRouteCatalogue,\n} from \"./bridge.js\";\nexport type {\n BridgeAdminControl,\n BridgeAnchorState,\n BridgeBreakerState,\n BridgeBytesInput,\n BridgeCircuitBreakerFields,\n BridgeCircuitBreakerState,\n BridgeDrainCap,\n BridgeDrainStatus,\n BridgeHealthRecord,\n BridgeHealthResponse,\n BridgeQuoteSubmitReadiness,\n BridgeRiskTier,\n BridgeRouteAssessment,\n BridgeRouteCandidate,\n BridgeRouteCatalogue,\n BridgeRouteCatalogueJsonOptions,\n BridgeRouteCataloguePayload,\n BridgeRouteCatalogueRoute,\n BridgeRouteCatalogueValidation,\n BridgeRouteDisclosure,\n BridgeRouteSelection,\n BridgeRoutesRequest,\n BridgeRoutesResponse,\n BridgeRoutesSource,\n BridgeTransferIntent,\n BridgeTransferRequest,\n BridgeVerifierDisclosure,\n RankedBridgeRoute,\n} from \"./bridge.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 ApiTransactionNativeReceiptData,\n ApiTransactionReceipt,\n ApiTransactionReceiptData,\n ApiTransactionView,\n ApiUpgradePlanStatus,\n ApiUpgradeStatus,\n ApiUpgradeStatusData,\n} from \"./api.js\";\nexport {\n MAX_NATIVE_RECEIPT_EVENTS,\n RpcClient,\n decodeNativeAgentStateResponse,\n decodeNativeReceiptResponse,\n decodeTxFeedResponse,\n nativeAgentStateFilterParams,\n nativeMarketStateFilterParams,\n nativeEventsFilterParams,\n parseQuantity,\n parseQuantityBig,\n} from \"./client.js\";\nexport type {\n AddressActivityKind,\n AddressFlowResponse,\n AddressProfileResponse,\n AgentReputationCategoryScope,\n AgentReputationRecord,\n AgentReputationResponse,\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 ExecutionUnitPriceResponse,\n JailStatusWindow,\n KeyRotationWindow,\n LythUpgradePlanStatus,\n LythUpgradeStatusResponse,\n MetricsRangeResponse,\n MetricsRangeSample,\n MetricsRangeSeries,\n MetricsRangeStatus,\n NoEvmArchiveProof,\n NoEvmArchiveCoveringSnapshot,\n NoEvmFinalityCertificate,\n NoEvmFinalityBlockReference,\n NoEvmFinalityEvidence,\n NoEvmReceiptProof,\n NativeReceiptCounters,\n NativeReceiptEvent,\n NativeReceiptFee,\n NativeReceiptResponse,\n NativeReceiptSource,\n NativeEventsFilter,\n NativeEventsResponse,\n NativeEventsResponseFilters,\n NativeEventsSource,\n NativeAgentArbiterStateRecord,\n NativeAgentAttestationStateRecord,\n NativeAgentAvailabilityStateRecord,\n NativeAgentConsentStateRecord,\n NativeAgentEscrowStateRecord,\n NativeAgentIssuerStateRecord,\n NativeAgentPolicySpendStateRecord,\n NativeAgentPolicyStateRecord,\n NativeAgentReputationReviewStateRecord,\n NativeAgentServiceStateRecord,\n NativeAgentStateFilterParamValue,\n NativeAgentStateFilter,\n NativeAgentStateResponse,\n NativeAgentStateResponseFilters,\n NativeAgentStateSource,\n NativeCollectionRoyaltyStateRecord,\n NativeMarketStateFilterParamValue,\n NativeMarketStateFilter,\n NativeMarketStateResponse,\n NativeMarketStateResponseFilters,\n NativeMarketStateSource,\n NativeNftListingStateRecord,\n NativeSpotMarketStateRecord,\n NativeSpotOrderStateRecord,\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 UserAddressInput,\n VertexAtRound,\n VerticesAtRoundResponse,\n} from \"./client.js\";\nexport {\n API_STREAM_TOPICS,\n NATIVE_MARKET_ORDER_BOOK_STREAM_TOPIC,\n assertNativeMarketOrderBookStreamPayload,\n decodeNativeMarketOrderBookDeltasResponse,\n isNativeMarketOrderBookStreamPayload,\n} from \"./streams.js\";\nexport type {\n ApiStreamTopic,\n ApiStreamTopicMetadata,\n ApiStreamTopicRetention,\n ApiStreamsIndexResponse,\n NativeMarketOrderBookDelta,\n NativeMarketOrderBookDeltasRequest,\n NativeMarketOrderBookDeltasResponse,\n NativeMarketOrderBookDeltasResponseFilters,\n NativeMarketOrderBookDeltasSource,\n NativeMarketOrderBookStreamAction,\n NativeMarketOrderBookStreamPayload,\n} from \"./streams.js\";\nexport {\n NO_EVM_ARCHIVE_PROOF_SCHEMA,\n NO_EVM_ARCHIVE_SIGNATURE_SCHEME,\n NO_EVM_FINALITY_EVIDENCE_SCHEMA,\n NO_EVM_FINALITY_EVIDENCE_SOURCE,\n NO_EVM_RECEIPTS_ROOT_DOMAIN,\n NO_EVM_RECEIPT_CODEC,\n NO_EVM_RECEIPT_PROOF_SCHEMA,\n NO_EVM_RECEIPT_PROOF_TYPE,\n NO_EVM_RECEIPT_ROOT_ALGORITHM,\n NoEvmReceiptProofError,\n computeNoEvmDacFinalityMessage,\n computeNoEvmLeaderFinalityMessage,\n computeNoEvmReceiptsRoot,\n computeNoEvmRoundFinalityMessage,\n computeNoEvmTargetReceiptHash,\n decodeNoEvmReceiptTranscript,\n verifyNoEvmBlockFinalityEvidenceMultisig,\n verifyNoEvmBlockFinalityEvidenceThreshold,\n verifyNoEvmFinalityEvidenceMultisig,\n verifyNoEvmFinalityEvidenceThreshold,\n verifyNoEvmArchiveProofSignatures,\n verifyNoEvmReceiptProof,\n verifyNoEvmReceiptProofTrust,\n} from \"./receipt-proof.js\";\nexport type {\n NoEvmBlockBlsFinalityVerification,\n NoEvmBlsFinalityVerification,\n NoEvmArchiveSignatureVerification,\n NoEvmArchiveSignatureVerificationIssue,\n NoEvmArchiveSignatureVerificationIssueCode,\n NoEvmArchiveTrustedSigner,\n NoEvmReceiptFinalityTrustPolicy,\n NoEvmReceiptProofErrorCode,\n NoEvmReceiptProofVerification,\n NoEvmReceiptTrustIssue,\n NoEvmReceiptTrustIssueCode,\n NoEvmReceiptTrustPolicy,\n NoEvmReceiptTrustVerification,\n NoEvmReceiptTrustedBlsSigner,\n} from \"./receipt-proof.js\";\nexport {\n NATIVE_MARKET_EVENT_FAMILY,\n consumeNativeEvents,\n isNativeDecodedEvent,\n nativeMarketEventFilter,\n nativeMarketEventsFromHistory,\n nativeMarketEventsFromReceipt,\n nativeEventMatches,\n nativeEventsFromHistory,\n nativeEventsFromReceipt,\n parseNativeDecodedEvent,\n} from \"./native-events.js\";\nexport type {\n NativeDecodedEvent,\n NativeEventProjection,\n NativeEventConsumer,\n NativeEventFilter,\n NativeMrcPolicyProjection,\n TypedNativeReceiptEvent,\n} from \"./native-events.js\";\nexport type { ClobMarketRecord } from \"./bindings/ClobMarketRecord.js\";\nexport type { ClobMarketResponse } from \"./bindings/ClobMarketResponse.js\";\nexport type { MrcAccountRecord } from \"./bindings/MrcAccountRecord.js\";\nexport type { MrcAccountRequest } from \"./bindings/MrcAccountRequest.js\";\nexport type { MrcAccountResponse } from \"./bindings/MrcAccountResponse.js\";\nexport type { MrcHoldersRequest } from \"./bindings/MrcHoldersRequest.js\";\nexport type { MrcHoldersResponse } from \"./bindings/MrcHoldersResponse.js\";\nexport type { MrcMetadataRecord } from \"./bindings/MrcMetadataRecord.js\";\nexport type { MrcMetadataResponse } from \"./bindings/MrcMetadataResponse.js\";\nexport type { MrcPolicyRecord } from \"./bindings/MrcPolicyRecord.js\";\nexport type { MrcPolicySpendRecord } from \"./bindings/MrcPolicySpendRecord.js\";\nexport type { RedemptionQueueResponse } from \"./bindings/RedemptionQueueResponse.js\";\nexport type { RedemptionQueueTicket } from \"./bindings/RedemptionQueueTicket.js\";\nexport * from \"./native-dev.js\";\nexport * from \"./mrv.js\";\nexport {\n CHAIN_REGISTRY,\n CHAIN_REGISTRY_RAW_BASE,\n TESTNET_69420,\n fetchChainInfoLatest,\n fetchChainRegistryLatest,\n getChainInfo,\n getNoEvmReceiptTrustPolicy,\n getP2pSeeds,\n getRpcEndpoints,\n noEvmReceiptTrustPolicyFromChainInfo,\n parseChainRegistryToml,\n} from \"./registry.js\";\nexport type {\n ChainInfo,\n ChainRegistry,\n ExplorerEndpoint,\n NetworkSlug,\n P2pSeed,\n ReceiptProofTrustArchivePolicy,\n ReceiptProofTrustArchiveSigner,\n ReceiptProofTrustFinalityPolicy,\n ReceiptProofTrustFinalitySigner,\n ReceiptProofTrustPolicy,\n RpcEndpoint,\n} from \"./registry.js\";\nexport { SdkError } from \"./error.js\";\nexport {\n EXECUTION_UNIT_PRICE_SAFETY_MULTIPLIER,\n MIN_EXECUTION_UNIT_PRICE_LYTHOSHI,\n REGISTRY_DEFAULT_EXECUTION_UNIT_LIMIT,\n TRANSFER_DEFAULT_EXECUTION_UNIT_LIMIT,\n clampPriorityTip,\n resolveExecutionFee,\n resolveMaxExecutionUnitPrice,\n resolveRegistryExecutionFee,\n} from \"./tx-fee.js\";\nexport type { ResolvedExecutionFee } from \"./tx-fee.js\";\nexport * from \"./types.js\";\nexport {\n BURN_ADDR,\n OPERATOR_ROUTER_ADDRESS,\n PROTOCOL_MAX_OPERATOR_FEE_BPS,\n PRECOMPILE_ADDRESSES,\n} from \"./consts.js\";\nexport type { PrecompileName, PrecompileAddress } from \"./consts.js\";\nexport {\n CLUSTER_FORMED_EVENT_SIG,\n DIVERSITY_SCORE_MAX,\n MULTISIG_ADDRESS_DERIVATION_DOMAIN,\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 decodeClusterDiversity,\n decodeClusterFormedEvent,\n decodeOperatorNetworkMetadata,\n deriveClusterAnchorAddress,\n encodeReportServiceProbeCalldata,\n isConcreteServiceProbeStatus,\n isSinglePublicServiceProbeMask,\n isValidNodeRegistryCapabilities,\n isValidPublicServiceProbeMask,\n nodeHostingClassFromByte,\n nodeHostingClassToByte,\n nodeRegistryAddressHex,\n serviceProbeStatusLabel,\n} from \"./node-registry.js\";\nexport type {\n ClusterDiversity,\n ClusterDiversityView,\n ClusterFormedEvent,\n NodeHostingClass,\n OperatorNetworkMetadata,\n OperatorNetworkMetadataView,\n ReportServiceProbeCalldataArgs,\n} from \"./node-registry.js\";\nexport {\n ORACLE_EVENT_SIGS,\n OracleEventError,\n decodeOracleEvent,\n oracleAddressHex,\n} from \"./oracle.js\";\nexport type {\n OracleEvent,\n OracleFeedConfig,\n OracleLatestPrice,\n OracleSignerRow,\n OracleSignersResponse,\n OracleWriters,\n} from \"./oracle.js\";\nexport {\n PROVER_MARKET_ADDRESS,\n PROVER_MARKET_BID_DOMAIN,\n PROVER_MARKET_EVENT_SIGS,\n PROVER_MARKET_REQUEST_DOMAIN,\n PROVER_MARKET_SELECTORS,\n PROVER_MARKET_SUBMIT_DOMAIN,\n PROVER_SLASH_REASON_BAD_PROOF,\n PROVER_SLASH_REASON_NON_DELIVERY,\n ProverMarketError,\n SERVES_GPU_PROVE,\n bidSighash,\n encodeCreateRequestCalldata,\n encodeCreateRequestCanonical,\n proverMarketStateFromByte,\n requestSighash,\n submitSighash,\n} from \"./prover-market.js\";\nexport type {\n CreateRequestCanonicalArgs,\n ListProofRequestsResponse,\n ProofRequestRow,\n ProofRequestView,\n ProverBidsResponse,\n ProverBidView,\n ProverMarketState,\n ProverMarketStatusResponse,\n} from \"./prover-market.js\";\nexport {\n ADDRESS_KIND_HRPS,\n ADDRESS_HRP,\n RESERVED_ADDRESS_HRPS,\n AddressError,\n addressBytesToHex,\n addressToBech32,\n addressToTypedBech32,\n bech32ToAddress,\n bech32ToAddressBytes,\n hexToAddressBytes,\n normalizeAddressHex,\n parseAddress,\n requireTypedAddress,\n typedBech32ToAddress,\n validateAddress,\n} from \"./address.js\";\nexport type { AddressKind, AddressValidation, TypedAddress } from \"./address.js\";\nexport {\n DELEGATION_REVERT_TAGS,\n DELEGATION_SELECTORS,\n DelegationPrecompileError,\n delegationAddressHex,\n encodeClaimCalldata,\n encodeCompleteRedemptionCalldata,\n encodeDelegateCalldata,\n encodeRedelegateCalldata,\n encodeSetAutoCompoundCalldata,\n encodeUndelegateCalldata,\n isRedemptionPrincipalUnavailableRevert,\n} from \"./delegation.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 decodeTimeWindow,\n encodeClaimPolicyByAddressCalldata,\n encodeDisableCalldata,\n encodeEnableCalldata,\n encodeSetPolicyCalldata,\n encodeSetPolicyClaimCalldata,\n packTimeWindow,\n spendingPolicyAddressHex,\n} from \"./spending-policy.js\";\nexport type {\n SpendingPolicyArgs,\n SpendingPolicyTimeWindow,\n SpendingPolicyView,\n} 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\";\nexport {\n CLOB_MARKET_ID_DOMAIN_TAG,\n CLOB_SELECTORS,\n OPERATOR_ROUTER_EVENT_SIGS,\n OPERATOR_ROUTER_SELECTORS,\n OPERATOR_ROUTER_SIGS,\n MarketActionError,\n MAX_NATIVE_CALL_FORWARDER_REQUEST_BYTES,\n NATIVE_CALL_FORWARDER_ARTIFACT_PROFILE,\n NATIVE_CALL_FORWARDER_RESPONSE_CAPACITY,\n NATIVE_CALL_FORWARDER_RESPONSE_OFFSET,\n NATIVE_MARKET_MODULE_ADDRESS,\n NATIVE_MARKET_MODULE_ADDRESS_BYTES,\n buildNativeCallForwarderArtifact,\n buildNativeMarketModuleCallEnvelope,\n buildNativeNftBuyListingModuleCall,\n buildNativeNftBuyListingForwarderInput,\n buildNativeNftCancelListingModuleCall,\n buildNativeNftCancelListingForwarderInput,\n buildNativeNftCreateListingModuleCall,\n buildNativeNftCreateListingForwarderInput,\n buildNativeNftPlaceAuctionBidModuleCall,\n buildNativeNftPlaceAuctionBidForwarderInput,\n buildNativeNftSettleAuctionModuleCall,\n buildNativeNftSettleAuctionForwarderInput,\n buildNativeNftSweepExpiredListingsModuleCall,\n buildNativeNftSweepExpiredListingsForwarderInput,\n buildNativeSpotCancelOrderModuleCall,\n buildNativeSpotCancelOrderForwarderInput,\n buildNativeSpotCreateMarketModuleCall,\n buildNativeSpotCreateMarketForwarderInput,\n buildNativeSpotLimitOrderModuleCall,\n buildNativeSpotLimitOrderForwarderInput,\n buildNativeSpotSettleLimitOrderModuleCall,\n buildNativeSpotSettleLimitOrderForwarderInput,\n buildNativeSpotSettleRoutedLimitOrderModuleCall,\n buildNativeSpotSettleRoutedLimitOrderForwarderInput,\n buildCancelSpotOrderPlan,\n buildPlaceLimitOrderViaPlan,\n buildPlaceSpotLimitOrderPlan,\n buildPlaceSpotMarketOrderExPlan,\n buildPlaceSpotMarketOrderPlan,\n clobAddressHex,\n decodeOperatorFeeChargedEvent,\n deriveClobMarketId,\n deriveNativeSpotMarketId,\n deriveNativeSpotOrderId,\n encodeCancelOrderCalldata,\n encodeSetLotSizeCalldata,\n encodeSetMinNotionalCalldata,\n encodeSetTickSizeCalldata,\n encodeNativeMarketModuleForwarderInput,\n encodeNativeNftBuyListingCall,\n encodeNativeNftCancelListingCall,\n encodeNativeNftCreateListingCall,\n encodeNativeNftPlaceAuctionBidCall,\n encodeNativeNftSettleAuctionCall,\n encodeNativeNftSweepExpiredListingsCall,\n encodeNativeSpotCancelOrderCall,\n encodeNativeSpotCreateMarketCall,\n encodeNativeSpotLimitOrderCall,\n encodeNativeSpotSettleLimitOrderCall,\n encodeNativeSpotSettleRoutedLimitOrderCall,\n encodePlaceLimitOrderCalldata,\n encodePlaceLimitOrderViaCalldata,\n encodePlaceMarketOrderCalldata,\n encodePlaceMarketOrderExCalldata,\n quoteOperatorFee,\n} from \"./market-actions.js\";\nexport type {\n CancelSpotOrderArgs,\n EncodeNativeNftBuyListingArgs,\n EncodeNativeNftCancelListingArgs,\n EncodeNativeNftCreateListingArgs,\n EncodeNativeNftPlaceAuctionBidArgs,\n EncodeNativeNftSettleAuctionArgs,\n EncodeNativeNftSweepExpiredListingsArgs,\n EncodeNativeSpotCancelOrderArgs,\n EncodeNativeSpotCreateMarketArgs,\n EncodeNativeSpotLimitOrderArgs,\n EncodeNativeSpotSettleLimitOrderArgs,\n EncodeNativeSpotSettleRoutedLimitOrderArgs,\n EthSendTransactionRequest,\n MarketTransactionPlan,\n NativeCallForwarderArtifact,\n NativeMarketAddressInput,\n NativeMarketAddressKind,\n NativeMarketForwarderInput,\n NativeMarketModuleCallEnvelope,\n NativeMarketModuleContractCall,\n NativeNftAssetStandard,\n NativeNftListingKind,\n OperatorFeeChargedEvent,\n OperatorFeeConfig,\n OperatorFeeQuote,\n OperatorRouterConfig,\n PlaceLimitOrderViaArgs,\n PlaceLimitOrderViaPlan,\n PlaceSpotLimitOrderArgs,\n PlaceSpotMarketOrderArgs,\n PlaceSpotMarketOrderExArgs,\n SpotLimitOrderSide,\n SpotMarketOrderMode,\n} from \"./market-actions.js\";\nexport {\n AgentActionError,\n NATIVE_AGENT_MODULE_ADDRESS,\n NATIVE_AGENT_MODULE_ADDRESS_BYTES,\n buildNativeAgentCreateEscrowForwarderInput,\n buildNativeAgentCreateEscrowModuleCall,\n buildNativeAgentModuleCallEnvelope,\n buildNativeAgentRecordReputationForwarderInput,\n buildNativeAgentRecordReputationModuleCall,\n buildNativeAgentSetSpendingPolicyForwarderInput,\n buildNativeAgentSetSpendingPolicyModuleCall,\n encodeNativeAgentAcceptEscrowCall,\n encodeNativeAgentApproveEscrowCall,\n encodeNativeAgentArbiterGetCall,\n encodeNativeAgentAttestationGetCall,\n encodeNativeAgentAvailabilityGetCall,\n encodeNativeAgentCancelEscrowCall,\n encodeNativeAgentCloseAvailabilityCall,\n encodeNativeAgentConsentGetCall,\n encodeNativeAgentCounterEscrowCall,\n encodeNativeAgentCreateEscrowCall,\n encodeNativeAgentDeactivateServiceCall,\n encodeNativeAgentDisputeEscrowCall,\n encodeNativeAgentEscrowGetCall,\n encodeNativeAgentGrantConsentCall,\n encodeNativeAgentIssueAttestationCall,\n encodeNativeAgentIssuerGetCall,\n encodeNativeAgentListServiceCall,\n encodeNativeAgentModuleForwarderInput,\n encodeNativeAgentOpenAvailabilityCall,\n encodeNativeAgentRecordPolicySpendCall,\n encodeNativeAgentRecordReputationCall,\n encodeNativeAgentRegisterArbiterCall,\n encodeNativeAgentRegisterIssuerCall,\n encodeNativeAgentReputationGetCall,\n encodeNativeAgentResolveEscrowCall,\n encodeNativeAgentRevokeAttestationCall,\n encodeNativeAgentRevokeConsentCall,\n encodeNativeAgentServiceGetCall,\n encodeNativeAgentSetAvailabilityCall,\n encodeNativeAgentSetSpendingPolicyCall,\n encodeNativeAgentSpendingPolicyGetCall,\n encodeNativeAgentStartEscrowCall,\n encodeNativeAgentSubmitEscrowCall,\n} from \"./agent-actions.js\";\nexport type {\n EncodeNativeAgentAvailabilitySlotArgs,\n EncodeNativeAgentCreateEscrowArgs,\n EncodeNativeAgentCounterEscrowArgs,\n EncodeNativeAgentDeactivateServiceArgs,\n EncodeNativeAgentEscrowActorArgs,\n EncodeNativeAgentGrantConsentArgs,\n EncodeNativeAgentIssueAttestationArgs,\n EncodeNativeAgentListServiceArgs,\n EncodeNativeAgentRecordPolicySpendArgs,\n EncodeNativeAgentRecordReputationArgs,\n EncodeNativeAgentRegisterArbiterArgs,\n EncodeNativeAgentRegisterIssuerArgs,\n EncodeNativeAgentResolveEscrowArgs,\n EncodeNativeAgentRevokeAttestationArgs,\n EncodeNativeAgentRevokeConsentArgs,\n EncodeNativeAgentSetAvailabilityArgs,\n EncodeNativeAgentSetSpendingPolicyArgs,\n EncodeNativeAgentStartEscrowArgs,\n EncodeNativeAgentSubmitEscrowArgs,\n NativeAgentAddressInput,\n NativeAgentAddressKind,\n NativeAgentEscrowResolution,\n NativeAgentForwarderInput,\n NativeAgentModuleCallEnvelope,\n NativeAgentModuleContractCall,\n NativeAgentReputationScores,\n} from \"./agent-actions.js\";\nexport {\n MONOLYTHIUM_NETWORKS,\n MONOLYTHIUM_TESTNET_CHAIN_ID,\n MONOLYTHIUM_TESTNET_NETWORK_NAME,\n} from \"./network.js\";\nexport type { MonolythiumNetworkConfig } from \"./network.js\";\n"]}
|