@monolythium/core-sdk 0.3.5 → 0.3.6

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.
@@ -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","toBigint","ML_DSA_65_PUBLIC_KEY_LEN","ML_DSA_65_SIGNATURE_LEN","encodeSingleAddressCall","uint8Word","uint256Word","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 \"0x92dc29b2ae8bae3ea1357ea43f7e597375ebcce888f42c47560f68b917a093d6\",\n binary_sha: \"200c7cf\",\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 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\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 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} 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\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 encodeCompleteRedemptionCalldata,\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 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/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","toBigint","ML_DSA_65_PUBLIC_KEY_LEN","ML_DSA_65_SIGNATURE_LEN","encodeSingleAddressCall","uint8Word","uint256Word","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 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\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 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} 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\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 encodeCompleteRedemptionCalldata,\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 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"]}