@molpha/sdk 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +698 -0
- package/dist/chunk-MFELBWSL.js +51 -0
- package/dist/chunk-MFELBWSL.js.map +1 -0
- package/dist/index.d.ts +584 -0
- package/dist/index.js +6779 -0
- package/dist/index.js.map +1 -0
- package/dist/utils.d.ts +14 -0
- package/dist/utils.js +20 -0
- package/dist/utils.js.map +1 -0
- package/dist/wallet-CbpYQO4l.d.ts +122 -0
- package/idl/index.ts +14 -0
- package/idl/molpha.json +5563 -0
- package/package.json +88 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/core/encoding.ts","../src/core/nodeKeys.ts","../src/core/apiconfig.ts","../src/core/selection.ts","../src/gateway/auth.ts","../src/gateway/encryption.ts","../src/gateway/index.ts","../src/solana/pdas.ts","../src/solana/accounts.ts","../idl/molpha.json","../idl/index.ts","../src/solana/plans.ts","../src/solana/client.ts","../src/core/ids.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","PlanType","strip0x","stripOuterQuotes"],"mappings":"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","file":"index.js","sourcesContent":["/**\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/** 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","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 * API config canonicalization + hashing. Must stay byte-identical with gateway/node\n * verification: `apiConfigHash = keccak256(JSON.stringify(apiConfig))`.\n */\nimport { keccak_256 } from \"@noble/hashes/sha3.js\";\nimport { utf8 } from \"./encoding.js\";\nimport type { APIConfig } from \"./types.js\";\n\n/** Gateway wire shape — defaults applied before hash / encryption. */\nexport function canonicalizeAPIConfig(apiConfig: APIConfig): APIConfig {\n return {\n url: apiConfig.url,\n method: apiConfig.method ?? \"GET\",\n headers: apiConfig.headers ?? {},\n responseParser: apiConfig.responseParser,\n valueTransform: apiConfig.valueTransform ?? \"\",\n };\n}\n\n/**\n * `apiConfigHash = keccak256(JSON.stringify(canonical apiConfig))`.\n * Pass the same config (including `{{secret.*}}` placeholders) you will send to\n * `MolphaGateway.requestSignedData` when deriving a feed id.\n */\nexport function deriveApiConfigHash(apiConfig: APIConfig): Uint8Array {\n return keccak_256(utf8(JSON.stringify(canonicalizeAPIConfig(apiConfig))));\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\") || feedId || be32(rv) || be64(ts))`.\n */\nexport function deriveSelectionSeed(\n feedId: Uint8Array,\n registryVersion: number,\n canonicalTimestamp: number | bigint,\n): Uint8Array {\n ensureLength(feedId, 32, \"feedId\");\n return keccak_256(\n concatBytes(\n SELECTION_SEED_DOMAIN,\n feedId,\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 feedId: 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(feedId, registryVersion, ts);\n const size = effectiveSelectionSize(signaturesRequired, redundancy, nodeCount);\n return deriveGroupBitmap(seed, nodeCount, size);\n}\n","/**\n * Gateway request authentication.\n *\n * `authMessage(feedId, timestamp) = sha256(\"MOLPHA_REQAUTH_V1\" || feed_id || uint64_le(timestamp))`,\n * signed ed25519 by the consumer authority / delegate.\n */\nimport { sha256 } from \"@noble/hashes/sha2.js\";\nimport { concatBytes, ensureLength, utf8, u64le } from \"../core/encoding.js\";\n\nexport type { Signer } from \"../core/types.js\";\n\nconst REQUEST_AUTH_DOMAIN = utf8(\"MOLPHA_REQAUTH_V1\");\n\nexport function authMessage(feedId: Uint8Array, timestamp: number | bigint): Uint8Array {\n ensureLength(feedId, 32, \"feedId\");\n return sha256(concatBytes(REQUEST_AUTH_DOMAIN, feedId, u64le(timestamp)));\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 * `MolphaGateway` — isomorphic HTTP client with multi-endpoint failover.\n */\nimport {\n bytesToHex,\n bytesToHex0x,\n hexToBytes,\n} from \"../core/encoding.js\";\nimport { normalizeSecp256k1PublicKeyHex } from \"../core/nodeKeys.js\";\nimport { canonicalizeAPIConfig } from \"../core/apiconfig.js\";\nimport {\n deriveGroupBitmap,\n deriveSelectionSeed,\n effectiveSelectionSize,\n selectedIndices,\n} from \"../core/selection.js\";\nimport type {\n APIConfig,\n DataUpdateResult,\n Node,\n NodeKeyVerifier,\n RegistrySelectionConfig,\n Signer,\n} from \"../core/types.js\";\nimport { authMessage } from \"./auth.js\";\nimport { encryptForNodes } from \"./encryption.js\";\n\nexport type { RegistrySelectionConfig } from \"../core/types.js\";\n\nexport interface RequestSignedDataOptions {\n feedId: string;\n signaturesRequired: number;\n apiConfig: APIConfig;\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 `authMessage(feedId, timestamp)`. Overrides the gateway's\n * `defaultSigner` when set. When both are omitted, sends all-zero authSig\n * (dev only).\n */\n signer?: Signer;\n encrypt?: { secrets: Record<string, string> };\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`, or `nodes` set produces a result the chain will reject.\n * 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 * 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 derive the selection bitmap. */\n nodes: Node[];\n}\n\ninterface GatewaySignedDataResponse {\n status: \"completed\" | \"pending\" | string;\n data?: GatewaySignedData;\n}\n\ninterface GatewaySignedData {\n feedId?: string;\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: string[];\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\n constructor(\n endpoints?: string | string[],\n getRegistrySelectionConfig: () => Promise<RegistrySelectionConfig> = async () => {\n throw new Error(\n \"MolphaGateway requires getRegistrySelectionConfig to request signed data — pass the current on-chain registry version and redundancy buffer (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((e) => e.replace(/\\/$/, \"\"));\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 }\n\n /** Tries endpoints in order; returns the first node list it can fetch. */\n async getNodes(): Promise<Node[]> {\n const data = await this.firstReachableData<{ nodes: Node[] } | Node[]>(\"/v1/nodes\");\n return Array.isArray(data) ? data : data.nodes;\n }\n\n async isHealthy(): Promise<boolean> {\n for (const endpoint of this.endpoints) {\n try {\n const res = await fetch(`${endpoint}/health`, { method: \"GET\" });\n if (res.ok) return true;\n } catch {\n // try next\n }\n }\n return false;\n }\n\n /**\n * Fetch the slow-changing round inputs (registry version, redundancy buffer,\n * node set) once so they can be reused across many {@link requestSignedData}\n * calls. Pass the result back via `requestSignedData({ ..., context })` to\n * skip the prelude and run a single-round \"short\" flow.\n *\n * Both fetches run in parallel. Registry version and redundancy buffer come\n * from a single on-chain `RegistryState` read.\n */\n async prepareContext(_feedId: string): 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 * By default this fetches the registry selection config and node set up front\n * (in parallel). Supply `opts.context` (e.g. from {@link prepareContext}) to\n * reuse cached inputs and skip those fetches — a fully-populated context\n * collapses the call to a single POST round.\n */\n async requestSignedData(opts: RequestSignedDataOptions): Promise<DataUpdateResult> {\n const {\n feedId,\n apiConfig,\n signer,\n encrypt,\n maxAge = 60,\n maxRetries = 15,\n timeoutMs = 5000,\n } = opts;\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 const feedIdBytes = hexToBytes(feedId);\n const { registryVersion, redundancyBuffer, nodes } = await this.resolveContext(\n feedId,\n opts.context,\n );\n\n const requestApiConfig = canonicalizeAPIConfig(apiConfig);\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\n let lastError: unknown;\n for (let attempt = 0; attempt < maxRetries; attempt++) {\n const timestamp = Math.floor(Date.now() / 1000);\n\n const seed = deriveSelectionSeed(feedIdBytes, registryVersion, timestamp);\n const groupSize = effectiveSelectionSize(\n opts.signaturesRequired,\n redundancyBuffer,\n nodes.length,\n );\n const bitmap = deriveGroupBitmap(seed, nodes.length, groupSize);\n const indices = selectedIndices(bitmap, nodes.length);\n\n let encKeyBundle: ReturnType<typeof encryptForNodes> | undefined;\n if (encrypt) {\n const selected = selectedNodesForPrivateApiEncryption(nodes, indices);\n\n if (verifyNodeKeys) {\n await verifyNodeKeys({\n feedId,\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 const authSigner = signer ?? this.defaultSigner;\n const authSig = authSigner\n ? await authSigner(authMessage(feedIdBytes, timestamp))\n : ZERO_AUTH_SIG;\n\n const body: Record<string, unknown> = {\n feedId,\n registryVersion,\n timestamp,\n maxAge,\n signaturesRequired: opts.signaturesRequired,\n subscriptionOwner,\n consumerAuthority,\n authSig: bytesToHex0x(authSig),\n apiConfig: requestApiConfig,\n };\n if (encKeyBundle) body.encKeyBundle = encKeyBundle;\n\n for (const endpoint of this.endpoints) {\n try {\n const res = await this.post(\n `${endpoint}/v1/round/execute`,\n body,\n timeoutMs,\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 feedId,\n registryVersion,\n timestamp,\n signaturesRequired: opts.signaturesRequired,\n bitmap,\n });\n }\n lastError = new Error(`Gateway returned status: ${json.status}`);\n } catch (err) {\n if (err instanceof GatewayError && (err.status === 400 || err.status === 401)) {\n throw err;\n }\n lastError = err; // timeout / network → next endpoint\n }\n }\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 and redundancy buffer are treated as a unit (one account\n * read). Whatever fetching remains runs in parallel.\n */\n private async resolveContext(\n _feedId: string,\n cached?: Partial<RoundContext>,\n ): Promise<RoundContext> {\n const hasRegistry =\n cached?.registryVersion !== undefined && cached?.redundancyBuffer !== undefined;\n const [registry, nodes] = await Promise.all([\n hasRegistry\n ? Promise.resolve({\n registryVersion: cached.registryVersion!,\n redundancyBuffer: cached.redundancyBuffer!,\n })\n : this.getRegistrySelectionConfig(),\n cached?.nodes !== undefined\n ? Promise.resolve(cached.nodes)\n : this.getNodes(),\n ]);\n return { ...registry, nodes };\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}${path}`, { method: \"GET\" });\n if (res.ok) {\n const json = (await res.json()) as unknown;\n if (json && typeof json === \"object\" && \"data\" in json) {\n const wrapped = json as Partial<GatewayEnvelope<T>>;\n if (wrapped.data === undefined) {\n throw new GatewayError(`GET ${path} returned malformed payload`, res.status);\n }\n return wrapped.data;\n }\n return json 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 const controller = new AbortController();\n const timer = setTimeout(() => controller.abort(), timeoutMs);\n try {\n return await fetch(url, {\n method: \"POST\",\n headers: { \"content-type\": \"application/json\" },\n body: JSON.stringify(body),\n signal: controller.signal,\n });\n } finally {\n clearTimeout(timer);\n }\n }\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 toResult(\n data: GatewaySignedData,\n ctx: {\n feedId: string;\n registryVersion: number;\n timestamp: number;\n signaturesRequired: number;\n bitmap: Uint8Array;\n },\n): DataUpdateResult {\n return {\n feedId: data.feedId ?? ctx.feedId,\n value: data.value ?? \"\",\n valuePacked: data.valuePacked ?? \"\",\n timestamp: data.timestamp ?? ctx.timestamp,\n registryVersion: data.registryVersion ?? ctx.registryVersion,\n signaturesRequired: data.signaturesRequired ?? ctx.signaturesRequired,\n signersBitmap: data.signersBitmap ?? bytesToHex(ctx.bitmap),\n s: data.s ?? \"\",\n commitmentAddr: data.commitmentAddr ?? \"\",\n fresh: data.fresh ?? true,\n };\n}\n","/**\n * Consumer PDA derivations (no node PDA). Seed byte strings are cross-checked\n * against the IDL const seeds.\n */\nimport type { Address } from \"@solana/kit\";\nimport { 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\");\n\n/** Virtual registry index used for a removed slot during a version transition. */\nexport const VIRTUAL_INDEX = 0xffffffff;\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\nexport const registryStatePda = (programId: SolanaAddress): Address =>\n pda([SEED_REGISTRY], programId);\n\n/** Slot-keyed `Node` account PDA: `[\"molpha_node\", index u32 LE]`. */\nexport const nodePda = (index: number, programId: SolanaAddress): Address =>\n pda([SEED_NODE, u32le(index)], programId);\n\n/** Plan PDA is `[b\"molpha_plan\", [planType as u8]]` in `subscribe`. */\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\nexport const feedPda = (feedId: Uint8Array, programId: SolanaAddress): Address =>\n pda([SEED_FEED, feedId], programId);\n","/**\n * Account fetching, registry-version transition resolution, and remaining-accounts\n * construction.\n */\nimport { hexToBytes } from \"../core/encoding.js\";\nimport { selectedIndices } from \"../core/selection.js\";\nimport type { DataUpdateResult } from \"../core/types.js\";\nimport { type SolanaAccountMeta, type SolanaAddress, toPublicKey } from \"./kit.js\";\nimport { nodePda, VIRTUAL_INDEX } from \"./pdas.js\";\n\n/** The subset of on-chain `RegistryState` the client needs (Anchor camelCase). */\nexport interface RegistryStateView {\n currentVersion: number;\n previousVersion: number;\n previousExpiresAt: bigint;\n /** On-chain selection padding: `signatures_required + redundancy_buffer`. */\n redundancyBuffer: number;\n lastTransitionType:\n | { none: Record<string, never> }\n | { add: Record<string, never> }\n | { removeTail: Record<string, never> }\n | { removeSwap: Record<string, never> };\n removedOldIndex: number;\n movedOldIndex: number;\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 * Build the registry-index remaining accounts for a submit. Valid only\n * against the current or previous registry version (else thrown client-side).\n */\nexport function resolveRemainingAccounts(\n result: DataUpdateResult,\n registry: RegistryStateView,\n programId: SolanaAddress,\n): SolanaAccountMeta[] {\n const bits = bitmapToIndices(result.signersBitmap);\n\n const mapIndex = registryIndexMapper(result.registryVersion, registry);\n return bits.map((bit) => ({\n pubkey: toPublicKey(nodePda(mapIndex(bit), programId)),\n isSigner: false,\n isWritable: false,\n }));\n}\n\n/** Map a selected node index to its registry-index PDA index for a registry version. */\nexport function resolveRegistryIndexForVersion(\n index: number,\n registryVersion: number,\n registry: RegistryStateView,\n): number {\n return registryIndexMapper(registryVersion, registry)(index);\n}\n\nfunction registryIndexMapper(\n registryVersion: number,\n registry: RegistryStateView,\n): (bit: number) => number {\n if (registryVersion === registry.currentVersion) {\n return (bit) => bit; // current version: index == bit\n }\n if (registryVersion === registry.previousVersion) {\n if (\"add\" in registry.lastTransitionType) {\n return (bit) => bit;\n }\n const isRemoveTail = \"removeTail\" in registry.lastTransitionType;\n const isRemoveSwap = \"removeSwap\" in registry.lastTransitionType;\n if (!isRemoveTail && !isRemoveSwap) {\n throw new Error(\n \"InvalidTransitionAccount: previous-version verification requires remove-transition metadata\",\n );\n }\n return (bit) => {\n if (bit === registry.removedOldIndex) return VIRTUAL_INDEX;\n if (isRemoveSwap && bit === registry.movedOldIndex) return registry.removedOldIndex;\n return bit;\n };\n }\n throw new Error(\n `InvalidRegistryVersion: ${registryVersion} is neither current (${registry.currentVersion}) nor previous (${registry.previousVersion})`,\n );\n}\n","{\n \"address\": \"MoLFGDpFoVnQgwbkTNScKPohCxhbfd61JjFrnotuwzh\",\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 },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"args\",\n \"type\": {\n \"defined\": {\n \"name\": \"AddPlanArgs\"\n }\n }\n }\n ]\n },\n {\n \"name\": \"claim_gateway_rewards\",\n \"discriminator\": [\n 135,\n 85,\n 218,\n 91,\n 92,\n 28,\n 145,\n 45\n ],\n \"accounts\": [\n {\n \"name\": \"authority\",\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\": \"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\": \"account\",\n \"path\": \"authority\"\n }\n ]\n }\n },\n {\n \"name\": \"treasury\",\n \"writable\": true\n },\n {\n \"name\": \"destination\",\n \"writable\": true\n },\n {\n \"name\": \"token_program\",\n \"address\": \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"\n }\n ],\n \"args\": []\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\": \"owner\",\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_operator\",\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 95,\n 111,\n 112,\n 101,\n 114,\n 97,\n 116,\n 111,\n 114\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"owner\"\n }\n ]\n }\n },\n {\n \"name\": \"node\",\n \"docs\": [\n \"The operator's current slot account, holding `claimable_rewards` while active. Omitted once\",\n \"the operator is deactivated (its slot has been closed and rewards migrated to `node_operator`).\"\n ],\n \"writable\": true,\n \"optional\": 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_operator.current_index\",\n \"account\": \"NodeOperator\"\n }\n ]\n }\n },\n {\n \"name\": \"treasury\",\n \"writable\": true\n },\n {\n \"name\": \"destination\",\n \"writable\": true\n },\n {\n \"name\": \"token_program\",\n \"address\": \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"\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\": \"removed_operator\",\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 95,\n 111,\n 112,\n 101,\n 114,\n 97,\n 116,\n 111,\n 114\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"authority\"\n }\n ]\n }\n },\n {\n \"name\": \"removed_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\": \"removed_operator.current_index\",\n \"account\": \"NodeOperator\"\n }\n ]\n }\n },\n {\n \"name\": \"virtual_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\": \"const\",\n \"value\": [\n 255,\n 255,\n 255,\n 255\n ]\n }\n ]\n }\n },\n {\n \"name\": \"last_node\",\n \"writable\": true\n },\n {\n \"name\": \"moved_operator\",\n \"writable\": true\n },\n {\n \"name\": \"rent_receiver\",\n \"writable\": true\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"dispute_round\",\n \"discriminator\": [\n 190,\n 167,\n 75,\n 184,\n 90,\n 223,\n 99,\n 89\n ],\n \"accounts\": [\n {\n \"name\": \"challenger\",\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 \"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\": \"round_record\",\n \"docs\": [\n \"Subscription or agent settlement record. No seeds constraint — same rationale as\",\n \"`finalize_round` (owner + discriminator).\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"gateway\",\n \"writable\": true\n },\n {\n \"name\": \"treasury\",\n \"writable\": true\n },\n {\n \"name\": \"challenger_usdc\",\n \"writable\": true\n },\n {\n \"name\": \"token_program\",\n \"address\": \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"\n }\n ],\n \"args\": [\n {\n \"name\": \"agg_sig\",\n \"type\": {\n \"defined\": {\n \"name\": \"AggregatedSig\"\n }\n }\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\": \"usdc_mint\"\n },\n {\n \"name\": \"owner_usdc\",\n \"writable\": true\n },\n {\n \"name\": \"treasury\",\n \"writable\": true\n },\n {\n \"name\": \"token_program\",\n \"address\": \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"finalize_registry_transition\",\n \"discriminator\": [\n 95,\n 24,\n 111,\n 199,\n 201,\n 21,\n 165,\n 193\n ],\n \"accounts\": [\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\": \"virtual_node\",\n \"writable\": true,\n \"optional\": 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\": \"const\",\n \"value\": [\n 255,\n 255,\n 255,\n 255\n ]\n }\n ]\n }\n },\n {\n \"name\": \"node_operator\",\n \"docs\": [\n \"The deactivated operator that receives the virtual slot's residual rewards. Required\",\n \"whenever `virtual_node` is present.\"\n ],\n \"writable\": true,\n \"optional\": true\n },\n {\n \"name\": \"rent_receiver\",\n \"writable\": true\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"finalize_round\",\n \"discriminator\": [\n 239,\n 160,\n 254,\n 11,\n 254,\n 144,\n 53,\n 148\n ],\n \"accounts\": [\n {\n \"name\": \"caller\",\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 \"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\": \"round_record\",\n \"docs\": [\n \"Subscription (`[\\\"molpha_round\\\", feed_id, ts]`) or agent\",\n \"(`[\\\"molpha_agent_round\\\", agent, nonce]`) settlement record. No seeds constraint:\",\n \"owner + discriminator suffice — only the two settle instructions can create this\",\n \"account type, and both write complete state, so stored contents are trusted.\"\n ],\n \"writable\": true\n },\n {\n \"name\": \"gateway\",\n \"writable\": true\n }\n ],\n \"args\": []\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\": \"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\": \"authority\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"token_program\"\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\": \"gateway_authority\",\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\": \"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\": \"account\",\n \"path\": \"gateway_authority\"\n }\n ]\n }\n },\n {\n \"name\": \"usdc_mint\"\n },\n {\n \"name\": \"authority_usdc\",\n \"writable\": true\n },\n {\n \"name\": \"treasury\",\n \"writable\": true\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\": \"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 \"registry\"\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\",\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\": \"node_operator\",\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 95,\n 111,\n 112,\n 101,\n 114,\n 97,\n 116,\n 111,\n 114\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"node_owner\"\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\": \"registry.current_node_count\",\n \"account\": \"RegistryState\"\n }\n ]\n }\n },\n {\n \"name\": \"secp256k1_key_claim\",\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 101,\n 99,\n 112,\n 95,\n 107,\n 101,\n 121\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"args.secp256k1_key_fingerprint\"\n }\n ]\n }\n },\n {\n \"name\": \"usdc_mint\"\n },\n {\n \"name\": \"owner_usdc\",\n \"writable\": true\n },\n {\n \"name\": \"treasury\",\n \"writable\": true\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\": \"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\": \"set_delegate_paused\",\n \"discriminator\": [\n 99,\n 154,\n 230,\n 157,\n 100,\n 20,\n 79,\n 158\n ],\n \"accounts\": [\n {\n \"name\": \"owner\",\n \"signer\": true\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\": \"account\",\n \"path\": \"delegate_account.delegate\",\n \"account\": \"Delegate\"\n }\n ]\n }\n }\n ],\n \"args\": [\n {\n \"name\": \"paused\",\n \"type\": \"bool\"\n }\n ]\n },\n {\n \"name\": \"settle_agent_round\",\n \"discriminator\": [\n 174,\n 21,\n 81,\n 91,\n 141,\n 169,\n 219,\n 1\n ],\n \"accounts\": [\n {\n \"name\": \"gateway_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 \"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\": \"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\": \"account\",\n \"path\": \"gateway_authority\"\n }\n ]\n }\n },\n {\n \"name\": \"agent_escrow\",\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 97,\n 103,\n 101,\n 110,\n 116\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"args.authority\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"gateway\"\n }\n ]\n }\n },\n {\n \"name\": \"usdc_mint\"\n },\n {\n \"name\": \"escrow_ata\",\n \"docs\": [\n \"The escrow's USDC ATA — source of the settled `price`. Pinned to `agent_escrow`.\"\n ],\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"agent_escrow\"\n },\n {\n \"kind\": \"const\",\n \"value\": [\n 6,\n 221,\n 246,\n 225,\n 215,\n 101,\n 161,\n 147,\n 217,\n 203,\n 225,\n 70,\n 206,\n 235,\n 121,\n 172,\n 28,\n 180,\n 133,\n 237,\n 95,\n 91,\n 55,\n 145,\n 58,\n 140,\n 245,\n 133,\n 126,\n 255,\n 0,\n 169\n ]\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\": \"treasury\",\n \"writable\": true\n },\n {\n \"name\": \"token_program\",\n \"address\": \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"\n },\n {\n \"name\": \"round_record\",\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 97,\n 103,\n 101,\n 110,\n 116,\n 95,\n 114,\n 111,\n 117,\n 110,\n 100\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"args.authority\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"gateway\"\n },\n {\n \"kind\": \"arg\",\n \"path\": \"args.api_config_hash\"\n },\n {\n \"kind\": \"arg\",\n \"path\": \"args.signatures_required\"\n },\n {\n \"kind\": \"arg\",\n \"path\": \"args.canonical_timestamp\"\n }\n ]\n }\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\": \"args\",\n \"type\": {\n \"defined\": {\n \"name\": \"SettleAgentRoundArgs\"\n }\n }\n }\n ]\n },\n {\n \"name\": \"settle_round_receipt\",\n \"discriminator\": [\n 144,\n 177,\n 148,\n 213,\n 72,\n 95,\n 1,\n 189\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\": \"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\": \"subscription\",\n \"writable\": true\n },\n {\n \"name\": \"consumer_delegate\",\n \"docs\": [\n \"The handler checks the delegate PDA, owner/delegate fields, and discriminator before use.\"\n ],\n \"writable\": true,\n \"optional\": true\n },\n {\n \"name\": \"gateway\",\n \"writable\": true\n },\n {\n \"name\": \"round_record\",\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 111,\n 117,\n 110,\n 100\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"args.consumer_authority\"\n },\n {\n \"kind\": \"arg\",\n \"path\": \"args.api_config_hash\"\n },\n {\n \"kind\": \"arg\",\n \"path\": \"args.signatures_required\"\n },\n {\n \"kind\": \"arg\",\n \"path\": \"args.timestamp\"\n }\n ]\n }\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\": \"args\",\n \"type\": {\n \"defined\": {\n \"name\": \"SettleRoundArgs\"\n }\n }\n }\n ]\n },\n {\n \"name\": \"submit_data_update\",\n \"discriminator\": [\n 213,\n 216,\n 158,\n 85,\n 112,\n 27,\n 17,\n 109\n ],\n \"accounts\": [\n {\n \"name\": \"submitter\",\n \"writable\": true,\n \"signer\": true\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\": \"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.feed_id\"\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\": \"SubmitDataUpdateArgs\"\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\": \"usdc_mint\"\n },\n {\n \"name\": \"owner_usdc\",\n \"writable\": true\n },\n {\n \"name\": \"treasury\",\n \"writable\": true\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\": \"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\": \"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\": \"authority\",\n \"signer\": true\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_operator\",\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 95,\n 111,\n 112,\n 101,\n 114,\n 97,\n 116,\n 111,\n 114\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\": \"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 \"signer\": true\n }\n ],\n \"args\": [\n {\n \"name\": \"args\",\n \"type\": {\n \"defined\": {\n \"name\": \"UpdatePlanArgs\"\n }\n }\n }\n ]\n }\n ],\n \"accounts\": [\n {\n \"name\": \"AgentEscrow\",\n \"discriminator\": [\n 26,\n 63,\n 32,\n 229,\n 41,\n 3,\n 31,\n 173\n ]\n },\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\": \"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\": \"NodeOperator\",\n \"discriminator\": [\n 77,\n 85,\n 128,\n 252,\n 48,\n 166,\n 7,\n 56\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\": \"RegistryState\",\n \"discriminator\": [\n 29,\n 34,\n 224,\n 195,\n 175,\n 183,\n 99,\n 97\n ]\n },\n {\n \"name\": \"RoundReceiptRecord\",\n \"discriminator\": [\n 14,\n 85,\n 161,\n 183,\n 206,\n 89,\n 91,\n 94\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 \"events\": [\n {\n \"name\": \"AgentEscrowClosed\",\n \"discriminator\": [\n 232,\n 16,\n 254,\n 241,\n 38,\n 232,\n 77,\n 255\n ]\n },\n {\n \"name\": \"AgentEscrowCreated\",\n \"discriminator\": [\n 208,\n 240,\n 200,\n 98,\n 63,\n 57,\n 74,\n 117\n ]\n },\n {\n \"name\": \"AgentRoundSettled\",\n \"discriminator\": [\n 241,\n 12,\n 225,\n 155,\n 101,\n 174,\n 15,\n 76\n ]\n },\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\": \"FeedUpdated\",\n \"discriminator\": [\n 200,\n 60,\n 190,\n 86,\n 247,\n 9,\n 50,\n 81\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\": \"NodeEndpointUpdated\",\n \"discriminator\": [\n 121,\n 121,\n 209,\n 202,\n 113,\n 134,\n 46,\n 240\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\": \"NodeSlotFinalized\",\n \"discriminator\": [\n 242,\n 7,\n 112,\n 224,\n 237,\n 228,\n 250,\n 164\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\": \"RegistryVersionActivated\",\n \"discriminator\": [\n 140,\n 113,\n 95,\n 86,\n 170,\n 147,\n 96,\n 250\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\": \"RoundDisputed\",\n \"discriminator\": [\n 120,\n 195,\n 216,\n 137,\n 13,\n 72,\n 47,\n 81\n ]\n },\n {\n \"name\": \"RoundFinalized\",\n \"discriminator\": [\n 43,\n 187,\n 17,\n 193,\n 36,\n 241,\n 48,\n 82\n ]\n },\n {\n \"name\": \"RoundSettled\",\n \"discriminator\": [\n 249,\n 225,\n 66,\n 54,\n 157,\n 200,\n 234,\n 222\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\": \"SubscriptionVaultWithdrawn\",\n \"discriminator\": [\n 35,\n 82,\n 214,\n 101,\n 73,\n 182,\n 105,\n 108\n ]\n }\n ],\n \"errors\": [\n {\n \"code\": 6000,\n \"name\": \"TransitionStillInGrace\",\n \"msg\": \"Registry change attempted while previous version is still accepted\"\n },\n {\n \"code\": 6001,\n \"name\": \"InvalidNodeIndex\",\n \"msg\": \"Signer index outside node_count(version)\"\n },\n {\n \"code\": 6002,\n \"name\": \"InvalidNodeAccount\",\n \"msg\": \"Node account does not match expected index/owner\"\n },\n {\n \"code\": 6003,\n \"name\": \"InvalidTransitionAccount\",\n \"msg\": \"Previous-after-remove verification requires remove-transition metadata\"\n },\n {\n \"code\": 6004,\n \"name\": \"MovedNodeMismatch\",\n \"msg\": \"moved_operator does not match the last-slot node's 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\": \"NodeAlreadyRegistered\",\n \"msg\": \"secp256k1_pubkey matches existing active node\"\n },\n {\n \"code\": 6007,\n \"name\": \"NodeCapExceeded\",\n \"msg\": \"pending_node_count >= max_node_count or node_index_hint >= max_node_count\"\n },\n {\n \"code\": 6008,\n \"name\": \"InvalidPoP\",\n \"msg\": \"PoP Schnorr verification failed at registration\"\n },\n {\n \"code\": 6009,\n \"name\": \"NodeNotActive\",\n \"msg\": \"Instruction requires Active node status\"\n },\n {\n \"code\": 6010,\n \"name\": \"PubkeyNotOnCurve\",\n \"msg\": \"Submitted compressed pubkey does not decompress to a valid curve point\"\n },\n {\n \"code\": 6011,\n \"name\": \"InvalidRegistryVersion\",\n \"msg\": \"registry_version is neither active_version nor grace-valid previous_version\"\n },\n {\n \"code\": 6012,\n \"name\": \"UnauthorisedAuthority\",\n \"msg\": \"Caller is not ProtocolConfig.authority\"\n },\n {\n \"code\": 6013,\n \"name\": \"InvalidGatewayEndpoint\",\n \"msg\": \"Gateway endpoint is invalid\"\n },\n {\n \"code\": 6014,\n \"name\": \"InvalidNodeEndpoint\",\n \"msg\": \"Node endpoint is invalid\"\n },\n {\n \"code\": 6015,\n \"name\": \"InvalidTreasury\",\n \"msg\": \"treasury token account mismatch\"\n },\n {\n \"code\": 6016,\n \"name\": \"InvalidOwnerUsdc\",\n \"msg\": \"owner_usdc token account mismatch\"\n },\n {\n \"code\": 6017,\n \"name\": \"InvalidTreasuryOwner\",\n \"msg\": \"treasury must be owned by protocol_config\"\n },\n {\n \"code\": 6018,\n \"name\": \"InvalidWithdrawDestination\",\n \"msg\": \"withdraw destination token account mismatch\"\n },\n {\n \"code\": 6019,\n \"name\": \"InvalidSignature\",\n \"msg\": \"Invalid aggregate signature\"\n },\n {\n \"code\": 6020,\n \"name\": \"GroupBitmapDerivationFailed\",\n \"msg\": \"Could not derive group bitmap\"\n },\n {\n \"code\": 6021,\n \"name\": \"InvalidSignersBitmap\",\n \"msg\": \"Signers bitmap contains out-of-range indices\"\n },\n {\n \"code\": 6022,\n \"name\": \"PlanNotActive\",\n \"msg\": \"plan exists but is_active is false\"\n },\n {\n \"code\": 6023,\n \"name\": \"InvalidPlanParams\",\n \"msg\": \"invalid plan quorum or signer parameters\"\n },\n {\n \"code\": 6024,\n \"name\": \"InvalidDelegateLimits\",\n \"msg\": \"invalid delegate limit parameters\"\n },\n {\n \"code\": 6025,\n \"name\": \"DelegateCannotBeOwner\",\n \"msg\": \"delegate cannot be the owner\"\n },\n {\n \"code\": 6026,\n \"name\": \"DelegateAccountRequired\",\n \"msg\": \"delegate account required for non-owner action\"\n },\n {\n \"code\": 6027,\n \"name\": \"UnexpectedDelegateAccount\",\n \"msg\": \"delegate account must not be supplied for owner action\"\n },\n {\n \"code\": 6028,\n \"name\": \"DelegateDataRequestLimitReached\",\n \"msg\": \"delegate data_requests_used >= max_data_requests\"\n },\n {\n \"code\": 6029,\n \"name\": \"DelegateNotFound\",\n \"msg\": \"remove_delegate target not found\"\n },\n {\n \"code\": 6030,\n \"name\": \"DelegateNotActive\",\n \"msg\": \"delegate is paused\"\n },\n {\n \"code\": 6031,\n \"name\": \"SignaturesExceedDelegateMax\",\n \"msg\": \"signatures_required exceeds delegate.max_signers\"\n },\n {\n \"code\": 6032,\n \"name\": \"DelegateCapReached\",\n \"msg\": \"subscription delegate_count >= plan.max_delegates\"\n },\n {\n \"code\": 6033,\n \"name\": \"InvalidRegistrationSalt\",\n \"msg\": \"registration_salt must not be zero\"\n },\n {\n \"code\": 6034,\n \"name\": \"InvalidSecp256k1KeyFingerprint\",\n \"msg\": \"secp256k1 key fingerprint does not match compressed key\"\n },\n {\n \"code\": 6035,\n \"name\": \"InsufficientSigners\",\n \"msg\": \"popcount(signers_bitmap) < signatures_required\"\n },\n {\n \"code\": 6036,\n \"name\": \"SignaturesExceedSubscriptionMax\",\n \"msg\": \"signatures_required exceeds subscription.max_signers\"\n },\n {\n \"code\": 6037,\n \"name\": \"SignersNotSubsetOfSelection\",\n \"msg\": \"Signer bits outside selection bitmap\"\n },\n {\n \"code\": 6038,\n \"name\": \"InvalidAggregateSignature\",\n \"msg\": \"PoP-Schnorr aggregate verification failed\"\n },\n {\n \"code\": 6039,\n \"name\": \"FeedNotNewer\",\n \"msg\": \"canonical_timestamp <= feed.canonical_timestamp\"\n },\n {\n \"code\": 6040,\n \"name\": \"MissingSignerAccount\",\n \"msg\": \"Missing or mis-ordered signer slot version account\"\n },\n {\n \"code\": 6041,\n \"name\": \"SubscriptionNotActive\",\n \"msg\": \"subscription has expired\"\n },\n {\n \"code\": 6042,\n \"name\": \"ConsumerSigInvalid\",\n \"msg\": \"consumer Ed25519 signature missing or invalid\"\n },\n {\n \"code\": 6043,\n \"name\": \"QuorumBelowThreshold\",\n \"msg\": \"popcount(signers_bitmap) < signatures_required\"\n },\n {\n \"code\": 6044,\n \"name\": \"GatewayNotBonded\",\n \"msg\": \"gateway not registered or bonded below gateway_bond_min\"\n },\n {\n \"code\": 6045,\n \"name\": \"SubscriptionInactiveOrExhausted\",\n \"msg\": \"subscription inactive or round quota exhausted\"\n },\n {\n \"code\": 6046,\n \"name\": \"DisputeAggSigMismatch\",\n \"msg\": \"supplied signature does not match committed agg_sig_hash\"\n },\n {\n \"code\": 6047,\n \"name\": \"DisputeSignatureValid\",\n \"msg\": \"dispute failed: the committed signature verifies (no fraud)\"\n },\n {\n \"code\": 6048,\n \"name\": \"GatewayIndexMismatch\",\n \"msg\": \"gateway_index does not match the bonded gateway\"\n },\n {\n \"code\": 6049,\n \"name\": \"InsufficientBond\",\n \"msg\": \"bond amount below gateway_bond_min\"\n },\n {\n \"code\": 6050,\n \"name\": \"CreditedBitmapMismatch\",\n \"msg\": \"agg_sig.signers_bitmap does not match signers_bitmap\"\n },\n {\n \"code\": 6051,\n \"name\": \"RoundNotFinalizable\",\n \"msg\": \"round still inside dispute window; cannot finalize\"\n },\n {\n \"code\": 6052,\n \"name\": \"RoundNotPending\",\n \"msg\": \"round is not pending\"\n },\n {\n \"code\": 6053,\n \"name\": \"NothingToClaim\",\n \"msg\": \"no claimable rewards\"\n },\n {\n \"code\": 6054,\n \"name\": \"InvalidInstructionsSysvar\",\n \"msg\": \"instructions sysvar account is invalid\"\n },\n {\n \"code\": 6055,\n \"name\": \"UnauthorisedConsumer\",\n \"msg\": \"consumer authority is not the delegate authority\"\n },\n {\n \"code\": 6056,\n \"name\": \"InvalidCreditNodeAccount\",\n \"msg\": \"mismatched or missing credited node account\"\n },\n {\n \"code\": 6057,\n \"name\": \"AgentNotActive\",\n \"msg\": \"agent escrow is not active\"\n },\n {\n \"code\": 6058,\n \"name\": \"AmountMismatch\",\n \"msg\": \"computed price does not match the agent-signed amount\"\n },\n {\n \"code\": 6059,\n \"name\": \"EpochCapExceeded\",\n \"msg\": \"arithmetic overflow in escrow spend accounting\"\n },\n {\n \"code\": 6060,\n \"name\": \"InsufficientAgentCredits\",\n \"msg\": \"escrow ATA balance below computed price\"\n },\n {\n \"code\": 6061,\n \"name\": \"AgentSigInvalid\",\n \"msg\": \"agent request authorization signature is invalid or missing\"\n },\n {\n \"code\": 6062,\n \"name\": \"InvalidAgentCaps\",\n \"msg\": \"agent cap parameters invalid\"\n },\n {\n \"code\": 6063,\n \"name\": \"CreditedExceedsSelection\",\n \"msg\": \"credited signer count exceeds signatures_required + redundancy_buffer\"\n },\n {\n \"code\": 6064,\n \"name\": \"InvalidValueLength\",\n \"msg\": \"value exceeds Feed::MAX_VALUE_LEN\"\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 \"name\": \"max_signers\",\n \"type\": \"u8\"\n }\n ]\n }\n },\n {\n \"name\": \"AddPlanArgs\",\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\": \"private_api_enabled\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"is_active\",\n \"type\": \"bool\"\n }\n ]\n }\n },\n {\n \"name\": \"AgentEscrow\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"authority\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"status\",\n \"type\": {\n \"defined\": {\n \"name\": \"AgentStatus\"\n }\n }\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n }\n ]\n }\n },\n {\n \"name\": \"AgentEscrowClosed\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"agent\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"pubkey\"\n }\n ]\n }\n },\n {\n \"name\": \"AgentEscrowCreated\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"agent\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"authority\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"gateway\",\n \"type\": \"pubkey\"\n }\n ]\n }\n },\n {\n \"name\": \"AgentRoundSettled\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"agent\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"price\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"feed_id\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"timestamp\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"gateway\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"signers_bitmap\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"credited_count\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"recorded_slot\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"AgentStatus\",\n \"docs\": [\n \"Lifecycle status shared by `Delegate` and `AgentEscrow`.\"\n ],\n \"type\": {\n \"kind\": \"enum\",\n \"variants\": [\n {\n \"name\": \"Active\"\n },\n {\n \"name\": \"Paused\"\n }\n ]\n }\n },\n {\n \"name\": \"AggregatedSig\",\n \"docs\": [\n \"The committed aggregate Schnorr signature. **Not verified on the happy path.**\"\n ],\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"s\",\n \"docs\": [\n \"Schnorr scalar `s`.\"\n ],\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"rx\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"ry_parity\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"commitment_addr\",\n \"docs\": [\n \"Ethereum-style 20-byte commitment address of the aggregate nonce `R`.\"\n ],\n \"type\": {\n \"array\": [\n \"u8\",\n 20\n ]\n }\n },\n {\n \"name\": \"signers_bitmap\",\n \"docs\": [\n \"The credited set.\"\n ],\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 with persistent request quotas.\"\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\": \"status\",\n \"docs\": [\n \"Owner pause / protocol freeze backstop.\"\n ],\n \"type\": {\n \"defined\": {\n \"name\": \"AgentStatus\"\n }\n }\n },\n {\n \"name\": \"max_data_requests\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"data_requests_used\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"max_signers\",\n \"docs\": [\n \"Per-delegate quorum ceiling; clamped to `plan.max_signers` at creation.\"\n ],\n \"type\": \"u8\"\n },\n {\n \"name\": \"epoch_cap\",\n \"docs\": [\n \"Dormant: per-epoch credit ceiling for the future credit economy. Not enforced.\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"epoch_spent\",\n \"docs\": [\n \"Dormant: credits spent in the current epoch. Not enforced.\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"epoch_id\",\n \"docs\": [\n \"Dormant: epoch discriminator for `epoch_spent`. Not enforced.\"\n ],\n \"type\": \"i64\"\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\": \"max_data_requests\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"max_signers\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"delegate_count\",\n \"docs\": [\n \"Subscription delegate count after this addition.\"\n ],\n \"type\": \"u32\"\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\": \"data_requests_used\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"delegate_count\",\n \"docs\": [\n \"Subscription delegate count after this removal.\"\n ],\n \"type\": \"u32\"\n }\n ]\n }\n },\n {\n \"name\": \"DelegateStatusChanged\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"delegate_account\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"delegate\",\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\": \"by\",\n \"type\": \"pubkey\"\n }\n ]\n }\n },\n {\n \"name\": \"Feed\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"feed_id\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"value\",\n \"docs\": [\n \"Stored oracle bytes: raw payload (`FeedValueKind::Value`) or keccak digest\",\n \"(`FeedValueKind::Hash`). Never longer than [`Feed::STORED_VALUE_LEN`].\"\n ],\n \"type\": \"bytes\"\n },\n {\n \"name\": \"value_kind\",\n \"type\": {\n \"defined\": {\n \"name\": \"FeedValueKind\"\n }\n }\n },\n {\n \"name\": \"canonical_timestamp\",\n \"type\": \"i64\"\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\": \"feed_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\": \"i64\"\n },\n {\n \"name\": \"value\",\n \"docs\": [\n \"Compacted payload stored on the feed (raw ≤32 bytes, or keccak digest).\"\n ],\n \"type\": \"bytes\"\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 \"Whether [`Feed::value`] holds the raw oracle payload or a digest of a longer payload.\"\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 \"Bonded, Ed25519-signing gateway (v0.2 spec `gateway.authority`).\",\n \"\",\n \"Holds endpoint metadata, bond, and reward accounting. Keyed by the gateway's Solana\",\n \"authority key. `index` is the `gateway_index` referenced by `GatewayReceipt`.\"\n ],\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"authority\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"index\",\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\": \"bond\",\n \"docs\": [\n \"USDC bond held in the protocol treasury, slashable on a successful dispute.\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"claimable_rewards\",\n \"docs\": [\n \"Finalized fees, withdrawable via `claim_gateway_rewards`.\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"slashed\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"registered_at\",\n \"type\": \"i64\"\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\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\": \"bond\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"registered_at\",\n \"type\": \"i64\"\n }\n ]\n }\n },\n {\n \"name\": \"InitializeArgs\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"registry_cooldown_secs\",\n \"type\": \"i64\"\n },\n {\n \"name\": \"previous_grace_secs\",\n \"type\": \"i64\"\n },\n {\n \"name\": \"withdrawal_cooldown_secs\",\n \"type\": \"i64\"\n },\n {\n \"name\": \"max_node_count\",\n \"type\": \"u32\"\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\": \"gateway_fee\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"receipt_submitter_bonus\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"protocol_fee_bps\",\n \"type\": \"u16\"\n },\n {\n \"name\": \"max_receipt_delay_slots\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"protocol_fee\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"dispute_window_slots\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"gateway_bond_min\",\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\": \"agent_round_base\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"agent_round_per_sig\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"agent_epoch_len_secs\",\n \"type\": \"i64\"\n }\n ]\n }\n },\n {\n \"name\": \"Node\",\n \"docs\": [\n \"Slot-keyed registry entry and the single account touched by the round workflows.\",\n \"\",\n \"Keyed by `index` (`[SEED_PREFIX, index_le]`), it carries the node's registry slot, the\",\n \"secp256k1 coalition key used for Schnorr verification, and the reward balances accrued during\",\n \"settlement/finalization. Management/lifecycle data lives on the owner-keyed [`NodeOperator`].\"\n ],\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"index\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"owner\",\n \"docs\": [\n \"Operator wallet — used for claim authorization and deactivate validation.\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"secp256k1_pubkey_x\",\n \"docs\": [\n \"Validated affine coordinates. `register_node` is the only write path and accepts only a\",\n \"canonical compressed secp256k1 point, so verifier hot paths may safely skip re-parsing.\"\n ],\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\": \"claimable_rewards\",\n \"docs\": [\n \"Finalized rewards, withdrawable via `claim_node_rewards`.\"\n ],\n \"type\": \"u64\"\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\": \"owner\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"removed_index\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"moved_node\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"moved_old_index_or_virtual\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"current_version\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"deactivated_at\",\n \"type\": \"i64\"\n }\n ]\n }\n },\n {\n \"name\": \"NodeEndpointUpdated\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"owner\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"current_index\",\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 }\n },\n {\n \"name\": \"NodeOperator\",\n \"docs\": [\n \"Owner-keyed management/lifecycle account for a node operator.\",\n \"\",\n \"Keyed by `owner` (`[SEED_PREFIX, owner]`), it holds registration, deposit, status, and\",\n \"connectivity data — everything that is *not* needed by the per-round workflows. The workflow\",\n \"data (registry slot, coalition key, reward balances) lives on the slot-keyed [`super::Node`].\",\n \"`claimable_rewards` is the landing bucket for rewards migrated out of the virtual slot when a\",\n \"removal transition is finalized; it lets a deactivated operator still claim.\"\n ],\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"owner\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"current_index\",\n \"type\": \"u32\"\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 \"docs\": [\n \"Rewards migrated from the virtual slot at transition close, withdrawable via\",\n \"`claim_node_rewards` after deactivation.\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"registered_at\",\n \"type\": \"i64\"\n },\n {\n \"name\": \"deactivated_at\",\n \"type\": \"i64\"\n },\n {\n \"name\": \"withdrawable_at\",\n \"type\": \"i64\"\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n }\n ]\n }\n },\n {\n \"name\": \"NodeRegistered\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"node_id\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"new_index\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"owner\",\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\": \"current_version\",\n \"type\": \"u32\"\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\": \"NodeSlotFinalized\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"node_index\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"old_status\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"new_status\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"finalized_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\": \"Slashed\"\n },\n {\n \"name\": \"Exited\"\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\": \"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\": \"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\": \"treasury\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"reward_per_signature\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"gateway_fee\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"receipt_submitter_bonus\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"protocol_fee_bps\",\n \"type\": \"u16\"\n },\n {\n \"name\": \"max_receipt_delay_slots\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"protocol_fee\",\n \"docs\": [\n \"Fixed protocol fee per settled round (v0.2 §4.2 / §6).\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"dispute_window_slots\",\n \"docs\": [\n \"Slots a settled round must wait before `finalize_round` can run (dispute window).\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"gateway_bond_min\",\n \"docs\": [\n \"Minimum USDC bond a gateway must post to settle receipts.\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"challenger_bounty_bps\",\n \"docs\": [\n \"Challenger reward, in bps of the slashed bond, on a successful dispute.\"\n ],\n \"type\": \"u16\"\n },\n {\n \"name\": \"registry_cooldown_secs\",\n \"docs\": [\n \"Monotonic counter assigning `gateway_index` to bonded gateways.\"\n ],\n \"type\": \"i64\"\n },\n {\n \"name\": \"previous_grace_secs\",\n \"docs\": [\n \"Grace period after activation during which the previous registry version remains valid.\"\n ],\n \"type\": \"i64\"\n },\n {\n \"name\": \"max_node_count\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"redundancy_buffer\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"minimum_node_deposit\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"withdrawal_cooldown_secs\",\n \"type\": \"i64\"\n },\n {\n \"name\": \"agent_round_base\",\n \"docs\": [\n \"Base price of an agent `FreshRound` request (USDC atomic units).\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"agent_round_per_sig\",\n \"docs\": [\n \"Per-required-signature price component of a `FreshRound` request.\",\n \"Solvency invariant (ops-enforced): `agent_round_per_sig >= reward_per_signature`\",\n \"and `agent_round_base >= redundancy_buffer * reward_per_signature + gateway_fee`.\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"agent_epoch_len_secs\",\n \"docs\": [\n \"Length of the agent spend epoch (e.g. 86_400 for daily); must be > 0.\"\n ],\n \"type\": \"i64\"\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\": \"gateway_fee\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"receipt_submitter_bonus\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"protocol_fee_bps\",\n \"type\": \"u16\"\n },\n {\n \"name\": \"max_receipt_delay_slots\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"protocol_fee\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"dispute_window_slots\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"gateway_bond_min\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"challenger_bounty_bps\",\n \"type\": \"u16\"\n },\n {\n \"name\": \"registry_cooldown_secs\",\n \"type\": \"i64\"\n },\n {\n \"name\": \"previous_grace_secs\",\n \"type\": \"i64\"\n },\n {\n \"name\": \"max_node_count\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"redundancy_buffer\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"minimum_node_deposit\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"withdrawal_cooldown_secs\",\n \"type\": \"i64\"\n },\n {\n \"name\": \"agent_round_base\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"agent_round_per_sig\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"agent_epoch_len_secs\",\n \"type\": \"i64\"\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\": \"treasury\",\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\": \"RegisterGatewayArgs\",\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 \"name\": \"bond_amount\",\n \"type\": \"u64\"\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\": \"secp256k1_key_fingerprint\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\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\": \"RegistryState\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"authority\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"current_node_count\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"grace_secs\",\n \"type\": \"i64\"\n },\n {\n \"name\": \"redundancy_buffer\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"current_version\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"previous_version\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"previous_expires_at\",\n \"type\": \"i64\"\n },\n {\n \"name\": \"previous_node_count\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"last_transition_type\",\n \"type\": {\n \"defined\": {\n \"name\": \"RegistryTransitionType\"\n }\n }\n },\n {\n \"name\": \"removed_old_index\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"removed_node\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"moved_old_index\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"moved_node\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n }\n ]\n }\n },\n {\n \"name\": \"RegistryTransitionType\",\n \"type\": {\n \"kind\": \"enum\",\n \"variants\": [\n {\n \"name\": \"None\"\n },\n {\n \"name\": \"Add\"\n },\n {\n \"name\": \"RemoveTail\"\n },\n {\n \"name\": \"RemoveSwap\"\n }\n ]\n }\n },\n {\n \"name\": \"RegistryVersionActivated\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"previous_version\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"active_version\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"previous_expires_at\",\n \"type\": \"i64\"\n },\n {\n \"name\": \"activated_at\",\n \"type\": \"i64\"\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\": \"RewardsClaimed\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"beneficiary\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"destination\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"RoundDisputed\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"feed_id\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"timestamp\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"gateway\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"slashed_bond\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"challenger_bounty\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"RoundFinalized\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"feed_id\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"timestamp\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"credited_count\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"finalized_slot\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"RoundReceiptRecord\",\n \"docs\": [\n \"Per-round settlement record.\"\n ],\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"feed_id\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"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\": \"agg_sig_hash\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"data_update_message_hash\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"gateway\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"registry_version\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"reward_per_signature\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"gateway_fee\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"recorded_slot\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"status\",\n \"type\": {\n \"defined\": {\n \"name\": \"RoundRecordStatus\"\n }\n }\n },\n {\n \"name\": \"price\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n }\n ]\n }\n },\n {\n \"name\": \"RoundRecordStatus\",\n \"repr\": {\n \"kind\": \"rust\"\n },\n \"type\": {\n \"kind\": \"enum\",\n \"variants\": [\n {\n \"name\": \"Pending\"\n },\n {\n \"name\": \"Finalized\"\n },\n {\n \"name\": \"Voided\"\n }\n ]\n }\n },\n {\n \"name\": \"RoundSettled\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"gateway\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"feed_id\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"timestamp\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"signers_bitmap\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"credited_count\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"reward_per_signature\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"gateway_fee\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"recorded_slot\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"Secp256k1KeyClaim\",\n \"docs\": [\n \"Permanent reservation for a secp256k1 node key.\",\n \"\",\n \"The PDA is keyed by `keccak256(compressed_pubkey)`. Claims are intentionally never closed:\",\n \"once a key has represented a Molpha node it cannot later be replayed for another identity.\"\n ],\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"claimed\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"key_fingerprint\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"secp256k1_pubkey_compressed\",\n \"type\": {\n \"array\": [\n \"u8\",\n 33\n ]\n }\n },\n {\n \"name\": \"owner\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"node_id\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n }\n ]\n }\n },\n {\n \"name\": \"SettleAgentRoundArgs\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"authority\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"api_config_hash\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"canonical_timestamp\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"signatures_required\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"registry_version\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"agg_sig\",\n \"type\": {\n \"defined\": {\n \"name\": \"AggregatedSig\"\n }\n }\n },\n {\n \"name\": \"value\",\n \"type\": \"bytes\"\n }\n ]\n }\n },\n {\n \"name\": \"SettleRoundArgs\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"timestamp\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"api_config_hash\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"signatures_required\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"registry_version\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"agg_sig\",\n \"type\": {\n \"defined\": {\n \"name\": \"AggregatedSig\"\n }\n }\n },\n {\n \"name\": \"value\",\n \"type\": \"bytes\"\n },\n {\n \"name\": \"consumer_authority\",\n \"type\": \"pubkey\"\n }\n ]\n }\n },\n {\n \"name\": \"SubmitDataUpdateArgs\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"feed_id\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"registry_version\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"value\",\n \"type\": \"bytes\"\n },\n {\n \"name\": \"canonical_timestamp\",\n \"type\": \"i64\"\n },\n {\n \"name\": \"signatures_required\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"agg_sig_s\",\n \"docs\": [\n \"Schnorr signature R component\"\n ],\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"commitment_addr\",\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\": \"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\": \"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\": \"prepaid_usdc\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"price\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"valid_until\",\n \"type\": \"i64\"\n },\n {\n \"name\": \"used_rounds\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"max_rounds\",\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\": \"prepaid_usdc\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"valid_until\",\n \"type\": \"i64\"\n }\n ]\n }\n },\n {\n \"name\": \"SubscriptionVaultWithdrawn\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"authority\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"destination\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"UpdateConfigArgs\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"registry_cooldown_secs\",\n \"type\": \"i64\"\n },\n {\n \"name\": \"previous_grace_secs\",\n \"type\": \"i64\"\n },\n {\n \"name\": \"withdrawal_cooldown_secs\",\n \"type\": \"i64\"\n },\n {\n \"name\": \"max_node_count\",\n \"type\": \"u32\"\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\": \"gateway_fee\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"receipt_submitter_bonus\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"protocol_fee_bps\",\n \"type\": \"u16\"\n },\n {\n \"name\": \"max_receipt_delay_slots\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"protocol_fee\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"dispute_window_slots\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"gateway_bond_min\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"challenger_bounty_bps\",\n \"type\": \"u16\"\n },\n {\n \"name\": \"agent_round_base\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"agent_round_per_sig\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"agent_epoch_len_secs\",\n \"type\": \"i64\"\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 \"name\": \"UpdatePlanArgs\",\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\": \"private_api_enabled\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"is_active\",\n \"type\": \"bool\"\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 * submitDataUpdate, readFeed/readPlan/readSubscription,\n * getRegistrySelectionConfig, verifyNodeKeysForPrivateApi). Built from an\n * Anchor `Program` over the vendored IDL.\n */\nimport {\n AnchorProvider,\n Program,\n type Idl,\n type Wallet,\n} from \"@anchor-lang/core\";\nimport BN from \"bn.js\";\nimport type { Address } from \"@solana/kit\";\nimport { hexToBytes, toFixedBytes } from \"../core/encoding.js\";\nimport {\n normalizeSecp256k1PublicKeyHex,\n secp256k1PublicKeyFromCoordinates,\n} from \"../core/nodeKeys.js\";\nimport type { DataUpdateResult, Node, NodeKeyVerifierArgs, RegistrySelectionConfig } from \"../core/types.js\";\nimport {\n type RegistryStateView,\n resolveRegistryIndexForVersion,\n resolveRemainingAccounts,\n} from \"./accounts.js\";\nimport {\n getAssociatedTokenAddressSync,\n setComputeUnitLimit,\n SYSTEM_PROGRAM_ADDRESS,\n TOKEN_PROGRAM_ADDRESS,\n toSolanaAddress,\n type SolanaAddress,\n type SolanaConnection,\n} from \"./kit.js\";\nimport {\n feedPda,\n nodePda,\n planPda,\n protocolConfigPda,\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\nconst DEFAULT_COMPUTE_UNIT_LIMIT = 700_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 privateApiEnabled: boolean;\n isActive: boolean;\n}\n\nexport interface SubscriptionInfo {\n owner: Address;\n planType: PlanType;\n /** USDC base units prepaid on the subscription vault. */\n prepaidUsdc: bigint;\n /** Locked subscription price in USDC base units for the current period. */\n price: bigint;\n /** Unix timestamp (seconds) until which the subscription is valid. */\n validUntil: bigint;\n usedRounds: bigint;\n maxRounds: bigint;\n delegateCount: number;\n maxDelegates: number;\n maxSigners: number;\n}\n\nexport interface SubmitResult {\n signature: string;\n}\n\nexport interface FeedAccount {\n feedId: number[];\n value: number[];\n valueKind: { value: Record<string, never> } | { hash: Record<string, never> };\n canonicalTimestamp: BN;\n signaturesRequired: number;\n signersBitmap: number[];\n registryVersion: number;\n bump: number;\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 and selection `redundancy_buffer` from a single\n * `RegistryState` account read. Prefer this over {@link getRegistryVersion}\n * when deriving gateway selection bitmaps.\n */\n async getRegistrySelectionConfig(): Promise<RegistrySelectionConfig> {\n const registry = await this.fetchRegistry();\n return {\n registryVersion: registry.currentVersion,\n redundancyBuffer: registry.redundancyBuffer,\n };\n }\n\n async getRegistryVersion(): Promise<number> {\n const { registryVersion } = await this.getRegistrySelectionConfig();\n return registryVersion;\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 prepaidUsdc: BigInt(account.prepaidUsdc.toString()),\n price: BigInt(account.price.toString()),\n validUntil: BigInt(account.validUntil.toString()),\n usedRounds: BigInt(account.usedRounds.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 .accounts({\n owner,\n protocolConfig: protocolConfigPda(this.programId),\n plan: planPda(planId, this.programId),\n subscription: subscriptionPda(owner, this.programId),\n usdcMint,\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 .accounts({\n owner,\n protocolConfig: protocolConfigPda(this.programId),\n subscription,\n plan: planPda(planId, this.programId),\n usdcMint,\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 async submitDataUpdate(\n result: DataUpdateResult,\n opts?: { computeUnitLimit?: number },\n ): Promise<SubmitResult> {\n const registry = await this.fetchRegistry();\n const feedId = hexToBytes(result.feedId);\n const remaining = resolveRemainingAccounts(result, registry, this.programId);\n const cuIx = setComputeUnitLimit(opts?.computeUnitLimit ?? DEFAULT_COMPUTE_UNIT_LIMIT);\n\n const signature = await this.methods\n .submitDataUpdate(this.buildSubmitArgs(result))\n .accounts({\n submitter: this.wallet,\n registryState: registryStatePda(this.programId),\n feed: feedPda(feedId, this.programId),\n systemProgram: SYSTEM_PROGRAM_ADDRESS,\n })\n .remainingAccounts(remaining)\n .preInstructions([cuIx])\n .rpc();\n return { signature };\n }\n\n async readFeed(feedId: string): Promise<FeedAccount | null> {\n const feed = feedPda(hexToBytes(feedId), this.programId);\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 for the round's registry version.\n */\n async verifyNodeKeysForPrivateApi(args: NodeKeyVerifierArgs): Promise<void> {\n const registry = await this.fetchRegistry();\n const selectedNodes = selectedNodesForVerifier(args);\n\n await Promise.all(\n selectedNodes.map(async (node) => {\n const registryIndex = resolveRegistryIndexForVersion(\n node.index,\n args.registryVersion,\n registry,\n );\n const account = await this.fetchNodeAccount(registryIndex, node.index);\n const onChainKey = secp256k1PublicKeyFromCoordinates(\n nodeCoordinate(account, \"secp256k1PubkeyX\", \"secp256k1_pubkey_x\"),\n nodeCoordinate(account, \"secp256k1PubkeyY\", \"secp256k1_pubkey_y\"),\n `Node(${registryIndex}) 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(${registryIndex})`,\n );\n }\n }),\n );\n }\n\n private buildSubmitArgs(result: DataUpdateResult) {\n return {\n feedId: Array.from(hexToBytes(result.feedId)),\n registryVersion: result.registryVersion,\n value: Buffer.from(hexToBytes(result.valuePacked)),\n canonicalTimestamp: new BN(result.timestamp),\n signaturesRequired: result.signaturesRequired,\n aggSigS: Array.from(toFixedBytes(result.s, 32, \"s\")),\n commitmentAddr: Array.from(toFixedBytes(result.commitmentAddr, 20, \"commitmentAddr\")),\n signersBitmap: Array.from(toFixedBytes(result.signersBitmap, 32, \"signersBitmap\")),\n };\n }\n\n private decodePlan(account: {\n planType: Record<string, unknown>;\n subscriptionPrice: { toString(): string };\n maxSigners: number;\n maxDelegates: number;\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 privateApiEnabled: account.privateApiEnabled,\n isActive: account.isActive,\n };\n }\n\n private async fetchRegistry(): Promise<RegistryStateView> {\n const registry = await this.accounts.registryState.fetch(\n registryStatePda(this.programId),\n );\n return {\n currentVersion: registry.currentVersion,\n previousVersion: registry.previousVersion,\n previousExpiresAt: BigInt(registry.previousExpiresAt.toString()),\n redundancyBuffer: registry.redundancyBuffer,\n lastTransitionType: registry.lastTransitionType,\n removedOldIndex: registry.removedOldIndex,\n movedOldIndex: registry.movedOldIndex,\n };\n }\n\n private async fetchNodeAccount(\n registryIndex: number,\n selectedNodeIndex: number,\n ): Promise<NodeAccount> {\n try {\n return await this.accounts.node.fetch(nodePda(registryIndex, this.programId));\n } catch (err) {\n const detail = err instanceof Error ? err.message : String(err);\n throw new Error(\n `Failed to fetch on-chain Node(${registryIndex}) for selected node ${selectedNodeIndex}: ${detail}`,\n );\n }\n }\n\n private async fetchProtocolTokens(): Promise<{ usdcMint: Address; treasury: Address }> {\n const config = await this.accounts.protocolConfig.fetch(\n protocolConfigPda(this.programId),\n );\n return {\n usdcMint: toSolanaAddress(config.usdcMint),\n treasury: toSolanaAddress(config.treasury),\n };\n }\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 * Feed-id derivation. Must stay byte-identical with the Solana program and the EVM\n * verifier — this encodes what the *program* verifies (the 4-field `feedId`), not\n * the richer form described in the protocol spec doc.\n */\nimport { keccak_256 } from \"@noble/hashes/sha3.js\";\nimport { bytesToHex, concatBytes, ensureLength, utf8 } from \"./encoding.js\";\n\nconst FEED_ID_PREFIX = utf8(\"MOLPHA_JOB_V1\");\n\n/**\n * `feedId = keccak256(FEED_ID_PREFIX || owner || apiConfigHash || [signaturesRequired])`.\n * @param owner 32-byte owner pubkey.\n * @param apiConfigHash 32-byte API config hash.\n * @param signaturesRequired Per-feed quorum threshold (u8 on-chain).\n */\nexport function deriveFeedId(\n owner: Uint8Array,\n apiConfigHash: Uint8Array,\n signaturesRequired: number,\n): Uint8Array {\n ensureLength(owner, 32, \"owner\");\n ensureLength(apiConfigHash, 32, \"apiConfigHash\");\n if (!Number.isInteger(signaturesRequired) || signaturesRequired < 0 || signaturesRequired > 255) {\n throw new RangeError(`signaturesRequired out of range: ${signaturesRequired}`);\n }\n return keccak_256(\n concatBytes(FEED_ID_PREFIX, owner, apiConfigHash, Uint8Array.of(signaturesRequired)),\n );\n}\n\n/** Hex-encoded `deriveFeedId` (64 lowercase hex chars). */\nexport function deriveFeedIdString(\n owner: Uint8Array,\n apiConfigHash: Uint8Array,\n signaturesRequired: number,\n): string {\n return bytesToHex(deriveFeedId(owner, apiConfigHash, signaturesRequired));\n}\n","/**\n * Minimal Molpha verifier ABI for `verify` and registry reads.\n * Matches `IValidator` in the Molpha EVM contracts repo.\n */\nexport const MOLPHA_VERIFIER_ABI = [\n {\n type: \"function\",\n name: \"verify\",\n stateMutability: \"view\",\n inputs: [\n {\n name: \"dataUpdate\",\n type: \"tuple\",\n components: [\n { name: \"jobId\", type: \"bytes32\" },\n { name: \"registryVersion\", type: \"uint32\" },\n { name: \"signaturesRequired\", type: \"uint32\" },\n { name: \"value\", type: \"bytes32\" },\n { name: \"canonicalTimestamp\", type: \"uint64\" },\n ],\n },\n {\n name: \"schnorrData\",\n type: \"tuple\",\n components: [\n { name: \"signature\", type: \"bytes32\" },\n { name: \"commitment\", type: \"address\" },\n { name: \"signersBitmap\", type: \"uint256\" },\n ],\n },\n ],\n outputs: [{ name: \"\", type: \"bool\" }],\n },\n {\n type: \"function\",\n name: \"getRegistryVersion\",\n stateMutability: \"view\",\n inputs: [],\n outputs: [{ name: \"registryVersion\", type: \"uint256\" }],\n },\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 argument helpers — framework-agnostic tuple builders for\n * `verify(DataUpdate, SchnorrSignature)` on deployed Molpha verifier contracts.\n */\nimport { bigIntFromBytesBe, toFixedBytes } from \"../core/encoding.js\";\nimport type { DataUpdateResult } from \"../core/types.js\";\n\n/** `(bytes32 feedId, uint32 registryVersion, uint32 signaturesRequired, bytes32 valuePacked, uint64 timestamp)` */\nexport type EvmDataUpdateTuple = readonly [\n feedId: `0x${string}`,\n registryVersion: number,\n signaturesRequired: number,\n valuePacked: `0x${string}`,\n timestamp: number,\n];\n\n/** `(bytes32 s, address commitment, uint256 signersBitmap)` */\nexport type EvmSchnorrSignatureTuple = readonly [\n s: `0x${string}`,\n commitment: `0x${string}`,\n signersBitmap: bigint,\n];\n\nexport interface EvmVerifierArgs {\n dataUpdate: EvmDataUpdateTuple;\n signature: EvmSchnorrSignatureTuple;\n}\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/** Build verifier `DataUpdate` and `SchnorrSignature` tuples from a gateway result. */\nexport function buildEvmVerifierArgs(result: DataUpdateResult): EvmVerifierArgs {\n const dataUpdate: EvmDataUpdateTuple = [\n toFixedHex(result.feedId, 32, \"feedId\"),\n result.registryVersion,\n result.signaturesRequired,\n toFixedHex(result.valuePacked, 32, \"valuePacked\"),\n result.timestamp,\n ];\n\n const signature: EvmSchnorrSignatureTuple = [\n toFixedHex(result.s, 32, \"signature\"),\n toFixedHex(result.commitmentAddr, 20, \"commitment\"),\n signersBitmapToUint256(result.signersBitmap),\n ];\n\n return { dataUpdate, signature };\n}\n\n/** Decimal string form of the signers bitmap — useful for JSON logging or legacy tooling. */\nexport function signersBitmapToDecimal(value: string): string {\n return signersBitmapToUint256(value).toString();\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 argument helpers — framework-agnostic struct builders for\n * `verify(DataUpdate, SchnorrSignature)` on deployed Molpha verifier contracts.\n */\nimport { bigIntFromBytesBe, toFixedBytes } from \"../core/encoding.js\";\nimport type { DataUpdateResult } from \"../core/types.js\";\n\n/** Starknet calldata shape for `DataUpdate`. */\nexport interface StarknetDataUpdate {\n feed_id: bigint;\n registry_version: number;\n signatures_required: number;\n value: bigint;\n canonical_timestamp: number;\n}\n\n/** Starknet calldata shape for `SchnorrSignature`. */\nexport interface StarknetSchnorrSignature {\n signature: bigint;\n commitment: bigint;\n signers_bitmap: bigint;\n}\n\nexport interface StarknetVerifierArgs {\n dataUpdate: StarknetDataUpdate;\n signature: StarknetSchnorrSignature;\n}\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/** Convert a 20-byte EVM-style 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/** Build verifier `DataUpdate` and `SchnorrSignature` structs from a gateway result. */\nexport function buildStarknetVerifierArgs(result: DataUpdateResult): StarknetVerifierArgs {\n const dataUpdate: StarknetDataUpdate = {\n feed_id: fixedHexToBigInt(result.feedId, 32, \"feedId\"),\n registry_version: result.registryVersion,\n signatures_required: result.signaturesRequired,\n value: fixedHexToBigInt(result.valuePacked, 32, \"valuePacked\"),\n canonical_timestamp: result.timestamp,\n };\n\n const signature: StarknetSchnorrSignature = {\n signature: fixedHexToBigInt(result.s, 32, \"signature\"),\n commitment: commitmentAddressToStarknetFelt(result.commitmentAddr),\n signers_bitmap: signersBitmapToStarknetUint256(result.signersBitmap),\n };\n\n return { dataUpdate, signature };\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 { type RequestSignedDataOptions, MolphaGateway } from \"./gateway/index.js\";\nimport { MolphaSolanaClient } from \"./solana/client.js\";\nimport type { DataUpdateResult } 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 /** Defaults to `DEFAULT_GATEWAY_ENDPOINT`. Pass multiple URLs for failover. */\n endpoints?: string | string[];\n connection: SolanaConnection;\n /** On-chain txs + gateway auth (see `MolphaWallet`). */\n wallet: MolphaWallet;\n /** Defaults to the vendored IDL's program address. */\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 this.solana = MolphaSolanaClient.create({\n connection: opts.connection,\n wallet: opts.wallet,\n programId: opts.programId ?? address(MOLPHA_PROGRAM_ADDRESS),\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 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 to the feed.\n */\n async requestAndSubmit(\n feedId: string,\n opts: Omit<RequestSignedDataOptions, \"feedId\">,\n ): Promise<{ result: DataUpdateResult; signature: string }> {\n const result = await this.gateway.requestSignedData({ feedId, ...opts });\n const { signature } = await this.solana.submitDataUpdate(result);\n return { result, signature };\n }\n}\n"]}
|