@molpha/sdk 0.2.0-dev-20261001125531 → 0.2.0-dev-20261002062009

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/core/aggregation.ts","../src/core/encoding.ts","../src/core/apiconfig.ts","../src/core/constants.ts","../src/core/int256.ts","../src/core/nodeKeys.ts","../src/core/selection.ts","../src/gateway/auth.ts","../src/gateway/encryption.ts","../src/evm/eip712.ts","../src/gateway/x402.ts","../src/gateway/identity.ts","../src/gateway/index.ts","../src/core/coalition.ts","../src/solana/accounts.ts","../src/solana/pdas.ts","../idl/molpha.json","../idl/index.ts","../src/solana/plans.ts","../src/solana/client.ts","../src/wallet.ts","../src/core/message.ts","../src/core/verifyCodes.ts","../src/evm/abi.ts","../src/evm/constants.ts","../src/evm/helpers.ts","../src/starknet/constants.ts","../src/starknet/helpers.ts","../src/index.ts"],"names":["nobleUtf8ToBytes","nobleConcatBytes","nobleBytesToHex","nobleHexToBytes","keccak_256","secp256k1","address","randomBytes","pda","registry","SEED_GATEWAY","PlanType","U32_MAX","assertUint","word","success","code","U8_MAX","U64_MAX","U256_MAX","strip0x","stripOuterQuotes","assertBigUint"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * Aggregation (tolerance mode) config validation and canonicalization.\n *\n * `aggregation` is part of the API config and therefore part of `sourceId`. It is OMITTED\n * for exact mode: a config carrying `mode: \"exact\"` would hash differently from the same\n * config without the key, so it is rejected rather than silently normalized. The node\n * (`new/tolerance.Validate`) is the reference.\n */\nimport type { AggregationConfig } from \"./types.js\";\n\n/** Tolerance mode needs at least this many signers (`signaturesRequired >= 3`). */\nexport const MIN_TOLERANCE_SIGNATURES = 3;\n\nconst MAX_U32 = 0xffffffff;\nconst MAX_U8 = 0xff;\n\n/** Thrown for an unusable `aggregation` config. */\nexport class AggregationConfigError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"AggregationConfigError\";\n }\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\n/**\n * Validate an `aggregation` config and return a fresh object with the canonical key order\n * (`mode`, `rule`, `maxDeviationBps`, `maxAgeMs`, `numeric{type, decimals}`) — the order\n * the source hash and the node's JSON blob use.\n *\n * The result is built field by field: unknown or reordered keys on the input can never\n * reach the hash or the wire. `undefined` / `null` mean exact mode and return `undefined`.\n *\n * @throws {AggregationConfigError} on `mode: \"exact\"`, an unsupported mode / rule / numeric\n * type, or an out-of-range number.\n */\nexport function canonicalizeAggregation(\n aggregation: AggregationConfig | null | undefined,\n): AggregationConfig | undefined {\n if (aggregation === undefined || aggregation === null) return undefined;\n if (!isRecord(aggregation)) {\n throw new AggregationConfigError(\"aggregation must be an object\");\n }\n\n const { mode, rule, maxDeviationBps, maxAgeMs, numeric } = aggregation as unknown as Record<\n string,\n unknown\n >;\n\n if (mode === \"exact\") {\n throw new AggregationConfigError(\n 'aggregation.mode \"exact\" is not accepted: omit `aggregation` for exact mode (adding it would change the sourceId)',\n );\n }\n if (mode !== \"tolerance\") {\n throw new AggregationConfigError(\n `unsupported aggregation.mode ${JSON.stringify(mode)}: only \"tolerance\" is supported`,\n );\n }\n if (rule !== \"median\") {\n throw new AggregationConfigError(\n `unsupported aggregation.rule ${JSON.stringify(rule)}: only \"median\" is supported`,\n );\n }\n if (\n typeof maxDeviationBps !== \"number\" ||\n !Number.isInteger(maxDeviationBps) ||\n maxDeviationBps < 0 ||\n maxDeviationBps > MAX_U32\n ) {\n throw new AggregationConfigError(\n `aggregation.maxDeviationBps must be an integer in 0..${MAX_U32}, got ${String(maxDeviationBps)}`,\n );\n }\n if (typeof maxAgeMs !== \"number\" || !Number.isSafeInteger(maxAgeMs) || maxAgeMs <= 0) {\n throw new AggregationConfigError(\n `aggregation.maxAgeMs must be a positive safe integer (milliseconds), got ${String(maxAgeMs)}`,\n );\n }\n if (!isRecord(numeric)) {\n throw new AggregationConfigError(\"aggregation.numeric must be an object\");\n }\n if (numeric.type !== \"int256\") {\n throw new AggregationConfigError(\n `unsupported aggregation.numeric.type ${JSON.stringify(numeric.type)}: only \"int256\" is supported`,\n );\n }\n const decimals = numeric.decimals;\n if (typeof decimals !== \"number\" || !Number.isInteger(decimals) || decimals < 0 || decimals > MAX_U8) {\n throw new AggregationConfigError(\n `aggregation.numeric.decimals must be an integer in 0..${MAX_U8}, got ${String(decimals)}`,\n );\n }\n\n return {\n mode: \"tolerance\",\n rule: \"median\",\n maxDeviationBps,\n maxAgeMs,\n numeric: { type: \"int256\", decimals },\n };\n}\n\n/**\n * Tolerance mode needs `signaturesRequired >= 3`; the node rejects anything lower.\n * A no-op for exact mode (`aggregation` omitted).\n *\n * @throws {AggregationConfigError}\n */\nexport function assertAggregationQuorum(\n aggregation: AggregationConfig | null | undefined,\n signaturesRequired: number,\n): void {\n if (aggregation === undefined || aggregation === null) return;\n if (signaturesRequired < MIN_TOLERANCE_SIGNATURES) {\n throw new AggregationConfigError(\n `tolerance aggregation requires signaturesRequired >= ${MIN_TOLERANCE_SIGNATURES}, got ${signaturesRequired}`,\n );\n }\n}\n","/**\n * Byte encoding primitives. Isomorphic — no `Buffer`, no `fs`. All byte work is\n * `Uint8Array` + `@noble/hashes/utils.js`. The canonical selection-bitmap and value\n * representation is a 32-byte big-endian word; `bigint` is used only for internal\n * sampling/packing math and is never exposed on the wire.\n */\nimport {\n bytesToHex as nobleBytesToHex,\n hexToBytes as nobleHexToBytes,\n utf8ToBytes as nobleUtf8ToBytes,\n concatBytes as nobleConcatBytes,\n} from \"@noble/hashes/utils.js\";\n\nexport const utf8 = (s: string): Uint8Array => nobleUtf8ToBytes(s);\nexport const concatBytes = (...arrays: Uint8Array[]): Uint8Array =>\n nobleConcatBytes(...arrays);\n\n/** Lower-case hex, no `0x` prefix. */\nexport const bytesToHex = (bytes: Uint8Array): string => nobleBytesToHex(bytes);\n\n/** Accepts an optional leading `0x`; case-insensitive. */\nexport function hexToBytes(hex: string): Uint8Array {\n const clean = hex.startsWith(\"0x\") || hex.startsWith(\"0X\") ? hex.slice(2) : hex;\n return nobleHexToBytes(clean);\n}\n\n/** Hex with a leading `0x`. */\nexport const bytesToHex0x = (bytes: Uint8Array): string => \"0x\" + bytesToHex(bytes);\n\n/** u8 → 1 byte. Range-checked: `Uint8Array.of` would silently wrap an out-of-range value. */\nexport function u8(value: number): Uint8Array {\n assertUint(value, 0xff, \"u8\");\n return Uint8Array.of(value);\n}\n\n/** Big-endian u32 → 4 bytes. */\nexport function u32be(value: number): Uint8Array {\n assertUint(value, 0xffffffff, \"u32\");\n const out = new Uint8Array(4);\n new DataView(out.buffer).setUint32(0, value, false);\n return out;\n}\n\n/** Little-endian u32 → 4 bytes (used for PDA seeds like the registry index). */\nexport function u32le(value: number): Uint8Array {\n assertUint(value, 0xffffffff, \"u32\");\n const out = new Uint8Array(4);\n new DataView(out.buffer).setUint32(0, value, true);\n return out;\n}\n\n/** Big-endian u64 → 8 bytes. Accepts `number` or `bigint`. */\nexport function u64be(value: number | bigint): Uint8Array {\n const v = typeof value === \"bigint\" ? value : BigInt(value);\n if (v < 0n || v > 0xffffffffffffffffn) {\n throw new RangeError(`u64 out of range: ${v}`);\n }\n const out = new Uint8Array(8);\n new DataView(out.buffer).setBigUint64(0, v, false);\n return out;\n}\n\n/** Little-endian u64 → 8 bytes. Accepts `number` or `bigint`. */\nexport function u64le(value: number | bigint): Uint8Array {\n const v = typeof value === \"bigint\" ? value : BigInt(value);\n if (v < 0n || v > 0xffffffffffffffffn) {\n throw new RangeError(`u64 out of range: ${v}`);\n }\n const out = new Uint8Array(8);\n new DataView(out.buffer).setBigUint64(0, v, true);\n return out;\n}\n\n/** Big-endian 32-byte word ← bigint (0 ≤ v < 2^256). */\nexport function u256beFromBigInt(value: bigint): Uint8Array {\n if (value < 0n) throw new RangeError(\"u256 cannot be negative\");\n const out = new Uint8Array(32);\n let v = value;\n for (let i = 31; i >= 0 && v > 0n; i--) {\n out[i] = Number(v & 0xffn);\n v >>= 8n;\n }\n if (v > 0n) throw new RangeError(\"u256 overflow (>= 2^256)\");\n return out;\n}\n\n/** bigint ← big-endian byte word (any length). */\nexport function bigIntFromBytesBe(bytes: Uint8Array): bigint {\n let v = 0n;\n for (const b of bytes) v = (v << 8n) | BigInt(b);\n return v;\n}\n\n/** Throw unless `bytes.length === len`. Returns the input for chaining. */\nexport function ensureLength(bytes: Uint8Array, len: number, label: string): Uint8Array {\n if (bytes.length !== len) {\n throw new RangeError(`${label}: expected ${len} bytes, got ${bytes.length}`);\n }\n return bytes;\n}\n\n/** Coerce hex string or bytes to a fixed-length byte array. */\nexport function toFixedBytes(\n value: string | Uint8Array,\n len: number,\n label: string,\n): Uint8Array {\n const bytes = typeof value === \"string\" ? hexToBytes(value) : value;\n return ensureLength(bytes, len, label);\n}\n\nfunction assertUint(value: number, max: number, label: string): void {\n if (!Number.isInteger(value) || value < 0 || value > max) {\n throw new RangeError(`${label} out of range: ${value}`);\n }\n}\n\n/**\n * Standard base64 (padded, no line breaks). Isomorphic: `btoa` is available in\n * Node 20+ and every browser, so no `Buffer` is pulled into browser bundles.\n */\nexport function bytesToBase64(bytes: Uint8Array): string {\n let binary = \"\";\n // Chunked to keep a large payload off the argument stack.\n for (let i = 0; i < bytes.length; i += 0x8000) {\n binary += String.fromCharCode(...bytes.subarray(i, i + 0x8000));\n }\n return btoa(binary);\n}\n\n/** Accepts padded or unpadded standard base64. */\nexport function base64ToBytes(value: string): Uint8Array {\n const padded = value.length % 4 === 0 ? value : value + \"=\".repeat(4 - (value.length % 4));\n const binary = atob(padded);\n const out = new Uint8Array(binary.length);\n for (let i = 0; i < binary.length; i++) out[i] = binary.charCodeAt(i);\n return out;\n}\n","/**\n * API config canonicalization + source-id derivation. Must stay byte-identical with\n * gateway/node verification: `sourceId = keccak256(JSON.stringify(canonical apiConfig))`.\n */\nimport { keccak_256 } from \"@noble/hashes/sha3.js\";\nimport { canonicalizeAggregation } from \"./aggregation.js\";\nimport { bytesToHex, utf8 } from \"./encoding.js\";\nimport type { APIConfig } from \"./types.js\";\n\n/** Lexicographic UTF-16 code-unit order — locale-independent, matches gateway/node. */\nfunction compareCodeUnits(a: string, b: string): number {\n const len = Math.min(a.length, b.length);\n for (let i = 0; i < len; i++) {\n const diff = a.charCodeAt(i) - b.charCodeAt(i);\n if (diff !== 0) return diff;\n }\n return a.length - b.length;\n}\n\nfunction sortHeaders(headers: Record<string, string>): Record<string, string> {\n return Object.fromEntries(Object.entries(headers).sort(([a], [b]) => compareCodeUnits(a, b)));\n}\n\n/**\n * Gateway wire shape — defaults applied before hash / encryption.\n *\n * Keys are emitted in the fixed order `url`, `method`, `headers`, `responseParser`,\n * `valueTransform`, `aggregation`; `aggregation` is present only for tolerance mode and its\n * nested keys are rebuilt in canonical order (`canonicalizeAggregation`), so no extra or\n * reordered input key can reach the hash. A config without `aggregation` hashes exactly as\n * before.\n *\n * @throws {AggregationConfigError} if `aggregation` is invalid (including `mode: \"exact\"`).\n */\nexport function canonicalizeAPIConfig(apiConfig: APIConfig): APIConfig {\n const headers = apiConfig.headers ?? {};\n const aggregation = canonicalizeAggregation(apiConfig.aggregation);\n return {\n url: apiConfig.url,\n method: apiConfig.method ?? \"GET\",\n headers: Object.keys(headers).length === 0 ? headers : sortHeaders(headers),\n responseParser: apiConfig.responseParser,\n valueTransform: apiConfig.valueTransform ?? \"\",\n ...(aggregation ? { aggregation } : {}),\n };\n}\n\n/**\n * `sourceId = keccak256(JSON.stringify(canonical apiConfig))` — the 32-byte identity of a\n * data source. Hash the same config (including `{{secret.*}}` placeholders) you send to\n * `MolphaGateway.requestSignedData`; the gateway and every verifier recompute it from\n * `apiConfig`.\n */\nexport function deriveSourceId(apiConfig: APIConfig): Uint8Array {\n return keccak_256(utf8(JSON.stringify(canonicalizeAPIConfig(apiConfig))));\n}\n\n/** Hex-encoded {@link deriveSourceId} (64 lowercase hex chars, no `0x`). */\nexport function deriveSourceIdString(apiConfig: APIConfig): string {\n return bytesToHex(deriveSourceId(apiConfig));\n}\n","/**\n * Protocol-wide constants that must stay in sync with the vendored IDL. Kept as plain\n * literals so gateway-only / browser bundles never pull in `idl/molpha.json`.\n */\n\n/** Molpha program id (`idl/molpha.json` → `address`). Asserted equal in `test/gateway-auth.test.ts`. */\nexport const MOLPHA_PROGRAM_ID = \"chivcFQgxzwkpLvW41PV431HQ4dYpaW3povQH3AdpQt\";\n","/**\n * Signed `int256` helpers for tolerance-mode values.\n *\n * In tolerance mode the signed `value` is a two's-complement `bytes32` integer: the source's\n * decimal string scaled by `10^decimals`, rounded half to even, bounds-checked against\n * `int256`. Mirrors `new/tolerance` (`Encode` / `Decode` / `Format`) in molpha-node-client\n * byte for byte.\n */\nimport { bigIntFromBytesBe, hexToBytes, u256beFromBigInt } from \"./encoding.js\";\n\n/** `2^255 - 1`. */\nexport const INT256_MAX: bigint = (1n << 255n) - 1n;\n/** `-2^255`. */\nexport const INT256_MIN: bigint = -(1n << 255n);\n\nconst TWO_256 = 1n << 256n;\n/** Input digit cap, matching the node, before any big-integer allocation. */\nconst MAX_DECIMAL_DIGITS = 10_000;\n\nfunction assertDecimals(decimals: number): void {\n if (!Number.isInteger(decimals) || decimals < 0 || decimals > 255) {\n throw new RangeError(`decimals must be an integer in 0..255, got ${decimals}`);\n }\n}\n\nfunction toBytes32(value: Uint8Array | string, label: string): Uint8Array {\n const bytes = typeof value === \"string\" ? hexToBytes(value) : value;\n if (bytes.length !== 32) {\n throw new RangeError(`${label}: expected 32 bytes, got ${bytes.length}`);\n }\n return bytes;\n}\n\n/** Two's-complement `bytes32` (big-endian) of a signed integer in `[-2^255, 2^255)`. */\nexport function encodeInt256(value: bigint): Uint8Array {\n if (value > INT256_MAX || value < INT256_MIN) {\n throw new RangeError(\"int256 overflow\");\n }\n return u256beFromBigInt(value < 0n ? value + TWO_256 : value);\n}\n\n/** Signed integer of a two's-complement `bytes32` (bytes or hex, optional `0x`). */\nexport function decodeInt256(value: Uint8Array | string): bigint {\n const n = bigIntFromBytesBe(toBytes32(value, \"int256 value\"));\n return n >= 1n << 255n ? n - TWO_256 : n;\n}\n\n/**\n * Parse an ordinary decimal string (`[+-]digits[.digits]`, no exponent, no whitespace),\n * scale by `10^decimals`, round half to even, and return the `int256` two's-complement\n * `bytes32` the nodes sign for a tolerance-mode source.\n *\n * @throws {Error} `invalid decimal`, `decimal too long`, or `int256 overflow`.\n */\nexport function encodeInt256Decimal(decimal: string, decimals: number): Uint8Array {\n assertDecimals(decimals);\n if (typeof decimal !== \"string\" || decimal === \"\" || decimal.trim() !== decimal) {\n throw new Error(\"invalid decimal\");\n }\n let s = decimal;\n const negative = s.startsWith(\"-\");\n if (negative || s.startsWith(\"+\")) s = s.slice(1);\n\n const parts = s.split(\".\");\n if (parts.length > 2 || parts[0] === \"\" || (parts.length === 2 && parts[1] === \"\")) {\n throw new Error(\"invalid decimal\");\n }\n for (const part of parts) {\n if (!/^[0-9]*$/.test(part)) throw new Error(\"invalid decimal\");\n }\n const frac = parts.length === 2 ? parts[1]! : \"\";\n if (parts[0]!.length + frac.length > MAX_DECIMAL_DIGITS) {\n throw new Error(\"decimal too long\");\n }\n\n let scaled = BigInt(parts[0]! + frac);\n const shift = decimals - frac.length;\n if (shift >= 0) {\n scaled *= 10n ** BigInt(shift);\n } else {\n const divisor = 10n ** BigInt(-shift);\n let q = scaled / divisor;\n const r = scaled % divisor;\n const twice = r * 2n;\n if (twice > divisor || (twice === divisor && (q & 1n) === 1n)) q += 1n;\n scaled = q;\n }\n if (negative) scaled = -scaled;\n return encodeInt256(scaled);\n}\n\n/**\n * Render a signed integer — a two's-complement `bytes32` (bytes or hex), or an already\n * decoded `bigint` — at the source's scale: `decimals` fractional places with trailing zeros\n * trimmed (`-1.2`, `42`, `0.00000005`). Inverse of {@link encodeInt256Decimal} up to\n * rounding.\n */\nexport function formatInt256Decimal(value: Uint8Array | string | bigint, decimals: number): string {\n assertDecimals(decimals);\n const n = typeof value === \"bigint\" ? value : decodeInt256(value);\n if (n > INT256_MAX || n < INT256_MIN) throw new RangeError(\"int256 overflow\");\n if (decimals === 0) return n.toString();\n const negative = n < 0n;\n let digits = (negative ? -n : n).toString();\n while (digits.length <= decimals) digits = \"0\" + digits;\n const point = digits.length - decimals;\n let fracEnd = digits.length;\n while (fracEnd > point && digits[fracEnd - 1] === \"0\") fracEnd--;\n const fraction = digits.slice(point, fracEnd);\n const text = fraction === \"\" ? digits.slice(0, point) : `${digits.slice(0, point)}.${fraction}`;\n return negative ? `-${text}` : text;\n}\n","import { secp256k1 } from \"@noble/curves/secp256k1.js\";\nimport { bytesToHex, concatBytes, ensureLength, hexToBytes } from \"./encoding.js\";\n\nconst SECP256K1_COMPRESSED_PUBLIC_KEY_BYTES = 33;\nconst SECP256K1_UNCOMPRESSED_PUBLIC_KEY_BYTES = 65;\n\n/**\n * Parse a secp256k1 public key and return canonical compressed lower-case hex.\n * Accepts compressed or uncompressed SEC1 public keys with an optional `0x`.\n */\nexport function normalizeSecp256k1PublicKeyHex(\n publicKeyHex: string,\n label = \"secp256k1 public key\",\n): string {\n if (typeof publicKeyHex !== \"string\") {\n throw new Error(`${label}: expected hex string`);\n }\n\n let bytes: Uint8Array;\n try {\n bytes = hexToBytes(publicKeyHex);\n } catch {\n throw new Error(`${label}: invalid hex`);\n }\n\n if (\n bytes.length !== SECP256K1_COMPRESSED_PUBLIC_KEY_BYTES &&\n bytes.length !== SECP256K1_UNCOMPRESSED_PUBLIC_KEY_BYTES\n ) {\n throw new Error(\n `${label}: expected ${SECP256K1_COMPRESSED_PUBLIC_KEY_BYTES}-byte compressed or ${SECP256K1_UNCOMPRESSED_PUBLIC_KEY_BYTES}-byte uncompressed public key`,\n );\n }\n\n try {\n return bytesToHex(secp256k1.Point.fromBytes(bytes).toBytes(true));\n } catch {\n throw new Error(`${label}: invalid secp256k1 public key`);\n }\n}\n\n/** Reconstruct a compressed secp256k1 public key from 32-byte affine X/Y coordinates. */\nexport function secp256k1PublicKeyFromCoordinates(\n x: Uint8Array,\n y: Uint8Array,\n label = \"secp256k1 public key coordinates\",\n): string {\n ensureLength(x, 32, `${label}.x`);\n ensureLength(y, 32, `${label}.y`);\n return normalizeSecp256k1PublicKeyHex(\n bytesToHex(concatBytes(Uint8Array.of(0x04), x, y)),\n label,\n );\n}\n","/**\n * Node selection: deterministic, verifiable, without replacement.\n *\n * Canonical bitmap representation = 32-byte big-endian word (bit `i` lives in\n * byte `31 - (i >> 3)`, mask `1 << (i & 7)`), matching the wire / on-chain form.\n */\nimport { keccak_256 } from \"@noble/hashes/sha3.js\";\nimport { concatBytes, ensureLength, u32be, u64be, utf8 } from \"./encoding.js\";\n\nconst SELECTION_SEED_DOMAIN = keccak_256(utf8(\"MOLPHA_SELECTION_V1\"));\nconst SELECTION_DERIVE_DOMAIN = keccak_256(utf8(\"MOLPHA_SELECTION_DERIVE\"));\n\n/** Maximum hashing rounds before giving up (matches on-chain cap). */\nconst MAX_ROUNDS = 65_536;\n\nconst BITMAP_BYTES = 32;\nconst MAX_NODES = BITMAP_BYTES * 8; // 256\nconst U32_MAX = 0xffff_ffff;\n\n/**\n * `seed = keccak256(keccak256(\"MOLPHA_SELECTION_V1\") || sourceId || be32(rv) || be64(ts))`.\n */\nexport function deriveSelectionSeed(\n sourceId: Uint8Array,\n registryVersion: number,\n canonicalTimestamp: number | bigint,\n): Uint8Array {\n ensureLength(sourceId, 32, \"sourceId\");\n return keccak_256(\n concatBytes(\n SELECTION_SEED_DOMAIN,\n sourceId,\n u32be(registryVersion),\n u64be(canonicalTimestamp),\n ),\n );\n}\n\n/** `min(signaturesRequired + redundancyBuffer, nodeCount)`. */\nexport function effectiveSelectionSize(\n signaturesRequired: number,\n redundancyBuffer: number,\n nodeCount: number,\n): number {\n return Math.min(signaturesRequired + redundancyBuffer, nodeCount);\n}\n\n/** Is bit `bit` set in the 32-byte big-endian `bitmap`? */\nexport function bitmapBitSet(bitmap: Uint8Array, bit: number): boolean {\n if (bit < 0 || bit >= MAX_NODES) return false;\n const byte = bitmap[BITMAP_BYTES - 1 - (bit >> 3)] ?? 0;\n return (byte & (1 << (bit & 7))) !== 0;\n}\n\nfunction setBit(bitmap: Uint8Array, bit: number): void {\n const idx = BITMAP_BYTES - 1 - (bit >> 3);\n bitmap[idx] = (bitmap[idx] ?? 0) | (1 << (bit & 7));\n}\n\n/** Indices of set bits in `[0, nodeCount)`, ascending. */\nexport function selectedIndices(bitmap: Uint8Array, nodeCount: number): number[] {\n const out: number[] = [];\n for (let i = 0; i < nodeCount; i++) {\n if (bitmapBitSet(bitmap, i)) out.push(i);\n }\n return out;\n}\n\n/**\n * Rejection-sample `groupSize` distinct indices out of `nodeCount` from `seed`,\n * returning a 32-byte big-endian bitmap. Uses the complement optimization when\n * `groupSize > nodeCount / 2` (sample the smaller set, then invert).\n */\nexport function deriveGroupBitmap(\n seed: Uint8Array,\n nodeCount: number,\n groupSize: number,\n): Uint8Array {\n if (!Number.isInteger(nodeCount) || nodeCount <= 0 || nodeCount > MAX_NODES) {\n throw new RangeError(`GroupBitmapDerivationFailed: invalid nodeCount ${nodeCount}`);\n }\n if (!Number.isInteger(groupSize) || groupSize < 0 || groupSize > nodeCount) {\n throw new RangeError(`GroupBitmapDerivationFailed: invalid groupSize ${groupSize}`);\n }\n const bitmap = new Uint8Array(BITMAP_BYTES);\n if (groupSize === 0) return bitmap;\n if (groupSize === nodeCount) {\n for (let i = 0; i < nodeCount; i++) setBit(bitmap, i);\n return bitmap;\n }\n\n // Complement optimization: sample the smaller half, invert at the end.\n const complement = groupSize > nodeCount - groupSize;\n const sampleCount = complement ? nodeCount - groupSize : groupSize;\n const limit = Math.floor(U32_MAX / nodeCount) * nodeCount;\n\n const chosen = new Set<number>();\n let round = 0;\n while (chosen.size < sampleCount && round < MAX_ROUNDS) {\n const counterWord = new Uint8Array(32);\n counterWord.set(u64be(round), 24);\n const block = keccak_256(concatBytes(seed, SELECTION_DERIVE_DOMAIN, counterWord));\n for (let off = 0; off + 4 <= block.length && chosen.size < sampleCount; off += 4) {\n const limb =\n ((block[off]! << 24) |\n (block[off + 1]! << 16) |\n (block[off + 2]! << 8) |\n block[off + 3]!) >>>\n 0;\n if (limb < limit) {\n const idx = limb % nodeCount;\n chosen.add(idx);\n }\n }\n round++;\n }\n if (chosen.size < sampleCount) {\n throw new Error(\"GroupBitmapDerivationFailed: round cap reached\");\n }\n\n if (complement) {\n for (let i = 0; i < nodeCount; i++) {\n if (!chosen.has(i)) setBit(bitmap, i);\n }\n } else {\n for (const i of chosen) setBit(bitmap, i);\n }\n return bitmap;\n}\n\n/**\n * Convenience orchestrator: derive the selection bitmap end-to-end.\n * `redundancy` defaults to 0; `ts` defaults to the current unix second.\n */\nexport function deriveSelectionBitmap(\n sourceId: Uint8Array,\n registryVersion: number,\n nodeCount: number,\n signaturesRequired: number,\n redundancy = 0,\n ts: number | bigint = Math.floor(Date.now() / 1000),\n): Uint8Array {\n const seed = deriveSelectionSeed(sourceId, registryVersion, ts);\n const size = effectiveSelectionSize(signaturesRequired, redundancy, nodeCount);\n return deriveGroupBitmap(seed, nodeCount, size);\n}\n","/**\n * Gateway request authentication (`RequestAuth`, program `state/receipt.rs`).\n *\n * hash = keccak256(\"MOLPHA_REQAUTH_V1\" || borsh(RequestAuth))\n * RequestAuth { program_id: Pubkey, gateway: Pubkey, source_id: [u8; 32],\n * signatures_required: u8, timestamp: u64 }\n *\n * i.e. `domain || programId(32) || gatewayPda(32) || sourceId(32) || u8 || u64le`.\n * The consumer authority / delegate ed25519-signs the 32-byte hash. Binding the program id\n * and the Gateway PDA means a signature is only redeemable by the gateway the consumer\n * chose, on the deployment they meant to pay — never a bearer token.\n */\nimport { keccak_256 } from \"@noble/hashes/sha3.js\";\nimport { concatBytes, ensureLength, toFixedBytes, utf8, u64le } from \"../core/encoding.js\";\n\nexport type { Signer } from \"../core/types.js\";\n\nexport const REQUEST_AUTH_DOMAIN: Uint8Array = utf8(\"MOLPHA_REQAUTH_V1\");\n\nexport interface RequestAuthFields {\n /** Program id, 32 bytes (see `addressToBytes` for base58). */\n programId: Uint8Array;\n /** Gateway PDA `[\"molpha_gateway\", gatewayAuthority]`, 32 bytes (see `deriveGatewayPda`). */\n gateway: Uint8Array;\n /** 32-byte source id, hex or bytes. */\n sourceId: Uint8Array | string;\n /** u8 — the per-request quorum. */\n signaturesRequired: number;\n /** u64 unix seconds. */\n timestamp: number | bigint;\n}\n\n/** Borsh encoding of `RequestAuth` — the hash body, without the domain. */\nexport function encodeRequestAuth(fields: RequestAuthFields): Uint8Array {\n if (\n !Number.isInteger(fields.signaturesRequired) ||\n fields.signaturesRequired < 1 ||\n fields.signaturesRequired > 255\n ) {\n throw new RangeError(`signaturesRequired out of u8 range: ${fields.signaturesRequired}`);\n }\n return concatBytes(\n ensureLength(fields.programId, 32, \"programId\"),\n ensureLength(fields.gateway, 32, \"gateway\"),\n toFixedBytes(fields.sourceId, 32, \"sourceId\"),\n Uint8Array.of(fields.signaturesRequired),\n u64le(fields.timestamp),\n );\n}\n\n/** `keccak256(REQUEST_AUTH_DOMAIN || encodeRequestAuth(fields))` — the message the consumer signs. */\nexport function hashRequestAuth(fields: RequestAuthFields): Uint8Array {\n return keccak_256(concatBytes(REQUEST_AUTH_DOMAIN, encodeRequestAuth(fields)));\n}\n","/**\n * API-config secret resolution + ECDH config encryption for selected nodes.\n */\nimport { gcm } from \"@noble/ciphers/aes.js\";\nimport { secp256k1 } from \"@noble/curves/secp256k1.js\";\nimport { keccak_256 } from \"@noble/hashes/sha3.js\";\nimport { randomBytes } from \"@noble/hashes/utils.js\";\nimport { canonicalizeAPIConfig } from \"../core/apiconfig.js\";\nimport { bytesToHex, concatBytes, hexToBytes, utf8 } from \"../core/encoding.js\";\nimport { normalizeSecp256k1PublicKeyHex } from \"../core/nodeKeys.js\";\nimport type { APIConfig, EncKeyBundle, Node } from \"../core/types.js\";\n\nconst NONCE_BYTES = 12; // AES-GCM nonce\nconst SYM_KEY_BYTES = 32;\n\nconst SECRET_PLACEHOLDER = /\\{\\{\\s*secret\\.([A-Za-z0-9_]+)\\s*\\}\\}/g;\n\ninterface EncryptionRecipient {\n index: number;\n signingKey: string;\n}\n\n/**\n * Replace `{{secret.NAME}}` placeholders in the string fields of an API config.\n * Throws if a referenced secret is missing.\n */\nexport function resolveAPIConfig(\n apiConfig: APIConfig,\n secrets: Record<string, string>,\n): APIConfig {\n const sub = (s: string): string =>\n s.replace(SECRET_PLACEHOLDER, (_m, name: string) => {\n if (!(name in secrets)) throw new Error(`Missing secret: ${name}`);\n return secrets[name]!;\n });\n\n const headers = apiConfig.headers\n ? Object.fromEntries(Object.entries(apiConfig.headers).map(([k, v]) => [k, sub(v)]))\n : undefined;\n\n return {\n ...apiConfig,\n url: sub(apiConfig.url),\n ...(headers ? { headers } : {}),\n responseParser: sub(apiConfig.responseParser),\n ...(apiConfig.valueTransform ? { valueTransform: sub(apiConfig.valueTransform) } : {}),\n };\n}\n\n/**\n * Encrypt a resolved API config with a fresh symmetric key, then ECDH-wrap that\n * key for each selected node. The gateway only ever sees placeholders.\n */\nexport function encryptForNodes(\n apiConfig: APIConfig,\n secrets: Record<string, string>,\n selectedNodes: Node[],\n): EncKeyBundle {\n const recipients = validateEncryptionRecipients(selectedNodes);\n\n const resolved = resolveAPIConfig(apiConfig, secrets);\n const plaintext = utf8(JSON.stringify(canonicalizeAPIConfig(resolved)));\n\n const symKey = randomBytes(SYM_KEY_BYTES);\n const nonceSym = randomBytes(NONCE_BYTES);\n const ciphertext = gcm(symKey, nonceSym).encrypt(plaintext);\n\n const ephemeralPriv = secp256k1.utils.randomSecretKey();\n const ephemeralPub = secp256k1.getPublicKey(ephemeralPriv, true); // compressed\n\n const envelopes: Record<string, string> = {};\n for (const node of recipients) {\n const envelopeIndex = String(node.index);\n const nodePub = hexToBytes(node.signingKey);\n const shared = secp256k1.getSharedSecret(ephemeralPriv, nodePub);\n const wrapKey = keccak_256(shared);\n const nonceEnv = randomBytes(NONCE_BYTES);\n const wrappedSymKey = gcm(wrapKey, nonceEnv).encrypt(symKey);\n envelopes[envelopeIndex] = bytesToHex(concatBytes(nonceEnv, wrappedSymKey));\n }\n\n return {\n ephemeralPub: bytesToHex(ephemeralPub),\n nonceSym: bytesToHex(nonceSym),\n ciphertext: bytesToHex(ciphertext),\n envelopes,\n };\n}\n\nfunction validateEncryptionRecipients(selectedNodes: Node[]): EncryptionRecipient[] {\n if (selectedNodes.length === 0) throw new Error(\"No nodes to encrypt for\");\n\n const envelopeIndexes = new Set<string>();\n const envelopeKeys = new Set<string>();\n return selectedNodes.map((node) => {\n if (!Number.isInteger(node.index) || node.index < 0) {\n throw new Error(`Selected node index must be a non-negative integer: ${node.index}`);\n }\n const envelopeIndex = String(node.index);\n if (envelopeIndexes.has(envelopeIndex)) {\n throw new Error(`Duplicate selected node index: ${node.index}`);\n }\n envelopeIndexes.add(envelopeIndex);\n\n const signingKey = normalizeSecp256k1PublicKeyHex(\n node.signingKey,\n `Selected node ${node.index} signingKey`,\n );\n if (envelopeKeys.has(signingKey)) {\n throw new Error(`Duplicate selected node signingKey: ${node.index}`);\n }\n envelopeKeys.add(signingKey);\n return { index: node.index, signingKey };\n });\n}\n","/**\n * EIP-712 typed-data hashing and EIP-3009 `TransferWithAuthorization` digests.\n *\n * Used to sign payments to an API source that is itself x402-paywalled: the\n * caller authorizes a transfer from their own wallet, so the token contract is\n * the EIP-712 verifying contract. Signature-critical bytes — must stay\n * byte-identical with the token contract and the source's facilitator.\n */\nimport { keccak_256 } from \"@noble/hashes/sha3.js\";\nimport { secp256k1 } from \"@noble/curves/secp256k1.js\";\nimport { bytesToHex, bytesToHex0x, concatBytes, hexToBytes, utf8 } from \"../core/encoding.js\";\nimport type { EvmSigner } from \"../core/types.js\";\n\n/** EIP-712 domain of the token contract that will settle the authorization. */\nexport interface Eip712Domain {\n name: string;\n version: string;\n chainId: number;\n /** Token contract address, 0x-prefixed. */\n verifyingContract: string;\n}\n\n/** EIP-3009 transfer authorization. Amounts are decimal strings of base units. */\nexport interface TransferAuthorization {\n from: string;\n to: string;\n value: string;\n validAfter: string;\n validBefore: string;\n /** 0x-prefixed 32-byte nonce. */\n nonce: string;\n}\n\nconst typeHash = (signature: string): Uint8Array => keccak_256(utf8(signature));\n\nexport const EIP712_DOMAIN_TYPEHASH = typeHash(\n \"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\",\n);\n\nexport const TRANSFER_WITH_AUTHORIZATION_TYPEHASH = typeHash(\n \"TransferWithAuthorization(address from,address to,uint256 value,uint256 validAfter,uint256 validBefore,bytes32 nonce)\",\n);\n\n/** ABI-encode one 32-byte word from raw bytes, right-aligned. */\nfunction word(bytes: Uint8Array): Uint8Array {\n if (bytes.length > 32) throw new RangeError(\"ABI word overflow\");\n const out = new Uint8Array(32);\n out.set(bytes, 32 - bytes.length);\n return out;\n}\n\nfunction addressWord(address: string): Uint8Array {\n const bytes = hexToBytes(address);\n if (bytes.length !== 20) throw new RangeError(`Not a 20-byte address: ${address}`);\n return word(bytes);\n}\n\nfunction uintWord(value: string | bigint): Uint8Array {\n const n = typeof value === \"bigint\" ? value : BigInt(value);\n if (n < 0n) throw new RangeError(`Not an unsigned integer: ${value}`);\n const hex = n.toString(16);\n return word(hexToBytes(hex.length % 2 === 0 ? hex : \"0\" + hex));\n}\n\nfunction bytes32Word(value: string): Uint8Array {\n const bytes = hexToBytes(value);\n if (bytes.length !== 32) throw new RangeError(`Not a 32-byte value: ${value}`);\n return bytes;\n}\n\nexport function domainSeparator(domain: Eip712Domain): Uint8Array {\n return keccak_256(\n concatBytes(\n EIP712_DOMAIN_TYPEHASH,\n keccak_256(utf8(domain.name)),\n keccak_256(utf8(domain.version)),\n uintWord(BigInt(domain.chainId)),\n addressWord(domain.verifyingContract),\n ),\n );\n}\n\nexport function transferWithAuthorizationHash(auth: TransferAuthorization): Uint8Array {\n return keccak_256(\n concatBytes(\n TRANSFER_WITH_AUTHORIZATION_TYPEHASH,\n addressWord(auth.from),\n addressWord(auth.to),\n uintWord(auth.value),\n uintWord(auth.validAfter),\n uintWord(auth.validBefore),\n bytes32Word(auth.nonce),\n ),\n );\n}\n\n/** The 32-byte digest a wallet signs: `keccak256(0x1901 || domain || struct)`. */\nexport function transferWithAuthorizationDigest(\n domain: Eip712Domain,\n auth: TransferAuthorization,\n): Uint8Array {\n return keccak_256(\n concatBytes(\n Uint8Array.from([0x19, 0x01]),\n domainSeparator(domain),\n transferWithAuthorizationHash(auth),\n ),\n );\n}\n\n/** EIP-55 checksum form. Some facilitators reject non-checksummed addresses. */\nexport function toChecksumAddress(address: string): string {\n const lower = bytesToHex(hexToBytes(address));\n if (lower.length !== 40) throw new RangeError(`Not a 20-byte address: ${address}`);\n const digest = bytesToHex(keccak_256(utf8(lower)));\n let out = \"0x\";\n for (let i = 0; i < lower.length; i++) {\n out += parseInt(digest[i]!, 16) >= 8 ? lower[i]!.toUpperCase() : lower[i]!;\n }\n return out;\n}\n\n/** The EIP-55 address of a raw secp256k1 private key. */\nexport function evmAddressFromPrivateKey(privateKey: string | Uint8Array): string {\n const key = typeof privateKey === \"string\" ? hexToBytes(privateKey) : privateKey;\n if (key.length !== 32) throw new RangeError(\"EVM private key must be 32 bytes\");\n const uncompressed = secp256k1.getPublicKey(key, false);\n // Drop the 0x04 tag, keccak the 64-byte point, keep the low 20 bytes.\n return toChecksumAddress(bytesToHex0x(keccak_256(uncompressed.subarray(1)).subarray(12)));\n}\n\n/**\n * Build an {@link EvmSigner} from a raw secp256k1 private key. The key stays in\n * the caller's process: neither Molpha nor the gateway ever sees one.\n */\nexport function createEvmSignerFromPrivateKey(privateKey: string | Uint8Array): EvmSigner {\n const key = typeof privateKey === \"string\" ? hexToBytes(privateKey) : privateKey;\n const address = evmAddressFromPrivateKey(key);\n\n return {\n address,\n async signDigest(digest: Uint8Array): Promise<Uint8Array> {\n if (digest.length !== 32) throw new RangeError(\"Digest must be 32 bytes\");\n // Noble returns [recovery || r || s]; Ethereum wants r || s || v.\n const signed = secp256k1.sign(digest, key, { prehash: false, format: \"recovered\" });\n const out = new Uint8Array(65);\n out.set(signed.subarray(1), 0);\n out[64] = 27 + signed[0]!;\n return out;\n },\n };\n}\n","/**\n * Paying an API source that is itself x402-paywalled.\n *\n * The caller pays the source directly, from their own wallet on the source's\n * network. Molpha never holds, signs for, or converts those funds, and the\n * Molpha side of the round is unchanged: a paid source still costs exactly one\n * round of subscription quota, and source payment never enters `sourceId`.\n */\nimport { randomBytes } from \"@noble/hashes/utils.js\";\nimport { base64ToBytes, bytesToBase64, bytesToHex0x, utf8 } from \"../core/encoding.js\";\nimport { effectiveSelectionSize } from \"../core/selection.js\";\nimport type {\n APIConfig,\n AssetDomain,\n EvmSigner,\n UpstreamQuote,\n UpstreamTerms,\n} from \"../core/types.js\";\nimport { transferWithAuthorizationDigest, toChecksumAddress } from \"../evm/eip712.js\";\nimport { resolveAPIConfig } from \"./encryption.js\";\n\n/**\n * Payment networks whose authorizations this SDK can sign. Beta is Base USDC;\n * the asset is pinned because the caller signs a transfer from their own wallet\n * and the token contract is the EIP-712 verifying contract.\n */\nconst NETWORKS: Record<string, { chainId: number; usdc: string }> = {\n \"eip155:8453\": { chainId: 8453, usdc: \"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913\" },\n \"eip155:84532\": { chainId: 84532, usdc: \"0x036CbD53842c5426634e7929541eC2318f3dCF7e\" },\n // x402 v1 network names.\n base: { chainId: 8453, usdc: \"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913\" },\n \"base-sepolia\": { chainId: 84532, usdc: \"0x036CbD53842c5426634e7929541eC2318f3dCF7e\" },\n};\n\n/** Raised when a round needs source payment the caller cannot or did not make. */\nexport class UpstreamPaymentRequiredError extends Error {\n constructor(\n readonly quote: UpstreamQuote,\n message?: string,\n ) {\n super(\n message ??\n `API source requires payment for up to ${quote.eligibleSetSize} fetches: ${quote.resource}`,\n );\n this.name = \"UpstreamPaymentRequiredError\";\n }\n}\n\n/**\n * Number of source fetches this round may perform, and so authorizations to\n * sign: `min(signaturesRequired + redundancyBuffer, nodeCount)`. Identical to\n * the round's selection size — the eligible set *is* the set that fetches.\n */\nexport function eligibleSetSize(\n signaturesRequired: number,\n registry: { nodeCount: number; redundancyBuffer: number },\n): number {\n return effectiveSelectionSize(\n signaturesRequired,\n registry.redundancyBuffer,\n registry.nodeCount,\n );\n}\n\n/** Reads a gateway 402 body and returns the relayed upstream quote, if any. */\nexport function parseUpstreamQuote(envelope: unknown): UpstreamQuote | null {\n if (!envelope || typeof envelope !== \"object\") return null;\n const extensions = (envelope as { extensions?: unknown }).extensions;\n if (!extensions || typeof extensions !== \"object\") return null;\n const quote = (extensions as { upstream?: unknown }).upstream;\n if (!quote || typeof quote !== \"object\") return null;\n return typeof (quote as UpstreamQuote).eligibleSetSize === \"number\"\n ? (quote as UpstreamQuote)\n : null;\n}\n\n/** One `accepts` entry of a source's 402 envelope. */\ninterface Offer {\n scheme?: string;\n network?: string;\n asset?: string;\n payTo?: string;\n amount?: string | number;\n maxAmountRequired?: string | number;\n maxTimeoutSeconds?: string | number;\n extra?: { name?: string; version?: string };\n}\n\n/** Picks the one offer this SDK can sign, and validates it before any signing. */\nfunction selectTerms(\n envelope: Record<string, unknown>,\n resource: string,\n assetDomain?: AssetDomain,\n): UpstreamTerms {\n const version = envelope.x402Version === 1 ? 1 : 2;\n const offers: Offer[] = Array.isArray(envelope.accepts) ? envelope.accepts : [];\n if (offers.length === 0) {\n throw new Error(`Source 402 for ${resource} advertised no payment terms`);\n }\n\n const supported = offers.find(\n (o) => o.scheme === \"exact\" && NETWORKS[String(o.network)] !== undefined,\n );\n if (!supported) {\n const seen = offers.map((o) => `${o.scheme}/${o.network}`).join(\", \");\n throw new Error(\n `Source ${resource} requires an unsupported payment scheme or network (${seen}); this SDK signs exact payments on Base USDC only`,\n );\n }\n\n const network = NETWORKS[String(supported.network)]!;\n const asset = String(supported.asset ?? \"\");\n if (asset.toLowerCase() !== network.usdc.toLowerCase()) {\n throw new Error(\n `Source ${resource} asks to be paid in ${asset} on ${supported.network}; this SDK signs USDC (${network.usdc}) only`,\n );\n }\n\n const domain =\n assetDomain ??\n (supported.extra?.name && supported.extra?.version\n ? { name: String(supported.extra.name), version: String(supported.extra.version) }\n : undefined);\n if (!domain) {\n throw new Error(\n `Source ${resource} omitted extra.name/extra.version for ${asset}; supply sourcePayment.assetDomain to sign against it`,\n );\n }\n\n const amount = String(supported.amount ?? supported.maxAmountRequired ?? \"\");\n if (!/^\\d+$/.test(amount)) {\n throw new Error(`Source ${resource} quoted a non-integer price: ${amount}`);\n }\n const payTo = String(supported.payTo ?? \"\");\n if (!payTo) throw new Error(`Source ${resource} omitted payTo`);\n\n return {\n x402Version: version,\n // Echoed verbatim in the signed payload, so it must stay the source's own object.\n requirements: supported as Record<string, unknown>,\n network: String(supported.network),\n chainId: network.chainId,\n asset,\n payTo,\n amount,\n maxTimeoutSeconds: Number(supported.maxTimeoutSeconds ?? 60),\n domain,\n resource,\n };\n}\n\n/** Decodes an x402 envelope from the `PAYMENT-REQUIRED` header, or the body. */\nfunction decodeEnvelope(headerValue: string | null, body: string): Record<string, unknown> {\n if (headerValue) {\n try {\n return JSON.parse(\n new TextDecoder().decode(base64ToBytes(headerValue)),\n ) as Record<string, unknown>;\n } catch {\n // Fall through to the body, which carries the same object.\n }\n }\n return JSON.parse(body) as Record<string, unknown>;\n}\n\n/**\n * Validates caller-supplied terms with the same allowlist and structural checks\n * as {@link probeSource}. Returns canonical {@link UpstreamTerms} derived from\n * `terms.requirements`, not the caller's top-level fields.\n */\nexport function validateSuppliedTerms(\n terms: UpstreamTerms,\n resource: string,\n assetDomain?: AssetDomain,\n): UpstreamTerms {\n return selectTerms(\n {\n x402Version: terms.x402Version,\n accepts: [terms.requirements as Offer],\n },\n resource,\n assetDomain,\n );\n}\n\n/**\n * Fetch the source unpaid to read its own x402 terms. This is a price fetch,\n * not a data fetch: nodes remain the only fetchers of the value itself.\n * Returns `null` when the source is not paywalled.\n */\nexport async function probeSource(\n apiConfig: APIConfig,\n options: { secrets?: Record<string, string>; assetDomain?: AssetDomain; timeoutMs?: number } = {},\n): Promise<UpstreamTerms | null> {\n const resolved = options.secrets ? resolveAPIConfig(apiConfig, options.secrets) : apiConfig;\n\n const init: RequestInit = {\n method: resolved.method ?? \"GET\",\n headers: resolved.headers ?? {},\n };\n let res: Response;\n if (options.timeoutMs === undefined) {\n res = await fetch(resolved.url, init);\n } else {\n const controller = new AbortController();\n const timer = setTimeout(() => controller.abort(), options.timeoutMs);\n try {\n res = await fetch(resolved.url, { ...init, signal: controller.signal });\n } finally {\n clearTimeout(timer);\n }\n }\n if (res.status !== 402) return null;\n\n // Probe against the placeholder URL so the terms describe the declared source.\n return selectTerms(\n decodeEnvelope(res.headers.get(\"PAYMENT-REQUIRED\"), await res.text()),\n apiConfig.url,\n options.assetDomain,\n );\n}\n\n/**\n * Sign one x402 payment authorization per eligible node.\n *\n * Sign the whole eligible set. Only authorizations a node actually spends ever\n * settle, so unused ones cost nothing, while signing fewer starves buffer nodes\n * and raises the round's failure probability. Every authorization carries a\n * unique nonce, which is what prevents one from settling twice.\n */\nexport async function signSourcePayments(\n terms: UpstreamTerms,\n signer: EvmSigner,\n count: number,\n): Promise<string[]> {\n if (!Number.isInteger(count) || count < 1) {\n throw new RangeError(`Cannot sign ${count} source payments`);\n }\n\n const now = Math.floor(Date.now() / 1000);\n const validAfter = String(now - 600);\n const validBefore = String(now + Math.max(terms.maxTimeoutSeconds, 60));\n\n const payments: string[] = [];\n for (let i = 0; i < count; i++) {\n const authorization = {\n from: toChecksumAddress(signer.address),\n to: toChecksumAddress(terms.payTo),\n value: terms.amount,\n validAfter,\n validBefore,\n nonce: bytesToHex0x(randomBytes(32)),\n };\n const digest = transferWithAuthorizationDigest(\n {\n name: terms.domain.name,\n version: terms.domain.version,\n chainId: terms.chainId,\n verifyingContract: terms.asset,\n },\n authorization,\n );\n const signature = bytesToHex0x(await signer.signDigest(digest));\n\n const payload =\n terms.x402Version === 1\n ? {\n x402Version: 1,\n scheme: \"exact\",\n network: terms.network,\n payload: { signature, authorization },\n }\n : {\n x402Version: 2,\n accepted: terms.requirements,\n payload: { signature, authorization },\n };\n payments.push(bytesToBase64(utf8(JSON.stringify(payload))));\n }\n return payments;\n}\n","/**\n * Gateway on-chain identity. The request-auth hash binds the Gateway PDA\n * (`[\"molpha_gateway\", gatewayAuthority]`), so the client must know which gateway it is\n * talking to. Kit-only — no `@anchor-lang/core` / web3.js on the gateway path.\n */\nimport {\n address,\n getAddressEncoder,\n getProgramDerivedAddress,\n type Address,\n} from \"@solana/kit\";\nimport { utf8 } from \"../core/encoding.js\";\n\nconst SEED_GATEWAY = utf8(\"molpha_gateway\");\nconst addressEncoder = getAddressEncoder();\n\n/** One gateway endpoint plus, optionally, the authority key its `Gateway` PDA derives from. */\nexport interface GatewayEndpoint {\n /** Base URL, e.g. `https://gateway.example.com` (trailing slash ignored). */\n url: string;\n /**\n * Base58 Solana pubkey of the gateway's signing authority. When omitted the client\n * fetches it once from `GET {url}/v1/info` (`data.gatewayAuthority`) the first time an\n * authenticated request targets this endpoint.\n */\n gatewayAuthority?: string;\n}\n\nexport type GatewayEndpointInput = string | GatewayEndpoint;\n\n/** Payload of `GET /v1/info` (inside the usual `{ status, data }` envelope). */\nexport interface GatewayInfo {\n gatewayAuthority: string;\n /** Program id the gateway settles against; must match the client's when present. */\n programId?: string;\n}\n\nexport function normalizeEndpoint(input: GatewayEndpointInput): GatewayEndpoint {\n const endpoint: GatewayEndpoint = typeof input === \"string\" ? { url: input } : { ...input };\n endpoint.url = endpoint.url.replace(/\\/$/, \"\");\n if (!endpoint.url) throw new Error(\"Gateway endpoint url must not be empty\");\n return endpoint;\n}\n\n/** 32-byte form of a base58 address. */\nexport function addressToBytes(value: string): Uint8Array {\n return Uint8Array.from(addressEncoder.encode(address(value)));\n}\n\n/** `[\"molpha_gateway\", gatewayAuthority]` under `programId`, as a base58 address. */\nexport async function deriveGatewayPdaAddress(\n gatewayAuthority: string,\n programId: string,\n): Promise<Address> {\n const [pda] = await getProgramDerivedAddress({\n programAddress: address(programId),\n seeds: [SEED_GATEWAY, addressToBytes(gatewayAuthority)],\n });\n return pda;\n}\n\n/** 32-byte Gateway PDA — the `gateway` field of `RequestAuth`. */\nexport async function deriveGatewayPda(\n gatewayAuthority: string,\n programId: string,\n): Promise<Uint8Array> {\n return addressToBytes(await deriveGatewayPdaAddress(gatewayAuthority, programId));\n}\n\n/** Validate an unwrapped `/v1/info` payload. */\nexport function parseGatewayInfo(data: unknown): GatewayInfo {\n if (!data || typeof data !== \"object\") {\n throw new Error(\"GET /v1/info returned malformed payload\");\n }\n const record = data as Record<string, unknown>;\n const gatewayAuthority = record.gatewayAuthority;\n if (typeof gatewayAuthority !== \"string\" || !gatewayAuthority) {\n throw new Error(\"GET /v1/info payload is missing gatewayAuthority\");\n }\n const programId = record.programId;\n if (programId !== undefined && typeof programId !== \"string\") {\n throw new Error(\"GET /v1/info programId must be a base58 string\");\n }\n return programId === undefined ? { gatewayAuthority } : { gatewayAuthority, programId };\n}\n","/**\n * `MolphaGateway` — isomorphic HTTP client with multi-endpoint failover.\n */\nimport { assertAggregationQuorum, canonicalizeAggregation } from \"../core/aggregation.js\";\nimport { canonicalizeAPIConfig, deriveSourceId } from \"../core/apiconfig.js\";\nimport { MOLPHA_PROGRAM_ID } from \"../core/constants.js\";\nimport { bytesToHex, bytesToHex0x } from \"../core/encoding.js\";\nimport { formatInt256Decimal } from \"../core/int256.js\";\nimport { normalizeSecp256k1PublicKeyHex } from \"../core/nodeKeys.js\";\nimport {\n deriveGroupBitmap,\n deriveSelectionSeed,\n effectiveSelectionSize,\n selectedIndices,\n} from \"../core/selection.js\";\nimport type {\n AggregationConfig,\n APIConfig,\n Attestation,\n Node,\n NodeKeyVerifier,\n NodesInfo,\n RegistrySelectionConfig,\n Signer,\n SourcePaymentOptions,\n UpstreamTerms,\n} from \"../core/types.js\";\nimport { hashRequestAuth } from \"./auth.js\";\nimport { encryptForNodes } from \"./encryption.js\";\nimport {\n UpstreamPaymentRequiredError,\n parseUpstreamQuote,\n probeSource,\n signSourcePayments,\n validateSuppliedTerms,\n} from \"./x402.js\";\nimport {\n addressToBytes,\n deriveGatewayPda,\n normalizeEndpoint,\n parseGatewayInfo,\n type GatewayEndpoint,\n type GatewayEndpointInput,\n type GatewayInfo,\n} from \"./identity.js\";\n\nexport type { RegistrySelectionConfig } from \"../core/types.js\";\nexport * from \"./auth.js\";\nexport * from \"./identity.js\";\nexport * from \"./x402.js\";\n\nexport interface RequestSignedDataOptions {\n /**\n * The API definition to resolve. Its canonical form determines the round's\n * `sourceId = keccak256(JSON.stringify(canonicalizeAPIConfig(apiConfig)))`, so pass the\n * same config (including `{{secret.*}}` placeholders) every time.\n */\n apiConfig: APIConfig;\n /**\n * Requested quorum (u8, ≥ the protocol `min_signers`). Median tolerance mode\n * (`apiConfig.aggregation`) additionally requires `>= 3`; lower values are rejected\n * before any request is made.\n */\n signaturesRequired: number;\n /**\n * Solana pubkey (base58) of the subscription owner.\n * Overrides the gateway's `defaultSubscriptionOwner` when set.\n */\n subscriptionOwner?: string;\n /**\n * Solana pubkey (base58) of the consumer authority that signs gateway auth.\n * Overrides the gateway's `defaultConsumerAuthority` when set.\n */\n consumerAuthority?: string;\n /**\n * Signs `hashRequestAuth({ programId, gateway, sourceId, signaturesRequired, timestamp })`.\n * The hash binds the gateway's on-chain account, so it is computed — and the signer\n * invoked — once per endpoint actually tried. Overrides the gateway's `defaultSigner`\n * when set. When both are omitted, sends an all-zero authSig (dev only).\n */\n signer?: Signer;\n encrypt?: { secrets: Record<string, string> };\n /**\n * Pays an API source that is itself x402-paywalled. The SDK reads the source's\n * own 402, signs one authorization per node in the round's eligible set, and\n * sends them with the round as `sourcePayments`.\n *\n * Payment goes to the source, never to Molpha: the round still costs exactly\n * one round of subscription quota. Only authorizations a node actually spends\n * ever settle, so the redundancy buffer costs nothing when it goes unused.\n * Without this, a paywalled source throws {@link UpstreamPaymentRequiredError}.\n */\n sourcePayment?: SourcePaymentOptions;\n /** Max accepted value age in seconds. Default 60. */\n maxAge?: number;\n /** Each retry re-rolls the timestamp. Default 15. */\n maxRetries?: number;\n /** Per-request timeout in ms. Default 5000. */\n timeoutMs?: number;\n /**\n * Pre-fetched round inputs. Any field present here skips its network/on-chain\n * fetch, so a fully-populated context turns `requestSignedData` into a single\n * POST round (the \"short\" flow). Build a reusable one with\n * {@link MolphaGateway.prepareContext}.\n *\n * Caching is opt-in because these inputs can drift: a stale `registryVersion`,\n * `redundancyBuffer`, `nodeCount`, or `nodes` set produces a result the chain will\n * reject. Refresh the context when the on-chain registry version changes.\n */\n context?: Partial<RoundContext>;\n /**\n * Authenticates selected gateway node encryption keys before private API\n * secrets are encrypted. Overrides the gateway-level verifier when set.\n */\n verifyNodeKeys?: NodeKeyVerifier;\n /**\n * Unsafe development escape hatch for standalone gateway usage. When true,\n * encrypted private API requests may use gateway-provided node keys without\n * authentication. Defaults to false.\n */\n allowUnverifiedNodeKeysForPrivateApi?: boolean;\n}\n\nexport interface MolphaGatewayOptions {\n /** Solana pubkey (base58) of the subscription owner used when a request omits it. */\n defaultSubscriptionOwner?: string;\n /** Solana pubkey (base58) of the consumer authority used when a request omits it. */\n defaultConsumerAuthority?: string;\n /**\n * Molpha program id the request authorization is bound to. Defaults to the vendored\n * `MOLPHA_PROGRAM_ID`; must match the gateway's deployment.\n */\n programId?: string;\n /**\n * Authenticates selected gateway node encryption keys before private API\n * secrets are encrypted.\n */\n verifyNodeKeys?: NodeKeyVerifier;\n /**\n * Unsafe development escape hatch. When true, encrypted private API requests\n * may use gateway-provided node keys without authentication. Defaults to false.\n */\n allowUnverifiedNodeKeysForPrivateApi?: boolean;\n}\n\n/**\n * The slow-changing inputs a `requestSignedData` round binds to. Fetch once with\n * {@link MolphaGateway.prepareContext} and reuse across many rounds.\n */\nexport interface RoundContext extends RegistrySelectionConfig {\n /** Full node set used to encrypt private API secrets for the selected nodes. */\n nodes: Node[];\n}\n\n/** Round inputs after resolution; `nodes` is only fetched when a round needs it. */\ninterface ResolvedRound extends RegistrySelectionConfig {\n nodes?: Node[];\n}\n\ninterface GatewaySignedDataResponse {\n status: \"completed\" | \"pending\" | string;\n data?: GatewaySignedData;\n}\n\ninterface GatewaySignedData {\n sourceId?: string;\n /** Echo of the canonical apiConfig hash; equals `sourceId`. */\n configHash?: string;\n /** Echo of the request's tolerance policy; present only for tolerance rounds (newer gateways). */\n aggregation?: unknown;\n value?: string;\n valuePacked?: string;\n timestamp?: number;\n registryVersion?: number;\n signaturesRequired?: number;\n signersBitmap?: string;\n s?: string;\n commitmentAddr?: string;\n fresh?: boolean;\n}\n\ninterface GatewayEnvelope<T> {\n status: string;\n data: T;\n}\n\nconst ZERO_AUTH_SIG = new Uint8Array(64);\n\n/** Default gateway base URL when `endpoints` is omitted. */\nexport const DEFAULT_GATEWAY_ENDPOINT = \"https://dev-gateway.molpha.io/\";\n\n/** Thrown for terminal gateway errors (400/401) — never retried. */\nexport class GatewayError extends Error {\n constructor(\n message: string,\n readonly status?: number,\n ) {\n super(message);\n this.name = \"GatewayError\";\n }\n}\n\nexport class MolphaGateway {\n private readonly endpoints: GatewayEndpoint[];\n private readonly getRegistrySelectionConfig: () => Promise<RegistrySelectionConfig>;\n private readonly defaultSigner?: Signer;\n private readonly defaultSubscriptionOwner?: string;\n private readonly defaultConsumerAuthority?: string;\n private readonly verifyNodeKeys?: NodeKeyVerifier;\n private readonly allowUnverifiedNodeKeysForPrivateApi: boolean;\n /** Program id the request authorization is bound to (base58). */\n readonly programId: string;\n private readonly programIdBytes: Uint8Array;\n /** Gateway PDA per endpoint URL; resolved once per client lifetime. */\n private readonly gatewayPdas = new Map<string, Promise<Uint8Array>>();\n\n constructor(\n endpoints?: GatewayEndpointInput | GatewayEndpointInput[],\n getRegistrySelectionConfig: () => Promise<RegistrySelectionConfig> = async () => {\n throw new Error(\n \"MolphaGateway requires getRegistrySelectionConfig to request signed data — pass the current on-chain registry version, redundancy buffer and node count (e.g. () => solana.getRegistrySelectionConfig())\",\n );\n },\n defaultSigner?: Signer,\n /**\n * Either a default subscription owner (base58) or gateway options. A string\n * keeps the previous positional form used by standalone callers/tests.\n */\n defaultSubscriptionOwnerOrOptions?: string | MolphaGatewayOptions,\n defaultConsumerAuthority?: string,\n ) {\n const list =\n endpoints === undefined\n ? [DEFAULT_GATEWAY_ENDPOINT]\n : Array.isArray(endpoints)\n ? endpoints\n : [endpoints];\n if (list.length === 0) throw new Error(\"At least one endpoint is required\");\n this.endpoints = list.map(normalizeEndpoint);\n this.getRegistrySelectionConfig = getRegistrySelectionConfig;\n this.defaultSigner = defaultSigner;\n\n const options: MolphaGatewayOptions =\n typeof defaultSubscriptionOwnerOrOptions === \"string\"\n ? {\n defaultSubscriptionOwner: defaultSubscriptionOwnerOrOptions,\n defaultConsumerAuthority,\n }\n : (defaultSubscriptionOwnerOrOptions ?? {});\n\n this.defaultSubscriptionOwner = options.defaultSubscriptionOwner;\n this.defaultConsumerAuthority =\n options.defaultConsumerAuthority ?? options.defaultSubscriptionOwner;\n this.verifyNodeKeys = options.verifyNodeKeys;\n this.allowUnverifiedNodeKeysForPrivateApi =\n options.allowUnverifiedNodeKeysForPrivateApi ?? false;\n this.programId = options.programId ?? MOLPHA_PROGRAM_ID;\n this.programIdBytes = addressToBytes(this.programId);\n }\n\n /** Tries endpoints in order; returns the first node list it can fetch. */\n async getNodes(): Promise<Node[]> {\n return (await this.getNodesInfo()).nodes;\n }\n\n /**\n * `GET /v1/nodes` — the peer set plus the gateway's view of the registry\n * selection policy, which sizes the eligible set a paid source must fund.\n *\n * The `registry` block is advisory: it is whatever the gateway read from the\n * chain, and is absent on older gateways or when that read failed. Prefer the\n * on-chain read (`MolphaSolanaClient.getRegistrySelectionConfig`) whenever a\n * Solana connection is available — `requestSignedData` already does.\n */\n async getNodesInfo(): Promise<NodesInfo> {\n const data = await this.firstReachableData<NodesInfo | Node[]>(\"/v1/nodes\");\n if (Array.isArray(data)) return { nodes: data };\n return {\n nodes: data.nodes,\n ...(data.registry ? { registry: data.registry } : {}),\n };\n }\n\n async isHealthy(): Promise<boolean> {\n for (const endpoint of this.endpoints) {\n try {\n const res = await fetch(`${endpoint.url}/health`, { method: \"GET\" });\n if (res.ok) return true;\n } catch {\n // try next\n }\n }\n return false;\n }\n\n /**\n * `GET {url}/v1/info` — the gateway's on-chain identity. Throws when the gateway\n * reports a `programId` different from this client's.\n */\n async fetchGatewayInfo(\n endpoint: GatewayEndpointInput,\n timeoutMs?: number,\n ): Promise<GatewayInfo> {\n const { url } = normalizeEndpoint(endpoint);\n const res = await this.fetchWithTimeout(`${url}/v1/info`, { method: \"GET\" }, timeoutMs);\n if (!res.ok) {\n throw new GatewayError(`GET /v1/info failed (${res.status})`, res.status);\n }\n const info = parseGatewayInfo(unwrapEnvelope(await res.json(), \"/v1/info\"));\n if (info.programId !== undefined && info.programId !== this.programId) {\n throw new GatewayError(\n `Gateway ${url} settles against program ${info.programId}, but this client is bound to ${this.programId}`,\n );\n }\n return info;\n }\n\n /**\n * Fetch the slow-changing round inputs (registry version, redundancy buffer,\n * node count, node set) once so they can be reused across many\n * {@link requestSignedData} calls. Pass the result back via\n * `requestSignedData({ ..., context })` to skip the prelude and run a\n * single-round \"short\" flow.\n *\n * Both fetches run in parallel. Registry version, redundancy buffer and node\n * count come from the on-chain registry read.\n */\n async prepareContext(): Promise<RoundContext> {\n const [registry, nodes] = await Promise.all([\n this.getRegistrySelectionConfig(),\n this.getNodes(),\n ]);\n return { ...registry, nodes };\n }\n\n /**\n * Request a threshold-signed data update from the gateway, with retry +\n * failover. Per attempt a fresh timestamp yields a fresh selection bitmap; the\n * body is POSTed to each endpoint in order until one `completed`s.\n *\n * The round's `sourceId` is derived from `apiConfig`. The request authorization\n * binds the program id and each gateway's on-chain account, so the auth signature\n * is recomputed for every endpoint tried.\n *\n * By default this fetches the registry selection config up front and the node\n * set only when the round needs it (private API encryption, or when the registry\n * read does not report `nodeCount`). Supply `opts.context` (e.g. from\n * {@link prepareContext}) to reuse cached inputs and skip those fetches — a\n * fully-populated context collapses the call to a single POST round.\n *\n * When the API source is itself x402-paywalled, pass `opts.sourcePayment` to\n * fund it; without that, such a source throws\n * {@link UpstreamPaymentRequiredError} carrying the gateway's quote.\n */\n async requestSignedData(opts: RequestSignedDataOptions): Promise<Attestation> {\n const {\n apiConfig,\n signer,\n encrypt,\n sourcePayment,\n maxAge = 60,\n maxRetries = 15,\n timeoutMs = 5000,\n } = opts;\n const signaturesRequired = assertSignaturesRequired(opts.signaturesRequired);\n\n const verifyNodeKeys = opts.verifyNodeKeys ?? this.verifyNodeKeys;\n const allowUnverified =\n opts.allowUnverifiedNodeKeysForPrivateApi ??\n this.allowUnverifiedNodeKeysForPrivateApi;\n if (encrypt && !verifyNodeKeys && !allowUnverified) {\n throw new Error(\n \"Private API encryption requires authenticated node keys. Provide verifyNodeKeys or set allowUnverifiedNodeKeysForPrivateApi: true for unsafe development use.\",\n );\n }\n\n // Validates `aggregation` (rejects `mode: \"exact\"`, unsupported rules, bad numbers) as\n // part of canonicalization; tolerance additionally needs a quorum of at least 3.\n const requestApiConfig = canonicalizeAPIConfig(apiConfig);\n assertAggregationQuorum(requestApiConfig.aggregation, signaturesRequired);\n const sourceIdBytes = deriveSourceId(requestApiConfig);\n const sourceId = bytesToHex(sourceIdBytes);\n\n const subscriptionOwner = opts.subscriptionOwner ?? this.defaultSubscriptionOwner;\n if (!subscriptionOwner) {\n throw new Error(\n \"subscriptionOwner is required — pass opts.subscriptionOwner or set MolphaGateway defaultSubscriptionOwner (MolphaSDK sets this from wallet.publicKey)\",\n );\n }\n const consumerAuthority =\n opts.consumerAuthority ?? this.defaultConsumerAuthority ?? subscriptionOwner;\n const authSigner = signer ?? this.defaultSigner;\n\n const round = await this.resolveContext(opts.context, encrypt !== undefined);\n const { registryVersion, redundancyBuffer } = round;\n if (\n round.nodeCount !== undefined &&\n round.nodes !== undefined &&\n round.nodes.length !== round.nodeCount\n ) {\n throw new Error(\n `Gateway node list has ${round.nodes.length} nodes but registry ${registryVersion} has node_count ${round.nodeCount} — refresh the round context`,\n );\n }\n const nodeCount = round.nodeCount ?? round.nodes?.length;\n if (nodeCount === undefined) {\n throw new Error(\"Round context resolved neither nodeCount nor nodes\");\n }\n\n // A paywalled source is paid by the caller, per node fetch, from their own\n // wallet. Read the source's terms once, then sign fresh authorizations per\n // attempt so a retry never reuses a nonce. The registry already tells us the\n // eligible set size, so no quote round trip is needed in the common case.\n let terms: UpstreamTerms | null = null;\n let authorizations = 0;\n let requoted = false;\n if (sourcePayment) {\n terms = sourcePayment.terms\n ? validateSuppliedTerms(\n sourcePayment.terms,\n requestApiConfig.url,\n sourcePayment.assetDomain,\n )\n : await probeSource(apiConfig, {\n ...(encrypt ? { secrets: encrypt.secrets } : {}),\n ...(sourcePayment.assetDomain ? { assetDomain: sourcePayment.assetDomain } : {}),\n timeoutMs,\n });\n if (terms) {\n authorizations = effectiveSelectionSize(\n signaturesRequired,\n redundancyBuffer,\n nodeCount,\n );\n }\n }\n\n let lastError: unknown;\n // Each attempt must be its own round: the tuple that identifies a round\n // includes the timestamp, and a dispatched round cannot be re-dispatched.\n let lastTimestamp = 0;\n for (let attempt = 0; attempt < maxRetries; attempt++) {\n let timestamp = Math.floor(Date.now() / 1000);\n if (timestamp <= lastTimestamp) timestamp = lastTimestamp + 1;\n lastTimestamp = timestamp;\n\n const seed = deriveSelectionSeed(sourceIdBytes, registryVersion, timestamp);\n const groupSize = effectiveSelectionSize(signaturesRequired, redundancyBuffer, nodeCount);\n const bitmap = deriveGroupBitmap(seed, nodeCount, groupSize);\n const indices = selectedIndices(bitmap, nodeCount);\n\n let encKeyBundle: ReturnType<typeof encryptForNodes> | undefined;\n if (encrypt) {\n const selected = selectedNodesForPrivateApiEncryption(round.nodes ?? [], indices);\n\n if (verifyNodeKeys) {\n await verifyNodeKeys({\n sourceId,\n registryVersion,\n timestamp,\n selectedIndexes: [...indices],\n selectedNodes: selected.map((node) => ({ ...node })),\n });\n }\n\n encKeyBundle = encryptForNodes(requestApiConfig, encrypt.secrets, selected);\n }\n\n // Fresh authorizations per attempt: each carries a unique nonce, which is\n // what keeps one from settling twice.\n let sourcePayments: string[] | undefined;\n if (terms && sourcePayment && authorizations > 0) {\n sourcePayments = await signSourcePayments(\n terms,\n sourcePayment.signer,\n authorizations,\n );\n }\n\n const baseBody: Record<string, unknown> = {\n sourceId,\n registryVersion,\n timestamp,\n maxAge,\n signaturesRequired,\n subscriptionOwner,\n consumerAuthority,\n apiConfig: requestApiConfig,\n };\n if (encKeyBundle) baseBody.encKeyBundle = encKeyBundle;\n if (sourcePayments) baseBody.sourcePayments = sourcePayments;\n\n /** Set when a relayed source quote makes this attempt's round obsolete. */\n let requote = false;\n for (const endpoint of this.endpoints) {\n try {\n let authSig: Uint8Array = ZERO_AUTH_SIG;\n if (authSigner) {\n const gateway = await this.resolveGatewayPda(endpoint, timeoutMs);\n authSig = await authSigner(\n hashRequestAuth({\n programId: this.programIdBytes,\n gateway,\n sourceId: sourceIdBytes,\n signaturesRequired,\n timestamp,\n }),\n );\n }\n const body = { ...baseBody, authSig: bytesToHex0x(authSig) };\n\n const res = await this.post(\n `${endpoint.url}/v1/round/execute`,\n body,\n timeoutMs,\n );\n\n // The API source itself wants paying, so the gateway relays its quote\n // instead of a fetch failure. Payment is required, just not to Molpha.\n if (res.status === 402) {\n const quote = parseUpstreamQuote(\n await res.json().catch(() => null),\n );\n if (!quote) {\n throw new GatewayError(\n \"Gateway requires payment but returned no upstream source quote\",\n 402,\n );\n }\n if (!sourcePayment) throw new UpstreamPaymentRequiredError(quote);\n // Already funded to the quoted size and still refused: the source\n // rejected the payment material, which resigning cannot fix.\n if (terms && requoted && authorizations >= quote.eligibleSetSize) {\n throw new UpstreamPaymentRequiredError(\n quote,\n `Source payment was not accepted for ${quote.resource}: ${quote.error ?? \"no detail\"}`,\n );\n }\n requoted = true;\n if (quote.eligibleSetSize !== groupSize) {\n throw new GatewayError(\n `Gateway upstream quote eligibleSetSize ${quote.eligibleSetSize} does not match this round's selection size ${groupSize} (min(signaturesRequired + redundancyBuffer, nodeCount))`,\n 402,\n );\n }\n authorizations = groupSize;\n if (!terms) {\n // Terms we cannot sign are terminal, not transient: surface them\n // with the quote instead of re-probing once per attempt.\n try {\n terms = await probeSource(apiConfig, {\n ...(encrypt ? { secrets: encrypt.secrets } : {}),\n ...(sourcePayment.assetDomain\n ? { assetDomain: sourcePayment.assetDomain }\n : {}),\n timeoutMs,\n });\n } catch (err) {\n throw new UpstreamPaymentRequiredError(\n quote,\n `Cannot pay ${quote.resource}: ${err instanceof Error ? err.message : String(err)}`,\n );\n }\n }\n if (!terms) {\n throw new UpstreamPaymentRequiredError(\n quote,\n `Gateway reports ${quote.resource} is paywalled but the source returned no payment terms`,\n );\n }\n // Recover on a fresh timestamp: this round is spent, so the next\n // attempt is a new round rather than a retry of the failed one.\n lastError = new UpstreamPaymentRequiredError(quote);\n requote = true;\n break;\n }\n\n const errorDetail = !res.ok ? await parseGatewayErrorDetail(res) : undefined;\n if (res.status === 400 || res.status === 401) {\n throw new GatewayError(\n formatGatewayErrorMessage(\"Gateway rejected request\", res.status, errorDetail),\n res.status,\n );\n }\n if (res.status === 503) {\n lastError = new GatewayError(\n formatGatewayErrorMessage(\"Gateway unavailable\", 503, errorDetail),\n 503,\n );\n continue; // a different gateway may already hold the AggSig\n }\n if (!res.ok) {\n lastError = new GatewayError(\n formatGatewayErrorMessage(\"Gateway error\", res.status, errorDetail),\n res.status,\n );\n continue;\n }\n const json = (await res.json()) as GatewaySignedDataResponse;\n const payload = json.data ?? (\n json.status === \"completed\" ? (json as unknown as GatewaySignedData) : undefined\n );\n if (json.status === \"completed\" && payload) {\n return toResult(payload, {\n sourceId,\n registryVersion,\n timestamp,\n signaturesRequired,\n bitmap,\n ...(requestApiConfig.aggregation\n ? { aggregation: requestApiConfig.aggregation }\n : {}),\n });\n }\n lastError = new Error(`Gateway returned status: ${json.status}`);\n } catch (err) {\n // An unpayable or refused source is terminal — never retried blindly.\n if (err instanceof UpstreamPaymentRequiredError) throw err;\n if (\n err instanceof GatewayError &&\n (err.status === 400 || err.status === 401 || err.status === 402)\n ) {\n throw err;\n }\n lastError = err; // timeout / network / identity lookup → next endpoint\n }\n }\n // A requote invalidates this attempt's body for every endpoint alike.\n if (requote) continue;\n }\n throw lastError instanceof Error\n ? lastError\n : new Error(\"Gateway round failed after retries\");\n }\n\n /**\n * Resolve the round inputs, fetching only the fields absent from `cached`.\n * Registry version, redundancy buffer and node count are treated as a unit (one\n * snapshot read). The node list is fetched only when `needNodes` (private API\n * encryption) or when nothing else can tell us the node count.\n */\n private async resolveContext(\n cached: Partial<RoundContext> | undefined,\n needNodes: boolean,\n ): Promise<ResolvedRound> {\n const hasRegistry =\n cached?.registryVersion !== undefined && cached?.redundancyBuffer !== undefined;\n const registryPromise: Promise<RegistrySelectionConfig> = hasRegistry\n ? Promise.resolve({\n registryVersion: cached.registryVersion!,\n redundancyBuffer: cached.redundancyBuffer!,\n ...(cached.nodeCount !== undefined ? { nodeCount: cached.nodeCount } : {}),\n })\n : this.getRegistrySelectionConfig();\n\n if (cached?.nodes !== undefined) {\n return { ...(await registryPromise), nodes: cached.nodes };\n }\n if (needNodes) {\n const [registry, nodes] = await Promise.all([registryPromise, this.getNodes()]);\n return { ...registry, nodes };\n }\n const registry = await registryPromise;\n if (registry.nodeCount !== undefined) return registry;\n return { ...registry, nodes: await this.getNodes() };\n }\n\n /** Gateway PDA bytes for an endpoint, cached per URL. A failed lookup is not cached. */\n private resolveGatewayPda(\n endpoint: GatewayEndpoint,\n timeoutMs: number,\n ): Promise<Uint8Array> {\n let pending = this.gatewayPdas.get(endpoint.url);\n if (!pending) {\n pending = this.lookupGatewayPda(endpoint, timeoutMs).catch((err: unknown) => {\n this.gatewayPdas.delete(endpoint.url);\n throw err;\n });\n this.gatewayPdas.set(endpoint.url, pending);\n }\n return pending;\n }\n\n private async lookupGatewayPda(\n endpoint: GatewayEndpoint,\n timeoutMs: number,\n ): Promise<Uint8Array> {\n const authority =\n endpoint.gatewayAuthority ??\n (await this.fetchGatewayInfo(endpoint, timeoutMs)).gatewayAuthority;\n return deriveGatewayPda(authority, this.programId);\n }\n\n private async firstReachableData<T>(path: string): Promise<T> {\n let lastError: unknown;\n for (const endpoint of this.endpoints) {\n try {\n const res = await fetch(`${endpoint.url}${path}`, { method: \"GET\" });\n if (res.ok) {\n return unwrapEnvelope(await res.json(), path, res.status) as T;\n }\n lastError = new GatewayError(`GET ${path} failed (${res.status})`, res.status);\n } catch (err) {\n lastError = err;\n }\n }\n throw lastError instanceof Error ? lastError : new Error(`GET ${path} failed`);\n }\n\n private async post(\n url: string,\n body: unknown,\n timeoutMs: number,\n ): Promise<Response> {\n return this.fetchWithTimeout(\n url,\n {\n method: \"POST\",\n headers: { \"content-type\": \"application/json\" },\n body: JSON.stringify(body),\n },\n timeoutMs,\n );\n }\n\n private async fetchWithTimeout(\n url: string,\n init: RequestInit,\n timeoutMs?: number,\n ): Promise<Response> {\n if (timeoutMs === undefined) {\n return fetch(url, init);\n }\n const controller = new AbortController();\n const timer = setTimeout(() => controller.abort(), timeoutMs);\n try {\n return await fetch(url, { ...init, signal: controller.signal });\n } finally {\n clearTimeout(timer);\n }\n }\n}\n\nfunction assertSignaturesRequired(value: number): number {\n if (!Number.isInteger(value) || value < 1 || value > 255) {\n throw new RangeError(`signaturesRequired must be an integer in 1..255, got ${value}`);\n }\n return value;\n}\n\n/** Unwrap the gateway `{ status, data }` envelope; passes bare payloads through. */\nfunction unwrapEnvelope(json: unknown, path: string, status?: number): unknown {\n if (json && typeof json === \"object\" && \"data\" in json) {\n const wrapped = json as Partial<GatewayEnvelope<unknown>>;\n if (wrapped.data === undefined) {\n throw new GatewayError(`GET ${path} returned malformed payload`, status);\n }\n return wrapped.data;\n }\n return json;\n}\n\nfunction selectedNodesForPrivateApiEncryption(\n nodes: Node[],\n selectedIndexes: number[],\n): Node[] {\n if (!Array.isArray(nodes)) {\n throw new Error(\"Private API encryption requires a gateway node array\");\n }\n if (selectedIndexes.length === 0) {\n throw new Error(\"Private API encryption requires at least one selected node\");\n }\n\n const selectedIndexSet = new Set<number>();\n for (const index of selectedIndexes) {\n if (!Number.isInteger(index) || index < 0) {\n throw new Error(\n `Private API encryption selected index must be a non-negative integer: ${index}`,\n );\n }\n if (selectedIndexSet.has(index)) {\n throw new Error(`Private API encryption selected index is duplicated: ${index}`);\n }\n selectedIndexSet.add(index);\n }\n\n const selectedByIndex = new Map<number, Node>();\n const nodeIndexes = new Set<number>();\n for (const node of nodes) {\n if (!Number.isInteger(node.index) || node.index < 0) {\n throw new Error(`Gateway node index must be a non-negative integer: ${node.index}`);\n }\n if (node.index >= nodes.length) {\n throw new Error(\n `Gateway node index ${node.index} is outside the node list range 0..${nodes.length - 1}`,\n );\n }\n if (nodeIndexes.has(node.index)) {\n throw new Error(`Gateway returned duplicate node index: ${node.index}`);\n }\n nodeIndexes.add(node.index);\n if (!selectedIndexSet.has(node.index)) continue;\n selectedByIndex.set(node.index, node);\n }\n\n const selectedSigningKeys = new Set<string>();\n return selectedIndexes.map((index) => {\n const node = selectedByIndex.get(index);\n if (!node) {\n throw new Error(`Gateway node list is missing selected node index: ${index}`);\n }\n const signingKey = normalizeSecp256k1PublicKeyHex(\n node.signingKey,\n `Gateway selected node ${index} signingKey`,\n );\n if (selectedSigningKeys.has(signingKey)) {\n throw new Error(`Gateway returned duplicate selected node signingKey: ${index}`);\n }\n selectedSigningKeys.add(signingKey);\n return node;\n });\n}\n\nfunction formatGatewayErrorMessage(\n prefix: string,\n status: number,\n detail?: string,\n): string {\n if (!detail) return `${prefix} (${status})`;\n return `${prefix} (${status}): ${detail}`;\n}\n\nasync function parseGatewayErrorDetail(res: Response): Promise<string | undefined> {\n try {\n const text = (await res.text()).trim();\n if (!text) return undefined;\n try {\n const parsed = JSON.parse(text) as unknown;\n if (parsed && typeof parsed === \"object\") {\n const record = parsed as Record<string, unknown>;\n const message = record.error ?? record.message ?? record.detail;\n if (typeof message === \"string\" && message.trim()) return message.trim();\n }\n } catch {\n // fall back to raw body below\n }\n return text;\n } catch {\n return undefined;\n }\n}\n\nfunction normalizeHex(value: string): string {\n return (value.startsWith(\"0x\") || value.startsWith(\"0X\") ? value.slice(2) : value).toLowerCase();\n}\n\n/**\n * Shape the gateway payload into an {@link Attestation}. `sourceId` and\n * `signaturesRequired` must echo the request (they key the feed and the signed\n * message); `timestamp`, `registryVersion` and `signersBitmap` are taken from the\n * response because a non-fresh (cached) attestation legitimately carries the earlier\n * round's values.\n *\n * Tolerance mode: the signing set is chosen by the nodes after the observation exchange,\n * so `signersBitmap`, the signature fields and the packed value must all come from the\n * response (the request's selection bitmap is not a substitute), and `value` is rendered\n * from the signed `valuePacked` at the source's `decimals` rather than trusted as sent.\n */\nfunction toResult(\n data: GatewaySignedData,\n ctx: {\n sourceId: string;\n registryVersion: number;\n timestamp: number;\n signaturesRequired: number;\n bitmap: Uint8Array;\n aggregation?: AggregationConfig;\n },\n): Attestation {\n if (data.sourceId !== undefined && normalizeHex(data.sourceId) !== ctx.sourceId) {\n throw new GatewayError(\n `Gateway response sourceId ${data.sourceId} does not match the requested ${ctx.sourceId}`,\n );\n }\n if (data.configHash !== undefined && normalizeHex(data.configHash) !== ctx.sourceId) {\n throw new GatewayError(\n `Gateway response configHash ${data.configHash} does not match the requested sourceId ${ctx.sourceId}`,\n );\n }\n if (\n data.signaturesRequired !== undefined &&\n data.signaturesRequired !== ctx.signaturesRequired\n ) {\n throw new GatewayError(\n `Gateway response signaturesRequired ${data.signaturesRequired} does not match the requested ${ctx.signaturesRequired}`,\n );\n }\n if (data.aggregation !== undefined && data.aggregation !== null) {\n let echoed: AggregationConfig | undefined;\n try {\n echoed = canonicalizeAggregation(data.aggregation as AggregationConfig);\n } catch (err) {\n throw new GatewayError(\n `Gateway response carries an invalid aggregation echo: ${err instanceof Error ? err.message : String(err)}`,\n );\n }\n if (!ctx.aggregation) {\n throw new GatewayError(\n \"Gateway response carries an aggregation, but the request was exact mode (no aggregation)\",\n );\n }\n if (JSON.stringify(echoed) !== JSON.stringify(ctx.aggregation)) {\n throw new GatewayError(\n `Gateway response aggregation ${JSON.stringify(echoed)} does not match the requested ${JSON.stringify(ctx.aggregation)}`,\n );\n }\n }\n let value = data.value ?? \"\";\n if (ctx.aggregation) {\n for (const field of [\"valuePacked\", \"signersBitmap\", \"s\", \"commitmentAddr\"] as const) {\n if (!data[field]) {\n throw new GatewayError(`Gateway tolerance response is missing ${field}`);\n }\n }\n try {\n value = formatInt256Decimal(data.valuePacked!, ctx.aggregation.numeric.decimals);\n } catch (err) {\n throw new GatewayError(\n `Gateway tolerance response valuePacked is not an int256 word: ${err instanceof Error ? err.message : String(err)}`,\n );\n }\n }\n return {\n payload: {\n sourceId: ctx.sourceId,\n value: data.valuePacked ?? \"\",\n canonicalTimestamp: data.timestamp ?? ctx.timestamp,\n registryVersion: data.registryVersion ?? ctx.registryVersion,\n signaturesRequired: ctx.signaturesRequired,\n },\n signature: {\n signersBitmap: data.signersBitmap ?? bytesToHex(ctx.bitmap),\n s: data.s ?? \"\",\n commitmentAddr: data.commitmentAddr ?? \"\",\n },\n value,\n fresh: data.fresh ?? true,\n };\n}\n","/**\n * Coalition key: the affine sum of the signers' secp256k1 public keys.\n *\n * `submit_attestation` takes it as untrusted instruction data and checks it projectively\n * against its own sum of the signers' `Node` keys (`X ≡ x·Z²`, `Y ≡ y·Z³`), so a wrong key\n * only fails the transaction — it can never select another key. It is a property of the\n * point, not of any library's arithmetic: summing in any order with any secp256k1\n * implementation gives the same `(x, y)`. Mirrors `molpha_verifier::coalition_key`.\n */\nimport { secp256k1 } from \"@noble/curves/secp256k1.js\";\nimport { bytesToHex, hexToBytes, u256beFromBigInt } from \"./encoding.js\";\n\n/** Affine coalition key, 32-byte big-endian coordinates (`CoalitionKey` in the program IDL). */\nexport interface CoalitionKey {\n x: Uint8Array;\n y: Uint8Array;\n}\n\n/** A signer's public key: SEC1 compressed / uncompressed (bytes or hex), or affine `(x, y)`. */\nexport type Secp256k1KeyInput =\n | Uint8Array\n | string\n | { x: Uint8Array | string; y: Uint8Array | string };\n\ntype Point = InstanceType<typeof secp256k1.Point>;\n\nfunction coordinate(value: Uint8Array | string, label: string): bigint {\n const bytes = typeof value === \"string\" ? hexToBytes(value) : value;\n if (bytes.length !== 32) {\n throw new RangeError(`${label}: expected 32 bytes, got ${bytes.length}`);\n }\n return BigInt(\"0x\" + bytesToHex(bytes));\n}\n\nfunction toPoint(key: Secp256k1KeyInput, index: number): Point {\n const label = `signer key ${index}`;\n try {\n if (typeof key === \"string\" || key instanceof Uint8Array) {\n return secp256k1.Point.fromBytes(typeof key === \"string\" ? hexToBytes(key) : key);\n }\n const point = secp256k1.Point.fromAffine({\n x: coordinate(key.x, `${label}.x`),\n y: coordinate(key.y, `${label}.y`),\n });\n point.assertValidity();\n return point;\n } catch (err) {\n throw new Error(\n `${label} is not a valid secp256k1 public key: ${err instanceof Error ? err.message : String(err)}`,\n );\n }\n}\n\n/**\n * Affine sum of `keys` as a {@link CoalitionKey}.\n *\n * @throws {Error} on an empty set, an invalid point, or a sum at infinity (the verifier\n * rejects both of the latter as `InvalidAggregateSignature`).\n */\nexport function computeCoalitionKey(keys: Iterable<Secp256k1KeyInput>): CoalitionKey {\n let sum: Point | undefined;\n let index = 0;\n for (const key of keys) {\n const point = toPoint(key, index++);\n sum = sum === undefined ? point : sum.add(point);\n }\n if (sum === undefined) throw new Error(\"coalition key needs at least one signer key\");\n if (sum.is0()) throw new Error(\"coalition key is the point at infinity\");\n const { x, y } = sum.toAffine();\n return { x: u256beFromBigInt(x), y: u256beFromBigInt(y) };\n}\n","/**\n * Account views and remaining-accounts construction for `submit_attestation`.\n *\n * `submit_attestation` (program 3d01170, `utils/attestation.rs::verify_attestation_core`)\n * takes exactly one `Node` account per set signer bit, read-only, in ascending bit order\n * (`remaining_accounts.len() == popcount(signersBitmap)`); the verifier requires\n * `account == registry.nodes[bit]` and reads each signer's secp256k1 key from it.\n */\nimport type { Address } from \"@solana/kit\";\nimport { hexToBytes } from \"../core/encoding.js\";\nimport { selectedIndices } from \"../core/selection.js\";\nimport { type SolanaAccountMeta, toPublicKey } from \"./kit.js\";\n\n/** On-chain `RegistryState` (Anchor camelCase): pointer to the current immutable snapshot. */\nexport interface RegistryStateView {\n currentVersion: number;\n nextVersion: number;\n}\n\n/**\n * Immutable, version-addressed `Registry` snapshot. `nodes` holds only the populated\n * `[..nodeCount]` entries; entry `i` is the `Node` account address for signer bit `i`.\n */\nexport interface RegistryView {\n version: number;\n nodeCount: number;\n /** Selection padding: `min(signaturesRequired + redundancyBuffer, nodeCount)`. */\n redundancyBuffer: number;\n nodes: Address[];\n /** Unix seconds until which this superseded snapshot still verifies; `0n` while current. */\n graceActiveUntil: bigint;\n /** Inclusive creation time (unix seconds): a version cannot verify a round dated before it existed. */\n activeFrom: bigint;\n}\n\n/** Set-bit indices of a 32-byte big-endian bitmap (full 256-bit scan). */\nexport function bitmapToIndices(signersBitmapHex: string): number[] {\n return selectedIndices(hexToBytes(signersBitmapHex), 256);\n}\n\n/**\n * Signer `Node` accounts for `submit_attestation`, in ascending signers-bitmap bit order.\n * Bit `i` resolves to `registry.nodes[i]` of the snapshot the round was signed against;\n * a bit at or beyond `nodeCount` can never verify, so it is rejected client-side.\n */\nexport function resolveRemainingAccounts(\n signersBitmapHex: string,\n registry: RegistryView,\n): SolanaAccountMeta[] {\n return bitmapToIndices(signersBitmapHex).map((bit) => {\n const node = registry.nodes[bit];\n if (bit >= registry.nodeCount || node === undefined) {\n throw new Error(\n `InvalidNodeIndex: signer bit ${bit} is outside registry ${registry.version} node_count ${registry.nodeCount}`,\n );\n }\n return { pubkey: toPublicKey(node), isSigner: false, isWritable: false };\n });\n}\n","/**\n * Consumer PDA derivations. Seed byte strings are cross-checked against the IDL const\n * seeds in `test/solana.test.ts` / `test/idl.test.ts`.\n */\nimport type { Address } from \"@solana/kit\";\nimport { ensureLength, u32le, utf8 } from \"../core/encoding.js\";\nimport {\n addressBytes,\n findProgramAddressSync,\n type SolanaAddress,\n} from \"./kit.js\";\n\nconst SEED_CONFIG = utf8(\"molpha_config\");\nconst SEED_REGISTRY = utf8(\"molpha_registry\");\nconst SEED_NODE = utf8(\"molpha_node\");\nconst SEED_PLAN = utf8(\"molpha_plan\");\nconst SEED_SUBSCRIPTION = utf8(\"molpha_subscription\");\nconst SEED_FEED = utf8(\"molpha_feed\");\nconst SEED_GATEWAY = utf8(\"molpha_gateway\");\n\nconst pda = (seeds: Uint8Array[], programId: SolanaAddress): Address =>\n findProgramAddressSync(seeds, programId);\n\nexport const protocolConfigPda = (programId: SolanaAddress): Address =>\n pda([SEED_CONFIG], programId);\n\n/** Mutable pointer to the current registry snapshot: `[\"molpha_registry\"]`. */\nexport const registryStatePda = (programId: SolanaAddress): Address =>\n pda([SEED_REGISTRY], programId);\n\n/** Immutable, version-addressed registry snapshot: `[\"molpha_registry\", version u32 LE]`. */\nexport const registryPda = (version: number, programId: SolanaAddress): Address =>\n pda([SEED_REGISTRY, u32le(version)], programId);\n\n/**\n * Authority-keyed `Node` account: `[\"molpha_node\", authority]` (`Node.authority`). Registry\n * snapshots store these addresses directly in `nodes[i]`, so consumers rarely need to\n * derive them.\n */\nexport const nodePda = (authority: SolanaAddress, programId: SolanaAddress): Address =>\n pda([SEED_NODE, addressBytes(authority)], programId);\n\n/** Bonded gateway account: `[\"molpha_gateway\", gatewayAuthority]` — the `gateway` bound into `RequestAuth`. */\nexport const gatewayPda = (authority: SolanaAddress, programId: SolanaAddress): Address =>\n pda([SEED_GATEWAY, addressBytes(authority)], programId);\n\n/** Plan PDA is `[b\"molpha_plan\", [planType as u8]]`. */\nexport const planPda = (planId: number, programId: SolanaAddress): Address =>\n pda([SEED_PLAN, Uint8Array.of(planId)], programId);\n\nexport const subscriptionPda = (owner: SolanaAddress, programId: SolanaAddress): Address =>\n pda([SEED_SUBSCRIPTION, addressBytes(owner)], programId);\n\n/**\n * Feed state, keyed per `(sourceId, signaturesRequired, submitter)`:\n * `[\"molpha_feed\", sourceId, [signaturesRequired], submitter]`. Created lazily by the\n * first `submit_attestation` from that submitter.\n */\nexport function feedPda(\n sourceId: Uint8Array,\n signaturesRequired: number,\n submitter: SolanaAddress,\n programId: SolanaAddress,\n): Address {\n ensureLength(sourceId, 32, \"sourceId\");\n if (!Number.isInteger(signaturesRequired) || signaturesRequired < 0 || signaturesRequired > 255) {\n throw new RangeError(`signaturesRequired out of u8 range: ${signaturesRequired}`);\n }\n return pda(\n [SEED_FEED, sourceId, Uint8Array.of(signaturesRequired), addressBytes(submitter)],\n programId,\n );\n}\n","{\n \"address\": \"chivcFQgxzwkpLvW41PV431HQ4dYpaW3povQH3AdpQt\",\n \"metadata\": {\n \"name\": \"molpha\",\n \"version\": \"0.1.0\",\n \"spec\": \"0.1.0\",\n \"description\": \"Molpha Oracle Solana Program - Merged from molpha-solana and molpha-feed\"\n },\n \"instructions\": [\n {\n \"name\": \"add_delegate\",\n \"discriminator\": [\n 3,\n 67,\n 128,\n 218,\n 69,\n 139,\n 53,\n 88\n ],\n \"accounts\": [\n {\n \"name\": \"owner\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"subscription\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 115,\n 117,\n 98,\n 115,\n 99,\n 114,\n 105,\n 112,\n 116,\n 105,\n 111,\n 110\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"owner\"\n }\n ]\n }\n },\n {\n \"name\": \"delegate_account\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 100,\n 101,\n 108,\n 101,\n 103,\n 97,\n 116,\n 101\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"owner\"\n },\n {\n \"kind\": \"arg\",\n \"path\": \"args.delegate\"\n }\n ]\n }\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"args\",\n \"type\": {\n \"defined\": {\n \"name\": \"AddDelegateArgs\"\n }\n }\n }\n ]\n },\n {\n \"name\": \"add_plan\",\n \"discriminator\": [\n 199,\n 79,\n 170,\n 244,\n 91,\n 21,\n 110,\n 218\n ],\n \"accounts\": [\n {\n \"name\": \"protocol_config\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"plan\",\n \"writable\": true\n },\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true,\n \"relations\": [\n \"protocol_config\"\n ]\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"config\",\n \"type\": {\n \"defined\": {\n \"name\": \"PlanConfig\"\n }\n }\n }\n ]\n },\n {\n \"name\": \"claim_node_rewards\",\n \"discriminator\": [\n 151,\n 201,\n 146,\n 161,\n 104,\n 100,\n 214,\n 1\n ],\n \"accounts\": [\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true,\n \"relations\": [\n \"node\"\n ]\n },\n {\n \"name\": \"protocol_config\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"node\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 110,\n 111,\n 100,\n 101\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"authority\"\n }\n ]\n }\n },\n {\n \"name\": \"treasury\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"protocol_config\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"token_program\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"protocol_config.usdc_mint\",\n \"account\": \"ProtocolConfig\"\n }\n ],\n \"program\": {\n \"kind\": \"const\",\n \"value\": [\n 140,\n 151,\n 37,\n 143,\n 78,\n 36,\n 137,\n 241,\n 187,\n 61,\n 16,\n 41,\n 20,\n 142,\n 13,\n 131,\n 11,\n 90,\n 19,\n 153,\n 218,\n 255,\n 16,\n 132,\n 4,\n 142,\n 123,\n 216,\n 219,\n 233,\n 248,\n 89\n ]\n }\n }\n },\n {\n \"name\": \"destination\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"authority\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"token_program\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"protocol_config.usdc_mint\",\n \"account\": \"ProtocolConfig\"\n }\n ],\n \"program\": {\n \"kind\": \"const\",\n \"value\": [\n 140,\n 151,\n 37,\n 143,\n 78,\n 36,\n 137,\n 241,\n 187,\n 61,\n 16,\n 41,\n 20,\n 142,\n 13,\n 131,\n 11,\n 90,\n 19,\n 153,\n 218,\n 255,\n 16,\n 132,\n 4,\n 142,\n 123,\n 216,\n 219,\n 233,\n 248,\n 89\n ]\n }\n }\n },\n {\n \"name\": \"token_program\",\n \"address\": \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"\n },\n {\n \"name\": \"associated_token_program\",\n \"address\": \"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\"\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"close_epoch\",\n \"discriminator\": [\n 13,\n 87,\n 7,\n 133,\n 109,\n 14,\n 83,\n 25\n ],\n \"accounts\": [\n {\n \"name\": \"epoch_state\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 101,\n 112,\n 111,\n 99,\n 104\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"epoch\"\n }\n ]\n }\n },\n {\n \"name\": \"open_epoch_state\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 101,\n 112,\n 111,\n 99,\n 104\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"open_epoch\"\n }\n ]\n }\n },\n {\n \"name\": \"rent_payer\",\n \"writable\": true\n }\n ],\n \"args\": [\n {\n \"name\": \"epoch\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"open_epoch\",\n \"type\": \"u64\"\n }\n ]\n },\n {\n \"name\": \"close_ticket_marker\",\n \"discriminator\": [\n 26,\n 65,\n 122,\n 188,\n 125,\n 132,\n 159,\n 107\n ],\n \"accounts\": [\n {\n \"name\": \"ticket_marker\",\n \"writable\": true\n },\n {\n \"name\": \"submitter\",\n \"writable\": true\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"credit_epoch_rewards\",\n \"discriminator\": [\n 212,\n 185,\n 139,\n 96,\n 103,\n 248,\n 140,\n 198\n ],\n \"accounts\": [\n {\n \"name\": \"protocol_config\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"epoch_state\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 101,\n 112,\n 111,\n 99,\n 104\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"epoch\"\n }\n ]\n }\n }\n ],\n \"args\": [\n {\n \"name\": \"epoch\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"slots\",\n \"type\": {\n \"vec\": \"u16\"\n }\n }\n ]\n },\n {\n \"name\": \"deactivate_gateway\",\n \"discriminator\": [\n 2,\n 119,\n 77,\n 158,\n 3,\n 8,\n 116,\n 252\n ],\n \"accounts\": [\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true,\n \"relations\": [\n \"protocol_config\"\n ]\n },\n {\n \"name\": \"protocol_config\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"gateway\",\n \"writable\": true\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"deactivate_node\",\n \"discriminator\": [\n 242,\n 185,\n 114,\n 146,\n 22,\n 248,\n 23,\n 157\n ],\n \"accounts\": [\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"protocol_config\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"registry_state\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 114,\n 101,\n 103,\n 105,\n 115,\n 116,\n 114,\n 121\n ]\n }\n ]\n }\n },\n {\n \"name\": \"current_registry\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 114,\n 101,\n 103,\n 105,\n 115,\n 116,\n 114,\n 121\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"registry_state.current_version\",\n \"account\": \"RegistryState\"\n }\n ]\n }\n },\n {\n \"name\": \"new_registry\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 114,\n 101,\n 103,\n 105,\n 115,\n 116,\n 114,\n 121\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"registry_state.next_version\",\n \"account\": \"RegistryState\"\n }\n ]\n }\n },\n {\n \"name\": \"node\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 110,\n 111,\n 100,\n 101\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"node_owner\"\n }\n ]\n }\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"node_owner\",\n \"type\": \"pubkey\"\n }\n ]\n },\n {\n \"name\": \"extend_subscription\",\n \"discriminator\": [\n 47,\n 230,\n 116,\n 118,\n 171,\n 228,\n 24,\n 46\n ],\n \"accounts\": [\n {\n \"name\": \"owner\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"protocol_config\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"subscription\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 115,\n 117,\n 98,\n 115,\n 99,\n 114,\n 105,\n 112,\n 116,\n 105,\n 111,\n 110\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"owner\"\n }\n ]\n }\n },\n {\n \"name\": \"plan\"\n },\n {\n \"name\": \"owner_usdc\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"owner\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"token_program\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"protocol_config.usdc_mint\",\n \"account\": \"ProtocolConfig\"\n }\n ],\n \"program\": {\n \"kind\": \"const\",\n \"value\": [\n 140,\n 151,\n 37,\n 143,\n 78,\n 36,\n 137,\n 241,\n 187,\n 61,\n 16,\n 41,\n 20,\n 142,\n 13,\n 131,\n 11,\n 90,\n 19,\n 153,\n 218,\n 255,\n 16,\n 132,\n 4,\n 142,\n 123,\n 216,\n 219,\n 233,\n 248,\n 89\n ]\n }\n }\n },\n {\n \"name\": \"treasury\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"protocol_config\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"token_program\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"protocol_config.usdc_mint\",\n \"account\": \"ProtocolConfig\"\n }\n ],\n \"program\": {\n \"kind\": \"const\",\n \"value\": [\n 140,\n 151,\n 37,\n 143,\n 78,\n 36,\n 137,\n 241,\n 187,\n 61,\n 16,\n 41,\n 20,\n 142,\n 13,\n 131,\n 11,\n 90,\n 19,\n 153,\n 218,\n 255,\n 16,\n 132,\n 4,\n 142,\n 123,\n 216,\n 219,\n 233,\n 248,\n 89\n ]\n }\n }\n },\n {\n \"name\": \"token_program\",\n \"address\": \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"finalize_epoch\",\n \"discriminator\": [\n 159,\n 93,\n 117,\n 217,\n 63,\n 44,\n 249,\n 76\n ],\n \"accounts\": [\n {\n \"name\": \"payer\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"protocol_config\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"target\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 101,\n 112,\n 111,\n 99,\n 104\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"epoch\"\n }\n ]\n }\n },\n {\n \"name\": \"next\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 101,\n 112,\n 111,\n 99,\n 104\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"epoch.saturating_add(1)\"\n }\n ]\n }\n },\n {\n \"name\": \"successor\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 101,\n 112,\n 111,\n 99,\n 104\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"epoch.saturating_add(2)\"\n }\n ]\n }\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"epoch\",\n \"type\": \"u64\"\n }\n ]\n },\n {\n \"name\": \"initialize\",\n \"discriminator\": [\n 175,\n 175,\n 109,\n 31,\n 13,\n 152,\n 155,\n 237\n ],\n \"accounts\": [\n {\n \"name\": \"protocol_config\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"registry_state\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 114,\n 101,\n 103,\n 105,\n 115,\n 116,\n 114,\n 121\n ]\n }\n ]\n }\n },\n {\n \"name\": \"registry\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 114,\n 101,\n 103,\n 105,\n 115,\n 116,\n 114,\n 121\n ]\n },\n {\n \"kind\": \"const\",\n \"value\": [\n 0,\n 0,\n 0,\n 0\n ]\n }\n ]\n }\n },\n {\n \"name\": \"usdc_mint\"\n },\n {\n \"name\": \"treasury\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"protocol_config\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"token_program\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"usdc_mint\"\n }\n ],\n \"program\": {\n \"kind\": \"const\",\n \"value\": [\n 140,\n 151,\n 37,\n 143,\n 78,\n 36,\n 137,\n 241,\n 187,\n 61,\n 16,\n 41,\n 20,\n 142,\n 13,\n 131,\n 11,\n 90,\n 19,\n 153,\n 218,\n 255,\n 16,\n 132,\n 4,\n 142,\n 123,\n 216,\n 219,\n 233,\n 248,\n 89\n ]\n }\n }\n },\n {\n \"name\": \"node_deposit_vault\",\n \"docs\": [\n \"One vault for every node's security deposit, held apart from protocol revenue.\"\n ],\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"registry_state\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"token_program\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"usdc_mint\"\n }\n ],\n \"program\": {\n \"kind\": \"const\",\n \"value\": [\n 140,\n 151,\n 37,\n 143,\n 78,\n 36,\n 137,\n 241,\n 187,\n 61,\n 16,\n 41,\n 20,\n 142,\n 13,\n 131,\n 11,\n 90,\n 19,\n 153,\n 218,\n 255,\n 16,\n 132,\n 4,\n 142,\n 123,\n 216,\n 219,\n 233,\n 248,\n 89\n ]\n }\n }\n },\n {\n \"name\": \"epoch0\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 101,\n 112,\n 111,\n 99,\n 104\n ]\n },\n {\n \"kind\": \"const\",\n \"value\": [\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0\n ]\n }\n ]\n }\n },\n {\n \"name\": \"epoch1\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 101,\n 112,\n 111,\n 99,\n 104\n ]\n },\n {\n \"kind\": \"const\",\n \"value\": [\n 1,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0\n ]\n }\n ]\n }\n },\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"token_program\",\n \"address\": \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"\n },\n {\n \"name\": \"associated_token_program\",\n \"address\": \"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\"\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"args\",\n \"type\": {\n \"defined\": {\n \"name\": \"InitializeArgs\"\n }\n }\n }\n ]\n },\n {\n \"name\": \"register_gateway\",\n \"discriminator\": [\n 183,\n 184,\n 135,\n 228,\n 71,\n 191,\n 76,\n 222\n ],\n \"accounts\": [\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true,\n \"relations\": [\n \"protocol_config\"\n ]\n },\n {\n \"name\": \"protocol_config\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"gateway\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 103,\n 97,\n 116,\n 101,\n 119,\n 97,\n 121\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"args.authority\"\n }\n ]\n }\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"args\",\n \"type\": {\n \"defined\": {\n \"name\": \"RegisterGatewayArgs\"\n }\n }\n }\n ]\n },\n {\n \"name\": \"register_node\",\n \"discriminator\": [\n 102,\n 85,\n 117,\n 114,\n 194,\n 188,\n 211,\n 168\n ],\n \"accounts\": [\n {\n \"name\": \"authority\",\n \"signer\": true,\n \"relations\": [\n \"protocol_config\"\n ]\n },\n {\n \"name\": \"node_owner\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"protocol_config\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"registry_state\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 114,\n 101,\n 103,\n 105,\n 115,\n 116,\n 114,\n 121\n ]\n }\n ]\n }\n },\n {\n \"name\": \"current_registry\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 114,\n 101,\n 103,\n 105,\n 115,\n 116,\n 114,\n 121\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"registry_state.current_version\",\n \"account\": \"RegistryState\"\n }\n ]\n }\n },\n {\n \"name\": \"new_registry\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 114,\n 101,\n 103,\n 105,\n 115,\n 116,\n 114,\n 121\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"registry_state.next_version\",\n \"account\": \"RegistryState\"\n }\n ]\n }\n },\n {\n \"name\": \"node\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 110,\n 111,\n 100,\n 101\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"node_owner\"\n }\n ]\n }\n },\n {\n \"name\": \"secp256k1_key_claim\",\n \"writable\": true\n },\n {\n \"name\": \"owner_usdc\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"node_owner\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"token_program\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"protocol_config.usdc_mint\",\n \"account\": \"ProtocolConfig\"\n }\n ],\n \"program\": {\n \"kind\": \"const\",\n \"value\": [\n 140,\n 151,\n 37,\n 143,\n 78,\n 36,\n 137,\n 241,\n 187,\n 61,\n 16,\n 41,\n 20,\n 142,\n 13,\n 131,\n 11,\n 90,\n 19,\n 153,\n 218,\n 255,\n 16,\n 132,\n 4,\n 142,\n 123,\n 216,\n 219,\n 233,\n 248,\n 89\n ]\n }\n }\n },\n {\n \"name\": \"node_deposit_vault\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"registry_state\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"token_program\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"protocol_config.usdc_mint\",\n \"account\": \"ProtocolConfig\"\n }\n ],\n \"program\": {\n \"kind\": \"const\",\n \"value\": [\n 140,\n 151,\n 37,\n 143,\n 78,\n 36,\n 137,\n 241,\n 187,\n 61,\n 16,\n 41,\n 20,\n 142,\n 13,\n 131,\n 11,\n 90,\n 19,\n 153,\n 218,\n 255,\n 16,\n 132,\n 4,\n 142,\n 123,\n 216,\n 219,\n 233,\n 248,\n 89\n ]\n }\n }\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n },\n {\n \"name\": \"token_program\",\n \"address\": \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"\n }\n ],\n \"args\": [\n {\n \"name\": \"args\",\n \"type\": {\n \"defined\": {\n \"name\": \"RegisterNodeArgs\"\n }\n }\n }\n ]\n },\n {\n \"name\": \"reinstate_node\",\n \"discriminator\": [\n 13,\n 253,\n 148,\n 213,\n 56,\n 50,\n 49,\n 121\n ],\n \"accounts\": [\n {\n \"name\": \"caller\",\n \"docs\": [\n \"Permissionless after `frozen_until`; authority may reinstate earlier.\"\n ],\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"protocol_config\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"registry_state\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 114,\n 101,\n 103,\n 105,\n 115,\n 116,\n 114,\n 121\n ]\n }\n ]\n }\n },\n {\n \"name\": \"current_registry\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 114,\n 101,\n 103,\n 105,\n 115,\n 116,\n 114,\n 121\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"registry_state.current_version\",\n \"account\": \"RegistryState\"\n }\n ]\n }\n },\n {\n \"name\": \"new_registry\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 114,\n 101,\n 103,\n 105,\n 115,\n 116,\n 114,\n 121\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"registry_state.next_version\",\n \"account\": \"RegistryState\"\n }\n ]\n }\n },\n {\n \"name\": \"node\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 110,\n 111,\n 100,\n 101\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"node.authority\",\n \"account\": \"Node\"\n }\n ]\n }\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"remove_delegate\",\n \"discriminator\": [\n 94,\n 37,\n 16,\n 59,\n 7,\n 84,\n 97,\n 211\n ],\n \"accounts\": [\n {\n \"name\": \"owner\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"subscription\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 115,\n 117,\n 98,\n 115,\n 99,\n 114,\n 105,\n 112,\n 116,\n 105,\n 111,\n 110\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"owner\"\n }\n ]\n }\n },\n {\n \"name\": \"delegate_account\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 100,\n 101,\n 108,\n 101,\n 103,\n 97,\n 116,\n 101\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"owner\"\n },\n {\n \"kind\": \"arg\",\n \"path\": \"args.delegate\"\n }\n ]\n }\n }\n ],\n \"args\": [\n {\n \"name\": \"args\",\n \"type\": {\n \"defined\": {\n \"name\": \"RemoveDelegateArgs\"\n }\n }\n }\n ]\n },\n {\n \"name\": \"slash_offence\",\n \"discriminator\": [\n 108,\n 88,\n 94,\n 69,\n 17,\n 2,\n 103,\n 124\n ],\n \"accounts\": [\n {\n \"name\": \"reporter\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"protocol_config\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"registry_state\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 114,\n 101,\n 103,\n 105,\n 115,\n 116,\n 114,\n 121\n ]\n }\n ]\n }\n },\n {\n \"name\": \"evidence_registry\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 114,\n 101,\n 103,\n 105,\n 115,\n 116,\n 114,\n 121\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"offence\"\n }\n ]\n }\n },\n {\n \"name\": \"current_registry\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 114,\n 101,\n 103,\n 105,\n 115,\n 116,\n 114,\n 121\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"registry_state.current_version\",\n \"account\": \"RegistryState\"\n }\n ]\n }\n },\n {\n \"name\": \"new_registry\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 114,\n 101,\n 103,\n 105,\n 115,\n 116,\n 114,\n 121\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"registry_state.next_version\",\n \"account\": \"RegistryState\"\n }\n ]\n }\n },\n {\n \"name\": \"punishment_case\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 112,\n 117,\n 110,\n 105,\n 115,\n 104,\n 109,\n 101,\n 110,\n 116\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"offence\"\n }\n ]\n }\n },\n {\n \"name\": \"node_deposit_vault\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"registry_state\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"token_program\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"protocol_config.usdc_mint\",\n \"account\": \"ProtocolConfig\"\n }\n ],\n \"program\": {\n \"kind\": \"const\",\n \"value\": [\n 140,\n 151,\n 37,\n 143,\n 78,\n 36,\n 137,\n 241,\n 187,\n 61,\n 16,\n 41,\n 20,\n 142,\n 13,\n 131,\n 11,\n 90,\n 19,\n 153,\n 218,\n 255,\n 16,\n 132,\n 4,\n 142,\n 123,\n 216,\n 219,\n 233,\n 248,\n 89\n ]\n }\n }\n },\n {\n \"name\": \"treasury\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"protocol_config\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"token_program\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"protocol_config.usdc_mint\",\n \"account\": \"ProtocolConfig\"\n }\n ],\n \"program\": {\n \"kind\": \"const\",\n \"value\": [\n 140,\n 151,\n 37,\n 143,\n 78,\n 36,\n 137,\n 241,\n 187,\n 61,\n 16,\n 41,\n 20,\n 142,\n 13,\n 131,\n 11,\n 90,\n 19,\n 153,\n 218,\n 255,\n 16,\n 132,\n 4,\n 142,\n 123,\n 216,\n 219,\n 233,\n 248,\n 89\n ]\n }\n }\n },\n {\n \"name\": \"reporter_usdc\",\n \"docs\": [\n \"Must already exist. Creating it here would cost two more transaction slots, which the\",\n \"signer list needs more than a reporter needs the convenience.\"\n ],\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"reporter\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"token_program\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"protocol_config.usdc_mint\",\n \"account\": \"ProtocolConfig\"\n }\n ],\n \"program\": {\n \"kind\": \"const\",\n \"value\": [\n 140,\n 151,\n 37,\n 143,\n 78,\n 36,\n 137,\n 241,\n 187,\n 61,\n 16,\n 41,\n 20,\n 142,\n 13,\n 131,\n 11,\n 90,\n 19,\n 153,\n 218,\n 255,\n 16,\n 132,\n 4,\n 142,\n 123,\n 216,\n 219,\n 233,\n 248,\n 89\n ]\n }\n }\n },\n {\n \"name\": \"token_program\",\n \"address\": \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"offence\",\n \"type\": {\n \"defined\": {\n \"name\": \"Offence\"\n }\n }\n }\n ]\n },\n {\n \"name\": \"submit_attestation\",\n \"discriminator\": [\n 238,\n 220,\n 255,\n 105,\n 183,\n 211,\n 40,\n 83\n ],\n \"accounts\": [\n {\n \"name\": \"submitter\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"registry\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 114,\n 101,\n 103,\n 105,\n 115,\n 116,\n 114,\n 121\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"args.attestation.payload.registry_version\"\n }\n ]\n }\n },\n {\n \"name\": \"feed\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 102,\n 101,\n 101,\n 100\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"args.attestation.payload.source_id\"\n },\n {\n \"kind\": \"arg\",\n \"path\": \"args.attestation.payload.signatures_required\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"submitter\"\n }\n ]\n }\n },\n {\n \"name\": \"protocol_config\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"args\",\n \"type\": {\n \"defined\": {\n \"name\": \"SubmitAttestationArgs\"\n }\n }\n }\n ]\n },\n {\n \"name\": \"submit_ticket\",\n \"discriminator\": [\n 180,\n 57,\n 11,\n 108,\n 162,\n 36,\n 145,\n 150\n ],\n \"accounts\": [\n {\n \"name\": \"submitter\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"protocol_config\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"registry\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 114,\n 101,\n 103,\n 105,\n 115,\n 116,\n 114,\n 121\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"attestation.payload.registry_version\"\n }\n ]\n }\n },\n {\n \"name\": \"epoch_state\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 101,\n 112,\n 111,\n 99,\n 104\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"epoch_index\"\n }\n ]\n }\n },\n {\n \"name\": \"gateway\",\n \"docs\": [\n \"Gateway whose authority signed the round dispatch.\"\n ],\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 103,\n 97,\n 116,\n 101,\n 119,\n 97,\n 121\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"gateway.authority\",\n \"account\": \"Gateway\"\n }\n ]\n }\n },\n {\n \"name\": \"ticket_marker\",\n \"writable\": true\n },\n {\n \"name\": \"instructions_sysvar\",\n \"address\": \"Sysvar1nstructions1111111111111111111111111\"\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"epoch\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"attestation\",\n \"type\": {\n \"defined\": {\n \"name\": \"Attestation\"\n }\n }\n },\n {\n \"name\": \"roster_slots\",\n \"type\": {\n \"vec\": \"u16\"\n }\n },\n {\n \"name\": \"coalition_key\",\n \"type\": {\n \"defined\": {\n \"name\": \"CoalitionKey\"\n }\n }\n }\n ]\n },\n {\n \"name\": \"subscribe\",\n \"discriminator\": [\n 254,\n 28,\n 191,\n 138,\n 156,\n 179,\n 183,\n 53\n ],\n \"accounts\": [\n {\n \"name\": \"owner\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"protocol_config\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"plan\"\n },\n {\n \"name\": \"subscription\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 115,\n 117,\n 98,\n 115,\n 99,\n 114,\n 105,\n 112,\n 116,\n 105,\n 111,\n 110\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"owner\"\n }\n ]\n }\n },\n {\n \"name\": \"owner_usdc\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"owner\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"token_program\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"protocol_config.usdc_mint\",\n \"account\": \"ProtocolConfig\"\n }\n ],\n \"program\": {\n \"kind\": \"const\",\n \"value\": [\n 140,\n 151,\n 37,\n 143,\n 78,\n 36,\n 137,\n 241,\n 187,\n 61,\n 16,\n 41,\n 20,\n 142,\n 13,\n 131,\n 11,\n 90,\n 19,\n 153,\n 218,\n 255,\n 16,\n 132,\n 4,\n 142,\n 123,\n 216,\n 219,\n 233,\n 248,\n 89\n ]\n }\n }\n },\n {\n \"name\": \"treasury\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"protocol_config\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"token_program\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"protocol_config.usdc_mint\",\n \"account\": \"ProtocolConfig\"\n }\n ],\n \"program\": {\n \"kind\": \"const\",\n \"value\": [\n 140,\n 151,\n 37,\n 143,\n 78,\n 36,\n 137,\n 241,\n 187,\n 61,\n 16,\n 41,\n 20,\n 142,\n 13,\n 131,\n 11,\n 90,\n 19,\n 153,\n 218,\n 255,\n 16,\n 132,\n 4,\n 142,\n 123,\n 216,\n 219,\n 233,\n 248,\n 89\n ]\n }\n }\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n },\n {\n \"name\": \"token_program\",\n \"address\": \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"\n }\n ],\n \"args\": [\n {\n \"name\": \"plan_type\",\n \"type\": {\n \"defined\": {\n \"name\": \"PlanType\"\n }\n }\n }\n ]\n },\n {\n \"name\": \"sweep_treasury_revenue\",\n \"discriminator\": [\n 72,\n 190,\n 138,\n 104,\n 78,\n 128,\n 112,\n 59\n ],\n \"accounts\": [\n {\n \"name\": \"protocol_config\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"treasury\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"protocol_config\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"token_program\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"protocol_config.usdc_mint\",\n \"account\": \"ProtocolConfig\"\n }\n ],\n \"program\": {\n \"kind\": \"const\",\n \"value\": [\n 140,\n 151,\n 37,\n 143,\n 78,\n 36,\n 137,\n 241,\n 187,\n 61,\n 16,\n 41,\n 20,\n 142,\n 13,\n 131,\n 11,\n 90,\n 19,\n 153,\n 218,\n 255,\n 16,\n 132,\n 4,\n 142,\n 123,\n 216,\n 219,\n 233,\n 248,\n 89\n ]\n }\n }\n },\n {\n \"name\": \"epoch_state\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 101,\n 112,\n 111,\n 99,\n 104\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"open_epoch\"\n }\n ]\n }\n },\n {\n \"name\": \"token_program\",\n \"address\": \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"\n }\n ],\n \"args\": [\n {\n \"name\": \"open_epoch\",\n \"type\": \"u64\"\n }\n ]\n },\n {\n \"name\": \"update_config\",\n \"discriminator\": [\n 29,\n 158,\n 252,\n 191,\n 10,\n 83,\n 219,\n 99\n ],\n \"accounts\": [\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true,\n \"relations\": [\n \"protocol_config\"\n ]\n },\n {\n \"name\": \"protocol_config\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n }\n ],\n \"args\": [\n {\n \"name\": \"args\",\n \"type\": {\n \"defined\": {\n \"name\": \"UpdateConfigArgs\"\n }\n }\n }\n ]\n },\n {\n \"name\": \"update_node_endpoint\",\n \"discriminator\": [\n 63,\n 119,\n 147,\n 11,\n 73,\n 81,\n 230,\n 155\n ],\n \"accounts\": [\n {\n \"name\": \"node_owner\",\n \"signer\": true\n },\n {\n \"name\": \"node\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 110,\n 111,\n 100,\n 101\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"node_owner\"\n }\n ]\n }\n }\n ],\n \"args\": [\n {\n \"name\": \"args\",\n \"type\": {\n \"defined\": {\n \"name\": \"UpdateNodeEndpointArgs\"\n }\n }\n }\n ]\n },\n {\n \"name\": \"update_plan\",\n \"discriminator\": [\n 119,\n 112,\n 58,\n 60,\n 76,\n 205,\n 1,\n 100\n ],\n \"accounts\": [\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true,\n \"relations\": [\n \"protocol_config\"\n ]\n },\n {\n \"name\": \"protocol_config\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"plan\",\n \"writable\": true\n }\n ],\n \"args\": [\n {\n \"name\": \"config\",\n \"type\": {\n \"defined\": {\n \"name\": \"PlanConfig\"\n }\n }\n }\n ]\n },\n {\n \"name\": \"update_registry_policy\",\n \"discriminator\": [\n 89,\n 241,\n 118,\n 140,\n 129,\n 101,\n 42,\n 161\n ],\n \"accounts\": [\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true,\n \"relations\": [\n \"protocol_config\"\n ]\n },\n {\n \"name\": \"protocol_config\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"registry_state\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 114,\n 101,\n 103,\n 105,\n 115,\n 116,\n 114,\n 121\n ]\n }\n ]\n }\n },\n {\n \"name\": \"current_registry\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 114,\n 101,\n 103,\n 105,\n 115,\n 116,\n 114,\n 121\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"registry_state.current_version\",\n \"account\": \"RegistryState\"\n }\n ]\n }\n },\n {\n \"name\": \"new_registry\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 114,\n 101,\n 103,\n 105,\n 115,\n 116,\n 114,\n 121\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"registry_state.next_version\",\n \"account\": \"RegistryState\"\n }\n ]\n }\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"redundancy_buffer\",\n \"type\": \"u8\"\n }\n ]\n },\n {\n \"name\": \"withdraw_node_deposit\",\n \"discriminator\": [\n 53,\n 141,\n 47,\n 100,\n 83,\n 245,\n 210,\n 6\n ],\n \"accounts\": [\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"protocol_config\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"node\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 110,\n 111,\n 100,\n 101\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"authority\"\n }\n ]\n }\n },\n {\n \"name\": \"registry_state\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 114,\n 101,\n 103,\n 105,\n 115,\n 116,\n 114,\n 121\n ]\n }\n ]\n }\n },\n {\n \"name\": \"node_deposit_vault\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"registry_state\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"token_program\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"protocol_config.usdc_mint\",\n \"account\": \"ProtocolConfig\"\n }\n ],\n \"program\": {\n \"kind\": \"const\",\n \"value\": [\n 140,\n 151,\n 37,\n 143,\n 78,\n 36,\n 137,\n 241,\n 187,\n 61,\n 16,\n 41,\n 20,\n 142,\n 13,\n 131,\n 11,\n 90,\n 19,\n 153,\n 218,\n 255,\n 16,\n 132,\n 4,\n 142,\n 123,\n 216,\n 219,\n 233,\n 248,\n 89\n ]\n }\n }\n },\n {\n \"name\": \"destination\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"authority\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"token_program\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"protocol_config.usdc_mint\",\n \"account\": \"ProtocolConfig\"\n }\n ],\n \"program\": {\n \"kind\": \"const\",\n \"value\": [\n 140,\n 151,\n 37,\n 143,\n 78,\n 36,\n 137,\n 241,\n 187,\n 61,\n 16,\n 41,\n 20,\n 142,\n 13,\n 131,\n 11,\n 90,\n 19,\n 153,\n 218,\n 255,\n 16,\n 132,\n 4,\n 142,\n 123,\n 216,\n 219,\n 233,\n 248,\n 89\n ]\n }\n }\n },\n {\n \"name\": \"token_program\",\n \"address\": \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"\n },\n {\n \"name\": \"associated_token_program\",\n \"address\": \"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\"\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"withdraw_protocol_reserve\",\n \"discriminator\": [\n 68,\n 111,\n 180,\n 79,\n 228,\n 72,\n 116,\n 12\n ],\n \"accounts\": [\n {\n \"name\": \"authority\",\n \"signer\": true,\n \"relations\": [\n \"protocol_config\"\n ]\n },\n {\n \"name\": \"protocol_config\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"treasury\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"protocol_config\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"token_program\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"protocol_config.usdc_mint\",\n \"account\": \"ProtocolConfig\"\n }\n ],\n \"program\": {\n \"kind\": \"const\",\n \"value\": [\n 140,\n 151,\n 37,\n 143,\n 78,\n 36,\n 137,\n 241,\n 187,\n 61,\n 16,\n 41,\n 20,\n 142,\n 13,\n 131,\n 11,\n 90,\n 19,\n 153,\n 218,\n 255,\n 16,\n 132,\n 4,\n 142,\n 123,\n 216,\n 219,\n 233,\n 248,\n 89\n ]\n }\n }\n },\n {\n \"name\": \"destination\",\n \"writable\": true\n },\n {\n \"name\": \"token_program\",\n \"address\": \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"\n }\n ],\n \"args\": [\n {\n \"name\": \"amount\",\n \"type\": \"u64\"\n }\n ]\n }\n ],\n \"accounts\": [\n {\n \"name\": \"Delegate\",\n \"discriminator\": [\n 92,\n 145,\n 166,\n 111,\n 11,\n 38,\n 38,\n 247\n ]\n },\n {\n \"name\": \"EpochState\",\n \"discriminator\": [\n 191,\n 63,\n 139,\n 237,\n 144,\n 12,\n 223,\n 210\n ]\n },\n {\n \"name\": \"Feed\",\n \"discriminator\": [\n 69,\n 191,\n 16,\n 227,\n 132,\n 187,\n 84,\n 227\n ]\n },\n {\n \"name\": \"Gateway\",\n \"discriminator\": [\n 210,\n 132,\n 162,\n 254,\n 10,\n 224,\n 45,\n 86\n ]\n },\n {\n \"name\": \"Node\",\n \"discriminator\": [\n 208,\n 53,\n 1,\n 3,\n 49,\n 122,\n 180,\n 49\n ]\n },\n {\n \"name\": \"Plan\",\n \"discriminator\": [\n 161,\n 231,\n 251,\n 119,\n 2,\n 12,\n 162,\n 2\n ]\n },\n {\n \"name\": \"ProtocolConfig\",\n \"discriminator\": [\n 207,\n 91,\n 250,\n 28,\n 152,\n 179,\n 215,\n 209\n ]\n },\n {\n \"name\": \"PunishmentCase\",\n \"discriminator\": [\n 215,\n 186,\n 32,\n 101,\n 142,\n 74,\n 46,\n 130\n ]\n },\n {\n \"name\": \"Registry\",\n \"discriminator\": [\n 47,\n 174,\n 110,\n 246,\n 184,\n 182,\n 252,\n 218\n ]\n },\n {\n \"name\": \"RegistryState\",\n \"discriminator\": [\n 29,\n 34,\n 224,\n 195,\n 175,\n 183,\n 99,\n 97\n ]\n },\n {\n \"name\": \"Secp256k1KeyClaim\",\n \"discriminator\": [\n 128,\n 160,\n 40,\n 228,\n 165,\n 251,\n 194,\n 86\n ]\n },\n {\n \"name\": \"Subscription\",\n \"discriminator\": [\n 64,\n 7,\n 26,\n 135,\n 102,\n 132,\n 98,\n 33\n ]\n },\n {\n \"name\": \"TicketMarker\",\n \"discriminator\": [\n 1,\n 117,\n 194,\n 234,\n 146,\n 15,\n 115,\n 255\n ]\n }\n ],\n \"events\": [\n {\n \"name\": \"DelegateAdded\",\n \"discriminator\": [\n 96,\n 159,\n 58,\n 144,\n 26,\n 171,\n 141,\n 70\n ]\n },\n {\n \"name\": \"DelegateRemoved\",\n \"discriminator\": [\n 91,\n 243,\n 235,\n 175,\n 109,\n 235,\n 217,\n 84\n ]\n },\n {\n \"name\": \"DelegateStatusChanged\",\n \"discriminator\": [\n 188,\n 202,\n 137,\n 41,\n 54,\n 213,\n 14,\n 92\n ]\n },\n {\n \"name\": \"EpochClosed\",\n \"discriminator\": [\n 21,\n 4,\n 48,\n 56,\n 29,\n 169,\n 77,\n 42\n ]\n },\n {\n \"name\": \"EpochCreated\",\n \"discriminator\": [\n 191,\n 150,\n 240,\n 63,\n 59,\n 212,\n 233,\n 124\n ]\n },\n {\n \"name\": \"EpochFinalized\",\n \"discriminator\": [\n 109,\n 54,\n 231,\n 81,\n 101,\n 249,\n 145,\n 107\n ]\n },\n {\n \"name\": \"EpochRewardCredited\",\n \"discriminator\": [\n 12,\n 42,\n 166,\n 244,\n 196,\n 241,\n 134,\n 186\n ]\n },\n {\n \"name\": \"FeedUpdated\",\n \"discriminator\": [\n 200,\n 60,\n 190,\n 86,\n 247,\n 9,\n 50,\n 81\n ]\n },\n {\n \"name\": \"GatewayDeactivated\",\n \"discriminator\": [\n 67,\n 206,\n 26,\n 221,\n 251,\n 18,\n 50,\n 73\n ]\n },\n {\n \"name\": \"GatewayRegistered\",\n \"discriminator\": [\n 171,\n 121,\n 170,\n 61,\n 195,\n 155,\n 35,\n 98\n ]\n },\n {\n \"name\": \"NodeDeactivated\",\n \"discriminator\": [\n 74,\n 15,\n 22,\n 250,\n 74,\n 89,\n 202,\n 244\n ]\n },\n {\n \"name\": \"NodeDepositWithdrawn\",\n \"discriminator\": [\n 144,\n 148,\n 204,\n 72,\n 127,\n 171,\n 1,\n 39\n ]\n },\n {\n \"name\": \"NodeEndpointUpdated\",\n \"discriminator\": [\n 121,\n 121,\n 209,\n 202,\n 113,\n 134,\n 46,\n 240\n ]\n },\n {\n \"name\": \"NodePunished\",\n \"discriminator\": [\n 5,\n 220,\n 63,\n 21,\n 153,\n 202,\n 80,\n 79\n ]\n },\n {\n \"name\": \"NodeRegistered\",\n \"discriminator\": [\n 15,\n 57,\n 183,\n 59,\n 93,\n 55,\n 157,\n 195\n ]\n },\n {\n \"name\": \"NodeReinstated\",\n \"discriminator\": [\n 45,\n 0,\n 72,\n 79,\n 131,\n 183,\n 198,\n 205\n ]\n },\n {\n \"name\": \"OffenceProven\",\n \"discriminator\": [\n 33,\n 127,\n 13,\n 247,\n 209,\n 98,\n 62,\n 116\n ]\n },\n {\n \"name\": \"PlanAdded\",\n \"discriminator\": [\n 253,\n 31,\n 157,\n 223,\n 171,\n 1,\n 203,\n 207\n ]\n },\n {\n \"name\": \"PlanUpdated\",\n \"discriminator\": [\n 49,\n 51,\n 198,\n 31,\n 170,\n 70,\n 253,\n 195\n ]\n },\n {\n \"name\": \"ProtocolConfigUpdated\",\n \"discriminator\": [\n 20,\n 99,\n 32,\n 237,\n 111,\n 86,\n 195,\n 199\n ]\n },\n {\n \"name\": \"ProtocolInitialized\",\n \"discriminator\": [\n 173,\n 122,\n 168,\n 254,\n 9,\n 118,\n 76,\n 132\n ]\n },\n {\n \"name\": \"ProtocolReserveWithdrawn\",\n \"discriminator\": [\n 116,\n 158,\n 232,\n 233,\n 174,\n 58,\n 218,\n 183\n ]\n },\n {\n \"name\": \"RegistryUpdated\",\n \"discriminator\": [\n 152,\n 3,\n 201,\n 176,\n 91,\n 63,\n 47,\n 83\n ]\n },\n {\n \"name\": \"RevenueSwept\",\n \"discriminator\": [\n 57,\n 110,\n 215,\n 130,\n 155,\n 53,\n 55,\n 28\n ]\n },\n {\n \"name\": \"RewardsClaimed\",\n \"discriminator\": [\n 75,\n 98,\n 88,\n 18,\n 219,\n 112,\n 88,\n 121\n ]\n },\n {\n \"name\": \"Subscribed\",\n \"discriminator\": [\n 135,\n 59,\n 105,\n 76,\n 190,\n 236,\n 138,\n 228\n ]\n },\n {\n \"name\": \"SubscriptionExtended\",\n \"discriminator\": [\n 149,\n 17,\n 152,\n 209,\n 131,\n 145,\n 5,\n 6\n ]\n },\n {\n \"name\": \"TicketMarkerClosed\",\n \"discriminator\": [\n 109,\n 122,\n 80,\n 119,\n 203,\n 4,\n 131,\n 160\n ]\n },\n {\n \"name\": \"TicketRosterOverflow\",\n \"discriminator\": [\n 147,\n 69,\n 132,\n 24,\n 191,\n 8,\n 117,\n 185\n ]\n },\n {\n \"name\": \"TicketSubmitted\",\n \"discriminator\": [\n 190,\n 48,\n 169,\n 171,\n 61,\n 217,\n 169,\n 249\n ]\n }\n ],\n \"errors\": [\n {\n \"code\": 6000,\n \"name\": \"InvalidMinSigners\",\n \"msg\": \"invalid min signers\"\n },\n {\n \"code\": 6001,\n \"name\": \"InvalidTimestamp\",\n \"msg\": \"invalid timestamp\"\n },\n {\n \"code\": 6002,\n \"name\": \"InvalidMint\",\n \"msg\": \"invalid usdc mint\"\n },\n {\n \"code\": 6003,\n \"name\": \"InvalidNodeIndex\",\n \"msg\": \"Signer index outside node_count(version)\"\n },\n {\n \"code\": 6004,\n \"name\": \"InvalidNodeAccount\",\n \"msg\": \"Node account does not match expected index/owner\"\n },\n {\n \"code\": 6005,\n \"name\": \"UnauthorizedNodeAuthority\",\n \"msg\": \"Caller is not node.owner or registry.authority\"\n },\n {\n \"code\": 6006,\n \"name\": \"NodeCapExceeded\",\n \"msg\": \"pending_node_count >= registry.node_count or node_index_hint >= registry.node_count\"\n },\n {\n \"code\": 6007,\n \"name\": \"InvalidPoP\",\n \"msg\": \"PoP Schnorr verification failed at registration\"\n },\n {\n \"code\": 6008,\n \"name\": \"NodeNotActive\",\n \"msg\": \"Instruction requires Active node status\"\n },\n {\n \"code\": 6009,\n \"name\": \"PubkeyNotOnCurve\",\n \"msg\": \"Submitted compressed pubkey does not decompress to a valid curve point\"\n },\n {\n \"code\": 6010,\n \"name\": \"InvalidRegistryVersion\",\n \"msg\": \"registry version or version-addressed registry account is invalid\"\n },\n {\n \"code\": 6011,\n \"name\": \"RegistryNotActive\",\n \"msg\": \"registry is not active\"\n },\n {\n \"code\": 6012,\n \"name\": \"InvalidSourceId\",\n \"msg\": \"source_id does not match feed.source_id\"\n },\n {\n \"code\": 6013,\n \"name\": \"RegistryPolicyUnchanged\",\n \"msg\": \"new redundancy buffer must differ from the current registry policy\"\n },\n {\n \"code\": 6014,\n \"name\": \"InvalidRedundancyBuffer\",\n \"msg\": \"redundancy buffer must be between 1 and 8\"\n },\n {\n \"code\": 6015,\n \"name\": \"InvalidGatewayEndpoint\",\n \"msg\": \"Gateway endpoint is invalid\"\n },\n {\n \"code\": 6016,\n \"name\": \"InvalidNodeEndpoint\",\n \"msg\": \"Node endpoint is invalid\"\n },\n {\n \"code\": 6017,\n \"name\": \"InvalidSignature\",\n \"msg\": \"Invalid aggregate signature\"\n },\n {\n \"code\": 6018,\n \"name\": \"GroupBitmapDerivationFailed\",\n \"msg\": \"Could not derive group bitmap\"\n },\n {\n \"code\": 6019,\n \"name\": \"InvalidSignersBitmap\",\n \"msg\": \"Signers bitmap contains out-of-range indices\"\n },\n {\n \"code\": 6020,\n \"name\": \"PlanNotActive\",\n \"msg\": \"plan exists but is_active is false\"\n },\n {\n \"code\": 6021,\n \"name\": \"InvalidPlanParams\",\n \"msg\": \"invalid plan quorum or signer parameters\"\n },\n {\n \"code\": 6022,\n \"name\": \"InvalidDelegateLimits\",\n \"msg\": \"invalid delegate limit parameters\"\n },\n {\n \"code\": 6023,\n \"name\": \"DelegateCannotBeOwner\",\n \"msg\": \"delegate cannot be the owner\"\n },\n {\n \"code\": 6024,\n \"name\": \"DelegateCapReached\",\n \"msg\": \"subscription delegate_count >= plan.max_delegates\"\n },\n {\n \"code\": 6025,\n \"name\": \"InvalidRegistrationSalt\",\n \"msg\": \"registration_salt must not be zero\"\n },\n {\n \"code\": 6026,\n \"name\": \"InsufficientSigners\",\n \"msg\": \"popcount(signers_bitmap) < signatures_required\"\n },\n {\n \"code\": 6027,\n \"name\": \"SignaturesBelowMinSigners\",\n \"msg\": \"signatures_required is below protocol min_signers\"\n },\n {\n \"code\": 6028,\n \"name\": \"SignersNotSubsetOfSelection\",\n \"msg\": \"Signer bits outside selection bitmap\"\n },\n {\n \"code\": 6029,\n \"name\": \"InvalidAggregateSignature\",\n \"msg\": \"PoP-Schnorr aggregate verification failed\"\n },\n {\n \"code\": 6030,\n \"name\": \"FeedNotNewer\",\n \"msg\": \"canonical_timestamp <= feed.canonical_timestamp\"\n },\n {\n \"code\": 6031,\n \"name\": \"SignaturesRequiredMismatch\",\n \"msg\": \"signatures_required does not match feed.signatures_required\"\n },\n {\n \"code\": 6032,\n \"name\": \"MissingSignerAccount\",\n \"msg\": \"Missing or mis-ordered signer slot version account\"\n },\n {\n \"code\": 6033,\n \"name\": \"SubscriptionNotActive\",\n \"msg\": \"subscription has expired\"\n },\n {\n \"code\": 6034,\n \"name\": \"QuorumBelowThreshold\",\n \"msg\": \"popcount(signers_bitmap) < signatures_required\"\n },\n {\n \"code\": 6035,\n \"name\": \"GatewayNotActive\",\n \"msg\": \"gateway is not active\"\n },\n {\n \"code\": 6036,\n \"name\": \"NothingToClaim\",\n \"msg\": \"no claimable rewards\"\n },\n {\n \"code\": 6037,\n \"name\": \"InvalidWithdrawalState\",\n \"msg\": \"account is not in a state that permits withdrawal\"\n },\n {\n \"code\": 6038,\n \"name\": \"NothingToWithdraw\",\n \"msg\": \"withdrawable balance is zero\"\n },\n {\n \"code\": 6039,\n \"name\": \"WithdrawalCooldownActive\",\n \"msg\": \"withdrawal cooldown has not elapsed\"\n },\n {\n \"code\": 6040,\n \"name\": \"WithdrawalArithmeticOverflow\",\n \"msg\": \"withdrawal deadline arithmetic overflow\"\n },\n {\n \"code\": 6041,\n \"name\": \"InvalidWithdrawalCooldown\",\n \"msg\": \"withdrawal cooldown must be positive and fit a slot deadline\"\n },\n {\n \"code\": 6042,\n \"name\": \"InvalidInstructionsSysvar\",\n \"msg\": \"instructions sysvar account is invalid\"\n },\n {\n \"code\": 6043,\n \"name\": \"CreditedExceedsSelection\",\n \"msg\": \"credited signer count exceeds signatures_required + redundancy_buffer\"\n },\n {\n \"code\": 6044,\n \"name\": \"InvalidRawValue\",\n \"msg\": \"raw value exceeds Feed::MAX_VALUE_LEN or does not match the hash of the attestation value\"\n },\n {\n \"code\": 6045,\n \"name\": \"EquivocationSameStatement\",\n \"msg\": \"equivocation requires two attestations for one duty with different values\"\n },\n {\n \"code\": 6046,\n \"name\": \"NotEquivocation\",\n \"msg\": \"attestations do not sign different values for one duty\"\n },\n {\n \"code\": 6047,\n \"name\": \"EvidenceHashMismatch\",\n \"msg\": \"recomputed evidence hash does not match the supplied evidence_hash\"\n },\n {\n \"code\": 6048,\n \"name\": \"GuiltySetEmpty\",\n \"msg\": \"intersection of the two signer bitmaps is empty\"\n },\n {\n \"code\": 6049,\n \"name\": \"NodeTombstoned\",\n \"msg\": \"node is permanently tombstoned\"\n },\n {\n \"code\": 6050,\n \"name\": \"NodeNotFrozen\",\n \"msg\": \"node is not Frozen\"\n },\n {\n \"code\": 6051,\n \"name\": \"NodeStillFrozen\",\n \"msg\": \"node is still inside its freeze window\"\n },\n {\n \"code\": 6052,\n \"name\": \"NodeAlreadyInRegistry\",\n \"msg\": \"node is already present in the current registry\"\n },\n {\n \"code\": 6053,\n \"name\": \"SignersFullySelected\",\n \"msg\": \"every signer was within the derived selection - no unsolicited signer\"\n },\n {\n \"code\": 6054,\n \"name\": \"NothingToPunish\",\n \"msg\": \"every guilty node is already tombstoned\"\n },\n {\n \"code\": 6055,\n \"name\": \"NonceCommitmentMismatch\",\n \"msg\": \"attestations do not share an aggregate nonce commitment\"\n },\n {\n \"code\": 6056,\n \"name\": \"RegistryVersionMismatch\",\n \"msg\": \"attestations have different registry versions, or one older than the feed's\"\n },\n {\n \"code\": 6057,\n \"name\": \"NonceReuseSameMessage\",\n \"msg\": \"attestations sign the same message\"\n },\n {\n \"code\": 6058,\n \"name\": \"PreferEquivocation\",\n \"msg\": \"same duty with different values is equivocation - file it as one\"\n },\n {\n \"code\": 6059,\n \"name\": \"AttestationTooStale\",\n \"msg\": \"canonical_timestamp is older than now - max_settlement_delay_seconds\"\n },\n {\n \"code\": 6060,\n \"name\": \"AttestationInFuture\",\n \"msg\": \"canonical_timestamp is further ahead of cluster time than the allowed drift\"\n },\n {\n \"code\": 6061,\n \"name\": \"InvalidMaxReceiptDelay\",\n \"msg\": \"max_settlement_delay_seconds must be positive and fit a timestamp deadline\"\n },\n {\n \"code\": 6062,\n \"name\": \"TreasuryInsolvent\",\n \"msg\": \"treasury balance cannot back the protocol's reward liability\"\n },\n {\n \"code\": 6063,\n \"name\": \"InvalidChallengerBounty\",\n \"msg\": \"challenger_bounty_bps must not exceed 10000\"\n },\n {\n \"code\": 6064,\n \"name\": \"RewardLiabilityUnderflow\",\n \"msg\": \"reward liability underflow\"\n },\n {\n \"code\": 6065,\n \"name\": \"DepositVaultUnderfunded\",\n \"msg\": \"node deposit vault does not cover the recorded total deposits\"\n },\n {\n \"code\": 6066,\n \"name\": \"TranscriptContextsEqual\",\n \"msg\": \"both transcripts carry the same (b, c) challenge pair\"\n },\n {\n \"code\": 6067,\n \"name\": \"NonCanonicalScalar\",\n \"msg\": \"scalar is zero or not below the secp256k1 curve order\"\n },\n {\n \"code\": 6068,\n \"name\": \"MerkleProofTooDeep\",\n \"msg\": \"merkle proof exceeds the maximum accepted depth\"\n },\n {\n \"code\": 6069,\n \"name\": \"InvalidMerkleProof\",\n \"msg\": \"merkle proof does not connect the leaf to the signed batch root\"\n },\n {\n \"code\": 6070,\n \"name\": \"InvalidBatchSignature\",\n \"msg\": \"commitment batch signature does not verify against the node key\"\n },\n {\n \"code\": 6071,\n \"name\": \"InvalidPartialSignature\",\n \"msg\": \"partial signature does not satisfy the nonce equation\"\n },\n {\n \"code\": 6072,\n \"name\": \"InvalidNoncePoint\",\n \"msg\": \"committed nonce is not a valid secp256k1 point\"\n },\n {\n \"code\": 6073,\n \"name\": \"InvalidMinimumNodeDeposit\",\n \"msg\": \"minimum node deposit must be positive\"\n },\n {\n \"code\": 6074,\n \"name\": \"InvalidRoundPrice\",\n \"msg\": \"base price plus rewards for the maximum signer count must fit u64\"\n },\n {\n \"code\": 6075,\n \"name\": \"RewardOverflow\",\n \"msg\": \"reward or reward liability arithmetic overflowed\"\n },\n {\n \"code\": 6076,\n \"name\": \"UnexpectedSignerAccounts\",\n \"msg\": \"signer account list must contain exactly one account per signer\"\n },\n {\n \"code\": 6077,\n \"name\": \"InvalidCoalitionKey\",\n \"msg\": \"coalition key is not the sum of the signer keys\"\n },\n {\n \"code\": 6078,\n \"name\": \"InvalidEpochLength\",\n \"msg\": \"epoch_len_seconds is outside the allowed bounds\"\n },\n {\n \"code\": 6079,\n \"name\": \"InvalidTicketGrace\",\n \"msg\": \"ticket_grace_seconds must be positive and shorter than the epoch\"\n },\n {\n \"code\": 6080,\n \"name\": \"InvalidTicketTarget\",\n \"msg\": \"target_tickets_per_epoch is outside the allowed bounds\"\n },\n {\n \"code\": 6081,\n \"name\": \"InvalidAvailabilityFloor\",\n \"msg\": \"availability floor must not exceed 10000 bps and needs a positive sample minimum\"\n },\n {\n \"code\": 6082,\n \"name\": \"InvalidProtocolFee\",\n \"msg\": \"protocol_fee_bps must not exceed 10000\"\n },\n {\n \"code\": 6083,\n \"name\": \"EpochNotOpen\",\n \"msg\": \"epoch is not open at the current cluster time\"\n },\n {\n \"code\": 6084,\n \"name\": \"TicketWindowClosed\",\n \"msg\": \"epoch no longer accepts tickets\"\n },\n {\n \"code\": 6085,\n \"name\": \"RoundOutsideEpoch\",\n \"msg\": \"canonical_timestamp is outside the epoch window\"\n },\n {\n \"code\": 6086,\n \"name\": \"NotATicket\",\n \"msg\": \"round does not fall under the epoch ticket threshold\"\n },\n {\n \"code\": 6087,\n \"name\": \"DispatchSigInvalid\",\n \"msg\": \"gateway dispatch signature missing or invalid\"\n },\n {\n \"code\": 6088,\n \"name\": \"InvalidRosterSlot\",\n \"msg\": \"roster slot hint does not match the epoch roster\"\n },\n {\n \"code\": 6089,\n \"name\": \"TicketCapReached\",\n \"msg\": \"epoch ticket cap reached\"\n },\n {\n \"code\": 6090,\n \"name\": \"TicketMarkerNotExpired\",\n \"msg\": \"ticket marker is still inside its epoch ticket window\"\n },\n {\n \"code\": 6091,\n \"name\": \"EpochNotFinalizable\",\n \"msg\": \"epoch ticket window has not ended\"\n },\n {\n \"code\": 6092,\n \"name\": \"EpochNotFinalized\",\n \"msg\": \"epoch is not finalized\"\n },\n {\n \"code\": 6093,\n \"name\": \"InvalidEpochSequence\",\n \"msg\": \"next epoch account does not follow the finalized epoch\"\n },\n {\n \"code\": 6094,\n \"name\": \"NothingToCredit\",\n \"msg\": \"roster slot has no weight or was already credited\"\n },\n {\n \"code\": 6095,\n \"name\": \"EpochNotClosable\",\n \"msg\": \"epoch still has uncredited nodes or is inside its evidence window\"\n },\n {\n \"code\": 6096,\n \"name\": \"NothingToSweep\",\n \"msg\": \"treasury holds no unswept income\"\n },\n {\n \"code\": 6097,\n \"name\": \"InsufficientProtocolReserve\",\n \"msg\": \"amount exceeds the protocol reserve\"\n },\n {\n \"code\": 6098,\n \"name\": \"AvailabilityAboveFloor\",\n \"msg\": \"node availability is not below the epoch payout floor\"\n },\n {\n \"code\": 6099,\n \"name\": \"InactivityAlreadyPunished\",\n \"msg\": \"node was already frozen during this epoch\"\n },\n {\n \"code\": 6100,\n \"name\": \"InvalidRentReceiver\",\n \"msg\": \"rent receiver must be the account that paid for the closed account\"\n }\n ],\n \"types\": [\n {\n \"name\": \"AddDelegateArgs\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"delegate\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"max_data_requests\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"Attestation\",\n \"docs\": [\n \"Payload plus aggregate Schnorr signature.\"\n ],\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"payload\",\n \"type\": {\n \"defined\": {\n \"name\": \"AttestationPayload\"\n }\n }\n },\n {\n \"name\": \"signature\",\n \"type\": {\n \"defined\": {\n \"name\": \"SchnorrSignature\"\n }\n }\n }\n ]\n }\n },\n {\n \"name\": \"AttestationPayload\",\n \"docs\": [\n \"Signed oracle attestation payload.\"\n ],\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"value\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"source_id\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"registry_version\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"signatures_required\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"canonical_timestamp\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"CoalitionKey\",\n \"docs\": [\n \"Affine coalition key `Σ X_i = (x, y)`, big-endian: an untrusted verification input.\",\n \"\",\n \"Supplying it lets the verifier check its Jacobian sum against the key instead of normalizing\",\n \"the sum with a field inversion (see [`CoalitionAccumulator::compressed_pubkey_with_key`]).\",\n \"It is a property of the point, not of the verifier's arithmetic: any secp256k1 library\",\n \"computes it as the plain sum of the signers' public keys, in any order.\",\n \"\",\n \"Not part of the signed message or the cross-VM [`crate::Attestation`]; carry it next to the\",\n \"attestation, e.g. in Solana instruction data.\"\n ],\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"x\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"y\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n }\n ]\n }\n },\n {\n \"name\": \"CommitmentReuseEvidence\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"attestation_a\",\n \"type\": {\n \"defined\": {\n \"name\": \"Attestation\"\n }\n }\n },\n {\n \"name\": \"attestation_b\",\n \"type\": {\n \"defined\": {\n \"name\": \"Attestation\"\n }\n }\n },\n {\n \"name\": \"coalition_key_a\",\n \"docs\": [\n \"Affine sum of `attestation_a`'s signer keys. A verification input, not evidence: it is\",\n \"left out of [`Evidence::hash`], so the case PDA derives from the attestations alone.\"\n ],\n \"type\": {\n \"defined\": {\n \"name\": \"CoalitionKey\"\n }\n }\n },\n {\n \"name\": \"coalition_key_b\",\n \"docs\": [\n \"Affine sum of `attestation_b`'s signer keys; see `coalition_key_a`.\"\n ],\n \"type\": {\n \"defined\": {\n \"name\": \"CoalitionKey\"\n }\n }\n }\n ]\n }\n },\n {\n \"name\": \"CommittedNoncePair\",\n \"docs\": [\n \"The nonce pair committed for one slot, as affine coordinates.\",\n \"\",\n \"Points travel uncompressed so the program never pays for a field square root; both are\",\n \"re-checked on-curve during equation verification.\"\n ],\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"r1_x\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"r1_y\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"r2_x\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"r2_y\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n }\n ]\n }\n },\n {\n \"name\": \"Delegate\",\n \"docs\": [\n \"Owner-scoped delegate authorization. `max_data_requests` is enforced by the gateway at\",\n \"admission, not on chain.\"\n ],\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"owner\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"delegate\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"max_data_requests\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n }\n ]\n }\n },\n {\n \"name\": \"DelegateAdded\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"owner\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"delegate\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"delegate_count\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"added_at\",\n \"type\": \"i64\"\n }\n ]\n }\n },\n {\n \"name\": \"DelegateRemoved\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"owner\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"delegate\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"delegate_count\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"removed_at\",\n \"type\": \"i64\"\n }\n ]\n }\n },\n {\n \"name\": \"DelegateStatusChanged\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"delegate\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"old_status\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"new_status\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"updated_at\",\n \"type\": \"i64\"\n }\n ]\n }\n },\n {\n \"name\": \"EpochClosed\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"epoch\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"residual\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"rolled_into\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"closed_at\",\n \"type\": \"i64\"\n }\n ]\n }\n },\n {\n \"name\": \"EpochCreated\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"epoch\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"start\",\n \"type\": \"i64\"\n },\n {\n \"name\": \"end\",\n \"type\": \"i64\"\n },\n {\n \"name\": \"ticket_grace\",\n \"type\": \"i64\"\n },\n {\n \"name\": \"tau\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"EpochFinalized\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"epoch\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"pool\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"tickets\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"roster_len\",\n \"type\": \"u16\"\n },\n {\n \"name\": \"weight_total\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"weighted_count\",\n \"type\": \"u16\"\n },\n {\n \"name\": \"finalized_at\",\n \"type\": \"i64\"\n }\n ]\n }\n },\n {\n \"name\": \"EpochRewardCredited\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"epoch\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"node\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"weight\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"forfeited\",\n \"docs\": [\n \"The node was tombstoned; its share stays in the epoch residual.\"\n ],\n \"type\": \"bool\"\n }\n ]\n }\n },\n {\n \"name\": \"EpochState\",\n \"docs\": [\n \"One epoch of the reward pool: its window, pinned ticket threshold, swept income and the\",\n \"per-node participation counters fed by tickets.\",\n \"\",\n \"Counters are keyed by an epoch-local roster of `Node` PDAs rather than by registry position,\",\n \"because registry positions move between versions (swap-remove) while one epoch spans several.\",\n \"The roster fills lazily as tickets name nodes for the first time.\",\n \"\",\n \"PDA: `[SEED_PREFIX, epoch.to_le_bytes()]`. Layout has no implicit padding.\"\n ],\n \"serialization\": \"bytemuck\",\n \"repr\": {\n \"kind\": \"c\"\n },\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"epoch\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"start\",\n \"docs\": [\n \"Inclusive window start (unix seconds). Equals the previous epoch's `end`.\"\n ],\n \"type\": \"i64\"\n },\n {\n \"name\": \"end\",\n \"docs\": [\n \"Exclusive window end (unix seconds).\"\n ],\n \"type\": \"i64\"\n },\n {\n \"name\": \"ticket_grace\",\n \"docs\": [\n \"Snapshot of `ticket_grace_seconds` at creation.\"\n ],\n \"type\": \"i64\"\n },\n {\n \"name\": \"tau\",\n \"docs\": [\n \"A round is a ticket when the big-endian `u64` prefix of its ticket hash is below this.\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"pool\",\n \"docs\": [\n \"USDC swept into this epoch while it was open.\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"paid\",\n \"docs\": [\n \"Sum of payouts credited to nodes.\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"weight_total\",\n \"docs\": [\n \"`Σ weight(slot)`, frozen at finalization.\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"tickets\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"sum_signed\",\n \"docs\": [\n \"`Σ signed`, maintained per ticket.\"\n ],\n \"type\": \"u32\"\n },\n {\n \"name\": \"sum_selected\",\n \"docs\": [\n \"`Σ selected`, maintained per ticket.\"\n ],\n \"type\": \"u32\"\n },\n {\n \"name\": \"min_availability_bps\",\n \"docs\": [\n \"Snapshot: availability floor relative to the network inclusion rate, in bps.\"\n ],\n \"type\": \"u16\"\n },\n {\n \"name\": \"min_samples\",\n \"docs\": [\n \"Snapshot: samples below which the availability floor does not apply.\"\n ],\n \"type\": \"u16\"\n },\n {\n \"name\": \"roster_len\",\n \"type\": \"u16\"\n },\n {\n \"name\": \"weighted_count\",\n \"docs\": [\n \"Roster slots with non-zero weight, frozen at finalization.\"\n ],\n \"type\": \"u16\"\n },\n {\n \"name\": \"credited_count\",\n \"docs\": [\n \"Weighted slots already processed by `credit_epoch_rewards`.\"\n ],\n \"type\": \"u16\"\n },\n {\n \"name\": \"finalized\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"rent_payer\",\n \"docs\": [\n \"Receives this account's rent when the epoch is closed.\"\n ],\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"credited\",\n \"docs\": [\n \"Bitmap over roster slots already credited.\"\n ],\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"signed\",\n \"type\": {\n \"array\": [\n \"u16\",\n 256\n ]\n }\n },\n {\n \"name\": \"selected\",\n \"type\": {\n \"array\": [\n \"u16\",\n 256\n ]\n }\n },\n {\n \"name\": \"roster\",\n \"type\": {\n \"array\": [\n {\n \"array\": [\n \"u8\",\n 32\n ]\n },\n 256\n ]\n }\n },\n {\n \"name\": \"min_signers\",\n \"docs\": [\n \"Snapshot of the admission quorum floor for rounds counted in this epoch.\"\n ],\n \"type\": \"u8\"\n },\n {\n \"name\": \"_reserved\",\n \"type\": {\n \"array\": [\n \"u8\",\n 7\n ]\n }\n }\n ]\n }\n },\n {\n \"name\": \"EquivocationEvidence\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"attestation_a\",\n \"type\": {\n \"defined\": {\n \"name\": \"Attestation\"\n }\n }\n },\n {\n \"name\": \"attestation_b\",\n \"type\": {\n \"defined\": {\n \"name\": \"Attestation\"\n }\n }\n },\n {\n \"name\": \"coalition_key_a\",\n \"docs\": [\n \"Affine sum of `attestation_a`'s signer keys. A verification input, not evidence: it is\",\n \"left out of [`Evidence::hash`], so the case PDA derives from the attestations alone.\"\n ],\n \"type\": {\n \"defined\": {\n \"name\": \"CoalitionKey\"\n }\n }\n },\n {\n \"name\": \"coalition_key_b\",\n \"docs\": [\n \"Affine sum of `attestation_b`'s signer keys; see `coalition_key_a`.\"\n ],\n \"type\": {\n \"defined\": {\n \"name\": \"CoalitionKey\"\n }\n }\n }\n ]\n }\n },\n {\n \"name\": \"Feed\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"source_id\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"value\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"value_kind\",\n \"type\": {\n \"defined\": {\n \"name\": \"FeedValueKind\"\n }\n }\n },\n {\n \"name\": \"submitter\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"canonical_timestamp\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"signatures_required\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"signers_bitmap\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"registry_version\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n }\n ]\n }\n },\n {\n \"name\": \"FeedUpdated\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"source_id\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"registry_version\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"canonical_timestamp\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"value\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"value_kind\",\n \"type\": {\n \"defined\": {\n \"name\": \"FeedValueKind\"\n }\n }\n },\n {\n \"name\": \"signers_bitmap\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"last_updated_slot\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"FeedValueKind\",\n \"docs\": [\n \"How to read [`Feed::value`], which is always the signed `AttestationPayload::value`.\"\n ],\n \"type\": {\n \"kind\": \"enum\",\n \"variants\": [\n {\n \"name\": \"Value\"\n },\n {\n \"name\": \"Hash\"\n }\n ]\n }\n },\n {\n \"name\": \"Gateway\",\n \"docs\": [\n \"Protocol-authorized gateway identified by its Solana authority.\",\n \"\",\n \"Holds endpoint metadata and activation status. Keyed by the gateway's authority key, which\",\n \"signs the round dispatches tickets must carry. Gateways hold no funds: x402 payers pay the\",\n \"protocol treasury directly.\"\n ],\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"authority\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"ip\",\n \"type\": {\n \"array\": [\n \"u8\",\n 4\n ]\n }\n },\n {\n \"name\": \"port\",\n \"type\": \"u16\"\n },\n {\n \"name\": \"status\",\n \"type\": {\n \"defined\": {\n \"name\": \"GatewayStatus\"\n }\n }\n },\n {\n \"name\": \"registered_at\",\n \"type\": \"i64\"\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n }\n ]\n }\n },\n {\n \"name\": \"GatewayDeactivated\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"gateway\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"authority\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"deactivated_at\",\n \"type\": \"i64\"\n }\n ]\n }\n },\n {\n \"name\": \"GatewayRegistered\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"authority\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"ip\",\n \"type\": {\n \"array\": [\n \"u8\",\n 4\n ]\n }\n },\n {\n \"name\": \"port\",\n \"type\": \"u16\"\n },\n {\n \"name\": \"registered_at\",\n \"type\": \"i64\"\n }\n ]\n }\n },\n {\n \"name\": \"GatewayStatus\",\n \"type\": {\n \"kind\": \"enum\",\n \"variants\": [\n {\n \"name\": \"Active\"\n },\n {\n \"name\": \"Deactivated\"\n }\n ]\n }\n },\n {\n \"name\": \"InactivityEvidence\",\n \"docs\": [\n \"A node whose availability in a finalized epoch fell below that epoch's payout floor.\",\n \"\",\n \"Proven from the epoch's own counters; `registry_version` / `node_index` locate the node in the\",\n \"current registry so it can be removed. The case hash covers only `(epoch, roster_slot)`, so a\",\n \"node can be punished at most once per epoch, including after reinstatement.\",\n \"\",\n \"Remaining accounts: `[node, epoch_state]`.\"\n ],\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"epoch\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"roster_slot\",\n \"type\": \"u16\"\n },\n {\n \"name\": \"registry_version\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"node_index\",\n \"type\": \"u32\"\n }\n ]\n }\n },\n {\n \"name\": \"InitializeArgs\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"withdrawal_cooldown_slots\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"redundancy_buffer\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"minimum_node_deposit\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"reward_per_signature\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"max_settlement_delay_seconds\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"challenger_bounty_bps\",\n \"type\": \"u16\"\n },\n {\n \"name\": \"usdc_mint\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"x402_round_base\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"min_signers\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"epoch_len_seconds\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"ticket_grace_seconds\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"target_tickets_per_epoch\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"min_availability_bps\",\n \"type\": \"u16\"\n },\n {\n \"name\": \"min_availability_samples\",\n \"type\": \"u16\"\n },\n {\n \"name\": \"protocol_fee_bps\",\n \"type\": \"u16\"\n }\n ]\n }\n },\n {\n \"name\": \"Node\",\n \"docs\": [\n \"Permanent node identity and reward account; never closed or re-keyed.\"\n ],\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"authority\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"secp256k1_pubkey_x\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"secp256k1_pubkey_y\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"status\",\n \"type\": {\n \"defined\": {\n \"name\": \"NodeStatus\"\n }\n }\n },\n {\n \"name\": \"ip\",\n \"type\": {\n \"array\": [\n \"u8\",\n 4\n ]\n }\n },\n {\n \"name\": \"port\",\n \"type\": \"u16\"\n },\n {\n \"name\": \"locked_amount\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"claimable_rewards\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"registered_at\",\n \"type\": \"i64\"\n },\n {\n \"name\": \"withdrawable_slot\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"frozen_until\",\n \"type\": \"i64\"\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n }\n ]\n }\n },\n {\n \"name\": \"NodeDeactivated\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"node\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"node_authority\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"new_registry_version\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"deactivated_at\",\n \"type\": \"i64\"\n }\n ]\n }\n },\n {\n \"name\": \"NodeDepositWithdrawn\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"node\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"node_authority\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"destination\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"withdrawn_at\",\n \"type\": \"i64\"\n }\n ]\n }\n },\n {\n \"name\": \"NodeEndpointUpdated\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"node\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"node_authority\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"ip\",\n \"type\": {\n \"array\": [\n \"u8\",\n 4\n ]\n }\n },\n {\n \"name\": \"port\",\n \"type\": \"u16\"\n },\n {\n \"name\": \"updated_at\",\n \"type\": \"i64\"\n }\n ]\n }\n },\n {\n \"name\": \"NodePunished\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"node\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"authority\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"offence\",\n \"type\": {\n \"defined\": {\n \"name\": \"OffenceKind\"\n }\n }\n },\n {\n \"name\": \"slashed_locked\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"slashed_rewards\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"new_status\",\n \"type\": {\n \"defined\": {\n \"name\": \"NodeStatus\"\n }\n }\n },\n {\n \"name\": \"punished_at\",\n \"type\": \"i64\"\n }\n ]\n }\n },\n {\n \"name\": \"NodeRegistered\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"node\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"index\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"registry_version\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"ip\",\n \"type\": {\n \"array\": [\n \"u8\",\n 4\n ]\n }\n },\n {\n \"name\": \"port\",\n \"type\": \"u16\"\n },\n {\n \"name\": \"security_deposit\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"registered_at\",\n \"type\": \"i64\"\n }\n ]\n }\n },\n {\n \"name\": \"NodeReinstated\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"node\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"node_authority\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"index\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"registry_version\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"reinstated_at\",\n \"type\": \"i64\"\n }\n ]\n }\n },\n {\n \"name\": \"NodeStatus\",\n \"type\": {\n \"kind\": \"enum\",\n \"variants\": [\n {\n \"name\": \"Active\"\n },\n {\n \"name\": \"Deactivated\"\n },\n {\n \"name\": \"Frozen\"\n },\n {\n \"name\": \"Tombstoned\"\n }\n ]\n }\n },\n {\n \"name\": \"NonceReuseEvidence\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"registry_version\",\n \"docs\": [\n \"Registry version that `node_index` indexes into; also bound into the batch signature.\"\n ],\n \"type\": \"u32\"\n },\n {\n \"name\": \"node_index\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"epoch\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"batch_meta\",\n \"docs\": [\n \"Opaque batch header bytes, covered by the signature but not interpreted on-chain.\"\n ],\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"batch_root\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"batch_sig_s\",\n \"docs\": [\n \"Single-key EVM-Schnorr signature over the batch message.\"\n ],\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"batch_commitment_addr\",\n \"type\": {\n \"array\": [\n \"u8\",\n 20\n ]\n }\n },\n {\n \"name\": \"slot\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"nonces\",\n \"type\": {\n \"defined\": {\n \"name\": \"CommittedNoncePair\"\n }\n }\n },\n {\n \"name\": \"merkle_proof\",\n \"type\": {\n \"vec\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n }\n },\n {\n \"name\": \"transcript_a\",\n \"type\": {\n \"defined\": {\n \"name\": \"PartialTranscript\"\n }\n }\n },\n {\n \"name\": \"transcript_b\",\n \"type\": {\n \"defined\": {\n \"name\": \"PartialTranscript\"\n }\n }\n }\n ]\n }\n },\n {\n \"name\": \"Offence\",\n \"docs\": [\n \"Node-fault offence types. Each carries a fixed [`Penalty`] — see [`OffenceKind::penalty`].\"\n ],\n \"type\": {\n \"kind\": \"enum\",\n \"variants\": [\n {\n \"name\": \"Equivocation\",\n \"fields\": [\n {\n \"defined\": {\n \"name\": \"EquivocationEvidence\"\n }\n }\n ]\n },\n {\n \"name\": \"UnsolicitedSigning\",\n \"fields\": [\n {\n \"defined\": {\n \"name\": \"UnsolicitedSigningEvidence\"\n }\n }\n ]\n },\n {\n \"name\": \"CommitmentReuse\",\n \"fields\": [\n {\n \"defined\": {\n \"name\": \"CommitmentReuseEvidence\"\n }\n }\n ]\n },\n {\n \"name\": \"NonceReuse\",\n \"fields\": [\n {\n \"defined\": {\n \"name\": \"NonceReuseEvidence\"\n }\n }\n ]\n },\n {\n \"name\": \"Inactivity\",\n \"fields\": [\n {\n \"defined\": {\n \"name\": \"InactivityEvidence\"\n }\n }\n ]\n }\n ]\n }\n },\n {\n \"name\": \"OffenceKind\",\n \"docs\": [\n \"Fieldless offence identity stored on `PunishmentCase` and in events.\"\n ],\n \"type\": {\n \"kind\": \"enum\",\n \"variants\": [\n {\n \"name\": \"Equivocation\"\n },\n {\n \"name\": \"UnsolicitedSigning\"\n },\n {\n \"name\": \"CommitmentReuse\"\n },\n {\n \"name\": \"NonceReuse\"\n },\n {\n \"name\": \"Inactivity\"\n }\n ]\n }\n },\n {\n \"name\": \"OffenceProven\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"offence\",\n \"type\": {\n \"defined\": {\n \"name\": \"OffenceKind\"\n }\n }\n },\n {\n \"name\": \"guilty_bitmap\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"evidence_hash\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"reporter\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"slashed_total\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"bounty_paid\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"proven_at\",\n \"type\": \"i64\"\n }\n ]\n }\n },\n {\n \"name\": \"PartialTranscript\",\n \"docs\": [\n \"One partial-signature transcript: the challenge scalars and the resulting share.\",\n \"\",\n \"The program never recomputes `b` or `c` from a signing context — the offence is defined purely\",\n \"by the equation `s*G == R1 + b*R2 + c*X`, which is why message transport and commitment lists\",\n \"stay off-chain.\"\n ],\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"b\",\n \"docs\": [\n \"Binding factor.\"\n ],\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"c\",\n \"docs\": [\n \"Challenge.\"\n ],\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"s\",\n \"docs\": [\n \"The node's partial signature scalar.\"\n ],\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n }\n ]\n }\n },\n {\n \"name\": \"Plan\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"plan_type\",\n \"type\": {\n \"defined\": {\n \"name\": \"PlanType\"\n }\n }\n },\n {\n \"name\": \"subscription_price\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"max_signers\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"max_delegates\",\n \"docs\": [\n \"Max delegates/agents an owner on this plan may provision.\"\n ],\n \"type\": \"u32\"\n },\n {\n \"name\": \"max_rounds\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"private_api_enabled\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"is_active\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n }\n ]\n }\n },\n {\n \"name\": \"PlanAdded\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"plan_type\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"subscription_price\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"max_signers\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"max_delegates\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"private_api_enabled\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"is_active\",\n \"type\": \"bool\"\n }\n ]\n }\n },\n {\n \"name\": \"PlanConfig\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"plan_type\",\n \"type\": {\n \"defined\": {\n \"name\": \"PlanType\"\n }\n }\n },\n {\n \"name\": \"subscription_price\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"max_signers\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"max_delegates\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"max_rounds\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"private_api_enabled\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"is_active\",\n \"type\": \"bool\"\n }\n ]\n }\n },\n {\n \"name\": \"PlanType\",\n \"repr\": {\n \"kind\": \"rust\"\n },\n \"type\": {\n \"kind\": \"enum\",\n \"variants\": [\n {\n \"name\": \"Basic\"\n },\n {\n \"name\": \"Standard\"\n },\n {\n \"name\": \"Professional\"\n },\n {\n \"name\": \"Enterprise\"\n }\n ]\n }\n },\n {\n \"name\": \"PlanUpdated\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"plan_type\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"subscription_price\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"max_signers\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"max_delegates\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"private_api_enabled\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"is_active\",\n \"type\": \"bool\"\n }\n ]\n }\n },\n {\n \"name\": \"ProtocolConfig\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"authority\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"usdc_mint\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"reward_per_signature\",\n \"docs\": [\n \"Published x402 pricing input: `x402_round_base + (k + b) · reward_per_signature`.\",\n \"Not read on chain; payouts come from the epoch pool.\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"max_settlement_delay_seconds\",\n \"docs\": [\n \"Max age in seconds of `canonical_timestamp` relative to cluster time at attestation\",\n \"ingress, and the grace period of a superseded registry version.\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"challenger_bounty_bps\",\n \"type\": \"u16\"\n },\n {\n \"name\": \"minimum_node_deposit\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"withdrawal_cooldown_slots\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"x402_round_base\",\n \"docs\": [\n \"Published x402 pricing input; see `reward_per_signature`.\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"reward_liability\",\n \"docs\": [\n \"Sum of every `Node.claimable_rewards`.\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"min_signers\",\n \"docs\": [\n \"Current feed-admission floor; copied into each new epoch for ticket verification.\"\n ],\n \"type\": \"u8\"\n },\n {\n \"name\": \"epoch_len_seconds\",\n \"docs\": [\n \"Length of epochs created from now on.\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"ticket_grace_seconds\",\n \"docs\": [\n \"Late-ticket window after an epoch ends, for epochs created from now on.\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"target_tickets_per_epoch\",\n \"docs\": [\n \"Ticket count per epoch the threshold controller aims for.\"\n ],\n \"type\": \"u32\"\n },\n {\n \"name\": \"min_availability_bps\",\n \"docs\": [\n \"Payout floor relative to the network inclusion rate, in bps, for new epochs.\"\n ],\n \"type\": \"u16\"\n },\n {\n \"name\": \"min_availability_samples\",\n \"docs\": [\n \"Selections below which the availability floor does not apply, for new epochs.\"\n ],\n \"type\": \"u16\"\n },\n {\n \"name\": \"protocol_fee_bps\",\n \"docs\": [\n \"Share of all swept income kept by the protocol; the rest joins the epoch pool.\"\n ],\n \"type\": \"u16\"\n },\n {\n \"name\": \"pool_liability\",\n \"docs\": [\n \"Sum of `pool - paid` over every epoch not yet closed.\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"protocol_reserved\",\n \"docs\": [\n \"Protocol fees and slashing proceeds held in the treasury.\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n }\n ]\n }\n },\n {\n \"name\": \"ProtocolConfigUpdated\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"reward_per_signature\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"max_settlement_delay_seconds\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"challenger_bounty_bps\",\n \"type\": \"u16\"\n },\n {\n \"name\": \"minimum_node_deposit\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"withdrawal_cooldown_slots\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"x402_round_base\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"min_signers\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"epoch_len_seconds\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"ticket_grace_seconds\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"target_tickets_per_epoch\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"min_availability_bps\",\n \"type\": \"u16\"\n },\n {\n \"name\": \"min_availability_samples\",\n \"type\": \"u16\"\n },\n {\n \"name\": \"protocol_fee_bps\",\n \"type\": \"u16\"\n }\n ]\n }\n },\n {\n \"name\": \"ProtocolInitialized\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"protocol_config\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"registry_state\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"registry\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"treasury\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"node_deposit_vault\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"authority\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"usdc_mint\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"initialized_at\",\n \"type\": \"i64\"\n }\n ]\n }\n },\n {\n \"name\": \"ProtocolReserveWithdrawn\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"destination\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"withdrawn_at\",\n \"type\": \"i64\"\n }\n ]\n }\n },\n {\n \"name\": \"PunishmentCase\",\n \"docs\": [\n \"Permanent, on-chain record of an executed node punishment.\",\n \"\",\n \"The PDA is seeded by `evidence_hash`, so `init` doubles as the anti-replay guard: the same\",\n \"evidence can only ever be submitted once, independent of any per-offence terminal-status guard.\"\n ],\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"offence\",\n \"type\": {\n \"defined\": {\n \"name\": \"OffenceKind\"\n }\n }\n },\n {\n \"name\": \"reporter\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"registry_version\",\n \"docs\": [\n \"Registry version the guilty bitmap indexes into.\"\n ],\n \"type\": \"u32\"\n },\n {\n \"name\": \"guilty_bitmap\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"guilty_count\",\n \"type\": \"u16\"\n },\n {\n \"name\": \"slashed_total\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"bounty_paid\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"evidence_hash\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"executed_slot\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n }\n ]\n }\n },\n {\n \"name\": \"RegisterGatewayArgs\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"authority\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"ip\",\n \"type\": {\n \"array\": [\n \"u8\",\n 4\n ]\n }\n },\n {\n \"name\": \"port\",\n \"type\": \"u16\"\n }\n ]\n }\n },\n {\n \"name\": \"RegisterNodeArgs\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"registration_salt\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"ip\",\n \"type\": {\n \"array\": [\n \"u8\",\n 4\n ]\n }\n },\n {\n \"name\": \"port\",\n \"type\": \"u16\"\n },\n {\n \"name\": \"secp256k1_pubkey_compressed\",\n \"type\": {\n \"array\": [\n \"u8\",\n 33\n ]\n }\n },\n {\n \"name\": \"pop_sig_r\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"pop_sig_s\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n }\n ]\n }\n },\n {\n \"name\": \"Registry\",\n \"docs\": [\n \"Immutable, version-addressed snapshot of the ordered node set and selection policy.\",\n \"\",\n \"Only `nodes[..node_count]` is populated. Node addresses are stored as bytes to keep the\",\n \"zero-copy layout POD-safe. `SPACE` includes the Anchor discriminator.\"\n ],\n \"serialization\": \"bytemuck\",\n \"repr\": {\n \"kind\": \"c\"\n },\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"version\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"node_count\",\n \"type\": \"u16\"\n },\n {\n \"name\": \"redundancy_buffer\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"nodes\",\n \"type\": {\n \"array\": [\n {\n \"array\": [\n \"u8\",\n 32\n ]\n },\n 256\n ]\n }\n },\n {\n \"name\": \"grace_active_until\",\n \"type\": \"i64\"\n },\n {\n \"name\": \"active_from\",\n \"docs\": [\n \"Inclusive creation time. A version cannot verify a round dated before it existed.\"\n ],\n \"type\": \"i64\"\n }\n ]\n }\n },\n {\n \"name\": \"RegistryState\",\n \"docs\": [\n \"Mutable pointer to the current immutable registry snapshot.\"\n ],\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"current_version\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"next_version\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n }\n ]\n }\n },\n {\n \"name\": \"RegistryUpdated\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"new_version\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"node_count\",\n \"type\": \"u16\"\n },\n {\n \"name\": \"redundancy_buffer\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"reason\",\n \"type\": {\n \"defined\": {\n \"name\": \"RegistryVersionReason\"\n }\n }\n },\n {\n \"name\": \"updated_at\",\n \"type\": \"i64\"\n }\n ]\n }\n },\n {\n \"name\": \"RegistryVersionReason\",\n \"type\": {\n \"kind\": \"enum\",\n \"variants\": [\n {\n \"name\": \"NodeAdded\"\n },\n {\n \"name\": \"NodeRemoved\"\n },\n {\n \"name\": \"PolicyChanged\"\n },\n {\n \"name\": \"NodePunished\"\n },\n {\n \"name\": \"NodeReinstated\"\n }\n ]\n }\n },\n {\n \"name\": \"RemoveDelegateArgs\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"delegate\",\n \"type\": \"pubkey\"\n }\n ]\n }\n },\n {\n \"name\": \"RevenueSwept\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"epoch\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"gross\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"protocol_fee\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"pool_share\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"swept_at\",\n \"type\": \"i64\"\n }\n ]\n }\n },\n {\n \"name\": \"RewardsClaimed\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"beneficiary\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"claimed_at\",\n \"type\": \"i64\"\n }\n ]\n }\n },\n {\n \"name\": \"SchnorrSignature\",\n \"docs\": [\n \"Aggregate Schnorr signature material.\"\n ],\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"agg_sig_s\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"commitment\",\n \"type\": {\n \"array\": [\n \"u8\",\n 20\n ]\n }\n },\n {\n \"name\": \"signers_bitmap\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n }\n ]\n }\n },\n {\n \"name\": \"Secp256k1KeyClaim\",\n \"docs\": [\n \"Permanent reservation for a secp256k1 node key.\"\n ],\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"node_pubkey\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n }\n ]\n }\n },\n {\n \"name\": \"SubmitAttestationArgs\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"attestation\",\n \"type\": {\n \"defined\": {\n \"name\": \"Attestation\"\n }\n }\n },\n {\n \"name\": \"raw_value\",\n \"docs\": [\n \"Preimage of `attestation.payload.value` for values longer than 32 bytes. When present the\",\n \"signed value must be `keccak256(raw_value)` and the feed stores it as\",\n \"[`FeedValueKind::Hash`].\"\n ],\n \"type\": {\n \"option\": \"bytes\"\n }\n },\n {\n \"name\": \"coalition_key\",\n \"docs\": [\n \"Affine sum of the signers' secp256k1 keys (`molpha_verifier::coalition_key`, or any\",\n \"library's point sum over their `Node` accounts). Unsigned and untrusted: the verifier\",\n \"checks it projectively against its own sum instead of inverting. A wrong key only fails\",\n \"the instruction.\"\n ],\n \"type\": {\n \"defined\": {\n \"name\": \"CoalitionKey\"\n }\n }\n }\n ]\n }\n },\n {\n \"name\": \"Subscribed\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"owner\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"plan_type\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"prepaid_usdc\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"price_snapshot\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"subscribed_at\",\n \"type\": \"i64\"\n },\n {\n \"name\": \"valid_until\",\n \"type\": \"i64\"\n }\n ]\n }\n },\n {\n \"name\": \"Subscription\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"owner\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"plan_type\",\n \"type\": {\n \"defined\": {\n \"name\": \"PlanType\"\n }\n }\n },\n {\n \"name\": \"valid_until\",\n \"type\": \"i64\"\n },\n {\n \"name\": \"max_rounds\",\n \"docs\": [\n \"Round quota per plan snapshot. Enforced by the gateway at admission, not on chain.\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"delegate_count\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"max_delegates\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"max_signers\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n }\n ]\n }\n },\n {\n \"name\": \"SubscriptionExtended\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"owner\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"plan_type\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"extended_at\",\n \"type\": \"i64\"\n },\n {\n \"name\": \"valid_until\",\n \"type\": \"i64\"\n }\n ]\n }\n },\n {\n \"name\": \"TicketMarker\",\n \"docs\": [\n \"Existence marker for a submitted ticket; blocks resubmitting the same round.\",\n \"\",\n \"PDA: `[SEED_PREFIX, ticket_id]`. Once the round's epoch stops accepting tickets the round can\",\n \"never be submitted again, so the marker becomes closable and returns its rent.\"\n ],\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"closable_after\",\n \"docs\": [\n \"The round's epoch ticket deadline (`end + ticket_grace`).\"\n ],\n \"type\": \"i64\"\n },\n {\n \"name\": \"submitter\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n }\n ]\n }\n },\n {\n \"name\": \"TicketMarkerClosed\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"ticket_marker\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"submitter\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"closed_at\",\n \"type\": \"i64\"\n }\n ]\n }\n },\n {\n \"name\": \"TicketRosterOverflow\",\n \"docs\": [\n \"Selected nodes left uncounted because the epoch roster was full.\"\n ],\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"epoch\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"ticket_id\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"uncounted\",\n \"type\": \"u32\"\n }\n ]\n }\n },\n {\n \"name\": \"TicketSubmitted\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"epoch\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"ticket_id\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"gateway\",\n \"docs\": [\n \"Gateway PDA whose authority signed the round dispatch.\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"submitter\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"registry_version\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"signers_bitmap\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n }\n ]\n }\n },\n {\n \"name\": \"UnsolicitedSigningEvidence\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"attestation\",\n \"type\": {\n \"defined\": {\n \"name\": \"Attestation\"\n }\n }\n },\n {\n \"name\": \"coalition_key\",\n \"docs\": [\n \"Affine sum of the attestation's signer keys, intruders included. A verification input,\",\n \"not evidence: it is left out of [`Evidence::hash`], so the case PDA derives from the\",\n \"attestation alone.\"\n ],\n \"type\": {\n \"defined\": {\n \"name\": \"CoalitionKey\"\n }\n }\n }\n ]\n }\n },\n {\n \"name\": \"UpdateConfigArgs\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"withdrawal_cooldown_slots\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"minimum_node_deposit\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"reward_per_signature\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"max_settlement_delay_seconds\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"challenger_bounty_bps\",\n \"type\": \"u16\"\n },\n {\n \"name\": \"x402_round_base\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"min_signers\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"epoch_len_seconds\",\n \"docs\": [\n \"Epoch parameters apply to epochs created after this update, never to existing ones.\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"ticket_grace_seconds\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"target_tickets_per_epoch\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"min_availability_bps\",\n \"type\": \"u16\"\n },\n {\n \"name\": \"min_availability_samples\",\n \"type\": \"u16\"\n },\n {\n \"name\": \"protocol_fee_bps\",\n \"type\": \"u16\"\n }\n ]\n }\n },\n {\n \"name\": \"UpdateNodeEndpointArgs\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"ip\",\n \"type\": {\n \"array\": [\n \"u8\",\n 4\n ]\n }\n },\n {\n \"name\": \"port\",\n \"type\": \"u16\"\n }\n ]\n }\n }\n ]\n}","import type { Idl } from \"@anchor-lang/core\";\nimport idlJson from \"./molpha.json\" with { type: \"json\" };\n\n/**\n * Vendored Molpha Anchor IDL (`target/idl/molpha.json` from the program repo).\n *\n * Re-exported as `MOLPHA_IDL` and used as the default in `MolphaSDK` /\n * `MolphaSolanaClient.create`. Pass `idl` / `programId` only when pinning a\n * different deployment. Keep this copy aligned with the on-chain program you target.\n */\nexport const MOLPHA_IDL = idlJson as Idl;\n\n/** Program address baked into the vendored IDL. */\nexport const MOLPHA_PROGRAM_ADDRESS: string = idlJson.address;\n","/** On-chain subscription plan (`PlanType` in the Molpha program IDL). */\nexport enum PlanType {\n Basic = 0,\n Standard = 1,\n Professional = 2,\n Enterprise = 3,\n}\n\n/** Numeric plan index used for PDA derivation and on-chain reads. */\nexport type PlanId = 0 | 1 | 2 | 3;\n\nconst PLAN_VARIANTS = [\n { basic: {} },\n { standard: {} },\n { professional: {} },\n { enterprise: {} },\n] as const;\n\nexport function planVariant(planId: PlanId): (typeof PLAN_VARIANTS)[number] {\n return PLAN_VARIANTS[planId];\n}\n\nexport function planIdFromVariant(variant: Record<string, unknown>): PlanId {\n const key = Object.keys(variant)[0]?.toLowerCase();\n const idx = [\"basic\", \"standard\", \"professional\", \"enterprise\"].indexOf(key ?? \"\");\n if (idx < 0) throw new Error(`Unknown plan variant: ${JSON.stringify(variant)}`);\n return idx as PlanId;\n}\n","/**\n * `MolphaSolanaClient` — consumer on-chain surface only (subscribe, extend,\n * submitAttestation, readFeed/readPlan/readSubscription/readRegistry,\n * getRegistrySelectionConfig, verifyNodeKeysForPrivateApi). Built from an Anchor\n * `Program` over the vendored IDL (program `3d01170`, \"Epoch settlements\").\n */\nimport {\n AnchorProvider,\n Program,\n web3,\n type Idl,\n type Wallet,\n} from \"@anchor-lang/core\";\nimport { keccak_256 } from \"@noble/hashes/sha3.js\";\nimport BN from \"bn.js\";\nimport type { Address } from \"@solana/kit\";\nimport { type CoalitionKey, computeCoalitionKey } from \"../core/coalition.js\";\nimport { bytesToHex, toFixedBytes } from \"../core/encoding.js\";\nimport {\n normalizeSecp256k1PublicKeyHex,\n secp256k1PublicKeyFromCoordinates,\n} from \"../core/nodeKeys.js\";\nimport type {\n Attestation,\n Node,\n NodeKeyVerifierArgs,\n RegistrySelectionConfig,\n} from \"../core/types.js\";\nimport {\n type RegistryStateView,\n type RegistryView,\n resolveRemainingAccounts,\n} from \"./accounts.js\";\nimport {\n addressFromBytes,\n getAssociatedTokenAddressSync,\n setComputeUnitLimit,\n SYSTEM_PROGRAM_ADDRESS,\n TOKEN_PROGRAM_ADDRESS,\n toSolanaAddress,\n type SolanaAccountMeta,\n type SolanaAddress,\n type SolanaConnection,\n} from \"./kit.js\";\nimport {\n feedPda,\n planPda,\n protocolConfigPda,\n registryPda,\n registryStatePda,\n subscriptionPda,\n} from \"./pdas.js\";\nimport { MOLPHA_IDL, MOLPHA_PROGRAM_ADDRESS } from \"../../idl/index.js\";\nimport { PlanType, planIdFromVariant, planVariant, type PlanId } from \"./plans.js\";\n\nexport { PlanType, type PlanId } from \"./plans.js\";\n\n/** Matches the program CLI default; `submit_attestation` verifies the aggregate on-chain. */\nconst DEFAULT_COMPUTE_UNIT_LIMIT = 1_400_000;\ntype Commitment = NonNullable<ConstructorParameters<typeof AnchorProvider>[2]>[\"commitment\"];\n\nexport interface SubscribeResult {\n signature: string;\n /** USDC base units actually debited from the owner for this subscription. */\n pricePaid: bigint;\n}\n\nexport interface PlanInfo {\n planType: PlanType;\n /** Subscription price in USDC base units (raw u64, e.g. 1_000_000 = 1 USDC at 6 decimals). */\n subscriptionPrice: bigint;\n maxSigners: number;\n maxDelegates: number;\n /** Rounds a subscription on this plan may settle per period. */\n maxRounds: bigint;\n privateApiEnabled: boolean;\n isActive: boolean;\n}\n\n/**\n * On-chain `Subscription`. The program no longer tracks usage: `used_rounds`,\n * `prepaid_usdc` and the locked `price` were removed (round quota is counted by the\n * gateway's off-chain outbox), so there is no on-chain \"rounds used\" figure to read.\n */\nexport interface SubscriptionInfo {\n owner: Address;\n planType: PlanType;\n /** Unix timestamp (seconds) until which the subscription is valid. */\n validUntil: bigint;\n /** Round quota per plan snapshot — enforced by the gateway at admission, not on chain. */\n maxRounds: bigint;\n delegateCount: number;\n maxDelegates: number;\n maxSigners: number;\n}\n\nexport interface SubmitResult {\n signature: string;\n /** Feed PDA written by this submit (`[\"molpha_feed\", sourceId, [signaturesRequired], submitter]`). */\n feed: Address;\n}\n\n/**\n * On-chain `Feed` (Anchor-decoded). `value` is always the signed\n * `AttestationPayload.value` (32 bytes): the oracle value itself when `valueKind` is\n * `value`, or `keccak256(rawValue)` when it is `hash` (the preimage travelled in the\n * submitting instruction). For a tolerance-mode source it is a two's-complement `int256`\n * (see `decodeInt256` / `formatInt256Decimal`).\n */\nexport interface FeedAccount {\n sourceId: number[];\n value: Uint8Array | number[];\n valueKind: { value: Record<string, never> } | { hash: Record<string, never> };\n submitter: Address;\n /** u64 unix seconds. */\n canonicalTimestamp: BN;\n signaturesRequired: number;\n signersBitmap: number[];\n registryVersion: number;\n bump: number;\n}\n\n /** Anchor-encoded `SubmitAttestationArgs` (camelCase field names). */\nexport interface SubmitAttestationArgs {\n attestation: {\n payload: {\n value: number[];\n sourceId: number[];\n registryVersion: number;\n signaturesRequired: number;\n canonicalTimestamp: BN;\n };\n signature: {\n aggSigS: number[];\n commitment: number[];\n signersBitmap: number[];\n };\n };\n /** Optional preimage when `payload.value` is `keccak256(rawValue)`. */\n rawValue: Uint8Array | null;\n coalitionKey: { x: number[]; y: number[] };\n}\n\nexport interface SubmitAttestationOptions {\n computeUnitLimit?: number;\n /**\n * Precomputed signer coalition key. When omitted, the client fetches signer `Node`\n * accounts and sums their secp256k1 keys ({@link computeCoalitionKey}).\n */\n coalitionKey?: CoalitionKey;\n /**\n * Optional value preimage (maximum 256 bytes). Its keccak256 digest must equal\n * `attestation.payload.value`; the program stores that digest with `valueKind.hash`.\n */\n rawValue?: Uint8Array;\n}\n\ninterface NodeAccount {\n secp256k1PubkeyX?: Uint8Array | number[];\n secp256k1PubkeyY?: Uint8Array | number[];\n secp256k1_pubkey_x?: Uint8Array | number[];\n secp256k1_pubkey_y?: Uint8Array | number[];\n}\n\ninterface CreateClientOpts {\n connection: SolanaConnection;\n wallet: Wallet;\n programId?: SolanaAddress;\n idl?: Idl;\n commitment?: Commitment;\n}\n\nexport class MolphaSolanaClient {\n private constructor(\n private readonly program: Program,\n private readonly provider: AnchorProvider,\n readonly programId: Address,\n ) {}\n\n static create(opts: CreateClientOpts): MolphaSolanaClient {\n const programId = toSolanaAddress(opts.programId ?? MOLPHA_PROGRAM_ADDRESS);\n const provider = new AnchorProvider(opts.connection, opts.wallet, {\n commitment: opts.commitment ?? \"confirmed\",\n });\n // Anchor reads the program id from `idl.address`; override it so the\n // caller-supplied programId always wins without mutating the vendored copy.\n const idl: Idl = { ...(opts.idl ?? MOLPHA_IDL), address: programId };\n const program = new Program(idl, provider);\n return new MolphaSolanaClient(program, provider, programId);\n }\n\n private get wallet(): Address {\n return toSolanaAddress(this.provider.wallet.publicKey);\n }\n\n /** Anchor's method/account namespaces are untyped without an IDL type param. */\n private get methods(): any {\n return this.program.methods;\n }\n private get accounts(): any {\n return this.program.account;\n }\n\n /**\n * Current registry version plus the selection inputs of that snapshot\n * (`redundancy_buffer`, `node_count`). Two account reads: `RegistryState`, then the\n * version-addressed `Registry`. Prefer this over {@link getRegistryVersion} when\n * deriving gateway selection bitmaps.\n */\n async getRegistrySelectionConfig(): Promise<Required<RegistrySelectionConfig>> {\n const state = await this.fetchRegistryState();\n const registry = await this.fetchRegistry(state.currentVersion);\n return {\n registryVersion: state.currentVersion,\n redundancyBuffer: registry.redundancyBuffer,\n nodeCount: registry.nodeCount,\n };\n }\n\n async getRegistryVersion(): Promise<number> {\n return (await this.fetchRegistryState()).currentVersion;\n }\n\n /** Read an immutable registry snapshot; defaults to the current version. */\n async readRegistry(version?: number): Promise<RegistryView> {\n const target = version ?? (await this.fetchRegistryState()).currentVersion;\n return this.fetchRegistry(target);\n }\n\n /** Fetch a plan's on-chain terms, including the USDC `subscriptionPrice` charged on `subscribe`. */\n async getPlan(plan: PlanType): Promise<PlanInfo> {\n const info = await this.readPlan(plan);\n if (!info) {\n throw new Error(`plan account not found for ${PlanType[plan] ?? plan}`);\n }\n return info;\n }\n\n /** Read a plan account, or `null` if it has not been initialized. */\n async readPlan(plan: PlanType): Promise<PlanInfo | null> {\n const account = await this.accounts.plan.fetchNullable(planPda(plan as PlanId, this.programId));\n return account ? this.decodePlan(account) : null;\n }\n\n /** Read an owner's subscription, or `null` if they have not subscribed. */\n async readSubscription(owner: SolanaAddress = this.wallet): Promise<SubscriptionInfo | null> {\n const account = await this.accounts.subscription.fetchNullable(\n subscriptionPda(owner, this.programId),\n );\n if (!account) return null;\n return {\n owner: toSolanaAddress(account.owner),\n planType: planIdFromVariant(account.planType) as unknown as PlanType,\n validUntil: BigInt(account.validUntil.toString()),\n maxRounds: BigInt(account.maxRounds.toString()),\n delegateCount: account.delegateCount,\n maxDelegates: account.maxDelegates,\n maxSigners: account.maxSigners,\n };\n }\n\n /**\n * Subscribe to a plan. This **debits USDC** from the owner: the plan's\n * `subscriptionPrice` is transferred to the protocol treasury on-chain.\n *\n * Payment is explicit and must be confirmed: pass `maxPriceUsdc` (USDC base\n * units) as the most you agree to pay. The SDK reads the live on-chain price\n * and aborts before sending the transaction if it exceeds that amount, so a\n * price change between display and confirmation can never silently overcharge.\n * The amount actually paid is returned as `pricePaid`.\n *\n * Use {@link getPlan} to display the current price to the user beforehand.\n */\n async subscribe(\n plan: PlanType,\n opts: { maxPriceUsdc: bigint | number | BN; ownerUsdc?: SolanaAddress },\n ): Promise<SubscribeResult> {\n const planId = plan as PlanId;\n const owner = this.wallet;\n const { usdcMint, treasury } = await this.fetchProtocolTokens();\n const price = await this.confirmPlanPrice(planId, opts.maxPriceUsdc, \"subscribe\");\n const ownerUsdc = opts.ownerUsdc ?? getAssociatedTokenAddressSync(usdcMint, owner);\n\n const signature = await this.methods\n .subscribe(planVariant(planId))\n .accountsPartial({\n owner,\n protocolConfig: protocolConfigPda(this.programId),\n plan: planPda(planId, this.programId),\n subscription: subscriptionPda(owner, this.programId),\n ownerUsdc,\n treasury,\n systemProgram: SYSTEM_PROGRAM_ADDRESS,\n tokenProgram: TOKEN_PROGRAM_ADDRESS,\n })\n .rpc();\n return { signature, pricePaid: price };\n }\n\n /**\n * Extend the current subscription for another period. Like {@link subscribe}\n * this **debits USDC** (the plan's `subscriptionPrice`) and requires explicit\n * payment confirmation via `maxPriceUsdc`.\n */\n async extendSubscription(\n opts: { maxPriceUsdc: bigint | number | BN; ownerUsdc?: SolanaAddress },\n ): Promise<SubscribeResult> {\n const owner = this.wallet;\n const subscription = subscriptionPda(owner, this.programId);\n const sub = await this.accounts.subscription.fetch(subscription);\n const planId = planIdFromVariant(sub.planType);\n const { usdcMint, treasury } = await this.fetchProtocolTokens();\n const price = await this.confirmPlanPrice(planId, opts.maxPriceUsdc, \"extendSubscription\");\n const ownerUsdc = opts.ownerUsdc ?? getAssociatedTokenAddressSync(usdcMint, owner);\n\n const signature = await this.methods\n .extendSubscription()\n .accountsPartial({\n owner,\n protocolConfig: protocolConfigPda(this.programId),\n subscription,\n plan: planPda(planId, this.programId),\n ownerUsdc,\n treasury,\n tokenProgram: TOKEN_PROGRAM_ADDRESS,\n })\n .rpc();\n return { signature, pricePaid: price };\n }\n\n /**\n * Read the live on-chain plan price and verify it does not exceed the amount\n * the caller agreed to pay. Returns the price (USDC base units) on success.\n */\n private async confirmPlanPrice(\n planId: PlanId,\n maxPriceUsdc: bigint | number | BN,\n method: string,\n ): Promise<bigint> {\n const max = toUsdcBaseUnits(maxPriceUsdc, \"maxPriceUsdc\");\n const plan = await this.accounts.plan.fetch(planPda(planId, this.programId));\n const price = BigInt(plan.subscriptionPrice.toString());\n if (price > max) {\n throw new Error(\n `${method}: plan price ${price} USDC base units exceeds the confirmed maximum ${max}. ` +\n \"The on-chain price may have changed — re-confirm the current price before paying.\",\n );\n }\n return price;\n }\n\n /**\n * Submit a gateway attestation via `submit_attestation`. The feed account for\n * `(sourceId, signaturesRequired, submitter)` is created on first use.\n *\n * Per the program, the instruction takes one read-only `Node` account per signer bit\n * (ascending bit order, resolved from the registry snapshot the round was signed\n * against) and a {@link CoalitionKey} argument. Unless `opts.coalitionKey` is given the\n * SDK fetches those `Node` accounts and sums their secp256k1 keys client-side\n * (`computeCoalitionKey`); the program only checks the key, so a wrong one fails the\n * transaction and nothing else.\n *\n * `opts.rawValue` is for values longer than 32 bytes: the signed `payload.value` must be\n * `keccak256(rawValue)`; {@link buildSubmitAttestationArgs} validates that before send.\n */\n async submitAttestation(\n attestation: Attestation,\n opts?: SubmitAttestationOptions,\n ): Promise<SubmitResult> {\n const { payload, signature: schnorr } = attestation;\n const sourceId = toFixedBytes(payload.sourceId, 32, \"sourceId\");\n const submitter = this.wallet;\n const registry = await this.fetchRegistry(payload.registryVersion);\n const remaining = resolveRemainingAccounts(schnorr.signersBitmap, registry);\n assertSignerCount(remaining.length, payload.signaturesRequired, registry);\n const coalitionKey =\n opts?.coalitionKey ?? (await this.computeSignerCoalitionKey(remaining, registry));\n const feed = feedPda(sourceId, payload.signaturesRequired, submitter, this.programId);\n const cuIx = setComputeUnitLimit(opts?.computeUnitLimit ?? DEFAULT_COMPUTE_UNIT_LIMIT);\n\n const signature = await this.methods\n .submitAttestation(\n buildSubmitAttestationArgs(attestation, coalitionKey, opts?.rawValue),\n )\n .accountsPartial({\n submitter,\n registry: registryPda(payload.registryVersion, this.programId),\n feed,\n protocolConfig: protocolConfigPda(this.programId),\n systemProgram: SYSTEM_PROGRAM_ADDRESS,\n })\n .remainingAccounts(remaining)\n .preInstructions([cuIx])\n .rpc();\n return { signature, feed };\n }\n\n /** Sum of the signers' keys, read from their on-chain `Node` accounts (one batched fetch). */\n private async computeSignerCoalitionKey(\n remaining: SolanaAccountMeta[],\n registry: RegistryView,\n ): Promise<CoalitionKey> {\n const accounts: Array<NodeAccount | null> = await this.accounts.node.fetchMultiple(\n remaining.map((meta) => meta.pubkey),\n );\n const keys = accounts.map((account, i) => {\n if (!account) {\n throw new Error(\n `Node account ${remaining[i]!.pubkey.toBase58()} (registry ${registry.version}) does not exist`,\n );\n }\n return {\n x: nodeCoordinate(account, \"secp256k1PubkeyX\", \"secp256k1_pubkey_x\"),\n y: nodeCoordinate(account, \"secp256k1PubkeyY\", \"secp256k1_pubkey_y\"),\n };\n });\n return computeCoalitionKey(keys);\n }\n\n /**\n * Read the feed written by `submitter` (default: this wallet) for\n * `(sourceId, signaturesRequired)`, or `null` before its first submit.\n */\n async readFeed(\n sourceId: string,\n signaturesRequired: number,\n submitter: SolanaAddress = this.wallet,\n ): Promise<FeedAccount | null> {\n const feed = feedPda(\n toFixedBytes(sourceId, 32, \"sourceId\"),\n signaturesRequired,\n submitter,\n this.programId,\n );\n return (await this.accounts.feed.fetchNullable(feed)) as FeedAccount | null;\n }\n\n /**\n * Authenticate gateway-provided private API encryption keys against the\n * on-chain Node accounts of the round's registry snapshot (`registry.nodes[index]`).\n */\n async verifyNodeKeysForPrivateApi(args: NodeKeyVerifierArgs): Promise<void> {\n const registry = await this.fetchRegistry(args.registryVersion);\n const selectedNodes = selectedNodesForVerifier(args);\n\n await Promise.all(\n selectedNodes.map(async (node) => {\n const nodeAddress = registry.nodes[node.index];\n if (node.index >= registry.nodeCount || nodeAddress === undefined) {\n throw new Error(\n `Gateway selected node ${node.index} is outside registry ${registry.version} node_count ${registry.nodeCount}`,\n );\n }\n const account = await this.fetchNodeAccount(nodeAddress, node.index);\n const onChainKey = secp256k1PublicKeyFromCoordinates(\n nodeCoordinate(account, \"secp256k1PubkeyX\", \"secp256k1_pubkey_x\"),\n nodeCoordinate(account, \"secp256k1PubkeyY\", \"secp256k1_pubkey_y\"),\n `Node(${nodeAddress}) secp256k1 public key`,\n );\n const gatewayKey = normalizeSecp256k1PublicKeyHex(\n node.signingKey,\n `Gateway selected node ${node.index} signingKey`,\n );\n if (gatewayKey !== onChainKey) {\n throw new Error(\n `Gateway selected node ${node.index} signingKey does not match on-chain Node(${nodeAddress})`,\n );\n }\n }),\n );\n }\n\n private decodePlan(account: {\n planType: Record<string, unknown>;\n subscriptionPrice: { toString(): string };\n maxSigners: number;\n maxDelegates: number;\n maxRounds: { toString(): string };\n privateApiEnabled: boolean;\n isActive: boolean;\n }): PlanInfo {\n return {\n planType: planIdFromVariant(account.planType) as unknown as PlanType,\n subscriptionPrice: BigInt(account.subscriptionPrice.toString()),\n maxSigners: account.maxSigners,\n maxDelegates: account.maxDelegates,\n maxRounds: BigInt(account.maxRounds.toString()),\n privateApiEnabled: account.privateApiEnabled,\n isActive: account.isActive,\n };\n }\n\n private async fetchRegistryState(): Promise<RegistryStateView> {\n const state = await this.accounts.registryState.fetch(registryStatePda(this.programId));\n return {\n currentVersion: state.currentVersion,\n nextVersion: state.nextVersion,\n };\n }\n\n private async fetchRegistry(version: number): Promise<RegistryView> {\n const registry = await this.accounts.registry.fetch(registryPda(version, this.programId));\n const nodeCount: number = registry.nodeCount;\n const nodes = (registry.nodes as Array<Uint8Array | number[]>)\n .slice(0, nodeCount)\n .map((entry) => addressFromBytes(Uint8Array.from(entry)));\n return {\n version: registry.version,\n nodeCount,\n redundancyBuffer: registry.redundancyBuffer,\n nodes,\n graceActiveUntil: BigInt(registry.graceActiveUntil.toString()),\n activeFrom: BigInt(registry.activeFrom.toString()),\n };\n }\n\n private async fetchNodeAccount(\n nodeAddress: Address,\n selectedNodeIndex: number,\n ): Promise<NodeAccount> {\n try {\n return await this.accounts.node.fetch(nodeAddress);\n } catch (err) {\n const detail = err instanceof Error ? err.message : String(err);\n throw new Error(\n `Failed to fetch on-chain Node(${nodeAddress}) for selected node ${selectedNodeIndex}: ${detail}`,\n );\n }\n }\n\n /** `usdc_mint` from `ProtocolConfig`; the treasury is its ATA owned by the config PDA. */\n private async fetchProtocolTokens(): Promise<{ usdcMint: Address; treasury: Address }> {\n const protocolConfig = protocolConfigPda(this.programId);\n const config = await this.accounts.protocolConfig.fetch(protocolConfig);\n const usdcMint = toSolanaAddress(config.usdcMint);\n return {\n usdcMint,\n treasury: getAssociatedTokenAddressSync(usdcMint, protocolConfig),\n };\n }\n}\n\n/**\n * Build the Anchor `SubmitAttestationArgs` for a gateway result: `{ attestation: { payload,\n * signature }, rawValue, coalitionKey }`. `coalitionKey` is the affine sum of the signers'\n * keys (see `computeCoalitionKey`).\n */\nexport function buildSubmitAttestationArgs(\n attestation: Attestation,\n coalitionKey: CoalitionKey,\n rawValue?: Uint8Array | null,\n): SubmitAttestationArgs {\n const { payload, signature } = attestation;\n const value = toFixedBytes(payload.value, 32, \"payload.value\");\n if (rawValue && rawValue.length > 256) {\n throw new RangeError(`rawValue must be at most 256 bytes, got ${rawValue.length}`);\n }\n if (rawValue && bytesToHex(keccak_256(rawValue)) !== bytesToHex(value)) {\n throw new Error(\"rawValue keccak256 digest does not match attestation.payload.value\");\n }\n return {\n attestation: {\n payload: {\n value: Array.from(toFixedBytes(payload.value, 32, \"payload.value\")),\n sourceId: Array.from(toFixedBytes(payload.sourceId, 32, \"sourceId\")),\n registryVersion: payload.registryVersion,\n signaturesRequired: payload.signaturesRequired,\n canonicalTimestamp: new BN(payload.canonicalTimestamp),\n },\n signature: {\n aggSigS: Array.from(toFixedBytes(signature.s, 32, \"signature.s\")),\n commitment: Array.from(toFixedBytes(signature.commitmentAddr, 20, \"signature.commitmentAddr\")),\n signersBitmap: Array.from(toFixedBytes(signature.signersBitmap, 32, \"signature.signersBitmap\")),\n },\n },\n rawValue: rawValue ? toAnchorBytes(rawValue) : null,\n coalitionKey: {\n x: Array.from(toFixedBytes(coalitionKey.x, 32, \"coalitionKey.x\")),\n y: Array.from(toFixedBytes(coalitionKey.y, 32, \"coalitionKey.y\")),\n },\n };\n}\n\n/**\n * Mirror the program's signer-count bounds (`verify_attestation_core`):\n * `signaturesRequired <= popcount <= signaturesRequired + redundancyBuffer`.\n */\nfunction assertSignerCount(\n signerCount: number,\n signaturesRequired: number,\n registry: RegistryView,\n): void {\n if (signerCount < signaturesRequired) {\n throw new Error(\n `QuorumBelowThreshold: ${signerCount} signers < signaturesRequired ${signaturesRequired}`,\n );\n }\n if (signerCount > signaturesRequired + registry.redundancyBuffer) {\n throw new Error(\n `CreditedExceedsSelection: ${signerCount} signers > signaturesRequired ${signaturesRequired} + redundancy buffer ${registry.redundancyBuffer} of registry ${registry.version}`,\n );\n }\n}\n\n/** Browser-safe byte array accepted by Anchor's Buffer-oriented `bytes` Borsh layout. */\nfunction toAnchorBytes(bytes: Uint8Array): Uint8Array {\n const out = Uint8Array.from(bytes) as Uint8Array & {\n copy(target: Uint8Array, targetStart?: number): number;\n };\n out.copy = (target, targetStart = 0) => {\n target.set(out, targetStart);\n return out.length;\n };\n return out;\n}\n\n/** Normalize a confirmed USDC amount (base units) to `bigint`, rejecting non-integers. */\nfunction toUsdcBaseUnits(amount: bigint | number | BN, label: string): bigint {\n if (typeof amount === \"bigint\") {\n if (amount < 0n) throw new Error(`${label} must be non-negative, got ${amount}`);\n return amount;\n }\n if (typeof amount === \"number\") {\n if (!Number.isInteger(amount) || amount < 0) {\n throw new Error(`${label} must be a non-negative integer of USDC base units, got ${amount}`);\n }\n return BigInt(amount);\n }\n return BigInt(amount.toString());\n}\n\nfunction nodeCoordinate(\n account: NodeAccount,\n camelCaseField: \"secp256k1PubkeyX\" | \"secp256k1PubkeyY\",\n snakeCaseField: \"secp256k1_pubkey_x\" | \"secp256k1_pubkey_y\",\n): Uint8Array {\n const value = account[camelCaseField] ?? account[snakeCaseField];\n if (!(value instanceof Uint8Array) && !Array.isArray(value)) {\n throw new Error(`Node account is missing ${camelCaseField}`);\n }\n return toFixedBytes(Uint8Array.from(value), 32, `Node.${camelCaseField}`);\n}\n\nfunction selectedNodesForVerifier(args: NodeKeyVerifierArgs): Node[] {\n if (args.selectedIndexes.length === 0) {\n throw new Error(\"Private API node-key verification requires at least one selected index\");\n }\n if (args.selectedNodes.length !== args.selectedIndexes.length) {\n throw new Error(\n `Private API node-key verification expected ${args.selectedIndexes.length} selected nodes, got ${args.selectedNodes.length}`,\n );\n }\n\n const expected = new Set<number>();\n for (const index of args.selectedIndexes) {\n if (!Number.isInteger(index) || index < 0) {\n throw new Error(`Private API selected index must be a non-negative integer: ${index}`);\n }\n if (expected.has(index)) {\n throw new Error(`Private API selected index is duplicated: ${index}`);\n }\n expected.add(index);\n }\n\n const byIndex = new Map<number, Node>();\n for (const node of args.selectedNodes) {\n if (!Number.isInteger(node.index) || node.index < 0) {\n throw new Error(\n `Private API selected node index must be a non-negative integer: ${node.index}`,\n );\n }\n if (!expected.has(node.index)) {\n throw new Error(`Private API selected node ${node.index} was not requested`);\n }\n if (byIndex.has(node.index)) {\n throw new Error(`Private API selected node index is duplicated: ${node.index}`);\n }\n byIndex.set(node.index, node);\n }\n\n return args.selectedIndexes.map((index) => {\n const node = byIndex.get(index);\n if (!node) {\n throw new Error(`Private API selected node is missing for index: ${index}`);\n }\n return node;\n });\n}\n","/**\n * Unified wallet surface: Anchor txs + optional gateway authSig signing.\n */\nimport type { Wallet } from \"@anchor-lang/core\";\nimport { ed25519 } from \"@noble/curves/ed25519.js\";\nimport type { Signer } from \"./core/types.js\";\nimport type { SolanaKeypair } from \"./solana/kit.js\";\n\n/** Anchor `Wallet` plus optional gateway auth override. */\nexport type MolphaWallet = Wallet & {\n /**\n * Signs gateway request-auth hashes (`hashRequestAuth`). When omitted, derived from Anchor\n * `Wallet.payer` when the keypair secret is available (Node `Wallet`, etc.).\n */\n signAuthMessage?: Signer;\n};\n\nconst isKeypair = (value: unknown): value is SolanaKeypair =>\n typeof value === \"object\" &&\n value !== null &&\n \"secretKey\" in value &&\n value.secretKey instanceof Uint8Array;\n\n/** ed25519 gateway signer from a Solana keypair's 32-byte seed. */\nexport function signerFromKeypair(keypair: SolanaKeypair): Signer {\n const seed = keypair.secretKey.slice(0, 32);\n return async (message: Uint8Array): Promise<Uint8Array> => ed25519.sign(message, seed);\n}\n\n/** Resolve the gateway auth signer for a Molpha wallet, if available. */\nexport function gatewaySignerFromWallet(wallet: Wallet): Signer | undefined {\n const molpha = wallet as MolphaWallet;\n if (molpha.signAuthMessage) return molpha.signAuthMessage;\n if (\"payer\" in wallet && isKeypair(wallet.payer)) return signerFromKeypair(wallet.payer);\n return undefined;\n}\n","/**\n * Attestation message hash — the digest the node coalition Schnorr-signs and every verifier\n * (Solana program, EVM `VerifierLib.constructMessage`, Starknet) recomputes:\n *\n * message = keccak256(\n * keccak256(\"MOLPHA_MESSAGE_V1\") || value || sourceId || u32be(registryVersion) ||\n * u8(signaturesRequired) || u64be(canonicalTimestamp) || signersBitmap\n * )\n *\n * The preimage is 141 bytes. Widths follow the Rust, Solidity, Solana, and node encoders.\n */\nimport { keccak_256 } from \"@noble/hashes/sha3.js\";\nimport { concatBytes, toFixedBytes, u8, u32be, u64be, utf8 } from \"./encoding.js\";\nimport type { Attestation } from \"./types.js\";\n\n/** `keccak256(\"MOLPHA_MESSAGE_V1\")` domain separator. */\nexport const MESSAGE_PREFIX: Uint8Array = keccak_256(utf8(\"MOLPHA_MESSAGE_V1\"));\n\nexport interface AttestationMessageFields {\n /** 32-byte source id (hex or bytes). */\n sourceId: string | Uint8Array;\n registryVersion: number;\n /** Encoded as a single byte (`uint8`); throws `RangeError` outside `0..255`. */\n signaturesRequired: number;\n /** 32-byte big-endian signers bitmap (hex or bytes). */\n signersBitmap: string | Uint8Array;\n /** 32-byte packed value (hex or bytes). */\n value: string | Uint8Array;\n /** Unix seconds (u64). */\n canonicalTimestamp: number | bigint;\n}\n\n/** Compute the attestation message hash (32 bytes). */\nexport function attestationMessageHash(fields: AttestationMessageFields): Uint8Array {\n if (!Number.isInteger(fields.signaturesRequired) || fields.signaturesRequired < 0 || fields.signaturesRequired > 255) {\n throw new RangeError(`signaturesRequired out of u8 range: ${fields.signaturesRequired}`);\n }\n return keccak_256(\n concatBytes(\n MESSAGE_PREFIX,\n toFixedBytes(fields.value, 32, \"value\"),\n toFixedBytes(fields.sourceId, 32, \"sourceId\"),\n u32be(fields.registryVersion),\n u8(fields.signaturesRequired),\n u64be(fields.canonicalTimestamp),\n toFixedBytes(fields.signersBitmap, 32, \"signersBitmap\"),\n ),\n );\n}\n\n/** Message hash of a completed gateway attestation (`payload.value` is the signed word). */\nexport function attestationMessageHashFromAttestation(attestation: Attestation): Uint8Array {\n const { payload, signature } = attestation;\n return attestationMessageHash({\n sourceId: payload.sourceId,\n registryVersion: payload.registryVersion,\n signaturesRequired: payload.signaturesRequired,\n signersBitmap: signature.signersBitmap,\n value: payload.value,\n canonicalTimestamp: payload.canonicalTimestamp,\n });\n}\n","/**\n * Result codes returned by Molpha's stateless verifier contracts (`verify` on EVM and\n * Starknet). Shared across VMs: the same attestation yields the same code on every chain.\n *\n * Append-only — never renumber. Mirrors `VerifyCodes.sol` in `molpha-core-contracts` and\n * `verify_codes.cairo` in `molpha-starknet`. Two codes belong to mechanisms the verifiers\n * do not implement; they are kept so the numbering can never shift under them.\n */\nexport const VERIFY_CODES = {\n OK: 0,\n /** Reserved. Never returned. */\n FEED_WITNESS: 1,\n /** The payload's `registryVersion` does not exist on this verifier. */\n BAD_REGISTRY_VERSION: 2,\n /** Structurally invalid input, or a `canonicalTimestamp` in the future when `maxAge != 0`. */\n MALFORMED: 3,\n /** `canonicalTimestamp` predates the registry version's activation. */\n NOT_YET_ACTIVE: 4,\n /** The registry version was superseded more than the grace window before `canonicalTimestamp`. */\n VERSION_EXPIRED: 5,\n /** Reserved. Never returned. */\n COMPROMISED_QUORUM: 6,\n /** The signer set is not within the round's derived selection group. */\n BAD_QUORUM: 7,\n /** The signers' aggregate public key is the point at infinity. */\n BAD_AGGREGATE: 8,\n /** The aggregate Schnorr signature does not verify. */\n BAD_SIGNATURE: 9,\n /** Older than the caller's `maxAge`. */\n STALE: 10,\n} as const;\n\nexport type VerifyCodeName = keyof typeof VERIFY_CODES;\nexport type VerifyCode = (typeof VERIFY_CODES)[VerifyCodeName];\n\nconst NAMES_BY_CODE: ReadonlyMap<number, VerifyCodeName> = new Map(\n (Object.entries(VERIFY_CODES) as [VerifyCodeName, VerifyCode][]).map(([name, code]) => [\n code,\n name,\n ]),\n);\n\n/**\n * Name of a verifier result code, or `undefined` for a code this SDK version does not know.\n * Codes are append-only, so an unknown code is a newer verifier, not a malformed response.\n */\nexport function verifyCodeName(code: number): VerifyCodeName | undefined {\n return NAMES_BY_CODE.get(code);\n}\n","/**\n * Molpha EVM verifier ABI: `verify(Attestation, uint64 maxAge) -> (bool, uint8)` plus every\n * read-only registry view on `IVerifier`. Owner-only mutators (`addNode`, `removeNode`,\n * `setRedundancyBuffer`) and `Ownable` plumbing are deliberately left out.\n *\n * Mirrors `IVerifier.sol` in `molpha-core-contracts`. Struct member order is ABI-significant\n * and equals the signed message order, so it is not the flat gateway field order on `Attestation`.\n */\nexport const MOLPHA_VERIFIER_ABI = [\n {\n type: \"function\",\n name: \"verify\",\n stateMutability: \"view\",\n inputs: [\n {\n name: \"attestation\",\n type: \"tuple\",\n internalType: \"struct IVerifier.Attestation\",\n components: [\n {\n name: \"payload\",\n type: \"tuple\",\n internalType: \"struct IVerifier.AttestationPayload\",\n components: [\n { name: \"value\", type: \"bytes32\", internalType: \"bytes32\" },\n { name: \"sourceId\", type: \"bytes32\", internalType: \"bytes32\" },\n { name: \"registryVersion\", type: \"uint32\", internalType: \"uint32\" },\n { name: \"signaturesRequired\", type: \"uint8\", internalType: \"uint8\" },\n { name: \"canonicalTimestamp\", type: \"uint64\", internalType: \"uint64\" },\n ],\n },\n {\n name: \"signature\",\n type: \"tuple\",\n internalType: \"struct IVerifier.SchnorrSignature\",\n components: [\n { name: \"signature\", type: \"bytes32\", internalType: \"bytes32\" },\n { name: \"commitment\", type: \"address\", internalType: \"address\" },\n { name: \"signersBitmap\", type: \"uint256\", internalType: \"uint256\" },\n ],\n },\n ],\n },\n { name: \"maxAge\", type: \"uint64\", internalType: \"uint64\" },\n ],\n outputs: [\n { name: \"success\", type: \"bool\", internalType: \"bool\" },\n { name: \"code\", type: \"uint8\", internalType: \"uint8\" },\n ],\n },\n {\n type: \"function\",\n name: \"getRegistryVersion\",\n stateMutability: \"view\",\n inputs: [],\n outputs: [{ name: \"registryVersion\", type: \"uint256\", internalType: \"uint256\" }],\n },\n {\n type: \"function\",\n name: \"getTotalNodes\",\n stateMutability: \"view\",\n inputs: [],\n outputs: [{ name: \"totalNodes\", type: \"uint256\", internalType: \"uint256\" }],\n },\n {\n type: \"function\",\n name: \"redundancyBuffer\",\n stateMutability: \"view\",\n inputs: [],\n outputs: [{ name: \"\", type: \"uint256\", internalType: \"uint256\" }],\n },\n {\n type: \"function\",\n name: \"getRegistryRoot\",\n stateMutability: \"view\",\n inputs: [],\n outputs: [{ name: \"root\", type: \"bytes32\", internalType: \"bytes32\" }],\n },\n {\n type: \"function\",\n name: \"getRegistryRoot\",\n stateMutability: \"view\",\n inputs: [{ name: \"registryVersion\", type: \"uint256\", internalType: \"uint256\" }],\n outputs: [{ name: \"root\", type: \"bytes32\", internalType: \"bytes32\" }],\n },\n {\n type: \"function\",\n name: \"getRegistryPointer\",\n stateMutability: \"view\",\n inputs: [],\n outputs: [{ name: \"registryPointer\", type: \"address\", internalType: \"address\" }],\n },\n {\n type: \"function\",\n name: \"getRegistryPointer\",\n stateMutability: \"view\",\n inputs: [{ name: \"registryVersion\", type: \"uint256\", internalType: \"uint256\" }],\n outputs: [{ name: \"registryPointer\", type: \"address\", internalType: \"address\" }],\n },\n {\n type: \"function\",\n name: \"activatesAt\",\n stateMutability: \"view\",\n inputs: [{ name: \"registryVersion\", type: \"uint256\", internalType: \"uint256\" }],\n outputs: [{ name: \"ts\", type: \"uint256\", internalType: \"uint256\" }],\n },\n {\n type: \"function\",\n name: \"retiredAt\",\n stateMutability: \"view\",\n inputs: [{ name: \"registryVersion\", type: \"uint256\", internalType: \"uint256\" }],\n outputs: [{ name: \"ts\", type: \"uint256\", internalType: \"uint256\" }],\n },\n {\n type: \"function\",\n name: \"isLatestVersion\",\n stateMutability: \"view\",\n inputs: [{ name: \"registryVersion\", type: \"uint256\", internalType: \"uint256\" }],\n outputs: [{ name: \"latest\", type: \"bool\", internalType: \"bool\" }],\n },\n {\n type: \"function\",\n name: \"nodeStatus\",\n stateMutability: \"view\",\n inputs: [{ name: \"node\", type: \"address\", internalType: \"address\" }],\n outputs: [{ name: \"\", type: \"uint8\", internalType: \"uint8\" }],\n },\n {\n type: \"function\",\n name: \"isNode\",\n stateMutability: \"view\",\n inputs: [{ name: \"node\", type: \"address\", internalType: \"address\" }],\n outputs: [{ name: \"\", type: \"bool\", internalType: \"bool\" }],\n },\n /** Thrown by the per-version views for a version that was never published. `verify` never reverts. */\n { type: \"error\", name: \"InvalidRegistryVersion\", inputs: [] },\n] as const;\n","/**\n * Deployed Molpha verifier contract address on EVM chains.\n * Deployed via CREATE2 for the same address on every supported chain.\n */\n\n/** Supported EVM testnet identifiers (chain selection only). */\nexport type MolphaEvmNetwork =\n | \"evm-sepolia\"\n | \"arbitrum-sepolia\"\n | \"avalanche-fuji\"\n | \"bsc-testnet\";\n\n/** CREATE2 Molpha verifier address — identical on all supported EVM chains. */\nexport const MOLPHA_VERIFIER_ADDRESS =\n \"0xE1fd792b7E54e0C8F0Cd1c8055E446ff36d233eB\" as const;\n","/**\n * EVM verifier helpers — framework-agnostic builders for\n * `verify(Attestation attestation, uint64 maxAge) returns (bool success, uint8 code)` on\n * deployed Molpha verifier contracts, plus a raw calldata encoder and a result decoder.\n *\n * Nothing here depends on ethers or viem. The struct objects use the Solidity member names\n * and viem's primitive types (`uint64`/`uint256` as `bigint`, `uint32`/`uint8` as `number`),\n * so they pass straight into `readContract` with `MOLPHA_VERIFIER_ABI` or into an ethers\n * `Contract`; `encodeEvmVerifyCalldata` produces the bytes for a raw `eth_call`.\n */\nimport {\n bigIntFromBytesBe,\n bytesToHex,\n concatBytes,\n hexToBytes,\n toFixedBytes,\n u256beFromBigInt,\n} from \"../core/encoding.js\";\nimport type { Attestation } from \"../core/types.js\";\nimport { VERIFY_CODES, verifyCodeName, type VerifyCodeName } from \"../core/verifyCodes.js\";\n\n/**\n * `IVerifier.AttestationPayload` — the signed half of an attestation.\n *\n * Member order is the order of the signed message preimage and of the ABI tuple, so it is\n * load bearing — it is not the flat gateway field order on {@link Attestation}.\n */\nexport interface EvmAttestationPayload {\n /** `bytes32` packed value. */\n value: `0x${string}`;\n /** `bytes32` source id. */\n sourceId: `0x${string}`;\n /** `uint32`. */\n registryVersion: number;\n /** `uint8`. */\n signaturesRequired: number;\n /** `uint64`, unix seconds. */\n canonicalTimestamp: bigint;\n}\n\n/** `IVerifier.SchnorrSignature`. */\nexport interface EvmSchnorrSignature {\n /** `bytes32` Schnorr scalar `s`. */\n signature: `0x${string}`;\n /** `address` of the nonce point `R`. */\n commitment: `0x${string}`;\n /** `uint256` signers bitmap; bit `i` is node `i` of the registry version. */\n signersBitmap: bigint;\n}\n\n/** `IVerifier.Attestation`. */\nexport interface EvmAttestation {\n payload: EvmAttestationPayload;\n signature: EvmSchnorrSignature;\n}\n\n/** Positional arguments for `verify(attestation, maxAge)`. */\nexport interface EvmVerifierArgs {\n attestation: EvmAttestation;\n /** Freshness window in seconds (`uint64`). `0n` disables the check. */\n maxAge: bigint;\n}\n\nexport interface BuildEvmVerifierArgsOptions {\n /**\n * Freshness window in seconds. The verifier rejects the attestation with `STALE` when it\n * is older than this, and as `MALFORMED` when it is dated in the future.\n *\n * Required on purpose. `0` disables the check entirely, and that is not a neutral\n * default: the verifier is stateless, so without a window it accepts a correctly signed\n * attestation forever. Pass `0` only when the consuming contract enforces freshness or\n * ordering itself.\n */\n maxAge: number | bigint;\n}\n\n/** Decoded `verify` return value. */\nexport interface EvmVerifyResult {\n success: boolean;\n /** Raw result code — see `VERIFY_CODES`. */\n code: number;\n /** Name of `code`, or `\"UNKNOWN\"` for a code newer than this SDK. */\n reason: VerifyCodeName | \"UNKNOWN\";\n}\n\n/**\n * `bytes4(keccak256(\"verify(((bytes32,bytes32,uint32,uint8,uint64),(bytes32,address,uint256)),uint64)\"))`.\n */\nconst VERIFY_SELECTOR = hexToBytes(\"67e2907b\");\n\nconst U8_MAX = 0xffn;\nconst U32_MAX = 0xffff_ffffn;\nconst U64_MAX = 0xffff_ffff_ffff_ffffn;\nconst U256_MAX = (1n << 256n) - 1n;\n\nfunction strip0x(value: string): string {\n return value.startsWith(\"0x\") || value.startsWith(\"0X\") ? value.slice(2) : value;\n}\n\nfunction stripOuterQuotes(value: string): string {\n const trimmed = value.trim();\n if (\n (trimmed.startsWith(\"'\") && trimmed.endsWith(\"'\")) ||\n (trimmed.startsWith('\"') && trimmed.endsWith('\"'))\n ) {\n return trimmed.slice(1, -1);\n }\n return trimmed;\n}\n\n/**\n * Normalize hex to a fixed-size `0x`-prefixed value.\n * Accepts optional `0x` prefix and surrounding quotes.\n */\nexport function toFixedHex(value: string, bytes: number, label: string): `0x${string}` {\n const clean = strip0x(stripOuterQuotes(value)).toLowerCase();\n if (clean.length !== bytes * 2) {\n throw new RangeError(\n `${label}: expected ${bytes} bytes (${bytes * 2} hex chars), got ${clean.length / 2}`,\n );\n }\n return `0x${clean}`;\n}\n\n/** Convert a 32-byte hex bitmap to a `uint256` bigint (big-endian). */\nexport function signersBitmapToUint256(value: string): bigint {\n const bytes = toFixedBytes(toFixedHex(value, 32, \"signersBitmap\"), 32, \"signersBitmap\");\n return bigIntFromBytesBe(bytes);\n}\n\n/** Decimal string form of the signers bitmap — useful for JSON logging. */\nexport function signersBitmapToDecimal(value: string): string {\n return signersBitmapToUint256(value).toString();\n}\n\n/**\n * Checks an integer fits its Solidity type. Out-of-range calldata does not reach `verify`\n * at all: the ABI decoder reverts on dirty high bits instead of returning a result code.\n * Catching it here keeps that failure in the caller's process.\n */\nfunction assertUint(value: number, max: bigint, label: string): number {\n if (!Number.isSafeInteger(value) || value < 0 || BigInt(value) > max) {\n throw new RangeError(`${label}: expected an integer in 0..${max}, got ${value}`);\n }\n return value;\n}\n\nfunction assertBigUint(value: number | bigint, max: bigint, label: string): bigint {\n if (typeof value === \"number\" && !Number.isSafeInteger(value)) {\n throw new RangeError(`${label}: expected an integer in 0..${max}, got ${value}`);\n }\n const n = BigInt(value);\n if (n < 0n || n > max) {\n throw new RangeError(`${label}: expected an integer in 0..${max}, got ${value}`);\n }\n return n;\n}\n\n/** Left-pad a fixed-width value into one 32-byte ABI word. */\nfunction word(value: string, bytes: number, label: string): Uint8Array {\n const out = new Uint8Array(32);\n out.set(toFixedBytes(toFixedHex(value, bytes, label), bytes, label), 32 - bytes);\n return out;\n}\n\n/**\n * Build the `verify(attestation, maxAge)` arguments from a gateway result.\n *\n * ```ts\n * const { attestation, maxAge } = buildEvmVerifierArgs(result, { maxAge: 300 });\n * await client.readContract({ abi: MOLPHA_VERIFIER_ABI, functionName: \"verify\", args: [attestation, maxAge], ... });\n * ```\n */\nexport function buildEvmVerifierArgs(\n attestation: Attestation,\n options: BuildEvmVerifierArgsOptions,\n): EvmVerifierArgs {\n const { payload: signed, signature: sig } = attestation;\n const payload: EvmAttestationPayload = {\n value: toFixedHex(signed.value, 32, \"payload.value\"),\n sourceId: toFixedHex(signed.sourceId, 32, \"sourceId\"),\n registryVersion: assertUint(signed.registryVersion, U32_MAX, \"registryVersion\"),\n signaturesRequired: assertUint(signed.signaturesRequired, U8_MAX, \"signaturesRequired\"),\n canonicalTimestamp: assertBigUint(signed.canonicalTimestamp, U64_MAX, \"canonicalTimestamp\"),\n };\n\n const signature: EvmSchnorrSignature = {\n signature: toFixedHex(sig.s, 32, \"signature\"),\n commitment: toFixedHex(sig.commitmentAddr, 20, \"commitment\"),\n signersBitmap: signersBitmapToUint256(sig.signersBitmap),\n };\n\n return {\n attestation: { payload, signature },\n maxAge: assertBigUint(options.maxAge, U64_MAX, \"maxAge\"),\n };\n}\n\n/**\n * ABI calldata for `verify(attestation, maxAge)`: the 4-byte selector followed by nine\n * 32-byte words. Both structs are static, so they encode inline with no offsets:\n *\n * `value, sourceId, registryVersion, signaturesRequired, canonicalTimestamp, signature,\n * commitment, signersBitmap, maxAge`\n *\n * For a raw `eth_call` (`{ to: verifier, data }`).\n */\nexport function encodeEvmVerifyCalldata(args: EvmVerifierArgs): `0x${string}` {\n const { payload, signature } = args.attestation;\n const data = concatBytes(\n VERIFY_SELECTOR,\n word(payload.value, 32, \"value\"),\n word(payload.sourceId, 32, \"sourceId\"),\n u256beFromBigInt(BigInt(assertUint(payload.registryVersion, U32_MAX, \"registryVersion\"))),\n u256beFromBigInt(\n BigInt(assertUint(payload.signaturesRequired, U8_MAX, \"signaturesRequired\")),\n ),\n u256beFromBigInt(assertBigUint(payload.canonicalTimestamp, U64_MAX, \"canonicalTimestamp\")),\n word(signature.signature, 32, \"signature\"),\n word(signature.commitment, 20, \"commitment\"),\n u256beFromBigInt(assertBigUint(signature.signersBitmap, U256_MAX, \"signersBitmap\")),\n u256beFromBigInt(assertBigUint(args.maxAge, U64_MAX, \"maxAge\")),\n );\n return `0x${bytesToHex(data)}`;\n}\n\n/**\n * Decode the `(bool, uint8)` returned by `verify`.\n *\n * Accepts the raw 64-byte return data from `eth_call`, or the tuple an ABI-aware client\n * decodes (viem `readContract` returns `[true, 0]`; an ethers `Result` indexes the same way).\n * Throws when the two halves disagree (`success` with a non-zero code, or failure with\n * `OK`), which means the call did not reach a Molpha verifier of this interface.\n */\nexport function parseEvmVerifyResult(\n result:\n | string\n | { readonly 0: boolean | number | bigint; readonly 1: number | bigint },\n): EvmVerifyResult {\n let successWord: bigint;\n let codeWord: bigint;\n\n if (typeof result === \"string\") {\n const clean = strip0x(result.trim());\n if (!/^[0-9a-fA-F]*$/.test(clean) || clean.length !== 128) {\n throw new RangeError(\n `verify result: expected 64 bytes of return data, got ${JSON.stringify(result)}`,\n );\n }\n successWord = BigInt(`0x${clean.slice(0, 64)}`);\n codeWord = BigInt(`0x${clean.slice(64)}`);\n } else {\n const success = result[0];\n const code = result[1];\n successWord = typeof success === \"boolean\" ? (success ? 1n : 0n) : BigInt(success);\n if (typeof code === \"number\" && !Number.isSafeInteger(code)) {\n throw new RangeError(`verify result: code must fit uint8, got ${code}`);\n }\n codeWord = BigInt(code);\n }\n\n if (successWord !== 0n && successWord !== 1n) {\n throw new RangeError(`verify result: success must be 0 or 1, got ${successWord}`);\n }\n if (codeWord < 0n || codeWord > U8_MAX) {\n throw new RangeError(`verify result: code must fit uint8, got ${codeWord}`);\n }\n\n const success = successWord === 1n;\n const code = Number(codeWord);\n if (success !== (code === VERIFY_CODES.OK)) {\n throw new Error(\n `verify result is inconsistent: success=${success} with code ${code}; ` +\n \"the call did not reach a Molpha verifier with this interface\",\n );\n }\n\n return { success, code, reason: verifyCodeName(code) ?? \"UNKNOWN\" };\n}\n","/**\n * Deployed Molpha verifier contract addresses on Starknet testnets.\n */\n\n/** Supported Starknet testnet identifiers. */\nexport type MolphaStarknetNetwork = \"starknet-sepolia\";\n\n/** Deployed verifier address on Starknet Sepolia. */\nexport const MOLPHA_VERIFIER_STARKNET_SEPOLIA =\n \"0x0378df4dbecf8f0c7daa801282932f7011c7a5e5773bab9eaf68f5fa5e7530ef\" as const;\n\n/** Network id -> deployed verifier address. */\nexport const MOLPHA_VERIFIER_STARKNET_ADDRESSES: Record<\n MolphaStarknetNetwork,\n `0x${string}`\n> = {\n \"starknet-sepolia\": MOLPHA_VERIFIER_STARKNET_SEPOLIA,\n};\n\n/** Resolve the deployed verifier address for a supported Starknet network. */\nexport function getMolphaStarknetVerifierAddress(\n network: MolphaStarknetNetwork,\n): `0x${string}` {\n return MOLPHA_VERIFIER_STARKNET_ADDRESSES[network];\n}\n","/**\n * Starknet verifier helpers — framework-agnostic builders for\n * `verify(attestation: Attestation, max_age: u64) -> (bool, u8)` on deployed Molpha\n * verifier contracts, plus a raw calldata encoder and a result decoder.\n *\n * Nothing here depends on `starknet.js`. The struct objects use the Cairo member names, so\n * an ABI-aware client can pass them straight through; `encodeStarknetVerifyCalldata`\n * produces the flat felt array for a raw `starknet_call`.\n */\nimport { bigIntFromBytesBe, toFixedBytes } from \"../core/encoding.js\";\nimport type { Attestation } from \"../core/types.js\";\nimport { VERIFY_CODES, verifyCodeName, type VerifyCodeName } from \"../core/verifyCodes.js\";\n\n/**\n * Starknet calldata shape for `AttestationPayload`.\n *\n * Member order is the order of the signed message preimage and of Cairo `Serde`, so it is\n * load bearing — it is not the flat gateway field order on {@link Attestation}.\n */\nexport interface StarknetAttestationPayload {\n /** 32-byte packed value as `u256`. */\n value: bigint;\n /** 32-byte source id as `u256`. */\n source_id: bigint;\n /** `u32`. */\n registry_version: number;\n /** `u8`. */\n signatures_required: number;\n /** `u64`, unix seconds. */\n canonical_timestamp: number;\n}\n\n/** Starknet calldata shape for `SchnorrSignature`. */\nexport interface StarknetSchnorrSignature {\n /** Schnorr scalar `s` as `u256`. */\n signature: bigint;\n /** Ethereum-style 20-byte address of the nonce point `R`, as a `felt252`. */\n commitment: bigint;\n /** Big-endian signers bitmap as `u256`; bit `i` is node `i` of the registry version. */\n signers_bitmap: bigint;\n}\n\n/** Starknet calldata shape for `Attestation`. */\nexport interface StarknetAttestation {\n payload: StarknetAttestationPayload;\n signature: StarknetSchnorrSignature;\n}\n\n/** Positional arguments for `verify(attestation, max_age)`. */\nexport interface StarknetVerifierArgs {\n attestation: StarknetAttestation;\n /** Freshness window in seconds (`u64`). `0` disables the check. */\n maxAge: number;\n}\n\nexport interface BuildStarknetVerifierArgsOptions {\n /**\n * Freshness window in seconds. The verifier rejects the attestation with `STALE` when it\n * is older than this, and as `MALFORMED` when it is dated in the future.\n *\n * Required on purpose. `0` disables the check entirely, and that is not a neutral\n * default: the verifier is stateless, so without a window it accepts a correctly signed\n * attestation forever. Pass `0` only when the consuming contract enforces freshness or\n * ordering itself.\n */\n maxAge: number;\n}\n\n/** Decoded `verify` return value. */\nexport interface StarknetVerifyResult {\n success: boolean;\n /** Raw result code — see `VERIFY_CODES`. */\n code: number;\n /** Name of `code`, or `\"UNKNOWN\"` for a code newer than this SDK. */\n reason: VerifyCodeName | \"UNKNOWN\";\n}\n\n/** A felt as returned by `starknet_call` (hex or decimal string) or by an ABI-aware client. */\nexport type StarknetFeltLike = string | number | bigint | boolean;\n\nconst U8_MAX = 0xffn;\nconst U32_MAX = 0xffff_ffffn;\nconst U64_MAX = 0xffff_ffff_ffff_ffffn;\nconst U128_MASK = (1n << 128n) - 1n;\nconst U256_MAX = (1n << 256n) - 1n;\nconst ADDRESS_MAX = (1n << 160n) - 1n;\n\nfunction strip0x(value: string): string {\n return value.startsWith(\"0x\") || value.startsWith(\"0X\") ? value.slice(2) : value;\n}\n\nfunction stripOuterQuotes(value: string): string {\n const trimmed = value.trim();\n if (\n (trimmed.startsWith(\"'\") && trimmed.endsWith(\"'\")) ||\n (trimmed.startsWith('\"') && trimmed.endsWith('\"'))\n ) {\n return trimmed.slice(1, -1);\n }\n return trimmed;\n}\n\nfunction toStrictHex(value: string, bytes: number, label: string): `0x${string}` {\n const clean = strip0x(stripOuterQuotes(value)).toLowerCase();\n if (clean.length !== bytes * 2) {\n throw new RangeError(\n `${label}: expected ${bytes} bytes (${bytes * 2} hex chars), got ${clean.length / 2}`,\n );\n }\n return `0x${clean}`;\n}\n\nfunction fixedHexToBigInt(value: string, bytes: number, label: string): bigint {\n const hex = toStrictHex(value, bytes, label);\n const raw = toFixedBytes(hex, bytes, label);\n return bigIntFromBytesBe(raw);\n}\n\n/**\n * Checks an integer fits its Cairo type. Out-of-range calldata does not reach `verify` at\n * all: Cairo `Serde` fails while decoding the arguments, and the call reverts instead of\n * returning a result code. Catching it here keeps that failure in the caller's process.\n */\nfunction assertUint(value: number, max: bigint, label: string): number {\n if (!Number.isSafeInteger(value) || value < 0 || BigInt(value) > max) {\n throw new RangeError(`${label}: expected an integer in 0..${max}, got ${value}`);\n }\n return value;\n}\n\nfunction assertBigUint(value: bigint, max: bigint, label: string): bigint {\n if (value < 0n || value > max) {\n throw new RangeError(`${label}: expected an integer in 0..${max}, got ${value}`);\n }\n return value;\n}\n\nfunction toFelt(value: bigint | number): `0x${string}` {\n return `0x${BigInt(value).toString(16)}`;\n}\n\n/** Cairo `u256` serializes as two felts, low limb first. */\nfunction u256Felts(value: bigint, label: string): [`0x${string}`, `0x${string}`] {\n assertBigUint(value, U256_MAX, label);\n return [toFelt(value & U128_MASK), toFelt(value >> 128n)];\n}\n\nfunction feltToBigInt(value: StarknetFeltLike, label: string): bigint {\n if (typeof value === \"boolean\") return value ? 1n : 0n;\n if (typeof value === \"bigint\") return value;\n if (typeof value === \"number\") {\n if (!Number.isSafeInteger(value)) throw new RangeError(`${label}: not an integer: ${value}`);\n return BigInt(value);\n }\n const text = value.trim();\n if (!/^(0x[0-9a-fA-F]+|[0-9]+)$/.test(text)) {\n throw new RangeError(`${label}: not a felt: ${JSON.stringify(value)}`);\n }\n return BigInt(text);\n}\n\n/** Convert a 20-byte commitment address hex to a Starknet felt-compatible bigint. */\nexport function commitmentAddressToStarknetFelt(value: string): bigint {\n return fixedHexToBigInt(value, 20, \"commitment\");\n}\n\n/** Convert a 32-byte bitmap hex to a Starknet/Cairo `u256` bigint. */\nexport function signersBitmapToStarknetUint256(value: string): bigint {\n return fixedHexToBigInt(value, 32, \"signersBitmap\");\n}\n\n/**\n * Build the `verify(attestation, max_age)` arguments from a gateway result.\n *\n * ```ts\n * const { attestation, maxAge } = buildStarknetVerifierArgs(result, { maxAge: 300 });\n * ```\n */\nexport function buildStarknetVerifierArgs(\n attestation: Attestation,\n options: BuildStarknetVerifierArgsOptions,\n): StarknetVerifierArgs {\n const { payload: signed, signature: sig } = attestation;\n const payload: StarknetAttestationPayload = {\n value: fixedHexToBigInt(signed.value, 32, \"payload.value\"),\n source_id: fixedHexToBigInt(signed.sourceId, 32, \"sourceId\"),\n registry_version: assertUint(signed.registryVersion, U32_MAX, \"registryVersion\"),\n signatures_required: assertUint(signed.signaturesRequired, U8_MAX, \"signaturesRequired\"),\n canonical_timestamp: assertUint(signed.canonicalTimestamp, U64_MAX, \"canonicalTimestamp\"),\n };\n\n const signature: StarknetSchnorrSignature = {\n signature: fixedHexToBigInt(sig.s, 32, \"signature\"),\n commitment: commitmentAddressToStarknetFelt(sig.commitmentAddr),\n signers_bitmap: signersBitmapToStarknetUint256(sig.signersBitmap),\n };\n\n return {\n attestation: { payload, signature },\n maxAge: assertUint(options.maxAge, U64_MAX, \"maxAge\"),\n };\n}\n\n/**\n * Flat felt calldata for `verify(attestation, max_age)`, in Cairo `Serde` order — 13 felts:\n *\n * `value.low, value.high, source_id.low, source_id.high, registry_version,\n * signatures_required, canonical_timestamp, signature.low, signature.high, commitment,\n * signers_bitmap.low, signers_bitmap.high, max_age`\n *\n * For a raw `starknet_call` with `entry_point_selector = selector(\"verify\")`.\n */\nexport function encodeStarknetVerifyCalldata(args: StarknetVerifierArgs): `0x${string}`[] {\n const { payload, signature } = args.attestation;\n return [\n ...u256Felts(payload.value, \"value\"),\n ...u256Felts(payload.source_id, \"source_id\"),\n toFelt(assertUint(payload.registry_version, U32_MAX, \"registry_version\")),\n toFelt(assertUint(payload.signatures_required, U8_MAX, \"signatures_required\")),\n toFelt(assertUint(payload.canonical_timestamp, U64_MAX, \"canonical_timestamp\")),\n ...u256Felts(signature.signature, \"signature\"),\n // An Ethereum-style address, so it must fit 160 bits (the verifier reports a wider one\n // as `MALFORMED`; one past the field prime would not even deserialize).\n toFelt(assertBigUint(signature.commitment, ADDRESS_MAX, \"commitment\")),\n ...u256Felts(signature.signers_bitmap, \"signers_bitmap\"),\n toFelt(assertUint(args.maxAge, U64_MAX, \"maxAge\")),\n ];\n}\n\n/**\n * Decode the `(bool, u8)` returned by `verify`.\n *\n * Accepts the raw two-felt array from `starknet_call` (e.g. `[\"0x1\", \"0x0\"]`) or the tuple\n * an ABI-aware client decodes (e.g. `{ 0: true, 1: 0n }`). Throws when the two halves\n * disagree (`success` with a non-zero code, or failure with `OK`), which means the call did\n * not reach a Molpha verifier of this interface.\n */\nexport function parseStarknetVerifyResult(\n result:\n | readonly StarknetFeltLike[]\n | { readonly 0: StarknetFeltLike; readonly 1: StarknetFeltLike },\n): StarknetVerifyResult {\n if (Array.isArray(result) && result.length !== 2) {\n throw new RangeError(`verify result: expected 2 felts, got ${result.length}`);\n }\n const tuple = result as { readonly 0: StarknetFeltLike; readonly 1: StarknetFeltLike };\n\n const successFelt = feltToBigInt(tuple[0], \"verify result success\");\n if (successFelt !== 0n && successFelt !== 1n) {\n throw new RangeError(`verify result: success must be 0 or 1, got ${successFelt}`);\n }\n const codeFelt = feltToBigInt(tuple[1], \"verify result code\");\n if (codeFelt < 0n || codeFelt > U8_MAX) {\n throw new RangeError(`verify result: code must fit u8, got ${codeFelt}`);\n }\n\n const success = successFelt === 1n;\n const code = Number(codeFelt);\n if (success !== (code === VERIFY_CODES.OK)) {\n throw new Error(\n `verify result is inconsistent: success=${success} with code ${code}; ` +\n \"the call did not reach a Molpha verifier with this interface\",\n );\n }\n\n return { success, code, reason: verifyCodeName(code) ?? \"UNKNOWN\" };\n}\n","/**\n * `@molpha/sdk` — Consumer SDK public surface.\n *\n * The `MolphaSDK` facade wires the gateway and Solana clients together; consumers\n * who only read or only run gateway rounds can use `sdk.gateway` / `sdk.solana`\n * directly (or import `MolphaGateway` / `MolphaSolanaClient` standalone).\n */\nimport { address, type Address } from \"@solana/kit\";\nimport type { AnchorProvider, Idl } from \"@anchor-lang/core\";\nimport {\n type GatewayEndpointInput,\n type RequestSignedDataOptions,\n MolphaGateway,\n} from \"./gateway/index.js\";\nimport { MolphaSolanaClient } from \"./solana/client.js\";\nimport type { Attestation } from \"./core/types.js\";\nimport { MOLPHA_IDL, MOLPHA_PROGRAM_ADDRESS } from \"../idl/index.js\";\nimport { gatewaySignerFromWallet, type MolphaWallet } from \"./wallet.js\";\nimport type { SolanaConnection } from \"./solana/kit.js\";\ntype Commitment = NonNullable<ConstructorParameters<typeof AnchorProvider>[2]>[\"commitment\"];\n\n// Public re-exports.\nexport * from \"./core/index.js\";\nexport * from \"./gateway/index.js\";\nexport * from \"./evm/index.js\";\nexport * from \"./starknet/index.js\";\nexport * from \"./solana/index.js\";\nexport { MOLPHA_IDL, MOLPHA_PROGRAM_ADDRESS } from \"../idl/index.js\";\nexport { gatewaySignerFromWallet, signerFromKeypair, type MolphaWallet } from \"./wallet.js\";\n\nexport interface MolphaSDKOptions {\n /**\n * Defaults to `DEFAULT_GATEWAY_ENDPOINT`. Pass multiple entries for failover. Each\n * entry is a URL or `{ url, gatewayAuthority }`; when the authority is omitted it is\n * discovered from the gateway's `GET /v1/info`.\n */\n endpoints?: GatewayEndpointInput | GatewayEndpointInput[];\n connection: SolanaConnection;\n /** On-chain txs + gateway auth (see `MolphaWallet`). */\n wallet: MolphaWallet;\n /** Defaults to the vendored IDL's program address. Bound into gateway request auth. */\n programId?: Address | string;\n /** Defaults to `MOLPHA_IDL`. Override when pinning a different deployment. */\n idl?: Idl;\n commitment?: Commitment;\n}\n\nexport class MolphaSDK {\n readonly gateway: MolphaGateway;\n readonly solana: MolphaSolanaClient;\n\n constructor(opts: MolphaSDKOptions) {\n const programId = address(String(opts.programId ?? MOLPHA_PROGRAM_ADDRESS));\n this.solana = MolphaSolanaClient.create({\n connection: opts.connection,\n wallet: opts.wallet,\n programId,\n idl: opts.idl ?? MOLPHA_IDL,\n ...(opts.commitment ? { commitment: opts.commitment } : {}),\n });\n this.gateway = new MolphaGateway(\n opts.endpoints,\n () => this.solana.getRegistrySelectionConfig(),\n gatewaySignerFromWallet(opts.wallet),\n {\n defaultSubscriptionOwner: opts.wallet.publicKey.toBase58(),\n programId,\n verifyNodeKeys: (args) => this.solana.verifyNodeKeysForPrivateApi(args),\n },\n );\n }\n\n /**\n * Request a threshold-signed data update from the gateway (against the current\n * on-chain registry version) and submit it via `submit_attestation`.\n */\n async requestAndSubmit(\n opts: RequestSignedDataOptions,\n ): Promise<{ result: Attestation; signature: string; feed: Address }> {\n const result = await this.gateway.requestSignedData(opts);\n const { signature, feed } = await this.solana.submitAttestation(result);\n return { result, signature, feed };\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/core/aggregation.ts","../src/core/encoding.ts","../src/core/apiconfig.ts","../src/core/constants.ts","../src/core/int256.ts","../src/core/nodeKeys.ts","../src/core/selection.ts","../src/gateway/auth.ts","../src/gateway/encryption.ts","../src/evm/eip712.ts","../src/gateway/x402.ts","../src/gateway/identity.ts","../src/gateway/index.ts","../src/core/coalition.ts","../src/solana/accounts.ts","../src/solana/pdas.ts","../idl/molpha.json","../idl/index.ts","../src/solana/plans.ts","../src/solana/client.ts","../src/wallet.ts","../src/core/message.ts","../src/core/verifyCodes.ts","../src/evm/abi.ts","../src/evm/constants.ts","../src/evm/helpers.ts","../src/starknet/constants.ts","../src/starknet/helpers.ts","../src/index.ts"],"names":["nobleUtf8ToBytes","nobleConcatBytes","nobleBytesToHex","nobleHexToBytes","keccak_256","secp256k1","address","randomBytes","pda","registry","SEED_GATEWAY","PlanType","U32_MAX","assertUint","word","success","code","U8_MAX","U64_MAX","U256_MAX","strip0x","stripOuterQuotes","assertBigUint"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * Aggregation (tolerance mode) config validation and canonicalization.\n *\n * `aggregation` is part of the API config and therefore part of `sourceId`. It is OMITTED\n * for exact mode: a config carrying `mode: \"exact\"` would hash differently from the same\n * config without the key, so it is rejected rather than silently normalized. The node\n * (`new/tolerance.Validate`) is the reference.\n */\nimport type { AggregationConfig } from \"./types.js\";\n\n/** Tolerance mode needs at least this many signers (`signaturesRequired >= 3`). */\nexport const MIN_TOLERANCE_SIGNATURES = 3;\n\nconst MAX_U32 = 0xffffffff;\nconst MAX_U8 = 0xff;\n\n/** Thrown for an unusable `aggregation` config. */\nexport class AggregationConfigError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"AggregationConfigError\";\n }\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\n/**\n * Validate an `aggregation` config and return a fresh object with the canonical key order\n * (`mode`, `rule`, `maxDeviationBps`, `maxAgeMs`, `numeric{type, decimals}`) — the order\n * the source hash and the node's JSON blob use.\n *\n * The result is built field by field: unknown or reordered keys on the input can never\n * reach the hash or the wire. `undefined` / `null` mean exact mode and return `undefined`.\n *\n * @throws {AggregationConfigError} on `mode: \"exact\"`, an unsupported mode / rule / numeric\n * type, or an out-of-range number.\n */\nexport function canonicalizeAggregation(\n aggregation: AggregationConfig | null | undefined,\n): AggregationConfig | undefined {\n if (aggregation === undefined || aggregation === null) return undefined;\n if (!isRecord(aggregation)) {\n throw new AggregationConfigError(\"aggregation must be an object\");\n }\n\n const { mode, rule, maxDeviationBps, maxAgeMs, numeric } = aggregation as unknown as Record<\n string,\n unknown\n >;\n\n if (mode === \"exact\") {\n throw new AggregationConfigError(\n 'aggregation.mode \"exact\" is not accepted: omit `aggregation` for exact mode (adding it would change the sourceId)',\n );\n }\n if (mode !== \"tolerance\") {\n throw new AggregationConfigError(\n `unsupported aggregation.mode ${JSON.stringify(mode)}: only \"tolerance\" is supported`,\n );\n }\n if (rule !== \"median\") {\n throw new AggregationConfigError(\n `unsupported aggregation.rule ${JSON.stringify(rule)}: only \"median\" is supported`,\n );\n }\n if (\n typeof maxDeviationBps !== \"number\" ||\n !Number.isInteger(maxDeviationBps) ||\n maxDeviationBps < 0 ||\n maxDeviationBps > MAX_U32\n ) {\n throw new AggregationConfigError(\n `aggregation.maxDeviationBps must be an integer in 0..${MAX_U32}, got ${String(maxDeviationBps)}`,\n );\n }\n if (typeof maxAgeMs !== \"number\" || !Number.isSafeInteger(maxAgeMs) || maxAgeMs <= 0) {\n throw new AggregationConfigError(\n `aggregation.maxAgeMs must be a positive safe integer (milliseconds), got ${String(maxAgeMs)}`,\n );\n }\n if (!isRecord(numeric)) {\n throw new AggregationConfigError(\"aggregation.numeric must be an object\");\n }\n if (numeric.type !== \"int256\") {\n throw new AggregationConfigError(\n `unsupported aggregation.numeric.type ${JSON.stringify(numeric.type)}: only \"int256\" is supported`,\n );\n }\n const decimals = numeric.decimals;\n if (typeof decimals !== \"number\" || !Number.isInteger(decimals) || decimals < 0 || decimals > MAX_U8) {\n throw new AggregationConfigError(\n `aggregation.numeric.decimals must be an integer in 0..${MAX_U8}, got ${String(decimals)}`,\n );\n }\n\n return {\n mode: \"tolerance\",\n rule: \"median\",\n maxDeviationBps,\n maxAgeMs,\n numeric: { type: \"int256\", decimals },\n };\n}\n\n/**\n * Tolerance mode needs `signaturesRequired >= 3`; the node rejects anything lower.\n * A no-op for exact mode (`aggregation` omitted).\n *\n * @throws {AggregationConfigError}\n */\nexport function assertAggregationQuorum(\n aggregation: AggregationConfig | null | undefined,\n signaturesRequired: number,\n): void {\n if (aggregation === undefined || aggregation === null) return;\n if (signaturesRequired < MIN_TOLERANCE_SIGNATURES) {\n throw new AggregationConfigError(\n `tolerance aggregation requires signaturesRequired >= ${MIN_TOLERANCE_SIGNATURES}, got ${signaturesRequired}`,\n );\n }\n}\n","/**\n * Byte encoding primitives. Isomorphic — no `Buffer`, no `fs`. All byte work is\n * `Uint8Array` + `@noble/hashes/utils.js`. The canonical selection-bitmap and value\n * representation is a 32-byte big-endian word; `bigint` is used only for internal\n * sampling/packing math and is never exposed on the wire.\n */\nimport {\n bytesToHex as nobleBytesToHex,\n hexToBytes as nobleHexToBytes,\n utf8ToBytes as nobleUtf8ToBytes,\n concatBytes as nobleConcatBytes,\n} from \"@noble/hashes/utils.js\";\n\nexport const utf8 = (s: string): Uint8Array => nobleUtf8ToBytes(s);\nexport const concatBytes = (...arrays: Uint8Array[]): Uint8Array =>\n nobleConcatBytes(...arrays);\n\n/** Lower-case hex, no `0x` prefix. */\nexport const bytesToHex = (bytes: Uint8Array): string => nobleBytesToHex(bytes);\n\n/** Accepts an optional leading `0x`; case-insensitive. */\nexport function hexToBytes(hex: string): Uint8Array {\n const clean = hex.startsWith(\"0x\") || hex.startsWith(\"0X\") ? hex.slice(2) : hex;\n return nobleHexToBytes(clean);\n}\n\n/** Hex with a leading `0x`. */\nexport const bytesToHex0x = (bytes: Uint8Array): string => \"0x\" + bytesToHex(bytes);\n\n/** u8 → 1 byte. Range-checked: `Uint8Array.of` would silently wrap an out-of-range value. */\nexport function u8(value: number): Uint8Array {\n assertUint(value, 0xff, \"u8\");\n return Uint8Array.of(value);\n}\n\n/** Big-endian u32 → 4 bytes. */\nexport function u32be(value: number): Uint8Array {\n assertUint(value, 0xffffffff, \"u32\");\n const out = new Uint8Array(4);\n new DataView(out.buffer).setUint32(0, value, false);\n return out;\n}\n\n/** Little-endian u32 → 4 bytes (used for PDA seeds like the registry index). */\nexport function u32le(value: number): Uint8Array {\n assertUint(value, 0xffffffff, \"u32\");\n const out = new Uint8Array(4);\n new DataView(out.buffer).setUint32(0, value, true);\n return out;\n}\n\n/** Big-endian u64 → 8 bytes. Accepts `number` or `bigint`. */\nexport function u64be(value: number | bigint): Uint8Array {\n const v = typeof value === \"bigint\" ? value : BigInt(value);\n if (v < 0n || v > 0xffffffffffffffffn) {\n throw new RangeError(`u64 out of range: ${v}`);\n }\n const out = new Uint8Array(8);\n new DataView(out.buffer).setBigUint64(0, v, false);\n return out;\n}\n\n/** Little-endian u64 → 8 bytes. Accepts `number` or `bigint`. */\nexport function u64le(value: number | bigint): Uint8Array {\n const v = typeof value === \"bigint\" ? value : BigInt(value);\n if (v < 0n || v > 0xffffffffffffffffn) {\n throw new RangeError(`u64 out of range: ${v}`);\n }\n const out = new Uint8Array(8);\n new DataView(out.buffer).setBigUint64(0, v, true);\n return out;\n}\n\n/** Big-endian 32-byte word ← bigint (0 ≤ v < 2^256). */\nexport function u256beFromBigInt(value: bigint): Uint8Array {\n if (value < 0n) throw new RangeError(\"u256 cannot be negative\");\n const out = new Uint8Array(32);\n let v = value;\n for (let i = 31; i >= 0 && v > 0n; i--) {\n out[i] = Number(v & 0xffn);\n v >>= 8n;\n }\n if (v > 0n) throw new RangeError(\"u256 overflow (>= 2^256)\");\n return out;\n}\n\n/** bigint ← big-endian byte word (any length). */\nexport function bigIntFromBytesBe(bytes: Uint8Array): bigint {\n let v = 0n;\n for (const b of bytes) v = (v << 8n) | BigInt(b);\n return v;\n}\n\n/** Throw unless `bytes.length === len`. Returns the input for chaining. */\nexport function ensureLength(bytes: Uint8Array, len: number, label: string): Uint8Array {\n if (bytes.length !== len) {\n throw new RangeError(`${label}: expected ${len} bytes, got ${bytes.length}`);\n }\n return bytes;\n}\n\n/** Coerce hex string or bytes to a fixed-length byte array. */\nexport function toFixedBytes(\n value: string | Uint8Array,\n len: number,\n label: string,\n): Uint8Array {\n const bytes = typeof value === \"string\" ? hexToBytes(value) : value;\n return ensureLength(bytes, len, label);\n}\n\nfunction assertUint(value: number, max: number, label: string): void {\n if (!Number.isInteger(value) || value < 0 || value > max) {\n throw new RangeError(`${label} out of range: ${value}`);\n }\n}\n\n/**\n * Standard base64 (padded, no line breaks). Isomorphic: `btoa` is available in\n * Node 20+ and every browser, so no `Buffer` is pulled into browser bundles.\n */\nexport function bytesToBase64(bytes: Uint8Array): string {\n let binary = \"\";\n // Chunked to keep a large payload off the argument stack.\n for (let i = 0; i < bytes.length; i += 0x8000) {\n binary += String.fromCharCode(...bytes.subarray(i, i + 0x8000));\n }\n return btoa(binary);\n}\n\n/** Accepts padded or unpadded standard base64. */\nexport function base64ToBytes(value: string): Uint8Array {\n const padded = value.length % 4 === 0 ? value : value + \"=\".repeat(4 - (value.length % 4));\n const binary = atob(padded);\n const out = new Uint8Array(binary.length);\n for (let i = 0; i < binary.length; i++) out[i] = binary.charCodeAt(i);\n return out;\n}\n","/**\n * API config canonicalization + source-id derivation. Must stay byte-identical with\n * gateway/node verification: `sourceId = keccak256(JSON.stringify(canonical apiConfig))`.\n */\nimport { keccak_256 } from \"@noble/hashes/sha3.js\";\nimport { canonicalizeAggregation } from \"./aggregation.js\";\nimport { bytesToHex, utf8 } from \"./encoding.js\";\nimport type { APIConfig } from \"./types.js\";\n\n/** Lexicographic UTF-16 code-unit order — locale-independent, matches gateway/node. */\nfunction compareCodeUnits(a: string, b: string): number {\n const len = Math.min(a.length, b.length);\n for (let i = 0; i < len; i++) {\n const diff = a.charCodeAt(i) - b.charCodeAt(i);\n if (diff !== 0) return diff;\n }\n return a.length - b.length;\n}\n\nfunction sortHeaders(headers: Record<string, string>): Record<string, string> {\n return Object.fromEntries(Object.entries(headers).sort(([a], [b]) => compareCodeUnits(a, b)));\n}\n\n/**\n * Gateway wire shape — defaults applied before hash / encryption.\n *\n * Keys are emitted in the fixed order `url`, `method`, `headers`, `responseParser`,\n * `valueTransform`, `aggregation`; `aggregation` is present only for tolerance mode and its\n * nested keys are rebuilt in canonical order (`canonicalizeAggregation`), so no extra or\n * reordered input key can reach the hash. A config without `aggregation` hashes exactly as\n * before.\n *\n * @throws {AggregationConfigError} if `aggregation` is invalid (including `mode: \"exact\"`).\n */\nexport function canonicalizeAPIConfig(apiConfig: APIConfig): APIConfig {\n const headers = apiConfig.headers ?? {};\n const aggregation = canonicalizeAggregation(apiConfig.aggregation);\n return {\n url: apiConfig.url,\n method: apiConfig.method ?? \"GET\",\n headers: Object.keys(headers).length === 0 ? headers : sortHeaders(headers),\n responseParser: apiConfig.responseParser,\n valueTransform: apiConfig.valueTransform ?? \"\",\n ...(aggregation ? { aggregation } : {}),\n };\n}\n\n/**\n * `sourceId = keccak256(JSON.stringify(canonical apiConfig))` — the 32-byte identity of a\n * data source. Hash the same config (including `{{secret.*}}` placeholders) you send to\n * `MolphaGateway.requestSignedData`; the gateway and every verifier recompute it from\n * `apiConfig`.\n */\nexport function deriveSourceId(apiConfig: APIConfig): Uint8Array {\n return keccak_256(utf8(JSON.stringify(canonicalizeAPIConfig(apiConfig))));\n}\n\n/** Hex-encoded {@link deriveSourceId} (64 lowercase hex chars, no `0x`). */\nexport function deriveSourceIdString(apiConfig: APIConfig): string {\n return bytesToHex(deriveSourceId(apiConfig));\n}\n","/**\n * Protocol-wide constants that must stay in sync with the vendored IDL. Kept as plain\n * literals so gateway-only / browser bundles never pull in `idl/molpha.json`.\n */\n\n/** Molpha program id (`idl/molpha.json` → `address`). Asserted equal in `test/gateway-auth.test.ts`. */\nexport const MOLPHA_PROGRAM_ID = \"chivcFQgxzwkpLvW41PV431HQ4dYpaW3povQH3AdpQt\";\n","/**\n * Signed `int256` helpers for tolerance-mode values.\n *\n * In tolerance mode the signed `value` is a two's-complement `bytes32` integer: the source's\n * decimal string scaled by `10^decimals`, rounded half to even, bounds-checked against\n * `int256`. Mirrors `new/tolerance` (`Encode` / `Decode` / `Format`) in molpha-node-client\n * byte for byte.\n */\nimport { bigIntFromBytesBe, hexToBytes, u256beFromBigInt } from \"./encoding.js\";\n\n/** `2^255 - 1`. */\nexport const INT256_MAX: bigint = (1n << 255n) - 1n;\n/** `-2^255`. */\nexport const INT256_MIN: bigint = -(1n << 255n);\n\nconst TWO_256 = 1n << 256n;\n/** Input digit cap, matching the node, before any big-integer allocation. */\nconst MAX_DECIMAL_DIGITS = 10_000;\n\nfunction assertDecimals(decimals: number): void {\n if (!Number.isInteger(decimals) || decimals < 0 || decimals > 255) {\n throw new RangeError(`decimals must be an integer in 0..255, got ${decimals}`);\n }\n}\n\nfunction toBytes32(value: Uint8Array | string, label: string): Uint8Array {\n const bytes = typeof value === \"string\" ? hexToBytes(value) : value;\n if (bytes.length !== 32) {\n throw new RangeError(`${label}: expected 32 bytes, got ${bytes.length}`);\n }\n return bytes;\n}\n\n/** Two's-complement `bytes32` (big-endian) of a signed integer in `[-2^255, 2^255)`. */\nexport function encodeInt256(value: bigint): Uint8Array {\n if (value > INT256_MAX || value < INT256_MIN) {\n throw new RangeError(\"int256 overflow\");\n }\n return u256beFromBigInt(value < 0n ? value + TWO_256 : value);\n}\n\n/** Signed integer of a two's-complement `bytes32` (bytes or hex, optional `0x`). */\nexport function decodeInt256(value: Uint8Array | string): bigint {\n const n = bigIntFromBytesBe(toBytes32(value, \"int256 value\"));\n return n >= 1n << 255n ? n - TWO_256 : n;\n}\n\n/**\n * Parse an ordinary decimal string (`[+-]digits[.digits]`, no exponent, no whitespace),\n * scale by `10^decimals`, round half to even, and return the `int256` two's-complement\n * `bytes32` the nodes sign for a tolerance-mode source.\n *\n * @throws {Error} `invalid decimal`, `decimal too long`, or `int256 overflow`.\n */\nexport function encodeInt256Decimal(decimal: string, decimals: number): Uint8Array {\n assertDecimals(decimals);\n if (typeof decimal !== \"string\" || decimal === \"\" || decimal.trim() !== decimal) {\n throw new Error(\"invalid decimal\");\n }\n let s = decimal;\n const negative = s.startsWith(\"-\");\n if (negative || s.startsWith(\"+\")) s = s.slice(1);\n\n const parts = s.split(\".\");\n if (parts.length > 2 || parts[0] === \"\" || (parts.length === 2 && parts[1] === \"\")) {\n throw new Error(\"invalid decimal\");\n }\n for (const part of parts) {\n if (!/^[0-9]*$/.test(part)) throw new Error(\"invalid decimal\");\n }\n const frac = parts.length === 2 ? parts[1]! : \"\";\n if (parts[0]!.length + frac.length > MAX_DECIMAL_DIGITS) {\n throw new Error(\"decimal too long\");\n }\n\n let scaled = BigInt(parts[0]! + frac);\n const shift = decimals - frac.length;\n if (shift >= 0) {\n scaled *= 10n ** BigInt(shift);\n } else {\n const divisor = 10n ** BigInt(-shift);\n let q = scaled / divisor;\n const r = scaled % divisor;\n const twice = r * 2n;\n if (twice > divisor || (twice === divisor && (q & 1n) === 1n)) q += 1n;\n scaled = q;\n }\n if (negative) scaled = -scaled;\n return encodeInt256(scaled);\n}\n\n/**\n * Render a signed integer — a two's-complement `bytes32` (bytes or hex), or an already\n * decoded `bigint` — at the source's scale: `decimals` fractional places with trailing zeros\n * trimmed (`-1.2`, `42`, `0.00000005`). Inverse of {@link encodeInt256Decimal} up to\n * rounding.\n */\nexport function formatInt256Decimal(value: Uint8Array | string | bigint, decimals: number): string {\n assertDecimals(decimals);\n const n = typeof value === \"bigint\" ? value : decodeInt256(value);\n if (n > INT256_MAX || n < INT256_MIN) throw new RangeError(\"int256 overflow\");\n if (decimals === 0) return n.toString();\n const negative = n < 0n;\n let digits = (negative ? -n : n).toString();\n while (digits.length <= decimals) digits = \"0\" + digits;\n const point = digits.length - decimals;\n let fracEnd = digits.length;\n while (fracEnd > point && digits[fracEnd - 1] === \"0\") fracEnd--;\n const fraction = digits.slice(point, fracEnd);\n const text = fraction === \"\" ? digits.slice(0, point) : `${digits.slice(0, point)}.${fraction}`;\n return negative ? `-${text}` : text;\n}\n","import { secp256k1 } from \"@noble/curves/secp256k1.js\";\nimport { bytesToHex, concatBytes, ensureLength, hexToBytes } from \"./encoding.js\";\n\nconst SECP256K1_COMPRESSED_PUBLIC_KEY_BYTES = 33;\nconst SECP256K1_UNCOMPRESSED_PUBLIC_KEY_BYTES = 65;\n\n/**\n * Parse a secp256k1 public key and return canonical compressed lower-case hex.\n * Accepts compressed or uncompressed SEC1 public keys with an optional `0x`.\n */\nexport function normalizeSecp256k1PublicKeyHex(\n publicKeyHex: string,\n label = \"secp256k1 public key\",\n): string {\n if (typeof publicKeyHex !== \"string\") {\n throw new Error(`${label}: expected hex string`);\n }\n\n let bytes: Uint8Array;\n try {\n bytes = hexToBytes(publicKeyHex);\n } catch {\n throw new Error(`${label}: invalid hex`);\n }\n\n if (\n bytes.length !== SECP256K1_COMPRESSED_PUBLIC_KEY_BYTES &&\n bytes.length !== SECP256K1_UNCOMPRESSED_PUBLIC_KEY_BYTES\n ) {\n throw new Error(\n `${label}: expected ${SECP256K1_COMPRESSED_PUBLIC_KEY_BYTES}-byte compressed or ${SECP256K1_UNCOMPRESSED_PUBLIC_KEY_BYTES}-byte uncompressed public key`,\n );\n }\n\n try {\n return bytesToHex(secp256k1.Point.fromBytes(bytes).toBytes(true));\n } catch {\n throw new Error(`${label}: invalid secp256k1 public key`);\n }\n}\n\n/** Reconstruct a compressed secp256k1 public key from 32-byte affine X/Y coordinates. */\nexport function secp256k1PublicKeyFromCoordinates(\n x: Uint8Array,\n y: Uint8Array,\n label = \"secp256k1 public key coordinates\",\n): string {\n ensureLength(x, 32, `${label}.x`);\n ensureLength(y, 32, `${label}.y`);\n return normalizeSecp256k1PublicKeyHex(\n bytesToHex(concatBytes(Uint8Array.of(0x04), x, y)),\n label,\n );\n}\n","/**\n * Node selection: deterministic, verifiable, without replacement.\n *\n * Canonical bitmap representation = 32-byte big-endian word (bit `i` lives in\n * byte `31 - (i >> 3)`, mask `1 << (i & 7)`), matching the wire / on-chain form.\n */\nimport { keccak_256 } from \"@noble/hashes/sha3.js\";\nimport { concatBytes, ensureLength, u32be, u64be, utf8 } from \"./encoding.js\";\n\nconst SELECTION_SEED_DOMAIN = keccak_256(utf8(\"MOLPHA_SELECTION_V1\"));\nconst SELECTION_DERIVE_DOMAIN = keccak_256(utf8(\"MOLPHA_SELECTION_DERIVE\"));\n\n/** Maximum hashing rounds before giving up (matches on-chain cap). */\nconst MAX_ROUNDS = 65_536;\n\nconst BITMAP_BYTES = 32;\nconst MAX_NODES = BITMAP_BYTES * 8; // 256\nconst U32_MAX = 0xffff_ffff;\n\n/**\n * `seed = keccak256(keccak256(\"MOLPHA_SELECTION_V1\") || sourceId || be32(rv) || be64(ts))`.\n */\nexport function deriveSelectionSeed(\n sourceId: Uint8Array,\n registryVersion: number,\n canonicalTimestamp: number | bigint,\n): Uint8Array {\n ensureLength(sourceId, 32, \"sourceId\");\n return keccak_256(\n concatBytes(\n SELECTION_SEED_DOMAIN,\n sourceId,\n u32be(registryVersion),\n u64be(canonicalTimestamp),\n ),\n );\n}\n\n/** `min(signaturesRequired + redundancyBuffer, nodeCount)`. */\nexport function effectiveSelectionSize(\n signaturesRequired: number,\n redundancyBuffer: number,\n nodeCount: number,\n): number {\n return Math.min(signaturesRequired + redundancyBuffer, nodeCount);\n}\n\n/** Is bit `bit` set in the 32-byte big-endian `bitmap`? */\nexport function bitmapBitSet(bitmap: Uint8Array, bit: number): boolean {\n if (bit < 0 || bit >= MAX_NODES) return false;\n const byte = bitmap[BITMAP_BYTES - 1 - (bit >> 3)] ?? 0;\n return (byte & (1 << (bit & 7))) !== 0;\n}\n\nfunction setBit(bitmap: Uint8Array, bit: number): void {\n const idx = BITMAP_BYTES - 1 - (bit >> 3);\n bitmap[idx] = (bitmap[idx] ?? 0) | (1 << (bit & 7));\n}\n\n/** Indices of set bits in `[0, nodeCount)`, ascending. */\nexport function selectedIndices(bitmap: Uint8Array, nodeCount: number): number[] {\n const out: number[] = [];\n for (let i = 0; i < nodeCount; i++) {\n if (bitmapBitSet(bitmap, i)) out.push(i);\n }\n return out;\n}\n\n/**\n * Rejection-sample `groupSize` distinct indices out of `nodeCount` from `seed`,\n * returning a 32-byte big-endian bitmap. Uses the complement optimization when\n * `groupSize > nodeCount / 2` (sample the smaller set, then invert).\n */\nexport function deriveGroupBitmap(\n seed: Uint8Array,\n nodeCount: number,\n groupSize: number,\n): Uint8Array {\n if (!Number.isInteger(nodeCount) || nodeCount <= 0 || nodeCount > MAX_NODES) {\n throw new RangeError(`GroupBitmapDerivationFailed: invalid nodeCount ${nodeCount}`);\n }\n if (!Number.isInteger(groupSize) || groupSize < 0 || groupSize > nodeCount) {\n throw new RangeError(`GroupBitmapDerivationFailed: invalid groupSize ${groupSize}`);\n }\n const bitmap = new Uint8Array(BITMAP_BYTES);\n if (groupSize === 0) return bitmap;\n if (groupSize === nodeCount) {\n for (let i = 0; i < nodeCount; i++) setBit(bitmap, i);\n return bitmap;\n }\n\n // Complement optimization: sample the smaller half, invert at the end.\n const complement = groupSize > nodeCount - groupSize;\n const sampleCount = complement ? nodeCount - groupSize : groupSize;\n const limit = Math.floor(U32_MAX / nodeCount) * nodeCount;\n\n const chosen = new Set<number>();\n let round = 0;\n while (chosen.size < sampleCount && round < MAX_ROUNDS) {\n const counterWord = new Uint8Array(32);\n counterWord.set(u64be(round), 24);\n const block = keccak_256(concatBytes(seed, SELECTION_DERIVE_DOMAIN, counterWord));\n for (let off = 0; off + 4 <= block.length && chosen.size < sampleCount; off += 4) {\n const limb =\n ((block[off]! << 24) |\n (block[off + 1]! << 16) |\n (block[off + 2]! << 8) |\n block[off + 3]!) >>>\n 0;\n if (limb < limit) {\n const idx = limb % nodeCount;\n chosen.add(idx);\n }\n }\n round++;\n }\n if (chosen.size < sampleCount) {\n throw new Error(\"GroupBitmapDerivationFailed: round cap reached\");\n }\n\n if (complement) {\n for (let i = 0; i < nodeCount; i++) {\n if (!chosen.has(i)) setBit(bitmap, i);\n }\n } else {\n for (const i of chosen) setBit(bitmap, i);\n }\n return bitmap;\n}\n\n/**\n * Convenience orchestrator: derive the selection bitmap end-to-end.\n * `redundancy` defaults to 0; `ts` defaults to the current unix second.\n */\nexport function deriveSelectionBitmap(\n sourceId: Uint8Array,\n registryVersion: number,\n nodeCount: number,\n signaturesRequired: number,\n redundancy = 0,\n ts: number | bigint = Math.floor(Date.now() / 1000),\n): Uint8Array {\n const seed = deriveSelectionSeed(sourceId, registryVersion, ts);\n const size = effectiveSelectionSize(signaturesRequired, redundancy, nodeCount);\n return deriveGroupBitmap(seed, nodeCount, size);\n}\n","/**\n * Gateway request authentication (`RequestAuth`, program `state/receipt.rs`).\n *\n * hash = keccak256(\"MOLPHA_REQAUTH_V1\" || borsh(RequestAuth))\n * RequestAuth { program_id: Pubkey, gateway: Pubkey, source_id: [u8; 32],\n * signatures_required: u8, timestamp: u64 }\n *\n * i.e. `domain || programId(32) || gatewayPda(32) || sourceId(32) || u8 || u64le`.\n * The consumer authority / delegate ed25519-signs the 32-byte hash. Binding the program id\n * and the Gateway PDA means a signature is only redeemable by the gateway the consumer\n * chose, on the deployment they meant to pay — never a bearer token.\n */\nimport { keccak_256 } from \"@noble/hashes/sha3.js\";\nimport { concatBytes, ensureLength, toFixedBytes, utf8, u64le } from \"../core/encoding.js\";\n\nexport type { Signer } from \"../core/types.js\";\n\nexport const REQUEST_AUTH_DOMAIN: Uint8Array = utf8(\"MOLPHA_REQAUTH_V1\");\n\nexport interface RequestAuthFields {\n /** Program id, 32 bytes (see `addressToBytes` for base58). */\n programId: Uint8Array;\n /** Gateway PDA `[\"molpha_gateway\", gatewayAuthority]`, 32 bytes (see `deriveGatewayPda`). */\n gateway: Uint8Array;\n /** 32-byte source id, hex or bytes. */\n sourceId: Uint8Array | string;\n /** u8 — the per-request quorum. */\n signaturesRequired: number;\n /** u64 unix seconds. */\n timestamp: number | bigint;\n}\n\n/** Borsh encoding of `RequestAuth` — the hash body, without the domain. */\nexport function encodeRequestAuth(fields: RequestAuthFields): Uint8Array {\n if (\n !Number.isInteger(fields.signaturesRequired) ||\n fields.signaturesRequired < 1 ||\n fields.signaturesRequired > 255\n ) {\n throw new RangeError(`signaturesRequired out of u8 range: ${fields.signaturesRequired}`);\n }\n return concatBytes(\n ensureLength(fields.programId, 32, \"programId\"),\n ensureLength(fields.gateway, 32, \"gateway\"),\n toFixedBytes(fields.sourceId, 32, \"sourceId\"),\n Uint8Array.of(fields.signaturesRequired),\n u64le(fields.timestamp),\n );\n}\n\n/** `keccak256(REQUEST_AUTH_DOMAIN || encodeRequestAuth(fields))` — the message the consumer signs. */\nexport function hashRequestAuth(fields: RequestAuthFields): Uint8Array {\n return keccak_256(concatBytes(REQUEST_AUTH_DOMAIN, encodeRequestAuth(fields)));\n}\n","/**\n * API-config secret resolution + ECDH config encryption for selected nodes.\n */\nimport { gcm } from \"@noble/ciphers/aes.js\";\nimport { secp256k1 } from \"@noble/curves/secp256k1.js\";\nimport { keccak_256 } from \"@noble/hashes/sha3.js\";\nimport { randomBytes } from \"@noble/hashes/utils.js\";\nimport { canonicalizeAPIConfig } from \"../core/apiconfig.js\";\nimport { bytesToHex, concatBytes, hexToBytes, utf8 } from \"../core/encoding.js\";\nimport { normalizeSecp256k1PublicKeyHex } from \"../core/nodeKeys.js\";\nimport type { APIConfig, EncKeyBundle, Node } from \"../core/types.js\";\n\nconst NONCE_BYTES = 12; // AES-GCM nonce\nconst SYM_KEY_BYTES = 32;\n\nconst SECRET_PLACEHOLDER = /\\{\\{\\s*secret\\.([A-Za-z0-9_]+)\\s*\\}\\}/g;\n\ninterface EncryptionRecipient {\n index: number;\n signingKey: string;\n}\n\n/**\n * Replace `{{secret.NAME}}` placeholders in the string fields of an API config.\n * Throws if a referenced secret is missing.\n */\nexport function resolveAPIConfig(\n apiConfig: APIConfig,\n secrets: Record<string, string>,\n): APIConfig {\n const sub = (s: string): string =>\n s.replace(SECRET_PLACEHOLDER, (_m, name: string) => {\n if (!(name in secrets)) throw new Error(`Missing secret: ${name}`);\n return secrets[name]!;\n });\n\n const headers = apiConfig.headers\n ? Object.fromEntries(Object.entries(apiConfig.headers).map(([k, v]) => [k, sub(v)]))\n : undefined;\n\n return {\n ...apiConfig,\n url: sub(apiConfig.url),\n ...(headers ? { headers } : {}),\n responseParser: sub(apiConfig.responseParser),\n ...(apiConfig.valueTransform ? { valueTransform: sub(apiConfig.valueTransform) } : {}),\n };\n}\n\n/**\n * Encrypt a resolved API config with a fresh symmetric key, then ECDH-wrap that\n * key for each selected node. The gateway only ever sees placeholders.\n */\nexport function encryptForNodes(\n apiConfig: APIConfig,\n secrets: Record<string, string>,\n selectedNodes: Node[],\n): EncKeyBundle {\n const recipients = validateEncryptionRecipients(selectedNodes);\n\n const resolved = resolveAPIConfig(apiConfig, secrets);\n const plaintext = utf8(JSON.stringify(canonicalizeAPIConfig(resolved)));\n\n const symKey = randomBytes(SYM_KEY_BYTES);\n const nonceSym = randomBytes(NONCE_BYTES);\n const ciphertext = gcm(symKey, nonceSym).encrypt(plaintext);\n\n const ephemeralPriv = secp256k1.utils.randomSecretKey();\n const ephemeralPub = secp256k1.getPublicKey(ephemeralPriv, true); // compressed\n\n const envelopes: Record<string, string> = {};\n for (const node of recipients) {\n const envelopeIndex = String(node.index);\n const nodePub = hexToBytes(node.signingKey);\n const shared = secp256k1.getSharedSecret(ephemeralPriv, nodePub);\n const wrapKey = keccak_256(shared);\n const nonceEnv = randomBytes(NONCE_BYTES);\n const wrappedSymKey = gcm(wrapKey, nonceEnv).encrypt(symKey);\n envelopes[envelopeIndex] = bytesToHex(concatBytes(nonceEnv, wrappedSymKey));\n }\n\n return {\n ephemeralPub: bytesToHex(ephemeralPub),\n nonceSym: bytesToHex(nonceSym),\n ciphertext: bytesToHex(ciphertext),\n envelopes,\n };\n}\n\nfunction validateEncryptionRecipients(selectedNodes: Node[]): EncryptionRecipient[] {\n if (selectedNodes.length === 0) throw new Error(\"No nodes to encrypt for\");\n\n const envelopeIndexes = new Set<string>();\n const envelopeKeys = new Set<string>();\n return selectedNodes.map((node) => {\n if (!Number.isInteger(node.index) || node.index < 0) {\n throw new Error(`Selected node index must be a non-negative integer: ${node.index}`);\n }\n const envelopeIndex = String(node.index);\n if (envelopeIndexes.has(envelopeIndex)) {\n throw new Error(`Duplicate selected node index: ${node.index}`);\n }\n envelopeIndexes.add(envelopeIndex);\n\n const signingKey = normalizeSecp256k1PublicKeyHex(\n node.signingKey,\n `Selected node ${node.index} signingKey`,\n );\n if (envelopeKeys.has(signingKey)) {\n throw new Error(`Duplicate selected node signingKey: ${node.index}`);\n }\n envelopeKeys.add(signingKey);\n return { index: node.index, signingKey };\n });\n}\n","/**\n * EIP-712 typed-data hashing and EIP-3009 `TransferWithAuthorization` digests.\n *\n * Used to sign payments to an API source that is itself x402-paywalled: the\n * caller authorizes a transfer from their own wallet, so the token contract is\n * the EIP-712 verifying contract. Signature-critical bytes — must stay\n * byte-identical with the token contract and the source's facilitator.\n */\nimport { keccak_256 } from \"@noble/hashes/sha3.js\";\nimport { secp256k1 } from \"@noble/curves/secp256k1.js\";\nimport { bytesToHex, bytesToHex0x, concatBytes, hexToBytes, utf8 } from \"../core/encoding.js\";\nimport type { EvmSigner } from \"../core/types.js\";\n\n/** EIP-712 domain of the token contract that will settle the authorization. */\nexport interface Eip712Domain {\n name: string;\n version: string;\n chainId: number;\n /** Token contract address, 0x-prefixed. */\n verifyingContract: string;\n}\n\n/** EIP-3009 transfer authorization. Amounts are decimal strings of base units. */\nexport interface TransferAuthorization {\n from: string;\n to: string;\n value: string;\n validAfter: string;\n validBefore: string;\n /** 0x-prefixed 32-byte nonce. */\n nonce: string;\n}\n\nconst typeHash = (signature: string): Uint8Array => keccak_256(utf8(signature));\n\nexport const EIP712_DOMAIN_TYPEHASH = typeHash(\n \"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\",\n);\n\nexport const TRANSFER_WITH_AUTHORIZATION_TYPEHASH = typeHash(\n \"TransferWithAuthorization(address from,address to,uint256 value,uint256 validAfter,uint256 validBefore,bytes32 nonce)\",\n);\n\n/** ABI-encode one 32-byte word from raw bytes, right-aligned. */\nfunction word(bytes: Uint8Array): Uint8Array {\n if (bytes.length > 32) throw new RangeError(\"ABI word overflow\");\n const out = new Uint8Array(32);\n out.set(bytes, 32 - bytes.length);\n return out;\n}\n\nfunction addressWord(address: string): Uint8Array {\n const bytes = hexToBytes(address);\n if (bytes.length !== 20) throw new RangeError(`Not a 20-byte address: ${address}`);\n return word(bytes);\n}\n\nfunction uintWord(value: string | bigint): Uint8Array {\n const n = typeof value === \"bigint\" ? value : BigInt(value);\n if (n < 0n) throw new RangeError(`Not an unsigned integer: ${value}`);\n const hex = n.toString(16);\n return word(hexToBytes(hex.length % 2 === 0 ? hex : \"0\" + hex));\n}\n\nfunction bytes32Word(value: string): Uint8Array {\n const bytes = hexToBytes(value);\n if (bytes.length !== 32) throw new RangeError(`Not a 32-byte value: ${value}`);\n return bytes;\n}\n\nexport function domainSeparator(domain: Eip712Domain): Uint8Array {\n return keccak_256(\n concatBytes(\n EIP712_DOMAIN_TYPEHASH,\n keccak_256(utf8(domain.name)),\n keccak_256(utf8(domain.version)),\n uintWord(BigInt(domain.chainId)),\n addressWord(domain.verifyingContract),\n ),\n );\n}\n\nexport function transferWithAuthorizationHash(auth: TransferAuthorization): Uint8Array {\n return keccak_256(\n concatBytes(\n TRANSFER_WITH_AUTHORIZATION_TYPEHASH,\n addressWord(auth.from),\n addressWord(auth.to),\n uintWord(auth.value),\n uintWord(auth.validAfter),\n uintWord(auth.validBefore),\n bytes32Word(auth.nonce),\n ),\n );\n}\n\n/** The 32-byte digest a wallet signs: `keccak256(0x1901 || domain || struct)`. */\nexport function transferWithAuthorizationDigest(\n domain: Eip712Domain,\n auth: TransferAuthorization,\n): Uint8Array {\n return keccak_256(\n concatBytes(\n Uint8Array.from([0x19, 0x01]),\n domainSeparator(domain),\n transferWithAuthorizationHash(auth),\n ),\n );\n}\n\n/** EIP-55 checksum form. Some facilitators reject non-checksummed addresses. */\nexport function toChecksumAddress(address: string): string {\n const lower = bytesToHex(hexToBytes(address));\n if (lower.length !== 40) throw new RangeError(`Not a 20-byte address: ${address}`);\n const digest = bytesToHex(keccak_256(utf8(lower)));\n let out = \"0x\";\n for (let i = 0; i < lower.length; i++) {\n out += parseInt(digest[i]!, 16) >= 8 ? lower[i]!.toUpperCase() : lower[i]!;\n }\n return out;\n}\n\n/** The EIP-55 address of a raw secp256k1 private key. */\nexport function evmAddressFromPrivateKey(privateKey: string | Uint8Array): string {\n const key = typeof privateKey === \"string\" ? hexToBytes(privateKey) : privateKey;\n if (key.length !== 32) throw new RangeError(\"EVM private key must be 32 bytes\");\n const uncompressed = secp256k1.getPublicKey(key, false);\n // Drop the 0x04 tag, keccak the 64-byte point, keep the low 20 bytes.\n return toChecksumAddress(bytesToHex0x(keccak_256(uncompressed.subarray(1)).subarray(12)));\n}\n\n/**\n * Build an {@link EvmSigner} from a raw secp256k1 private key. The key stays in\n * the caller's process: neither Molpha nor the gateway ever sees one.\n */\nexport function createEvmSignerFromPrivateKey(privateKey: string | Uint8Array): EvmSigner {\n const key = typeof privateKey === \"string\" ? hexToBytes(privateKey) : privateKey;\n const address = evmAddressFromPrivateKey(key);\n\n return {\n address,\n async signDigest(digest: Uint8Array): Promise<Uint8Array> {\n if (digest.length !== 32) throw new RangeError(\"Digest must be 32 bytes\");\n // Noble returns [recovery || r || s]; Ethereum wants r || s || v.\n const signed = secp256k1.sign(digest, key, { prehash: false, format: \"recovered\" });\n const out = new Uint8Array(65);\n out.set(signed.subarray(1), 0);\n out[64] = 27 + signed[0]!;\n return out;\n },\n };\n}\n","/**\n * Paying an API source that is itself x402-paywalled.\n *\n * The caller pays the source directly, from their own wallet on the source's\n * network. Molpha never holds, signs for, or converts those funds, and the\n * Molpha side of the round is unchanged: a paid source still costs exactly one\n * round of subscription quota, and source payment never enters `sourceId`.\n */\nimport { randomBytes } from \"@noble/hashes/utils.js\";\nimport { base64ToBytes, bytesToBase64, bytesToHex0x, utf8 } from \"../core/encoding.js\";\nimport { effectiveSelectionSize } from \"../core/selection.js\";\nimport type {\n APIConfig,\n AssetDomain,\n EvmSigner,\n UpstreamQuote,\n UpstreamTerms,\n} from \"../core/types.js\";\nimport { transferWithAuthorizationDigest, toChecksumAddress } from \"../evm/eip712.js\";\nimport { resolveAPIConfig } from \"./encryption.js\";\n\n/**\n * Payment networks whose authorizations this SDK can sign. Beta is Base USDC;\n * the asset is pinned because the caller signs a transfer from their own wallet\n * and the token contract is the EIP-712 verifying contract.\n */\nconst NETWORKS: Record<string, { chainId: number; usdc: string }> = {\n \"eip155:8453\": { chainId: 8453, usdc: \"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913\" },\n \"eip155:84532\": { chainId: 84532, usdc: \"0x036CbD53842c5426634e7929541eC2318f3dCF7e\" },\n // x402 v1 network names.\n base: { chainId: 8453, usdc: \"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913\" },\n \"base-sepolia\": { chainId: 84532, usdc: \"0x036CbD53842c5426634e7929541eC2318f3dCF7e\" },\n};\n\n/** Raised when a round needs source payment the caller cannot or did not make. */\nexport class UpstreamPaymentRequiredError extends Error {\n constructor(\n readonly quote: UpstreamQuote,\n message?: string,\n ) {\n super(\n message ??\n `API source requires payment for up to ${quote.eligibleSetSize} fetches: ${quote.resource}`,\n );\n this.name = \"UpstreamPaymentRequiredError\";\n }\n}\n\n/**\n * Number of source fetches this round may perform, and so authorizations to\n * sign: `min(signaturesRequired + redundancyBuffer, nodeCount)`. Identical to\n * the round's selection size — the eligible set *is* the set that fetches.\n */\nexport function eligibleSetSize(\n signaturesRequired: number,\n registry: { nodeCount: number; redundancyBuffer: number },\n): number {\n return effectiveSelectionSize(\n signaturesRequired,\n registry.redundancyBuffer,\n registry.nodeCount,\n );\n}\n\n/** Reads a gateway 402 body and returns the relayed upstream quote, if any. */\nexport function parseUpstreamQuote(envelope: unknown): UpstreamQuote | null {\n if (!envelope || typeof envelope !== \"object\") return null;\n const extensions = (envelope as { extensions?: unknown }).extensions;\n if (!extensions || typeof extensions !== \"object\") return null;\n const quote = (extensions as { upstream?: unknown }).upstream;\n if (!quote || typeof quote !== \"object\") return null;\n return typeof (quote as UpstreamQuote).eligibleSetSize === \"number\"\n ? (quote as UpstreamQuote)\n : null;\n}\n\n/** One `accepts` entry of a source's 402 envelope. */\ninterface Offer {\n scheme?: string;\n network?: string;\n asset?: string;\n payTo?: string;\n amount?: string | number;\n maxAmountRequired?: string | number;\n maxTimeoutSeconds?: string | number;\n extra?: { name?: string; version?: string };\n}\n\n/** Picks the one offer this SDK can sign, and validates it before any signing. */\nfunction selectTerms(\n envelope: Record<string, unknown>,\n resource: string,\n assetDomain?: AssetDomain,\n): UpstreamTerms {\n const version = envelope.x402Version === 1 ? 1 : 2;\n const offers: Offer[] = Array.isArray(envelope.accepts) ? envelope.accepts : [];\n if (offers.length === 0) {\n throw new Error(`Source 402 for ${resource} advertised no payment terms`);\n }\n\n const supported = offers.find(\n (o) => o.scheme === \"exact\" && NETWORKS[String(o.network)] !== undefined,\n );\n if (!supported) {\n const seen = offers.map((o) => `${o.scheme}/${o.network}`).join(\", \");\n throw new Error(\n `Source ${resource} requires an unsupported payment scheme or network (${seen}); this SDK signs exact payments on Base USDC only`,\n );\n }\n\n const network = NETWORKS[String(supported.network)]!;\n const asset = String(supported.asset ?? \"\");\n if (asset.toLowerCase() !== network.usdc.toLowerCase()) {\n throw new Error(\n `Source ${resource} asks to be paid in ${asset} on ${supported.network}; this SDK signs USDC (${network.usdc}) only`,\n );\n }\n\n const domain =\n assetDomain ??\n (supported.extra?.name && supported.extra?.version\n ? { name: String(supported.extra.name), version: String(supported.extra.version) }\n : undefined);\n if (!domain) {\n throw new Error(\n `Source ${resource} omitted extra.name/extra.version for ${asset}; supply sourcePayment.assetDomain to sign against it`,\n );\n }\n\n const amount = String(supported.amount ?? supported.maxAmountRequired ?? \"\");\n if (!/^\\d+$/.test(amount)) {\n throw new Error(`Source ${resource} quoted a non-integer price: ${amount}`);\n }\n const payTo = String(supported.payTo ?? \"\");\n if (!payTo) throw new Error(`Source ${resource} omitted payTo`);\n\n return {\n x402Version: version,\n // Echoed verbatim in the signed payload, so it must stay the source's own object.\n requirements: supported as Record<string, unknown>,\n network: String(supported.network),\n chainId: network.chainId,\n asset,\n payTo,\n amount,\n maxTimeoutSeconds: Number(supported.maxTimeoutSeconds ?? 60),\n domain,\n resource,\n };\n}\n\n/** Decodes an x402 envelope from the `PAYMENT-REQUIRED` header, or the body. */\nfunction decodeEnvelope(headerValue: string | null, body: string): Record<string, unknown> {\n if (headerValue) {\n try {\n return JSON.parse(\n new TextDecoder().decode(base64ToBytes(headerValue)),\n ) as Record<string, unknown>;\n } catch {\n // Fall through to the body, which carries the same object.\n }\n }\n return JSON.parse(body) as Record<string, unknown>;\n}\n\n/**\n * Validates caller-supplied terms with the same allowlist and structural checks\n * as {@link probeSource}. Returns canonical {@link UpstreamTerms} derived from\n * `terms.requirements`, not the caller's top-level fields.\n */\nexport function validateSuppliedTerms(\n terms: UpstreamTerms,\n resource: string,\n assetDomain?: AssetDomain,\n): UpstreamTerms {\n return selectTerms(\n {\n x402Version: terms.x402Version,\n accepts: [terms.requirements as Offer],\n },\n resource,\n assetDomain,\n );\n}\n\n/**\n * Fetch the source unpaid to read its own x402 terms. This is a price fetch,\n * not a data fetch: nodes remain the only fetchers of the value itself.\n * Returns `null` when the source is not paywalled.\n */\nexport async function probeSource(\n apiConfig: APIConfig,\n options: { secrets?: Record<string, string>; assetDomain?: AssetDomain; timeoutMs?: number } = {},\n): Promise<UpstreamTerms | null> {\n const resolved = options.secrets ? resolveAPIConfig(apiConfig, options.secrets) : apiConfig;\n\n const init: RequestInit = {\n method: resolved.method ?? \"GET\",\n headers: resolved.headers ?? {},\n };\n let res: Response;\n if (options.timeoutMs === undefined) {\n res = await fetch(resolved.url, init);\n } else {\n const controller = new AbortController();\n const timer = setTimeout(() => controller.abort(), options.timeoutMs);\n try {\n res = await fetch(resolved.url, { ...init, signal: controller.signal });\n } finally {\n clearTimeout(timer);\n }\n }\n if (res.status !== 402) return null;\n\n // Probe against the placeholder URL so the terms describe the declared source.\n return selectTerms(\n decodeEnvelope(res.headers.get(\"PAYMENT-REQUIRED\"), await res.text()),\n apiConfig.url,\n options.assetDomain,\n );\n}\n\n/**\n * Sign one x402 payment authorization per eligible node.\n *\n * Sign the whole eligible set. Only authorizations a node actually spends ever\n * settle, so unused ones cost nothing, while signing fewer starves buffer nodes\n * and raises the round's failure probability. Every authorization carries a\n * unique nonce, which is what prevents one from settling twice.\n */\nexport async function signSourcePayments(\n terms: UpstreamTerms,\n signer: EvmSigner,\n count: number,\n): Promise<string[]> {\n if (!Number.isInteger(count) || count < 1) {\n throw new RangeError(`Cannot sign ${count} source payments`);\n }\n\n const now = Math.floor(Date.now() / 1000);\n const validAfter = String(now - 600);\n const validBefore = String(now + Math.max(terms.maxTimeoutSeconds, 60));\n\n const payments: string[] = [];\n for (let i = 0; i < count; i++) {\n const authorization = {\n from: toChecksumAddress(signer.address),\n to: toChecksumAddress(terms.payTo),\n value: terms.amount,\n validAfter,\n validBefore,\n nonce: bytesToHex0x(randomBytes(32)),\n };\n const digest = transferWithAuthorizationDigest(\n {\n name: terms.domain.name,\n version: terms.domain.version,\n chainId: terms.chainId,\n verifyingContract: terms.asset,\n },\n authorization,\n );\n const signature = bytesToHex0x(await signer.signDigest(digest));\n\n const payload =\n terms.x402Version === 1\n ? {\n x402Version: 1,\n scheme: \"exact\",\n network: terms.network,\n payload: { signature, authorization },\n }\n : {\n x402Version: 2,\n accepted: terms.requirements,\n payload: { signature, authorization },\n };\n payments.push(bytesToBase64(utf8(JSON.stringify(payload))));\n }\n return payments;\n}\n","/**\n * Gateway on-chain identity. The request-auth hash binds the Gateway PDA\n * (`[\"molpha_gateway\", gatewayAuthority]`), so the client must know which gateway it is\n * talking to. Kit-only — no `@anchor-lang/core` / web3.js on the gateway path.\n */\nimport {\n address,\n getAddressEncoder,\n getProgramDerivedAddress,\n type Address,\n} from \"@solana/kit\";\nimport { utf8 } from \"../core/encoding.js\";\n\nconst SEED_GATEWAY = utf8(\"molpha_gateway\");\nconst addressEncoder = getAddressEncoder();\n\n/** One gateway endpoint plus, optionally, the authority key its `Gateway` PDA derives from. */\nexport interface GatewayEndpoint {\n /** Base URL, e.g. `https://gateway.example.com` (trailing slash ignored). */\n url: string;\n /**\n * Base58 Solana pubkey of the gateway's signing authority. When omitted the client\n * fetches it once from `GET {url}/v1/info` (`data.gatewayAuthority`) the first time an\n * authenticated request targets this endpoint.\n */\n gatewayAuthority?: string;\n}\n\nexport type GatewayEndpointInput = string | GatewayEndpoint;\n\n/** Payload of `GET /v1/info` (inside the usual `{ status, data }` envelope). */\nexport interface GatewayInfo {\n gatewayAuthority: string;\n /** Program id the gateway settles against; must match the client's when present. */\n programId?: string;\n}\n\nexport function normalizeEndpoint(input: GatewayEndpointInput): GatewayEndpoint {\n const endpoint: GatewayEndpoint = typeof input === \"string\" ? { url: input } : { ...input };\n endpoint.url = endpoint.url.replace(/\\/$/, \"\");\n if (!endpoint.url) throw new Error(\"Gateway endpoint url must not be empty\");\n return endpoint;\n}\n\n/** 32-byte form of a base58 address. */\nexport function addressToBytes(value: string): Uint8Array {\n return Uint8Array.from(addressEncoder.encode(address(value)));\n}\n\n/** `[\"molpha_gateway\", gatewayAuthority]` under `programId`, as a base58 address. */\nexport async function deriveGatewayPdaAddress(\n gatewayAuthority: string,\n programId: string,\n): Promise<Address> {\n const [pda] = await getProgramDerivedAddress({\n programAddress: address(programId),\n seeds: [SEED_GATEWAY, addressToBytes(gatewayAuthority)],\n });\n return pda;\n}\n\n/** 32-byte Gateway PDA — the `gateway` field of `RequestAuth`. */\nexport async function deriveGatewayPda(\n gatewayAuthority: string,\n programId: string,\n): Promise<Uint8Array> {\n return addressToBytes(await deriveGatewayPdaAddress(gatewayAuthority, programId));\n}\n\n/** Validate an unwrapped `/v1/info` payload. */\nexport function parseGatewayInfo(data: unknown): GatewayInfo {\n if (!data || typeof data !== \"object\") {\n throw new Error(\"GET /v1/info returned malformed payload\");\n }\n const record = data as Record<string, unknown>;\n const gatewayAuthority = record.gatewayAuthority;\n if (typeof gatewayAuthority !== \"string\" || !gatewayAuthority) {\n throw new Error(\"GET /v1/info payload is missing gatewayAuthority\");\n }\n const programId = record.programId;\n if (programId !== undefined && typeof programId !== \"string\") {\n throw new Error(\"GET /v1/info programId must be a base58 string\");\n }\n return programId === undefined ? { gatewayAuthority } : { gatewayAuthority, programId };\n}\n","/**\n * `MolphaGateway` — isomorphic HTTP client with multi-endpoint failover.\n */\nimport { assertAggregationQuorum, canonicalizeAggregation } from \"../core/aggregation.js\";\nimport { canonicalizeAPIConfig, deriveSourceId } from \"../core/apiconfig.js\";\nimport { MOLPHA_PROGRAM_ID } from \"../core/constants.js\";\nimport { bytesToHex, bytesToHex0x } from \"../core/encoding.js\";\nimport { formatInt256Decimal } from \"../core/int256.js\";\nimport { normalizeSecp256k1PublicKeyHex } from \"../core/nodeKeys.js\";\nimport {\n deriveGroupBitmap,\n deriveSelectionSeed,\n effectiveSelectionSize,\n selectedIndices,\n} from \"../core/selection.js\";\nimport type {\n AggregationConfig,\n APIConfig,\n Attestation,\n Node,\n NodeKeyVerifier,\n NodesInfo,\n RegistrySelectionConfig,\n Signer,\n SourcePaymentOptions,\n UpstreamTerms,\n} from \"../core/types.js\";\nimport { hashRequestAuth } from \"./auth.js\";\nimport { encryptForNodes } from \"./encryption.js\";\nimport {\n UpstreamPaymentRequiredError,\n parseUpstreamQuote,\n probeSource,\n signSourcePayments,\n validateSuppliedTerms,\n} from \"./x402.js\";\nimport {\n addressToBytes,\n deriveGatewayPda,\n normalizeEndpoint,\n parseGatewayInfo,\n type GatewayEndpoint,\n type GatewayEndpointInput,\n type GatewayInfo,\n} from \"./identity.js\";\n\nexport type { RegistrySelectionConfig } from \"../core/types.js\";\nexport * from \"./auth.js\";\nexport * from \"./identity.js\";\nexport * from \"./x402.js\";\n\nexport interface RequestSignedDataOptions {\n /**\n * The API definition to resolve. Its canonical form determines the round's\n * `sourceId = keccak256(JSON.stringify(canonicalizeAPIConfig(apiConfig)))`, so pass the\n * same config (including `{{secret.*}}` placeholders) every time.\n */\n apiConfig: APIConfig;\n /**\n * Requested quorum (u8, ≥ the protocol `min_signers`). Median tolerance mode\n * (`apiConfig.aggregation`) additionally requires `>= 3`; lower values are rejected\n * before any request is made.\n */\n signaturesRequired: number;\n /**\n * Solana pubkey (base58) of the subscription owner.\n * Overrides the gateway's `defaultSubscriptionOwner` when set.\n */\n subscriptionOwner?: string;\n /**\n * Solana pubkey (base58) of the consumer authority that signs gateway auth.\n * Overrides the gateway's `defaultConsumerAuthority` when set.\n */\n consumerAuthority?: string;\n /**\n * Signs `hashRequestAuth({ programId, gateway, sourceId, signaturesRequired, timestamp })`.\n * The hash binds the gateway's on-chain account, so it is computed — and the signer\n * invoked — once per endpoint actually tried. Overrides the gateway's `defaultSigner`\n * when set. When both are omitted, sends an all-zero authSig (dev only).\n */\n signer?: Signer;\n encrypt?: { secrets: Record<string, string> };\n /**\n * Pays an API source that is itself x402-paywalled. The SDK reads the source's\n * own 402, signs one authorization per node in the round's eligible set, and\n * sends them with the round as `sourcePayments`.\n *\n * Payment goes to the source, never to Molpha: the round still costs exactly\n * one round of subscription quota. Only authorizations a node actually spends\n * ever settle, so the redundancy buffer costs nothing when it goes unused.\n * Without this, a paywalled source throws {@link UpstreamPaymentRequiredError}.\n */\n sourcePayment?: SourcePaymentOptions;\n /** Max accepted value age in seconds. Default 60. */\n maxAge?: number;\n /** Each retry re-rolls the timestamp. Default 15. */\n maxRetries?: number;\n /** Per-request timeout in ms. Default 5000. */\n timeoutMs?: number;\n /**\n * Pre-fetched round inputs. Any field present here skips its network/on-chain\n * fetch, so a fully-populated context turns `requestSignedData` into a single\n * POST round (the \"short\" flow). Build a reusable one with\n * {@link MolphaGateway.prepareContext}.\n *\n * Caching is opt-in because these inputs can drift: a stale `registryVersion`,\n * `redundancyBuffer`, `nodeCount`, or `nodes` set produces a result the chain will\n * reject. Refresh the context when the on-chain registry version changes.\n */\n context?: Partial<RoundContext>;\n /**\n * Authenticates selected gateway node encryption keys before private API\n * secrets are encrypted. Overrides the gateway-level verifier when set.\n */\n verifyNodeKeys?: NodeKeyVerifier;\n /**\n * Unsafe development escape hatch for standalone gateway usage. When true,\n * encrypted private API requests may use gateway-provided node keys without\n * authentication. Defaults to false.\n */\n allowUnverifiedNodeKeysForPrivateApi?: boolean;\n}\n\nexport interface MolphaGatewayOptions {\n /** Solana pubkey (base58) of the subscription owner used when a request omits it. */\n defaultSubscriptionOwner?: string;\n /** Solana pubkey (base58) of the consumer authority used when a request omits it. */\n defaultConsumerAuthority?: string;\n /**\n * Molpha program id the request authorization is bound to. Defaults to the vendored\n * `MOLPHA_PROGRAM_ID`; must match the gateway's deployment.\n */\n programId?: string;\n /**\n * Authenticates selected gateway node encryption keys before private API\n * secrets are encrypted.\n */\n verifyNodeKeys?: NodeKeyVerifier;\n /**\n * Unsafe development escape hatch. When true, encrypted private API requests\n * may use gateway-provided node keys without authentication. Defaults to false.\n */\n allowUnverifiedNodeKeysForPrivateApi?: boolean;\n}\n\n/**\n * The slow-changing inputs a `requestSignedData` round binds to. Fetch once with\n * {@link MolphaGateway.prepareContext} and reuse across many rounds.\n */\nexport interface RoundContext extends RegistrySelectionConfig {\n /** Full node set used to encrypt private API secrets for the selected nodes. */\n nodes: Node[];\n}\n\n/** Round inputs after resolution; `nodes` is only fetched when a round needs it. */\ninterface ResolvedRound extends RegistrySelectionConfig {\n nodes?: Node[];\n}\n\ninterface GatewaySignedDataResponse {\n status: \"completed\" | \"pending\" | string;\n data?: GatewaySignedData;\n}\n\n/**\n * The gateway's `attestation` object (`AttestationData.attestation`): the signed struct as the\n * on-chain `Attestation`, with `payload.value` the packed 32-byte value.\n */\ninterface GatewayAttestation {\n payload?: {\n value?: string;\n sourceId?: string;\n registryVersion?: number;\n signaturesRequired?: number;\n canonicalTimestamp?: number;\n };\n signature?: {\n signature?: string;\n commitment?: string;\n signersBitmap?: string;\n };\n}\n\ninterface GatewaySignedData {\n /** Current gateways nest the signed struct here; the flat fields below are the older shape. */\n attestation?: GatewayAttestation;\n sourceId?: string;\n /** Echo of the canonical apiConfig hash; equals `sourceId`. */\n configHash?: string;\n /** Echo of the request's tolerance policy; present only for tolerance rounds (newer gateways). */\n aggregation?: unknown;\n value?: string;\n valuePacked?: string;\n timestamp?: number;\n registryVersion?: number;\n signaturesRequired?: number;\n signersBitmap?: string;\n s?: string;\n commitmentAddr?: string;\n fresh?: boolean;\n}\n\ninterface GatewayEnvelope<T> {\n status: string;\n data: T;\n}\n\nconst ZERO_AUTH_SIG = new Uint8Array(64);\n\n/** Default gateway base URL when `endpoints` is omitted. */\nexport const DEFAULT_GATEWAY_ENDPOINT = \"https://dev-gateway.molpha.io/\";\n\n/** Thrown for terminal gateway errors (400/401) — never retried. */\nexport class GatewayError extends Error {\n constructor(\n message: string,\n readonly status?: number,\n ) {\n super(message);\n this.name = \"GatewayError\";\n }\n}\n\nexport class MolphaGateway {\n private readonly endpoints: GatewayEndpoint[];\n private readonly getRegistrySelectionConfig: () => Promise<RegistrySelectionConfig>;\n private readonly defaultSigner?: Signer;\n private readonly defaultSubscriptionOwner?: string;\n private readonly defaultConsumerAuthority?: string;\n private readonly verifyNodeKeys?: NodeKeyVerifier;\n private readonly allowUnverifiedNodeKeysForPrivateApi: boolean;\n /** Program id the request authorization is bound to (base58). */\n readonly programId: string;\n private readonly programIdBytes: Uint8Array;\n /** Gateway PDA per endpoint URL; resolved once per client lifetime. */\n private readonly gatewayPdas = new Map<string, Promise<Uint8Array>>();\n\n constructor(\n endpoints?: GatewayEndpointInput | GatewayEndpointInput[],\n getRegistrySelectionConfig: () => Promise<RegistrySelectionConfig> = async () => {\n throw new Error(\n \"MolphaGateway requires getRegistrySelectionConfig to request signed data — pass the current on-chain registry version, redundancy buffer and node count (e.g. () => solana.getRegistrySelectionConfig())\",\n );\n },\n defaultSigner?: Signer,\n /**\n * Either a default subscription owner (base58) or gateway options. A string\n * keeps the previous positional form used by standalone callers/tests.\n */\n defaultSubscriptionOwnerOrOptions?: string | MolphaGatewayOptions,\n defaultConsumerAuthority?: string,\n ) {\n const list =\n endpoints === undefined\n ? [DEFAULT_GATEWAY_ENDPOINT]\n : Array.isArray(endpoints)\n ? endpoints\n : [endpoints];\n if (list.length === 0) throw new Error(\"At least one endpoint is required\");\n this.endpoints = list.map(normalizeEndpoint);\n this.getRegistrySelectionConfig = getRegistrySelectionConfig;\n this.defaultSigner = defaultSigner;\n\n const options: MolphaGatewayOptions =\n typeof defaultSubscriptionOwnerOrOptions === \"string\"\n ? {\n defaultSubscriptionOwner: defaultSubscriptionOwnerOrOptions,\n defaultConsumerAuthority,\n }\n : (defaultSubscriptionOwnerOrOptions ?? {});\n\n this.defaultSubscriptionOwner = options.defaultSubscriptionOwner;\n this.defaultConsumerAuthority =\n options.defaultConsumerAuthority ?? options.defaultSubscriptionOwner;\n this.verifyNodeKeys = options.verifyNodeKeys;\n this.allowUnverifiedNodeKeysForPrivateApi =\n options.allowUnverifiedNodeKeysForPrivateApi ?? false;\n this.programId = options.programId ?? MOLPHA_PROGRAM_ID;\n this.programIdBytes = addressToBytes(this.programId);\n }\n\n /** Tries endpoints in order; returns the first node list it can fetch. */\n async getNodes(): Promise<Node[]> {\n return (await this.getNodesInfo()).nodes;\n }\n\n /**\n * `GET /v1/nodes` — the peer set plus the gateway's view of the registry\n * selection policy, which sizes the eligible set a paid source must fund.\n *\n * The `registry` block is advisory: it is whatever the gateway read from the\n * chain, and is absent on older gateways or when that read failed. Prefer the\n * on-chain read (`MolphaSolanaClient.getRegistrySelectionConfig`) whenever a\n * Solana connection is available — `requestSignedData` already does.\n */\n async getNodesInfo(): Promise<NodesInfo> {\n const data = await this.firstReachableData<NodesInfo | Node[]>(\"/v1/nodes\");\n if (Array.isArray(data)) return { nodes: data };\n return {\n nodes: data.nodes,\n ...(data.registry ? { registry: data.registry } : {}),\n };\n }\n\n async isHealthy(): Promise<boolean> {\n for (const endpoint of this.endpoints) {\n try {\n const res = await fetch(`${endpoint.url}/health`, { method: \"GET\" });\n if (res.ok) return true;\n } catch {\n // try next\n }\n }\n return false;\n }\n\n /**\n * `GET {url}/v1/info` — the gateway's on-chain identity. Throws when the gateway\n * reports a `programId` different from this client's.\n */\n async fetchGatewayInfo(\n endpoint: GatewayEndpointInput,\n timeoutMs?: number,\n ): Promise<GatewayInfo> {\n const { url } = normalizeEndpoint(endpoint);\n const res = await this.fetchWithTimeout(`${url}/v1/info`, { method: \"GET\" }, timeoutMs);\n if (!res.ok) {\n throw new GatewayError(`GET /v1/info failed (${res.status})`, res.status);\n }\n const info = parseGatewayInfo(unwrapEnvelope(await res.json(), \"/v1/info\"));\n if (info.programId !== undefined && info.programId !== this.programId) {\n throw new GatewayError(\n `Gateway ${url} settles against program ${info.programId}, but this client is bound to ${this.programId}`,\n );\n }\n return info;\n }\n\n /**\n * Fetch the slow-changing round inputs (registry version, redundancy buffer,\n * node count, node set) once so they can be reused across many\n * {@link requestSignedData} calls. Pass the result back via\n * `requestSignedData({ ..., context })` to skip the prelude and run a\n * single-round \"short\" flow.\n *\n * Both fetches run in parallel. Registry version, redundancy buffer and node\n * count come from the on-chain registry read.\n */\n async prepareContext(): Promise<RoundContext> {\n const [registry, nodes] = await Promise.all([\n this.getRegistrySelectionConfig(),\n this.getNodes(),\n ]);\n return { ...registry, nodes };\n }\n\n /**\n * Request a threshold-signed data update from the gateway, with retry +\n * failover. Per attempt a fresh timestamp yields a fresh selection bitmap; the\n * body is POSTed to each endpoint in order until one `completed`s.\n *\n * The round's `sourceId` is derived from `apiConfig`. The request authorization\n * binds the program id and each gateway's on-chain account, so the auth signature\n * is recomputed for every endpoint tried.\n *\n * By default this fetches the registry selection config up front and the node\n * set only when the round needs it (private API encryption, or when the registry\n * read does not report `nodeCount`). Supply `opts.context` (e.g. from\n * {@link prepareContext}) to reuse cached inputs and skip those fetches — a\n * fully-populated context collapses the call to a single POST round.\n *\n * When the API source is itself x402-paywalled, pass `opts.sourcePayment` to\n * fund it; without that, such a source throws\n * {@link UpstreamPaymentRequiredError} carrying the gateway's quote.\n */\n async requestSignedData(opts: RequestSignedDataOptions): Promise<Attestation> {\n const {\n apiConfig,\n signer,\n encrypt,\n sourcePayment,\n maxAge = 60,\n maxRetries = 15,\n timeoutMs = 5000,\n } = opts;\n const signaturesRequired = assertSignaturesRequired(opts.signaturesRequired);\n\n const verifyNodeKeys = opts.verifyNodeKeys ?? this.verifyNodeKeys;\n const allowUnverified =\n opts.allowUnverifiedNodeKeysForPrivateApi ??\n this.allowUnverifiedNodeKeysForPrivateApi;\n if (encrypt && !verifyNodeKeys && !allowUnverified) {\n throw new Error(\n \"Private API encryption requires authenticated node keys. Provide verifyNodeKeys or set allowUnverifiedNodeKeysForPrivateApi: true for unsafe development use.\",\n );\n }\n\n // Validates `aggregation` (rejects `mode: \"exact\"`, unsupported rules, bad numbers) as\n // part of canonicalization; tolerance additionally needs a quorum of at least 3.\n const requestApiConfig = canonicalizeAPIConfig(apiConfig);\n assertAggregationQuorum(requestApiConfig.aggregation, signaturesRequired);\n const sourceIdBytes = deriveSourceId(requestApiConfig);\n const sourceId = bytesToHex(sourceIdBytes);\n\n const subscriptionOwner = opts.subscriptionOwner ?? this.defaultSubscriptionOwner;\n if (!subscriptionOwner) {\n throw new Error(\n \"subscriptionOwner is required — pass opts.subscriptionOwner or set MolphaGateway defaultSubscriptionOwner (MolphaSDK sets this from wallet.publicKey)\",\n );\n }\n const consumerAuthority =\n opts.consumerAuthority ?? this.defaultConsumerAuthority ?? subscriptionOwner;\n const authSigner = signer ?? this.defaultSigner;\n\n const round = await this.resolveContext(opts.context, encrypt !== undefined);\n const { registryVersion, redundancyBuffer } = round;\n if (\n round.nodeCount !== undefined &&\n round.nodes !== undefined &&\n round.nodes.length !== round.nodeCount\n ) {\n throw new Error(\n `Gateway node list has ${round.nodes.length} nodes but registry ${registryVersion} has node_count ${round.nodeCount} — refresh the round context`,\n );\n }\n const nodeCount = round.nodeCount ?? round.nodes?.length;\n if (nodeCount === undefined) {\n throw new Error(\"Round context resolved neither nodeCount nor nodes\");\n }\n\n // A paywalled source is paid by the caller, per node fetch, from their own\n // wallet. Read the source's terms once, then sign fresh authorizations per\n // attempt so a retry never reuses a nonce. The registry already tells us the\n // eligible set size, so no quote round trip is needed in the common case.\n let terms: UpstreamTerms | null = null;\n let authorizations = 0;\n let requoted = false;\n if (sourcePayment) {\n terms = sourcePayment.terms\n ? validateSuppliedTerms(\n sourcePayment.terms,\n requestApiConfig.url,\n sourcePayment.assetDomain,\n )\n : await probeSource(apiConfig, {\n ...(encrypt ? { secrets: encrypt.secrets } : {}),\n ...(sourcePayment.assetDomain ? { assetDomain: sourcePayment.assetDomain } : {}),\n timeoutMs,\n });\n if (terms) {\n authorizations = effectiveSelectionSize(\n signaturesRequired,\n redundancyBuffer,\n nodeCount,\n );\n }\n }\n\n let lastError: unknown;\n // Each attempt must be its own round: the tuple that identifies a round\n // includes the timestamp, and a dispatched round cannot be re-dispatched.\n let lastTimestamp = 0;\n for (let attempt = 0; attempt < maxRetries; attempt++) {\n let timestamp = Math.floor(Date.now() / 1000);\n if (timestamp <= lastTimestamp) timestamp = lastTimestamp + 1;\n lastTimestamp = timestamp;\n\n const seed = deriveSelectionSeed(sourceIdBytes, registryVersion, timestamp);\n const groupSize = effectiveSelectionSize(signaturesRequired, redundancyBuffer, nodeCount);\n const bitmap = deriveGroupBitmap(seed, nodeCount, groupSize);\n const indices = selectedIndices(bitmap, nodeCount);\n\n let encKeyBundle: ReturnType<typeof encryptForNodes> | undefined;\n if (encrypt) {\n const selected = selectedNodesForPrivateApiEncryption(round.nodes ?? [], indices);\n\n if (verifyNodeKeys) {\n await verifyNodeKeys({\n sourceId,\n registryVersion,\n timestamp,\n selectedIndexes: [...indices],\n selectedNodes: selected.map((node) => ({ ...node })),\n });\n }\n\n encKeyBundle = encryptForNodes(requestApiConfig, encrypt.secrets, selected);\n }\n\n // Fresh authorizations per attempt: each carries a unique nonce, which is\n // what keeps one from settling twice.\n let sourcePayments: string[] | undefined;\n if (terms && sourcePayment && authorizations > 0) {\n sourcePayments = await signSourcePayments(\n terms,\n sourcePayment.signer,\n authorizations,\n );\n }\n\n const baseBody: Record<string, unknown> = {\n sourceId,\n registryVersion,\n timestamp,\n maxAge,\n signaturesRequired,\n subscriptionOwner,\n consumerAuthority,\n apiConfig: requestApiConfig,\n };\n if (encKeyBundle) baseBody.encKeyBundle = encKeyBundle;\n if (sourcePayments) baseBody.sourcePayments = sourcePayments;\n\n /** Set when a relayed source quote makes this attempt's round obsolete. */\n let requote = false;\n for (const endpoint of this.endpoints) {\n try {\n let authSig: Uint8Array = ZERO_AUTH_SIG;\n if (authSigner) {\n const gateway = await this.resolveGatewayPda(endpoint, timeoutMs);\n authSig = await authSigner(\n hashRequestAuth({\n programId: this.programIdBytes,\n gateway,\n sourceId: sourceIdBytes,\n signaturesRequired,\n timestamp,\n }),\n );\n }\n const body = { ...baseBody, authSig: bytesToHex0x(authSig) };\n\n const res = await this.post(\n `${endpoint.url}/v1/round/execute`,\n body,\n timeoutMs,\n );\n\n // The API source itself wants paying, so the gateway relays its quote\n // instead of a fetch failure. Payment is required, just not to Molpha.\n if (res.status === 402) {\n const quote = parseUpstreamQuote(\n await res.json().catch(() => null),\n );\n if (!quote) {\n throw new GatewayError(\n \"Gateway requires payment but returned no upstream source quote\",\n 402,\n );\n }\n if (!sourcePayment) throw new UpstreamPaymentRequiredError(quote);\n // Already funded to the quoted size and still refused: the source\n // rejected the payment material, which resigning cannot fix.\n if (terms && requoted && authorizations >= quote.eligibleSetSize) {\n throw new UpstreamPaymentRequiredError(\n quote,\n `Source payment was not accepted for ${quote.resource}: ${quote.error ?? \"no detail\"}`,\n );\n }\n requoted = true;\n if (quote.eligibleSetSize !== groupSize) {\n throw new GatewayError(\n `Gateway upstream quote eligibleSetSize ${quote.eligibleSetSize} does not match this round's selection size ${groupSize} (min(signaturesRequired + redundancyBuffer, nodeCount))`,\n 402,\n );\n }\n authorizations = groupSize;\n if (!terms) {\n // Terms we cannot sign are terminal, not transient: surface them\n // with the quote instead of re-probing once per attempt.\n try {\n terms = await probeSource(apiConfig, {\n ...(encrypt ? { secrets: encrypt.secrets } : {}),\n ...(sourcePayment.assetDomain\n ? { assetDomain: sourcePayment.assetDomain }\n : {}),\n timeoutMs,\n });\n } catch (err) {\n throw new UpstreamPaymentRequiredError(\n quote,\n `Cannot pay ${quote.resource}: ${err instanceof Error ? err.message : String(err)}`,\n );\n }\n }\n if (!terms) {\n throw new UpstreamPaymentRequiredError(\n quote,\n `Gateway reports ${quote.resource} is paywalled but the source returned no payment terms`,\n );\n }\n // Recover on a fresh timestamp: this round is spent, so the next\n // attempt is a new round rather than a retry of the failed one.\n lastError = new UpstreamPaymentRequiredError(quote);\n requote = true;\n break;\n }\n\n const errorDetail = !res.ok ? await parseGatewayErrorDetail(res) : undefined;\n if (res.status === 400 || res.status === 401) {\n throw new GatewayError(\n formatGatewayErrorMessage(\"Gateway rejected request\", res.status, errorDetail),\n res.status,\n );\n }\n if (res.status === 503) {\n lastError = new GatewayError(\n formatGatewayErrorMessage(\"Gateway unavailable\", 503, errorDetail),\n 503,\n );\n continue; // a different gateway may already hold the AggSig\n }\n if (!res.ok) {\n lastError = new GatewayError(\n formatGatewayErrorMessage(\"Gateway error\", res.status, errorDetail),\n res.status,\n );\n continue;\n }\n const json = (await res.json()) as GatewaySignedDataResponse;\n const payload = json.data ?? (\n json.status === \"completed\" ? (json as unknown as GatewaySignedData) : undefined\n );\n if (json.status === \"completed\" && payload) {\n return toResult(payload, {\n sourceId,\n registryVersion,\n timestamp,\n signaturesRequired,\n bitmap,\n ...(requestApiConfig.aggregation\n ? { aggregation: requestApiConfig.aggregation }\n : {}),\n });\n }\n lastError = new Error(`Gateway returned status: ${json.status}`);\n } catch (err) {\n // An unpayable or refused source is terminal — never retried blindly.\n if (err instanceof UpstreamPaymentRequiredError) throw err;\n if (\n err instanceof GatewayError &&\n (err.status === 400 || err.status === 401 || err.status === 402)\n ) {\n throw err;\n }\n lastError = err; // timeout / network / identity lookup → next endpoint\n }\n }\n // A requote invalidates this attempt's body for every endpoint alike.\n if (requote) continue;\n }\n throw lastError instanceof Error\n ? lastError\n : new Error(\"Gateway round failed after retries\");\n }\n\n /**\n * Resolve the round inputs, fetching only the fields absent from `cached`.\n * Registry version, redundancy buffer and node count are treated as a unit (one\n * snapshot read). The node list is fetched only when `needNodes` (private API\n * encryption) or when nothing else can tell us the node count.\n */\n private async resolveContext(\n cached: Partial<RoundContext> | undefined,\n needNodes: boolean,\n ): Promise<ResolvedRound> {\n const hasRegistry =\n cached?.registryVersion !== undefined && cached?.redundancyBuffer !== undefined;\n const registryPromise: Promise<RegistrySelectionConfig> = hasRegistry\n ? Promise.resolve({\n registryVersion: cached.registryVersion!,\n redundancyBuffer: cached.redundancyBuffer!,\n ...(cached.nodeCount !== undefined ? { nodeCount: cached.nodeCount } : {}),\n })\n : this.getRegistrySelectionConfig();\n\n if (cached?.nodes !== undefined) {\n return { ...(await registryPromise), nodes: cached.nodes };\n }\n if (needNodes) {\n const [registry, nodes] = await Promise.all([registryPromise, this.getNodes()]);\n return { ...registry, nodes };\n }\n const registry = await registryPromise;\n if (registry.nodeCount !== undefined) return registry;\n return { ...registry, nodes: await this.getNodes() };\n }\n\n /** Gateway PDA bytes for an endpoint, cached per URL. A failed lookup is not cached. */\n private resolveGatewayPda(\n endpoint: GatewayEndpoint,\n timeoutMs: number,\n ): Promise<Uint8Array> {\n let pending = this.gatewayPdas.get(endpoint.url);\n if (!pending) {\n pending = this.lookupGatewayPda(endpoint, timeoutMs).catch((err: unknown) => {\n this.gatewayPdas.delete(endpoint.url);\n throw err;\n });\n this.gatewayPdas.set(endpoint.url, pending);\n }\n return pending;\n }\n\n private async lookupGatewayPda(\n endpoint: GatewayEndpoint,\n timeoutMs: number,\n ): Promise<Uint8Array> {\n const authority =\n endpoint.gatewayAuthority ??\n (await this.fetchGatewayInfo(endpoint, timeoutMs)).gatewayAuthority;\n return deriveGatewayPda(authority, this.programId);\n }\n\n private async firstReachableData<T>(path: string): Promise<T> {\n let lastError: unknown;\n for (const endpoint of this.endpoints) {\n try {\n const res = await fetch(`${endpoint.url}${path}`, { method: \"GET\" });\n if (res.ok) {\n return unwrapEnvelope(await res.json(), path, res.status) as T;\n }\n lastError = new GatewayError(`GET ${path} failed (${res.status})`, res.status);\n } catch (err) {\n lastError = err;\n }\n }\n throw lastError instanceof Error ? lastError : new Error(`GET ${path} failed`);\n }\n\n private async post(\n url: string,\n body: unknown,\n timeoutMs: number,\n ): Promise<Response> {\n return this.fetchWithTimeout(\n url,\n {\n method: \"POST\",\n headers: { \"content-type\": \"application/json\" },\n body: JSON.stringify(body),\n },\n timeoutMs,\n );\n }\n\n private async fetchWithTimeout(\n url: string,\n init: RequestInit,\n timeoutMs?: number,\n ): Promise<Response> {\n if (timeoutMs === undefined) {\n return fetch(url, init);\n }\n const controller = new AbortController();\n const timer = setTimeout(() => controller.abort(), timeoutMs);\n try {\n return await fetch(url, { ...init, signal: controller.signal });\n } finally {\n clearTimeout(timer);\n }\n }\n}\n\nfunction assertSignaturesRequired(value: number): number {\n if (!Number.isInteger(value) || value < 1 || value > 255) {\n throw new RangeError(`signaturesRequired must be an integer in 1..255, got ${value}`);\n }\n return value;\n}\n\n/** Unwrap the gateway `{ status, data }` envelope; passes bare payloads through. */\nfunction unwrapEnvelope(json: unknown, path: string, status?: number): unknown {\n if (json && typeof json === \"object\" && \"data\" in json) {\n const wrapped = json as Partial<GatewayEnvelope<unknown>>;\n if (wrapped.data === undefined) {\n throw new GatewayError(`GET ${path} returned malformed payload`, status);\n }\n return wrapped.data;\n }\n return json;\n}\n\nfunction selectedNodesForPrivateApiEncryption(\n nodes: Node[],\n selectedIndexes: number[],\n): Node[] {\n if (!Array.isArray(nodes)) {\n throw new Error(\"Private API encryption requires a gateway node array\");\n }\n if (selectedIndexes.length === 0) {\n throw new Error(\"Private API encryption requires at least one selected node\");\n }\n\n const selectedIndexSet = new Set<number>();\n for (const index of selectedIndexes) {\n if (!Number.isInteger(index) || index < 0) {\n throw new Error(\n `Private API encryption selected index must be a non-negative integer: ${index}`,\n );\n }\n if (selectedIndexSet.has(index)) {\n throw new Error(`Private API encryption selected index is duplicated: ${index}`);\n }\n selectedIndexSet.add(index);\n }\n\n const selectedByIndex = new Map<number, Node>();\n const nodeIndexes = new Set<number>();\n for (const node of nodes) {\n if (!Number.isInteger(node.index) || node.index < 0) {\n throw new Error(`Gateway node index must be a non-negative integer: ${node.index}`);\n }\n if (node.index >= nodes.length) {\n throw new Error(\n `Gateway node index ${node.index} is outside the node list range 0..${nodes.length - 1}`,\n );\n }\n if (nodeIndexes.has(node.index)) {\n throw new Error(`Gateway returned duplicate node index: ${node.index}`);\n }\n nodeIndexes.add(node.index);\n if (!selectedIndexSet.has(node.index)) continue;\n selectedByIndex.set(node.index, node);\n }\n\n const selectedSigningKeys = new Set<string>();\n return selectedIndexes.map((index) => {\n const node = selectedByIndex.get(index);\n if (!node) {\n throw new Error(`Gateway node list is missing selected node index: ${index}`);\n }\n const signingKey = normalizeSecp256k1PublicKeyHex(\n node.signingKey,\n `Gateway selected node ${index} signingKey`,\n );\n if (selectedSigningKeys.has(signingKey)) {\n throw new Error(`Gateway returned duplicate selected node signingKey: ${index}`);\n }\n selectedSigningKeys.add(signingKey);\n return node;\n });\n}\n\nfunction formatGatewayErrorMessage(\n prefix: string,\n status: number,\n detail?: string,\n): string {\n if (!detail) return `${prefix} (${status})`;\n return `${prefix} (${status}): ${detail}`;\n}\n\nasync function parseGatewayErrorDetail(res: Response): Promise<string | undefined> {\n try {\n const text = (await res.text()).trim();\n if (!text) return undefined;\n try {\n const parsed = JSON.parse(text) as unknown;\n if (parsed && typeof parsed === \"object\") {\n const record = parsed as Record<string, unknown>;\n const message = record.error ?? record.message ?? record.detail;\n if (typeof message === \"string\" && message.trim()) return message.trim();\n }\n } catch {\n // fall back to raw body below\n }\n return text;\n } catch {\n return undefined;\n }\n}\n\nfunction normalizeHex(value: string): string {\n return (value.startsWith(\"0x\") || value.startsWith(\"0X\") ? value.slice(2) : value).toLowerCase();\n}\n\n/**\n * Lift a nested `attestation` (current gateways) into the flat field names the rest of this\n * module reads, leaving the older flat body untouched. Top-level `value`, `fresh`,\n * `configHash` and `aggregation` are the same in both shapes.\n */\nfunction flattenGatewayData(data: GatewaySignedData): GatewaySignedData {\n const nested = data.attestation;\n if (!nested) return data;\n const { attestation: _nested, ...rest } = data;\n const { payload, signature } = nested;\n return {\n ...rest,\n ...(payload?.sourceId !== undefined ? { sourceId: payload.sourceId } : {}),\n ...(payload?.value !== undefined ? { valuePacked: payload.value } : {}),\n ...(payload?.canonicalTimestamp !== undefined ? { timestamp: payload.canonicalTimestamp } : {}),\n ...(payload?.registryVersion !== undefined ? { registryVersion: payload.registryVersion } : {}),\n ...(payload?.signaturesRequired !== undefined\n ? { signaturesRequired: payload.signaturesRequired }\n : {}),\n ...(signature?.signersBitmap !== undefined ? { signersBitmap: signature.signersBitmap } : {}),\n ...(signature?.signature !== undefined ? { s: signature.signature } : {}),\n ...(signature?.commitment !== undefined ? { commitmentAddr: signature.commitment } : {}),\n };\n}\n\n/**\n * Shape the gateway payload into an {@link Attestation}. `sourceId` and\n * `signaturesRequired` must echo the request (they key the feed and the signed\n * message); `timestamp`, `registryVersion` and `signersBitmap` are taken from the\n * response because a non-fresh (cached) attestation legitimately carries the earlier\n * round's values.\n *\n * Tolerance mode: the signing set is chosen by the nodes after the observation exchange,\n * so `signersBitmap`, the signature fields and the packed value must all come from the\n * response (the request's selection bitmap is not a substitute), and `value` is rendered\n * from the signed `valuePacked` at the source's `decimals` rather than trusted as sent.\n */\nfunction toResult(\n raw: GatewaySignedData,\n ctx: {\n sourceId: string;\n registryVersion: number;\n timestamp: number;\n signaturesRequired: number;\n bitmap: Uint8Array;\n aggregation?: AggregationConfig;\n },\n): Attestation {\n const data = flattenGatewayData(raw);\n if (data.sourceId !== undefined && normalizeHex(data.sourceId) !== ctx.sourceId) {\n throw new GatewayError(\n `Gateway response sourceId ${data.sourceId} does not match the requested ${ctx.sourceId}`,\n );\n }\n if (data.configHash !== undefined && normalizeHex(data.configHash) !== ctx.sourceId) {\n throw new GatewayError(\n `Gateway response configHash ${data.configHash} does not match the requested sourceId ${ctx.sourceId}`,\n );\n }\n if (\n data.signaturesRequired !== undefined &&\n data.signaturesRequired !== ctx.signaturesRequired\n ) {\n throw new GatewayError(\n `Gateway response signaturesRequired ${data.signaturesRequired} does not match the requested ${ctx.signaturesRequired}`,\n );\n }\n if (data.aggregation !== undefined && data.aggregation !== null) {\n let echoed: AggregationConfig | undefined;\n try {\n echoed = canonicalizeAggregation(data.aggregation as AggregationConfig);\n } catch (err) {\n throw new GatewayError(\n `Gateway response carries an invalid aggregation echo: ${err instanceof Error ? err.message : String(err)}`,\n );\n }\n if (!ctx.aggregation) {\n throw new GatewayError(\n \"Gateway response carries an aggregation, but the request was exact mode (no aggregation)\",\n );\n }\n if (JSON.stringify(echoed) !== JSON.stringify(ctx.aggregation)) {\n throw new GatewayError(\n `Gateway response aggregation ${JSON.stringify(echoed)} does not match the requested ${JSON.stringify(ctx.aggregation)}`,\n );\n }\n }\n let value = data.value ?? \"\";\n if (ctx.aggregation) {\n for (const field of [\"valuePacked\", \"signersBitmap\", \"s\", \"commitmentAddr\"] as const) {\n if (!data[field]) {\n throw new GatewayError(`Gateway tolerance response is missing ${field}`);\n }\n }\n try {\n value = formatInt256Decimal(data.valuePacked!, ctx.aggregation.numeric.decimals);\n } catch (err) {\n throw new GatewayError(\n `Gateway tolerance response valuePacked is not an int256 word: ${err instanceof Error ? err.message : String(err)}`,\n );\n }\n }\n return {\n payload: {\n sourceId: ctx.sourceId,\n value: data.valuePacked ?? \"\",\n canonicalTimestamp: data.timestamp ?? ctx.timestamp,\n registryVersion: data.registryVersion ?? ctx.registryVersion,\n signaturesRequired: ctx.signaturesRequired,\n },\n signature: {\n signersBitmap: data.signersBitmap ?? bytesToHex(ctx.bitmap),\n s: data.s ?? \"\",\n commitmentAddr: data.commitmentAddr ?? \"\",\n },\n value,\n fresh: data.fresh ?? true,\n };\n}\n","/**\n * Coalition key: the affine sum of the signers' secp256k1 public keys.\n *\n * `submit_attestation` takes it as untrusted instruction data and checks it projectively\n * against its own sum of the signers' `Node` keys (`X ≡ x·Z²`, `Y ≡ y·Z³`), so a wrong key\n * only fails the transaction — it can never select another key. It is a property of the\n * point, not of any library's arithmetic: summing in any order with any secp256k1\n * implementation gives the same `(x, y)`. Mirrors `molpha_verifier::coalition_key`.\n */\nimport { secp256k1 } from \"@noble/curves/secp256k1.js\";\nimport { bytesToHex, hexToBytes, u256beFromBigInt } from \"./encoding.js\";\n\n/** Affine coalition key, 32-byte big-endian coordinates (`CoalitionKey` in the program IDL). */\nexport interface CoalitionKey {\n x: Uint8Array;\n y: Uint8Array;\n}\n\n/** A signer's public key: SEC1 compressed / uncompressed (bytes or hex), or affine `(x, y)`. */\nexport type Secp256k1KeyInput =\n | Uint8Array\n | string\n | { x: Uint8Array | string; y: Uint8Array | string };\n\ntype Point = InstanceType<typeof secp256k1.Point>;\n\nfunction coordinate(value: Uint8Array | string, label: string): bigint {\n const bytes = typeof value === \"string\" ? hexToBytes(value) : value;\n if (bytes.length !== 32) {\n throw new RangeError(`${label}: expected 32 bytes, got ${bytes.length}`);\n }\n return BigInt(\"0x\" + bytesToHex(bytes));\n}\n\nfunction toPoint(key: Secp256k1KeyInput, index: number): Point {\n const label = `signer key ${index}`;\n try {\n if (typeof key === \"string\" || key instanceof Uint8Array) {\n return secp256k1.Point.fromBytes(typeof key === \"string\" ? hexToBytes(key) : key);\n }\n const point = secp256k1.Point.fromAffine({\n x: coordinate(key.x, `${label}.x`),\n y: coordinate(key.y, `${label}.y`),\n });\n point.assertValidity();\n return point;\n } catch (err) {\n throw new Error(\n `${label} is not a valid secp256k1 public key: ${err instanceof Error ? err.message : String(err)}`,\n );\n }\n}\n\n/**\n * Affine sum of `keys` as a {@link CoalitionKey}.\n *\n * @throws {Error} on an empty set, an invalid point, or a sum at infinity (the verifier\n * rejects both of the latter as `InvalidAggregateSignature`).\n */\nexport function computeCoalitionKey(keys: Iterable<Secp256k1KeyInput>): CoalitionKey {\n let sum: Point | undefined;\n let index = 0;\n for (const key of keys) {\n const point = toPoint(key, index++);\n sum = sum === undefined ? point : sum.add(point);\n }\n if (sum === undefined) throw new Error(\"coalition key needs at least one signer key\");\n if (sum.is0()) throw new Error(\"coalition key is the point at infinity\");\n const { x, y } = sum.toAffine();\n return { x: u256beFromBigInt(x), y: u256beFromBigInt(y) };\n}\n","/**\n * Account views and remaining-accounts construction for `submit_attestation`.\n *\n * `submit_attestation` (program 3d01170, `utils/attestation.rs::verify_attestation_core`)\n * takes exactly one `Node` account per set signer bit, read-only, in ascending bit order\n * (`remaining_accounts.len() == popcount(signersBitmap)`); the verifier requires\n * `account == registry.nodes[bit]` and reads each signer's secp256k1 key from it.\n */\nimport type { Address } from \"@solana/kit\";\nimport { hexToBytes } from \"../core/encoding.js\";\nimport { selectedIndices } from \"../core/selection.js\";\nimport { type SolanaAccountMeta, toPublicKey } from \"./kit.js\";\n\n/** On-chain `RegistryState` (Anchor camelCase): pointer to the current immutable snapshot. */\nexport interface RegistryStateView {\n currentVersion: number;\n nextVersion: number;\n}\n\n/**\n * Immutable, version-addressed `Registry` snapshot. `nodes` holds only the populated\n * `[..nodeCount]` entries; entry `i` is the `Node` account address for signer bit `i`.\n */\nexport interface RegistryView {\n version: number;\n nodeCount: number;\n /** Selection padding: `min(signaturesRequired + redundancyBuffer, nodeCount)`. */\n redundancyBuffer: number;\n nodes: Address[];\n /** Unix seconds until which this superseded snapshot still verifies; `0n` while current. */\n graceActiveUntil: bigint;\n /** Inclusive creation time (unix seconds): a version cannot verify a round dated before it existed. */\n activeFrom: bigint;\n}\n\n/** Set-bit indices of a 32-byte big-endian bitmap (full 256-bit scan). */\nexport function bitmapToIndices(signersBitmapHex: string): number[] {\n return selectedIndices(hexToBytes(signersBitmapHex), 256);\n}\n\n/**\n * Signer `Node` accounts for `submit_attestation`, in ascending signers-bitmap bit order.\n * Bit `i` resolves to `registry.nodes[i]` of the snapshot the round was signed against;\n * a bit at or beyond `nodeCount` can never verify, so it is rejected client-side.\n */\nexport function resolveRemainingAccounts(\n signersBitmapHex: string,\n registry: RegistryView,\n): SolanaAccountMeta[] {\n return bitmapToIndices(signersBitmapHex).map((bit) => {\n const node = registry.nodes[bit];\n if (bit >= registry.nodeCount || node === undefined) {\n throw new Error(\n `InvalidNodeIndex: signer bit ${bit} is outside registry ${registry.version} node_count ${registry.nodeCount}`,\n );\n }\n return { pubkey: toPublicKey(node), isSigner: false, isWritable: false };\n });\n}\n","/**\n * Consumer PDA derivations. Seed byte strings are cross-checked against the IDL const\n * seeds in `test/solana.test.ts` / `test/idl.test.ts`.\n */\nimport type { Address } from \"@solana/kit\";\nimport { ensureLength, u32le, utf8 } from \"../core/encoding.js\";\nimport {\n addressBytes,\n findProgramAddressSync,\n type SolanaAddress,\n} from \"./kit.js\";\n\nconst SEED_CONFIG = utf8(\"molpha_config\");\nconst SEED_REGISTRY = utf8(\"molpha_registry\");\nconst SEED_NODE = utf8(\"molpha_node\");\nconst SEED_PLAN = utf8(\"molpha_plan\");\nconst SEED_SUBSCRIPTION = utf8(\"molpha_subscription\");\nconst SEED_FEED = utf8(\"molpha_feed\");\nconst SEED_GATEWAY = utf8(\"molpha_gateway\");\n\nconst pda = (seeds: Uint8Array[], programId: SolanaAddress): Address =>\n findProgramAddressSync(seeds, programId);\n\nexport const protocolConfigPda = (programId: SolanaAddress): Address =>\n pda([SEED_CONFIG], programId);\n\n/** Mutable pointer to the current registry snapshot: `[\"molpha_registry\"]`. */\nexport const registryStatePda = (programId: SolanaAddress): Address =>\n pda([SEED_REGISTRY], programId);\n\n/** Immutable, version-addressed registry snapshot: `[\"molpha_registry\", version u32 LE]`. */\nexport const registryPda = (version: number, programId: SolanaAddress): Address =>\n pda([SEED_REGISTRY, u32le(version)], programId);\n\n/**\n * Authority-keyed `Node` account: `[\"molpha_node\", authority]` (`Node.authority`). Registry\n * snapshots store these addresses directly in `nodes[i]`, so consumers rarely need to\n * derive them.\n */\nexport const nodePda = (authority: SolanaAddress, programId: SolanaAddress): Address =>\n pda([SEED_NODE, addressBytes(authority)], programId);\n\n/** Bonded gateway account: `[\"molpha_gateway\", gatewayAuthority]` — the `gateway` bound into `RequestAuth`. */\nexport const gatewayPda = (authority: SolanaAddress, programId: SolanaAddress): Address =>\n pda([SEED_GATEWAY, addressBytes(authority)], programId);\n\n/** Plan PDA is `[b\"molpha_plan\", [planType as u8]]`. */\nexport const planPda = (planId: number, programId: SolanaAddress): Address =>\n pda([SEED_PLAN, Uint8Array.of(planId)], programId);\n\nexport const subscriptionPda = (owner: SolanaAddress, programId: SolanaAddress): Address =>\n pda([SEED_SUBSCRIPTION, addressBytes(owner)], programId);\n\n/**\n * Feed state, keyed per `(sourceId, signaturesRequired, submitter)`:\n * `[\"molpha_feed\", sourceId, [signaturesRequired], submitter]`. Created lazily by the\n * first `submit_attestation` from that submitter.\n */\nexport function feedPda(\n sourceId: Uint8Array,\n signaturesRequired: number,\n submitter: SolanaAddress,\n programId: SolanaAddress,\n): Address {\n ensureLength(sourceId, 32, \"sourceId\");\n if (!Number.isInteger(signaturesRequired) || signaturesRequired < 0 || signaturesRequired > 255) {\n throw new RangeError(`signaturesRequired out of u8 range: ${signaturesRequired}`);\n }\n return pda(\n [SEED_FEED, sourceId, Uint8Array.of(signaturesRequired), addressBytes(submitter)],\n programId,\n );\n}\n","{\n \"address\": \"chivcFQgxzwkpLvW41PV431HQ4dYpaW3povQH3AdpQt\",\n \"metadata\": {\n \"name\": \"molpha\",\n \"version\": \"0.1.0\",\n \"spec\": \"0.1.0\",\n \"description\": \"Molpha Oracle Solana Program - Merged from molpha-solana and molpha-feed\"\n },\n \"instructions\": [\n {\n \"name\": \"add_delegate\",\n \"discriminator\": [\n 3,\n 67,\n 128,\n 218,\n 69,\n 139,\n 53,\n 88\n ],\n \"accounts\": [\n {\n \"name\": \"owner\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"subscription\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 115,\n 117,\n 98,\n 115,\n 99,\n 114,\n 105,\n 112,\n 116,\n 105,\n 111,\n 110\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"owner\"\n }\n ]\n }\n },\n {\n \"name\": \"delegate_account\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 100,\n 101,\n 108,\n 101,\n 103,\n 97,\n 116,\n 101\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"owner\"\n },\n {\n \"kind\": \"arg\",\n \"path\": \"args.delegate\"\n }\n ]\n }\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"args\",\n \"type\": {\n \"defined\": {\n \"name\": \"AddDelegateArgs\"\n }\n }\n }\n ]\n },\n {\n \"name\": \"add_plan\",\n \"discriminator\": [\n 199,\n 79,\n 170,\n 244,\n 91,\n 21,\n 110,\n 218\n ],\n \"accounts\": [\n {\n \"name\": \"protocol_config\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"plan\",\n \"writable\": true\n },\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true,\n \"relations\": [\n \"protocol_config\"\n ]\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"config\",\n \"type\": {\n \"defined\": {\n \"name\": \"PlanConfig\"\n }\n }\n }\n ]\n },\n {\n \"name\": \"claim_node_rewards\",\n \"discriminator\": [\n 151,\n 201,\n 146,\n 161,\n 104,\n 100,\n 214,\n 1\n ],\n \"accounts\": [\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true,\n \"relations\": [\n \"node\"\n ]\n },\n {\n \"name\": \"protocol_config\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"node\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 110,\n 111,\n 100,\n 101\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"authority\"\n }\n ]\n }\n },\n {\n \"name\": \"treasury\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"protocol_config\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"token_program\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"protocol_config.usdc_mint\",\n \"account\": \"ProtocolConfig\"\n }\n ],\n \"program\": {\n \"kind\": \"const\",\n \"value\": [\n 140,\n 151,\n 37,\n 143,\n 78,\n 36,\n 137,\n 241,\n 187,\n 61,\n 16,\n 41,\n 20,\n 142,\n 13,\n 131,\n 11,\n 90,\n 19,\n 153,\n 218,\n 255,\n 16,\n 132,\n 4,\n 142,\n 123,\n 216,\n 219,\n 233,\n 248,\n 89\n ]\n }\n }\n },\n {\n \"name\": \"destination\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"authority\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"token_program\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"protocol_config.usdc_mint\",\n \"account\": \"ProtocolConfig\"\n }\n ],\n \"program\": {\n \"kind\": \"const\",\n \"value\": [\n 140,\n 151,\n 37,\n 143,\n 78,\n 36,\n 137,\n 241,\n 187,\n 61,\n 16,\n 41,\n 20,\n 142,\n 13,\n 131,\n 11,\n 90,\n 19,\n 153,\n 218,\n 255,\n 16,\n 132,\n 4,\n 142,\n 123,\n 216,\n 219,\n 233,\n 248,\n 89\n ]\n }\n }\n },\n {\n \"name\": \"token_program\",\n \"address\": \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"\n },\n {\n \"name\": \"associated_token_program\",\n \"address\": \"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\"\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"close_epoch\",\n \"discriminator\": [\n 13,\n 87,\n 7,\n 133,\n 109,\n 14,\n 83,\n 25\n ],\n \"accounts\": [\n {\n \"name\": \"epoch_state\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 101,\n 112,\n 111,\n 99,\n 104\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"epoch\"\n }\n ]\n }\n },\n {\n \"name\": \"open_epoch_state\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 101,\n 112,\n 111,\n 99,\n 104\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"open_epoch\"\n }\n ]\n }\n },\n {\n \"name\": \"rent_payer\",\n \"writable\": true\n }\n ],\n \"args\": [\n {\n \"name\": \"epoch\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"open_epoch\",\n \"type\": \"u64\"\n }\n ]\n },\n {\n \"name\": \"close_ticket_marker\",\n \"discriminator\": [\n 26,\n 65,\n 122,\n 188,\n 125,\n 132,\n 159,\n 107\n ],\n \"accounts\": [\n {\n \"name\": \"ticket_marker\",\n \"writable\": true\n },\n {\n \"name\": \"submitter\",\n \"writable\": true\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"credit_epoch_rewards\",\n \"discriminator\": [\n 212,\n 185,\n 139,\n 96,\n 103,\n 248,\n 140,\n 198\n ],\n \"accounts\": [\n {\n \"name\": \"protocol_config\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"epoch_state\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 101,\n 112,\n 111,\n 99,\n 104\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"epoch\"\n }\n ]\n }\n }\n ],\n \"args\": [\n {\n \"name\": \"epoch\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"slots\",\n \"type\": {\n \"vec\": \"u16\"\n }\n }\n ]\n },\n {\n \"name\": \"deactivate_gateway\",\n \"discriminator\": [\n 2,\n 119,\n 77,\n 158,\n 3,\n 8,\n 116,\n 252\n ],\n \"accounts\": [\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true,\n \"relations\": [\n \"protocol_config\"\n ]\n },\n {\n \"name\": \"protocol_config\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"gateway\",\n \"writable\": true\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"deactivate_node\",\n \"discriminator\": [\n 242,\n 185,\n 114,\n 146,\n 22,\n 248,\n 23,\n 157\n ],\n \"accounts\": [\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"protocol_config\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"registry_state\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 114,\n 101,\n 103,\n 105,\n 115,\n 116,\n 114,\n 121\n ]\n }\n ]\n }\n },\n {\n \"name\": \"current_registry\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 114,\n 101,\n 103,\n 105,\n 115,\n 116,\n 114,\n 121\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"registry_state.current_version\",\n \"account\": \"RegistryState\"\n }\n ]\n }\n },\n {\n \"name\": \"new_registry\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 114,\n 101,\n 103,\n 105,\n 115,\n 116,\n 114,\n 121\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"registry_state.next_version\",\n \"account\": \"RegistryState\"\n }\n ]\n }\n },\n {\n \"name\": \"node\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 110,\n 111,\n 100,\n 101\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"node_owner\"\n }\n ]\n }\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"node_owner\",\n \"type\": \"pubkey\"\n }\n ]\n },\n {\n \"name\": \"extend_subscription\",\n \"discriminator\": [\n 47,\n 230,\n 116,\n 118,\n 171,\n 228,\n 24,\n 46\n ],\n \"accounts\": [\n {\n \"name\": \"owner\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"protocol_config\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"subscription\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 115,\n 117,\n 98,\n 115,\n 99,\n 114,\n 105,\n 112,\n 116,\n 105,\n 111,\n 110\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"owner\"\n }\n ]\n }\n },\n {\n \"name\": \"plan\"\n },\n {\n \"name\": \"owner_usdc\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"owner\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"token_program\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"protocol_config.usdc_mint\",\n \"account\": \"ProtocolConfig\"\n }\n ],\n \"program\": {\n \"kind\": \"const\",\n \"value\": [\n 140,\n 151,\n 37,\n 143,\n 78,\n 36,\n 137,\n 241,\n 187,\n 61,\n 16,\n 41,\n 20,\n 142,\n 13,\n 131,\n 11,\n 90,\n 19,\n 153,\n 218,\n 255,\n 16,\n 132,\n 4,\n 142,\n 123,\n 216,\n 219,\n 233,\n 248,\n 89\n ]\n }\n }\n },\n {\n \"name\": \"treasury\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"protocol_config\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"token_program\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"protocol_config.usdc_mint\",\n \"account\": \"ProtocolConfig\"\n }\n ],\n \"program\": {\n \"kind\": \"const\",\n \"value\": [\n 140,\n 151,\n 37,\n 143,\n 78,\n 36,\n 137,\n 241,\n 187,\n 61,\n 16,\n 41,\n 20,\n 142,\n 13,\n 131,\n 11,\n 90,\n 19,\n 153,\n 218,\n 255,\n 16,\n 132,\n 4,\n 142,\n 123,\n 216,\n 219,\n 233,\n 248,\n 89\n ]\n }\n }\n },\n {\n \"name\": \"token_program\",\n \"address\": \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"finalize_epoch\",\n \"discriminator\": [\n 159,\n 93,\n 117,\n 217,\n 63,\n 44,\n 249,\n 76\n ],\n \"accounts\": [\n {\n \"name\": \"payer\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"protocol_config\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"target\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 101,\n 112,\n 111,\n 99,\n 104\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"epoch\"\n }\n ]\n }\n },\n {\n \"name\": \"next\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 101,\n 112,\n 111,\n 99,\n 104\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"epoch.saturating_add(1)\"\n }\n ]\n }\n },\n {\n \"name\": \"successor\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 101,\n 112,\n 111,\n 99,\n 104\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"epoch.saturating_add(2)\"\n }\n ]\n }\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"epoch\",\n \"type\": \"u64\"\n }\n ]\n },\n {\n \"name\": \"initialize\",\n \"discriminator\": [\n 175,\n 175,\n 109,\n 31,\n 13,\n 152,\n 155,\n 237\n ],\n \"accounts\": [\n {\n \"name\": \"protocol_config\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"registry_state\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 114,\n 101,\n 103,\n 105,\n 115,\n 116,\n 114,\n 121\n ]\n }\n ]\n }\n },\n {\n \"name\": \"registry\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 114,\n 101,\n 103,\n 105,\n 115,\n 116,\n 114,\n 121\n ]\n },\n {\n \"kind\": \"const\",\n \"value\": [\n 0,\n 0,\n 0,\n 0\n ]\n }\n ]\n }\n },\n {\n \"name\": \"usdc_mint\"\n },\n {\n \"name\": \"treasury\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"protocol_config\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"token_program\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"usdc_mint\"\n }\n ],\n \"program\": {\n \"kind\": \"const\",\n \"value\": [\n 140,\n 151,\n 37,\n 143,\n 78,\n 36,\n 137,\n 241,\n 187,\n 61,\n 16,\n 41,\n 20,\n 142,\n 13,\n 131,\n 11,\n 90,\n 19,\n 153,\n 218,\n 255,\n 16,\n 132,\n 4,\n 142,\n 123,\n 216,\n 219,\n 233,\n 248,\n 89\n ]\n }\n }\n },\n {\n \"name\": \"node_deposit_vault\",\n \"docs\": [\n \"One vault for every node's security deposit, held apart from protocol revenue.\"\n ],\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"registry_state\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"token_program\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"usdc_mint\"\n }\n ],\n \"program\": {\n \"kind\": \"const\",\n \"value\": [\n 140,\n 151,\n 37,\n 143,\n 78,\n 36,\n 137,\n 241,\n 187,\n 61,\n 16,\n 41,\n 20,\n 142,\n 13,\n 131,\n 11,\n 90,\n 19,\n 153,\n 218,\n 255,\n 16,\n 132,\n 4,\n 142,\n 123,\n 216,\n 219,\n 233,\n 248,\n 89\n ]\n }\n }\n },\n {\n \"name\": \"epoch0\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 101,\n 112,\n 111,\n 99,\n 104\n ]\n },\n {\n \"kind\": \"const\",\n \"value\": [\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0\n ]\n }\n ]\n }\n },\n {\n \"name\": \"epoch1\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 101,\n 112,\n 111,\n 99,\n 104\n ]\n },\n {\n \"kind\": \"const\",\n \"value\": [\n 1,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0\n ]\n }\n ]\n }\n },\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"token_program\",\n \"address\": \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"\n },\n {\n \"name\": \"associated_token_program\",\n \"address\": \"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\"\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"args\",\n \"type\": {\n \"defined\": {\n \"name\": \"InitializeArgs\"\n }\n }\n }\n ]\n },\n {\n \"name\": \"register_gateway\",\n \"discriminator\": [\n 183,\n 184,\n 135,\n 228,\n 71,\n 191,\n 76,\n 222\n ],\n \"accounts\": [\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true,\n \"relations\": [\n \"protocol_config\"\n ]\n },\n {\n \"name\": \"protocol_config\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"gateway\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 103,\n 97,\n 116,\n 101,\n 119,\n 97,\n 121\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"args.authority\"\n }\n ]\n }\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"args\",\n \"type\": {\n \"defined\": {\n \"name\": \"RegisterGatewayArgs\"\n }\n }\n }\n ]\n },\n {\n \"name\": \"register_node\",\n \"discriminator\": [\n 102,\n 85,\n 117,\n 114,\n 194,\n 188,\n 211,\n 168\n ],\n \"accounts\": [\n {\n \"name\": \"authority\",\n \"signer\": true,\n \"relations\": [\n \"protocol_config\"\n ]\n },\n {\n \"name\": \"node_owner\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"protocol_config\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"registry_state\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 114,\n 101,\n 103,\n 105,\n 115,\n 116,\n 114,\n 121\n ]\n }\n ]\n }\n },\n {\n \"name\": \"current_registry\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 114,\n 101,\n 103,\n 105,\n 115,\n 116,\n 114,\n 121\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"registry_state.current_version\",\n \"account\": \"RegistryState\"\n }\n ]\n }\n },\n {\n \"name\": \"new_registry\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 114,\n 101,\n 103,\n 105,\n 115,\n 116,\n 114,\n 121\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"registry_state.next_version\",\n \"account\": \"RegistryState\"\n }\n ]\n }\n },\n {\n \"name\": \"node\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 110,\n 111,\n 100,\n 101\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"node_owner\"\n }\n ]\n }\n },\n {\n \"name\": \"secp256k1_key_claim\",\n \"writable\": true\n },\n {\n \"name\": \"owner_usdc\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"node_owner\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"token_program\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"protocol_config.usdc_mint\",\n \"account\": \"ProtocolConfig\"\n }\n ],\n \"program\": {\n \"kind\": \"const\",\n \"value\": [\n 140,\n 151,\n 37,\n 143,\n 78,\n 36,\n 137,\n 241,\n 187,\n 61,\n 16,\n 41,\n 20,\n 142,\n 13,\n 131,\n 11,\n 90,\n 19,\n 153,\n 218,\n 255,\n 16,\n 132,\n 4,\n 142,\n 123,\n 216,\n 219,\n 233,\n 248,\n 89\n ]\n }\n }\n },\n {\n \"name\": \"node_deposit_vault\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"registry_state\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"token_program\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"protocol_config.usdc_mint\",\n \"account\": \"ProtocolConfig\"\n }\n ],\n \"program\": {\n \"kind\": \"const\",\n \"value\": [\n 140,\n 151,\n 37,\n 143,\n 78,\n 36,\n 137,\n 241,\n 187,\n 61,\n 16,\n 41,\n 20,\n 142,\n 13,\n 131,\n 11,\n 90,\n 19,\n 153,\n 218,\n 255,\n 16,\n 132,\n 4,\n 142,\n 123,\n 216,\n 219,\n 233,\n 248,\n 89\n ]\n }\n }\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n },\n {\n \"name\": \"token_program\",\n \"address\": \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"\n }\n ],\n \"args\": [\n {\n \"name\": \"args\",\n \"type\": {\n \"defined\": {\n \"name\": \"RegisterNodeArgs\"\n }\n }\n }\n ]\n },\n {\n \"name\": \"reinstate_node\",\n \"discriminator\": [\n 13,\n 253,\n 148,\n 213,\n 56,\n 50,\n 49,\n 121\n ],\n \"accounts\": [\n {\n \"name\": \"caller\",\n \"docs\": [\n \"Permissionless after `frozen_until`; authority may reinstate earlier.\"\n ],\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"protocol_config\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"registry_state\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 114,\n 101,\n 103,\n 105,\n 115,\n 116,\n 114,\n 121\n ]\n }\n ]\n }\n },\n {\n \"name\": \"current_registry\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 114,\n 101,\n 103,\n 105,\n 115,\n 116,\n 114,\n 121\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"registry_state.current_version\",\n \"account\": \"RegistryState\"\n }\n ]\n }\n },\n {\n \"name\": \"new_registry\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 114,\n 101,\n 103,\n 105,\n 115,\n 116,\n 114,\n 121\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"registry_state.next_version\",\n \"account\": \"RegistryState\"\n }\n ]\n }\n },\n {\n \"name\": \"node\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 110,\n 111,\n 100,\n 101\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"node.authority\",\n \"account\": \"Node\"\n }\n ]\n }\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"remove_delegate\",\n \"discriminator\": [\n 94,\n 37,\n 16,\n 59,\n 7,\n 84,\n 97,\n 211\n ],\n \"accounts\": [\n {\n \"name\": \"owner\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"subscription\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 115,\n 117,\n 98,\n 115,\n 99,\n 114,\n 105,\n 112,\n 116,\n 105,\n 111,\n 110\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"owner\"\n }\n ]\n }\n },\n {\n \"name\": \"delegate_account\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 100,\n 101,\n 108,\n 101,\n 103,\n 97,\n 116,\n 101\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"owner\"\n },\n {\n \"kind\": \"arg\",\n \"path\": \"args.delegate\"\n }\n ]\n }\n }\n ],\n \"args\": [\n {\n \"name\": \"args\",\n \"type\": {\n \"defined\": {\n \"name\": \"RemoveDelegateArgs\"\n }\n }\n }\n ]\n },\n {\n \"name\": \"slash_offence\",\n \"discriminator\": [\n 108,\n 88,\n 94,\n 69,\n 17,\n 2,\n 103,\n 124\n ],\n \"accounts\": [\n {\n \"name\": \"reporter\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"protocol_config\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"registry_state\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 114,\n 101,\n 103,\n 105,\n 115,\n 116,\n 114,\n 121\n ]\n }\n ]\n }\n },\n {\n \"name\": \"evidence_registry\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 114,\n 101,\n 103,\n 105,\n 115,\n 116,\n 114,\n 121\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"offence\"\n }\n ]\n }\n },\n {\n \"name\": \"current_registry\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 114,\n 101,\n 103,\n 105,\n 115,\n 116,\n 114,\n 121\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"registry_state.current_version\",\n \"account\": \"RegistryState\"\n }\n ]\n }\n },\n {\n \"name\": \"new_registry\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 114,\n 101,\n 103,\n 105,\n 115,\n 116,\n 114,\n 121\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"registry_state.next_version\",\n \"account\": \"RegistryState\"\n }\n ]\n }\n },\n {\n \"name\": \"punishment_case\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 112,\n 117,\n 110,\n 105,\n 115,\n 104,\n 109,\n 101,\n 110,\n 116\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"offence\"\n }\n ]\n }\n },\n {\n \"name\": \"node_deposit_vault\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"registry_state\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"token_program\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"protocol_config.usdc_mint\",\n \"account\": \"ProtocolConfig\"\n }\n ],\n \"program\": {\n \"kind\": \"const\",\n \"value\": [\n 140,\n 151,\n 37,\n 143,\n 78,\n 36,\n 137,\n 241,\n 187,\n 61,\n 16,\n 41,\n 20,\n 142,\n 13,\n 131,\n 11,\n 90,\n 19,\n 153,\n 218,\n 255,\n 16,\n 132,\n 4,\n 142,\n 123,\n 216,\n 219,\n 233,\n 248,\n 89\n ]\n }\n }\n },\n {\n \"name\": \"treasury\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"protocol_config\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"token_program\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"protocol_config.usdc_mint\",\n \"account\": \"ProtocolConfig\"\n }\n ],\n \"program\": {\n \"kind\": \"const\",\n \"value\": [\n 140,\n 151,\n 37,\n 143,\n 78,\n 36,\n 137,\n 241,\n 187,\n 61,\n 16,\n 41,\n 20,\n 142,\n 13,\n 131,\n 11,\n 90,\n 19,\n 153,\n 218,\n 255,\n 16,\n 132,\n 4,\n 142,\n 123,\n 216,\n 219,\n 233,\n 248,\n 89\n ]\n }\n }\n },\n {\n \"name\": \"reporter_usdc\",\n \"docs\": [\n \"Must already exist. Creating it here would cost two more transaction slots, which the\",\n \"signer list needs more than a reporter needs the convenience.\"\n ],\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"reporter\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"token_program\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"protocol_config.usdc_mint\",\n \"account\": \"ProtocolConfig\"\n }\n ],\n \"program\": {\n \"kind\": \"const\",\n \"value\": [\n 140,\n 151,\n 37,\n 143,\n 78,\n 36,\n 137,\n 241,\n 187,\n 61,\n 16,\n 41,\n 20,\n 142,\n 13,\n 131,\n 11,\n 90,\n 19,\n 153,\n 218,\n 255,\n 16,\n 132,\n 4,\n 142,\n 123,\n 216,\n 219,\n 233,\n 248,\n 89\n ]\n }\n }\n },\n {\n \"name\": \"token_program\",\n \"address\": \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"offence\",\n \"type\": {\n \"defined\": {\n \"name\": \"Offence\"\n }\n }\n }\n ]\n },\n {\n \"name\": \"submit_attestation\",\n \"discriminator\": [\n 238,\n 220,\n 255,\n 105,\n 183,\n 211,\n 40,\n 83\n ],\n \"accounts\": [\n {\n \"name\": \"submitter\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"registry\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 114,\n 101,\n 103,\n 105,\n 115,\n 116,\n 114,\n 121\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"args.attestation.payload.registry_version\"\n }\n ]\n }\n },\n {\n \"name\": \"feed\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 102,\n 101,\n 101,\n 100\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"args.attestation.payload.source_id\"\n },\n {\n \"kind\": \"arg\",\n \"path\": \"args.attestation.payload.signatures_required\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"submitter\"\n }\n ]\n }\n },\n {\n \"name\": \"protocol_config\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"args\",\n \"type\": {\n \"defined\": {\n \"name\": \"SubmitAttestationArgs\"\n }\n }\n }\n ]\n },\n {\n \"name\": \"submit_ticket\",\n \"discriminator\": [\n 180,\n 57,\n 11,\n 108,\n 162,\n 36,\n 145,\n 150\n ],\n \"accounts\": [\n {\n \"name\": \"submitter\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"protocol_config\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"registry\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 114,\n 101,\n 103,\n 105,\n 115,\n 116,\n 114,\n 121\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"attestation.payload.registry_version\"\n }\n ]\n }\n },\n {\n \"name\": \"epoch_state\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 101,\n 112,\n 111,\n 99,\n 104\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"epoch_index\"\n }\n ]\n }\n },\n {\n \"name\": \"gateway\",\n \"docs\": [\n \"Gateway whose authority signed the round dispatch.\"\n ],\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 103,\n 97,\n 116,\n 101,\n 119,\n 97,\n 121\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"gateway.authority\",\n \"account\": \"Gateway\"\n }\n ]\n }\n },\n {\n \"name\": \"ticket_marker\",\n \"writable\": true\n },\n {\n \"name\": \"instructions_sysvar\",\n \"address\": \"Sysvar1nstructions1111111111111111111111111\"\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"epoch\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"attestation\",\n \"type\": {\n \"defined\": {\n \"name\": \"Attestation\"\n }\n }\n },\n {\n \"name\": \"roster_slots\",\n \"type\": {\n \"vec\": \"u16\"\n }\n },\n {\n \"name\": \"coalition_key\",\n \"type\": {\n \"defined\": {\n \"name\": \"CoalitionKey\"\n }\n }\n }\n ]\n },\n {\n \"name\": \"subscribe\",\n \"discriminator\": [\n 254,\n 28,\n 191,\n 138,\n 156,\n 179,\n 183,\n 53\n ],\n \"accounts\": [\n {\n \"name\": \"owner\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"protocol_config\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"plan\"\n },\n {\n \"name\": \"subscription\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 115,\n 117,\n 98,\n 115,\n 99,\n 114,\n 105,\n 112,\n 116,\n 105,\n 111,\n 110\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"owner\"\n }\n ]\n }\n },\n {\n \"name\": \"owner_usdc\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"owner\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"token_program\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"protocol_config.usdc_mint\",\n \"account\": \"ProtocolConfig\"\n }\n ],\n \"program\": {\n \"kind\": \"const\",\n \"value\": [\n 140,\n 151,\n 37,\n 143,\n 78,\n 36,\n 137,\n 241,\n 187,\n 61,\n 16,\n 41,\n 20,\n 142,\n 13,\n 131,\n 11,\n 90,\n 19,\n 153,\n 218,\n 255,\n 16,\n 132,\n 4,\n 142,\n 123,\n 216,\n 219,\n 233,\n 248,\n 89\n ]\n }\n }\n },\n {\n \"name\": \"treasury\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"protocol_config\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"token_program\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"protocol_config.usdc_mint\",\n \"account\": \"ProtocolConfig\"\n }\n ],\n \"program\": {\n \"kind\": \"const\",\n \"value\": [\n 140,\n 151,\n 37,\n 143,\n 78,\n 36,\n 137,\n 241,\n 187,\n 61,\n 16,\n 41,\n 20,\n 142,\n 13,\n 131,\n 11,\n 90,\n 19,\n 153,\n 218,\n 255,\n 16,\n 132,\n 4,\n 142,\n 123,\n 216,\n 219,\n 233,\n 248,\n 89\n ]\n }\n }\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n },\n {\n \"name\": \"token_program\",\n \"address\": \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"\n }\n ],\n \"args\": [\n {\n \"name\": \"plan_type\",\n \"type\": {\n \"defined\": {\n \"name\": \"PlanType\"\n }\n }\n }\n ]\n },\n {\n \"name\": \"sweep_treasury_revenue\",\n \"discriminator\": [\n 72,\n 190,\n 138,\n 104,\n 78,\n 128,\n 112,\n 59\n ],\n \"accounts\": [\n {\n \"name\": \"protocol_config\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"treasury\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"protocol_config\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"token_program\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"protocol_config.usdc_mint\",\n \"account\": \"ProtocolConfig\"\n }\n ],\n \"program\": {\n \"kind\": \"const\",\n \"value\": [\n 140,\n 151,\n 37,\n 143,\n 78,\n 36,\n 137,\n 241,\n 187,\n 61,\n 16,\n 41,\n 20,\n 142,\n 13,\n 131,\n 11,\n 90,\n 19,\n 153,\n 218,\n 255,\n 16,\n 132,\n 4,\n 142,\n 123,\n 216,\n 219,\n 233,\n 248,\n 89\n ]\n }\n }\n },\n {\n \"name\": \"epoch_state\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 101,\n 112,\n 111,\n 99,\n 104\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"open_epoch\"\n }\n ]\n }\n },\n {\n \"name\": \"token_program\",\n \"address\": \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"\n }\n ],\n \"args\": [\n {\n \"name\": \"open_epoch\",\n \"type\": \"u64\"\n }\n ]\n },\n {\n \"name\": \"update_config\",\n \"discriminator\": [\n 29,\n 158,\n 252,\n 191,\n 10,\n 83,\n 219,\n 99\n ],\n \"accounts\": [\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true,\n \"relations\": [\n \"protocol_config\"\n ]\n },\n {\n \"name\": \"protocol_config\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n }\n ],\n \"args\": [\n {\n \"name\": \"args\",\n \"type\": {\n \"defined\": {\n \"name\": \"UpdateConfigArgs\"\n }\n }\n }\n ]\n },\n {\n \"name\": \"update_node_endpoint\",\n \"discriminator\": [\n 63,\n 119,\n 147,\n 11,\n 73,\n 81,\n 230,\n 155\n ],\n \"accounts\": [\n {\n \"name\": \"node_owner\",\n \"signer\": true\n },\n {\n \"name\": \"node\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 110,\n 111,\n 100,\n 101\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"node_owner\"\n }\n ]\n }\n }\n ],\n \"args\": [\n {\n \"name\": \"args\",\n \"type\": {\n \"defined\": {\n \"name\": \"UpdateNodeEndpointArgs\"\n }\n }\n }\n ]\n },\n {\n \"name\": \"update_plan\",\n \"discriminator\": [\n 119,\n 112,\n 58,\n 60,\n 76,\n 205,\n 1,\n 100\n ],\n \"accounts\": [\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true,\n \"relations\": [\n \"protocol_config\"\n ]\n },\n {\n \"name\": \"protocol_config\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"plan\",\n \"writable\": true\n }\n ],\n \"args\": [\n {\n \"name\": \"config\",\n \"type\": {\n \"defined\": {\n \"name\": \"PlanConfig\"\n }\n }\n }\n ]\n },\n {\n \"name\": \"update_registry_policy\",\n \"discriminator\": [\n 89,\n 241,\n 118,\n 140,\n 129,\n 101,\n 42,\n 161\n ],\n \"accounts\": [\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true,\n \"relations\": [\n \"protocol_config\"\n ]\n },\n {\n \"name\": \"protocol_config\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"registry_state\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 114,\n 101,\n 103,\n 105,\n 115,\n 116,\n 114,\n 121\n ]\n }\n ]\n }\n },\n {\n \"name\": \"current_registry\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 114,\n 101,\n 103,\n 105,\n 115,\n 116,\n 114,\n 121\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"registry_state.current_version\",\n \"account\": \"RegistryState\"\n }\n ]\n }\n },\n {\n \"name\": \"new_registry\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 114,\n 101,\n 103,\n 105,\n 115,\n 116,\n 114,\n 121\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"registry_state.next_version\",\n \"account\": \"RegistryState\"\n }\n ]\n }\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"redundancy_buffer\",\n \"type\": \"u8\"\n }\n ]\n },\n {\n \"name\": \"withdraw_node_deposit\",\n \"discriminator\": [\n 53,\n 141,\n 47,\n 100,\n 83,\n 245,\n 210,\n 6\n ],\n \"accounts\": [\n {\n \"name\": \"authority\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"protocol_config\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"node\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 110,\n 111,\n 100,\n 101\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"authority\"\n }\n ]\n }\n },\n {\n \"name\": \"registry_state\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 114,\n 101,\n 103,\n 105,\n 115,\n 116,\n 114,\n 121\n ]\n }\n ]\n }\n },\n {\n \"name\": \"node_deposit_vault\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"registry_state\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"token_program\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"protocol_config.usdc_mint\",\n \"account\": \"ProtocolConfig\"\n }\n ],\n \"program\": {\n \"kind\": \"const\",\n \"value\": [\n 140,\n 151,\n 37,\n 143,\n 78,\n 36,\n 137,\n 241,\n 187,\n 61,\n 16,\n 41,\n 20,\n 142,\n 13,\n 131,\n 11,\n 90,\n 19,\n 153,\n 218,\n 255,\n 16,\n 132,\n 4,\n 142,\n 123,\n 216,\n 219,\n 233,\n 248,\n 89\n ]\n }\n }\n },\n {\n \"name\": \"destination\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"authority\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"token_program\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"protocol_config.usdc_mint\",\n \"account\": \"ProtocolConfig\"\n }\n ],\n \"program\": {\n \"kind\": \"const\",\n \"value\": [\n 140,\n 151,\n 37,\n 143,\n 78,\n 36,\n 137,\n 241,\n 187,\n 61,\n 16,\n 41,\n 20,\n 142,\n 13,\n 131,\n 11,\n 90,\n 19,\n 153,\n 218,\n 255,\n 16,\n 132,\n 4,\n 142,\n 123,\n 216,\n 219,\n 233,\n 248,\n 89\n ]\n }\n }\n },\n {\n \"name\": \"token_program\",\n \"address\": \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"\n },\n {\n \"name\": \"associated_token_program\",\n \"address\": \"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\"\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"withdraw_protocol_reserve\",\n \"discriminator\": [\n 68,\n 111,\n 180,\n 79,\n 228,\n 72,\n 116,\n 12\n ],\n \"accounts\": [\n {\n \"name\": \"authority\",\n \"signer\": true,\n \"relations\": [\n \"protocol_config\"\n ]\n },\n {\n \"name\": \"protocol_config\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 109,\n 111,\n 108,\n 112,\n 104,\n 97,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"treasury\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"protocol_config\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"token_program\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"protocol_config.usdc_mint\",\n \"account\": \"ProtocolConfig\"\n }\n ],\n \"program\": {\n \"kind\": \"const\",\n \"value\": [\n 140,\n 151,\n 37,\n 143,\n 78,\n 36,\n 137,\n 241,\n 187,\n 61,\n 16,\n 41,\n 20,\n 142,\n 13,\n 131,\n 11,\n 90,\n 19,\n 153,\n 218,\n 255,\n 16,\n 132,\n 4,\n 142,\n 123,\n 216,\n 219,\n 233,\n 248,\n 89\n ]\n }\n }\n },\n {\n \"name\": \"destination\",\n \"writable\": true\n },\n {\n \"name\": \"token_program\",\n \"address\": \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"\n }\n ],\n \"args\": [\n {\n \"name\": \"amount\",\n \"type\": \"u64\"\n }\n ]\n }\n ],\n \"accounts\": [\n {\n \"name\": \"Delegate\",\n \"discriminator\": [\n 92,\n 145,\n 166,\n 111,\n 11,\n 38,\n 38,\n 247\n ]\n },\n {\n \"name\": \"EpochState\",\n \"discriminator\": [\n 191,\n 63,\n 139,\n 237,\n 144,\n 12,\n 223,\n 210\n ]\n },\n {\n \"name\": \"Feed\",\n \"discriminator\": [\n 69,\n 191,\n 16,\n 227,\n 132,\n 187,\n 84,\n 227\n ]\n },\n {\n \"name\": \"Gateway\",\n \"discriminator\": [\n 210,\n 132,\n 162,\n 254,\n 10,\n 224,\n 45,\n 86\n ]\n },\n {\n \"name\": \"Node\",\n \"discriminator\": [\n 208,\n 53,\n 1,\n 3,\n 49,\n 122,\n 180,\n 49\n ]\n },\n {\n \"name\": \"Plan\",\n \"discriminator\": [\n 161,\n 231,\n 251,\n 119,\n 2,\n 12,\n 162,\n 2\n ]\n },\n {\n \"name\": \"ProtocolConfig\",\n \"discriminator\": [\n 207,\n 91,\n 250,\n 28,\n 152,\n 179,\n 215,\n 209\n ]\n },\n {\n \"name\": \"PunishmentCase\",\n \"discriminator\": [\n 215,\n 186,\n 32,\n 101,\n 142,\n 74,\n 46,\n 130\n ]\n },\n {\n \"name\": \"Registry\",\n \"discriminator\": [\n 47,\n 174,\n 110,\n 246,\n 184,\n 182,\n 252,\n 218\n ]\n },\n {\n \"name\": \"RegistryState\",\n \"discriminator\": [\n 29,\n 34,\n 224,\n 195,\n 175,\n 183,\n 99,\n 97\n ]\n },\n {\n \"name\": \"Secp256k1KeyClaim\",\n \"discriminator\": [\n 128,\n 160,\n 40,\n 228,\n 165,\n 251,\n 194,\n 86\n ]\n },\n {\n \"name\": \"Subscription\",\n \"discriminator\": [\n 64,\n 7,\n 26,\n 135,\n 102,\n 132,\n 98,\n 33\n ]\n },\n {\n \"name\": \"TicketMarker\",\n \"discriminator\": [\n 1,\n 117,\n 194,\n 234,\n 146,\n 15,\n 115,\n 255\n ]\n }\n ],\n \"events\": [\n {\n \"name\": \"DelegateAdded\",\n \"discriminator\": [\n 96,\n 159,\n 58,\n 144,\n 26,\n 171,\n 141,\n 70\n ]\n },\n {\n \"name\": \"DelegateRemoved\",\n \"discriminator\": [\n 91,\n 243,\n 235,\n 175,\n 109,\n 235,\n 217,\n 84\n ]\n },\n {\n \"name\": \"DelegateStatusChanged\",\n \"discriminator\": [\n 188,\n 202,\n 137,\n 41,\n 54,\n 213,\n 14,\n 92\n ]\n },\n {\n \"name\": \"EpochClosed\",\n \"discriminator\": [\n 21,\n 4,\n 48,\n 56,\n 29,\n 169,\n 77,\n 42\n ]\n },\n {\n \"name\": \"EpochCreated\",\n \"discriminator\": [\n 191,\n 150,\n 240,\n 63,\n 59,\n 212,\n 233,\n 124\n ]\n },\n {\n \"name\": \"EpochFinalized\",\n \"discriminator\": [\n 109,\n 54,\n 231,\n 81,\n 101,\n 249,\n 145,\n 107\n ]\n },\n {\n \"name\": \"EpochRewardCredited\",\n \"discriminator\": [\n 12,\n 42,\n 166,\n 244,\n 196,\n 241,\n 134,\n 186\n ]\n },\n {\n \"name\": \"FeedUpdated\",\n \"discriminator\": [\n 200,\n 60,\n 190,\n 86,\n 247,\n 9,\n 50,\n 81\n ]\n },\n {\n \"name\": \"GatewayDeactivated\",\n \"discriminator\": [\n 67,\n 206,\n 26,\n 221,\n 251,\n 18,\n 50,\n 73\n ]\n },\n {\n \"name\": \"GatewayRegistered\",\n \"discriminator\": [\n 171,\n 121,\n 170,\n 61,\n 195,\n 155,\n 35,\n 98\n ]\n },\n {\n \"name\": \"NodeDeactivated\",\n \"discriminator\": [\n 74,\n 15,\n 22,\n 250,\n 74,\n 89,\n 202,\n 244\n ]\n },\n {\n \"name\": \"NodeDepositWithdrawn\",\n \"discriminator\": [\n 144,\n 148,\n 204,\n 72,\n 127,\n 171,\n 1,\n 39\n ]\n },\n {\n \"name\": \"NodeEndpointUpdated\",\n \"discriminator\": [\n 121,\n 121,\n 209,\n 202,\n 113,\n 134,\n 46,\n 240\n ]\n },\n {\n \"name\": \"NodePunished\",\n \"discriminator\": [\n 5,\n 220,\n 63,\n 21,\n 153,\n 202,\n 80,\n 79\n ]\n },\n {\n \"name\": \"NodeRegistered\",\n \"discriminator\": [\n 15,\n 57,\n 183,\n 59,\n 93,\n 55,\n 157,\n 195\n ]\n },\n {\n \"name\": \"NodeReinstated\",\n \"discriminator\": [\n 45,\n 0,\n 72,\n 79,\n 131,\n 183,\n 198,\n 205\n ]\n },\n {\n \"name\": \"OffenceProven\",\n \"discriminator\": [\n 33,\n 127,\n 13,\n 247,\n 209,\n 98,\n 62,\n 116\n ]\n },\n {\n \"name\": \"PlanAdded\",\n \"discriminator\": [\n 253,\n 31,\n 157,\n 223,\n 171,\n 1,\n 203,\n 207\n ]\n },\n {\n \"name\": \"PlanUpdated\",\n \"discriminator\": [\n 49,\n 51,\n 198,\n 31,\n 170,\n 70,\n 253,\n 195\n ]\n },\n {\n \"name\": \"ProtocolConfigUpdated\",\n \"discriminator\": [\n 20,\n 99,\n 32,\n 237,\n 111,\n 86,\n 195,\n 199\n ]\n },\n {\n \"name\": \"ProtocolInitialized\",\n \"discriminator\": [\n 173,\n 122,\n 168,\n 254,\n 9,\n 118,\n 76,\n 132\n ]\n },\n {\n \"name\": \"ProtocolReserveWithdrawn\",\n \"discriminator\": [\n 116,\n 158,\n 232,\n 233,\n 174,\n 58,\n 218,\n 183\n ]\n },\n {\n \"name\": \"RegistryUpdated\",\n \"discriminator\": [\n 152,\n 3,\n 201,\n 176,\n 91,\n 63,\n 47,\n 83\n ]\n },\n {\n \"name\": \"RevenueSwept\",\n \"discriminator\": [\n 57,\n 110,\n 215,\n 130,\n 155,\n 53,\n 55,\n 28\n ]\n },\n {\n \"name\": \"RewardsClaimed\",\n \"discriminator\": [\n 75,\n 98,\n 88,\n 18,\n 219,\n 112,\n 88,\n 121\n ]\n },\n {\n \"name\": \"Subscribed\",\n \"discriminator\": [\n 135,\n 59,\n 105,\n 76,\n 190,\n 236,\n 138,\n 228\n ]\n },\n {\n \"name\": \"SubscriptionExtended\",\n \"discriminator\": [\n 149,\n 17,\n 152,\n 209,\n 131,\n 145,\n 5,\n 6\n ]\n },\n {\n \"name\": \"TicketMarkerClosed\",\n \"discriminator\": [\n 109,\n 122,\n 80,\n 119,\n 203,\n 4,\n 131,\n 160\n ]\n },\n {\n \"name\": \"TicketRosterOverflow\",\n \"discriminator\": [\n 147,\n 69,\n 132,\n 24,\n 191,\n 8,\n 117,\n 185\n ]\n },\n {\n \"name\": \"TicketSubmitted\",\n \"discriminator\": [\n 190,\n 48,\n 169,\n 171,\n 61,\n 217,\n 169,\n 249\n ]\n }\n ],\n \"errors\": [\n {\n \"code\": 6000,\n \"name\": \"InvalidMinSigners\",\n \"msg\": \"invalid min signers\"\n },\n {\n \"code\": 6001,\n \"name\": \"InvalidTimestamp\",\n \"msg\": \"invalid timestamp\"\n },\n {\n \"code\": 6002,\n \"name\": \"InvalidMint\",\n \"msg\": \"invalid usdc mint\"\n },\n {\n \"code\": 6003,\n \"name\": \"InvalidNodeIndex\",\n \"msg\": \"Signer index outside node_count(version)\"\n },\n {\n \"code\": 6004,\n \"name\": \"InvalidNodeAccount\",\n \"msg\": \"Node account does not match expected index/owner\"\n },\n {\n \"code\": 6005,\n \"name\": \"UnauthorizedNodeAuthority\",\n \"msg\": \"Caller is not node.owner or registry.authority\"\n },\n {\n \"code\": 6006,\n \"name\": \"NodeCapExceeded\",\n \"msg\": \"pending_node_count >= registry.node_count or node_index_hint >= registry.node_count\"\n },\n {\n \"code\": 6007,\n \"name\": \"InvalidPoP\",\n \"msg\": \"PoP Schnorr verification failed at registration\"\n },\n {\n \"code\": 6008,\n \"name\": \"NodeNotActive\",\n \"msg\": \"Instruction requires Active node status\"\n },\n {\n \"code\": 6009,\n \"name\": \"PubkeyNotOnCurve\",\n \"msg\": \"Submitted compressed pubkey does not decompress to a valid curve point\"\n },\n {\n \"code\": 6010,\n \"name\": \"InvalidRegistryVersion\",\n \"msg\": \"registry version or version-addressed registry account is invalid\"\n },\n {\n \"code\": 6011,\n \"name\": \"RegistryNotActive\",\n \"msg\": \"registry is not active\"\n },\n {\n \"code\": 6012,\n \"name\": \"InvalidSourceId\",\n \"msg\": \"source_id does not match feed.source_id\"\n },\n {\n \"code\": 6013,\n \"name\": \"RegistryPolicyUnchanged\",\n \"msg\": \"new redundancy buffer must differ from the current registry policy\"\n },\n {\n \"code\": 6014,\n \"name\": \"InvalidRedundancyBuffer\",\n \"msg\": \"redundancy buffer must be between 1 and 8\"\n },\n {\n \"code\": 6015,\n \"name\": \"InvalidGatewayEndpoint\",\n \"msg\": \"Gateway endpoint is invalid\"\n },\n {\n \"code\": 6016,\n \"name\": \"InvalidNodeEndpoint\",\n \"msg\": \"Node endpoint is invalid\"\n },\n {\n \"code\": 6017,\n \"name\": \"InvalidSignature\",\n \"msg\": \"Invalid aggregate signature\"\n },\n {\n \"code\": 6018,\n \"name\": \"GroupBitmapDerivationFailed\",\n \"msg\": \"Could not derive group bitmap\"\n },\n {\n \"code\": 6019,\n \"name\": \"InvalidSignersBitmap\",\n \"msg\": \"Signers bitmap contains out-of-range indices\"\n },\n {\n \"code\": 6020,\n \"name\": \"PlanNotActive\",\n \"msg\": \"plan exists but is_active is false\"\n },\n {\n \"code\": 6021,\n \"name\": \"InvalidPlanParams\",\n \"msg\": \"invalid plan quorum or signer parameters\"\n },\n {\n \"code\": 6022,\n \"name\": \"InvalidDelegateLimits\",\n \"msg\": \"invalid delegate limit parameters\"\n },\n {\n \"code\": 6023,\n \"name\": \"DelegateCannotBeOwner\",\n \"msg\": \"delegate cannot be the owner\"\n },\n {\n \"code\": 6024,\n \"name\": \"DelegateCapReached\",\n \"msg\": \"subscription delegate_count >= plan.max_delegates\"\n },\n {\n \"code\": 6025,\n \"name\": \"InvalidRegistrationSalt\",\n \"msg\": \"registration_salt must not be zero\"\n },\n {\n \"code\": 6026,\n \"name\": \"InsufficientSigners\",\n \"msg\": \"popcount(signers_bitmap) < signatures_required\"\n },\n {\n \"code\": 6027,\n \"name\": \"SignaturesBelowMinSigners\",\n \"msg\": \"signatures_required is below protocol min_signers\"\n },\n {\n \"code\": 6028,\n \"name\": \"SignersNotSubsetOfSelection\",\n \"msg\": \"Signer bits outside selection bitmap\"\n },\n {\n \"code\": 6029,\n \"name\": \"InvalidAggregateSignature\",\n \"msg\": \"PoP-Schnorr aggregate verification failed\"\n },\n {\n \"code\": 6030,\n \"name\": \"FeedNotNewer\",\n \"msg\": \"canonical_timestamp <= feed.canonical_timestamp\"\n },\n {\n \"code\": 6031,\n \"name\": \"SignaturesRequiredMismatch\",\n \"msg\": \"signatures_required does not match feed.signatures_required\"\n },\n {\n \"code\": 6032,\n \"name\": \"MissingSignerAccount\",\n \"msg\": \"Missing or mis-ordered signer slot version account\"\n },\n {\n \"code\": 6033,\n \"name\": \"SubscriptionNotActive\",\n \"msg\": \"subscription has expired\"\n },\n {\n \"code\": 6034,\n \"name\": \"QuorumBelowThreshold\",\n \"msg\": \"popcount(signers_bitmap) < signatures_required\"\n },\n {\n \"code\": 6035,\n \"name\": \"GatewayNotActive\",\n \"msg\": \"gateway is not active\"\n },\n {\n \"code\": 6036,\n \"name\": \"NothingToClaim\",\n \"msg\": \"no claimable rewards\"\n },\n {\n \"code\": 6037,\n \"name\": \"InvalidWithdrawalState\",\n \"msg\": \"account is not in a state that permits withdrawal\"\n },\n {\n \"code\": 6038,\n \"name\": \"NothingToWithdraw\",\n \"msg\": \"withdrawable balance is zero\"\n },\n {\n \"code\": 6039,\n \"name\": \"WithdrawalCooldownActive\",\n \"msg\": \"withdrawal cooldown has not elapsed\"\n },\n {\n \"code\": 6040,\n \"name\": \"WithdrawalArithmeticOverflow\",\n \"msg\": \"withdrawal deadline arithmetic overflow\"\n },\n {\n \"code\": 6041,\n \"name\": \"InvalidWithdrawalCooldown\",\n \"msg\": \"withdrawal cooldown must be positive and fit a slot deadline\"\n },\n {\n \"code\": 6042,\n \"name\": \"InvalidInstructionsSysvar\",\n \"msg\": \"instructions sysvar account is invalid\"\n },\n {\n \"code\": 6043,\n \"name\": \"CreditedExceedsSelection\",\n \"msg\": \"credited signer count exceeds signatures_required + redundancy_buffer\"\n },\n {\n \"code\": 6044,\n \"name\": \"InvalidRawValue\",\n \"msg\": \"raw value exceeds Feed::MAX_VALUE_LEN or does not match the hash of the attestation value\"\n },\n {\n \"code\": 6045,\n \"name\": \"EquivocationSameStatement\",\n \"msg\": \"equivocation requires two attestations for one duty with different values\"\n },\n {\n \"code\": 6046,\n \"name\": \"NotEquivocation\",\n \"msg\": \"attestations do not sign different values for one duty\"\n },\n {\n \"code\": 6047,\n \"name\": \"EvidenceHashMismatch\",\n \"msg\": \"recomputed evidence hash does not match the supplied evidence_hash\"\n },\n {\n \"code\": 6048,\n \"name\": \"GuiltySetEmpty\",\n \"msg\": \"intersection of the two signer bitmaps is empty\"\n },\n {\n \"code\": 6049,\n \"name\": \"NodeTombstoned\",\n \"msg\": \"node is permanently tombstoned\"\n },\n {\n \"code\": 6050,\n \"name\": \"NodeNotFrozen\",\n \"msg\": \"node is not Frozen\"\n },\n {\n \"code\": 6051,\n \"name\": \"NodeStillFrozen\",\n \"msg\": \"node is still inside its freeze window\"\n },\n {\n \"code\": 6052,\n \"name\": \"NodeAlreadyInRegistry\",\n \"msg\": \"node is already present in the current registry\"\n },\n {\n \"code\": 6053,\n \"name\": \"SignersFullySelected\",\n \"msg\": \"every signer was within the derived selection - no unsolicited signer\"\n },\n {\n \"code\": 6054,\n \"name\": \"NothingToPunish\",\n \"msg\": \"every guilty node is already tombstoned\"\n },\n {\n \"code\": 6055,\n \"name\": \"NonceCommitmentMismatch\",\n \"msg\": \"attestations do not share an aggregate nonce commitment\"\n },\n {\n \"code\": 6056,\n \"name\": \"RegistryVersionMismatch\",\n \"msg\": \"attestations have different registry versions, or one older than the feed's\"\n },\n {\n \"code\": 6057,\n \"name\": \"NonceReuseSameMessage\",\n \"msg\": \"attestations sign the same message\"\n },\n {\n \"code\": 6058,\n \"name\": \"PreferEquivocation\",\n \"msg\": \"same duty with different values is equivocation - file it as one\"\n },\n {\n \"code\": 6059,\n \"name\": \"AttestationTooStale\",\n \"msg\": \"canonical_timestamp is older than now - max_settlement_delay_seconds\"\n },\n {\n \"code\": 6060,\n \"name\": \"AttestationInFuture\",\n \"msg\": \"canonical_timestamp is further ahead of cluster time than the allowed drift\"\n },\n {\n \"code\": 6061,\n \"name\": \"InvalidMaxReceiptDelay\",\n \"msg\": \"max_settlement_delay_seconds must be positive and fit a timestamp deadline\"\n },\n {\n \"code\": 6062,\n \"name\": \"TreasuryInsolvent\",\n \"msg\": \"treasury balance cannot back the protocol's reward liability\"\n },\n {\n \"code\": 6063,\n \"name\": \"InvalidChallengerBounty\",\n \"msg\": \"challenger_bounty_bps must not exceed 10000\"\n },\n {\n \"code\": 6064,\n \"name\": \"RewardLiabilityUnderflow\",\n \"msg\": \"reward liability underflow\"\n },\n {\n \"code\": 6065,\n \"name\": \"DepositVaultUnderfunded\",\n \"msg\": \"node deposit vault does not cover the recorded total deposits\"\n },\n {\n \"code\": 6066,\n \"name\": \"TranscriptContextsEqual\",\n \"msg\": \"both transcripts carry the same (b, c) challenge pair\"\n },\n {\n \"code\": 6067,\n \"name\": \"NonCanonicalScalar\",\n \"msg\": \"scalar is zero or not below the secp256k1 curve order\"\n },\n {\n \"code\": 6068,\n \"name\": \"MerkleProofTooDeep\",\n \"msg\": \"merkle proof exceeds the maximum accepted depth\"\n },\n {\n \"code\": 6069,\n \"name\": \"InvalidMerkleProof\",\n \"msg\": \"merkle proof does not connect the leaf to the signed batch root\"\n },\n {\n \"code\": 6070,\n \"name\": \"InvalidBatchSignature\",\n \"msg\": \"commitment batch signature does not verify against the node key\"\n },\n {\n \"code\": 6071,\n \"name\": \"InvalidPartialSignature\",\n \"msg\": \"partial signature does not satisfy the nonce equation\"\n },\n {\n \"code\": 6072,\n \"name\": \"InvalidNoncePoint\",\n \"msg\": \"committed nonce is not a valid secp256k1 point\"\n },\n {\n \"code\": 6073,\n \"name\": \"InvalidMinimumNodeDeposit\",\n \"msg\": \"minimum node deposit must be positive\"\n },\n {\n \"code\": 6074,\n \"name\": \"InvalidRoundPrice\",\n \"msg\": \"base price plus rewards for the maximum signer count must fit u64\"\n },\n {\n \"code\": 6075,\n \"name\": \"RewardOverflow\",\n \"msg\": \"reward or reward liability arithmetic overflowed\"\n },\n {\n \"code\": 6076,\n \"name\": \"UnexpectedSignerAccounts\",\n \"msg\": \"signer account list must contain exactly one account per signer\"\n },\n {\n \"code\": 6077,\n \"name\": \"InvalidCoalitionKey\",\n \"msg\": \"coalition key is not the sum of the signer keys\"\n },\n {\n \"code\": 6078,\n \"name\": \"InvalidEpochLength\",\n \"msg\": \"epoch_len_seconds is outside the allowed bounds\"\n },\n {\n \"code\": 6079,\n \"name\": \"InvalidTicketGrace\",\n \"msg\": \"ticket_grace_seconds must be positive and shorter than the epoch\"\n },\n {\n \"code\": 6080,\n \"name\": \"InvalidTicketTarget\",\n \"msg\": \"target_tickets_per_epoch is outside the allowed bounds\"\n },\n {\n \"code\": 6081,\n \"name\": \"InvalidAvailabilityFloor\",\n \"msg\": \"availability floor must not exceed 10000 bps and needs a positive sample minimum\"\n },\n {\n \"code\": 6082,\n \"name\": \"InvalidProtocolFee\",\n \"msg\": \"protocol_fee_bps must not exceed 10000\"\n },\n {\n \"code\": 6083,\n \"name\": \"EpochNotOpen\",\n \"msg\": \"epoch is not open at the current cluster time\"\n },\n {\n \"code\": 6084,\n \"name\": \"TicketWindowClosed\",\n \"msg\": \"epoch no longer accepts tickets\"\n },\n {\n \"code\": 6085,\n \"name\": \"RoundOutsideEpoch\",\n \"msg\": \"canonical_timestamp is outside the epoch window\"\n },\n {\n \"code\": 6086,\n \"name\": \"NotATicket\",\n \"msg\": \"round does not fall under the epoch ticket threshold\"\n },\n {\n \"code\": 6087,\n \"name\": \"DispatchSigInvalid\",\n \"msg\": \"gateway dispatch signature missing or invalid\"\n },\n {\n \"code\": 6088,\n \"name\": \"InvalidRosterSlot\",\n \"msg\": \"roster slot hint does not match the epoch roster\"\n },\n {\n \"code\": 6089,\n \"name\": \"TicketCapReached\",\n \"msg\": \"epoch ticket cap reached\"\n },\n {\n \"code\": 6090,\n \"name\": \"TicketMarkerNotExpired\",\n \"msg\": \"ticket marker is still inside its epoch ticket window\"\n },\n {\n \"code\": 6091,\n \"name\": \"EpochNotFinalizable\",\n \"msg\": \"epoch ticket window has not ended\"\n },\n {\n \"code\": 6092,\n \"name\": \"EpochNotFinalized\",\n \"msg\": \"epoch is not finalized\"\n },\n {\n \"code\": 6093,\n \"name\": \"InvalidEpochSequence\",\n \"msg\": \"next epoch account does not follow the finalized epoch\"\n },\n {\n \"code\": 6094,\n \"name\": \"NothingToCredit\",\n \"msg\": \"roster slot has no weight or was already credited\"\n },\n {\n \"code\": 6095,\n \"name\": \"EpochNotClosable\",\n \"msg\": \"epoch still has uncredited nodes or is inside its evidence window\"\n },\n {\n \"code\": 6096,\n \"name\": \"NothingToSweep\",\n \"msg\": \"treasury holds no unswept income\"\n },\n {\n \"code\": 6097,\n \"name\": \"InsufficientProtocolReserve\",\n \"msg\": \"amount exceeds the protocol reserve\"\n },\n {\n \"code\": 6098,\n \"name\": \"AvailabilityAboveFloor\",\n \"msg\": \"node availability is not below the epoch payout floor\"\n },\n {\n \"code\": 6099,\n \"name\": \"InactivityAlreadyPunished\",\n \"msg\": \"node was already frozen during this epoch\"\n },\n {\n \"code\": 6100,\n \"name\": \"InvalidRentReceiver\",\n \"msg\": \"rent receiver must be the account that paid for the closed account\"\n }\n ],\n \"types\": [\n {\n \"name\": \"AddDelegateArgs\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"delegate\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"max_data_requests\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"Attestation\",\n \"docs\": [\n \"Payload plus aggregate Schnorr signature.\"\n ],\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"payload\",\n \"type\": {\n \"defined\": {\n \"name\": \"AttestationPayload\"\n }\n }\n },\n {\n \"name\": \"signature\",\n \"type\": {\n \"defined\": {\n \"name\": \"SchnorrSignature\"\n }\n }\n }\n ]\n }\n },\n {\n \"name\": \"AttestationPayload\",\n \"docs\": [\n \"Signed oracle attestation payload.\"\n ],\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"value\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"source_id\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"registry_version\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"signatures_required\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"canonical_timestamp\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"CoalitionKey\",\n \"docs\": [\n \"Affine coalition key `Σ X_i = (x, y)`, big-endian: an untrusted verification input.\",\n \"\",\n \"Supplying it lets the verifier check its Jacobian sum against the key instead of normalizing\",\n \"the sum with a field inversion (see [`CoalitionAccumulator::compressed_pubkey_with_key`]).\",\n \"It is a property of the point, not of the verifier's arithmetic: any secp256k1 library\",\n \"computes it as the plain sum of the signers' public keys, in any order.\",\n \"\",\n \"Not part of the signed message or the cross-VM [`crate::Attestation`]; carry it next to the\",\n \"attestation, e.g. in Solana instruction data.\"\n ],\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"x\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"y\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n }\n ]\n }\n },\n {\n \"name\": \"CommitmentReuseEvidence\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"attestation_a\",\n \"type\": {\n \"defined\": {\n \"name\": \"Attestation\"\n }\n }\n },\n {\n \"name\": \"attestation_b\",\n \"type\": {\n \"defined\": {\n \"name\": \"Attestation\"\n }\n }\n },\n {\n \"name\": \"coalition_key_a\",\n \"docs\": [\n \"Affine sum of `attestation_a`'s signer keys. A verification input, not evidence: it is\",\n \"left out of [`Evidence::hash`], so the case PDA derives from the attestations alone.\"\n ],\n \"type\": {\n \"defined\": {\n \"name\": \"CoalitionKey\"\n }\n }\n },\n {\n \"name\": \"coalition_key_b\",\n \"docs\": [\n \"Affine sum of `attestation_b`'s signer keys; see `coalition_key_a`.\"\n ],\n \"type\": {\n \"defined\": {\n \"name\": \"CoalitionKey\"\n }\n }\n }\n ]\n }\n },\n {\n \"name\": \"CommittedNoncePair\",\n \"docs\": [\n \"The nonce pair committed for one slot, as affine coordinates.\",\n \"\",\n \"Points travel uncompressed so the program never pays for a field square root; both are\",\n \"re-checked on-curve during equation verification.\"\n ],\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"r1_x\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"r1_y\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"r2_x\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"r2_y\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n }\n ]\n }\n },\n {\n \"name\": \"Delegate\",\n \"docs\": [\n \"Owner-scoped delegate authorization. `max_data_requests` is enforced by the gateway at\",\n \"admission, not on chain.\"\n ],\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"owner\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"delegate\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"max_data_requests\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n }\n ]\n }\n },\n {\n \"name\": \"DelegateAdded\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"owner\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"delegate\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"delegate_count\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"added_at\",\n \"type\": \"i64\"\n }\n ]\n }\n },\n {\n \"name\": \"DelegateRemoved\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"owner\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"delegate\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"delegate_count\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"removed_at\",\n \"type\": \"i64\"\n }\n ]\n }\n },\n {\n \"name\": \"DelegateStatusChanged\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"delegate\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"old_status\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"new_status\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"updated_at\",\n \"type\": \"i64\"\n }\n ]\n }\n },\n {\n \"name\": \"EpochClosed\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"epoch\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"residual\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"rolled_into\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"closed_at\",\n \"type\": \"i64\"\n }\n ]\n }\n },\n {\n \"name\": \"EpochCreated\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"epoch\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"start\",\n \"type\": \"i64\"\n },\n {\n \"name\": \"end\",\n \"type\": \"i64\"\n },\n {\n \"name\": \"ticket_grace\",\n \"type\": \"i64\"\n },\n {\n \"name\": \"tau\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"EpochFinalized\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"epoch\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"pool\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"tickets\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"roster_len\",\n \"type\": \"u16\"\n },\n {\n \"name\": \"weight_total\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"weighted_count\",\n \"type\": \"u16\"\n },\n {\n \"name\": \"finalized_at\",\n \"type\": \"i64\"\n }\n ]\n }\n },\n {\n \"name\": \"EpochRewardCredited\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"epoch\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"node\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"weight\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"forfeited\",\n \"docs\": [\n \"The node was tombstoned; its share stays in the epoch residual.\"\n ],\n \"type\": \"bool\"\n }\n ]\n }\n },\n {\n \"name\": \"EpochState\",\n \"docs\": [\n \"One epoch of the reward pool: its window, pinned ticket threshold, swept income and the\",\n \"per-node participation counters fed by tickets.\",\n \"\",\n \"Counters are keyed by an epoch-local roster of `Node` PDAs rather than by registry position,\",\n \"because registry positions move between versions (swap-remove) while one epoch spans several.\",\n \"The roster fills lazily as tickets name nodes for the first time.\",\n \"\",\n \"PDA: `[SEED_PREFIX, epoch.to_le_bytes()]`. Layout has no implicit padding.\"\n ],\n \"serialization\": \"bytemuck\",\n \"repr\": {\n \"kind\": \"c\"\n },\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"epoch\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"start\",\n \"docs\": [\n \"Inclusive window start (unix seconds). Equals the previous epoch's `end`.\"\n ],\n \"type\": \"i64\"\n },\n {\n \"name\": \"end\",\n \"docs\": [\n \"Exclusive window end (unix seconds).\"\n ],\n \"type\": \"i64\"\n },\n {\n \"name\": \"ticket_grace\",\n \"docs\": [\n \"Snapshot of `ticket_grace_seconds` at creation.\"\n ],\n \"type\": \"i64\"\n },\n {\n \"name\": \"tau\",\n \"docs\": [\n \"A round is a ticket when the big-endian `u64` prefix of its ticket hash is below this.\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"pool\",\n \"docs\": [\n \"USDC swept into this epoch while it was open.\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"paid\",\n \"docs\": [\n \"Sum of payouts credited to nodes.\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"weight_total\",\n \"docs\": [\n \"`Σ weight(slot)`, frozen at finalization.\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"tickets\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"sum_signed\",\n \"docs\": [\n \"`Σ signed`, maintained per ticket.\"\n ],\n \"type\": \"u32\"\n },\n {\n \"name\": \"sum_selected\",\n \"docs\": [\n \"`Σ selected`, maintained per ticket.\"\n ],\n \"type\": \"u32\"\n },\n {\n \"name\": \"min_availability_bps\",\n \"docs\": [\n \"Snapshot: availability floor relative to the network inclusion rate, in bps.\"\n ],\n \"type\": \"u16\"\n },\n {\n \"name\": \"min_samples\",\n \"docs\": [\n \"Snapshot: samples below which the availability floor does not apply.\"\n ],\n \"type\": \"u16\"\n },\n {\n \"name\": \"roster_len\",\n \"type\": \"u16\"\n },\n {\n \"name\": \"weighted_count\",\n \"docs\": [\n \"Roster slots with non-zero weight, frozen at finalization.\"\n ],\n \"type\": \"u16\"\n },\n {\n \"name\": \"credited_count\",\n \"docs\": [\n \"Weighted slots already processed by `credit_epoch_rewards`.\"\n ],\n \"type\": \"u16\"\n },\n {\n \"name\": \"finalized\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"rent_payer\",\n \"docs\": [\n \"Receives this account's rent when the epoch is closed.\"\n ],\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"credited\",\n \"docs\": [\n \"Bitmap over roster slots already credited.\"\n ],\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"signed\",\n \"type\": {\n \"array\": [\n \"u16\",\n 256\n ]\n }\n },\n {\n \"name\": \"selected\",\n \"type\": {\n \"array\": [\n \"u16\",\n 256\n ]\n }\n },\n {\n \"name\": \"roster\",\n \"type\": {\n \"array\": [\n {\n \"array\": [\n \"u8\",\n 32\n ]\n },\n 256\n ]\n }\n },\n {\n \"name\": \"min_signers\",\n \"docs\": [\n \"Snapshot of the admission quorum floor for rounds counted in this epoch.\"\n ],\n \"type\": \"u8\"\n },\n {\n \"name\": \"_reserved\",\n \"type\": {\n \"array\": [\n \"u8\",\n 7\n ]\n }\n }\n ]\n }\n },\n {\n \"name\": \"EquivocationEvidence\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"attestation_a\",\n \"type\": {\n \"defined\": {\n \"name\": \"Attestation\"\n }\n }\n },\n {\n \"name\": \"attestation_b\",\n \"type\": {\n \"defined\": {\n \"name\": \"Attestation\"\n }\n }\n },\n {\n \"name\": \"coalition_key_a\",\n \"docs\": [\n \"Affine sum of `attestation_a`'s signer keys. A verification input, not evidence: it is\",\n \"left out of [`Evidence::hash`], so the case PDA derives from the attestations alone.\"\n ],\n \"type\": {\n \"defined\": {\n \"name\": \"CoalitionKey\"\n }\n }\n },\n {\n \"name\": \"coalition_key_b\",\n \"docs\": [\n \"Affine sum of `attestation_b`'s signer keys; see `coalition_key_a`.\"\n ],\n \"type\": {\n \"defined\": {\n \"name\": \"CoalitionKey\"\n }\n }\n }\n ]\n }\n },\n {\n \"name\": \"Feed\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"source_id\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"value\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"value_kind\",\n \"type\": {\n \"defined\": {\n \"name\": \"FeedValueKind\"\n }\n }\n },\n {\n \"name\": \"submitter\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"canonical_timestamp\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"signatures_required\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"signers_bitmap\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"registry_version\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n }\n ]\n }\n },\n {\n \"name\": \"FeedUpdated\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"source_id\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"registry_version\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"canonical_timestamp\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"value\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"value_kind\",\n \"type\": {\n \"defined\": {\n \"name\": \"FeedValueKind\"\n }\n }\n },\n {\n \"name\": \"signers_bitmap\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"last_updated_slot\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"FeedValueKind\",\n \"docs\": [\n \"How to read [`Feed::value`], which is always the signed `AttestationPayload::value`.\"\n ],\n \"type\": {\n \"kind\": \"enum\",\n \"variants\": [\n {\n \"name\": \"Value\"\n },\n {\n \"name\": \"Hash\"\n }\n ]\n }\n },\n {\n \"name\": \"Gateway\",\n \"docs\": [\n \"Protocol-authorized gateway identified by its Solana authority.\",\n \"\",\n \"Holds endpoint metadata and activation status. Keyed by the gateway's authority key, which\",\n \"signs the round dispatches tickets must carry. Gateways hold no funds: x402 payers pay the\",\n \"protocol treasury directly.\"\n ],\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"authority\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"ip\",\n \"type\": {\n \"array\": [\n \"u8\",\n 4\n ]\n }\n },\n {\n \"name\": \"port\",\n \"type\": \"u16\"\n },\n {\n \"name\": \"status\",\n \"type\": {\n \"defined\": {\n \"name\": \"GatewayStatus\"\n }\n }\n },\n {\n \"name\": \"registered_at\",\n \"type\": \"i64\"\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n }\n ]\n }\n },\n {\n \"name\": \"GatewayDeactivated\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"gateway\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"authority\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"deactivated_at\",\n \"type\": \"i64\"\n }\n ]\n }\n },\n {\n \"name\": \"GatewayRegistered\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"authority\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"ip\",\n \"type\": {\n \"array\": [\n \"u8\",\n 4\n ]\n }\n },\n {\n \"name\": \"port\",\n \"type\": \"u16\"\n },\n {\n \"name\": \"registered_at\",\n \"type\": \"i64\"\n }\n ]\n }\n },\n {\n \"name\": \"GatewayStatus\",\n \"type\": {\n \"kind\": \"enum\",\n \"variants\": [\n {\n \"name\": \"Active\"\n },\n {\n \"name\": \"Deactivated\"\n }\n ]\n }\n },\n {\n \"name\": \"InactivityEvidence\",\n \"docs\": [\n \"A node whose availability in a finalized epoch fell below that epoch's payout floor.\",\n \"\",\n \"Proven from the epoch's own counters; `registry_version` / `node_index` locate the node in the\",\n \"current registry so it can be removed. The case hash covers only `(epoch, roster_slot)`, so a\",\n \"node can be punished at most once per epoch, including after reinstatement.\",\n \"\",\n \"Remaining accounts: `[node, epoch_state]`.\"\n ],\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"epoch\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"roster_slot\",\n \"type\": \"u16\"\n },\n {\n \"name\": \"registry_version\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"node_index\",\n \"type\": \"u32\"\n }\n ]\n }\n },\n {\n \"name\": \"InitializeArgs\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"withdrawal_cooldown_slots\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"redundancy_buffer\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"minimum_node_deposit\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"reward_per_signature\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"max_settlement_delay_seconds\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"challenger_bounty_bps\",\n \"type\": \"u16\"\n },\n {\n \"name\": \"usdc_mint\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"x402_round_base\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"min_signers\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"epoch_len_seconds\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"ticket_grace_seconds\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"target_tickets_per_epoch\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"min_availability_bps\",\n \"type\": \"u16\"\n },\n {\n \"name\": \"min_availability_samples\",\n \"type\": \"u16\"\n },\n {\n \"name\": \"protocol_fee_bps\",\n \"type\": \"u16\"\n }\n ]\n }\n },\n {\n \"name\": \"Node\",\n \"docs\": [\n \"Permanent node identity and reward account; never closed or re-keyed.\"\n ],\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"authority\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"secp256k1_pubkey_x\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"secp256k1_pubkey_y\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"status\",\n \"type\": {\n \"defined\": {\n \"name\": \"NodeStatus\"\n }\n }\n },\n {\n \"name\": \"ip\",\n \"type\": {\n \"array\": [\n \"u8\",\n 4\n ]\n }\n },\n {\n \"name\": \"port\",\n \"type\": \"u16\"\n },\n {\n \"name\": \"locked_amount\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"claimable_rewards\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"registered_at\",\n \"type\": \"i64\"\n },\n {\n \"name\": \"withdrawable_slot\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"frozen_until\",\n \"type\": \"i64\"\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n }\n ]\n }\n },\n {\n \"name\": \"NodeDeactivated\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"node\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"node_authority\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"new_registry_version\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"deactivated_at\",\n \"type\": \"i64\"\n }\n ]\n }\n },\n {\n \"name\": \"NodeDepositWithdrawn\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"node\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"node_authority\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"destination\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"withdrawn_at\",\n \"type\": \"i64\"\n }\n ]\n }\n },\n {\n \"name\": \"NodeEndpointUpdated\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"node\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"node_authority\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"ip\",\n \"type\": {\n \"array\": [\n \"u8\",\n 4\n ]\n }\n },\n {\n \"name\": \"port\",\n \"type\": \"u16\"\n },\n {\n \"name\": \"updated_at\",\n \"type\": \"i64\"\n }\n ]\n }\n },\n {\n \"name\": \"NodePunished\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"node\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"authority\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"offence\",\n \"type\": {\n \"defined\": {\n \"name\": \"OffenceKind\"\n }\n }\n },\n {\n \"name\": \"slashed_locked\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"slashed_rewards\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"new_status\",\n \"type\": {\n \"defined\": {\n \"name\": \"NodeStatus\"\n }\n }\n },\n {\n \"name\": \"punished_at\",\n \"type\": \"i64\"\n }\n ]\n }\n },\n {\n \"name\": \"NodeRegistered\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"node\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"index\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"registry_version\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"ip\",\n \"type\": {\n \"array\": [\n \"u8\",\n 4\n ]\n }\n },\n {\n \"name\": \"port\",\n \"type\": \"u16\"\n },\n {\n \"name\": \"security_deposit\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"registered_at\",\n \"type\": \"i64\"\n }\n ]\n }\n },\n {\n \"name\": \"NodeReinstated\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"node\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"node_authority\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"index\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"registry_version\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"reinstated_at\",\n \"type\": \"i64\"\n }\n ]\n }\n },\n {\n \"name\": \"NodeStatus\",\n \"type\": {\n \"kind\": \"enum\",\n \"variants\": [\n {\n \"name\": \"Active\"\n },\n {\n \"name\": \"Deactivated\"\n },\n {\n \"name\": \"Frozen\"\n },\n {\n \"name\": \"Tombstoned\"\n }\n ]\n }\n },\n {\n \"name\": \"NonceReuseEvidence\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"registry_version\",\n \"docs\": [\n \"Registry version that `node_index` indexes into; also bound into the batch signature.\"\n ],\n \"type\": \"u32\"\n },\n {\n \"name\": \"node_index\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"epoch\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"batch_meta\",\n \"docs\": [\n \"Opaque batch header bytes, covered by the signature but not interpreted on-chain.\"\n ],\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"batch_root\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"batch_sig_s\",\n \"docs\": [\n \"Single-key EVM-Schnorr signature over the batch message.\"\n ],\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"batch_commitment_addr\",\n \"type\": {\n \"array\": [\n \"u8\",\n 20\n ]\n }\n },\n {\n \"name\": \"slot\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"nonces\",\n \"type\": {\n \"defined\": {\n \"name\": \"CommittedNoncePair\"\n }\n }\n },\n {\n \"name\": \"merkle_proof\",\n \"type\": {\n \"vec\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n }\n },\n {\n \"name\": \"transcript_a\",\n \"type\": {\n \"defined\": {\n \"name\": \"PartialTranscript\"\n }\n }\n },\n {\n \"name\": \"transcript_b\",\n \"type\": {\n \"defined\": {\n \"name\": \"PartialTranscript\"\n }\n }\n }\n ]\n }\n },\n {\n \"name\": \"Offence\",\n \"docs\": [\n \"Node-fault offence types. Each carries a fixed [`Penalty`] — see [`OffenceKind::penalty`].\"\n ],\n \"type\": {\n \"kind\": \"enum\",\n \"variants\": [\n {\n \"name\": \"Equivocation\",\n \"fields\": [\n {\n \"defined\": {\n \"name\": \"EquivocationEvidence\"\n }\n }\n ]\n },\n {\n \"name\": \"UnsolicitedSigning\",\n \"fields\": [\n {\n \"defined\": {\n \"name\": \"UnsolicitedSigningEvidence\"\n }\n }\n ]\n },\n {\n \"name\": \"CommitmentReuse\",\n \"fields\": [\n {\n \"defined\": {\n \"name\": \"CommitmentReuseEvidence\"\n }\n }\n ]\n },\n {\n \"name\": \"NonceReuse\",\n \"fields\": [\n {\n \"defined\": {\n \"name\": \"NonceReuseEvidence\"\n }\n }\n ]\n },\n {\n \"name\": \"Inactivity\",\n \"fields\": [\n {\n \"defined\": {\n \"name\": \"InactivityEvidence\"\n }\n }\n ]\n }\n ]\n }\n },\n {\n \"name\": \"OffenceKind\",\n \"docs\": [\n \"Fieldless offence identity stored on `PunishmentCase` and in events.\"\n ],\n \"type\": {\n \"kind\": \"enum\",\n \"variants\": [\n {\n \"name\": \"Equivocation\"\n },\n {\n \"name\": \"UnsolicitedSigning\"\n },\n {\n \"name\": \"CommitmentReuse\"\n },\n {\n \"name\": \"NonceReuse\"\n },\n {\n \"name\": \"Inactivity\"\n }\n ]\n }\n },\n {\n \"name\": \"OffenceProven\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"offence\",\n \"type\": {\n \"defined\": {\n \"name\": \"OffenceKind\"\n }\n }\n },\n {\n \"name\": \"guilty_bitmap\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"evidence_hash\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"reporter\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"slashed_total\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"bounty_paid\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"proven_at\",\n \"type\": \"i64\"\n }\n ]\n }\n },\n {\n \"name\": \"PartialTranscript\",\n \"docs\": [\n \"One partial-signature transcript: the challenge scalars and the resulting share.\",\n \"\",\n \"The program never recomputes `b` or `c` from a signing context — the offence is defined purely\",\n \"by the equation `s*G == R1 + b*R2 + c*X`, which is why message transport and commitment lists\",\n \"stay off-chain.\"\n ],\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"b\",\n \"docs\": [\n \"Binding factor.\"\n ],\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"c\",\n \"docs\": [\n \"Challenge.\"\n ],\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"s\",\n \"docs\": [\n \"The node's partial signature scalar.\"\n ],\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n }\n ]\n }\n },\n {\n \"name\": \"Plan\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"plan_type\",\n \"type\": {\n \"defined\": {\n \"name\": \"PlanType\"\n }\n }\n },\n {\n \"name\": \"subscription_price\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"max_signers\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"max_delegates\",\n \"docs\": [\n \"Max delegates/agents an owner on this plan may provision.\"\n ],\n \"type\": \"u32\"\n },\n {\n \"name\": \"max_rounds\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"private_api_enabled\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"is_active\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n }\n ]\n }\n },\n {\n \"name\": \"PlanAdded\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"plan_type\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"subscription_price\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"max_signers\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"max_delegates\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"private_api_enabled\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"is_active\",\n \"type\": \"bool\"\n }\n ]\n }\n },\n {\n \"name\": \"PlanConfig\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"plan_type\",\n \"type\": {\n \"defined\": {\n \"name\": \"PlanType\"\n }\n }\n },\n {\n \"name\": \"subscription_price\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"max_signers\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"max_delegates\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"max_rounds\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"private_api_enabled\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"is_active\",\n \"type\": \"bool\"\n }\n ]\n }\n },\n {\n \"name\": \"PlanType\",\n \"repr\": {\n \"kind\": \"rust\"\n },\n \"type\": {\n \"kind\": \"enum\",\n \"variants\": [\n {\n \"name\": \"Basic\"\n },\n {\n \"name\": \"Standard\"\n },\n {\n \"name\": \"Professional\"\n },\n {\n \"name\": \"Enterprise\"\n }\n ]\n }\n },\n {\n \"name\": \"PlanUpdated\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"plan_type\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"subscription_price\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"max_signers\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"max_delegates\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"private_api_enabled\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"is_active\",\n \"type\": \"bool\"\n }\n ]\n }\n },\n {\n \"name\": \"ProtocolConfig\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"authority\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"usdc_mint\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"reward_per_signature\",\n \"docs\": [\n \"Published x402 pricing input: `x402_round_base + (k + b) · reward_per_signature`.\",\n \"Not read on chain; payouts come from the epoch pool.\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"max_settlement_delay_seconds\",\n \"docs\": [\n \"Max age in seconds of `canonical_timestamp` relative to cluster time at attestation\",\n \"ingress, and the grace period of a superseded registry version.\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"challenger_bounty_bps\",\n \"type\": \"u16\"\n },\n {\n \"name\": \"minimum_node_deposit\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"withdrawal_cooldown_slots\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"x402_round_base\",\n \"docs\": [\n \"Published x402 pricing input; see `reward_per_signature`.\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"reward_liability\",\n \"docs\": [\n \"Sum of every `Node.claimable_rewards`.\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"min_signers\",\n \"docs\": [\n \"Current feed-admission floor; copied into each new epoch for ticket verification.\"\n ],\n \"type\": \"u8\"\n },\n {\n \"name\": \"epoch_len_seconds\",\n \"docs\": [\n \"Length of epochs created from now on.\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"ticket_grace_seconds\",\n \"docs\": [\n \"Late-ticket window after an epoch ends, for epochs created from now on.\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"target_tickets_per_epoch\",\n \"docs\": [\n \"Ticket count per epoch the threshold controller aims for.\"\n ],\n \"type\": \"u32\"\n },\n {\n \"name\": \"min_availability_bps\",\n \"docs\": [\n \"Payout floor relative to the network inclusion rate, in bps, for new epochs.\"\n ],\n \"type\": \"u16\"\n },\n {\n \"name\": \"min_availability_samples\",\n \"docs\": [\n \"Selections below which the availability floor does not apply, for new epochs.\"\n ],\n \"type\": \"u16\"\n },\n {\n \"name\": \"protocol_fee_bps\",\n \"docs\": [\n \"Share of all swept income kept by the protocol; the rest joins the epoch pool.\"\n ],\n \"type\": \"u16\"\n },\n {\n \"name\": \"pool_liability\",\n \"docs\": [\n \"Sum of `pool - paid` over every epoch not yet closed.\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"protocol_reserved\",\n \"docs\": [\n \"Protocol fees and slashing proceeds held in the treasury.\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n }\n ]\n }\n },\n {\n \"name\": \"ProtocolConfigUpdated\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"reward_per_signature\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"max_settlement_delay_seconds\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"challenger_bounty_bps\",\n \"type\": \"u16\"\n },\n {\n \"name\": \"minimum_node_deposit\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"withdrawal_cooldown_slots\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"x402_round_base\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"min_signers\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"epoch_len_seconds\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"ticket_grace_seconds\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"target_tickets_per_epoch\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"min_availability_bps\",\n \"type\": \"u16\"\n },\n {\n \"name\": \"min_availability_samples\",\n \"type\": \"u16\"\n },\n {\n \"name\": \"protocol_fee_bps\",\n \"type\": \"u16\"\n }\n ]\n }\n },\n {\n \"name\": \"ProtocolInitialized\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"protocol_config\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"registry_state\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"registry\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"treasury\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"node_deposit_vault\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"authority\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"usdc_mint\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"initialized_at\",\n \"type\": \"i64\"\n }\n ]\n }\n },\n {\n \"name\": \"ProtocolReserveWithdrawn\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"destination\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"withdrawn_at\",\n \"type\": \"i64\"\n }\n ]\n }\n },\n {\n \"name\": \"PunishmentCase\",\n \"docs\": [\n \"Permanent, on-chain record of an executed node punishment.\",\n \"\",\n \"The PDA is seeded by `evidence_hash`, so `init` doubles as the anti-replay guard: the same\",\n \"evidence can only ever be submitted once, independent of any per-offence terminal-status guard.\"\n ],\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"offence\",\n \"type\": {\n \"defined\": {\n \"name\": \"OffenceKind\"\n }\n }\n },\n {\n \"name\": \"reporter\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"registry_version\",\n \"docs\": [\n \"Registry version the guilty bitmap indexes into.\"\n ],\n \"type\": \"u32\"\n },\n {\n \"name\": \"guilty_bitmap\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"guilty_count\",\n \"type\": \"u16\"\n },\n {\n \"name\": \"slashed_total\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"bounty_paid\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"evidence_hash\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"executed_slot\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n }\n ]\n }\n },\n {\n \"name\": \"RegisterGatewayArgs\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"authority\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"ip\",\n \"type\": {\n \"array\": [\n \"u8\",\n 4\n ]\n }\n },\n {\n \"name\": \"port\",\n \"type\": \"u16\"\n }\n ]\n }\n },\n {\n \"name\": \"RegisterNodeArgs\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"registration_salt\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"ip\",\n \"type\": {\n \"array\": [\n \"u8\",\n 4\n ]\n }\n },\n {\n \"name\": \"port\",\n \"type\": \"u16\"\n },\n {\n \"name\": \"secp256k1_pubkey_compressed\",\n \"type\": {\n \"array\": [\n \"u8\",\n 33\n ]\n }\n },\n {\n \"name\": \"pop_sig_r\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"pop_sig_s\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n }\n ]\n }\n },\n {\n \"name\": \"Registry\",\n \"docs\": [\n \"Immutable, version-addressed snapshot of the ordered node set and selection policy.\",\n \"\",\n \"Only `nodes[..node_count]` is populated. Node addresses are stored as bytes to keep the\",\n \"zero-copy layout POD-safe. `SPACE` includes the Anchor discriminator.\"\n ],\n \"serialization\": \"bytemuck\",\n \"repr\": {\n \"kind\": \"c\"\n },\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"version\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"node_count\",\n \"type\": \"u16\"\n },\n {\n \"name\": \"redundancy_buffer\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"nodes\",\n \"type\": {\n \"array\": [\n {\n \"array\": [\n \"u8\",\n 32\n ]\n },\n 256\n ]\n }\n },\n {\n \"name\": \"grace_active_until\",\n \"type\": \"i64\"\n },\n {\n \"name\": \"active_from\",\n \"docs\": [\n \"Inclusive creation time. A version cannot verify a round dated before it existed.\"\n ],\n \"type\": \"i64\"\n }\n ]\n }\n },\n {\n \"name\": \"RegistryState\",\n \"docs\": [\n \"Mutable pointer to the current immutable registry snapshot.\"\n ],\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"current_version\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"next_version\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n }\n ]\n }\n },\n {\n \"name\": \"RegistryUpdated\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"new_version\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"node_count\",\n \"type\": \"u16\"\n },\n {\n \"name\": \"redundancy_buffer\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"reason\",\n \"type\": {\n \"defined\": {\n \"name\": \"RegistryVersionReason\"\n }\n }\n },\n {\n \"name\": \"updated_at\",\n \"type\": \"i64\"\n }\n ]\n }\n },\n {\n \"name\": \"RegistryVersionReason\",\n \"type\": {\n \"kind\": \"enum\",\n \"variants\": [\n {\n \"name\": \"NodeAdded\"\n },\n {\n \"name\": \"NodeRemoved\"\n },\n {\n \"name\": \"PolicyChanged\"\n },\n {\n \"name\": \"NodePunished\"\n },\n {\n \"name\": \"NodeReinstated\"\n }\n ]\n }\n },\n {\n \"name\": \"RemoveDelegateArgs\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"delegate\",\n \"type\": \"pubkey\"\n }\n ]\n }\n },\n {\n \"name\": \"RevenueSwept\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"epoch\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"gross\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"protocol_fee\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"pool_share\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"swept_at\",\n \"type\": \"i64\"\n }\n ]\n }\n },\n {\n \"name\": \"RewardsClaimed\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"beneficiary\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"claimed_at\",\n \"type\": \"i64\"\n }\n ]\n }\n },\n {\n \"name\": \"SchnorrSignature\",\n \"docs\": [\n \"Aggregate Schnorr signature material.\"\n ],\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"agg_sig_s\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"commitment\",\n \"type\": {\n \"array\": [\n \"u8\",\n 20\n ]\n }\n },\n {\n \"name\": \"signers_bitmap\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n }\n ]\n }\n },\n {\n \"name\": \"Secp256k1KeyClaim\",\n \"docs\": [\n \"Permanent reservation for a secp256k1 node key.\"\n ],\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"node_pubkey\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n }\n ]\n }\n },\n {\n \"name\": \"SubmitAttestationArgs\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"attestation\",\n \"type\": {\n \"defined\": {\n \"name\": \"Attestation\"\n }\n }\n },\n {\n \"name\": \"raw_value\",\n \"docs\": [\n \"Preimage of `attestation.payload.value` for values longer than 32 bytes. When present the\",\n \"signed value must be `keccak256(raw_value)` and the feed stores it as\",\n \"[`FeedValueKind::Hash`].\"\n ],\n \"type\": {\n \"option\": \"bytes\"\n }\n },\n {\n \"name\": \"coalition_key\",\n \"docs\": [\n \"Affine sum of the signers' secp256k1 keys (`molpha_verifier::coalition_key`, or any\",\n \"library's point sum over their `Node` accounts). Unsigned and untrusted: the verifier\",\n \"checks it projectively against its own sum instead of inverting. A wrong key only fails\",\n \"the instruction.\"\n ],\n \"type\": {\n \"defined\": {\n \"name\": \"CoalitionKey\"\n }\n }\n }\n ]\n }\n },\n {\n \"name\": \"Subscribed\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"owner\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"plan_type\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"prepaid_usdc\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"price_snapshot\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"subscribed_at\",\n \"type\": \"i64\"\n },\n {\n \"name\": \"valid_until\",\n \"type\": \"i64\"\n }\n ]\n }\n },\n {\n \"name\": \"Subscription\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"owner\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"plan_type\",\n \"type\": {\n \"defined\": {\n \"name\": \"PlanType\"\n }\n }\n },\n {\n \"name\": \"valid_until\",\n \"type\": \"i64\"\n },\n {\n \"name\": \"max_rounds\",\n \"docs\": [\n \"Round quota per plan snapshot. Enforced by the gateway at admission, not on chain.\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"delegate_count\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"max_delegates\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"max_signers\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n }\n ]\n }\n },\n {\n \"name\": \"SubscriptionExtended\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"owner\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"plan_type\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"extended_at\",\n \"type\": \"i64\"\n },\n {\n \"name\": \"valid_until\",\n \"type\": \"i64\"\n }\n ]\n }\n },\n {\n \"name\": \"TicketMarker\",\n \"docs\": [\n \"Existence marker for a submitted ticket; blocks resubmitting the same round.\",\n \"\",\n \"PDA: `[SEED_PREFIX, ticket_id]`. Once the round's epoch stops accepting tickets the round can\",\n \"never be submitted again, so the marker becomes closable and returns its rent.\"\n ],\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"closable_after\",\n \"docs\": [\n \"The round's epoch ticket deadline (`end + ticket_grace`).\"\n ],\n \"type\": \"i64\"\n },\n {\n \"name\": \"submitter\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n }\n ]\n }\n },\n {\n \"name\": \"TicketMarkerClosed\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"ticket_marker\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"submitter\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"closed_at\",\n \"type\": \"i64\"\n }\n ]\n }\n },\n {\n \"name\": \"TicketRosterOverflow\",\n \"docs\": [\n \"Selected nodes left uncounted because the epoch roster was full.\"\n ],\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"epoch\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"ticket_id\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"uncounted\",\n \"type\": \"u32\"\n }\n ]\n }\n },\n {\n \"name\": \"TicketSubmitted\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"epoch\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"ticket_id\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"gateway\",\n \"docs\": [\n \"Gateway PDA whose authority signed the round dispatch.\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"submitter\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"registry_version\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"signers_bitmap\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n }\n ]\n }\n },\n {\n \"name\": \"UnsolicitedSigningEvidence\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"attestation\",\n \"type\": {\n \"defined\": {\n \"name\": \"Attestation\"\n }\n }\n },\n {\n \"name\": \"coalition_key\",\n \"docs\": [\n \"Affine sum of the attestation's signer keys, intruders included. A verification input,\",\n \"not evidence: it is left out of [`Evidence::hash`], so the case PDA derives from the\",\n \"attestation alone.\"\n ],\n \"type\": {\n \"defined\": {\n \"name\": \"CoalitionKey\"\n }\n }\n }\n ]\n }\n },\n {\n \"name\": \"UpdateConfigArgs\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"withdrawal_cooldown_slots\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"minimum_node_deposit\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"reward_per_signature\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"max_settlement_delay_seconds\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"challenger_bounty_bps\",\n \"type\": \"u16\"\n },\n {\n \"name\": \"x402_round_base\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"min_signers\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"epoch_len_seconds\",\n \"docs\": [\n \"Epoch parameters apply to epochs created after this update, never to existing ones.\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"ticket_grace_seconds\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"target_tickets_per_epoch\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"min_availability_bps\",\n \"type\": \"u16\"\n },\n {\n \"name\": \"min_availability_samples\",\n \"type\": \"u16\"\n },\n {\n \"name\": \"protocol_fee_bps\",\n \"type\": \"u16\"\n }\n ]\n }\n },\n {\n \"name\": \"UpdateNodeEndpointArgs\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"ip\",\n \"type\": {\n \"array\": [\n \"u8\",\n 4\n ]\n }\n },\n {\n \"name\": \"port\",\n \"type\": \"u16\"\n }\n ]\n }\n }\n ]\n}","import type { Idl } from \"@anchor-lang/core\";\nimport idlJson from \"./molpha.json\" with { type: \"json\" };\n\n/**\n * Vendored Molpha Anchor IDL (`target/idl/molpha.json` from the program repo).\n *\n * Re-exported as `MOLPHA_IDL` and used as the default in `MolphaSDK` /\n * `MolphaSolanaClient.create`. Pass `idl` / `programId` only when pinning a\n * different deployment. Keep this copy aligned with the on-chain program you target.\n */\nexport const MOLPHA_IDL = idlJson as Idl;\n\n/** Program address baked into the vendored IDL. */\nexport const MOLPHA_PROGRAM_ADDRESS: string = idlJson.address;\n","/** On-chain subscription plan (`PlanType` in the Molpha program IDL). */\nexport enum PlanType {\n Basic = 0,\n Standard = 1,\n Professional = 2,\n Enterprise = 3,\n}\n\n/** Numeric plan index used for PDA derivation and on-chain reads. */\nexport type PlanId = 0 | 1 | 2 | 3;\n\nconst PLAN_VARIANTS = [\n { basic: {} },\n { standard: {} },\n { professional: {} },\n { enterprise: {} },\n] as const;\n\nexport function planVariant(planId: PlanId): (typeof PLAN_VARIANTS)[number] {\n return PLAN_VARIANTS[planId];\n}\n\nexport function planIdFromVariant(variant: Record<string, unknown>): PlanId {\n const key = Object.keys(variant)[0]?.toLowerCase();\n const idx = [\"basic\", \"standard\", \"professional\", \"enterprise\"].indexOf(key ?? \"\");\n if (idx < 0) throw new Error(`Unknown plan variant: ${JSON.stringify(variant)}`);\n return idx as PlanId;\n}\n","/**\n * `MolphaSolanaClient` — consumer on-chain surface only (subscribe, extend,\n * submitAttestation, readFeed/readPlan/readSubscription/readRegistry,\n * getRegistrySelectionConfig, verifyNodeKeysForPrivateApi). Built from an Anchor\n * `Program` over the vendored IDL (program `3d01170`, \"Epoch settlements\").\n */\nimport {\n AnchorProvider,\n Program,\n web3,\n type Idl,\n type Wallet,\n} from \"@anchor-lang/core\";\nimport { keccak_256 } from \"@noble/hashes/sha3.js\";\nimport BN from \"bn.js\";\nimport type { Address } from \"@solana/kit\";\nimport { type CoalitionKey, computeCoalitionKey } from \"../core/coalition.js\";\nimport { bytesToHex, toFixedBytes } from \"../core/encoding.js\";\nimport {\n normalizeSecp256k1PublicKeyHex,\n secp256k1PublicKeyFromCoordinates,\n} from \"../core/nodeKeys.js\";\nimport type {\n Attestation,\n Node,\n NodeKeyVerifierArgs,\n RegistrySelectionConfig,\n} from \"../core/types.js\";\nimport {\n type RegistryStateView,\n type RegistryView,\n resolveRemainingAccounts,\n} from \"./accounts.js\";\nimport {\n addressFromBytes,\n getAssociatedTokenAddressSync,\n setComputeUnitLimit,\n SYSTEM_PROGRAM_ADDRESS,\n TOKEN_PROGRAM_ADDRESS,\n toSolanaAddress,\n type SolanaAccountMeta,\n type SolanaAddress,\n type SolanaConnection,\n} from \"./kit.js\";\nimport {\n feedPda,\n planPda,\n protocolConfigPda,\n registryPda,\n registryStatePda,\n subscriptionPda,\n} from \"./pdas.js\";\nimport { MOLPHA_IDL, MOLPHA_PROGRAM_ADDRESS } from \"../../idl/index.js\";\nimport { PlanType, planIdFromVariant, planVariant, type PlanId } from \"./plans.js\";\n\nexport { PlanType, type PlanId } from \"./plans.js\";\n\n/** Matches the program CLI default; `submit_attestation` verifies the aggregate on-chain. */\nconst DEFAULT_COMPUTE_UNIT_LIMIT = 1_400_000;\ntype Commitment = NonNullable<ConstructorParameters<typeof AnchorProvider>[2]>[\"commitment\"];\n\nexport interface SubscribeResult {\n signature: string;\n /** USDC base units actually debited from the owner for this subscription. */\n pricePaid: bigint;\n}\n\nexport interface PlanInfo {\n planType: PlanType;\n /** Subscription price in USDC base units (raw u64, e.g. 1_000_000 = 1 USDC at 6 decimals). */\n subscriptionPrice: bigint;\n maxSigners: number;\n maxDelegates: number;\n /** Rounds a subscription on this plan may settle per period. */\n maxRounds: bigint;\n privateApiEnabled: boolean;\n isActive: boolean;\n}\n\n/**\n * On-chain `Subscription`. The program no longer tracks usage: `used_rounds`,\n * `prepaid_usdc` and the locked `price` were removed (round quota is counted by the\n * gateway's off-chain outbox), so there is no on-chain \"rounds used\" figure to read.\n */\nexport interface SubscriptionInfo {\n owner: Address;\n planType: PlanType;\n /** Unix timestamp (seconds) until which the subscription is valid. */\n validUntil: bigint;\n /** Round quota per plan snapshot — enforced by the gateway at admission, not on chain. */\n maxRounds: bigint;\n delegateCount: number;\n maxDelegates: number;\n maxSigners: number;\n}\n\nexport interface SubmitResult {\n signature: string;\n /** Feed PDA written by this submit (`[\"molpha_feed\", sourceId, [signaturesRequired], submitter]`). */\n feed: Address;\n}\n\n/**\n * On-chain `Feed` (Anchor-decoded). `value` is always the signed\n * `AttestationPayload.value` (32 bytes): the oracle value itself when `valueKind` is\n * `value`, or `keccak256(rawValue)` when it is `hash` (the preimage travelled in the\n * submitting instruction). For a tolerance-mode source it is a two's-complement `int256`\n * (see `decodeInt256` / `formatInt256Decimal`).\n */\nexport interface FeedAccount {\n sourceId: number[];\n value: Uint8Array | number[];\n valueKind: { value: Record<string, never> } | { hash: Record<string, never> };\n submitter: Address;\n /** u64 unix seconds. */\n canonicalTimestamp: BN;\n signaturesRequired: number;\n signersBitmap: number[];\n registryVersion: number;\n bump: number;\n}\n\n /** Anchor-encoded `SubmitAttestationArgs` (camelCase field names). */\nexport interface SubmitAttestationArgs {\n attestation: {\n payload: {\n value: number[];\n sourceId: number[];\n registryVersion: number;\n signaturesRequired: number;\n canonicalTimestamp: BN;\n };\n signature: {\n aggSigS: number[];\n commitment: number[];\n signersBitmap: number[];\n };\n };\n /** Optional preimage when `payload.value` is `keccak256(rawValue)`. */\n rawValue: Uint8Array | null;\n coalitionKey: { x: number[]; y: number[] };\n}\n\nexport interface SubmitAttestationOptions {\n computeUnitLimit?: number;\n /**\n * Precomputed signer coalition key. When omitted, the client fetches signer `Node`\n * accounts and sums their secp256k1 keys ({@link computeCoalitionKey}).\n */\n coalitionKey?: CoalitionKey;\n /**\n * Optional value preimage (maximum 256 bytes). Its keccak256 digest must equal\n * `attestation.payload.value`; the program stores that digest with `valueKind.hash`.\n */\n rawValue?: Uint8Array;\n}\n\ninterface NodeAccount {\n secp256k1PubkeyX?: Uint8Array | number[];\n secp256k1PubkeyY?: Uint8Array | number[];\n secp256k1_pubkey_x?: Uint8Array | number[];\n secp256k1_pubkey_y?: Uint8Array | number[];\n}\n\ninterface CreateClientOpts {\n connection: SolanaConnection;\n wallet: Wallet;\n programId?: SolanaAddress;\n idl?: Idl;\n commitment?: Commitment;\n}\n\nexport class MolphaSolanaClient {\n private constructor(\n private readonly program: Program,\n private readonly provider: AnchorProvider,\n readonly programId: Address,\n ) {}\n\n static create(opts: CreateClientOpts): MolphaSolanaClient {\n const programId = toSolanaAddress(opts.programId ?? MOLPHA_PROGRAM_ADDRESS);\n const provider = new AnchorProvider(opts.connection, opts.wallet, {\n commitment: opts.commitment ?? \"confirmed\",\n });\n // Anchor reads the program id from `idl.address`; override it so the\n // caller-supplied programId always wins without mutating the vendored copy.\n const idl: Idl = { ...(opts.idl ?? MOLPHA_IDL), address: programId };\n const program = new Program(idl, provider);\n return new MolphaSolanaClient(program, provider, programId);\n }\n\n private get wallet(): Address {\n return toSolanaAddress(this.provider.wallet.publicKey);\n }\n\n /** Anchor's method/account namespaces are untyped without an IDL type param. */\n private get methods(): any {\n return this.program.methods;\n }\n private get accounts(): any {\n return this.program.account;\n }\n\n /**\n * Current registry version plus the selection inputs of that snapshot\n * (`redundancy_buffer`, `node_count`). Two account reads: `RegistryState`, then the\n * version-addressed `Registry`. Prefer this over {@link getRegistryVersion} when\n * deriving gateway selection bitmaps.\n */\n async getRegistrySelectionConfig(): Promise<Required<RegistrySelectionConfig>> {\n const state = await this.fetchRegistryState();\n const registry = await this.fetchRegistry(state.currentVersion);\n return {\n registryVersion: state.currentVersion,\n redundancyBuffer: registry.redundancyBuffer,\n nodeCount: registry.nodeCount,\n };\n }\n\n async getRegistryVersion(): Promise<number> {\n return (await this.fetchRegistryState()).currentVersion;\n }\n\n /** Read an immutable registry snapshot; defaults to the current version. */\n async readRegistry(version?: number): Promise<RegistryView> {\n const target = version ?? (await this.fetchRegistryState()).currentVersion;\n return this.fetchRegistry(target);\n }\n\n /** Fetch a plan's on-chain terms, including the USDC `subscriptionPrice` charged on `subscribe`. */\n async getPlan(plan: PlanType): Promise<PlanInfo> {\n const info = await this.readPlan(plan);\n if (!info) {\n throw new Error(`plan account not found for ${PlanType[plan] ?? plan}`);\n }\n return info;\n }\n\n /** Read a plan account, or `null` if it has not been initialized. */\n async readPlan(plan: PlanType): Promise<PlanInfo | null> {\n const account = await this.accounts.plan.fetchNullable(planPda(plan as PlanId, this.programId));\n return account ? this.decodePlan(account) : null;\n }\n\n /** Read an owner's subscription, or `null` if they have not subscribed. */\n async readSubscription(owner: SolanaAddress = this.wallet): Promise<SubscriptionInfo | null> {\n const account = await this.accounts.subscription.fetchNullable(\n subscriptionPda(owner, this.programId),\n );\n if (!account) return null;\n return {\n owner: toSolanaAddress(account.owner),\n planType: planIdFromVariant(account.planType) as unknown as PlanType,\n validUntil: BigInt(account.validUntil.toString()),\n maxRounds: BigInt(account.maxRounds.toString()),\n delegateCount: account.delegateCount,\n maxDelegates: account.maxDelegates,\n maxSigners: account.maxSigners,\n };\n }\n\n /**\n * Subscribe to a plan. This **debits USDC** from the owner: the plan's\n * `subscriptionPrice` is transferred to the protocol treasury on-chain.\n *\n * Payment is explicit and must be confirmed: pass `maxPriceUsdc` (USDC base\n * units) as the most you agree to pay. The SDK reads the live on-chain price\n * and aborts before sending the transaction if it exceeds that amount, so a\n * price change between display and confirmation can never silently overcharge.\n * The amount actually paid is returned as `pricePaid`.\n *\n * Use {@link getPlan} to display the current price to the user beforehand.\n */\n async subscribe(\n plan: PlanType,\n opts: { maxPriceUsdc: bigint | number | BN; ownerUsdc?: SolanaAddress },\n ): Promise<SubscribeResult> {\n const planId = plan as PlanId;\n const owner = this.wallet;\n const { usdcMint, treasury } = await this.fetchProtocolTokens();\n const price = await this.confirmPlanPrice(planId, opts.maxPriceUsdc, \"subscribe\");\n const ownerUsdc = opts.ownerUsdc ?? getAssociatedTokenAddressSync(usdcMint, owner);\n\n const signature = await this.methods\n .subscribe(planVariant(planId))\n .accountsPartial({\n owner,\n protocolConfig: protocolConfigPda(this.programId),\n plan: planPda(planId, this.programId),\n subscription: subscriptionPda(owner, this.programId),\n ownerUsdc,\n treasury,\n systemProgram: SYSTEM_PROGRAM_ADDRESS,\n tokenProgram: TOKEN_PROGRAM_ADDRESS,\n })\n .rpc();\n return { signature, pricePaid: price };\n }\n\n /**\n * Extend the current subscription for another period. Like {@link subscribe}\n * this **debits USDC** (the plan's `subscriptionPrice`) and requires explicit\n * payment confirmation via `maxPriceUsdc`.\n */\n async extendSubscription(\n opts: { maxPriceUsdc: bigint | number | BN; ownerUsdc?: SolanaAddress },\n ): Promise<SubscribeResult> {\n const owner = this.wallet;\n const subscription = subscriptionPda(owner, this.programId);\n const sub = await this.accounts.subscription.fetch(subscription);\n const planId = planIdFromVariant(sub.planType);\n const { usdcMint, treasury } = await this.fetchProtocolTokens();\n const price = await this.confirmPlanPrice(planId, opts.maxPriceUsdc, \"extendSubscription\");\n const ownerUsdc = opts.ownerUsdc ?? getAssociatedTokenAddressSync(usdcMint, owner);\n\n const signature = await this.methods\n .extendSubscription()\n .accountsPartial({\n owner,\n protocolConfig: protocolConfigPda(this.programId),\n subscription,\n plan: planPda(planId, this.programId),\n ownerUsdc,\n treasury,\n tokenProgram: TOKEN_PROGRAM_ADDRESS,\n })\n .rpc();\n return { signature, pricePaid: price };\n }\n\n /**\n * Read the live on-chain plan price and verify it does not exceed the amount\n * the caller agreed to pay. Returns the price (USDC base units) on success.\n */\n private async confirmPlanPrice(\n planId: PlanId,\n maxPriceUsdc: bigint | number | BN,\n method: string,\n ): Promise<bigint> {\n const max = toUsdcBaseUnits(maxPriceUsdc, \"maxPriceUsdc\");\n const plan = await this.accounts.plan.fetch(planPda(planId, this.programId));\n const price = BigInt(plan.subscriptionPrice.toString());\n if (price > max) {\n throw new Error(\n `${method}: plan price ${price} USDC base units exceeds the confirmed maximum ${max}. ` +\n \"The on-chain price may have changed — re-confirm the current price before paying.\",\n );\n }\n return price;\n }\n\n /**\n * Submit a gateway attestation via `submit_attestation`. The feed account for\n * `(sourceId, signaturesRequired, submitter)` is created on first use.\n *\n * Per the program, the instruction takes one read-only `Node` account per signer bit\n * (ascending bit order, resolved from the registry snapshot the round was signed\n * against) and a {@link CoalitionKey} argument. Unless `opts.coalitionKey` is given the\n * SDK fetches those `Node` accounts and sums their secp256k1 keys client-side\n * (`computeCoalitionKey`); the program only checks the key, so a wrong one fails the\n * transaction and nothing else.\n *\n * `opts.rawValue` is for values longer than 32 bytes: the signed `payload.value` must be\n * `keccak256(rawValue)`; {@link buildSubmitAttestationArgs} validates that before send.\n */\n async submitAttestation(\n attestation: Attestation,\n opts?: SubmitAttestationOptions,\n ): Promise<SubmitResult> {\n const { payload, signature: schnorr } = attestation;\n const sourceId = toFixedBytes(payload.sourceId, 32, \"sourceId\");\n const submitter = this.wallet;\n const registry = await this.fetchRegistry(payload.registryVersion);\n const remaining = resolveRemainingAccounts(schnorr.signersBitmap, registry);\n assertSignerCount(remaining.length, payload.signaturesRequired, registry);\n const coalitionKey =\n opts?.coalitionKey ?? (await this.computeSignerCoalitionKey(remaining, registry));\n const feed = feedPda(sourceId, payload.signaturesRequired, submitter, this.programId);\n const cuIx = setComputeUnitLimit(opts?.computeUnitLimit ?? DEFAULT_COMPUTE_UNIT_LIMIT);\n\n const signature = await this.methods\n .submitAttestation(\n buildSubmitAttestationArgs(attestation, coalitionKey, opts?.rawValue),\n )\n .accountsPartial({\n submitter,\n registry: registryPda(payload.registryVersion, this.programId),\n feed,\n protocolConfig: protocolConfigPda(this.programId),\n systemProgram: SYSTEM_PROGRAM_ADDRESS,\n })\n .remainingAccounts(remaining)\n .preInstructions([cuIx])\n .rpc();\n return { signature, feed };\n }\n\n /** Sum of the signers' keys, read from their on-chain `Node` accounts (one batched fetch). */\n private async computeSignerCoalitionKey(\n remaining: SolanaAccountMeta[],\n registry: RegistryView,\n ): Promise<CoalitionKey> {\n const accounts: Array<NodeAccount | null> = await this.accounts.node.fetchMultiple(\n remaining.map((meta) => meta.pubkey),\n );\n const keys = accounts.map((account, i) => {\n if (!account) {\n throw new Error(\n `Node account ${remaining[i]!.pubkey.toBase58()} (registry ${registry.version}) does not exist`,\n );\n }\n return {\n x: nodeCoordinate(account, \"secp256k1PubkeyX\", \"secp256k1_pubkey_x\"),\n y: nodeCoordinate(account, \"secp256k1PubkeyY\", \"secp256k1_pubkey_y\"),\n };\n });\n return computeCoalitionKey(keys);\n }\n\n /**\n * Read the feed written by `submitter` (default: this wallet) for\n * `(sourceId, signaturesRequired)`, or `null` before its first submit.\n */\n async readFeed(\n sourceId: string,\n signaturesRequired: number,\n submitter: SolanaAddress = this.wallet,\n ): Promise<FeedAccount | null> {\n const feed = feedPda(\n toFixedBytes(sourceId, 32, \"sourceId\"),\n signaturesRequired,\n submitter,\n this.programId,\n );\n return (await this.accounts.feed.fetchNullable(feed)) as FeedAccount | null;\n }\n\n /**\n * Authenticate gateway-provided private API encryption keys against the\n * on-chain Node accounts of the round's registry snapshot (`registry.nodes[index]`).\n */\n async verifyNodeKeysForPrivateApi(args: NodeKeyVerifierArgs): Promise<void> {\n const registry = await this.fetchRegistry(args.registryVersion);\n const selectedNodes = selectedNodesForVerifier(args);\n\n await Promise.all(\n selectedNodes.map(async (node) => {\n const nodeAddress = registry.nodes[node.index];\n if (node.index >= registry.nodeCount || nodeAddress === undefined) {\n throw new Error(\n `Gateway selected node ${node.index} is outside registry ${registry.version} node_count ${registry.nodeCount}`,\n );\n }\n const account = await this.fetchNodeAccount(nodeAddress, node.index);\n const onChainKey = secp256k1PublicKeyFromCoordinates(\n nodeCoordinate(account, \"secp256k1PubkeyX\", \"secp256k1_pubkey_x\"),\n nodeCoordinate(account, \"secp256k1PubkeyY\", \"secp256k1_pubkey_y\"),\n `Node(${nodeAddress}) secp256k1 public key`,\n );\n const gatewayKey = normalizeSecp256k1PublicKeyHex(\n node.signingKey,\n `Gateway selected node ${node.index} signingKey`,\n );\n if (gatewayKey !== onChainKey) {\n throw new Error(\n `Gateway selected node ${node.index} signingKey does not match on-chain Node(${nodeAddress})`,\n );\n }\n }),\n );\n }\n\n private decodePlan(account: {\n planType: Record<string, unknown>;\n subscriptionPrice: { toString(): string };\n maxSigners: number;\n maxDelegates: number;\n maxRounds: { toString(): string };\n privateApiEnabled: boolean;\n isActive: boolean;\n }): PlanInfo {\n return {\n planType: planIdFromVariant(account.planType) as unknown as PlanType,\n subscriptionPrice: BigInt(account.subscriptionPrice.toString()),\n maxSigners: account.maxSigners,\n maxDelegates: account.maxDelegates,\n maxRounds: BigInt(account.maxRounds.toString()),\n privateApiEnabled: account.privateApiEnabled,\n isActive: account.isActive,\n };\n }\n\n private async fetchRegistryState(): Promise<RegistryStateView> {\n const state = await this.accounts.registryState.fetch(registryStatePda(this.programId));\n return {\n currentVersion: state.currentVersion,\n nextVersion: state.nextVersion,\n };\n }\n\n private async fetchRegistry(version: number): Promise<RegistryView> {\n const registry = await this.accounts.registry.fetch(registryPda(version, this.programId));\n const nodeCount: number = registry.nodeCount;\n const nodes = (registry.nodes as Array<Uint8Array | number[]>)\n .slice(0, nodeCount)\n .map((entry) => addressFromBytes(Uint8Array.from(entry)));\n return {\n version: registry.version,\n nodeCount,\n redundancyBuffer: registry.redundancyBuffer,\n nodes,\n graceActiveUntil: BigInt(registry.graceActiveUntil.toString()),\n activeFrom: BigInt(registry.activeFrom.toString()),\n };\n }\n\n private async fetchNodeAccount(\n nodeAddress: Address,\n selectedNodeIndex: number,\n ): Promise<NodeAccount> {\n try {\n return await this.accounts.node.fetch(nodeAddress);\n } catch (err) {\n const detail = err instanceof Error ? err.message : String(err);\n throw new Error(\n `Failed to fetch on-chain Node(${nodeAddress}) for selected node ${selectedNodeIndex}: ${detail}`,\n );\n }\n }\n\n /** `usdc_mint` from `ProtocolConfig`; the treasury is its ATA owned by the config PDA. */\n private async fetchProtocolTokens(): Promise<{ usdcMint: Address; treasury: Address }> {\n const protocolConfig = protocolConfigPda(this.programId);\n const config = await this.accounts.protocolConfig.fetch(protocolConfig);\n const usdcMint = toSolanaAddress(config.usdcMint);\n return {\n usdcMint,\n treasury: getAssociatedTokenAddressSync(usdcMint, protocolConfig),\n };\n }\n}\n\n/**\n * Build the Anchor `SubmitAttestationArgs` for a gateway result: `{ attestation: { payload,\n * signature }, rawValue, coalitionKey }`. `coalitionKey` is the affine sum of the signers'\n * keys (see `computeCoalitionKey`).\n */\nexport function buildSubmitAttestationArgs(\n attestation: Attestation,\n coalitionKey: CoalitionKey,\n rawValue?: Uint8Array | null,\n): SubmitAttestationArgs {\n const { payload, signature } = attestation;\n const value = toFixedBytes(payload.value, 32, \"payload.value\");\n if (rawValue && rawValue.length > 256) {\n throw new RangeError(`rawValue must be at most 256 bytes, got ${rawValue.length}`);\n }\n if (rawValue && bytesToHex(keccak_256(rawValue)) !== bytesToHex(value)) {\n throw new Error(\"rawValue keccak256 digest does not match attestation.payload.value\");\n }\n return {\n attestation: {\n payload: {\n value: Array.from(toFixedBytes(payload.value, 32, \"payload.value\")),\n sourceId: Array.from(toFixedBytes(payload.sourceId, 32, \"sourceId\")),\n registryVersion: payload.registryVersion,\n signaturesRequired: payload.signaturesRequired,\n canonicalTimestamp: new BN(payload.canonicalTimestamp),\n },\n signature: {\n aggSigS: Array.from(toFixedBytes(signature.s, 32, \"signature.s\")),\n commitment: Array.from(toFixedBytes(signature.commitmentAddr, 20, \"signature.commitmentAddr\")),\n signersBitmap: Array.from(toFixedBytes(signature.signersBitmap, 32, \"signature.signersBitmap\")),\n },\n },\n rawValue: rawValue ? toAnchorBytes(rawValue) : null,\n coalitionKey: {\n x: Array.from(toFixedBytes(coalitionKey.x, 32, \"coalitionKey.x\")),\n y: Array.from(toFixedBytes(coalitionKey.y, 32, \"coalitionKey.y\")),\n },\n };\n}\n\n/**\n * Mirror the program's signer-count bounds (`verify_attestation_core`):\n * `signaturesRequired <= popcount <= signaturesRequired + redundancyBuffer`.\n */\nfunction assertSignerCount(\n signerCount: number,\n signaturesRequired: number,\n registry: RegistryView,\n): void {\n if (signerCount < signaturesRequired) {\n throw new Error(\n `QuorumBelowThreshold: ${signerCount} signers < signaturesRequired ${signaturesRequired}`,\n );\n }\n if (signerCount > signaturesRequired + registry.redundancyBuffer) {\n throw new Error(\n `CreditedExceedsSelection: ${signerCount} signers > signaturesRequired ${signaturesRequired} + redundancy buffer ${registry.redundancyBuffer} of registry ${registry.version}`,\n );\n }\n}\n\n/** Browser-safe byte array accepted by Anchor's Buffer-oriented `bytes` Borsh layout. */\nfunction toAnchorBytes(bytes: Uint8Array): Uint8Array {\n const out = Uint8Array.from(bytes) as Uint8Array & {\n copy(target: Uint8Array, targetStart?: number): number;\n };\n out.copy = (target, targetStart = 0) => {\n target.set(out, targetStart);\n return out.length;\n };\n return out;\n}\n\n/** Normalize a confirmed USDC amount (base units) to `bigint`, rejecting non-integers. */\nfunction toUsdcBaseUnits(amount: bigint | number | BN, label: string): bigint {\n if (typeof amount === \"bigint\") {\n if (amount < 0n) throw new Error(`${label} must be non-negative, got ${amount}`);\n return amount;\n }\n if (typeof amount === \"number\") {\n if (!Number.isInteger(amount) || amount < 0) {\n throw new Error(`${label} must be a non-negative integer of USDC base units, got ${amount}`);\n }\n return BigInt(amount);\n }\n return BigInt(amount.toString());\n}\n\nfunction nodeCoordinate(\n account: NodeAccount,\n camelCaseField: \"secp256k1PubkeyX\" | \"secp256k1PubkeyY\",\n snakeCaseField: \"secp256k1_pubkey_x\" | \"secp256k1_pubkey_y\",\n): Uint8Array {\n const value = account[camelCaseField] ?? account[snakeCaseField];\n if (!(value instanceof Uint8Array) && !Array.isArray(value)) {\n throw new Error(`Node account is missing ${camelCaseField}`);\n }\n return toFixedBytes(Uint8Array.from(value), 32, `Node.${camelCaseField}`);\n}\n\nfunction selectedNodesForVerifier(args: NodeKeyVerifierArgs): Node[] {\n if (args.selectedIndexes.length === 0) {\n throw new Error(\"Private API node-key verification requires at least one selected index\");\n }\n if (args.selectedNodes.length !== args.selectedIndexes.length) {\n throw new Error(\n `Private API node-key verification expected ${args.selectedIndexes.length} selected nodes, got ${args.selectedNodes.length}`,\n );\n }\n\n const expected = new Set<number>();\n for (const index of args.selectedIndexes) {\n if (!Number.isInteger(index) || index < 0) {\n throw new Error(`Private API selected index must be a non-negative integer: ${index}`);\n }\n if (expected.has(index)) {\n throw new Error(`Private API selected index is duplicated: ${index}`);\n }\n expected.add(index);\n }\n\n const byIndex = new Map<number, Node>();\n for (const node of args.selectedNodes) {\n if (!Number.isInteger(node.index) || node.index < 0) {\n throw new Error(\n `Private API selected node index must be a non-negative integer: ${node.index}`,\n );\n }\n if (!expected.has(node.index)) {\n throw new Error(`Private API selected node ${node.index} was not requested`);\n }\n if (byIndex.has(node.index)) {\n throw new Error(`Private API selected node index is duplicated: ${node.index}`);\n }\n byIndex.set(node.index, node);\n }\n\n return args.selectedIndexes.map((index) => {\n const node = byIndex.get(index);\n if (!node) {\n throw new Error(`Private API selected node is missing for index: ${index}`);\n }\n return node;\n });\n}\n","/**\n * Unified wallet surface: Anchor txs + optional gateway authSig signing.\n */\nimport type { Wallet } from \"@anchor-lang/core\";\nimport { ed25519 } from \"@noble/curves/ed25519.js\";\nimport type { Signer } from \"./core/types.js\";\nimport type { SolanaKeypair } from \"./solana/kit.js\";\n\n/** Anchor `Wallet` plus optional gateway auth override. */\nexport type MolphaWallet = Wallet & {\n /**\n * Signs gateway request-auth hashes (`hashRequestAuth`). When omitted, derived from Anchor\n * `Wallet.payer` when the keypair secret is available (Node `Wallet`, etc.).\n */\n signAuthMessage?: Signer;\n};\n\nconst isKeypair = (value: unknown): value is SolanaKeypair =>\n typeof value === \"object\" &&\n value !== null &&\n \"secretKey\" in value &&\n value.secretKey instanceof Uint8Array;\n\n/** ed25519 gateway signer from a Solana keypair's 32-byte seed. */\nexport function signerFromKeypair(keypair: SolanaKeypair): Signer {\n const seed = keypair.secretKey.slice(0, 32);\n return async (message: Uint8Array): Promise<Uint8Array> => ed25519.sign(message, seed);\n}\n\n/** Resolve the gateway auth signer for a Molpha wallet, if available. */\nexport function gatewaySignerFromWallet(wallet: Wallet): Signer | undefined {\n const molpha = wallet as MolphaWallet;\n if (molpha.signAuthMessage) return molpha.signAuthMessage;\n if (\"payer\" in wallet && isKeypair(wallet.payer)) return signerFromKeypair(wallet.payer);\n return undefined;\n}\n","/**\n * Attestation message hash — the digest the node coalition Schnorr-signs and every verifier\n * (Solana program, EVM `VerifierLib.constructMessage`, Starknet) recomputes:\n *\n * message = keccak256(\n * keccak256(\"MOLPHA_MESSAGE_V1\") || value || sourceId || u32be(registryVersion) ||\n * u8(signaturesRequired) || u64be(canonicalTimestamp) || signersBitmap\n * )\n *\n * The preimage is 141 bytes. Widths follow the Rust, Solidity, Solana, and node encoders.\n */\nimport { keccak_256 } from \"@noble/hashes/sha3.js\";\nimport { concatBytes, toFixedBytes, u8, u32be, u64be, utf8 } from \"./encoding.js\";\nimport type { Attestation } from \"./types.js\";\n\n/** `keccak256(\"MOLPHA_MESSAGE_V1\")` domain separator. */\nexport const MESSAGE_PREFIX: Uint8Array = keccak_256(utf8(\"MOLPHA_MESSAGE_V1\"));\n\nexport interface AttestationMessageFields {\n /** 32-byte source id (hex or bytes). */\n sourceId: string | Uint8Array;\n registryVersion: number;\n /** Encoded as a single byte (`uint8`); throws `RangeError` outside `0..255`. */\n signaturesRequired: number;\n /** 32-byte big-endian signers bitmap (hex or bytes). */\n signersBitmap: string | Uint8Array;\n /** 32-byte packed value (hex or bytes). */\n value: string | Uint8Array;\n /** Unix seconds (u64). */\n canonicalTimestamp: number | bigint;\n}\n\n/** Compute the attestation message hash (32 bytes). */\nexport function attestationMessageHash(fields: AttestationMessageFields): Uint8Array {\n if (!Number.isInteger(fields.signaturesRequired) || fields.signaturesRequired < 0 || fields.signaturesRequired > 255) {\n throw new RangeError(`signaturesRequired out of u8 range: ${fields.signaturesRequired}`);\n }\n return keccak_256(\n concatBytes(\n MESSAGE_PREFIX,\n toFixedBytes(fields.value, 32, \"value\"),\n toFixedBytes(fields.sourceId, 32, \"sourceId\"),\n u32be(fields.registryVersion),\n u8(fields.signaturesRequired),\n u64be(fields.canonicalTimestamp),\n toFixedBytes(fields.signersBitmap, 32, \"signersBitmap\"),\n ),\n );\n}\n\n/** Message hash of a completed gateway attestation (`payload.value` is the signed word). */\nexport function attestationMessageHashFromAttestation(attestation: Attestation): Uint8Array {\n const { payload, signature } = attestation;\n return attestationMessageHash({\n sourceId: payload.sourceId,\n registryVersion: payload.registryVersion,\n signaturesRequired: payload.signaturesRequired,\n signersBitmap: signature.signersBitmap,\n value: payload.value,\n canonicalTimestamp: payload.canonicalTimestamp,\n });\n}\n","/**\n * Result codes returned by Molpha's stateless verifier contracts (`verify` on EVM and\n * Starknet). Shared across VMs: the same attestation yields the same code on every chain.\n *\n * Append-only — never renumber. Mirrors `VerifyCodes.sol` in `molpha-core-contracts` and\n * `verify_codes.cairo` in `molpha-starknet`. Two codes belong to mechanisms the verifiers\n * do not implement; they are kept so the numbering can never shift under them.\n */\nexport const VERIFY_CODES = {\n OK: 0,\n /** Reserved. Never returned. */\n FEED_WITNESS: 1,\n /** The payload's `registryVersion` does not exist on this verifier. */\n BAD_REGISTRY_VERSION: 2,\n /** Structurally invalid input, or a `canonicalTimestamp` in the future when `maxAge != 0`. */\n MALFORMED: 3,\n /** `canonicalTimestamp` predates the registry version's activation. */\n NOT_YET_ACTIVE: 4,\n /** The registry version was superseded more than the grace window before `canonicalTimestamp`. */\n VERSION_EXPIRED: 5,\n /** Reserved. Never returned. */\n COMPROMISED_QUORUM: 6,\n /** The signer set is not within the round's derived selection group. */\n BAD_QUORUM: 7,\n /** The signers' aggregate public key is the point at infinity. */\n BAD_AGGREGATE: 8,\n /** The aggregate Schnorr signature does not verify. */\n BAD_SIGNATURE: 9,\n /** Older than the caller's `maxAge`. */\n STALE: 10,\n} as const;\n\nexport type VerifyCodeName = keyof typeof VERIFY_CODES;\nexport type VerifyCode = (typeof VERIFY_CODES)[VerifyCodeName];\n\nconst NAMES_BY_CODE: ReadonlyMap<number, VerifyCodeName> = new Map(\n (Object.entries(VERIFY_CODES) as [VerifyCodeName, VerifyCode][]).map(([name, code]) => [\n code,\n name,\n ]),\n);\n\n/**\n * Name of a verifier result code, or `undefined` for a code this SDK version does not know.\n * Codes are append-only, so an unknown code is a newer verifier, not a malformed response.\n */\nexport function verifyCodeName(code: number): VerifyCodeName | undefined {\n return NAMES_BY_CODE.get(code);\n}\n","/**\n * Molpha EVM verifier ABI: `verify(Attestation, uint64 maxAge) -> (bool, uint8)` plus every\n * read-only registry view on `IVerifier`. Owner-only mutators (`addNode`, `removeNode`,\n * `setRedundancyBuffer`) and `Ownable` plumbing are deliberately left out.\n *\n * Mirrors `IVerifier.sol` in `molpha-core-contracts`. Struct member order is ABI-significant\n * and equals the signed message order, so it is not the flat gateway field order on `Attestation`.\n */\nexport const MOLPHA_VERIFIER_ABI = [\n {\n type: \"function\",\n name: \"verify\",\n stateMutability: \"view\",\n inputs: [\n {\n name: \"attestation\",\n type: \"tuple\",\n internalType: \"struct IVerifier.Attestation\",\n components: [\n {\n name: \"payload\",\n type: \"tuple\",\n internalType: \"struct IVerifier.AttestationPayload\",\n components: [\n { name: \"value\", type: \"bytes32\", internalType: \"bytes32\" },\n { name: \"sourceId\", type: \"bytes32\", internalType: \"bytes32\" },\n { name: \"registryVersion\", type: \"uint32\", internalType: \"uint32\" },\n { name: \"signaturesRequired\", type: \"uint8\", internalType: \"uint8\" },\n { name: \"canonicalTimestamp\", type: \"uint64\", internalType: \"uint64\" },\n ],\n },\n {\n name: \"signature\",\n type: \"tuple\",\n internalType: \"struct IVerifier.SchnorrSignature\",\n components: [\n { name: \"signature\", type: \"bytes32\", internalType: \"bytes32\" },\n { name: \"commitment\", type: \"address\", internalType: \"address\" },\n { name: \"signersBitmap\", type: \"uint256\", internalType: \"uint256\" },\n ],\n },\n ],\n },\n { name: \"maxAge\", type: \"uint64\", internalType: \"uint64\" },\n ],\n outputs: [\n { name: \"success\", type: \"bool\", internalType: \"bool\" },\n { name: \"code\", type: \"uint8\", internalType: \"uint8\" },\n ],\n },\n {\n type: \"function\",\n name: \"getRegistryVersion\",\n stateMutability: \"view\",\n inputs: [],\n outputs: [{ name: \"registryVersion\", type: \"uint256\", internalType: \"uint256\" }],\n },\n {\n type: \"function\",\n name: \"getTotalNodes\",\n stateMutability: \"view\",\n inputs: [],\n outputs: [{ name: \"totalNodes\", type: \"uint256\", internalType: \"uint256\" }],\n },\n {\n type: \"function\",\n name: \"redundancyBuffer\",\n stateMutability: \"view\",\n inputs: [],\n outputs: [{ name: \"\", type: \"uint256\", internalType: \"uint256\" }],\n },\n {\n type: \"function\",\n name: \"getRegistryRoot\",\n stateMutability: \"view\",\n inputs: [],\n outputs: [{ name: \"root\", type: \"bytes32\", internalType: \"bytes32\" }],\n },\n {\n type: \"function\",\n name: \"getRegistryRoot\",\n stateMutability: \"view\",\n inputs: [{ name: \"registryVersion\", type: \"uint256\", internalType: \"uint256\" }],\n outputs: [{ name: \"root\", type: \"bytes32\", internalType: \"bytes32\" }],\n },\n {\n type: \"function\",\n name: \"getRegistryPointer\",\n stateMutability: \"view\",\n inputs: [],\n outputs: [{ name: \"registryPointer\", type: \"address\", internalType: \"address\" }],\n },\n {\n type: \"function\",\n name: \"getRegistryPointer\",\n stateMutability: \"view\",\n inputs: [{ name: \"registryVersion\", type: \"uint256\", internalType: \"uint256\" }],\n outputs: [{ name: \"registryPointer\", type: \"address\", internalType: \"address\" }],\n },\n {\n type: \"function\",\n name: \"activatesAt\",\n stateMutability: \"view\",\n inputs: [{ name: \"registryVersion\", type: \"uint256\", internalType: \"uint256\" }],\n outputs: [{ name: \"ts\", type: \"uint256\", internalType: \"uint256\" }],\n },\n {\n type: \"function\",\n name: \"retiredAt\",\n stateMutability: \"view\",\n inputs: [{ name: \"registryVersion\", type: \"uint256\", internalType: \"uint256\" }],\n outputs: [{ name: \"ts\", type: \"uint256\", internalType: \"uint256\" }],\n },\n {\n type: \"function\",\n name: \"isLatestVersion\",\n stateMutability: \"view\",\n inputs: [{ name: \"registryVersion\", type: \"uint256\", internalType: \"uint256\" }],\n outputs: [{ name: \"latest\", type: \"bool\", internalType: \"bool\" }],\n },\n {\n type: \"function\",\n name: \"nodeStatus\",\n stateMutability: \"view\",\n inputs: [{ name: \"node\", type: \"address\", internalType: \"address\" }],\n outputs: [{ name: \"\", type: \"uint8\", internalType: \"uint8\" }],\n },\n {\n type: \"function\",\n name: \"isNode\",\n stateMutability: \"view\",\n inputs: [{ name: \"node\", type: \"address\", internalType: \"address\" }],\n outputs: [{ name: \"\", type: \"bool\", internalType: \"bool\" }],\n },\n /** Thrown by the per-version views for a version that was never published. `verify` never reverts. */\n { type: \"error\", name: \"InvalidRegistryVersion\", inputs: [] },\n] as const;\n","/**\n * Deployed Molpha verifier contract address on EVM chains.\n * Deployed via CREATE2 for the same address on every supported chain.\n */\n\n/** Supported EVM testnet identifiers (chain selection only). */\nexport type MolphaEvmNetwork =\n | \"evm-sepolia\"\n | \"arbitrum-sepolia\"\n | \"avalanche-fuji\"\n | \"bsc-testnet\";\n\n/** CREATE2 Molpha verifier address — identical on all supported EVM chains. */\nexport const MOLPHA_VERIFIER_ADDRESS =\n \"0xE1fd792b7E54e0C8F0Cd1c8055E446ff36d233eB\" as const;\n","/**\n * EVM verifier helpers — framework-agnostic builders for\n * `verify(Attestation attestation, uint64 maxAge) returns (bool success, uint8 code)` on\n * deployed Molpha verifier contracts, plus a raw calldata encoder and a result decoder.\n *\n * Nothing here depends on ethers or viem. The struct objects use the Solidity member names\n * and viem's primitive types (`uint64`/`uint256` as `bigint`, `uint32`/`uint8` as `number`),\n * so they pass straight into `readContract` with `MOLPHA_VERIFIER_ABI` or into an ethers\n * `Contract`; `encodeEvmVerifyCalldata` produces the bytes for a raw `eth_call`.\n */\nimport {\n bigIntFromBytesBe,\n bytesToHex,\n concatBytes,\n hexToBytes,\n toFixedBytes,\n u256beFromBigInt,\n} from \"../core/encoding.js\";\nimport type { Attestation } from \"../core/types.js\";\nimport { VERIFY_CODES, verifyCodeName, type VerifyCodeName } from \"../core/verifyCodes.js\";\n\n/**\n * `IVerifier.AttestationPayload` — the signed half of an attestation.\n *\n * Member order is the order of the signed message preimage and of the ABI tuple, so it is\n * load bearing — it is not the flat gateway field order on {@link Attestation}.\n */\nexport interface EvmAttestationPayload {\n /** `bytes32` packed value. */\n value: `0x${string}`;\n /** `bytes32` source id. */\n sourceId: `0x${string}`;\n /** `uint32`. */\n registryVersion: number;\n /** `uint8`. */\n signaturesRequired: number;\n /** `uint64`, unix seconds. */\n canonicalTimestamp: bigint;\n}\n\n/** `IVerifier.SchnorrSignature`. */\nexport interface EvmSchnorrSignature {\n /** `bytes32` Schnorr scalar `s`. */\n signature: `0x${string}`;\n /** `address` of the nonce point `R`. */\n commitment: `0x${string}`;\n /** `uint256` signers bitmap; bit `i` is node `i` of the registry version. */\n signersBitmap: bigint;\n}\n\n/** `IVerifier.Attestation`. */\nexport interface EvmAttestation {\n payload: EvmAttestationPayload;\n signature: EvmSchnorrSignature;\n}\n\n/** Positional arguments for `verify(attestation, maxAge)`. */\nexport interface EvmVerifierArgs {\n attestation: EvmAttestation;\n /** Freshness window in seconds (`uint64`). `0n` disables the check. */\n maxAge: bigint;\n}\n\nexport interface BuildEvmVerifierArgsOptions {\n /**\n * Freshness window in seconds. The verifier rejects the attestation with `STALE` when it\n * is older than this, and as `MALFORMED` when it is dated in the future.\n *\n * Required on purpose. `0` disables the check entirely, and that is not a neutral\n * default: the verifier is stateless, so without a window it accepts a correctly signed\n * attestation forever. Pass `0` only when the consuming contract enforces freshness or\n * ordering itself.\n */\n maxAge: number | bigint;\n}\n\n/** Decoded `verify` return value. */\nexport interface EvmVerifyResult {\n success: boolean;\n /** Raw result code — see `VERIFY_CODES`. */\n code: number;\n /** Name of `code`, or `\"UNKNOWN\"` for a code newer than this SDK. */\n reason: VerifyCodeName | \"UNKNOWN\";\n}\n\n/**\n * `bytes4(keccak256(\"verify(((bytes32,bytes32,uint32,uint8,uint64),(bytes32,address,uint256)),uint64)\"))`.\n */\nconst VERIFY_SELECTOR = hexToBytes(\"67e2907b\");\n\nconst U8_MAX = 0xffn;\nconst U32_MAX = 0xffff_ffffn;\nconst U64_MAX = 0xffff_ffff_ffff_ffffn;\nconst U256_MAX = (1n << 256n) - 1n;\n\nfunction strip0x(value: string): string {\n return value.startsWith(\"0x\") || value.startsWith(\"0X\") ? value.slice(2) : value;\n}\n\nfunction stripOuterQuotes(value: string): string {\n const trimmed = value.trim();\n if (\n (trimmed.startsWith(\"'\") && trimmed.endsWith(\"'\")) ||\n (trimmed.startsWith('\"') && trimmed.endsWith('\"'))\n ) {\n return trimmed.slice(1, -1);\n }\n return trimmed;\n}\n\n/**\n * Normalize hex to a fixed-size `0x`-prefixed value.\n * Accepts optional `0x` prefix and surrounding quotes.\n */\nexport function toFixedHex(value: string, bytes: number, label: string): `0x${string}` {\n const clean = strip0x(stripOuterQuotes(value)).toLowerCase();\n if (clean.length !== bytes * 2) {\n throw new RangeError(\n `${label}: expected ${bytes} bytes (${bytes * 2} hex chars), got ${clean.length / 2}`,\n );\n }\n return `0x${clean}`;\n}\n\n/** Convert a 32-byte hex bitmap to a `uint256` bigint (big-endian). */\nexport function signersBitmapToUint256(value: string): bigint {\n const bytes = toFixedBytes(toFixedHex(value, 32, \"signersBitmap\"), 32, \"signersBitmap\");\n return bigIntFromBytesBe(bytes);\n}\n\n/** Decimal string form of the signers bitmap — useful for JSON logging. */\nexport function signersBitmapToDecimal(value: string): string {\n return signersBitmapToUint256(value).toString();\n}\n\n/**\n * Checks an integer fits its Solidity type. Out-of-range calldata does not reach `verify`\n * at all: the ABI decoder reverts on dirty high bits instead of returning a result code.\n * Catching it here keeps that failure in the caller's process.\n */\nfunction assertUint(value: number, max: bigint, label: string): number {\n if (!Number.isSafeInteger(value) || value < 0 || BigInt(value) > max) {\n throw new RangeError(`${label}: expected an integer in 0..${max}, got ${value}`);\n }\n return value;\n}\n\nfunction assertBigUint(value: number | bigint, max: bigint, label: string): bigint {\n if (typeof value === \"number\" && !Number.isSafeInteger(value)) {\n throw new RangeError(`${label}: expected an integer in 0..${max}, got ${value}`);\n }\n const n = BigInt(value);\n if (n < 0n || n > max) {\n throw new RangeError(`${label}: expected an integer in 0..${max}, got ${value}`);\n }\n return n;\n}\n\n/** Left-pad a fixed-width value into one 32-byte ABI word. */\nfunction word(value: string, bytes: number, label: string): Uint8Array {\n const out = new Uint8Array(32);\n out.set(toFixedBytes(toFixedHex(value, bytes, label), bytes, label), 32 - bytes);\n return out;\n}\n\n/**\n * Build the `verify(attestation, maxAge)` arguments from a gateway result.\n *\n * ```ts\n * const { attestation, maxAge } = buildEvmVerifierArgs(result, { maxAge: 300 });\n * await client.readContract({ abi: MOLPHA_VERIFIER_ABI, functionName: \"verify\", args: [attestation, maxAge], ... });\n * ```\n */\nexport function buildEvmVerifierArgs(\n attestation: Attestation,\n options: BuildEvmVerifierArgsOptions,\n): EvmVerifierArgs {\n const { payload: signed, signature: sig } = attestation;\n const payload: EvmAttestationPayload = {\n value: toFixedHex(signed.value, 32, \"payload.value\"),\n sourceId: toFixedHex(signed.sourceId, 32, \"sourceId\"),\n registryVersion: assertUint(signed.registryVersion, U32_MAX, \"registryVersion\"),\n signaturesRequired: assertUint(signed.signaturesRequired, U8_MAX, \"signaturesRequired\"),\n canonicalTimestamp: assertBigUint(signed.canonicalTimestamp, U64_MAX, \"canonicalTimestamp\"),\n };\n\n const signature: EvmSchnorrSignature = {\n signature: toFixedHex(sig.s, 32, \"signature\"),\n commitment: toFixedHex(sig.commitmentAddr, 20, \"commitment\"),\n signersBitmap: signersBitmapToUint256(sig.signersBitmap),\n };\n\n return {\n attestation: { payload, signature },\n maxAge: assertBigUint(options.maxAge, U64_MAX, \"maxAge\"),\n };\n}\n\n/**\n * ABI calldata for `verify(attestation, maxAge)`: the 4-byte selector followed by nine\n * 32-byte words. Both structs are static, so they encode inline with no offsets:\n *\n * `value, sourceId, registryVersion, signaturesRequired, canonicalTimestamp, signature,\n * commitment, signersBitmap, maxAge`\n *\n * For a raw `eth_call` (`{ to: verifier, data }`).\n */\nexport function encodeEvmVerifyCalldata(args: EvmVerifierArgs): `0x${string}` {\n const { payload, signature } = args.attestation;\n const data = concatBytes(\n VERIFY_SELECTOR,\n word(payload.value, 32, \"value\"),\n word(payload.sourceId, 32, \"sourceId\"),\n u256beFromBigInt(BigInt(assertUint(payload.registryVersion, U32_MAX, \"registryVersion\"))),\n u256beFromBigInt(\n BigInt(assertUint(payload.signaturesRequired, U8_MAX, \"signaturesRequired\")),\n ),\n u256beFromBigInt(assertBigUint(payload.canonicalTimestamp, U64_MAX, \"canonicalTimestamp\")),\n word(signature.signature, 32, \"signature\"),\n word(signature.commitment, 20, \"commitment\"),\n u256beFromBigInt(assertBigUint(signature.signersBitmap, U256_MAX, \"signersBitmap\")),\n u256beFromBigInt(assertBigUint(args.maxAge, U64_MAX, \"maxAge\")),\n );\n return `0x${bytesToHex(data)}`;\n}\n\n/**\n * Decode the `(bool, uint8)` returned by `verify`.\n *\n * Accepts the raw 64-byte return data from `eth_call`, or the tuple an ABI-aware client\n * decodes (viem `readContract` returns `[true, 0]`; an ethers `Result` indexes the same way).\n * Throws when the two halves disagree (`success` with a non-zero code, or failure with\n * `OK`), which means the call did not reach a Molpha verifier of this interface.\n */\nexport function parseEvmVerifyResult(\n result:\n | string\n | { readonly 0: boolean | number | bigint; readonly 1: number | bigint },\n): EvmVerifyResult {\n let successWord: bigint;\n let codeWord: bigint;\n\n if (typeof result === \"string\") {\n const clean = strip0x(result.trim());\n if (!/^[0-9a-fA-F]*$/.test(clean) || clean.length !== 128) {\n throw new RangeError(\n `verify result: expected 64 bytes of return data, got ${JSON.stringify(result)}`,\n );\n }\n successWord = BigInt(`0x${clean.slice(0, 64)}`);\n codeWord = BigInt(`0x${clean.slice(64)}`);\n } else {\n const success = result[0];\n const code = result[1];\n successWord = typeof success === \"boolean\" ? (success ? 1n : 0n) : BigInt(success);\n if (typeof code === \"number\" && !Number.isSafeInteger(code)) {\n throw new RangeError(`verify result: code must fit uint8, got ${code}`);\n }\n codeWord = BigInt(code);\n }\n\n if (successWord !== 0n && successWord !== 1n) {\n throw new RangeError(`verify result: success must be 0 or 1, got ${successWord}`);\n }\n if (codeWord < 0n || codeWord > U8_MAX) {\n throw new RangeError(`verify result: code must fit uint8, got ${codeWord}`);\n }\n\n const success = successWord === 1n;\n const code = Number(codeWord);\n if (success !== (code === VERIFY_CODES.OK)) {\n throw new Error(\n `verify result is inconsistent: success=${success} with code ${code}; ` +\n \"the call did not reach a Molpha verifier with this interface\",\n );\n }\n\n return { success, code, reason: verifyCodeName(code) ?? \"UNKNOWN\" };\n}\n","/**\n * Deployed Molpha verifier contract addresses on Starknet testnets.\n */\n\n/** Supported Starknet testnet identifiers. */\nexport type MolphaStarknetNetwork = \"starknet-sepolia\";\n\n/** Deployed verifier address on Starknet Sepolia. */\nexport const MOLPHA_VERIFIER_STARKNET_SEPOLIA =\n \"0x0378df4dbecf8f0c7daa801282932f7011c7a5e5773bab9eaf68f5fa5e7530ef\" as const;\n\n/** Network id -> deployed verifier address. */\nexport const MOLPHA_VERIFIER_STARKNET_ADDRESSES: Record<\n MolphaStarknetNetwork,\n `0x${string}`\n> = {\n \"starknet-sepolia\": MOLPHA_VERIFIER_STARKNET_SEPOLIA,\n};\n\n/** Resolve the deployed verifier address for a supported Starknet network. */\nexport function getMolphaStarknetVerifierAddress(\n network: MolphaStarknetNetwork,\n): `0x${string}` {\n return MOLPHA_VERIFIER_STARKNET_ADDRESSES[network];\n}\n","/**\n * Starknet verifier helpers — framework-agnostic builders for\n * `verify(attestation: Attestation, max_age: u64) -> (bool, u8)` on deployed Molpha\n * verifier contracts, plus a raw calldata encoder and a result decoder.\n *\n * Nothing here depends on `starknet.js`. The struct objects use the Cairo member names, so\n * an ABI-aware client can pass them straight through; `encodeStarknetVerifyCalldata`\n * produces the flat felt array for a raw `starknet_call`.\n */\nimport { bigIntFromBytesBe, toFixedBytes } from \"../core/encoding.js\";\nimport type { Attestation } from \"../core/types.js\";\nimport { VERIFY_CODES, verifyCodeName, type VerifyCodeName } from \"../core/verifyCodes.js\";\n\n/**\n * Starknet calldata shape for `AttestationPayload`.\n *\n * Member order is the order of the signed message preimage and of Cairo `Serde`, so it is\n * load bearing — it is not the flat gateway field order on {@link Attestation}.\n */\nexport interface StarknetAttestationPayload {\n /** 32-byte packed value as `u256`. */\n value: bigint;\n /** 32-byte source id as `u256`. */\n source_id: bigint;\n /** `u32`. */\n registry_version: number;\n /** `u8`. */\n signatures_required: number;\n /** `u64`, unix seconds. */\n canonical_timestamp: number;\n}\n\n/** Starknet calldata shape for `SchnorrSignature`. */\nexport interface StarknetSchnorrSignature {\n /** Schnorr scalar `s` as `u256`. */\n signature: bigint;\n /** Ethereum-style 20-byte address of the nonce point `R`, as a `felt252`. */\n commitment: bigint;\n /** Big-endian signers bitmap as `u256`; bit `i` is node `i` of the registry version. */\n signers_bitmap: bigint;\n}\n\n/** Starknet calldata shape for `Attestation`. */\nexport interface StarknetAttestation {\n payload: StarknetAttestationPayload;\n signature: StarknetSchnorrSignature;\n}\n\n/** Positional arguments for `verify(attestation, max_age)`. */\nexport interface StarknetVerifierArgs {\n attestation: StarknetAttestation;\n /** Freshness window in seconds (`u64`). `0` disables the check. */\n maxAge: number;\n}\n\nexport interface BuildStarknetVerifierArgsOptions {\n /**\n * Freshness window in seconds. The verifier rejects the attestation with `STALE` when it\n * is older than this, and as `MALFORMED` when it is dated in the future.\n *\n * Required on purpose. `0` disables the check entirely, and that is not a neutral\n * default: the verifier is stateless, so without a window it accepts a correctly signed\n * attestation forever. Pass `0` only when the consuming contract enforces freshness or\n * ordering itself.\n */\n maxAge: number;\n}\n\n/** Decoded `verify` return value. */\nexport interface StarknetVerifyResult {\n success: boolean;\n /** Raw result code — see `VERIFY_CODES`. */\n code: number;\n /** Name of `code`, or `\"UNKNOWN\"` for a code newer than this SDK. */\n reason: VerifyCodeName | \"UNKNOWN\";\n}\n\n/** A felt as returned by `starknet_call` (hex or decimal string) or by an ABI-aware client. */\nexport type StarknetFeltLike = string | number | bigint | boolean;\n\nconst U8_MAX = 0xffn;\nconst U32_MAX = 0xffff_ffffn;\nconst U64_MAX = 0xffff_ffff_ffff_ffffn;\nconst U128_MASK = (1n << 128n) - 1n;\nconst U256_MAX = (1n << 256n) - 1n;\nconst ADDRESS_MAX = (1n << 160n) - 1n;\n\nfunction strip0x(value: string): string {\n return value.startsWith(\"0x\") || value.startsWith(\"0X\") ? value.slice(2) : value;\n}\n\nfunction stripOuterQuotes(value: string): string {\n const trimmed = value.trim();\n if (\n (trimmed.startsWith(\"'\") && trimmed.endsWith(\"'\")) ||\n (trimmed.startsWith('\"') && trimmed.endsWith('\"'))\n ) {\n return trimmed.slice(1, -1);\n }\n return trimmed;\n}\n\nfunction toStrictHex(value: string, bytes: number, label: string): `0x${string}` {\n const clean = strip0x(stripOuterQuotes(value)).toLowerCase();\n if (clean.length !== bytes * 2) {\n throw new RangeError(\n `${label}: expected ${bytes} bytes (${bytes * 2} hex chars), got ${clean.length / 2}`,\n );\n }\n return `0x${clean}`;\n}\n\nfunction fixedHexToBigInt(value: string, bytes: number, label: string): bigint {\n const hex = toStrictHex(value, bytes, label);\n const raw = toFixedBytes(hex, bytes, label);\n return bigIntFromBytesBe(raw);\n}\n\n/**\n * Checks an integer fits its Cairo type. Out-of-range calldata does not reach `verify` at\n * all: Cairo `Serde` fails while decoding the arguments, and the call reverts instead of\n * returning a result code. Catching it here keeps that failure in the caller's process.\n */\nfunction assertUint(value: number, max: bigint, label: string): number {\n if (!Number.isSafeInteger(value) || value < 0 || BigInt(value) > max) {\n throw new RangeError(`${label}: expected an integer in 0..${max}, got ${value}`);\n }\n return value;\n}\n\nfunction assertBigUint(value: bigint, max: bigint, label: string): bigint {\n if (value < 0n || value > max) {\n throw new RangeError(`${label}: expected an integer in 0..${max}, got ${value}`);\n }\n return value;\n}\n\nfunction toFelt(value: bigint | number): `0x${string}` {\n return `0x${BigInt(value).toString(16)}`;\n}\n\n/** Cairo `u256` serializes as two felts, low limb first. */\nfunction u256Felts(value: bigint, label: string): [`0x${string}`, `0x${string}`] {\n assertBigUint(value, U256_MAX, label);\n return [toFelt(value & U128_MASK), toFelt(value >> 128n)];\n}\n\nfunction feltToBigInt(value: StarknetFeltLike, label: string): bigint {\n if (typeof value === \"boolean\") return value ? 1n : 0n;\n if (typeof value === \"bigint\") return value;\n if (typeof value === \"number\") {\n if (!Number.isSafeInteger(value)) throw new RangeError(`${label}: not an integer: ${value}`);\n return BigInt(value);\n }\n const text = value.trim();\n if (!/^(0x[0-9a-fA-F]+|[0-9]+)$/.test(text)) {\n throw new RangeError(`${label}: not a felt: ${JSON.stringify(value)}`);\n }\n return BigInt(text);\n}\n\n/** Convert a 20-byte commitment address hex to a Starknet felt-compatible bigint. */\nexport function commitmentAddressToStarknetFelt(value: string): bigint {\n return fixedHexToBigInt(value, 20, \"commitment\");\n}\n\n/** Convert a 32-byte bitmap hex to a Starknet/Cairo `u256` bigint. */\nexport function signersBitmapToStarknetUint256(value: string): bigint {\n return fixedHexToBigInt(value, 32, \"signersBitmap\");\n}\n\n/**\n * Build the `verify(attestation, max_age)` arguments from a gateway result.\n *\n * ```ts\n * const { attestation, maxAge } = buildStarknetVerifierArgs(result, { maxAge: 300 });\n * ```\n */\nexport function buildStarknetVerifierArgs(\n attestation: Attestation,\n options: BuildStarknetVerifierArgsOptions,\n): StarknetVerifierArgs {\n const { payload: signed, signature: sig } = attestation;\n const payload: StarknetAttestationPayload = {\n value: fixedHexToBigInt(signed.value, 32, \"payload.value\"),\n source_id: fixedHexToBigInt(signed.sourceId, 32, \"sourceId\"),\n registry_version: assertUint(signed.registryVersion, U32_MAX, \"registryVersion\"),\n signatures_required: assertUint(signed.signaturesRequired, U8_MAX, \"signaturesRequired\"),\n canonical_timestamp: assertUint(signed.canonicalTimestamp, U64_MAX, \"canonicalTimestamp\"),\n };\n\n const signature: StarknetSchnorrSignature = {\n signature: fixedHexToBigInt(sig.s, 32, \"signature\"),\n commitment: commitmentAddressToStarknetFelt(sig.commitmentAddr),\n signers_bitmap: signersBitmapToStarknetUint256(sig.signersBitmap),\n };\n\n return {\n attestation: { payload, signature },\n maxAge: assertUint(options.maxAge, U64_MAX, \"maxAge\"),\n };\n}\n\n/**\n * Flat felt calldata for `verify(attestation, max_age)`, in Cairo `Serde` order — 13 felts:\n *\n * `value.low, value.high, source_id.low, source_id.high, registry_version,\n * signatures_required, canonical_timestamp, signature.low, signature.high, commitment,\n * signers_bitmap.low, signers_bitmap.high, max_age`\n *\n * For a raw `starknet_call` with `entry_point_selector = selector(\"verify\")`.\n */\nexport function encodeStarknetVerifyCalldata(args: StarknetVerifierArgs): `0x${string}`[] {\n const { payload, signature } = args.attestation;\n return [\n ...u256Felts(payload.value, \"value\"),\n ...u256Felts(payload.source_id, \"source_id\"),\n toFelt(assertUint(payload.registry_version, U32_MAX, \"registry_version\")),\n toFelt(assertUint(payload.signatures_required, U8_MAX, \"signatures_required\")),\n toFelt(assertUint(payload.canonical_timestamp, U64_MAX, \"canonical_timestamp\")),\n ...u256Felts(signature.signature, \"signature\"),\n // An Ethereum-style address, so it must fit 160 bits (the verifier reports a wider one\n // as `MALFORMED`; one past the field prime would not even deserialize).\n toFelt(assertBigUint(signature.commitment, ADDRESS_MAX, \"commitment\")),\n ...u256Felts(signature.signers_bitmap, \"signers_bitmap\"),\n toFelt(assertUint(args.maxAge, U64_MAX, \"maxAge\")),\n ];\n}\n\n/**\n * Decode the `(bool, u8)` returned by `verify`.\n *\n * Accepts the raw two-felt array from `starknet_call` (e.g. `[\"0x1\", \"0x0\"]`) or the tuple\n * an ABI-aware client decodes (e.g. `{ 0: true, 1: 0n }`). Throws when the two halves\n * disagree (`success` with a non-zero code, or failure with `OK`), which means the call did\n * not reach a Molpha verifier of this interface.\n */\nexport function parseStarknetVerifyResult(\n result:\n | readonly StarknetFeltLike[]\n | { readonly 0: StarknetFeltLike; readonly 1: StarknetFeltLike },\n): StarknetVerifyResult {\n if (Array.isArray(result) && result.length !== 2) {\n throw new RangeError(`verify result: expected 2 felts, got ${result.length}`);\n }\n const tuple = result as { readonly 0: StarknetFeltLike; readonly 1: StarknetFeltLike };\n\n const successFelt = feltToBigInt(tuple[0], \"verify result success\");\n if (successFelt !== 0n && successFelt !== 1n) {\n throw new RangeError(`verify result: success must be 0 or 1, got ${successFelt}`);\n }\n const codeFelt = feltToBigInt(tuple[1], \"verify result code\");\n if (codeFelt < 0n || codeFelt > U8_MAX) {\n throw new RangeError(`verify result: code must fit u8, got ${codeFelt}`);\n }\n\n const success = successFelt === 1n;\n const code = Number(codeFelt);\n if (success !== (code === VERIFY_CODES.OK)) {\n throw new Error(\n `verify result is inconsistent: success=${success} with code ${code}; ` +\n \"the call did not reach a Molpha verifier with this interface\",\n );\n }\n\n return { success, code, reason: verifyCodeName(code) ?? \"UNKNOWN\" };\n}\n","/**\n * `@molpha/sdk` — Consumer SDK public surface.\n *\n * The `MolphaSDK` facade wires the gateway and Solana clients together; consumers\n * who only read or only run gateway rounds can use `sdk.gateway` / `sdk.solana`\n * directly (or import `MolphaGateway` / `MolphaSolanaClient` standalone).\n */\nimport { address, type Address } from \"@solana/kit\";\nimport type { AnchorProvider, Idl } from \"@anchor-lang/core\";\nimport {\n type GatewayEndpointInput,\n type RequestSignedDataOptions,\n MolphaGateway,\n} from \"./gateway/index.js\";\nimport { MolphaSolanaClient } from \"./solana/client.js\";\nimport type { Attestation } from \"./core/types.js\";\nimport { MOLPHA_IDL, MOLPHA_PROGRAM_ADDRESS } from \"../idl/index.js\";\nimport { gatewaySignerFromWallet, type MolphaWallet } from \"./wallet.js\";\nimport type { SolanaConnection } from \"./solana/kit.js\";\ntype Commitment = NonNullable<ConstructorParameters<typeof AnchorProvider>[2]>[\"commitment\"];\n\n// Public re-exports.\nexport * from \"./core/index.js\";\nexport * from \"./gateway/index.js\";\nexport * from \"./evm/index.js\";\nexport * from \"./starknet/index.js\";\nexport * from \"./solana/index.js\";\nexport { MOLPHA_IDL, MOLPHA_PROGRAM_ADDRESS } from \"../idl/index.js\";\nexport { gatewaySignerFromWallet, signerFromKeypair, type MolphaWallet } from \"./wallet.js\";\n\nexport interface MolphaSDKOptions {\n /**\n * Defaults to `DEFAULT_GATEWAY_ENDPOINT`. Pass multiple entries for failover. Each\n * entry is a URL or `{ url, gatewayAuthority }`; when the authority is omitted it is\n * discovered from the gateway's `GET /v1/info`.\n */\n endpoints?: GatewayEndpointInput | GatewayEndpointInput[];\n connection: SolanaConnection;\n /** On-chain txs + gateway auth (see `MolphaWallet`). */\n wallet: MolphaWallet;\n /** Defaults to the vendored IDL's program address. Bound into gateway request auth. */\n programId?: Address | string;\n /** Defaults to `MOLPHA_IDL`. Override when pinning a different deployment. */\n idl?: Idl;\n commitment?: Commitment;\n}\n\nexport class MolphaSDK {\n readonly gateway: MolphaGateway;\n readonly solana: MolphaSolanaClient;\n\n constructor(opts: MolphaSDKOptions) {\n const programId = address(String(opts.programId ?? MOLPHA_PROGRAM_ADDRESS));\n this.solana = MolphaSolanaClient.create({\n connection: opts.connection,\n wallet: opts.wallet,\n programId,\n idl: opts.idl ?? MOLPHA_IDL,\n ...(opts.commitment ? { commitment: opts.commitment } : {}),\n });\n this.gateway = new MolphaGateway(\n opts.endpoints,\n () => this.solana.getRegistrySelectionConfig(),\n gatewaySignerFromWallet(opts.wallet),\n {\n defaultSubscriptionOwner: opts.wallet.publicKey.toBase58(),\n programId,\n verifyNodeKeys: (args) => this.solana.verifyNodeKeysForPrivateApi(args),\n },\n );\n }\n\n /**\n * Request a threshold-signed data update from the gateway (against the current\n * on-chain registry version) and submit it via `submit_attestation`.\n */\n async requestAndSubmit(\n opts: RequestSignedDataOptions,\n ): Promise<{ result: Attestation; signature: string; feed: Address }> {\n const result = await this.gateway.requestSignedData(opts);\n const { signature, feed } = await this.solana.submitAttestation(result);\n return { result, signature, feed };\n }\n}\n"]}