{"version":3,"sources":["../src/helpers/constants.ts","../src/helpers/address.ts","../src/helpers/encoding.ts","../src/helpers/utils.ts","../src/helpers/signature.ts","../src/helpers/webcrypto.ts","../src/proto/gen/buf/validate/validate_pb.ts","../src/proto/gen/google/api/field_behavior_pb.ts","../src/proto/gen/thru/common/v1/consensus_pb.ts","../src/proto/gen/thru/common/v1/primitives_pb.ts","../src/proto/gen/thru/common/v1/filters_pb.ts","../src/proto/gen/thru/common/v1/pagination_pb.ts","../src/proto/gen/thru/core/v1/types_pb.ts","../src/proto/gen/thru/core/v1/account_pb.ts","../src/proto/gen/thru/core/v1/block_pb.ts","../src/proto/gen/thru/core/v1/node_pb.ts","../src/proto/gen/thru/core/v1/state_pb.ts","../src/proto/gen/thru/core/v1/transaction_pb.ts","../src/proto/gen/google/api/http_pb.ts","../src/proto/gen/google/api/annotations_pb.ts","../src/proto/gen/google/api/launch_stage_pb.ts","../src/proto/gen/google/api/client_pb.ts","../src/proto/gen/thru/services/v1/command_service_pb.ts","../src/proto/gen/thru/services/v1/query_service_pb.ts","../src/proto/gen/thru/services/v1/streaming_service_pb.ts","../thru-ts-client-sdk/domain/primitives/byte-utils.ts","../thru-ts-client-sdk/domain/primitives/constants.ts","../thru-ts-client-sdk/domain/primitives/Pubkey.ts","../thru-ts-client-sdk/domain/primitives/Signature.ts","../thru-ts-client-sdk/defaults.ts","../thru-ts-client-sdk/domain/transactions/domain-signing.ts","../thru-ts-client-sdk/domain/transactions/domain-signing-legacy.ts","../thru-ts-client-sdk/wire-format.ts","../thru-ts-client-sdk/domain/transactions/Transaction.ts","../thru-ts-client-sdk/domain/transactions/transaction-signing-scheme.ts","../thru-ts-client-sdk/core/client.ts","../thru-ts-client-sdk/domain/pagination/Page.ts","../thru-ts-client-sdk/utils/utils.ts","../thru-ts-client-sdk/domain/transactions/streaming.ts","../thru-ts-client-sdk/domain/transactions/utils.ts","../thru-ts-client-sdk/domain/transactions/TransactionBuilder.ts","../thru-ts-client-sdk/domain/transactions/TransactionStatusSnapshot.ts","../thru-ts-client-sdk/domain/accounts/Account.ts","../thru-ts-client-sdk/domain/accounts/streaming.ts","../thru-ts-client-sdk/domain/proofs/StateProof.ts","../thru-ts-client-sdk/modules/proofs.ts","../thru-ts-client-sdk/modules/chain.ts","../src/core-program-addresses.ts","../thru-ts-client-sdk/modules/accounts.ts","../thru-ts-client-sdk/domain/height/HeightSnapshot.ts","../thru-ts-client-sdk/modules/height.ts","../thru-ts-client-sdk/domain/blocks/BlockFooter.ts","../thru-ts-client-sdk/domain/blocks/BlockHeader.ts","../thru-ts-client-sdk/domain/blocks/Block.ts","../thru-ts-client-sdk/domain/events/ChainEvent.ts","../thru-ts-client-sdk/domain/filters/Filter.ts","../thru-ts-client-sdk/modules/streaming.ts","../thru-ts-client-sdk/modules/transactions.ts","../thru-ts-client-sdk/modules/consensus.ts","../thru-ts-client-sdk/modules/compression/types.ts","../thru-ts-client-sdk/modules/compression/accounts.ts","../thru-ts-client-sdk/domain/programs/helpers/bytes.ts","../thru-ts-client-sdk/domain/programs/passkey-manager/context.ts","../thru-ts-client-sdk/domain/programs/passkey-manager/abi/thru/common/primitives/types.ts","../thru-ts-client-sdk/domain/programs/passkey-manager/abi/thru/blockchain/state_proof/types.ts","../thru-ts-client-sdk/domain/programs/passkey-manager/abi/thru/program/passkey_manager/types.ts","../thru-ts-client-sdk/modules/compression/wallet.ts","../thru-ts-client-sdk/modules/compression/session.ts","../thru-ts-client-sdk/domain/programs/compression/abi/thru/blockchain/state_proof/types.ts","../thru-ts-client-sdk/domain/programs/compression/abi/thru/program/compression/types.ts","../thru-ts-client-sdk/domain/programs/compression/instructions.ts","../thru-ts-client-sdk/modules/helpers.ts","../thru-ts-client-sdk/domain/programs/utils/helpers.ts","../thru-ts-client-sdk/domain/programs/multicall/abi/thru/common/primitives/types.ts","../thru-ts-client-sdk/domain/programs/multicall/abi/thru/program/multicall/types.ts","../thru-ts-client-sdk/domain/programs/multicall/index.ts","../thru-ts-client-sdk/domain/programs/uploader/abi/thru/common/primitives/types.ts","../thru-ts-client-sdk/domain/programs/uploader/abi/thru/program/uploader/types.ts","../thru-ts-client-sdk/domain/programs/uploader/instructions.ts","../thru-ts-client-sdk/domain/programs/uploader/constants.ts","../thru-ts-client-sdk/domain/programs/uploader/derivation.ts","../thru-ts-client-sdk/modules/compression/instructions.ts","../thru-ts-client-sdk/modules/compression/status.ts","../thru-ts-client-sdk/modules/compression/workflows.ts","../thru-ts-client-sdk/modules/compression/index.ts","../thru-ts-client-sdk/modules/blocks.ts","../thru-ts-client-sdk/modules/events.ts","../src/crypto/hdwallet.ts","../thru-ts-client-sdk/modules/keys.ts","../thru-ts-client-sdk/modules/node.ts","../thru-ts-client-sdk/modules/nonce.ts","../thru-ts-client-sdk/modules/slots.ts","../thru-ts-client-sdk/domain/version/VersionInfo.ts","../thru-ts-client-sdk/modules/version.ts","../thru-ts-client-sdk/core/bound-client.ts","../thru-ts-client-sdk/client.ts"],"names":["a","b","c","d","triple","byte1","byte2","maskForBits","file_google_protobuf_descriptor","file_google_protobuf_duration","file_google_protobuf_field_mask","file_google_protobuf_timestamp","fileDesc","messageDesc","ConsensusStatus","serviceDesc","create","hashes","sha512","copyBytes","etc","Point","result","sha256","utils","SIGNATURE_SIZE","PUBKEY_SIZE","concatBytes","sha512Bytes","bytesToNumberLE","modOrder","numberToBytesLE","signWithDomain","transaction","createGrpcWebTransport","createClient","_StateProof","ConnectError","createInstructionContext","Code","bytesEqual","remainder","low","high","Date","InstructionData","Pubkey","Signature","__tnWarnings","__tnHasNativeBigInt","__tnHasBigIntDataView","__tnConsole","__tnLogWarn","__tnWarnOnce","__tnResolveBuilderInput","__tnMask32","__tnSignBit32","__tnToBigInt","__tnBigIntToNumber","__tnBigIntEquals","__tnBigIntGreaterThan","__tnRaiseIrError","__tnCheckedAdd","__tnCheckedSub","__tnCheckedMul","__tnCheckedDiv","__tnCheckedMod","__tnBitwise","__tnCheckedShift","__tnAlign","__tnSplitUint64","__tnSplitInt64","__tnPolyfillReadUint64","__tnPolyfillReadInt64","__tnPolyfillWriteUint64","__tnPolyfillWriteInt64","__tnFootprintRegistry","__tnValidateRegistry","__tnDynamicValidateRegistry","__tnRegisterFootprint","__tnRegisterValidate","__tnRegisterDynamicValidate","__tnInvokeFootprint","__tnInvokeValidate","__tnInvokeDynamicValidate","__tnEvalFootprint","__tnEvalIrNode","__tnTryEvalIr","__tnNormalizeIrError","__tnIsEvalError","__tnValidateIrTree","StateProof","__tnCreateVariantSelector","__tnCreateFamWriter","ValidateArgs","params","WalletAccount","PasskeyEvent","_CreateArgs","CreateArgs","RegisterCredentialArgs","PasskeyInstruction","notFound","payer","__tnPopcount","__tn_ir_Hash","Hash","HashBuilder","__tn_ir_Pubkey","PubkeyBuilder","__tn_ir_StateProofHeader","StateProofHeader","StateProofHeaderBuilder","__tn_ir_StateProof","StateProof_proof_body_existing_Inner","StateProof_proof_body_updating_Inner","StateProof_proof_body_creation_Inner","StateProof_proof_body_Inner","StateProofBuilder","__tnResolveStructFieldInput","__tnMaybeCallBuilder","CompressionError","CompressArgs","DecompressArgs","CompressionInstruction","accountIndex","PUBKEY_LENGTH","normalizeSeed","__tn_ir_Date","DateBuilder","__tn_ir_Duration","Duration","DurationBuilder","__tn_ir_FixedPoint","FixedPoint","FixedPointBuilder","__tn_ir_InstructionData","_InstructionData","InstructionDataBuilder","__tn_ir_Signature","SignatureBuilder","__tn_ir_Timestamp","Timestamp","TimestampBuilder","MulticallArgs","WriteArgs","__tn_ir_CreateArgs","CreateArgsBuilder","UploaderInstruction","envelope","u16","HDKey","getPublicKeyAsync"],"mappings":"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","file":"client.cjs","sourcesContent":["export const BASE64_URL_ALPHABET = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_\";\n\nconst tempMap = new Int16Array(256).fill(-1);\nfor (let i = 0; i < BASE64_URL_ALPHABET.length; i++) {\n    tempMap[BASE64_URL_ALPHABET.charCodeAt(i)] = i;\n}\nexport const BASE64_URL_MAP = tempMap\n\n","import { BASE64_URL_ALPHABET, BASE64_URL_MAP } from \"./constants\";\n\nexport function encodeAddress(bytes: Uint8Array): string {\n  if (bytes.length !== 32) {\n    throw new Error('Expected 32-byte address');\n  }\n\n  let checksum = 0;\n  let accumulator = 0;\n  let bitsCollected = 0;\n  const output: string[] = ['t', 'a'];\n\n  for (let i = 0; i < 30; i++) {\n    const byte = bytes[i];\n    checksum += byte;\n    accumulator = ((accumulator << 8) | byte) >>> 0;\n    bitsCollected += 8;\n    while (bitsCollected >= 6) {\n      const index = (accumulator >> (bitsCollected - 6)) & 0x3f;\n      output.push(BASE64_URL_ALPHABET[index]);\n      bitsCollected -= 6;\n      accumulator &= maskForBits(bitsCollected);\n    }\n  }\n\n  const secondLast = bytes[30];\n  checksum += secondLast;\n  accumulator = ((accumulator << 8) | secondLast) >>> 0;\n  bitsCollected += 8;\n\n  const last = bytes[31];\n  checksum += last;\n  accumulator = ((accumulator << 8) | last) >>> 0;\n  bitsCollected += 8;\n\n  accumulator = ((accumulator << 8) | (checksum & 0xff)) >>> 0;\n  bitsCollected += 8;\n\n  while (bitsCollected >= 6) {\n    const index = (accumulator >> (bitsCollected - 6)) & 0x3f;\n    output.push(BASE64_URL_ALPHABET[index]);\n    bitsCollected -= 6;\n    accumulator &= maskForBits(bitsCollected);\n  }\n\n  return output.join('');\n}\n\nexport function decodeAddress(value: string): Uint8Array {\n  if (value.length !== 46) {\n    throw new Error('Invalid address length');\n  }\n  if (!value.startsWith('ta')) {\n    throw new Error('Address must start with \"ta\"');\n  }\n\n  const output = new Uint8Array(32);\n  let checksum = 0;\n  let inIdx = 2;\n  let remaining = 40;\n  let outIdx = 0;\n\n  while (remaining >= 4) {\n    const a = BASE64_URL_MAP[value.charCodeAt(inIdx)];\n    const b = BASE64_URL_MAP[value.charCodeAt(inIdx + 1)];\n    const c = BASE64_URL_MAP[value.charCodeAt(inIdx + 2)];\n    const d = BASE64_URL_MAP[value.charCodeAt(inIdx + 3)];\n    if (a < 0 || b < 0 || c < 0 || d < 0) {\n      throw new Error('Invalid address encoding');\n    }\n    const triple = (a << 18) | (b << 12) | (c << 6) | d;\n    const byte1 = (triple >> 16) & 0xff;\n    const byte2 = (triple >> 8) & 0xff;\n    const byte3 = triple & 0xff;\n    checksum += byte1;\n    checksum += byte2;\n    checksum += byte3;\n    output[outIdx++] = byte1;\n    output[outIdx++] = byte2;\n    output[outIdx++] = byte3;\n    inIdx += 4;\n    remaining -= 4;\n  }\n\n  const a = BASE64_URL_MAP[value.charCodeAt(inIdx)];\n  const b = BASE64_URL_MAP[value.charCodeAt(inIdx + 1)];\n  const c = BASE64_URL_MAP[value.charCodeAt(inIdx + 2)];\n  const d = BASE64_URL_MAP[value.charCodeAt(inIdx + 3)];\n  if (a < 0 || b < 0 || c < 0 || d < 0) {\n    throw new Error('Invalid address encoding');\n  }\n  const triple = (a << 18) | (b << 12) | (c << 6) | d;\n  const byte1 = (triple >> 16) & 0xff;\n  const byte2 = (triple >> 8) & 0xff;\n  const incomingChecksum = triple & 0xff;\n\n  checksum += byte1;\n  checksum += byte2;\n  output[outIdx++] = byte1;\n  output[outIdx++] = byte2;\n\n  checksum &= 0xff;\n  if (checksum !== incomingChecksum) {\n    throw new Error('Address checksum mismatch');\n  }\n\n  return output;\n}\n\nfunction maskForBits(bits: number): number {\n  return bits === 0 ? 0 : (1 << bits) - 1;\n}\n","export function decodeBase64(value: string): Uint8Array {\n  if (value.length === 0) {\n    return new Uint8Array();\n  }\n  const atobFn = globalThis.atob;\n  if (!atobFn) {\n    throw new Error('Base64 decoding requires globalThis.atob support');\n  }\n  const binary = atobFn(value);\n  const bytes = new Uint8Array(binary.length);\n  for (let i = 0; i < binary.length; i++) {\n    bytes[i] = binary.charCodeAt(i);\n  }\n  return bytes;\n}\n\nexport function hexToBytes(value: string): Uint8Array {\n  const normalized = value.startsWith('0x') ? value.slice(2) : value;\n  if (normalized.length % 2 !== 0) {\n    throw new Error('Hex string must contain an even number of characters');\n  }\n  const bytes = new Uint8Array(normalized.length / 2);\n  for (let i = 0; i < normalized.length; i += 2) {\n    const byte = parseInt(normalized.slice(i, i + 2), 16);\n    if (Number.isNaN(byte)) {\n      throw new Error('Hex string contains invalid characters');\n    }\n    bytes[i / 2] = byte;\n  }\n  return bytes;\n}\n\nexport function isHexString(value: string): boolean {\n  const normalized = value.startsWith('0x') ? value.slice(2) : value;\n  return normalized.length % 2 === 0 && normalized.length > 0 && /^[0-9a-fA-F]+$/.test(normalized);\n}\n","import { decodeBase64 } from \"./encoding\";\n\nexport function ensureBytes(value: Uint8Array | string | undefined, field: string): Uint8Array {\n    if (value instanceof Uint8Array) {\n        if (value.length === 0) {\n            throw new Error(`${field} cannot be empty`);\n        }\n        return value;\n    }\n    if (typeof value === \"string\") {\n        if (value.length === 0) {\n            throw new Error(`${field} cannot be empty`);\n        }\n        return decodeBase64(value);\n    }\n    throw new Error(`${field} is required`);\n}\n\nexport function maskForBits(bits: number): number {\n    return bits === 0 ? 0 : (1 << bits) - 1;\n}","import { BASE64_URL_ALPHABET, BASE64_URL_MAP } from \"./constants\";\nimport { maskForBits } from \"./utils\";\n\nexport function encodeSignature(bytes: Uint8Array): string {\n    if (bytes.length !== 64) {\n        throw new Error(\"Expected 64-byte signature\");\n    }\n    let checksum = 0;\n    let accumulator = 0;\n    let bitsCollected = 0;\n    const output: string[] = [\"t\", \"s\"];\n\n    for (let i = 0; i < 63; i++) {\n        const byte = bytes[i];\n        checksum += byte;\n        accumulator = ((accumulator << 8) | byte) >>> 0;\n        bitsCollected += 8;\n        while (bitsCollected >= 6) {\n            const index = (accumulator >> (bitsCollected - 6)) & 0x3f;\n            output.push(BASE64_URL_ALPHABET[index]);\n            bitsCollected -= 6;\n            accumulator &= maskForBits(bitsCollected);\n        }\n    }\n\n    const lastByte = bytes[63];\n    checksum += lastByte;\n    accumulator = ((accumulator << 8) | lastByte) >>> 0;\n    bitsCollected += 8;\n    accumulator = ((accumulator << 16) | (checksum & 0xffff)) >>> 0;\n    bitsCollected += 16;\n\n    while (bitsCollected >= 6) {\n        const index = (accumulator >> (bitsCollected - 6)) & 0x3f;\n        output.push(BASE64_URL_ALPHABET[index]);\n        bitsCollected -= 6;\n        accumulator &= maskForBits(bitsCollected);\n    }\n\n    return output.join(\"\");\n}\n\nexport function decodeSignature(value: string): Uint8Array {\n    if (value.length !== 90) {\n        throw new Error(\"Invalid signature length\");\n    }\n    if (!value.startsWith(\"ts\")) {\n        throw new Error('Signature must start with \"ts\"');\n    }\n\n    const output = new Uint8Array(64);\n    let checksum = 0;\n    let inIdx = 2;\n    let remaining = 84;\n    let outIdx = 0;\n\n    while (remaining > 0) {\n        const a = BASE64_URL_MAP[value.charCodeAt(inIdx)];\n        const b = BASE64_URL_MAP[value.charCodeAt(inIdx + 1)];\n        const c = BASE64_URL_MAP[value.charCodeAt(inIdx + 2)];\n        const d = BASE64_URL_MAP[value.charCodeAt(inIdx + 3)];\n        if (a < 0 || b < 0 || c < 0 || d < 0) {\n            throw new Error(\"Invalid signature encoding\");\n        }\n        const triple = (a << 18) | (b << 12) | (c << 6) | d;\n        const byte1 = (triple >> 16) & 0xff;\n        const byte2 = (triple >> 8) & 0xff;\n        const byte3 = triple & 0xff;\n        checksum += byte1;\n        checksum += byte2;\n        checksum += byte3;\n        output[outIdx++] = byte1;\n        output[outIdx++] = byte2;\n        output[outIdx++] = byte3;\n        inIdx += 4;\n        remaining -= 4;\n    }\n\n    const a = BASE64_URL_MAP[value.charCodeAt(inIdx)];\n    const b = BASE64_URL_MAP[value.charCodeAt(inIdx + 1)];\n    const c = BASE64_URL_MAP[value.charCodeAt(inIdx + 2)];\n    const d = BASE64_URL_MAP[value.charCodeAt(inIdx + 3)];\n    if (a < 0 || b < 0 || c < 0 || d < 0) {\n        throw new Error(\"Invalid signature encoding\");\n    }\n    const triple = (a << 18) | (b << 12) | (c << 6) | d;\n    const finalByte = (triple >> 16) & 0xff;\n    checksum += finalByte;\n    output[outIdx] = finalByte;\n\n    const incomingChecksum = triple & 0xffff;\n    checksum &= 0xffff;\n    if (checksum !== incomingChecksum) {\n        throw new Error(\"Signature checksum mismatch\");\n    }\n\n    return output;\n}","export function getWebCrypto(): Crypto {\n  const cryptoObj = typeof globalThis !== 'undefined' ? (globalThis as { crypto?: Crypto }).crypto : undefined;\n\n  if (cryptoObj && typeof cryptoObj.getRandomValues === 'function') {\n    return cryptoObj;\n  }\n\n  throw new Error('Web Crypto API is unavailable. Provide a polyfill exposing globalThis.crypto.');\n}\n","// Copyright 2023-2026 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// @generated by protoc-gen-es v2.12.0 with parameter \"target=ts\"\n// @generated from file buf/validate/validate.proto (package buf.validate, syntax proto2)\n/* eslint-disable */\n\n// [Protovalidate](https://protovalidate.com/) is the semantic validation library for Protobuf.\n// It provides standard annotations to validate common rules on messages and fields, as well as the ability to use [CEL](https://cel.dev) to write custom rules.\n// It's the next generation of [protoc-gen-validate](https://github.com/bufbuild/protoc-gen-validate).\n//\n// This package provides the options, messages, and enums that power Protovalidate.\n// Apply its options to messages, fields, and oneofs in your Protobuf schemas to add validation rules:\n//\n// ```proto\n// message User {\n//   string id = 1 [(buf.validate.field).string.uuid = true];\n//   string first_name = 2 [(buf.validate.field).string.max_len = 64];\n//   string last_name = 3 [(buf.validate.field).string.max_len = 64];\n//\n//   option (buf.validate.message).cel = {\n//     id: \"first_name_requires_last_name\"\n//     message: \"last_name must be present if first_name is present\"\n//     expression: \"!has(this.first_name) || has(this.last_name)\"\n//   };\n// }\n// ```\n//\n// These rules are enforced at runtime by language-specific libraries.\n// See the [developer quickstart](https://protovalidate.com/quickstart/) to get started, or go directly to the runtime library for your language:\n// [Go](https://github.com/bufbuild/protovalidate-go),\n// [JavaScript/TypeScript](https://github.com/bufbuild/protovalidate-es),\n// [Java](https://github.com/bufbuild/protovalidate-java),\n// [Python](https://github.com/bufbuild/protovalidate-python),\n// or [C++](https://github.com/bufbuild/protovalidate-cc).\n\nimport type { GenEnum, GenExtension, GenFile, GenMessage } from \"@bufbuild/protobuf/codegenv2\";\nimport { enumDesc, extDesc, fileDesc, messageDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport type { Duration, FieldDescriptorProto_Type, FieldMask, FieldOptions, MessageOptions, OneofOptions, Timestamp } from \"@bufbuild/protobuf/wkt\";\nimport { file_google_protobuf_descriptor, file_google_protobuf_duration, file_google_protobuf_field_mask, file_google_protobuf_timestamp } from \"@bufbuild/protobuf/wkt\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file buf/validate/validate.proto.\n */\nexport const file_buf_validate_validate: GenFile = /*@__PURE__*/\n  fileDesc(\"ChtidWYvdmFsaWRhdGUvdmFsaWRhdGUucHJvdG8SDGJ1Zi52YWxpZGF0ZSI3CgRSdWxlEgoKAmlkGAEgASgJEg8KB21lc3NhZ2UYAiABKAkSEgoKZXhwcmVzc2lvbhgDIAEoCSKGAQoMTWVzc2FnZVJ1bGVzEhYKDmNlbF9leHByZXNzaW9uGAUgAygJEh8KA2NlbBgDIAMoCzISLmJ1Zi52YWxpZGF0ZS5SdWxlEi0KBW9uZW9mGAQgAygLMh4uYnVmLnZhbGlkYXRlLk1lc3NhZ2VPbmVvZlJ1bGVKBAgBEAJSCGRpc2FibGVkIjQKEE1lc3NhZ2VPbmVvZlJ1bGUSDgoGZmllbGRzGAEgAygJEhAKCHJlcXVpcmVkGAIgASgIIh4KCk9uZW9mUnVsZXMSEAoIcmVxdWlyZWQYASABKAgiiwkKCkZpZWxkUnVsZXMSFgoOY2VsX2V4cHJlc3Npb24YHSADKAkSHwoDY2VsGBcgAygLMhIuYnVmLnZhbGlkYXRlLlJ1bGUSEAoIcmVxdWlyZWQYGSABKAgSJAoGaWdub3JlGBsgASgOMhQuYnVmLnZhbGlkYXRlLklnbm9yZRIpCgVmbG9hdBgBIAEoCzIYLmJ1Zi52YWxpZGF0ZS5GbG9hdFJ1bGVzSAASKwoGZG91YmxlGAIgASgLMhkuYnVmLnZhbGlkYXRlLkRvdWJsZVJ1bGVzSAASKQoFaW50MzIYAyABKAsyGC5idWYudmFsaWRhdGUuSW50MzJSdWxlc0gAEikKBWludDY0GAQgASgLMhguYnVmLnZhbGlkYXRlLkludDY0UnVsZXNIABIrCgZ1aW50MzIYBSABKAsyGS5idWYudmFsaWRhdGUuVUludDMyUnVsZXNIABIrCgZ1aW50NjQYBiABKAsyGS5idWYudmFsaWRhdGUuVUludDY0UnVsZXNIABIrCgZzaW50MzIYByABKAsyGS5idWYudmFsaWRhdGUuU0ludDMyUnVsZXNIABIrCgZzaW50NjQYCCABKAsyGS5idWYudmFsaWRhdGUuU0ludDY0UnVsZXNIABItCgdmaXhlZDMyGAkgASgLMhouYnVmLnZhbGlkYXRlLkZpeGVkMzJSdWxlc0gAEi0KB2ZpeGVkNjQYCiABKAsyGi5idWYudmFsaWRhdGUuRml4ZWQ2NFJ1bGVzSAASLwoIc2ZpeGVkMzIYCyABKAsyGy5idWYudmFsaWRhdGUuU0ZpeGVkMzJSdWxlc0gAEi8KCHNmaXhlZDY0GAwgASgLMhsuYnVmLnZhbGlkYXRlLlNGaXhlZDY0UnVsZXNIABInCgRib29sGA0gASgLMhcuYnVmLnZhbGlkYXRlLkJvb2xSdWxlc0gAEisKBnN0cmluZxgOIAEoCzIZLmJ1Zi52YWxpZGF0ZS5TdHJpbmdSdWxlc0gAEikKBWJ5dGVzGA8gASgLMhguYnVmLnZhbGlkYXRlLkJ5dGVzUnVsZXNIABInCgRlbnVtGBAgASgLMhcuYnVmLnZhbGlkYXRlLkVudW1SdWxlc0gAEi8KCHJlcGVhdGVkGBIgASgLMhsuYnVmLnZhbGlkYXRlLlJlcGVhdGVkUnVsZXNIABIlCgNtYXAYEyABKAsyFi5idWYudmFsaWRhdGUuTWFwUnVsZXNIABIlCgNhbnkYFCABKAsyFi5idWYudmFsaWRhdGUuQW55UnVsZXNIABIvCghkdXJhdGlvbhgVIAEoCzIbLmJ1Zi52YWxpZGF0ZS5EdXJhdGlvblJ1bGVzSAASMgoKZmllbGRfbWFzaxgcIAEoCzIcLmJ1Zi52YWxpZGF0ZS5GaWVsZE1hc2tSdWxlc0gAEjEKCXRpbWVzdGFtcBgWIAEoCzIcLmJ1Zi52YWxpZGF0ZS5UaW1lc3RhbXBSdWxlc0gAQgYKBHR5cGVKBAgYEBlKBAgaEBtSB3NraXBwZWRSDGlnbm9yZV9lbXB0eSJVCg9QcmVkZWZpbmVkUnVsZXMSHwoDY2VsGAEgAygLMhIuYnVmLnZhbGlkYXRlLlJ1bGVKBAgYEBlKBAgaEBtSB3NraXBwZWRSDGlnbm9yZV9lbXB0eSL4FgoKRmxvYXRSdWxlcxJ9CgVjb25zdBgBIAEoAkJuwkhrCmkKC2Zsb2F0LmNvbnN0Glp0aGlzICE9IGdldEZpZWxkKHJ1bGVzLCAnY29uc3QnKSA/ICdtdXN0IGVxdWFsICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnY29uc3QnKV0pIDogJycSmQEKAmx0GAIgASgCQooBwkiGAQqDAQoIZmxvYXQubHQadyFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiAodGhpcy5pc05hbigpIHx8IHRoaXMgPj0gcnVsZXMubHQpPyAnbXVzdCBiZSBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMubHRdKSA6ICcnSAASqQEKA2x0ZRgDIAEoAkKZAcJIlQEKkgEKCWZsb2F0Lmx0ZRqEASFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiAodGhpcy5pc05hbigpIHx8IHRoaXMgPiBydWxlcy5sdGUpPyAnbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMubHRlXSkgOiAnJ0gAEtAHCgJndBgEIAEoAkLBB8JIvQcKhgEKCGZsb2F0Lmd0GnohaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgKHRoaXMuaXNOYW4oKSB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0XSkgOiAnJwq9AQoLZmxvYXQuZ3RfbHQarQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ICYmICh0aGlzLmlzTmFuKCkgfHwgdGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwrHAQoVZmxvYXQuZ3RfbHRfZXhjbHVzaXZlGq0BaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmICh0aGlzLmlzTmFuKCkgfHwgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCkpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKzQEKDGZsb2F0Lmd0X2x0ZRq8AWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndCAmJiAodGhpcy5pc05hbigpIHx8IHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnCtcBChZmbG9hdC5ndF9sdGVfZXhjbHVzaXZlGrwBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3QgJiYgKHRoaXMuaXNOYW4oKSB8fCAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KSk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJydIARKcCAoDZ3RlGAUgASgCQowIwkiICAqVAQoJZmxvYXQuZ3RlGocBIWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmICh0aGlzLmlzTmFuKCkgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGVdKSA6ICcnCswBCgxmbG9hdC5ndGVfbHQauwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ZSAmJiAodGhpcy5pc05hbigpIHx8IHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCtYBChZmbG9hdC5ndGVfbHRfZXhjbHVzaXZlGrsBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ZSAmJiAodGhpcy5pc05hbigpIHx8IChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpKT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrcAQoNZmxvYXQuZ3RlX2x0ZRrKAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndGUgJiYgKHRoaXMuaXNOYW4oKSB8fCB0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPCBydWxlcy5ndGUpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJycK5gEKF2Zsb2F0Lmd0ZV9sdGVfZXhjbHVzaXZlGsoBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3RlICYmICh0aGlzLmlzTmFuKCkgfHwgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSkpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJ0gBEnkKAmluGAYgAygCQm3CSGoKaAoIZmxvYXQuaW4aXCEodGhpcyBpbiBnZXRGaWVsZChydWxlcywgJ2luJykpID8gJ211c3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2luJyldKSA6ICcnEnAKBm5vdF9pbhgHIAMoAkJgwkhdClsKDGZsb2F0Lm5vdF9pbhpLdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAnbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEm8KBmZpbml0ZRgIIAEoCEJfwkhcCloKDGZsb2F0LmZpbml0ZRpKcnVsZXMuZmluaXRlID8gKHRoaXMuaXNOYW4oKSB8fCB0aGlzLmlzSW5mKCkgPyAnbXVzdCBiZSBmaW5pdGUnIDogJycpIDogJycSKwoHZXhhbXBsZRgJIAMoAkIawkgXChUKDWZsb2F0LmV4YW1wbGUaBHRydWUqCQjoBxCAgICAAkILCglsZXNzX3RoYW5CDgoMZ3JlYXRlcl90aGFuIooXCgtEb3VibGVSdWxlcxJ+CgVjb25zdBgBIAEoAUJvwkhsCmoKDGRvdWJsZS5jb25zdBpadGhpcyAhPSBnZXRGaWVsZChydWxlcywgJ2NvbnN0JykgPyAnbXVzdCBlcXVhbCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2NvbnN0JyldKSA6ICcnEpoBCgJsdBgCIAEoAUKLAcJIhwEKhAEKCWRvdWJsZS5sdBp3IWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmICh0aGlzLmlzTmFuKCkgfHwgdGhpcyA+PSBydWxlcy5sdCk/ICdtdXN0IGJlIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5sdF0pIDogJydIABKqAQoDbHRlGAMgASgBQpoBwkiWAQqTAQoKZG91YmxlLmx0ZRqEASFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiAodGhpcy5pc05hbigpIHx8IHRoaXMgPiBydWxlcy5sdGUpPyAnbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMubHRlXSkgOiAnJ0gAEtUHCgJndBgEIAEoAULGB8JIwgcKhwEKCWRvdWJsZS5ndBp6IWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmICh0aGlzLmlzTmFuKCkgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndF0pIDogJycKvgEKDGRvdWJsZS5ndF9sdBqtAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3QgJiYgKHRoaXMuaXNOYW4oKSB8fCB0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCsgBChZkb3VibGUuZ3RfbHRfZXhjbHVzaXZlGq0BaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmICh0aGlzLmlzTmFuKCkgfHwgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCkpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKzgEKDWRvdWJsZS5ndF9sdGUavAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3QgJiYgKHRoaXMuaXNOYW4oKSB8fCB0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJwrYAQoXZG91YmxlLmd0X2x0ZV9leGNsdXNpdmUavAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndCAmJiAodGhpcy5pc05hbigpIHx8IChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpKT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJ0gBEqEICgNndGUYBSABKAFCkQjCSI0ICpYBCgpkb3VibGUuZ3RlGocBIWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmICh0aGlzLmlzTmFuKCkgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGVdKSA6ICcnCs0BCg1kb3VibGUuZ3RlX2x0GrsBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndGUgJiYgKHRoaXMuaXNOYW4oKSB8fCB0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPCBydWxlcy5ndGUpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrXAQoXZG91YmxlLmd0ZV9sdF9leGNsdXNpdmUauwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3RlICYmICh0aGlzLmlzTmFuKCkgfHwgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSkpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCt0BCg5kb3VibGUuZ3RlX2x0ZRrKAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndGUgJiYgKHRoaXMuaXNOYW4oKSB8fCB0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPCBydWxlcy5ndGUpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJycK5wEKGGRvdWJsZS5ndGVfbHRlX2V4Y2x1c2l2ZRrKAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ZSAmJiAodGhpcy5pc05hbigpIHx8IChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpKT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJydIARJ6CgJpbhgGIAMoAUJuwkhrCmkKCWRvdWJsZS5pbhpcISh0aGlzIGluIGdldEZpZWxkKHJ1bGVzLCAnaW4nKSkgPyAnbXVzdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnaW4nKV0pIDogJycScQoGbm90X2luGAcgAygBQmHCSF4KXAoNZG91YmxlLm5vdF9pbhpLdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAnbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEnAKBmZpbml0ZRgIIAEoCEJgwkhdClsKDWRvdWJsZS5maW5pdGUaSnJ1bGVzLmZpbml0ZSA/ICh0aGlzLmlzTmFuKCkgfHwgdGhpcy5pc0luZigpID8gJ211c3QgYmUgZmluaXRlJyA6ICcnKSA6ICcnEiwKB2V4YW1wbGUYCSADKAFCG8JIGAoWCg5kb3VibGUuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4isBQKCkludDMyUnVsZXMSfQoFY29uc3QYASABKAVCbsJIawppCgtpbnQzMi5jb25zdBpadGhpcyAhPSBnZXRGaWVsZChydWxlcywgJ2NvbnN0JykgPyAnbXVzdCBlcXVhbCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2NvbnN0JyldKSA6ICcnEoQBCgJsdBgCIAEoBUJ2wkhzCnEKCGludDMyLmx0GmUhaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+PSBydWxlcy5sdD8gJ211c3QgYmUgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmx0XSkgOiAnJ0gAEpUBCgNsdGUYAyABKAVChQHCSIEBCn8KCWludDMyLmx0ZRpyIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPiBydWxlcy5sdGU/ICdtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5sdGVdKSA6ICcnSAAS+QYKAmd0GAQgASgFQuoGwkjmBgp0CghpbnQzMi5ndBpoIWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPD0gcnVsZXMuZ3Q/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndF0pIDogJycKrQEKC2ludDMyLmd0X2x0Gp0BaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndCAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwq1AQoVaW50MzIuZ3RfbHRfZXhjbHVzaXZlGpsBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKvQEKDGludDMyLmd0X2x0ZRqsAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndCAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJycKxQEKFmludDMyLmd0X2x0ZV9leGNsdXNpdmUaqgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndCAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJ0gBEsUHCgNndGUYBSABKAVCtQfCSLEHCoIBCglpbnQzMi5ndGUadSFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDwgcnVsZXMuZ3RlPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlXSkgOiAnJwq8AQoMaW50MzIuZ3RlX2x0GqsBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCsQBChZpbnQzMi5ndGVfbHRfZXhjbHVzaXZlGqkBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrMAQoNaW50MzIuZ3RlX2x0ZRq6AWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJwrUAQoXaW50MzIuZ3RlX2x0ZV9leGNsdXNpdmUauAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnSAESeQoCaW4YBiADKAVCbcJIagpoCghpbnQzMi5pbhpcISh0aGlzIGluIGdldEZpZWxkKHJ1bGVzLCAnaW4nKSkgPyAnbXVzdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnaW4nKV0pIDogJycScAoGbm90X2luGAcgAygFQmDCSF0KWwoMaW50MzIubm90X2luGkt0aGlzIGluIHJ1bGVzLm5vdF9pbiA/ICdtdXN0IG5vdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW3J1bGVzLm5vdF9pbl0pIDogJycSKwoHZXhhbXBsZRgIIAMoBUIawkgXChUKDWludDMyLmV4YW1wbGUaBHRydWUqCQjoBxCAgICAAkILCglsZXNzX3RoYW5CDgoMZ3JlYXRlcl90aGFuIrAUCgpJbnQ2NFJ1bGVzEn0KBWNvbnN0GAEgASgDQm7CSGsKaQoLaW50NjQuY29uc3QaWnRoaXMgIT0gZ2V0RmllbGQocnVsZXMsICdjb25zdCcpID8gJ211c3QgZXF1YWwgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdjb25zdCcpXSkgOiAnJxKEAQoCbHQYAiABKANCdsJIcwpxCghpbnQ2NC5sdBplIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPj0gcnVsZXMubHQ/ICdtdXN0IGJlIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5sdF0pIDogJydIABKVAQoDbHRlGAMgASgDQoUBwkiBAQp/CglpbnQ2NC5sdGUaciFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID4gcnVsZXMubHRlPyAnbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMubHRlXSkgOiAnJ0gAEvkGCgJndBgEIAEoA0LqBsJI5gYKdAoIaW50NjQuZ3QaaCFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDw9IHJ1bGVzLmd0PyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RdKSA6ICcnCq0BCgtpbnQ2NC5ndF9sdBqdAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKtQEKFWludDY0Lmd0X2x0X2V4Y2x1c2l2ZRqbAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndCAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCr0BCgxpbnQ2NC5ndF9sdGUarAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnCsUBChZpbnQ2NC5ndF9sdGVfZXhjbHVzaXZlGqoBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJydIARLFBwoDZ3RlGAUgASgDQrUHwkixBwqCAQoJaW50NjQuZ3RlGnUhaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8IHJ1bGVzLmd0ZT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZV0pIDogJycKvAEKDGludDY0Lmd0ZV9sdBqrAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3RlICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPCBydWxlcy5ndGUpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrEAQoWaW50NjQuZ3RlX2x0X2V4Y2x1c2l2ZRqpAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycKzAEKDWludDY0Lmd0ZV9sdGUaugFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3RlICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPCBydWxlcy5ndGUpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJycK1AEKF2ludDY0Lmd0ZV9sdGVfZXhjbHVzaXZlGrgBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJ0gBEnkKAmluGAYgAygDQm3CSGoKaAoIaW50NjQuaW4aXCEodGhpcyBpbiBnZXRGaWVsZChydWxlcywgJ2luJykpID8gJ211c3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2luJyldKSA6ICcnEnAKBm5vdF9pbhgHIAMoA0JgwkhdClsKDGludDY0Lm5vdF9pbhpLdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAnbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEisKB2V4YW1wbGUYCSADKANCGsJIFwoVCg1pbnQ2NC5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAJCCwoJbGVzc190aGFuQg4KDGdyZWF0ZXJfdGhhbiLCFAoLVUludDMyUnVsZXMSfgoFY29uc3QYASABKA1Cb8JIbApqCgx1aW50MzIuY29uc3QaWnRoaXMgIT0gZ2V0RmllbGQocnVsZXMsICdjb25zdCcpID8gJ211c3QgZXF1YWwgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdjb25zdCcpXSkgOiAnJxKFAQoCbHQYAiABKA1Cd8JIdApyCgl1aW50MzIubHQaZSFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID49IHJ1bGVzLmx0PyAnbXVzdCBiZSBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMubHRdKSA6ICcnSAASlwEKA2x0ZRgDIAEoDUKHAcJIgwEKgAEKCnVpbnQzMi5sdGUaciFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID4gcnVsZXMubHRlPyAnbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMubHRlXSkgOiAnJ0gAEv4GCgJndBgEIAEoDULvBsJI6wYKdQoJdWludDMyLmd0GmghaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8PSBydWxlcy5ndD8gJ211c3QgYmUgZ3JlYXRlciB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0XSkgOiAnJwquAQoMdWludDMyLmd0X2x0Gp0BaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndCAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwq2AQoWdWludDMyLmd0X2x0X2V4Y2x1c2l2ZRqbAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndCAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCr4BCg11aW50MzIuZ3RfbHRlGqwBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJwrGAQoXdWludDMyLmd0X2x0ZV9leGNsdXNpdmUaqgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndCAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJ0gBEsoHCgNndGUYBSABKA1CugfCSLYHCoMBCgp1aW50MzIuZ3RlGnUhaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8IHJ1bGVzLmd0ZT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZV0pIDogJycKvQEKDXVpbnQzMi5ndGVfbHQaqwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycKxQEKF3VpbnQzMi5ndGVfbHRfZXhjbHVzaXZlGqkBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrNAQoOdWludDMyLmd0ZV9sdGUaugFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3RlICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPCBydWxlcy5ndGUpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJycK1QEKGHVpbnQzMi5ndGVfbHRlX2V4Y2x1c2l2ZRq4AWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJydIARJ6CgJpbhgGIAMoDUJuwkhrCmkKCXVpbnQzMi5pbhpcISh0aGlzIGluIGdldEZpZWxkKHJ1bGVzLCAnaW4nKSkgPyAnbXVzdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnaW4nKV0pIDogJycScQoGbm90X2luGAcgAygNQmHCSF4KXAoNdWludDMyLm5vdF9pbhpLdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAnbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEiwKB2V4YW1wbGUYCCADKA1CG8JIGAoWCg51aW50MzIuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4iwhQKC1VJbnQ2NFJ1bGVzEn4KBWNvbnN0GAEgASgEQm/CSGwKagoMdWludDY0LmNvbnN0Glp0aGlzICE9IGdldEZpZWxkKHJ1bGVzLCAnY29uc3QnKSA/ICdtdXN0IGVxdWFsICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnY29uc3QnKV0pIDogJycShQEKAmx0GAIgASgEQnfCSHQKcgoJdWludDY0Lmx0GmUhaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+PSBydWxlcy5sdD8gJ211c3QgYmUgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmx0XSkgOiAnJ0gAEpcBCgNsdGUYAyABKARChwHCSIMBCoABCgp1aW50NjQubHRlGnIhaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+IHJ1bGVzLmx0ZT8gJ211c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmx0ZV0pIDogJydIABL+BgoCZ3QYBCABKARC7wbCSOsGCnUKCXVpbnQ2NC5ndBpoIWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPD0gcnVsZXMuZ3Q/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndF0pIDogJycKrgEKDHVpbnQ2NC5ndF9sdBqdAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKtgEKFnVpbnQ2NC5ndF9sdF9leGNsdXNpdmUamwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwq+AQoNdWludDY0Lmd0X2x0ZRqsAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndCAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJycKxgEKF3VpbnQ2NC5ndF9sdGVfZXhjbHVzaXZlGqoBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJydIARLKBwoDZ3RlGAUgASgEQroHwki2BwqDAQoKdWludDY0Lmd0ZRp1IWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPCBydWxlcy5ndGU/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGVdKSA6ICcnCr0BCg11aW50NjQuZ3RlX2x0GqsBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCsUBChd1aW50NjQuZ3RlX2x0X2V4Y2x1c2l2ZRqpAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycKzQEKDnVpbnQ2NC5ndGVfbHRlGroBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnCtUBChh1aW50NjQuZ3RlX2x0ZV9leGNsdXNpdmUauAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnSAESegoCaW4YBiADKARCbsJIawppCgl1aW50NjQuaW4aXCEodGhpcyBpbiBnZXRGaWVsZChydWxlcywgJ2luJykpID8gJ211c3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2luJyldKSA6ICcnEnEKBm5vdF9pbhgHIAMoBEJhwkheClwKDXVpbnQ2NC5ub3RfaW4aS3RoaXMgaW4gcnVsZXMubm90X2luID8gJ211c3Qgbm90IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbcnVsZXMubm90X2luXSkgOiAnJxIsCgdleGFtcGxlGAggAygEQhvCSBgKFgoOdWludDY0LmV4YW1wbGUaBHRydWUqCQjoBxCAgICAAkILCglsZXNzX3RoYW5CDgoMZ3JlYXRlcl90aGFuIsIUCgtTSW50MzJSdWxlcxJ+CgVjb25zdBgBIAEoEUJvwkhsCmoKDHNpbnQzMi5jb25zdBpadGhpcyAhPSBnZXRGaWVsZChydWxlcywgJ2NvbnN0JykgPyAnbXVzdCBlcXVhbCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2NvbnN0JyldKSA6ICcnEoUBCgJsdBgCIAEoEUJ3wkh0CnIKCXNpbnQzMi5sdBplIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPj0gcnVsZXMubHQ/ICdtdXN0IGJlIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5sdF0pIDogJydIABKXAQoDbHRlGAMgASgRQocBwkiDAQqAAQoKc2ludDMyLmx0ZRpyIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPiBydWxlcy5sdGU/ICdtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5sdGVdKSA6ICcnSAAS/gYKAmd0GAQgASgRQu8GwkjrBgp1CglzaW50MzIuZ3QaaCFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDw9IHJ1bGVzLmd0PyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RdKSA6ICcnCq4BCgxzaW50MzIuZ3RfbHQanQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCrYBChZzaW50MzIuZ3RfbHRfZXhjbHVzaXZlGpsBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKvgEKDXNpbnQzMi5ndF9sdGUarAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnCsYBChdzaW50MzIuZ3RfbHRlX2V4Y2x1c2l2ZRqqAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnSAESygcKA2d0ZRgFIAEoEUK6B8JItgcKgwEKCnNpbnQzMi5ndGUadSFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDwgcnVsZXMuZ3RlPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlXSkgOiAnJwq9AQoNc2ludDMyLmd0ZV9sdBqrAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3RlICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPCBydWxlcy5ndGUpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrFAQoXc2ludDMyLmd0ZV9sdF9leGNsdXNpdmUaqQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCs0BCg5zaW50MzIuZ3RlX2x0ZRq6AWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJwrVAQoYc2ludDMyLmd0ZV9sdGVfZXhjbHVzaXZlGrgBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJ0gBEnoKAmluGAYgAygRQm7CSGsKaQoJc2ludDMyLmluGlwhKHRoaXMgaW4gZ2V0RmllbGQocnVsZXMsICdpbicpKSA/ICdtdXN0IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdpbicpXSkgOiAnJxJxCgZub3RfaW4YByADKBFCYcJIXgpcCg1zaW50MzIubm90X2luGkt0aGlzIGluIHJ1bGVzLm5vdF9pbiA/ICdtdXN0IG5vdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW3J1bGVzLm5vdF9pbl0pIDogJycSLAoHZXhhbXBsZRgIIAMoEUIbwkgYChYKDnNpbnQzMi5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAJCCwoJbGVzc190aGFuQg4KDGdyZWF0ZXJfdGhhbiLCFAoLU0ludDY0UnVsZXMSfgoFY29uc3QYASABKBJCb8JIbApqCgxzaW50NjQuY29uc3QaWnRoaXMgIT0gZ2V0RmllbGQocnVsZXMsICdjb25zdCcpID8gJ211c3QgZXF1YWwgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdjb25zdCcpXSkgOiAnJxKFAQoCbHQYAiABKBJCd8JIdApyCglzaW50NjQubHQaZSFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID49IHJ1bGVzLmx0PyAnbXVzdCBiZSBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMubHRdKSA6ICcnSAASlwEKA2x0ZRgDIAEoEkKHAcJIgwEKgAEKCnNpbnQ2NC5sdGUaciFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID4gcnVsZXMubHRlPyAnbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMubHRlXSkgOiAnJ0gAEv4GCgJndBgEIAEoEkLvBsJI6wYKdQoJc2ludDY0Lmd0GmghaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8PSBydWxlcy5ndD8gJ211c3QgYmUgZ3JlYXRlciB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0XSkgOiAnJwquAQoMc2ludDY0Lmd0X2x0Gp0BaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndCAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwq2AQoWc2ludDY0Lmd0X2x0X2V4Y2x1c2l2ZRqbAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndCAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCr4BCg1zaW50NjQuZ3RfbHRlGqwBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJwrGAQoXc2ludDY0Lmd0X2x0ZV9leGNsdXNpdmUaqgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndCAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJ0gBEsoHCgNndGUYBSABKBJCugfCSLYHCoMBCgpzaW50NjQuZ3RlGnUhaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8IHJ1bGVzLmd0ZT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZV0pIDogJycKvQEKDXNpbnQ2NC5ndGVfbHQaqwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycKxQEKF3NpbnQ2NC5ndGVfbHRfZXhjbHVzaXZlGqkBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrNAQoOc2ludDY0Lmd0ZV9sdGUaugFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3RlICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPCBydWxlcy5ndGUpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJycK1QEKGHNpbnQ2NC5ndGVfbHRlX2V4Y2x1c2l2ZRq4AWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJydIARJ6CgJpbhgGIAMoEkJuwkhrCmkKCXNpbnQ2NC5pbhpcISh0aGlzIGluIGdldEZpZWxkKHJ1bGVzLCAnaW4nKSkgPyAnbXVzdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnaW4nKV0pIDogJycScQoGbm90X2luGAcgAygSQmHCSF4KXAoNc2ludDY0Lm5vdF9pbhpLdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAnbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEiwKB2V4YW1wbGUYCCADKBJCG8JIGAoWCg5zaW50NjQuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4i0xQKDEZpeGVkMzJSdWxlcxJ/CgVjb25zdBgBIAEoB0JwwkhtCmsKDWZpeGVkMzIuY29uc3QaWnRoaXMgIT0gZ2V0RmllbGQocnVsZXMsICdjb25zdCcpID8gJ211c3QgZXF1YWwgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdjb25zdCcpXSkgOiAnJxKGAQoCbHQYAiABKAdCeMJIdQpzCgpmaXhlZDMyLmx0GmUhaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+PSBydWxlcy5sdD8gJ211c3QgYmUgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmx0XSkgOiAnJ0gAEpgBCgNsdGUYAyABKAdCiAHCSIQBCoEBCgtmaXhlZDMyLmx0ZRpyIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPiBydWxlcy5sdGU/ICdtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5sdGVdKSA6ICcnSAASgwcKAmd0GAQgASgHQvQGwkjwBgp2CgpmaXhlZDMyLmd0GmghaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8PSBydWxlcy5ndD8gJ211c3QgYmUgZ3JlYXRlciB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0XSkgOiAnJwqvAQoNZml4ZWQzMi5ndF9sdBqdAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKtwEKF2ZpeGVkMzIuZ3RfbHRfZXhjbHVzaXZlGpsBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKvwEKDmZpeGVkMzIuZ3RfbHRlGqwBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJwrHAQoYZml4ZWQzMi5ndF9sdGVfZXhjbHVzaXZlGqoBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJydIARLPBwoDZ3RlGAUgASgHQr8Hwki7BwqEAQoLZml4ZWQzMi5ndGUadSFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDwgcnVsZXMuZ3RlPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlXSkgOiAnJwq+AQoOZml4ZWQzMi5ndGVfbHQaqwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycKxgEKGGZpeGVkMzIuZ3RlX2x0X2V4Y2x1c2l2ZRqpAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycKzgEKD2ZpeGVkMzIuZ3RlX2x0ZRq6AWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJwrWAQoZZml4ZWQzMi5ndGVfbHRlX2V4Y2x1c2l2ZRq4AWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJydIARJ7CgJpbhgGIAMoB0JvwkhsCmoKCmZpeGVkMzIuaW4aXCEodGhpcyBpbiBnZXRGaWVsZChydWxlcywgJ2luJykpID8gJ211c3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2luJyldKSA6ICcnEnIKBm5vdF9pbhgHIAMoB0JiwkhfCl0KDmZpeGVkMzIubm90X2luGkt0aGlzIGluIHJ1bGVzLm5vdF9pbiA/ICdtdXN0IG5vdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW3J1bGVzLm5vdF9pbl0pIDogJycSLQoHZXhhbXBsZRgIIAMoB0IcwkgZChcKD2ZpeGVkMzIuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4i0xQKDEZpeGVkNjRSdWxlcxJ/CgVjb25zdBgBIAEoBkJwwkhtCmsKDWZpeGVkNjQuY29uc3QaWnRoaXMgIT0gZ2V0RmllbGQocnVsZXMsICdjb25zdCcpID8gJ211c3QgZXF1YWwgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdjb25zdCcpXSkgOiAnJxKGAQoCbHQYAiABKAZCeMJIdQpzCgpmaXhlZDY0Lmx0GmUhaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+PSBydWxlcy5sdD8gJ211c3QgYmUgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmx0XSkgOiAnJ0gAEpgBCgNsdGUYAyABKAZCiAHCSIQBCoEBCgtmaXhlZDY0Lmx0ZRpyIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPiBydWxlcy5sdGU/ICdtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5sdGVdKSA6ICcnSAASgwcKAmd0GAQgASgGQvQGwkjwBgp2CgpmaXhlZDY0Lmd0GmghaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8PSBydWxlcy5ndD8gJ211c3QgYmUgZ3JlYXRlciB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0XSkgOiAnJwqvAQoNZml4ZWQ2NC5ndF9sdBqdAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKtwEKF2ZpeGVkNjQuZ3RfbHRfZXhjbHVzaXZlGpsBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKvwEKDmZpeGVkNjQuZ3RfbHRlGqwBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJwrHAQoYZml4ZWQ2NC5ndF9sdGVfZXhjbHVzaXZlGqoBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJydIARLPBwoDZ3RlGAUgASgGQr8Hwki7BwqEAQoLZml4ZWQ2NC5ndGUadSFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDwgcnVsZXMuZ3RlPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlXSkgOiAnJwq+AQoOZml4ZWQ2NC5ndGVfbHQaqwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycKxgEKGGZpeGVkNjQuZ3RlX2x0X2V4Y2x1c2l2ZRqpAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycKzgEKD2ZpeGVkNjQuZ3RlX2x0ZRq6AWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJwrWAQoZZml4ZWQ2NC5ndGVfbHRlX2V4Y2x1c2l2ZRq4AWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJydIARJ7CgJpbhgGIAMoBkJvwkhsCmoKCmZpeGVkNjQuaW4aXCEodGhpcyBpbiBnZXRGaWVsZChydWxlcywgJ2luJykpID8gJ211c3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2luJyldKSA6ICcnEnIKBm5vdF9pbhgHIAMoBkJiwkhfCl0KDmZpeGVkNjQubm90X2luGkt0aGlzIGluIHJ1bGVzLm5vdF9pbiA/ICdtdXN0IG5vdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW3J1bGVzLm5vdF9pbl0pIDogJycSLQoHZXhhbXBsZRgIIAMoBkIcwkgZChcKD2ZpeGVkNjQuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4i5RQKDVNGaXhlZDMyUnVsZXMSgAEKBWNvbnN0GAEgASgPQnHCSG4KbAoOc2ZpeGVkMzIuY29uc3QaWnRoaXMgIT0gZ2V0RmllbGQocnVsZXMsICdjb25zdCcpID8gJ211c3QgZXF1YWwgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdjb25zdCcpXSkgOiAnJxKHAQoCbHQYAiABKA9CecJIdgp0CgtzZml4ZWQzMi5sdBplIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPj0gcnVsZXMubHQ/ICdtdXN0IGJlIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5sdF0pIDogJydIABKZAQoDbHRlGAMgASgPQokBwkiFAQqCAQoMc2ZpeGVkMzIubHRlGnIhaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+IHJ1bGVzLmx0ZT8gJ211c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmx0ZV0pIDogJydIABKIBwoCZ3QYBCABKA9C+QbCSPUGCncKC3NmaXhlZDMyLmd0GmghaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8PSBydWxlcy5ndD8gJ211c3QgYmUgZ3JlYXRlciB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0XSkgOiAnJwqwAQoOc2ZpeGVkMzIuZ3RfbHQanQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCrgBChhzZml4ZWQzMi5ndF9sdF9leGNsdXNpdmUamwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwrAAQoPc2ZpeGVkMzIuZ3RfbHRlGqwBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJwrIAQoZc2ZpeGVkMzIuZ3RfbHRlX2V4Y2x1c2l2ZRqqAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnSAES1AcKA2d0ZRgFIAEoD0LEB8JIwAcKhQEKDHNmaXhlZDMyLmd0ZRp1IWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPCBydWxlcy5ndGU/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGVdKSA6ICcnCr8BCg9zZml4ZWQzMi5ndGVfbHQaqwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycKxwEKGXNmaXhlZDMyLmd0ZV9sdF9leGNsdXNpdmUaqQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCs8BChBzZml4ZWQzMi5ndGVfbHRlGroBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnCtcBChpzZml4ZWQzMi5ndGVfbHRlX2V4Y2x1c2l2ZRq4AWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJydIARJ8CgJpbhgGIAMoD0JwwkhtCmsKC3NmaXhlZDMyLmluGlwhKHRoaXMgaW4gZ2V0RmllbGQocnVsZXMsICdpbicpKSA/ICdtdXN0IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdpbicpXSkgOiAnJxJzCgZub3RfaW4YByADKA9CY8JIYApeCg9zZml4ZWQzMi5ub3RfaW4aS3RoaXMgaW4gcnVsZXMubm90X2luID8gJ211c3Qgbm90IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbcnVsZXMubm90X2luXSkgOiAnJxIuCgdleGFtcGxlGAggAygPQh3CSBoKGAoQc2ZpeGVkMzIuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4i5RQKDVNGaXhlZDY0UnVsZXMSgAEKBWNvbnN0GAEgASgQQnHCSG4KbAoOc2ZpeGVkNjQuY29uc3QaWnRoaXMgIT0gZ2V0RmllbGQocnVsZXMsICdjb25zdCcpID8gJ211c3QgZXF1YWwgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdjb25zdCcpXSkgOiAnJxKHAQoCbHQYAiABKBBCecJIdgp0CgtzZml4ZWQ2NC5sdBplIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPj0gcnVsZXMubHQ/ICdtdXN0IGJlIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5sdF0pIDogJydIABKZAQoDbHRlGAMgASgQQokBwkiFAQqCAQoMc2ZpeGVkNjQubHRlGnIhaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+IHJ1bGVzLmx0ZT8gJ211c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmx0ZV0pIDogJydIABKIBwoCZ3QYBCABKBBC+QbCSPUGCncKC3NmaXhlZDY0Lmd0GmghaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8PSBydWxlcy5ndD8gJ211c3QgYmUgZ3JlYXRlciB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0XSkgOiAnJwqwAQoOc2ZpeGVkNjQuZ3RfbHQanQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCrgBChhzZml4ZWQ2NC5ndF9sdF9leGNsdXNpdmUamwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwrAAQoPc2ZpeGVkNjQuZ3RfbHRlGqwBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJwrIAQoZc2ZpeGVkNjQuZ3RfbHRlX2V4Y2x1c2l2ZRqqAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnSAES1AcKA2d0ZRgFIAEoEELEB8JIwAcKhQEKDHNmaXhlZDY0Lmd0ZRp1IWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPCBydWxlcy5ndGU/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGVdKSA6ICcnCr8BCg9zZml4ZWQ2NC5ndGVfbHQaqwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycKxwEKGXNmaXhlZDY0Lmd0ZV9sdF9leGNsdXNpdmUaqQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCs8BChBzZml4ZWQ2NC5ndGVfbHRlGroBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnCtcBChpzZml4ZWQ2NC5ndGVfbHRlX2V4Y2x1c2l2ZRq4AWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJydIARJ8CgJpbhgGIAMoEEJwwkhtCmsKC3NmaXhlZDY0LmluGlwhKHRoaXMgaW4gZ2V0RmllbGQocnVsZXMsICdpbicpKSA/ICdtdXN0IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdpbicpXSkgOiAnJxJzCgZub3RfaW4YByADKBBCY8JIYApeCg9zZml4ZWQ2NC5ub3RfaW4aS3RoaXMgaW4gcnVsZXMubm90X2luID8gJ211c3Qgbm90IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbcnVsZXMubm90X2luXSkgOiAnJxIuCgdleGFtcGxlGAggAygQQh3CSBoKGAoQc2ZpeGVkNjQuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4iwAEKCUJvb2xSdWxlcxJ8CgVjb25zdBgBIAEoCEJtwkhqCmgKCmJvb2wuY29uc3QaWnRoaXMgIT0gZ2V0RmllbGQocnVsZXMsICdjb25zdCcpID8gJ211c3QgZXF1YWwgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdjb25zdCcpXSkgOiAnJxIqCgdleGFtcGxlGAIgAygIQhnCSBYKFAoMYm9vbC5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAIi6jwKC1N0cmluZ1J1bGVzEoABCgVjb25zdBgBIAEoCUJxwkhuCmwKDHN0cmluZy5jb25zdBpcdGhpcyAhPSBnZXRGaWVsZChydWxlcywgJ2NvbnN0JykgPyAnbXVzdCBlcXVhbCBgJXNgJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnY29uc3QnKV0pIDogJycScQoDbGVuGBMgASgEQmTCSGEKXwoKc3RyaW5nLmxlbhpRdWludCh0aGlzLnNpemUoKSkgIT0gcnVsZXMubGVuID8gJ211c3QgYmUgJXMgY2hhcmFjdGVycycuZm9ybWF0KFtydWxlcy5sZW5dKSA6ICcnEokBCgdtaW5fbGVuGAIgASgEQnjCSHUKcwoOc3RyaW5nLm1pbl9sZW4aYXVpbnQodGhpcy5zaXplKCkpIDwgcnVsZXMubWluX2xlbiA/ICdtdXN0IGJlIGF0IGxlYXN0ICVzIGNoYXJhY3RlcnMnLmZvcm1hdChbcnVsZXMubWluX2xlbl0pIDogJycSiAEKB21heF9sZW4YAyABKARCd8JIdApyCg5zdHJpbmcubWF4X2xlbhpgdWludCh0aGlzLnNpemUoKSkgPiBydWxlcy5tYXhfbGVuID8gJ211c3QgYmUgYXQgbW9zdCAlcyBjaGFyYWN0ZXJzJy5mb3JtYXQoW3J1bGVzLm1heF9sZW5dKSA6ICcnEosBCglsZW5fYnl0ZXMYFCABKARCeMJIdQpzChBzdHJpbmcubGVuX2J5dGVzGl91aW50KGJ5dGVzKHRoaXMpLnNpemUoKSkgIT0gcnVsZXMubGVuX2J5dGVzID8gJ211c3QgYmUgJXMgYnl0ZXMnLmZvcm1hdChbcnVsZXMubGVuX2J5dGVzXSkgOiAnJxKUAQoJbWluX2J5dGVzGAQgASgEQoABwkh9CnsKEHN0cmluZy5taW5fYnl0ZXMaZ3VpbnQoYnl0ZXModGhpcykuc2l6ZSgpKSA8IHJ1bGVzLm1pbl9ieXRlcyA/ICdtdXN0IGJlIGF0IGxlYXN0ICVzIGJ5dGVzJy5mb3JtYXQoW3J1bGVzLm1pbl9ieXRlc10pIDogJycSkgEKCW1heF9ieXRlcxgFIAEoBEJ/wkh8CnoKEHN0cmluZy5tYXhfYnl0ZXMaZnVpbnQoYnl0ZXModGhpcykuc2l6ZSgpKSA+IHJ1bGVzLm1heF9ieXRlcyA/ICdtdXN0IGJlIGF0IG1vc3QgJXMgYnl0ZXMnLmZvcm1hdChbcnVsZXMubWF4X2J5dGVzXSkgOiAnJxKHAQoHcGF0dGVybhgGIAEoCUJ2wkhzCnEKDnN0cmluZy5wYXR0ZXJuGl8hdGhpcy5tYXRjaGVzKHJ1bGVzLnBhdHRlcm4pID8gJ2RvZXMgbm90IG1hdGNoIHJlZ2V4IHBhdHRlcm4gYCVzYCcuZm9ybWF0KFtydWxlcy5wYXR0ZXJuXSkgOiAnJxJ+CgZwcmVmaXgYByABKAlCbsJIawppCg1zdHJpbmcucHJlZml4GlghdGhpcy5zdGFydHNXaXRoKHJ1bGVzLnByZWZpeCkgPyAnZG9lcyBub3QgaGF2ZSBwcmVmaXggYCVzYCcuZm9ybWF0KFtydWxlcy5wcmVmaXhdKSA6ICcnEnwKBnN1ZmZpeBgIIAEoCUJswkhpCmcKDXN0cmluZy5zdWZmaXgaViF0aGlzLmVuZHNXaXRoKHJ1bGVzLnN1ZmZpeCkgPyAnZG9lcyBub3QgaGF2ZSBzdWZmaXggYCVzYCcuZm9ybWF0KFtydWxlcy5zdWZmaXhdKSA6ICcnEooBCghjb250YWlucxgJIAEoCUJ4wkh1CnMKD3N0cmluZy5jb250YWlucxpgIXRoaXMuY29udGFpbnMocnVsZXMuY29udGFpbnMpID8gJ2RvZXMgbm90IGNvbnRhaW4gc3Vic3RyaW5nIGAlc2AnLmZvcm1hdChbcnVsZXMuY29udGFpbnNdKSA6ICcnEpEBCgxub3RfY29udGFpbnMYFyABKAlCe8JIeAp2ChNzdHJpbmcubm90X2NvbnRhaW5zGl90aGlzLmNvbnRhaW5zKHJ1bGVzLm5vdF9jb250YWlucykgPyAnY29udGFpbnMgc3Vic3RyaW5nIGAlc2AnLmZvcm1hdChbcnVsZXMubm90X2NvbnRhaW5zXSkgOiAnJxJ6CgJpbhgKIAMoCUJuwkhrCmkKCXN0cmluZy5pbhpcISh0aGlzIGluIGdldEZpZWxkKHJ1bGVzLCAnaW4nKSkgPyAnbXVzdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnaW4nKV0pIDogJycScQoGbm90X2luGAsgAygJQmHCSF4KXAoNc3RyaW5nLm5vdF9pbhpLdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAnbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEtkBCgVlbWFpbBgMIAEoCELHAcJIwwEKWwoMc3RyaW5nLmVtYWlsEh1tdXN0IGJlIGEgdmFsaWQgZW1haWwgYWRkcmVzcxosIXJ1bGVzLmVtYWlsIHx8IHRoaXMgPT0gJycgfHwgdGhpcy5pc0VtYWlsKCkKZAoSc3RyaW5nLmVtYWlsX2VtcHR5EjJ2YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgZW1haWwgYWRkcmVzcxoaIXJ1bGVzLmVtYWlsIHx8IHRoaXMgIT0gJydIABLhAQoIaG9zdG5hbWUYDSABKAhCzAHCSMgBCl8KD3N0cmluZy5ob3N0bmFtZRIYbXVzdCBiZSBhIHZhbGlkIGhvc3RuYW1lGjIhcnVsZXMuaG9zdG5hbWUgfHwgdGhpcyA9PSAnJyB8fCB0aGlzLmlzSG9zdG5hbWUoKQplChVzdHJpbmcuaG9zdG5hbWVfZW1wdHkSLXZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBob3N0bmFtZRodIXJ1bGVzLmhvc3RuYW1lIHx8IHRoaXMgIT0gJydIABLBAQoCaXAYDiABKAhCsgHCSK4BCk8KCXN0cmluZy5pcBIabXVzdCBiZSBhIHZhbGlkIElQIGFkZHJlc3MaJiFydWxlcy5pcCB8fCB0aGlzID09ICcnIHx8IHRoaXMuaXNJcCgpClsKD3N0cmluZy5pcF9lbXB0eRIvdmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIElQIGFkZHJlc3MaFyFydWxlcy5pcCB8fCB0aGlzICE9ICcnSAAS0AEKBGlwdjQYDyABKAhCvwHCSLsBClYKC3N0cmluZy5pcHY0EhxtdXN0IGJlIGEgdmFsaWQgSVB2NCBhZGRyZXNzGikhcnVsZXMuaXB2NCB8fCB0aGlzID09ICcnIHx8IHRoaXMuaXNJcCg0KQphChFzdHJpbmcuaXB2NF9lbXB0eRIxdmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIElQdjQgYWRkcmVzcxoZIXJ1bGVzLmlwdjQgfHwgdGhpcyAhPSAnJ0gAEtABCgRpcHY2GBAgASgIQr8Bwki7AQpWCgtzdHJpbmcuaXB2NhIcbXVzdCBiZSBhIHZhbGlkIElQdjYgYWRkcmVzcxopIXJ1bGVzLmlwdjYgfHwgdGhpcyA9PSAnJyB8fCB0aGlzLmlzSXAoNikKYQoRc3RyaW5nLmlwdjZfZW1wdHkSMXZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBJUHY2IGFkZHJlc3MaGSFydWxlcy5pcHY2IHx8IHRoaXMgIT0gJydIABK5AQoDdXJpGBEgASgIQqkBwkilAQpLCgpzdHJpbmcudXJpEhNtdXN0IGJlIGEgdmFsaWQgVVJJGighcnVsZXMudXJpIHx8IHRoaXMgPT0gJycgfHwgdGhpcy5pc1VyaSgpClYKEHN0cmluZy51cmlfZW1wdHkSKHZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBVUkkaGCFydWxlcy51cmkgfHwgdGhpcyAhPSAnJ0gAEmoKB3VyaV9yZWYYEiABKAhCV8JIVApSCg5zdHJpbmcudXJpX3JlZhIdbXVzdCBiZSBhIHZhbGlkIFVSSSBSZWZlcmVuY2UaISFydWxlcy51cmlfcmVmIHx8IHRoaXMuaXNVcmlSZWYoKUgAEokCCgdhZGRyZXNzGBUgASgIQvUBwkjxAQp7Cg5zdHJpbmcuYWRkcmVzcxInbXVzdCBiZSBhIHZhbGlkIGhvc3RuYW1lLCBvciBpcCBhZGRyZXNzGkAhcnVsZXMuYWRkcmVzcyB8fCB0aGlzID09ICcnIHx8IHRoaXMuaXNIb3N0bmFtZSgpIHx8IHRoaXMuaXNJcCgpCnIKFHN0cmluZy5hZGRyZXNzX2VtcHR5Ejx2YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgaG9zdG5hbWUsIG9yIGlwIGFkZHJlc3MaHCFydWxlcy5hZGRyZXNzIHx8IHRoaXMgIT0gJydIABKSAgoEdXVpZBgWIAEoCEKBAsJI/QEKnwEKC3N0cmluZy51dWlkEhRtdXN0IGJlIGEgdmFsaWQgVVVJRBp6IXJ1bGVzLnV1aWQgfHwgdGhpcyA9PSAnJyB8fCB0aGlzLm1hdGNoZXMoJ15bMC05YS1mQS1GXXs4fS1bMC05YS1mQS1GXXs0fS1bMC05YS1mQS1GXXs0fS1bMC05YS1mQS1GXXs0fS1bMC05YS1mQS1GXXsxMn0kJykKWQoRc3RyaW5nLnV1aWRfZW1wdHkSKXZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBVVUlEGhkhcnVsZXMudXVpZCB8fCB0aGlzICE9ICcnSAAS6gEKBXR1dWlkGCEgASgIQtgBwkjUAQptCgxzdHJpbmcudHV1aWQSHG11c3QgYmUgYSB2YWxpZCB0cmltbWVkIFVVSUQaPyFydWxlcy50dXVpZCB8fCB0aGlzID09ICcnIHx8IHRoaXMubWF0Y2hlcygnXlswLTlhLWZBLUZdezMyfSQnKQpjChJzdHJpbmcudHV1aWRfZW1wdHkSMXZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCB0cmltbWVkIFVVSUQaGiFydWxlcy50dXVpZCB8fCB0aGlzICE9ICcnSAASkAIKEWlwX3dpdGhfcHJlZml4bGVuGBogASgIQvIBwkjuAQpyChhzdHJpbmcuaXBfd2l0aF9wcmVmaXhsZW4SGW11c3QgYmUgYSB2YWxpZCBJUCBwcmVmaXgaOyFydWxlcy5pcF93aXRoX3ByZWZpeGxlbiB8fCB0aGlzID09ICcnIHx8IHRoaXMuaXNJcFByZWZpeCgpCngKHnN0cmluZy5pcF93aXRoX3ByZWZpeGxlbl9lbXB0eRIudmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIElQIHByZWZpeBomIXJ1bGVzLmlwX3dpdGhfcHJlZml4bGVuIHx8IHRoaXMgIT0gJydIABLJAgoTaXB2NF93aXRoX3ByZWZpeGxlbhgbIAEoCEKpAsJIpQIKjQEKGnN0cmluZy5pcHY0X3dpdGhfcHJlZml4bGVuEi9tdXN0IGJlIGEgdmFsaWQgSVB2NCBhZGRyZXNzIHdpdGggcHJlZml4IGxlbmd0aBo+IXJ1bGVzLmlwdjRfd2l0aF9wcmVmaXhsZW4gfHwgdGhpcyA9PSAnJyB8fCB0aGlzLmlzSXBQcmVmaXgoNCkKkgEKIHN0cmluZy5pcHY0X3dpdGhfcHJlZml4bGVuX2VtcHR5EkR2YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgSVB2NCBhZGRyZXNzIHdpdGggcHJlZml4IGxlbmd0aBooIXJ1bGVzLmlwdjRfd2l0aF9wcmVmaXhsZW4gfHwgdGhpcyAhPSAnJ0gAEskCChNpcHY2X3dpdGhfcHJlZml4bGVuGBwgASgIQqkCwkilAgqNAQoac3RyaW5nLmlwdjZfd2l0aF9wcmVmaXhsZW4SL211c3QgYmUgYSB2YWxpZCBJUHY2IGFkZHJlc3Mgd2l0aCBwcmVmaXggbGVuZ3RoGj4hcnVsZXMuaXB2Nl93aXRoX3ByZWZpeGxlbiB8fCB0aGlzID09ICcnIHx8IHRoaXMuaXNJcFByZWZpeCg2KQqSAQogc3RyaW5nLmlwdjZfd2l0aF9wcmVmaXhsZW5fZW1wdHkSRHZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBJUHY2IGFkZHJlc3Mgd2l0aCBwcmVmaXggbGVuZ3RoGighcnVsZXMuaXB2Nl93aXRoX3ByZWZpeGxlbiB8fCB0aGlzICE9ICcnSAAS7AEKCWlwX3ByZWZpeBgdIAEoCELWAcJI0gEKZgoQc3RyaW5nLmlwX3ByZWZpeBIZbXVzdCBiZSBhIHZhbGlkIElQIHByZWZpeBo3IXJ1bGVzLmlwX3ByZWZpeCB8fCB0aGlzID09ICcnIHx8IHRoaXMuaXNJcFByZWZpeCh0cnVlKQpoChZzdHJpbmcuaXBfcHJlZml4X2VtcHR5Ei52YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgSVAgcHJlZml4Gh4hcnVsZXMuaXBfcHJlZml4IHx8IHRoaXMgIT0gJydIABL9AQoLaXB2NF9wcmVmaXgYHiABKAhC5QHCSOEBCm8KEnN0cmluZy5pcHY0X3ByZWZpeBIbbXVzdCBiZSBhIHZhbGlkIElQdjQgcHJlZml4GjwhcnVsZXMuaXB2NF9wcmVmaXggfHwgdGhpcyA9PSAnJyB8fCB0aGlzLmlzSXBQcmVmaXgoNCwgdHJ1ZSkKbgoYc3RyaW5nLmlwdjRfcHJlZml4X2VtcHR5EjB2YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgSVB2NCBwcmVmaXgaICFydWxlcy5pcHY0X3ByZWZpeCB8fCB0aGlzICE9ICcnSAAS/QEKC2lwdjZfcHJlZml4GB8gASgIQuUBwkjhAQpvChJzdHJpbmcuaXB2Nl9wcmVmaXgSG211c3QgYmUgYSB2YWxpZCBJUHY2IHByZWZpeBo8IXJ1bGVzLmlwdjZfcHJlZml4IHx8IHRoaXMgPT0gJycgfHwgdGhpcy5pc0lwUHJlZml4KDYsIHRydWUpCm4KGHN0cmluZy5pcHY2X3ByZWZpeF9lbXB0eRIwdmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIElQdjYgcHJlZml4GiAhcnVsZXMuaXB2Nl9wcmVmaXggfHwgdGhpcyAhPSAnJ0gAEq8CCg1ob3N0X2FuZF9wb3J0GCAgASgIQpUCwkiRAgqTAQoUc3RyaW5nLmhvc3RfYW5kX3BvcnQSO211c3QgYmUgYSB2YWxpZCBob3N0IChob3N0bmFtZSBvciBJUCBhZGRyZXNzKSBhbmQgcG9ydCBwYWlyGj4hcnVsZXMuaG9zdF9hbmRfcG9ydCB8fCB0aGlzID09ICcnIHx8IHRoaXMuaXNIb3N0QW5kUG9ydCh0cnVlKQp5ChpzdHJpbmcuaG9zdF9hbmRfcG9ydF9lbXB0eRI3dmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIGhvc3QgYW5kIHBvcnQgcGFpchoiIXJ1bGVzLmhvc3RfYW5kX3BvcnQgfHwgdGhpcyAhPSAnJ0gAEu4BCgR1bGlkGCMgASgIQt0BwkjZAQp8CgtzdHJpbmcudWxpZBIUbXVzdCBiZSBhIHZhbGlkIFVMSUQaVyFydWxlcy51bGlkIHx8IHRoaXMgPT0gJycgfHwgdGhpcy5tYXRjaGVzKCdeWzAtN11bMC05QS1ISktNTlAtVFYtWmEtaGprbW5wLXR2LXpdezI1fSQnKQpZChFzdHJpbmcudWxpZF9lbXB0eRIpdmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIFVMSUQaGSFydWxlcy51bGlkIHx8IHRoaXMgIT0gJydIABLUAgoMcHJvdG9idWZfZnFuGCUgASgIQrsCwki3AgqvAQoTc3RyaW5nLnByb3RvYnVmX2ZxbhItbXVzdCBiZSBhIHZhbGlkIGZ1bGx5LXF1YWxpZmllZCBQcm90b2J1ZiBuYW1lGmkhcnVsZXMucHJvdG9idWZfZnFuIHx8IHRoaXMgPT0gJycgfHwgdGhpcy5tYXRjaGVzKCdeW0EtWmEtel9dW0EtWmEtel8wLTldKihcXC5bQS1aYS16X11bQS1aYS16XzAtOV0qKSokJykKggEKGXN0cmluZy5wcm90b2J1Zl9mcW5fZW1wdHkSQnZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBmdWxseS1xdWFsaWZpZWQgUHJvdG9idWYgbmFtZRohIXJ1bGVzLnByb3RvYnVmX2ZxbiB8fCB0aGlzICE9ICcnSAASkQMKEHByb3RvYnVmX2RvdF9mcW4YJiABKAhC9ALCSPACCs0BChdzdHJpbmcucHJvdG9idWZfZG90X2ZxbhJAbXVzdCBiZSBhIHZhbGlkIGZ1bGx5LXF1YWxpZmllZCBQcm90b2J1ZiBuYW1lIHdpdGggYSBsZWFkaW5nIGRvdBpwIXJ1bGVzLnByb3RvYnVmX2RvdF9mcW4gfHwgdGhpcyA9PSAnJyB8fCB0aGlzLm1hdGNoZXMoJ15cXC5bQS1aYS16X11bQS1aYS16XzAtOV0qKFxcLltBLVphLXpfXVtBLVphLXpfMC05XSopKiQnKQqdAQodc3RyaW5nLnByb3RvYnVmX2RvdF9mcW5fZW1wdHkSVXZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBmdWxseS1xdWFsaWZpZWQgUHJvdG9idWYgbmFtZSB3aXRoIGEgbGVhZGluZyBkb3QaJSFydWxlcy5wcm90b2J1Zl9kb3RfZnFuIHx8IHRoaXMgIT0gJydIABKcBQoQd2VsbF9rbm93bl9yZWdleBgYIAEoDjIYLmJ1Zi52YWxpZGF0ZS5Lbm93blJlZ2V4QuUEwkjhBArqAQojc3RyaW5nLndlbGxfa25vd25fcmVnZXguaGVhZGVyX25hbWUSIG11c3QgYmUgYSB2YWxpZCBIVFRQIGhlYWRlciBuYW1lGqABcnVsZXMud2VsbF9rbm93bl9yZWdleCAhPSAxIHx8IHRoaXMgPT0gJycgfHwgdGhpcy5tYXRjaGVzKCFoYXMocnVsZXMuc3RyaWN0KSB8fCBydWxlcy5zdHJpY3QgPydeOj9bMC05YS16QS1aISMkJSZcJyorLS5eX3x+XHg2MF0rJCcgOideW15cdTAwMDBcdTAwMEFcdTAwMERdKyQnKQqNAQopc3RyaW5nLndlbGxfa25vd25fcmVnZXguaGVhZGVyX25hbWVfZW1wdHkSNXZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBIVFRQIGhlYWRlciBuYW1lGilydWxlcy53ZWxsX2tub3duX3JlZ2V4ICE9IDEgfHwgdGhpcyAhPSAnJwrhAQokc3RyaW5nLndlbGxfa25vd25fcmVnZXguaGVhZGVyX3ZhbHVlEiFtdXN0IGJlIGEgdmFsaWQgSFRUUCBoZWFkZXIgdmFsdWUalQFydWxlcy53ZWxsX2tub3duX3JlZ2V4ICE9IDIgfHwgdGhpcy5tYXRjaGVzKCFoYXMocnVsZXMuc3RyaWN0KSB8fCBydWxlcy5zdHJpY3QgPydeW15cdTAwMDAtXHUwMDA4XHUwMDBBLVx1MDAxRlx1MDA3Rl0qJCcgOideW15cdTAwMDBcdTAwMEFcdTAwMERdKiQnKUgAEg4KBnN0cmljdBgZIAEoCBIsCgdleGFtcGxlGCIgAygJQhvCSBgKFgoOc3RyaW5nLmV4YW1wbGUaBHRydWUqCQjoBxCAgICAAkIMCgp3ZWxsX2tub3duIt0RCgpCeXRlc1J1bGVzEnoKBWNvbnN0GAEgASgMQmvCSGgKZgoLYnl0ZXMuY29uc3QaV3RoaXMgIT0gZ2V0RmllbGQocnVsZXMsICdjb25zdCcpID8gJ211c3QgYmUgJXgnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdjb25zdCcpXSkgOiAnJxJrCgNsZW4YDSABKARCXsJIWwpZCglieXRlcy5sZW4aTHVpbnQodGhpcy5zaXplKCkpICE9IHJ1bGVzLmxlbiA/ICdtdXN0IGJlICVzIGJ5dGVzJy5mb3JtYXQoW3J1bGVzLmxlbl0pIDogJycSgwEKB21pbl9sZW4YAiABKARCcsJIbwptCg1ieXRlcy5taW5fbGVuGlx1aW50KHRoaXMuc2l6ZSgpKSA8IHJ1bGVzLm1pbl9sZW4gPyAnbXVzdCBiZSBhdCBsZWFzdCAlcyBieXRlcycuZm9ybWF0KFtydWxlcy5taW5fbGVuXSkgOiAnJxKCAQoHbWF4X2xlbhgDIAEoBEJxwkhuCmwKDWJ5dGVzLm1heF9sZW4aW3VpbnQodGhpcy5zaXplKCkpID4gcnVsZXMubWF4X2xlbiA/ICdtdXN0IGJlIGF0IG1vc3QgJXMgYnl0ZXMnLmZvcm1hdChbcnVsZXMubWF4X2xlbl0pIDogJycSigEKB3BhdHRlcm4YBCABKAlCecJIdgp0Cg1ieXRlcy5wYXR0ZXJuGmMhc3RyaW5nKHRoaXMpLm1hdGNoZXMocnVsZXMucGF0dGVybikgPyAnbXVzdCBtYXRjaCByZWdleCBwYXR0ZXJuIGAlc2AnLmZvcm1hdChbcnVsZXMucGF0dGVybl0pIDogJycSewoGcHJlZml4GAUgASgMQmvCSGgKZgoMYnl0ZXMucHJlZml4GlYhdGhpcy5zdGFydHNXaXRoKHJ1bGVzLnByZWZpeCkgPyAnZG9lcyBub3QgaGF2ZSBwcmVmaXggJXgnLmZvcm1hdChbcnVsZXMucHJlZml4XSkgOiAnJxJ5CgZzdWZmaXgYBiABKAxCacJIZgpkCgxieXRlcy5zdWZmaXgaVCF0aGlzLmVuZHNXaXRoKHJ1bGVzLnN1ZmZpeCkgPyAnZG9lcyBub3QgaGF2ZSBzdWZmaXggJXgnLmZvcm1hdChbcnVsZXMuc3VmZml4XSkgOiAnJxJ9Cghjb250YWlucxgHIAEoDEJrwkhoCmYKDmJ5dGVzLmNvbnRhaW5zGlQhdGhpcy5jb250YWlucyhydWxlcy5jb250YWlucykgPyAnZG9lcyBub3QgY29udGFpbiAleCcuZm9ybWF0KFtydWxlcy5jb250YWluc10pIDogJycSoQEKAmluGAggAygMQpQBwkiQAQqNAQoIYnl0ZXMuaW4agAFnZXRGaWVsZChydWxlcywgJ2luJykuc2l6ZSgpID4gMCAmJiAhKHRoaXMgaW4gZ2V0RmllbGQocnVsZXMsICdpbicpKSA/ICdtdXN0IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdpbicpXSkgOiAnJxJwCgZub3RfaW4YCSADKAxCYMJIXQpbCgxieXRlcy5ub3RfaW4aS3RoaXMgaW4gcnVsZXMubm90X2luID8gJ211c3Qgbm90IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbcnVsZXMubm90X2luXSkgOiAnJxLlAQoCaXAYCiABKAhC1gHCSNIBCm4KCGJ5dGVzLmlwEhptdXN0IGJlIGEgdmFsaWQgSVAgYWRkcmVzcxpGIXJ1bGVzLmlwIHx8IHRoaXMuc2l6ZSgpID09IDAgfHwgdGhpcy5zaXplKCkgPT0gNCB8fCB0aGlzLnNpemUoKSA9PSAxNgpgCg5ieXRlcy5pcF9lbXB0eRIvdmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIElQIGFkZHJlc3MaHSFydWxlcy5pcCB8fCB0aGlzLnNpemUoKSAhPSAwSAAS3gEKBGlwdjQYCyABKAhCzQHCSMkBCl8KCmJ5dGVzLmlwdjQSHG11c3QgYmUgYSB2YWxpZCBJUHY0IGFkZHJlc3MaMyFydWxlcy5pcHY0IHx8IHRoaXMuc2l6ZSgpID09IDAgfHwgdGhpcy5zaXplKCkgPT0gNApmChBieXRlcy5pcHY0X2VtcHR5EjF2YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgSVB2NCBhZGRyZXNzGh8hcnVsZXMuaXB2NCB8fCB0aGlzLnNpemUoKSAhPSAwSAAS3wEKBGlwdjYYDCABKAhCzgHCSMoBCmAKCmJ5dGVzLmlwdjYSHG11c3QgYmUgYSB2YWxpZCBJUHY2IGFkZHJlc3MaNCFydWxlcy5pcHY2IHx8IHRoaXMuc2l6ZSgpID09IDAgfHwgdGhpcy5zaXplKCkgPT0gMTYKZgoQYnl0ZXMuaXB2Nl9lbXB0eRIxdmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIElQdjYgYWRkcmVzcxofIXJ1bGVzLmlwdjYgfHwgdGhpcy5zaXplKCkgIT0gMEgAEs8BCgR1dWlkGA8gASgIQr4Bwki6AQpYCgpieXRlcy51dWlkEhRtdXN0IGJlIGEgdmFsaWQgVVVJRBo0IXJ1bGVzLnV1aWQgfHwgdGhpcy5zaXplKCkgPT0gMCB8fCB0aGlzLnNpemUoKSA9PSAxNgpeChBieXRlcy51dWlkX2VtcHR5Eil2YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgVVVJRBofIXJ1bGVzLnV1aWQgfHwgdGhpcy5zaXplKCkgIT0gMEgAEisKB2V4YW1wbGUYDiADKAxCGsJIFwoVCg1ieXRlcy5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAJCDAoKd2VsbF9rbm93biLBAwoJRW51bVJ1bGVzEnwKBWNvbnN0GAEgASgFQm3CSGoKaAoKZW51bS5jb25zdBpadGhpcyAhPSBnZXRGaWVsZChydWxlcywgJ2NvbnN0JykgPyAnbXVzdCBlcXVhbCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2NvbnN0JyldKSA6ICcnEhQKDGRlZmluZWRfb25seRgCIAEoCBJ4CgJpbhgDIAMoBUJswkhpCmcKB2VudW0uaW4aXCEodGhpcyBpbiBnZXRGaWVsZChydWxlcywgJ2luJykpID8gJ211c3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2luJyldKSA6ICcnEm8KBm5vdF9pbhgEIAMoBUJfwkhcCloKC2VudW0ubm90X2luGkt0aGlzIGluIHJ1bGVzLm5vdF9pbiA/ICdtdXN0IG5vdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW3J1bGVzLm5vdF9pbl0pIDogJycSKgoHZXhhbXBsZRgFIAMoBUIZwkgWChQKDGVudW0uZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACIu0DCg1SZXBlYXRlZFJ1bGVzEpYBCgltaW5faXRlbXMYASABKARCggHCSH8KfQoScmVwZWF0ZWQubWluX2l0ZW1zGmd1aW50KHRoaXMuc2l6ZSgpKSA8IHJ1bGVzLm1pbl9pdGVtcyA/ICdtdXN0IGNvbnRhaW4gYXQgbGVhc3QgJWQgaXRlbShzKScuZm9ybWF0KFtydWxlcy5taW5faXRlbXNdKSA6ICcnEpwBCgltYXhfaXRlbXMYAiABKARCiAHCSIQBCoEBChJyZXBlYXRlZC5tYXhfaXRlbXMaa3VpbnQodGhpcy5zaXplKCkpID4gcnVsZXMubWF4X2l0ZW1zID8gJ211c3QgY29udGFpbiBubyBtb3JlIHRoYW4gJXMgaXRlbShzKScuZm9ybWF0KFtydWxlcy5tYXhfaXRlbXNdKSA6ICcnEnAKBnVuaXF1ZRgDIAEoCEJgwkhdClsKD3JlcGVhdGVkLnVuaXF1ZRIocmVwZWF0ZWQgdmFsdWUgbXVzdCBjb250YWluIHVuaXF1ZSBpdGVtcxoeIXJ1bGVzLnVuaXF1ZSB8fCB0aGlzLnVuaXF1ZSgpEicKBWl0ZW1zGAQgASgLMhguYnVmLnZhbGlkYXRlLkZpZWxkUnVsZXMqCQjoBxCAgICAAiKKAwoITWFwUnVsZXMSjwEKCW1pbl9wYWlycxgBIAEoBEJ8wkh5CncKDW1hcC5taW5fcGFpcnMaZnVpbnQodGhpcy5zaXplKCkpIDwgcnVsZXMubWluX3BhaXJzID8gJ21hcCBtdXN0IGJlIGF0IGxlYXN0ICVkIGVudHJpZXMnLmZvcm1hdChbcnVsZXMubWluX3BhaXJzXSkgOiAnJxKOAQoJbWF4X3BhaXJzGAIgASgEQnvCSHgKdgoNbWFwLm1heF9wYWlycxpldWludCh0aGlzLnNpemUoKSkgPiBydWxlcy5tYXhfcGFpcnMgPyAnbWFwIG11c3QgYmUgYXQgbW9zdCAlZCBlbnRyaWVzJy5mb3JtYXQoW3J1bGVzLm1heF9wYWlyc10pIDogJycSJgoEa2V5cxgEIAEoCzIYLmJ1Zi52YWxpZGF0ZS5GaWVsZFJ1bGVzEigKBnZhbHVlcxgFIAEoCzIYLmJ1Zi52YWxpZGF0ZS5GaWVsZFJ1bGVzKgkI6AcQgICAgAIiJgoIQW55UnVsZXMSCgoCaW4YAiADKAkSDgoGbm90X2luGAMgAygJIr8WCg1EdXJhdGlvblJ1bGVzEpsBCgVjb25zdBgCIAEoCzIZLmdvb2dsZS5wcm90b2J1Zi5EdXJhdGlvbkJxwkhuCmwKDmR1cmF0aW9uLmNvbnN0Glp0aGlzICE9IGdldEZpZWxkKHJ1bGVzLCAnY29uc3QnKSA/ICdtdXN0IGVxdWFsICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnY29uc3QnKV0pIDogJycSogEKAmx0GAMgASgLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uQnnCSHYKdAoLZHVyYXRpb24ubHQaZSFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID49IHJ1bGVzLmx0PyAnbXVzdCBiZSBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMubHRdKSA6ICcnSAAStAEKA2x0ZRgEIAEoCzIZLmdvb2dsZS5wcm90b2J1Zi5EdXJhdGlvbkKJAcJIhQEKggEKDGR1cmF0aW9uLmx0ZRpyIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPiBydWxlcy5sdGU/ICdtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5sdGVdKSA6ICcnSAASowcKAmd0GAUgASgLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uQvkGwkj1Bgp3CgtkdXJhdGlvbi5ndBpoIWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPD0gcnVsZXMuZ3Q/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndF0pIDogJycKsAEKDmR1cmF0aW9uLmd0X2x0Gp0BaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndCAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwq4AQoYZHVyYXRpb24uZ3RfbHRfZXhjbHVzaXZlGpsBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKwAEKD2R1cmF0aW9uLmd0X2x0ZRqsAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndCAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJycKyAEKGWR1cmF0aW9uLmd0X2x0ZV9leGNsdXNpdmUaqgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndCAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJ0gBEu8HCgNndGUYBiABKAsyGS5nb29nbGUucHJvdG9idWYuRHVyYXRpb25CxAfCSMAHCoUBCgxkdXJhdGlvbi5ndGUadSFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDwgcnVsZXMuZ3RlPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlXSkgOiAnJwq/AQoPZHVyYXRpb24uZ3RlX2x0GqsBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCscBChlkdXJhdGlvbi5ndGVfbHRfZXhjbHVzaXZlGqkBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrPAQoQZHVyYXRpb24uZ3RlX2x0ZRq6AWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJwrXAQoaZHVyYXRpb24uZ3RlX2x0ZV9leGNsdXNpdmUauAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnSAESlwEKAmluGAcgAygLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uQnDCSG0KawoLZHVyYXRpb24uaW4aXCEodGhpcyBpbiBnZXRGaWVsZChydWxlcywgJ2luJykpID8gJ211c3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2luJyldKSA6ICcnEo4BCgZub3RfaW4YCCADKAsyGS5nb29nbGUucHJvdG9idWYuRHVyYXRpb25CY8JIYApeCg9kdXJhdGlvbi5ub3RfaW4aS3RoaXMgaW4gcnVsZXMubm90X2luID8gJ211c3Qgbm90IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbcnVsZXMubm90X2luXSkgOiAnJxJJCgdleGFtcGxlGAkgAygLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uQh3CSBoKGAoQZHVyYXRpb24uZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4i6wUKDkZpZWxkTWFza1J1bGVzErkBCgVjb25zdBgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE1hc2tCjQHCSIkBCoYBChBmaWVsZF9tYXNrLmNvbnN0GnJ0aGlzLnBhdGhzICE9IGdldEZpZWxkKHJ1bGVzLCAnY29uc3QnKS5wYXRocyA/ICdtdXN0IGVxdWFsIHBhdGhzICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnY29uc3QnKS5wYXRoc10pIDogJycS0wEKAmluGAIgAygJQsYBwkjCAQq/AQoNZmllbGRfbWFzay5pbhqtASF0aGlzLnBhdGhzLmFsbChwLCBwIGluIGdldEZpZWxkKHJ1bGVzLCAnaW4nKSB8fCBnZXRGaWVsZChydWxlcywgJ2luJykuZXhpc3RzKGYsIHAuc3RhcnRzV2l0aChmKycuJykpKSA/ICdtdXN0IG9ubHkgY29udGFpbiBwYXRocyBpbiAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2luJyldKSA6ICcnEu0BCgZub3RfaW4YAyADKAlC3AHCSNgBCtUBChFmaWVsZF9tYXNrLm5vdF9pbhq/ASF0aGlzLnBhdGhzLmFsbChwLCAhKHAgaW4gZ2V0RmllbGQocnVsZXMsICdub3RfaW4nKSB8fCBnZXRGaWVsZChydWxlcywgJ25vdF9pbicpLmV4aXN0cyhmLCBwLnN0YXJ0c1dpdGgoZisnLicpKSkpID8gJ211c3Qgbm90IGNvbnRhaW4gYW55IHBhdGhzIGluICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnbm90X2luJyldKSA6ICcnEkwKB2V4YW1wbGUYBCADKAsyGi5nb29nbGUucHJvdG9idWYuRmllbGRNYXNrQh/CSBwKGgoSZmllbGRfbWFzay5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAIisBcKDlRpbWVzdGFtcFJ1bGVzEp0BCgVjb25zdBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCcsJIbwptCg90aW1lc3RhbXAuY29uc3QaWnRoaXMgIT0gZ2V0RmllbGQocnVsZXMsICdjb25zdCcpID8gJ211c3QgZXF1YWwgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdjb25zdCcpXSkgOiAnJxKkAQoCbHQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQnrCSHcKdQoMdGltZXN0YW1wLmx0GmUhaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+PSBydWxlcy5sdD8gJ211c3QgYmUgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmx0XSkgOiAnJ0gAErYBCgNsdGUYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQooBwkiGAQqDAQoNdGltZXN0YW1wLmx0ZRpyIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPiBydWxlcy5sdGU/ICdtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5sdGVdKSA6ICcnSAASZgoGbHRfbm93GAcgASgIQlTCSFEKTwoQdGltZXN0YW1wLmx0X25vdxo7KHJ1bGVzLmx0X25vdyAmJiB0aGlzID4gbm93KSA/ICdtdXN0IGJlIGxlc3MgdGhhbiBub3cnIDogJydIABKpBwoCZ3QYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQv4Gwkj6Bgp4Cgx0aW1lc3RhbXAuZ3QaaCFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDw9IHJ1bGVzLmd0PyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RdKSA6ICcnCrEBCg90aW1lc3RhbXAuZ3RfbHQanQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCrkBChl0aW1lc3RhbXAuZ3RfbHRfZXhjbHVzaXZlGpsBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKwQEKEHRpbWVzdGFtcC5ndF9sdGUarAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICdtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnCskBChp0aW1lc3RhbXAuZ3RfbHRlX2V4Y2x1c2l2ZRqqAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnSAES9QcKA2d0ZRgGIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCyQfCSMUHCoYBCg10aW1lc3RhbXAuZ3RlGnUhaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8IHJ1bGVzLmd0ZT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZV0pIDogJycKwAEKEHRpbWVzdGFtcC5ndGVfbHQaqwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycKyAEKGnRpbWVzdGFtcC5ndGVfbHRfZXhjbHVzaXZlGqkBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrQAQoRdGltZXN0YW1wLmd0ZV9sdGUaugFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3RlICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPCBydWxlcy5ndGUpPyAnbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJycK2AEKG3RpbWVzdGFtcC5ndGVfbHRlX2V4Y2x1c2l2ZRq4AWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJydIARJpCgZndF9ub3cYCCABKAhCV8JIVApSChB0aW1lc3RhbXAuZ3Rfbm93Gj4ocnVsZXMuZ3Rfbm93ICYmIHRoaXMgPCBub3cpID8gJ211c3QgYmUgZ3JlYXRlciB0aGFuIG5vdycgOiAnJ0gBErEBCgZ3aXRoaW4YCSABKAsyGS5nb29nbGUucHJvdG9idWYuRHVyYXRpb25ChQHCSIEBCn8KEHRpbWVzdGFtcC53aXRoaW4aa3RoaXMgPCBub3ctcnVsZXMud2l0aGluIHx8IHRoaXMgPiBub3crcnVsZXMud2l0aGluID8gJ211c3QgYmUgd2l0aGluICVzIG9mIG5vdycuZm9ybWF0KFtydWxlcy53aXRoaW5dKSA6ICcnEksKB2V4YW1wbGUYCiADKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQh7CSBsKGQoRdGltZXN0YW1wLmV4YW1wbGUaBHRydWUqCQjoBxCAgICAAkILCglsZXNzX3RoYW5CDgoMZ3JlYXRlcl90aGFuIjkKClZpb2xhdGlvbnMSKwoKdmlvbGF0aW9ucxgBIAMoCzIXLmJ1Zi52YWxpZGF0ZS5WaW9sYXRpb24inwEKCVZpb2xhdGlvbhImCgVmaWVsZBgFIAEoCzIXLmJ1Zi52YWxpZGF0ZS5GaWVsZFBhdGgSJQoEcnVsZRgGIAEoCzIXLmJ1Zi52YWxpZGF0ZS5GaWVsZFBhdGgSDwoHcnVsZV9pZBgCIAEoCRIPCgdtZXNzYWdlGAMgASgJEg8KB2Zvcl9rZXkYBCABKAhKBAgBEAJSCmZpZWxkX3BhdGgiPQoJRmllbGRQYXRoEjAKCGVsZW1lbnRzGAEgAygLMh4uYnVmLnZhbGlkYXRlLkZpZWxkUGF0aEVsZW1lbnQi6QIKEEZpZWxkUGF0aEVsZW1lbnQSFAoMZmllbGRfbnVtYmVyGAEgASgFEhIKCmZpZWxkX25hbWUYAiABKAkSPgoKZmllbGRfdHlwZRgDIAEoDjIqLmdvb2dsZS5wcm90b2J1Zi5GaWVsZERlc2NyaXB0b3JQcm90by5UeXBlEjwKCGtleV90eXBlGAQgASgOMiouZ29vZ2xlLnByb3RvYnVmLkZpZWxkRGVzY3JpcHRvclByb3RvLlR5cGUSPgoKdmFsdWVfdHlwZRgFIAEoDjIqLmdvb2dsZS5wcm90b2J1Zi5GaWVsZERlc2NyaXB0b3JQcm90by5UeXBlEg8KBWluZGV4GAYgASgESAASEgoIYm9vbF9rZXkYByABKAhIABIRCgdpbnRfa2V5GAggASgDSAASEgoIdWludF9rZXkYCSABKARIABIUCgpzdHJpbmdfa2V5GAogASgJSABCCwoJc3Vic2NyaXB0KqEBCgZJZ25vcmUSFgoSSUdOT1JFX1VOU1BFQ0lGSUVEEAASGAoUSUdOT1JFX0lGX1pFUk9fVkFMVUUQARIRCg1JR05PUkVfQUxXQVlTEAMiBAgCEAIqDElHTk9SRV9FTVBUWSoOSUdOT1JFX0RFRkFVTFQqF0lHTk9SRV9JRl9ERUZBVUxUX1ZBTFVFKhVJR05PUkVfSUZfVU5QT1BVTEFURUQqbgoKS25vd25SZWdleBIbChdLTk9XTl9SRUdFWF9VTlNQRUNJRklFRBAAEiAKHEtOT1dOX1JFR0VYX0hUVFBfSEVBREVSX05BTUUQARIhCh1LTk9XTl9SRUdFWF9IVFRQX0hFQURFUl9WQUxVRRACOlYKB21lc3NhZ2USHy5nb29nbGUucHJvdG9idWYuTWVzc2FnZU9wdGlvbnMYhwkgASgLMhouYnVmLnZhbGlkYXRlLk1lc3NhZ2VSdWxlc1IHbWVzc2FnZTpOCgVvbmVvZhIdLmdvb2dsZS5wcm90b2J1Zi5PbmVvZk9wdGlvbnMYhwkgASgLMhguYnVmLnZhbGlkYXRlLk9uZW9mUnVsZXNSBW9uZW9mOk4KBWZpZWxkEh0uZ29vZ2xlLnByb3RvYnVmLkZpZWxkT3B0aW9ucxiHCSABKAsyGC5idWYudmFsaWRhdGUuRmllbGRSdWxlc1IFZmllbGQ6XQoKcHJlZGVmaW5lZBIdLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE9wdGlvbnMYiAkgASgLMh0uYnVmLnZhbGlkYXRlLlByZWRlZmluZWRSdWxlc1IKcHJlZGVmaW5lZEK7AQoQY29tLmJ1Zi52YWxpZGF0ZUINVmFsaWRhdGVQcm90b1ABWkdidWYuYnVpbGQvZ2VuL2dvL2J1ZmJ1aWxkL3Byb3RvdmFsaWRhdGUvcHJvdG9jb2xidWZmZXJzL2dvL2J1Zi92YWxpZGF0ZaICA0JWWKoCDEJ1Zi5WYWxpZGF0ZcoCDEJ1ZlxWYWxpZGF0ZeICGEJ1ZlxWYWxpZGF0ZVxHUEJNZXRhZGF0YeoCDUJ1Zjo6VmFsaWRhdGU\", [file_google_protobuf_descriptor, file_google_protobuf_duration, file_google_protobuf_field_mask, file_google_protobuf_timestamp]);\n\n/**\n * `Rule` represents a validation rule written in the Common Expression\n * Language (CEL) syntax. Each Rule includes a unique identifier, an\n * optional error message, and the CEL expression to evaluate. For more\n * information, [see our documentation](https://buf.build/docs/protovalidate/schemas/custom-rules/).\n *\n * ```proto\n * message Foo {\n *   option (buf.validate.message).cel = {\n *     id: \"foo.bar\"\n *     message: \"bar must be greater than 0\"\n *     expression: \"this.bar > 0\"\n *   };\n *   int32 bar = 1;\n * }\n * ```\n *\n * @generated from message buf.validate.Rule\n */\nexport type Rule = Message<\"buf.validate.Rule\"> & {\n  /**\n   * `id` is a string that serves as a machine-readable name for this Rule.\n   * It should be unique within its scope, which could be either a message or a field.\n   *\n   * @generated from field: optional string id = 1;\n   */\n  id: string;\n\n  /**\n   * `message` is an optional field that provides a human-readable error message\n   * for this Rule when the CEL expression evaluates to false. If a\n   * non-empty message is provided, any strings resulting from the CEL\n   * expression evaluation are ignored.\n   *\n   * @generated from field: optional string message = 2;\n   */\n  message: string;\n\n  /**\n   * `expression` is the actual CEL expression that will be evaluated for\n   * validation. This string must resolve to either a boolean or a string\n   * value. If the expression evaluates to false or a non-empty string, the\n   * validation is considered failed, and the message is rejected.\n   *\n   * @generated from field: optional string expression = 3;\n   */\n  expression: string;\n};\n\n/**\n * Describes the message buf.validate.Rule.\n * Use `create(RuleSchema)` to create a new message.\n */\nexport const RuleSchema: GenMessage<Rule> = /*@__PURE__*/\n  messageDesc(file_buf_validate_validate, 0);\n\n/**\n * MessageRules represents validation rules that are applied to the entire message.\n * It includes disabling options and a list of Rule messages representing Common Expression Language (CEL) validation rules.\n *\n * @generated from message buf.validate.MessageRules\n */\nexport type MessageRules = Message<\"buf.validate.MessageRules\"> & {\n  /**\n   * `cel_expression` is a repeated field CEL expressions. Each expression specifies a validation\n   * rule to be applied to this message. These rules are written in Common Expression Language (CEL) syntax.\n   *\n   * This is a simplified form of the `cel` Rule field, where only `expression` is set. This allows for\n   * simpler syntax when defining CEL Rules where `id` and `message` derived from the `expression`. `id` will\n   * be same as the `expression`.\n   *\n   * For more information, [see our documentation](https://buf.build/docs/protovalidate/schemas/custom-rules/).\n   *\n   * ```proto\n   * message MyMessage {\n   *   // The field `foo` must be greater than 42.\n   *   option (buf.validate.message).cel_expression = \"this.foo > 42\";\n   *   // The field `foo` must be less than 84.\n   *   option (buf.validate.message).cel_expression = \"this.foo < 84\";\n   *   optional int32 foo = 1;\n   * }\n   * ```\n   *\n   * @generated from field: repeated string cel_expression = 5;\n   */\n  celExpression: string[];\n\n  /**\n   * `cel` is a repeated field of type Rule. Each Rule specifies a validation rule to be applied to this message.\n   * These rules are written in Common Expression Language (CEL) syntax. For more information,\n   * [see our documentation](https://buf.build/docs/protovalidate/schemas/custom-rules/).\n   *\n   *\n   * ```proto\n   * message MyMessage {\n   *   // The field `foo` must be greater than 42.\n   *   option (buf.validate.message).cel = {\n   *     id: \"my_message.value\",\n   *     message: \"must be greater than 42\",\n   *     expression: \"this.foo > 42\",\n   *   };\n   *   optional int32 foo = 1;\n   * }\n   * ```\n   *\n   * @generated from field: repeated buf.validate.Rule cel = 3;\n   */\n  cel: Rule[];\n\n  /**\n   * `oneof` is a repeated field of type MessageOneofRule that specifies a list of fields\n   * of which at most one can be present. If `required` is also specified, then exactly one\n   * of the specified fields _must_ be present.\n   *\n   * This will enforce oneof-like constraints with a few features not provided by\n   * actual Protobuf oneof declarations:\n   *   1. Repeated and map fields are allowed in this validation. In a Protobuf oneof,\n   *      only scalar fields are allowed.\n   *   2. Fields with implicit presence are allowed. In a Protobuf oneof, all member\n   *      fields have explicit presence. This means that, for the purpose of determining\n   *      how many fields are set, explicitly setting such a field to its zero value is\n   *      effectively the same as not setting it at all.\n   *   3. This will always generate validation errors for a message unmarshalled from\n   *      serialized data that sets more than one field. With a Protobuf oneof, when\n   *      multiple fields are present in the serialized form, earlier values are usually\n   *      silently ignored when unmarshalling, with only the last field being set when\n   *      unmarshalling completes.\n   *\n   * Note that adding a field to a `oneof` will also set the IGNORE_IF_ZERO_VALUE on the fields. This means\n   * only the field that is set will be validated and the unset fields are not validated according to the field rules.\n   * This behavior can be overridden by setting `ignore` against a field.\n   *\n   * ```proto\n   * message MyMessage {\n   *   // Only one of `field1` or `field2` _can_ be present in this message.\n   *   option (buf.validate.message).oneof = { fields: [\"field1\", \"field2\"] };\n   *   // Exactly one of `field3` or `field4` _must_ be present in this message.\n   *   option (buf.validate.message).oneof = { fields: [\"field3\", \"field4\"], required: true };\n   *   string field1 = 1;\n   *   bytes field2 = 2;\n   *   bool field3 = 3;\n   *   int32 field4 = 4;\n   * }\n   * ```\n   *\n   * @generated from field: repeated buf.validate.MessageOneofRule oneof = 4;\n   */\n  oneof: MessageOneofRule[];\n};\n\n/**\n * Describes the message buf.validate.MessageRules.\n * Use `create(MessageRulesSchema)` to create a new message.\n */\nexport const MessageRulesSchema: GenMessage<MessageRules> = /*@__PURE__*/\n  messageDesc(file_buf_validate_validate, 1);\n\n/**\n * @generated from message buf.validate.MessageOneofRule\n */\nexport type MessageOneofRule = Message<\"buf.validate.MessageOneofRule\"> & {\n  /**\n   * A list of field names to include in the oneof. All field names must be\n   * defined in the message. At least one field must be specified, and\n   * duplicates are not permitted.\n   *\n   * @generated from field: repeated string fields = 1;\n   */\n  fields: string[];\n\n  /**\n   * If true, one of the fields specified _must_ be set.\n   *\n   * @generated from field: optional bool required = 2;\n   */\n  required: boolean;\n};\n\n/**\n * Describes the message buf.validate.MessageOneofRule.\n * Use `create(MessageOneofRuleSchema)` to create a new message.\n */\nexport const MessageOneofRuleSchema: GenMessage<MessageOneofRule> = /*@__PURE__*/\n  messageDesc(file_buf_validate_validate, 2);\n\n/**\n * The `OneofRules` message type enables you to manage rules for\n * oneof fields in your protobuf messages.\n *\n * @generated from message buf.validate.OneofRules\n */\nexport type OneofRules = Message<\"buf.validate.OneofRules\"> & {\n  /**\n   * If `required` is true, exactly one field of the oneof must be set. A\n   * validation error is returned if no fields in the oneof are set. Further rules\n   * should be placed on the fields themselves to ensure they are valid values,\n   * such as `min_len` or `gt`.\n   *\n   * ```proto\n   * message MyMessage {\n   *   oneof value {\n   *     // Either `a` or `b` must be set. If `a` is set, it must also be\n   *     // non-empty; whereas if `b` is set, it can still be an empty string.\n   *     option (buf.validate.oneof).required = true;\n   *     string a = 1 [(buf.validate.field).string.min_len = 1];\n   *     string b = 2;\n   *   }\n   * }\n   * ```\n   *\n   * @generated from field: optional bool required = 1;\n   */\n  required: boolean;\n};\n\n/**\n * Describes the message buf.validate.OneofRules.\n * Use `create(OneofRulesSchema)` to create a new message.\n */\nexport const OneofRulesSchema: GenMessage<OneofRules> = /*@__PURE__*/\n  messageDesc(file_buf_validate_validate, 3);\n\n/**\n * FieldRules encapsulates the rules for each type of field. Depending on\n * the field, the correct set should be used to ensure proper validations.\n *\n * @generated from message buf.validate.FieldRules\n */\nexport type FieldRules = Message<\"buf.validate.FieldRules\"> & {\n  /**\n   * `cel_expression` is a repeated field CEL expressions. Each expression specifies a validation\n   * rule to be applied to this message. These rules are written in Common Expression Language (CEL) syntax.\n   *\n   * This is a simplified form of the `cel` Rule field, where only `expression` is set. This allows for\n   * simpler syntax when defining CEL Rules where `id` and `message` derived from the `expression`. `id` will\n   * be same as the `expression`.\n   *\n   * For more information, [see our documentation](https://buf.build/docs/protovalidate/schemas/custom-rules/).\n   *\n   * ```proto\n   * message MyMessage {\n   *   // The field `value` must be greater than 42.\n   *   optional int32 value = 1 [(buf.validate.field).cel_expression = \"this > 42\"];\n   * }\n   * ```\n   *\n   * @generated from field: repeated string cel_expression = 29;\n   */\n  celExpression: string[];\n\n  /**\n   * `cel` is a repeated field used to represent a textual expression\n   * in the Common Expression Language (CEL) syntax. For more information,\n   * [see our documentation](https://buf.build/docs/protovalidate/schemas/custom-rules/).\n   *\n   * ```proto\n   * message MyMessage {\n   *   // The field `value` must be greater than 42.\n   *   optional int32 value = 1 [(buf.validate.field).cel = {\n   *     id: \"my_message.value\",\n   *     message: \"must be greater than 42\",\n   *     expression: \"this > 42\",\n   *   }];\n   * }\n   * ```\n   *\n   * @generated from field: repeated buf.validate.Rule cel = 23;\n   */\n  cel: Rule[];\n\n  /**\n   * If `required` is true, the field must be set. A validation error is returned\n   * if the field is not set.\n   *\n   * ```proto\n   * syntax=\"proto3\";\n   *\n   * message FieldsWithPresence {\n   *   // Requires any string to be set, including the empty string.\n   *   optional string link = 1 [\n   *     (buf.validate.field).required = true\n   *   ];\n   *   // Requires true or false to be set.\n   *   optional bool disabled = 2 [\n   *     (buf.validate.field).required = true\n   *   ];\n   *   // Requires a message to be set, including the empty message.\n   *   SomeMessage msg = 4 [\n   *     (buf.validate.field).required = true\n   *   ];\n   * }\n   * ```\n   *\n   * All fields in the example above track presence. By default, Protovalidate\n   * ignores rules on those fields if no value is set. `required` ensures that\n   * the fields are set and valid.\n   *\n   * Fields that don't track presence are always validated by Protovalidate,\n   * whether they are set or not. It is not necessary to add `required`. It\n   * can be added to indicate that the field cannot be the zero value.\n   *\n   * ```proto\n   * syntax=\"proto3\";\n   *\n   * message FieldsWithoutPresence {\n   *   // `string.email` always applies, even to an empty string.\n   *   string link = 1 [\n   *     (buf.validate.field).string.email = true\n   *   ];\n   *   // `repeated.min_items` always applies, even to an empty list.\n   *   repeated string labels = 2 [\n   *     (buf.validate.field).repeated.min_items = 1\n   *   ];\n   *   // `required`, for fields that don't track presence, indicates\n   *   // the value of the field can't be the zero value.\n   *   int32 zero_value_not_allowed = 3 [\n   *     (buf.validate.field).required = true\n   *   ];\n   * }\n   * ```\n   *\n   * To learn which fields track presence, see the\n   * [Field Presence cheat sheet](https://protobuf.dev/programming-guides/field_presence/#cheat).\n   *\n   * Note: While field rules can be applied to repeated items, map keys, and map\n   * values, the elements are always considered to be set. Consequently,\n   * specifying `repeated.items.required` is redundant.\n   *\n   * @generated from field: optional bool required = 25;\n   */\n  required: boolean;\n\n  /**\n   * Ignore validation rules on the field if its value matches the specified\n   * criteria. See the `Ignore` enum for details.\n   *\n   * ```proto\n   * message UpdateRequest {\n   *   // The uri rule only applies if the field is not an empty string.\n   *   string url = 1 [\n   *     (buf.validate.field).ignore = IGNORE_IF_ZERO_VALUE,\n   *     (buf.validate.field).string.uri = true\n   *   ];\n   * }\n   * ```\n   *\n   * @generated from field: optional buf.validate.Ignore ignore = 27;\n   */\n  ignore: Ignore;\n\n  /**\n   * @generated from oneof buf.validate.FieldRules.type\n   */\n  type: {\n    /**\n     * Scalar Field Types\n     *\n     * @generated from field: buf.validate.FloatRules float = 1;\n     */\n    value: FloatRules;\n    case: \"float\";\n  } | {\n    /**\n     * @generated from field: buf.validate.DoubleRules double = 2;\n     */\n    value: DoubleRules;\n    case: \"double\";\n  } | {\n    /**\n     * @generated from field: buf.validate.Int32Rules int32 = 3;\n     */\n    value: Int32Rules;\n    case: \"int32\";\n  } | {\n    /**\n     * @generated from field: buf.validate.Int64Rules int64 = 4;\n     */\n    value: Int64Rules;\n    case: \"int64\";\n  } | {\n    /**\n     * @generated from field: buf.validate.UInt32Rules uint32 = 5;\n     */\n    value: UInt32Rules;\n    case: \"uint32\";\n  } | {\n    /**\n     * @generated from field: buf.validate.UInt64Rules uint64 = 6;\n     */\n    value: UInt64Rules;\n    case: \"uint64\";\n  } | {\n    /**\n     * @generated from field: buf.validate.SInt32Rules sint32 = 7;\n     */\n    value: SInt32Rules;\n    case: \"sint32\";\n  } | {\n    /**\n     * @generated from field: buf.validate.SInt64Rules sint64 = 8;\n     */\n    value: SInt64Rules;\n    case: \"sint64\";\n  } | {\n    /**\n     * @generated from field: buf.validate.Fixed32Rules fixed32 = 9;\n     */\n    value: Fixed32Rules;\n    case: \"fixed32\";\n  } | {\n    /**\n     * @generated from field: buf.validate.Fixed64Rules fixed64 = 10;\n     */\n    value: Fixed64Rules;\n    case: \"fixed64\";\n  } | {\n    /**\n     * @generated from field: buf.validate.SFixed32Rules sfixed32 = 11;\n     */\n    value: SFixed32Rules;\n    case: \"sfixed32\";\n  } | {\n    /**\n     * @generated from field: buf.validate.SFixed64Rules sfixed64 = 12;\n     */\n    value: SFixed64Rules;\n    case: \"sfixed64\";\n  } | {\n    /**\n     * @generated from field: buf.validate.BoolRules bool = 13;\n     */\n    value: BoolRules;\n    case: \"bool\";\n  } | {\n    /**\n     * @generated from field: buf.validate.StringRules string = 14;\n     */\n    value: StringRules;\n    case: \"string\";\n  } | {\n    /**\n     * @generated from field: buf.validate.BytesRules bytes = 15;\n     */\n    value: BytesRules;\n    case: \"bytes\";\n  } | {\n    /**\n     * Complex Field Types\n     *\n     * @generated from field: buf.validate.EnumRules enum = 16;\n     */\n    value: EnumRules;\n    case: \"enum\";\n  } | {\n    /**\n     * @generated from field: buf.validate.RepeatedRules repeated = 18;\n     */\n    value: RepeatedRules;\n    case: \"repeated\";\n  } | {\n    /**\n     * @generated from field: buf.validate.MapRules map = 19;\n     */\n    value: MapRules;\n    case: \"map\";\n  } | {\n    /**\n     * Well-Known Field Types\n     *\n     * @generated from field: buf.validate.AnyRules any = 20;\n     */\n    value: AnyRules;\n    case: \"any\";\n  } | {\n    /**\n     * @generated from field: buf.validate.DurationRules duration = 21;\n     */\n    value: DurationRules;\n    case: \"duration\";\n  } | {\n    /**\n     * @generated from field: buf.validate.FieldMaskRules field_mask = 28;\n     */\n    value: FieldMaskRules;\n    case: \"fieldMask\";\n  } | {\n    /**\n     * @generated from field: buf.validate.TimestampRules timestamp = 22;\n     */\n    value: TimestampRules;\n    case: \"timestamp\";\n  } | { case: undefined; value?: undefined };\n};\n\n/**\n * Describes the message buf.validate.FieldRules.\n * Use `create(FieldRulesSchema)` to create a new message.\n */\nexport const FieldRulesSchema: GenMessage<FieldRules> = /*@__PURE__*/\n  messageDesc(file_buf_validate_validate, 4);\n\n/**\n * PredefinedRules are custom rules that can be re-used with\n * multiple fields.\n *\n * @generated from message buf.validate.PredefinedRules\n */\nexport type PredefinedRules = Message<\"buf.validate.PredefinedRules\"> & {\n  /**\n   * `cel` is a repeated field used to represent a textual expression\n   * in the Common Expression Language (CEL) syntax. For more information,\n   * [see our documentation](https://buf.build/docs/protovalidate/schemas/predefined-rules/).\n   *\n   * ```proto\n   * message MyMessage {\n   *   // The field `value` must be greater than 42.\n   *   optional int32 value = 1 [(buf.validate.predefined).cel = {\n   *     id: \"my_message.value\",\n   *     message: \"must be greater than 42\",\n   *     expression: \"this > 42\",\n   *   }];\n   * }\n   * ```\n   *\n   * @generated from field: repeated buf.validate.Rule cel = 1;\n   */\n  cel: Rule[];\n};\n\n/**\n * Describes the message buf.validate.PredefinedRules.\n * Use `create(PredefinedRulesSchema)` to create a new message.\n */\nexport const PredefinedRulesSchema: GenMessage<PredefinedRules> = /*@__PURE__*/\n  messageDesc(file_buf_validate_validate, 5);\n\n/**\n * FloatRules describes the rules applied to `float` values. These\n * rules may also be applied to the `google.protobuf.FloatValue` Well-Known-Type.\n *\n * @generated from message buf.validate.FloatRules\n */\nexport type FloatRules = Message<\"buf.validate.FloatRules\"> & {\n  /**\n   * `const` requires the field value to exactly match the specified value. If\n   * the field value doesn't match, an error message is generated.\n   *\n   * ```proto\n   * message MyFloat {\n   *   // value must equal 42.0\n   *   float value = 1 [(buf.validate.field).float.const = 42.0];\n   * }\n   * ```\n   *\n   * @generated from field: optional float const = 1;\n   */\n  const: number;\n\n  /**\n   * @generated from oneof buf.validate.FloatRules.less_than\n   */\n  lessThan: {\n    /**\n     * `lt` requires the field value to be less than the specified value (field <\n     * value). If the field value is equal to or greater than the specified value,\n     * an error message is generated.\n     *\n     * ```proto\n     * message MyFloat {\n     *   // must be less than 10.0\n     *   float value = 1 [(buf.validate.field).float.lt = 10.0];\n     * }\n     * ```\n     *\n     * @generated from field: float lt = 2;\n     */\n    value: number;\n    case: \"lt\";\n  } | {\n    /**\n     * `lte` requires the field value to be less than or equal to the specified\n     * value (field <= value). If the field value is greater than the specified\n     * value, an error message is generated.\n     *\n     * ```proto\n     * message MyFloat {\n     *   // must be less than or equal to 10.0\n     *   float value = 1 [(buf.validate.field).float.lte = 10.0];\n     * }\n     * ```\n     *\n     * @generated from field: float lte = 3;\n     */\n    value: number;\n    case: \"lte\";\n  } | { case: undefined; value?: undefined };\n\n  /**\n   * @generated from oneof buf.validate.FloatRules.greater_than\n   */\n  greaterThan: {\n    /**\n     * `gt` requires the field value to be greater than the specified value\n     * (exclusive). If the value of `gt` is larger than a specified `lt` or\n     * `lte`, the range is reversed, and the field value must be outside the\n     * specified range. If the field value doesn't meet the required conditions,\n     * an error message is generated.\n     *\n     * ```proto\n     * message MyFloat {\n     *   // must be greater than 5.0 [float.gt]\n     *   float value = 1 [(buf.validate.field).float.gt = 5.0];\n     *\n     *   // must be greater than 5 and less than 10.0 [float.gt_lt]\n     *   float other_value = 2 [(buf.validate.field).float = { gt: 5.0, lt: 10.0 }];\n     *\n     *   // must be greater than 10 or less than 5.0 [float.gt_lt_exclusive]\n     *   float another_value = 3 [(buf.validate.field).float = { gt: 10.0, lt: 5.0 }];\n     * }\n     * ```\n     *\n     * @generated from field: float gt = 4;\n     */\n    value: number;\n    case: \"gt\";\n  } | {\n    /**\n     * `gte` requires the field value to be greater than or equal to the specified\n     * value (exclusive). If the value of `gte` is larger than a specified `lt`\n     * or `lte`, the range is reversed, and the field value must be outside the\n     * specified range. If the field value doesn't meet the required conditions,\n     * an error message is generated.\n     *\n     * ```proto\n     * message MyFloat {\n     *   // must be greater than or equal to 5.0 [float.gte]\n     *   float value = 1 [(buf.validate.field).float.gte = 5.0];\n     *\n     *   // must be greater than or equal to 5.0 and less than 10.0 [float.gte_lt]\n     *   float other_value = 2 [(buf.validate.field).float = { gte: 5.0, lt: 10.0 }];\n     *\n     *   // must be greater than or equal to 10.0 or less than 5.0 [float.gte_lt_exclusive]\n     *   float another_value = 3 [(buf.validate.field).float = { gte: 10.0, lt: 5.0 }];\n     * }\n     * ```\n     *\n     * @generated from field: float gte = 5;\n     */\n    value: number;\n    case: \"gte\";\n  } | { case: undefined; value?: undefined };\n\n  /**\n   * `in` requires the field value to be equal to one of the specified values.\n   * If the field value isn't one of the specified values, an error message\n   * is generated.\n   *\n   * ```proto\n   * message MyFloat {\n   *   // must be in list [1.0, 2.0, 3.0]\n   *   float value = 1 [(buf.validate.field).float = { in: [1.0, 2.0, 3.0] }];\n   * }\n   * ```\n   *\n   * @generated from field: repeated float in = 6;\n   */\n  in: number[];\n\n  /**\n   * `not_in` requires the field value to not be equal to any of the specified\n   * values. If the field value is one of the specified values, an error\n   * message is generated.\n   *\n   * ```proto\n   * message MyFloat {\n   *   // value must not be in list [1.0, 2.0, 3.0]\n   *   float value = 1 [(buf.validate.field).float = { not_in: [1.0, 2.0, 3.0] }];\n   * }\n   * ```\n   *\n   * @generated from field: repeated float not_in = 7;\n   */\n  notIn: number[];\n\n  /**\n   * `finite` requires the field value to be finite. If the field value is\n   * infinite or NaN, an error message is generated.\n   *\n   * @generated from field: optional bool finite = 8;\n   */\n  finite: boolean;\n\n  /**\n   * `example` specifies values that the field may have. These values SHOULD\n   * conform to other rules. `example` values will not impact validation\n   * but may be used as helpful guidance on how to populate the given field.\n   *\n   * ```proto\n   * message MyFloat {\n   *   float value = 1 [\n   *     (buf.validate.field).float.example = 1.0,\n   *     (buf.validate.field).float.example = inf\n   *   ];\n   * }\n   * ```\n   *\n   * @generated from field: repeated float example = 9;\n   */\n  example: number[];\n};\n\n/**\n * Describes the message buf.validate.FloatRules.\n * Use `create(FloatRulesSchema)` to create a new message.\n */\nexport const FloatRulesSchema: GenMessage<FloatRules> = /*@__PURE__*/\n  messageDesc(file_buf_validate_validate, 6);\n\n/**\n * DoubleRules describes the rules applied to `double` values. These\n * rules may also be applied to the `google.protobuf.DoubleValue` Well-Known-Type.\n *\n * @generated from message buf.validate.DoubleRules\n */\nexport type DoubleRules = Message<\"buf.validate.DoubleRules\"> & {\n  /**\n   * `const` requires the field value to exactly match the specified value. If\n   * the field value doesn't match, an error message is generated.\n   *\n   * ```proto\n   * message MyDouble {\n   *   // value must equal 42.0\n   *   double value = 1 [(buf.validate.field).double.const = 42.0];\n   * }\n   * ```\n   *\n   * @generated from field: optional double const = 1;\n   */\n  const: number;\n\n  /**\n   * @generated from oneof buf.validate.DoubleRules.less_than\n   */\n  lessThan: {\n    /**\n     * `lt` requires the field value to be less than the specified value (field <\n     * value). If the field value is equal to or greater than the specified\n     * value, an error message is generated.\n     *\n     * ```proto\n     * message MyDouble {\n     *   // must be less than 10.0\n     *   double value = 1 [(buf.validate.field).double.lt = 10.0];\n     * }\n     * ```\n     *\n     * @generated from field: double lt = 2;\n     */\n    value: number;\n    case: \"lt\";\n  } | {\n    /**\n     * `lte` requires the field value to be less than or equal to the specified value\n     * (field <= value). If the field value is greater than the specified value,\n     * an error message is generated.\n     *\n     * ```proto\n     * message MyDouble {\n     *   // must be less than or equal to 10.0\n     *   double value = 1 [(buf.validate.field).double.lte = 10.0];\n     * }\n     * ```\n     *\n     * @generated from field: double lte = 3;\n     */\n    value: number;\n    case: \"lte\";\n  } | { case: undefined; value?: undefined };\n\n  /**\n   * @generated from oneof buf.validate.DoubleRules.greater_than\n   */\n  greaterThan: {\n    /**\n     * `gt` requires the field value to be greater than the specified value\n     * (exclusive). If the value of `gt` is larger than a specified `lt` or `lte`,\n     * the range is reversed, and the field value must be outside the specified\n     * range. If the field value doesn't meet the required conditions, an error\n     * message is generated.\n     *\n     * ```proto\n     * message MyDouble {\n     *   // must be greater than 5.0 [double.gt]\n     *   double value = 1 [(buf.validate.field).double.gt = 5.0];\n     *\n     *   // must be greater than 5 and less than 10.0 [double.gt_lt]\n     *   double other_value = 2 [(buf.validate.field).double = { gt: 5.0, lt: 10.0 }];\n     *\n     *   // must be greater than 10 or less than 5.0 [double.gt_lt_exclusive]\n     *   double another_value = 3 [(buf.validate.field).double = { gt: 10.0, lt: 5.0 }];\n     * }\n     * ```\n     *\n     * @generated from field: double gt = 4;\n     */\n    value: number;\n    case: \"gt\";\n  } | {\n    /**\n     * `gte` requires the field value to be greater than or equal to the specified\n     * value (exclusive). If the value of `gte` is larger than a specified `lt` or\n     * `lte`, the range is reversed, and the field value must be outside the\n     * specified range. If the field value doesn't meet the required conditions,\n     * an error message is generated.\n     *\n     * ```proto\n     * message MyDouble {\n     *   // must be greater than or equal to 5.0 [double.gte]\n     *   double value = 1 [(buf.validate.field).double.gte = 5.0];\n     *\n     *   // must be greater than or equal to 5.0 and less than 10.0 [double.gte_lt]\n     *   double other_value = 2 [(buf.validate.field).double = { gte: 5.0, lt: 10.0 }];\n     *\n     *   // must be greater than or equal to 10.0 or less than 5.0 [double.gte_lt_exclusive]\n     *   double another_value = 3 [(buf.validate.field).double = { gte: 10.0, lt: 5.0 }];\n     * }\n     * ```\n     *\n     * @generated from field: double gte = 5;\n     */\n    value: number;\n    case: \"gte\";\n  } | { case: undefined; value?: undefined };\n\n  /**\n   * `in` requires the field value to be equal to one of the specified values.\n   * If the field value isn't one of the specified values, an error message is\n   * generated.\n   *\n   * ```proto\n   * message MyDouble {\n   *   // must be in list [1.0, 2.0, 3.0]\n   *   double value = 1 [(buf.validate.field).double = { in: [1.0, 2.0, 3.0] }];\n   * }\n   * ```\n   *\n   * @generated from field: repeated double in = 6;\n   */\n  in: number[];\n\n  /**\n   * `not_in` requires the field value to not be equal to any of the specified\n   * values. If the field value is one of the specified values, an error\n   * message is generated.\n   *\n   * ```proto\n   * message MyDouble {\n   *   // value must not be in list [1.0, 2.0, 3.0]\n   *   double value = 1 [(buf.validate.field).double = { not_in: [1.0, 2.0, 3.0] }];\n   * }\n   * ```\n   *\n   * @generated from field: repeated double not_in = 7;\n   */\n  notIn: number[];\n\n  /**\n   * `finite` requires the field value to be finite. If the field value is\n   * infinite or NaN, an error message is generated.\n   *\n   * @generated from field: optional bool finite = 8;\n   */\n  finite: boolean;\n\n  /**\n   * `example` specifies values that the field may have. These values SHOULD\n   * conform to other rules. `example` values will not impact validation\n   * but may be used as helpful guidance on how to populate the given field.\n   *\n   * ```proto\n   * message MyDouble {\n   *   double value = 1 [\n   *     (buf.validate.field).double.example = 1.0,\n   *     (buf.validate.field).double.example = inf\n   *   ];\n   * }\n   * ```\n   *\n   * @generated from field: repeated double example = 9;\n   */\n  example: number[];\n};\n\n/**\n * Describes the message buf.validate.DoubleRules.\n * Use `create(DoubleRulesSchema)` to create a new message.\n */\nexport const DoubleRulesSchema: GenMessage<DoubleRules> = /*@__PURE__*/\n  messageDesc(file_buf_validate_validate, 7);\n\n/**\n * Int32Rules describes the rules applied to `int32` values. These\n * rules may also be applied to the `google.protobuf.Int32Value` Well-Known-Type.\n *\n * @generated from message buf.validate.Int32Rules\n */\nexport type Int32Rules = Message<\"buf.validate.Int32Rules\"> & {\n  /**\n   * `const` requires the field value to exactly match the specified value. If\n   * the field value doesn't match, an error message is generated.\n   *\n   * ```proto\n   * message MyInt32 {\n   *   // value must equal 42\n   *   int32 value = 1 [(buf.validate.field).int32.const = 42];\n   * }\n   * ```\n   *\n   * @generated from field: optional int32 const = 1;\n   */\n  const: number;\n\n  /**\n   * @generated from oneof buf.validate.Int32Rules.less_than\n   */\n  lessThan: {\n    /**\n     * `lt` requires the field value to be less than the specified value (field\n     * < value). If the field value is equal to or greater than the specified\n     * value, an error message is generated.\n     *\n     * ```proto\n     * message MyInt32 {\n     *   // must be less than 10\n     *   int32 value = 1 [(buf.validate.field).int32.lt = 10];\n     * }\n     * ```\n     *\n     * @generated from field: int32 lt = 2;\n     */\n    value: number;\n    case: \"lt\";\n  } | {\n    /**\n     * `lte` requires the field value to be less than or equal to the specified\n     * value (field <= value). If the field value is greater than the specified\n     * value, an error message is generated.\n     *\n     * ```proto\n     * message MyInt32 {\n     *   // must be less than or equal to 10\n     *   int32 value = 1 [(buf.validate.field).int32.lte = 10];\n     * }\n     * ```\n     *\n     * @generated from field: int32 lte = 3;\n     */\n    value: number;\n    case: \"lte\";\n  } | { case: undefined; value?: undefined };\n\n  /**\n   * @generated from oneof buf.validate.Int32Rules.greater_than\n   */\n  greaterThan: {\n    /**\n     * `gt` requires the field value to be greater than the specified value\n     * (exclusive). If the value of `gt` is larger than a specified `lt` or\n     * `lte`, the range is reversed, and the field value must be outside the\n     * specified range. If the field value doesn't meet the required conditions,\n     * an error message is generated.\n     *\n     * ```proto\n     * message MyInt32 {\n     *   // must be greater than 5 [int32.gt]\n     *   int32 value = 1 [(buf.validate.field).int32.gt = 5];\n     *\n     *   // must be greater than 5 and less than 10 [int32.gt_lt]\n     *   int32 other_value = 2 [(buf.validate.field).int32 = { gt: 5, lt: 10 }];\n     *\n     *   // must be greater than 10 or less than 5 [int32.gt_lt_exclusive]\n     *   int32 another_value = 3 [(buf.validate.field).int32 = { gt: 10, lt: 5 }];\n     * }\n     * ```\n     *\n     * @generated from field: int32 gt = 4;\n     */\n    value: number;\n    case: \"gt\";\n  } | {\n    /**\n     * `gte` requires the field value to be greater than or equal to the specified value\n     * (exclusive). If the value of `gte` is larger than a specified `lt` or\n     * `lte`, the range is reversed, and the field value must be outside the\n     * specified range. If the field value doesn't meet the required conditions,\n     * an error message is generated.\n     *\n     * ```proto\n     * message MyInt32 {\n     *   // must be greater than or equal to 5 [int32.gte]\n     *   int32 value = 1 [(buf.validate.field).int32.gte = 5];\n     *\n     *   // must be greater than or equal to 5 and less than 10 [int32.gte_lt]\n     *   int32 other_value = 2 [(buf.validate.field).int32 = { gte: 5, lt: 10 }];\n     *\n     *   // must be greater than or equal to 10 or less than 5 [int32.gte_lt_exclusive]\n     *   int32 another_value = 3 [(buf.validate.field).int32 = { gte: 10, lt: 5 }];\n     * }\n     * ```\n     *\n     * @generated from field: int32 gte = 5;\n     */\n    value: number;\n    case: \"gte\";\n  } | { case: undefined; value?: undefined };\n\n  /**\n   * `in` requires the field value to be equal to one of the specified values.\n   * If the field value isn't one of the specified values, an error message is\n   * generated.\n   *\n   * ```proto\n   * message MyInt32 {\n   *   // must be in list [1, 2, 3]\n   *   int32 value = 1 [(buf.validate.field).int32 = { in: [1, 2, 3] }];\n   * }\n   * ```\n   *\n   * @generated from field: repeated int32 in = 6;\n   */\n  in: number[];\n\n  /**\n   * `not_in` requires the field value to not be equal to any of the specified\n   * values. If the field value is one of the specified values, an error message\n   * is generated.\n   *\n   * ```proto\n   * message MyInt32 {\n   *   // value must not be in list [1, 2, 3]\n   *   int32 value = 1 [(buf.validate.field).int32 = { not_in: [1, 2, 3] }];\n   * }\n   * ```\n   *\n   * @generated from field: repeated int32 not_in = 7;\n   */\n  notIn: number[];\n\n  /**\n   * `example` specifies values that the field may have. These values SHOULD\n   * conform to other rules. `example` values will not impact validation\n   * but may be used as helpful guidance on how to populate the given field.\n   *\n   * ```proto\n   * message MyInt32 {\n   *   int32 value = 1 [\n   *     (buf.validate.field).int32.example = 1,\n   *     (buf.validate.field).int32.example = -10\n   *   ];\n   * }\n   * ```\n   *\n   * @generated from field: repeated int32 example = 8;\n   */\n  example: number[];\n};\n\n/**\n * Describes the message buf.validate.Int32Rules.\n * Use `create(Int32RulesSchema)` to create a new message.\n */\nexport const Int32RulesSchema: GenMessage<Int32Rules> = /*@__PURE__*/\n  messageDesc(file_buf_validate_validate, 8);\n\n/**\n * Int64Rules describes the rules applied to `int64` values. These\n * rules may also be applied to the `google.protobuf.Int64Value` Well-Known-Type.\n *\n * @generated from message buf.validate.Int64Rules\n */\nexport type Int64Rules = Message<\"buf.validate.Int64Rules\"> & {\n  /**\n   * `const` requires the field value to exactly match the specified value. If\n   * the field value doesn't match, an error message is generated.\n   *\n   * ```proto\n   * message MyInt64 {\n   *   // value must equal 42\n   *   int64 value = 1 [(buf.validate.field).int64.const = 42];\n   * }\n   * ```\n   *\n   * @generated from field: optional int64 const = 1;\n   */\n  const: bigint;\n\n  /**\n   * @generated from oneof buf.validate.Int64Rules.less_than\n   */\n  lessThan: {\n    /**\n     * `lt` requires the field value to be less than the specified value (field <\n     * value). If the field value is equal to or greater than the specified value,\n     * an error message is generated.\n     *\n     * ```proto\n     * message MyInt64 {\n     *   // must be less than 10\n     *   int64 value = 1 [(buf.validate.field).int64.lt = 10];\n     * }\n     * ```\n     *\n     * @generated from field: int64 lt = 2;\n     */\n    value: bigint;\n    case: \"lt\";\n  } | {\n    /**\n     * `lte` requires the field value to be less than or equal to the specified\n     * value (field <= value). If the field value is greater than the specified\n     * value, an error message is generated.\n     *\n     * ```proto\n     * message MyInt64 {\n     *   // must be less than or equal to 10\n     *   int64 value = 1 [(buf.validate.field).int64.lte = 10];\n     * }\n     * ```\n     *\n     * @generated from field: int64 lte = 3;\n     */\n    value: bigint;\n    case: \"lte\";\n  } | { case: undefined; value?: undefined };\n\n  /**\n   * @generated from oneof buf.validate.Int64Rules.greater_than\n   */\n  greaterThan: {\n    /**\n     * `gt` requires the field value to be greater than the specified value\n     * (exclusive). If the value of `gt` is larger than a specified `lt` or\n     * `lte`, the range is reversed, and the field value must be outside the\n     * specified range. If the field value doesn't meet the required conditions,\n     * an error message is generated.\n     *\n     * ```proto\n     * message MyInt64 {\n     *   // must be greater than 5 [int64.gt]\n     *   int64 value = 1 [(buf.validate.field).int64.gt = 5];\n     *\n     *   // must be greater than 5 and less than 10 [int64.gt_lt]\n     *   int64 other_value = 2 [(buf.validate.field).int64 = { gt: 5, lt: 10 }];\n     *\n     *   // must be greater than 10 or less than 5 [int64.gt_lt_exclusive]\n     *   int64 another_value = 3 [(buf.validate.field).int64 = { gt: 10, lt: 5 }];\n     * }\n     * ```\n     *\n     * @generated from field: int64 gt = 4;\n     */\n    value: bigint;\n    case: \"gt\";\n  } | {\n    /**\n     * `gte` requires the field value to be greater than or equal to the specified\n     * value (exclusive). If the value of `gte` is larger than a specified `lt`\n     * or `lte`, the range is reversed, and the field value must be outside the\n     * specified range. If the field value doesn't meet the required conditions,\n     * an error message is generated.\n     *\n     * ```proto\n     * message MyInt64 {\n     *   // must be greater than or equal to 5 [int64.gte]\n     *   int64 value = 1 [(buf.validate.field).int64.gte = 5];\n     *\n     *   // must be greater than or equal to 5 and less than 10 [int64.gte_lt]\n     *   int64 other_value = 2 [(buf.validate.field).int64 = { gte: 5, lt: 10 }];\n     *\n     *   // must be greater than or equal to 10 or less than 5 [int64.gte_lt_exclusive]\n     *   int64 another_value = 3 [(buf.validate.field).int64 = { gte: 10, lt: 5 }];\n     * }\n     * ```\n     *\n     * @generated from field: int64 gte = 5;\n     */\n    value: bigint;\n    case: \"gte\";\n  } | { case: undefined; value?: undefined };\n\n  /**\n   * `in` requires the field value to be equal to one of the specified values.\n   * If the field value isn't one of the specified values, an error message is\n   * generated.\n   *\n   * ```proto\n   * message MyInt64 {\n   *   // must be in list [1, 2, 3]\n   *   int64 value = 1 [(buf.validate.field).int64 = { in: [1, 2, 3] }];\n   * }\n   * ```\n   *\n   * @generated from field: repeated int64 in = 6;\n   */\n  in: bigint[];\n\n  /**\n   * `not_in` requires the field value to not be equal to any of the specified\n   * values. If the field value is one of the specified values, an error\n   * message is generated.\n   *\n   * ```proto\n   * message MyInt64 {\n   *   // value must not be in list [1, 2, 3]\n   *   int64 value = 1 [(buf.validate.field).int64 = { not_in: [1, 2, 3] }];\n   * }\n   * ```\n   *\n   * @generated from field: repeated int64 not_in = 7;\n   */\n  notIn: bigint[];\n\n  /**\n   * `example` specifies values that the field may have. These values SHOULD\n   * conform to other rules. `example` values will not impact validation\n   * but may be used as helpful guidance on how to populate the given field.\n   *\n   * ```proto\n   * message MyInt64 {\n   *   int64 value = 1 [\n   *     (buf.validate.field).int64.example = 1,\n   *     (buf.validate.field).int64.example = -10\n   *   ];\n   * }\n   * ```\n   *\n   * @generated from field: repeated int64 example = 9;\n   */\n  example: bigint[];\n};\n\n/**\n * Describes the message buf.validate.Int64Rules.\n * Use `create(Int64RulesSchema)` to create a new message.\n */\nexport const Int64RulesSchema: GenMessage<Int64Rules> = /*@__PURE__*/\n  messageDesc(file_buf_validate_validate, 9);\n\n/**\n * UInt32Rules describes the rules applied to `uint32` values. These\n * rules may also be applied to the `google.protobuf.UInt32Value` Well-Known-Type.\n *\n * @generated from message buf.validate.UInt32Rules\n */\nexport type UInt32Rules = Message<\"buf.validate.UInt32Rules\"> & {\n  /**\n   * `const` requires the field value to exactly match the specified value. If\n   * the field value doesn't match, an error message is generated.\n   *\n   * ```proto\n   * message MyUInt32 {\n   *   // value must equal 42\n   *   uint32 value = 1 [(buf.validate.field).uint32.const = 42];\n   * }\n   * ```\n   *\n   * @generated from field: optional uint32 const = 1;\n   */\n  const: number;\n\n  /**\n   * @generated from oneof buf.validate.UInt32Rules.less_than\n   */\n  lessThan: {\n    /**\n     * `lt` requires the field value to be less than the specified value (field <\n     * value). If the field value is equal to or greater than the specified value,\n     * an error message is generated.\n     *\n     * ```proto\n     * message MyUInt32 {\n     *   // must be less than 10\n     *   uint32 value = 1 [(buf.validate.field).uint32.lt = 10];\n     * }\n     * ```\n     *\n     * @generated from field: uint32 lt = 2;\n     */\n    value: number;\n    case: \"lt\";\n  } | {\n    /**\n     * `lte` requires the field value to be less than or equal to the specified\n     * value (field <= value). If the field value is greater than the specified\n     * value, an error message is generated.\n     *\n     * ```proto\n     * message MyUInt32 {\n     *   // must be less than or equal to 10\n     *   uint32 value = 1 [(buf.validate.field).uint32.lte = 10];\n     * }\n     * ```\n     *\n     * @generated from field: uint32 lte = 3;\n     */\n    value: number;\n    case: \"lte\";\n  } | { case: undefined; value?: undefined };\n\n  /**\n   * @generated from oneof buf.validate.UInt32Rules.greater_than\n   */\n  greaterThan: {\n    /**\n     * `gt` requires the field value to be greater than the specified value\n     * (exclusive). If the value of `gt` is larger than a specified `lt` or\n     * `lte`, the range is reversed, and the field value must be outside the\n     * specified range. If the field value doesn't meet the required conditions,\n     * an error message is generated.\n     *\n     * ```proto\n     * message MyUInt32 {\n     *   // must be greater than 5 [uint32.gt]\n     *   uint32 value = 1 [(buf.validate.field).uint32.gt = 5];\n     *\n     *   // must be greater than 5 and less than 10 [uint32.gt_lt]\n     *   uint32 other_value = 2 [(buf.validate.field).uint32 = { gt: 5, lt: 10 }];\n     *\n     *   // must be greater than 10 or less than 5 [uint32.gt_lt_exclusive]\n     *   uint32 another_value = 3 [(buf.validate.field).uint32 = { gt: 10, lt: 5 }];\n     * }\n     * ```\n     *\n     * @generated from field: uint32 gt = 4;\n     */\n    value: number;\n    case: \"gt\";\n  } | {\n    /**\n     * `gte` requires the field value to be greater than or equal to the specified\n     * value (exclusive). If the value of `gte` is larger than a specified `lt`\n     * or `lte`, the range is reversed, and the field value must be outside the\n     * specified range. If the field value doesn't meet the required conditions,\n     * an error message is generated.\n     *\n     * ```proto\n     * message MyUInt32 {\n     *   // must be greater than or equal to 5 [uint32.gte]\n     *   uint32 value = 1 [(buf.validate.field).uint32.gte = 5];\n     *\n     *   // must be greater than or equal to 5 and less than 10 [uint32.gte_lt]\n     *   uint32 other_value = 2 [(buf.validate.field).uint32 = { gte: 5, lt: 10 }];\n     *\n     *   // must be greater than or equal to 10 or less than 5 [uint32.gte_lt_exclusive]\n     *   uint32 another_value = 3 [(buf.validate.field).uint32 = { gte: 10, lt: 5 }];\n     * }\n     * ```\n     *\n     * @generated from field: uint32 gte = 5;\n     */\n    value: number;\n    case: \"gte\";\n  } | { case: undefined; value?: undefined };\n\n  /**\n   * `in` requires the field value to be equal to one of the specified values.\n   * If the field value isn't one of the specified values, an error message is\n   * generated.\n   *\n   * ```proto\n   * message MyUInt32 {\n   *   // must be in list [1, 2, 3]\n   *   uint32 value = 1 [(buf.validate.field).uint32 = { in: [1, 2, 3] }];\n   * }\n   * ```\n   *\n   * @generated from field: repeated uint32 in = 6;\n   */\n  in: number[];\n\n  /**\n   * `not_in` requires the field value to not be equal to any of the specified\n   * values. If the field value is one of the specified values, an error\n   * message is generated.\n   *\n   * ```proto\n   * message MyUInt32 {\n   *   // value must not be in list [1, 2, 3]\n   *   uint32 value = 1 [(buf.validate.field).uint32 = { not_in: [1, 2, 3] }];\n   * }\n   * ```\n   *\n   * @generated from field: repeated uint32 not_in = 7;\n   */\n  notIn: number[];\n\n  /**\n   * `example` specifies values that the field may have. These values SHOULD\n   * conform to other rules. `example` values will not impact validation\n   * but may be used as helpful guidance on how to populate the given field.\n   *\n   * ```proto\n   * message MyUInt32 {\n   *   uint32 value = 1 [\n   *     (buf.validate.field).uint32.example = 1,\n   *     (buf.validate.field).uint32.example = 10\n   *   ];\n   * }\n   * ```\n   *\n   * @generated from field: repeated uint32 example = 8;\n   */\n  example: number[];\n};\n\n/**\n * Describes the message buf.validate.UInt32Rules.\n * Use `create(UInt32RulesSchema)` to create a new message.\n */\nexport const UInt32RulesSchema: GenMessage<UInt32Rules> = /*@__PURE__*/\n  messageDesc(file_buf_validate_validate, 10);\n\n/**\n * UInt64Rules describes the rules applied to `uint64` values. These\n * rules may also be applied to the `google.protobuf.UInt64Value` Well-Known-Type.\n *\n * @generated from message buf.validate.UInt64Rules\n */\nexport type UInt64Rules = Message<\"buf.validate.UInt64Rules\"> & {\n  /**\n   * `const` requires the field value to exactly match the specified value. If\n   * the field value doesn't match, an error message is generated.\n   *\n   * ```proto\n   * message MyUInt64 {\n   *   // value must equal 42\n   *   uint64 value = 1 [(buf.validate.field).uint64.const = 42];\n   * }\n   * ```\n   *\n   * @generated from field: optional uint64 const = 1;\n   */\n  const: bigint;\n\n  /**\n   * @generated from oneof buf.validate.UInt64Rules.less_than\n   */\n  lessThan: {\n    /**\n     * `lt` requires the field value to be less than the specified value (field <\n     * value). If the field value is equal to or greater than the specified value,\n     * an error message is generated.\n     *\n     * ```proto\n     * message MyUInt64 {\n     *   // must be less than 10\n     *   uint64 value = 1 [(buf.validate.field).uint64.lt = 10];\n     * }\n     * ```\n     *\n     * @generated from field: uint64 lt = 2;\n     */\n    value: bigint;\n    case: \"lt\";\n  } | {\n    /**\n     * `lte` requires the field value to be less than or equal to the specified\n     * value (field <= value). If the field value is greater than the specified\n     * value, an error message is generated.\n     *\n     * ```proto\n     * message MyUInt64 {\n     *   // must be less than or equal to 10\n     *   uint64 value = 1 [(buf.validate.field).uint64.lte = 10];\n     * }\n     * ```\n     *\n     * @generated from field: uint64 lte = 3;\n     */\n    value: bigint;\n    case: \"lte\";\n  } | { case: undefined; value?: undefined };\n\n  /**\n   * @generated from oneof buf.validate.UInt64Rules.greater_than\n   */\n  greaterThan: {\n    /**\n     * `gt` requires the field value to be greater than the specified value\n     * (exclusive). If the value of `gt` is larger than a specified `lt` or\n     * `lte`, the range is reversed, and the field value must be outside the\n     * specified range. If the field value doesn't meet the required conditions,\n     * an error message is generated.\n     *\n     * ```proto\n     * message MyUInt64 {\n     *   // must be greater than 5 [uint64.gt]\n     *   uint64 value = 1 [(buf.validate.field).uint64.gt = 5];\n     *\n     *   // must be greater than 5 and less than 10 [uint64.gt_lt]\n     *   uint64 other_value = 2 [(buf.validate.field).uint64 = { gt: 5, lt: 10 }];\n     *\n     *   // must be greater than 10 or less than 5 [uint64.gt_lt_exclusive]\n     *   uint64 another_value = 3 [(buf.validate.field).uint64 = { gt: 10, lt: 5 }];\n     * }\n     * ```\n     *\n     * @generated from field: uint64 gt = 4;\n     */\n    value: bigint;\n    case: \"gt\";\n  } | {\n    /**\n     * `gte` requires the field value to be greater than or equal to the specified\n     * value (exclusive). If the value of `gte` is larger than a specified `lt`\n     * or `lte`, the range is reversed, and the field value must be outside the\n     * specified range. If the field value doesn't meet the required conditions,\n     * an error message is generated.\n     *\n     * ```proto\n     * message MyUInt64 {\n     *   // must be greater than or equal to 5 [uint64.gte]\n     *   uint64 value = 1 [(buf.validate.field).uint64.gte = 5];\n     *\n     *   // must be greater than or equal to 5 and less than 10 [uint64.gte_lt]\n     *   uint64 other_value = 2 [(buf.validate.field).uint64 = { gte: 5, lt: 10 }];\n     *\n     *   // must be greater than or equal to 10 or less than 5 [uint64.gte_lt_exclusive]\n     *   uint64 another_value = 3 [(buf.validate.field).uint64 = { gte: 10, lt: 5 }];\n     * }\n     * ```\n     *\n     * @generated from field: uint64 gte = 5;\n     */\n    value: bigint;\n    case: \"gte\";\n  } | { case: undefined; value?: undefined };\n\n  /**\n   * `in` requires the field value to be equal to one of the specified values.\n   * If the field value isn't one of the specified values, an error message is\n   * generated.\n   *\n   * ```proto\n   * message MyUInt64 {\n   *   // must be in list [1, 2, 3]\n   *   uint64 value = 1 [(buf.validate.field).uint64 = { in: [1, 2, 3] }];\n   * }\n   * ```\n   *\n   * @generated from field: repeated uint64 in = 6;\n   */\n  in: bigint[];\n\n  /**\n   * `not_in` requires the field value to not be equal to any of the specified\n   * values. If the field value is one of the specified values, an error\n   * message is generated.\n   *\n   * ```proto\n   * message MyUInt64 {\n   *   // value must not be in list [1, 2, 3]\n   *   uint64 value = 1 [(buf.validate.field).uint64 = { not_in: [1, 2, 3] }];\n   * }\n   * ```\n   *\n   * @generated from field: repeated uint64 not_in = 7;\n   */\n  notIn: bigint[];\n\n  /**\n   * `example` specifies values that the field may have. These values SHOULD\n   * conform to other rules. `example` values will not impact validation\n   * but may be used as helpful guidance on how to populate the given field.\n   *\n   * ```proto\n   * message MyUInt64 {\n   *   uint64 value = 1 [\n   *     (buf.validate.field).uint64.example = 1,\n   *     (buf.validate.field).uint64.example = 10\n   *   ];\n   * }\n   * ```\n   *\n   * @generated from field: repeated uint64 example = 8;\n   */\n  example: bigint[];\n};\n\n/**\n * Describes the message buf.validate.UInt64Rules.\n * Use `create(UInt64RulesSchema)` to create a new message.\n */\nexport const UInt64RulesSchema: GenMessage<UInt64Rules> = /*@__PURE__*/\n  messageDesc(file_buf_validate_validate, 11);\n\n/**\n * SInt32Rules describes the rules applied to `sint32` values.\n *\n * @generated from message buf.validate.SInt32Rules\n */\nexport type SInt32Rules = Message<\"buf.validate.SInt32Rules\"> & {\n  /**\n   * `const` requires the field value to exactly match the specified value. If\n   * the field value doesn't match, an error message is generated.\n   *\n   * ```proto\n   * message MySInt32 {\n   *   // value must equal 42\n   *   sint32 value = 1 [(buf.validate.field).sint32.const = 42];\n   * }\n   * ```\n   *\n   * @generated from field: optional sint32 const = 1;\n   */\n  const: number;\n\n  /**\n   * @generated from oneof buf.validate.SInt32Rules.less_than\n   */\n  lessThan: {\n    /**\n     * `lt` requires the field value to be less than the specified value (field\n     * < value). If the field value is equal to or greater than the specified\n     * value, an error message is generated.\n     *\n     * ```proto\n     * message MySInt32 {\n     *   // must be less than 10\n     *   sint32 value = 1 [(buf.validate.field).sint32.lt = 10];\n     * }\n     * ```\n     *\n     * @generated from field: sint32 lt = 2;\n     */\n    value: number;\n    case: \"lt\";\n  } | {\n    /**\n     * `lte` requires the field value to be less than or equal to the specified\n     * value (field <= value). If the field value is greater than the specified\n     * value, an error message is generated.\n     *\n     * ```proto\n     * message MySInt32 {\n     *   // must be less than or equal to 10\n     *   sint32 value = 1 [(buf.validate.field).sint32.lte = 10];\n     * }\n     * ```\n     *\n     * @generated from field: sint32 lte = 3;\n     */\n    value: number;\n    case: \"lte\";\n  } | { case: undefined; value?: undefined };\n\n  /**\n   * @generated from oneof buf.validate.SInt32Rules.greater_than\n   */\n  greaterThan: {\n    /**\n     * `gt` requires the field value to be greater than the specified value\n     * (exclusive). If the value of `gt` is larger than a specified `lt` or\n     * `lte`, the range is reversed, and the field value must be outside the\n     * specified range. If the field value doesn't meet the required conditions,\n     * an error message is generated.\n     *\n     * ```proto\n     * message MySInt32 {\n     *   // must be greater than 5 [sint32.gt]\n     *   sint32 value = 1 [(buf.validate.field).sint32.gt = 5];\n     *\n     *   // must be greater than 5 and less than 10 [sint32.gt_lt]\n     *   sint32 other_value = 2 [(buf.validate.field).sint32 = { gt: 5, lt: 10 }];\n     *\n     *   // must be greater than 10 or less than 5 [sint32.gt_lt_exclusive]\n     *   sint32 another_value = 3 [(buf.validate.field).sint32 = { gt: 10, lt: 5 }];\n     * }\n     * ```\n     *\n     * @generated from field: sint32 gt = 4;\n     */\n    value: number;\n    case: \"gt\";\n  } | {\n    /**\n     * `gte` requires the field value to be greater than or equal to the specified\n     * value (exclusive). If the value of `gte` is larger than a specified `lt`\n     * or `lte`, the range is reversed, and the field value must be outside the\n     * specified range. If the field value doesn't meet the required conditions,\n     * an error message is generated.\n     *\n     * ```proto\n     * message MySInt32 {\n     *  // must be greater than or equal to 5 [sint32.gte]\n     *  sint32 value = 1 [(buf.validate.field).sint32.gte = 5];\n     *\n     *  // must be greater than or equal to 5 and less than 10 [sint32.gte_lt]\n     *  sint32 other_value = 2 [(buf.validate.field).sint32 = { gte: 5, lt: 10 }];\n     *\n     *  // must be greater than or equal to 10 or less than 5 [sint32.gte_lt_exclusive]\n     *  sint32 another_value = 3 [(buf.validate.field).sint32 = { gte: 10, lt: 5 }];\n     * }\n     * ```\n     *\n     * @generated from field: sint32 gte = 5;\n     */\n    value: number;\n    case: \"gte\";\n  } | { case: undefined; value?: undefined };\n\n  /**\n   * `in` requires the field value to be equal to one of the specified values.\n   * If the field value isn't one of the specified values, an error message is\n   * generated.\n   *\n   * ```proto\n   * message MySInt32 {\n   *   // must be in list [1, 2, 3]\n   *   sint32 value = 1 [(buf.validate.field).sint32 = { in: [1, 2, 3] }];\n   * }\n   * ```\n   *\n   * @generated from field: repeated sint32 in = 6;\n   */\n  in: number[];\n\n  /**\n   * `not_in` requires the field value to not be equal to any of the specified\n   * values. If the field value is one of the specified values, an error\n   * message is generated.\n   *\n   * ```proto\n   * message MySInt32 {\n   *   // value must not be in list [1, 2, 3]\n   *   sint32 value = 1 [(buf.validate.field).sint32 = { not_in: [1, 2, 3] }];\n   * }\n   * ```\n   *\n   * @generated from field: repeated sint32 not_in = 7;\n   */\n  notIn: number[];\n\n  /**\n   * `example` specifies values that the field may have. These values SHOULD\n   * conform to other rules. `example` values will not impact validation\n   * but may be used as helpful guidance on how to populate the given field.\n   *\n   * ```proto\n   * message MySInt32 {\n   *   sint32 value = 1 [\n   *     (buf.validate.field).sint32.example = 1,\n   *     (buf.validate.field).sint32.example = -10\n   *   ];\n   * }\n   * ```\n   *\n   * @generated from field: repeated sint32 example = 8;\n   */\n  example: number[];\n};\n\n/**\n * Describes the message buf.validate.SInt32Rules.\n * Use `create(SInt32RulesSchema)` to create a new message.\n */\nexport const SInt32RulesSchema: GenMessage<SInt32Rules> = /*@__PURE__*/\n  messageDesc(file_buf_validate_validate, 12);\n\n/**\n * SInt64Rules describes the rules applied to `sint64` values.\n *\n * @generated from message buf.validate.SInt64Rules\n */\nexport type SInt64Rules = Message<\"buf.validate.SInt64Rules\"> & {\n  /**\n   * `const` requires the field value to exactly match the specified value. If\n   * the field value doesn't match, an error message is generated.\n   *\n   * ```proto\n   * message MySInt64 {\n   *   // value must equal 42\n   *   sint64 value = 1 [(buf.validate.field).sint64.const = 42];\n   * }\n   * ```\n   *\n   * @generated from field: optional sint64 const = 1;\n   */\n  const: bigint;\n\n  /**\n   * @generated from oneof buf.validate.SInt64Rules.less_than\n   */\n  lessThan: {\n    /**\n     * `lt` requires the field value to be less than the specified value (field\n     * < value). If the field value is equal to or greater than the specified\n     * value, an error message is generated.\n     *\n     * ```proto\n     * message MySInt64 {\n     *   // must be less than 10\n     *   sint64 value = 1 [(buf.validate.field).sint64.lt = 10];\n     * }\n     * ```\n     *\n     * @generated from field: sint64 lt = 2;\n     */\n    value: bigint;\n    case: \"lt\";\n  } | {\n    /**\n     * `lte` requires the field value to be less than or equal to the specified\n     * value (field <= value). If the field value is greater than the specified\n     * value, an error message is generated.\n     *\n     * ```proto\n     * message MySInt64 {\n     *   // must be less than or equal to 10\n     *   sint64 value = 1 [(buf.validate.field).sint64.lte = 10];\n     * }\n     * ```\n     *\n     * @generated from field: sint64 lte = 3;\n     */\n    value: bigint;\n    case: \"lte\";\n  } | { case: undefined; value?: undefined };\n\n  /**\n   * @generated from oneof buf.validate.SInt64Rules.greater_than\n   */\n  greaterThan: {\n    /**\n     * `gt` requires the field value to be greater than the specified value\n     * (exclusive). If the value of `gt` is larger than a specified `lt` or\n     * `lte`, the range is reversed, and the field value must be outside the\n     * specified range. If the field value doesn't meet the required conditions,\n     * an error message is generated.\n     *\n     * ```proto\n     * message MySInt64 {\n     *   // must be greater than 5 [sint64.gt]\n     *   sint64 value = 1 [(buf.validate.field).sint64.gt = 5];\n     *\n     *   // must be greater than 5 and less than 10 [sint64.gt_lt]\n     *   sint64 other_value = 2 [(buf.validate.field).sint64 = { gt: 5, lt: 10 }];\n     *\n     *   // must be greater than 10 or less than 5 [sint64.gt_lt_exclusive]\n     *   sint64 another_value = 3 [(buf.validate.field).sint64 = { gt: 10, lt: 5 }];\n     * }\n     * ```\n     *\n     * @generated from field: sint64 gt = 4;\n     */\n    value: bigint;\n    case: \"gt\";\n  } | {\n    /**\n     * `gte` requires the field value to be greater than or equal to the specified\n     * value (exclusive). If the value of `gte` is larger than a specified `lt`\n     * or `lte`, the range is reversed, and the field value must be outside the\n     * specified range. If the field value doesn't meet the required conditions,\n     * an error message is generated.\n     *\n     * ```proto\n     * message MySInt64 {\n     *   // must be greater than or equal to 5 [sint64.gte]\n     *   sint64 value = 1 [(buf.validate.field).sint64.gte = 5];\n     *\n     *   // must be greater than or equal to 5 and less than 10 [sint64.gte_lt]\n     *   sint64 other_value = 2 [(buf.validate.field).sint64 = { gte: 5, lt: 10 }];\n     *\n     *   // must be greater than or equal to 10 or less than 5 [sint64.gte_lt_exclusive]\n     *   sint64 another_value = 3 [(buf.validate.field).sint64 = { gte: 10, lt: 5 }];\n     * }\n     * ```\n     *\n     * @generated from field: sint64 gte = 5;\n     */\n    value: bigint;\n    case: \"gte\";\n  } | { case: undefined; value?: undefined };\n\n  /**\n   * `in` requires the field value to be equal to one of the specified values.\n   * If the field value isn't one of the specified values, an error message\n   * is generated.\n   *\n   * ```proto\n   * message MySInt64 {\n   *   // must be in list [1, 2, 3]\n   *   sint64 value = 1 [(buf.validate.field).sint64 = { in: [1, 2, 3] }];\n   * }\n   * ```\n   *\n   * @generated from field: repeated sint64 in = 6;\n   */\n  in: bigint[];\n\n  /**\n   * `not_in` requires the field value to not be equal to any of the specified\n   * values. If the field value is one of the specified values, an error\n   * message is generated.\n   *\n   * ```proto\n   * message MySInt64 {\n   *   // value must not be in list [1, 2, 3]\n   *   sint64 value = 1 [(buf.validate.field).sint64 = { not_in: [1, 2, 3] }];\n   * }\n   * ```\n   *\n   * @generated from field: repeated sint64 not_in = 7;\n   */\n  notIn: bigint[];\n\n  /**\n   * `example` specifies values that the field may have. These values SHOULD\n   * conform to other rules. `example` values will not impact validation\n   * but may be used as helpful guidance on how to populate the given field.\n   *\n   * ```proto\n   * message MySInt64 {\n   *   sint64 value = 1 [\n   *     (buf.validate.field).sint64.example = 1,\n   *     (buf.validate.field).sint64.example = -10\n   *   ];\n   * }\n   * ```\n   *\n   * @generated from field: repeated sint64 example = 8;\n   */\n  example: bigint[];\n};\n\n/**\n * Describes the message buf.validate.SInt64Rules.\n * Use `create(SInt64RulesSchema)` to create a new message.\n */\nexport const SInt64RulesSchema: GenMessage<SInt64Rules> = /*@__PURE__*/\n  messageDesc(file_buf_validate_validate, 13);\n\n/**\n * Fixed32Rules describes the rules applied to `fixed32` values.\n *\n * @generated from message buf.validate.Fixed32Rules\n */\nexport type Fixed32Rules = Message<\"buf.validate.Fixed32Rules\"> & {\n  /**\n   * `const` requires the field value to exactly match the specified value.\n   * If the field value doesn't match, an error message is generated.\n   *\n   * ```proto\n   * message MyFixed32 {\n   *   // value must equal 42\n   *   fixed32 value = 1 [(buf.validate.field).fixed32.const = 42];\n   * }\n   * ```\n   *\n   * @generated from field: optional fixed32 const = 1;\n   */\n  const: number;\n\n  /**\n   * @generated from oneof buf.validate.Fixed32Rules.less_than\n   */\n  lessThan: {\n    /**\n     * `lt` requires the field value to be less than the specified value (field <\n     * value). If the field value is equal to or greater than the specified value,\n     * an error message is generated.\n     *\n     * ```proto\n     * message MyFixed32 {\n     *   // must be less than 10\n     *   fixed32 value = 1 [(buf.validate.field).fixed32.lt = 10];\n     * }\n     * ```\n     *\n     * @generated from field: fixed32 lt = 2;\n     */\n    value: number;\n    case: \"lt\";\n  } | {\n    /**\n     * `lte` requires the field value to be less than or equal to the specified\n     * value (field <= value). If the field value is greater than the specified\n     * value, an error message is generated.\n     *\n     * ```proto\n     * message MyFixed32 {\n     *   // must be less than or equal to 10\n     *   fixed32 value = 1 [(buf.validate.field).fixed32.lte = 10];\n     * }\n     * ```\n     *\n     * @generated from field: fixed32 lte = 3;\n     */\n    value: number;\n    case: \"lte\";\n  } | { case: undefined; value?: undefined };\n\n  /**\n   * @generated from oneof buf.validate.Fixed32Rules.greater_than\n   */\n  greaterThan: {\n    /**\n     * `gt` requires the field value to be greater than the specified value\n     * (exclusive). If the value of `gt` is larger than a specified `lt` or\n     * `lte`, the range is reversed, and the field value must be outside the\n     * specified range. If the field value doesn't meet the required conditions,\n     * an error message is generated.\n     *\n     * ```proto\n     * message MyFixed32 {\n     *   // must be greater than 5 [fixed32.gt]\n     *   fixed32 value = 1 [(buf.validate.field).fixed32.gt = 5];\n     *\n     *   // must be greater than 5 and less than 10 [fixed32.gt_lt]\n     *   fixed32 other_value = 2 [(buf.validate.field).fixed32 = { gt: 5, lt: 10 }];\n     *\n     *   // must be greater than 10 or less than 5 [fixed32.gt_lt_exclusive]\n     *   fixed32 another_value = 3 [(buf.validate.field).fixed32 = { gt: 10, lt: 5 }];\n     * }\n     * ```\n     *\n     * @generated from field: fixed32 gt = 4;\n     */\n    value: number;\n    case: \"gt\";\n  } | {\n    /**\n     * `gte` requires the field value to be greater than or equal to the specified\n     * value (exclusive). If the value of `gte` is larger than a specified `lt`\n     * or `lte`, the range is reversed, and the field value must be outside the\n     * specified range. If the field value doesn't meet the required conditions,\n     * an error message is generated.\n     *\n     * ```proto\n     * message MyFixed32 {\n     *   // must be greater than or equal to 5 [fixed32.gte]\n     *   fixed32 value = 1 [(buf.validate.field).fixed32.gte = 5];\n     *\n     *   // must be greater than or equal to 5 and less than 10 [fixed32.gte_lt]\n     *   fixed32 other_value = 2 [(buf.validate.field).fixed32 = { gte: 5, lt: 10 }];\n     *\n     *   // must be greater than or equal to 10 or less than 5 [fixed32.gte_lt_exclusive]\n     *   fixed32 another_value = 3 [(buf.validate.field).fixed32 = { gte: 10, lt: 5 }];\n     * }\n     * ```\n     *\n     * @generated from field: fixed32 gte = 5;\n     */\n    value: number;\n    case: \"gte\";\n  } | { case: undefined; value?: undefined };\n\n  /**\n   * `in` requires the field value to be equal to one of the specified values.\n   * If the field value isn't one of the specified values, an error message\n   * is generated.\n   *\n   * ```proto\n   * message MyFixed32 {\n   *   // must be in list [1, 2, 3]\n   *   fixed32 value = 1 [(buf.validate.field).fixed32 = { in: [1, 2, 3] }];\n   * }\n   * ```\n   *\n   * @generated from field: repeated fixed32 in = 6;\n   */\n  in: number[];\n\n  /**\n   * `not_in` requires the field value to not be equal to any of the specified\n   * values. If the field value is one of the specified values, an error\n   * message is generated.\n   *\n   * ```proto\n   * message MyFixed32 {\n   *   // value must not be in list [1, 2, 3]\n   *   fixed32 value = 1 [(buf.validate.field).fixed32 = { not_in: [1, 2, 3] }];\n   * }\n   * ```\n   *\n   * @generated from field: repeated fixed32 not_in = 7;\n   */\n  notIn: number[];\n\n  /**\n   * `example` specifies values that the field may have. These values SHOULD\n   * conform to other rules. `example` values will not impact validation\n   * but may be used as helpful guidance on how to populate the given field.\n   *\n   * ```proto\n   * message MyFixed32 {\n   *   fixed32 value = 1 [\n   *     (buf.validate.field).fixed32.example = 1,\n   *     (buf.validate.field).fixed32.example = 2\n   *   ];\n   * }\n   * ```\n   *\n   * @generated from field: repeated fixed32 example = 8;\n   */\n  example: number[];\n};\n\n/**\n * Describes the message buf.validate.Fixed32Rules.\n * Use `create(Fixed32RulesSchema)` to create a new message.\n */\nexport const Fixed32RulesSchema: GenMessage<Fixed32Rules> = /*@__PURE__*/\n  messageDesc(file_buf_validate_validate, 14);\n\n/**\n * Fixed64Rules describes the rules applied to `fixed64` values.\n *\n * @generated from message buf.validate.Fixed64Rules\n */\nexport type Fixed64Rules = Message<\"buf.validate.Fixed64Rules\"> & {\n  /**\n   * `const` requires the field value to exactly match the specified value. If\n   * the field value doesn't match, an error message is generated.\n   *\n   * ```proto\n   * message MyFixed64 {\n   *   // value must equal 42\n   *   fixed64 value = 1 [(buf.validate.field).fixed64.const = 42];\n   * }\n   * ```\n   *\n   * @generated from field: optional fixed64 const = 1;\n   */\n  const: bigint;\n\n  /**\n   * @generated from oneof buf.validate.Fixed64Rules.less_than\n   */\n  lessThan: {\n    /**\n     * `lt` requires the field value to be less than the specified value (field <\n     * value). If the field value is equal to or greater than the specified value,\n     * an error message is generated.\n     *\n     * ```proto\n     * message MyFixed64 {\n     *   // must be less than 10\n     *   fixed64 value = 1 [(buf.validate.field).fixed64.lt = 10];\n     * }\n     * ```\n     *\n     * @generated from field: fixed64 lt = 2;\n     */\n    value: bigint;\n    case: \"lt\";\n  } | {\n    /**\n     * `lte` requires the field value to be less than or equal to the specified\n     * value (field <= value). If the field value is greater than the specified\n     * value, an error message is generated.\n     *\n     * ```proto\n     * message MyFixed64 {\n     *   // must be less than or equal to 10\n     *   fixed64 value = 1 [(buf.validate.field).fixed64.lte = 10];\n     * }\n     * ```\n     *\n     * @generated from field: fixed64 lte = 3;\n     */\n    value: bigint;\n    case: \"lte\";\n  } | { case: undefined; value?: undefined };\n\n  /**\n   * @generated from oneof buf.validate.Fixed64Rules.greater_than\n   */\n  greaterThan: {\n    /**\n     * `gt` requires the field value to be greater than the specified value\n     * (exclusive). If the value of `gt` is larger than a specified `lt` or\n     * `lte`, the range is reversed, and the field value must be outside the\n     * specified range. If the field value doesn't meet the required conditions,\n     * an error message is generated.\n     *\n     * ```proto\n     * message MyFixed64 {\n     *   // must be greater than 5 [fixed64.gt]\n     *   fixed64 value = 1 [(buf.validate.field).fixed64.gt = 5];\n     *\n     *   // must be greater than 5 and less than 10 [fixed64.gt_lt]\n     *   fixed64 other_value = 2 [(buf.validate.field).fixed64 = { gt: 5, lt: 10 }];\n     *\n     *   // must be greater than 10 or less than 5 [fixed64.gt_lt_exclusive]\n     *   fixed64 another_value = 3 [(buf.validate.field).fixed64 = { gt: 10, lt: 5 }];\n     * }\n     * ```\n     *\n     * @generated from field: fixed64 gt = 4;\n     */\n    value: bigint;\n    case: \"gt\";\n  } | {\n    /**\n     * `gte` requires the field value to be greater than or equal to the specified\n     * value (exclusive). If the value of `gte` is larger than a specified `lt`\n     * or `lte`, the range is reversed, and the field value must be outside the\n     * specified range. If the field value doesn't meet the required conditions,\n     * an error message is generated.\n     *\n     * ```proto\n     * message MyFixed64 {\n     *   // must be greater than or equal to 5 [fixed64.gte]\n     *   fixed64 value = 1 [(buf.validate.field).fixed64.gte = 5];\n     *\n     *   // must be greater than or equal to 5 and less than 10 [fixed64.gte_lt]\n     *   fixed64 other_value = 2 [(buf.validate.field).fixed64 = { gte: 5, lt: 10 }];\n     *\n     *   // must be greater than or equal to 10 or less than 5 [fixed64.gte_lt_exclusive]\n     *   fixed64 another_value = 3 [(buf.validate.field).fixed64 = { gte: 10, lt: 5 }];\n     * }\n     * ```\n     *\n     * @generated from field: fixed64 gte = 5;\n     */\n    value: bigint;\n    case: \"gte\";\n  } | { case: undefined; value?: undefined };\n\n  /**\n   * `in` requires the field value to be equal to one of the specified values.\n   * If the field value isn't one of the specified values, an error message is\n   * generated.\n   *\n   * ```proto\n   * message MyFixed64 {\n   *   // must be in list [1, 2, 3]\n   *   fixed64 value = 1 [(buf.validate.field).fixed64 = { in: [1, 2, 3] }];\n   * }\n   * ```\n   *\n   * @generated from field: repeated fixed64 in = 6;\n   */\n  in: bigint[];\n\n  /**\n   * `not_in` requires the field value to not be equal to any of the specified\n   * values. If the field value is one of the specified values, an error\n   * message is generated.\n   *\n   * ```proto\n   * message MyFixed64 {\n   *   // value must not be in list [1, 2, 3]\n   *   fixed64 value = 1 [(buf.validate.field).fixed64 = { not_in: [1, 2, 3] }];\n   * }\n   * ```\n   *\n   * @generated from field: repeated fixed64 not_in = 7;\n   */\n  notIn: bigint[];\n\n  /**\n   * `example` specifies values that the field may have. These values SHOULD\n   * conform to other rules. `example` values will not impact validation\n   * but may be used as helpful guidance on how to populate the given field.\n   *\n   * ```proto\n   * message MyFixed64 {\n   *   fixed64 value = 1 [\n   *     (buf.validate.field).fixed64.example = 1,\n   *     (buf.validate.field).fixed64.example = 2\n   *   ];\n   * }\n   * ```\n   *\n   * @generated from field: repeated fixed64 example = 8;\n   */\n  example: bigint[];\n};\n\n/**\n * Describes the message buf.validate.Fixed64Rules.\n * Use `create(Fixed64RulesSchema)` to create a new message.\n */\nexport const Fixed64RulesSchema: GenMessage<Fixed64Rules> = /*@__PURE__*/\n  messageDesc(file_buf_validate_validate, 15);\n\n/**\n * SFixed32Rules describes the rules applied to `fixed32` values.\n *\n * @generated from message buf.validate.SFixed32Rules\n */\nexport type SFixed32Rules = Message<\"buf.validate.SFixed32Rules\"> & {\n  /**\n   * `const` requires the field value to exactly match the specified value. If\n   * the field value doesn't match, an error message is generated.\n   *\n   * ```proto\n   * message MySFixed32 {\n   *   // value must equal 42\n   *   sfixed32 value = 1 [(buf.validate.field).sfixed32.const = 42];\n   * }\n   * ```\n   *\n   * @generated from field: optional sfixed32 const = 1;\n   */\n  const: number;\n\n  /**\n   * @generated from oneof buf.validate.SFixed32Rules.less_than\n   */\n  lessThan: {\n    /**\n     * `lt` requires the field value to be less than the specified value (field <\n     * value). If the field value is equal to or greater than the specified value,\n     * an error message is generated.\n     *\n     * ```proto\n     * message MySFixed32 {\n     *   // must be less than 10\n     *   sfixed32 value = 1 [(buf.validate.field).sfixed32.lt = 10];\n     * }\n     * ```\n     *\n     * @generated from field: sfixed32 lt = 2;\n     */\n    value: number;\n    case: \"lt\";\n  } | {\n    /**\n     * `lte` requires the field value to be less than or equal to the specified\n     * value (field <= value). If the field value is greater than the specified\n     * value, an error message is generated.\n     *\n     * ```proto\n     * message MySFixed32 {\n     *   // must be less than or equal to 10\n     *   sfixed32 value = 1 [(buf.validate.field).sfixed32.lte = 10];\n     * }\n     * ```\n     *\n     * @generated from field: sfixed32 lte = 3;\n     */\n    value: number;\n    case: \"lte\";\n  } | { case: undefined; value?: undefined };\n\n  /**\n   * @generated from oneof buf.validate.SFixed32Rules.greater_than\n   */\n  greaterThan: {\n    /**\n     * `gt` requires the field value to be greater than the specified value\n     * (exclusive). If the value of `gt` is larger than a specified `lt` or\n     * `lte`, the range is reversed, and the field value must be outside the\n     * specified range. If the field value doesn't meet the required conditions,\n     * an error message is generated.\n     *\n     * ```proto\n     * message MySFixed32 {\n     *   // must be greater than 5 [sfixed32.gt]\n     *   sfixed32 value = 1 [(buf.validate.field).sfixed32.gt = 5];\n     *\n     *   // must be greater than 5 and less than 10 [sfixed32.gt_lt]\n     *   sfixed32 other_value = 2 [(buf.validate.field).sfixed32 = { gt: 5, lt: 10 }];\n     *\n     *   // must be greater than 10 or less than 5 [sfixed32.gt_lt_exclusive]\n     *   sfixed32 another_value = 3 [(buf.validate.field).sfixed32 = { gt: 10, lt: 5 }];\n     * }\n     * ```\n     *\n     * @generated from field: sfixed32 gt = 4;\n     */\n    value: number;\n    case: \"gt\";\n  } | {\n    /**\n     * `gte` requires the field value to be greater than or equal to the specified\n     * value (exclusive). If the value of `gte` is larger than a specified `lt`\n     * or `lte`, the range is reversed, and the field value must be outside the\n     * specified range. If the field value doesn't meet the required conditions,\n     * an error message is generated.\n     *\n     * ```proto\n     * message MySFixed32 {\n     *   // must be greater than or equal to 5 [sfixed32.gte]\n     *   sfixed32 value = 1 [(buf.validate.field).sfixed32.gte = 5];\n     *\n     *   // must be greater than or equal to 5 and less than 10 [sfixed32.gte_lt]\n     *   sfixed32 other_value = 2 [(buf.validate.field).sfixed32 = { gte: 5, lt: 10 }];\n     *\n     *   // must be greater than or equal to 10 or less than 5 [sfixed32.gte_lt_exclusive]\n     *   sfixed32 another_value = 3 [(buf.validate.field).sfixed32 = { gte: 10, lt: 5 }];\n     * }\n     * ```\n     *\n     * @generated from field: sfixed32 gte = 5;\n     */\n    value: number;\n    case: \"gte\";\n  } | { case: undefined; value?: undefined };\n\n  /**\n   * `in` requires the field value to be equal to one of the specified values.\n   * If the field value isn't one of the specified values, an error message is\n   * generated.\n   *\n   * ```proto\n   * message MySFixed32 {\n   *   // must be in list [1, 2, 3]\n   *   sfixed32 value = 1 [(buf.validate.field).sfixed32 = { in: [1, 2, 3] }];\n   * }\n   * ```\n   *\n   * @generated from field: repeated sfixed32 in = 6;\n   */\n  in: number[];\n\n  /**\n   * `not_in` requires the field value to not be equal to any of the specified\n   * values. If the field value is one of the specified values, an error\n   * message is generated.\n   *\n   * ```proto\n   * message MySFixed32 {\n   *   // value must not be in list [1, 2, 3]\n   *   sfixed32 value = 1 [(buf.validate.field).sfixed32 = { not_in: [1, 2, 3] }];\n   * }\n   * ```\n   *\n   * @generated from field: repeated sfixed32 not_in = 7;\n   */\n  notIn: number[];\n\n  /**\n   * `example` specifies values that the field may have. These values SHOULD\n   * conform to other rules. `example` values will not impact validation\n   * but may be used as helpful guidance on how to populate the given field.\n   *\n   * ```proto\n   * message MySFixed32 {\n   *   sfixed32 value = 1 [\n   *     (buf.validate.field).sfixed32.example = 1,\n   *     (buf.validate.field).sfixed32.example = 2\n   *   ];\n   * }\n   * ```\n   *\n   * @generated from field: repeated sfixed32 example = 8;\n   */\n  example: number[];\n};\n\n/**\n * Describes the message buf.validate.SFixed32Rules.\n * Use `create(SFixed32RulesSchema)` to create a new message.\n */\nexport const SFixed32RulesSchema: GenMessage<SFixed32Rules> = /*@__PURE__*/\n  messageDesc(file_buf_validate_validate, 16);\n\n/**\n * SFixed64Rules describes the rules applied to `fixed64` values.\n *\n * @generated from message buf.validate.SFixed64Rules\n */\nexport type SFixed64Rules = Message<\"buf.validate.SFixed64Rules\"> & {\n  /**\n   * `const` requires the field value to exactly match the specified value. If\n   * the field value doesn't match, an error message is generated.\n   *\n   * ```proto\n   * message MySFixed64 {\n   *   // value must equal 42\n   *   sfixed64 value = 1 [(buf.validate.field).sfixed64.const = 42];\n   * }\n   * ```\n   *\n   * @generated from field: optional sfixed64 const = 1;\n   */\n  const: bigint;\n\n  /**\n   * @generated from oneof buf.validate.SFixed64Rules.less_than\n   */\n  lessThan: {\n    /**\n     * `lt` requires the field value to be less than the specified value (field <\n     * value). If the field value is equal to or greater than the specified value,\n     * an error message is generated.\n     *\n     * ```proto\n     * message MySFixed64 {\n     *   // must be less than 10\n     *   sfixed64 value = 1 [(buf.validate.field).sfixed64.lt = 10];\n     * }\n     * ```\n     *\n     * @generated from field: sfixed64 lt = 2;\n     */\n    value: bigint;\n    case: \"lt\";\n  } | {\n    /**\n     * `lte` requires the field value to be less than or equal to the specified\n     * value (field <= value). If the field value is greater than the specified\n     * value, an error message is generated.\n     *\n     * ```proto\n     * message MySFixed64 {\n     *   // must be less than or equal to 10\n     *   sfixed64 value = 1 [(buf.validate.field).sfixed64.lte = 10];\n     * }\n     * ```\n     *\n     * @generated from field: sfixed64 lte = 3;\n     */\n    value: bigint;\n    case: \"lte\";\n  } | { case: undefined; value?: undefined };\n\n  /**\n   * @generated from oneof buf.validate.SFixed64Rules.greater_than\n   */\n  greaterThan: {\n    /**\n     * `gt` requires the field value to be greater than the specified value\n     * (exclusive). If the value of `gt` is larger than a specified `lt` or\n     * `lte`, the range is reversed, and the field value must be outside the\n     * specified range. If the field value doesn't meet the required conditions,\n     * an error message is generated.\n     *\n     * ```proto\n     * message MySFixed64 {\n     *   // must be greater than 5 [sfixed64.gt]\n     *   sfixed64 value = 1 [(buf.validate.field).sfixed64.gt = 5];\n     *\n     *   // must be greater than 5 and less than 10 [sfixed64.gt_lt]\n     *   sfixed64 other_value = 2 [(buf.validate.field).sfixed64 = { gt: 5, lt: 10 }];\n     *\n     *   // must be greater than 10 or less than 5 [sfixed64.gt_lt_exclusive]\n     *   sfixed64 another_value = 3 [(buf.validate.field).sfixed64 = { gt: 10, lt: 5 }];\n     * }\n     * ```\n     *\n     * @generated from field: sfixed64 gt = 4;\n     */\n    value: bigint;\n    case: \"gt\";\n  } | {\n    /**\n     * `gte` requires the field value to be greater than or equal to the specified\n     * value (exclusive). If the value of `gte` is larger than a specified `lt`\n     * or `lte`, the range is reversed, and the field value must be outside the\n     * specified range. If the field value doesn't meet the required conditions,\n     * an error message is generated.\n     *\n     * ```proto\n     * message MySFixed64 {\n     *   // must be greater than or equal to 5 [sfixed64.gte]\n     *   sfixed64 value = 1 [(buf.validate.field).sfixed64.gte = 5];\n     *\n     *   // must be greater than or equal to 5 and less than 10 [sfixed64.gte_lt]\n     *   sfixed64 other_value = 2 [(buf.validate.field).sfixed64 = { gte: 5, lt: 10 }];\n     *\n     *   // must be greater than or equal to 10 or less than 5 [sfixed64.gte_lt_exclusive]\n     *   sfixed64 another_value = 3 [(buf.validate.field).sfixed64 = { gte: 10, lt: 5 }];\n     * }\n     * ```\n     *\n     * @generated from field: sfixed64 gte = 5;\n     */\n    value: bigint;\n    case: \"gte\";\n  } | { case: undefined; value?: undefined };\n\n  /**\n   * `in` requires the field value to be equal to one of the specified values.\n   * If the field value isn't one of the specified values, an error message is\n   * generated.\n   *\n   * ```proto\n   * message MySFixed64 {\n   *   // must be in list [1, 2, 3]\n   *   sfixed64 value = 1 [(buf.validate.field).sfixed64 = { in: [1, 2, 3] }];\n   * }\n   * ```\n   *\n   * @generated from field: repeated sfixed64 in = 6;\n   */\n  in: bigint[];\n\n  /**\n   * `not_in` requires the field value to not be equal to any of the specified\n   * values. If the field value is one of the specified values, an error\n   * message is generated.\n   *\n   * ```proto\n   * message MySFixed64 {\n   *   // value must not be in list [1, 2, 3]\n   *   sfixed64 value = 1 [(buf.validate.field).sfixed64 = { not_in: [1, 2, 3] }];\n   * }\n   * ```\n   *\n   * @generated from field: repeated sfixed64 not_in = 7;\n   */\n  notIn: bigint[];\n\n  /**\n   * `example` specifies values that the field may have. These values SHOULD\n   * conform to other rules. `example` values will not impact validation\n   * but may be used as helpful guidance on how to populate the given field.\n   *\n   * ```proto\n   * message MySFixed64 {\n   *   sfixed64 value = 1 [\n   *     (buf.validate.field).sfixed64.example = 1,\n   *     (buf.validate.field).sfixed64.example = 2\n   *   ];\n   * }\n   * ```\n   *\n   * @generated from field: repeated sfixed64 example = 8;\n   */\n  example: bigint[];\n};\n\n/**\n * Describes the message buf.validate.SFixed64Rules.\n * Use `create(SFixed64RulesSchema)` to create a new message.\n */\nexport const SFixed64RulesSchema: GenMessage<SFixed64Rules> = /*@__PURE__*/\n  messageDesc(file_buf_validate_validate, 17);\n\n/**\n * BoolRules describes the rules applied to `bool` values. These rules\n * may also be applied to the `google.protobuf.BoolValue` Well-Known-Type.\n *\n * @generated from message buf.validate.BoolRules\n */\nexport type BoolRules = Message<\"buf.validate.BoolRules\"> & {\n  /**\n   * `const` requires the field value to exactly match the specified boolean value.\n   * If the field value doesn't match, an error message is generated.\n   *\n   * ```proto\n   * message MyBool {\n   *   // value must equal true\n   *   bool value = 1 [(buf.validate.field).bool.const = true];\n   * }\n   * ```\n   *\n   * @generated from field: optional bool const = 1;\n   */\n  const: boolean;\n\n  /**\n   * `example` specifies values that the field may have. These values SHOULD\n   * conform to other rules. `example` values will not impact validation\n   * but may be used as helpful guidance on how to populate the given field.\n   *\n   * ```proto\n   * message MyBool {\n   *   bool value = 1 [\n   *     (buf.validate.field).bool.example = true,\n   *     (buf.validate.field).bool.example = false\n   *   ];\n   * }\n   * ```\n   *\n   * @generated from field: repeated bool example = 2;\n   */\n  example: boolean[];\n};\n\n/**\n * Describes the message buf.validate.BoolRules.\n * Use `create(BoolRulesSchema)` to create a new message.\n */\nexport const BoolRulesSchema: GenMessage<BoolRules> = /*@__PURE__*/\n  messageDesc(file_buf_validate_validate, 18);\n\n/**\n * StringRules describes the rules applied to `string` values These\n * rules may also be applied to the `google.protobuf.StringValue` Well-Known-Type.\n *\n * @generated from message buf.validate.StringRules\n */\nexport type StringRules = Message<\"buf.validate.StringRules\"> & {\n  /**\n   * `const` requires the field value to exactly match the specified value. If\n   * the field value doesn't match, an error message is generated.\n   *\n   * ```proto\n   * message MyString {\n   *   // value must equal `hello`\n   *   string value = 1 [(buf.validate.field).string.const = \"hello\"];\n   * }\n   * ```\n   *\n   * @generated from field: optional string const = 1;\n   */\n  const: string;\n\n  /**\n   * `len` dictates that the field value must have the specified\n   * number of characters (Unicode code points), which may differ from the number\n   * of bytes in the string. If the field value does not meet the specified\n   * length, an error message will be generated.\n   *\n   * ```proto\n   * message MyString {\n   *   // value length must be 5 characters\n   *   string value = 1 [(buf.validate.field).string.len = 5];\n   * }\n   * ```\n   *\n   * @generated from field: optional uint64 len = 19;\n   */\n  len: bigint;\n\n  /**\n   * `min_len` specifies that the field value must have at least the specified\n   * number of characters (Unicode code points), which may differ from the number\n   * of bytes in the string. If the field value contains fewer characters, an error\n   * message will be generated.\n   *\n   * ```proto\n   * message MyString {\n   *   // value length must be at least 3 characters\n   *   string value = 1 [(buf.validate.field).string.min_len = 3];\n   * }\n   * ```\n   *\n   * @generated from field: optional uint64 min_len = 2;\n   */\n  minLen: bigint;\n\n  /**\n   * `max_len` specifies that the field value must have no more than the specified\n   * number of characters (Unicode code points), which may differ from the\n   * number of bytes in the string. If the field value contains more characters,\n   * an error message will be generated.\n   *\n   * ```proto\n   * message MyString {\n   *   // value length must be at most 10 characters\n   *   string value = 1 [(buf.validate.field).string.max_len = 10];\n   * }\n   * ```\n   *\n   * @generated from field: optional uint64 max_len = 3;\n   */\n  maxLen: bigint;\n\n  /**\n   * `len_bytes` dictates that the field value must have the specified number of\n   * bytes. If the field value does not match the specified length in bytes,\n   * an error message will be generated.\n   *\n   * ```proto\n   * message MyString {\n   *   // value length must be 6 bytes\n   *   string value = 1 [(buf.validate.field).string.len_bytes = 6];\n   * }\n   * ```\n   *\n   * @generated from field: optional uint64 len_bytes = 20;\n   */\n  lenBytes: bigint;\n\n  /**\n   * `min_bytes` specifies that the field value must have at least the specified\n   * number of bytes. If the field value contains fewer bytes, an error message\n   * will be generated.\n   *\n   * ```proto\n   * message MyString {\n   *   // value length must be at least 4 bytes\n   *   string value = 1 [(buf.validate.field).string.min_bytes = 4];\n   * }\n   *\n   * ```\n   *\n   * @generated from field: optional uint64 min_bytes = 4;\n   */\n  minBytes: bigint;\n\n  /**\n   * `max_bytes` specifies that the field value must have no more than the\n   * specified number of bytes. If the field value contains more bytes, an\n   * error message will be generated.\n   *\n   * ```proto\n   * message MyString {\n   *   // value length must be at most 8 bytes\n   *   string value = 1 [(buf.validate.field).string.max_bytes = 8];\n   * }\n   * ```\n   *\n   * @generated from field: optional uint64 max_bytes = 5;\n   */\n  maxBytes: bigint;\n\n  /**\n   * `pattern` specifies that the field value must match the specified\n   * regular expression (RE2 syntax), with the expression provided without any\n   * delimiters. If the field value doesn't match the regular expression, an\n   * error message will be generated.\n   *\n   * ```proto\n   * message MyString {\n   *   // value does not match regex pattern `^[a-zA-Z]//$`\n   *   string value = 1 [(buf.validate.field).string.pattern = \"^[a-zA-Z]//$\"];\n   * }\n   * ```\n   *\n   * @generated from field: optional string pattern = 6;\n   */\n  pattern: string;\n\n  /**\n   * `prefix` specifies that the field value must have the\n   * specified substring at the beginning of the string. If the field value\n   * doesn't start with the specified prefix, an error message will be\n   * generated.\n   *\n   * ```proto\n   * message MyString {\n   *   // value does not have prefix `pre`\n   *   string value = 1 [(buf.validate.field).string.prefix = \"pre\"];\n   * }\n   * ```\n   *\n   * @generated from field: optional string prefix = 7;\n   */\n  prefix: string;\n\n  /**\n   * `suffix` specifies that the field value must have the\n   * specified substring at the end of the string. If the field value doesn't\n   * end with the specified suffix, an error message will be generated.\n   *\n   * ```proto\n   * message MyString {\n   *   // value does not have suffix `post`\n   *   string value = 1 [(buf.validate.field).string.suffix = \"post\"];\n   * }\n   * ```\n   *\n   * @generated from field: optional string suffix = 8;\n   */\n  suffix: string;\n\n  /**\n   * `contains` specifies that the field value must have the\n   * specified substring anywhere in the string. If the field value doesn't\n   * contain the specified substring, an error message will be generated.\n   *\n   * ```proto\n   * message MyString {\n   *   // value does not contain substring `inside`.\n   *   string value = 1 [(buf.validate.field).string.contains = \"inside\"];\n   * }\n   * ```\n   *\n   * @generated from field: optional string contains = 9;\n   */\n  contains: string;\n\n  /**\n   * `not_contains` specifies that the field value must not have the\n   * specified substring anywhere in the string. If the field value contains\n   * the specified substring, an error message will be generated.\n   *\n   * ```proto\n   * message MyString {\n   *   // value contains substring `inside`.\n   *   string value = 1 [(buf.validate.field).string.not_contains = \"inside\"];\n   * }\n   * ```\n   *\n   * @generated from field: optional string not_contains = 23;\n   */\n  notContains: string;\n\n  /**\n   * `in` specifies that the field value must be equal to one of the specified\n   * values. If the field value isn't one of the specified values, an error\n   * message will be generated.\n   *\n   * ```proto\n   * message MyString {\n   *   // must be in list [\"apple\", \"banana\"]\n   *   string value = 1 [(buf.validate.field).string = { in: [\"apple\", \"banana\"] }];\n   * }\n   * ```\n   *\n   * @generated from field: repeated string in = 10;\n   */\n  in: string[];\n\n  /**\n   * `not_in` specifies that the field value cannot be equal to any\n   * of the specified values. If the field value is one of the specified values,\n   * an error message will be generated.\n   * ```proto\n   * message MyString {\n   *   // value must not be in list [\"orange\", \"grape\"]\n   *   string value = 1 [(buf.validate.field).string = { not_in: [\"orange\", \"grape\"] }];\n   * }\n   * ```\n   *\n   * @generated from field: repeated string not_in = 11;\n   */\n  notIn: string[];\n\n  /**\n   * `WellKnown` rules provide advanced rules against common string\n   * patterns.\n   *\n   * @generated from oneof buf.validate.StringRules.well_known\n   */\n  wellKnown: {\n    /**\n     * `email` specifies that the field value must be a valid email address, for\n     * example \"foo@example.com\".\n     *\n     * Conforms to the definition for a valid email address from the [HTML standard](https://html.spec.whatwg.org/multipage/input.html#valid-e-mail-address).\n     * Note that this standard willfully deviates from [RFC 5322](https://datatracker.ietf.org/doc/html/rfc5322),\n     * which allows many unexpected forms of email addresses and will easily match\n     * a typographical error.\n     *\n     * If the field value isn't a valid email address, an error message will be generated.\n     *\n     * ```proto\n     * message MyString {\n     *   // must be a valid email address\n     *   string value = 1 [(buf.validate.field).string.email = true];\n     * }\n     * ```\n     *\n     * @generated from field: bool email = 12;\n     */\n    value: boolean;\n    case: \"email\";\n  } | {\n    /**\n     * `hostname` specifies that the field value must be a valid hostname, for\n     * example \"foo.example.com\".\n     *\n     * A valid hostname follows the rules below:\n     * - The name consists of one or more labels, separated by a dot (\".\").\n     * - Each label can be 1 to 63 alphanumeric characters.\n     * - A label can contain hyphens (\"-\"), but must not start or end with a hyphen.\n     * - The right-most label must not be digits only.\n     * - The name can have a trailing dot—for example, \"foo.example.com.\".\n     * - The name can be 253 characters at most, excluding the optional trailing dot.\n     *\n     * If the field value isn't a valid hostname, an error message will be generated.\n     *\n     * ```proto\n     * message MyString {\n     *   // must be a valid hostname\n     *   string value = 1 [(buf.validate.field).string.hostname = true];\n     * }\n     * ```\n     *\n     * @generated from field: bool hostname = 13;\n     */\n    value: boolean;\n    case: \"hostname\";\n  } | {\n    /**\n     * `ip` specifies that the field value must be a valid IP (v4 or v6) address.\n     *\n     * IPv4 addresses are expected in the dotted decimal format—for example, \"192.168.5.21\".\n     * IPv6 addresses are expected in their text representation—for example, \"::1\",\n     * or \"2001:0DB8:ABCD:0012::0\".\n     *\n     * Both formats are well-defined in the internet standard [RFC 3986](https://datatracker.ietf.org/doc/html/rfc3986).\n     * Zone identifiers for IPv6 addresses (for example, \"fe80::a%en1\") are supported.\n     *\n     * If the field value isn't a valid IP address, an error message will be\n     * generated.\n     *\n     * ```proto\n     * message MyString {\n     *   // must be a valid IP address\n     *   string value = 1 [(buf.validate.field).string.ip = true];\n     * }\n     * ```\n     *\n     * @generated from field: bool ip = 14;\n     */\n    value: boolean;\n    case: \"ip\";\n  } | {\n    /**\n     * `ipv4` specifies that the field value must be a valid IPv4 address—for\n     * example \"192.168.5.21\". If the field value isn't a valid IPv4 address, an\n     * error message will be generated.\n     *\n     * ```proto\n     * message MyString {\n     *   // must be a valid IPv4 address\n     *   string value = 1 [(buf.validate.field).string.ipv4 = true];\n     * }\n     * ```\n     *\n     * @generated from field: bool ipv4 = 15;\n     */\n    value: boolean;\n    case: \"ipv4\";\n  } | {\n    /**\n     * `ipv6` specifies that the field value must be a valid IPv6 address—for\n     * example \"::1\", or \"d7a:115c:a1e0:ab12:4843:cd96:626b:430b\". If the field\n     * value is not a valid IPv6 address, an error message will be generated.\n     *\n     * ```proto\n     * message MyString {\n     *   // must be a valid IPv6 address\n     *   string value = 1 [(buf.validate.field).string.ipv6 = true];\n     * }\n     * ```\n     *\n     * @generated from field: bool ipv6 = 16;\n     */\n    value: boolean;\n    case: \"ipv6\";\n  } | {\n    /**\n     * `uri` specifies that the field value must be a valid URI, for example\n     * \"https://example.com/foo/bar?baz=quux#frag\".\n     *\n     * URI is defined in the internet standard [RFC 3986](https://datatracker.ietf.org/doc/html/rfc3986).\n     * Zone Identifiers in IPv6 address literals are supported ([RFC 6874](https://datatracker.ietf.org/doc/html/rfc6874)).\n     *\n     * If the field value isn't a valid URI, an error message will be generated.\n     *\n     * ```proto\n     * message MyString {\n     *   // must be a valid URI\n     *   string value = 1 [(buf.validate.field).string.uri = true];\n     * }\n     * ```\n     *\n     * @generated from field: bool uri = 17;\n     */\n    value: boolean;\n    case: \"uri\";\n  } | {\n    /**\n     * `uri_ref` specifies that the field value must be a valid URI Reference—either\n     * a URI such as \"https://example.com/foo/bar?baz=quux#frag\", or a Relative\n     * Reference such as \"./foo/bar?query\".\n     *\n     * URI, URI Reference, and Relative Reference are defined in the internet\n     * standard [RFC 3986](https://datatracker.ietf.org/doc/html/rfc3986). Zone\n     * Identifiers in IPv6 address literals are supported ([RFC 6874](https://datatracker.ietf.org/doc/html/rfc6874)).\n     *\n     * If the field value isn't a valid URI Reference, an error message will be\n     * generated.\n     *\n     * ```proto\n     * message MyString {\n     *   // must be a valid URI Reference\n     *   string value = 1 [(buf.validate.field).string.uri_ref = true];\n     * }\n     * ```\n     *\n     * @generated from field: bool uri_ref = 18;\n     */\n    value: boolean;\n    case: \"uriRef\";\n  } | {\n    /**\n     * `address` specifies that the field value must be either a valid hostname\n     * (for example, \"example.com\"), or a valid IP (v4 or v6) address (for example,\n     * \"192.168.0.1\", or \"::1\"). If the field value isn't a valid hostname or IP,\n     * an error message will be generated.\n     *\n     * ```proto\n     * message MyString {\n     *   // must be a valid hostname, or ip address\n     *   string value = 1 [(buf.validate.field).string.address = true];\n     * }\n     * ```\n     *\n     * @generated from field: bool address = 21;\n     */\n    value: boolean;\n    case: \"address\";\n  } | {\n    /**\n     * `uuid` specifies that the field value must be a valid UUID as defined by\n     * [RFC 4122](https://datatracker.ietf.org/doc/html/rfc4122#section-4.1.2). If the\n     * field value isn't a valid UUID, an error message will be generated.\n     *\n     * ```proto\n     * message MyString {\n     *   // must be a valid UUID\n     *   string value = 1 [(buf.validate.field).string.uuid = true];\n     * }\n     * ```\n     *\n     * @generated from field: bool uuid = 22;\n     */\n    value: boolean;\n    case: \"uuid\";\n  } | {\n    /**\n     * `tuuid` (trimmed UUID) specifies that the field value must be a valid UUID as\n     * defined by [RFC 4122](https://datatracker.ietf.org/doc/html/rfc4122#section-4.1.2) with all dashes\n     * omitted. If the field value isn't a valid UUID without dashes, an error message\n     * will be generated.\n     *\n     * ```proto\n     * message MyString {\n     *   // must be a valid trimmed UUID\n     *   string value = 1 [(buf.validate.field).string.tuuid = true];\n     * }\n     * ```\n     *\n     * @generated from field: bool tuuid = 33;\n     */\n    value: boolean;\n    case: \"tuuid\";\n  } | {\n    /**\n     * `ip_with_prefixlen` specifies that the field value must be a valid IP\n     * (v4 or v6) address with prefix length—for example, \"192.168.5.21/16\" or\n     * \"2001:0DB8:ABCD:0012::F1/64\". If the field value isn't a valid IP with\n     * prefix length, an error message will be generated.\n     *\n     * ```proto\n     * message MyString {\n     *   // must be a valid IP with prefix length\n     *    string value = 1 [(buf.validate.field).string.ip_with_prefixlen = true];\n     * }\n     * ```\n     *\n     * @generated from field: bool ip_with_prefixlen = 26;\n     */\n    value: boolean;\n    case: \"ipWithPrefixlen\";\n  } | {\n    /**\n     * `ipv4_with_prefixlen` specifies that the field value must be a valid\n     * IPv4 address with prefix length—for example, \"192.168.5.21/16\". If the\n     * field value isn't a valid IPv4 address with prefix length, an error\n     * message will be generated.\n     *\n     * ```proto\n     * message MyString {\n     *   // must be a valid IPv4 address with prefix length\n     *    string value = 1 [(buf.validate.field).string.ipv4_with_prefixlen = true];\n     * }\n     * ```\n     *\n     * @generated from field: bool ipv4_with_prefixlen = 27;\n     */\n    value: boolean;\n    case: \"ipv4WithPrefixlen\";\n  } | {\n    /**\n     * `ipv6_with_prefixlen` specifies that the field value must be a valid\n     * IPv6 address with prefix length—for example, \"2001:0DB8:ABCD:0012::F1/64\".\n     * If the field value is not a valid IPv6 address with prefix length,\n     * an error message will be generated.\n     *\n     * ```proto\n     * message MyString {\n     *   // must be a valid IPv6 address prefix length\n     *    string value = 1 [(buf.validate.field).string.ipv6_with_prefixlen = true];\n     * }\n     * ```\n     *\n     * @generated from field: bool ipv6_with_prefixlen = 28;\n     */\n    value: boolean;\n    case: \"ipv6WithPrefixlen\";\n  } | {\n    /**\n     * `ip_prefix` specifies that the field value must be a valid IP (v4 or v6)\n     * prefix—for example, \"192.168.0.0/16\" or \"2001:0DB8:ABCD:0012::0/64\".\n     *\n     * The prefix must have all zeros for the unmasked bits. For example,\n     * \"2001:0DB8:ABCD:0012::0/64\" designates the left-most 64 bits for the\n     * prefix, and the remaining 64 bits must be zero.\n     *\n     * If the field value isn't a valid IP prefix, an error message will be\n     * generated.\n     *\n     * ```proto\n     * message MyString {\n     *   // must be a valid IP prefix\n     *    string value = 1 [(buf.validate.field).string.ip_prefix = true];\n     * }\n     * ```\n     *\n     * @generated from field: bool ip_prefix = 29;\n     */\n    value: boolean;\n    case: \"ipPrefix\";\n  } | {\n    /**\n     * `ipv4_prefix` specifies that the field value must be a valid IPv4\n     * prefix, for example \"192.168.0.0/16\".\n     *\n     * The prefix must have all zeros for the unmasked bits. For example,\n     * \"192.168.0.0/16\" designates the left-most 16 bits for the prefix,\n     * and the remaining 16 bits must be zero.\n     *\n     * If the field value isn't a valid IPv4 prefix, an error message\n     * will be generated.\n     *\n     * ```proto\n     * message MyString {\n     *   // must be a valid IPv4 prefix\n     *    string value = 1 [(buf.validate.field).string.ipv4_prefix = true];\n     * }\n     * ```\n     *\n     * @generated from field: bool ipv4_prefix = 30;\n     */\n    value: boolean;\n    case: \"ipv4Prefix\";\n  } | {\n    /**\n     * `ipv6_prefix` specifies that the field value must be a valid IPv6 prefix—for\n     * example, \"2001:0DB8:ABCD:0012::0/64\".\n     *\n     * The prefix must have all zeros for the unmasked bits. For example,\n     * \"2001:0DB8:ABCD:0012::0/64\" designates the left-most 64 bits for the\n     * prefix, and the remaining 64 bits must be zero.\n     *\n     * If the field value is not a valid IPv6 prefix, an error message will be\n     * generated.\n     *\n     * ```proto\n     * message MyString {\n     *   // must be a valid IPv6 prefix\n     *    string value = 1 [(buf.validate.field).string.ipv6_prefix = true];\n     * }\n     * ```\n     *\n     * @generated from field: bool ipv6_prefix = 31;\n     */\n    value: boolean;\n    case: \"ipv6Prefix\";\n  } | {\n    /**\n     * `host_and_port` specifies that the field value must be a valid host/port\n     * pair—for example, \"example.com:8080\".\n     *\n     * The host can be one of:\n     * - An IPv4 address in dotted decimal format—for example, \"192.168.5.21\".\n     * - An IPv6 address enclosed in square brackets—for example, \"[2001:0DB8:ABCD:0012::F1]\".\n     * - A hostname—for example, \"example.com\".\n     *\n     * The port is separated by a colon. It must be non-empty, with a decimal number\n     * in the range of 0-65535, inclusive.\n     *\n     * @generated from field: bool host_and_port = 32;\n     */\n    value: boolean;\n    case: \"hostAndPort\";\n  } | {\n    /**\n     * `ulid` specifies that the field value must be a valid ULID (Universally Unique\n     * Lexicographically Sortable Identifier) as defined by the [ULID specification](https://github.com/ulid/spec).\n     * If the field value isn't a valid ULID, an error message will be generated.\n     *\n     * ```proto\n     * message MyString {\n     *   // must be a valid ULID\n     *   string value = 1 [(buf.validate.field).string.ulid = true];\n     * }\n     * ```\n     *\n     * @generated from field: bool ulid = 35;\n     */\n    value: boolean;\n    case: \"ulid\";\n  } | {\n    /**\n     * `protobuf_fqn` specifies that the field value must be a valid fully-qualified\n     * Protobuf name as defined by the [Protobuf Language Specification](https://protobuf.com/docs/language-spec).\n     *\n     * A fully-qualified Protobuf name is a dot-separated list of Protobuf identifiers,\n     * where each identifier starts with a letter or underscore and is followed by zero or\n     * more letters, underscores, or digits.\n     *\n     * Examples: \"buf.validate\", \"google.protobuf.Timestamp\", \"my_package.MyMessage\".\n     *\n     * Note: historically, fully-qualified Protobuf names were represented with a leading\n     * dot (for example, \".buf.validate.StringRules\"). Modern Protobuf does not use the\n     * leading dot, and most fully-qualified names are represented without it. Use\n     * `protobuf_dot_fqn` if a leading dot is required.\n     *\n     * If the field value isn't a valid fully-qualified Protobuf name, an error message\n     * will be generated.\n     *\n     * ```proto\n     * message MyString {\n     *   // value must be a valid fully-qualified Protobuf name\n     *   string value = 1 [(buf.validate.field).string.protobuf_fqn = true];\n     * }\n     * ```\n     *\n     * @generated from field: bool protobuf_fqn = 37;\n     */\n    value: boolean;\n    case: \"protobufFqn\";\n  } | {\n    /**\n     * `protobuf_dot_fqn` specifies that the field value must be a valid fully-qualified\n     * Protobuf name with a leading dot, as defined by the\n     * [Protobuf Language Specification](https://protobuf.com/docs/language-spec).\n     *\n     * A fully-qualified Protobuf name with a leading dot is a dot followed by a\n     * dot-separated list of Protobuf identifiers, where each identifier starts with a\n     * letter or underscore and is followed by zero or more letters, underscores, or\n     * digits.\n     *\n     * Examples: \".buf.validate\", \".google.protobuf.Timestamp\", \".my_package.MyMessage\".\n     *\n     * Note: this is the historical representation of fully-qualified Protobuf names,\n     * where a leading dot denotes an absolute reference. Modern Protobuf does not use\n     * the leading dot, and most fully-qualified names are represented without it. Most\n     * users will want to use `protobuf_fqn` instead.\n     *\n     * If the field value isn't a valid fully-qualified Protobuf name with a leading dot,\n     * an error message will be generated.\n     *\n     * ```proto\n     * message MyString {\n     *   // value must be a valid fully-qualified Protobuf name with a leading dot\n     *   string value = 1 [(buf.validate.field).string.protobuf_dot_fqn = true];\n     * }\n     * ```\n     *\n     * @generated from field: bool protobuf_dot_fqn = 38;\n     */\n    value: boolean;\n    case: \"protobufDotFqn\";\n  } | {\n    /**\n     * `well_known_regex` specifies a common well-known pattern\n     * defined as a regex. If the field value doesn't match the well-known\n     * regex, an error message will be generated.\n     *\n     * ```proto\n     * message MyString {\n     *   // must be a valid HTTP header value\n     *   string value = 1 [(buf.validate.field).string.well_known_regex = KNOWN_REGEX_HTTP_HEADER_VALUE];\n     * }\n     * ```\n     *\n     * #### KnownRegex\n     *\n     * `well_known_regex` contains some well-known patterns.\n     *\n     * | Name                          | Number | Description                               |\n     * |-------------------------------|--------|-------------------------------------------|\n     * | KNOWN_REGEX_UNSPECIFIED       | 0      |                                           |\n     * | KNOWN_REGEX_HTTP_HEADER_NAME  | 1      | HTTP header name as defined by [RFC 7230](https://datatracker.ietf.org/doc/html/rfc7230#section-3.2)  |\n     * | KNOWN_REGEX_HTTP_HEADER_VALUE | 2      | HTTP header value as defined by [RFC 7230](https://datatracker.ietf.org/doc/html/rfc7230#section-3.2.4) |\n     *\n     * @generated from field: buf.validate.KnownRegex well_known_regex = 24;\n     */\n    value: KnownRegex;\n    case: \"wellKnownRegex\";\n  } | { case: undefined; value?: undefined };\n\n  /**\n   * This applies to regexes `HTTP_HEADER_NAME` and `HTTP_HEADER_VALUE` to\n   * enable strict header validation. By default, this is true, and HTTP header\n   * validations are [RFC-compliant](https://datatracker.ietf.org/doc/html/rfc7230#section-3). Setting to false will enable looser\n   * validations that only disallow `\\r\\n\\0` characters, which can be used to\n   * bypass header matching rules.\n   *\n   * ```proto\n   * message MyString {\n   *   // The field `value` must have be a valid HTTP headers, but not enforced with strict rules.\n   *   string value = 1 [(buf.validate.field).string.strict = false];\n   * }\n   * ```\n   *\n   * @generated from field: optional bool strict = 25;\n   */\n  strict: boolean;\n\n  /**\n   * `example` specifies values that the field may have. These values SHOULD\n   * conform to other rules. `example` values will not impact validation\n   * but may be used as helpful guidance on how to populate the given field.\n   *\n   * ```proto\n   * message MyString {\n   *   string value = 1 [\n   *     (buf.validate.field).string.example = \"hello\",\n   *     (buf.validate.field).string.example = \"world\"\n   *   ];\n   * }\n   * ```\n   *\n   * @generated from field: repeated string example = 34;\n   */\n  example: string[];\n};\n\n/**\n * Describes the message buf.validate.StringRules.\n * Use `create(StringRulesSchema)` to create a new message.\n */\nexport const StringRulesSchema: GenMessage<StringRules> = /*@__PURE__*/\n  messageDesc(file_buf_validate_validate, 19);\n\n/**\n * BytesRules describe the rules applied to `bytes` values. These rules\n * may also be applied to the `google.protobuf.BytesValue` Well-Known-Type.\n *\n * @generated from message buf.validate.BytesRules\n */\nexport type BytesRules = Message<\"buf.validate.BytesRules\"> & {\n  /**\n   * `const` requires the field value to exactly match the specified bytes\n   * value. If the field value doesn't match, an error message is generated.\n   *\n   * ```proto\n   * message MyBytes {\n   *   // must be \"\\x01\\x02\\x03\\x04\"\n   *   bytes value = 1 [(buf.validate.field).bytes.const = \"\\x01\\x02\\x03\\x04\"];\n   * }\n   * ```\n   *\n   * @generated from field: optional bytes const = 1;\n   */\n  const: Uint8Array;\n\n  /**\n   * `len` requires the field value to have the specified length in bytes.\n   * If the field value doesn't match, an error message is generated.\n   *\n   * ```proto\n   * message MyBytes {\n   *   // value length must be 4 bytes.\n   *   optional bytes value = 1 [(buf.validate.field).bytes.len = 4];\n   * }\n   * ```\n   *\n   * @generated from field: optional uint64 len = 13;\n   */\n  len: bigint;\n\n  /**\n   * `min_len` requires the field value to have at least the specified minimum\n   * length in bytes.\n   * If the field value doesn't meet the requirement, an error message is generated.\n   *\n   * ```proto\n   * message MyBytes {\n   *   // value length must be at least 2 bytes.\n   *   optional bytes value = 1 [(buf.validate.field).bytes.min_len = 2];\n   * }\n   * ```\n   *\n   * @generated from field: optional uint64 min_len = 2;\n   */\n  minLen: bigint;\n\n  /**\n   * `max_len` requires the field value to have at most the specified maximum\n   * length in bytes.\n   * If the field value exceeds the requirement, an error message is generated.\n   *\n   * ```proto\n   * message MyBytes {\n   *   // must be at most 6 bytes.\n   *   optional bytes value = 1 [(buf.validate.field).bytes.max_len = 6];\n   * }\n   * ```\n   *\n   * @generated from field: optional uint64 max_len = 3;\n   */\n  maxLen: bigint;\n\n  /**\n   * `pattern` requires the field value to match the specified regular\n   * expression ([RE2 syntax](https://github.com/google/re2/wiki/Syntax)).\n   * The value of the field must be valid UTF-8 or validation will fail with a\n   * runtime error.\n   * If the field value doesn't match the pattern, an error message is generated.\n   *\n   * ```proto\n   * message MyBytes {\n   *   // value must match regex pattern \"^[a-zA-Z0-9]+$\".\n   *   optional bytes value = 1 [(buf.validate.field).bytes.pattern = \"^[a-zA-Z0-9]+$\"];\n   * }\n   * ```\n   *\n   * @generated from field: optional string pattern = 4;\n   */\n  pattern: string;\n\n  /**\n   * `prefix` requires the field value to have the specified bytes at the\n   * beginning of the string.\n   * If the field value doesn't meet the requirement, an error message is generated.\n   *\n   * ```proto\n   * message MyBytes {\n   *   // value does not have prefix \\x01\\x02\n   *   optional bytes value = 1 [(buf.validate.field).bytes.prefix = \"\\x01\\x02\"];\n   * }\n   * ```\n   *\n   * @generated from field: optional bytes prefix = 5;\n   */\n  prefix: Uint8Array;\n\n  /**\n   * `suffix` requires the field value to have the specified bytes at the end\n   * of the string.\n   * If the field value doesn't meet the requirement, an error message is generated.\n   *\n   * ```proto\n   * message MyBytes {\n   *   // value does not have suffix \\x03\\x04\n   *   optional bytes value = 1 [(buf.validate.field).bytes.suffix = \"\\x03\\x04\"];\n   * }\n   * ```\n   *\n   * @generated from field: optional bytes suffix = 6;\n   */\n  suffix: Uint8Array;\n\n  /**\n   * `contains` requires the field value to have the specified bytes anywhere in\n   * the string.\n   * If the field value doesn't meet the requirement, an error message is generated.\n   *\n   * ```proto\n   * message MyBytes {\n   *   // value does not contain \\x02\\x03\n   *   optional bytes value = 1 [(buf.validate.field).bytes.contains = \"\\x02\\x03\"];\n   * }\n   * ```\n   *\n   * @generated from field: optional bytes contains = 7;\n   */\n  contains: Uint8Array;\n\n  /**\n   * `in` requires the field value to be equal to one of the specified\n   * values. If the field value doesn't match any of the specified values, an\n   * error message is generated.\n   *\n   * ```proto\n   * message MyBytes {\n   *   // value must in [\"\\x01\\x02\", \"\\x02\\x03\", \"\\x03\\x04\"]\n   *   optional bytes value = 1 [(buf.validate.field).bytes = { in: [\"\\x01\\x02\", \"\\x02\\x03\", \"\\x03\\x04\"] }];\n   * }\n   * ```\n   *\n   * @generated from field: repeated bytes in = 8;\n   */\n  in: Uint8Array[];\n\n  /**\n   * `not_in` requires the field value to be not equal to any of the specified\n   * values.\n   * If the field value matches any of the specified values, an error message is\n   * generated.\n   *\n   * ```proto\n   * message MyBytes {\n   *   // value must not in [\"\\x01\\x02\", \"\\x02\\x03\", \"\\x03\\x04\"]\n   *   optional bytes value = 1 [(buf.validate.field).bytes = { not_in: [\"\\x01\\x02\", \"\\x02\\x03\", \"\\x03\\x04\"] }];\n   * }\n   * ```\n   *\n   * @generated from field: repeated bytes not_in = 9;\n   */\n  notIn: Uint8Array[];\n\n  /**\n   * WellKnown rules provide advanced rules against common byte\n   * patterns\n   *\n   * @generated from oneof buf.validate.BytesRules.well_known\n   */\n  wellKnown: {\n    /**\n     * `ip` ensures that the field `value` is a valid IP address (v4 or v6) in byte format.\n     * If the field value doesn't meet this rule, an error message is generated.\n     *\n     * ```proto\n     * message MyBytes {\n     *   // must be a valid IP address\n     *   optional bytes value = 1 [(buf.validate.field).bytes.ip = true];\n     * }\n     * ```\n     *\n     * @generated from field: bool ip = 10;\n     */\n    value: boolean;\n    case: \"ip\";\n  } | {\n    /**\n     * `ipv4` ensures that the field `value` is a valid IPv4 address in byte format.\n     * If the field value doesn't meet this rule, an error message is generated.\n     *\n     * ```proto\n     * message MyBytes {\n     *   // must be a valid IPv4 address\n     *   optional bytes value = 1 [(buf.validate.field).bytes.ipv4 = true];\n     * }\n     * ```\n     *\n     * @generated from field: bool ipv4 = 11;\n     */\n    value: boolean;\n    case: \"ipv4\";\n  } | {\n    /**\n     * `ipv6` ensures that the field `value` is a valid IPv6 address in byte format.\n     * If the field value doesn't meet this rule, an error message is generated.\n     * ```proto\n     * message MyBytes {\n     *   // must be a valid IPv6 address\n     *   optional bytes value = 1 [(buf.validate.field).bytes.ipv6 = true];\n     * }\n     * ```\n     *\n     * @generated from field: bool ipv6 = 12;\n     */\n    value: boolean;\n    case: \"ipv6\";\n  } | {\n    /**\n     * `uuid` ensures that the field value encodes 128-bit UUID data as defined\n     * by [RFC 4122](https://datatracker.ietf.org/doc/html/rfc4122#section-4.1.2).\n     * The field must contain exactly 16 bytes representing the UUID. If the\n     * field value isn't a valid UUID, an error message will be generated.\n     *\n     * ```proto\n     * message MyBytes {\n     *   // must be a valid UUID\n     *   optional bytes value = 1 [(buf.validate.field).bytes.uuid = true];\n     * }\n     * ```\n     *\n     * @generated from field: bool uuid = 15;\n     */\n    value: boolean;\n    case: \"uuid\";\n  } | { case: undefined; value?: undefined };\n\n  /**\n   * `example` specifies values that the field may have. These values SHOULD\n   * conform to other rules. `example` values will not impact validation\n   * but may be used as helpful guidance on how to populate the given field.\n   *\n   * ```proto\n   * message MyBytes {\n   *   bytes value = 1 [\n   *     (buf.validate.field).bytes.example = \"\\x01\\x02\",\n   *     (buf.validate.field).bytes.example = \"\\x02\\x03\"\n   *   ];\n   * }\n   * ```\n   *\n   * @generated from field: repeated bytes example = 14;\n   */\n  example: Uint8Array[];\n};\n\n/**\n * Describes the message buf.validate.BytesRules.\n * Use `create(BytesRulesSchema)` to create a new message.\n */\nexport const BytesRulesSchema: GenMessage<BytesRules> = /*@__PURE__*/\n  messageDesc(file_buf_validate_validate, 20);\n\n/**\n * EnumRules describe the rules applied to `enum` values.\n *\n * @generated from message buf.validate.EnumRules\n */\nexport type EnumRules = Message<\"buf.validate.EnumRules\"> & {\n  /**\n   * `const` requires the field value to exactly match the specified enum value.\n   * If the field value doesn't match, an error message is generated.\n   *\n   * ```proto\n   * enum MyEnum {\n   *   MY_ENUM_UNSPECIFIED = 0;\n   *   MY_ENUM_VALUE1 = 1;\n   *   MY_ENUM_VALUE2 = 2;\n   * }\n   *\n   * message MyMessage {\n   *   // The field `value` must be exactly MY_ENUM_VALUE1.\n   *   MyEnum value = 1 [(buf.validate.field).enum.const = 1];\n   * }\n   * ```\n   *\n   * @generated from field: optional int32 const = 1;\n   */\n  const: number;\n\n  /**\n   * `defined_only` requires the field value to be one of the defined values for\n   * this enum, failing on any undefined value.\n   *\n   * ```proto\n   * enum MyEnum {\n   *   MY_ENUM_UNSPECIFIED = 0;\n   *   MY_ENUM_VALUE1 = 1;\n   *   MY_ENUM_VALUE2 = 2;\n   * }\n   *\n   * message MyMessage {\n   *   // The field `value` must be a defined value of MyEnum.\n   *   MyEnum value = 1 [(buf.validate.field).enum.defined_only = true];\n   * }\n   * ```\n   *\n   * @generated from field: optional bool defined_only = 2;\n   */\n  definedOnly: boolean;\n\n  /**\n   * `in` requires the field value to be equal to one of the\n   * specified enum values. If the field value doesn't match any of the\n   * specified values, an error message is generated.\n   *\n   * ```proto\n   * enum MyEnum {\n   *   MY_ENUM_UNSPECIFIED = 0;\n   *   MY_ENUM_VALUE1 = 1;\n   *   MY_ENUM_VALUE2 = 2;\n   * }\n   *\n   * message MyMessage {\n   *   // The field `value` must be equal to one of the specified values.\n   *   MyEnum value = 1 [(buf.validate.field).enum = { in: [1, 2]}];\n   * }\n   * ```\n   *\n   * @generated from field: repeated int32 in = 3;\n   */\n  in: number[];\n\n  /**\n   * `not_in` requires the field value to be not equal to any of the\n   * specified enum values. If the field value matches one of the specified\n   * values, an error message is generated.\n   *\n   * ```proto\n   * enum MyEnum {\n   *   MY_ENUM_UNSPECIFIED = 0;\n   *   MY_ENUM_VALUE1 = 1;\n   *   MY_ENUM_VALUE2 = 2;\n   * }\n   *\n   * message MyMessage {\n   *   // The field `value` must not be equal to any of the specified values.\n   *   MyEnum value = 1 [(buf.validate.field).enum = { not_in: [1, 2]}];\n   * }\n   * ```\n   *\n   * @generated from field: repeated int32 not_in = 4;\n   */\n  notIn: number[];\n\n  /**\n   * `example` specifies values that the field may have. These values SHOULD\n   * conform to other rules. `example` values will not impact validation\n   * but may be used as helpful guidance on how to populate the given field.\n   *\n   * ```proto\n   * enum MyEnum {\n   *   MY_ENUM_UNSPECIFIED = 0;\n   *   MY_ENUM_VALUE1 = 1;\n   *   MY_ENUM_VALUE2 = 2;\n   * }\n   *\n   * message MyMessage {\n   *   MyEnum value = 1 [\n   *     (buf.validate.field).enum.example = 1,\n   *     (buf.validate.field).enum.example = 2\n   *   ];\n   * }\n   * ```\n   *\n   * @generated from field: repeated int32 example = 5;\n   */\n  example: number[];\n};\n\n/**\n * Describes the message buf.validate.EnumRules.\n * Use `create(EnumRulesSchema)` to create a new message.\n */\nexport const EnumRulesSchema: GenMessage<EnumRules> = /*@__PURE__*/\n  messageDesc(file_buf_validate_validate, 21);\n\n/**\n * RepeatedRules describe the rules applied to `repeated` values.\n *\n * @generated from message buf.validate.RepeatedRules\n */\nexport type RepeatedRules = Message<\"buf.validate.RepeatedRules\"> & {\n  /**\n   * `min_items` requires that this field must contain at least the specified\n   * minimum number of items.\n   *\n   * Note that `min_items = 1` is equivalent to setting a field as `required`.\n   *\n   * ```proto\n   * message MyRepeated {\n   *   // value must contain at least  2 items\n   *   repeated string value = 1 [(buf.validate.field).repeated.min_items = 2];\n   * }\n   * ```\n   *\n   * @generated from field: optional uint64 min_items = 1;\n   */\n  minItems: bigint;\n\n  /**\n   * `max_items` denotes that this field must not exceed a\n   * certain number of items as the upper limit. If the field contains more\n   * items than specified, an error message will be generated, requiring the\n   * field to maintain no more than the specified number of items.\n   *\n   * ```proto\n   * message MyRepeated {\n   *   // value must contain no more than 3 item(s)\n   *   repeated string value = 1 [(buf.validate.field).repeated.max_items = 3];\n   * }\n   * ```\n   *\n   * @generated from field: optional uint64 max_items = 2;\n   */\n  maxItems: bigint;\n\n  /**\n   * `unique` indicates that all elements in this field must\n   * be unique. This rule is strictly applicable to scalar and enum\n   * types, with message types not being supported.\n   *\n   * ```proto\n   * message MyRepeated {\n   *   // repeated value must contain unique items\n   *   repeated string value = 1 [(buf.validate.field).repeated.unique = true];\n   * }\n   * ```\n   *\n   * @generated from field: optional bool unique = 3;\n   */\n  unique: boolean;\n\n  /**\n   * `items` details the rules to be applied to each item\n   * in the field. Even for repeated message fields, validation is executed\n   * against each item unless `ignore` is specified.\n   *\n   * ```proto\n   * message MyRepeated {\n   *   // The items in the field `value` must follow the specified rules.\n   *   repeated string value = 1 [(buf.validate.field).repeated.items = {\n   *     string: {\n   *       min_len: 3\n   *       max_len: 10\n   *     }\n   *   }];\n   * }\n   * ```\n   *\n   * Note that the `required` rule does not apply. Repeated items\n   * cannot be unset.\n   *\n   * @generated from field: optional buf.validate.FieldRules items = 4;\n   */\n  items?: FieldRules | undefined;\n};\n\n/**\n * Describes the message buf.validate.RepeatedRules.\n * Use `create(RepeatedRulesSchema)` to create a new message.\n */\nexport const RepeatedRulesSchema: GenMessage<RepeatedRules> = /*@__PURE__*/\n  messageDesc(file_buf_validate_validate, 22);\n\n/**\n * MapRules describe the rules applied to `map` values.\n *\n * @generated from message buf.validate.MapRules\n */\nexport type MapRules = Message<\"buf.validate.MapRules\"> & {\n  /**\n   * Specifies the minimum number of key-value pairs allowed. If the field has\n   * fewer key-value pairs than specified, an error message is generated.\n   *\n   * ```proto\n   * message MyMap {\n   *   // The field `value` must have at least 2 key-value pairs.\n   *   map<string, string> value = 1 [(buf.validate.field).map.min_pairs = 2];\n   * }\n   * ```\n   *\n   * @generated from field: optional uint64 min_pairs = 1;\n   */\n  minPairs: bigint;\n\n  /**\n   * Specifies the maximum number of key-value pairs allowed. If the field has\n   * more key-value pairs than specified, an error message is generated.\n   *\n   * ```proto\n   * message MyMap {\n   *   // The field `value` must have at most 3 key-value pairs.\n   *   map<string, string> value = 1 [(buf.validate.field).map.max_pairs = 3];\n   * }\n   * ```\n   *\n   * @generated from field: optional uint64 max_pairs = 2;\n   */\n  maxPairs: bigint;\n\n  /**\n   * Specifies the rules to be applied to each key in the field.\n   *\n   * ```proto\n   * message MyMap {\n   *   // The keys in the field `value` must follow the specified rules.\n   *   map<string, string> value = 1 [(buf.validate.field).map.keys = {\n   *     string: {\n   *       min_len: 3\n   *       max_len: 10\n   *     }\n   *   }];\n   * }\n   * ```\n   *\n   * Note that the `required` rule does not apply. Map keys cannot be unset.\n   *\n   * @generated from field: optional buf.validate.FieldRules keys = 4;\n   */\n  keys?: FieldRules | undefined;\n\n  /**\n   * Specifies the rules to be applied to the value of each key in the\n   * field. Message values will still have their validations evaluated unless\n   * `ignore` is specified.\n   *\n   * ```proto\n   * message MyMap {\n   *   // The values in the field `value` must follow the specified rules.\n   *   map<string, string> value = 1 [(buf.validate.field).map.values = {\n   *     string: {\n   *       min_len: 5\n   *       max_len: 20\n   *     }\n   *   }];\n   * }\n   * ```\n   * Note that the `required` rule does not apply. Map values cannot be unset.\n   *\n   * @generated from field: optional buf.validate.FieldRules values = 5;\n   */\n  values?: FieldRules | undefined;\n};\n\n/**\n * Describes the message buf.validate.MapRules.\n * Use `create(MapRulesSchema)` to create a new message.\n */\nexport const MapRulesSchema: GenMessage<MapRules> = /*@__PURE__*/\n  messageDesc(file_buf_validate_validate, 23);\n\n/**\n * AnyRules describe rules applied exclusively to the `google.protobuf.Any` well-known type.\n *\n * @generated from message buf.validate.AnyRules\n */\nexport type AnyRules = Message<\"buf.validate.AnyRules\"> & {\n  /**\n   * `in` requires the field's `type_url` to be equal to one of the\n   * specified values. If it doesn't match any of the specified values, an error\n   * message is generated.\n   *\n   * ```proto\n   * message MyAny {\n   *   //  The `value` field must have a `type_url` equal to one of the specified values.\n   *   google.protobuf.Any value = 1 [(buf.validate.field).any = {\n   *       in: [\"type.googleapis.com/MyType1\", \"type.googleapis.com/MyType2\"]\n   *   }];\n   * }\n   * ```\n   *\n   * @generated from field: repeated string in = 2;\n   */\n  in: string[];\n\n  /**\n   * `not_in` requires the field's type_url to be not equal to any of the specified values. If it matches any of the specified values, an error message is generated.\n   *\n   * ```proto\n   * message MyAny {\n   *   //  The `value` field must not have a `type_url` equal to any of the specified values.\n   *   google.protobuf.Any value = 1 [(buf.validate.field).any = {\n   *       not_in: [\"type.googleapis.com/ForbiddenType1\", \"type.googleapis.com/ForbiddenType2\"]\n   *   }];\n   * }\n   * ```\n   *\n   * @generated from field: repeated string not_in = 3;\n   */\n  notIn: string[];\n};\n\n/**\n * Describes the message buf.validate.AnyRules.\n * Use `create(AnyRulesSchema)` to create a new message.\n */\nexport const AnyRulesSchema: GenMessage<AnyRules> = /*@__PURE__*/\n  messageDesc(file_buf_validate_validate, 24);\n\n/**\n * DurationRules describe the rules applied exclusively to the `google.protobuf.Duration` well-known type.\n *\n * @generated from message buf.validate.DurationRules\n */\nexport type DurationRules = Message<\"buf.validate.DurationRules\"> & {\n  /**\n   * `const` dictates that the field must match the specified value of the `google.protobuf.Duration` type exactly.\n   * If the field's value deviates from the specified value, an error message\n   * will be generated.\n   *\n   * ```proto\n   * message MyDuration {\n   *   // value must equal 5s\n   *   google.protobuf.Duration value = 1 [(buf.validate.field).duration.const = { seconds: 5 }];\n   * }\n   * ```\n   *\n   * @generated from field: optional google.protobuf.Duration const = 2;\n   */\n  const?: Duration | undefined;\n\n  /**\n   * @generated from oneof buf.validate.DurationRules.less_than\n   */\n  lessThan: {\n    /**\n     * `lt` stipulates that the field must be less than the specified value of the `google.protobuf.Duration` type,\n     * exclusive. If the field's value is greater than or equal to the specified\n     * value, an error message will be generated.\n     *\n     * ```proto\n     * message MyDuration {\n     *   // must be less than 5s\n     *   google.protobuf.Duration value = 1 [(buf.validate.field).duration.lt = { seconds: 5 }];\n     * }\n     * ```\n     *\n     * @generated from field: google.protobuf.Duration lt = 3;\n     */\n    value: Duration;\n    case: \"lt\";\n  } | {\n    /**\n     * `lte` indicates that the field must be less than or equal to the specified\n     * value of the `google.protobuf.Duration` type, inclusive. If the field's value is greater than the specified value,\n     * an error message will be generated.\n     *\n     * ```proto\n     * message MyDuration {\n     *   // must be less than or equal to 10s\n     *   google.protobuf.Duration value = 1 [(buf.validate.field).duration.lte = { seconds: 10 }];\n     * }\n     * ```\n     *\n     * @generated from field: google.protobuf.Duration lte = 4;\n     */\n    value: Duration;\n    case: \"lte\";\n  } | { case: undefined; value?: undefined };\n\n  /**\n   * @generated from oneof buf.validate.DurationRules.greater_than\n   */\n  greaterThan: {\n    /**\n     * `gt` requires the duration field value to be greater than the specified\n     * value (exclusive). If the value of `gt` is larger than a specified `lt`\n     * or `lte`, the range is reversed, and the field value must be outside the\n     * specified range. If the field value doesn't meet the required conditions,\n     * an error message is generated.\n     *\n     * ```proto\n     * message MyDuration {\n     *   // duration must be greater than 5s [duration.gt]\n     *   google.protobuf.Duration value = 1 [(buf.validate.field).duration.gt = { seconds: 5 }];\n     *\n     *   // duration must be greater than 5s and less than 10s [duration.gt_lt]\n     *   google.protobuf.Duration another_value = 2 [(buf.validate.field).duration = { gt: { seconds: 5 }, lt: { seconds: 10 } }];\n     *\n     *   // duration must be greater than 10s or less than 5s [duration.gt_lt_exclusive]\n     *   google.protobuf.Duration other_value = 3 [(buf.validate.field).duration = { gt: { seconds: 10 }, lt: { seconds: 5 } }];\n     * }\n     * ```\n     *\n     * @generated from field: google.protobuf.Duration gt = 5;\n     */\n    value: Duration;\n    case: \"gt\";\n  } | {\n    /**\n     * `gte` requires the duration field value to be greater than or equal to the\n     * specified value (exclusive). If the value of `gte` is larger than a\n     * specified `lt` or `lte`, the range is reversed, and the field value must\n     * be outside the specified range. If the field value doesn't meet the\n     * required conditions, an error message is generated.\n     *\n     * ```proto\n     * message MyDuration {\n     *  // duration must be greater than or equal to 5s [duration.gte]\n     *  google.protobuf.Duration value = 1 [(buf.validate.field).duration.gte = { seconds: 5 }];\n     *\n     *  // duration must be greater than or equal to 5s and less than 10s [duration.gte_lt]\n     *  google.protobuf.Duration another_value = 2 [(buf.validate.field).duration = { gte: { seconds: 5 }, lt: { seconds: 10 } }];\n     *\n     *  // duration must be greater than or equal to 10s or less than 5s [duration.gte_lt_exclusive]\n     *  google.protobuf.Duration other_value = 3 [(buf.validate.field).duration = { gte: { seconds: 10 }, lt: { seconds: 5 } }];\n     * }\n     * ```\n     *\n     * @generated from field: google.protobuf.Duration gte = 6;\n     */\n    value: Duration;\n    case: \"gte\";\n  } | { case: undefined; value?: undefined };\n\n  /**\n   * `in` asserts that the field must be equal to one of the specified values of the `google.protobuf.Duration` type.\n   * If the field's value doesn't correspond to any of the specified values,\n   * an error message will be generated.\n   *\n   * ```proto\n   * message MyDuration {\n   *   // must be in list [1s, 2s, 3s]\n   *   google.protobuf.Duration value = 1 [(buf.validate.field).duration = {\n   *     in: [{ seconds: 1 }, { seconds: 2 }, { seconds: 3 }]\n   *   }];\n   * }\n   * ```\n   *\n   * @generated from field: repeated google.protobuf.Duration in = 7;\n   */\n  in: Duration[];\n\n  /**\n   * `not_in` denotes that the field must not be equal to\n   * any of the specified values of the `google.protobuf.Duration` type.\n   * If the field's value matches any of these values, an error message will be\n   * generated.\n   *\n   * ```proto\n   * message MyDuration {\n   *   // value must not be in list [1s, 2s, 3s]\n   *   google.protobuf.Duration value = 1 [(buf.validate.field).duration = {\n   *     not_in: [{ seconds: 1 }, { seconds: 2 }, { seconds: 3 }]\n   *   }];\n   * }\n   * ```\n   *\n   * @generated from field: repeated google.protobuf.Duration not_in = 8;\n   */\n  notIn: Duration[];\n\n  /**\n   * `example` specifies values that the field may have. These values SHOULD\n   * conform to other rules. `example` values will not impact validation\n   * but may be used as helpful guidance on how to populate the given field.\n   *\n   * ```proto\n   * message MyDuration {\n   *   google.protobuf.Duration value = 1 [\n   *     (buf.validate.field).duration.example = { seconds: 1 },\n   *     (buf.validate.field).duration.example = { seconds: 2 }\n   *   ];\n   * }\n   * ```\n   *\n   * @generated from field: repeated google.protobuf.Duration example = 9;\n   */\n  example: Duration[];\n};\n\n/**\n * Describes the message buf.validate.DurationRules.\n * Use `create(DurationRulesSchema)` to create a new message.\n */\nexport const DurationRulesSchema: GenMessage<DurationRules> = /*@__PURE__*/\n  messageDesc(file_buf_validate_validate, 25);\n\n/**\n * FieldMaskRules describe rules applied exclusively to the `google.protobuf.FieldMask` well-known type.\n *\n * @generated from message buf.validate.FieldMaskRules\n */\nexport type FieldMaskRules = Message<\"buf.validate.FieldMaskRules\"> & {\n  /**\n   * `const` dictates that the field must match the specified value of the `google.protobuf.FieldMask` type exactly.\n   * If the field's value deviates from the specified value, an error message\n   * will be generated.\n   *\n   * ```proto\n   * message MyFieldMask {\n   *   // value must equal [\"a\"]\n   *   google.protobuf.FieldMask value = 1 [(buf.validate.field).field_mask.const = {\n   *       paths: [\"a\"]\n   *   }];\n   * }\n   * ```\n   *\n   * @generated from field: optional google.protobuf.FieldMask const = 1;\n   */\n  const?: FieldMask | undefined;\n\n  /**\n   * `in` requires the field value to only contain paths matching specified\n   * values or their subpaths.\n   * If any of the field value's paths doesn't match the rule,\n   * an error message is generated.\n   * See: https://protobuf.dev/reference/protobuf/google.protobuf/#field-mask\n   *\n   * ```proto\n   * message MyFieldMask {\n   *   //  The `value` FieldMask must only contain paths listed in `in`.\n   *   google.protobuf.FieldMask value = 1 [(buf.validate.field).field_mask = {\n   *       in: [\"a\", \"b\", \"c.a\"]\n   *   }];\n   * }\n   * ```\n   *\n   * @generated from field: repeated string in = 2;\n   */\n  in: string[];\n\n  /**\n   * `not_in` requires the field value to not contain paths matching specified\n   * values or their subpaths.\n   * If any of the field value's paths matches the rule,\n   * an error message is generated.\n   * See: https://protobuf.dev/reference/protobuf/google.protobuf/#field-mask\n   *\n   * ```proto\n   * message MyFieldMask {\n   *   //  The `value` FieldMask shall not contain paths listed in `not_in`.\n   *   google.protobuf.FieldMask value = 1 [(buf.validate.field).field_mask = {\n   *       not_in: [\"forbidden\", \"immutable\", \"c.a\"]\n   *   }];\n   * }\n   * ```\n   *\n   * @generated from field: repeated string not_in = 3;\n   */\n  notIn: string[];\n\n  /**\n   * `example` specifies values that the field may have. These values SHOULD\n   * conform to other rules. `example` values will not impact validation\n   * but may be used as helpful guidance on how to populate the given field.\n   *\n   * ```proto\n   * message MyFieldMask {\n   *   google.protobuf.FieldMask value = 1 [\n   *     (buf.validate.field).field_mask.example = { paths: [\"a\", \"b\"] },\n   *     (buf.validate.field).field_mask.example = { paths: [\"c.a\", \"d\"] }\n   *   ];\n   * }\n   * ```\n   *\n   * @generated from field: repeated google.protobuf.FieldMask example = 4;\n   */\n  example: FieldMask[];\n};\n\n/**\n * Describes the message buf.validate.FieldMaskRules.\n * Use `create(FieldMaskRulesSchema)` to create a new message.\n */\nexport const FieldMaskRulesSchema: GenMessage<FieldMaskRules> = /*@__PURE__*/\n  messageDesc(file_buf_validate_validate, 26);\n\n/**\n * TimestampRules describe the rules applied exclusively to the `google.protobuf.Timestamp` well-known type.\n *\n * @generated from message buf.validate.TimestampRules\n */\nexport type TimestampRules = Message<\"buf.validate.TimestampRules\"> & {\n  /**\n   * `const` dictates that this field, of the `google.protobuf.Timestamp` type, must exactly match the specified value. If the field value doesn't correspond to the specified timestamp, an error message will be generated.\n   *\n   * ```proto\n   * message MyTimestamp {\n   *   // value must equal 2023-05-03T10:00:00Z\n   *   google.protobuf.Timestamp created_at = 1 [(buf.validate.field).timestamp.const = {seconds: 1727998800}];\n   * }\n   * ```\n   *\n   * @generated from field: optional google.protobuf.Timestamp const = 2;\n   */\n  const?: Timestamp | undefined;\n\n  /**\n   * @generated from oneof buf.validate.TimestampRules.less_than\n   */\n  lessThan: {\n    /**\n     * `lt` requires the timestamp field value to be less than the specified value (field < value). If the field value doesn't meet the required conditions, an error message is generated.\n     *\n     * ```proto\n     * message MyTimestamp {\n     *   // timestamp must be less than '2023-01-01T00:00:00Z' [timestamp.lt]\n     *   google.protobuf.Timestamp value = 1 [(buf.validate.field).timestamp.lt = { seconds: 1672444800 }];\n     * }\n     * ```\n     *\n     * @generated from field: google.protobuf.Timestamp lt = 3;\n     */\n    value: Timestamp;\n    case: \"lt\";\n  } | {\n    /**\n     * `lte` requires the timestamp field value to be less than or equal to the specified value (field <= value). If the field value doesn't meet the required conditions, an error message is generated.\n     *\n     * ```proto\n     * message MyTimestamp {\n     *   // timestamp must be less than or equal to '2023-05-14T00:00:00Z' [timestamp.lte]\n     *   google.protobuf.Timestamp value = 1 [(buf.validate.field).timestamp.lte = { seconds: 1678867200 }];\n     * }\n     * ```\n     *\n     * @generated from field: google.protobuf.Timestamp lte = 4;\n     */\n    value: Timestamp;\n    case: \"lte\";\n  } | {\n    /**\n     * `lt_now` specifies that this field, of the `google.protobuf.Timestamp` type, must be less than the current time. `lt_now` can only be used with the `within` rule.\n     *\n     * ```proto\n     * message MyTimestamp {\n     *  // must be less than now\n     *   google.protobuf.Timestamp created_at = 1 [(buf.validate.field).timestamp.lt_now = true];\n     * }\n     * ```\n     *\n     * @generated from field: bool lt_now = 7;\n     */\n    value: boolean;\n    case: \"ltNow\";\n  } | { case: undefined; value?: undefined };\n\n  /**\n   * @generated from oneof buf.validate.TimestampRules.greater_than\n   */\n  greaterThan: {\n    /**\n     * `gt` requires the timestamp field value to be greater than the specified\n     * value (exclusive). If the value of `gt` is larger than a specified `lt`\n     * or `lte`, the range is reversed, and the field value must be outside the\n     * specified range. If the field value doesn't meet the required conditions,\n     * an error message is generated.\n     *\n     * ```proto\n     * message MyTimestamp {\n     *   // timestamp must be greater than '2023-01-01T00:00:00Z' [timestamp.gt]\n     *   google.protobuf.Timestamp value = 1 [(buf.validate.field).timestamp.gt = { seconds: 1672444800 }];\n     *\n     *   // timestamp must be greater than '2023-01-01T00:00:00Z' and less than '2023-01-02T00:00:00Z' [timestamp.gt_lt]\n     *   google.protobuf.Timestamp another_value = 2 [(buf.validate.field).timestamp = { gt: { seconds: 1672444800 }, lt: { seconds: 1672531200 } }];\n     *\n     *   // timestamp must be greater than '2023-01-02T00:00:00Z' or less than '2023-01-01T00:00:00Z' [timestamp.gt_lt_exclusive]\n     *   google.protobuf.Timestamp other_value = 3 [(buf.validate.field).timestamp = { gt: { seconds: 1672531200 }, lt: { seconds: 1672444800 } }];\n     * }\n     * ```\n     *\n     * @generated from field: google.protobuf.Timestamp gt = 5;\n     */\n    value: Timestamp;\n    case: \"gt\";\n  } | {\n    /**\n     * `gte` requires the timestamp field value to be greater than or equal to the\n     * specified value (exclusive). If the value of `gte` is larger than a\n     * specified `lt` or `lte`, the range is reversed, and the field value\n     * must be outside the specified range. If the field value doesn't meet\n     * the required conditions, an error message is generated.\n     *\n     * ```proto\n     * message MyTimestamp {\n     *   // timestamp must be greater than or equal to '2023-01-01T00:00:00Z' [timestamp.gte]\n     *   google.protobuf.Timestamp value = 1 [(buf.validate.field).timestamp.gte = { seconds: 1672444800 }];\n     *\n     *   // timestamp must be greater than or equal to '2023-01-01T00:00:00Z' and less than '2023-01-02T00:00:00Z' [timestamp.gte_lt]\n     *   google.protobuf.Timestamp another_value = 2 [(buf.validate.field).timestamp = { gte: { seconds: 1672444800 }, lt: { seconds: 1672531200 } }];\n     *\n     *   // timestamp must be greater than or equal to '2023-01-02T00:00:00Z' or less than '2023-01-01T00:00:00Z' [timestamp.gte_lt_exclusive]\n     *   google.protobuf.Timestamp other_value = 3 [(buf.validate.field).timestamp = { gte: { seconds: 1672531200 }, lt: { seconds: 1672444800 } }];\n     * }\n     * ```\n     *\n     * @generated from field: google.protobuf.Timestamp gte = 6;\n     */\n    value: Timestamp;\n    case: \"gte\";\n  } | {\n    /**\n     * `gt_now` specifies that this field, of the `google.protobuf.Timestamp` type, must be greater than the current time. `gt_now` can only be used with the `within` rule.\n     *\n     * ```proto\n     * message MyTimestamp {\n     *   // must be greater than now\n     *   google.protobuf.Timestamp created_at = 1 [(buf.validate.field).timestamp.gt_now = true];\n     * }\n     * ```\n     *\n     * @generated from field: bool gt_now = 8;\n     */\n    value: boolean;\n    case: \"gtNow\";\n  } | { case: undefined; value?: undefined };\n\n  /**\n   * `within` specifies that this field, of the `google.protobuf.Timestamp` type, must be within the specified duration of the current time. If the field value isn't within the duration, an error message is generated.\n   *\n   * ```proto\n   * message MyTimestamp {\n   *   // must be within 1 hour of now\n   *   google.protobuf.Timestamp created_at = 1 [(buf.validate.field).timestamp.within = {seconds: 3600}];\n   * }\n   * ```\n   *\n   * @generated from field: optional google.protobuf.Duration within = 9;\n   */\n  within?: Duration | undefined;\n\n  /**\n   * `example` specifies values that the field may have. These values SHOULD\n   * conform to other rules. `example` values will not impact validation\n   * but may be used as helpful guidance on how to populate the given field.\n   *\n   * ```proto\n   * message MyTimestamp {\n   *   google.protobuf.Timestamp value = 1 [\n   *     (buf.validate.field).timestamp.example = { seconds: 1672444800 },\n   *     (buf.validate.field).timestamp.example = { seconds: 1672531200 }\n   *   ];\n   * }\n   * ```\n   *\n   * @generated from field: repeated google.protobuf.Timestamp example = 10;\n   */\n  example: Timestamp[];\n};\n\n/**\n * Describes the message buf.validate.TimestampRules.\n * Use `create(TimestampRulesSchema)` to create a new message.\n */\nexport const TimestampRulesSchema: GenMessage<TimestampRules> = /*@__PURE__*/\n  messageDesc(file_buf_validate_validate, 27);\n\n/**\n * `Violations` is a collection of `Violation` messages. This message type is returned by\n * Protovalidate when a proto message fails to meet the requirements set by the `Rule` validation rules.\n * Each individual violation is represented by a `Violation` message.\n *\n * @generated from message buf.validate.Violations\n */\nexport type Violations = Message<\"buf.validate.Violations\"> & {\n  /**\n   * `violations` is a repeated field that contains all the `Violation` messages corresponding to the violations detected.\n   *\n   * @generated from field: repeated buf.validate.Violation violations = 1;\n   */\n  violations: Violation[];\n};\n\n/**\n * Describes the message buf.validate.Violations.\n * Use `create(ViolationsSchema)` to create a new message.\n */\nexport const ViolationsSchema: GenMessage<Violations> = /*@__PURE__*/\n  messageDesc(file_buf_validate_validate, 28);\n\n/**\n * `Violation` represents a single instance where a validation rule, expressed\n * as a `Rule`, was not met. It provides information about the field that\n * caused the violation, the specific rule that wasn't fulfilled, and a\n * human-readable error message.\n *\n * For example, consider the following message:\n *\n * ```proto\n * message User {\n *     int32 age = 1 [(buf.validate.field).cel = {\n *         id: \"user.age\",\n *         expression: \"this < 18 ? 'User must be at least 18 years old' : ''\",\n *     }];\n * }\n * ```\n *\n * It could produce the following violation:\n *\n * ```json\n * {\n *   \"ruleId\": \"user.age\",\n *   \"message\": \"User must be at least 18 years old\",\n *   \"field\": {\n *     \"elements\": [\n *       {\n *         \"fieldNumber\": 1,\n *         \"fieldName\": \"age\",\n *         \"fieldType\": \"TYPE_INT32\"\n *       }\n *     ]\n *   },\n *   \"rule\": {\n *     \"elements\": [\n *       {\n *         \"fieldNumber\": 23,\n *         \"fieldName\": \"cel\",\n *         \"fieldType\": \"TYPE_MESSAGE\",\n *         \"index\": \"0\"\n *       }\n *     ]\n *   }\n * }\n * ```\n *\n * @generated from message buf.validate.Violation\n */\nexport type Violation = Message<\"buf.validate.Violation\"> & {\n  /**\n   * `field` is a machine-readable path to the field that failed validation.\n   * This could be a nested field, in which case the path will include all the parent fields leading to the actual field that caused the violation.\n   *\n   * For example, consider the following message:\n   *\n   * ```proto\n   * message Message {\n   *   bool a = 1 [(buf.validate.field).required = true];\n   * }\n   * ```\n   *\n   * It could produce the following violation:\n   *\n   * ```textproto\n   * violation {\n   *   field { element { field_number: 1, field_name: \"a\", field_type: 8 } }\n   *   ...\n   * }\n   * ```\n   *\n   * @generated from field: optional buf.validate.FieldPath field = 5;\n   */\n  field?: FieldPath | undefined;\n\n  /**\n   * `rule` is a machine-readable path that points to the specific rule that failed validation.\n   * This will be a nested field starting from the FieldRules of the field that failed validation.\n   * For custom rules, this will provide the path of the rule, e.g. `cel[0]`.\n   *\n   * For example, consider the following message:\n   *\n   * ```proto\n   * message Message {\n   *   bool a = 1 [(buf.validate.field).required = true];\n   *   bool b = 2 [(buf.validate.field).cel = {\n   *     id: \"custom_rule\",\n   *     expression: \"!this ? 'b must be true': ''\"\n   *   }];\n   * }\n   * ```\n   *\n   * It could produce the following violations:\n   *\n   * ```textproto\n   * violation {\n   *   rule { element { field_number: 25, field_name: \"required\", field_type: 8 } }\n   *   ...\n   * }\n   * violation {\n   *   rule { element { field_number: 23, field_name: \"cel\", field_type: 11, index: 0 } }\n   *   ...\n   * }\n   * ```\n   *\n   * @generated from field: optional buf.validate.FieldPath rule = 6;\n   */\n  rule?: FieldPath | undefined;\n\n  /**\n   * `rule_id` is the unique identifier of the `Rule` that was not fulfilled.\n   * This is the same `id` that was specified in the `Rule` message, allowing easy tracing of which rule was violated.\n   *\n   * @generated from field: optional string rule_id = 2;\n   */\n  ruleId: string;\n\n  /**\n   * `message` is a human-readable error message that describes the nature of the violation.\n   * This can be the default error message from the violated `Rule`, or it can be a custom message that gives more context about the violation.\n   *\n   * @generated from field: optional string message = 3;\n   */\n  message: string;\n\n  /**\n   * `for_key` indicates whether the violation was caused by a map key, rather than a value.\n   *\n   * @generated from field: optional bool for_key = 4;\n   */\n  forKey: boolean;\n};\n\n/**\n * Describes the message buf.validate.Violation.\n * Use `create(ViolationSchema)` to create a new message.\n */\nexport const ViolationSchema: GenMessage<Violation> = /*@__PURE__*/\n  messageDesc(file_buf_validate_validate, 29);\n\n/**\n * `FieldPath` provides a path to a nested protobuf field.\n *\n * This message provides enough information to render a dotted field path even without protobuf descriptors.\n * It also provides enough information to resolve a nested field through unknown wire data.\n *\n * @generated from message buf.validate.FieldPath\n */\nexport type FieldPath = Message<\"buf.validate.FieldPath\"> & {\n  /**\n   * `elements` contains each element of the path, starting from the root and recursing downward.\n   *\n   * @generated from field: repeated buf.validate.FieldPathElement elements = 1;\n   */\n  elements: FieldPathElement[];\n};\n\n/**\n * Describes the message buf.validate.FieldPath.\n * Use `create(FieldPathSchema)` to create a new message.\n */\nexport const FieldPathSchema: GenMessage<FieldPath> = /*@__PURE__*/\n  messageDesc(file_buf_validate_validate, 30);\n\n/**\n * `FieldPathElement` provides enough information to nest through a single protobuf field.\n *\n * If the selected field is a map or repeated field, the `subscript` value selects a specific element from it.\n * A path that refers to a value nested under a map key or repeated field index will have a `subscript` value.\n * The `field_type` field allows unambiguous resolution of a field even if descriptors are not available.\n *\n * @generated from message buf.validate.FieldPathElement\n */\nexport type FieldPathElement = Message<\"buf.validate.FieldPathElement\"> & {\n  /**\n   * `field_number` is the field number this path element refers to.\n   *\n   * @generated from field: optional int32 field_number = 1;\n   */\n  fieldNumber: number;\n\n  /**\n   * `field_name` contains the field name this path element refers to.\n   * This can be used to display a human-readable path even if the field number is unknown.\n   *\n   * @generated from field: optional string field_name = 2;\n   */\n  fieldName: string;\n\n  /**\n   * `field_type` specifies the type of this field. When using reflection, this value is not needed.\n   *\n   * This value is provided to make it possible to traverse unknown fields through wire data.\n   * When traversing wire data, be mindful of both packed[1] and delimited[2] encoding schemes.\n   *\n   * [1]: https://protobuf.dev/programming-guides/encoding/#packed\n   * [2]: https://protobuf.dev/programming-guides/encoding/#groups\n   *\n   * N.B.: Although groups are deprecated, the corresponding delimited encoding scheme is not, and\n   * can be explicitly used in Protocol Buffers 2023 Edition.\n   *\n   * @generated from field: optional google.protobuf.FieldDescriptorProto.Type field_type = 3;\n   */\n  fieldType: FieldDescriptorProto_Type;\n\n  /**\n   * `key_type` specifies the map key type of this field. This value is useful when traversing\n   * unknown fields through wire data: specifically, it allows handling the differences between\n   * different integer encodings.\n   *\n   * @generated from field: optional google.protobuf.FieldDescriptorProto.Type key_type = 4;\n   */\n  keyType: FieldDescriptorProto_Type;\n\n  /**\n   * `value_type` specifies map value type of this field. This is useful if you want to display a\n   * value inside unknown fields through wire data.\n   *\n   * @generated from field: optional google.protobuf.FieldDescriptorProto.Type value_type = 5;\n   */\n  valueType: FieldDescriptorProto_Type;\n\n  /**\n   * `subscript` contains a repeated index or map key, if this path element nests into a repeated or map field.\n   *\n   * @generated from oneof buf.validate.FieldPathElement.subscript\n   */\n  subscript: {\n    /**\n     * `index` specifies a 0-based index into a repeated field.\n     *\n     * @generated from field: uint64 index = 6;\n     */\n    value: bigint;\n    case: \"index\";\n  } | {\n    /**\n     * `bool_key` specifies a map key of type bool.\n     *\n     * @generated from field: bool bool_key = 7;\n     */\n    value: boolean;\n    case: \"boolKey\";\n  } | {\n    /**\n     * `int_key` specifies a map key of type int32, int64, sint32, sint64, sfixed32 or sfixed64.\n     *\n     * @generated from field: int64 int_key = 8;\n     */\n    value: bigint;\n    case: \"intKey\";\n  } | {\n    /**\n     * `uint_key` specifies a map key of type uint32, uint64, fixed32 or fixed64.\n     *\n     * @generated from field: uint64 uint_key = 9;\n     */\n    value: bigint;\n    case: \"uintKey\";\n  } | {\n    /**\n     * `string_key` specifies a map key of type string.\n     *\n     * @generated from field: string string_key = 10;\n     */\n    value: string;\n    case: \"stringKey\";\n  } | { case: undefined; value?: undefined };\n};\n\n/**\n * Describes the message buf.validate.FieldPathElement.\n * Use `create(FieldPathElementSchema)` to create a new message.\n */\nexport const FieldPathElementSchema: GenMessage<FieldPathElement> = /*@__PURE__*/\n  messageDesc(file_buf_validate_validate, 31);\n\n/**\n * Specifies how `FieldRules.ignore` behaves, depending on the field's value, and\n * whether the field tracks presence.\n *\n * @generated from enum buf.validate.Ignore\n */\nexport enum Ignore {\n  /**\n   * Ignore rules if the field tracks presence and is unset. This is the default\n   * behavior.\n   *\n   * In proto3, only message fields, members of a Protobuf `oneof`, and fields\n   * with the `optional` label track presence. Consequently, the following fields\n   * are always validated, whether a value is set or not:\n   *\n   * ```proto\n   * syntax=\"proto3\";\n   *\n   * message RulesApply {\n   *   string email = 1 [\n   *     (buf.validate.field).string.email = true\n   *   ];\n   *   int32 age = 2 [\n   *     (buf.validate.field).int32.gt = 0\n   *   ];\n   *   repeated string labels = 3 [\n   *     (buf.validate.field).repeated.min_items = 1\n   *   ];\n   * }\n   * ```\n   *\n   * In contrast, the following fields track presence, and are only validated if\n   * a value is set:\n   *\n   * ```proto\n   * syntax=\"proto3\";\n   *\n   * message RulesApplyIfSet {\n   *   optional string email = 1 [\n   *     (buf.validate.field).string.email = true\n   *   ];\n   *   oneof ref {\n   *     string reference = 2 [\n   *       (buf.validate.field).string.uuid = true\n   *     ];\n   *     string name = 3 [\n   *       (buf.validate.field).string.min_len = 4\n   *     ];\n   *   }\n   *   SomeMessage msg = 4 [\n   *     (buf.validate.field).cel = {/* ... *\\/}\n   *   ];\n   * }\n   * ```\n   *\n   * To ensure that such a field is set, add the `required` rule.\n   *\n   * To learn which fields track presence, see the\n   * [Field Presence cheat sheet](https://protobuf.dev/programming-guides/field_presence/#cheat).\n   *\n   * @generated from enum value: IGNORE_UNSPECIFIED = 0;\n   */\n  UNSPECIFIED = 0,\n\n  /**\n   * Ignore rules if the field is unset, or set to the zero value.\n   *\n   * The zero value depends on the field type:\n   * - For strings, the zero value is the empty string.\n   * - For bytes, the zero value is empty bytes.\n   * - For bool, the zero value is false.\n   * - For numeric types, the zero value is zero.\n   * - For enums, the zero value is the first defined enum value.\n   * - For repeated fields, the zero is an empty list.\n   * - For map fields, the zero is an empty map.\n   * - For message fields, absence of the message (typically a null-value) is considered zero value.\n   *\n   * For fields that track presence (e.g. adding the `optional` label in proto3),\n   * this a no-op and behavior is the same as the default `IGNORE_UNSPECIFIED`.\n   *\n   * @generated from enum value: IGNORE_IF_ZERO_VALUE = 1;\n   */\n  IF_ZERO_VALUE = 1,\n\n  /**\n   * Always ignore rules, including the `required` rule.\n   *\n   * This is useful for ignoring the rules of a referenced message, or to\n   * temporarily ignore rules during development.\n   *\n   * ```proto\n   * message MyMessage {\n   *   // The field's rules will always be ignored, including any validations\n   *   // on value's fields.\n   *   MyOtherMessage value = 1 [\n   *     (buf.validate.field).ignore = IGNORE_ALWAYS\n   *   ];\n   * }\n   * ```\n   *\n   * @generated from enum value: IGNORE_ALWAYS = 3;\n   */\n  ALWAYS = 3,\n}\n\n/**\n * Describes the enum buf.validate.Ignore.\n */\nexport const IgnoreSchema: GenEnum<Ignore> = /*@__PURE__*/\n  enumDesc(file_buf_validate_validate, 0);\n\n/**\n * KnownRegex contains some well-known patterns.\n *\n * @generated from enum buf.validate.KnownRegex\n */\nexport enum KnownRegex {\n  /**\n   * @generated from enum value: KNOWN_REGEX_UNSPECIFIED = 0;\n   */\n  UNSPECIFIED = 0,\n\n  /**\n   * HTTP header name as defined by [RFC 7230](https://datatracker.ietf.org/doc/html/rfc7230#section-3.2).\n   *\n   * @generated from enum value: KNOWN_REGEX_HTTP_HEADER_NAME = 1;\n   */\n  HTTP_HEADER_NAME = 1,\n\n  /**\n   * HTTP header value as defined by [RFC 7230](https://datatracker.ietf.org/doc/html/rfc7230#section-3.2.4).\n   *\n   * @generated from enum value: KNOWN_REGEX_HTTP_HEADER_VALUE = 2;\n   */\n  HTTP_HEADER_VALUE = 2,\n}\n\n/**\n * Describes the enum buf.validate.KnownRegex.\n */\nexport const KnownRegexSchema: GenEnum<KnownRegex> = /*@__PURE__*/\n  enumDesc(file_buf_validate_validate, 1);\n\n/**\n * Rules specify the validations to be performed on this message. By default,\n * no validation is performed against a message.\n *\n * @generated from extension: optional buf.validate.MessageRules message = 1159;\n */\nexport const message: GenExtension<MessageOptions, MessageRules> = /*@__PURE__*/\n  extDesc(file_buf_validate_validate, 0);\n\n/**\n * Rules specify the validations to be performed on this oneof. By default,\n * no validation is performed against a oneof.\n *\n * @generated from extension: optional buf.validate.OneofRules oneof = 1159;\n */\nexport const oneof: GenExtension<OneofOptions, OneofRules> = /*@__PURE__*/\n  extDesc(file_buf_validate_validate, 1);\n\n/**\n * Rules specify the validations to be performed on this field. By default,\n * no validation is performed against a field.\n *\n * @generated from extension: optional buf.validate.FieldRules field = 1159;\n */\nexport const field: GenExtension<FieldOptions, FieldRules> = /*@__PURE__*/\n  extDesc(file_buf_validate_validate, 2);\n\n/**\n * Specifies predefined rules. When extending a standard rule message,\n * this adds additional CEL expressions that apply when the extension is used.\n *\n * ```proto\n * extend buf.validate.Int32Rules {\n *   bool is_zero = 1001 [(buf.validate.predefined).cel = {\n *     id: \"int32.is_zero\",\n *     message: \"must be zero\",\n *     expression: \"!rule || this == 0\",\n *   }];\n * }\n *\n * message Foo {\n *   int32 reserved = 1 [(buf.validate.field).int32.(is_zero) = true];\n * }\n * ```\n *\n * @generated from extension: optional buf.validate.PredefinedRules predefined = 1160;\n */\nexport const predefined: GenExtension<FieldOptions, PredefinedRules> = /*@__PURE__*/\n  extDesc(file_buf_validate_validate, 3);\n\n","// Copyright 2026 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// @generated by protoc-gen-es v2.12.0 with parameter \"target=ts\"\n// @generated from file google/api/field_behavior.proto (package google.api, syntax proto3)\n/* eslint-disable */\n\nimport type { GenEnum, GenExtension, GenFile } from \"@bufbuild/protobuf/codegenv2\";\nimport { enumDesc, extDesc, fileDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport type { FieldOptions } from \"@bufbuild/protobuf/wkt\";\nimport { file_google_protobuf_descriptor } from \"@bufbuild/protobuf/wkt\";\n\n/**\n * Describes the file google/api/field_behavior.proto.\n */\nexport const file_google_api_field_behavior: GenFile = /*@__PURE__*/\n  fileDesc(\"Ch9nb29nbGUvYXBpL2ZpZWxkX2JlaGF2aW9yLnByb3RvEgpnb29nbGUuYXBpKrYBCg1GaWVsZEJlaGF2aW9yEh4KGkZJRUxEX0JFSEFWSU9SX1VOU1BFQ0lGSUVEEAASDAoIT1BUSU9OQUwQARIMCghSRVFVSVJFRBACEg8KC09VVFBVVF9PTkxZEAMSDgoKSU5QVVRfT05MWRAEEg0KCUlNTVVUQUJMRRAFEhIKDlVOT1JERVJFRF9MSVNUEAYSFQoRTk9OX0VNUFRZX0RFRkFVTFQQBxIOCgpJREVOVElGSUVSEAg6ZAoOZmllbGRfYmVoYXZpb3ISHS5nb29nbGUucHJvdG9idWYuRmllbGRPcHRpb25zGJwIIAMoDjIZLmdvb2dsZS5hcGkuRmllbGRCZWhhdmlvckICEABSDWZpZWxkQmVoYXZpb3JCsAEKDmNvbS5nb29nbGUuYXBpQhJGaWVsZEJlaGF2aW9yUHJvdG9QAVpBZ29vZ2xlLmdvbGFuZy5vcmcvZ2VucHJvdG8vZ29vZ2xlYXBpcy9hcGkvYW5ub3RhdGlvbnM7YW5ub3RhdGlvbnOiAgNHQViqAgpHb29nbGUuQXBpygIKR29vZ2xlXEFwaeICFkdvb2dsZVxBcGlcR1BCTWV0YWRhdGHqAgtHb29nbGU6OkFwaWIGcHJvdG8z\", [file_google_protobuf_descriptor]);\n\n/**\n * An indicator of the behavior of a given field (for example, that a field\n * is required in requests, or given as output but ignored as input).\n * This **does not** change the behavior in protocol buffers itself; it only\n * denotes the behavior and may affect how API tooling handles the field.\n *\n * Note: This enum **may** receive new values in the future.\n *\n * @generated from enum google.api.FieldBehavior\n */\nexport enum FieldBehavior {\n  /**\n   * Conventional default for enums. Do not use this.\n   *\n   * @generated from enum value: FIELD_BEHAVIOR_UNSPECIFIED = 0;\n   */\n  FIELD_BEHAVIOR_UNSPECIFIED = 0,\n\n  /**\n   * Specifically denotes a field as optional.\n   * While all fields in protocol buffers are optional, this may be specified\n   * for emphasis if appropriate.\n   *\n   * @generated from enum value: OPTIONAL = 1;\n   */\n  OPTIONAL = 1,\n\n  /**\n   * Denotes a field as required.\n   * This indicates that the field **must** be provided as part of the request,\n   * and failure to do so will cause an error (usually `INVALID_ARGUMENT`).\n   *\n   * @generated from enum value: REQUIRED = 2;\n   */\n  REQUIRED = 2,\n\n  /**\n   * Denotes a field as output only.\n   * This indicates that the field is provided in responses, but including the\n   * field in a request does nothing (the server *must* ignore it and\n   * *must not* throw an error as a result of the field's presence).\n   *\n   * @generated from enum value: OUTPUT_ONLY = 3;\n   */\n  OUTPUT_ONLY = 3,\n\n  /**\n   * Denotes a field as input only.\n   * This indicates that the field is provided in requests, and the\n   * corresponding field is not included in output.\n   *\n   * @generated from enum value: INPUT_ONLY = 4;\n   */\n  INPUT_ONLY = 4,\n\n  /**\n   * Denotes a field as immutable.\n   * This indicates that the field may be set once in a request to create a\n   * resource, but may not be changed thereafter.\n   *\n   * @generated from enum value: IMMUTABLE = 5;\n   */\n  IMMUTABLE = 5,\n\n  /**\n   * Denotes that a (repeated) field is an unordered list.\n   * This indicates that the service may provide the elements of the list\n   * in any arbitrary  order, rather than the order the user originally\n   * provided. Additionally, the list's order may or may not be stable.\n   *\n   * @generated from enum value: UNORDERED_LIST = 6;\n   */\n  UNORDERED_LIST = 6,\n\n  /**\n   * Denotes that this field returns a non-empty default value if not set.\n   * This indicates that if the user provides the empty value in a request,\n   * a non-empty value will be returned. The user will not be aware of what\n   * non-empty value to expect.\n   *\n   * @generated from enum value: NON_EMPTY_DEFAULT = 7;\n   */\n  NON_EMPTY_DEFAULT = 7,\n\n  /**\n   * Denotes that the field in a resource (a message annotated with\n   * google.api.resource) is used in the resource name to uniquely identify the\n   * resource. For AIP-compliant APIs, this should only be applied to the\n   * `name` field on the resource.\n   *\n   * This behavior should not be applied to references to other resources within\n   * the message.\n   *\n   * The identifier field of resources often have different field behavior\n   * depending on the request it is embedded in (e.g. for Create methods name\n   * is optional and unused, while for Update methods it is required). Instead\n   * of method-specific annotations, only `IDENTIFIER` is required.\n   *\n   * @generated from enum value: IDENTIFIER = 8;\n   */\n  IDENTIFIER = 8,\n}\n\n/**\n * Describes the enum google.api.FieldBehavior.\n */\nexport const FieldBehaviorSchema: GenEnum<FieldBehavior> = /*@__PURE__*/\n  enumDesc(file_google_api_field_behavior, 0);\n\n/**\n * A designation of a specific field behavior (required, output only, etc.)\n * in protobuf messages.\n *\n * Examples:\n *\n *   string name = 1 [(google.api.field_behavior) = REQUIRED];\n *   State state = 1 [(google.api.field_behavior) = OUTPUT_ONLY];\n *   google.protobuf.Duration ttl = 1\n *     [(google.api.field_behavior) = INPUT_ONLY];\n *   google.protobuf.Timestamp expire_time = 1\n *     [(google.api.field_behavior) = OUTPUT_ONLY,\n *      (google.api.field_behavior) = IMMUTABLE];\n *\n * @generated from extension: repeated google.api.FieldBehavior field_behavior = 1052 [packed = false];\n */\nexport const field_behavior: GenExtension<FieldOptions, FieldBehavior[]> = /*@__PURE__*/\n  extDesc(file_google_api_field_behavior, 0);\n\n","// @generated by protoc-gen-es v2.12.0 with parameter \"target=ts\"\n// @generated from file thru/common/v1/consensus.proto (package thru.common.v1, syntax proto3)\n/* eslint-disable */\n\nimport type { GenEnum, GenFile, GenMessage } from \"@bufbuild/protobuf/codegenv2\";\nimport { enumDesc, fileDesc, messageDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport { file_buf_validate_validate } from \"../../../buf/validate/validate_pb\";\nimport { file_google_api_field_behavior } from \"../../../google/api/field_behavior_pb\";\nimport type { Timestamp } from \"@bufbuild/protobuf/wkt\";\nimport { file_google_protobuf_timestamp } from \"@bufbuild/protobuf/wkt\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file thru/common/v1/consensus.proto.\n */\nexport const file_thru_common_v1_consensus: GenFile = /*@__PURE__*/\n  fileDesc(\"Ch50aHJ1L2NvbW1vbi92MS9jb25zZW5zdXMucHJvdG8SDnRocnUuY29tbW9uLnYxIooECg5WZXJzaW9uQ29udGV4dBI2CgdjdXJyZW50GAEgASgLMh4udGhydS5jb21tb24udjEuQ3VycmVudFZlcnNpb25CA+BBAUgAEk4KE2N1cnJlbnRPckhpc3RvcmljYWwYAiABKAsyKi50aHJ1LmNvbW1vbi52MS5DdXJyZW50T3JIaXN0b3JpY2FsVmVyc2lvbkID4EEBSAASEwoEc2xvdBgDIAEoBEID4EEBSAASNAoJdGltZXN0YW1wGAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEID4EEBSAASMAoIc2xvdF9zZXEYBSABKAsyFy50aHJ1LmNvbW1vbi52MS5TbG90U2VxQgPgQQFIADrnAbpI4wEa4AEKHHZlcnNpb25fY29udGV4dF9oYXNfc2VsZWN0b3ISTW9uZSBvZiBjdXJyZW50LCBjdXJyZW50T3JIaXN0b3JpY2FsLCBzbG90LCB0aW1lc3RhbXAsIG9yIHNsb3Rfc2VxIG11c3QgYmUgc2V0GnFoYXModGhpcy5jdXJyZW50KSB8fCBoYXModGhpcy5jdXJyZW50T3JIaXN0b3JpY2FsKSB8fCBoYXModGhpcy5zbG90KSB8fCBoYXModGhpcy50aW1lc3RhbXApIHx8IGhhcyh0aGlzLnNsb3Rfc2VxKUIJCgd2ZXJzaW9uIhAKDkN1cnJlbnRWZXJzaW9uIhwKGkN1cnJlbnRPckhpc3RvcmljYWxWZXJzaW9uIi4KB1Nsb3RTZXESEQoEc2xvdBgBIAEoBEID4EECEhAKA3NlcRgCIAEoBEID4EECKt8BCg9Db25zZW5zdXNTdGF0dXMSIAocQ09OU0VOU1VTX1NUQVRVU19VTlNQRUNJRklFRBAAEh0KGUNPTlNFTlNVU19TVEFUVVNfT0JTRVJWRUQQARIdChlDT05TRU5TVVNfU1RBVFVTX0lOQ0xVREVEEAISHgoaQ09OU0VOU1VTX1NUQVRVU19GSU5BTElaRUQQAxIlCiFDT05TRU5TVVNfU1RBVFVTX0xPQ0FMTFlfRVhFQ1VURUQQBBIlCiFDT05TRU5TVVNfU1RBVFVTX0NMVVNURVJfRVhFQ1VURUQQBULKAQoSY29tLnRocnUuY29tbW9uLnYxQg5Db25zZW5zdXNQcm90b1ABWkRnaXRodWIuY29tL1VudG8tTGFicy90aHJ1LW5ldC9ncnBjL3BrZy9wcm90by90aHJ1L2NvbW1vbi92MTtjb21tb252MaICA1RDWKoCDlRocnUuQ29tbW9uLlYxugIDVEhVygIOVGhydVxDb21tb25cVjHiAhpUaHJ1XENvbW1vblxWMVxHUEJNZXRhZGF0YeoCEFRocnU6OkNvbW1vbjo6VjFiBnByb3RvMw\", [file_buf_validate_validate, file_google_api_field_behavior, file_google_protobuf_timestamp]);\n\n/**\n * VersionContext selects which logical version of a resource should be\n * returned. At least one field must be set.\n *\n * @generated from message thru.common.v1.VersionContext\n */\nexport type VersionContext = Message<\"thru.common.v1.VersionContext\"> & {\n  /**\n   * Specifies the desired version semantics.\n   *\n   * @generated from oneof thru.common.v1.VersionContext.version\n   */\n  version: {\n    /**\n     * Request the latest version available at request time.\n     *\n     * @generated from field: thru.common.v1.CurrentVersion current = 1;\n     */\n    value: CurrentVersion;\n    case: \"current\";\n  } | {\n    /**\n     * Request the latest version, or historical on.\n     *\n     * @generated from field: thru.common.v1.CurrentOrHistoricalVersion currentOrHistorical = 2;\n     */\n    value: CurrentOrHistoricalVersion;\n    case: \"currentOrHistorical\";\n  } | {\n    /**\n     * Request the version for a specific slot number.\n     *\n     * @generated from field: uint64 slot = 3;\n     */\n    value: bigint;\n    case: \"slot\";\n  } | {\n    /**\n     * Request the version nearest to the provided block timestamp.\n     *\n     * @generated from field: google.protobuf.Timestamp timestamp = 4;\n     */\n    value: Timestamp;\n    case: \"timestamp\";\n  } | {\n    /**\n     * Request the account version written at an exact (slot, seq) point.\n     * Relevant only for GetAccount and GetRawAccount requests.\n     *\n     * @generated from field: thru.common.v1.SlotSeq slot_seq = 5;\n     */\n    value: SlotSeq;\n    case: \"slotSeq\";\n  } | { case: undefined; value?: undefined };\n};\n\n/**\n * Describes the message thru.common.v1.VersionContext.\n * Use `create(VersionContextSchema)` to create a new message.\n */\nexport const VersionContextSchema: GenMessage<VersionContext> = /*@__PURE__*/\n  messageDesc(file_thru_common_v1_consensus, 0);\n\n/**\n * CurrentVersion is an empty marker message for VersionContext.current.\n *\n * @generated from message thru.common.v1.CurrentVersion\n */\nexport type CurrentVersion = Message<\"thru.common.v1.CurrentVersion\"> & {\n};\n\n/**\n * Describes the message thru.common.v1.CurrentVersion.\n * Use `create(CurrentVersionSchema)` to create a new message.\n */\nexport const CurrentVersionSchema: GenMessage<CurrentVersion> = /*@__PURE__*/\n  messageDesc(file_thru_common_v1_consensus, 1);\n\n/**\n * CurrentOrHistoricalVersion is an empty marker message for VersionContext.current.\n *\n * @generated from message thru.common.v1.CurrentOrHistoricalVersion\n */\nexport type CurrentOrHistoricalVersion = Message<\"thru.common.v1.CurrentOrHistoricalVersion\"> & {\n};\n\n/**\n * Describes the message thru.common.v1.CurrentOrHistoricalVersion.\n * Use `create(CurrentOrHistoricalVersionSchema)` to create a new message.\n */\nexport const CurrentOrHistoricalVersionSchema: GenMessage<CurrentOrHistoricalVersion> = /*@__PURE__*/\n  messageDesc(file_thru_common_v1_consensus, 2);\n\n/**\n * SlotSeq identifies an exact account version: the row written in `slot`\n * carrying per-account sequence number `seq`.  A bare seq is not a version\n * key -- it restarts across account incarnations -- so it is only\n * meaningful scoped to a slot.\n *\n * @generated from message thru.common.v1.SlotSeq\n */\nexport type SlotSeq = Message<\"thru.common.v1.SlotSeq\"> & {\n  /**\n   * @generated from field: uint64 slot = 1;\n   */\n  slot: bigint;\n\n  /**\n   * @generated from field: uint64 seq = 2;\n   */\n  seq: bigint;\n};\n\n/**\n * Describes the message thru.common.v1.SlotSeq.\n * Use `create(SlotSeqSchema)` to create a new message.\n */\nexport const SlotSeqSchema: GenMessage<SlotSeq> = /*@__PURE__*/\n  messageDesc(file_thru_common_v1_consensus, 3);\n\n/**\n * ConsensusStatus represents the minimum consensus level a resource has\n * achieved when returned by the service.\n *\n * @generated from enum thru.common.v1.ConsensusStatus\n */\nexport enum ConsensusStatus {\n  /**\n   * CONSENSUS_STATUS_UNSPECIFIED indicates the consensus status is unknown.\n   *\n   * @generated from enum value: CONSENSUS_STATUS_UNSPECIFIED = 0;\n   */\n  UNSPECIFIED = 0,\n\n  /**\n   * CONSENSUS_STATUS_OBSERVED indicates the resource has been observed but\n   * not yet confirmed in a finalized block.\n   *\n   * @generated from enum value: CONSENSUS_STATUS_OBSERVED = 1;\n   */\n  OBSERVED = 1,\n\n  /**\n   * CONSENSUS_STATUS_INCLUDED indicates the resource has been included in the\n   * ledger but may not be finalized.\n   *\n   * @generated from enum value: CONSENSUS_STATUS_INCLUDED = 2;\n   */\n  INCLUDED = 2,\n\n  /**\n   * CONSENSUS_STATUS_FINALIZED indicates the resource is finalized for a slot.\n   *\n   * @generated from enum value: CONSENSUS_STATUS_FINALIZED = 3;\n   */\n  FINALIZED = 3,\n\n  /**\n   * CONSENSUS_STATUS_LOCALLY_EXECUTED indicates the local node executed the\n   * resource but broader cluster finality may not have been achieved.\n   *\n   * @generated from enum value: CONSENSUS_STATUS_LOCALLY_EXECUTED = 4;\n   */\n  LOCALLY_EXECUTED = 4,\n\n  /**\n   * CONSENSUS_STATUS_CLUSTER_EXECUTED indicates the entire cluster has\n   * executed and agreed on the resource.\n   *\n   * @generated from enum value: CONSENSUS_STATUS_CLUSTER_EXECUTED = 5;\n   */\n  CLUSTER_EXECUTED = 5,\n}\n\n/**\n * Describes the enum thru.common.v1.ConsensusStatus.\n */\nexport const ConsensusStatusSchema: GenEnum<ConsensusStatus> = /*@__PURE__*/\n  enumDesc(file_thru_common_v1_consensus, 0);\n\n","// @generated by protoc-gen-es v2.12.0 with parameter \"target=ts\"\n// @generated from file thru/common/v1/primitives.proto (package thru.common.v1, syntax proto3)\n/* eslint-disable */\n\nimport type { GenFile, GenMessage } from \"@bufbuild/protobuf/codegenv2\";\nimport { fileDesc, messageDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport { file_buf_validate_validate } from \"../../../buf/validate/validate_pb\";\nimport { file_google_api_field_behavior } from \"../../../google/api/field_behavior_pb\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file thru/common/v1/primitives.proto.\n */\nexport const file_thru_common_v1_primitives: GenFile = /*@__PURE__*/\n  fileDesc(\"Ch90aHJ1L2NvbW1vbi92MS9wcmltaXRpdmVzLnByb3RvEg50aHJ1LmNvbW1vbi52MSIjCgZQdWJrZXkSGQoFdmFsdWUYASABKAxCCuBBArpIBHoCaCAiJgoJU2lnbmF0dXJlEhkKBXZhbHVlGAEgASgMQgrgQQK6SAR6AmhAIiYKCFRhUHVia2V5EhoKBXZhbHVlGAEgASgJQgvgQQK6SAVyA5gBLiIpCgtUc1NpZ25hdHVyZRIaCgV2YWx1ZRgBIAEoCUIL4EECukgFcgOYAVpCywEKEmNvbS50aHJ1LmNvbW1vbi52MUIPUHJpbWl0aXZlc1Byb3RvUAFaRGdpdGh1Yi5jb20vVW50by1MYWJzL3RocnUtbmV0L2dycGMvcGtnL3Byb3RvL3RocnUvY29tbW9uL3YxO2NvbW1vbnYxogIDVENYqgIOVGhydS5Db21tb24uVjG6AgNUSFXKAg5UaHJ1XENvbW1vblxWMeICGlRocnVcQ29tbW9uXFYxXEdQQk1ldGFkYXRh6gIQVGhydTo6Q29tbW9uOjpWMWIGcHJvdG8z\", [file_buf_validate_validate, file_google_api_field_behavior]);\n\n/**\n * Pubkey represents a 32-byte public key value.\n *\n * @generated from message thru.common.v1.Pubkey\n */\nexport type Pubkey = Message<\"thru.common.v1.Pubkey\"> & {\n  /**\n   * 32-byte public key buffer.\n   *\n   * @generated from field: bytes value = 1;\n   */\n  value: Uint8Array;\n};\n\n/**\n * Describes the message thru.common.v1.Pubkey.\n * Use `create(PubkeySchema)` to create a new message.\n */\nexport const PubkeySchema: GenMessage<Pubkey> = /*@__PURE__*/\n  messageDesc(file_thru_common_v1_primitives, 0);\n\n/**\n * Signature represents a 64-byte signature value.\n *\n * @generated from message thru.common.v1.Signature\n */\nexport type Signature = Message<\"thru.common.v1.Signature\"> & {\n  /**\n   * 64-byte signature buffer.\n   *\n   * @generated from field: bytes value = 1;\n   */\n  value: Uint8Array;\n};\n\n/**\n * Describes the message thru.common.v1.Signature.\n * Use `create(SignatureSchema)` to create a new message.\n */\nexport const SignatureSchema: GenMessage<Signature> = /*@__PURE__*/\n  messageDesc(file_thru_common_v1_primitives, 1);\n\n/**\n * TaPubkey represents a ta-encoded public key string (46 characters).\n *\n * @generated from message thru.common.v1.TaPubkey\n */\nexport type TaPubkey = Message<\"thru.common.v1.TaPubkey\"> & {\n  /**\n   * 46-character ta-encoded public key string.\n   *\n   * @generated from field: string value = 1;\n   */\n  value: string;\n};\n\n/**\n * Describes the message thru.common.v1.TaPubkey.\n * Use `create(TaPubkeySchema)` to create a new message.\n */\nexport const TaPubkeySchema: GenMessage<TaPubkey> = /*@__PURE__*/\n  messageDesc(file_thru_common_v1_primitives, 2);\n\n/**\n * TsSignature represents a ts-encoded signature string (90 characters).\n *\n * @generated from message thru.common.v1.TsSignature\n */\nexport type TsSignature = Message<\"thru.common.v1.TsSignature\"> & {\n  /**\n   * 90-character ts-encoded signature string.\n   *\n   * @generated from field: string value = 1;\n   */\n  value: string;\n};\n\n/**\n * Describes the message thru.common.v1.TsSignature.\n * Use `create(TsSignatureSchema)` to create a new message.\n */\nexport const TsSignatureSchema: GenMessage<TsSignature> = /*@__PURE__*/\n  messageDesc(file_thru_common_v1_primitives, 3);\n\n","// @generated by protoc-gen-es v2.12.0 with parameter \"target=ts\"\n// @generated from file thru/common/v1/filters.proto (package thru.common.v1, syntax proto3)\n/* eslint-disable */\n\nimport type { GenFile, GenMessage } from \"@bufbuild/protobuf/codegenv2\";\nimport { fileDesc, messageDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport { file_buf_validate_validate } from \"../../../buf/validate/validate_pb\";\nimport { file_google_api_field_behavior } from \"../../../google/api/field_behavior_pb\";\nimport type { Pubkey, Signature, TaPubkey, TsSignature } from \"./primitives_pb\";\nimport { file_thru_common_v1_primitives } from \"./primitives_pb\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file thru/common/v1/filters.proto.\n */\nexport const file_thru_common_v1_filters: GenFile = /*@__PURE__*/\n  fileDesc(\"Chx0aHJ1L2NvbW1vbi92MS9maWx0ZXJzLnByb3RvEg50aHJ1LmNvbW1vbi52MSLHAQoGRmlsdGVyEiQKCmV4cHJlc3Npb24YASABKAlCC+BBAbpIBXIDGIAgSACIAQESNwoGcGFyYW1zGAIgAygLMiIudGhydS5jb21tb24udjEuRmlsdGVyLlBhcmFtc0VudHJ5QgPgQQEaTwoLUGFyYW1zRW50cnkSCwoDa2V5GAEgASgJEi8KBXZhbHVlGAIgASgLMiAudGhydS5jb21tb24udjEuRmlsdGVyUGFyYW1WYWx1ZToCOAFCDQoLX2V4cHJlc3Npb24ipAQKEEZpbHRlclBhcmFtVmFsdWUSGwoMc3RyaW5nX3ZhbHVlGAEgASgJQgPgQQFIABIaCgtieXRlc192YWx1ZRgCIAEoDEID4EEBSAASGQoKYm9vbF92YWx1ZRgDIAEoCEID4EEBSAASGAoJaW50X3ZhbHVlGAQgASgSQgPgQQFIABIZCgp1aW50X3ZhbHVlGAUgASgEQgPgQQFIABIbCgxkb3VibGVfdmFsdWUYBiABKAFCA+BBAUgAEjMKDHB1YmtleV92YWx1ZRgHIAEoCzIWLnRocnUuY29tbW9uLnYxLlB1YmtleUID4EEBSAASOQoPc2lnbmF0dXJlX3ZhbHVlGAggASgLMhkudGhydS5jb21tb24udjEuU2lnbmF0dXJlQgPgQQFIABI4Cg90YV9wdWJrZXlfdmFsdWUYCSABKAsyGC50aHJ1LmNvbW1vbi52MS5UYVB1YmtleUID4EEBSAASPgoSdHNfc2lnbmF0dXJlX3ZhbHVlGAogASgLMhsudGhydS5jb21tb24udjEuVHNTaWduYXR1cmVCA+BBAUgAEjoKEGJ5dGVzX2xpc3RfdmFsdWUYCyABKAsyGS50aHJ1LmNvbW1vbi52MS5CeXRlc0xpc3RCA+BBAUgAEjwKEXB1YmtleV9saXN0X3ZhbHVlGAwgASgLMhoudGhydS5jb21tb24udjEuUHVia2V5TGlzdEID4EEBSABCBgoEa2luZCIgCglCeXRlc0xpc3QSEwoGdmFsdWVzGAEgAygMQgPgQQEiOQoKUHVia2V5TGlzdBIrCgZ2YWx1ZXMYASADKAsyFi50aHJ1LmNvbW1vbi52MS5QdWJrZXlCA+BBASKhAQoTQ2VsRmlsdGVyVmFsaWRhdGlvbhInChFhbGxvd2VkX2Z1bmN0aW9ucxgBIAMoCUIM4EEBukgGkgEDEIABEiQKDmFsbG93ZWRfZmllbGRzGAIgAygJQgzgQQG6SAaSAQMQgAISKAoObWF4X2NvbXBsZXhpdHkYAyABKA1CC+BBAbpIBSoDGOgHSACIAQFCEQoPX21heF9jb21wbGV4aXR5QsgBChJjb20udGhydS5jb21tb24udjFCDEZpbHRlcnNQcm90b1ABWkRnaXRodWIuY29tL1VudG8tTGFicy90aHJ1LW5ldC9ncnBjL3BrZy9wcm90by90aHJ1L2NvbW1vbi92MTtjb21tb252MaICA1RDWKoCDlRocnUuQ29tbW9uLlYxugIDVEhVygIOVGhydVxDb21tb25cVjHiAhpUaHJ1XENvbW1vblxWMVxHUEJNZXRhZGF0YeoCEFRocnU6OkNvbW1vbjo6VjFiBnByb3RvMw\", [file_buf_validate_validate, file_google_api_field_behavior, file_thru_common_v1_primitives]);\n\n/**\n * Filter represents a CEL-based expression applied to query or stream results.\n *\n * @generated from message thru.common.v1.Filter\n */\nexport type Filter = Message<\"thru.common.v1.Filter\"> & {\n  /**\n   * CEL expression applied server-side. Empty expressions are treated as no-op.\n   *\n   * @generated from field: optional string expression = 1;\n   */\n  expression?: string | undefined;\n\n  /**\n   * Named parameter bindings for expression parameterization.\n   *\n   * @generated from field: map<string, thru.common.v1.FilterParamValue> params = 2;\n   */\n  params: { [key: string]: FilterParamValue };\n};\n\n/**\n * Describes the message thru.common.v1.Filter.\n * Use `create(FilterSchema)` to create a new message.\n */\nexport const FilterSchema: GenMessage<Filter> = /*@__PURE__*/\n  messageDesc(file_thru_common_v1_filters, 0);\n\n/**\n * FilterParamValue carries strongly-typed CEL parameter bindings.\n *\n * @generated from message thru.common.v1.FilterParamValue\n */\nexport type FilterParamValue = Message<\"thru.common.v1.FilterParamValue\"> & {\n  /**\n   * @generated from oneof thru.common.v1.FilterParamValue.kind\n   */\n  kind: {\n    /**\n     * @generated from field: string string_value = 1;\n     */\n    value: string;\n    case: \"stringValue\";\n  } | {\n    /**\n     * @generated from field: bytes bytes_value = 2;\n     */\n    value: Uint8Array;\n    case: \"bytesValue\";\n  } | {\n    /**\n     * @generated from field: bool bool_value = 3;\n     */\n    value: boolean;\n    case: \"boolValue\";\n  } | {\n    /**\n     * @generated from field: sint64 int_value = 4;\n     */\n    value: bigint;\n    case: \"intValue\";\n  } | {\n    /**\n     * @generated from field: uint64 uint_value = 5;\n     */\n    value: bigint;\n    case: \"uintValue\";\n  } | {\n    /**\n     * @generated from field: double double_value = 6;\n     */\n    value: number;\n    case: \"doubleValue\";\n  } | {\n    /**\n     * @generated from field: thru.common.v1.Pubkey pubkey_value = 7;\n     */\n    value: Pubkey;\n    case: \"pubkeyValue\";\n  } | {\n    /**\n     * @generated from field: thru.common.v1.Signature signature_value = 8;\n     */\n    value: Signature;\n    case: \"signatureValue\";\n  } | {\n    /**\n     * @generated from field: thru.common.v1.TaPubkey ta_pubkey_value = 9;\n     */\n    value: TaPubkey;\n    case: \"taPubkeyValue\";\n  } | {\n    /**\n     * @generated from field: thru.common.v1.TsSignature ts_signature_value = 10;\n     */\n    value: TsSignature;\n    case: \"tsSignatureValue\";\n  } | {\n    /**\n     * @generated from field: thru.common.v1.BytesList bytes_list_value = 11;\n     */\n    value: BytesList;\n    case: \"bytesListValue\";\n  } | {\n    /**\n     * @generated from field: thru.common.v1.PubkeyList pubkey_list_value = 12;\n     */\n    value: PubkeyList;\n    case: \"pubkeyListValue\";\n  } | { case: undefined; value?: undefined };\n};\n\n/**\n * Describes the message thru.common.v1.FilterParamValue.\n * Use `create(FilterParamValueSchema)` to create a new message.\n */\nexport const FilterParamValueSchema: GenMessage<FilterParamValue> = /*@__PURE__*/\n  messageDesc(file_thru_common_v1_filters, 1);\n\n/**\n * BytesList holds a list of byte arrays for multi-value CEL filtering.\n *\n * @generated from message thru.common.v1.BytesList\n */\nexport type BytesList = Message<\"thru.common.v1.BytesList\"> & {\n  /**\n   * @generated from field: repeated bytes values = 1;\n   */\n  values: Uint8Array[];\n};\n\n/**\n * Describes the message thru.common.v1.BytesList.\n * Use `create(BytesListSchema)` to create a new message.\n */\nexport const BytesListSchema: GenMessage<BytesList> = /*@__PURE__*/\n  messageDesc(file_thru_common_v1_filters, 2);\n\n/**\n * PubkeyList holds a list of pubkeys for multi-value CEL filtering.\n *\n * @generated from message thru.common.v1.PubkeyList\n */\nexport type PubkeyList = Message<\"thru.common.v1.PubkeyList\"> & {\n  /**\n   * @generated from field: repeated thru.common.v1.Pubkey values = 1;\n   */\n  values: Pubkey[];\n};\n\n/**\n * Describes the message thru.common.v1.PubkeyList.\n * Use `create(PubkeyListSchema)` to create a new message.\n */\nexport const PubkeyListSchema: GenMessage<PubkeyList> = /*@__PURE__*/\n  messageDesc(file_thru_common_v1_filters, 3);\n\n/**\n * CelFilterValidation describes the validation configuration returned to\n * clients to help them build safe filter expressions.\n *\n * @generated from message thru.common.v1.CelFilterValidation\n */\nexport type CelFilterValidation = Message<\"thru.common.v1.CelFilterValidation\"> & {\n  /**\n   * List of allowed CEL function names for a specific request type.\n   *\n   * @generated from field: repeated string allowed_functions = 1;\n   */\n  allowedFunctions: string[];\n\n  /**\n   * List of allowed field names accessible to the CEL expression.\n   *\n   * @generated from field: repeated string allowed_fields = 2;\n   */\n  allowedFields: string[];\n\n  /**\n   * Maximum AST node count permitted for a CEL expression.\n   *\n   * @generated from field: optional uint32 max_complexity = 3;\n   */\n  maxComplexity?: number | undefined;\n};\n\n/**\n * Describes the message thru.common.v1.CelFilterValidation.\n * Use `create(CelFilterValidationSchema)` to create a new message.\n */\nexport const CelFilterValidationSchema: GenMessage<CelFilterValidation> = /*@__PURE__*/\n  messageDesc(file_thru_common_v1_filters, 4);\n\n","// @generated by protoc-gen-es v2.12.0 with parameter \"target=ts\"\n// @generated from file thru/common/v1/pagination.proto (package thru.common.v1, syntax proto3)\n/* eslint-disable */\n\nimport type { GenFile, GenMessage } from \"@bufbuild/protobuf/codegenv2\";\nimport { fileDesc, messageDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport { file_buf_validate_validate } from \"../../../buf/validate/validate_pb\";\nimport { file_google_api_field_behavior } from \"../../../google/api/field_behavior_pb\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file thru/common/v1/pagination.proto.\n */\nexport const file_thru_common_v1_pagination: GenFile = /*@__PURE__*/\n  fileDesc(\"Ch90aHJ1L2NvbW1vbi92MS9wYWdpbmF0aW9uLnByb3RvEg50aHJ1LmNvbW1vbi52MSKoAQoLUGFnZVJlcXVlc3QSJQoJcGFnZV9zaXplGAEgASgNQg3gQQG6SAcqBRjoBygBSACIAQESJAoKcGFnZV90b2tlbhgCIAEoCUIL4EEBukgFcgMYgARIAYgBARIiCghvcmRlcl9ieRgDIAEoCUIL4EEBukgFcgMYgAJIAogBAUIMCgpfcGFnZV9zaXplQg0KC19wYWdlX3Rva2VuQgsKCV9vcmRlcl9ieSJyCgxQYWdlUmVzcG9uc2USIQoPbmV4dF9wYWdlX3Rva2VuGAEgASgJQgPgQQFIAIgBARIcCgp0b3RhbF9zaXplGAIgASgEQgPgQQFIAYgBAUISChBfbmV4dF9wYWdlX3Rva2VuQg0KC190b3RhbF9zaXplQssBChJjb20udGhydS5jb21tb24udjFCD1BhZ2luYXRpb25Qcm90b1ABWkRnaXRodWIuY29tL1VudG8tTGFicy90aHJ1LW5ldC9ncnBjL3BrZy9wcm90by90aHJ1L2NvbW1vbi92MTtjb21tb252MaICA1RDWKoCDlRocnUuQ29tbW9uLlYxugIDVEhVygIOVGhydVxDb21tb25cVjHiAhpUaHJ1XENvbW1vblxWMVxHUEJNZXRhZGF0YeoCEFRocnU6OkNvbW1vbjo6VjFiBnByb3RvMw\", [file_buf_validate_validate, file_google_api_field_behavior]);\n\n/**\n * PageRequest contains pagination parameters for listing RPCs.\n *\n * @generated from message thru.common.v1.PageRequest\n */\nexport type PageRequest = Message<\"thru.common.v1.PageRequest\"> & {\n  /**\n   * Maximum number of items to return in a single response.\n   *\n   * @generated from field: optional uint32 page_size = 1;\n   */\n  pageSize?: number | undefined;\n\n  /**\n   * Token identifying the position to resume from.\n   *\n   * @generated from field: optional string page_token = 2;\n   */\n  pageToken?: string | undefined;\n\n  /**\n   * Optional ordering specification in \"field [asc|desc]\" form.\n   *\n   * @generated from field: optional string order_by = 3;\n   */\n  orderBy?: string | undefined;\n};\n\n/**\n * Describes the message thru.common.v1.PageRequest.\n * Use `create(PageRequestSchema)` to create a new message.\n */\nexport const PageRequestSchema: GenMessage<PageRequest> = /*@__PURE__*/\n  messageDesc(file_thru_common_v1_pagination, 0);\n\n/**\n * PageResponse captures pagination metadata returned with list results.\n *\n * @generated from message thru.common.v1.PageResponse\n */\nexport type PageResponse = Message<\"thru.common.v1.PageResponse\"> & {\n  /**\n   * Token to retrieve the next page of results, if any.\n   *\n   * @generated from field: optional string next_page_token = 1;\n   */\n  nextPageToken?: string | undefined;\n\n  /**\n   * Total number of items available when known.\n   *\n   * @generated from field: optional uint64 total_size = 2;\n   */\n  totalSize?: bigint | undefined;\n};\n\n/**\n * Describes the message thru.common.v1.PageResponse.\n * Use `create(PageResponseSchema)` to create a new message.\n */\nexport const PageResponseSchema: GenMessage<PageResponse> = /*@__PURE__*/\n  messageDesc(file_thru_common_v1_pagination, 1);\n\n","// @generated by protoc-gen-es v2.12.0 with parameter \"target=ts\"\n// @generated from file thru/core/v1/types.proto (package thru.core.v1, syntax proto3)\n/* eslint-disable */\n\nimport type { GenFile, GenMessage } from \"@bufbuild/protobuf/codegenv2\";\nimport { fileDesc, messageDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport { file_buf_validate_validate } from \"../../../buf/validate/validate_pb\";\nimport { file_google_api_field_behavior } from \"../../../google/api/field_behavior_pb\";\nimport { file_thru_common_v1_primitives } from \"../../common/v1/primitives_pb\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file thru/core/v1/types.proto.\n */\nexport const file_thru_core_v1_types: GenFile = /*@__PURE__*/\n  fileDesc(\"Chh0aHJ1L2NvcmUvdjEvdHlwZXMucHJvdG8SDHRocnUuY29yZS52MSIhCgRIYXNoEhkKBXZhbHVlGAEgASgMQgrgQQK6SAR6AmggIiYKCUJsb2NrSGFzaBIZCgV2YWx1ZRgBIAEoDEIK4EECukgEegJoIEK5AQoQY29tLnRocnUuY29yZS52MUIKVHlwZXNQcm90b1ABWkBnaXRodWIuY29tL1VudG8tTGFicy90aHJ1LW5ldC9ncnBjL3BrZy9wcm90by90aHJ1L2NvcmUvdjE7Y29yZXYxogIDVENYqgIMVGhydS5Db3JlLlYxugIEVEhVQ8oCDFRocnVcQ29yZVxWMeICGFRocnVcQ29yZVxWMVxHUEJNZXRhZGF0YeoCDlRocnU6OkNvcmU6OlYxYgZwcm90bzM\", [file_buf_validate_validate, file_google_api_field_behavior, file_thru_common_v1_primitives]);\n\n/**\n * Hash represents a 32-byte hash value.\n *\n * @generated from message thru.core.v1.Hash\n */\nexport type Hash = Message<\"thru.core.v1.Hash\"> & {\n  /**\n   * 32-byte hash buffer.\n   *\n   * @generated from field: bytes value = 1;\n   */\n  value: Uint8Array;\n};\n\n/**\n * Describes the message thru.core.v1.Hash.\n * Use `create(HashSchema)` to create a new message.\n */\nexport const HashSchema: GenMessage<Hash> = /*@__PURE__*/\n  messageDesc(file_thru_core_v1_types, 0);\n\n/**\n * BlockHash represents a 32-byte hash for block identifiers.\n *\n * @generated from message thru.core.v1.BlockHash\n */\nexport type BlockHash = Message<\"thru.core.v1.BlockHash\"> & {\n  /**\n   * 32-byte block hash buffer.\n   *\n   * @generated from field: bytes value = 1;\n   */\n  value: Uint8Array;\n};\n\n/**\n * Describes the message thru.core.v1.BlockHash.\n * Use `create(BlockHashSchema)` to create a new message.\n */\nexport const BlockHashSchema: GenMessage<BlockHash> = /*@__PURE__*/\n  messageDesc(file_thru_core_v1_types, 1);\n\n","// @generated by protoc-gen-es v2.12.0 with parameter \"target=ts\"\n// @generated from file thru/core/v1/account.proto (package thru.core.v1, syntax proto3)\n/* eslint-disable */\n\nimport type { GenEnum, GenFile, GenMessage } from \"@bufbuild/protobuf/codegenv2\";\nimport { enumDesc, fileDesc, messageDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport { file_buf_validate_validate } from \"../../../buf/validate/validate_pb\";\nimport { file_google_api_field_behavior } from \"../../../google/api/field_behavior_pb\";\nimport type { Timestamp } from \"@bufbuild/protobuf/wkt\";\nimport { file_google_protobuf_timestamp } from \"@bufbuild/protobuf/wkt\";\nimport type { ConsensusStatus } from \"../../common/v1/consensus_pb\";\nimport { file_thru_common_v1_consensus } from \"../../common/v1/consensus_pb\";\nimport type { Pubkey } from \"../../common/v1/primitives_pb\";\nimport { file_thru_common_v1_primitives } from \"../../common/v1/primitives_pb\";\nimport { file_thru_core_v1_types } from \"./types_pb\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file thru/core/v1/account.proto.\n */\nexport const file_thru_core_v1_account: GenFile = /*@__PURE__*/\n  fileDesc(\"Chp0aHJ1L2NvcmUvdjEvYWNjb3VudC5wcm90bxIMdGhydS5jb3JlLnYxIsgBCgxBY2NvdW50RmxhZ3MSFwoKaXNfcHJvZ3JhbRgBIAEoCEID4EECEhoKDWlzX3ByaXZpbGVnZWQYAiABKAhCA+BBAhIeChFpc191bmNvbXByZXNzYWJsZRgDIAEoCEID4EECEhkKDGlzX2VwaGVtZXJhbBgEIAEoCEID4EECEhcKCmlzX2RlbGV0ZWQYBSABKAhCA+BBAhITCgZpc19uZXcYBiABKAhCA+BBAhIaCg1pc19jb21wcmVzc2VkGAcgASgIQgPgQQIilQIKC0FjY291bnRNZXRhEhsKB3ZlcnNpb24YASABKA1CCuBBArpIBCoCKAESLgoFZmxhZ3MYAiABKAsyGi50aHJ1LmNvcmUudjEuQWNjb3VudEZsYWdzQgPgQQISFgoJZGF0YV9zaXplGAMgASgNQgPgQQISEAoDc2VxGAQgASgEQgPgQQISKgoFb3duZXIYBSABKAsyFi50aHJ1LmNvbW1vbi52MS5QdWJrZXlCA+BBAhIUCgdiYWxhbmNlGAYgASgEQgPgQQISEgoFbm9uY2UYByABKARCA+BBAhIjChFsYXN0X3VwZGF0ZWRfc2xvdBgIIAEoBEID4EEBSACIAQFCFAoSX2xhc3RfdXBkYXRlZF9zbG90Iq8BCgtBY2NvdW50RGF0YRIgCgRkYXRhGAEgASgMQg3gQQG6SAd6BRiAgIAISACIAQESHAoKY29tcHJlc3NlZBgCIAEoCEID4EEBSAGIAQESLgoVY29tcHJlc3Npb25fYWxnb3JpdGhtGAMgASgJQgrgQQG6SARyAhhASAKIAQFCBwoFX2RhdGFCDQoLX2NvbXByZXNzZWRCGAoWX2NvbXByZXNzaW9uX2FsZ29yaXRobSJJCglEYXRhU2xpY2USHQoGb2Zmc2V0GAEgASgNQg3gQQK6SAcyBRiAgIAIEh0KBmxlbmd0aBgCIAEoDUIN4EECukgHMgUYgICACCLbAQoLQWNjb3VudFBhZ2USFQoIcGFnZV9pZHgYASABKA1CA+BBAhIeCglwYWdlX3NpemUYAiABKA1CC+BBArpIBSoDGIAgEh4KCXBhZ2VfZGF0YRgDIAEoDEIL4EECukgFegMYgCASHAoKY29tcHJlc3NlZBgEIAEoCEID4EEBSACIAQESLgoVY29tcHJlc3Npb25fYWxnb3JpdGhtGAUgASgJQgrgQQG6SARyAhhASAGIAQFCDQoLX2NvbXByZXNzZWRCGAoWX2NvbXByZXNzaW9uX2FsZ29yaXRobSLcAQoWVmVyc2lvbkNvbnRleHRNZXRhZGF0YRIWCgRzbG90GAEgASgEQgPgQQFIAIgBARI9Cg9ibG9ja190aW1lc3RhbXAYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQgPgQQFIAYgBARIVCgNzZXEYAyABKARCA+BBAUgCiAEBEh4KDGJsb2NrX29mZnNldBgEIAEoDUID4EEBSAOIAQFCBwoFX3Nsb3RCEgoQX2Jsb2NrX3RpbWVzdGFtcEIGCgRfc2VxQg8KDV9ibG9ja19vZmZzZXQi5gIKB0FjY291bnQSLAoHYWRkcmVzcxgBIAEoCzIWLnRocnUuY29tbW9uLnYxLlB1YmtleUID4EECEjEKBG1ldGEYAiABKAsyGS50aHJ1LmNvcmUudjEuQWNjb3VudE1ldGFCA+BBAUgAiAEBEjEKBGRhdGEYAyABKAsyGS50aHJ1LmNvcmUudjEuQWNjb3VudERhdGFCA+BBAUgBiAEBEkcKD3ZlcnNpb25fY29udGV4dBgEIAEoCzIkLnRocnUuY29yZS52MS5WZXJzaW9uQ29udGV4dE1ldGFkYXRhQgPgQQFIAogBARJDChBjb25zZW5zdXNfc3RhdHVzGAUgASgOMh8udGhydS5jb21tb24udjEuQ29uc2Vuc3VzU3RhdHVzQgPgQQFIA4gBAUIHCgVfbWV0YUIHCgVfZGF0YUISChBfdmVyc2lvbl9jb250ZXh0QhMKEV9jb25zZW5zdXNfc3RhdHVzIukBCgpSYXdBY2NvdW50EiwKB2FkZHJlc3MYASABKAsyFi50aHJ1LmNvbW1vbi52MS5QdWJrZXlCA+BBAhIdCghyYXdfbWV0YRgCIAEoDEIL4EECukgFegMYgCASJAoIcmF3X2RhdGEYAyABKAxCDeBBAbpIB3oFGICAgAhIAIgBARJHCg92ZXJzaW9uX2NvbnRleHQYBCABKAsyJC50aHJ1LmNvcmUudjEuVmVyc2lvbkNvbnRleHRNZXRhZGF0YUID4EEBSAGIAQFCCwoJX3Jhd19kYXRhQhIKEF92ZXJzaW9uX2NvbnRleHQqmAEKC0FjY291bnRWaWV3EhwKGEFDQ09VTlRfVklFV19VTlNQRUNJRklFRBAAEhwKGEFDQ09VTlRfVklFV19QVUJLRVlfT05MWRABEhoKFkFDQ09VTlRfVklFV19NRVRBX09OTFkQAhIaChZBQ0NPVU5UX1ZJRVdfREFUQV9PTkxZEAMSFQoRQUNDT1VOVF9WSUVXX0ZVTEwQBEK7AQoQY29tLnRocnUuY29yZS52MUIMQWNjb3VudFByb3RvUAFaQGdpdGh1Yi5jb20vVW50by1MYWJzL3RocnUtbmV0L2dycGMvcGtnL3Byb3RvL3RocnUvY29yZS92MTtjb3JldjGiAgNUQ1iqAgxUaHJ1LkNvcmUuVjG6AgRUSFVDygIMVGhydVxDb3JlXFYx4gIYVGhydVxDb3JlXFYxXEdQQk1ldGFkYXRh6gIOVGhydTo6Q29yZTo6VjFiBnByb3RvMw\", [file_buf_validate_validate, file_google_api_field_behavior, file_google_protobuf_timestamp, file_thru_common_v1_consensus, file_thru_common_v1_primitives, file_thru_core_v1_types]);\n\n/**\n * AccountFlags enumerates boolean account capability flags.\n *\n * @generated from message thru.core.v1.AccountFlags\n */\nexport type AccountFlags = Message<\"thru.core.v1.AccountFlags\"> & {\n  /**\n   * @generated from field: bool is_program = 1;\n   */\n  isProgram: boolean;\n\n  /**\n   * @generated from field: bool is_privileged = 2;\n   */\n  isPrivileged: boolean;\n\n  /**\n   * @generated from field: bool is_uncompressable = 3;\n   */\n  isUncompressable: boolean;\n\n  /**\n   * @generated from field: bool is_ephemeral = 4;\n   */\n  isEphemeral: boolean;\n\n  /**\n   * @generated from field: bool is_deleted = 5;\n   */\n  isDeleted: boolean;\n\n  /**\n   * @generated from field: bool is_new = 6;\n   */\n  isNew: boolean;\n\n  /**\n   * @generated from field: bool is_compressed = 7;\n   */\n  isCompressed: boolean;\n};\n\n/**\n * Describes the message thru.core.v1.AccountFlags.\n * Use `create(AccountFlagsSchema)` to create a new message.\n */\nexport const AccountFlagsSchema: GenMessage<AccountFlags> = /*@__PURE__*/\n  messageDesc(file_thru_core_v1_account, 0);\n\n/**\n * AccountMeta captures metadata associated with an account.\n *\n * @generated from message thru.core.v1.AccountMeta\n */\nexport type AccountMeta = Message<\"thru.core.v1.AccountMeta\"> & {\n  /**\n   * @generated from field: uint32 version = 1;\n   */\n  version: number;\n\n  /**\n   * @generated from field: thru.core.v1.AccountFlags flags = 2;\n   */\n  flags?: AccountFlags | undefined;\n\n  /**\n   * @generated from field: uint32 data_size = 3;\n   */\n  dataSize: number;\n\n  /**\n   * Account sequence number\n   *\n   * @generated from field: uint64 seq = 4;\n   */\n  seq: bigint;\n\n  /**\n   * @generated from field: thru.common.v1.Pubkey owner = 5;\n   */\n  owner?: Pubkey | undefined;\n\n  /**\n   * @generated from field: uint64 balance = 6;\n   */\n  balance: bigint;\n\n  /**\n   * @generated from field: uint64 nonce = 7;\n   */\n  nonce: bigint;\n\n  /**\n   * The slot in which this account was last updated.\n   *\n   * @generated from field: optional uint64 last_updated_slot = 8;\n   */\n  lastUpdatedSlot?: bigint | undefined;\n};\n\n/**\n * Describes the message thru.core.v1.AccountMeta.\n * Use `create(AccountMetaSchema)` to create a new message.\n */\nexport const AccountMetaSchema: GenMessage<AccountMeta> = /*@__PURE__*/\n  messageDesc(file_thru_core_v1_account, 1);\n\n/**\n * AccountData contains account data payloads.\n *\n * @generated from message thru.core.v1.AccountData\n */\nexport type AccountData = Message<\"thru.core.v1.AccountData\"> & {\n  /**\n   * @generated from field: optional bytes data = 1;\n   */\n  data?: Uint8Array | undefined;\n\n  /**\n   * @generated from field: optional bool compressed = 2;\n   */\n  compressed?: boolean | undefined;\n\n  /**\n   * @generated from field: optional string compression_algorithm = 3;\n   */\n  compressionAlgorithm?: string | undefined;\n};\n\n/**\n * Describes the message thru.core.v1.AccountData.\n * Use `create(AccountDataSchema)` to create a new message.\n */\nexport const AccountDataSchema: GenMessage<AccountData> = /*@__PURE__*/\n  messageDesc(file_thru_core_v1_account, 2);\n\n/**\n * DataSlice describes a contiguous range of account data to return.\n *\n * @generated from message thru.core.v1.DataSlice\n */\nexport type DataSlice = Message<\"thru.core.v1.DataSlice\"> & {\n  /**\n   * @generated from field: uint32 offset = 1;\n   */\n  offset: number;\n\n  /**\n   * @generated from field: uint32 length = 2;\n   */\n  length: number;\n};\n\n/**\n * Describes the message thru.core.v1.DataSlice.\n * Use `create(DataSliceSchema)` to create a new message.\n */\nexport const DataSliceSchema: GenMessage<DataSlice> = /*@__PURE__*/\n  messageDesc(file_thru_core_v1_account, 3);\n\n/**\n * AccountPage represents a 4KB chunk for streaming account data.\n *\n * @generated from message thru.core.v1.AccountPage\n */\nexport type AccountPage = Message<\"thru.core.v1.AccountPage\"> & {\n  /**\n   * @generated from field: uint32 page_idx = 1;\n   */\n  pageIdx: number;\n\n  /**\n   * @generated from field: uint32 page_size = 2;\n   */\n  pageSize: number;\n\n  /**\n   * @generated from field: bytes page_data = 3;\n   */\n  pageData: Uint8Array;\n\n  /**\n   * @generated from field: optional bool compressed = 4;\n   */\n  compressed?: boolean | undefined;\n\n  /**\n   * @generated from field: optional string compression_algorithm = 5;\n   */\n  compressionAlgorithm?: string | undefined;\n};\n\n/**\n * Describes the message thru.core.v1.AccountPage.\n * Use `create(AccountPageSchema)` to create a new message.\n */\nexport const AccountPageSchema: GenMessage<AccountPage> = /*@__PURE__*/\n  messageDesc(file_thru_core_v1_account, 4);\n\n/**\n * VersionContextMetadata captures context for a returned account state.\n *\n * @generated from message thru.core.v1.VersionContextMetadata\n */\nexport type VersionContextMetadata = Message<\"thru.core.v1.VersionContextMetadata\"> & {\n  /**\n   * @generated from field: optional uint64 slot = 1;\n   */\n  slot?: bigint | undefined;\n\n  /**\n   * @generated from field: optional google.protobuf.Timestamp block_timestamp = 2;\n   */\n  blockTimestamp?: Timestamp | undefined;\n\n  /**\n   * Per-account sequence number of the returned version.\n   *\n   * @generated from field: optional uint64 seq = 3;\n   */\n  seq?: bigint | undefined;\n\n  /**\n   * Block offset of the transaction that wrote the returned version.\n   *\n   * @generated from field: optional uint32 block_offset = 4;\n   */\n  blockOffset?: number | undefined;\n};\n\n/**\n * Describes the message thru.core.v1.VersionContextMetadata.\n * Use `create(VersionContextMetadataSchema)` to create a new message.\n */\nexport const VersionContextMetadataSchema: GenMessage<VersionContextMetadata> = /*@__PURE__*/\n  messageDesc(file_thru_core_v1_account, 5);\n\n/**\n * Account models a fully decoded account resource.\n *\n * @generated from message thru.core.v1.Account\n */\nexport type Account = Message<\"thru.core.v1.Account\"> & {\n  /**\n   * @generated from field: thru.common.v1.Pubkey address = 1;\n   */\n  address?: Pubkey | undefined;\n\n  /**\n   * @generated from field: optional thru.core.v1.AccountMeta meta = 2;\n   */\n  meta?: AccountMeta | undefined;\n\n  /**\n   * @generated from field: optional thru.core.v1.AccountData data = 3;\n   */\n  data?: AccountData | undefined;\n\n  /**\n   * @generated from field: optional thru.core.v1.VersionContextMetadata version_context = 4;\n   */\n  versionContext?: VersionContextMetadata | undefined;\n\n  /**\n   * @generated from field: optional thru.common.v1.ConsensusStatus consensus_status = 5;\n   */\n  consensusStatus?: ConsensusStatus | undefined;\n};\n\n/**\n * Describes the message thru.core.v1.Account.\n * Use `create(AccountSchema)` to create a new message.\n */\nexport const AccountSchema: GenMessage<Account> = /*@__PURE__*/\n  messageDesc(file_thru_core_v1_account, 6);\n\n/**\n * RawAccount captures raw serialized account bytes.\n *\n * @generated from message thru.core.v1.RawAccount\n */\nexport type RawAccount = Message<\"thru.core.v1.RawAccount\"> & {\n  /**\n   * @generated from field: thru.common.v1.Pubkey address = 1;\n   */\n  address?: Pubkey | undefined;\n\n  /**\n   * @generated from field: bytes raw_meta = 2;\n   */\n  rawMeta: Uint8Array;\n\n  /**\n   * @generated from field: optional bytes raw_data = 3;\n   */\n  rawData?: Uint8Array | undefined;\n\n  /**\n   * @generated from field: optional thru.core.v1.VersionContextMetadata version_context = 4;\n   */\n  versionContext?: VersionContextMetadata | undefined;\n};\n\n/**\n * Describes the message thru.core.v1.RawAccount.\n * Use `create(RawAccountSchema)` to create a new message.\n */\nexport const RawAccountSchema: GenMessage<RawAccount> = /*@__PURE__*/\n  messageDesc(file_thru_core_v1_account, 7);\n\n/**\n * AccountView controls which sections of account resources are returned.\n *\n * @generated from enum thru.core.v1.AccountView\n */\nexport enum AccountView {\n  /**\n   * ACCOUNT_VIEW_UNSPECIFIED uses service defaults.\n   *\n   * @generated from enum value: ACCOUNT_VIEW_UNSPECIFIED = 0;\n   */\n  UNSPECIFIED = 0,\n\n  /**\n   * ACCOUNT_VIEW_PUBKEY_ONLY returns only the account address.\n   *\n   * @generated from enum value: ACCOUNT_VIEW_PUBKEY_ONLY = 1;\n   */\n  PUBKEY_ONLY = 1,\n\n  /**\n   * ACCOUNT_VIEW_META_ONLY returns only account metadata.\n   *\n   * @generated from enum value: ACCOUNT_VIEW_META_ONLY = 2;\n   */\n  META_ONLY = 2,\n\n  /**\n   * ACCOUNT_VIEW_DATA_ONLY returns only account data.\n   *\n   * @generated from enum value: ACCOUNT_VIEW_DATA_ONLY = 3;\n   */\n  DATA_ONLY = 3,\n\n  /**\n   * ACCOUNT_VIEW_FULL returns address, metadata, and data.\n   *\n   * @generated from enum value: ACCOUNT_VIEW_FULL = 4;\n   */\n  FULL = 4,\n}\n\n/**\n * Describes the enum thru.core.v1.AccountView.\n */\nexport const AccountViewSchema: GenEnum<AccountView> = /*@__PURE__*/\n  enumDesc(file_thru_core_v1_account, 0);\n\n","// @generated by protoc-gen-es v2.12.0 with parameter \"target=ts\"\n// @generated from file thru/core/v1/block.proto (package thru.core.v1, syntax proto3)\n/* eslint-disable */\n\nimport type { GenEnum, GenFile, GenMessage } from \"@bufbuild/protobuf/codegenv2\";\nimport { enumDesc, fileDesc, messageDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport { file_buf_validate_validate } from \"../../../buf/validate/validate_pb\";\nimport { file_google_api_field_behavior } from \"../../../google/api/field_behavior_pb\";\nimport type { Timestamp } from \"@bufbuild/protobuf/wkt\";\nimport { file_google_protobuf_timestamp } from \"@bufbuild/protobuf/wkt\";\nimport type { Pubkey, Signature } from \"../../common/v1/primitives_pb\";\nimport { file_thru_common_v1_primitives } from \"../../common/v1/primitives_pb\";\nimport type { ConsensusStatus } from \"../../common/v1/consensus_pb\";\nimport { file_thru_common_v1_consensus } from \"../../common/v1/consensus_pb\";\nimport type { BlockHash } from \"./types_pb\";\nimport { file_thru_core_v1_types } from \"./types_pb\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file thru/core/v1/block.proto.\n */\nexport const file_thru_core_v1_block: GenFile = /*@__PURE__*/\n  fileDesc(\"Chh0aHJ1L2NvcmUvdjEvYmxvY2sucHJvdG8SDHRocnUuY29yZS52MSKjBAoLQmxvY2tIZWFkZXISEQoEc2xvdBgBIAEoBEID4EECEjAKCmJsb2NrX2hhc2gYAiABKAsyFy50aHJ1LmNvcmUudjEuQmxvY2tIYXNoQgPgQQISOAoQaGVhZGVyX3NpZ25hdHVyZRgDIAEoCzIZLnRocnUuY29tbW9uLnYxLlNpZ25hdHVyZUID4EECEhQKB3ZlcnNpb24YBCABKA1CA+BBAhItCghwcm9kdWNlchgFIAEoCzIWLnRocnUuY29tbW9uLnYxLlB1YmtleUID4EECEjkKEGV4cGlyeV90aW1lc3RhbXAYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQgPgQQISFwoKc3RhcnRfc2xvdBgHIAEoBEID4EECEhkKDGV4cGlyeV9hZnRlchgIIAEoDUID4EECEhsKDm1heF9ibG9ja19zaXplGAkgASgNQgPgQQISHgoRbWF4X2NvbXB1dGVfdW5pdHMYCiABKARCA+BBAhIcCg9tYXhfc3RhdGVfdW5pdHMYCyABKA1CA+BBAhIgChNib25kX2Ftb3VudF9sb2NrX3VwGAwgASgEQgPgQQISMwoKYmxvY2tfdGltZRgNIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCA+BBAhIYCgt3ZWlnaHRfc2xvdBgOIAEoBEID4EECEhUKCGNoYWluX2lkGA8gASgNQgPgQQIi2wEKC0Jsb2NrRm9vdGVyEjEKCXNpZ25hdHVyZRgBIAEoCzIZLnRocnUuY29tbW9uLnYxLlNpZ25hdHVyZUID4EECEjIKBnN0YXR1cxgCIAEoDjIdLnRocnUuY29yZS52MS5FeGVjdXRpb25TdGF0dXNCA+BBAhIjChZjb25zdW1lZF9jb21wdXRlX3VuaXRzGAMgASgEQgPgQQISIQoUY29uc3VtZWRfc3RhdGVfdW5pdHMYBCABKA1CA+BBAhIdChBhdHRlc3Rvcl9wYXltZW50GAUgASgEQgPgQQIi/AEKBUJsb2NrEi4KBmhlYWRlchgBIAEoCzIZLnRocnUuY29yZS52MS5CbG9ja0hlYWRlckID4EECEjMKBmZvb3RlchgCIAEoCzIZLnRocnUuY29yZS52MS5CbG9ja0Zvb3RlckID4EEBSACIAQESIAoEYm9keRgDIAEoDEIN4EEBukgHegUYgICAEEgBiAEBEkMKEGNvbnNlbnN1c19zdGF0dXMYBCABKA4yHy50aHJ1LmNvbW1vbi52MS5Db25zZW5zdXNTdGF0dXNCA+BBAUgCiAEBQgkKB19mb290ZXJCBwoFX2JvZHlCEwoRX2NvbnNlbnN1c19zdGF0dXMiPwoIUmF3QmxvY2sSEQoEc2xvdBgBIAEoBEID4EECEiAKCXJhd19ibG9jaxgCIAEoDEIN4EECukgHegUYgICAECqUAQoJQmxvY2tWaWV3EhoKFkJMT0NLX1ZJRVdfVU5TUEVDSUZJRUQQABIaChZCTE9DS19WSUVXX0hFQURFUl9PTkxZEAESIAocQkxPQ0tfVklFV19IRUFERVJfQU5EX0ZPT1RFUhACEhgKFEJMT0NLX1ZJRVdfQk9EWV9PTkxZEAMSEwoPQkxPQ0tfVklFV19GVUxMEAQqjQEKD0V4ZWN1dGlvblN0YXR1cxIgChxFWEVDVVRJT05fU1RBVFVTX1VOU1BFQ0lGSUVEEAASHAoYRVhFQ1VUSU9OX1NUQVRVU19QRU5ESU5HEAESHQoZRVhFQ1VUSU9OX1NUQVRVU19FWEVDVVRFRBACEhsKF0VYRUNVVElPTl9TVEFUVVNfRkFJTEVEEANCuQEKEGNvbS50aHJ1LmNvcmUudjFCCkJsb2NrUHJvdG9QAVpAZ2l0aHViLmNvbS9VbnRvLUxhYnMvdGhydS1uZXQvZ3JwYy9wa2cvcHJvdG8vdGhydS9jb3JlL3YxO2NvcmV2MaICA1RDWKoCDFRocnUuQ29yZS5WMboCBFRIVUPKAgxUaHJ1XENvcmVcVjHiAhhUaHJ1XENvcmVcVjFcR1BCTWV0YWRhdGHqAg5UaHJ1OjpDb3JlOjpWMWIGcHJvdG8z\", [file_buf_validate_validate, file_google_api_field_behavior, file_google_protobuf_timestamp, file_thru_common_v1_primitives, file_thru_common_v1_consensus, file_thru_core_v1_types]);\n\n/**\n * BlockHeader describes metadata about a block.\n *\n * @generated from message thru.core.v1.BlockHeader\n */\nexport type BlockHeader = Message<\"thru.core.v1.BlockHeader\"> & {\n  /**\n   * @generated from field: uint64 slot = 1;\n   */\n  slot: bigint;\n\n  /**\n   * @generated from field: thru.core.v1.BlockHash block_hash = 2;\n   */\n  blockHash?: BlockHash | undefined;\n\n  /**\n   * @generated from field: thru.common.v1.Signature header_signature = 3;\n   */\n  headerSignature?: Signature | undefined;\n\n  /**\n   * @generated from field: uint32 version = 4;\n   */\n  version: number;\n\n  /**\n   * @generated from field: thru.common.v1.Pubkey producer = 5;\n   */\n  producer?: Pubkey | undefined;\n\n  /**\n   * @generated from field: google.protobuf.Timestamp expiry_timestamp = 6;\n   */\n  expiryTimestamp?: Timestamp | undefined;\n\n  /**\n   * @generated from field: uint64 start_slot = 7;\n   */\n  startSlot: bigint;\n\n  /**\n   * @generated from field: uint32 expiry_after = 8;\n   */\n  expiryAfter: number;\n\n  /**\n   * @generated from field: uint32 max_block_size = 9;\n   */\n  maxBlockSize: number;\n\n  /**\n   * @generated from field: uint64 max_compute_units = 10;\n   */\n  maxComputeUnits: bigint;\n\n  /**\n   * @generated from field: uint32 max_state_units = 11;\n   */\n  maxStateUnits: number;\n\n  /**\n   * @generated from field: uint64 bond_amount_lock_up = 12;\n   */\n  bondAmountLockUp: bigint;\n\n  /**\n   * @generated from field: google.protobuf.Timestamp block_time = 13;\n   */\n  blockTime?: Timestamp | undefined;\n\n  /**\n   * @generated from field: uint64 weight_slot = 14;\n   */\n  weightSlot: bigint;\n\n  /**\n   * @generated from field: uint32 chain_id = 15;\n   */\n  chainId: number;\n};\n\n/**\n * Describes the message thru.core.v1.BlockHeader.\n * Use `create(BlockHeaderSchema)` to create a new message.\n */\nexport const BlockHeaderSchema: GenMessage<BlockHeader> = /*@__PURE__*/\n  messageDesc(file_thru_core_v1_block, 0);\n\n/**\n * BlockFooter captures execution result metadata for a block.\n *\n * @generated from message thru.core.v1.BlockFooter\n */\nexport type BlockFooter = Message<\"thru.core.v1.BlockFooter\"> & {\n  /**\n   * @generated from field: thru.common.v1.Signature signature = 1;\n   */\n  signature?: Signature | undefined;\n\n  /**\n   * @generated from field: thru.core.v1.ExecutionStatus status = 2;\n   */\n  status: ExecutionStatus;\n\n  /**\n   * @generated from field: uint64 consumed_compute_units = 3;\n   */\n  consumedComputeUnits: bigint;\n\n  /**\n   * @generated from field: uint32 consumed_state_units = 4;\n   */\n  consumedStateUnits: number;\n\n  /**\n   * @generated from field: uint64 attestor_payment = 5;\n   */\n  attestorPayment: bigint;\n};\n\n/**\n * Describes the message thru.core.v1.BlockFooter.\n * Use `create(BlockFooterSchema)` to create a new message.\n */\nexport const BlockFooterSchema: GenMessage<BlockFooter> = /*@__PURE__*/\n  messageDesc(file_thru_core_v1_block, 1);\n\n/**\n * Block represents a fully decoded block resource.\n *\n * @generated from message thru.core.v1.Block\n */\nexport type Block = Message<\"thru.core.v1.Block\"> & {\n  /**\n   * @generated from field: thru.core.v1.BlockHeader header = 1;\n   */\n  header?: BlockHeader | undefined;\n\n  /**\n   * @generated from field: optional thru.core.v1.BlockFooter footer = 2;\n   */\n  footer?: BlockFooter | undefined;\n\n  /**\n   * @generated from field: optional bytes body = 3;\n   */\n  body?: Uint8Array | undefined;\n\n  /**\n   * @generated from field: optional thru.common.v1.ConsensusStatus consensus_status = 4;\n   */\n  consensusStatus?: ConsensusStatus | undefined;\n};\n\n/**\n * Describes the message thru.core.v1.Block.\n * Use `create(BlockSchema)` to create a new message.\n */\nexport const BlockSchema: GenMessage<Block> = /*@__PURE__*/\n  messageDesc(file_thru_core_v1_block, 2);\n\n/**\n * RawBlock captures raw block bytes for direct access.\n *\n * @generated from message thru.core.v1.RawBlock\n */\nexport type RawBlock = Message<\"thru.core.v1.RawBlock\"> & {\n  /**\n   * @generated from field: uint64 slot = 1;\n   */\n  slot: bigint;\n\n  /**\n   * @generated from field: bytes raw_block = 2;\n   */\n  rawBlock: Uint8Array;\n};\n\n/**\n * Describes the message thru.core.v1.RawBlock.\n * Use `create(RawBlockSchema)` to create a new message.\n */\nexport const RawBlockSchema: GenMessage<RawBlock> = /*@__PURE__*/\n  messageDesc(file_thru_core_v1_block, 3);\n\n/**\n * BlockView controls how much of a block resource is returned.\n *\n * @generated from enum thru.core.v1.BlockView\n */\nexport enum BlockView {\n  /**\n   * @generated from enum value: BLOCK_VIEW_UNSPECIFIED = 0;\n   */\n  UNSPECIFIED = 0,\n\n  /**\n   * @generated from enum value: BLOCK_VIEW_HEADER_ONLY = 1;\n   */\n  HEADER_ONLY = 1,\n\n  /**\n   * @generated from enum value: BLOCK_VIEW_HEADER_AND_FOOTER = 2;\n   */\n  HEADER_AND_FOOTER = 2,\n\n  /**\n   * @generated from enum value: BLOCK_VIEW_BODY_ONLY = 3;\n   */\n  BODY_ONLY = 3,\n\n  /**\n   * @generated from enum value: BLOCK_VIEW_FULL = 4;\n   */\n  FULL = 4,\n}\n\n/**\n * Describes the enum thru.core.v1.BlockView.\n */\nexport const BlockViewSchema: GenEnum<BlockView> = /*@__PURE__*/\n  enumDesc(file_thru_core_v1_block, 0);\n\n/**\n * ExecutionStatus enumerates block execution results.\n *\n * @generated from enum thru.core.v1.ExecutionStatus\n */\nexport enum ExecutionStatus {\n  /**\n   * @generated from enum value: EXECUTION_STATUS_UNSPECIFIED = 0;\n   */\n  UNSPECIFIED = 0,\n\n  /**\n   * @generated from enum value: EXECUTION_STATUS_PENDING = 1;\n   */\n  PENDING = 1,\n\n  /**\n   * @generated from enum value: EXECUTION_STATUS_EXECUTED = 2;\n   */\n  EXECUTED = 2,\n\n  /**\n   * @generated from enum value: EXECUTION_STATUS_FAILED = 3;\n   */\n  FAILED = 3,\n}\n\n/**\n * Describes the enum thru.core.v1.ExecutionStatus.\n */\nexport const ExecutionStatusSchema: GenEnum<ExecutionStatus> = /*@__PURE__*/\n  enumDesc(file_thru_core_v1_block, 1);\n\n","// @generated by protoc-gen-es v2.12.0 with parameter \"target=ts\"\n// @generated from file thru/core/v1/node.proto (package thru.core.v1, syntax proto3)\n/* eslint-disable */\n\nimport type { GenFile, GenMessage } from \"@bufbuild/protobuf/codegenv2\";\nimport { fileDesc, messageDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport { file_google_api_field_behavior } from \"../../../google/api/field_behavior_pb\";\nimport type { Pubkey } from \"../../common/v1/primitives_pb\";\nimport { file_thru_common_v1_primitives } from \"../../common/v1/primitives_pb\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file thru/core/v1/node.proto.\n */\nexport const file_thru_core_v1_node: GenFile = /*@__PURE__*/\n  fileDesc(\"Chd0aHJ1L2NvcmUvdjEvbm9kZS5wcm90bxIMdGhydS5jb3JlLnYxIjcKC05vZGVDb250YWN0EhUKCGlwNF9hZGRyGAEgASgNQgPgQQISEQoEcG9ydBgCIAEoDUID4EECIkIKDE5vZGVQcm90b2NvbBIYCgtjb250YWN0X2lkeBgBIAEoDUID4EECEhgKC3Byb3RvY29sX2lkGAIgASgNQgPgQQIijgIKCk5vZGVSZWNvcmQSFAoHdmVyc2lvbhgBIAEoDUID4EECEhUKCGNoYWluX2lkGAIgASgNQgPgQQISEwoGc2VxbnVtGAMgASgEQgPgQQISKwoGcHVia2V5GAQgASgLMhYudGhydS5jb21tb24udjEuUHVia2V5QgPgQQISMAoIY29udGFjdHMYBSADKAsyGS50aHJ1LmNvcmUudjEuTm9kZUNvbnRhY3RCA+BBARIyCglwcm90b2NvbHMYBiADKAsyGi50aHJ1LmNvcmUudjEuTm9kZVByb3RvY29sQgPgQQESFgoJc2lnbmF0dXJlGAcgASgMQgPgQQISEwoGaXNfb3duGAggASgIQgPgQQJCuAEKEGNvbS50aHJ1LmNvcmUudjFCCU5vZGVQcm90b1ABWkBnaXRodWIuY29tL1VudG8tTGFicy90aHJ1LW5ldC9ncnBjL3BrZy9wcm90by90aHJ1L2NvcmUvdjE7Y29yZXYxogIDVENYqgIMVGhydS5Db3JlLlYxugIEVEhVQ8oCDFRocnVcQ29yZVxWMeICGFRocnVcQ29yZVxWMVxHUEJNZXRhZGF0YeoCDlRocnU6OkNvcmU6OlYxYgZwcm90bzM\", [file_google_api_field_behavior, file_thru_common_v1_primitives]);\n\n/**\n * NodeContact represents a network contact address for a node.\n *\n * @generated from message thru.core.v1.NodeContact\n */\nexport type NodeContact = Message<\"thru.core.v1.NodeContact\"> & {\n  /**\n   * IPv4 address as 32-bit integer (network byte order).\n   *\n   * @generated from field: uint32 ip4_addr = 1;\n   */\n  ip4Addr: number;\n\n  /**\n   * Port number.\n   *\n   * @generated from field: uint32 port = 2;\n   */\n  port: number;\n};\n\n/**\n * Describes the message thru.core.v1.NodeContact.\n * Use `create(NodeContactSchema)` to create a new message.\n */\nexport const NodeContactSchema: GenMessage<NodeContact> = /*@__PURE__*/\n  messageDesc(file_thru_core_v1_node, 0);\n\n/**\n * NodeProtocol represents a protocol supported by a node contact.\n *\n * @generated from message thru.core.v1.NodeProtocol\n */\nexport type NodeProtocol = Message<\"thru.core.v1.NodeProtocol\"> & {\n  /**\n   * Index into the contacts array.\n   *\n   * @generated from field: uint32 contact_idx = 1;\n   */\n  contactIdx: number;\n\n  /**\n   * Protocol identifier (discovery=1, block_dissem=2, consensus=3, snapshot=4, repair=5, transaction=6).\n   *\n   * @generated from field: uint32 protocol_id = 2;\n   */\n  protocolId: number;\n};\n\n/**\n * Describes the message thru.core.v1.NodeProtocol.\n * Use `create(NodeProtocolSchema)` to create a new message.\n */\nexport const NodeProtocolSchema: GenMessage<NodeProtocol> = /*@__PURE__*/\n  messageDesc(file_thru_core_v1_node, 1);\n\n/**\n * NodeRecord represents a node's signed identity and network information.\n *\n * @generated from message thru.core.v1.NodeRecord\n */\nexport type NodeRecord = Message<\"thru.core.v1.NodeRecord\"> & {\n  /**\n   * Record version.\n   *\n   * @generated from field: uint32 version = 1;\n   */\n  version: number;\n\n  /**\n   * Chain identifier.\n   *\n   * @generated from field: uint32 chain_id = 2;\n   */\n  chainId: number;\n\n  /**\n   * Sequence number (incremented on each record update).\n   *\n   * @generated from field: uint64 seqnum = 3;\n   */\n  seqnum: bigint;\n\n  /**\n   * Node's ED25519 public key.\n   *\n   * @generated from field: thru.common.v1.Pubkey pubkey = 4;\n   */\n  pubkey?: Pubkey | undefined;\n\n  /**\n   * Network contact addresses.\n   *\n   * @generated from field: repeated thru.core.v1.NodeContact contacts = 5;\n   */\n  contacts: NodeContact[];\n\n  /**\n   * Protocols supported at each contact.\n   *\n   * @generated from field: repeated thru.core.v1.NodeProtocol protocols = 6;\n   */\n  protocols: NodeProtocol[];\n\n  /**\n   * ED25519 signature over the record.\n   *\n   * @generated from field: bytes signature = 7;\n   */\n  signature: Uint8Array;\n\n  /**\n   * True if this is the responding node's own record.\n   *\n   * @generated from field: bool is_own = 8;\n   */\n  isOwn: boolean;\n};\n\n/**\n * Describes the message thru.core.v1.NodeRecord.\n * Use `create(NodeRecordSchema)` to create a new message.\n */\nexport const NodeRecordSchema: GenMessage<NodeRecord> = /*@__PURE__*/\n  messageDesc(file_thru_core_v1_node, 2);\n\n","// @generated by protoc-gen-es v2.12.0 with parameter \"target=ts\"\n// @generated from file thru/core/v1/state.proto (package thru.core.v1, syntax proto3)\n/* eslint-disable */\n\nimport type { GenEnum, GenFile, GenMessage } from \"@bufbuild/protobuf/codegenv2\";\nimport { enumDesc, fileDesc, messageDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport { file_google_api_field_behavior } from \"../../../google/api/field_behavior_pb\";\nimport { file_thru_core_v1_types } from \"./types_pb\";\nimport type { Pubkey } from \"../../common/v1/primitives_pb\";\nimport { file_thru_common_v1_primitives } from \"../../common/v1/primitives_pb\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file thru/core/v1/state.proto.\n */\nexport const file_thru_core_v1_state: GenFile = /*@__PURE__*/\n  fileDesc(\"Chh0aHJ1L2NvcmUvdjEvc3RhdGUucHJvdG8SDHRocnUuY29yZS52MSKnAQoRU3RhdGVQcm9vZlJlcXVlc3QSLAoHYWRkcmVzcxgBIAEoCzIWLnRocnUuY29tbW9uLnYxLlB1YmtleUID4EECEjUKCnByb29mX3R5cGUYAiABKA4yHC50aHJ1LmNvcmUudjEuU3RhdGVQcm9vZlR5cGVCA+BBAhIdCgt0YXJnZXRfc2xvdBgDIAEoBEID4EEBSACIAQFCDgoMX3RhcmdldF9zbG90IjMKClN0YXRlUHJvb2YSEgoFcHJvb2YYASABKAxCA+BBAhIRCgRzbG90GAIgASgEQgPgQQIqjwEKDlN0YXRlUHJvb2ZUeXBlEiAKHFNUQVRFX1BST09GX1RZUEVfVU5TUEVDSUZJRUQQABIdChlTVEFURV9QUk9PRl9UWVBFX0NSRUFUSU5HEAESHQoZU1RBVEVfUFJPT0ZfVFlQRV9VUERBVElORxACEh0KGVNUQVRFX1BST09GX1RZUEVfRVhJU1RJTkcQA0K5AQoQY29tLnRocnUuY29yZS52MUIKU3RhdGVQcm90b1ABWkBnaXRodWIuY29tL1VudG8tTGFicy90aHJ1LW5ldC9ncnBjL3BrZy9wcm90by90aHJ1L2NvcmUvdjE7Y29yZXYxogIDVENYqgIMVGhydS5Db3JlLlYxugIEVEhVQ8oCDFRocnVcQ29yZVxWMeICGFRocnVcQ29yZVxWMVxHUEJNZXRhZGF0YeoCDlRocnU6OkNvcmU6OlYxYgZwcm90bzM\", [file_google_api_field_behavior, file_thru_core_v1_types, file_thru_common_v1_primitives]);\n\n/**\n * StateProofRequest describes a request to generate an account state proof.\n *\n * @generated from message thru.core.v1.StateProofRequest\n */\nexport type StateProofRequest = Message<\"thru.core.v1.StateProofRequest\"> & {\n  /**\n   * @generated from field: thru.common.v1.Pubkey address = 1;\n   */\n  address?: Pubkey | undefined;\n\n  /**\n   * @generated from field: thru.core.v1.StateProofType proof_type = 2;\n   */\n  proofType: StateProofType;\n\n  /**\n   * @generated from field: optional uint64 target_slot = 3;\n   */\n  targetSlot?: bigint | undefined;\n};\n\n/**\n * Describes the message thru.core.v1.StateProofRequest.\n * Use `create(StateProofRequestSchema)` to create a new message.\n */\nexport const StateProofRequestSchema: GenMessage<StateProofRequest> = /*@__PURE__*/\n  messageDesc(file_thru_core_v1_state, 0);\n\n/**\n * StateProof returns binary proof data along with context.\n *\n * @generated from message thru.core.v1.StateProof\n */\nexport type StateProof = Message<\"thru.core.v1.StateProof\"> & {\n  /**\n   * @generated from field: bytes proof = 1;\n   */\n  proof: Uint8Array;\n\n  /**\n   * @generated from field: uint64 slot = 2;\n   */\n  slot: bigint;\n};\n\n/**\n * Describes the message thru.core.v1.StateProof.\n * Use `create(StateProofSchema)` to create a new message.\n */\nexport const StateProofSchema: GenMessage<StateProof> = /*@__PURE__*/\n  messageDesc(file_thru_core_v1_state, 1);\n\n/**\n * StateProofType selects the type of state proof to generate.\n *\n * @generated from enum thru.core.v1.StateProofType\n */\nexport enum StateProofType {\n  /**\n   * @generated from enum value: STATE_PROOF_TYPE_UNSPECIFIED = 0;\n   */\n  UNSPECIFIED = 0,\n\n  /**\n   * @generated from enum value: STATE_PROOF_TYPE_CREATING = 1;\n   */\n  CREATING = 1,\n\n  /**\n   * @generated from enum value: STATE_PROOF_TYPE_UPDATING = 2;\n   */\n  UPDATING = 2,\n\n  /**\n   * @generated from enum value: STATE_PROOF_TYPE_EXISTING = 3;\n   */\n  EXISTING = 3,\n}\n\n/**\n * Describes the enum thru.core.v1.StateProofType.\n */\nexport const StateProofTypeSchema: GenEnum<StateProofType> = /*@__PURE__*/\n  enumDesc(file_thru_core_v1_state, 0);\n\n","// @generated by protoc-gen-es v2.12.0 with parameter \"target=ts\"\n// @generated from file thru/core/v1/transaction.proto (package thru.core.v1, syntax proto3)\n/* eslint-disable */\n\nimport type { GenEnum, GenFile, GenMessage } from \"@bufbuild/protobuf/codegenv2\";\nimport { enumDesc, fileDesc, messageDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport { file_buf_validate_validate } from \"../../../buf/validate/validate_pb\";\nimport { file_google_api_field_behavior } from \"../../../google/api/field_behavior_pb\";\nimport { file_thru_core_v1_types } from \"./types_pb\";\nimport type { Pubkey, Signature } from \"../../common/v1/primitives_pb\";\nimport { file_thru_common_v1_primitives } from \"../../common/v1/primitives_pb\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file thru/core/v1/transaction.proto.\n */\nexport const file_thru_core_v1_transaction: GenFile = /*@__PURE__*/\n  fileDesc(\"Ch50aHJ1L2NvcmUvdjEvdHJhbnNhY3Rpb24ucHJvdG8SDHRocnUuY29yZS52MSK3BAoRVHJhbnNhY3Rpb25IZWFkZXISOwoTZmVlX3BheWVyX3NpZ25hdHVyZRgBIAEoCzIZLnRocnUuY29tbW9uLnYxLlNpZ25hdHVyZUID4EECEhQKB3ZlcnNpb24YAiABKA1CA+BBAhISCgVmbGFncxgDIAEoDUID4EECEiUKGHJlYWR3cml0ZV9hY2NvdW50c19jb3VudBgEIAEoDUID4EECEiQKF3JlYWRvbmx5X2FjY291bnRzX2NvdW50GAUgASgNQgPgQQISIgoVaW5zdHJ1Y3Rpb25fZGF0YV9zaXplGAYgASgNQgPgQQISJAoXcmVxdWVzdGVkX2NvbXB1dGVfdW5pdHMYByABKA1CA+BBAhIiChVyZXF1ZXN0ZWRfc3RhdGVfdW5pdHMYCCABKA1CA+BBAhIjChZyZXF1ZXN0ZWRfbWVtb3J5X3VuaXRzGAkgASgNQgPgQQISGQoMZXhwaXJ5X2FmdGVyGAogASgNQgPgQQISEAoDZmVlGAsgASgEQgPgQQISEgoFbm9uY2UYDCABKARCA+BBAhIXCgpzdGFydF9zbG90GA0gASgEQgPgQQISNQoQZmVlX3BheWVyX3B1YmtleRgOIAEoCzIWLnRocnUuY29tbW9uLnYxLlB1YmtleUID4EECEjMKDnByb2dyYW1fcHVia2V5GA8gASgLMhYudGhydS5jb21tb24udjEuUHVia2V5QgPgQQISFQoIY2hhaW5faWQYECABKA1CA+BBAiLfBAoaVHJhbnNhY3Rpb25FeGVjdXRpb25SZXN1bHQSIwoWY29uc3VtZWRfY29tcHV0ZV91bml0cxgBIAEoDUID4EECEiIKFWNvbnN1bWVkX21lbW9yeV91bml0cxgCIAEoDUID4EECEiEKFGNvbnN1bWVkX3N0YXRlX3VuaXRzGAMgASgNQgPgQQISHAoPdXNlcl9lcnJvcl9jb2RlGAQgASgEQgPgQQISNwoIdm1fZXJyb3IYBSABKA4yIC50aHJ1LmNvcmUudjEuVHJhbnNhY3Rpb25WbUVycm9yQgPgQQISHQoQZXhlY3V0aW9uX3Jlc3VsdBgGIAEoBEID4EECEhcKCnBhZ2VzX3VzZWQYByABKA1CA+BBAhIZCgxldmVudHNfY291bnQYCCABKA1CA+BBAhIYCgtldmVudHNfc2l6ZRgJIAEoDUID4EECEjcKEnJlYWR3cml0ZV9hY2NvdW50cxgKIAMoCzIWLnRocnUuY29tbW9uLnYxLlB1YmtleUID4EEBEjYKEXJlYWRvbmx5X2FjY291bnRzGAsgAygLMhYudGhydS5jb21tb24udjEuUHVia2V5QgPgQQESMwoGZXZlbnRzGAwgAygLMh4udGhydS5jb3JlLnYxLlRyYW5zYWN0aW9uRXZlbnRCA+BBARIiChVlcnJvcl9wcm9ncmFtX2FjY19pZHgYDSABKA1CA+BBARIqChhmZWVfcGF5ZXJfZXhwZWN0ZWRfbm9uY2UYDiABKARCA+BBAUgAiAEBQhsKGV9mZWVfcGF5ZXJfZXhwZWN0ZWRfbm9uY2UingEKEFRyYW5zYWN0aW9uRXZlbnQSFQoIZXZlbnRfaWQYASABKAlCA+BBAhIVCghjYWxsX2lkeBgCIAEoDUID4EECEhgKC3Byb2dyYW1faWR4GAMgASgNQgPgQQISLAoHcHJvZ3JhbRgEIAEoCzIWLnRocnUuY29tbW9uLnYxLlB1YmtleUID4EECEhQKB3BheWxvYWQYBSABKAxCA+BBAiLWAgoLVHJhbnNhY3Rpb24SMQoJc2lnbmF0dXJlGAEgASgLMhkudGhydS5jb21tb24udjEuU2lnbmF0dXJlQgPgQQISNAoGaGVhZGVyGAIgASgLMh8udGhydS5jb3JlLnYxLlRyYW5zYWN0aW9uSGVhZGVyQgPgQQISIAoEYm9keRgDIAEoDEIN4EEBukgHegUYgICACEgAiAEBEkwKEGV4ZWN1dGlvbl9yZXN1bHQYBCABKAsyKC50aHJ1LmNvcmUudjEuVHJhbnNhY3Rpb25FeGVjdXRpb25SZXN1bHRCA+BBAUgBiAEBEhYKBHNsb3QYBSABKARCA+BBAUgCiAEBEh4KDGJsb2NrX29mZnNldBgGIAEoDUID4EEBSAOIAQFCBwoFX2JvZHlCEwoRX2V4ZWN1dGlvbl9yZXN1bHRCBwoFX3Nsb3RCDwoNX2Jsb2NrX29mZnNldCJrCg5SYXdUcmFuc2FjdGlvbhIxCglzaWduYXR1cmUYASABKAsyGS50aHJ1LmNvbW1vbi52MS5TaWduYXR1cmVCA+BBAhImCg9yYXdfdHJhbnNhY3Rpb24YAiABKAxCDeBBArpIB3oFGICAgAgquwEKD1RyYW5zYWN0aW9uVmlldxIgChxUUkFOU0FDVElPTl9WSUVXX1VOU1BFQ0lGSUVEEAASIwofVFJBTlNBQ1RJT05fVklFV19TSUdOQVRVUkVfT05MWRABEiAKHFRSQU5TQUNUSU9OX1ZJRVdfSEVBREVSX09OTFkQAhIkCiBUUkFOU0FDVElPTl9WSUVXX0hFQURFUl9BTkRfQk9EWRADEhkKFVRSQU5TQUNUSU9OX1ZJRVdfRlVMTBAEKqMNChJUcmFuc2FjdGlvblZtRXJyb3ISIgoeVFJBTlNBQ1RJT05fVk1fRVhFQ1VURV9TVUNDRVNTEAASMAojVFJBTlNBQ1RJT05fVk1fRVJST1JfSU5WQUxJRF9GT1JNQVQQgf7/////////ARIxCiRUUkFOU0FDVElPTl9WTV9FUlJPUl9JTlZBTElEX1ZFUlNJT04Qgv7/////////ARIvCiJUUkFOU0FDVElPTl9WTV9FUlJPUl9JTlZBTElEX0ZMQUdTEIP+/////////wESMwomVFJBTlNBQ1RJT05fVk1fRVJST1JfSU5WQUxJRF9TSUdOQVRVUkUQhP7/////////ARIzCiZUUkFOU0FDVElPTl9WTV9FUlJPUl9EVVBMSUNBVEVfQUNDT1VOVBCF/v////////8BEjMKJlRSQU5TQUNUSU9OX1ZNX0VSUk9SX1VOU09SVEVEX0FDQ09VTlRTEIb+/////////wESPQowVFJBTlNBQ1RJT05fVk1fRVJST1JfVU5TT1JURURfUkVBRFdSSVRFX0FDQ09VTlRTEIf+/////////wESPAovVFJBTlNBQ1RJT05fVk1fRVJST1JfVU5TT1JURURfUkVBRE9OTFlfQUNDT1VOVFMQiP7/////////ARI+CjFUUkFOU0FDVElPTl9WTV9FUlJPUl9BQ0NPVU5UX0NPVU5UX0xJTUlUX0VYQ0VFREVEEIn+/////////wESLwoiVFJBTlNBQ1RJT05fVk1fRVJST1JfTk9OQ0VfVE9PX0xPVxCB/P////////8BEjAKI1RSQU5TQUNUSU9OX1ZNX0VSUk9SX05PTkNFX1RPT19ISUdIEIL8/////////wESQAozVFJBTlNBQ1RJT05fVk1fRVJST1JfSU5TVUZGSUNJRU5UX0ZFRV9QQVlFUl9CQUxBTkNFEIP8/////////wESQgo1VFJBTlNBQ1RJT05fVk1fRVJST1JfRkVFX1BBWUVSX0FDQ09VTlRfRE9FU19OT1RfRVhJU1QQhPz/////////ARIuCiFUUkFOU0FDVElPTl9WTV9FUlJPUl9OT1RfTElWRV9ZRVQQhfz/////////ARIpChxUUkFOU0FDVElPTl9WTV9FUlJPUl9FWFBJUkVEEIb8/////////wESPwoyVFJBTlNBQ1RJT05fVk1fRVJST1JfSU5WQUxJRF9GRUVfUEFZRVJfU1RBVEVfUFJPT0YQh/z/////////ARJECjdUUkFOU0FDVElPTl9WTV9FUlJPUl9JTlZBTElEX0ZFRV9QQVlFUl9TVEFURV9QUk9PRl9UWVBFEIj8/////////wESRAo3VFJBTlNBQ1RJT05fVk1fRVJST1JfSU5WQUxJRF9GRUVfUEFZRVJfU1RBVEVfUFJPT0ZfU0xPVBCJ/P////////8BEkEKNFRSQU5TQUNUSU9OX1ZNX0VSUk9SX0lOVkFMSURfRkVFX1BBWUVSX0FDQ09VTlRfT1dORVIQivz/////////ARJNCkBUUkFOU0FDVElPTl9WTV9FUlJPUl9JTlZBTElEX0ZFRV9QQVlFUl9TVEFURV9QUk9PRl9BQ0NPVU5UX09XTkVSEIv8/////////wESVApHVFJBTlNBQ1RJT05fVk1fRVJST1JfSU5WQUxJRF9GRUVfUEFZRVJfU1RBVEVfUFJPT0ZfQUNDT1VOVF9NRVRBX0RBVEFfU1oQjPz/////////ARJKCj1UUkFOU0FDVElPTl9WTV9FUlJPUl9GRUVfUEFZRVJfQUNUSVZBVElPTl9SRVFVSVJFU19TVEFURV9VTklUEI/8/////////wESPQowVFJBTlNBQ1RJT05fVk1fRVJST1JfQkxPQ0tfU1RBVEVfQlVER0VUX0VYQ0VFREVEEJD8/////////wESKwoeVFJBTlNBQ1RJT05fVk1fRVJST1JfVk1fRkFJTEVEEIH6/////////wESOQosVFJBTlNBQ1RJT05fVk1fRVJST1JfSU5WQUxJRF9QUk9HUkFNX0FDQ09VTlQQgvr/////////ARIrCh5UUkFOU0FDVElPTl9WTV9FUlJPUl9WTV9SRVZFUlQQg/r/////////ARIuCiFUUkFOU0FDVElPTl9WTV9FUlJPUl9DVV9FWEhBVVNURUQQhPr/////////ARIuCiFUUkFOU0FDVElPTl9WTV9FUlJPUl9TVV9FWEhBVVNURUQQhfr/////////AUK/AQoQY29tLnRocnUuY29yZS52MUIQVHJhbnNhY3Rpb25Qcm90b1ABWkBnaXRodWIuY29tL1VudG8tTGFicy90aHJ1LW5ldC9ncnBjL3BrZy9wcm90by90aHJ1L2NvcmUvdjE7Y29yZXYxogIDVENYqgIMVGhydS5Db3JlLlYxugIEVEhVQ8oCDFRocnVcQ29yZVxWMeICGFRocnVcQ29yZVxWMVxHUEJNZXRhZGF0YeoCDlRocnU6OkNvcmU6OlYxYgZwcm90bzM\", [file_buf_validate_validate, file_google_api_field_behavior, file_thru_core_v1_types, file_thru_common_v1_primitives]);\n\n/**\n * TransactionHeader carries structured metadata for a transaction.\n *\n * @generated from message thru.core.v1.TransactionHeader\n */\nexport type TransactionHeader = Message<\"thru.core.v1.TransactionHeader\"> & {\n  /**\n   * @generated from field: thru.common.v1.Signature fee_payer_signature = 1;\n   */\n  feePayerSignature?: Signature | undefined;\n\n  /**\n   * @generated from field: uint32 version = 2;\n   */\n  version: number;\n\n  /**\n   * @generated from field: uint32 flags = 3;\n   */\n  flags: number;\n\n  /**\n   * @generated from field: uint32 readwrite_accounts_count = 4;\n   */\n  readwriteAccountsCount: number;\n\n  /**\n   * @generated from field: uint32 readonly_accounts_count = 5;\n   */\n  readonlyAccountsCount: number;\n\n  /**\n   * @generated from field: uint32 instruction_data_size = 6;\n   */\n  instructionDataSize: number;\n\n  /**\n   * @generated from field: uint32 requested_compute_units = 7;\n   */\n  requestedComputeUnits: number;\n\n  /**\n   * @generated from field: uint32 requested_state_units = 8;\n   */\n  requestedStateUnits: number;\n\n  /**\n   * @generated from field: uint32 requested_memory_units = 9;\n   */\n  requestedMemoryUnits: number;\n\n  /**\n   * @generated from field: uint32 expiry_after = 10;\n   */\n  expiryAfter: number;\n\n  /**\n   * @generated from field: uint64 fee = 11;\n   */\n  fee: bigint;\n\n  /**\n   * @generated from field: uint64 nonce = 12;\n   */\n  nonce: bigint;\n\n  /**\n   * @generated from field: uint64 start_slot = 13;\n   */\n  startSlot: bigint;\n\n  /**\n   * @generated from field: thru.common.v1.Pubkey fee_payer_pubkey = 14;\n   */\n  feePayerPubkey?: Pubkey | undefined;\n\n  /**\n   * @generated from field: thru.common.v1.Pubkey program_pubkey = 15;\n   */\n  programPubkey?: Pubkey | undefined;\n\n  /**\n   * Chain identifier to prevent transaction replay across different chains.\n   *\n   * @generated from field: uint32 chain_id = 16;\n   */\n  chainId: number;\n};\n\n/**\n * Describes the message thru.core.v1.TransactionHeader.\n * Use `create(TransactionHeaderSchema)` to create a new message.\n */\nexport const TransactionHeaderSchema: GenMessage<TransactionHeader> = /*@__PURE__*/\n  messageDesc(file_thru_core_v1_transaction, 0);\n\n/**\n * TransactionExecutionResult captures execution outcomes.\n *\n * @generated from message thru.core.v1.TransactionExecutionResult\n */\nexport type TransactionExecutionResult = Message<\"thru.core.v1.TransactionExecutionResult\"> & {\n  /**\n   * @generated from field: uint32 consumed_compute_units = 1;\n   */\n  consumedComputeUnits: number;\n\n  /**\n   * @generated from field: uint32 consumed_memory_units = 2;\n   */\n  consumedMemoryUnits: number;\n\n  /**\n   * @generated from field: uint32 consumed_state_units = 3;\n   */\n  consumedStateUnits: number;\n\n  /**\n   * @generated from field: uint64 user_error_code = 4;\n   */\n  userErrorCode: bigint;\n\n  /**\n   * @generated from field: thru.core.v1.TransactionVmError vm_error = 5;\n   */\n  vmError: TransactionVmError;\n\n  /**\n   * @generated from field: uint64 execution_result = 6;\n   */\n  executionResult: bigint;\n\n  /**\n   * @generated from field: uint32 pages_used = 7;\n   */\n  pagesUsed: number;\n\n  /**\n   * @generated from field: uint32 events_count = 8;\n   */\n  eventsCount: number;\n\n  /**\n   * @generated from field: uint32 events_size = 9;\n   */\n  eventsSize: number;\n\n  /**\n   * @generated from field: repeated thru.common.v1.Pubkey readwrite_accounts = 10;\n   */\n  readwriteAccounts: Pubkey[];\n\n  /**\n   * @generated from field: repeated thru.common.v1.Pubkey readonly_accounts = 11;\n   */\n  readonlyAccounts: Pubkey[];\n\n  /**\n   * @generated from field: repeated thru.core.v1.TransactionEvent events = 12;\n   */\n  events: TransactionEvent[];\n\n  /**\n   * Account index of the program that caused the error (revert, fault, etc.).\n   * Only meaningful when vm_error indicates a failure.\n   *\n   * @generated from field: uint32 error_program_acc_idx = 13;\n   */\n  errorProgramAccIdx: number;\n\n  /**\n   * The nonce the runtime requires for the next transaction from this fee\n   * payer, as of this transaction's execution. Populated ONLY when vm_error is\n   * TRANSACTION_VM_ERROR_NONCE_TOO_LOW or TRANSACTION_VM_ERROR_NONCE_TOO_HIGH;\n   * absent otherwise. A nonce reject does not advance the nonce, so retrying\n   * with this value is correct.\n   *\n   * This is not necessarily the account's live nonce by the time you read it:\n   * another transaction from the same fee payer may have landed since. Treat it\n   * as a correction to retry against, not a reservation. For a fee payer\n   * restored by a creation state proof it is 0, and no account exists yet.\n   *\n   * @generated from field: optional uint64 fee_payer_expected_nonce = 14;\n   */\n  feePayerExpectedNonce?: bigint | undefined;\n};\n\n/**\n * Describes the message thru.core.v1.TransactionExecutionResult.\n * Use `create(TransactionExecutionResultSchema)` to create a new message.\n */\nexport const TransactionExecutionResultSchema: GenMessage<TransactionExecutionResult> = /*@__PURE__*/\n  messageDesc(file_thru_core_v1_transaction, 1);\n\n/**\n * TransactionEvent describes an event emitted during transaction execution.\n *\n * @generated from message thru.core.v1.TransactionEvent\n */\nexport type TransactionEvent = Message<\"thru.core.v1.TransactionEvent\"> & {\n  /**\n   * @generated from field: string event_id = 1;\n   */\n  eventId: string;\n\n  /**\n   * @generated from field: uint32 call_idx = 2;\n   */\n  callIdx: number;\n\n  /**\n   * @generated from field: uint32 program_idx = 3;\n   */\n  programIdx: number;\n\n  /**\n   * @generated from field: thru.common.v1.Pubkey program = 4;\n   */\n  program?: Pubkey | undefined;\n\n  /**\n   * @generated from field: bytes payload = 5;\n   */\n  payload: Uint8Array;\n};\n\n/**\n * Describes the message thru.core.v1.TransactionEvent.\n * Use `create(TransactionEventSchema)` to create a new message.\n */\nexport const TransactionEventSchema: GenMessage<TransactionEvent> = /*@__PURE__*/\n  messageDesc(file_thru_core_v1_transaction, 2);\n\n/**\n * Transaction describes a fully decoded transaction resource.\n *\n * @generated from message thru.core.v1.Transaction\n */\nexport type Transaction = Message<\"thru.core.v1.Transaction\"> & {\n  /**\n   * @generated from field: thru.common.v1.Signature signature = 1;\n   */\n  signature?: Signature | undefined;\n\n  /**\n   * @generated from field: thru.core.v1.TransactionHeader header = 2;\n   */\n  header?: TransactionHeader | undefined;\n\n  /**\n   * @generated from field: optional bytes body = 3;\n   */\n  body?: Uint8Array | undefined;\n\n  /**\n   * @generated from field: optional thru.core.v1.TransactionExecutionResult execution_result = 4;\n   */\n  executionResult?: TransactionExecutionResult | undefined;\n\n  /**\n   * @generated from field: optional uint64 slot = 5;\n   */\n  slot?: bigint | undefined;\n\n  /**\n   * @generated from field: optional uint32 block_offset = 6;\n   */\n  blockOffset?: number | undefined;\n};\n\n/**\n * Describes the message thru.core.v1.Transaction.\n * Use `create(TransactionSchema)` to create a new message.\n */\nexport const TransactionSchema: GenMessage<Transaction> = /*@__PURE__*/\n  messageDesc(file_thru_core_v1_transaction, 3);\n\n/**\n * RawTransaction provides direct access to serialized transaction bytes.\n *\n * @generated from message thru.core.v1.RawTransaction\n */\nexport type RawTransaction = Message<\"thru.core.v1.RawTransaction\"> & {\n  /**\n   * @generated from field: thru.common.v1.Signature signature = 1;\n   */\n  signature?: Signature | undefined;\n\n  /**\n   * @generated from field: bytes raw_transaction = 2;\n   */\n  rawTransaction: Uint8Array;\n};\n\n/**\n * Describes the message thru.core.v1.RawTransaction.\n * Use `create(RawTransactionSchema)` to create a new message.\n */\nexport const RawTransactionSchema: GenMessage<RawTransaction> = /*@__PURE__*/\n  messageDesc(file_thru_core_v1_transaction, 4);\n\n/**\n * TransactionView controls how transactions are materialized in responses.\n *\n * @generated from enum thru.core.v1.TransactionView\n */\nexport enum TransactionView {\n  /**\n   * @generated from enum value: TRANSACTION_VIEW_UNSPECIFIED = 0;\n   */\n  UNSPECIFIED = 0,\n\n  /**\n   * @generated from enum value: TRANSACTION_VIEW_SIGNATURE_ONLY = 1;\n   */\n  SIGNATURE_ONLY = 1,\n\n  /**\n   * @generated from enum value: TRANSACTION_VIEW_HEADER_ONLY = 2;\n   */\n  HEADER_ONLY = 2,\n\n  /**\n   * @generated from enum value: TRANSACTION_VIEW_HEADER_AND_BODY = 3;\n   */\n  HEADER_AND_BODY = 3,\n\n  /**\n   * @generated from enum value: TRANSACTION_VIEW_FULL = 4;\n   */\n  FULL = 4,\n}\n\n/**\n * Describes the enum thru.core.v1.TransactionView.\n */\nexport const TransactionViewSchema: GenEnum<TransactionView> = /*@__PURE__*/\n  enumDesc(file_thru_core_v1_transaction, 0);\n\n/**\n * TransactionVmError enumerates runtime error codes returned by the executor.\n *\n * @generated from enum thru.core.v1.TransactionVmError\n */\nexport enum TransactionVmError {\n  /**\n   * TN_RUNTIME_TXN_EXECUTE_SUCCESS\n   *\n   * @generated from enum value: TRANSACTION_VM_EXECUTE_SUCCESS = 0;\n   */\n  TRANSACTION_VM_EXECUTE_SUCCESS = 0,\n\n  /**\n   * TN_RUNTIME_TXN_ERR_INVALID_FORMAT\n   *\n   * @generated from enum value: TRANSACTION_VM_ERROR_INVALID_FORMAT = -255;\n   */\n  TRANSACTION_VM_ERROR_INVALID_FORMAT = -255,\n\n  /**\n   * TN_RUNTIME_TXN_ERR_INVALID_VERSION\n   *\n   * @generated from enum value: TRANSACTION_VM_ERROR_INVALID_VERSION = -254;\n   */\n  TRANSACTION_VM_ERROR_INVALID_VERSION = -254,\n\n  /**\n   * TN_RUNTIME_TXN_ERR_INVALID_FLAGS\n   *\n   * @generated from enum value: TRANSACTION_VM_ERROR_INVALID_FLAGS = -253;\n   */\n  TRANSACTION_VM_ERROR_INVALID_FLAGS = -253,\n\n  /**\n   * TN_RUNTIME_TXN_ERR_INVALID_SIGNATURE\n   *\n   * @generated from enum value: TRANSACTION_VM_ERROR_INVALID_SIGNATURE = -252;\n   */\n  TRANSACTION_VM_ERROR_INVALID_SIGNATURE = -252,\n\n  /**\n   * TN_RUNTIME_TXN_ERR_DUPLICATE_ACCOUNT\n   *\n   * @generated from enum value: TRANSACTION_VM_ERROR_DUPLICATE_ACCOUNT = -251;\n   */\n  TRANSACTION_VM_ERROR_DUPLICATE_ACCOUNT = -251,\n\n  /**\n   * TN_RUNTIME_TXN_ERR_UNSORTED_ACCOUNTS\n   *\n   * @generated from enum value: TRANSACTION_VM_ERROR_UNSORTED_ACCOUNTS = -250;\n   */\n  TRANSACTION_VM_ERROR_UNSORTED_ACCOUNTS = -250,\n\n  /**\n   * TN_RUNTIME_TXN_ERR_UNSORTED_READWRITE_ACCOUNTS\n   *\n   * @generated from enum value: TRANSACTION_VM_ERROR_UNSORTED_READWRITE_ACCOUNTS = -249;\n   */\n  TRANSACTION_VM_ERROR_UNSORTED_READWRITE_ACCOUNTS = -249,\n\n  /**\n   * TN_RUNTIME_TXN_ERR_UNSORTED_READONLY_ACCOUNTS\n   *\n   * @generated from enum value: TRANSACTION_VM_ERROR_UNSORTED_READONLY_ACCOUNTS = -248;\n   */\n  TRANSACTION_VM_ERROR_UNSORTED_READONLY_ACCOUNTS = -248,\n\n  /**\n   * TN_RUNTIME_TXN_ERR_ACCOUNT_COUNT_LIMIT_EXCEEDED\n   *\n   * @generated from enum value: TRANSACTION_VM_ERROR_ACCOUNT_COUNT_LIMIT_EXCEEDED = -247;\n   */\n  TRANSACTION_VM_ERROR_ACCOUNT_COUNT_LIMIT_EXCEEDED = -247,\n\n  /**\n   * TN_RUNTIME_TXN_ERR_NONCE_TOO_LOW\n   *\n   * @generated from enum value: TRANSACTION_VM_ERROR_NONCE_TOO_LOW = -511;\n   */\n  TRANSACTION_VM_ERROR_NONCE_TOO_LOW = -511,\n\n  /**\n   * TN_RUNTIME_TXN_ERR_NONCE_TOO_HIGH\n   *\n   * @generated from enum value: TRANSACTION_VM_ERROR_NONCE_TOO_HIGH = -510;\n   */\n  TRANSACTION_VM_ERROR_NONCE_TOO_HIGH = -510,\n\n  /**\n   * TN_RUNTIME_TXN_ERR_INSUFFICIENT_FEE_PAYER_BALANCE\n   *\n   * @generated from enum value: TRANSACTION_VM_ERROR_INSUFFICIENT_FEE_PAYER_BALANCE = -509;\n   */\n  TRANSACTION_VM_ERROR_INSUFFICIENT_FEE_PAYER_BALANCE = -509,\n\n  /**\n   * TN_RUNTIME_TXN_ERR_FEE_PAYER_ACCOUNT_DOES_NOT_EXIST\n   *\n   * @generated from enum value: TRANSACTION_VM_ERROR_FEE_PAYER_ACCOUNT_DOES_NOT_EXIST = -508;\n   */\n  TRANSACTION_VM_ERROR_FEE_PAYER_ACCOUNT_DOES_NOT_EXIST = -508,\n\n  /**\n   * TN_RUNTIME_TXN_ERR_NOT_LIVE_YET\n   *\n   * @generated from enum value: TRANSACTION_VM_ERROR_NOT_LIVE_YET = -507;\n   */\n  TRANSACTION_VM_ERROR_NOT_LIVE_YET = -507,\n\n  /**\n   * TN_RUNTIME_TXN_ERR_EXPIRED\n   *\n   * @generated from enum value: TRANSACTION_VM_ERROR_EXPIRED = -506;\n   */\n  TRANSACTION_VM_ERROR_EXPIRED = -506,\n\n  /**\n   * TN_RUNTIME_TXN_ERR_INVALID_FEE_PAYER_STATE_PROOF\n   *\n   * @generated from enum value: TRANSACTION_VM_ERROR_INVALID_FEE_PAYER_STATE_PROOF = -505;\n   */\n  TRANSACTION_VM_ERROR_INVALID_FEE_PAYER_STATE_PROOF = -505,\n\n  /**\n   * TN_RUNTIME_TXN_ERR_INVALID_FEE_PAYER_STATE_PROOF_TYPE\n   *\n   * @generated from enum value: TRANSACTION_VM_ERROR_INVALID_FEE_PAYER_STATE_PROOF_TYPE = -504;\n   */\n  TRANSACTION_VM_ERROR_INVALID_FEE_PAYER_STATE_PROOF_TYPE = -504,\n\n  /**\n   * TN_RUNTIME_TXN_ERR_INVALID_FEE_PAYER_STATE_PROOF_SLOT\n   *\n   * @generated from enum value: TRANSACTION_VM_ERROR_INVALID_FEE_PAYER_STATE_PROOF_SLOT = -503;\n   */\n  TRANSACTION_VM_ERROR_INVALID_FEE_PAYER_STATE_PROOF_SLOT = -503,\n\n  /**\n   * TN_RUNTIME_TXN_ERR_INVALID_FEE_PAYER_ACCOUNT_OWNER\n   *\n   * @generated from enum value: TRANSACTION_VM_ERROR_INVALID_FEE_PAYER_ACCOUNT_OWNER = -502;\n   */\n  TRANSACTION_VM_ERROR_INVALID_FEE_PAYER_ACCOUNT_OWNER = -502,\n\n  /**\n   * TN_RUNTIME_TXN_ERR_INVALID_FEE_PAYER_STATE_PROOF_ACCOUNT_OWNER\n   *\n   * @generated from enum value: TRANSACTION_VM_ERROR_INVALID_FEE_PAYER_STATE_PROOF_ACCOUNT_OWNER = -501;\n   */\n  TRANSACTION_VM_ERROR_INVALID_FEE_PAYER_STATE_PROOF_ACCOUNT_OWNER = -501,\n\n  /**\n   * TN_RUNTIME_TXN_ERR_INVALID_FEE_PAYER_STATE_PROOF_ACCOUNT_META_DATA_SZ\n   *\n   * @generated from enum value: TRANSACTION_VM_ERROR_INVALID_FEE_PAYER_STATE_PROOF_ACCOUNT_META_DATA_SZ = -500;\n   */\n  TRANSACTION_VM_ERROR_INVALID_FEE_PAYER_STATE_PROOF_ACCOUNT_META_DATA_SZ = -500,\n\n  /**\n   * TN_RUNTIME_TXN_ERR_FEE_PAYER_ACTIVATION_REQUIRES_STATE_UNIT\n   *\n   * @generated from enum value: TRANSACTION_VM_ERROR_FEE_PAYER_ACTIVATION_REQUIRES_STATE_UNIT = -497;\n   */\n  TRANSACTION_VM_ERROR_FEE_PAYER_ACTIVATION_REQUIRES_STATE_UNIT = -497,\n\n  /**\n   * TN_RUNTIME_TXN_ERR_BLOCK_STATE_BUDGET_EXCEEDED\n   *\n   * @generated from enum value: TRANSACTION_VM_ERROR_BLOCK_STATE_BUDGET_EXCEEDED = -496;\n   */\n  TRANSACTION_VM_ERROR_BLOCK_STATE_BUDGET_EXCEEDED = -496,\n\n  /**\n   * TN_RUNTIME_TXN_ERR_VM_FAILED\n   *\n   * @generated from enum value: TRANSACTION_VM_ERROR_VM_FAILED = -767;\n   */\n  TRANSACTION_VM_ERROR_VM_FAILED = -767,\n\n  /**\n   * TN_RUNTIME_TXN_ERR_INVALID_PROGRAM_ACCOUNT\n   *\n   * @generated from enum value: TRANSACTION_VM_ERROR_INVALID_PROGRAM_ACCOUNT = -766;\n   */\n  TRANSACTION_VM_ERROR_INVALID_PROGRAM_ACCOUNT = -766,\n\n  /**\n   * TN_RUNTIME_TXN_ERR_VM_REVERT\n   *\n   * @generated from enum value: TRANSACTION_VM_ERROR_VM_REVERT = -765;\n   */\n  TRANSACTION_VM_ERROR_VM_REVERT = -765,\n\n  /**\n   * TN_RUNTIME_TXN_ERR_CU_EXHAUSTED\n   *\n   * @generated from enum value: TRANSACTION_VM_ERROR_CU_EXHAUSTED = -764;\n   */\n  TRANSACTION_VM_ERROR_CU_EXHAUSTED = -764,\n\n  /**\n   * TN_RUNTIME_TXN_ERR_SU_EXHAUSTED\n   *\n   * @generated from enum value: TRANSACTION_VM_ERROR_SU_EXHAUSTED = -763;\n   */\n  TRANSACTION_VM_ERROR_SU_EXHAUSTED = -763,\n}\n\n/**\n * Describes the enum thru.core.v1.TransactionVmError.\n */\nexport const TransactionVmErrorSchema: GenEnum<TransactionVmError> = /*@__PURE__*/\n  enumDesc(file_thru_core_v1_transaction, 1);\n\n","// Copyright 2026 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// @generated by protoc-gen-es v2.12.0 with parameter \"target=ts\"\n// @generated from file google/api/http.proto (package google.api, syntax proto3)\n/* eslint-disable */\n\nimport type { GenFile, GenMessage } from \"@bufbuild/protobuf/codegenv2\";\nimport { fileDesc, messageDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file google/api/http.proto.\n */\nexport const file_google_api_http: GenFile = /*@__PURE__*/\n  fileDesc(\"ChVnb29nbGUvYXBpL2h0dHAucHJvdG8SCmdvb2dsZS5hcGkiVAoESHR0cBIjCgVydWxlcxgBIAMoCzIULmdvb2dsZS5hcGkuSHR0cFJ1bGUSJwofZnVsbHlfZGVjb2RlX3Jlc2VydmVkX2V4cGFuc2lvbhgCIAEoCCKBAgoISHR0cFJ1bGUSEAoIc2VsZWN0b3IYASABKAkSDQoDZ2V0GAIgASgJSAASDQoDcHV0GAMgASgJSAASDgoEcG9zdBgEIAEoCUgAEhAKBmRlbGV0ZRgFIAEoCUgAEg8KBXBhdGNoGAYgASgJSAASLwoGY3VzdG9tGAggASgLMh0uZ29vZ2xlLmFwaS5DdXN0b21IdHRwUGF0dGVybkgAEgwKBGJvZHkYByABKAkSFQoNcmVzcG9uc2VfYm9keRgMIAEoCRIxChNhZGRpdGlvbmFsX2JpbmRpbmdzGAsgAygLMhQuZ29vZ2xlLmFwaS5IdHRwUnVsZUIJCgdwYXR0ZXJuIi8KEUN1c3RvbUh0dHBQYXR0ZXJuEgwKBGtpbmQYASABKAkSDAoEcGF0aBgCIAEoCUKnAQoOY29tLmdvb2dsZS5hcGlCCUh0dHBQcm90b1ABWkFnb29nbGUuZ29sYW5nLm9yZy9nZW5wcm90by9nb29nbGVhcGlzL2FwaS9hbm5vdGF0aW9uczthbm5vdGF0aW9uc6ICA0dBWKoCCkdvb2dsZS5BcGnKAgpHb29nbGVcQXBp4gIWR29vZ2xlXEFwaVxHUEJNZXRhZGF0YeoCC0dvb2dsZTo6QXBpYgZwcm90bzM\");\n\n/**\n * Defines the HTTP configuration for an API service. It contains a list of\n * [HttpRule][google.api.HttpRule], each specifying the mapping of an RPC method\n * to one or more HTTP REST API methods.\n *\n * @generated from message google.api.Http\n */\nexport type Http = Message<\"google.api.Http\"> & {\n  /**\n   * A list of HTTP configuration rules that apply to individual API methods.\n   *\n   * **NOTE:** All service configuration rules follow \"last one wins\" order.\n   *\n   * @generated from field: repeated google.api.HttpRule rules = 1;\n   */\n  rules: HttpRule[];\n\n  /**\n   * When set to true, URL path parameters will be fully URI-decoded except in\n   * cases of single segment matches in reserved expansion, where \"%2F\" will be\n   * left encoded.\n   *\n   * The default behavior is to not decode RFC 6570 reserved characters in multi\n   * segment matches.\n   *\n   * @generated from field: bool fully_decode_reserved_expansion = 2;\n   */\n  fullyDecodeReservedExpansion: boolean;\n};\n\n/**\n * Describes the message google.api.Http.\n * Use `create(HttpSchema)` to create a new message.\n */\nexport const HttpSchema: GenMessage<Http> = /*@__PURE__*/\n  messageDesc(file_google_api_http, 0);\n\n/**\n * gRPC Transcoding\n *\n * gRPC Transcoding is a feature for mapping between a gRPC method and one or\n * more HTTP REST endpoints. It allows developers to build a single API service\n * that supports both gRPC APIs and REST APIs. Many systems, including [Google\n * APIs](https://github.com/googleapis/googleapis),\n * [Cloud Endpoints](https://cloud.google.com/endpoints), [gRPC\n * Gateway](https://github.com/grpc-ecosystem/grpc-gateway),\n * and [Envoy](https://github.com/envoyproxy/envoy) proxy support this feature\n * and use it for large scale production services.\n *\n * `HttpRule` defines the schema of the gRPC/REST mapping. The mapping specifies\n * how different portions of the gRPC request message are mapped to the URL\n * path, URL query parameters, and HTTP request body. It also controls how the\n * gRPC response message is mapped to the HTTP response body. `HttpRule` is\n * typically specified as an `google.api.http` annotation on the gRPC method.\n *\n * Each mapping specifies a URL path template and an HTTP method. The path\n * template may refer to one or more fields in the gRPC request message, as long\n * as each field is a non-repeated field with a primitive (non-message) type.\n * The path template controls how fields of the request message are mapped to\n * the URL path.\n *\n * Example:\n *\n *     service Messaging {\n *       rpc GetMessage(GetMessageRequest) returns (Message) {\n *         option (google.api.http) = {\n *             get: \"/v1/{name=messages/*}\"\n *         };\n *       }\n *     }\n *     message GetMessageRequest {\n *       string name = 1; // Mapped to URL path.\n *     }\n *     message Message {\n *       string text = 1; // The resource content.\n *     }\n *\n * This enables an HTTP REST to gRPC mapping as below:\n *\n * - HTTP: `GET /v1/messages/123456`\n * - gRPC: `GetMessage(name: \"messages/123456\")`\n *\n * Any fields in the request message which are not bound by the path template\n * automatically become HTTP query parameters if there is no HTTP request body.\n * For example:\n *\n *     service Messaging {\n *       rpc GetMessage(GetMessageRequest) returns (Message) {\n *         option (google.api.http) = {\n *             get:\"/v1/messages/{message_id}\"\n *         };\n *       }\n *     }\n *     message GetMessageRequest {\n *       message SubMessage {\n *         string subfield = 1;\n *       }\n *       string message_id = 1; // Mapped to URL path.\n *       int64 revision = 2;    // Mapped to URL query parameter `revision`.\n *       SubMessage sub = 3;    // Mapped to URL query parameter `sub.subfield`.\n *     }\n *\n * This enables a HTTP JSON to RPC mapping as below:\n *\n * - HTTP: `GET /v1/messages/123456?revision=2&sub.subfield=foo`\n * - gRPC: `GetMessage(message_id: \"123456\" revision: 2 sub:\n * SubMessage(subfield: \"foo\"))`\n *\n * Note that fields which are mapped to URL query parameters must have a\n * primitive type or a repeated primitive type or a non-repeated message type.\n * In the case of a repeated type, the parameter can be repeated in the URL\n * as `...?param=A&param=B`. In the case of a message type, each field of the\n * message is mapped to a separate parameter, such as\n * `...?foo.a=A&foo.b=B&foo.c=C`.\n *\n * For HTTP methods that allow a request body, the `body` field\n * specifies the mapping. Consider a REST update method on the\n * message resource collection:\n *\n *     service Messaging {\n *       rpc UpdateMessage(UpdateMessageRequest) returns (Message) {\n *         option (google.api.http) = {\n *           patch: \"/v1/messages/{message_id}\"\n *           body: \"message\"\n *         };\n *       }\n *     }\n *     message UpdateMessageRequest {\n *       string message_id = 1; // mapped to the URL\n *       Message message = 2;   // mapped to the body\n *     }\n *\n * The following HTTP JSON to RPC mapping is enabled, where the\n * representation of the JSON in the request body is determined by\n * protos JSON encoding:\n *\n * - HTTP: `PATCH /v1/messages/123456 { \"text\": \"Hi!\" }`\n * - gRPC: `UpdateMessage(message_id: \"123456\" message { text: \"Hi!\" })`\n *\n * The special name `*` can be used in the body mapping to define that\n * every field not bound by the path template should be mapped to the\n * request body.  This enables the following alternative definition of\n * the update method:\n *\n *     service Messaging {\n *       rpc UpdateMessage(Message) returns (Message) {\n *         option (google.api.http) = {\n *           patch: \"/v1/messages/{message_id}\"\n *           body: \"*\"\n *         };\n *       }\n *     }\n *     message Message {\n *       string message_id = 1;\n *       string text = 2;\n *     }\n *\n *\n * The following HTTP JSON to RPC mapping is enabled:\n *\n * - HTTP: `PATCH /v1/messages/123456 { \"text\": \"Hi!\" }`\n * - gRPC: `UpdateMessage(message_id: \"123456\" text: \"Hi!\")`\n *\n * Note that when using `*` in the body mapping, it is not possible to\n * have HTTP parameters, as all fields not bound by the path end in\n * the body. This makes this option more rarely used in practice when\n * defining REST APIs. The common usage of `*` is in custom methods\n * which don't use the URL at all for transferring data.\n *\n * It is possible to define multiple HTTP methods for one RPC by using\n * the `additional_bindings` option. Example:\n *\n *     service Messaging {\n *       rpc GetMessage(GetMessageRequest) returns (Message) {\n *         option (google.api.http) = {\n *           get: \"/v1/messages/{message_id}\"\n *           additional_bindings {\n *             get: \"/v1/users/{user_id}/messages/{message_id}\"\n *           }\n *         };\n *       }\n *     }\n *     message GetMessageRequest {\n *       string message_id = 1;\n *       string user_id = 2;\n *     }\n *\n * This enables the following two alternative HTTP JSON to RPC mappings:\n *\n * - HTTP: `GET /v1/messages/123456`\n * - gRPC: `GetMessage(message_id: \"123456\")`\n *\n * - HTTP: `GET /v1/users/me/messages/123456`\n * - gRPC: `GetMessage(user_id: \"me\" message_id: \"123456\")`\n *\n * Rules for HTTP mapping\n *\n * 1. Leaf request fields (recursive expansion nested messages in the request\n *    message) are classified into three categories:\n *    - Fields referred by the path template. They are passed via the URL path.\n *    - Fields referred by the [HttpRule.body][google.api.HttpRule.body]. They\n *    are passed via the HTTP\n *      request body.\n *    - All other fields are passed via the URL query parameters, and the\n *      parameter name is the field path in the request message. A repeated\n *      field can be represented as multiple query parameters under the same\n *      name.\n *  2. If [HttpRule.body][google.api.HttpRule.body] is \"*\", there is no URL\n *  query parameter, all fields\n *     are passed via URL path and HTTP request body.\n *  3. If [HttpRule.body][google.api.HttpRule.body] is omitted, there is no HTTP\n *  request body, all\n *     fields are passed via URL path and URL query parameters.\n *\n * Path template syntax\n *\n *     Template = \"/\" Segments [ Verb ] ;\n *     Segments = Segment { \"/\" Segment } ;\n *     Segment  = \"*\" | \"**\" | LITERAL | Variable ;\n *     Variable = \"{\" FieldPath [ \"=\" Segments ] \"}\" ;\n *     FieldPath = IDENT { \".\" IDENT } ;\n *     Verb     = \":\" LITERAL ;\n *\n * The syntax `*` matches a single URL path segment. The syntax `**` matches\n * zero or more URL path segments, which must be the last part of the URL path\n * except the `Verb`.\n *\n * The syntax `Variable` matches part of the URL path as specified by its\n * template. A variable template must not contain other variables. If a variable\n * matches a single path segment, its template may be omitted, e.g. `{var}`\n * is equivalent to `{var=*}`.\n *\n * The syntax `LITERAL` matches literal text in the URL path. If the `LITERAL`\n * contains any reserved character, such characters should be percent-encoded\n * before the matching.\n *\n * If a variable contains exactly one path segment, such as `\"{var}\"` or\n * `\"{var=*}\"`, when such a variable is expanded into a URL path on the client\n * side, all characters except `[-_.~0-9a-zA-Z]` are percent-encoded. The\n * server side does the reverse decoding. Such variables show up in the\n * [Discovery\n * Document](https://developers.google.com/discovery/v1/reference/apis) as\n * `{var}`.\n *\n * If a variable contains multiple path segments, such as `\"{var=foo/*}\"`\n * or `\"{var=**}\"`, when such a variable is expanded into a URL path on the\n * client side, all characters except `[-_.~/0-9a-zA-Z]` are percent-encoded.\n * The server side does the reverse decoding, except \"%2F\" and \"%2f\" are left\n * unchanged. Such variables show up in the\n * [Discovery\n * Document](https://developers.google.com/discovery/v1/reference/apis) as\n * `{+var}`.\n *\n * Using gRPC API Service Configuration\n *\n * gRPC API Service Configuration (service config) is a configuration language\n * for configuring a gRPC service to become a user-facing product. The\n * service config is simply the YAML representation of the `google.api.Service`\n * proto message.\n *\n * As an alternative to annotating your proto file, you can configure gRPC\n * transcoding in your service config YAML files. You do this by specifying a\n * `HttpRule` that maps the gRPC method to a REST endpoint, achieving the same\n * effect as the proto annotation. This can be particularly useful if you\n * have a proto that is reused in multiple services. Note that any transcoding\n * specified in the service config will override any matching transcoding\n * configuration in the proto.\n *\n * The following example selects a gRPC method and applies an `HttpRule` to it:\n *\n *     http:\n *       rules:\n *         - selector: example.v1.Messaging.GetMessage\n *           get: /v1/messages/{message_id}/{sub.subfield}\n *\n * Special notes\n *\n * When gRPC Transcoding is used to map a gRPC to JSON REST endpoints, the\n * proto to JSON conversion must follow the [proto3\n * specification](https://developers.google.com/protocol-buffers/docs/proto3#json).\n *\n * While the single segment variable follows the semantics of\n * [RFC 6570](https://tools.ietf.org/html/rfc6570) Section 3.2.2 Simple String\n * Expansion, the multi segment variable **does not** follow RFC 6570 Section\n * 3.2.3 Reserved Expansion. The reason is that the Reserved Expansion\n * does not expand special characters like `?` and `#`, which would lead\n * to invalid URLs. As the result, gRPC Transcoding uses a custom encoding\n * for multi segment variables.\n *\n * The path variables **must not** refer to any repeated or mapped field,\n * because client libraries are not capable of handling such variable expansion.\n *\n * The path variables **must not** capture the leading \"/\" character. The reason\n * is that the most common use case \"{var}\" does not capture the leading \"/\"\n * character. For consistency, all path variables must share the same behavior.\n *\n * Repeated message fields must not be mapped to URL query parameters, because\n * no client library can support such complicated mapping.\n *\n * If an API needs to use a JSON array for request or response body, it can map\n * the request or response body to a repeated field. However, some gRPC\n * Transcoding implementations may not support this feature.\n *\n * @generated from message google.api.HttpRule\n */\nexport type HttpRule = Message<\"google.api.HttpRule\"> & {\n  /**\n   * Selects a method to which this rule applies.\n   *\n   * Refer to [selector][google.api.DocumentationRule.selector] for syntax\n   * details.\n   *\n   * @generated from field: string selector = 1;\n   */\n  selector: string;\n\n  /**\n   * Determines the URL pattern is matched by this rules. This pattern can be\n   * used with any of the {get|put|post|delete|patch} methods. A custom method\n   * can be defined using the 'custom' field.\n   *\n   * @generated from oneof google.api.HttpRule.pattern\n   */\n  pattern: {\n    /**\n     * Maps to HTTP GET. Used for listing and getting information about\n     * resources.\n     *\n     * @generated from field: string get = 2;\n     */\n    value: string;\n    case: \"get\";\n  } | {\n    /**\n     * Maps to HTTP PUT. Used for replacing a resource.\n     *\n     * @generated from field: string put = 3;\n     */\n    value: string;\n    case: \"put\";\n  } | {\n    /**\n     * Maps to HTTP POST. Used for creating a resource or performing an action.\n     *\n     * @generated from field: string post = 4;\n     */\n    value: string;\n    case: \"post\";\n  } | {\n    /**\n     * Maps to HTTP DELETE. Used for deleting a resource.\n     *\n     * @generated from field: string delete = 5;\n     */\n    value: string;\n    case: \"delete\";\n  } | {\n    /**\n     * Maps to HTTP PATCH. Used for updating a resource.\n     *\n     * @generated from field: string patch = 6;\n     */\n    value: string;\n    case: \"patch\";\n  } | {\n    /**\n     * The custom pattern is used for specifying an HTTP method that is not\n     * included in the `pattern` field, such as HEAD, or \"*\" to leave the\n     * HTTP method unspecified for this rule. The wild-card rule is useful\n     * for services that provide content to Web (HTML) clients.\n     *\n     * @generated from field: google.api.CustomHttpPattern custom = 8;\n     */\n    value: CustomHttpPattern;\n    case: \"custom\";\n  } | { case: undefined; value?: undefined };\n\n  /**\n   * The name of the request field whose value is mapped to the HTTP request\n   * body, or `*` for mapping all request fields not captured by the path\n   * pattern to the HTTP body, or omitted for not having any HTTP request body.\n   *\n   * NOTE: the referred field must be present at the top-level of the request\n   * message type.\n   *\n   * @generated from field: string body = 7;\n   */\n  body: string;\n\n  /**\n   * Optional. The name of the response field whose value is mapped to the HTTP\n   * response body. When omitted, the entire response message will be used\n   * as the HTTP response body.\n   *\n   * NOTE: The referred field must be present at the top-level of the response\n   * message type.\n   *\n   * @generated from field: string response_body = 12;\n   */\n  responseBody: string;\n\n  /**\n   * Additional HTTP bindings for the selector. Nested bindings must\n   * not contain an `additional_bindings` field themselves (that is,\n   * the nesting may only be one level deep).\n   *\n   * @generated from field: repeated google.api.HttpRule additional_bindings = 11;\n   */\n  additionalBindings: HttpRule[];\n};\n\n/**\n * Describes the message google.api.HttpRule.\n * Use `create(HttpRuleSchema)` to create a new message.\n */\nexport const HttpRuleSchema: GenMessage<HttpRule> = /*@__PURE__*/\n  messageDesc(file_google_api_http, 1);\n\n/**\n * A custom pattern is used for defining custom HTTP verb.\n *\n * @generated from message google.api.CustomHttpPattern\n */\nexport type CustomHttpPattern = Message<\"google.api.CustomHttpPattern\"> & {\n  /**\n   * The name of this custom HTTP verb.\n   *\n   * @generated from field: string kind = 1;\n   */\n  kind: string;\n\n  /**\n   * The path matched by this custom verb.\n   *\n   * @generated from field: string path = 2;\n   */\n  path: string;\n};\n\n/**\n * Describes the message google.api.CustomHttpPattern.\n * Use `create(CustomHttpPatternSchema)` to create a new message.\n */\nexport const CustomHttpPatternSchema: GenMessage<CustomHttpPattern> = /*@__PURE__*/\n  messageDesc(file_google_api_http, 2);\n\n","// Copyright 2025 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// @generated by protoc-gen-es v2.12.0 with parameter \"target=ts\"\n// @generated from file google/api/annotations.proto (package google.api, syntax proto3)\n/* eslint-disable */\n\nimport type { GenExtension, GenFile } from \"@bufbuild/protobuf/codegenv2\";\nimport { extDesc, fileDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport type { HttpRule } from \"./http_pb\";\nimport { file_google_api_http } from \"./http_pb\";\nimport type { MethodOptions } from \"@bufbuild/protobuf/wkt\";\nimport { file_google_protobuf_descriptor } from \"@bufbuild/protobuf/wkt\";\n\n/**\n * Describes the file google/api/annotations.proto.\n */\nexport const file_google_api_annotations: GenFile = /*@__PURE__*/\n  fileDesc(\"Chxnb29nbGUvYXBpL2Fubm90YXRpb25zLnByb3RvEgpnb29nbGUuYXBpOksKBGh0dHASHi5nb29nbGUucHJvdG9idWYuTWV0aG9kT3B0aW9ucxiwyrwiIAEoCzIULmdvb2dsZS5hcGkuSHR0cFJ1bGVSBGh0dHBCrgEKDmNvbS5nb29nbGUuYXBpQhBBbm5vdGF0aW9uc1Byb3RvUAFaQWdvb2dsZS5nb2xhbmcub3JnL2dlbnByb3RvL2dvb2dsZWFwaXMvYXBpL2Fubm90YXRpb25zO2Fubm90YXRpb25zogIDR0FYqgIKR29vZ2xlLkFwacoCCkdvb2dsZVxBcGniAhZHb29nbGVcQXBpXEdQQk1ldGFkYXRh6gILR29vZ2xlOjpBcGliBnByb3RvMw\", [file_google_api_http, file_google_protobuf_descriptor]);\n\n/**\n * See `HttpRule`.\n *\n * @generated from extension: google.api.HttpRule http = 72295728;\n */\nexport const http: GenExtension<MethodOptions, HttpRule> = /*@__PURE__*/\n  extDesc(file_google_api_annotations, 0);\n\n","// Copyright 2026 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// @generated by protoc-gen-es v2.12.0 with parameter \"target=ts\"\n// @generated from file google/api/launch_stage.proto (package google.api, syntax proto3)\n/* eslint-disable */\n\nimport type { GenEnum, GenFile } from \"@bufbuild/protobuf/codegenv2\";\nimport { enumDesc, fileDesc } from \"@bufbuild/protobuf/codegenv2\";\n\n/**\n * Describes the file google/api/launch_stage.proto.\n */\nexport const file_google_api_launch_stage: GenFile = /*@__PURE__*/\n  fileDesc(\"Ch1nb29nbGUvYXBpL2xhdW5jaF9zdGFnZS5wcm90bxIKZ29vZ2xlLmFwaSqMAQoLTGF1bmNoU3RhZ2USHAoYTEFVTkNIX1NUQUdFX1VOU1BFQ0lGSUVEEAASEQoNVU5JTVBMRU1FTlRFRBAGEg0KCVBSRUxBVU5DSBAHEhAKDEVBUkxZX0FDQ0VTUxABEgkKBUFMUEhBEAISCAoEQkVUQRADEgYKAkdBEAQSDgoKREVQUkVDQVRFRBAFQpoBCg5jb20uZ29vZ2xlLmFwaUIQTGF1bmNoU3RhZ2VQcm90b1ABWi1nb29nbGUuZ29sYW5nLm9yZy9nZW5wcm90by9nb29nbGVhcGlzL2FwaTthcGmiAgNHQViqAgpHb29nbGUuQXBpygIKR29vZ2xlXEFwaeICFkdvb2dsZVxBcGlcR1BCTWV0YWRhdGHqAgtHb29nbGU6OkFwaWIGcHJvdG8z\");\n\n/**\n * The launch stage as defined by [Google Cloud Platform\n * Launch Stages](https://cloud.google.com/terms/launch-stages).\n *\n * @generated from enum google.api.LaunchStage\n */\nexport enum LaunchStage {\n  /**\n   * Do not use this default value.\n   *\n   * @generated from enum value: LAUNCH_STAGE_UNSPECIFIED = 0;\n   */\n  LAUNCH_STAGE_UNSPECIFIED = 0,\n\n  /**\n   * The feature is not yet implemented. Users can not use it.\n   *\n   * @generated from enum value: UNIMPLEMENTED = 6;\n   */\n  UNIMPLEMENTED = 6,\n\n  /**\n   * Prelaunch features are hidden from users and are only visible internally.\n   *\n   * @generated from enum value: PRELAUNCH = 7;\n   */\n  PRELAUNCH = 7,\n\n  /**\n   * Early Access features are limited to a closed group of testers. To use\n   * these features, you must sign up in advance and sign a Trusted Tester\n   * agreement (which includes confidentiality provisions). These features may\n   * be unstable, changed in backward-incompatible ways, and are not\n   * guaranteed to be released.\n   *\n   * @generated from enum value: EARLY_ACCESS = 1;\n   */\n  EARLY_ACCESS = 1,\n\n  /**\n   * Alpha is a limited availability test for releases before they are cleared\n   * for widespread use. By Alpha, all significant design issues are resolved\n   * and we are in the process of verifying functionality. Alpha customers\n   * need to apply for access, agree to applicable terms, and have their\n   * projects allowlisted. Alpha releases don't have to be feature complete,\n   * no SLAs are provided, and there are no technical support obligations, but\n   * they will be far enough along that customers can actually use them in\n   * test environments or for limited-use tests -- just like they would in\n   * normal production cases.\n   *\n   * @generated from enum value: ALPHA = 2;\n   */\n  ALPHA = 2,\n\n  /**\n   * Beta is the point at which we are ready to open a release for any\n   * customer to use. There are no SLA or technical support obligations in a\n   * Beta release. Products will be complete from a feature perspective, but\n   * may have some open outstanding issues. Beta releases are suitable for\n   * limited production use cases.\n   *\n   * @generated from enum value: BETA = 3;\n   */\n  BETA = 3,\n\n  /**\n   * GA features are open to all developers and are considered stable and\n   * fully qualified for production use.\n   *\n   * @generated from enum value: GA = 4;\n   */\n  GA = 4,\n\n  /**\n   * Deprecated features are scheduled to be shut down and removed. For more\n   * information, see the \"Deprecation Policy\" section of our [Terms of\n   * Service](https://cloud.google.com/terms/)\n   * and the [Google Cloud Platform Subject to the Deprecation\n   * Policy](https://cloud.google.com/terms/deprecation) documentation.\n   *\n   * @generated from enum value: DEPRECATED = 5;\n   */\n  DEPRECATED = 5,\n}\n\n/**\n * Describes the enum google.api.LaunchStage.\n */\nexport const LaunchStageSchema: GenEnum<LaunchStage> = /*@__PURE__*/\n  enumDesc(file_google_api_launch_stage, 0);\n\n","// Copyright 2026 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// @generated by protoc-gen-es v2.12.0 with parameter \"target=ts\"\n// @generated from file google/api/client.proto (package google.api, syntax proto3)\n/* eslint-disable */\n\nimport type { GenEnum, GenExtension, GenFile, GenMessage } from \"@bufbuild/protobuf/codegenv2\";\nimport { enumDesc, extDesc, fileDesc, messageDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport type { LaunchStage } from \"./launch_stage_pb\";\nimport { file_google_api_launch_stage } from \"./launch_stage_pb\";\nimport type { Duration, MethodOptions, ServiceOptions } from \"@bufbuild/protobuf/wkt\";\nimport { file_google_protobuf_descriptor, file_google_protobuf_duration } from \"@bufbuild/protobuf/wkt\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file google/api/client.proto.\n */\nexport const file_google_api_client: GenFile = /*@__PURE__*/\n  fileDesc(\"Chdnb29nbGUvYXBpL2NsaWVudC5wcm90bxIKZ29vZ2xlLmFwaSK+AQoWQ29tbW9uTGFuZ3VhZ2VTZXR0aW5ncxIeChJyZWZlcmVuY2VfZG9jc191cmkYASABKAlCAhgBEjoKDGRlc3RpbmF0aW9ucxgCIAMoDjIkLmdvb2dsZS5hcGkuQ2xpZW50TGlicmFyeURlc3RpbmF0aW9uEkgKGnNlbGVjdGl2ZV9nYXBpY19nZW5lcmF0aW9uGAMgASgLMiQuZ29vZ2xlLmFwaS5TZWxlY3RpdmVHYXBpY0dlbmVyYXRpb24i+wMKFUNsaWVudExpYnJhcnlTZXR0aW5ncxIPCgd2ZXJzaW9uGAEgASgJEi0KDGxhdW5jaF9zdGFnZRgCIAEoDjIXLmdvb2dsZS5hcGkuTGF1bmNoU3RhZ2USGgoScmVzdF9udW1lcmljX2VudW1zGAMgASgIEi8KDWphdmFfc2V0dGluZ3MYFSABKAsyGC5nb29nbGUuYXBpLkphdmFTZXR0aW5ncxItCgxjcHBfc2V0dGluZ3MYFiABKAsyFy5nb29nbGUuYXBpLkNwcFNldHRpbmdzEi0KDHBocF9zZXR0aW5ncxgXIAEoCzIXLmdvb2dsZS5hcGkuUGhwU2V0dGluZ3MSMwoPcHl0aG9uX3NldHRpbmdzGBggASgLMhouZ29vZ2xlLmFwaS5QeXRob25TZXR0aW5ncxIvCg1ub2RlX3NldHRpbmdzGBkgASgLMhguZ29vZ2xlLmFwaS5Ob2RlU2V0dGluZ3MSMwoPZG90bmV0X3NldHRpbmdzGBogASgLMhouZ29vZ2xlLmFwaS5Eb3RuZXRTZXR0aW5ncxIvCg1ydWJ5X3NldHRpbmdzGBsgASgLMhguZ29vZ2xlLmFwaS5SdWJ5U2V0dGluZ3MSKwoLZ29fc2V0dGluZ3MYHCABKAsyFi5nb29nbGUuYXBpLkdvU2V0dGluZ3MiqAMKClB1Ymxpc2hpbmcSMwoPbWV0aG9kX3NldHRpbmdzGAIgAygLMhouZ29vZ2xlLmFwaS5NZXRob2RTZXR0aW5ncxIVCg1uZXdfaXNzdWVfdXJpGGUgASgJEhkKEWRvY3VtZW50YXRpb25fdXJpGGYgASgJEhYKDmFwaV9zaG9ydF9uYW1lGGcgASgJEhQKDGdpdGh1Yl9sYWJlbBhoIAEoCRIeChZjb2Rlb3duZXJfZ2l0aHViX3RlYW1zGGkgAygJEhYKDmRvY190YWdfcHJlZml4GGogASgJEjsKDG9yZ2FuaXphdGlvbhhrIAEoDjIlLmdvb2dsZS5hcGkuQ2xpZW50TGlicmFyeU9yZ2FuaXphdGlvbhI7ChBsaWJyYXJ5X3NldHRpbmdzGG0gAygLMiEuZ29vZ2xlLmFwaS5DbGllbnRMaWJyYXJ5U2V0dGluZ3MSKQohcHJvdG9fcmVmZXJlbmNlX2RvY3VtZW50YXRpb25fdXJpGG4gASgJEigKIHJlc3RfcmVmZXJlbmNlX2RvY3VtZW50YXRpb25fdXJpGG8gASgJIuMBCgxKYXZhU2V0dGluZ3MSFwoPbGlicmFyeV9wYWNrYWdlGAEgASgJEkwKE3NlcnZpY2VfY2xhc3NfbmFtZXMYAiADKAsyLy5nb29nbGUuYXBpLkphdmFTZXR0aW5ncy5TZXJ2aWNlQ2xhc3NOYW1lc0VudHJ5EjIKBmNvbW1vbhgDIAEoCzIiLmdvb2dsZS5hcGkuQ29tbW9uTGFuZ3VhZ2VTZXR0aW5ncxo4ChZTZXJ2aWNlQ2xhc3NOYW1lc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEiQQoLQ3BwU2V0dGluZ3MSMgoGY29tbW9uGAEgASgLMiIuZ29vZ2xlLmFwaS5Db21tb25MYW5ndWFnZVNldHRpbmdzIloKC1BocFNldHRpbmdzEjIKBmNvbW1vbhgBIAEoCzIiLmdvb2dsZS5hcGkuQ29tbW9uTGFuZ3VhZ2VTZXR0aW5ncxIXCg9saWJyYXJ5X3BhY2thZ2UYAiABKAkimwIKDlB5dGhvblNldHRpbmdzEjIKBmNvbW1vbhgBIAEoCzIiLmdvb2dsZS5hcGkuQ29tbW9uTGFuZ3VhZ2VTZXR0aW5ncxJOChVleHBlcmltZW50YWxfZmVhdHVyZXMYAiABKAsyLy5nb29nbGUuYXBpLlB5dGhvblNldHRpbmdzLkV4cGVyaW1lbnRhbEZlYXR1cmVzGoQBChRFeHBlcmltZW50YWxGZWF0dXJlcxIdChVyZXN0X2FzeW5jX2lvX2VuYWJsZWQYASABKAgSJwofcHJvdG9idWZfcHl0aG9uaWNfdHlwZXNfZW5hYmxlZBgCIAEoCBIkChx1bnZlcnNpb25lZF9wYWNrYWdlX2Rpc2FibGVkGAMgASgIIkIKDE5vZGVTZXR0aW5ncxIyCgZjb21tb24YASABKAsyIi5nb29nbGUuYXBpLkNvbW1vbkxhbmd1YWdlU2V0dGluZ3MiqgMKDkRvdG5ldFNldHRpbmdzEjIKBmNvbW1vbhgBIAEoCzIiLmdvb2dsZS5hcGkuQ29tbW9uTGFuZ3VhZ2VTZXR0aW5ncxJJChByZW5hbWVkX3NlcnZpY2VzGAIgAygLMi8uZ29vZ2xlLmFwaS5Eb3RuZXRTZXR0aW5ncy5SZW5hbWVkU2VydmljZXNFbnRyeRJLChFyZW5hbWVkX3Jlc291cmNlcxgDIAMoCzIwLmdvb2dsZS5hcGkuRG90bmV0U2V0dGluZ3MuUmVuYW1lZFJlc291cmNlc0VudHJ5EhkKEWlnbm9yZWRfcmVzb3VyY2VzGAQgAygJEiAKGGZvcmNlZF9uYW1lc3BhY2VfYWxpYXNlcxgFIAMoCRIeChZoYW5kd3JpdHRlbl9zaWduYXR1cmVzGAYgAygJGjYKFFJlbmFtZWRTZXJ2aWNlc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEaNwoVUmVuYW1lZFJlc291cmNlc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEiQgoMUnVieVNldHRpbmdzEjIKBmNvbW1vbhgBIAEoCzIiLmdvb2dsZS5hcGkuQ29tbW9uTGFuZ3VhZ2VTZXR0aW5ncyK/AQoKR29TZXR0aW5ncxIyCgZjb21tb24YASABKAsyIi5nb29nbGUuYXBpLkNvbW1vbkxhbmd1YWdlU2V0dGluZ3MSRQoQcmVuYW1lZF9zZXJ2aWNlcxgCIAMoCzIrLmdvb2dsZS5hcGkuR29TZXR0aW5ncy5SZW5hbWVkU2VydmljZXNFbnRyeRo2ChRSZW5hbWVkU2VydmljZXNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIoIDCg5NZXRob2RTZXR0aW5ncxIQCghzZWxlY3RvchgBIAEoCRI8Cgxsb25nX3J1bm5pbmcYAiABKAsyJi5nb29nbGUuYXBpLk1ldGhvZFNldHRpbmdzLkxvbmdSdW5uaW5nEh0KFWF1dG9fcG9wdWxhdGVkX2ZpZWxkcxgDIAMoCRIxCghiYXRjaGluZxgEIAEoCzIfLmdvb2dsZS5hcGkuQmF0Y2hpbmdDb25maWdQcm90bxrNAQoLTG9uZ1J1bm5pbmcSNQoSaW5pdGlhbF9wb2xsX2RlbGF5GAEgASgLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uEh0KFXBvbGxfZGVsYXlfbXVsdGlwbGllchgCIAEoAhIxCg5tYXhfcG9sbF9kZWxheRgDIAEoCzIZLmdvb2dsZS5wcm90b2J1Zi5EdXJhdGlvbhI1ChJ0b3RhbF9wb2xsX3RpbWVvdXQYBCABKAsyGS5nb29nbGUucHJvdG9idWYuRHVyYXRpb24iUQoYU2VsZWN0aXZlR2FwaWNHZW5lcmF0aW9uEg8KB21ldGhvZHMYASADKAkSJAocZ2VuZXJhdGVfb21pdHRlZF9hc19pbnRlcm5hbBgCIAEoCCKLAQoTQmF0Y2hpbmdDb25maWdQcm90bxI1Cgp0aHJlc2hvbGRzGAEgASgLMiEuZ29vZ2xlLmFwaS5CYXRjaGluZ1NldHRpbmdzUHJvdG8SPQoQYmF0Y2hfZGVzY3JpcHRvchgCIAEoCzIjLmdvb2dsZS5hcGkuQmF0Y2hpbmdEZXNjcmlwdG9yUHJvdG8i6wIKFUJhdGNoaW5nU2V0dGluZ3NQcm90bxIfChdlbGVtZW50X2NvdW50X3RocmVzaG9sZBgBIAEoBRIeChZyZXF1ZXN0X2J5dGVfdGhyZXNob2xkGAIgASgDEjIKD2RlbGF5X3RocmVzaG9sZBgDIAEoCzIZLmdvb2dsZS5wcm90b2J1Zi5EdXJhdGlvbhIbChNlbGVtZW50X2NvdW50X2xpbWl0GAQgASgFEhoKEnJlcXVlc3RfYnl0ZV9saW1pdBgFIAEoBRIiChpmbG93X2NvbnRyb2xfZWxlbWVudF9saW1pdBgGIAEoBRIfChdmbG93X2NvbnRyb2xfYnl0ZV9saW1pdBgHIAEoBRJfCiRmbG93X2NvbnRyb2xfbGltaXRfZXhjZWVkZWRfYmVoYXZpb3IYCCABKA4yMS5nb29nbGUuYXBpLkZsb3dDb250cm9sTGltaXRFeGNlZWRlZEJlaGF2aW9yUHJvdG8iaQoXQmF0Y2hpbmdEZXNjcmlwdG9yUHJvdG8SFQoNYmF0Y2hlZF9maWVsZBgBIAEoCRIcChRkaXNjcmltaW5hdG9yX2ZpZWxkcxgCIAMoCRIZChFzdWJyZXNwb25zZV9maWVsZBgDIAEoCSqjAQoZQ2xpZW50TGlicmFyeU9yZ2FuaXphdGlvbhIrCidDTElFTlRfTElCUkFSWV9PUkdBTklaQVRJT05fVU5TUEVDSUZJRUQQABIJCgVDTE9VRBABEgcKA0FEUxACEgoKBlBIT1RPUxADEg8KC1NUUkVFVF9WSUVXEAQSDAoIU0hPUFBJTkcQBRIHCgNHRU8QBhIRCg1HRU5FUkFUSVZFX0FJEAcqZwoYQ2xpZW50TGlicmFyeURlc3RpbmF0aW9uEioKJkNMSUVOVF9MSUJSQVJZX0RFU1RJTkFUSU9OX1VOU1BFQ0lGSUVEEAASCgoGR0lUSFVCEAoSEwoPUEFDS0FHRV9NQU5BR0VSEBQqZwolRmxvd0NvbnRyb2xMaW1pdEV4Y2VlZGVkQmVoYXZpb3JQcm90bxISCg5VTlNFVF9CRUhBVklPUhAAEhMKD1RIUk9XX0VYQ0VQVElPThABEgkKBUJMT0NLEAISCgoGSUdOT1JFEAM6SgoQbWV0aG9kX3NpZ25hdHVyZRIeLmdvb2dsZS5wcm90b2J1Zi5NZXRob2RPcHRpb25zGJsIIAMoCVIPbWV0aG9kU2lnbmF0dXJlOkMKDGRlZmF1bHRfaG9zdBIfLmdvb2dsZS5wcm90b2J1Zi5TZXJ2aWNlT3B0aW9ucxiZCCABKAlSC2RlZmF1bHRIb3N0OkMKDG9hdXRoX3Njb3BlcxIfLmdvb2dsZS5wcm90b2J1Zi5TZXJ2aWNlT3B0aW9ucxiaCCABKAlSC29hdXRoU2NvcGVzOkQKC2FwaV92ZXJzaW9uEh8uZ29vZ2xlLnByb3RvYnVmLlNlcnZpY2VPcHRpb25zGMG6q/oBIAEoCVIKYXBpVmVyc2lvbkKpAQoOY29tLmdvb2dsZS5hcGlCC0NsaWVudFByb3RvUAFaQWdvb2dsZS5nb2xhbmcub3JnL2dlbnByb3RvL2dvb2dsZWFwaXMvYXBpL2Fubm90YXRpb25zO2Fubm90YXRpb25zogIDR0FYqgIKR29vZ2xlLkFwacoCCkdvb2dsZVxBcGniAhZHb29nbGVcQXBpXEdQQk1ldGFkYXRh6gILR29vZ2xlOjpBcGliBnByb3RvMw\", [file_google_api_launch_stage, file_google_protobuf_descriptor, file_google_protobuf_duration]);\n\n/**\n * Required information for every language.\n *\n * @generated from message google.api.CommonLanguageSettings\n */\nexport type CommonLanguageSettings = Message<\"google.api.CommonLanguageSettings\"> & {\n  /**\n   * Link to automatically generated reference documentation.  Example:\n   * https://cloud.google.com/nodejs/docs/reference/asset/latest\n   *\n   * @generated from field: string reference_docs_uri = 1 [deprecated = true];\n   * @deprecated\n   */\n  referenceDocsUri: string;\n\n  /**\n   * The destination where API teams want this client library to be published.\n   *\n   * @generated from field: repeated google.api.ClientLibraryDestination destinations = 2;\n   */\n  destinations: ClientLibraryDestination[];\n\n  /**\n   * Configuration for which RPCs should be generated in the GAPIC client.\n   *\n   * Note: This field should not be used in most cases.\n   *\n   * @generated from field: google.api.SelectiveGapicGeneration selective_gapic_generation = 3;\n   */\n  selectiveGapicGeneration?: SelectiveGapicGeneration | undefined;\n};\n\n/**\n * Describes the message google.api.CommonLanguageSettings.\n * Use `create(CommonLanguageSettingsSchema)` to create a new message.\n */\nexport const CommonLanguageSettingsSchema: GenMessage<CommonLanguageSettings> = /*@__PURE__*/\n  messageDesc(file_google_api_client, 0);\n\n/**\n * Details about how and where to publish client libraries.\n *\n * @generated from message google.api.ClientLibrarySettings\n */\nexport type ClientLibrarySettings = Message<\"google.api.ClientLibrarySettings\"> & {\n  /**\n   * Version of the API to apply these settings to. This is the full protobuf\n   * package for the API, ending in the version element.\n   * Examples: \"google.cloud.speech.v1\" and \"google.spanner.admin.database.v1\".\n   *\n   * @generated from field: string version = 1;\n   */\n  version: string;\n\n  /**\n   * Launch stage of this version of the API.\n   *\n   * @generated from field: google.api.LaunchStage launch_stage = 2;\n   */\n  launchStage: LaunchStage;\n\n  /**\n   * When using transport=rest, the client request will encode enums as\n   * numbers rather than strings.\n   *\n   * @generated from field: bool rest_numeric_enums = 3;\n   */\n  restNumericEnums: boolean;\n\n  /**\n   * Settings for legacy Java features, supported in the Service YAML.\n   *\n   * @generated from field: google.api.JavaSettings java_settings = 21;\n   */\n  javaSettings?: JavaSettings | undefined;\n\n  /**\n   * Settings for C++ client libraries.\n   *\n   * @generated from field: google.api.CppSettings cpp_settings = 22;\n   */\n  cppSettings?: CppSettings | undefined;\n\n  /**\n   * Settings for PHP client libraries.\n   *\n   * @generated from field: google.api.PhpSettings php_settings = 23;\n   */\n  phpSettings?: PhpSettings | undefined;\n\n  /**\n   * Settings for Python client libraries.\n   *\n   * @generated from field: google.api.PythonSettings python_settings = 24;\n   */\n  pythonSettings?: PythonSettings | undefined;\n\n  /**\n   * Settings for Node client libraries.\n   *\n   * @generated from field: google.api.NodeSettings node_settings = 25;\n   */\n  nodeSettings?: NodeSettings | undefined;\n\n  /**\n   * Settings for .NET client libraries.\n   *\n   * @generated from field: google.api.DotnetSettings dotnet_settings = 26;\n   */\n  dotnetSettings?: DotnetSettings | undefined;\n\n  /**\n   * Settings for Ruby client libraries.\n   *\n   * @generated from field: google.api.RubySettings ruby_settings = 27;\n   */\n  rubySettings?: RubySettings | undefined;\n\n  /**\n   * Settings for Go client libraries.\n   *\n   * @generated from field: google.api.GoSettings go_settings = 28;\n   */\n  goSettings?: GoSettings | undefined;\n};\n\n/**\n * Describes the message google.api.ClientLibrarySettings.\n * Use `create(ClientLibrarySettingsSchema)` to create a new message.\n */\nexport const ClientLibrarySettingsSchema: GenMessage<ClientLibrarySettings> = /*@__PURE__*/\n  messageDesc(file_google_api_client, 1);\n\n/**\n * This message configures the settings for publishing [Google Cloud Client\n * libraries](https://cloud.google.com/apis/docs/cloud-client-libraries)\n * generated from the service config.\n *\n * @generated from message google.api.Publishing\n */\nexport type Publishing = Message<\"google.api.Publishing\"> & {\n  /**\n   * A list of API method settings, e.g. the behavior for methods that use the\n   * long-running operation pattern.\n   *\n   * @generated from field: repeated google.api.MethodSettings method_settings = 2;\n   */\n  methodSettings: MethodSettings[];\n\n  /**\n   * Link to a *public* URI where users can report issues.  Example:\n   * https://issuetracker.google.com/issues/new?component=190865&template=1161103\n   *\n   * @generated from field: string new_issue_uri = 101;\n   */\n  newIssueUri: string;\n\n  /**\n   * Link to product home page.  Example:\n   * https://cloud.google.com/asset-inventory/docs/overview\n   *\n   * @generated from field: string documentation_uri = 102;\n   */\n  documentationUri: string;\n\n  /**\n   * Used as a tracking tag when collecting data about the APIs developer\n   * relations artifacts like docs, packages delivered to package managers,\n   * etc.  Example: \"speech\".\n   *\n   * @generated from field: string api_short_name = 103;\n   */\n  apiShortName: string;\n\n  /**\n   * GitHub label to apply to issues and pull requests opened for this API.\n   *\n   * @generated from field: string github_label = 104;\n   */\n  githubLabel: string;\n\n  /**\n   * GitHub teams to be added to CODEOWNERS in the directory in GitHub\n   * containing source code for the client libraries for this API.\n   *\n   * @generated from field: repeated string codeowner_github_teams = 105;\n   */\n  codeownerGithubTeams: string[];\n\n  /**\n   * A prefix used in sample code when demarking regions to be included in\n   * documentation.\n   *\n   * @generated from field: string doc_tag_prefix = 106;\n   */\n  docTagPrefix: string;\n\n  /**\n   * For whom the client library is being published.\n   *\n   * @generated from field: google.api.ClientLibraryOrganization organization = 107;\n   */\n  organization: ClientLibraryOrganization;\n\n  /**\n   * Client library settings.  If the same version string appears multiple\n   * times in this list, then the last one wins.  Settings from earlier\n   * settings with the same version string are discarded.\n   *\n   * @generated from field: repeated google.api.ClientLibrarySettings library_settings = 109;\n   */\n  librarySettings: ClientLibrarySettings[];\n\n  /**\n   * Optional link to proto reference documentation.  Example:\n   * https://cloud.google.com/pubsub/lite/docs/reference/rpc\n   *\n   * @generated from field: string proto_reference_documentation_uri = 110;\n   */\n  protoReferenceDocumentationUri: string;\n\n  /**\n   * Optional link to REST reference documentation.  Example:\n   * https://cloud.google.com/pubsub/lite/docs/reference/rest\n   *\n   * @generated from field: string rest_reference_documentation_uri = 111;\n   */\n  restReferenceDocumentationUri: string;\n};\n\n/**\n * Describes the message google.api.Publishing.\n * Use `create(PublishingSchema)` to create a new message.\n */\nexport const PublishingSchema: GenMessage<Publishing> = /*@__PURE__*/\n  messageDesc(file_google_api_client, 2);\n\n/**\n * Settings for Java client libraries.\n *\n * @generated from message google.api.JavaSettings\n */\nexport type JavaSettings = Message<\"google.api.JavaSettings\"> & {\n  /**\n   * The package name to use in Java. Clobbers the java_package option\n   * set in the protobuf. This should be used **only** by APIs\n   * who have already set the language_settings.java.package_name\" field\n   * in gapic.yaml. API teams should use the protobuf java_package option\n   * where possible.\n   *\n   * Example of a YAML configuration::\n   *\n   *     publishing:\n   *       library_settings:\n   *         java_settings:\n   *           library_package: com.google.cloud.pubsub.v1\n   *\n   * @generated from field: string library_package = 1;\n   */\n  libraryPackage: string;\n\n  /**\n   * Configure the Java class name to use instead of the service's for its\n   * corresponding generated GAPIC client. Keys are fully-qualified\n   * service names as they appear in the protobuf (including the full\n   * the language_settings.java.interface_names\" field in gapic.yaml. API\n   * teams should otherwise use the service name as it appears in the\n   * protobuf.\n   *\n   * Example of a YAML configuration::\n   *\n   *     publishing:\n   *       java_settings:\n   *         service_class_names:\n   *           - google.pubsub.v1.Publisher: TopicAdmin\n   *           - google.pubsub.v1.Subscriber: SubscriptionAdmin\n   *\n   * @generated from field: map<string, string> service_class_names = 2;\n   */\n  serviceClassNames: { [key: string]: string };\n\n  /**\n   * Some settings.\n   *\n   * @generated from field: google.api.CommonLanguageSettings common = 3;\n   */\n  common?: CommonLanguageSettings | undefined;\n};\n\n/**\n * Describes the message google.api.JavaSettings.\n * Use `create(JavaSettingsSchema)` to create a new message.\n */\nexport const JavaSettingsSchema: GenMessage<JavaSettings> = /*@__PURE__*/\n  messageDesc(file_google_api_client, 3);\n\n/**\n * Settings for C++ client libraries.\n *\n * @generated from message google.api.CppSettings\n */\nexport type CppSettings = Message<\"google.api.CppSettings\"> & {\n  /**\n   * Some settings.\n   *\n   * @generated from field: google.api.CommonLanguageSettings common = 1;\n   */\n  common?: CommonLanguageSettings | undefined;\n};\n\n/**\n * Describes the message google.api.CppSettings.\n * Use `create(CppSettingsSchema)` to create a new message.\n */\nexport const CppSettingsSchema: GenMessage<CppSettings> = /*@__PURE__*/\n  messageDesc(file_google_api_client, 4);\n\n/**\n * Settings for Php client libraries.\n *\n * @generated from message google.api.PhpSettings\n */\nexport type PhpSettings = Message<\"google.api.PhpSettings\"> & {\n  /**\n   * Some settings.\n   *\n   * @generated from field: google.api.CommonLanguageSettings common = 1;\n   */\n  common?: CommonLanguageSettings | undefined;\n\n  /**\n   * The package name to use in Php. Clobbers the php_namespace option\n   * set in the protobuf. This should be used **only** by APIs\n   * who have already set the language_settings.php.package_name\" field\n   * in gapic.yaml. API teams should use the protobuf php_namespace option\n   * where possible.\n   *\n   * Example of a YAML configuration::\n   *\n   *     publishing:\n   *       library_settings:\n   *         php_settings:\n   *           library_package: Google\\Cloud\\PubSub\\V1\n   *\n   * @generated from field: string library_package = 2;\n   */\n  libraryPackage: string;\n};\n\n/**\n * Describes the message google.api.PhpSettings.\n * Use `create(PhpSettingsSchema)` to create a new message.\n */\nexport const PhpSettingsSchema: GenMessage<PhpSettings> = /*@__PURE__*/\n  messageDesc(file_google_api_client, 5);\n\n/**\n * Settings for Python client libraries.\n *\n * @generated from message google.api.PythonSettings\n */\nexport type PythonSettings = Message<\"google.api.PythonSettings\"> & {\n  /**\n   * Some settings.\n   *\n   * @generated from field: google.api.CommonLanguageSettings common = 1;\n   */\n  common?: CommonLanguageSettings | undefined;\n\n  /**\n   * Experimental features to be included during client library generation.\n   *\n   * @generated from field: google.api.PythonSettings.ExperimentalFeatures experimental_features = 2;\n   */\n  experimentalFeatures?: PythonSettings_ExperimentalFeatures | undefined;\n};\n\n/**\n * Describes the message google.api.PythonSettings.\n * Use `create(PythonSettingsSchema)` to create a new message.\n */\nexport const PythonSettingsSchema: GenMessage<PythonSettings> = /*@__PURE__*/\n  messageDesc(file_google_api_client, 6);\n\n/**\n * Experimental features to be included during client library generation.\n * These fields will be deprecated once the feature graduates and is enabled\n * by default.\n *\n * @generated from message google.api.PythonSettings.ExperimentalFeatures\n */\nexport type PythonSettings_ExperimentalFeatures = Message<\"google.api.PythonSettings.ExperimentalFeatures\"> & {\n  /**\n   * Enables generation of asynchronous REST clients if `rest` transport is\n   * enabled. By default, asynchronous REST clients will not be generated.\n   * This feature will be enabled by default 1 month after launching the\n   * feature in preview packages.\n   *\n   * @generated from field: bool rest_async_io_enabled = 1;\n   */\n  restAsyncIoEnabled: boolean;\n\n  /**\n   * Enables generation of protobuf code using new types that are more\n   * Pythonic which are included in `protobuf>=5.29.x`. This feature will be\n   * enabled by default 1 month after launching the feature in preview\n   * packages.\n   *\n   * @generated from field: bool protobuf_pythonic_types_enabled = 2;\n   */\n  protobufPythonicTypesEnabled: boolean;\n\n  /**\n   * Disables generation of an unversioned Python package for this client\n   * library. This means that the module names will need to be versioned in\n   * import statements. For example `import google.cloud.library_v2` instead\n   * of `import google.cloud.library`.\n   *\n   * @generated from field: bool unversioned_package_disabled = 3;\n   */\n  unversionedPackageDisabled: boolean;\n};\n\n/**\n * Describes the message google.api.PythonSettings.ExperimentalFeatures.\n * Use `create(PythonSettings_ExperimentalFeaturesSchema)` to create a new message.\n */\nexport const PythonSettings_ExperimentalFeaturesSchema: GenMessage<PythonSettings_ExperimentalFeatures> = /*@__PURE__*/\n  messageDesc(file_google_api_client, 6, 0);\n\n/**\n * Settings for Node client libraries.\n *\n * @generated from message google.api.NodeSettings\n */\nexport type NodeSettings = Message<\"google.api.NodeSettings\"> & {\n  /**\n   * Some settings.\n   *\n   * @generated from field: google.api.CommonLanguageSettings common = 1;\n   */\n  common?: CommonLanguageSettings | undefined;\n};\n\n/**\n * Describes the message google.api.NodeSettings.\n * Use `create(NodeSettingsSchema)` to create a new message.\n */\nexport const NodeSettingsSchema: GenMessage<NodeSettings> = /*@__PURE__*/\n  messageDesc(file_google_api_client, 7);\n\n/**\n * Settings for Dotnet client libraries.\n *\n * @generated from message google.api.DotnetSettings\n */\nexport type DotnetSettings = Message<\"google.api.DotnetSettings\"> & {\n  /**\n   * Some settings.\n   *\n   * @generated from field: google.api.CommonLanguageSettings common = 1;\n   */\n  common?: CommonLanguageSettings | undefined;\n\n  /**\n   * Map from original service names to renamed versions.\n   * This is used when the default generated types\n   * would cause a naming conflict. (Neither name is\n   * fully-qualified.)\n   * Example: Subscriber to SubscriberServiceApi.\n   *\n   * @generated from field: map<string, string> renamed_services = 2;\n   */\n  renamedServices: { [key: string]: string };\n\n  /**\n   * Map from full resource types to the effective short name\n   * for the resource. This is used when otherwise resource\n   * named from different services would cause naming collisions.\n   * Example entry:\n   * \"datalabeling.googleapis.com/Dataset\": \"DataLabelingDataset\"\n   *\n   * @generated from field: map<string, string> renamed_resources = 3;\n   */\n  renamedResources: { [key: string]: string };\n\n  /**\n   * List of full resource types to ignore during generation.\n   * This is typically used for API-specific Location resources,\n   * which should be handled by the generator as if they were actually\n   * the common Location resources.\n   * Example entry: \"documentai.googleapis.com/Location\"\n   *\n   * @generated from field: repeated string ignored_resources = 4;\n   */\n  ignoredResources: string[];\n\n  /**\n   * Namespaces which must be aliased in snippets due to\n   * a known (but non-generator-predictable) naming collision\n   *\n   * @generated from field: repeated string forced_namespace_aliases = 5;\n   */\n  forcedNamespaceAliases: string[];\n\n  /**\n   * Method signatures (in the form \"service.method(signature)\")\n   * which are provided separately, so shouldn't be generated.\n   * Snippets *calling* these methods are still generated, however.\n   *\n   * @generated from field: repeated string handwritten_signatures = 6;\n   */\n  handwrittenSignatures: string[];\n};\n\n/**\n * Describes the message google.api.DotnetSettings.\n * Use `create(DotnetSettingsSchema)` to create a new message.\n */\nexport const DotnetSettingsSchema: GenMessage<DotnetSettings> = /*@__PURE__*/\n  messageDesc(file_google_api_client, 8);\n\n/**\n * Settings for Ruby client libraries.\n *\n * @generated from message google.api.RubySettings\n */\nexport type RubySettings = Message<\"google.api.RubySettings\"> & {\n  /**\n   * Some settings.\n   *\n   * @generated from field: google.api.CommonLanguageSettings common = 1;\n   */\n  common?: CommonLanguageSettings | undefined;\n};\n\n/**\n * Describes the message google.api.RubySettings.\n * Use `create(RubySettingsSchema)` to create a new message.\n */\nexport const RubySettingsSchema: GenMessage<RubySettings> = /*@__PURE__*/\n  messageDesc(file_google_api_client, 9);\n\n/**\n * Settings for Go client libraries.\n *\n * @generated from message google.api.GoSettings\n */\nexport type GoSettings = Message<\"google.api.GoSettings\"> & {\n  /**\n   * Some settings.\n   *\n   * @generated from field: google.api.CommonLanguageSettings common = 1;\n   */\n  common?: CommonLanguageSettings | undefined;\n\n  /**\n   * Map of service names to renamed services. Keys are the package relative\n   * service names and values are the name to be used for the service client\n   * and call options.\n   *\n   * Example:\n   *\n   *     publishing:\n   *       go_settings:\n   *         renamed_services:\n   *           Publisher: TopicAdmin\n   *\n   * @generated from field: map<string, string> renamed_services = 2;\n   */\n  renamedServices: { [key: string]: string };\n};\n\n/**\n * Describes the message google.api.GoSettings.\n * Use `create(GoSettingsSchema)` to create a new message.\n */\nexport const GoSettingsSchema: GenMessage<GoSettings> = /*@__PURE__*/\n  messageDesc(file_google_api_client, 10);\n\n/**\n * Describes the generator configuration for a method.\n *\n * @generated from message google.api.MethodSettings\n */\nexport type MethodSettings = Message<\"google.api.MethodSettings\"> & {\n  /**\n   * The fully qualified name of the method, for which the options below apply.\n   * This is used to find the method to apply the options.\n   *\n   * Example:\n   *\n   *     publishing:\n   *       method_settings:\n   *       - selector: google.storage.control.v2.StorageControl.CreateFolder\n   *         # method settings for CreateFolder...\n   *\n   * @generated from field: string selector = 1;\n   */\n  selector: string;\n\n  /**\n   * Describes settings to use for long-running operations when generating\n   * API methods for RPCs. Complements RPCs that use the annotations in\n   * google/longrunning/operations.proto.\n   *\n   * Example of a YAML configuration::\n   *\n   *     publishing:\n   *       method_settings:\n   *       - selector: google.cloud.speech.v2.Speech.BatchRecognize\n   *         long_running:\n   *           initial_poll_delay: 60s # 1 minute\n   *           poll_delay_multiplier: 1.5\n   *           max_poll_delay: 360s # 6 minutes\n   *           total_poll_timeout: 54000s # 90 minutes\n   *\n   * @generated from field: google.api.MethodSettings.LongRunning long_running = 2;\n   */\n  longRunning?: MethodSettings_LongRunning | undefined;\n\n  /**\n   * List of top-level fields of the request message, that should be\n   * automatically populated by the client libraries based on their\n   * (google.api.field_info).format. Currently supported format: UUID4.\n   *\n   * Example of a YAML configuration:\n   *\n   *     publishing:\n   *       method_settings:\n   *       - selector: google.example.v1.ExampleService.CreateExample\n   *         auto_populated_fields:\n   *         - request_id\n   *\n   * @generated from field: repeated string auto_populated_fields = 3;\n   */\n  autoPopulatedFields: string[];\n\n  /**\n   * Batching configuration for an API method in client libraries.\n   *\n   * Example of a YAML configuration:\n   *\n   *     publishing:\n   *       method_settings:\n   *       - selector: google.example.v1.ExampleService.BatchCreateExample\n   *         batching:\n   *           element_count_threshold: 1000\n   *           request_byte_threshold: 100000000\n   *           delay_threshold_millis: 10\n   *\n   * @generated from field: google.api.BatchingConfigProto batching = 4;\n   */\n  batching?: BatchingConfigProto | undefined;\n};\n\n/**\n * Describes the message google.api.MethodSettings.\n * Use `create(MethodSettingsSchema)` to create a new message.\n */\nexport const MethodSettingsSchema: GenMessage<MethodSettings> = /*@__PURE__*/\n  messageDesc(file_google_api_client, 11);\n\n/**\n * Describes settings to use when generating API methods that use the\n * long-running operation pattern.\n * All default values below are from those used in the client library\n * generators (e.g.\n * [Java](https://github.com/googleapis/gapic-generator-java/blob/04c2faa191a9b5a10b92392fe8482279c4404803/src/main/java/com/google/api/generator/gapic/composer/common/RetrySettingsComposer.java)).\n *\n * @generated from message google.api.MethodSettings.LongRunning\n */\nexport type MethodSettings_LongRunning = Message<\"google.api.MethodSettings.LongRunning\"> & {\n  /**\n   * Initial delay after which the first poll request will be made.\n   * Default value: 5 seconds.\n   *\n   * @generated from field: google.protobuf.Duration initial_poll_delay = 1;\n   */\n  initialPollDelay?: Duration | undefined;\n\n  /**\n   * Multiplier to gradually increase delay between subsequent polls until it\n   * reaches max_poll_delay.\n   * Default value: 1.5.\n   *\n   * @generated from field: float poll_delay_multiplier = 2;\n   */\n  pollDelayMultiplier: number;\n\n  /**\n   * Maximum time between two subsequent poll requests.\n   * Default value: 45 seconds.\n   *\n   * @generated from field: google.protobuf.Duration max_poll_delay = 3;\n   */\n  maxPollDelay?: Duration | undefined;\n\n  /**\n   * Total polling timeout.\n   * Default value: 5 minutes.\n   *\n   * @generated from field: google.protobuf.Duration total_poll_timeout = 4;\n   */\n  totalPollTimeout?: Duration | undefined;\n};\n\n/**\n * Describes the message google.api.MethodSettings.LongRunning.\n * Use `create(MethodSettings_LongRunningSchema)` to create a new message.\n */\nexport const MethodSettings_LongRunningSchema: GenMessage<MethodSettings_LongRunning> = /*@__PURE__*/\n  messageDesc(file_google_api_client, 11, 0);\n\n/**\n * This message is used to configure the generation of a subset of the RPCs in\n * a service for client libraries.\n *\n * Note: This feature should not be used in most cases.\n *\n * @generated from message google.api.SelectiveGapicGeneration\n */\nexport type SelectiveGapicGeneration = Message<\"google.api.SelectiveGapicGeneration\"> & {\n  /**\n   * An allowlist of the fully qualified names of RPCs that should be included\n   * on public client surfaces.\n   *\n   * @generated from field: repeated string methods = 1;\n   */\n  methods: string[];\n\n  /**\n   * Setting this to true indicates to the client generators that methods\n   * that would be excluded from the generation should instead be generated\n   * in a way that indicates these methods should not be consumed by\n   * end users. How this is expressed is up to individual language\n   * implementations to decide. Some examples may be: added annotations,\n   * obfuscated identifiers, or other language idiomatic patterns.\n   *\n   * @generated from field: bool generate_omitted_as_internal = 2;\n   */\n  generateOmittedAsInternal: boolean;\n};\n\n/**\n * Describes the message google.api.SelectiveGapicGeneration.\n * Use `create(SelectiveGapicGenerationSchema)` to create a new message.\n */\nexport const SelectiveGapicGenerationSchema: GenMessage<SelectiveGapicGeneration> = /*@__PURE__*/\n  messageDesc(file_google_api_client, 12);\n\n/**\n * `BatchingConfigProto` defines the batching configuration for an API method.\n *\n * @generated from message google.api.BatchingConfigProto\n */\nexport type BatchingConfigProto = Message<\"google.api.BatchingConfigProto\"> & {\n  /**\n   * The thresholds which trigger a batched request to be sent.\n   *\n   * @generated from field: google.api.BatchingSettingsProto thresholds = 1;\n   */\n  thresholds?: BatchingSettingsProto | undefined;\n\n  /**\n   * The request and response fields used in batching.\n   *\n   * @generated from field: google.api.BatchingDescriptorProto batch_descriptor = 2;\n   */\n  batchDescriptor?: BatchingDescriptorProto | undefined;\n};\n\n/**\n * Describes the message google.api.BatchingConfigProto.\n * Use `create(BatchingConfigProtoSchema)` to create a new message.\n */\nexport const BatchingConfigProtoSchema: GenMessage<BatchingConfigProto> = /*@__PURE__*/\n  messageDesc(file_google_api_client, 13);\n\n/**\n * `BatchingSettingsProto` specifies a set of batching thresholds, each of\n * which acts as a trigger to send a batch of messages as a request. At least\n * one threshold must be positive nonzero.\n *\n * @generated from message google.api.BatchingSettingsProto\n */\nexport type BatchingSettingsProto = Message<\"google.api.BatchingSettingsProto\"> & {\n  /**\n   * The number of elements of a field collected into a batch which, if\n   * exceeded, causes the batch to be sent.\n   *\n   * @generated from field: int32 element_count_threshold = 1;\n   */\n  elementCountThreshold: number;\n\n  /**\n   * The aggregated size of the batched field which, if exceeded, causes the\n   * batch to be sent. This size is computed by aggregating the sizes of the\n   * request field to be batched, not of the entire request message.\n   *\n   * @generated from field: int64 request_byte_threshold = 2;\n   */\n  requestByteThreshold: bigint;\n\n  /**\n   * The duration after which a batch should be sent, starting from the addition\n   * of the first message to that batch.\n   *\n   * @generated from field: google.protobuf.Duration delay_threshold = 3;\n   */\n  delayThreshold?: Duration | undefined;\n\n  /**\n   * The maximum number of elements collected in a batch that could be accepted\n   * by server.\n   *\n   * @generated from field: int32 element_count_limit = 4;\n   */\n  elementCountLimit: number;\n\n  /**\n   * The maximum size of the request that could be accepted by server.\n   *\n   * @generated from field: int32 request_byte_limit = 5;\n   */\n  requestByteLimit: number;\n\n  /**\n   * The maximum number of elements allowed by flow control.\n   *\n   * @generated from field: int32 flow_control_element_limit = 6;\n   */\n  flowControlElementLimit: number;\n\n  /**\n   * The maximum size of data allowed by flow control.\n   *\n   * @generated from field: int32 flow_control_byte_limit = 7;\n   */\n  flowControlByteLimit: number;\n\n  /**\n   * The behavior to take when the flow control limit is exceeded.\n   *\n   * @generated from field: google.api.FlowControlLimitExceededBehaviorProto flow_control_limit_exceeded_behavior = 8;\n   */\n  flowControlLimitExceededBehavior: FlowControlLimitExceededBehaviorProto;\n};\n\n/**\n * Describes the message google.api.BatchingSettingsProto.\n * Use `create(BatchingSettingsProtoSchema)` to create a new message.\n */\nexport const BatchingSettingsProtoSchema: GenMessage<BatchingSettingsProto> = /*@__PURE__*/\n  messageDesc(file_google_api_client, 14);\n\n/**\n * `BatchingDescriptorProto` specifies the fields of the request message to be\n * used for batching, and, optionally, the fields of the response message to be\n * used for demultiplexing.\n *\n * @generated from message google.api.BatchingDescriptorProto\n */\nexport type BatchingDescriptorProto = Message<\"google.api.BatchingDescriptorProto\"> & {\n  /**\n   * The repeated field in the request message to be aggregated by batching.\n   *\n   * @generated from field: string batched_field = 1;\n   */\n  batchedField: string;\n\n  /**\n   * A list of the fields in the request message. Two requests will be batched\n   * together only if the values of every field specified in\n   * `request_discriminator_fields` is equal between the two requests.\n   *\n   * @generated from field: repeated string discriminator_fields = 2;\n   */\n  discriminatorFields: string[];\n\n  /**\n   * Optional. When present, indicates the field in the response message to be\n   * used to demultiplex the response into multiple response messages, in\n   * correspondence with the multiple request messages originally batched\n   * together.\n   *\n   * @generated from field: string subresponse_field = 3;\n   */\n  subresponseField: string;\n};\n\n/**\n * Describes the message google.api.BatchingDescriptorProto.\n * Use `create(BatchingDescriptorProtoSchema)` to create a new message.\n */\nexport const BatchingDescriptorProtoSchema: GenMessage<BatchingDescriptorProto> = /*@__PURE__*/\n  messageDesc(file_google_api_client, 15);\n\n/**\n * The organization for which the client libraries are being published.\n * Affects the url where generated docs are published, etc.\n *\n * @generated from enum google.api.ClientLibraryOrganization\n */\nexport enum ClientLibraryOrganization {\n  /**\n   * Not useful.\n   *\n   * @generated from enum value: CLIENT_LIBRARY_ORGANIZATION_UNSPECIFIED = 0;\n   */\n  CLIENT_LIBRARY_ORGANIZATION_UNSPECIFIED = 0,\n\n  /**\n   * Google Cloud Platform Org.\n   *\n   * @generated from enum value: CLOUD = 1;\n   */\n  CLOUD = 1,\n\n  /**\n   * Ads (Advertising) Org.\n   *\n   * @generated from enum value: ADS = 2;\n   */\n  ADS = 2,\n\n  /**\n   * Photos Org.\n   *\n   * @generated from enum value: PHOTOS = 3;\n   */\n  PHOTOS = 3,\n\n  /**\n   * Street View Org.\n   *\n   * @generated from enum value: STREET_VIEW = 4;\n   */\n  STREET_VIEW = 4,\n\n  /**\n   * Shopping Org.\n   *\n   * @generated from enum value: SHOPPING = 5;\n   */\n  SHOPPING = 5,\n\n  /**\n   * Geo Org.\n   *\n   * @generated from enum value: GEO = 6;\n   */\n  GEO = 6,\n\n  /**\n   * Generative AI - https://developers.generativeai.google\n   *\n   * @generated from enum value: GENERATIVE_AI = 7;\n   */\n  GENERATIVE_AI = 7,\n}\n\n/**\n * Describes the enum google.api.ClientLibraryOrganization.\n */\nexport const ClientLibraryOrganizationSchema: GenEnum<ClientLibraryOrganization> = /*@__PURE__*/\n  enumDesc(file_google_api_client, 0);\n\n/**\n * To where should client libraries be published?\n *\n * @generated from enum google.api.ClientLibraryDestination\n */\nexport enum ClientLibraryDestination {\n  /**\n   * Client libraries will neither be generated nor published to package\n   * managers.\n   *\n   * @generated from enum value: CLIENT_LIBRARY_DESTINATION_UNSPECIFIED = 0;\n   */\n  CLIENT_LIBRARY_DESTINATION_UNSPECIFIED = 0,\n\n  /**\n   * Generate the client library in a repo under github.com/googleapis,\n   * but don't publish it to package managers.\n   *\n   * @generated from enum value: GITHUB = 10;\n   */\n  GITHUB = 10,\n\n  /**\n   * Publish the library to package managers like nuget.org and npmjs.com.\n   *\n   * @generated from enum value: PACKAGE_MANAGER = 20;\n   */\n  PACKAGE_MANAGER = 20,\n}\n\n/**\n * Describes the enum google.api.ClientLibraryDestination.\n */\nexport const ClientLibraryDestinationSchema: GenEnum<ClientLibraryDestination> = /*@__PURE__*/\n  enumDesc(file_google_api_client, 1);\n\n/**\n * The behavior to take when the flow control limit is exceeded.\n *\n * @generated from enum google.api.FlowControlLimitExceededBehaviorProto\n */\nexport enum FlowControlLimitExceededBehaviorProto {\n  /**\n   * Default behavior, system-defined.\n   *\n   * @generated from enum value: UNSET_BEHAVIOR = 0;\n   */\n  UNSET_BEHAVIOR = 0,\n\n  /**\n   * Stop operation, raise error.\n   *\n   * @generated from enum value: THROW_EXCEPTION = 1;\n   */\n  THROW_EXCEPTION = 1,\n\n  /**\n   * Pause operation until limit clears.\n   *\n   * @generated from enum value: BLOCK = 2;\n   */\n  BLOCK = 2,\n\n  /**\n   * Continue operation, disregard limit.\n   *\n   * @generated from enum value: IGNORE = 3;\n   */\n  IGNORE = 3,\n}\n\n/**\n * Describes the enum google.api.FlowControlLimitExceededBehaviorProto.\n */\nexport const FlowControlLimitExceededBehaviorProtoSchema: GenEnum<FlowControlLimitExceededBehaviorProto> = /*@__PURE__*/\n  enumDesc(file_google_api_client, 2);\n\n/**\n * A definition of a client library method signature.\n *\n * In client libraries, each proto RPC corresponds to one or more methods\n * which the end user is able to call, and calls the underlying RPC.\n * Normally, this method receives a single argument (a struct or instance\n * corresponding to the RPC request object). Defining this field will\n * add one or more overloads providing flattened or simpler method signatures\n * in some languages.\n *\n * The fields on the method signature are provided as a comma-separated\n * string.\n *\n * For example, the proto RPC and annotation:\n *\n *     rpc CreateSubscription(CreateSubscriptionRequest)\n *         returns (Subscription) {\n *       option (google.api.method_signature) = \"name,topic\";\n *     }\n *\n * Would add the following Java overload (in addition to the method accepting\n * the request object):\n *\n *     public final Subscription createSubscription(String name, String topic)\n *\n * The following backwards-compatibility guidelines apply:\n *\n *   * Adding this annotation to an unannotated method is backwards\n *     compatible.\n *   * Adding this annotation to a method which already has existing\n *     method signature annotations is backwards compatible if and only if\n *     the new method signature annotation is last in the sequence.\n *   * Modifying or removing an existing method signature annotation is\n *     a breaking change.\n *   * Re-ordering existing method signature annotations is a breaking\n *     change.\n *\n * @generated from extension: repeated string method_signature = 1051;\n */\nexport const method_signature: GenExtension<MethodOptions, string[]> = /*@__PURE__*/\n  extDesc(file_google_api_client, 0);\n\n/**\n * The hostname for this service.\n * This should be specified with no prefix or protocol.\n *\n * Example:\n *\n *     service Foo {\n *       option (google.api.default_host) = \"foo.googleapi.com\";\n *       ...\n *     }\n *\n * @generated from extension: string default_host = 1049;\n */\nexport const default_host: GenExtension<ServiceOptions, string> = /*@__PURE__*/\n  extDesc(file_google_api_client, 1);\n\n/**\n * OAuth scopes needed for the client.\n *\n * Example:\n *\n *     service Foo {\n *       option (google.api.oauth_scopes) = \\\n *         \"https://www.googleapis.com/auth/cloud-platform\";\n *       ...\n *     }\n *\n * If there is more than one scope, use a comma-separated string:\n *\n * Example:\n *\n *     service Foo {\n *       option (google.api.oauth_scopes) = \\\n *         \"https://www.googleapis.com/auth/cloud-platform,\"\n *         \"https://www.googleapis.com/auth/monitoring\";\n *       ...\n *     }\n *\n * @generated from extension: string oauth_scopes = 1050;\n */\nexport const oauth_scopes: GenExtension<ServiceOptions, string> = /*@__PURE__*/\n  extDesc(file_google_api_client, 2);\n\n/**\n * The API version of this service, which should be sent by version-aware\n * clients to the service. This allows services to abide by the schema and\n * behavior of the service at the time this API version was deployed.\n * The format of the API version must be treated as opaque by clients.\n * Services may use a format with an apparent structure, but clients must\n * not rely on this to determine components within an API version, or attempt\n * to construct other valid API versions. Note that this is for upcoming\n * functionality and may not be implemented for all services.\n *\n * Example:\n *\n *     service Foo {\n *       option (google.api.api_version) = \"v1_20230821_preview\";\n *     }\n *\n * @generated from extension: string api_version = 525000001;\n */\nexport const api_version: GenExtension<ServiceOptions, string> = /*@__PURE__*/\n  extDesc(file_google_api_client, 3);\n\n","// @generated by protoc-gen-es v2.12.0 with parameter \"target=ts\"\n// @generated from file thru/services/v1/command_service.proto (package thru.services.v1, syntax proto3)\n/* eslint-disable */\n\nimport type { GenEnum, GenFile, GenMessage, GenService } from \"@bufbuild/protobuf/codegenv2\";\nimport { enumDesc, fileDesc, messageDesc, serviceDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport { file_google_api_annotations } from \"../../../google/api/annotations_pb\";\nimport { file_google_api_client } from \"../../../google/api/client_pb\";\nimport type { Signature } from \"../../common/v1/primitives_pb\";\nimport { file_thru_common_v1_primitives } from \"../../common/v1/primitives_pb\";\nimport type { ConsensusStatus } from \"../../common/v1/consensus_pb\";\nimport { file_thru_common_v1_consensus } from \"../../common/v1/consensus_pb\";\nimport { file_google_api_field_behavior } from \"../../../google/api/field_behavior_pb\";\nimport type { TransactionExecutionResult } from \"../../core/v1/transaction_pb\";\nimport { file_thru_core_v1_transaction } from \"../../core/v1/transaction_pb\";\nimport { file_thru_core_v1_types } from \"../../core/v1/types_pb\";\nimport type { Duration } from \"@bufbuild/protobuf/wkt\";\nimport { file_google_protobuf_duration } from \"@bufbuild/protobuf/wkt\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file thru/services/v1/command_service.proto.\n */\nexport const file_thru_services_v1_command_service: GenFile = /*@__PURE__*/\n  fileDesc(\"CiZ0aHJ1L3NlcnZpY2VzL3YxL2NvbW1hbmRfc2VydmljZS5wcm90bxIQdGhydS5zZXJ2aWNlcy52MSI2ChZTZW5kVHJhbnNhY3Rpb25SZXF1ZXN0EhwKD3Jhd190cmFuc2FjdGlvbhgBIAEoDEID4EECIkwKF1NlbmRUcmFuc2FjdGlvblJlc3BvbnNlEjEKCXNpZ25hdHVyZRgBIAEoCzIZLnRocnUuY29tbW9uLnYxLlNpZ25hdHVyZUID4EECIlIKHEJhdGNoU2VuZFRyYW5zYWN0aW9uc1JlcXVlc3QSHQoQcmF3X3RyYW5zYWN0aW9ucxgBIAMoDEID4EECEhMKC251bV9yZXRyaWVzGAIgASgFImoKHUJhdGNoU2VuZFRyYW5zYWN0aW9uc1Jlc3BvbnNlEjIKCnNpZ25hdHVyZXMYASADKAsyGS50aHJ1LmNvbW1vbi52MS5TaWduYXR1cmVCA+BBAhIVCghhY2NlcHRlZBgCIAMoCEID4EECIl4KFlNlbmRBbmRUcmFja1R4blJlcXVlc3QSGAoLdHJhbnNhY3Rpb24YASABKAxCA+BBAhIqCgd0aW1lb3V0GAIgASgLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uIv8BChdTZW5kQW5kVHJhY2tUeG5SZXNwb25zZRI3CgZzdGF0dXMYASABKA4yIi50aHJ1LnNlcnZpY2VzLnYxLlN1Ym1pc3Npb25TdGF0dXNCA+BBAhIsCglzaWduYXR1cmUYAiABKAsyGS50aHJ1LmNvbW1vbi52MS5TaWduYXR1cmUSOQoQY29uc2Vuc3VzX3N0YXR1cxgDIAEoDjIfLnRocnUuY29tbW9uLnYxLkNvbnNlbnN1c1N0YXR1cxJCChBleGVjdXRpb25fcmVzdWx0GAQgASgLMigudGhydS5jb3JlLnYxLlRyYW5zYWN0aW9uRXhlY3V0aW9uUmVzdWx0KnUKEFN1Ym1pc3Npb25TdGF0dXMSIQodU1VCTUlTU0lPTl9TVEFUVVNfVU5TUEVDSUZJRUQQABIeChpTVUJNSVNTSU9OX1NUQVRVU19SRUNFSVZFRBABEh4KGlNVQk1JU1NJT05fU1RBVFVTX0FDQ0VQVEVEEAIy1wMKDkNvbW1hbmRTZXJ2aWNlEoMBCg9TZW5kVHJhbnNhY3Rpb24SKC50aHJ1LnNlcnZpY2VzLnYxLlNlbmRUcmFuc2FjdGlvblJlcXVlc3QaKS50aHJ1LnNlcnZpY2VzLnYxLlNlbmRUcmFuc2FjdGlvblJlc3BvbnNlIhuC0+STAhU6ASoiEC92MS90cmFuc2FjdGlvbnMSmwEKFUJhdGNoU2VuZFRyYW5zYWN0aW9ucxIuLnRocnUuc2VydmljZXMudjEuQmF0Y2hTZW5kVHJhbnNhY3Rpb25zUmVxdWVzdBovLnRocnUuc2VydmljZXMudjEuQmF0Y2hTZW5kVHJhbnNhY3Rpb25zUmVzcG9uc2UiIYLT5JMCGzoBKiIWL3YxL3RyYW5zYWN0aW9ucy9iYXRjaBKLAQoPU2VuZEFuZFRyYWNrVHhuEigudGhydS5zZXJ2aWNlcy52MS5TZW5kQW5kVHJhY2tUeG5SZXF1ZXN0GikudGhydS5zZXJ2aWNlcy52MS5TZW5kQW5kVHJhY2tUeG5SZXNwb25zZSIhgtPkkwIbOgEqIhYvdjEvdHJhbnNhY3Rpb25zL3RyYWNrMAEaE8pBEGFwaS50aHJ1Lm5ldHdvcmtC3gEKFGNvbS50aHJ1LnNlcnZpY2VzLnYxQhNDb21tYW5kU2VydmljZVByb3RvUAFaSGdpdGh1Yi5jb20vVW50by1MYWJzL3RocnUtbmV0L2dycGMvcGtnL3Byb3RvL3RocnUvc2VydmljZXMvdjE7c2VydmljZXN2MaICA1RTWKoCEFRocnUuU2VydmljZXMuVjG6AgRUSFVTygIQVGhydVxTZXJ2aWNlc1xWMeICHFRocnVcU2VydmljZXNcVjFcR1BCTWV0YWRhdGHqAhJUaHJ1OjpTZXJ2aWNlczo6VjFiBnByb3RvMw\", [file_google_api_annotations, file_google_api_client, file_thru_common_v1_primitives, file_thru_common_v1_consensus, file_google_api_field_behavior, file_thru_core_v1_transaction, file_thru_core_v1_types, file_google_protobuf_duration]);\n\n/**\n * SendTransactionRequest submits a transaction to the cluster.\n *\n * @generated from message thru.services.v1.SendTransactionRequest\n */\nexport type SendTransactionRequest = Message<\"thru.services.v1.SendTransactionRequest\"> & {\n  /**\n   * Raw transaction bytes encoded according to chain specification.\n   *\n   * @generated from field: bytes raw_transaction = 1;\n   */\n  rawTransaction: Uint8Array;\n};\n\n/**\n * Describes the message thru.services.v1.SendTransactionRequest.\n * Use `create(SendTransactionRequestSchema)` to create a new message.\n */\nexport const SendTransactionRequestSchema: GenMessage<SendTransactionRequest> = /*@__PURE__*/\n  messageDesc(file_thru_services_v1_command_service, 0);\n\n/**\n * SendTransactionResponse echoes submission metadata.\n *\n * @generated from message thru.services.v1.SendTransactionResponse\n */\nexport type SendTransactionResponse = Message<\"thru.services.v1.SendTransactionResponse\"> & {\n  /**\n   * @generated from field: thru.common.v1.Signature signature = 1;\n   */\n  signature?: Signature | undefined;\n};\n\n/**\n * Describes the message thru.services.v1.SendTransactionResponse.\n * Use `create(SendTransactionResponseSchema)` to create a new message.\n */\nexport const SendTransactionResponseSchema: GenMessage<SendTransactionResponse> = /*@__PURE__*/\n  messageDesc(file_thru_services_v1_command_service, 1);\n\n/**\n * BatchSendTransactionsRequest submits multiple transactions to the cluster.\n *\n * @generated from message thru.services.v1.BatchSendTransactionsRequest\n */\nexport type BatchSendTransactionsRequest = Message<\"thru.services.v1.BatchSendTransactionsRequest\"> & {\n  /**\n   * List of raw transaction bytes encoded according to chain specification.\n   *\n   * @generated from field: repeated bytes raw_transactions = 1;\n   */\n  rawTransactions: Uint8Array[];\n\n  /**\n   * Number of retries for each transaction if not accepted by UDS (defaults to 0).\n   *\n   * @generated from field: int32 num_retries = 2;\n   */\n  numRetries: number;\n};\n\n/**\n * Describes the message thru.services.v1.BatchSendTransactionsRequest.\n * Use `create(BatchSendTransactionsRequestSchema)` to create a new message.\n */\nexport const BatchSendTransactionsRequestSchema: GenMessage<BatchSendTransactionsRequest> = /*@__PURE__*/\n  messageDesc(file_thru_services_v1_command_service, 2);\n\n/**\n * BatchSendTransactionsResponse returns submission results for each transaction.\n *\n * @generated from message thru.services.v1.BatchSendTransactionsResponse\n */\nexport type BatchSendTransactionsResponse = Message<\"thru.services.v1.BatchSendTransactionsResponse\"> & {\n  /**\n   * Signatures for each transaction (in same order as request).\n   *\n   * @generated from field: repeated thru.common.v1.Signature signatures = 1;\n   */\n  signatures: Signature[];\n\n  /**\n   * Acceptance status for each transaction (true if accepted, false if not).\n   *\n   * @generated from field: repeated bool accepted = 2;\n   */\n  accepted: boolean[];\n};\n\n/**\n * Describes the message thru.services.v1.BatchSendTransactionsResponse.\n * Use `create(BatchSendTransactionsResponseSchema)` to create a new message.\n */\nexport const BatchSendTransactionsResponseSchema: GenMessage<BatchSendTransactionsResponse> = /*@__PURE__*/\n  messageDesc(file_thru_services_v1_command_service, 3);\n\n/**\n * SendAndTrackTxnRequest submits a transaction and tracks its execution.\n *\n * @generated from message thru.services.v1.SendAndTrackTxnRequest\n */\nexport type SendAndTrackTxnRequest = Message<\"thru.services.v1.SendAndTrackTxnRequest\"> & {\n  /**\n   * Raw transaction bytes encoded according to chain specification.\n   *\n   * @generated from field: bytes transaction = 1;\n   */\n  transaction: Uint8Array;\n\n  /**\n   * Optional timeout for tracking the transaction execution.\n   * If not specified, the stream will remain open until the transaction is executed or the client cancels.\n   *\n   * @generated from field: google.protobuf.Duration timeout = 2;\n   */\n  timeout?: Duration | undefined;\n};\n\n/**\n * Describes the message thru.services.v1.SendAndTrackTxnRequest.\n * Use `create(SendAndTrackTxnRequestSchema)` to create a new message.\n */\nexport const SendAndTrackTxnRequestSchema: GenMessage<SendAndTrackTxnRequest> = /*@__PURE__*/\n  messageDesc(file_thru_services_v1_command_service, 4);\n\n/**\n * SendAndTrackTxnResponse streams transaction status updates.\n *\n * @generated from message thru.services.v1.SendAndTrackTxnResponse\n */\nexport type SendAndTrackTxnResponse = Message<\"thru.services.v1.SendAndTrackTxnResponse\"> & {\n  /**\n   * Current submission status of the transaction.\n   *\n   * @generated from field: thru.services.v1.SubmissionStatus status = 1;\n   */\n  status: SubmissionStatus;\n\n  /**\n   * Transaction signature (populated for tracking messages).\n   *\n   * @generated from field: thru.common.v1.Signature signature = 2;\n   */\n  signature?: Signature | undefined;\n\n  /**\n   * Consensus status (populated for tracking messages).\n   *\n   * @generated from field: thru.common.v1.ConsensusStatus consensus_status = 3;\n   */\n  consensusStatus: ConsensusStatus;\n\n  /**\n   * Execution result (populated for tracking messages when execution completes).\n   *\n   * @generated from field: thru.core.v1.TransactionExecutionResult execution_result = 4;\n   */\n  executionResult?: TransactionExecutionResult | undefined;\n};\n\n/**\n * Describes the message thru.services.v1.SendAndTrackTxnResponse.\n * Use `create(SendAndTrackTxnResponseSchema)` to create a new message.\n */\nexport const SendAndTrackTxnResponseSchema: GenMessage<SendAndTrackTxnResponse> = /*@__PURE__*/\n  messageDesc(file_thru_services_v1_command_service, 5);\n\n/**\n * SubmissionStatus represents the status of a transaction in the submission pipeline.\n *\n * @generated from enum thru.services.v1.SubmissionStatus\n */\nexport enum SubmissionStatus {\n  /**\n   * Submission status is unspecified (default value).\n   *\n   * @generated from enum value: SUBMISSION_STATUS_UNSPECIFIED = 0;\n   */\n  UNSPECIFIED = 0,\n\n  /**\n   * Transaction has been received by the gRPC server.\n   *\n   * @generated from enum value: SUBMISSION_STATUS_RECEIVED = 1;\n   */\n  RECEIVED = 1,\n\n  /**\n   * Transaction has been accepted by the forwarder via UDS.\n   *\n   * @generated from enum value: SUBMISSION_STATUS_ACCEPTED = 2;\n   */\n  ACCEPTED = 2,\n}\n\n/**\n * Describes the enum thru.services.v1.SubmissionStatus.\n */\nexport const SubmissionStatusSchema: GenEnum<SubmissionStatus> = /*@__PURE__*/\n  enumDesc(file_thru_services_v1_command_service, 0);\n\n/**\n * CommandService defines transactional RPCs that mutate state or perform\n * expensive computations.\n *\n * @generated from service thru.services.v1.CommandService\n */\nexport const CommandService: GenService<{\n  /**\n   * Submit a new transaction to the cluster.\n   *\n   * @generated from rpc thru.services.v1.CommandService.SendTransaction\n   */\n  sendTransaction: {\n    methodKind: \"unary\";\n    input: typeof SendTransactionRequestSchema;\n    output: typeof SendTransactionResponseSchema;\n  },\n  /**\n   * Submit multiple transactions to the cluster in batch.\n   *\n   * @generated from rpc thru.services.v1.CommandService.BatchSendTransactions\n   */\n  batchSendTransactions: {\n    methodKind: \"unary\";\n    input: typeof BatchSendTransactionsRequestSchema;\n    output: typeof BatchSendTransactionsResponseSchema;\n  },\n  /**\n   * Submit a transaction and track its execution status.\n   * Returns a stream of status updates starting with RECEIVED, then ACCEPTED,\n   * followed by consensus and execution updates, closing after the transaction is executed.\n   *\n   * @generated from rpc thru.services.v1.CommandService.SendAndTrackTxn\n   */\n  sendAndTrackTxn: {\n    methodKind: \"server_streaming\";\n    input: typeof SendAndTrackTxnRequestSchema;\n    output: typeof SendAndTrackTxnResponseSchema;\n  },\n}> = /*@__PURE__*/\n  serviceDesc(file_thru_services_v1_command_service, 0);\n\n","// @generated by protoc-gen-es v2.12.0 with parameter \"target=ts\"\n// @generated from file thru/services/v1/query_service.proto (package thru.services.v1, syntax proto3)\n/* eslint-disable */\n\nimport type { GenEnum, GenFile, GenMessage, GenService } from \"@bufbuild/protobuf/codegenv2\";\nimport { enumDesc, fileDesc, messageDesc, serviceDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport { file_buf_validate_validate } from \"../../../buf/validate/validate_pb\";\nimport { file_google_api_annotations } from \"../../../google/api/annotations_pb\";\nimport { file_google_api_client } from \"../../../google/api/client_pb\";\nimport { file_google_api_field_behavior } from \"../../../google/api/field_behavior_pb\";\nimport type { Timestamp } from \"@bufbuild/protobuf/wkt\";\nimport { file_google_protobuf_timestamp } from \"@bufbuild/protobuf/wkt\";\nimport type { ConsensusStatus, VersionContext } from \"../../common/v1/consensus_pb\";\nimport { file_thru_common_v1_consensus } from \"../../common/v1/consensus_pb\";\nimport type { Filter } from \"../../common/v1/filters_pb\";\nimport { file_thru_common_v1_filters } from \"../../common/v1/filters_pb\";\nimport type { PageRequest, PageResponse } from \"../../common/v1/pagination_pb\";\nimport { file_thru_common_v1_pagination } from \"../../common/v1/pagination_pb\";\nimport type { Pubkey, Signature } from \"../../common/v1/primitives_pb\";\nimport { file_thru_common_v1_primitives } from \"../../common/v1/primitives_pb\";\nimport type { Account, AccountSchema, AccountView, DataSlice, RawAccount, RawAccountSchema } from \"../../core/v1/account_pb\";\nimport { file_thru_core_v1_account } from \"../../core/v1/account_pb\";\nimport type { Block, BlockSchema, BlockView, RawBlockSchema } from \"../../core/v1/block_pb\";\nimport { file_thru_core_v1_block } from \"../../core/v1/block_pb\";\nimport type { StateProof, StateProofRequest } from \"../../core/v1/state_pb\";\nimport { file_thru_core_v1_state } from \"../../core/v1/state_pb\";\nimport type { RawTransactionSchema, Transaction, TransactionExecutionResult, TransactionSchema, TransactionView } from \"../../core/v1/transaction_pb\";\nimport { file_thru_core_v1_transaction } from \"../../core/v1/transaction_pb\";\nimport type { BlockHash } from \"../../core/v1/types_pb\";\nimport { file_thru_core_v1_types } from \"../../core/v1/types_pb\";\nimport type { NodeRecord } from \"../../core/v1/node_pb\";\nimport { file_thru_core_v1_node } from \"../../core/v1/node_pb\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file thru/services/v1/query_service.proto.\n */\nexport const file_thru_services_v1_query_service: GenFile = /*@__PURE__*/\n  fileDesc(\"CiR0aHJ1L3NlcnZpY2VzL3YxL3F1ZXJ5X3NlcnZpY2UucHJvdG8SEHRocnUuc2VydmljZXMudjEigQIKEUdldEFjY291bnRSZXF1ZXN0EiwKB2FkZHJlc3MYASABKAsyFi50aHJ1LmNvbW1vbi52MS5QdWJrZXlCA+BBAhIxCgR2aWV3GAIgASgOMhkudGhydS5jb3JlLnYxLkFjY291bnRWaWV3QgPgQQFIAIgBARI8Cg92ZXJzaW9uX2NvbnRleHQYAyABKAsyHi50aHJ1LmNvbW1vbi52MS5WZXJzaW9uQ29udGV4dEID4EECEjUKCmRhdGFfc2xpY2UYBSABKAsyFy50aHJ1LmNvcmUudjEuRGF0YVNsaWNlQgPgQQFIAYgBAUIHCgVfdmlld0INCgtfZGF0YV9zbGljZSK+AQoUR2V0UmF3QWNjb3VudFJlcXVlc3QSLAoHYWRkcmVzcxgBIAEoCzIWLnRocnUuY29tbW9uLnYxLlB1YmtleUID4EECEjEKBHZpZXcYAiABKA4yGS50aHJ1LmNvcmUudjEuQWNjb3VudFZpZXdCA+BBAUgAiAEBEjwKD3ZlcnNpb25fY29udGV4dBgDIAEoCzIeLnRocnUuY29tbW9uLnYxLlZlcnNpb25Db250ZXh0QgPgQQJCBwoFX3ZpZXcinAIKFUdldFRyYW5zYWN0aW9uUmVxdWVzdBIxCglzaWduYXR1cmUYASABKAsyGS50aHJ1LmNvbW1vbi52MS5TaWduYXR1cmVCA+BBAhI1CgR2aWV3GAIgASgOMh0udGhydS5jb3JlLnYxLlRyYW5zYWN0aW9uVmlld0ID4EEBSACIAQESPAoPdmVyc2lvbl9jb250ZXh0GAMgASgLMh4udGhydS5jb21tb24udjEuVmVyc2lvbkNvbnRleHRCA+BBAhJACg1taW5fY29uc2Vuc3VzGAQgASgOMh8udGhydS5jb21tb24udjEuQ29uc2Vuc3VzU3RhdHVzQgPgQQFIAYgBAUIHCgVfdmlld0IQCg5fbWluX2NvbnNlbnN1cyLfAQoYR2V0UmF3VHJhbnNhY3Rpb25SZXF1ZXN0EjEKCXNpZ25hdHVyZRgBIAEoCzIZLnRocnUuY29tbW9uLnYxLlNpZ25hdHVyZUID4EECEjwKD3ZlcnNpb25fY29udGV4dBgCIAEoCzIeLnRocnUuY29tbW9uLnYxLlZlcnNpb25Db250ZXh0QgPgQQISQAoNbWluX2NvbnNlbnN1cxgDIAEoDjIfLnRocnUuY29tbW9uLnYxLkNvbnNlbnN1c1N0YXR1c0ID4EEBSACIAQFCEAoOX21pbl9jb25zZW5zdXMiUgoZR2VuZXJhdGVTdGF0ZVByb29mUmVxdWVzdBI1CgdyZXF1ZXN0GAEgASgLMh8udGhydS5jb3JlLnYxLlN0YXRlUHJvb2ZSZXF1ZXN0QgPgQQIiSgoaR2VuZXJhdGVTdGF0ZVByb29mUmVzcG9uc2USLAoFcHJvb2YYASABKAsyGC50aHJ1LmNvcmUudjEuU3RhdGVQcm9vZkID4EECIt4CCg9HZXRCbG9ja1JlcXVlc3QSEwoEc2xvdBgBIAEoBEID4EEBSAASMgoKYmxvY2tfaGFzaBgCIAEoCzIXLnRocnUuY29yZS52MS5CbG9ja0hhc2hCA+BBAUgAEi8KBHZpZXcYAyABKA4yFy50aHJ1LmNvcmUudjEuQmxvY2tWaWV3QgPgQQFIAYgBARJACg1taW5fY29uc2Vuc3VzGAQgASgOMh8udGhydS5jb21tb24udjEuQ29uc2Vuc3VzU3RhdHVzQgPgQQFIAogBATpoukhlGmMKEmJsb2NrX3NlbGVjdG9yX3NldBIlZWl0aGVyIHNsb3Qgb3IgYmxvY2tfaGFzaCBtdXN0IGJlIHNldBomaGFzKHRoaXMuc2xvdCkgfHwgaGFzKHRoaXMuYmxvY2tfaGFzaClCCgoIc2VsZWN0b3JCBwoFX3ZpZXdCEAoOX21pbl9jb25zZW5zdXMiqwIKEkdldFJhd0Jsb2NrUmVxdWVzdBITCgRzbG90GAEgASgEQgPgQQFIABIyCgpibG9ja19oYXNoGAIgASgLMhcudGhydS5jb3JlLnYxLkJsb2NrSGFzaEID4EEBSAASQAoNbWluX2NvbnNlbnN1cxgDIAEoDjIfLnRocnUuY29tbW9uLnYxLkNvbnNlbnN1c1N0YXR1c0ID4EEBSAGIAQE6bLpIaRpnChZyYXdfYmxvY2tfc2VsZWN0b3Jfc2V0EiVlaXRoZXIgc2xvdCBvciBibG9ja19oYXNoIG11c3QgYmUgc2V0GiZoYXModGhpcy5zbG90KSB8fCBoYXModGhpcy5ibG9ja19oYXNoKUIKCghzZWxlY3RvckIQCg5fbWluX2NvbnNlbnN1cyL3AgoTTGlzdEFjY291bnRzUmVxdWVzdBIxCgR2aWV3GAEgASgOMhkudGhydS5jb3JlLnYxLkFjY291bnRWaWV3QgPgQQFIAIgBARJBCg92ZXJzaW9uX2NvbnRleHQYAiABKAsyHi50aHJ1LmNvbW1vbi52MS5WZXJzaW9uQ29udGV4dEID4EEBSAGIAQESMAoGZmlsdGVyGAMgASgLMhYudGhydS5jb21tb24udjEuRmlsdGVyQgPgQQFIAogBARIzCgRwYWdlGAQgASgLMhsudGhydS5jb21tb24udjEuUGFnZVJlcXVlc3RCA+BBAUgDiAEBEkAKDW1pbl9jb25zZW5zdXMYBSABKA4yHy50aHJ1LmNvbW1vbi52MS5Db25zZW5zdXNTdGF0dXNCA+BBAUgEiAEBQgcKBV92aWV3QhIKEF92ZXJzaW9uX2NvbnRleHRCCQoHX2ZpbHRlckIHCgVfcGFnZUIQCg5fbWluX2NvbnNlbnN1cyKDAQoUTGlzdEFjY291bnRzUmVzcG9uc2USLAoIYWNjb3VudHMYASADKAsyFS50aHJ1LmNvcmUudjEuQWNjb3VudEID4EEBEjQKBHBhZ2UYAiABKAsyHC50aHJ1LmNvbW1vbi52MS5QYWdlUmVzcG9uc2VCA+BBAUgAiAEBQgcKBV9wYWdlIpwCChFMaXN0QmxvY2tzUmVxdWVzdBIwCgZmaWx0ZXIYASABKAsyFi50aHJ1LmNvbW1vbi52MS5GaWx0ZXJCA+BBAUgAiAEBEjMKBHBhZ2UYAiABKAsyGy50aHJ1LmNvbW1vbi52MS5QYWdlUmVxdWVzdEID4EEBSAGIAQESLwoEdmlldxgDIAEoDjIXLnRocnUuY29yZS52MS5CbG9ja1ZpZXdCA+BBAUgCiAEBEkAKDW1pbl9jb25zZW5zdXMYBCABKA4yHy50aHJ1LmNvbW1vbi52MS5Db25zZW5zdXNTdGF0dXNCA+BBAUgDiAEBQgkKB19maWx0ZXJCBwoFX3BhZ2VCBwoFX3ZpZXdCEAoOX21pbl9jb25zZW5zdXMifQoSTGlzdEJsb2Nrc1Jlc3BvbnNlEigKBmJsb2NrcxgBIAMoCzITLnRocnUuY29yZS52MS5CbG9ja0ID4EEBEjQKBHBhZ2UYAiABKAsyHC50aHJ1LmNvbW1vbi52MS5QYWdlUmVzcG9uc2VCA+BBAUgAiAEBQgcKBV9wYWdlIswBCiFMaXN0VHJhbnNhY3Rpb25zRm9yQWNjb3VudFJlcXVlc3QSLAoHYWNjb3VudBgBIAEoCzIWLnRocnUuY29tbW9uLnYxLlB1YmtleUID4EECEjMKBHBhZ2UYAiABKAsyGy50aHJ1LmNvbW1vbi52MS5QYWdlUmVxdWVzdEID4EEBSACIAQESMAoGZmlsdGVyGAMgASgLMhYudGhydS5jb21tb24udjEuRmlsdGVyQgPgQQFIAYgBAUIHCgVfcGFnZUIJCgdfZmlsdGVyIpkBCiJMaXN0VHJhbnNhY3Rpb25zRm9yQWNjb3VudFJlc3BvbnNlEjQKBHBhZ2UYASABKAsyHC50aHJ1LmNvbW1vbi52MS5QYWdlUmVzcG9uc2VCA+BBAUgAiAEBEjQKDHRyYW5zYWN0aW9ucxgCIAMoCzIZLnRocnUuY29yZS52MS5UcmFuc2FjdGlvbkID4EEBQgcKBV9wYWdlIhMKEUdldFZlcnNpb25SZXF1ZXN0IpABChJHZXRWZXJzaW9uUmVzcG9uc2USSQoIdmVyc2lvbnMYASADKAsyMi50aHJ1LnNlcnZpY2VzLnYxLkdldFZlcnNpb25SZXNwb25zZS5WZXJzaW9uc0VudHJ5QgPgQQIaLwoNVmVyc2lvbnNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIocBCg9HZXRFdmVudFJlcXVlc3QSHQoIZXZlbnRfaWQYASABKAlCC+BBArpIBXIDGIABEkEKD3ZlcnNpb25fY29udGV4dBgCIAEoCzIeLnRocnUuY29tbW9uLnYxLlZlcnNpb25Db250ZXh0QgPgQQFIAIgBAUISChBfdmVyc2lvbl9jb250ZXh0IqgECgVFdmVudBIVCghldmVudF9pZBgBIAEoCUID4EECEj0KFXRyYW5zYWN0aW9uX3NpZ25hdHVyZRgCIAEoCzIZLnRocnUuY29tbW9uLnYxLlNpZ25hdHVyZUID4EECEjEKB3Byb2dyYW0YAyABKAsyFi50aHJ1LmNvbW1vbi52MS5QdWJrZXlCA+BBAUgAiAEBEhkKB3BheWxvYWQYBCABKAxCA+BBAUgBiAEBEhYKBHNsb3QYBSABKARCA+BBAUgCiAEBEhoKCGNhbGxfaWR4GAYgASgNQgPgQQFIA4gBARIdCgtwcm9ncmFtX2lkeBgHIAEoDUID4EEBSASIAQESHgoMcGF5bG9hZF9zaXplGAggASgNQgPgQQFIBYgBARIeCgxibG9ja19vZmZzZXQYCSABKA1CA+BBAUgGiAEBEjcKCXRpbWVzdGFtcBgKIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCA+BBAUgHiAEBEjMKCWZlZV9wYXllchgLIAEoCzIWLnRocnUuY29tbW9uLnYxLlB1YmtleUID4EEBSAiIAQFCCgoIX3Byb2dyYW1CCgoIX3BheWxvYWRCBwoFX3Nsb3RCCwoJX2NhbGxfaWR4Qg4KDF9wcm9ncmFtX2lkeEIPCg1fcGF5bG9hZF9zaXplQg8KDV9ibG9ja19vZmZzZXRCDAoKX3RpbWVzdGFtcEIMCgpfZmVlX3BheWVyIrkCChFMaXN0RXZlbnRzUmVxdWVzdBIwCgZmaWx0ZXIYASABKAsyFi50aHJ1LmNvbW1vbi52MS5GaWx0ZXJCA+BBAUgAiAEBEjMKBHBhZ2UYAiABKAsyGy50aHJ1LmNvbW1vbi52MS5QYWdlUmVxdWVzdEID4EEBSAGIAQESQQoPdmVyc2lvbl9jb250ZXh0GAMgASgLMh4udGhydS5jb21tb24udjEuVmVyc2lvbkNvbnRleHRCA+BBAUgCiAEBEkAKDW1pbl9jb25zZW5zdXMYBCABKA4yHy50aHJ1LmNvbW1vbi52MS5Db25zZW5zdXNTdGF0dXNCA+BBAUgDiAEBQgkKB19maWx0ZXJCBwoFX3BhZ2VCEgoQX3ZlcnNpb25fY29udGV4dEIQCg5fbWluX2NvbnNlbnN1cyKBAQoSTGlzdEV2ZW50c1Jlc3BvbnNlEiwKBmV2ZW50cxgBIAMoCzIXLnRocnUuc2VydmljZXMudjEuRXZlbnRCA+BBARI0CgRwYWdlGAIgASgLMhwudGhydS5jb21tb24udjEuUGFnZVJlc3BvbnNlQgPgQQFIAIgBAUIHCgVfcGFnZSLyAgoXTGlzdFRyYW5zYWN0aW9uc1JlcXVlc3QSMAoGZmlsdGVyGAEgASgLMhYudGhydS5jb21tb24udjEuRmlsdGVyQgPgQQFIAIgBARIzCgRwYWdlGAIgASgLMhsudGhydS5jb21tb24udjEuUGFnZVJlcXVlc3RCA+BBAUgBiAEBEh8KDXJldHVybl9ldmVudHMYAyABKAhCA+BBAUgCiAEBEkEKD3ZlcnNpb25fY29udGV4dBgEIAEoCzIeLnRocnUuY29tbW9uLnYxLlZlcnNpb25Db250ZXh0QgPgQQFIA4gBARJACg1taW5fY29uc2Vuc3VzGAUgASgOMh8udGhydS5jb21tb24udjEuQ29uc2Vuc3VzU3RhdHVzQgPgQQFIBIgBAUIJCgdfZmlsdGVyQgcKBV9wYWdlQhAKDl9yZXR1cm5fZXZlbnRzQhIKEF92ZXJzaW9uX2NvbnRleHRCEAoOX21pbl9jb25zZW5zdXMijwEKGExpc3RUcmFuc2FjdGlvbnNSZXNwb25zZRI0Cgx0cmFuc2FjdGlvbnMYASADKAsyGS50aHJ1LmNvcmUudjEuVHJhbnNhY3Rpb25CA+BBARI0CgRwYWdlGAIgASgLMhwudGhydS5jb21tb24udjEuUGFnZVJlc3BvbnNlQgPgQQFIAIgBAUIHCgVfcGFnZSJQChtHZXRUcmFuc2FjdGlvblN0YXR1c1JlcXVlc3QSMQoJc2lnbmF0dXJlGAEgASgLMhkudGhydS5jb21tb24udjEuU2lnbmF0dXJlQgPgQQIigwIKEVRyYW5zYWN0aW9uU3RhdHVzEjEKCXNpZ25hdHVyZRgBIAEoCzIZLnRocnUuY29tbW9uLnYxLlNpZ25hdHVyZUID4EECEkMKEGNvbnNlbnN1c19zdGF0dXMYAiABKA4yHy50aHJ1LmNvbW1vbi52MS5Db25zZW5zdXNTdGF0dXNCA+BBAUgAiAEBEkwKEGV4ZWN1dGlvbl9yZXN1bHQYAyABKAsyKC50aHJ1LmNvcmUudjEuVHJhbnNhY3Rpb25FeGVjdXRpb25SZXN1bHRCA+BBAUgBiAEBQhMKEV9jb25zZW5zdXNfc3RhdHVzQhMKEV9leGVjdXRpb25fcmVzdWx0IhIKEEdldEhlaWdodFJlcXVlc3QiaQoRR2V0SGVpZ2h0UmVzcG9uc2USFgoJZmluYWxpemVkGAEgASgEQgPgQQISHQoQbG9jYWxseV9leGVjdXRlZBgCIAEoBEID4EECEh0KEGNsdXN0ZXJfZXhlY3V0ZWQYAyABKARCA+BBAiIVChNHZXRDaGFpbkluZm9SZXF1ZXN0IkkKFEdldENoYWluSW5mb1Jlc3BvbnNlEhUKCGNoYWluX2lkGAEgASgNQgPgQQISGgoNbWluX2xvY2tfdGltZRgCIAEoBEID4EEBIjcKFEdldFN0YXRlUm9vdHNSZXF1ZXN0EhYKBHNsb3QYASABKARCA+BBAUgAiAEBQgcKBV9zbG90IjwKDlN0YXRlUm9vdEVudHJ5EhEKBHNsb3QYASABKARCA+BBAhIXCgpzdGF0ZV9yb290GAIgASgMQgPgQQIiUwoVR2V0U3RhdGVSb290c1Jlc3BvbnNlEjoKC3N0YXRlX3Jvb3RzGAEgAygLMiAudGhydS5zZXJ2aWNlcy52MS5TdGF0ZVJvb3RFbnRyeUID4EECInMKG0dldEFjdGl2ZVN0YXRlSGFzaGVzUmVxdWVzdBIaCghlbmRfc2xvdBgBIAEoBEID4EEBSACIAQESHAoKc3RhcnRfc2xvdBgCIAEoBEID4EEBSAGIAQFCCwoJX2VuZF9zbG90Qg0KC19zdGFydF9zbG90IkkKFEFjdGl2ZVN0YXRlSGFzaEVudHJ5EhEKBHNsb3QYASABKARCA+BBAhIeChFhY3RpdmVfc3RhdGVfaGFzaBgCIAEoDEID4EECImgKHEdldEFjdGl2ZVN0YXRlSGFzaGVzUmVzcG9uc2USSAoTYWN0aXZlX3N0YXRlX2hhc2hlcxgBIAMoCzImLnRocnUuc2VydmljZXMudjEuQWN0aXZlU3RhdGVIYXNoRW50cnlCA+BBAiIqChVHZXRTbG90TWV0cmljc1JlcXVlc3QSEQoEc2xvdBgBIAEoBEID4EECIp4CChZHZXRTbG90TWV0cmljc1Jlc3BvbnNlEhEKBHNsb3QYASABKARCA+BBAhIrCh5nbG9iYWxfYWN0aXZhdGVkX3N0YXRlX2NvdW50ZXIYAiABKARCA+BBAhItCiBnbG9iYWxfZGVhY3RpdmF0ZWRfc3RhdGVfY291bnRlchgDIAEoBEID4EECEicKGmFic2VudF9ibG9ja19wcm9kdWNlcl9mZWVzGAQgASgEQgPgQQISPQoPYmxvY2tfdGltZXN0YW1wGAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEID4EEBSACIAQESGQoMY2xhaW1lZF9mZWVzGAYgASgEQgPgQQJCEgoQX2Jsb2NrX3RpbWVzdGFtcCJ9ChZMaXN0U2xvdE1ldHJpY3NSZXF1ZXN0EhcKCnN0YXJ0X3Nsb3QYASABKARCA+BBAhIaCghlbmRfc2xvdBgCIAEoBEID4EEBSACIAQESFwoFbGltaXQYAyABKA1CA+BBAUgBiAEBQgsKCV9lbmRfc2xvdEIICgZfbGltaXQiWQoXTGlzdFNsb3RNZXRyaWNzUmVzcG9uc2USPgoHbWV0cmljcxgBIAMoCzIoLnRocnUuc2VydmljZXMudjEuR2V0U2xvdE1ldHJpY3NSZXNwb25zZUID4EECIhYKFEdldE5vZGVQdWJrZXlSZXF1ZXN0IkQKFUdldE5vZGVQdWJrZXlSZXNwb25zZRIrCgZwdWJrZXkYASABKAsyFi50aHJ1LmNvbW1vbi52MS5QdWJrZXlCA+BBAiIXChVHZXROb2RlUmVjb3Jkc1JlcXVlc3QiSAoWR2V0Tm9kZVJlY29yZHNSZXNwb25zZRIuCgdyZWNvcmRzGAEgAygLMhgudGhydS5jb3JlLnYxLk5vZGVSZWNvcmRCA+BBASIWChRHZXROb2RlU3RhdHVzUmVxdWVzdCLLAQoVR2V0Tm9kZVN0YXR1c1Jlc3BvbnNlEg0KBXJlYWR5GAEgASgIEjgKCWNvbnNlbnN1cxgCIAEoCzIlLnRocnUuc2VydmljZXMudjEuTm9kZUNvbnNlbnN1c1N0YXR1cxIyCgZyZXBhaXIYAyABKAsyIi50aHJ1LnNlcnZpY2VzLnYxLk5vZGVSZXBhaXJTdGF0dXMSFgoOZmluYWxpemVkX3Nsb3QYBCABKAQSHQoVbG9jYWxseV9leGVjdXRlZF9zbG90GAUgASgEImEKE05vZGVDb25zZW5zdXNTdGF0dXMSDgoGYWN0aXZlGAEgASgIEigKBG1vZGUYAiABKA4yGi50aHJ1LnNlcnZpY2VzLnYxLk5vZGVNb2RlEhAKCGZyb250aWVyGAMgASgEIiIKEE5vZGVSZXBhaXJTdGF0dXMSDgoGYWN0aXZlGAEgASgIIsICChpCYXRjaEdldFJhd0FjY291bnRzUmVxdWVzdBI9CgVpdGVtcxgBIAMoCzIpLnRocnUuc2VydmljZXMudjEuQmF0Y2hHZXRSYXdBY2NvdW50c0l0ZW1CA+BBAhJBCg92ZXJzaW9uX2NvbnRleHQYAiABKAsyHi50aHJ1LmNvbW1vbi52MS5WZXJzaW9uQ29udGV4dEID4EEBSACIAQESQAoNbWluX2NvbnNlbnN1cxgDIAEoDjIfLnRocnUuY29tbW9uLnYxLkNvbnNlbnN1c1N0YXR1c0ID4EEBSAGIAQESMQoEdmlldxgEIAEoDjIZLnRocnUuY29yZS52MS5BY2NvdW50Vmlld0ID4EEBSAKIAQFCEgoQX3ZlcnNpb25fY29udGV4dEIQCg5fbWluX2NvbnNlbnN1c0IHCgVfdmlldyKeAQoXQmF0Y2hHZXRSYXdBY2NvdW50c0l0ZW0SLAoHYWRkcmVzcxgBIAEoCzIWLnRocnUuY29tbW9uLnYxLlB1YmtleUID4EECEkEKD3ZlcnNpb25fY29udGV4dBgCIAEoCzIeLnRocnUuY29tbW9uLnYxLlZlcnNpb25Db250ZXh0QgPgQQFIAIgBAUISChBfdmVyc2lvbl9jb250ZXh0IrwBChtCYXRjaEdldFJhd0FjY291bnRzUmVzcG9uc2USUgoIYWNjb3VudHMYASADKAsyOy50aHJ1LnNlcnZpY2VzLnYxLkJhdGNoR2V0UmF3QWNjb3VudHNSZXNwb25zZS5BY2NvdW50c0VudHJ5QgPgQQEaSQoNQWNjb3VudHNFbnRyeRILCgNrZXkYASABKAkSJwoFdmFsdWUYAiABKAsyGC50aHJ1LmNvcmUudjEuUmF3QWNjb3VudDoCOAEivAIKG0JhdGNoR2V0VHJhbnNhY3Rpb25zUmVxdWVzdBIyCgpzaWduYXR1cmVzGAEgAygLMhkudGhydS5jb21tb24udjEuU2lnbmF0dXJlQgPgQQISQQoPdmVyc2lvbl9jb250ZXh0GAIgASgLMh4udGhydS5jb21tb24udjEuVmVyc2lvbkNvbnRleHRCA+BBAUgAiAEBEkAKDW1pbl9jb25zZW5zdXMYAyABKA4yHy50aHJ1LmNvbW1vbi52MS5Db25zZW5zdXNTdGF0dXNCA+BBAUgBiAEBEjUKBHZpZXcYBCABKA4yHS50aHJ1LmNvcmUudjEuVHJhbnNhY3Rpb25WaWV3QgPgQQFIAogBAUISChBfdmVyc2lvbl9jb250ZXh0QhAKDl9taW5fY29uc2Vuc3VzQgcKBV92aWV3IssBChxCYXRjaEdldFRyYW5zYWN0aW9uc1Jlc3BvbnNlElsKDHRyYW5zYWN0aW9ucxgBIAMoCzJALnRocnUuc2VydmljZXMudjEuQmF0Y2hHZXRUcmFuc2FjdGlvbnNSZXNwb25zZS5UcmFuc2FjdGlvbnNFbnRyeUID4EEBGk4KEVRyYW5zYWN0aW9uc0VudHJ5EgsKA2tleRgBIAEoCRIoCgV2YWx1ZRgCIAEoCzIZLnRocnUuY29yZS52MS5UcmFuc2FjdGlvbjoCOAEiiAEKH0JhdGNoR2VuZXJhdGVTdGF0ZVByb29mc1JlcXVlc3QSNgoIcmVxdWVzdHMYASADKAsyHy50aHJ1LmNvcmUudjEuU3RhdGVQcm9vZlJlcXVlc3RCA+BBAhIdCgt0YXJnZXRfc2xvdBgCIAEoBEID4EEBSACIAQFCDgoMX3RhcmdldF9zbG90IlwKIEJhdGNoR2VuZXJhdGVTdGF0ZVByb29mc1Jlc3BvbnNlEjgKB3Jlc3VsdHMYASADKAsyIi50aHJ1LnNlcnZpY2VzLnYxLlN0YXRlUHJvb2ZSZXN1bHRCA+BBASKvAQoQU3RhdGVQcm9vZlJlc3VsdBIxCgVwcm9vZhgBIAEoCzIYLnRocnUuY29yZS52MS5TdGF0ZVByb29mQgPgQQFIAIgBARIcCgplcnJvcl9jb2RlGAIgASgFQgPgQQFIAYgBARIfCg1lcnJvcl9tZXNzYWdlGAMgASgJQgPgQQFIAogBAUIICgZfcHJvb2ZCDQoLX2Vycm9yX2NvZGVCEAoOX2Vycm9yX21lc3NhZ2UiHQobR2V0Q29tcHJlc3Npb25Db25maWdSZXF1ZXN0Iv4BChFDb21wcmVzc2lvbkNvbmZpZxIRCgRzbG90GAEgASgEQgPgQQMSGAoLc3RhdGVfY2xvY2sYAiABKARCA+BBAxIfChJhY3RpdmVfc3RhdGVfdW5pdHMYAyABKARCA+BBAxImChltYXhfc3RhdGVfdW5pdHNfcGVyX2Jsb2NrGAQgASgEQgPgQQMSIwoWbWF4X2FjdGl2ZV9zdGF0ZV91bml0cxgFIAEoBEID4EEDEiQKF2NvbXByZXNzX2Jhc2VsaW5lX3VuaXRzGAYgASgEQgPgQQMSKAobY29tcHJlc3NfaGFsdmluZ19zdGVwX3VuaXRzGAcgASgEQgPgQQMiQgoSQ2FuQ29tcHJlc3NSZXF1ZXN0EiwKB2FkZHJlc3MYASABKAsyFi50aHJ1LmNvbW1vbi52MS5QdWJrZXlCA+BBAiKCAQoTQ2FuQ29tcHJlc3NSZXNwb25zZRIZCgxjYW5fY29tcHJlc3MYASABKAhCA+BBAxIWCglsYXN0X3VzZWQYAiABKARCA+BBAxI4CgZjb25maWcYAyABKAsyIy50aHJ1LnNlcnZpY2VzLnYxLkNvbXByZXNzaW9uQ29uZmlnQgPgQQMqVAoITm9kZU1vZGUSFQoRTk9ERV9NT0RFX1VOS05PV04QABIVChFOT0RFX01PREVfUkVHVUxBUhABEhoKFk5PREVfTU9ERV9DQVRBU1RST1BISUMQAjK0HwoMUXVlcnlTZXJ2aWNlEooBChRHZXRDb21wcmVzc2lvbkNvbmZpZxItLnRocnUuc2VydmljZXMudjEuR2V0Q29tcHJlc3Npb25Db25maWdSZXF1ZXN0GiMudGhydS5zZXJ2aWNlcy52MS5Db21wcmVzc2lvbkNvbmZpZyIegtPkkwIYEhYvdjEvY29tcHJlc3Npb24tY29uZmlnEpYBCgtDYW5Db21wcmVzcxIkLnRocnUuc2VydmljZXMudjEuQ2FuQ29tcHJlc3NSZXF1ZXN0GiUudGhydS5zZXJ2aWNlcy52MS5DYW5Db21wcmVzc1Jlc3BvbnNlIjraQQdhZGRyZXNzgtPkkwIqEigvdjEvYWNjb3VudHMve2FkZHJlc3MudmFsdWV9OmNhbkNvbXByZXNzEmgKCUdldEhlaWdodBIiLnRocnUuc2VydmljZXMudjEuR2V0SGVpZ2h0UmVxdWVzdBojLnRocnUuc2VydmljZXMudjEuR2V0SGVpZ2h0UmVzcG9uc2UiEoLT5JMCDBIKL3YxL2hlaWdodBJ1CgxHZXRDaGFpbkluZm8SJS50aHJ1LnNlcnZpY2VzLnYxLkdldENoYWluSW5mb1JlcXVlc3QaJi50aHJ1LnNlcnZpY2VzLnYxLkdldENoYWluSW5mb1Jlc3BvbnNlIhaC0+STAhASDi92MS9jaGFpbi1pbmZvEngKCkdldEFjY291bnQSIy50aHJ1LnNlcnZpY2VzLnYxLkdldEFjY291bnRSZXF1ZXN0GhUudGhydS5jb3JlLnYxLkFjY291bnQiLtpBB2FkZHJlc3OC0+STAh4SHC92MS9hY2NvdW50cy97YWRkcmVzcy52YWx1ZX0ShQEKDUdldFJhd0FjY291bnQSJi50aHJ1LnNlcnZpY2VzLnYxLkdldFJhd0FjY291bnRSZXF1ZXN0GhgudGhydS5jb3JlLnYxLlJhd0FjY291bnQiMtpBB2FkZHJlc3OC0+STAiISIC92MS9hY2NvdW50cy97YWRkcmVzcy52YWx1ZX06cmF3EpcBChNCYXRjaEdldFJhd0FjY291bnRzEiwudGhydS5zZXJ2aWNlcy52MS5CYXRjaEdldFJhd0FjY291bnRzUmVxdWVzdBotLnRocnUuc2VydmljZXMudjEuQmF0Y2hHZXRSYXdBY2NvdW50c1Jlc3BvbnNlIiOC0+STAh06ASoiGC92MS9hY2NvdW50czpiYXRjaEdldFJhdxKbAQoUQmF0Y2hHZXRUcmFuc2FjdGlvbnMSLS50aHJ1LnNlcnZpY2VzLnYxLkJhdGNoR2V0VHJhbnNhY3Rpb25zUmVxdWVzdBouLnRocnUuc2VydmljZXMudjEuQmF0Y2hHZXRUcmFuc2FjdGlvbnNSZXNwb25zZSIkgtPkkwIeOgEqIhkvdjEvdHJhbnNhY3Rpb25zOmJhdGNoR2V0EowBCg5HZXRUcmFuc2FjdGlvbhInLnRocnUuc2VydmljZXMudjEuR2V0VHJhbnNhY3Rpb25SZXF1ZXN0GhkudGhydS5jb3JlLnYxLlRyYW5zYWN0aW9uIjbaQQlzaWduYXR1cmWC0+STAiQSIi92MS90cmFuc2FjdGlvbnMve3NpZ25hdHVyZS52YWx1ZX0SmQEKEUdldFJhd1RyYW5zYWN0aW9uEioudGhydS5zZXJ2aWNlcy52MS5HZXRSYXdUcmFuc2FjdGlvblJlcXVlc3QaHC50aHJ1LmNvcmUudjEuUmF3VHJhbnNhY3Rpb24iOtpBCXNpZ25hdHVyZYLT5JMCKBImL3YxL3RyYW5zYWN0aW9ucy97c2lnbmF0dXJlLnZhbHVlfTpyYXcShgEKCEdldEJsb2NrEiEudGhydS5zZXJ2aWNlcy52MS5HZXRCbG9ja1JlcXVlc3QaEy50aHJ1LmNvcmUudjEuQmxvY2siQoLT5JMCPFonEiUvdjEvYmxvY2tzL2J5LWhhc2gve2Jsb2NrX2hhc2gudmFsdWV9EhEvdjEvYmxvY2tzL3tzbG90fRKXAQoLR2V0UmF3QmxvY2sSJC50aHJ1LnNlcnZpY2VzLnYxLkdldFJhd0Jsb2NrUmVxdWVzdBoWLnRocnUuY29yZS52MS5SYXdCbG9jayJKgtPkkwJEWisSKS92MS9ibG9ja3MvYnktaGFzaC97YmxvY2tfaGFzaC52YWx1ZX06cmF3EhUvdjEvYmxvY2tzL3tzbG90fTpyYXcScwoMTGlzdEFjY291bnRzEiUudGhydS5zZXJ2aWNlcy52MS5MaXN0QWNjb3VudHNSZXF1ZXN0GiYudGhydS5zZXJ2aWNlcy52MS5MaXN0QWNjb3VudHNSZXNwb25zZSIUgtPkkwIOEgwvdjEvYWNjb3VudHMSawoKTGlzdEJsb2NrcxIjLnRocnUuc2VydmljZXMudjEuTGlzdEJsb2Nrc1JlcXVlc3QaJC50aHJ1LnNlcnZpY2VzLnYxLkxpc3RCbG9ja3NSZXNwb25zZSISgtPkkwIMEgovdjEvYmxvY2tzEsQBChpMaXN0VHJhbnNhY3Rpb25zRm9yQWNjb3VudBIzLnRocnUuc2VydmljZXMudjEuTGlzdFRyYW5zYWN0aW9uc0ZvckFjY291bnRSZXF1ZXN0GjQudGhydS5zZXJ2aWNlcy52MS5MaXN0VHJhbnNhY3Rpb25zRm9yQWNjb3VudFJlc3BvbnNlIjvaQQdhY2NvdW50gtPkkwIrEikvdjEvYWNjb3VudHMve2FjY291bnQudmFsdWV9L3RyYW5zYWN0aW9ucxJwCghHZXRFdmVudBIhLnRocnUuc2VydmljZXMudjEuR2V0RXZlbnRSZXF1ZXN0GhcudGhydS5zZXJ2aWNlcy52MS5FdmVudCIo2kEIZXZlbnRfaWSC0+STAhcSFS92MS9ldmVudHMve2V2ZW50X2lkfRJrCgpMaXN0RXZlbnRzEiMudGhydS5zZXJ2aWNlcy52MS5MaXN0RXZlbnRzUmVxdWVzdBokLnRocnUuc2VydmljZXMudjEuTGlzdEV2ZW50c1Jlc3BvbnNlIhKC0+STAgwSCi92MS9ldmVudHMSgwEKEExpc3RUcmFuc2FjdGlvbnMSKS50aHJ1LnNlcnZpY2VzLnYxLkxpc3RUcmFuc2FjdGlvbnNSZXF1ZXN0GioudGhydS5zZXJ2aWNlcy52MS5MaXN0VHJhbnNhY3Rpb25zUmVzcG9uc2UiGILT5JMCEhIQL3YxL3RyYW5zYWN0aW9ucxKpAQoUR2V0VHJhbnNhY3Rpb25TdGF0dXMSLS50aHJ1LnNlcnZpY2VzLnYxLkdldFRyYW5zYWN0aW9uU3RhdHVzUmVxdWVzdBojLnRocnUuc2VydmljZXMudjEuVHJhbnNhY3Rpb25TdGF0dXMiPdpBCXNpZ25hdHVyZYLT5JMCKxIpL3YxL3RyYW5zYWN0aW9ucy97c2lnbmF0dXJlLnZhbHVlfTpzdGF0dXMSrAEKGEJhdGNoR2VuZXJhdGVTdGF0ZVByb29mcxIxLnRocnUuc2VydmljZXMudjEuQmF0Y2hHZW5lcmF0ZVN0YXRlUHJvb2ZzUmVxdWVzdBoyLnRocnUuc2VydmljZXMudjEuQmF0Y2hHZW5lcmF0ZVN0YXRlUHJvb2ZzUmVzcG9uc2UiKYLT5JMCIzoBKiIeL3YxL3N0YXRlLXByb29mczpiYXRjaEdlbmVyYXRlEpQBChJHZW5lcmF0ZVN0YXRlUHJvb2YSKy50aHJ1LnNlcnZpY2VzLnYxLkdlbmVyYXRlU3RhdGVQcm9vZlJlcXVlc3QaLC50aHJ1LnNlcnZpY2VzLnYxLkdlbmVyYXRlU3RhdGVQcm9vZlJlc3BvbnNlIiOC0+STAh06ASoiGC92MS9zdGF0ZXByb29mczpnZW5lcmF0ZRJsCgpHZXRWZXJzaW9uEiMudGhydS5zZXJ2aWNlcy52MS5HZXRWZXJzaW9uUmVxdWVzdBokLnRocnUuc2VydmljZXMudjEuR2V0VmVyc2lvblJlc3BvbnNlIhOC0+STAg0SCy92MS92ZXJzaW9uEngKDUdldFN0YXRlUm9vdHMSJi50aHJ1LnNlcnZpY2VzLnYxLkdldFN0YXRlUm9vdHNSZXF1ZXN0GicudGhydS5zZXJ2aWNlcy52MS5HZXRTdGF0ZVJvb3RzUmVzcG9uc2UiFoLT5JMCEBIOL3YxL3N0YXRlcm9vdHMSlgEKFEdldEFjdGl2ZVN0YXRlSGFzaGVzEi0udGhydS5zZXJ2aWNlcy52MS5HZXRBY3RpdmVTdGF0ZUhhc2hlc1JlcXVlc3QaLi50aHJ1LnNlcnZpY2VzLnYxLkdldEFjdGl2ZVN0YXRlSGFzaGVzUmVzcG9uc2UiH4LT5JMCGRIXL3YxL2FjdGl2ZS1zdGF0ZS1oYXNoZXMShQEKDkdldFNsb3RNZXRyaWNzEicudGhydS5zZXJ2aWNlcy52MS5HZXRTbG90TWV0cmljc1JlcXVlc3QaKC50aHJ1LnNlcnZpY2VzLnYxLkdldFNsb3RNZXRyaWNzUmVzcG9uc2UiIILT5JMCGhIYL3YxL3Nsb3RzL3tzbG90fS9tZXRyaWNzEoEBCg9MaXN0U2xvdE1ldHJpY3MSKC50aHJ1LnNlcnZpY2VzLnYxLkxpc3RTbG90TWV0cmljc1JlcXVlc3QaKS50aHJ1LnNlcnZpY2VzLnYxLkxpc3RTbG90TWV0cmljc1Jlc3BvbnNlIhmC0+STAhMSES92MS9zbG90cy9tZXRyaWNzEnkKDUdldE5vZGVQdWJrZXkSJi50aHJ1LnNlcnZpY2VzLnYxLkdldE5vZGVQdWJrZXlSZXF1ZXN0GicudGhydS5zZXJ2aWNlcy52MS5HZXROb2RlUHVia2V5UmVzcG9uc2UiF4LT5JMCERIPL3YxL25vZGUvcHVia2V5En0KDkdldE5vZGVSZWNvcmRzEicudGhydS5zZXJ2aWNlcy52MS5HZXROb2RlUmVjb3Jkc1JlcXVlc3QaKC50aHJ1LnNlcnZpY2VzLnYxLkdldE5vZGVSZWNvcmRzUmVzcG9uc2UiGILT5JMCEhIQL3YxL25vZGUvcmVjb3JkcxJ5Cg1HZXROb2RlU3RhdHVzEiYudGhydS5zZXJ2aWNlcy52MS5HZXROb2RlU3RhdHVzUmVxdWVzdBonLnRocnUuc2VydmljZXMudjEuR2V0Tm9kZVN0YXR1c1Jlc3BvbnNlIheC0+STAhESDy92MS9ub2RlL3N0YXR1cxoTykEQYXBpLnRocnUubmV0d29ya0LcAQoUY29tLnRocnUuc2VydmljZXMudjFCEVF1ZXJ5U2VydmljZVByb3RvUAFaSGdpdGh1Yi5jb20vVW50by1MYWJzL3RocnUtbmV0L2dycGMvcGtnL3Byb3RvL3RocnUvc2VydmljZXMvdjE7c2VydmljZXN2MaICA1RTWKoCEFRocnUuU2VydmljZXMuVjG6AgRUSFVTygIQVGhydVxTZXJ2aWNlc1xWMeICHFRocnVcU2VydmljZXNcVjFcR1BCTWV0YWRhdGHqAhJUaHJ1OjpTZXJ2aWNlczo6VjFiBnByb3RvMw\", [file_buf_validate_validate, file_google_api_annotations, file_google_api_client, file_google_api_field_behavior, file_google_protobuf_timestamp, file_thru_common_v1_consensus, file_thru_common_v1_filters, file_thru_common_v1_pagination, file_thru_common_v1_primitives, file_thru_core_v1_account, file_thru_core_v1_block, file_thru_core_v1_state, file_thru_core_v1_transaction, file_thru_core_v1_types, file_thru_core_v1_node]);\n\n/**\n * GetAccountRequest retrieves a decoded account by public key.\n *\n * @generated from message thru.services.v1.GetAccountRequest\n */\nexport type GetAccountRequest = Message<\"thru.services.v1.GetAccountRequest\"> & {\n  /**\n   * @generated from field: thru.common.v1.Pubkey address = 1;\n   */\n  address?: Pubkey | undefined;\n\n  /**\n   * @generated from field: optional thru.core.v1.AccountView view = 2;\n   */\n  view?: AccountView | undefined;\n\n  /**\n   * @generated from field: thru.common.v1.VersionContext version_context = 3;\n   */\n  versionContext?: VersionContext | undefined;\n\n  /**\n   * @generated from field: optional thru.core.v1.DataSlice data_slice = 5;\n   */\n  dataSlice?: DataSlice | undefined;\n};\n\n/**\n * Describes the message thru.services.v1.GetAccountRequest.\n * Use `create(GetAccountRequestSchema)` to create a new message.\n */\nexport const GetAccountRequestSchema: GenMessage<GetAccountRequest> = /*@__PURE__*/\n  messageDesc(file_thru_services_v1_query_service, 0);\n\n/**\n * GetRawAccountRequest retrieves raw account bytes by public key.\n *\n * @generated from message thru.services.v1.GetRawAccountRequest\n */\nexport type GetRawAccountRequest = Message<\"thru.services.v1.GetRawAccountRequest\"> & {\n  /**\n   * @generated from field: thru.common.v1.Pubkey address = 1;\n   */\n  address?: Pubkey | undefined;\n\n  /**\n   * Controls which sections of the raw response are returned.\n   * ACCOUNT_VIEW_UNSPECIFIED and ACCOUNT_VIEW_FULL (default) return both\n   * raw_meta and raw_data. ACCOUNT_VIEW_META_ONLY skips the data fetch\n   * entirely and omits raw_data from the response. ACCOUNT_VIEW_DATA_ONLY\n   * and ACCOUNT_VIEW_PUBKEY_ONLY are rejected with InvalidArgument: raw_meta\n   * is a REQUIRED field on RawAccount, so a raw response without it has no\n   * honest encoding, and a raw response of only an address is meaningless.\n   *\n   * @generated from field: optional thru.core.v1.AccountView view = 2;\n   */\n  view?: AccountView | undefined;\n\n  /**\n   * @generated from field: thru.common.v1.VersionContext version_context = 3;\n   */\n  versionContext?: VersionContext | undefined;\n};\n\n/**\n * Describes the message thru.services.v1.GetRawAccountRequest.\n * Use `create(GetRawAccountRequestSchema)` to create a new message.\n */\nexport const GetRawAccountRequestSchema: GenMessage<GetRawAccountRequest> = /*@__PURE__*/\n  messageDesc(file_thru_services_v1_query_service, 1);\n\n/**\n * GetTransactionRequest retrieves a decoded transaction by signature.\n *\n * @generated from message thru.services.v1.GetTransactionRequest\n */\nexport type GetTransactionRequest = Message<\"thru.services.v1.GetTransactionRequest\"> & {\n  /**\n   * @generated from field: thru.common.v1.Signature signature = 1;\n   */\n  signature?: Signature | undefined;\n\n  /**\n   * @generated from field: optional thru.core.v1.TransactionView view = 2;\n   */\n  view?: TransactionView | undefined;\n\n  /**\n   * @generated from field: thru.common.v1.VersionContext version_context = 3;\n   */\n  versionContext?: VersionContext | undefined;\n\n  /**\n   * @generated from field: optional thru.common.v1.ConsensusStatus min_consensus = 4;\n   */\n  minConsensus?: ConsensusStatus | undefined;\n};\n\n/**\n * Describes the message thru.services.v1.GetTransactionRequest.\n * Use `create(GetTransactionRequestSchema)` to create a new message.\n */\nexport const GetTransactionRequestSchema: GenMessage<GetTransactionRequest> = /*@__PURE__*/\n  messageDesc(file_thru_services_v1_query_service, 2);\n\n/**\n * GetRawTransactionRequest retrieves raw transaction bytes by signature.\n *\n * @generated from message thru.services.v1.GetRawTransactionRequest\n */\nexport type GetRawTransactionRequest = Message<\"thru.services.v1.GetRawTransactionRequest\"> & {\n  /**\n   * @generated from field: thru.common.v1.Signature signature = 1;\n   */\n  signature?: Signature | undefined;\n\n  /**\n   * @generated from field: thru.common.v1.VersionContext version_context = 2;\n   */\n  versionContext?: VersionContext | undefined;\n\n  /**\n   * @generated from field: optional thru.common.v1.ConsensusStatus min_consensus = 3;\n   */\n  minConsensus?: ConsensusStatus | undefined;\n};\n\n/**\n * Describes the message thru.services.v1.GetRawTransactionRequest.\n * Use `create(GetRawTransactionRequestSchema)` to create a new message.\n */\nexport const GetRawTransactionRequestSchema: GenMessage<GetRawTransactionRequest> = /*@__PURE__*/\n  messageDesc(file_thru_services_v1_query_service, 3);\n\n/**\n * GenerateStateProofRequest requests an account state proof.\n *\n * @generated from message thru.services.v1.GenerateStateProofRequest\n */\nexport type GenerateStateProofRequest = Message<\"thru.services.v1.GenerateStateProofRequest\"> & {\n  /**\n   * @generated from field: thru.core.v1.StateProofRequest request = 1;\n   */\n  request?: StateProofRequest | undefined;\n};\n\n/**\n * Describes the message thru.services.v1.GenerateStateProofRequest.\n * Use `create(GenerateStateProofRequestSchema)` to create a new message.\n */\nexport const GenerateStateProofRequestSchema: GenMessage<GenerateStateProofRequest> = /*@__PURE__*/\n  messageDesc(file_thru_services_v1_query_service, 4);\n\n/**\n * GenerateStateProofResponse contains the generated proof.\n *\n * @generated from message thru.services.v1.GenerateStateProofResponse\n */\nexport type GenerateStateProofResponse = Message<\"thru.services.v1.GenerateStateProofResponse\"> & {\n  /**\n   * @generated from field: thru.core.v1.StateProof proof = 1;\n   */\n  proof?: StateProof | undefined;\n};\n\n/**\n * Describes the message thru.services.v1.GenerateStateProofResponse.\n * Use `create(GenerateStateProofResponseSchema)` to create a new message.\n */\nexport const GenerateStateProofResponseSchema: GenMessage<GenerateStateProofResponse> = /*@__PURE__*/\n  messageDesc(file_thru_services_v1_query_service, 5);\n\n/**\n * GetBlockRequest retrieves decoded block information by slot or hash.\n *\n * @generated from message thru.services.v1.GetBlockRequest\n */\nexport type GetBlockRequest = Message<\"thru.services.v1.GetBlockRequest\"> & {\n  /**\n   * @generated from oneof thru.services.v1.GetBlockRequest.selector\n   */\n  selector: {\n    /**\n     * @generated from field: uint64 slot = 1;\n     */\n    value: bigint;\n    case: \"slot\";\n  } | {\n    /**\n     * @generated from field: thru.core.v1.BlockHash block_hash = 2;\n     */\n    value: BlockHash;\n    case: \"blockHash\";\n  } | { case: undefined; value?: undefined };\n\n  /**\n   * @generated from field: optional thru.core.v1.BlockView view = 3;\n   */\n  view?: BlockView | undefined;\n\n  /**\n   * @generated from field: optional thru.common.v1.ConsensusStatus min_consensus = 4;\n   */\n  minConsensus?: ConsensusStatus | undefined;\n};\n\n/**\n * Describes the message thru.services.v1.GetBlockRequest.\n * Use `create(GetBlockRequestSchema)` to create a new message.\n */\nexport const GetBlockRequestSchema: GenMessage<GetBlockRequest> = /*@__PURE__*/\n  messageDesc(file_thru_services_v1_query_service, 6);\n\n/**\n * GetRawBlockRequest retrieves raw block bytes by slot or hash.\n *\n * @generated from message thru.services.v1.GetRawBlockRequest\n */\nexport type GetRawBlockRequest = Message<\"thru.services.v1.GetRawBlockRequest\"> & {\n  /**\n   * @generated from oneof thru.services.v1.GetRawBlockRequest.selector\n   */\n  selector: {\n    /**\n     * @generated from field: uint64 slot = 1;\n     */\n    value: bigint;\n    case: \"slot\";\n  } | {\n    /**\n     * @generated from field: thru.core.v1.BlockHash block_hash = 2;\n     */\n    value: BlockHash;\n    case: \"blockHash\";\n  } | { case: undefined; value?: undefined };\n\n  /**\n   * @generated from field: optional thru.common.v1.ConsensusStatus min_consensus = 3;\n   */\n  minConsensus?: ConsensusStatus | undefined;\n};\n\n/**\n * Describes the message thru.services.v1.GetRawBlockRequest.\n * Use `create(GetRawBlockRequestSchema)` to create a new message.\n */\nexport const GetRawBlockRequestSchema: GenMessage<GetRawBlockRequest> = /*@__PURE__*/\n  messageDesc(file_thru_services_v1_query_service, 7);\n\n/**\n * ListAccountsRequest lists accounts using CEL filters.\n *\n * The filter expression supports filtering on account metadata fields using CEL (Common Expression Language).\n * A filter expression is REQUIRED for all ListAccounts requests.\n *\n * Available fields for filtering:\n *   - account.address.value (bytes): The account's public key address\n *   - account.meta.owner.value (bytes): The account owner's public key\n *   - account.meta.balance (uint64): Account balance in native units\n *   - account.meta.seq (uint64): Account sequence number / state counter\n *   - account.meta.nonce (uint64): Account transaction nonce\n *   - account.meta.data_size (uint32): Size of account data in bytes\n *   - account.meta.version (uint32): Account version number\n *   - account.meta.flags (AccountFlags): Account capability flags (message type)\n *   - account.meta.flags.is_program (bool): Flag indicating if account is a program\n *   - account.meta.flags.is_privileged (bool): Flag indicating if account is privileged\n *   - account.meta.flags.is_uncompressable (bool): Flag indicating if account data cannot be compressed\n *   - account.meta.flags.is_ephemeral (bool): Flag indicating if account is ephemeral\n *   - account.meta.flags.is_deleted (bool): Flag indicating if account is deleted\n *   - account.meta.flags.is_new (bool): Flag indicating if account is new\n *   - account.meta.flags.is_compressed (bool): Flag indicating if account data is compressed\n *   - account.meta.last_updated_slot (uint64): Slot when account was last modified\n *\n * Available CEL functions:\n *   - has(field): Check if optional field exists\n *   - uint(value): Convert to uint type\n *   - int(value): Convert to int type\n *   - string(value): Convert to string type\n *   - bytes(value): Convert to bytes type\n *\n * Available filter parameters (accessible via params.* in expressions):\n *   - params.owner_bytes (bytes): Owner public key for owner filtering (REQUIRED when filtering by owner)\n *   - params.prefix (bytes): Byte prefix for range-based filtering\n *   - params.tag (any): Custom tag parameter\n *   - params.min_slot (uint64): Minimum slot parameter\n *   - params.min_updated_slot (uint64): Minimum last_updated_slot for filtering\n *\n * Filter examples:\n *\n * 1. Filter by balance:\n *      filter.expression = \"account.meta.balance > uint(1000000)\"\n *\n * 2. Filter by balance range:\n *      filter.expression = \"account.meta.balance >= uint(100) && account.meta.balance <= uint(10000)\"\n *\n * 3. Filter by owner (requires params.owner_bytes):\n *      filter.expression = \"account.meta.owner.value == params.owner_bytes\"\n *      filter.params[\"owner_bytes\"].bytes_value = <32-byte owner pubkey>\n *\n * 4. Filter by data size:\n *      filter.expression = \"account.meta.data_size > uint(0)\"\n *      filter.expression = \"account.meta.data_size >= uint(100) && account.meta.data_size <= uint(1000)\"\n *\n * 5. Filter by nonce:\n *      filter.expression = \"account.meta.nonce == uint(0)\"\n *\n * 6. Filter by sequence number:\n *      filter.expression = \"account.meta.seq >= uint(100)\"\n *\n * 7. Filter by version:\n *      filter.expression = \"account.meta.version == uint(1)\"\n *\n * 8. Filter by specific address (using inline bytes literal with octal escaping):\n *      filter.expression = \"account.address.value == b'\\001\\002\\003...'\"\n *      Note: Binary bytes must be properly escaped using octal notation (\\NNN) for non-printable bytes\n *\n * 9. Filter by address prefix (using range comparison):\n *      filter.expression = \"account.address.value >= b'\\001\\002\\003\\004' && account.address.value <= b'\\001\\002\\003\\004\\377\\377...'\"\n *      Note: Create upper bound by appending 0xff bytes after prefix\n *\n * 10. Combine multiple conditions with AND:\n *      filter.expression = \"account.meta.balance > uint(0) && account.meta.data_size == uint(0)\"\n *\n * 11. Combine multiple conditions with OR:\n *      filter.expression = \"account.meta.balance == uint(0) || account.meta.balance > uint(50000)\"\n *\n * 12. Complex combined filters:\n *      filter.expression = \"(account.meta.balance > uint(100) && account.meta.balance < uint(10000)) || account.meta.data_size > uint(1000)\"\n *\n * 13. Check for optional field existence:\n *      filter.expression = \"has(account.address.value)\"\n *      filter.expression = \"has(account.meta.owner.value)\"  // Requires params.owner_bytes\n *\n * 14. Use inequality operators:\n *      filter.expression = \"account.meta.balance < uint(5000)\"\n *      filter.expression = \"account.meta.balance <= uint(5000)\"\n *      filter.expression = \"account.meta.balance >= uint(100)\"\n *      filter.expression = \"account.meta.balance != uint(999)\"\n *\n * 15. Type conversions:\n *      filter.expression = \"account.meta.balance == uint(100)\"\n *      filter.expression = \"uint(account.meta.data_size) > uint(0)\"\n *\n * 16. Filter by account flags (individual flag fields):\n *      filter.expression = \"account.meta.flags.is_program == true\"\n *      filter.expression = \"account.meta.flags.is_privileged == true\"\n *      filter.expression = \"account.meta.flags.is_uncompressable == true\"\n *      filter.expression = \"account.meta.flags.is_ephemeral == true\"\n *      filter.expression = \"account.meta.flags.is_deleted == true\"\n *      filter.expression = \"account.meta.flags.is_new == true\"\n *      filter.expression = \"account.meta.flags.is_compressed == true\"\n *\n * 17. Combine flag filters with other conditions:\n *      filter.expression = \"account.meta.flags.is_program == true && account.meta.balance > uint(0)\"\n *\n * 18. Filter by last_updated_slot:\n *      filter.expression = \"account.meta.last_updated_slot >= uint(1000)\"\n *\n * 19. Filter by last_updated_slot with params:\n *      filter.expression = \"account.meta.last_updated_slot >= params.min_updated_slot\"\n *      filter.params[\"min_updated_slot\"].uint_value = 1000\n *\n * Limitations:\n *   - The startsWith() function only works with strings, not bytes\n *   - The bytesPrefix() function is NOT available for ListAccounts (use range comparison instead)\n *   - Parameter names other than owner_bytes, prefix, tag, min_slot, min_updated_slot are NOT permitted\n *   - All filters are pushed down to SQL for optimal performance where possible\n *\n * @generated from message thru.services.v1.ListAccountsRequest\n */\nexport type ListAccountsRequest = Message<\"thru.services.v1.ListAccountsRequest\"> & {\n  /**\n   * @generated from field: optional thru.core.v1.AccountView view = 1;\n   */\n  view?: AccountView | undefined;\n\n  /**\n   * @generated from field: optional thru.common.v1.VersionContext version_context = 2;\n   */\n  versionContext?: VersionContext | undefined;\n\n  /**\n   * CEL filter expression (REQUIRED). See message documentation for examples.\n   *\n   * @generated from field: optional thru.common.v1.Filter filter = 3;\n   */\n  filter?: Filter | undefined;\n\n  /**\n   * @generated from field: optional thru.common.v1.PageRequest page = 4;\n   */\n  page?: PageRequest | undefined;\n\n  /**\n   * @generated from field: optional thru.common.v1.ConsensusStatus min_consensus = 5;\n   */\n  minConsensus?: ConsensusStatus | undefined;\n};\n\n/**\n * Describes the message thru.services.v1.ListAccountsRequest.\n * Use `create(ListAccountsRequestSchema)` to create a new message.\n */\nexport const ListAccountsRequestSchema: GenMessage<ListAccountsRequest> = /*@__PURE__*/\n  messageDesc(file_thru_services_v1_query_service, 8);\n\n/**\n * ListAccountsResponse contains paginated accounts.\n *\n * @generated from message thru.services.v1.ListAccountsResponse\n */\nexport type ListAccountsResponse = Message<\"thru.services.v1.ListAccountsResponse\"> & {\n  /**\n   * @generated from field: repeated thru.core.v1.Account accounts = 1;\n   */\n  accounts: Account[];\n\n  /**\n   * @generated from field: optional thru.common.v1.PageResponse page = 2;\n   */\n  page?: PageResponse | undefined;\n};\n\n/**\n * Describes the message thru.services.v1.ListAccountsResponse.\n * Use `create(ListAccountsResponseSchema)` to create a new message.\n */\nexport const ListAccountsResponseSchema: GenMessage<ListAccountsResponse> = /*@__PURE__*/\n  messageDesc(file_thru_services_v1_query_service, 9);\n\n/**\n * ListBlocksRequest lists blocks with pagination and filtering.\n *\n * Returns blocks ordered from latest slot to earliest (slot DESC) by default.\n * Supports filtering on block header and footer fields using CEL expressions.\n * The whole filter is evaluated by the database. A filter it cannot evaluate, such as a field compared\n * with timestamp(...), arithmetic or the ternary operator, is rejected with INVALID_ARGUMENT\n * (reason \"not_translatable\").\n *\n * Available fields for filtering:\n *\n * Header fields:\n *   - block.header.slot (uint64): Block slot number\n *   - block.header.version (uint32): Block version number\n *   - block.header.start_slot (uint64): Start slot for block production\n *   - block.header.producer.value (bytes): Block producer's public key\n *   - block.header.expiry_after (uint32): Expiry duration in slots\n *   - block.header.expiry_timestamp (google.protobuf.Timestamp): Expiry timestamp\n *   - block.header.max_block_size (uint32): Maximum block size in bytes\n *   - block.header.max_compute_units (uint64): Maximum compute units allowed\n *   - block.header.max_state_units (uint32): Maximum state units allowed\n *   - block.header.bond_amount_lock_up (uint64): Bond amount lock-up for block production\n *   - block.header.block_hash.value (bytes): Block hash\n *   - block.header.header_signature.value (bytes): Header signature\n *   - block.header.block_time (google.protobuf.Timestamp): Block timestamp\n *\n * Footer fields:\n *   - block.footer.signature.value (bytes): Block signature\n *   - block.footer.status (int32): Block execution status (2 = EXECUTION_STATUS_EXECUTED)\n *   - block.footer.consumed_compute_units (uint64): Total compute units consumed by all transactions\n *   - block.footer.consumed_state_units (uint32): Total state units consumed by all transactions\n *   - block.footer.attestor_payment (uint64): Payment to attestors for block validation\n *\n * Consensus status:\n *   - block.consensus_status (int32): Consensus status (always CONSENSUS_STATUS_INCLUDED for persisted blocks)\n *\n * Available CEL functions:\n *   - has(field): Check if optional field exists\n *   - uint(value): Convert to uint type\n *   - int(value): Convert to int type; int() of a timestamp is whole Unix seconds\n *   - bytes(value): Convert to bytes type\n *   - timestamp(value), duration(value): accepted by CEL but not evaluable by the database; filters\n *     using them are rejected\n *\n * Available filter parameters (accessible via params.* in expressions):\n *   - params.slot (uint64): Slot number for filtering\n *   - params.u64 (uint64): Generic uint64 parameter\n *   - params.producer (bytes): Producer public key for filtering\n *\n * Filter examples:\n *\n * 1. Filter by specific slot:\n *      filter.expression = \"block.header.slot == uint(1234)\"\n *\n * 2. Filter by slot range:\n *      filter.expression = \"block.header.slot >= uint(1000) && block.header.slot <= uint(2000)\"\n *\n * 3. Filter by slot using parameter:\n *      filter.expression = \"block.header.slot == params.slot\"\n *      filter.params[\"slot\"].uint_value = 1234\n *\n * 4. Filter by block version:\n *      filter.expression = \"block.header.version == uint(1)\"\n *\n * 5. Filter by producer (using parameter):\n *      filter.expression = \"block.header.producer.value == params.producer\"\n *      filter.params[\"producer\"].bytes_value = <32-byte producer pubkey>\n *\n * 6. Filter by max compute units:\n *      filter.expression = \"block.header.max_compute_units > uint(1000000)\"\n *      filter.expression = \"block.header.max_compute_units >= uint(0) && block.header.max_compute_units <= uint(10000000)\"\n *\n * 7. Filter by max state units:\n *      filter.expression = \"block.header.max_state_units > uint(0)\"\n *\n * 8. Filter by bond amount:\n *      filter.expression = \"block.header.bond_amount_lock_up >= uint(0)\"\n *      filter.expression = \"block.header.bond_amount_lock_up > uint(1000)\"\n *\n * 9. Filter by start_slot:\n *      filter.expression = \"block.header.start_slot <= uint(5000)\"\n *\n * 10. Filter by expiry_after:\n *      filter.expression = \"block.header.expiry_after > uint(0)\"\n *\n * 11. Filter by max_block_size:\n *      filter.expression = \"block.header.max_block_size >= uint(1000000)\"\n *\n * 12. Filter by execution status:\n *      filter.expression = \"block.footer.status == int(2)\"  // EXECUTION_STATUS_EXECUTED\n *\n * 13. Filter by consumed compute units:\n *      filter.expression = \"block.footer.consumed_compute_units > uint(0)\"\n *      filter.expression = \"block.footer.consumed_compute_units >= uint(100) && block.footer.consumed_compute_units <= uint(1000000)\"\n *\n * 14. Filter by consumed state units:\n *      filter.expression = \"block.footer.consumed_state_units >= uint(0)\"\n *      filter.expression = \"block.footer.consumed_state_units > uint(10)\"\n *\n * 15. Check for footer signature existence:\n *      filter.expression = \"has(block.footer.signature)\"\n *\n * 16. Check for footer existence:\n *      filter.expression = \"has(block.footer)\"\n *\n * 17. Check for producer existence:\n *      filter.expression = \"has(block.header.producer)\"\n *\n * 18. Check for block hash existence:\n *      filter.expression = \"has(block.header.block_hash)\"\n *\n * 19. Check for header signature existence:\n *      filter.expression = \"has(block.header.header_signature)\"\n *\n * 20. Check for expiry timestamp existence:\n *      filter.expression = \"has(block.header.expiry_timestamp)\"\n *\n * 21. Check for block time existence:\n *      filter.expression = \"has(block.header.block_time)\"\n *\n * 22. Combine multiple header conditions with AND:\n *      filter.expression = \"block.header.slot >= uint(1000) && block.header.max_compute_units > uint(1000000)\"\n *\n * 23. Combine multiple footer conditions with AND:\n *      filter.expression = \"block.footer.consumed_compute_units > uint(0) && block.footer.consumed_state_units > uint(0)\"\n *\n * 24. Combine header and footer conditions:\n *      filter.expression = \"block.header.slot >= uint(1000) && block.footer.consumed_compute_units > uint(100000)\"\n *\n * 25. Combine multiple conditions with OR:\n *      filter.expression = \"block.header.slot == uint(100) || block.header.slot == uint(200)\"\n *      filter.expression = \"block.footer.consumed_compute_units > uint(1000000) || block.footer.consumed_state_units > uint(10000)\"\n *\n * 26. Complex combined filters:\n *      filter.expression = \"(block.header.slot >= uint(1000) && block.header.slot <= uint(2000)) || block.footer.consumed_compute_units > uint(5000000)\"\n *\n * 27. Use inequality operators:\n *      filter.expression = \"block.header.max_compute_units < uint(10000000)\"\n *      filter.expression = \"block.header.max_compute_units <= uint(10000000)\"\n *      filter.expression = \"block.header.bond_amount_lock_up >= uint(100)\"\n *      filter.expression = \"block.footer.consumed_compute_units != uint(0)\"\n *\n * 28. Combine has() with value checks:\n *      filter.expression = \"has(block.header.producer) && block.header.producer.value == params.producer\"\n *      filter.params[\"producer\"].bytes_value = <32-byte producer pubkey>\n *\n * 29. Filter by multiple resource limits:\n *      filter.expression = \"block.header.max_compute_units > uint(1000000) && block.header.max_state_units > uint(1000) && block.header.max_block_size > uint(1000000)\"\n *\n * 30. Filter by block time:\n *      filter.expression = \"int(block.header.block_time) >= 1767225600\"\n *\n * Note: blocks are stored in slot order. One call reads a bounded number of blocks (about 100,000). When\n * a filter needs more to fill the page, the call returns the matches found so far, possibly none, with a\n * next_page_token to continue from: a short or empty page with a token is not the end of the results.\n * Bound a rare match with block.header.slot to need fewer calls.\n *\n * @generated from message thru.services.v1.ListBlocksRequest\n */\nexport type ListBlocksRequest = Message<\"thru.services.v1.ListBlocksRequest\"> & {\n  /**\n   * CEL filter expression (OPTIONAL). See message documentation for examples.\n   *\n   * @generated from field: optional thru.common.v1.Filter filter = 1;\n   */\n  filter?: Filter | undefined;\n\n  /**\n   * @generated from field: optional thru.common.v1.PageRequest page = 2;\n   */\n  page?: PageRequest | undefined;\n\n  /**\n   * @generated from field: optional thru.core.v1.BlockView view = 3;\n   */\n  view?: BlockView | undefined;\n\n  /**\n   * @generated from field: optional thru.common.v1.ConsensusStatus min_consensus = 4;\n   */\n  minConsensus?: ConsensusStatus | undefined;\n};\n\n/**\n * Describes the message thru.services.v1.ListBlocksRequest.\n * Use `create(ListBlocksRequestSchema)` to create a new message.\n */\nexport const ListBlocksRequestSchema: GenMessage<ListBlocksRequest> = /*@__PURE__*/\n  messageDesc(file_thru_services_v1_query_service, 10);\n\n/**\n * ListBlocksResponse returns a page of blocks.\n *\n * @generated from message thru.services.v1.ListBlocksResponse\n */\nexport type ListBlocksResponse = Message<\"thru.services.v1.ListBlocksResponse\"> & {\n  /**\n   * @generated from field: repeated thru.core.v1.Block blocks = 1;\n   */\n  blocks: Block[];\n\n  /**\n   * @generated from field: optional thru.common.v1.PageResponse page = 2;\n   */\n  page?: PageResponse | undefined;\n};\n\n/**\n * Describes the message thru.services.v1.ListBlocksResponse.\n * Use `create(ListBlocksResponseSchema)` to create a new message.\n */\nexport const ListBlocksResponseSchema: GenMessage<ListBlocksResponse> = /*@__PURE__*/\n  messageDesc(file_thru_services_v1_query_service, 11);\n\n/**\n * ListTransactionsForAccountRequest lists transactions involving a specific account.\n *\n * This RPC returns all transactions where the specified account appears in any\n * capacity (fee payer, signer, or affected account). Results can be filtered\n * using CEL expressions on transaction properties.\n *\n * ## Available Filter Fields\n *\n * - `transaction.slot` (uint64): Block slot number\n * - `transaction.block_offset` (uint32): Position within block\n * - `transaction.signature.value` (bytes): Transaction signature\n *\n * Header fields (a transaction whose header is not stored reads them as zero or empty):\n * - `transaction.header.version` (uint32): Transaction format version\n * - `transaction.header.fee` (uint64): Transaction fee\n * - `transaction.header.nonce` (uint64): Sender account nonce\n * - `transaction.header.start_slot` (uint64): Earliest slot for execution\n * - `transaction.header.expiry_after` (uint32): Expiry duration in slots\n * - `transaction.header.requested_compute_units` (uint64): Requested compute units\n * - `transaction.header.requested_memory_units` (uint32): Requested memory units\n * - `transaction.header.requested_state_units` (uint32): Requested state units\n * - `transaction.header.fee_payer_pubkey.value` (bytes): Fee payer public key\n * - `transaction.header.program_pubkey.value` (bytes): Program public key\n * - `transaction.header.fee_payer_signature.value` (bytes): Fee payer signature\n *\n * Execution result fields:\n * - `transaction.execution_result.vm_error` (TransactionVmError enum): VM execution status (0 = success)\n * - `transaction.execution_result.user_error_code` (uint64): User-defined error code\n * - `transaction.execution_result.execution_result` (uint64): Alias for user_error_code\n * - `transaction.execution_result.consumed_compute_units` (uint64): Compute units used\n * - `transaction.execution_result.consumed_memory_units` (uint32): Memory units used\n * - `transaction.execution_result.consumed_state_units` (uint32): State units used\n * - `transaction.execution_result.events_count` (uint32): Number of events emitted\n * - `transaction.execution_result.events_size` (uint32): Total size of event data in bytes\n *\n * ## Filter Examples\n *\n * ### Filter by slot\n * ```\n * filter {\n *   expression: \"transaction.slot == params.slot\"\n *   params {\n *     key: \"slot\"\n *     value { int_value: 12345 }\n *   }\n * }\n * ```\n *\n * ### Filter by block offset\n * ```\n * filter {\n *   expression: \"transaction.block_offset == uint(5)\"\n * }\n * ```\n *\n * ### Filter by compute units (high usage)\n * ```\n * filter {\n *   expression: \"transaction.execution_result.consumed_compute_units >= uint(1000000)\"\n * }\n * ```\n *\n * ### Filter by memory units\n * ```\n * filter {\n *   expression: \"transaction.execution_result.consumed_memory_units > uint(0)\"\n * }\n * ```\n *\n * ### Filter by state units\n * ```\n * filter {\n *   expression: \"transaction.execution_result.consumed_state_units > uint(0)\"\n * }\n * ```\n *\n * ### Filter successful transactions (by error code)\n * ```\n * filter {\n *   expression: \"transaction.execution_result.user_error_code == uint(0)\"\n * }\n * ```\n *\n * ### Filter by VM execution status\n * ```\n * filter {\n *   expression: \"transaction.execution_result.vm_error == int(0)\"\n * }\n * ```\n *\n * ### Filter transactions with events\n * ```\n * filter {\n *   expression: \"transaction.execution_result.events_count > uint(0)\"\n * }\n * ```\n *\n * ### Filter by event data size\n * ```\n * filter {\n *   expression: \"transaction.execution_result.events_size > uint(0)\"\n * }\n * ```\n *\n * ### Check for optional fields using has()\n * ```\n * filter {\n *   expression: \"has(transaction.execution_result)\"\n * }\n * ```\n *\n * ### Combined filters with AND/OR\n * ```\n * filter {\n *   expression: \"transaction.execution_result.consumed_compute_units >= uint(1000000) && transaction.execution_result.user_error_code == uint(0)\"\n * }\n * ```\n *\n * ### Using params for dynamic values\n * ```\n * filter {\n *   expression: \"transaction.execution_result.consumed_compute_units >= params.u64\"\n *   params {\n *     key: \"u64\"\n *     value { int_value: 500000 }\n *   }\n * }\n * ```\n *\n * ## Available Functions\n *\n * - `has(field)`: Check if optional field is present\n * - `uint(value)`: Convert to unsigned integer\n * - `int(value)`: Convert to signed integer\n * - `string(value)`: Convert to string type\n * - `bytes(value)`: Convert to bytes type\n *\n * ## Available Filter Parameters\n *\n * - `params.slot` (uint64): Slot number for filtering\n * - `params.u64` (uint64): Generic uint64 parameter\n * - `params.pubkey` (Pubkey): Public key parameter for filtering\n *\n * The whole filter is evaluated by the database. A filter it cannot evaluate,\n * such as arithmetic, the ternary operator or `string()` of a field, is\n * rejected with INVALID_ARGUMENT (reason \"not_translatable\").\n *\n * ## Performance Notes\n *\n * One call reads a bounded number of the account's transactions (about\n * 4,096). When a filter needs more to fill the page, the call returns the\n * matches found so far, possibly none, with a next_page_token to continue\n * from: a short or empty page with a token is not the end of the results.\n *\n * @generated from message thru.services.v1.ListTransactionsForAccountRequest\n */\nexport type ListTransactionsForAccountRequest = Message<\"thru.services.v1.ListTransactionsForAccountRequest\"> & {\n  /**\n   * @generated from field: thru.common.v1.Pubkey account = 1;\n   */\n  account?: Pubkey | undefined;\n\n  /**\n   * @generated from field: optional thru.common.v1.PageRequest page = 2;\n   */\n  page?: PageRequest | undefined;\n\n  /**\n   * Optional CEL filter applied after the account constraint.\n   *\n   * @generated from field: optional thru.common.v1.Filter filter = 3;\n   */\n  filter?: Filter | undefined;\n};\n\n/**\n * Describes the message thru.services.v1.ListTransactionsForAccountRequest.\n * Use `create(ListTransactionsForAccountRequestSchema)` to create a new message.\n */\nexport const ListTransactionsForAccountRequestSchema: GenMessage<ListTransactionsForAccountRequest> = /*@__PURE__*/\n  messageDesc(file_thru_services_v1_query_service, 12);\n\n/**\n * ListTransactionsForAccountResponse contains transaction data.\n *\n *\n * @generated from message thru.services.v1.ListTransactionsForAccountResponse\n */\nexport type ListTransactionsForAccountResponse = Message<\"thru.services.v1.ListTransactionsForAccountResponse\"> & {\n  /**\n   * @generated from field: optional thru.common.v1.PageResponse page = 1;\n   */\n  page?: PageResponse | undefined;\n\n  /**\n   * @generated from field: repeated thru.core.v1.Transaction transactions = 2;\n   */\n  transactions: Transaction[];\n};\n\n/**\n * Describes the message thru.services.v1.ListTransactionsForAccountResponse.\n * Use `create(ListTransactionsForAccountResponseSchema)` to create a new message.\n */\nexport const ListTransactionsForAccountResponseSchema: GenMessage<ListTransactionsForAccountResponse> = /*@__PURE__*/\n  messageDesc(file_thru_services_v1_query_service, 13);\n\n/**\n * GetVersionRequest fetches component version strings.\n *\n * @generated from message thru.services.v1.GetVersionRequest\n */\nexport type GetVersionRequest = Message<\"thru.services.v1.GetVersionRequest\"> & {\n};\n\n/**\n * Describes the message thru.services.v1.GetVersionRequest.\n * Use `create(GetVersionRequestSchema)` to create a new message.\n */\nexport const GetVersionRequestSchema: GenMessage<GetVersionRequest> = /*@__PURE__*/\n  messageDesc(file_thru_services_v1_query_service, 14);\n\n/**\n * GetVersionResponse returns version information per component.\n *\n * @generated from message thru.services.v1.GetVersionResponse\n */\nexport type GetVersionResponse = Message<\"thru.services.v1.GetVersionResponse\"> & {\n  /**\n   * @generated from field: map<string, string> versions = 1;\n   */\n  versions: { [key: string]: string };\n};\n\n/**\n * Describes the message thru.services.v1.GetVersionResponse.\n * Use `create(GetVersionResponseSchema)` to create a new message.\n */\nexport const GetVersionResponseSchema: GenMessage<GetVersionResponse> = /*@__PURE__*/\n  messageDesc(file_thru_services_v1_query_service, 15);\n\n/**\n * GetEventRequest fetches an event by identifier.\n *\n * @generated from message thru.services.v1.GetEventRequest\n */\nexport type GetEventRequest = Message<\"thru.services.v1.GetEventRequest\"> & {\n  /**\n   * @generated from field: string event_id = 1;\n   */\n  eventId: string;\n\n  /**\n   * @generated from field: optional thru.common.v1.VersionContext version_context = 2;\n   */\n  versionContext?: VersionContext | undefined;\n};\n\n/**\n * Describes the message thru.services.v1.GetEventRequest.\n * Use `create(GetEventRequestSchema)` to create a new message.\n */\nexport const GetEventRequestSchema: GenMessage<GetEventRequest> = /*@__PURE__*/\n  messageDesc(file_thru_services_v1_query_service, 16);\n\n/**\n * Event represents a transaction event emitted by the chain.\n *\n * @generated from message thru.services.v1.Event\n */\nexport type Event = Message<\"thru.services.v1.Event\"> & {\n  /**\n   * @generated from field: string event_id = 1;\n   */\n  eventId: string;\n\n  /**\n   * @generated from field: thru.common.v1.Signature transaction_signature = 2;\n   */\n  transactionSignature?: Signature | undefined;\n\n  /**\n   * @generated from field: optional thru.common.v1.Pubkey program = 3;\n   */\n  program?: Pubkey | undefined;\n\n  /**\n   * @generated from field: optional bytes payload = 4;\n   */\n  payload?: Uint8Array | undefined;\n\n  /**\n   * @generated from field: optional uint64 slot = 5;\n   */\n  slot?: bigint | undefined;\n\n  /**\n   * @generated from field: optional uint32 call_idx = 6;\n   */\n  callIdx?: number | undefined;\n\n  /**\n   * @generated from field: optional uint32 program_idx = 7;\n   */\n  programIdx?: number | undefined;\n\n  /**\n   * @generated from field: optional uint32 payload_size = 8;\n   */\n  payloadSize?: number | undefined;\n\n  /**\n   * @generated from field: optional uint32 block_offset = 9;\n   */\n  blockOffset?: number | undefined;\n\n  /**\n   * @generated from field: optional google.protobuf.Timestamp timestamp = 10;\n   */\n  timestamp?: Timestamp | undefined;\n\n  /**\n   * @generated from field: optional thru.common.v1.Pubkey fee_payer = 11;\n   */\n  feePayer?: Pubkey | undefined;\n};\n\n/**\n * Describes the message thru.services.v1.Event.\n * Use `create(EventSchema)` to create a new message.\n */\nexport const EventSchema: GenMessage<Event> = /*@__PURE__*/\n  messageDesc(file_thru_services_v1_query_service, 17);\n\n/**\n * ListEventsRequest lists events with CEL filtering and pagination.\n *\n * Returns events ordered from most recent to older (slot DESC, block_offset DESC, call_idx DESC).\n * Supports filtering on event metadata and payload using CEL expressions with specialized byte functions.\n * The whole filter is evaluated by the database. A filter it cannot evaluate, such as event_id.startsWith,\n * event.timestamp compared with timestamp(...), arithmetic or the ternary operator, is rejected with\n * INVALID_ARGUMENT (reason \"not_translatable\").\n *\n * Available fields for filtering:\n *   - event.event_id (string): Event identifier \"{signature}:{slot}:{block_offset}:{call_idx}:{event_idx}\";\n *     == and != only. A value that is not an identifier ListEvents returns matches nothing.\n *   - event.transaction_signature.value (bytes): Transaction signature that emitted the event\n *   - event.slot (uint64): Block slot number where event was emitted\n *   - event.call_idx (uint32): Instruction call index within transaction\n *   - event.block_offset (uint32): Transaction's position within the block\n *   - event.timestamp (google.protobuf.Timestamp): Block time; has() and int(event.timestamp) (Unix seconds) only\n *   - event.program (Pubkey): has() only; compare event.program.value\n *   - event.program.value (bytes): Program public key that emitted the event; empty when unset\n *   - event.program_idx (uint32): Program index within transaction\n *   - event.payload (bytes): Event payload data\n *   - event.payload_size (uint32): Size of event payload in bytes\n *   - event.fee_payer (Pubkey): has() only; compare event.fee_payer.value\n *   - event.fee_payer.value (bytes): Fee payer's public key for the transaction; empty when unset\n *\n * Available CEL functions:\n *   - has(field): Check if optional field exists\n *   - first1Byte(bytes): Extract first byte as uint8\n *   - first4Bytes(bytes): Extract first 4 bytes as uint32 (little-endian)\n *   - first8Bytes(bytes): Extract first 8 bytes as uint64 (little-endian)\n *   - bytesPrefix(bytes, prefix): Check if bytes start with prefix\n *   - uint(value): Convert to uint type\n *   - int(value): Convert to int type\n *   - string(value): Convert to string type\n *   - bytes(value): Convert to bytes type\n *   - double(value): Convert to double type\n *   - timestamp(value), duration(value), startsWith(string, prefix): accepted by CEL but not evaluable by\n *     the database; filters using them on event fields are rejected\n *\n * Available filter parameters (accessible via params.* in expressions):\n *   - params.slot (uint64): Slot number for filtering\n *   - params.u64 (uint64): Generic uint64 parameter for payload matching\n *   - params.signature (Signature): Transaction signature for filtering\n *   - params.signature.value (bytes): Transaction signature bytes for filtering\n *   - params.address (Pubkey): Program address for filtering\n *   - params.address.value (bytes): Program address bytes for filtering\n *   - params.prefix (bytes): Byte prefix for payload filtering\n *   - params.timestamp (int64): Unix seconds, compared with int(event.timestamp)\n *\n * Filter examples:\n *\n * 1. Filter by slot:\n *      filter.expression = \"event.slot > uint(1000)\"\n *      filter.expression = \"event.slot >= uint(100) && event.slot <= uint(200)\"\n *\n * 2. Filter by slot using parameter:\n *      filter.expression = \"event.slot >= params.slot\"\n *      filter.params[\"slot\"].int_value = 1234\n *\n * 3. Filter by call index:\n *      filter.expression = \"event.call_idx == uint(0)\"  // First instruction\n *      filter.expression = \"event.call_idx > uint(0)\"   // Nested instructions\n *\n * 4. Filter by block offset:\n *      filter.expression = \"event.block_offset >= uint(0)\"\n *      filter.expression = \"event.block_offset == uint(5)\"\n *\n * 5. Filter by transaction signature (using parameter):\n *      filter.expression = \"event.transaction_signature.value == params.signature\"\n *      filter.params[\"signature\"].signature_value.value = <64-byte signature>\n *\n * 6. Filter by program address (using parameter):\n *      filter.expression = \"has(event.program) && event.program.value == params.address\"\n *      filter.params[\"address\"].pubkey_value.value = <32-byte program pubkey>\n *\n * 7. Filter by event ID:\n *      filter.expression = \"event.event_id == \\\"{signature}:{slot}:{block_offset}:{call_idx}:{event_idx}\\\"\"\n *\n * 8. Check for payload existence:\n *      filter.expression = \"has(event.payload)\"\n *\n * 9. Check for program existence:\n *      filter.expression = \"has(event.program)\"\n *\n * 10. Filter by payload first byte (event type):\n *      filter.expression = \"has(event.payload) && first1Byte(event.payload) == uint(1)\"  // MESSAGE events\n *      filter.expression = \"has(event.payload) && first1Byte(event.payload) == uint(2)\"  // Other type\n *\n * 11. Filter by payload first 4 bytes (uint32 event type):\n *      filter.expression = \"has(event.payload) && first4Bytes(event.payload) == uint(2)\"  // COUNTER events\n *      filter.expression = \"has(event.payload) && first4Bytes(event.payload) == params.u64\"\n *      filter.params[\"u64\"].int_value = 2\n *\n * 12. Filter by payload first 8 bytes (uint64 event type):\n *      filter.expression = \"has(event.payload) && first8Bytes(event.payload) == uint(6)\"  // PATTERN events\n *      filter.expression = \"has(event.payload) && first8Bytes(event.payload) == params.u64\"\n *      filter.params[\"u64\"].int_value = 6\n *\n * 13. Filter by payload byte prefix:\n *      filter.expression = \"bytesPrefix(event.payload, params.prefix)\"\n *      filter.params[\"prefix\"].bytes_value = <byte prefix to match>\n *\n * 14. Combine slot and call_idx filters:\n *      filter.expression = \"event.slot > uint(1000) && event.call_idx == uint(0)\"\n *\n * 15. Combine slot, call_idx, and payload existence:\n *      filter.expression = \"event.slot > uint(1000) && event.call_idx == uint(0) && has(event.payload)\"\n *\n * 16. Filter by program and payload type:\n *      filter.expression = \"has(event.program) && event.program.value == params.address && first1Byte(event.payload) == uint(1)\"\n *      filter.params[\"address\"].pubkey_value.value = <32-byte program pubkey>\n *\n * 17. Filter MESSAGE events (type 1) with specific program:\n *      filter.expression = \"has(event.payload) && first1Byte(event.payload) == uint(1) && event.program.value == params.address\"\n *      filter.params[\"address\"].pubkey_value.value = <32-byte program pubkey>\n *\n * 18. Filter COUNTER events (type 2) in slot range:\n *      filter.expression = \"has(event.payload) && first4Bytes(event.payload) == uint(2) && event.slot >= uint(100) && event.slot <= uint(200)\"\n *\n * 19. Filter PATTERN events (type 6) with payload prefix:\n *      filter.expression = \"has(event.payload) && first8Bytes(event.payload) == uint(6) && bytesPrefix(event.payload, params.prefix)\"\n *      filter.params[\"prefix\"].bytes_value = <pattern prefix bytes>\n *\n * 20. Complex combined filter:\n *      filter.expression = \"(event.slot > uint(1000) && event.call_idx == uint(0)) || first1Byte(event.payload) == uint(1)\"\n *\n * 21. Filter events from specific transaction:\n *      filter.expression = \"event.transaction_signature.value == params.signature && has(event.payload)\"\n *      filter.params[\"signature\"].signature_value.value = <64-byte signature>\n *\n * 22. Filter by multiple payload type options:\n *      filter.expression = \"has(event.payload) && (first1Byte(event.payload) == uint(1) || first1Byte(event.payload) == uint(2))\"\n *\n * 23. Filter nested instruction events:\n *      filter.expression = \"event.call_idx > uint(0) && has(event.program)\"\n *\n * 24. Filter first instruction events only:\n *      filter.expression = \"event.call_idx == uint(0)\"\n *\n * 25. Filter events with payload longer than specific size (using bytesPrefix with empty prefix):\n *      filter.expression = \"has(event.payload)\"\n *\n * 26. Combine has() checks:\n *      filter.expression = \"has(event.program) && has(event.payload) && has(event.timestamp)\"\n *\n * 27. Use inequality operators:\n *      filter.expression = \"event.slot < uint(10000)\"\n *      filter.expression = \"event.slot <= uint(10000)\"\n *      filter.expression = \"event.call_idx >= uint(0)\"\n *      filter.expression = \"event.block_offset != uint(0)\"\n *\n * 28. Filter by timestamp (if available):\n *      filter.expression = \"has(event.timestamp)\"\n *\n * 29. Filter by block time:\n *      filter.expression = \"int(event.timestamp) >= params.timestamp\"\n *      filter.params[\"timestamp\"].int_value = 1767225600\n *\n * 30. Complex payload and metadata filter:\n *      filter.expression = \"event.slot >= params.slot && has(event.payload) && first8Bytes(event.payload) == params.u64 && event.program.value == params.address\"\n *      filter.params[\"slot\"].int_value = 1000\n *      filter.params[\"u64\"].int_value = 6\n *      filter.params[\"address\"].pubkey_value.value = <32-byte program pubkey>\n *\n * Note: Only slot, block_offset and call_idx are in the table's sort key, and event_id equality selects by\n * them too. One call reads a bounded number of rows (about 100,000). When a filter needs more to fill the\n * page, the call returns the matches found so far, possibly none, with a next_page_token to continue from:\n * a short or empty page with a token is not the end of the results. Bound a rare match with event.slot to\n * need fewer calls.\n *\n * @generated from message thru.services.v1.ListEventsRequest\n */\nexport type ListEventsRequest = Message<\"thru.services.v1.ListEventsRequest\"> & {\n  /**\n   * CEL filter expression (OPTIONAL). See message documentation for examples.\n   *\n   * @generated from field: optional thru.common.v1.Filter filter = 1;\n   */\n  filter?: Filter | undefined;\n\n  /**\n   * @generated from field: optional thru.common.v1.PageRequest page = 2;\n   */\n  page?: PageRequest | undefined;\n\n  /**\n   * @generated from field: optional thru.common.v1.VersionContext version_context = 3;\n   */\n  versionContext?: VersionContext | undefined;\n\n  /**\n   * @generated from field: optional thru.common.v1.ConsensusStatus min_consensus = 4;\n   */\n  minConsensus?: ConsensusStatus | undefined;\n};\n\n/**\n * Describes the message thru.services.v1.ListEventsRequest.\n * Use `create(ListEventsRequestSchema)` to create a new message.\n */\nexport const ListEventsRequestSchema: GenMessage<ListEventsRequest> = /*@__PURE__*/\n  messageDesc(file_thru_services_v1_query_service, 18);\n\n/**\n * ListEventsResponse returns paginated events.\n *\n * @generated from message thru.services.v1.ListEventsResponse\n */\nexport type ListEventsResponse = Message<\"thru.services.v1.ListEventsResponse\"> & {\n  /**\n   * @generated from field: repeated thru.services.v1.Event events = 1;\n   */\n  events: Event[];\n\n  /**\n   * @generated from field: optional thru.common.v1.PageResponse page = 2;\n   */\n  page?: PageResponse | undefined;\n};\n\n/**\n * Describes the message thru.services.v1.ListEventsResponse.\n * Use `create(ListEventsResponseSchema)` to create a new message.\n */\nexport const ListEventsResponseSchema: GenMessage<ListEventsResponse> = /*@__PURE__*/\n  messageDesc(file_thru_services_v1_query_service, 19);\n\n/**\n * ListTransactionsRequest lists executed transactions with CEL filtering and pagination.\n *\n * Returns transactions ordered from most recent to older (slot DESC, block_offset DESC).\n * Supports filtering on transaction metadata and execution results using CEL expressions.\n * The whole filter is evaluated by the database. A filter it cannot evaluate, such as arithmetic, the\n * ternary operator or string() of a field, is rejected with INVALID_ARGUMENT (reason \"not_translatable\").\n *\n * Available fields for filtering:\n *   - transaction.slot (uint64): Block slot number where transaction was executed\n *   - transaction.block_offset (uint32): Transaction's position within the block\n *   - transaction.signature.value (bytes): Transaction signature\n *\n * Header fields (a transaction whose header is not stored reads them as zero or empty):\n *   - transaction.header.version (uint32): Transaction format version\n *   - transaction.header.fee (uint64): Transaction fee\n *   - transaction.header.nonce (uint64): Sender account nonce\n *   - transaction.header.start_slot (uint64): Earliest slot for execution\n *   - transaction.header.expiry_after (uint32): Expiry duration in slots\n *   - transaction.header.requested_compute_units (uint64): Requested compute units\n *   - transaction.header.requested_memory_units (uint32): Requested memory units\n *   - transaction.header.requested_state_units (uint32): Requested state units\n *   - transaction.header.fee_payer_pubkey.value (bytes): Fee payer public key\n *   - transaction.header.program_pubkey.value (bytes): Program public key\n *   - transaction.header.fee_payer_signature.value (bytes): Fee payer signature\n *\n * Execution result fields:\n *   - transaction.execution_result.vm_error (TransactionVmError enum): VM error code (0 = success)\n *   - transaction.execution_result.user_error_code (uint64): User-defined error code\n *   - transaction.execution_result.execution_result (uint64): Alias for user_error_code\n *   - transaction.execution_result.consumed_compute_units (uint64): Compute units consumed\n *   - transaction.execution_result.consumed_memory_units (uint32): Memory units consumed\n *   - transaction.execution_result.consumed_state_units (uint32): State units consumed\n *   - transaction.execution_result.events_count (uint32): Number of events emitted\n *   - transaction.execution_result.events_size (uint32): Total size of events in bytes\n *\n * Available CEL functions:\n *   - has(field): Check if optional field exists\n *   - uint(value): Convert to uint type\n *   - int(value): Convert to int type\n *   - string(value): Convert to string type\n *   - bytes(value): Convert to bytes type\n *\n * Available filter parameters (accessible via params.* in expressions):\n *   - params.slot (uint64): Slot number for filtering\n *   - params.u64 (uint64): Generic uint64 parameter\n *   - params.pubkey (Pubkey): Public key parameter for filtering\n *\n * Filter examples:\n *\n * 1. Filter by slot range:\n *      filter.expression = \"transaction.slot >= uint(1000) && transaction.slot <= uint(2000)\"\n *\n * 2. Filter by successful transactions (no error):\n *      filter.expression = \"transaction.execution_result.user_error_code == uint(0)\"\n *      filter.expression = \"transaction.execution_result.vm_error == int(0)\"\n *\n * 3. Filter by specific VM error:\n *      filter.expression = \"transaction.execution_result.vm_error == int(2)\"  // VM_REVERT\n *      filter.expression = \"transaction.execution_result.vm_error == int(4)\"  // NONCE_TOO_LOW\n *      filter.expression = \"transaction.execution_result.vm_error == int(5)\"  // NONCE_TOO_HIGH\n *\n * 4. Filter by resource usage:\n *      filter.expression = \"transaction.execution_result.consumed_compute_units > uint(1000)\"\n *      filter.expression = \"transaction.execution_result.consumed_memory_units > uint(0)\"\n *      filter.expression = \"transaction.execution_result.consumed_state_units >= uint(0)\"\n *\n * 5. Filter by compute units range:\n *      filter.expression = \"transaction.execution_result.consumed_compute_units >= uint(0) && transaction.execution_result.consumed_compute_units < uint(1000000)\"\n *\n * 6. Filter by events count:\n *      filter.expression = \"transaction.execution_result.events_count == uint(0)\"  // No events (transfers)\n *      filter.expression = \"transaction.execution_result.events_count > uint(0)\"   // Has events\n *      filter.expression = \"transaction.execution_result.events_count == uint(1)\"  // Exactly 1 event\n *\n * 7. Filter by events size:\n *      filter.expression = \"transaction.execution_result.events_size == uint(0)\"  // No events\n *      filter.expression = \"transaction.execution_result.events_size > uint(0)\"   // Has events\n *      filter.expression = \"transaction.execution_result.events_size >= uint(100)\" // Large events\n *      filter.expression = \"transaction.execution_result.events_size >= uint(50) && transaction.execution_result.events_size <= uint(200)\"\n *\n * 8. Filter by block offset:\n *      filter.expression = \"transaction.block_offset >= uint(0)\"\n *      filter.expression = \"transaction.block_offset == uint(5)\"\n *\n * 9. Combine multiple conditions with AND:\n *      filter.expression = \"transaction.execution_result.user_error_code == uint(0) && transaction.execution_result.consumed_compute_units > uint(0)\"\n *\n * 10. Combine multiple conditions with OR:\n *      filter.expression = \"transaction.execution_result.user_error_code == uint(0) || transaction.execution_result.user_error_code != uint(0)\"\n *      filter.expression = \"transaction.execution_result.vm_error == int(2) || transaction.execution_result.vm_error == int(4)\"\n *\n * 11. Complex combined filters:\n *      filter.expression = \"(transaction.slot >= uint(0) && transaction.execution_result.user_error_code == uint(0)) || transaction.execution_result.consumed_compute_units > uint(100000)\"\n *\n * 12. Check for field existence:\n *      filter.expression = \"has(transaction.execution_result)\"\n *\n * 13. Use inequality operators:\n *      filter.expression = \"transaction.execution_result.consumed_compute_units < uint(1000000)\"\n *      filter.expression = \"transaction.execution_result.consumed_compute_units <= uint(1000000)\"\n *      filter.expression = \"transaction.execution_result.consumed_compute_units >= uint(0)\"\n *      filter.expression = \"transaction.execution_result.user_error_code != uint(999)\"\n *\n * 14. Use params.slot parameter:\n *      filter.expression = \"transaction.slot == params.slot\"\n *      filter.params[\"slot\"].uint_value = 1234\n *\n * 15. Use params.u64 with type conversion:\n *      filter.expression = \"transaction.execution_result.consumed_compute_units < uint(params.u64)\"\n *      filter.params[\"u64\"].uint_value = 1000000\n *\n * The return_events flag controls whether event data is included in the response:\n *   - return_events = false (default): Only event counts/sizes are returned, not actual event data\n *   - return_events = true: Full event data is included in execution results\n *\n * Note: transactions are stored by signature, not in slot order. A call whose filter would read more than\n * about 100,000 rows reads one 100,000-slot range instead. When a filter needs more to fill the page, the\n * call returns the matches found so far, possibly none, with a next_page_token to continue from: a short or\n * empty page with a token is not the end of the results. Bound a rare match with transaction.slot to need\n * fewer calls.\n *\n * @generated from message thru.services.v1.ListTransactionsRequest\n */\nexport type ListTransactionsRequest = Message<\"thru.services.v1.ListTransactionsRequest\"> & {\n  /**\n   * CEL filter expression (OPTIONAL). See message documentation for examples.\n   *\n   * @generated from field: optional thru.common.v1.Filter filter = 1;\n   */\n  filter?: Filter | undefined;\n\n  /**\n   * @generated from field: optional thru.common.v1.PageRequest page = 2;\n   */\n  page?: PageRequest | undefined;\n\n  /**\n   * Whether to include event data in results (default: false)\n   *\n   * @generated from field: optional bool return_events = 3;\n   */\n  returnEvents?: boolean | undefined;\n\n  /**\n   * @generated from field: optional thru.common.v1.VersionContext version_context = 4;\n   */\n  versionContext?: VersionContext | undefined;\n\n  /**\n   * @generated from field: optional thru.common.v1.ConsensusStatus min_consensus = 5;\n   */\n  minConsensus?: ConsensusStatus | undefined;\n};\n\n/**\n * Describes the message thru.services.v1.ListTransactionsRequest.\n * Use `create(ListTransactionsRequestSchema)` to create a new message.\n */\nexport const ListTransactionsRequestSchema: GenMessage<ListTransactionsRequest> = /*@__PURE__*/\n  messageDesc(file_thru_services_v1_query_service, 20);\n\n/**\n * ListTransactionsResponse returns paginated executed transactions.\n *\n * @generated from message thru.services.v1.ListTransactionsResponse\n */\nexport type ListTransactionsResponse = Message<\"thru.services.v1.ListTransactionsResponse\"> & {\n  /**\n   * @generated from field: repeated thru.core.v1.Transaction transactions = 1;\n   */\n  transactions: Transaction[];\n\n  /**\n   * @generated from field: optional thru.common.v1.PageResponse page = 2;\n   */\n  page?: PageResponse | undefined;\n};\n\n/**\n * Describes the message thru.services.v1.ListTransactionsResponse.\n * Use `create(ListTransactionsResponseSchema)` to create a new message.\n */\nexport const ListTransactionsResponseSchema: GenMessage<ListTransactionsResponse> = /*@__PURE__*/\n  messageDesc(file_thru_services_v1_query_service, 21);\n\n/**\n * GetTransactionStatusRequest fetches execution status for a transaction.\n *\n * @generated from message thru.services.v1.GetTransactionStatusRequest\n */\nexport type GetTransactionStatusRequest = Message<\"thru.services.v1.GetTransactionStatusRequest\"> & {\n  /**\n   * @generated from field: thru.common.v1.Signature signature = 1;\n   */\n  signature?: Signature | undefined;\n};\n\n/**\n * Describes the message thru.services.v1.GetTransactionStatusRequest.\n * Use `create(GetTransactionStatusRequestSchema)` to create a new message.\n */\nexport const GetTransactionStatusRequestSchema: GenMessage<GetTransactionStatusRequest> = /*@__PURE__*/\n  messageDesc(file_thru_services_v1_query_service, 22);\n\n/**\n * TransactionStatus captures status metadata for a transaction.\n *\n * @generated from message thru.services.v1.TransactionStatus\n */\nexport type TransactionStatus = Message<\"thru.services.v1.TransactionStatus\"> & {\n  /**\n   * @generated from field: thru.common.v1.Signature signature = 1;\n   */\n  signature?: Signature | undefined;\n\n  /**\n   * @generated from field: optional thru.common.v1.ConsensusStatus consensus_status = 2;\n   */\n  consensusStatus?: ConsensusStatus | undefined;\n\n  /**\n   * @generated from field: optional thru.core.v1.TransactionExecutionResult execution_result = 3;\n   */\n  executionResult?: TransactionExecutionResult | undefined;\n};\n\n/**\n * Describes the message thru.services.v1.TransactionStatus.\n * Use `create(TransactionStatusSchema)` to create a new message.\n */\nexport const TransactionStatusSchema: GenMessage<TransactionStatus> = /*@__PURE__*/\n  messageDesc(file_thru_services_v1_query_service, 23);\n\n/**\n * @generated from message thru.services.v1.GetHeightRequest\n */\nexport type GetHeightRequest = Message<\"thru.services.v1.GetHeightRequest\"> & {\n};\n\n/**\n * Describes the message thru.services.v1.GetHeightRequest.\n * Use `create(GetHeightRequestSchema)` to create a new message.\n */\nexport const GetHeightRequestSchema: GenMessage<GetHeightRequest> = /*@__PURE__*/\n  messageDesc(file_thru_services_v1_query_service, 24);\n\n/**\n * GetHeightResponse\n *\n * @generated from message thru.services.v1.GetHeightResponse\n */\nexport type GetHeightResponse = Message<\"thru.services.v1.GetHeightResponse\"> & {\n  /**\n   * @generated from field: uint64 finalized = 1;\n   */\n  finalized: bigint;\n\n  /**\n   * @generated from field: uint64 locally_executed = 2;\n   */\n  locallyExecuted: bigint;\n\n  /**\n   * @generated from field: uint64 cluster_executed = 3;\n   */\n  clusterExecuted: bigint;\n};\n\n/**\n * Describes the message thru.services.v1.GetHeightResponse.\n * Use `create(GetHeightResponseSchema)` to create a new message.\n */\nexport const GetHeightResponseSchema: GenMessage<GetHeightResponse> = /*@__PURE__*/\n  messageDesc(file_thru_services_v1_query_service, 25);\n\n/**\n * GetChainInfoRequest retrieves chain-level information.\n *\n * @generated from message thru.services.v1.GetChainInfoRequest\n */\nexport type GetChainInfoRequest = Message<\"thru.services.v1.GetChainInfoRequest\"> & {\n};\n\n/**\n * Describes the message thru.services.v1.GetChainInfoRequest.\n * Use `create(GetChainInfoRequestSchema)` to create a new message.\n */\nexport const GetChainInfoRequestSchema: GenMessage<GetChainInfoRequest> = /*@__PURE__*/\n  messageDesc(file_thru_services_v1_query_service, 26);\n\n/**\n * GetChainInfoResponse returns chain-level information.\n *\n * @generated from message thru.services.v1.GetChainInfoResponse\n */\nexport type GetChainInfoResponse = Message<\"thru.services.v1.GetChainInfoResponse\"> & {\n  /**\n   * Chain identifier, unique per network (similar to Ethereum chain ID).\n   * Used to prevent transaction replay across different chains.\n   *\n   * @generated from field: uint32 chain_id = 1;\n   */\n  chainId: number;\n\n  /**\n   * Minimum timestamp (nanoseconds since epoch) at which 4f+1 validator weight\n   * has reported advancement. Zero if not yet available.\n   *\n   * @generated from field: uint64 min_lock_time = 2;\n   */\n  minLockTime: bigint;\n};\n\n/**\n * Describes the message thru.services.v1.GetChainInfoResponse.\n * Use `create(GetChainInfoResponseSchema)` to create a new message.\n */\nexport const GetChainInfoResponseSchema: GenMessage<GetChainInfoResponse> = /*@__PURE__*/\n  messageDesc(file_thru_services_v1_query_service, 27);\n\n/**\n * GetStateRootsRequest retrieves up to 257 state roots ending at a specified slot.\n * Used for transaction replay to verify state proofs against historical roots.\n * Returns state roots in ascending slot order, from (slot - 256) to slot (inclusive).\n *\n * @generated from message thru.services.v1.GetStateRootsRequest\n */\nexport type GetStateRootsRequest = Message<\"thru.services.v1.GetStateRootsRequest\"> & {\n  /**\n   * The slot to retrieve state roots up to (inclusive).\n   * Returns up to 257 state roots ending at this slot.\n   * If not specified, returns state roots ending at the latest slot at or\n   * below the durable cursor. A slot above the durable cursor is rejected\n   * with FAILED_PRECONDITION; if no slot is durable yet the call returns\n   * UNAVAILABLE.\n   *\n   * @generated from field: optional uint64 slot = 1;\n   */\n  slot?: bigint | undefined;\n};\n\n/**\n * Describes the message thru.services.v1.GetStateRootsRequest.\n * Use `create(GetStateRootsRequestSchema)` to create a new message.\n */\nexport const GetStateRootsRequestSchema: GenMessage<GetStateRootsRequest> = /*@__PURE__*/\n  messageDesc(file_thru_services_v1_query_service, 28);\n\n/**\n * StateRootEntry represents a state root for a specific slot.\n *\n * @generated from message thru.services.v1.StateRootEntry\n */\nexport type StateRootEntry = Message<\"thru.services.v1.StateRootEntry\"> & {\n  /**\n   * @generated from field: uint64 slot = 1;\n   */\n  slot: bigint;\n\n  /**\n   * @generated from field: bytes state_root = 2;\n   */\n  stateRoot: Uint8Array;\n};\n\n/**\n * Describes the message thru.services.v1.StateRootEntry.\n * Use `create(StateRootEntrySchema)` to create a new message.\n */\nexport const StateRootEntrySchema: GenMessage<StateRootEntry> = /*@__PURE__*/\n  messageDesc(file_thru_services_v1_query_service, 29);\n\n/**\n * GetStateRootsResponse contains up to 257 state roots ending at the requested slot.\n *\n * @generated from message thru.services.v1.GetStateRootsResponse\n */\nexport type GetStateRootsResponse = Message<\"thru.services.v1.GetStateRootsResponse\"> & {\n  /**\n   * @generated from field: repeated thru.services.v1.StateRootEntry state_roots = 1;\n   */\n  stateRoots: StateRootEntry[];\n};\n\n/**\n * Describes the message thru.services.v1.GetStateRootsResponse.\n * Use `create(GetStateRootsResponseSchema)` to create a new message.\n */\nexport const GetStateRootsResponseSchema: GenMessage<GetStateRootsResponse> = /*@__PURE__*/\n  messageDesc(file_thru_services_v1_query_service, 30);\n\n/**\n * GetActiveStateHashesRequest retrieves active state hashes for a range of slots.\n *\n * @generated from message thru.services.v1.GetActiveStateHashesRequest\n */\nexport type GetActiveStateHashesRequest = Message<\"thru.services.v1.GetActiveStateHashesRequest\"> & {\n  /**\n   * The upper bound slot (inclusive). If not specified, defaults to the\n   * durable cursor: the highest slot the node has durably committed, which\n   * lags the finalized slot GetHeight reports by design. An end_slot above\n   * the durable cursor is rejected with FAILED_PRECONDITION; if no slot is\n   * durable yet the call returns UNAVAILABLE.\n   *\n   * @generated from field: optional uint64 end_slot = 1;\n   */\n  endSlot?: bigint | undefined;\n\n  /**\n   * The lower bound slot (inclusive). If not specified, defaults to max(0, end_slot - 127).\n   *\n   * @generated from field: optional uint64 start_slot = 2;\n   */\n  startSlot?: bigint | undefined;\n};\n\n/**\n * Describes the message thru.services.v1.GetActiveStateHashesRequest.\n * Use `create(GetActiveStateHashesRequestSchema)` to create a new message.\n */\nexport const GetActiveStateHashesRequestSchema: GenMessage<GetActiveStateHashesRequest> = /*@__PURE__*/\n  messageDesc(file_thru_services_v1_query_service, 31);\n\n/**\n * ActiveStateHashEntry represents an active state hash for a specific slot.\n *\n * @generated from message thru.services.v1.ActiveStateHashEntry\n */\nexport type ActiveStateHashEntry = Message<\"thru.services.v1.ActiveStateHashEntry\"> & {\n  /**\n   * @generated from field: uint64 slot = 1;\n   */\n  slot: bigint;\n\n  /**\n   * @generated from field: bytes active_state_hash = 2;\n   */\n  activeStateHash: Uint8Array;\n};\n\n/**\n * Describes the message thru.services.v1.ActiveStateHashEntry.\n * Use `create(ActiveStateHashEntrySchema)` to create a new message.\n */\nexport const ActiveStateHashEntrySchema: GenMessage<ActiveStateHashEntry> = /*@__PURE__*/\n  messageDesc(file_thru_services_v1_query_service, 32);\n\n/**\n * GetActiveStateHashesResponse contains active state hashes ending at the requested slot.\n *\n * @generated from message thru.services.v1.GetActiveStateHashesResponse\n */\nexport type GetActiveStateHashesResponse = Message<\"thru.services.v1.GetActiveStateHashesResponse\"> & {\n  /**\n   * @generated from field: repeated thru.services.v1.ActiveStateHashEntry active_state_hashes = 1;\n   */\n  activeStateHashes: ActiveStateHashEntry[];\n};\n\n/**\n * Describes the message thru.services.v1.GetActiveStateHashesResponse.\n * Use `create(GetActiveStateHashesResponseSchema)` to create a new message.\n */\nexport const GetActiveStateHashesResponseSchema: GenMessage<GetActiveStateHashesResponse> = /*@__PURE__*/\n  messageDesc(file_thru_services_v1_query_service, 33);\n\n/**\n * GetSlotMetricsRequest retrieves metrics for a specific slot.\n *\n * @generated from message thru.services.v1.GetSlotMetricsRequest\n */\nexport type GetSlotMetricsRequest = Message<\"thru.services.v1.GetSlotMetricsRequest\"> & {\n  /**\n   * Block slot number to retrieve metrics for.\n   *\n   * @generated from field: uint64 slot = 1;\n   */\n  slot: bigint;\n};\n\n/**\n * Describes the message thru.services.v1.GetSlotMetricsRequest.\n * Use `create(GetSlotMetricsRequestSchema)` to create a new message.\n */\nexport const GetSlotMetricsRequestSchema: GenMessage<GetSlotMetricsRequest> = /*@__PURE__*/\n  messageDesc(file_thru_services_v1_query_service, 34);\n\n/**\n * GetSlotMetricsResponse contains slot-level metrics.\n *\n * @generated from message thru.services.v1.GetSlotMetricsResponse\n */\nexport type GetSlotMetricsResponse = Message<\"thru.services.v1.GetSlotMetricsResponse\"> & {\n  /**\n   * Block slot number.\n   *\n   * @generated from field: uint64 slot = 1;\n   */\n  slot: bigint;\n\n  /**\n   * Global counter tracking total activated state across all accounts.\n   *\n   * @generated from field: uint64 global_activated_state_counter = 2;\n   */\n  globalActivatedStateCounter: bigint;\n\n  /**\n   * Global counter tracking total deactivated state across all accounts.\n   *\n   * @generated from field: uint64 global_deactivated_state_counter = 3;\n   */\n  globalDeactivatedStateCounter: bigint;\n\n  /**\n   * Fees credited to the absent-block-producer fee receiver this block\n   * because the block producer account was not live (UNTO-1293). Field\n   * number unchanged (4).\n   *\n   * @generated from field: uint64 absent_block_producer_fees = 4;\n   */\n  absentBlockProducerFees: bigint;\n\n  /**\n   * Block timestamp when available.\n   *\n   * @generated from field: optional google.protobuf.Timestamp block_timestamp = 5;\n   */\n  blockTimestamp?: Timestamp | undefined;\n\n  /**\n   * Fees credited to a live block-producer account this block. Disjoint from\n   * absent_block_producer_fees by destination; total block fees =\n   * absent_block_producer_fees + claimed_fees.\n   *\n   * @generated from field: uint64 claimed_fees = 6;\n   */\n  claimedFees: bigint;\n};\n\n/**\n * Describes the message thru.services.v1.GetSlotMetricsResponse.\n * Use `create(GetSlotMetricsResponseSchema)` to create a new message.\n */\nexport const GetSlotMetricsResponseSchema: GenMessage<GetSlotMetricsResponse> = /*@__PURE__*/\n  messageDesc(file_thru_services_v1_query_service, 35);\n\n/**\n * ListSlotMetricsRequest lists slot metrics for a range of slots.\n *\n * @generated from message thru.services.v1.ListSlotMetricsRequest\n */\nexport type ListSlotMetricsRequest = Message<\"thru.services.v1.ListSlotMetricsRequest\"> & {\n  /**\n   * Start slot for the range (inclusive).\n   *\n   * @generated from field: uint64 start_slot = 1;\n   */\n  startSlot: bigint;\n\n  /**\n   * End slot for the range (inclusive). Defaults to start_slot if not specified.\n   *\n   * @generated from field: optional uint64 end_slot = 2;\n   */\n  endSlot?: bigint | undefined;\n\n  /**\n   * Maximum number of results to return. Defaults to 100.\n   *\n   * @generated from field: optional uint32 limit = 3;\n   */\n  limit?: number | undefined;\n};\n\n/**\n * Describes the message thru.services.v1.ListSlotMetricsRequest.\n * Use `create(ListSlotMetricsRequestSchema)` to create a new message.\n */\nexport const ListSlotMetricsRequestSchema: GenMessage<ListSlotMetricsRequest> = /*@__PURE__*/\n  messageDesc(file_thru_services_v1_query_service, 36);\n\n/**\n * ListSlotMetricsResponse contains a list of slot metrics.\n *\n * @generated from message thru.services.v1.ListSlotMetricsResponse\n */\nexport type ListSlotMetricsResponse = Message<\"thru.services.v1.ListSlotMetricsResponse\"> & {\n  /**\n   * @generated from field: repeated thru.services.v1.GetSlotMetricsResponse metrics = 1;\n   */\n  metrics: GetSlotMetricsResponse[];\n};\n\n/**\n * Describes the message thru.services.v1.ListSlotMetricsResponse.\n * Use `create(ListSlotMetricsResponseSchema)` to create a new message.\n */\nexport const ListSlotMetricsResponseSchema: GenMessage<ListSlotMetricsResponse> = /*@__PURE__*/\n  messageDesc(file_thru_services_v1_query_service, 37);\n\n/**\n * GetNodePubkeyRequest requests the node's own public key.\n *\n * @generated from message thru.services.v1.GetNodePubkeyRequest\n */\nexport type GetNodePubkeyRequest = Message<\"thru.services.v1.GetNodePubkeyRequest\"> & {\n};\n\n/**\n * Describes the message thru.services.v1.GetNodePubkeyRequest.\n * Use `create(GetNodePubkeyRequestSchema)` to create a new message.\n */\nexport const GetNodePubkeyRequestSchema: GenMessage<GetNodePubkeyRequest> = /*@__PURE__*/\n  messageDesc(file_thru_services_v1_query_service, 38);\n\n/**\n * GetNodePubkeyResponse returns the node's ED25519 public key.\n *\n * @generated from message thru.services.v1.GetNodePubkeyResponse\n */\nexport type GetNodePubkeyResponse = Message<\"thru.services.v1.GetNodePubkeyResponse\"> & {\n  /**\n   * @generated from field: thru.common.v1.Pubkey pubkey = 1;\n   */\n  pubkey?: Pubkey | undefined;\n};\n\n/**\n * Describes the message thru.services.v1.GetNodePubkeyResponse.\n * Use `create(GetNodePubkeyResponseSchema)` to create a new message.\n */\nexport const GetNodePubkeyResponseSchema: GenMessage<GetNodePubkeyResponse> = /*@__PURE__*/\n  messageDesc(file_thru_services_v1_query_service, 39);\n\n/**\n * GetNodeRecordsRequest requests all known node records.\n *\n * @generated from message thru.services.v1.GetNodeRecordsRequest\n */\nexport type GetNodeRecordsRequest = Message<\"thru.services.v1.GetNodeRecordsRequest\"> & {\n};\n\n/**\n * Describes the message thru.services.v1.GetNodeRecordsRequest.\n * Use `create(GetNodeRecordsRequestSchema)` to create a new message.\n */\nexport const GetNodeRecordsRequestSchema: GenMessage<GetNodeRecordsRequest> = /*@__PURE__*/\n  messageDesc(file_thru_services_v1_query_service, 40);\n\n/**\n * GetNodeRecordsResponse returns all known node records from the gossip network.\n *\n * @generated from message thru.services.v1.GetNodeRecordsResponse\n */\nexport type GetNodeRecordsResponse = Message<\"thru.services.v1.GetNodeRecordsResponse\"> & {\n  /**\n   * @generated from field: repeated thru.core.v1.NodeRecord records = 1;\n   */\n  records: NodeRecord[];\n};\n\n/**\n * Describes the message thru.services.v1.GetNodeRecordsResponse.\n * Use `create(GetNodeRecordsResponseSchema)` to create a new message.\n */\nexport const GetNodeRecordsResponseSchema: GenMessage<GetNodeRecordsResponse> = /*@__PURE__*/\n  messageDesc(file_thru_services_v1_query_service, 41);\n\n/**\n * GetNodeStatusRequest requests the node's operational status.\n *\n * @generated from message thru.services.v1.GetNodeStatusRequest\n */\nexport type GetNodeStatusRequest = Message<\"thru.services.v1.GetNodeStatusRequest\"> & {\n};\n\n/**\n * Describes the message thru.services.v1.GetNodeStatusRequest.\n * Use `create(GetNodeStatusRequestSchema)` to create a new message.\n */\nexport const GetNodeStatusRequestSchema: GenMessage<GetNodeStatusRequest> = /*@__PURE__*/\n  messageDesc(file_thru_services_v1_query_service, 42);\n\n/**\n * GetNodeStatusResponse returns the node's operational status including\n * consensus readiness, repair state, and current heights.\n *\n * @generated from message thru.services.v1.GetNodeStatusResponse\n */\nexport type GetNodeStatusResponse = Message<\"thru.services.v1.GetNodeStatusResponse\"> & {\n  /**\n   * High-level readiness flag. True when consensus is active and the node\n   * is ready to accept and process transactions.\n   *\n   * @generated from field: bool ready = 1;\n   */\n  ready: boolean;\n\n  /**\n   * Consensus subsystem state.\n   *\n   * @generated from field: thru.services.v1.NodeConsensusStatus consensus = 2;\n   */\n  consensus?: NodeConsensusStatus | undefined;\n\n  /**\n   * Repair subsystem state.\n   *\n   * @generated from field: thru.services.v1.NodeRepairStatus repair = 3;\n   */\n  repair?: NodeRepairStatus | undefined;\n\n  /**\n   * Latest finalized slot.\n   *\n   * @generated from field: uint64 finalized_slot = 4;\n   */\n  finalizedSlot: bigint;\n\n  /**\n   * Latest locally executed slot.\n   *\n   * @generated from field: uint64 locally_executed_slot = 5;\n   */\n  locallyExecutedSlot: bigint;\n};\n\n/**\n * Describes the message thru.services.v1.GetNodeStatusResponse.\n * Use `create(GetNodeStatusResponseSchema)` to create a new message.\n */\nexport const GetNodeStatusResponseSchema: GenMessage<GetNodeStatusResponse> = /*@__PURE__*/\n  messageDesc(file_thru_services_v1_query_service, 43);\n\n/**\n * NodeConsensusStatus describes the consensus driver state.\n *\n * @generated from message thru.services.v1.NodeConsensusStatus\n */\nexport type NodeConsensusStatus = Message<\"thru.services.v1.NodeConsensusStatus\"> & {\n  /**\n   * Whether post-repair consensus is active and voting.\n   *\n   * @generated from field: bool active = 1;\n   */\n  active: boolean;\n\n  /**\n   * How consensus was entered: regular startup or catastrophic recovery.\n   *\n   * @generated from field: thru.services.v1.NodeMode mode = 2;\n   */\n  mode: NodeMode;\n\n  /**\n   * Current consensus frontier slot (first slot without EXECUTION_FINISHED).\n   *\n   * @generated from field: uint64 frontier = 3;\n   */\n  frontier: bigint;\n};\n\n/**\n * Describes the message thru.services.v1.NodeConsensusStatus.\n * Use `create(NodeConsensusStatusSchema)` to create a new message.\n */\nexport const NodeConsensusStatusSchema: GenMessage<NodeConsensusStatus> = /*@__PURE__*/\n  messageDesc(file_thru_services_v1_query_service, 44);\n\n/**\n * NodeRepairStatus describes the repair subsystem state.\n *\n * @generated from message thru.services.v1.NodeRepairStatus\n */\nexport type NodeRepairStatus = Message<\"thru.services.v1.NodeRepairStatus\"> & {\n  /**\n   * Whether catastrophic repair gating is active. When true, the node is\n   * suppressing consensus output and rejecting transactions.\n   * Note: during normal gap repair (non-catastrophic), this is false but\n   * consensus.active is also false, so ready is correctly false.\n   *\n   * @generated from field: bool active = 1;\n   */\n  active: boolean;\n};\n\n/**\n * Describes the message thru.services.v1.NodeRepairStatus.\n * Use `create(NodeRepairStatusSchema)` to create a new message.\n */\nexport const NodeRepairStatusSchema: GenMessage<NodeRepairStatus> = /*@__PURE__*/\n  messageDesc(file_thru_services_v1_query_service, 45);\n\n/**\n * BatchGetRawAccountsRequest fetches raw bytes for many accounts in one call.\n *\n * Batching exists because the per-account path costs up to three ClickHouse\n * round-trips (current meta, historical meta, historical pages), so N accounts\n * fetched one at a time is 3N sequential queries. The batch answers the whole\n * set in a fixed number of queries regardless of N.\n *\n * @generated from message thru.services.v1.BatchGetRawAccountsRequest\n */\nexport type BatchGetRawAccountsRequest = Message<\"thru.services.v1.BatchGetRawAccountsRequest\"> & {\n  /**\n   * The accounts to fetch. At most 1000 (BATCH_GET_MAX_ITEMS); a larger batch\n   * is rejected with INVALID_ARGUMENT rather than silently truncated, because\n   * the address list is rendered into the SQL and would otherwise run into\n   * ClickHouse's max_query_size.\n   *\n   * @generated from field: repeated thru.services.v1.BatchGetRawAccountsItem items = 1;\n   */\n  items: BatchGetRawAccountsItem[];\n\n  /**\n   * Version applied to every item that does not carry its own. Set this alone\n   * to read the whole batch at one version -- the common case -- instead of\n   * repeating the same context on each item.\n   *\n   * @generated from field: optional thru.common.v1.VersionContext version_context = 2;\n   */\n  versionContext?: VersionContext | undefined;\n\n  /**\n   * @generated from field: optional thru.common.v1.ConsensusStatus min_consensus = 3;\n   */\n  minConsensus?: ConsensusStatus | undefined;\n\n  /**\n   * @generated from field: optional thru.core.v1.AccountView view = 4;\n   */\n  view?: AccountView | undefined;\n};\n\n/**\n * Describes the message thru.services.v1.BatchGetRawAccountsRequest.\n * Use `create(BatchGetRawAccountsRequestSchema)` to create a new message.\n */\nexport const BatchGetRawAccountsRequestSchema: GenMessage<BatchGetRawAccountsRequest> = /*@__PURE__*/\n  messageDesc(file_thru_services_v1_query_service, 46);\n\n/**\n * BatchGetRawAccountsItem is one account in a batch, optionally pinned to its\n * own version.\n *\n * @generated from message thru.services.v1.BatchGetRawAccountsItem\n */\nexport type BatchGetRawAccountsItem = Message<\"thru.services.v1.BatchGetRawAccountsItem\"> & {\n  /**\n   * @generated from field: thru.common.v1.Pubkey address = 1;\n   */\n  address?: Pubkey | undefined;\n\n  /**\n   * Overrides the request-level version_context for this account only. Leave\n   * unset to inherit it. Set it when the batch reads accounts at DIFFERENT\n   * versions -- e.g. verifying each account at the slot its own transaction\n   * executed in.\n   *\n   * @generated from field: optional thru.common.v1.VersionContext version_context = 2;\n   */\n  versionContext?: VersionContext | undefined;\n};\n\n/**\n * Describes the message thru.services.v1.BatchGetRawAccountsItem.\n * Use `create(BatchGetRawAccountsItemSchema)` to create a new message.\n */\nexport const BatchGetRawAccountsItemSchema: GenMessage<BatchGetRawAccountsItem> = /*@__PURE__*/\n  messageDesc(file_thru_services_v1_query_service, 47);\n\n/**\n * BatchGetRawAccountsResponse returns the accounts that were found.\n *\n * PARTIAL BY DESIGN: an address that does not exist is simply ABSENT from the\n * map rather than failing the call, so one missing account cannot destroy a\n * batch of 1000. Callers must look up their addresses rather than assume the\n * map is complete.\n *\n * @generated from message thru.services.v1.BatchGetRawAccountsResponse\n */\nexport type BatchGetRawAccountsResponse = Message<\"thru.services.v1.BatchGetRawAccountsResponse\"> & {\n  /**\n   * Keyed by the encoded account address, as returned elsewhere in this API.\n   *\n   * @generated from field: map<string, thru.core.v1.RawAccount> accounts = 1;\n   */\n  accounts: { [key: string]: RawAccount };\n};\n\n/**\n * Describes the message thru.services.v1.BatchGetRawAccountsResponse.\n * Use `create(BatchGetRawAccountsResponseSchema)` to create a new message.\n */\nexport const BatchGetRawAccountsResponseSchema: GenMessage<BatchGetRawAccountsResponse> = /*@__PURE__*/\n  messageDesc(file_thru_services_v1_query_service, 48);\n\n/**\n * BatchGetTransactionsRequest fetches many decoded transactions in one call.\n *\n * @generated from message thru.services.v1.BatchGetTransactionsRequest\n */\nexport type BatchGetTransactionsRequest = Message<\"thru.services.v1.BatchGetTransactionsRequest\"> & {\n  /**\n   * At most 1000 (BATCH_GET_MAX_ITEMS); see BatchGetRawAccountsRequest.items.\n   *\n   * @generated from field: repeated thru.common.v1.Signature signatures = 1;\n   */\n  signatures: Signature[];\n\n  /**\n   * @generated from field: optional thru.common.v1.VersionContext version_context = 2;\n   */\n  versionContext?: VersionContext | undefined;\n\n  /**\n   * @generated from field: optional thru.common.v1.ConsensusStatus min_consensus = 3;\n   */\n  minConsensus?: ConsensusStatus | undefined;\n\n  /**\n   * @generated from field: optional thru.core.v1.TransactionView view = 4;\n   */\n  view?: TransactionView | undefined;\n};\n\n/**\n * Describes the message thru.services.v1.BatchGetTransactionsRequest.\n * Use `create(BatchGetTransactionsRequestSchema)` to create a new message.\n */\nexport const BatchGetTransactionsRequestSchema: GenMessage<BatchGetTransactionsRequest> = /*@__PURE__*/\n  messageDesc(file_thru_services_v1_query_service, 49);\n\n/**\n * BatchGetTransactionsResponse returns the transactions that were found.\n *\n * PARTIAL BY DESIGN, exactly as BatchGetRawAccountsResponse: an unknown\n * signature is absent from the map, not an error.\n *\n * @generated from message thru.services.v1.BatchGetTransactionsResponse\n */\nexport type BatchGetTransactionsResponse = Message<\"thru.services.v1.BatchGetTransactionsResponse\"> & {\n  /**\n   * Keyed by the encoded transaction signature.\n   *\n   * @generated from field: map<string, thru.core.v1.Transaction> transactions = 1;\n   */\n  transactions: { [key: string]: Transaction };\n};\n\n/**\n * Describes the message thru.services.v1.BatchGetTransactionsResponse.\n * Use `create(BatchGetTransactionsResponseSchema)` to create a new message.\n */\nexport const BatchGetTransactionsResponseSchema: GenMessage<BatchGetTransactionsResponse> = /*@__PURE__*/\n  messageDesc(file_thru_services_v1_query_service, 50);\n\n/**\n * BatchGenerateStateProofsRequest generates many state proofs in one call.\n *\n * A single proof descends the state trie root-to-leaf, one node fetch per\n * level, and that descent cannot be parallelised -- each node is what reveals\n * the next hash.  What CAN be shared is the descent across proofs: every\n * request in the batch needs its depth-d node at the same moment, so N proofs\n * over a depth-D trie cost D round-trips rather than N*D.\n *\n * @generated from message thru.services.v1.BatchGenerateStateProofsRequest\n */\nexport type BatchGenerateStateProofsRequest = Message<\"thru.services.v1.BatchGenerateStateProofsRequest\"> & {\n  /**\n   * At most 1000; a larger batch is rejected rather than truncated.\n   *\n   * Every request's own target_slot must be UNSET: the slot is chosen once for\n   * the batch, below. A request that sets it is rejected rather than ignored.\n   *\n   * @generated from field: repeated thru.core.v1.StateProofRequest requests = 1;\n   */\n  requests: StateProofRequest[];\n\n  /**\n   * The slot whose state root every proof in this batch is built against.\n   * Unset (or 0) selects the latest usable root, as the per-request RPC does.\n   *\n   * BATCH-LEVEL, NOT PER-REQUEST, deliberately. A proof is only usable by a\n   * block whose execution slot falls inside the runtime's ACCEPTS window, so\n   * every proof a caller assembles for one block already shares one slot;\n   * mixing slots in a batch has no use and is expensive to serve. Each distinct\n   * slot costs its own root resolution and its own full trie descent, so a\n   * 1000-request batch of distinct slots performs ~1000 descents instead of one\n   * shared walk -- the same work as 1000 separate calls, bought with a single\n   * round-trip. Hoisting the slot here makes that shape unrepresentable rather\n   * than merely rejected.\n   *\n   * @generated from field: optional uint64 target_slot = 2;\n   */\n  targetSlot?: bigint | undefined;\n};\n\n/**\n * Describes the message thru.services.v1.BatchGenerateStateProofsRequest.\n * Use `create(BatchGenerateStateProofsRequestSchema)` to create a new message.\n */\nexport const BatchGenerateStateProofsRequestSchema: GenMessage<BatchGenerateStateProofsRequest> = /*@__PURE__*/\n  messageDesc(file_thru_services_v1_query_service, 51);\n\n/**\n * BatchGenerateStateProofsResponse returns one result per request, IN THE ORDER\n * REQUESTED.\n *\n * Results are positional rather than keyed because the same account may\n * legitimately appear more than once in a batch (at different proof types), so\n * an address alone does not identify a request.\n *\n * @generated from message thru.services.v1.BatchGenerateStateProofsResponse\n */\nexport type BatchGenerateStateProofsResponse = Message<\"thru.services.v1.BatchGenerateStateProofsResponse\"> & {\n  /**\n   * @generated from field: repeated thru.services.v1.StateProofResult results = 1;\n   */\n  results: StateProofResult[];\n};\n\n/**\n * Describes the message thru.services.v1.BatchGenerateStateProofsResponse.\n * Use `create(BatchGenerateStateProofsResponseSchema)` to create a new message.\n */\nexport const BatchGenerateStateProofsResponseSchema: GenMessage<BatchGenerateStateProofsResponse> = /*@__PURE__*/\n  messageDesc(file_thru_services_v1_query_service, 52);\n\n/**\n * StateProofResult is one request's outcome.\n *\n * PARTIAL BY DESIGN: a key that cannot be proved -- absent when membership was\n * asked, present when non-membership was -- is an ordinary answer ABOUT THAT\n * KEY and must not fail the other 999.  Exactly one of proof/error is set.\n *\n * @generated from message thru.services.v1.StateProofResult\n */\nexport type StateProofResult = Message<\"thru.services.v1.StateProofResult\"> & {\n  /**\n   * @generated from field: optional thru.core.v1.StateProof proof = 1;\n   */\n  proof?: StateProof | undefined;\n\n  /**\n   * google.rpc.Code for this request, 0 when proof is set.\n   *\n   * @generated from field: optional int32 error_code = 2;\n   */\n  errorCode?: number | undefined;\n\n  /**\n   * @generated from field: optional string error_message = 3;\n   */\n  errorMessage?: string | undefined;\n};\n\n/**\n * Describes the message thru.services.v1.StateProofResult.\n * Use `create(StateProofResultSchema)` to create a new message.\n */\nexport const StateProofResultSchema: GenMessage<StateProofResult> = /*@__PURE__*/\n  messageDesc(file_thru_services_v1_query_service, 53);\n\n/**\n * GetCompressionConfigRequest requests the current durable compression inputs.\n *\n * @generated from message thru.services.v1.GetCompressionConfigRequest\n */\nexport type GetCompressionConfigRequest = Message<\"thru.services.v1.GetCompressionConfigRequest\"> & {\n};\n\n/**\n * Describes the message thru.services.v1.GetCompressionConfigRequest.\n * Use `create(GetCompressionConfigRequestSchema)` to create a new message.\n */\nexport const GetCompressionConfigRequestSchema: GenMessage<GetCompressionConfigRequest> = /*@__PURE__*/\n  messageDesc(file_thru_services_v1_query_service, 54);\n\n/**\n * CompressionConfig contains inputs from one durable finalized slot.\n *\n * @generated from message thru.services.v1.CompressionConfig\n */\nexport type CompressionConfig = Message<\"thru.services.v1.CompressionConfig\"> & {\n  /**\n   * Finalized slot shared by the account metadata, activity, and policy inputs.\n   *\n   * @generated from field: uint64 slot = 1;\n   */\n  slot: bigint;\n\n  /**\n   * Settled net-growth counter in state units, not wall-clock time.\n   *\n   * @generated from field: uint64 state_clock = 2;\n   */\n  stateClock: bigint;\n\n  /**\n   * Active state-unit load used by the compression eligibility policy.\n   *\n   * @generated from field: uint64 active_state_units = 3;\n   */\n  activeStateUnits: bigint;\n\n  /**\n   * Maximum state units a block may consume.\n   *\n   * @generated from field: uint64 max_state_units_per_block = 4;\n   */\n  maxStateUnitsPerBlock: bigint;\n\n  /**\n   * Maximum active state units configured for the chain.\n   *\n   * @generated from field: uint64 max_active_state_units = 5;\n   */\n  maxActiveStateUnits: bigint;\n\n  /**\n   * Active-load baseline, in state units, below which compression is disabled.\n   *\n   * @generated from field: uint64 compress_baseline_units = 6;\n   */\n  compressBaselineUnits: bigint;\n\n  /**\n   * Additional load, in state units, for each halving of the inactivity window.\n   *\n   * @generated from field: uint64 compress_halving_step_units = 7;\n   */\n  compressHalvingStepUnits: bigint;\n};\n\n/**\n * Describes the message thru.services.v1.CompressionConfig.\n * Use `create(CompressionConfigSchema)` to create a new message.\n */\nexport const CompressionConfigSchema: GenMessage<CompressionConfig> = /*@__PURE__*/\n  messageDesc(file_thru_services_v1_query_service, 55);\n\n/**\n * CanCompressRequest identifies the active account to evaluate.\n *\n * @generated from message thru.services.v1.CanCompressRequest\n */\nexport type CanCompressRequest = Message<\"thru.services.v1.CanCompressRequest\"> & {\n  /**\n   * Address of the account whose activity and metadata are checked.\n   *\n   * @generated from field: thru.common.v1.Pubkey address = 1;\n   */\n  address?: Pubkey | undefined;\n};\n\n/**\n * Describes the message thru.services.v1.CanCompressRequest.\n * Use `create(CanCompressRequestSchema)` to create a new message.\n */\nexport const CanCompressRequestSchema: GenMessage<CanCompressRequest> = /*@__PURE__*/\n  messageDesc(file_thru_services_v1_query_service, 56);\n\n/**\n * CanCompressResponse returns eligibility and its consistent durable inputs.\n *\n * @generated from message thru.services.v1.CanCompressResponse\n */\nexport type CanCompressResponse = Message<\"thru.services.v1.CanCompressResponse\"> & {\n  /**\n   * Non-owner inactivity-policy eligibility, also respecting UNCOMPRESSABLE.\n   * This is a prediction at config.slot, not transaction admission: proofs,\n   * startup warmup, cooldown, write locks and call-stack checks still apply.\n   *\n   * @generated from field: bool can_compress = 1;\n   */\n  canCompress: boolean;\n\n  /**\n   * Account's last activity stamp in state-clock units; zero if absent.\n   *\n   * @generated from field: uint64 last_used = 2;\n   */\n  lastUsed: bigint;\n\n  /**\n   * Policy inputs from the same finalized slot as the account's activity.\n   *\n   * @generated from field: thru.services.v1.CompressionConfig config = 3;\n   */\n  config?: CompressionConfig | undefined;\n};\n\n/**\n * Describes the message thru.services.v1.CanCompressResponse.\n * Use `create(CanCompressResponseSchema)` to create a new message.\n */\nexport const CanCompressResponseSchema: GenMessage<CanCompressResponse> = /*@__PURE__*/\n  messageDesc(file_thru_services_v1_query_service, 57);\n\n/**\n * NodeMode represents the consensus/repair operating mode.\n *\n * @generated from enum thru.services.v1.NodeMode\n */\nexport enum NodeMode {\n  /**\n   * @generated from enum value: NODE_MODE_UNKNOWN = 0;\n   */\n  UNKNOWN = 0,\n\n  /**\n   * @generated from enum value: NODE_MODE_REGULAR = 1;\n   */\n  REGULAR = 1,\n\n  /**\n   * @generated from enum value: NODE_MODE_CATASTROPHIC = 2;\n   */\n  CATASTROPHIC = 2,\n}\n\n/**\n * Describes the enum thru.services.v1.NodeMode.\n */\nexport const NodeModeSchema: GenEnum<NodeMode> = /*@__PURE__*/\n  enumDesc(file_thru_services_v1_query_service, 0);\n\n/**\n * QueryService defines unary RPCs for accessing blockchain data.\n *\n * @generated from service thru.services.v1.QueryService\n */\nexport const QueryService: GenService<{\n  /**\n   * Returns typed chain parameters and the state clock in one durable view.\n   *\n   * @generated from rpc thru.services.v1.QueryService.GetCompressionConfig\n   */\n  getCompressionConfig: {\n    methodKind: \"unary\";\n    input: typeof GetCompressionConfigRequestSchema;\n    output: typeof CompressionConfigSchema;\n  },\n  /**\n   * Reads account metadata, activity and config from the same durable snapshot.\n   *\n   * @generated from rpc thru.services.v1.QueryService.CanCompress\n   */\n  canCompress: {\n    methodKind: \"unary\";\n    input: typeof CanCompressRequestSchema;\n    output: typeof CanCompressResponseSchema;\n  },\n  /**\n   * Get block heights\n   *\n   * @generated from rpc thru.services.v1.QueryService.GetHeight\n   */\n  getHeight: {\n    methodKind: \"unary\";\n    input: typeof GetHeightRequestSchema;\n    output: typeof GetHeightResponseSchema;\n  },\n  /**\n   * Get chain-level information including chain ID.\n   *\n   * @generated from rpc thru.services.v1.QueryService.GetChainInfo\n   */\n  getChainInfo: {\n    methodKind: \"unary\";\n    input: typeof GetChainInfoRequestSchema;\n    output: typeof GetChainInfoResponseSchema;\n  },\n  /**\n   * Get account information.\n   *\n   * @generated from rpc thru.services.v1.QueryService.GetAccount\n   */\n  getAccount: {\n    methodKind: \"unary\";\n    input: typeof GetAccountRequestSchema;\n    output: typeof AccountSchema;\n  },\n  /**\n   * Get account raw bytes.\n   *\n   * @generated from rpc thru.services.v1.QueryService.GetRawAccount\n   */\n  getRawAccount: {\n    methodKind: \"unary\";\n    input: typeof GetRawAccountRequestSchema;\n    output: typeof RawAccountSchema;\n  },\n  /**\n   * Get raw bytes for many accounts in one call. Partial: addresses that do\n   * not exist are absent from the response map.\n   *\n   * @generated from rpc thru.services.v1.QueryService.BatchGetRawAccounts\n   */\n  batchGetRawAccounts: {\n    methodKind: \"unary\";\n    input: typeof BatchGetRawAccountsRequestSchema;\n    output: typeof BatchGetRawAccountsResponseSchema;\n  },\n  /**\n   * Get many transactions in one call. Partial: unknown signatures are absent\n   * from the response map.\n   *\n   * @generated from rpc thru.services.v1.QueryService.BatchGetTransactions\n   */\n  batchGetTransactions: {\n    methodKind: \"unary\";\n    input: typeof BatchGetTransactionsRequestSchema;\n    output: typeof BatchGetTransactionsResponseSchema;\n  },\n  /**\n   * Get transaction by signature.\n   *\n   * @generated from rpc thru.services.v1.QueryService.GetTransaction\n   */\n  getTransaction: {\n    methodKind: \"unary\";\n    input: typeof GetTransactionRequestSchema;\n    output: typeof TransactionSchema;\n  },\n  /**\n   * Get raw transaction by signature.\n   *\n   * @generated from rpc thru.services.v1.QueryService.GetRawTransaction\n   */\n  getRawTransaction: {\n    methodKind: \"unary\";\n    input: typeof GetRawTransactionRequestSchema;\n    output: typeof RawTransactionSchema;\n  },\n  /**\n   * Get block by slot or hash.\n   *\n   * @generated from rpc thru.services.v1.QueryService.GetBlock\n   */\n  getBlock: {\n    methodKind: \"unary\";\n    input: typeof GetBlockRequestSchema;\n    output: typeof BlockSchema;\n  },\n  /**\n   * Get raw block bytes.\n   *\n   * @generated from rpc thru.services.v1.QueryService.GetRawBlock\n   */\n  getRawBlock: {\n    methodKind: \"unary\";\n    input: typeof GetRawBlockRequestSchema;\n    output: typeof RawBlockSchema;\n  },\n  /**\n   * List accounts using CEL-based filtering.\n   *\n   * @generated from rpc thru.services.v1.QueryService.ListAccounts\n   */\n  listAccounts: {\n    methodKind: \"unary\";\n    input: typeof ListAccountsRequestSchema;\n    output: typeof ListAccountsResponseSchema;\n  },\n  /**\n   * List blocks using pagination and filtering. By default returns blocks ordered from latest slot to the first one.\n   *\n   * @generated from rpc thru.services.v1.QueryService.ListBlocks\n   */\n  listBlocks: {\n    methodKind: \"unary\";\n    input: typeof ListBlocksRequestSchema;\n    output: typeof ListBlocksResponseSchema;\n  },\n  /**\n   * List executed transaction signatures involving an account.\n   *\n   * @generated from rpc thru.services.v1.QueryService.ListTransactionsForAccount\n   */\n  listTransactionsForAccount: {\n    methodKind: \"unary\";\n    input: typeof ListTransactionsForAccountRequestSchema;\n    output: typeof ListTransactionsForAccountResponseSchema;\n  },\n  /**\n   * Get a specific event by ID.\n   *\n   * @generated from rpc thru.services.v1.QueryService.GetEvent\n   */\n  getEvent: {\n    methodKind: \"unary\";\n    input: typeof GetEventRequestSchema;\n    output: typeof EventSchema;\n  },\n  /**\n   * List events with CEL filtering and pagination. Returns events ordered from most recent to older.\n   *\n   * @generated from rpc thru.services.v1.QueryService.ListEvents\n   */\n  listEvents: {\n    methodKind: \"unary\";\n    input: typeof ListEventsRequestSchema;\n    output: typeof ListEventsResponseSchema;\n  },\n  /**\n   * List executed transactions with CEL filtering and pagination. Returns transactions ordered from most recent to older.\n   *\n   * @generated from rpc thru.services.v1.QueryService.ListTransactions\n   */\n  listTransactions: {\n    methodKind: \"unary\";\n    input: typeof ListTransactionsRequestSchema;\n    output: typeof ListTransactionsResponseSchema;\n  },\n  /**\n   * Get derived transaction status metadata.\n   *\n   * @generated from rpc thru.services.v1.QueryService.GetTransactionStatus\n   */\n  getTransactionStatus: {\n    methodKind: \"unary\";\n    input: typeof GetTransactionStatusRequestSchema;\n    output: typeof TransactionStatusSchema;\n  },\n  /**\n   * Generate an account state proof snapshot.\n   * Generate many state proofs in one call, sharing the trie descent across\n   * them. Partial: a request that cannot be proved carries its own error.\n   *\n   * @generated from rpc thru.services.v1.QueryService.BatchGenerateStateProofs\n   */\n  batchGenerateStateProofs: {\n    methodKind: \"unary\";\n    input: typeof BatchGenerateStateProofsRequestSchema;\n    output: typeof BatchGenerateStateProofsResponseSchema;\n  },\n  /**\n   * @generated from rpc thru.services.v1.QueryService.GenerateStateProof\n   */\n  generateStateProof: {\n    methodKind: \"unary\";\n    input: typeof GenerateStateProofRequestSchema;\n    output: typeof GenerateStateProofResponseSchema;\n  },\n  /**\n   * Get component version strings.\n   *\n   * @generated from rpc thru.services.v1.QueryService.GetVersion\n   */\n  getVersion: {\n    methodKind: \"unary\";\n    input: typeof GetVersionRequestSchema;\n    output: typeof GetVersionResponseSchema;\n  },\n  /**\n   * Get state roots for a range of slots.\n   * Used for transaction replay to verify state proofs against historical roots.\n   *\n   * @generated from rpc thru.services.v1.QueryService.GetStateRoots\n   */\n  getStateRoots: {\n    methodKind: \"unary\";\n    input: typeof GetStateRootsRequestSchema;\n    output: typeof GetStateRootsResponseSchema;\n  },\n  /**\n   * Get active state hashes for a range of slots.\n   *\n   * @generated from rpc thru.services.v1.QueryService.GetActiveStateHashes\n   */\n  getActiveStateHashes: {\n    methodKind: \"unary\";\n    input: typeof GetActiveStateHashesRequestSchema;\n    output: typeof GetActiveStateHashesResponseSchema;\n  },\n  /**\n   * Get slot-level metrics including state counters and distributed fees\n   * (absent-block-producer + claimed).\n   *\n   * @generated from rpc thru.services.v1.QueryService.GetSlotMetrics\n   */\n  getSlotMetrics: {\n    methodKind: \"unary\";\n    input: typeof GetSlotMetricsRequestSchema;\n    output: typeof GetSlotMetricsResponseSchema;\n  },\n  /**\n   * List slot metrics for a range of slots.\n   *\n   * @generated from rpc thru.services.v1.QueryService.ListSlotMetrics\n   */\n  listSlotMetrics: {\n    methodKind: \"unary\";\n    input: typeof ListSlotMetricsRequestSchema;\n    output: typeof ListSlotMetricsResponseSchema;\n  },\n  /**\n   * Get the node's own ED25519 public key.\n   *\n   * @generated from rpc thru.services.v1.QueryService.GetNodePubkey\n   */\n  getNodePubkey: {\n    methodKind: \"unary\";\n    input: typeof GetNodePubkeyRequestSchema;\n    output: typeof GetNodePubkeyResponseSchema;\n  },\n  /**\n   * Get all known node records from the gossip network.\n   *\n   * @generated from rpc thru.services.v1.QueryService.GetNodeRecords\n   */\n  getNodeRecords: {\n    methodKind: \"unary\";\n    input: typeof GetNodeRecordsRequestSchema;\n    output: typeof GetNodeRecordsResponseSchema;\n  },\n  /**\n   * Get the node's operational status including consensus readiness.\n   *\n   * @generated from rpc thru.services.v1.QueryService.GetNodeStatus\n   */\n  getNodeStatus: {\n    methodKind: \"unary\";\n    input: typeof GetNodeStatusRequestSchema;\n    output: typeof GetNodeStatusResponseSchema;\n  },\n}> = /*@__PURE__*/\n  serviceDesc(file_thru_services_v1_query_service, 0);\n\n","// @generated by protoc-gen-es v2.12.0 with parameter \"target=ts\"\n// @generated from file thru/services/v1/streaming_service.proto (package thru.services.v1, syntax proto3)\n/* eslint-disable */\n\nimport type { GenFile, GenMessage, GenService } from \"@bufbuild/protobuf/codegenv2\";\nimport { fileDesc, messageDesc, serviceDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport { file_buf_validate_validate } from \"../../../buf/validate/validate_pb\";\nimport { file_google_api_field_behavior } from \"../../../google/api/field_behavior_pb\";\nimport type { Pubkey, Signature } from \"../../common/v1/primitives_pb\";\nimport { file_thru_common_v1_primitives } from \"../../common/v1/primitives_pb\";\nimport type { Duration, Timestamp } from \"@bufbuild/protobuf/wkt\";\nimport { file_google_protobuf_duration, file_google_protobuf_timestamp } from \"@bufbuild/protobuf/wkt\";\nimport type { ConsensusStatus } from \"../../common/v1/consensus_pb\";\nimport { file_thru_common_v1_consensus } from \"../../common/v1/consensus_pb\";\nimport type { Filter } from \"../../common/v1/filters_pb\";\nimport { file_thru_common_v1_filters } from \"../../common/v1/filters_pb\";\nimport type { Account, AccountMeta, AccountPage, AccountView } from \"../../core/v1/account_pb\";\nimport { file_thru_core_v1_account } from \"../../core/v1/account_pb\";\nimport type { Block, BlockView } from \"../../core/v1/block_pb\";\nimport { file_thru_core_v1_block } from \"../../core/v1/block_pb\";\nimport type { Transaction, TransactionExecutionResult } from \"../../core/v1/transaction_pb\";\nimport { file_thru_core_v1_transaction } from \"../../core/v1/transaction_pb\";\nimport { file_thru_core_v1_types } from \"../../core/v1/types_pb\";\nimport type { NodeRecord } from \"../../core/v1/node_pb\";\nimport { file_thru_core_v1_node } from \"../../core/v1/node_pb\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file thru/services/v1/streaming_service.proto.\n */\nexport const file_thru_services_v1_streaming_service: GenFile = /*@__PURE__*/\n  fileDesc(\"Cih0aHJ1L3NlcnZpY2VzL3YxL3N0cmVhbWluZ19zZXJ2aWNlLnByb3RvEhB0aHJ1LnNlcnZpY2VzLnYxIo0CChNTdHJlYW1CbG9ja3NSZXF1ZXN0EhwKCnN0YXJ0X3Nsb3QYASABKARCA+BBAUgAiAEBEjAKBmZpbHRlchgCIAEoCzIWLnRocnUuY29tbW9uLnYxLkZpbHRlckID4EEBSAGIAQESLwoEdmlldxgDIAEoDjIXLnRocnUuY29yZS52MS5CbG9ja1ZpZXdCA+BBAUgCiAEBEkAKDW1pbl9jb25zZW5zdXMYBCABKA4yHy50aHJ1LmNvbW1vbi52MS5Db25zZW5zdXNTdGF0dXNCA+BBAUgDiAEBQg0KC19zdGFydF9zbG90QgkKB19maWx0ZXJCBwoFX3ZpZXdCEAoOX21pbl9jb25zZW5zdXMiPwoUU3RyZWFtQmxvY2tzUmVzcG9uc2USJwoFYmxvY2sYASABKAsyEy50aHJ1LmNvcmUudjEuQmxvY2tCA+BBAiKcAQobU3RyZWFtQWNjb3VudFVwZGF0ZXNSZXF1ZXN0EjEKBHZpZXcYAiABKA4yGS50aHJ1LmNvcmUudjEuQWNjb3VudFZpZXdCA+BBAUgAiAEBEjAKBmZpbHRlchgEIAEoCzIWLnRocnUuY29tbW9uLnYxLkZpbHRlckID4EEBSAGIAQFCBwoFX3ZpZXdCCQoHX2ZpbHRlckoECAEQAiL/AQoNQWNjb3VudFVwZGF0ZRIRCgRzbG90GAEgASgEQgPgQQISMQoEcGFnZRgCIAEoCzIZLnRocnUuY29yZS52MS5BY2NvdW50UGFnZUID4EEBSACIAQESMQoEbWV0YRgDIAEoCzIZLnRocnUuY29yZS52MS5BY2NvdW50TWV0YUID4EEBSAGIAQESGAoGZGVsZXRlGAQgASgIQgPgQQFIAogBARIsCgdhZGRyZXNzGAUgASgLMhYudGhydS5jb21tb24udjEuUHVia2V5QgPgQQISEAoDc2VxGAYgASgEQgPgQQJCBwoFX3BhZ2VCBwoFX21ldGFCCQoHX2RlbGV0ZSLCAQoNQmxvY2tGaW5pc2hlZBIRCgRzbG90GAEgASgEQgPgQQISKwoeZ2xvYmFsX2FjdGl2YXRlZF9zdGF0ZV9jb3VudGVyGAIgASgEQgPgQQISLQogZ2xvYmFsX2RlYWN0aXZhdGVkX3N0YXRlX2NvdW50ZXIYAyABKARCA+BBAhInChphYnNlbnRfYmxvY2tfcHJvZHVjZXJfZmVlcxgEIAEoBEID4EECEhkKDGNsYWltZWRfZmVlcxgFIAEoBEID4EECIrwBChxTdHJlYW1BY2NvdW50VXBkYXRlc1Jlc3BvbnNlEikKCHNuYXBzaG90GAEgASgLMhUudGhydS5jb3JlLnYxLkFjY291bnRIABIxCgZ1cGRhdGUYAiABKAsyHy50aHJ1LnNlcnZpY2VzLnYxLkFjY291bnRVcGRhdGVIABIzCghmaW5pc2hlZBgDIAEoCzIfLnRocnUuc2VydmljZXMudjEuQmxvY2tGaW5pc2hlZEgAQgkKB21lc3NhZ2UirAEKGVN0cmVhbVRyYW5zYWN0aW9uc1JlcXVlc3QSMAoGZmlsdGVyGAEgASgLMhYudGhydS5jb21tb24udjEuRmlsdGVyQgPgQQFIAIgBARJACg1taW5fY29uc2Vuc3VzGAIgASgOMh8udGhydS5jb21tb24udjEuQ29uc2Vuc3VzU3RhdHVzQgPgQQFIAYgBAUIJCgdfZmlsdGVyQhAKDl9taW5fY29uc2Vuc3VzIlEKGlN0cmVhbVRyYW5zYWN0aW9uc1Jlc3BvbnNlEjMKC3RyYW5zYWN0aW9uGAEgASgLMhkudGhydS5jb3JlLnYxLlRyYW5zYWN0aW9uQgPgQQIiUgoTU3RyZWFtRXZlbnRzUmVxdWVzdBIwCgZmaWx0ZXIYASABKAsyFi50aHJ1LmNvbW1vbi52MS5GaWx0ZXJCA+BBAUgAiAEBQgkKB19maWx0ZXIinAQKFFN0cmVhbUV2ZW50c1Jlc3BvbnNlEhUKCGV2ZW50X2lkGAEgASgJQgPgQQISGQoHcGF5bG9hZBgCIAEoDEID4EEBSACIAQESNwoJdGltZXN0YW1wGAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEID4EEBSAGIAQESLAoHcHJvZ3JhbRgEIAEoCzIWLnRocnUuY29tbW9uLnYxLlB1YmtleUID4EECEhUKCGNhbGxfaWR4GAUgASgNQgPgQQISMQoJc2lnbmF0dXJlGAYgASgLMhkudGhydS5jb21tb24udjEuU2lnbmF0dXJlQgPgQQISEQoEc2xvdBgHIAEoBEID4EECEh0KC3Byb2dyYW1faWR4GAggASgNQgPgQQFIAogBARIeCgxibG9ja19vZmZzZXQYCSABKA1CA+BBAUgDiAEBEjMKCWZlZV9wYXllchgKIAEoCzIWLnRocnUuY29tbW9uLnYxLlB1YmtleUID4EEBSASIAQESPQoPYmxvY2tfdGltZXN0YW1wGAsgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEID4EEBSAWIAQFCCgoIX3BheWxvYWRCDAoKX3RpbWVzdGFtcEIOCgxfcHJvZ3JhbV9pZHhCDwoNX2Jsb2NrX29mZnNldEIMCgpfZmVlX3BheWVyQhIKEF9ibG9ja190aW1lc3RhbXAijgEKF1RyYWNrVHJhbnNhY3Rpb25SZXF1ZXN0EjEKCXNpZ25hdHVyZRgBIAEoCzIZLnRocnUuY29tbW9uLnYxLlNpZ25hdHVyZUID4EECEjQKB3RpbWVvdXQYAiABKAsyGS5nb29nbGUucHJvdG9idWYuRHVyYXRpb25CA+BBAUgAiAEBQgoKCF90aW1lb3V0IukBChhUcmFja1RyYW5zYWN0aW9uUmVzcG9uc2USMQoJc2lnbmF0dXJlGAEgASgLMhkudGhydS5jb21tb24udjEuU2lnbmF0dXJlQgPgQQISPgoQY29uc2Vuc3VzX3N0YXR1cxgCIAEoDjIfLnRocnUuY29tbW9uLnYxLkNvbnNlbnN1c1N0YXR1c0ID4EEBEkcKEGV4ZWN1dGlvbl9yZXN1bHQYAyABKAsyKC50aHJ1LmNvcmUudjEuVHJhbnNhY3Rpb25FeGVjdXRpb25SZXN1bHRCA+BBARIRCgRzbG90GAQgASgEQgPgQQEimwEKGFN0cmVhbVNsb3RNZXRyaWNzUmVxdWVzdBIcCgpzdGFydF9zbG90GAEgASgEQgPgQQFIAIgBARIqCh1pbmNsdWRlX2NvbXByZXNzZWRfc3RhdGVfcm9vdBgCIAEoCEID4EEBEiYKGWluY2x1ZGVfYWN0aXZlX3N0YXRlX2hhc2gYAyABKAhCA+BBAUINCgtfc3RhcnRfc2xvdCLOAwoZU3RyZWFtU2xvdE1ldHJpY3NSZXNwb25zZRIRCgRzbG90GAEgASgEQgPgQQISKwoeZ2xvYmFsX2FjdGl2YXRlZF9zdGF0ZV9jb3VudGVyGAIgASgEQgPgQQISLQogZ2xvYmFsX2RlYWN0aXZhdGVkX3N0YXRlX2NvdW50ZXIYAyABKARCA+BBAhInChphYnNlbnRfYmxvY2tfcHJvZHVjZXJfZmVlcxgEIAEoBEID4EECEjgKD2Jsb2NrX3RpbWVzdGFtcBgFIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCA+BBAhIjChZjb25zdW1lZF9jb21wdXRlX3VuaXRzGAYgASgEQgPgQQISIQoUY29uc3VtZWRfc3RhdGVfdW5pdHMYByABKA1CA+BBAhIZCgxjbGFpbWVkX2ZlZXMYCCABKARCA+BBAhInChVjb21wcmVzc2VkX3N0YXRlX3Jvb3QYCSABKAxCA+BBAUgAiAEBEiMKEWFjdGl2ZV9zdGF0ZV9oYXNoGAogASgMQgPgQQFIAYgBAUIYChZfY29tcHJlc3NlZF9zdGF0ZV9yb290QhQKEl9hY3RpdmVfc3RhdGVfaGFzaCIVChNTdHJlYW1IZWlnaHRSZXF1ZXN0ImwKFFN0cmVhbUhlaWdodFJlc3BvbnNlEhYKCWZpbmFsaXplZBgBIAEoBEID4EECEh0KEGxvY2FsbHlfZXhlY3V0ZWQYAiABKARCA+BBAhIdChBjbHVzdGVyX2V4ZWN1dGVkGAMgASgEQgPgQQIiGgoYU3RyZWFtTm9kZVJlY29yZHNSZXF1ZXN0ImYKGVN0cmVhbU5vZGVSZWNvcmRzUmVzcG9uc2USKgoGcmVjb3JkGAEgASgLMhgudGhydS5jb3JlLnYxLk5vZGVSZWNvcmRIABISCghmaW5pc2hlZBgCIAEoCEgAQgkKB21lc3NhZ2Uy7gYKEFN0cmVhbWluZ1NlcnZpY2USXwoMU3RyZWFtQmxvY2tzEiUudGhydS5zZXJ2aWNlcy52MS5TdHJlYW1CbG9ja3NSZXF1ZXN0GiYudGhydS5zZXJ2aWNlcy52MS5TdHJlYW1CbG9ja3NSZXNwb25zZTABEncKFFN0cmVhbUFjY291bnRVcGRhdGVzEi0udGhydS5zZXJ2aWNlcy52MS5TdHJlYW1BY2NvdW50VXBkYXRlc1JlcXVlc3QaLi50aHJ1LnNlcnZpY2VzLnYxLlN0cmVhbUFjY291bnRVcGRhdGVzUmVzcG9uc2UwARJxChJTdHJlYW1UcmFuc2FjdGlvbnMSKy50aHJ1LnNlcnZpY2VzLnYxLlN0cmVhbVRyYW5zYWN0aW9uc1JlcXVlc3QaLC50aHJ1LnNlcnZpY2VzLnYxLlN0cmVhbVRyYW5zYWN0aW9uc1Jlc3BvbnNlMAESXwoMU3RyZWFtRXZlbnRzEiUudGhydS5zZXJ2aWNlcy52MS5TdHJlYW1FdmVudHNSZXF1ZXN0GiYudGhydS5zZXJ2aWNlcy52MS5TdHJlYW1FdmVudHNSZXNwb25zZTABEmsKEFRyYWNrVHJhbnNhY3Rpb24SKS50aHJ1LnNlcnZpY2VzLnYxLlRyYWNrVHJhbnNhY3Rpb25SZXF1ZXN0GioudGhydS5zZXJ2aWNlcy52MS5UcmFja1RyYW5zYWN0aW9uUmVzcG9uc2UwARJfCgxTdHJlYW1IZWlnaHQSJS50aHJ1LnNlcnZpY2VzLnYxLlN0cmVhbUhlaWdodFJlcXVlc3QaJi50aHJ1LnNlcnZpY2VzLnYxLlN0cmVhbUhlaWdodFJlc3BvbnNlMAESbgoRU3RyZWFtU2xvdE1ldHJpY3MSKi50aHJ1LnNlcnZpY2VzLnYxLlN0cmVhbVNsb3RNZXRyaWNzUmVxdWVzdBorLnRocnUuc2VydmljZXMudjEuU3RyZWFtU2xvdE1ldHJpY3NSZXNwb25zZTABEm4KEVN0cmVhbU5vZGVSZWNvcmRzEioudGhydS5zZXJ2aWNlcy52MS5TdHJlYW1Ob2RlUmVjb3Jkc1JlcXVlc3QaKy50aHJ1LnNlcnZpY2VzLnYxLlN0cmVhbU5vZGVSZWNvcmRzUmVzcG9uc2UwAULgAQoUY29tLnRocnUuc2VydmljZXMudjFCFVN0cmVhbWluZ1NlcnZpY2VQcm90b1ABWkhnaXRodWIuY29tL1VudG8tTGFicy90aHJ1LW5ldC9ncnBjL3BrZy9wcm90by90aHJ1L3NlcnZpY2VzL3YxO3NlcnZpY2VzdjGiAgNUU1iqAhBUaHJ1LlNlcnZpY2VzLlYxugIEVEhVU8oCEFRocnVcU2VydmljZXNcVjHiAhxUaHJ1XFNlcnZpY2VzXFYxXEdQQk1ldGFkYXRh6gISVGhydTo6U2VydmljZXM6OlYxYgZwcm90bzM\", [file_buf_validate_validate, file_google_api_field_behavior, file_thru_common_v1_primitives, file_google_protobuf_duration, file_google_protobuf_timestamp, file_thru_common_v1_consensus, file_thru_common_v1_filters, file_thru_core_v1_account, file_thru_core_v1_block, file_thru_core_v1_transaction, file_thru_core_v1_types, file_thru_core_v1_node]);\n\n/**\n * StreamBlocksRequest subscribes to real-time block updates.\n *\n * Filter expressions support the following params:\n *\n * - params.slot (int64): Slot number for comparison\n *   Example: block.block.header.slot == params.slot\n *\n * - params.min_slot (int64): Minimum slot for range filtering\n *   Example: block.block.header.slot >= params.min_slot\n *\n * - params.start_slot (int64): Starting slot for filtering\n *   Example: block.block.header.slot >= params.start_slot\n *\n * - params.u64 (int64): Generic 64-bit value for numeric comparisons\n *   Examples:\n *     block.block.header.max_compute_units > params.u64\n *     block.block.header.bond_amount_lock_up >= params.u64\n *\n * - params.producer (bytes|Pubkey): Producer pubkey for filtering\n *   Examples:\n *     block.block.header.producer.value == params.producer\n *     has(block.block.header.producer) && block.block.header.producer.value == params.producer\n *\n * Available block header fields:\n *   block.block.header.slot, block.block.header.version,\n *   block.block.header.start_slot, block.block.header.expiry_after,\n *   block.block.header.max_block_size, block.block.header.max_compute_units,\n *   block.block.header.max_state_units, block.block.header.bond_amount_lock_up,\n *   block.block.header.producer, block.block.header.producer.value\n *\n * Available block footer fields (populated on the live stream):\n *   block.block.footer.signature, block.block.footer.attestor_payment\n *\n * NOT populated on this stream — do not filter on these here:\n *   block.block.footer.status is ALWAYS EXECUTION_STATUS_PENDING;\n *   block.block.footer.consumed_compute_units and\n *   block.block.footer.consumed_state_units are ALWAYS 0, because\n *   StreamBlocks emits blocks at observation time, before execution\n *   completes. The CEL engine accepts these paths, but filters on them\n *   never match meaningfully. For live per-block consumed units use\n *   StreamSlotMetrics; for the fully-populated, filterable footer use\n *   QueryService.GetBlock / ListBlocks.\n *\n * Available consensus status field:\n *   block.block.consensus_status\n *\n * Filter expression examples:\n *\n * 1. Filter by specific slot:\n *    Expression: \"block.block.header.slot == params.slot\"\n *    Params: {\"slot\": 12345}\n *\n * 2. Filter by slot range:\n *    Expression: \"block.block.header.slot >= params.min_slot\"\n *    Params: {\"min_slot\": 1000}\n *\n * 3. Filter by block version:\n *    Expression: \"block.block.header.version >= uint(0)\"\n *\n * 4. Filter by specific producer:\n *    Expression: \"has(block.block.header.producer) && block.block.header.producer.value == params.producer\"\n *    Params: {\"producer\": <32-byte pubkey>}\n *\n * 5. Filter by max compute units:\n *    Expression: \"block.block.header.max_compute_units > uint(0)\"\n *\n * 6. Filter by max state units:\n *    Expression: \"block.block.header.max_state_units > uint(0)\"\n *\n * 7. Filter by bond amount lock-up:\n *    Expression: \"block.block.header.bond_amount_lock_up >= uint(0)\"\n *\n * 8. Footer status is PENDING-only on this stream:\n *    block.block.footer.status is ALWAYS EXECUTION_STATUS_PENDING here, so a\n *    status filter can never select executed blocks. To filter on executed\n *    status use QueryService.GetBlock / ListBlocks instead.\n *    Note: EXECUTION_STATUS_PENDING = 1, EXECUTION_STATUS_EXECUTED = 2\n *\n * 9. Filter by consensus status:\n *    Expression: \"block.block.consensus_status == int(2)\"\n *    Note: CONSENSUS_STATUS_UNSPECIFIED = 0, CONSENSUS_STATUS_OBSERVED = 1,\n *          CONSENSUS_STATUS_INCLUDED = 2\n *\n * 10. Check for optional fields presence:\n *     Expression: \"has(block.block.header) && has(block.block.footer)\"\n *\n * 11. Combined filters (multiple conditions):\n *     Expression: \"block.block.header.slot >= params.min_slot && has(block.block.footer) && block.block.footer.attestor_payment > uint(0)\"\n *     Params: {\"min_slot\": 1000}\n *\n * 12. Numeric comparison with params:\n *     Expression: \"block.block.header.max_compute_units > params.u64\"\n *     Params: {\"u64\": 1000000}\n *\n * @generated from message thru.services.v1.StreamBlocksRequest\n */\nexport type StreamBlocksRequest = Message<\"thru.services.v1.StreamBlocksRequest\"> & {\n  /**\n   * @generated from field: optional uint64 start_slot = 1;\n   */\n  startSlot?: bigint | undefined;\n\n  /**\n   * @generated from field: optional thru.common.v1.Filter filter = 2;\n   */\n  filter?: Filter | undefined;\n\n  /**\n   * @generated from field: optional thru.core.v1.BlockView view = 3;\n   */\n  view?: BlockView | undefined;\n\n  /**\n   * @generated from field: optional thru.common.v1.ConsensusStatus min_consensus = 4;\n   */\n  minConsensus?: ConsensusStatus | undefined;\n};\n\n/**\n * Describes the message thru.services.v1.StreamBlocksRequest.\n * Use `create(StreamBlocksRequestSchema)` to create a new message.\n */\nexport const StreamBlocksRequestSchema: GenMessage<StreamBlocksRequest> = /*@__PURE__*/\n  messageDesc(file_thru_services_v1_streaming_service, 0);\n\n/**\n * StreamBlocksResponse delivers block updates.\n *\n * @generated from message thru.services.v1.StreamBlocksResponse\n */\nexport type StreamBlocksResponse = Message<\"thru.services.v1.StreamBlocksResponse\"> & {\n  /**\n   * @generated from field: thru.core.v1.Block block = 1;\n   */\n  block?: Block | undefined;\n};\n\n/**\n * Describes the message thru.services.v1.StreamBlocksResponse.\n * Use `create(StreamBlocksResponseSchema)` to create a new message.\n */\nexport const StreamBlocksResponseSchema: GenMessage<StreamBlocksResponse> = /*@__PURE__*/\n  messageDesc(file_thru_services_v1_streaming_service, 1);\n\n/**\n * StreamAccountUpdatesRequest subscribes to account delta events.\n *\n * Filter expressions support the following params:\n *\n * - params.min_slot (uint64): Minimum slot for filtering updates\n *   Example: account_update.slot >= params.min_slot\n *\n * - params.min_balance (uint64): Minimum balance for filtering\n *   Example: snapshot.meta.balance >= params.min_balance\n *\n * - params.owner (bytes|Pubkey): Owner pubkey for filtering\n *   Examples:\n *     snapshot.meta.owner.value == params.owner\n *     account_update.meta.owner.value == params.owner\n *\n * - params.address (bytes|Pubkey): Account address for filtering\n *   Example: account_address.value == params.address\n *   Note: Use account_address for unified filtering across both snapshot and update messages\n *\n * - params.addresses (BytesList): List of addresses for multi-account filtering\n *   Example: account_address.value in params.addresses\n *   Note: Use the 'in' operator to filter by multiple addresses in a single subscription\n *\n * - params.min_nonce (uint64): Minimum nonce for filtering\n *   Example: snapshot.meta.nonce >= params.min_nonce\n *\n * - params.min_seq (uint64): Minimum sequence number for filtering\n *   Example: snapshot.meta.seq >= params.min_seq\n *   Note: for account_update messages, prefer the top-level\n *   account_update.seq -- it is present under every view, including\n *   DATA_ONLY and PUBKEY_ONLY where account_update.meta is stripped.\n *\n * - params.min_data_size (uint32): Minimum data size for filtering\n *   Example: snapshot.meta.data_size >= params.min_data_size\n *\n * Available snapshot fields (thru.core.v1.Account):\n *   snapshot.address, snapshot.address.value (bytes),\n *   snapshot.meta.balance (uint64), snapshot.meta.seq (uint64),\n *   snapshot.meta.nonce (uint64), snapshot.meta.data_size (uint32),\n *   snapshot.meta.version (uint32), snapshot.meta.flags (AccountFlags),\n *   snapshot.meta.flags.is_program (bool), snapshot.meta.flags.is_privileged (bool),\n *   snapshot.meta.flags.is_uncompressable (bool), snapshot.meta.flags.is_ephemeral (bool),\n *   snapshot.meta.flags.is_deleted (bool), snapshot.meta.flags.is_new (bool),\n *   snapshot.meta.flags.is_compressed (bool),\n *   snapshot.meta.owner, snapshot.meta.owner.value (bytes)\n *\n * Available account_update fields (AccountUpdate):\n *   account_update.slot (uint64), account_update.delete (bool),\n *   account_update.seq (uint64) - present under every view, unlike meta.seq,\n *   account_update.meta.balance (uint64), account_update.meta.seq (uint64),\n *   account_update.meta.nonce (uint64), account_update.meta.data_size (uint32),\n *   account_update.meta.version (uint32), account_update.meta.flags (AccountFlags),\n *   account_update.meta.flags.is_program (bool), account_update.meta.flags.is_privileged (bool),\n *   account_update.meta.flags.is_uncompressable (bool), account_update.meta.flags.is_ephemeral (bool),\n *   account_update.meta.flags.is_deleted (bool), account_update.meta.flags.is_new (bool),\n *   account_update.meta.flags.is_compressed (bool),\n *   account_update.meta.owner, account_update.meta.owner.value (bytes)\n *\n * Available unified fields (work for both snapshot and update messages):\n *   account_address, account_address.value (bytes) - extracted from whichever message type is present\n *\n * Filter expression examples:\n *\n * 1. Filter by minimum balance (snapshot or update):\n *    Expression: \"(has(snapshot.meta) && snapshot.meta.balance >= uint(1000000)) || (has(account_update.meta) && account_update.meta.balance >= uint(1000000))\"\n *\n * 2. Filter by account owner using params:\n *    Expression: \"(has(snapshot.meta) && has(snapshot.meta.owner) && snapshot.meta.owner.value == params.owner) || (has(account_update.meta) && has(account_update.meta.owner) && account_update.meta.owner.value == params.owner)\"\n *    Params: {\"owner\": <32-byte pubkey>}\n *\n * 3. Filter by specific account address (works for both snapshot and update messages):\n *    Expression: \"account_address.value == params.address\"\n *    Params: {\"address\": <32-byte pubkey>}\n *\n * 4. Filter by minimum slot for updates:\n *    Expression: \"has(account_update.meta) && account_update.slot >= params.min_slot\"\n *    Params: {\"min_slot\": 1000}\n *\n * 5. Filter by nonce greater than value:\n *    Expression: \"(has(snapshot.meta) && snapshot.meta.nonce >= uint(5)) || (has(account_update.meta) && account_update.meta.nonce >= uint(5))\"\n *\n * 6. Filter by sequence number:\n *    Expression: \"(has(snapshot.meta) && snapshot.meta.seq >= uint(100)) || (has(account_update.meta) && account_update.meta.seq >= uint(100))\"\n *    Note: for account_update alone, the top-level field also works and\n *    survives every view: \"account_update.seq >= uint(100)\"\n *\n * 7. Filter by data size:\n *    Expression: \"(has(snapshot.meta) && snapshot.meta.data_size >= uint(1024)) || (has(account_update.meta) && account_update.meta.data_size >= uint(1024))\"\n *\n * 8. Filter by account version:\n *    Expression: \"(has(snapshot.meta) && snapshot.meta.version >= uint(1)) || (has(account_update.meta) && account_update.meta.version >= uint(1))\"\n *\n * 9. Filter by account flags (check if account is a program):\n *    Expression: \"(has(snapshot.meta) && has(snapshot.meta.flags) && snapshot.meta.flags.is_program) || (has(account_update.meta) && has(account_update.meta.flags) && account_update.meta.flags.is_program)\"\n *\n * 10. Filter by privileged flag:\n *     Expression: \"(has(snapshot.meta) && has(snapshot.meta.flags) && snapshot.meta.flags.is_privileged) || (has(account_update.meta) && has(account_update.meta.flags) && account_update.meta.flags.is_privileged)\"\n *\n * 11. Filter non-delete updates:\n *     Expression: \"has(snapshot.meta) || (has(account_update.meta) && (!has(account_update.delete) || !account_update.delete))\"\n *\n * 12. Check for snapshot or update presence:\n *     Expression: \"has(snapshot.meta) || has(account_update.meta)\"\n *\n * 13. Combined filters (multiple conditions):\n *     Expression: \"has(snapshot.meta) || (has(account_update.meta) && account_update.slot >= params.min_slot && account_update.meta.balance >= params.min_balance)\"\n *     Params: {\"min_slot\": 1000, \"min_balance\": 1000000}\n *\n * 14. Filter by minimum balance using params:\n *     Expression: \"(has(snapshot.meta) && snapshot.meta.balance >= params.min_balance) || (has(account_update.meta) && account_update.meta.balance >= params.min_balance)\"\n *     Params: {\"min_balance\": 5000000000}\n *\n * Note: The response contains either a snapshot (initial state), an update (delta),\n * or a BlockFinished message. Filters should handle both snapshot and update cases\n * using OR logic to match either message type.\n *\n * To filter by specific account address (recommended - works for both message types):\n *   Expression: \"account_address.value == params.address\"\n *   Params: {\"address\": <32-byte pubkey>}\n *\n * To filter by owner (program):\n *   Expression: \"(has(snapshot.meta.owner) && snapshot.meta.owner.value == params.owner) || (has(account_update.meta.owner) && account_update.meta.owner.value == params.owner)\"\n *   Params: {\"owner\": <32-byte program pubkey>}\n *\n * To filter by multiple account addresses (recommended for multi-account subscriptions):\n *   Expression: \"account_address.value in params.addresses\"\n *   Params: {\"addresses\": BytesList{values: [<pubkey1>, <pubkey2>, ...]}}\n *   Note: Use BytesList parameter type with the 'in' operator for efficient multi-address filtering\n *\n * @generated from message thru.services.v1.StreamAccountUpdatesRequest\n */\nexport type StreamAccountUpdatesRequest = Message<\"thru.services.v1.StreamAccountUpdatesRequest\"> & {\n  /**\n   * Projects delivered snapshots and updates to the requested fields. The\n   * server strips fields the view excludes before sending: META_ONLY omits\n   * Account.data and AccountUpdate.page; DATA_ONLY omits the meta; PUBKEY_ONLY\n   * delivers only the address. On AccountUpdate deltas the slot, the\n   * top-level seq, and the AccountUpdate.delete flag are always preserved\n   * regardless of view, so every view can detect account deletion and read\n   * the per-account sequence number even when meta is stripped; without\n   * delete a deletion would be indistinguishable from a page-less update.\n   * ACCOUNT_VIEW_UNSPECIFIED defaults to ACCOUNT_VIEW_FULL, matching the unary\n   * GetAccount RPC.\n   *\n   * @generated from field: optional thru.core.v1.AccountView view = 2;\n   */\n  view?: AccountView | undefined;\n\n  /**\n   * @generated from field: optional thru.common.v1.Filter filter = 4;\n   */\n  filter?: Filter | undefined;\n};\n\n/**\n * Describes the message thru.services.v1.StreamAccountUpdatesRequest.\n * Use `create(StreamAccountUpdatesRequestSchema)` to create a new message.\n */\nexport const StreamAccountUpdatesRequestSchema: GenMessage<StreamAccountUpdatesRequest> = /*@__PURE__*/\n  messageDesc(file_thru_services_v1_streaming_service, 2);\n\n/**\n * AccountUpdate describes a delta for an account.\n *\n * @generated from message thru.services.v1.AccountUpdate\n */\nexport type AccountUpdate = Message<\"thru.services.v1.AccountUpdate\"> & {\n  /**\n   * @generated from field: uint64 slot = 1;\n   */\n  slot: bigint;\n\n  /**\n   * @generated from field: optional thru.core.v1.AccountPage page = 2;\n   */\n  page?: AccountPage | undefined;\n\n  /**\n   * @generated from field: optional thru.core.v1.AccountMeta meta = 3;\n   */\n  meta?: AccountMeta | undefined;\n\n  /**\n   * @generated from field: optional bool delete = 4;\n   */\n  delete?: boolean | undefined;\n\n  /**\n   * Account address for identifying the account in multi-account streams.\n   *\n   * @generated from field: thru.common.v1.Pubkey address = 5;\n   */\n  address?: Pubkey | undefined;\n\n  /**\n   * Per-account sequence number of this update. Unlike meta.seq, this\n   * top-level field is present under every view, including DATA_ONLY and\n   * PUBKEY_ONLY where meta is stripped.\n   *\n   * @generated from field: uint64 seq = 6;\n   */\n  seq: bigint;\n};\n\n/**\n * Describes the message thru.services.v1.AccountUpdate.\n * Use `create(AccountUpdateSchema)` to create a new message.\n */\nexport const AccountUpdateSchema: GenMessage<AccountUpdate> = /*@__PURE__*/\n  messageDesc(file_thru_services_v1_streaming_service, 3);\n\n/**\n * BlockFinished is sent when block's execution is complete.\n * Contains block accumulator metrics finalized after execution.\n *\n * @generated from message thru.services.v1.BlockFinished\n */\nexport type BlockFinished = Message<\"thru.services.v1.BlockFinished\"> & {\n  /**\n   * @generated from field: uint64 slot = 1;\n   */\n  slot: bigint;\n\n  /**\n   * Global counter tracking total activated state across all accounts.\n   * Increments when accounts are created or modified.\n   *\n   * @generated from field: uint64 global_activated_state_counter = 2;\n   */\n  globalActivatedStateCounter: bigint;\n\n  /**\n   * Global counter tracking total deactivated state across all accounts.\n   * Increments when accounts are deleted or compressed.\n   *\n   * @generated from field: uint64 global_deactivated_state_counter = 3;\n   */\n  globalDeactivatedStateCounter: bigint;\n\n  /**\n   * Fees credited to the absent-block-producer fee receiver this block\n   * because the block producer account was not live (UNTO-1293). Field\n   * number unchanged (4).\n   *\n   * @generated from field: uint64 absent_block_producer_fees = 4;\n   */\n  absentBlockProducerFees: bigint;\n\n  /**\n   * Fees credited to a live block-producer account this block. Disjoint from\n   * absent_block_producer_fees by destination; total block fees =\n   * absent_block_producer_fees + claimed_fees.\n   *\n   * @generated from field: uint64 claimed_fees = 5;\n   */\n  claimedFees: bigint;\n};\n\n/**\n * Describes the message thru.services.v1.BlockFinished.\n * Use `create(BlockFinishedSchema)` to create a new message.\n */\nexport const BlockFinishedSchema: GenMessage<BlockFinished> = /*@__PURE__*/\n  messageDesc(file_thru_services_v1_streaming_service, 4);\n\n/**\n * StreamAccountUpdatesResponse contains either an initial snapshot or a delta.\n *\n * @generated from message thru.services.v1.StreamAccountUpdatesResponse\n */\nexport type StreamAccountUpdatesResponse = Message<\"thru.services.v1.StreamAccountUpdatesResponse\"> & {\n  /**\n   * @generated from oneof thru.services.v1.StreamAccountUpdatesResponse.message\n   */\n  message: {\n    /**\n     * @generated from field: thru.core.v1.Account snapshot = 1;\n     */\n    value: Account;\n    case: \"snapshot\";\n  } | {\n    /**\n     * @generated from field: thru.services.v1.AccountUpdate update = 2;\n     */\n    value: AccountUpdate;\n    case: \"update\";\n  } | {\n    /**\n     * @generated from field: thru.services.v1.BlockFinished finished = 3;\n     */\n    value: BlockFinished;\n    case: \"finished\";\n  } | { case: undefined; value?: undefined };\n};\n\n/**\n * Describes the message thru.services.v1.StreamAccountUpdatesResponse.\n * Use `create(StreamAccountUpdatesResponseSchema)` to create a new message.\n */\nexport const StreamAccountUpdatesResponseSchema: GenMessage<StreamAccountUpdatesResponse> = /*@__PURE__*/\n  messageDesc(file_thru_services_v1_streaming_service, 5);\n\n/**\n * StreamTransactionsRequest subscribes to transaction confirmations.\n *\n * Filter expressions support the following params:\n *\n * - params.min_slot (uint64): Minimum slot for filtering transactions\n *   Example: transaction.slot >= params.min_slot\n *\n * - params.max_slot (uint64): Maximum slot for filtering transactions\n *   Example: transaction.slot <= params.max_slot\n *\n * - params.slot (uint64): Specific slot for exact match filtering\n *   Example: transaction.slot == params.slot\n *\n * - params.min_fee (uint64): Minimum fee for filtering transactions\n *   Example: transaction.header.fee >= params.min_fee\n *\n * - params.fee_payer (bytes|Pubkey): Fee payer pubkey for filtering\n *   Example: transaction.header.fee_payer_pubkey.value == params.fee_payer\n *\n * - params.signature (bytes|Signature): Transaction signature for filtering\n *   Example: transaction.signature.value == params.signature\n *\n * Available transaction fields (thru.core.v1.Transaction):\n *   transaction.signature, transaction.signature.value (bytes),\n *   transaction.slot (uint64), transaction.block_offset (uint32),\n *   transaction.header, transaction.header.version (uint32),\n *   transaction.header.fee (uint64),\n *   transaction.header.fee_payer_pubkey, transaction.header.fee_payer_pubkey.value (bytes),\n *   transaction.execution_result, transaction.execution_result.user_error_code (uint32),\n *   transaction.execution_result.vm_error (int32)\n *\n * Available consensus_status field:\n *   consensus_status (int32) - Current consensus status of the transaction\n *   Values: CONSENSUS_STATUS_UNSPECIFIED = 0, CONSENSUS_STATUS_OBSERVED = 1,\n *           CONSENSUS_STATUS_INCLUDED = 2\n *\n * Filter expression examples:\n *\n * 1. Filter by minimum slot:\n *    Expression: \"has(transaction.slot) && transaction.slot >= params.min_slot\"\n *    Params: {\"min_slot\": 1000}\n *\n * 2. Filter by slot range:\n *    Expression: \"has(transaction.slot) && transaction.slot >= params.min_slot && transaction.slot <= params.max_slot\"\n *    Params: {\"min_slot\": 1000, \"max_slot\": 2000}\n *\n * 3. Filter by specific slot:\n *    Expression: \"has(transaction.slot) && transaction.slot == params.slot\"\n *    Params: {\"slot\": 12345}\n *\n * 4. Filter by minimum fee:\n *    Expression: \"has(transaction.header) && transaction.header.fee >= params.min_fee\"\n *    Params: {\"min_fee\": 5000}\n *\n * 5. Filter by fee payer:\n *    Expression: \"has(transaction.header.fee_payer_pubkey) && transaction.header.fee_payer_pubkey.value == params.fee_payer\"\n *    Params: {\"fee_payer\": <32-byte pubkey>}\n *\n * 6. Filter by transaction signature:\n *    Expression: \"has(transaction.signature) && transaction.signature.value == params.signature\"\n *    Params: {\"signature\": <64-byte signature>}\n *\n * 7. Filter by header version:\n *    Expression: \"has(transaction.header) && transaction.header.version >= uint(0)\"\n *\n * 8. Filter by successful execution:\n *    Expression: \"has(transaction.execution_result) && transaction.execution_result.vm_error == int(0)\"\n *\n * 9. Filter by user error code:\n *    Expression: \"has(transaction.execution_result) && transaction.execution_result.user_error_code == uint(0)\"\n *\n * 10. Filter by consensus status:\n *     Expression: \"consensus_status >= int(2)\"\n *     Note: Use >= int(2) for CONSENSUS_STATUS_INCLUDED and above\n *\n * 11. Check for execution result presence:\n *     Expression: \"has(transaction.execution_result)\"\n *\n * 12. Filter by transaction with header and slot:\n *     Expression: \"has(transaction.slot) && transaction.slot >= uint(0) && has(transaction.header)\"\n *\n * 13. Combined filters (slot, fee, and status):\n *     Expression: \"has(transaction.slot) && transaction.slot >= params.min_slot && has(transaction.header) && transaction.header.fee >= params.min_fee && consensus_status >= int(2)\"\n *     Params: {\"min_slot\": 1000, \"min_fee\": 5000}\n *\n * 14. Filter successful transactions with minimum fee:\n *     Expression: \"has(transaction.execution_result) && transaction.execution_result.vm_error == int(0) && has(transaction.header) && transaction.header.fee >= params.min_fee\"\n *     Params: {\"min_fee\": 10000}\n *\n * Note: The min_consensus field in the request provides built-in consensus filtering\n * without requiring a CEL expression. Use it in combination with filter expressions\n * for more complex filtering logic.\n *\n * @generated from message thru.services.v1.StreamTransactionsRequest\n */\nexport type StreamTransactionsRequest = Message<\"thru.services.v1.StreamTransactionsRequest\"> & {\n  /**\n   * @generated from field: optional thru.common.v1.Filter filter = 1;\n   */\n  filter?: Filter | undefined;\n\n  /**\n   * @generated from field: optional thru.common.v1.ConsensusStatus min_consensus = 2;\n   */\n  minConsensus?: ConsensusStatus | undefined;\n};\n\n/**\n * Describes the message thru.services.v1.StreamTransactionsRequest.\n * Use `create(StreamTransactionsRequestSchema)` to create a new message.\n */\nexport const StreamTransactionsRequestSchema: GenMessage<StreamTransactionsRequest> = /*@__PURE__*/\n  messageDesc(file_thru_services_v1_streaming_service, 6);\n\n/**\n * StreamTransactionsResponse delivers transaction events.\n *\n * @generated from message thru.services.v1.StreamTransactionsResponse\n */\nexport type StreamTransactionsResponse = Message<\"thru.services.v1.StreamTransactionsResponse\"> & {\n  /**\n   * @generated from field: thru.core.v1.Transaction transaction = 1;\n   */\n  transaction?: Transaction | undefined;\n};\n\n/**\n * Describes the message thru.services.v1.StreamTransactionsResponse.\n * Use `create(StreamTransactionsResponseSchema)` to create a new message.\n */\nexport const StreamTransactionsResponseSchema: GenMessage<StreamTransactionsResponse> = /*@__PURE__*/\n  messageDesc(file_thru_services_v1_streaming_service, 7);\n\n/**\n * StreamEventsRequest subscribes to chain events.\n *\n * Filter expressions support the following params:\n *\n * - params.prefix (bytes): Byte prefix for payload filtering\n *   Example: bytesPrefix(event.payload, params.prefix)\n *\n * - params.slot (int64): Slot number for comparison\n *   Example: event.slot >= params.slot\n *\n * - params.u64 (int64): Generic 64-bit value for payload extraction\n *   Examples:\n *     first8Bytes(event.payload) == params.u64\n *     first4Bytes(event.payload) == params.u64\n *     first1Byte(event.payload) == params.u64\n *\n * - params.signature (bytes|Signature|TsSignature): Signature for comparison\n *   Examples:\n *     event.signature.value == params.signature        // bytes type\n *     bytesPrefix(event.signature.value, params.signature)\n *   Note: Signature and TsSignature types are auto-converted to bytes\n *\n * - params.address (bytes|Pubkey|TaPubkey): Address/pubkey for comparison\n *   Examples:\n *     event.program.value == params.address            // bytes type\n *     bytesPrefix(event.program.value, params.address)\n *   Note: Pubkey and TaPubkey types are auto-converted to bytes\n *\n * - params.timestamp (int64): Timestamp in seconds for comparison\n *   Example: int(event.timestamp) > params.timestamp\n *\n * Available event fields:\n *   event.event_id (string), event.slot (uint64), event.payload (bytes),\n *   event.call_idx (uint32), event.signature (Signature),\n *   event.signature.value (bytes), event.program (Pubkey),\n *   event.program.value (bytes), event.timestamp (Timestamp),\n *   event.program_idx (uint32), event.block_offset (uint32),\n *   event.fee_payer (Pubkey), event.fee_payer.value (bytes),\n *   event.block_timestamp (Timestamp)\n *\n * Note: Unlike ListEventsRequest in QueryService, StreamEventsRequest does NOT support:\n *   event.payload_size, event.transaction_signature\n *\n * Available filter functions:\n *   - has(field): Check if optional field exists\n *     Example: has(event.program) && has(event.signature)\n *\n *   - startsWith(string, prefix): Check if string starts with prefix\n *     Example: event.event_id.startsWith(\"ts\")\n *\n *   - bytesPrefix(bytes, prefix): Check if bytes start with prefix\n *     Examples:\n *       bytesPrefix(event.payload, b\"\\x01\\x00\\x00\\x00\\x00\\x00\\x00\\x00\")\n *       bytesPrefix(event.payload, params.prefix)\n *       bytesPrefix(event.program.value, params.address)\n *       bytesPrefix(event.signature.value, params.signature)\n *\n *   - first1Byte(bytes): Extract first byte as uint\n *     Example: first1Byte(event.payload) == uint(1)\n *\n *   - first4Bytes(bytes): Extract first 4 bytes as little-endian uint32\n *     Example: first4Bytes(event.payload) == uint(2)\n *\n *   - first8Bytes(bytes): Extract first 8 bytes as little-endian uint64\n *     Example: first8Bytes(event.payload) == uint(6)\n *\n *   - uint(value): Convert value to uint for comparison\n *   - int(value): Convert value to int (used for timestamps)\n *\n * Filter expression examples:\n *\n * 1. Filter by payload type using first1Byte (MESSAGE event type = 1):\n *    Expression: \"first1Byte(event.payload) == uint(1)\"\n *\n * 2. Filter by payload type using first4Bytes (COUNTER event type = 2):\n *    Expression: \"first4Bytes(event.payload) == uint(2)\"\n *\n * 3. Filter by payload type using first8Bytes (PATTERN event type = 6):\n *    Expression: \"first8Bytes(event.payload) == uint(6)\"\n *\n * 4. Filter by payload prefix with params:\n *    Expression: \"bytesPrefix(event.payload, params.prefix)\"\n *    Params: {\"prefix\": <bytes, e.g., 0x01000000...>}\n *\n * 5. Filter by slot using params:\n *    Expression: \"event.slot >= params.slot\"\n *    Params: {\"slot\": 1000}\n *\n * 6. Filter by program address (exact match):\n *    Expression: \"event.program.value == params.address\"\n *    Params: {\"address\": <32-byte pubkey as bytes, Pubkey, or TaPubkey>}\n *\n * 7. Filter by program address (prefix match):\n *    Expression: \"bytesPrefix(event.program.value, params.address)\"\n *    Params: {\"address\": <pubkey prefix bytes>}\n *\n * 8. Filter by transaction signature (exact match):\n *    Expression: \"event.signature.value == params.signature\"\n *    Params: {\"signature\": <64-byte signature as bytes, Signature, or TsSignature>}\n *\n * 9. Filter by transaction signature (prefix match):\n *    Expression: \"bytesPrefix(event.signature.value, params.signature)\"\n *    Params: {\"signature\": <signature prefix bytes>}\n *\n * 10. Filter by call_idx (0 = main program, 1+ = CPI calls):\n *     Expression: \"event.call_idx == uint(0)\"\n *     Expression: \"event.call_idx == uint(1)\"\n *\n * 11. Filter by event_id prefix:\n *     Expression: \"event.event_id.startsWith(\\\"ts\\\")\"\n *\n * 12. Filter by timestamp (events in last hour):\n *     Expression: \"has(event.timestamp) && int(event.timestamp) > int(1700000000)\"\n *\n * 13. Filter by timestamp using params:\n *     Expression: \"has(event.timestamp) && int(event.timestamp) > params.timestamp\"\n *     Params: {\"timestamp\": 1700000000}\n *\n * 14. Check field existence:\n *     Expression: \"has(event.program) && has(event.signature)\"\n *\n * 15. Filter using params.u64 with first8Bytes:\n *     Expression: \"first8Bytes(event.payload) == params.u64\"\n *     Params: {\"u64\": 6}\n *\n * 16. Filter using params.u64 with first4Bytes:\n *     Expression: \"first4Bytes(event.payload) == params.u64\"\n *     Params: {\"u64\": 2}\n *\n * 17. Filter using params.u64 with first1Byte:\n *     Expression: \"first1Byte(event.payload) == params.u64\"\n *     Params: {\"u64\": 1}\n *\n * 18. Combined filter (slot + payload type + call_idx):\n *     Expression: \"event.slot > uint(1000) && first1Byte(event.payload) == uint(1) && event.call_idx == uint(0)\"\n *\n * 19. Combined filter (call_idx + program address):\n *     Expression: \"event.call_idx == uint(1) && event.program.value == params.address\"\n *     Params: {\"address\": <32-byte CPI target program pubkey>}\n *\n * 20. Timestamp range filter:\n *     Expression: \"has(event.timestamp) && int(event.timestamp) > int(1700000000) && int(event.timestamp) < int(1700100000)\"\n *\n * @generated from message thru.services.v1.StreamEventsRequest\n */\nexport type StreamEventsRequest = Message<\"thru.services.v1.StreamEventsRequest\"> & {\n  /**\n   * @generated from field: optional thru.common.v1.Filter filter = 1;\n   */\n  filter?: Filter | undefined;\n};\n\n/**\n * Describes the message thru.services.v1.StreamEventsRequest.\n * Use `create(StreamEventsRequestSchema)` to create a new message.\n */\nexport const StreamEventsRequestSchema: GenMessage<StreamEventsRequest> = /*@__PURE__*/\n  messageDesc(file_thru_services_v1_streaming_service, 8);\n\n/**\n * StreamEventsResponse delivers event payloads.\n *\n * program_idx, block_offset, fee_payer and block_timestamp carry the same\n * values ListEvents and GetEvent return for the event. program_idx and\n * block_offset come from the event itself and are always set. program and\n * fee_payer need the emitting transaction's context, and block_timestamp the\n * event's block; when the node cannot resolve those at publish time they are\n * absent, and a client needing them should look the event up.\n *\n * @generated from message thru.services.v1.StreamEventsResponse\n */\nexport type StreamEventsResponse = Message<\"thru.services.v1.StreamEventsResponse\"> & {\n  /**\n   * @generated from field: string event_id = 1;\n   */\n  eventId: string;\n\n  /**\n   * @generated from field: optional bytes payload = 2;\n   */\n  payload?: Uint8Array | undefined;\n\n  /**\n   * When the node published the event, not when its block was produced; see\n   * block_timestamp.\n   *\n   * @generated from field: optional google.protobuf.Timestamp timestamp = 3;\n   */\n  timestamp?: Timestamp | undefined;\n\n  /**\n   * @generated from field: thru.common.v1.Pubkey program = 4;\n   */\n  program?: Pubkey | undefined;\n\n  /**\n   * @generated from field: uint32 call_idx = 5;\n   */\n  callIdx: number;\n\n  /**\n   * @generated from field: thru.common.v1.Signature signature = 6;\n   */\n  signature?: Signature | undefined;\n\n  /**\n   * @generated from field: uint64 slot = 7;\n   */\n  slot: bigint;\n\n  /**\n   * Index of the emitting program in the transaction's account list.\n   *\n   * @generated from field: optional uint32 program_idx = 8;\n   */\n  programIdx?: number | undefined;\n\n  /**\n   * Byte offset of the emitting transaction within its block.\n   *\n   * @generated from field: optional uint32 block_offset = 9;\n   */\n  blockOffset?: number | undefined;\n\n  /**\n   * Fee payer of the emitting transaction.\n   *\n   * @generated from field: optional thru.common.v1.Pubkey fee_payer = 10;\n   */\n  feePayer?: Pubkey | undefined;\n\n  /**\n   * Block production time of the event's block: the timestamp ListEvents\n   * and GetEvent return.\n   *\n   * @generated from field: optional google.protobuf.Timestamp block_timestamp = 11;\n   */\n  blockTimestamp?: Timestamp | undefined;\n};\n\n/**\n * Describes the message thru.services.v1.StreamEventsResponse.\n * Use `create(StreamEventsResponseSchema)` to create a new message.\n */\nexport const StreamEventsResponseSchema: GenMessage<StreamEventsResponse> = /*@__PURE__*/\n  messageDesc(file_thru_services_v1_streaming_service, 9);\n\n/**\n * TrackTransactionRequest subscribes to status updates for a transaction.\n *\n * @generated from message thru.services.v1.TrackTransactionRequest\n */\nexport type TrackTransactionRequest = Message<\"thru.services.v1.TrackTransactionRequest\"> & {\n  /**\n   * @generated from field: thru.common.v1.Signature signature = 1;\n   */\n  signature?: Signature | undefined;\n\n  /**\n   * @generated from field: optional google.protobuf.Duration timeout = 2;\n   */\n  timeout?: Duration | undefined;\n};\n\n/**\n * Describes the message thru.services.v1.TrackTransactionRequest.\n * Use `create(TrackTransactionRequestSchema)` to create a new message.\n */\nexport const TrackTransactionRequestSchema: GenMessage<TrackTransactionRequest> = /*@__PURE__*/\n  messageDesc(file_thru_services_v1_streaming_service, 10);\n\n/**\n * TrackTransactionResponse reports status transitions for a transaction.\n *\n * @generated from message thru.services.v1.TrackTransactionResponse\n */\nexport type TrackTransactionResponse = Message<\"thru.services.v1.TrackTransactionResponse\"> & {\n  /**\n   * @generated from field: thru.common.v1.Signature signature = 1;\n   */\n  signature?: Signature | undefined;\n\n  /**\n   * @generated from field: thru.common.v1.ConsensusStatus consensus_status = 2;\n   */\n  consensusStatus: ConsensusStatus;\n\n  /**\n   * @generated from field: thru.core.v1.TransactionExecutionResult execution_result = 3;\n   */\n  executionResult?: TransactionExecutionResult | undefined;\n\n  /**\n   * Slot in which this transaction landed. Zero until the producing block\n   * has been observed by the ingestor; consumers waiting to anchor downstream\n   * ClickHouse reads (e.g. GetTransaction) should ignore zero slots and wait\n   * for the next response.\n   *\n   * @generated from field: uint64 slot = 4;\n   */\n  slot: bigint;\n};\n\n/**\n * Describes the message thru.services.v1.TrackTransactionResponse.\n * Use `create(TrackTransactionResponseSchema)` to create a new message.\n */\nexport const TrackTransactionResponseSchema: GenMessage<TrackTransactionResponse> = /*@__PURE__*/\n  messageDesc(file_thru_services_v1_streaming_service, 11);\n\n/**\n * StreamSlotMetricsRequest subscribes to per-slot metrics updates.\n *\n * One message is published per slot terminator. That is normally an executed\n * block, but a persistence consumer connecting without a durable marker also\n * receives an account-bootstrap terminator, which reports no execution state:\n * its counters are zero and it carries no state commitments.\n *\n * @generated from message thru.services.v1.StreamSlotMetricsRequest\n */\nexport type StreamSlotMetricsRequest = Message<\"thru.services.v1.StreamSlotMetricsRequest\"> & {\n  /**\n   * Optional lower bound on the slots delivered. This is a FILTER on live\n   * publications, not a replay: the server holds no history and will not\n   * backfill slots that are already in the past. Slots below this value are\n   * skipped; if not specified, delivery starts from the next terminator.\n   * To read past slots use QueryService.GetSlotMetrics / ListSlotMetrics --\n   * but note those carry the counters and timestamp only, NOT the state\n   * commitments below. For the commitments the corresponding queries are\n   * QueryService.GetStateRoots and QueryService.GetActiveStateHashes, and they\n   * answer only for slots whose rows were actually persisted -- a slot the\n   * indexer never committed, or one whose terminator carried no commitment, has\n   * nothing to return, so a gap is not guaranteed to be fillable.\n   *\n   * @generated from field: optional uint64 start_slot = 1;\n   */\n  startSlot?: bigint | undefined;\n\n  /**\n   * Opt in to compressed_state_root on the response. Off by default: the\n   * commitment costs ~34 bytes per slot and most consumers do not read it.\n   *\n   * @generated from field: bool include_compressed_state_root = 2;\n   */\n  includeCompressedStateRoot: boolean;\n\n  /**\n   * Opt in to active_state_hash on the response. Off by default, same\n   * reasoning as include_compressed_state_root.\n   *\n   * @generated from field: bool include_active_state_hash = 3;\n   */\n  includeActiveStateHash: boolean;\n};\n\n/**\n * Describes the message thru.services.v1.StreamSlotMetricsRequest.\n * Use `create(StreamSlotMetricsRequestSchema)` to create a new message.\n */\nexport const StreamSlotMetricsRequestSchema: GenMessage<StreamSlotMetricsRequest> = /*@__PURE__*/\n  messageDesc(file_thru_services_v1_streaming_service, 12);\n\n/**\n * StreamSlotMetricsResponse delivers slot metrics at slot-terminator time.\n *\n * This is a best-effort, live-only feed. One message is published per slot\n * TERMINATOR, which is normally an executed block but is also an\n * account-bootstrap marker carrying zeroed counters and no state commitments.\n * Publication happens AHEAD of the indexer having persisted the slot: a state\n * proof for that slot may not be servable yet, and\n * neither StreamHeight nor GetStateRoots is a durability signal. A subscriber\n * that cannot keep up is disconnected with RESOURCE_EXHAUSTED rather than\n * silently skipped, and there is no replay -- a client that reconnects has a\n * gap and must backfill through QueryService.\n *\n * @generated from message thru.services.v1.StreamSlotMetricsResponse\n */\nexport type StreamSlotMetricsResponse = Message<\"thru.services.v1.StreamSlotMetricsResponse\"> & {\n  /**\n   * Block slot number.\n   *\n   * @generated from field: uint64 slot = 1;\n   */\n  slot: bigint;\n\n  /**\n   * Global counter tracking total activated state across all accounts.\n   *\n   * @generated from field: uint64 global_activated_state_counter = 2;\n   */\n  globalActivatedStateCounter: bigint;\n\n  /**\n   * Global counter tracking total deactivated state across all accounts.\n   *\n   * @generated from field: uint64 global_deactivated_state_counter = 3;\n   */\n  globalDeactivatedStateCounter: bigint;\n\n  /**\n   * Fees credited to the absent-block-producer fee receiver this block\n   * because the block producer account was not live (UNTO-1293). Field\n   * number unchanged (4).\n   *\n   * @generated from field: uint64 absent_block_producer_fees = 4;\n   */\n  absentBlockProducerFees: bigint;\n\n  /**\n   * Block timestamp.\n   *\n   * @generated from field: google.protobuf.Timestamp block_timestamp = 5;\n   */\n  blockTimestamp?: Timestamp | undefined;\n\n  /**\n   * Total compute units consumed across all transactions in this block.\n   *\n   * @generated from field: uint64 consumed_compute_units = 6;\n   */\n  consumedComputeUnits: bigint;\n\n  /**\n   * Total state units consumed across all transactions in this block.\n   *\n   * @generated from field: uint32 consumed_state_units = 7;\n   */\n  consumedStateUnits: number;\n\n  /**\n   * Fees credited to a live block-producer account this block. Disjoint from\n   * absent_block_producer_fees by destination; total block fees =\n   * absent_block_producer_fees + claimed_fees.\n   *\n   * @generated from field: uint64 claimed_fees = 8;\n   */\n  claimedFees: bigint;\n\n  /**\n   * The compressed-state trie root as of this slot: exactly 32 bytes, the\n   * commitment that account state proofs are verified against.\n   *\n   * Sent only when the request set include_compressed_state_root.\n   *\n   * An all-zero VALUE is legitimate and is not the same as an absent field.\n   * The trie is empty until compression warms up, and a slot in which nothing\n   * was compressed carries the previous root unchanged, so a repeated or zero\n   * root means \"nothing merged\", never \"unknown\".\n   *\n   * Absence has five causes, and they are not all distinguishable from the\n   * client:\n   *   1. the field was not requested;\n   *   2. it was requested, and the node reported no execution state for this\n   *      slot (an account-bootstrap terminator);\n   *   3. this server predates the field and ignores the request flag;\n   *   4. this server supports the field, but the NODE behind it is older than\n   *      the wire flag that marks a terminator as post-execution, so the server\n   *      withholds the commitments rather than guess;\n   *   5. the node's terminator was truncated or malformed, so the server could\n   *      not read a commitment out of it at all.\n   * QueryService.GetVersion separates case 3 from the rest by reporting the\n   * server build. Cases 2, 4 and 5 are indistinguishable on the wire -- all of\n   * them mean \"the server declined to state a commitment for this slot\", and\n   * none of them is safe to read as a value.\n   *\n   * @generated from field: optional bytes compressed_state_root = 9;\n   */\n  compressedStateRoot?: Uint8Array | undefined;\n\n  /**\n   * The active-state hash as of this slot: exactly 32 bytes, computed over the\n   * live (uncompressed) account set together with this slot's block context.\n   *\n   * Sent only when the request set include_active_state_hash. The same five\n   * causes of absence as compressed_state_root apply.\n   *\n   * Note that this hash covers the block context, which itself contains the\n   * compressed-state root -- so it transitively commits to the value in\n   * compressed_state_root. Agreement between the two fields is therefore NOT\n   * an independent cross-check of either one.\n   *\n   * @generated from field: optional bytes active_state_hash = 10;\n   */\n  activeStateHash?: Uint8Array | undefined;\n};\n\n/**\n * Describes the message thru.services.v1.StreamSlotMetricsResponse.\n * Use `create(StreamSlotMetricsResponseSchema)` to create a new message.\n */\nexport const StreamSlotMetricsResponseSchema: GenMessage<StreamSlotMetricsResponse> = /*@__PURE__*/\n  messageDesc(file_thru_services_v1_streaming_service, 13);\n\n/**\n * StreamHeightRequest subscribes to real-time height updates.\n *\n * @generated from message thru.services.v1.StreamHeightRequest\n */\nexport type StreamHeightRequest = Message<\"thru.services.v1.StreamHeightRequest\"> & {\n};\n\n/**\n * Describes the message thru.services.v1.StreamHeightRequest.\n * Use `create(StreamHeightRequestSchema)` to create a new message.\n */\nexport const StreamHeightRequestSchema: GenMessage<StreamHeightRequest> = /*@__PURE__*/\n  messageDesc(file_thru_services_v1_streaming_service, 14);\n\n/**\n * StreamHeightResponse delivers height update events.\n *\n * @generated from message thru.services.v1.StreamHeightResponse\n */\nexport type StreamHeightResponse = Message<\"thru.services.v1.StreamHeightResponse\"> & {\n  /**\n   * @generated from field: uint64 finalized = 1;\n   */\n  finalized: bigint;\n\n  /**\n   * @generated from field: uint64 locally_executed = 2;\n   */\n  locallyExecuted: bigint;\n\n  /**\n   * @generated from field: uint64 cluster_executed = 3;\n   */\n  clusterExecuted: bigint;\n};\n\n/**\n * Describes the message thru.services.v1.StreamHeightResponse.\n * Use `create(StreamHeightResponseSchema)` to create a new message.\n */\nexport const StreamHeightResponseSchema: GenMessage<StreamHeightResponse> = /*@__PURE__*/\n  messageDesc(file_thru_services_v1_streaming_service, 15);\n\n/**\n * StreamNodeRecordsRequest subscribes to node record updates from the gossip network.\n *\n * @generated from message thru.services.v1.StreamNodeRecordsRequest\n */\nexport type StreamNodeRecordsRequest = Message<\"thru.services.v1.StreamNodeRecordsRequest\"> & {\n};\n\n/**\n * Describes the message thru.services.v1.StreamNodeRecordsRequest.\n * Use `create(StreamNodeRecordsRequestSchema)` to create a new message.\n */\nexport const StreamNodeRecordsRequestSchema: GenMessage<StreamNodeRecordsRequest> = /*@__PURE__*/\n  messageDesc(file_thru_services_v1_streaming_service, 16);\n\n/**\n * StreamNodeRecordsResponse delivers node record updates.\n *\n * @generated from message thru.services.v1.StreamNodeRecordsResponse\n */\nexport type StreamNodeRecordsResponse = Message<\"thru.services.v1.StreamNodeRecordsResponse\"> & {\n  /**\n   * @generated from oneof thru.services.v1.StreamNodeRecordsResponse.message\n   */\n  message: {\n    /**\n     * A node record (initial snapshot or update).\n     *\n     * @generated from field: thru.core.v1.NodeRecord record = 1;\n     */\n    value: NodeRecord;\n    case: \"record\";\n  } | {\n    /**\n     * Signals the initial batch of records is complete.\n     *\n     * @generated from field: bool finished = 2;\n     */\n    value: boolean;\n    case: \"finished\";\n  } | { case: undefined; value?: undefined };\n};\n\n/**\n * Describes the message thru.services.v1.StreamNodeRecordsResponse.\n * Use `create(StreamNodeRecordsResponseSchema)` to create a new message.\n */\nexport const StreamNodeRecordsResponseSchema: GenMessage<StreamNodeRecordsResponse> = /*@__PURE__*/\n  messageDesc(file_thru_services_v1_streaming_service, 17);\n\n/**\n * StreamingService serves server-streaming gRPC APIs for real-time data.\n *\n * @generated from service thru.services.v1.StreamingService\n */\nexport const StreamingService: GenService<{\n  /**\n   * @generated from rpc thru.services.v1.StreamingService.StreamBlocks\n   */\n  streamBlocks: {\n    methodKind: \"server_streaming\";\n    input: typeof StreamBlocksRequestSchema;\n    output: typeof StreamBlocksResponseSchema;\n  },\n  /**\n   * @generated from rpc thru.services.v1.StreamingService.StreamAccountUpdates\n   */\n  streamAccountUpdates: {\n    methodKind: \"server_streaming\";\n    input: typeof StreamAccountUpdatesRequestSchema;\n    output: typeof StreamAccountUpdatesResponseSchema;\n  },\n  /**\n   * @generated from rpc thru.services.v1.StreamingService.StreamTransactions\n   */\n  streamTransactions: {\n    methodKind: \"server_streaming\";\n    input: typeof StreamTransactionsRequestSchema;\n    output: typeof StreamTransactionsResponseSchema;\n  },\n  /**\n   * @generated from rpc thru.services.v1.StreamingService.StreamEvents\n   */\n  streamEvents: {\n    methodKind: \"server_streaming\";\n    input: typeof StreamEventsRequestSchema;\n    output: typeof StreamEventsResponseSchema;\n  },\n  /**\n   * @generated from rpc thru.services.v1.StreamingService.TrackTransaction\n   */\n  trackTransaction: {\n    methodKind: \"server_streaming\";\n    input: typeof TrackTransactionRequestSchema;\n    output: typeof TrackTransactionResponseSchema;\n  },\n  /**\n   * @generated from rpc thru.services.v1.StreamingService.StreamHeight\n   */\n  streamHeight: {\n    methodKind: \"server_streaming\";\n    input: typeof StreamHeightRequestSchema;\n    output: typeof StreamHeightResponseSchema;\n  },\n  /**\n   * Stream per-slot metrics including state counters, distributed fees\n   * (absent-block-producer + claimed) and -- on request -- the slot's state\n   * commitments. One message per slot terminator; see\n   * StreamSlotMetricsResponse for the delivery contract.\n   *\n   * @generated from rpc thru.services.v1.StreamingService.StreamSlotMetrics\n   */\n  streamSlotMetrics: {\n    methodKind: \"server_streaming\";\n    input: typeof StreamSlotMetricsRequestSchema;\n    output: typeof StreamSlotMetricsResponseSchema;\n  },\n  /**\n   * Stream node records from the gossip network.\n   * Returns an initial snapshot of all known records, followed by live updates.\n   *\n   * @generated from rpc thru.services.v1.StreamingService.StreamNodeRecords\n   */\n  streamNodeRecords: {\n    methodKind: \"server_streaming\";\n    input: typeof StreamNodeRecordsRequestSchema;\n    output: typeof StreamNodeRecordsResponseSchema;\n  },\n}> = /*@__PURE__*/\n  serviceDesc(file_thru_services_v1_streaming_service, 0);\n\n","export function copyBytes(source: Uint8Array): Uint8Array {\n    const bytes = new Uint8Array(source.length);\n    bytes.set(source);\n    return bytes;\n}\n\nexport function ensureExactLength(bytes: Uint8Array, expected: number): Uint8Array {\n    if (bytes.length !== expected) {\n        throw new Error(`Must contain ${expected} bytes`);\n    }\n    return copyBytes(bytes);\n}\n\nexport function bytesEqual(a: Uint8Array, b: Uint8Array): boolean {\n    if (a.length !== b.length) {\n        return false;\n    }\n    for (let i = 0; i < a.length; i++) {\n        if (a[i] !== b[i]) {\n            return false;\n        }\n    }\n    return true;\n}\n\nexport function bytesToHex(bytes: Uint8Array): string {\n    const hex: string[] = new Array(bytes.length);\n    for (let i = 0; i < bytes.length; i++) {\n        hex[i] = bytes[i].toString(16).padStart(2, \"0\");\n    }\n    return hex.join(\"\");\n}\n\nexport function bytesToBase64(bytes: Uint8Array): string {\n    const globalBuffer = typeof globalThis !== \"undefined\" ? (globalThis as any)?.Buffer : undefined;\n    if (globalBuffer) {\n        return globalBuffer.from(bytes).toString(\"base64\");\n    }\n    if (typeof btoa === \"function\") {\n        let binary = \"\";\n        for (let i = 0; i < bytes.length; i++) {\n            binary += String.fromCharCode(bytes[i]);\n        }\n        return btoa(binary);\n    }\n    throw new Error(\"Base64 encoding is not supported in this environment\");\n}\n\n","export const PUBKEY_LENGTH = 32;\nexport const SIGNATURE_LENGTH = 64;\nexport const TA_ADDRESS_LENGTH = 46;\nexport const TS_SIGNATURE_LENGTH = 90;\n\n","import { create } from \"@bufbuild/protobuf\";\nimport {\n    decodeAddress,\n    encodeAddress,\n    hexToBytes,\n    isHexString,\n} from \"@thru/sdk/helpers\";\n\nimport {\n    Pubkey as ProtoPubkey,\n    PubkeySchema,\n    TaPubkey,\n    TaPubkeySchema,\n} from \"@thru/sdk/proto\";\nimport {\n    bytesEqual,\n    bytesToHex,\n    copyBytes,\n    ensureExactLength,\n} from \"./byte-utils\";\nimport { PUBKEY_LENGTH, TA_ADDRESS_LENGTH } from \"./constants\";\n\nexport type PubkeyInput = Uint8Array | string | Pubkey;\n\nexport class Pubkey {\n  private readonly bytes: Uint8Array;\n\n  private constructor(bytes: Uint8Array) {\n    this.bytes = bytes;\n  }\n\n  static from(value: PubkeyInput): Pubkey {\n    if (value instanceof Pubkey) {\n      return value;\n    }\n    if (value instanceof Uint8Array) {\n      return new Pubkey(ensureExactLength(value, PUBKEY_LENGTH));\n    }\n    if (typeof value === \"string\") {\n      return new Pubkey(Pubkey.bytesFromString(value));\n    }\n    throw new Error(\n      `Must be provided as Uint8Array, hex string, or ta-address`\n    );\n  }\n\n\n\n  static isThruFmt(value: string): boolean {\n    return value.startsWith(\"ta\") && value.length === TA_ADDRESS_LENGTH;\n  }\n\n  toBytes(): Uint8Array {\n    return copyBytes(this.bytes);\n  }\n\n  toBytesUnsafe(): Uint8Array {\n    return this.bytes;\n  }\n\n  toThruFmt(): string {\n    return encodeAddress(this.bytes);\n  }\n\n  toHex(): string {\n    return bytesToHex(this.bytes);\n  }\n\n  equals(other: PubkeyInput): boolean {\n    const candidate = Pubkey.from(other);\n    return bytesEqual(this.bytes, candidate.bytes);\n  }\n\n  toProtoPubkey(): ProtoPubkey {\n    return create(PubkeySchema, { value: this.toBytes() });\n  }\n\n  toProtoTaPubkey(): TaPubkey {\n    return create(TaPubkeySchema, { value: this.toThruFmt() });\n  }\n\n  static fromProtoPubkey(proto?: ProtoPubkey): Pubkey {\n    if (!proto?.value) {\n      throw new Error(`Proto is missing value`);\n    }\n    return new Pubkey(ensureExactLength(proto.value, PUBKEY_LENGTH));\n  }\n\n  static fromProtoTaPubkey(proto?: TaPubkey): Pubkey {\n    if (!proto?.value) {\n      throw new Error(`Proto is missing value`);\n    }\n    return new Pubkey(ensureExactLength(decodeAddress(proto.value), PUBKEY_LENGTH));\n  }\n\n  private static bytesFromString(value: string): Uint8Array {\n    if (Pubkey.isThruFmt(value)) {\n        return ensureExactLength(decodeAddress(value), PUBKEY_LENGTH);\n      }\n    if (isHexString(value)) {\n      return ensureExactLength(hexToBytes(value), PUBKEY_LENGTH);\n    }\n    throw new Error(`Must be provided as hex string or ta-address`);\n  }\n}\n","import { create } from \"@bufbuild/protobuf\";\nimport {\n    decodeSignature,\n    encodeSignature,\n    hexToBytes,\n    isHexString\n} from \"@thru/sdk/helpers\";\n\nimport {\n    Signature as ProtoSignature,\n    SignatureSchema,\n    TsSignature,\n    TsSignatureSchema,\n} from \"@thru/sdk/proto\";\nimport {\n    bytesEqual,\n    bytesToHex,\n    copyBytes,\n    ensureExactLength,\n} from \"./byte-utils\";\nimport { SIGNATURE_LENGTH, TS_SIGNATURE_LENGTH } from \"./constants\";\n\nexport type SignatureInput = Uint8Array | string | Signature;\n\nexport class Signature {\n  private readonly bytes: Uint8Array;\n\n  private constructor(bytes: Uint8Array) {\n    this.bytes = bytes;\n  }\n\n  static from(value: SignatureInput): Signature {\n    if (value instanceof Signature) {\n      return value;\n    }\n    if (value instanceof Uint8Array) {\n      return new Signature(ensureExactLength(value, SIGNATURE_LENGTH));\n    }\n    if (typeof value === \"string\") {\n      return new Signature(Signature.bytesFromString(value));\n    }\n    throw new Error(\n      `Must be provided as Uint8Array, ts-encoded string, hex string, or base64 string`\n    );\n  }\n\n  static fromProto(proto?: ProtoSignature): Signature {\n    if (!proto?.value) {\n      throw new Error(`Proto is missing value`);\n    }\n    return new Signature(ensureExactLength(proto.value, SIGNATURE_LENGTH));\n  }\n\n\n\n  static isThruFmt(value: string): boolean {\n    return value.startsWith(\"ts\") && value.length === TS_SIGNATURE_LENGTH;\n  }\n\n  toBytes(): Uint8Array {\n    return copyBytes(this.bytes);\n  }\n\n  toBytesUnsafe(): Uint8Array {\n    return this.bytes;\n  }\n\n  toThruFmt(): string {\n    return encodeSignature(this.bytes);\n  }\n\n  toHex(): string {\n    return bytesToHex(this.bytes);\n  }\n\n  equals(other: SignatureInput): boolean {\n    const candidate = Signature.from(other);\n    return bytesEqual(this.bytes, candidate.bytes);\n  }\n\n  toProtoSignature(): ProtoSignature {\n    return create(SignatureSchema, { value: this.toBytes() });\n  }\n  toProtoTsSignature(): TsSignature {\n    return create(TsSignatureSchema, { value: this.toThruFmt() });\n  }\n\n  static fromProtoTsSignature(proto?: TsSignature): Signature {\n    if (!proto?.value) {\n      throw new Error(`Proto is missing value`);\n    }\n    return new Signature(ensureExactLength(decodeSignature(proto.value), SIGNATURE_LENGTH));\n  }\n\n  static fromProtoSignature(proto?: ProtoSignature): Signature {\n    if (!proto?.value) {\n      throw new Error(`Proto is missing value`);\n    }\n    return new Signature(ensureExactLength(proto.value, SIGNATURE_LENGTH));\n  }\n\n  private static bytesFromString(value: string): Uint8Array {\n    if (Signature.isThruFmt(value)) {\n      return ensureExactLength(decodeSignature(value), SIGNATURE_LENGTH);\n    }\n    if (isHexString(value)) {\n      return ensureExactLength(hexToBytes(value), SIGNATURE_LENGTH);\n    }\n    throw new Error(`Must be provided as ts-encoded string or hex string`);\n  }\n}\n","import { create } from \"@bufbuild/protobuf\";\n\nimport {\n    ConsensusStatus,\n    CurrentVersionSchema,\n    VersionContextSchema,\n    AccountView,\n    BlockView,\n    TransactionView\n} from \"@thru/sdk/proto\";\n\nexport const DEFAULT_HOST = \"https://rpc.alphanet.thru.org\";\n\nexport const DEFAULT_ACCOUNT_VIEW = AccountView.FULL;\nexport const DEFAULT_BLOCK_VIEW = BlockView.FULL;\nexport const DEFAULT_TRANSACTION_VIEW = TransactionView.FULL;\nexport const DEFAULT_MIN_CONSENSUS = ConsensusStatus.UNSPECIFIED;\nexport const DEFAULT_VERSION_CONTEXT = create(VersionContextSchema, {\n    version: {\n        case: \"current\",\n        value: create(CurrentVersionSchema, {}),\n    },\n});\n\nexport const DEFAULT_FEE = 1n;\nexport const DEFAULT_COMPUTE_UNITS = 0;\nexport const DEFAULT_STATE_UNITS = 0;\nexport const DEFAULT_MEMORY_UNITS = 0;\nexport const DEFAULT_EXPIRY_AFTER = 100;\n","import { Point, etc, hashes, utils } from \"@noble/ed25519\";\nimport { sha512 } from \"@noble/hashes/sha2.js\";\nimport { sha256 } from \"@noble/hashes/sha2.js\";\n\nhashes.sha512 = sha512;\n\n/**\n * Standardized Thru Ed25519 signing: RFC-8032 Ed25519 over a domain-separated\n * message M = DST_domain ‖ context, DST being a fixed 16-byte ASCII tag. This\n * is byte-identical to any stock Ed25519 signer over M (HSM/MPC/SDK), which is\n * exactly what a bring-your-own-signer custody partner (e.g. one using a TSM)\n * needs. See specs/mpc-hsm-signer-design.md §4.1.\n */\n/**\n * Signing domain -- byte-for-byte in step with `tn_signature_domain_t` in\n * `src/thru/util/tn_signature.h` (values must not be reordered).\n */\nexport enum SignatureDomain {\n    TXN = 0,\n    BLOCK_HEADER = 1,\n    BLOCK = 2,\n    GOSSIP = 3,\n    NODE_RECORD = 4,\n    EOA_CREATE = 5,\n    EOA_DELETE = 6,\n    /** Generic user / wallet message signing (see {@link signMessage}). */\n    MSG = 7,\n}\n\nconst SIGNATURE_SIZE = 64;\nconst PUBKEY_SIZE = 32;\nconst DST_SIZE = 16;\n\n/**\n * Fixed 16-byte ASCII domain-separation tags. Where the version suffix is\n * shorter than the tag width, the tag is padded with trailing '_' rather\n * than zero-digits (e.g. \"v1__\" instead of \"v001\"). TypeScript mirror of the\n * C `tn_signature_dst_table[]` in `src/thru/util/tn_signature.c` -- keep in\n * step across all four language bindings.\n */\nconst DOMAIN_DST: Record<SignatureDomain, Uint8Array> = {\n    [SignatureDomain.TXN]:          new TextEncoder().encode(\"tn_txn_sign_v1__\"),\n    [SignatureDomain.BLOCK_HEADER]: new TextEncoder().encode(\"tn_blkhdr_sig_v1\"),\n    [SignatureDomain.BLOCK]:        new TextEncoder().encode(\"tn_block_sig_v1_\"),\n    [SignatureDomain.GOSSIP]:       new TextEncoder().encode(\"tn_gossip_sig_v1\"),\n    [SignatureDomain.NODE_RECORD]:  new TextEncoder().encode(\"tn_node_rec_v1__\"),\n    [SignatureDomain.EOA_CREATE]:   new TextEncoder().encode(\"tn_eoa_create_v1\"),\n    [SignatureDomain.EOA_DELETE]:   new TextEncoder().encode(\"tn_eoa_delete_v1\"),\n    [SignatureDomain.MSG]:          new TextEncoder().encode(\"tn_msg_sign_v1__\"),\n};\n\n/**\n * Fresh copy of the 16-byte ASCII DST for `domain`.  Callers building `M`\n * outside of {@link signWithDomain} (e.g. the EOA authorization builders)\n * should source the tag through this accessor rather than duplicating string\n * literals.\n */\nexport function signatureDomainDST(domain: SignatureDomain): Uint8Array {\n    const dst = DOMAIN_DST[domain];\n    if (dst === undefined) {\n        throw new Error(`Invalid signature domain: ${domain}`);\n    }\n    return copyBytes(dst);\n}\n\n/** p = 2^255 - 19, little-endian. */\nconst P_LE = Uint8Array.from([\n    0xed, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,\n    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f,\n]);\n\nfunction copyBytes(bytes: Uint8Array): Uint8Array {\n    const out = new Uint8Array(bytes.length);\n    out.set(bytes);\n    return out;\n}\n\nfunction concatBytes(...arrays: Uint8Array[]): Uint8Array {\n    return etc.concatBytes(...arrays);\n}\n\nfunction sha512Bytes(bytes: Uint8Array): Uint8Array {\n    return new Uint8Array(sha512(bytes));\n}\n\nfunction bytesToNumberLE(bytes: Uint8Array): bigint {\n    let value = 0n;\n    for (let i = 0; i < bytes.length; i++) {\n        value += BigInt(bytes[i]) << (8n * BigInt(i));\n    }\n    return value;\n}\n\nfunction modOrder(value: bigint): bigint {\n    const modulus = Point.CURVE().n;\n    const result = value % modulus;\n    return result >= 0n ? result : result + modulus;\n}\n\n// noble's safe `multiply` rejects a 0 scalar; C/Rust/Go treat [0]·P as the\n// identity and evaluate the (cofactorless) equation, so substitute Point.ZERO\n// for a 0 scalar to keep the accept/reject set byte-identical across languages.\nfunction mulBase(scalar: bigint): Point {\n    return scalar === 0n ? Point.ZERO : Point.BASE.multiply(scalar);\n}\nfunction mulPoint(p: Point, scalar: bigint): Point {\n    return scalar === 0n ? Point.ZERO : p.multiply(scalar);\n}\n\nfunction numberToBytesLE(value: bigint, length: number): Uint8Array {\n    const out = new Uint8Array(length);\n    let current = value;\n    for (let i = 0; i < length; i++) {\n        out[i] = Number(current & 0xffn);\n        current >>= 8n;\n    }\n    return out;\n}\n\n/** A 32-byte little-endian point encoding is canonical iff y (sign bit masked) < p. */\nfunction encIsCanonical(enc: Uint8Array): boolean {\n    if (enc.length !== PUBKEY_SIZE) return false;\n    const y = copyBytes(enc);\n    y[31] &= 0x7f;\n    for (let i = 31; i >= 0; i--) {\n        if (y[i] !== P_LE[i]) return y[i] < P_LE[i];\n    }\n    return false; // y == p is non-canonical\n}\n\n/** M = DST_domain ‖ context. TXN context is SHA-256(message); else message. */\nexport function buildSignedMessage(message: Uint8Array, domain: SignatureDomain): Uint8Array {\n    const dst = DOMAIN_DST[domain];\n    if (dst === undefined || dst.length !== DST_SIZE) {\n        throw new Error(`Invalid signature domain: ${domain}`);\n    }\n    if (domain === SignatureDomain.TXN) {\n        return concatBytes(dst, new Uint8Array(sha256(message)));\n    }\n    return concatBytes(dst, copyBytes(message));\n}\n\n/**\n * Sign M = DST_domain ‖ context with standard RFC-8032 Ed25519.\n */\nexport async function signWithDomain(\n    message: Uint8Array,\n    privateKey: Uint8Array,\n    publicKey?: Uint8Array,\n    domain: SignatureDomain = SignatureDomain.TXN,\n): Promise<Uint8Array> {\n    if (privateKey.length !== PUBKEY_SIZE) {\n        throw new Error(\"Private key must contain 32 bytes\");\n    }\n\n    const m = buildSignedMessage(message, domain);\n    const extended = utils.getExtendedPublicKey(privateKey);\n    // Sign with the public key derived from the seed. If a public key is\n    // supplied it must match the derived one (byte-identical across langs;\n    // a mismatched keypair is a hard error, not an unverifiable signature).\n    const publicKeyBytes = extended.pointBytes;\n    if (publicKey !== undefined) {\n        if (publicKey.length !== PUBKEY_SIZE) {\n            throw new Error(\"Public key must contain 32 bytes\");\n        }\n        let eq = true;\n        for (let i = 0; i < PUBKEY_SIZE; i++) {\n            if (publicKey[i] !== publicKeyBytes[i]) {\n                eq = false;\n                break;\n            }\n        }\n        if (!eq) {\n            throw new Error(\"Public key does not match private key\");\n        }\n    }\n\n    const rInput = concatBytes(extended.prefix, m);\n    const r = modOrder(bytesToNumberLE(sha512Bytes(rInput)));\n    const R = mulBase(r).toBytes();\n\n    const kInput = concatBytes(R, publicKeyBytes, m);\n    const k = modOrder(bytesToNumberLE(sha512Bytes(kInput)));\n\n    const s = modOrder(r + k * extended.scalar);\n    const signature = new Uint8Array(SIGNATURE_SIZE);\n    signature.set(R, 0);\n    signature.set(numberToBytesLE(s, PUBKEY_SIZE), PUBKEY_SIZE);\n    return signature;\n}\n\n/**\n * Strict/canonical verification: reject non-canonical A/R encodings, small-order\n * A/R, and non-canonical S, then the cofactorless equation [S]B == R + [k]A over\n * M = DST_domain ‖ context. Matches the C/Rust/Go strict policy.\n */\nexport async function verifyWithDomain(\n    signature: Uint8Array,\n    message: Uint8Array,\n    publicKey: Uint8Array,\n    domain: SignatureDomain = SignatureDomain.TXN,\n): Promise<boolean> {\n    if (signature.length !== SIGNATURE_SIZE || publicKey.length !== PUBKEY_SIZE) {\n        return false;\n    }\n    const rBytes = signature.subarray(0, PUBKEY_SIZE);\n    if (!encIsCanonical(publicKey) || !encIsCanonical(rBytes)) {\n        return false;\n    }\n    const s = bytesToNumberLE(signature.subarray(PUBKEY_SIZE));\n    if (s >= Point.CURVE().n) {\n        return false; // canonical S\n    }\n\n    let R: Point;\n    let A: Point;\n    try {\n        R = Point.fromBytes(rBytes);\n        A = Point.fromBytes(publicKey);\n    } catch {\n        return false;\n    }\n    // reject small-order A / R (order divides 8)\n    if (R.clearCofactor().is0() || A.clearCofactor().is0()) {\n        return false;\n    }\n\n    const m = buildSignedMessage(message, domain);\n    const kInput = concatBytes(rBytes, publicKey, m);\n    const k = modOrder(bytesToNumberLE(sha512Bytes(kInput)));\n\n    // cofactorless: [S]B == R + [k]A. Zero scalars (S=0 / k=0) are evaluated via\n    // Point.ZERO (not thrown/rejected), matching C/Rust/Go exactly.\n    const lhs = mulBase(s);\n    const rhs = R.add(mulPoint(A, k));\n    return lhs.add(rhs.negate()).is0();\n}\n\n/**\n * Low-level verify-before-attach primitive: verifies `signature` over\n * `M = buildSignedMessage(message, domain)` for `publicKey` under the\n * strict/canonical policy, then returns a fresh copy of the signature bytes.\n *\n * This primitive trusts the caller to pass the correct `publicKey` and `domain`;\n * for transactions prefer {@link buildTransactionSigningMessage} +\n * {@link attachTransactionSignature}, which derive the expected fee-payer from\n * the body and fix the domain so those cannot be mismatched.\n */\nexport async function attachSignature(\n    signature: Uint8Array,\n    message: Uint8Array,\n    publicKey: Uint8Array,\n    domain: SignatureDomain = SignatureDomain.TXN,\n): Promise<Uint8Array> {\n    // Snapshot every caller-owned input synchronously up front to eliminate any\n    // TOCTOU window: a caller that mutates `signature`/`message`/`publicKey` after\n    // the call but before the async verify resolves cannot change what was\n    // verified or what is returned.\n    const sigSnapshot = copyBytes(signature);\n    const msgSnapshot = copyBytes(message);\n    const keySnapshot = copyBytes(publicKey);\n    if (!(await verifyWithDomain(sigSnapshot, msgSnapshot, keySnapshot, domain))) {\n        throw new Error(\"attachSignature: signature does not verify for the expected key\");\n    }\n    return sigSnapshot;\n}\n\n/** Byte offset of the fee-payer public key within a transaction body header. */\nconst TXN_FEE_PAYER_OFFSET = 48;\n/** Length of the fixed transaction wire header — the minimum body length. */\nconst TXN_HEADER_SIZE = 112;\n\n/**\n * An opaque, frozen transaction signing message. Its state lives in genuinely\n * private (`#`) fields set once at construction from a *copied* body, so it\n * cannot be structurally forged and its bytes cannot be mutated by a caller.\n * The fee-payer key is derived from the body (never independent caller input),\n * and {@link TransactionSigningMessage.attach} re-verifies against that private\n * body — so neither a hand-rolled message nor a post-build mutation can steer the\n * accepted key or desync the signature.\n */\nexport class TransactionSigningMessage {\n    readonly #m: Uint8Array;\n    readonly #expectedPublicKey: Uint8Array;\n    readonly #body: Uint8Array;\n\n    private constructor(body: Uint8Array) {\n        if (body.length < TXN_HEADER_SIZE) {\n            throw new Error(\n                `TransactionSigningMessage: body ${body.length} bytes is shorter than the ${TXN_HEADER_SIZE}-byte header`,\n            );\n        }\n        // Copy the body so later mutation of the caller's buffer cannot affect us.\n        this.#body = copyBytes(body);\n        this.#expectedPublicKey = this.#body.slice(\n            TXN_FEE_PAYER_OFFSET,\n            TXN_FEE_PAYER_OFFSET + PUBKEY_SIZE,\n        );\n        this.#m = buildSignedMessage(this.#body, SignatureDomain.TXN);\n    }\n\n    /**\n     * Build from a transaction body (wire bytes before the trailing signature).\n     * The expected key is the fee-payer taken from the body header (offset 48),\n     * *not* an independent argument — so a caller cannot pair a body owned by\n     * fee-payer A with a signer for key B and produce a locally-\"valid\" signature\n     * the chain then rejects. Throws if `body` is shorter than the wire header.\n     */\n    static fromBody(body: Uint8Array): TransactionSigningMessage {\n        return new TransactionSigningMessage(body);\n    }\n\n    /** The exact 48 bytes `M = DST_TXN ‖ SHA-256(body)` to hand the HSM/MPC. */\n    get m(): Uint8Array {\n        return copyBytes(this.#m);\n    }\n    /** The fee-payer public key the signature must verify under (from the body). */\n    get expectedPublicKey(): Uint8Array {\n        return copyBytes(this.#expectedPublicKey);\n    }\n    /** Immutable snapshot of the transaction body. */\n    get body(): Uint8Array {\n        return copyBytes(this.#body);\n    }\n\n    /**\n     * Verify an externally-produced signature over `M` for the body's fee-payer\n     * under the strict/canonical policy, then return the complete signed\n     * transaction wire (`body ‖ sig`) as a fresh buffer. The signature is copied\n     * up front (no TOCTOU), and verification/assembly use the private body — so a\n     * wrong-key or garbage signature fails locally, not on chain.\n     */\n    async attach(signature: Uint8Array): Promise<Uint8Array> {\n        if (signature.length !== SIGNATURE_SIZE) {\n            throw new Error(\"attach: signature must be 64 bytes\");\n        }\n        const sigSnapshot = copyBytes(signature);\n        if (\n            !(await verifyWithDomain(\n                sigSnapshot,\n                this.#body,\n                this.#expectedPublicKey,\n                SignatureDomain.TXN,\n            ))\n        ) {\n            throw new Error(\"attach: signature does not verify for the transaction fee-payer\");\n        }\n        const signed = new Uint8Array(this.#body.length + SIGNATURE_SIZE);\n        signed.set(this.#body, 0);\n        signed.set(sigSnapshot, this.#body.length);\n        return signed;\n    }\n}\n\n/**\n * Bring-your-own-signer surface (e.g. a custody partner via a Builder Vault TSM):\n *\n *   const msg    = buildTransactionSigningMessage(body);   // derives fee-payer\n *   const sig    = await tsm.sign(msg.m);                  // stock Ed25519 over M\n *   const signed = await attachTransactionSignature(msg, sig);  // body ‖ sig\n *\n * Thin free-function wrappers over {@link TransactionSigningMessage} for parity\n * with the Rust `signer` surface.\n */\nexport function buildTransactionSigningMessage(body: Uint8Array): TransactionSigningMessage {\n    return TransactionSigningMessage.fromBody(body);\n}\nexport function attachTransactionSignature(\n    message: TransactionSigningMessage,\n    signature: Uint8Array,\n): Promise<Uint8Array> {\n    return message.attach(signature);\n}\n\n/**\n * Sign a generic user / wallet message under {@link SignatureDomain.MSG}.\n * Distinct DST from txn / block / node record / EOA authorizations, so a\n * signature produced by a wallet's \"sign message\" flow can never be replayed\n * as any of them.\n */\nexport function signMessage(\n    message: Uint8Array,\n    privateKey: Uint8Array,\n    publicKey?: Uint8Array,\n): Promise<Uint8Array> {\n    return signWithDomain(message, privateKey, publicKey, SignatureDomain.MSG);\n}\n\n/** Verify a generic user / wallet message signature produced by {@link signMessage}. */\nexport function verifyMessage(\n    signature: Uint8Array,\n    message: Uint8Array,\n    publicKey: Uint8Array,\n): Promise<boolean> {\n    return verifyWithDomain(signature, message, publicKey, SignatureDomain.MSG);\n}\n","/**\n * Legacy (pre-RFC-8032) Thru Ed25519 signing/verification.\n *\n * This is the domain-separated scheme used BEFORE the commit that standardized\n * signing to RFC-8032 with per-domain DST: the domain is mixed *inside* the hash\n * as a 128-byte block (an 8-byte big-endian tag padded with zeros), i.e.\n *   r = H(domain_block ‖ prefix ‖ msg)\n *   k = H(domain_block ‖ R ‖ A ‖ msg)\n *   S = (r + k·scalar) mod L\n * rather than signing `M = DST ‖ context` with a stock Ed25519 signer.\n *\n * It is preserved verbatim so a downstream fork on its own upgrade path can keep\n * the old wire behavior. It is intentionally NOT the current scheme — new code\n * must use the exports from `./domain-signing` (`buildSignedMessage`,\n * `signWithDomain`, `verifyWithDomain`, `TransactionSigningMessage`, …).\n * Signatures produced here are NOT interchangeable with the current scheme.\n *\n * Exposed from the SDK as the `legacySigning` namespace, so these names do not\n * collide with the current `signWithDomain` / `verifyWithDomain` / `SignatureDomain`.\n */\nimport { Point, etc, hashes, utils } from \"@noble/ed25519\";\nimport { sha512 } from \"@noble/hashes/sha2.js\";\n\nhashes.sha512 = sha512;\n\n/**\n * Signature domain types matching the C implementation.\n */\nexport enum SignatureDomain {\n    TXN = 0,          /* Transaction */\n    BLOCK_HEADER = 1, /* Block header */\n    BLOCK = 2,        /* Block */\n    GOSSIP = 3,      /* Gossip */\n}\n\n/**\n * Domain tag values matching the C implementation.\n */\nconst DOMAIN_TAGS: Record<SignatureDomain, bigint> = {\n    [SignatureDomain.TXN]: 1n,\n    [SignatureDomain.BLOCK_HEADER]: 2n,\n    [SignatureDomain.BLOCK]: 3n,\n    [SignatureDomain.GOSSIP]: 4n,\n};\n\n/**\n * Size of domain block (128 bytes = SHA-512 block size)\n */\nconst DOMAIN_BLOCK_SIZE = 128;\nconst SIGNATURE_SIZE = 64;\nconst PUBKEY_SIZE = 32;\n\n/**\n * Creates a domain block: 8-byte tag (big-endian) + 120 bytes of zeros = 128 bytes\n */\nfunction createDomainBlock(domain: SignatureDomain): Uint8Array {\n    const block = new Uint8Array(DOMAIN_BLOCK_SIZE);\n    block.fill(0);\n\n    const tag = DOMAIN_TAGS[domain];\n    if (tag === undefined) {\n        throw new Error(`Invalid signature domain: ${domain}`);\n    }\n\n    // Write tag as big-endian 8-byte value\n    const view = new DataView(block.buffer, block.byteOffset, block.byteLength);\n    view.setBigUint64(0, tag, false); // false = big-endian\n\n    return block;\n}\n\nfunction copyBytes(bytes: Uint8Array): Uint8Array {\n    const out = new Uint8Array(bytes.length);\n    out.set(bytes);\n    return out;\n}\n\nfunction concatBytes(...arrays: Uint8Array[]): Uint8Array {\n    return etc.concatBytes(...arrays);\n}\n\nfunction sha512Bytes(bytes: Uint8Array): Uint8Array {\n    return new Uint8Array(sha512(bytes));\n}\n\nfunction bytesToNumberLE(bytes: Uint8Array): bigint {\n    let value = 0n;\n    for (let i = 0; i < bytes.length; i++) {\n        value += BigInt(bytes[i]) << (8n * BigInt(i));\n    }\n    return value;\n}\n\nfunction modOrder(value: bigint): bigint {\n    const modulus = Point.CURVE().n;\n    const result = value % modulus;\n    return result >= 0n ? result : result + modulus;\n}\n\nfunction numberToBytesLE(value: bigint, length: number): Uint8Array {\n    const out = new Uint8Array(length);\n    let current = value;\n    for (let i = 0; i < length; i++) {\n        out[i] = Number(current & 0xffn);\n        current >>= 8n;\n    }\n    return out;\n}\n\n/**\n * Domain-separated Ed25519 signing that matches the Rust/C implementation:\n * r = H(domain || prefix || msg)\n * k = H(domain || R || A || msg)\n * S = (r + k * scalar) mod L\n */\nexport async function signWithDomain(\n    message: Uint8Array,\n    privateKey: Uint8Array,\n    publicKey?: Uint8Array,\n    domain: SignatureDomain = SignatureDomain.TXN,\n): Promise<Uint8Array> {\n    if (privateKey.length !== PUBKEY_SIZE) {\n        throw new Error(\"Private key must contain 32 bytes\");\n    }\n\n    const domainBlock = createDomainBlock(domain);\n    const messageBytes = copyBytes(message);\n    const extended = utils.getExtendedPublicKey(privateKey);\n    const publicKeyBytes = publicKey ? copyBytes(publicKey) : extended.pointBytes;\n    if (publicKeyBytes.length !== PUBKEY_SIZE) {\n        throw new Error(\"Public key must contain 32 bytes\");\n    }\n\n    const rInput = concatBytes(domainBlock, extended.prefix, messageBytes);\n    const r = modOrder(bytesToNumberLE(sha512Bytes(rInput)));\n    const R = Point.BASE.multiply(r).toBytes();\n\n    const kInput = concatBytes(domainBlock, R, publicKeyBytes, messageBytes);\n    const k = modOrder(bytesToNumberLE(sha512Bytes(kInput)));\n\n    const s = modOrder(r + k * extended.scalar);\n    const signature = new Uint8Array(SIGNATURE_SIZE);\n    signature.set(R, 0);\n    signature.set(numberToBytesLE(s, PUBKEY_SIZE), PUBKEY_SIZE);\n    return signature;\n}\n\n/**\n * Domain-separated Ed25519 verification matching the Rust/C implementation.\n */\nexport async function verifyWithDomain(\n    signature: Uint8Array,\n    message: Uint8Array,\n    publicKey: Uint8Array,\n    domain: SignatureDomain = SignatureDomain.TXN,\n): Promise<boolean> {\n    if (signature.length !== SIGNATURE_SIZE || publicKey.length !== PUBKEY_SIZE) {\n        return false;\n    }\n\n    const domainBlock = createDomainBlock(domain);\n    const messageBytes = copyBytes(message);\n    const rBytes = signature.subarray(0, PUBKEY_SIZE);\n    const s = bytesToNumberLE(signature.subarray(PUBKEY_SIZE));\n    if (s >= Point.CURVE().n) {\n        return false;\n    }\n\n    let R: Point;\n    let A: Point;\n    try {\n        R = Point.fromBytes(rBytes);\n        A = Point.fromBytes(publicKey);\n    } catch {\n        return false;\n    }\n\n    const kInput = concatBytes(domainBlock, rBytes, publicKey, messageBytes);\n    const k = modOrder(bytesToNumberLE(sha512Bytes(kInput)));\n\n    const lhs = Point.BASE.multiply(s);\n    const rhs = R.add(A.multiply(k));\n    return lhs.add(rhs.negate()).clearCofactor().is0();\n}\n","/**\n * Wire format constants for Thru Network protocol.\n * \n * These constants define the sizes and formats used in the binary wire protocol\n * for blocks and transactions. They match the Go implementation in\n * grpc/pkg/uds/message/block.go and grpc/pkg/crypto/transaction.go\n */\n\n// ============================================================================\n// Common Constants\n// ============================================================================\n\n/** Size of an Ed25519 signature in bytes */\nexport const SIGNATURE_SIZE = 64;\n\n/** Size of a public key/account address in bytes */\nexport const PUBKEY_SIZE = 32;\n\n/** Size of a hash in bytes */\nexport const HASH_SIZE = 32;\n\n// ============================================================================\n// Block Constants\n// ============================================================================\n\n/** Size of a block header in bytes (current format with weight_slot) */\nexport const BLOCK_HEADER_SIZE = 168;\n\n/** Size of a block header in bytes (legacy format without weight_slot, before Dec 2025) */\nexport const BLOCK_HEADER_SIZE_LEGACY = 160;\n\n/** Size of a block footer in bytes */\nexport const BLOCK_FOOTER_SIZE = 104;\n\n/** Block version 1 */\nexport const BLOCK_VERSION_V1 = 0x01;\n\n// ============================================================================\n// Transaction Constants\n// ============================================================================\n\n/**\n * Wire format (from tn_txn.h):\n *   [header (112 bytes)]\n *   [input_pubkeys (variable)]\n *   [instr_data (variable)]\n *   [state_proof (optional, variable)]\n *   [account_meta (optional, variable)]\n *   [fee_payer_signature (64 bytes at end)]\n */\n\n/** Size of a transaction header in bytes */\nexport const TXN_HEADER_BODY_SIZE = 112;\n\n/** Transaction version 1 */\nexport const TXN_VERSION_V1 = 0x01;\n\n/** Maximum number of accounts allowed in a transaction */\nexport const TXN_MAX_ACCOUNTS = 1024;\n\n/** Size of state proof header in bytes */\nexport const STATE_PROOF_HEADER_SIZE = 40;\n\n/** Size of account metadata footprint in bytes */\nexport const ACCOUNT_META_FOOTPRINT = 64;\n\n// ============================================================================\n// Transaction Flags\n// ============================================================================\n\n/** Flag indicating transaction has fee payer state proof */\nexport const TXN_FLAG_HAS_FEE_PAYER_PROOF = 1 << 0;\n\n/** Flag indicating account may be compressed */\nexport const TXN_FLAG_MAY_COMPRESS_ACCOUNT = 1 << 1;\n\n// ============================================================================\n// State Proof Types\n// ============================================================================\n\n/** State proof type: existing account */\nexport const STATE_PROOF_TYPE_EXISTING = 0;\n\n/** State proof type: updating account */\nexport const STATE_PROOF_TYPE_UPDATING = 1;\n\n/** State proof type: creating account */\nexport const STATE_PROOF_TYPE_CREATION = 2;\n\n","import { DEFAULT_STATE_UNITS } from \"../../defaults\";\nimport { signWithDomain, SignatureDomain } from \"./domain-signing\";\nimport * as legacySigning from \"./domain-signing-legacy\";\nimport {\n    TransactionVmError,\n    type Transaction as CoreTransaction,\n    type TransactionExecutionResult as CoreTransactionExecutionResult\n} from \"@thru/sdk/proto\";\nimport {\n    ACCOUNT_META_FOOTPRINT,\n    HASH_SIZE,\n    PUBKEY_SIZE,\n    SIGNATURE_SIZE,\n    STATE_PROOF_HEADER_SIZE,\n    STATE_PROOF_TYPE_CREATION,\n    STATE_PROOF_TYPE_EXISTING,\n    STATE_PROOF_TYPE_UPDATING,\n    TXN_FLAG_HAS_FEE_PAYER_PROOF,\n    TXN_FLAG_MAY_COMPRESS_ACCOUNT,\n    TXN_HEADER_BODY_SIZE,\n    TXN_MAX_ACCOUNTS,\n    TXN_VERSION_V1,\n} from \"../../wire-format\";\nimport { Pubkey, PubkeyInput, Signature } from \"../primitives\";\nimport type { OptionalProofs, TransactionAccountsInput, TransactionHeaderInput } from \"./types\";\n\nconst DEFAULT_FLAGS = 0;\nconst MAX_INSTRUCTION_DATA_LENGTH = 0xffff;\nconst BYTE_POPCOUNT = new Uint8Array(256).map((_value, index) => {\n    let v = index;\n    let count = 0;\n    while (v !== 0) {\n        count += v & 1;\n        v >>= 1;\n    }\n    return count;\n});\n\nexport interface TransactionExecutionEvent {\n    eventId: string;\n    callIdx: number;\n    programIdx: number;\n    program?: Pubkey;\n    payload: Uint8Array;\n}\n\nexport interface TransactionExecutionResultData {\n    consumedComputeUnits: number;\n    consumedMemoryUnits: number;\n    consumedStateUnits: number;\n    userErrorCode: bigint;\n    vmError: TransactionVmError;\n    executionResult: bigint;\n    pagesUsed: number;\n    eventsCount: number;\n    eventsSize: number;\n    readwriteAccounts: Pubkey[];\n    readonlyAccounts: Pubkey[];\n    events?: TransactionExecutionEvent[];\n    errorProgramAccIdx: number;\n    /**\n     * The nonce the runtime requires for the next transaction from this fee\n     * payer. Set only when `vmError` is a nonce reject (NONCE_TOO_LOW /\n     * NONCE_TOO_HIGH); undefined otherwise. A nonce reject does not advance the\n     * nonce, so retrying with this value is correct.\n     *\n     * Canonical at execution time, not necessarily on arrival: another\n     * transaction from the same fee payer may have landed since. Treat it as a\n     * correction to retry against, not a reservation.\n     */\n    feePayerExpectedNonce?: bigint;\n}\n\nexport class Transaction {\n    readonly version: number;\n    readonly feePayer: Pubkey;\n    readonly program: Pubkey;\n\n    readonly fee: bigint;\n    readonly nonce: bigint;\n    readonly startSlot: bigint;\n    readonly expiryAfter: number;\n    readonly chainId: number;\n\n    readonly requestedComputeUnits: number;\n    readonly requestedStateUnits: number;\n    readonly requestedMemoryUnits: number;\n    readonly flags: number;\n\n    readonly readWriteAccounts: Pubkey[];\n    readonly readOnlyAccounts: Pubkey[];\n\n    readonly instructionData?: Uint8Array;\n    readonly instructionDataSize?: number;\n    readonly feePayerStateProof?: Uint8Array;\n    readonly feePayerAccountMetaRaw?: Uint8Array;\n\n    executionResult?: TransactionExecutionResultData;\n    slot?: bigint;\n    blockOffset?: number;\n\n    private signature?: Signature;\n\n    constructor(params: {\n        version?: number;\n        feePayer: PubkeyInput;\n        program: PubkeyInput;\n        header: TransactionHeaderInput;\n        accounts?: TransactionAccountsInput;\n        instructionData?: Uint8Array;\n        instructionDataSize?: number;\n        proofs?: OptionalProofs;\n    }) {\n        this.version = params.version ?? TXN_VERSION_V1;\n        this.feePayer = Pubkey.from(params.feePayer);\n        this.program = Pubkey.from(params.program);\n\n        this.fee = params.header.fee;\n        this.nonce = params.header.nonce;\n        this.startSlot = params.header.startSlot;\n        this.expiryAfter = params.header.expiryAfter ?? 0;\n        this.chainId = params.header.chainId ?? 1;\n\n        this.requestedComputeUnits = params.header.computeUnits ?? 0;\n        this.requestedStateUnits = params.header.stateUnits ?? DEFAULT_STATE_UNITS;\n        this.requestedMemoryUnits = params.header.memoryUnits ?? 0;\n        this.flags = params.header.flags ?? DEFAULT_FLAGS;\n\n        this.readWriteAccounts = params.accounts?.readWriteAccounts\n            ? params.accounts.readWriteAccounts.map(Pubkey.from)\n            : [];\n        this.readOnlyAccounts = params.accounts?.readOnlyAccounts\n            ? params.accounts.readOnlyAccounts.map(Pubkey.from)\n            : [];\n\n        this.instructionData = params.instructionData ? new Uint8Array(params.instructionData) : undefined;\n        if (this.instructionData && this.instructionData.length > MAX_INSTRUCTION_DATA_LENGTH) {\n            throw new Error(`Instruction data exceeds maximum length (${MAX_INSTRUCTION_DATA_LENGTH} bytes)`);\n        }\n        this.instructionDataSize = params.instructionDataSize;\n\n        this.feePayerStateProof = params.proofs?.feePayerStateProof\n            ? new Uint8Array(params.proofs.feePayerStateProof)\n            : undefined;\n        this.feePayerAccountMetaRaw = params.proofs?.feePayerAccountMetaRaw\n            ? new Uint8Array(params.proofs.feePayerAccountMetaRaw)\n            : undefined;\n    }\n\n    static fromWire(data: Uint8Array): Transaction {\n        const { transaction, size } = Transaction.parseWire(data, { strict: true });\n        if (size !== data.length) {\n            throw new Error(\n                `Transaction body has trailing bytes: expected ${size} bytes but found ${data.length}`,\n            );\n        }\n        return transaction;\n    }\n\n    static parseWire(\n        data: Uint8Array,\n        options: { strict?: boolean } = {},\n    ): { transaction: Transaction; size: number } {\n        const strict = options.strict ?? false;\n        const view = new DataView(data.buffer, data.byteOffset, data.byteLength);\n\n        // Wire format (from tn_txn.h):\n        //   [header (112 bytes)]\n        //   [input_pubkeys (variable)]\n        //   [instr_data (variable)]\n        //   [state_proof (optional, variable)]\n        //   [account_meta (optional, variable)]\n        //   [fee_payer_signature (64 bytes at end)]\n\n        if (data.length < TXN_HEADER_BODY_SIZE) {\n            throw new Error(`Transaction data too short: ${data.length} bytes (minimum ${TXN_HEADER_BODY_SIZE})`);\n        }\n\n        let offset = 0;\n\n        const version = view.getUint8(offset);\n        offset += 1;\n        if (strict && version !== TXN_VERSION_V1) {\n            throw new Error(`Unsupported transaction version: ${version}`);\n        }\n\n        const flags = view.getUint8(offset);\n        offset += 1;\n        const invalidFlags = flags & ~(TXN_FLAG_HAS_FEE_PAYER_PROOF | TXN_FLAG_MAY_COMPRESS_ACCOUNT);\n        if (strict && invalidFlags !== 0) {\n            throw new Error(`Unsupported transaction flags: 0x${invalidFlags.toString(16).padStart(2, \"0\")}`);\n        }\n\n        const readwriteAccountsCount = view.getUint16(offset, true);\n        offset += 2;\n        const readonlyAccountsCount = view.getUint16(offset, true);\n        offset += 2;\n        const instructionDataSize = view.getUint16(offset, true);\n        offset += 2;\n        const requestedComputeUnits = view.getUint32(offset, true);\n        offset += 4;\n        const requestedStateUnits = view.getUint16(offset, true);\n        offset += 2;\n        const requestedMemoryUnits = view.getUint16(offset, true);\n        offset += 2;\n        const fee = view.getBigUint64(offset, true);\n        offset += 8;\n        const nonce = view.getBigUint64(offset, true);\n        offset += 8;\n        const startSlot = view.getBigUint64(offset, true);\n        offset += 8;\n        const expiryAfter = view.getUint32(offset, true);\n        offset += 4;\n        const chainId = view.getUint16(offset, true);\n        offset += 2;\n        offset += 2; // padding\n\n        Transaction.ensureAvailable(data.length, offset, PUBKEY_SIZE, \"fee payer account\");\n        const feePayer = data.slice(offset, offset + PUBKEY_SIZE);\n        offset += PUBKEY_SIZE;\n\n        Transaction.ensureAvailable(data.length, offset, PUBKEY_SIZE, \"program account\");\n        const program = data.slice(offset, offset + PUBKEY_SIZE);\n        offset += PUBKEY_SIZE;\n\n        // Verify header parsing completed at expected offset\n        if (offset !== TXN_HEADER_BODY_SIZE) {\n            throw new Error(`Transaction header parsing mismatch (expected offset ${TXN_HEADER_BODY_SIZE}, got ${offset})`);\n        }\n\n        const totalAccountCount = Number(readwriteAccountsCount + readonlyAccountsCount);\n        if (strict && totalAccountCount > TXN_MAX_ACCOUNTS) {\n            throw new Error(\n                `Transaction references ${totalAccountCount} accounts (maximum allowed ${TXN_MAX_ACCOUNTS})`,\n            );\n        }\n\n        // Calculate expected transaction size from header fields to handle\n        // parsing multiple transactions from a buffer\n        const accountsSize = totalAccountCount * PUBKEY_SIZE;\n        let expectedBodySize = accountsSize + instructionDataSize;\n\n        // If fee payer proof flag is set, we need to peek at the proof to get its size\n        // The state proof format has an 8-byte typeSlot (with proofType in bits 62-63)\n        // followed by a 32-byte pathBitset. The total size is calculated using popcount.\n        if ((flags & TXN_FLAG_HAS_FEE_PAYER_PROOF) !== 0) {\n            const proofOffset = TXN_HEADER_BODY_SIZE + accountsSize + instructionDataSize;\n            Transaction.ensureAvailable(data.length, proofOffset, STATE_PROOF_HEADER_SIZE, \"state proof header\");\n            const proofView = new DataView(data.buffer, data.byteOffset + proofOffset, STATE_PROOF_HEADER_SIZE);\n            const typeSlot = proofView.getBigUint64(0, true);\n            const proofType = Number((typeSlot >> 62n) & 0x3n);\n            const pathBitset = data.subarray(proofOffset + 8, proofOffset + 40);\n            const siblingCount = countSetBits(pathBitset);\n            const bodyCount = proofType + siblingCount;\n            const proofFootprint = STATE_PROOF_HEADER_SIZE + bodyCount * HASH_SIZE;\n            expectedBodySize += proofFootprint;\n            if (proofType === STATE_PROOF_TYPE_EXISTING) {\n                expectedBodySize += ACCOUNT_META_FOOTPRINT;\n            }\n        }\n\n        // Transaction size: header(112) + body + signature(64) at end\n        const txnSize = TXN_HEADER_BODY_SIZE + expectedBodySize + SIGNATURE_SIZE;\n        Transaction.ensureAvailable(data.length, 0, txnSize, \"full transaction\");\n        const sigStart = TXN_HEADER_BODY_SIZE + expectedBodySize;\n\n        const readWriteAccounts: Uint8Array[] = [];\n        for (let i = 0; i < readwriteAccountsCount; i++) {\n            Transaction.ensureAvailable(sigStart, offset, PUBKEY_SIZE, \"read-write accounts\");\n            readWriteAccounts.push(data.slice(offset, offset + PUBKEY_SIZE));\n            offset += PUBKEY_SIZE;\n        }\n\n        const readOnlyAccounts: Uint8Array[] = [];\n        for (let i = 0; i < readonlyAccountsCount; i++) {\n            Transaction.ensureAvailable(sigStart, offset, PUBKEY_SIZE, \"read-only accounts\");\n            readOnlyAccounts.push(data.slice(offset, offset + PUBKEY_SIZE));\n            offset += PUBKEY_SIZE;\n        }\n\n        let instructionData: Uint8Array | undefined;\n        if (instructionDataSize > 0) {\n            Transaction.ensureAvailable(sigStart, offset, instructionDataSize, \"instruction data\");\n            instructionData = data.slice(offset, offset + instructionDataSize);\n            offset += instructionDataSize;\n        }\n\n        let feePayerStateProof: Uint8Array | undefined;\n        let feePayerAccountMetaRaw: Uint8Array | undefined;\n\n        if ((flags & TXN_FLAG_HAS_FEE_PAYER_PROOF) !== 0) {\n            const { proofBytes, footprint, proofType } = Transaction.parseStateProof(data.subarray(offset, sigStart));\n            feePayerStateProof = proofBytes;\n            offset += footprint;\n\n            if (proofType === STATE_PROOF_TYPE_EXISTING) {\n                Transaction.ensureAvailable(sigStart, offset, ACCOUNT_META_FOOTPRINT, \"fee payer account metadata\");\n                feePayerAccountMetaRaw = data.slice(offset, offset + ACCOUNT_META_FOOTPRINT);\n                offset += ACCOUNT_META_FOOTPRINT;\n            }\n        }\n\n        // Verify we consumed all bytes before signature\n        if (offset !== sigStart) {\n            throw new Error(\n                `Transaction body has trailing bytes: expected ${sigStart} bytes consumed but found ${offset}`,\n            );\n        }\n\n        // Read signature from the end of the transaction\n        const signatureBytes = data.slice(sigStart, sigStart + SIGNATURE_SIZE);\n        const hasSignature = hasNonZeroBytes(signatureBytes);\n\n        const transaction = new Transaction({\n            version,\n            feePayer: Pubkey.from(feePayer),\n            program: Pubkey.from(program),\n            header: {\n                fee,\n                nonce,\n                startSlot,\n                expiryAfter,\n                chainId,\n                computeUnits: requestedComputeUnits,\n                stateUnits: requestedStateUnits,\n                memoryUnits: requestedMemoryUnits,\n                flags,\n            },\n            accounts: {\n                readWriteAccounts,\n                readOnlyAccounts,\n            },\n            instructionData,\n            instructionDataSize,\n            proofs:\n                feePayerStateProof || feePayerAccountMetaRaw\n                    ? {\n                          feePayerStateProof,\n                          feePayerAccountMetaRaw,\n                      }\n                    : undefined,\n        });\n\n        if (hasSignature) {\n            transaction.setSignature(Signature.from(signatureBytes));\n        }\n\n        return { transaction, size: txnSize };\n    }\n\n    static fromProto(proto: CoreTransaction): Transaction {\n        if (!proto.header) {\n            throw new Error(\"Transaction proto missing header\");\n        }\n\n        const header = proto.header;\n        const body = proto.body ? new Uint8Array(proto.body) : undefined;\n\n        let transaction: Transaction | undefined;\n\n        if (body && body.length > 0) {\n            try {\n                const { transaction: parsed } = this.parseWire(body, { strict: false });\n                transaction = parsed;\n            } catch (err) {\n                transaction = undefined;\n            }\n        }\n\n        if (!transaction) {\n            let parsed:\n                | {\n                      readWriteAccounts: Uint8Array[];\n                      readOnlyAccounts: Uint8Array[];\n                      instructionData?: Uint8Array;\n                      feePayerStateProof?: Uint8Array;\n                      feePayerAccountMetaRaw?: Uint8Array;\n                  }\n                | undefined;\n\n            if (body && body.length > 0) {\n                try {\n                    parsed = this.parseBodySections(\n                        body,\n                        header.readwriteAccountsCount ?? 0,\n                        header.readonlyAccountsCount ?? 0,\n                        header.instructionDataSize ?? 0,\n                        header.flags ?? DEFAULT_FLAGS,\n                    );\n                } catch (sectionErr) {\n                    if (body.length >= TXN_HEADER_BODY_SIZE) {\n                        parsed = this.parseBodySections(\n                            body.slice(TXN_HEADER_BODY_SIZE),\n                            header.readwriteAccountsCount ?? 0,\n                            header.readonlyAccountsCount ?? 0,\n                            header.instructionDataSize ?? 0,\n                            header.flags ?? DEFAULT_FLAGS,\n                        );\n                    } else {\n                        throw sectionErr;\n                    }\n                }\n            }\n\n            if (!parsed) {\n                parsed = {\n                    readWriteAccounts: [] as Uint8Array[],\n                    readOnlyAccounts: [] as Uint8Array[],\n                    instructionData: undefined,\n                    feePayerStateProof: undefined,\n                    feePayerAccountMetaRaw: undefined,\n                };\n            }\n\n            transaction = new Transaction({\n                version: header.version ?? TXN_VERSION_V1,\n                feePayer: Pubkey.fromProtoPubkey(header.feePayerPubkey),\n                program: Pubkey.fromProtoPubkey(header.programPubkey),\n                header: {\n                    fee: header.fee ?? 0n,\n                    nonce: header.nonce ?? 0n,\n                    startSlot: header.startSlot ?? 0n,\n                    expiryAfter: header.expiryAfter ?? 0,\n                    chainId: header.chainId ?? 1,\n                    computeUnits: header.requestedComputeUnits ?? 0,\n                    stateUnits: header.requestedStateUnits ?? 0,\n                    memoryUnits: header.requestedMemoryUnits ?? 0,\n                    flags: header.flags ?? DEFAULT_FLAGS,\n                },\n                accounts: {\n                    readWriteAccounts: parsed.readWriteAccounts,\n                    readOnlyAccounts: parsed.readOnlyAccounts,\n                },\n                instructionData: parsed.instructionData,\n                instructionDataSize: header.instructionDataSize,\n                proofs:\n                    parsed.feePayerStateProof || parsed.feePayerAccountMetaRaw\n                        ? {\n                              feePayerStateProof: parsed.feePayerStateProof,\n                              feePayerAccountMetaRaw: parsed.feePayerAccountMetaRaw,\n                          }\n                        : undefined,\n            });\n        }\n\n        const signatureBytes = proto.signature?.value ?? header.feePayerSignature?.value ?? undefined;\n        if (signatureBytes && signatureBytes.length === SIGNATURE_SIZE && hasNonZeroBytes(signatureBytes)) {\n            transaction.setSignature(Signature.from(signatureBytes));\n        }\n\n        if (proto.executionResult) {\n            transaction.executionResult = Transaction.executionResultFromProto(proto.executionResult);\n        }\n\n        if (proto.slot !== undefined) {\n            transaction.slot = proto.slot;\n        }\n        if (proto.blockOffset !== undefined) {\n            transaction.blockOffset = proto.blockOffset;\n        }\n\n        return transaction;\n    }\n\n    getSignature(): Signature | undefined {\n        return this.signature;\n    }\n\n    setSignature(signature: Signature): void {\n        this.signature = signature;\n    }\n\n    async sign(privateKey: Uint8Array): Promise<Signature> {\n        if (privateKey.length !== 32) {\n            throw new Error(\"Fee payer private key must contain 32 bytes\");\n        }\n        const payload = this.toWireForSigning();\n\n        const publicKey = this.feePayer.toBytes();\n        const signature = await signWithDomain(\n            payload,\n            privateKey,\n            publicKey,\n            SignatureDomain.TXN,\n        );\n        \n        if (signature.length !== SIGNATURE_SIZE) {\n            throw new Error(\"ed25519 signing produced an invalid signature\");\n        }\n        this.signature = Signature.from(signature);\n        return this.signature;\n    }\n\n    /**\n     * Sign using the pre-RFC-8032 Thru transaction scheme.\n     *\n     * This compatibility method is only for networks that have not completed\n     * the coordinated signing cutover. New integrations must use {@link sign}.\n     */\n    async legacySign(privateKey: Uint8Array): Promise<Signature> {\n        if (privateKey.length !== 32) {\n            throw new Error(\"Fee payer private key must contain 32 bytes\");\n        }\n        const payload = this.toWireForSigning();\n        const publicKey = this.feePayer.toBytes();\n        const signature = await legacySigning.signWithDomain(\n            payload,\n            privateKey,\n            publicKey,\n            legacySigning.SignatureDomain.TXN,\n        );\n\n        if (\n            signature.length !== SIGNATURE_SIZE ||\n            !(await legacySigning.verifyWithDomain(\n                signature,\n                payload,\n                publicKey,\n                legacySigning.SignatureDomain.TXN,\n            ))\n        ) {\n            throw new Error(\"legacy ed25519 signing produced an invalid signature\");\n        }\n        this.signature = Signature.from(signature);\n        return this.signature;\n    }\n\n    toWireForSigning(): Uint8Array {\n        const header = this.createHeader();\n        return this.buildWirePayload(new Uint8Array(header), false);\n    }\n\n    toWire(): Uint8Array {\n        const header = this.createHeader();\n        return this.buildWirePayload(new Uint8Array(header), true);\n    }\n\n    private createHeader(): ArrayBufferLike {\n        const buffer = new ArrayBuffer(TXN_HEADER_BODY_SIZE);\n        const headerBytes = new Uint8Array(buffer);\n        const view = new DataView(buffer);\n\n        let offset = 0;\n        view.setUint8(offset, this.version & 0xff);\n        offset += 1;\n\n        view.setUint8(offset, this.flags & 0xff);\n        offset += 1;\n\n        view.setUint16(offset, this.readWriteAccounts.length, true);\n        offset += 2;\n\n        view.setUint16(offset, this.readOnlyAccounts.length, true);\n        offset += 2;\n\n        const instructionDataLength = this.instructionData?.length ?? 0;\n        if (instructionDataLength > MAX_INSTRUCTION_DATA_LENGTH) {\n            throw new Error(`Instruction data exceeds maximum length (${MAX_INSTRUCTION_DATA_LENGTH} bytes)`);\n        }\n        view.setUint16(offset, instructionDataLength, true);\n        offset += 2;\n\n        view.setUint32(offset, ensureUint32(this.requestedComputeUnits), true);\n        offset += 4;\n\n        view.setUint16(offset, ensureUint16(this.requestedStateUnits), true);\n        offset += 2;\n\n        view.setUint16(offset, ensureUint16(this.requestedMemoryUnits), true);\n        offset += 2;\n\n        view.setBigUint64(offset, ensureBigUint64(this.fee), true);\n        offset += 8;\n\n        view.setBigUint64(offset, ensureBigUint64(this.nonce), true);\n        offset += 8;\n\n        view.setBigUint64(offset, ensureBigUint64(this.startSlot), true);\n        offset += 8;\n\n        view.setUint32(offset, ensureUint32(this.expiryAfter), true);\n        offset += 4;\n\n        view.setUint16(offset, ensureUint16(this.chainId), true);\n        offset += 2;\n\n        offset += 2; // padding\n\n        headerBytes.set(this.feePayer.toBytes(), offset);\n        offset += PUBKEY_SIZE;\n\n        headerBytes.set(this.program.toBytes(), offset);\n\n        return buffer;\n    }\n\n    private buildWirePayload(headerBytes: Uint8Array, includeSignature: boolean): Uint8Array {\n        const dynamicLength =\n            this.readWriteAccounts.length * PUBKEY_SIZE +\n            this.readOnlyAccounts.length * PUBKEY_SIZE +\n            (this.instructionData?.length ?? 0) +\n            (this.feePayerStateProof?.length ?? 0) +\n            (this.feePayerAccountMetaRaw?.length ?? 0);\n\n        const signatureLength = includeSignature ? SIGNATURE_SIZE : 0;\n\n        const result = new Uint8Array(headerBytes.length + dynamicLength + signatureLength);\n        result.set(headerBytes, 0);\n\n        let offset = headerBytes.length;\n        offset = appendAccountList(result, offset, this.readWriteAccounts.map(account => account.toBytes()));\n        offset = appendAccountList(result, offset, this.readOnlyAccounts.map(account => account.toBytes()));\n        if (this.instructionData) {\n            result.set(this.instructionData, offset);\n            offset += this.instructionData.length;\n        }\n        if (this.feePayerStateProof) {\n            result.set(this.feePayerStateProof, offset);\n            offset += this.feePayerStateProof.length;\n        }\n        if (this.feePayerAccountMetaRaw) {\n            result.set(this.feePayerAccountMetaRaw, offset);\n            offset += this.feePayerAccountMetaRaw.length;\n        }\n\n        // Append signature at the end\n        if (includeSignature) {\n            if (this.signature) {\n                result.set(this.signature.toBytes(), offset);\n            }\n            // If no signature, bytes remain zero (already initialized)\n        }\n\n        return result;\n    }\n\n    private static parseBodySections(\n        body: Uint8Array,\n        readwriteCount: number,\n        readonlyCount: number,\n        instructionDataSize: number,\n        flags: number,\n    ): {\n        readWriteAccounts: Uint8Array[];\n        readOnlyAccounts: Uint8Array[];\n        instructionData?: Uint8Array;\n        feePayerStateProof?: Uint8Array;\n        feePayerAccountMetaRaw?: Uint8Array;\n    } {\n        let offset = 0;\n\n        const readWriteAccounts: Uint8Array[] = [];\n        for (let i = 0; i < readwriteCount; i++) {\n            this.ensureAvailable(body.length, offset, PUBKEY_SIZE, \"read-write accounts\");\n            readWriteAccounts.push(body.slice(offset, offset + PUBKEY_SIZE));\n            offset += PUBKEY_SIZE;\n        }\n\n        const readOnlyAccounts: Uint8Array[] = [];\n        for (let i = 0; i < readonlyCount; i++) {\n            this.ensureAvailable(body.length, offset, PUBKEY_SIZE, \"read-only accounts\");\n            readOnlyAccounts.push(body.slice(offset, offset + PUBKEY_SIZE));\n            offset += PUBKEY_SIZE;\n        }\n\n        let instructionData: Uint8Array | undefined;\n        if (instructionDataSize > 0) {\n            this.ensureAvailable(body.length, offset, instructionDataSize, \"instruction data\");\n            instructionData = body.slice(offset, offset + instructionDataSize);\n            offset += instructionDataSize;\n        }\n\n        let feePayerStateProof: Uint8Array | undefined;\n        let feePayerAccountMetaRaw: Uint8Array | undefined;\n\n        if ((flags & TXN_FLAG_HAS_FEE_PAYER_PROOF) !== 0) {\n            const { proofBytes, footprint, proofType } = this.parseStateProof(body.subarray(offset));\n            feePayerStateProof = proofBytes;\n            offset += footprint;\n\n            if (proofType === STATE_PROOF_TYPE_EXISTING) {\n                this.ensureAvailable(body.length, offset, ACCOUNT_META_FOOTPRINT, \"fee payer account metadata\");\n                feePayerAccountMetaRaw = body.slice(offset, offset + ACCOUNT_META_FOOTPRINT);\n                offset += ACCOUNT_META_FOOTPRINT;\n            }\n        }\n\n        if (offset !== body.length) {\n            throw new Error(\n                `Transaction body has trailing bytes: expected ${offset} bytes but found ${body.length}`,\n            );\n        }\n\n        return {\n            readWriteAccounts,\n            readOnlyAccounts,\n            instructionData,\n            feePayerStateProof,\n            feePayerAccountMetaRaw,\n        };\n    }\n\n    private static ensureAvailable(totalLength: number, offset: number, required: number, context: string): void {\n        if (offset + required > totalLength) {\n            throw new Error(`Transaction data truncated while parsing ${context}`);\n        }\n    }\n\n    private static parseStateProof(data: Uint8Array): { proofBytes: Uint8Array; footprint: number; proofType: number } {\n        if (data.length < STATE_PROOF_HEADER_SIZE) {\n            throw new Error(\"Transaction data truncated while parsing state proof header\");\n        }\n\n        const view = new DataView(data.buffer, data.byteOffset, data.byteLength);\n        const typeSlot = view.getBigUint64(0, true);\n        const proofType = Number((typeSlot >> 62n) & 0x3n);\n        if (\n            proofType !== STATE_PROOF_TYPE_EXISTING &&\n            proofType !== STATE_PROOF_TYPE_UPDATING &&\n            proofType !== STATE_PROOF_TYPE_CREATION\n        ) {\n            throw new Error(`Transaction state proof has unknown type: ${proofType}`);\n        }\n\n        const pathBitset = data.subarray(8, 40);\n        const siblingCount = countSetBits(pathBitset);\n        const bodyCount = proofType + siblingCount;\n        const totalSize = STATE_PROOF_HEADER_SIZE + bodyCount * HASH_SIZE;\n\n        if (proofType === STATE_PROOF_TYPE_CREATION && bodyCount < 2) {\n            throw new Error(\"Transaction state proof creation entry is truncated\");\n        }\n        if (proofType === STATE_PROOF_TYPE_UPDATING && bodyCount < 1) {\n            throw new Error(\"Transaction state proof updating entry is truncated\");\n        }\n        if (data.length < totalSize) {\n            throw new Error(\"Transaction data truncated while parsing state proof body\");\n        }\n\n        return {\n            proofBytes: data.slice(0, totalSize),\n            footprint: totalSize,\n            proofType,\n        };\n    }\n\n\n    static executionResultFromProto(\n        proto: CoreTransactionExecutionResult,\n    ): TransactionExecutionResultData {\n        return {\n            consumedComputeUnits: proto.consumedComputeUnits ?? 0,\n            consumedMemoryUnits: proto.consumedMemoryUnits ?? 0,\n            consumedStateUnits: proto.consumedStateUnits ?? 0,\n            userErrorCode: proto.userErrorCode ?? 0n,\n            vmError: proto.vmError ?? TransactionVmError.TRANSACTION_VM_EXECUTE_SUCCESS,\n            executionResult: proto.executionResult ?? 0n,\n            pagesUsed: proto.pagesUsed ?? 0,\n            eventsCount: proto.eventsCount ?? 0,\n            eventsSize: proto.eventsSize ?? 0,\n            readwriteAccounts: proto.readwriteAccounts.map((account) => Pubkey.fromProtoPubkey(account)),\n            readonlyAccounts: proto.readonlyAccounts.map((account) => Pubkey.fromProtoPubkey(account)),\n            events: proto.events.length\n                ? proto.events.map((event) => ({\n                      eventId: event.eventId,\n                      callIdx: event.callIdx,\n                      programIdx: event.programIdx,\n                      program: event.program ? Pubkey.fromProtoPubkey(event.program) : undefined,\n                      payload: new Uint8Array(event.payload ?? new Uint8Array(0)),\n                  }))\n                : undefined,\n            errorProgramAccIdx: proto.errorProgramAccIdx ?? 0,\n            /* Optional on the wire: 0 is a valid expected nonce (a fee payer\n               that has never transacted), so absence must not collapse to 0. */\n            feePayerExpectedNonce: proto.feePayerExpectedNonce,\n        };\n    }\n}\n\nfunction appendAccountList(target: Uint8Array, start: number, accounts: Uint8Array[]): number {\n    let offset = start;\n    for (const account of accounts) {\n        target.set(account, offset);\n        offset += PUBKEY_SIZE;\n    }\n    return offset;\n}\n\nfunction ensureUint16(value: number): number {\n    if (!Number.isInteger(value) || value < 0 || value > 0xffff) {\n        throw new Error(\"Value must fit within uint16 range\");\n    }\n    return value;\n}\n\nfunction ensureUint32(value: number): number {\n    if (!Number.isInteger(value) || value < 0 || value > 0xffffffff) {\n        throw new Error(\"Value must fit within uint32 range\");\n    }\n    return value;\n}\n\nfunction ensureBigUint64(value: bigint): bigint {\n    if (value < 0n || value > 0xffff_ffff_ffff_ffffn) {\n        throw new Error(\"Value must fit within uint64 range\");\n    }\n    return value;\n}\n\nfunction countSetBits(bytes: Uint8Array): number {\n    let total = 0;\n    for (let i = 0; i < bytes.length; i++) {\n        total += BYTE_POPCOUNT[bytes[i]];\n    }\n    return total;\n}\n\nfunction hasNonZeroBytes(value: Uint8Array): boolean {\n    for (let i = 0; i < value.length; i++) {\n        if (value[i] !== 0) {\n            return true;\n        }\n    }\n    return false;\n}\n","/** Outer-transaction signature scheme used by transaction signing helpers. */\nexport enum TransactionSigningScheme {\n    Rfc8032 = \"rfc8032\",\n    Legacy = \"legacy\",\n}\n\n/** Resolve an optional scheme and reject invalid values from untyped callers. */\nexport function resolveTransactionSigningScheme(\n    scheme?: TransactionSigningScheme,\n): TransactionSigningScheme {\n    if (scheme === undefined) {\n        return TransactionSigningScheme.Rfc8032;\n    }\n    if (\n        scheme !== TransactionSigningScheme.Rfc8032 &&\n        scheme !== TransactionSigningScheme.Legacy\n    ) {\n        throw new Error(`Invalid transaction signing scheme: ${String(scheme)}`);\n    }\n    return scheme;\n}\n","import { CallOptions, Interceptor, Transport, createClient } from \"@connectrpc/connect\";\nimport { GrpcWebTransportOptions, createGrpcWebTransport } from \"@connectrpc/connect-web\";\n\nimport { DEFAULT_HOST } from \"../defaults\";\nimport {\n    resolveTransactionSigningScheme,\n    TransactionSigningScheme,\n} from \"../domain/transactions/transaction-signing-scheme\";\nimport { CommandService, QueryService, StreamingService } from \"@thru/sdk/proto\";\n\ntype PartialTransportOptions = Partial<GrpcWebTransportOptions>;\n\nexport interface ThruClientConfig {\n    baseUrl?: string;\n    transport?: Transport;\n    transportOptions?: PartialTransportOptions;\n    interceptors?: Interceptor[];\n    callOptions?: CallOptions;\n    transactionSigningScheme?: TransactionSigningScheme;\n}\n\ntype QueryClient = ReturnType<typeof createClient<typeof QueryService>>;\ntype CommandClient = ReturnType<typeof createClient<typeof CommandService>>;\ntype StreamingClient = ReturnType<typeof createClient<typeof StreamingService>>;\n\nexport interface ThruClientContext {\n    baseUrl: string;\n    transport: Transport;\n    query: QueryClient;\n    command: CommandClient;\n    streaming: StreamingClient;\n    callOptions?: CallOptions;\n    transactionSigningScheme: TransactionSigningScheme;\n}\n\nexport function createThruClientContext(config: ThruClientConfig = {}): ThruClientContext {\n    const transportOptions = config.transportOptions ?? {};\n    const { baseUrl: optionsBaseUrl, interceptors: optionInterceptors, ...restTransportOptions } = transportOptions;\n    const baseUrl = config.baseUrl ?? optionsBaseUrl ?? DEFAULT_HOST;\n    const mergedInterceptors = [\n        ...(optionInterceptors ?? []),\n        ...(config.interceptors ?? []),\n    ];\n    const transport =\n        config.transport ??\n        createGrpcWebTransport({\n        baseUrl,\n            ...(restTransportOptions as Omit<GrpcWebTransportOptions, \"baseUrl\">),\n            interceptors: mergedInterceptors.length > 0 ? mergedInterceptors : undefined,\n    });\n\n    return {\n        baseUrl,\n        transport,\n        query: createClient(QueryService, transport),\n        command: createClient(CommandService, transport),\n        streaming: createClient(StreamingService, transport),\n        callOptions: config.callOptions,\n        transactionSigningScheme: resolveTransactionSigningScheme(\n            config.transactionSigningScheme,\n        ),\n    };\n}\n\nexport function withCallOptions(ctx: ThruClientContext, overrides?: CallOptions): CallOptions | undefined {\n    return mergeCallOptions(ctx.callOptions, overrides);\n}\n\nfunction mergeCallOptions(defaults?: CallOptions, overrides?: CallOptions): CallOptions | undefined {\n    if (!defaults) {\n        return overrides;\n    }\n    if (!overrides) {\n        return defaults;\n    }\n    return {\n        ...defaults,\n        ...overrides,\n        headers: mergeHeaders(defaults.headers, overrides.headers),\n        contextValues: overrides.contextValues ?? defaults.contextValues,\n        onHeader: overrides.onHeader ?? defaults.onHeader,\n        onTrailer: overrides.onTrailer ?? defaults.onTrailer,\n    };\n}\n\nfunction mergeHeaders(a?: HeadersInit, b?: HeadersInit): HeadersInit | undefined {\n    const entries: [string, string][] = [];\n    const add = (init?: HeadersInit) => {\n        if (!init) {\n            return;\n        }\n        if (init instanceof Headers) {\n            init.forEach((value, key) => {\n                entries.push([key, value]);\n            });\n            return;\n        }\n        if (Array.isArray(init)) {\n            for (const [key, value] of init) {\n                entries.push([key, value]);\n            }\n            return;\n        }\n        for (const [key, value] of Object.entries(init)) {\n            if (value !== undefined) {\n                entries.push([key, String(value)]);\n            }\n        }\n    };\n    add(a);\n    add(b);\n    if (entries.length === 0) {\n        return undefined;\n    }\n    return entries;\n}\n","import { create } from \"@bufbuild/protobuf\";\n\nimport {\n    PageRequest as ProtoPageRequest,\n    PageRequestSchema,\n    PageResponse as ProtoPageResponse,\n    PageResponseSchema,\n} from \"@thru/sdk/proto\";\n\nexport interface PageRequestParams {\n    pageSize?: number;\n    pageToken?: string;\n    orderBy?: string;\n}\n\nexport class PageRequest {\n    readonly pageSize?: number;\n    readonly pageToken?: string;\n    readonly orderBy?: string;\n\n    constructor(params: PageRequestParams = {}) {\n        if (params.pageSize !== undefined) {\n            if (!Number.isInteger(params.pageSize) || params.pageSize < 0) {\n                throw new Error(\"PageRequest.pageSize must be a non-negative integer\");\n            }\n        }\n\n        this.pageSize = params.pageSize;\n        this.pageToken = params.pageToken;\n        this.orderBy = params.orderBy;\n    }\n\n    static fromProto(proto?: ProtoPageRequest): PageRequest | undefined {\n        if (!proto) {\n            return undefined;\n        }\n        return new PageRequest({\n            pageSize: proto.pageSize,\n            pageToken: proto.pageToken,\n            orderBy: proto.orderBy,\n        });\n    }\n\n    toProto(): ProtoPageRequest {\n        return create(PageRequestSchema, {\n            pageSize: this.pageSize,\n            pageToken: this.pageToken,\n            orderBy: this.orderBy,\n        });\n    }\n\n    withParams(params: PageRequestParams): PageRequest {\n        return new PageRequest({\n            pageSize: params.pageSize ?? this.pageSize,\n            pageToken: params.pageToken ?? this.pageToken,\n            orderBy: params.orderBy ?? this.orderBy,\n        });\n    }\n}\n\nexport interface PageResponseParams {\n    nextPageToken?: string;\n    totalSize?: bigint;\n}\n\nexport class PageResponse {\n    readonly nextPageToken?: string;\n    readonly totalSize?: bigint;\n\n    constructor(params: PageResponseParams = {}) {\n        this.nextPageToken = params.nextPageToken;\n        this.totalSize = params.totalSize;\n    }\n\n    static fromProto(proto?: ProtoPageResponse): PageResponse | undefined {\n        if (!proto) {\n            return undefined;\n        }\n        return new PageResponse({\n            nextPageToken: proto.nextPageToken,\n            totalSize: proto.totalSize,\n        });\n    }\n\n    toProto(): ProtoPageResponse {\n        return create(PageResponseSchema, {\n            nextPageToken: this.nextPageToken,\n            totalSize: this.totalSize,\n        });\n    }\n\n    hasNextPage(): boolean {\n        return !!this.nextPageToken;\n    }\n}\n\n\n\n","\nimport type { Timestamp } from \"@bufbuild/protobuf/wkt\";\nimport { TransactionHeaderInput } from \"../domain/transactions\";\nimport { BlockSelector } from \"../modules/helpers\";\nimport { ConsensusStatus } from \"@thru/sdk/proto\";\n\n\nexport function isSlotSelector(selector: BlockSelector): selector is { slot: number | bigint } {\n    return \"slot\" in selector;\n}\n\nexport function mergeTransactionHeader(\n    defaults: TransactionHeaderInput,\n    overrides?: Partial<TransactionHeaderInput>,\n): TransactionHeaderInput {\n    if (!overrides) {\n        return defaults;\n    }\n\n    const sanitized = Object.fromEntries(\n        Object.entries(overrides).filter(([, value]) => value !== undefined),\n    ) as Partial<TransactionHeaderInput>;\n\n    return {\n        ...defaults,\n        ...sanitized,\n    };\n}\n\nexport function timestampToNanoseconds(timestamp?: Timestamp): bigint {\n    if (!timestamp) {\n        return 0n;\n    }\n    const seconds = BigInt(timestamp.seconds ?? 0);\n    const nanos = BigInt(timestamp.nanos ?? 0);\n    return seconds * 1_000_000_000n + nanos;\n}\n\nexport function nanosecondsToTimestamp(ns: bigint): Timestamp {\n    const seconds = ns / 1_000_000_000n;\n    const nanos = Number(ns % 1_000_000_000n);\n    return { seconds, nanos } as Timestamp;\n}\n\nexport function consensusStatusToString(status: ConsensusStatus): string {\n    const lookup = ConsensusStatus as unknown as Record<number, string>;\n    return lookup[status] ?? `UNKNOWN(${status})`;\n}\n","import { ConsensusStatus } from \"@thru/sdk/proto\";\nimport type { Transaction as ProtoTransaction } from \"@thru/sdk/proto\";\nimport type { TrackTransactionResponse } from \"@thru/sdk/proto\";\nimport { consensusStatusToString } from \"../../utils/utils\";\nimport { Transaction } from \"./Transaction\";\n\nexport type StreamTransactionUpdate =\n    | {\n          kind: \"partial\";\n          signature: Uint8Array;\n          slot?: bigint;\n          executionResult?: ReturnType<typeof Transaction.executionResultFromProto>;\n      }\n    | {\n          kind: \"full\";\n          transaction: Transaction;\n      };\n\nexport function toStreamTransactionUpdate(proto: ProtoTransaction): StreamTransactionUpdate {\n    const signatureBytes = proto.signature?.value ? new Uint8Array(proto.signature.value) : new Uint8Array();\n    const executionResult = proto.executionResult\n        ? Transaction.executionResultFromProto(proto.executionResult)\n        : undefined;\n\n    if (!proto.header) {\n        return {\n            kind: \"partial\",\n            signature: signatureBytes,\n            slot: proto.slot,\n            executionResult,\n        };\n    }\n\n    return {\n        kind: \"full\",\n        transaction: Transaction.fromProto(proto),\n    };\n}\n\nexport interface TrackTransactionUpdate {\n    signature?: Uint8Array;\n    status: string;\n    statusCode: ConsensusStatus;\n    slot?: bigint;\n    executionResult?: ReturnType<typeof Transaction.executionResultFromProto>;\n    transaction?: Transaction;\n}\n\nexport function toTrackTransactionUpdate(response: TrackTransactionResponse): TrackTransactionUpdate {\n    const signatureBytes = response.signature?.value ? new Uint8Array(response.signature.value) : undefined;\n    const executionResult = response.executionResult\n        ? Transaction.executionResultFromProto(response.executionResult)\n        : undefined;\n\n    return {\n        signature: signatureBytes,\n        status: consensusStatusToString(response.consensusStatus),\n        statusCode: response.consensusStatus,\n        slot: response.slot !== 0n ? response.slot : undefined,\n        executionResult,\n        transaction: undefined,\n    };\n}\n","import { hexToBytes, isHexString } from \"@thru/sdk/helpers\";\nimport { Pubkey, PubkeyInput } from \"../primitives\";\nimport type { InstructionContext } from \"./types\";\n\nconst ACCOUNT_LIMIT = 1024;\n\nexport function normalizeAccountList(accounts: PubkeyInput[]): Uint8Array[] {\n    if (accounts.length === 0) {\n        return [];\n    }\n\n    if (accounts.length > ACCOUNT_LIMIT) {\n        throw new Error(`Too many accounts provided: ${accounts.length} (max ${ACCOUNT_LIMIT})`);\n    }\n\n    const deduped = dedupeAccountList(accounts);\n    return deduped;\n}\n\nfunction dedupeAccountList(accounts: PubkeyInput[]): Uint8Array[] {\n    const pubkeys = accounts.map(Pubkey.from).map((pubkey) => pubkey.toBytes());\n    const seen = new Map<string, Uint8Array>();\n    for (const pubkey of pubkeys) {\n        if (pubkey.length !== 32) {\n            throw new Error(\"Account addresses must contain 32 bytes\");\n        }\n\n        const key = toHex(pubkey);\n        if (!seen.has(key)) {\n            seen.set(key, pubkey);\n        }\n    }\n\n    return Array.from(seen.values()).sort(compareAccounts);\n}\n\nfunction compareAccounts(a: Uint8Array, b: Uint8Array): number {\n    for (let i = 0; i < 32; i++) {\n        if (a[i] !== b[i]) {\n            return a[i] - b[i];\n        }\n    }\n    return 0;\n}\n\nfunction toHex(bytes: Uint8Array): string {\n    let result = \"\";\n    for (let i = 0; i < bytes.length; i++) {\n        const hex = bytes[i].toString(16).padStart(2, \"0\");\n        result += hex;\n    }\n    return result;\n}\n\nexport function parseInstructionData(value?: Uint8Array | string): Uint8Array | undefined {\n    if (value === undefined) {\n        return undefined;\n    }\n    if (value instanceof Uint8Array) {\n        return new Uint8Array(value);\n    }\n    if (typeof value === \"string\") {\n        if (value.length === 0) {\n            return new Uint8Array();\n        }\n        if (isHexString(value)) {\n            return hexToBytes(value);\n        }\n    }\n    throw new Error(\"Instruction data must be provided as hex string or Uint8Array\");\n}\n\n/**\n * Creates an InstructionContext from the transaction's account layout.\n *\n * Account order in context: [feePayer, program, ...readWriteAccounts, ...readOnlyAccounts]\n *\n * @param feePayer - The fee payer public key\n * @param program - The program public key\n * @param sortedReadWrite - Read-write accounts in their final sorted order\n * @param sortedReadOnly - Read-only accounts in their final sorted order\n */\nexport function createInstructionContext(\n    feePayer: Pubkey,\n    program: Pubkey,\n    sortedReadWrite: Uint8Array[],\n    sortedReadOnly: Uint8Array[]\n): InstructionContext {\n    // Build full account list: [feePayer, program, ...readWrite, ...readOnly]\n    const accounts: Pubkey[] = [\n        feePayer,\n        program,\n        ...sortedReadWrite.map(bytes => Pubkey.from(bytes)),\n        ...sortedReadOnly.map(bytes => Pubkey.from(bytes)),\n    ];\n\n    // Build index map for fast lookups\n    const indexMap = new Map<string, number>();\n    for (let i = 0; i < accounts.length; i++) {\n        const key = toHex(accounts[i].toBytes());\n        // First occurrence wins (handles any duplicates)\n        if (!indexMap.has(key)) {\n            indexMap.set(key, i);\n        }\n    }\n\n    return {\n        accounts,\n        getAccountIndex: (pubkey: PubkeyInput): number => {\n            const bytes = Pubkey.from(pubkey).toBytes();\n            const key = toHex(bytes);\n            const index = indexMap.get(key);\n            if (index === undefined) {\n                throw new Error(`Account ${key} not found in transaction accounts`);\n            }\n            return index;\n        },\n    };\n}","import { Pubkey } from \"../primitives\";\nimport { Transaction } from \"./Transaction\";\nimport type {\n    BuildTransactionParams,\n    SignedTransactionResult,\n    TransactionAccountsInput,\n} from \"./types\";\nimport { createInstructionContext, normalizeAccountList, parseInstructionData } from \"./utils\";\nimport {\n    resolveTransactionSigningScheme,\n    TransactionSigningScheme,\n} from \"./transaction-signing-scheme\";\n\nconst FLAG_HAS_FEE_PAYER_PROOF = 1 << 0;\n\nexport class TransactionBuilder {\n    build(params: BuildTransactionParams): Transaction {\n        const feePayer = Pubkey.from(params.feePayer.publicKey);\n        const program = Pubkey.from(params.program);\n\n        // Normalize accounts first (sort and dedupe)\n        const sortedReadWrite = normalizeAccountList(params.accounts?.readWriteAccounts ?? []);\n        const sortedReadOnly = normalizeAccountList(params.accounts?.readOnlyAccounts ?? []);\n\n        // Resolve instruction data - either from callback or static value\n        let instructionData: Uint8Array | undefined;\n\n        if (params.buildInstructionData) {\n            const context = createInstructionContext(feePayer, program, sortedReadWrite, sortedReadOnly);\n            const result = params.buildInstructionData(context);\n            instructionData = parseInstructionData(result);\n        } else {\n            instructionData = parseInstructionData(params.instructionData);\n        }\n\n        const baseFlags = params.header.flags ?? 0;\n        const flags = params.proofs?.feePayerStateProof ? baseFlags | FLAG_HAS_FEE_PAYER_PROOF : baseFlags;\n\n        // Build normalized accounts object\n        const accounts: TransactionAccountsInput | undefined =\n            sortedReadWrite.length > 0 || sortedReadOnly.length > 0\n                ? { readWriteAccounts: sortedReadWrite, readOnlyAccounts: sortedReadOnly }\n                : undefined;\n\n        return new Transaction({\n            feePayer,\n            program,\n            header: {\n                ...params.header,\n                flags,\n            },\n            accounts,\n            instructionData,\n            proofs: params.proofs,\n        });\n    }\n\n    async buildAndSign(params: BuildTransactionParams): Promise<SignedTransactionResult> {\n        if (!params.feePayer.privateKey) {\n            throw new Error(\"Fee payer private key is required to sign the transaction\");\n        }\n        const transaction = this.build(params);\n        const scheme = resolveTransactionSigningScheme(params.transactionSigningScheme);\n        const signature =\n            scheme === TransactionSigningScheme.Legacy\n                ? await transaction.legacySign(params.feePayer.privateKey)\n                : await transaction.sign(params.feePayer.privateKey);\n        const rawTransaction = transaction.toWire();\n        return { transaction, signature, rawTransaction };\n    }\n}\n","import { ConsensusStatus } from \"@thru/sdk/proto\";\nimport type { TransactionStatus } from \"@thru/sdk/proto\";\nimport { consensusStatusToString } from \"../../utils/utils\";\nimport { Transaction } from \"./Transaction\";\n\nexport interface TransactionStatusParams {\n    signature: Uint8Array;\n    consensusStatus?: ConsensusStatus;\n    executionResult?: ReturnType<typeof Transaction.executionResultFromProto>;\n}\n\nexport class TransactionStatusSnapshot {\n    readonly signature: Uint8Array;\n    readonly statusCode?: ConsensusStatus;\n    readonly status?: string;\n    readonly executionResult?: ReturnType<typeof Transaction.executionResultFromProto>;\n\n    constructor(params: TransactionStatusParams) {\n        this.signature = copyBytes(params.signature);\n        this.statusCode = params.consensusStatus;\n        this.status = params.consensusStatus != null ? consensusStatusToString(params.consensusStatus) : undefined;\n        this.executionResult = params.executionResult;\n    }\n\n    static fromProto(proto: TransactionStatus): TransactionStatusSnapshot {\n        if (!proto.signature?.value) {\n            throw new Error(\"TransactionStatus proto missing signature\");\n        }\n        return new TransactionStatusSnapshot({\n            signature: proto.signature.value,\n            consensusStatus: proto.consensusStatus,\n            executionResult: proto.executionResult\n                ? Transaction.executionResultFromProto(proto.executionResult)\n                : undefined,\n        });\n    }\n}\n\nfunction copyBytes(bytes: Uint8Array): Uint8Array {\n    const copy = new Uint8Array(bytes.length);\n    copy.set(bytes);\n    return copy;\n}\n\n","import type { ConsensusStatus } from \"@thru/sdk/proto\";\nimport type {\n    Account as ProtoAccount,\n    AccountData as ProtoAccountData,\n    AccountFlags as ProtoAccountFlags,\n    AccountMeta as ProtoAccountMeta,\n    VersionContextMetadata as ProtoVersionContextMetadata,\n} from \"@thru/sdk/proto\";\nimport { timestampToNanoseconds } from \"../../utils/utils\";\nimport { Pubkey } from \"../primitives\";\n\nexport interface AccountFlagsData {\n    isProgram: boolean;\n    isPrivileged: boolean;\n    isUncompressable: boolean;\n    isEphemeral: boolean;\n    isDeleted: boolean;\n    isNew: boolean;\n    isCompressed: boolean;\n}\n\nexport class AccountFlags implements AccountFlagsData {\n    readonly isProgram: boolean;\n    readonly isPrivileged: boolean;\n    readonly isUncompressable: boolean;\n    readonly isEphemeral: boolean;\n    readonly isDeleted: boolean;\n    readonly isNew: boolean;\n    readonly isCompressed: boolean;\n\n    constructor(flags?: Partial<AccountFlagsData>) {\n        this.isProgram = flags?.isProgram ?? false;\n        this.isPrivileged = flags?.isPrivileged ?? false;\n        this.isUncompressable = flags?.isUncompressable ?? false;\n        this.isEphemeral = flags?.isEphemeral ?? false;\n        this.isDeleted = flags?.isDeleted ?? false;\n        this.isNew = flags?.isNew ?? false;\n        this.isCompressed = flags?.isCompressed ?? false;\n    }\n\n    static fromProto(flags?: ProtoAccountFlags): AccountFlags {\n        if (!flags) {\n            return new AccountFlags();\n        }\n        return new AccountFlags({\n            isProgram: flags.isProgram,\n            isPrivileged: flags.isPrivileged,\n            isUncompressable: flags.isUncompressable,\n            isEphemeral: flags.isEphemeral,\n            isDeleted: flags.isDeleted,\n            isNew: flags.isNew,\n            isCompressed: flags.isCompressed,\n        });\n    }\n}\n\nexport class AccountMeta {\n    readonly version: number;\n    readonly flags: AccountFlags;\n    readonly dataSize: number;\n    readonly seq: bigint;\n    readonly owner?: Pubkey;\n    readonly balance: bigint;\n    readonly nonce?: bigint;\n\n    constructor(params: {\n        version: number;\n        flags?: AccountFlags;\n        dataSize: number;\n        seq: bigint;\n        owner?: Pubkey;\n        balance: bigint;\n        nonce?: bigint;\n    }) {\n        this.version = params.version;\n        this.flags = params.flags ?? new AccountFlags();\n        this.dataSize = params.dataSize;\n        this.seq = params.seq;\n        this.owner = params.owner;\n        this.balance = params.balance;\n        this.nonce = params.nonce;\n    }\n\n    static fromProto(meta?: ProtoAccountMeta): AccountMeta | undefined {\n        if (!meta) {\n            return undefined;\n        }\n        return new AccountMeta({\n            version: meta.version,\n            flags: AccountFlags.fromProto(meta.flags),\n            dataSize: meta.dataSize,\n            seq: meta.seq ?? 0n,\n            owner: meta.owner ? Pubkey.fromProtoPubkey(meta.owner) : undefined,\n            balance: meta.balance ?? 0n,\n            nonce: meta.nonce,\n        });\n    }\n}\n\nexport class AccountData {\n    readonly data?: Uint8Array;\n    readonly compressed: boolean;\n    readonly compressionAlgorithm?: string;\n\n    constructor(params: { data?: Uint8Array; compressed?: boolean; compressionAlgorithm?: string }) {\n        this.data = params.data ? new Uint8Array(params.data) : undefined;\n        this.compressed = params.compressed ?? false;\n        this.compressionAlgorithm = params.compressionAlgorithm;\n    }\n\n    static fromProto(data?: ProtoAccountData): AccountData | undefined {\n        if (!data) {\n            return undefined;\n        }\n        return new AccountData({\n            data: data.data ? new Uint8Array(data.data) : undefined,\n            compressed: data.compressed ?? false,\n            compressionAlgorithm: data.compressionAlgorithm,\n        });\n    }\n}\n\nexport interface AccountVersionContext {\n    slot?: bigint;\n    blockTimestampNs?: bigint;\n    /** Per-account sequence number of the returned version, when known. */\n    seq?: bigint;\n    /** Block offset of the transaction that wrote the returned version, when known. */\n    blockOffset?: number;\n}\n\nexport class Account {\n    readonly address: Pubkey;\n    readonly meta?: AccountMeta;\n    readonly data?: AccountData;\n    readonly versionContext?: AccountVersionContext;\n    readonly consensusStatus?: ConsensusStatus;\n\n    constructor(params: {\n        address: Pubkey;\n        meta?: AccountMeta;\n        data?: AccountData;\n        versionContext?: AccountVersionContext;\n        consensusStatus?: ConsensusStatus;\n    }) {\n        this.address = params.address;\n        this.meta = params.meta;\n        this.data = params.data;\n        this.versionContext = params.versionContext;\n        this.consensusStatus = params.consensusStatus;\n    }\n\n    static fromProto(proto: ProtoAccount): Account {\n        if (!proto.address) {\n            throw new Error(\"Account proto missing address\");\n        }\n\n        return new Account({\n            address: Pubkey.fromProtoPubkey(proto.address),\n            meta: AccountMeta.fromProto(proto.meta),\n            data: AccountData.fromProto(proto.data ?? undefined),\n            versionContext: convertVersionContext(proto.versionContext),\n            consensusStatus: proto.consensusStatus,\n        });\n    }\n}\n\nfunction convertVersionContext(meta?: ProtoVersionContextMetadata): AccountVersionContext | undefined {\n    if (!meta) {\n        return undefined;\n    }\n\n    return {\n        slot: meta.slot,\n        blockTimestampNs: timestampToNanoseconds(meta.blockTimestamp),\n        seq: meta.seq,\n        blockOffset: meta.blockOffset,\n    };\n}\n","import type { AccountPage as ProtoAccountPage } from \"@thru/sdk/proto\";\nimport type { AccountUpdate as ProtoAccountUpdate, StreamAccountUpdatesResponse } from \"@thru/sdk/proto\";\nimport { Account, AccountMeta } from \"./Account\";\n\nexport interface AccountPageChunk {\n    pageIndex: number;\n    pageSize: number;\n    data: Uint8Array;\n    compressed?: boolean;\n    compressionAlgorithm?: string;\n}\n\nexport interface AccountSnapshot {\n    account: Account;\n}\n\nexport interface AccountUpdateDelta {\n    slot: bigint;\n    /** Per-account sequence number of this update. Always present, unlike\n        meta.seq which is stripped under DATA_ONLY/PUBKEY_ONLY views\n        (META_ONLY strips data, not meta). */\n    seq: bigint;\n    meta?: AccountMeta;\n    page?: AccountPageChunk;\n    deleted?: boolean;\n}\n\nexport type StreamAccountUpdate =\n    | { kind: \"snapshot\"; snapshot: AccountSnapshot }\n    | { kind: \"update\"; update: AccountUpdateDelta };\n\nexport function toStreamAccountUpdate(response: StreamAccountUpdatesResponse): StreamAccountUpdate | undefined {\n    if (!response.message) {\n        return undefined;\n    }\n\n    if (response.message.case === \"snapshot\") {\n        return {\n            kind: \"snapshot\",\n            snapshot: { account: Account.fromProto(response.message.value) },\n        };\n    }\n\n    if (response.message.case === \"update\") {\n        return {\n            kind: \"update\",\n            update: fromProtoUpdate(response.message.value),\n        };\n    }\n\n    return undefined;\n}\n\nfunction fromProtoUpdate(update: ProtoAccountUpdate): AccountUpdateDelta {\n    return {\n        slot: update.slot,\n        seq: update.seq,\n        meta: AccountMeta.fromProto(update.meta),\n        page: update.page ? fromProtoPage(update.page) : undefined,\n        deleted: update.delete ?? false,\n    };\n}\n\nfunction fromProtoPage(page: ProtoAccountPage): AccountPageChunk {\n    return {\n        pageIndex: page.pageIdx,\n        pageSize: page.pageSize,\n        data: new Uint8Array(page.pageData),\n        compressed: page.compressed ?? undefined,\n        compressionAlgorithm: page.compressionAlgorithm,\n    };\n}\n","import type { StateProof as CoreStateProof } from \"@thru/sdk/proto\";\n\nexport class StateProof {\n    readonly proof: Uint8Array;\n    readonly slot: bigint;\n\n    constructor(params: { proof: Uint8Array; slot: bigint }) {\n        this.proof = copyBytes(params.proof);\n        this.slot = params.slot;\n    }\n\n    static fromProto(proto: CoreStateProof): StateProof {\n        return new StateProof({\n            proof: proto.proof,\n            slot: proto.slot ?? 0n,\n        });\n    }\n}\n\nfunction copyBytes(bytes: Uint8Array): Uint8Array {\n    const copy = new Uint8Array(bytes.length);\n    copy.set(bytes);\n    return copy;\n}\n\n","import { create } from \"@bufbuild/protobuf\";\nimport { Code, ConnectError } from \"@connectrpc/connect\";\n\nimport type { ThruClientContext } from \"../core/client\";\nimport { withCallOptions } from \"../core/client\";\nimport { Pubkey } from \"../domain/primitives\";\nimport { StateProof } from \"../domain/proofs\";\nimport {\n    StateProofRequestSchema,\n    GenerateStateProofRequestSchema,\n    GenerateStateProofResponse,\n    GetStateRootsRequestSchema,\n    type GetStateRootsResponse,\n    BatchGenerateStateProofsRequestSchema,\n} from \"@thru/sdk/proto\";\nimport { GenerateStateProofOptions } from \"../types/types\";\n\nexport async function generateStateProof(\n    ctx: ThruClientContext,\n    options: GenerateStateProofOptions,\n): Promise<StateProof> {\n    // If targetSlot is undefined or 0, let the server auto-select the latest\n    // available state root slot. This avoids race conditions where the client\n    // requests a slot that hasn't been ingested into ClickHouse yet.\n    const targetSlot = options.targetSlot ?? 0n;\n\n    const request = create(StateProofRequestSchema, {\n        address: options.address ? Pubkey.from(options.address).toProtoPubkey() : undefined,\n        proofType: options.proofType,\n        targetSlot,\n    });\n    const schemaRequest = create(GenerateStateProofRequestSchema, { request });\n    const response: GenerateStateProofResponse = await ctx.query.generateStateProof(\n        schemaRequest,\n        withCallOptions(ctx),\n    );\n    if (!response.proof) {\n        throw new Error(\"State proof response missing proof\");\n    }\n    return StateProof.fromProto(response.proof);\n}\n\nexport interface GenerateStateProofsOptions {\n    requests: readonly Omit<GenerateStateProofOptions, \"targetSlot\">[];\n    targetSlot?: bigint;\n    signal?: AbortSignal;\n}\n\nexport type StateProofOutcome = { proof: StateProof; error?: never } | { proof?: never; error: ConnectError };\n\n/** Positional results, including duplicates and per-account errors; chunks at the RPC's 1000-request limit. */\nexport async function generateStateProofs(\n    ctx: ThruClientContext,\n    options: GenerateStateProofsOptions,\n): Promise<StateProofOutcome[]> {\n    const results: StateProofOutcome[] = [];\n    let targetSlot = options.targetSlot ?? 0n;\n    for (let offset = 0; offset < options.requests.length; offset += 1000) {\n        const requests = options.requests.slice(offset, offset + 1000).map(request => create(StateProofRequestSchema, {\n            address: request.address ? Pubkey.from(request.address).toProtoPubkey() : undefined,\n            proofType: request.proofType,\n            // The batch endpoint rejects per-request targetSlot, including explicit zero.\n        }));\n        const response = await ctx.query.batchGenerateStateProofs(\n            create(BatchGenerateStateProofsRequestSchema, { requests, targetSlot }),\n            { ...withCallOptions(ctx), ...(options.signal ? { signal: options.signal } : {}) },\n        );\n        if (response.results.length !== requests.length) throw new Error(\"Batch state proof response has the wrong result count\");\n        for (const result of response.results) {\n            if (result.proof && !result.errorCode) {\n                const proof = StateProof.fromProto(result.proof);\n                // Pin later chunks once the server supplies a usable root. If an\n                // entire chunk failed, a later chunk may still select its own root.\n                if (!targetSlot) targetSlot = proof.slot;\n                results.push({ proof });\n            } else if (!result.proof && result.errorCode) {\n                results.push({ error: new ConnectError(result.errorMessage ?? \"State proof unavailable\", result.errorCode as Code) });\n            } else throw new Error(\"Batch state proof result must contain either a proof or an error\");\n        }\n    }\n    return results;\n}\n\nexport interface GetStateRootsOptions {\n    slot?: bigint;\n}\n\nexport async function getStateRoots(\n    ctx: ThruClientContext,\n    options: GetStateRootsOptions = {},\n): Promise<GetStateRootsResponse> {\n    const request = create(GetStateRootsRequestSchema, {\n        slot: options.slot,\n    });\n    return ctx.query.getStateRoots(request, withCallOptions(ctx));\n}\n","import { create } from \"@bufbuild/protobuf\";\n\nimport type { ThruClientContext } from \"../core/client\";\nimport { withCallOptions } from \"../core/client\";\nimport { GetChainInfoRequestSchema, type GetChainInfoResponse } from \"@thru/sdk/proto\";\n\nexport async function getChainInfo(ctx: ThruClientContext): Promise<GetChainInfoResponse> {\n    const request = create(GetChainInfoRequestSchema);\n    return ctx.query.getChainInfo(request, withCallOptions(ctx));\n}\n\nexport async function getChainId(ctx: ThruClientContext): Promise<number> {\n    const response = await getChainInfo(ctx);\n    return response.chainId;\n}\n","// Generated by programs/bootstrap/generate-addresses.ts; do not edit.\nexport const EOA_PROGRAM_ID = \"taEOAD2uLK1SLzPgtabFLUAx22yDlBs9DE9nZFTOESIGRr\";\nexport const ROOT_MANAGER_PROGRAM_ADDRESS = \"taAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEB\";\nexport const MANAGER_PROGRAM_ADDRESS = \"taMGRmPoSTkUtF6UlmCIq58K8OYsnXshOMPdobxxHytqmu\";\nexport const UPLOADER_PROGRAM_ADDRESS = \"taUPLMH5QYOAT4ktwQeO7DXAEKtqBhYehalNGf5BJFQDYq\";\n// Test fixture only: upload explicitly before use; absent from genesis.\nexport const SYSTEM_TEST_PROGRAM_ADDRESS = \"tar71GzddPShylAkcr4uvCDLRtdovGCI64b54CYtqCWSVA\";\nexport const NOOP_PROGRAM_ADDRESS = \"taNOOPV4A7S3WTsirr149To2GoGZ9q8zllQaBrbekHfkJT\";\nexport const ABI_MANAGER_PROGRAM_ADDRESS = \"taABII8WXcPaPIt47cXjOBbyoBUGBDXznAMHorVMeok3mw\";\nexport const TOKEN_PROGRAM_ADDRESS = \"taTOKENKRgcl3vO0yVhftATDbXuhgWcfaaxv9xpEEdMdUE\";\nexport const MULTICALL_PROGRAM_ADDRESS = \"taMULTIrOL8WpIFr16C1ECsO60qAsuwmwJephZHDOTvSeP\";\nexport const COMPRESSION_PROGRAM_ADDRESS = \"taRB54_92jNbBdcmt2jus88F-xrOSne1GR9mmyOh4RidAK\";\nexport const PASSKEY_MANAGER_PROGRAM_ADDRESS = \"taPASSIvjIgz2kZ1CIIhvbT00XV9Ve5kZ2I9uDLanzIgbA\";\n","import { create } from \"@bufbuild/protobuf\";\n\nimport type { ThruClientContext } from \"../core/client\";\nimport { withCallOptions } from \"../core/client\";\nimport { DEFAULT_ACCOUNT_VIEW, DEFAULT_MIN_CONSENSUS, DEFAULT_VERSION_CONTEXT } from \"../defaults\";\nimport { Account } from \"../domain/accounts\";\nimport { Filter } from \"../domain/filters\";\nimport { PageRequest, PageResponse } from \"../domain/pagination\";\nimport { Pubkey, type PubkeyInput } from \"../domain/primitives\";\nimport type { Transaction } from \"../domain/transactions/Transaction\";\nimport { TransactionBuilder } from \"../domain/transactions/TransactionBuilder\";\nimport type { TransactionHeaderInput } from \"../domain/transactions/types\";\nimport {\n    ConsensusStatus,\n    VersionContext,\n    AccountView,\n    DataSlice,\n    RawAccount,\n    StateProofType,\n    GetAccountRequestSchema,\n    GetRawAccountRequestSchema,\n    ListAccountsRequestSchema,\n    type ListAccountsResponse as ProtoListAccountsResponse,\n} from \"@thru/sdk/proto\";\nimport { mergeTransactionHeader } from \"../utils/utils\";\nimport { generateStateProof } from \"./proofs\";\nimport { getChainId } from \"./chain\";\nimport { NOOP_PROGRAM_ADDRESS } from \"../../src/core-program-addresses\";\n\nexport interface CreateAccountOptions {\n    /** The new account's public key (fee payer). */\n    publicKey: PubkeyInput;\n    /** Noop override for an explicitly configured existing network. */\n    program?: PubkeyInput;\n    /** Optional overrides for the transaction header. */\n    header?: Partial<TransactionHeaderInput>;\n}\n\n\nexport interface AccountQueryOptions {\n    view?: AccountView;\n    versionContext?: VersionContext;\n    dataSlice?: DataSlice;\n}\n\nexport interface RawAccountQueryOptions {\n    view?: AccountView;\n    versionContext?: VersionContext;\n}\n\nexport interface ListAccountsOptions {\n    view?: AccountView;\n    versionContext?: VersionContext;\n    filter?: Filter;\n    page?: PageRequest;\n    minConsensus?: ConsensusStatus;\n}\n\nexport interface AccountList {\n    accounts: Account[];\n    page?: PageResponse;\n}\n\nexport function getAccount(\n    ctx: ThruClientContext,\n    address: PubkeyInput,\n    options: AccountQueryOptions = {},\n): Promise<Account> {\n    const request = create(GetAccountRequestSchema, {\n        address: Pubkey.from(address).toProtoPubkey(),\n        view: options.view ?? DEFAULT_ACCOUNT_VIEW,\n        versionContext: options.versionContext ?? DEFAULT_VERSION_CONTEXT,\n        dataSlice: options.dataSlice,\n    });\n    return ctx.query.getAccount(request, withCallOptions(ctx)).then(Account.fromProto);\n}\n\nexport function getRawAccount(\n    ctx: ThruClientContext,\n    address: PubkeyInput,\n    options: RawAccountQueryOptions = {},\n): Promise<RawAccount> {\n    const request = create(GetRawAccountRequestSchema, {\n        address: Pubkey.from(address).toProtoPubkey(),\n        view: options.view ?? DEFAULT_ACCOUNT_VIEW,\n        versionContext: options.versionContext ?? DEFAULT_VERSION_CONTEXT,\n    });\n    return ctx.query.getRawAccount(request, withCallOptions(ctx));\n}\n\nexport function listAccounts(\n    ctx: ThruClientContext,\n    options: ListAccountsOptions,\n): Promise<AccountList> {\n    const request = create(ListAccountsRequestSchema, {\n        view: options.view ?? DEFAULT_ACCOUNT_VIEW,\n        versionContext: options.versionContext ?? DEFAULT_VERSION_CONTEXT,\n        filter: options.filter?.toProto(),\n        page: options.page?.toProto(),\n        minConsensus: options.minConsensus ?? DEFAULT_MIN_CONSENSUS,\n    });\n    return ctx.query.listAccounts(request, withCallOptions(ctx)).then((response: ProtoListAccountsResponse) => ({\n        accounts: response.accounts.map((proto) => Account.fromProto(proto)),\n        page: PageResponse.fromProto(response.page),\n    }));\n}\n\nexport async function createAccount(\n    ctx: ThruClientContext,\n    options: CreateAccountOptions,\n): Promise<Transaction> {\n    const feePayer = Pubkey.from(options.publicKey).toBytes();\n\n    // Let the server auto-select the latest available state root slot.\n    // This avoids race conditions where we request a slot that hasn't\n    // been ingested into ClickHouse yet.\n    const proofResponse = await generateStateProof(ctx, {\n        address: options.publicKey,\n        proofType: StateProofType.CREATING,\n        // targetSlot omitted - server will auto-select\n    });\n\n    const proofBytes = proofResponse.proof;\n    if (!proofBytes || proofBytes.length === 0) {\n        throw new Error(\"State proof generation returned empty proof\");\n    }\n\n    // Use the slot from the proof response for the transaction startSlot\n    const startSlot = proofResponse.slot;\n\n    const program = Pubkey.from(options.program ?? NOOP_PROGRAM_ADDRESS).toBytes();\n\n    const builder = new TransactionBuilder();\n    const headerDefaults: TransactionHeaderInput = {\n        fee: 0n,\n        nonce: 0n,\n        startSlot,\n        chainId: options.header?.chainId ?? (await getChainId(ctx)),\n        expiryAfter: 100,\n        computeUnits: 0,\n        memoryUnits: 0,\n        stateUnits: 0,\n    };\n\n    const header = mergeTransactionHeader(headerDefaults, options.header);\n\n    const transaction = builder.build({\n        feePayer: { publicKey: feePayer },\n        program,\n        header,\n        proofs: { feePayerStateProof: proofBytes }\n    });\n\n    return transaction;\n}\n","export interface HeightSnapshotParams {\n    finalized: bigint;\n    locallyExecuted: bigint;\n    clusterExecuted: bigint;\n}\n\nexport class HeightSnapshot {\n    readonly finalized: bigint;\n    readonly locallyExecuted: bigint;\n    readonly clusterExecuted: bigint;\n\n    constructor(params: HeightSnapshotParams) {\n        this.finalized = params.finalized;\n        this.locallyExecuted = params.locallyExecuted;\n        this.clusterExecuted = params.clusterExecuted;\n    }\n\n    static fromProto(proto: { finalized: bigint; locallyExecuted: bigint; clusterExecuted: bigint }): HeightSnapshot {\n        return new HeightSnapshot({\n            finalized: proto.finalized ?? 0n,\n            locallyExecuted: proto.locallyExecuted ?? 0n,\n            clusterExecuted: proto.clusterExecuted ?? 0n,\n        });\n    }\n\n    delta(other: HeightSnapshot): { finalized: bigint; locallyExecuted: bigint; clusterExecuted: bigint } {\n        return {\n            finalized: this.finalized - other.finalized,\n            locallyExecuted: this.locallyExecuted - other.locallyExecuted,\n            clusterExecuted: this.clusterExecuted - other.clusterExecuted,\n        };\n    }\n}\n\n","import { create } from \"@bufbuild/protobuf\";\n\nimport type { ThruClientContext } from \"../core/client\";\nimport { withCallOptions } from \"../core/client\";\nimport { HeightSnapshot } from \"../domain/height\";\nimport { GetHeightRequestSchema, GetHeightResponse } from \"@thru/sdk/proto\";\n\nexport function getBlockHeight(ctx: ThruClientContext): Promise<HeightSnapshot> {\n    const request = create(GetHeightRequestSchema);\n    return ctx.query.getHeight(request, withCallOptions(ctx)).then((proto: GetHeightResponse) => HeightSnapshot.fromProto(proto));\n}\n","import type { BlockFooter as ProtoBlockFooter } from \"@thru/sdk/proto\";\nimport { ExecutionStatus } from \"@thru/sdk/proto\";\n\nexport interface BlockFooterParams {\n    signature?: Uint8Array;\n    status: ExecutionStatus;\n    consumedComputeUnits: bigint;\n    consumedStateUnits: number;\n    attestorPayment: bigint;\n}\n\nexport class BlockFooter {\n    readonly signature?: Uint8Array;\n    readonly status: ExecutionStatus;\n    readonly consumedComputeUnits: bigint;\n    readonly consumedStateUnits: number;\n    readonly attestorPayment: bigint;\n\n    constructor(params: BlockFooterParams) {\n        this.signature = copyBytes(params.signature);\n        this.status = params.status;\n        this.consumedComputeUnits = params.consumedComputeUnits;\n        this.consumedStateUnits = params.consumedStateUnits;\n        this.attestorPayment = params.attestorPayment;\n    }\n\n    static fromProto(proto: ProtoBlockFooter): BlockFooter {\n        return new BlockFooter({\n            signature: proto.signature?.value,\n            status: proto.status ?? ExecutionStatus.UNSPECIFIED,\n            consumedComputeUnits: proto.consumedComputeUnits ?? 0n,\n            consumedStateUnits: proto.consumedStateUnits ?? 0,\n            attestorPayment: proto.attestorPayment ?? 0n,\n        });\n    }\n}\n\nfunction copyBytes(bytes?: Uint8Array): Uint8Array | undefined {\n    if (!bytes) return undefined;\n    const out = new Uint8Array(bytes.length);\n    out.set(bytes);\n    return out;\n}\n","import type { Timestamp } from \"@bufbuild/protobuf/wkt\";\n\nimport type { BlockHeader as ProtoBlockHeader } from \"@thru/sdk/proto\";\n\nexport interface BlockHeaderParams {\n    slot: bigint;\n    version: number;\n    headerSignature?: Uint8Array;\n    producer?: Uint8Array;\n    expiryTimestamp?: Timestamp;\n    startSlot: bigint;\n    expiryAfter?: number;\n    maxBlockSize?: number;\n    maxComputeUnits?: bigint;\n    maxStateUnits?: number;\n    bondAmountLockUp?: bigint;\n    weightSlot?: bigint;\n    blockHash?: Uint8Array;\n    chainId?: number;\n}\n\nexport class BlockHeader {\n    readonly slot: bigint;\n    readonly version: number;\n    readonly headerSignature?: Uint8Array;\n    readonly producer?: Uint8Array;\n    readonly expiryTimestamp?: Timestamp;\n    readonly startSlot: bigint;\n    readonly expiryAfter?: number;\n    readonly maxBlockSize?: number;\n    readonly maxComputeUnits?: bigint;\n    readonly maxStateUnits?: number;\n    readonly bondAmountLockUp?: bigint;\n    readonly weightSlot?: bigint;\n    readonly blockHash?: Uint8Array;\n    readonly chainId?: number;\n\n    constructor(params: BlockHeaderParams) {\n        this.slot = params.slot;\n        this.version = params.version;\n        this.headerSignature = copyBytes(params.headerSignature);\n        this.producer = copyBytes(params.producer);\n        this.expiryTimestamp = params.expiryTimestamp;\n        this.startSlot = params.startSlot;\n        this.expiryAfter = params.expiryAfter;\n        this.maxBlockSize = params.maxBlockSize;\n        this.maxComputeUnits = params.maxComputeUnits;\n        this.maxStateUnits = params.maxStateUnits;\n        this.bondAmountLockUp = params.bondAmountLockUp;\n        this.weightSlot = params.weightSlot;\n        this.blockHash = copyBytes(params.blockHash);\n        this.chainId = params.chainId;\n    }\n\n    static fromProto(proto: ProtoBlockHeader): BlockHeader {\n        return new BlockHeader({\n            slot: proto.slot ?? 0n,\n            version: proto.version ?? 0,\n            headerSignature: proto.headerSignature?.value,\n            producer: proto.producer?.value,\n            expiryTimestamp: proto.expiryTimestamp,\n            startSlot: proto.startSlot ?? 0n,\n            expiryAfter: proto.expiryAfter,\n            maxBlockSize: proto.maxBlockSize,\n            maxComputeUnits: proto.maxComputeUnits,\n            maxStateUnits: proto.maxStateUnits,\n            bondAmountLockUp: proto.bondAmountLockUp,\n            weightSlot: proto.weightSlot,\n            blockHash: proto.blockHash?.value,\n            chainId: proto.chainId,\n        });\n    }\n\n    withBlockHash(blockHash: Uint8Array): BlockHeader {\n        return new BlockHeader({\n            slot: this.slot,\n            version: this.version,\n            headerSignature: this.headerSignature,\n            producer: this.producer,\n            expiryTimestamp: this.expiryTimestamp,\n            startSlot: this.startSlot,\n            expiryAfter: this.expiryAfter,\n            maxBlockSize: this.maxBlockSize,\n            maxComputeUnits: this.maxComputeUnits,\n            maxStateUnits: this.maxStateUnits,\n            bondAmountLockUp: this.bondAmountLockUp,\n            weightSlot: this.weightSlot,\n            blockHash,\n            chainId: this.chainId,\n        });\n    }\n}\n\nfunction copyBytes(bytes?: Uint8Array): Uint8Array | undefined {\n    if (!bytes) return undefined;\n    const out = new Uint8Array(bytes.length);\n    out.set(bytes);\n    return out;\n}\n","import type { ConsensusStatus } from \"@thru/sdk/proto\";\nimport { ExecutionStatus, type Block as CoreBlock } from \"@thru/sdk/proto\";\nimport { nanosecondsToTimestamp, timestampToNanoseconds } from \"../../utils/utils\";\nimport {\n    BLOCK_FOOTER_SIZE,\n    BLOCK_HEADER_SIZE,\n    BLOCK_HEADER_SIZE_LEGACY,\n    BLOCK_VERSION_V1,\n    PUBKEY_SIZE,\n    SIGNATURE_SIZE,\n    TXN_HEADER_BODY_SIZE,\n    TXN_VERSION_V1,\n} from \"../../wire-format\";\nimport { Transaction } from \"../transactions\";\nimport { BlockFooter } from \"./BlockFooter\";\nimport { BlockHeader } from \"./BlockHeader\";\n\nconst BLOCK_HASH_SIZE = 32;\nconst RESERVED_FOOTER_PADDING = 0n;\nconst SIGNATURE_PREFIX_SIZE = SIGNATURE_SIZE;\n\nexport class Block {\n    readonly header: BlockHeader;\n    readonly footer?: BlockFooter;\n    readonly body?: Uint8Array;\n    readonly consensusStatus?: ConsensusStatus;\n\n    blockTimeNs?: bigint;\n    attestorPayment?: bigint;\n\n    constructor(params: {\n        header: BlockHeader;\n        footer?: BlockFooter;\n        body?: Uint8Array;\n        consensusStatus?: ConsensusStatus;\n    }) {\n        this.header = params.header;\n        this.footer = params.footer;\n        this.body = params.body ? new Uint8Array(params.body) : undefined;\n        this.consensusStatus = params.consensusStatus;\n    }\n\n    static fromProto(proto: CoreBlock): Block {\n        if (!proto.header) {\n            throw new Error(\"Block proto missing header\");\n        }\n\n        const rawBody = proto.body ? new Uint8Array(proto.body) : undefined;\n        const transactionBody = Block.extractTransactionBody(rawBody, !!proto.footer);\n\n        const block = new Block({\n            header: BlockHeader.fromProto(proto.header),\n            footer: proto.footer ? BlockFooter.fromProto(proto.footer) : undefined,\n            body: transactionBody,\n            consensusStatus: proto.consensusStatus,\n        });\n\n        // The proto block header carries block_time (epoch timestamp); surface it\n        // as blockTimeNs so list/stream consumers get it without a raw-block fetch.\n        // (fromWire sets blockTimeNs directly from the wire header instead.)\n        if (proto.header.blockTime) {\n            block.blockTimeNs = timestampToNanoseconds(proto.header.blockTime);\n        }\n\n        block.attestorPayment = block.footer?.attestorPayment ?? 0n;\n\n        return block;\n    }\n\n    static fromWire(data: Uint8Array): Block {\n        // Try parsing with current header size first, then fall back to legacy\n        const result = Block.tryParseWireWithHeaderSize(data, BLOCK_HEADER_SIZE);\n        if (result) {\n            return result;\n        }\n\n        // Try legacy header size (160 bytes, before weight_slot was added)\n        const legacyResult = Block.tryParseWireWithHeaderSize(data, BLOCK_HEADER_SIZE_LEGACY);\n        if (legacyResult) {\n            return legacyResult;\n        }\n\n        // If both fail, throw with the current expected size\n        throw new Error(`Block data too short: ${data.length} bytes (expected at least ${BLOCK_HEADER_SIZE})`);\n    }\n\n    private static tryParseWireWithHeaderSize(data: Uint8Array, headerSize: number): Block | null {\n        if (data.length < headerSize) {\n            return null;\n        }\n\n        const headerBytes = data.slice(0, headerSize);\n        let header: BlockHeader;\n        let blockTimeNs: bigint;\n\n        try {\n            const parsed = this.parseHeaderWithSize(headerBytes, headerSize);\n            header = parsed.header;\n            blockTimeNs = parsed.blockTimeNs;\n        } catch {\n            return null;\n        }\n\n        if (header.version !== BLOCK_VERSION_V1) {\n            return null;\n        }\n\n        let finalHeader = header;\n        let footer: BlockFooter | undefined;\n        let footerInfo: { blockHash: Uint8Array; attestorPayment: bigint } | undefined;\n        let body: Uint8Array | undefined;\n\n        if (data.length >= headerSize + BLOCK_FOOTER_SIZE) {\n            const footerOffset = data.length - BLOCK_FOOTER_SIZE;\n            const footerBytes = data.slice(footerOffset);\n\n            try {\n                const parsedFooter = this.parseFooter(footerBytes);\n                footer = parsedFooter.footer;\n                footerInfo = { blockHash: parsedFooter.blockHash, attestorPayment: parsedFooter.attestorPayment };\n                finalHeader = header.withBlockHash(parsedFooter.blockHash);\n            } catch {\n                return null;\n            }\n\n            body = footerOffset > headerSize ? data.slice(headerSize, footerOffset) : undefined;\n        } else {\n            body = data.length > headerSize ? data.slice(headerSize) : undefined;\n        }\n\n        // Validate that the extracted body looks like valid transactions\n        if (body && body.length > 0 && !Block.looksLikeValidTransactionBody(body)) {\n            return null;\n        }\n\n        const block = new Block({ header: finalHeader, footer, body });\n        block.blockTimeNs = blockTimeNs;\n        block.attestorPayment = footerInfo?.attestorPayment ?? 0n;\n\n        return block;\n    }\n\n    toWire(): Uint8Array {\n        const headerBytes = this.serializeHeader();\n        const bodyBytes = this.body ?? new Uint8Array(0);\n        const footerBytes = this.footer ? this.serializeFooter() : undefined;\n\n        const totalLength = headerBytes.length + bodyBytes.length + (footerBytes?.length ?? 0);\n        const result = new Uint8Array(totalLength);\n\n        result.set(headerBytes, 0);\n        result.set(bodyBytes, headerBytes.length);\n\n        if (footerBytes) {\n            result.set(footerBytes, headerBytes.length + bodyBytes.length);\n        }\n\n        return result;\n    }\n\n    getTransactions(): Transaction[] {\n        if (!this.body || this.body.length === 0) {\n            return [];\n        }\n\n        return Block.parseTransactionsFromBody(this.body);\n    }\n\n    private static extractTransactionBody(raw: Uint8Array | undefined, hasFooter: boolean): Uint8Array | undefined {\n        if (!raw || raw.length === 0) {\n            return undefined;\n        }\n\n        // Try current header size first (168 bytes with weight_slot)\n        const bodyWithCurrentHeader = Block.extractWithHeaderSize(raw, hasFooter, BLOCK_HEADER_SIZE);\n        if (bodyWithCurrentHeader && bodyWithCurrentHeader.length > 0 && Block.looksLikeValidTransactionBody(bodyWithCurrentHeader)) {\n            return bodyWithCurrentHeader;\n        }\n\n        // Try legacy header size (160 bytes without weight_slot, for blocks before Dec 2025)\n        const bodyWithLegacyHeader = Block.extractWithHeaderSize(raw, hasFooter, BLOCK_HEADER_SIZE_LEGACY);\n        if (bodyWithLegacyHeader && bodyWithLegacyHeader.length > 0 && Block.looksLikeValidTransactionBody(bodyWithLegacyHeader)) {\n            return bodyWithLegacyHeader;\n        }\n\n        // If stripping header/footer doesn't produce any body, return undefined\n        return undefined;\n    }\n\n    private static extractWithHeaderSize(\n        raw: Uint8Array,\n        hasFooter: boolean,\n        headerSize: number,\n    ): Uint8Array | undefined {\n        if (raw.length <= headerSize) {\n            return undefined;\n        }\n\n        const footerSize = hasFooter && raw.length >= headerSize + BLOCK_FOOTER_SIZE ? BLOCK_FOOTER_SIZE : 0;\n        const start = headerSize;\n        const end = Math.max(start, raw.length - footerSize);\n\n        if (end <= start) {\n            return undefined;\n        }\n\n        return raw.slice(start, end);\n    }\n\n    /**\n     * Checks if the data looks like a valid transaction body.\n     * Uses heuristics to detect if we've correctly offset into the block data.\n     * Wire format: header (112 bytes) + body + signature (64 bytes at end)\n     * This is a lenient heuristic for format detection - version/flag validation\n     * happens in Transaction.parseWire.\n     */\n    private static looksLikeValidTransactionBody(data: Uint8Array): boolean {\n        const MIN_TXN_SIZE = TXN_HEADER_BODY_SIZE + SIGNATURE_SIZE; // 176 bytes minimum\n\n        if (data.length < MIN_TXN_SIZE) {\n            return false;\n        }\n\n        // Read account counts (little-endian uint16) at offsets 2-5\n        const readwriteCount = data[2] | (data[3] << 8);\n        const readonlyCount = data[4] | (data[5] << 8);\n\n        const totalAccounts = readwriteCount + readonlyCount;\n        if (totalAccounts > 1024) {\n            return false;\n        }\n\n        // Read instruction data size at offsets 6-7\n        const instrDataSize = data[6] | (data[7] << 8);\n\n        // Calculate expected minimum transaction size (header + accounts + instr + signature)\n        const expectedMinSize = TXN_HEADER_BODY_SIZE + totalAccounts * PUBKEY_SIZE + instrDataSize + SIGNATURE_SIZE;\n\n        if (data.length < expectedMinSize) {\n            return false;\n        }\n\n        return true;\n    }\n\n    private serializeHeader(): Uint8Array {\n        const buffer = new ArrayBuffer(BLOCK_HEADER_SIZE);\n        const bytes = new Uint8Array(buffer);\n        const view = new DataView(buffer);\n\n        const signature = normalizeBytes(this.header.headerSignature, SIGNATURE_SIZE);\n        bytes.set(signature, 0);\n\n        let offset = SIGNATURE_PREFIX_SIZE;\n        const version = this.header.version ?? BLOCK_VERSION_V1;\n        view.setUint8(offset, version & 0xff);\n        offset += 1;\n\n        bytes.fill(0, offset, offset + 5); // padding (5 bytes)\n        offset += 5;\n\n        view.setUint16(offset, this.header.chainId ?? 0, true);\n        offset += 2;\n\n        const producer = normalizeBytes(this.header.producer, PUBKEY_SIZE);\n        bytes.set(producer, offset);\n        offset += PUBKEY_SIZE;\n\n        const bondAmountLockUp = this.header.bondAmountLockUp ?? 0n;\n        view.setBigUint64(offset, bondAmountLockUp, true);\n        offset += 8;\n\n        const expiryTimestampNs = timestampToNanoseconds(this.header.expiryTimestamp);\n        view.setBigUint64(offset, expiryTimestampNs, true);\n        offset += 8;\n\n        const startSlot = this.header.startSlot ?? 0n;\n        view.setBigUint64(offset, startSlot, true);\n        offset += 8;\n\n        view.setUint32(offset, this.header.expiryAfter ?? 0, true);\n        offset += 4;\n\n        view.setUint32(offset, this.header.maxBlockSize ?? 0, true);\n        offset += 4;\n\n        view.setBigUint64(offset, this.header.maxComputeUnits ?? 0n, true);\n        offset += 8;\n\n        view.setUint32(offset, this.header.maxStateUnits ?? 0, true);\n        offset += 4;\n\n        bytes.fill(0, offset, offset + 4); // reserved\n        offset += 4;\n\n        view.setBigUint64(offset, this.header.weightSlot ?? 0n, true);\n        offset += 8;\n\n        // If blockTimeNs is not available, write 0 instead of defaulting to expiryTimestamp\n        // This preserves the distinction between \"not available\" and \"equals expiryTimestamp\"\n        const blockTimeNs = this.blockTimeNs ?? 0n;\n        view.setBigUint64(offset, blockTimeNs, true);\n\n        return bytes;\n    }\n\n    private serializeFooter(): Uint8Array {\n        const buffer = new ArrayBuffer(BLOCK_FOOTER_SIZE);\n        const bytes = new Uint8Array(buffer);\n        const view = new DataView(buffer);\n\n        const attestorPayment =\n            this.footer?.attestorPayment ??\n            this.attestorPayment ??\n            RESERVED_FOOTER_PADDING;\n        view.setBigUint64(0, attestorPayment, true);\n\n        const blockHash = normalizeBytes(this.header.blockHash, BLOCK_HASH_SIZE);\n        bytes.set(blockHash, 8);\n\n        const signature = normalizeBytes(this.footer?.signature, SIGNATURE_SIZE);\n        bytes.set(signature, 8 + BLOCK_HASH_SIZE);\n\n        return bytes;\n    }\n\n    private static parseHeader(bytes: Uint8Array): { header: BlockHeader; blockTimeNs: bigint } {\n        if (bytes.length !== BLOCK_HEADER_SIZE) {\n            throw new Error(`Invalid block header size: ${bytes.length}`);\n        }\n\n        const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);\n        let offset = 0;\n\n        const signature = bytes.slice(offset, offset + SIGNATURE_SIZE);\n        offset += SIGNATURE_SIZE;\n\n        const version = view.getUint8(offset);\n        offset += 1;\n\n        offset += 5; // padding (5 bytes)\n\n        const chainId = view.getUint16(offset, true);\n        offset += 2;\n\n        const producer = bytes.slice(offset, offset + PUBKEY_SIZE);\n        offset += PUBKEY_SIZE;\n\n        const bondAmountLockUp = view.getBigUint64(offset, true);\n        offset += 8;\n\n        const expiryTimestampNs = view.getBigUint64(offset, true);\n        offset += 8;\n\n        const startSlot = view.getBigUint64(offset, true);\n        offset += 8;\n\n        const expiryAfter = view.getUint32(offset, true);\n        offset += 4;\n\n        const maxBlockSize = view.getUint32(offset, true);\n        offset += 4;\n\n        const maxComputeUnits = view.getBigUint64(offset, true);\n        offset += 8;\n\n        const maxStateUnits = view.getUint32(offset, true);\n        offset += 4;\n\n        offset += 4; // reserved\n\n        const weightSlot = view.getBigUint64(offset, true);\n        offset += 8;\n\n        const blockTimeNs = view.getBigUint64(offset, true);\n\n        const header = new BlockHeader({\n            slot: startSlot,\n            version,\n            headerSignature: signature,\n            producer,\n            expiryTimestamp: nanosecondsToTimestamp(expiryTimestampNs),\n            startSlot,\n            expiryAfter,\n            maxBlockSize,\n            maxComputeUnits,\n            maxStateUnits,\n            bondAmountLockUp,\n            weightSlot,\n            chainId,\n        });\n\n        return { header, blockTimeNs };\n    }\n\n    /**\n     * Parses a block header with a specific expected size.\n     * Handles both current (168 bytes with weight_slot) and legacy (160 bytes without weight_slot) formats.\n     */\n    private static parseHeaderWithSize(\n        bytes: Uint8Array,\n        expectedSize: number,\n    ): { header: BlockHeader; blockTimeNs: bigint } {\n        if (bytes.length !== expectedSize) {\n            throw new Error(`Invalid block header size: ${bytes.length}, expected ${expectedSize}`);\n        }\n\n        const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);\n        let offset = 0;\n\n        const signature = bytes.slice(offset, offset + SIGNATURE_SIZE);\n        offset += SIGNATURE_SIZE;\n\n        const version = view.getUint8(offset);\n        offset += 1;\n\n        offset += 5; // padding\n\n        const chainId = view.getUint16(offset, true);\n        offset += 2;\n\n        const producer = bytes.slice(offset, offset + PUBKEY_SIZE);\n        offset += PUBKEY_SIZE;\n\n        const bondAmountLockUp = view.getBigUint64(offset, true);\n        offset += 8;\n\n        const expiryTimestampNs = view.getBigUint64(offset, true);\n        offset += 8;\n\n        const startSlot = view.getBigUint64(offset, true);\n        offset += 8;\n\n        const expiryAfter = view.getUint32(offset, true);\n        offset += 4;\n\n        const maxBlockSize = view.getUint32(offset, true);\n        offset += 4;\n\n        const maxComputeUnits = view.getBigUint64(offset, true);\n        offset += 8;\n\n        const maxStateUnits = view.getUint32(offset, true);\n        offset += 4;\n\n        offset += 4; // reserved\n\n        // Layout differs between current and legacy formats:\n        //   Current (168 bytes): ... reserved(4) | weightSlot(8) | blockTimeNs(8)\n        //   Legacy  (160 bytes): ... reserved(4) | blockTimeNs(8)\n        let weightSlot: bigint | undefined;\n        let blockTimeNs: bigint;\n        if (expectedSize === BLOCK_HEADER_SIZE) {\n            weightSlot = view.getBigUint64(offset, true);\n            offset += 8;\n            blockTimeNs = view.getBigUint64(offset, true);\n        } else {\n            blockTimeNs = view.getBigUint64(offset, true);\n        }\n\n        const header = new BlockHeader({\n            slot: startSlot,\n            version,\n            headerSignature: signature,\n            producer,\n            expiryTimestamp: nanosecondsToTimestamp(expiryTimestampNs),\n            startSlot,\n            expiryAfter,\n            maxBlockSize,\n            maxComputeUnits,\n            maxStateUnits,\n            bondAmountLockUp,\n            weightSlot,\n            chainId,\n        });\n\n        return { header, blockTimeNs };\n    }\n\n    private static parseFooter(bytes: Uint8Array): {\n        footer: BlockFooter;\n        blockHash: Uint8Array;\n        attestorPayment: bigint;\n    } {\n        if (bytes.length !== BLOCK_FOOTER_SIZE) {\n            throw new Error(`Invalid block footer size: ${bytes.length}`);\n        }\n\n        const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);\n        let offset = 0;\n\n        const attestorPayment = view.getBigUint64(offset, true);\n        offset += 8;\n\n        const blockHash = bytes.slice(offset, offset + BLOCK_HASH_SIZE);\n        offset += BLOCK_HASH_SIZE;\n\n        const signature = bytes.slice(offset, offset + SIGNATURE_SIZE);\n\n        const footer = new BlockFooter({\n            signature,\n            status: ExecutionStatus.UNSPECIFIED,\n            consumedComputeUnits: 0n,\n            consumedStateUnits: 0,\n            attestorPayment,\n        });\n\n        return { footer, blockHash, attestorPayment };\n    }\n\n    private static parseTransactionsFromBody(body: Uint8Array): Transaction[] {\n        const transactions: Transaction[] = [];\n        let offset = 0;\n\n        while (offset < body.length) {\n            const slice = body.subarray(offset);\n            // Stop parsing if remaining bytes are too short for a transaction\n            // Wire format: header (112 bytes) + body + signature (64 bytes)\n            // Minimum transaction size: 112 header + 64 signature = 176 bytes\n            if (slice.length < 176) {\n                // Remaining bytes are likely padding or the block signature\n                break;\n            }\n            try {\n                const { transaction, size } = Transaction.parseWire(slice);\n                transactions.push(transaction);\n                offset += size;\n            } catch {\n                // Stop parsing on error - remaining bytes may be padding\n                break;\n            }\n        }\n\n        return transactions;\n    }\n}\n\nfunction normalizeBytes(bytes: Uint8Array | undefined, size: number): Uint8Array {\n    if (!bytes || bytes.length !== size) {\n        return new Uint8Array(size);\n    }\n    return bytes;\n}\n","import type { Event as QueryEvent } from \"@thru/sdk/proto\";\nimport type { StreamEventsResponse } from \"@thru/sdk/proto\";\nimport type { Timestamp } from \"@bufbuild/protobuf/wkt\";\nimport { timestampToNanoseconds } from \"../../utils/utils\";\n\nexport interface ChainEventParams {\n    id: string;\n    transactionSignature?: Uint8Array;\n    program?: Uint8Array;\n    payload?: Uint8Array;\n    slot?: bigint;\n    callIndex?: number;\n    programIndex?: number;\n    payloadSize?: number;\n    timestampNs?: bigint;\n    blockTimestampNs?: bigint;\n    feePayer?: Uint8Array;\n    blockOffset?: number;\n}\n\nexport class ChainEvent {\n    readonly id: string;\n    readonly transactionSignature?: Uint8Array;\n    readonly program?: Uint8Array;\n    readonly payload?: Uint8Array;\n    readonly slot?: bigint;\n    readonly callIndex?: number;\n    readonly programIndex?: number;\n    readonly payloadSize?: number;\n    /** Time the node published the live event; set only by fromStream. */\n    readonly timestampNs?: bigint;\n    /** Header time of the block holding the event. */\n    readonly blockTimestampNs?: bigint;\n    readonly feePayer?: Uint8Array;\n    readonly blockOffset?: number;\n\n    constructor(params: ChainEventParams) {\n        if (!params.id) {\n            throw new Error(\"ChainEvent id is required\");\n        }\n        this.id = params.id;\n        this.transactionSignature = copyBytes(params.transactionSignature);\n        this.program = copyBytes(params.program);\n        this.payload = copyBytes(params.payload);\n        this.slot = params.slot;\n        this.callIndex = params.callIndex;\n        this.programIndex = params.programIndex;\n        this.payloadSize = params.payloadSize;\n        this.timestampNs = params.timestampNs;\n        this.blockTimestampNs = params.blockTimestampNs;\n        this.feePayer = copyBytes(params.feePayer);\n        this.blockOffset = params.blockOffset;\n    }\n\n    static fromQuery(proto: QueryEvent): ChainEvent {\n        return new ChainEvent({\n            id: proto.eventId,\n            transactionSignature: proto.transactionSignature?.value,\n            program: proto.program?.value,\n            payload: proto.payload,\n            slot: proto.slot,\n            callIndex: proto.callIdx,\n            programIndex: proto.programIdx,\n            payloadSize: proto.payloadSize,\n            blockTimestampNs: optionalNanoseconds(proto.timestamp),\n            feePayer: proto.feePayer?.value,\n            blockOffset: proto.blockOffset,\n        });\n    }\n\n    static fromStream(proto: StreamEventsResponse): ChainEvent {\n        return new ChainEvent({\n            id: proto.eventId,\n            transactionSignature: proto.signature?.value,\n            program: proto.program?.value,\n            payload: proto.payload,\n            slot: proto.slot,\n            callIndex: proto.callIdx,\n            timestampNs: timestampToNanoseconds(proto.timestamp),\n            blockTimestampNs: optionalNanoseconds(proto.blockTimestamp),\n            programIndex: proto.programIdx,\n            feePayer: proto.feePayer?.value,\n            blockOffset: proto.blockOffset,\n        });\n    }\n}\n\nfunction optionalNanoseconds(timestamp?: Timestamp): bigint | undefined {\n    return timestamp ? timestampToNanoseconds(timestamp) : undefined;\n}\n\nfunction copyBytes(input?: Uint8Array): Uint8Array | undefined {\n    if (!input) {\n        return undefined;\n    }\n    const copy = new Uint8Array(input.length);\n    copy.set(input);\n    return copy;\n}\n","import { create } from \"@bufbuild/protobuf\";\n\nimport {\n    FilterParamValueSchema,\n    FilterSchema,\n    Filter as ProtoFilter,\n    FilterParamValue as ProtoFilterParamValue,\n} from \"@thru/sdk/proto\";\n\nimport { Pubkey, Signature, type PubkeyInput, type SignatureInput } from \"../primitives\";\n\nexport type FilterParamValueCase =\n    | \"stringValue\"\n    | \"bytesValue\"\n    | \"boolValue\"\n    | \"intValue\"\n    | \"doubleValue\"\n    | \"uintValue\"\n    | \"pubkeyValue\"\n    | \"signatureValue\"\n    | \"taPubkeyValue\"\n    | \"tsSignatureValue\";\n\nfunction copyBytes(source: Uint8Array): Uint8Array {\n    const bytes = new Uint8Array(source.length);\n    bytes.set(source);\n    return bytes;\n}\n\nfunction toUint(value: number | bigint): bigint {\n    if (typeof value === \"bigint\") {\n        if (value < 0n) {\n            throw new Error(\"FilterParamValue.uint requires a non-negative value\");\n        }\n        return value;\n    }\n    if (!Number.isFinite(value) || !Number.isInteger(value) || value < 0) {\n        throw new Error(\"FilterParamValue.uint requires a non-negative integer\");\n    }\n    return BigInt(value);\n}\n\nexport class FilterParamValue {\n    private readonly case?: FilterParamValueCase;\n    private readonly value?: string | Uint8Array | boolean | bigint | number;\n\n    private constructor(params: {\n        case?: FilterParamValueCase;\n        value?: string | Uint8Array | boolean | bigint | number;\n    }) {\n        this.case = params.case;\n\n        if (!params.case) {\n            this.value = undefined;\n            return;\n        }\n\n        switch (params.case) {\n            case \"stringValue\":\n                if (typeof params.value !== \"string\") {\n                    throw new Error(\"FilterParamValue.string requires a string value\");\n                }\n                this.value = params.value;\n                return;\n            case \"bytesValue\":\n                if (!(params.value instanceof Uint8Array)) {\n                    throw new Error(\"FilterParamValue.bytes requires a Uint8Array value\");\n                }\n                this.value = copyBytes(params.value);\n                return;\n            case \"boolValue\":\n                if (typeof params.value !== \"boolean\") {\n                    throw new Error(\"FilterParamValue.bool requires a boolean value\");\n                }\n                this.value = params.value;\n                return;\n            case \"intValue\":\n                if (typeof params.value !== \"bigint\") {\n                    throw new Error(\"FilterParamValue.int requires a bigint value\");\n                }\n                this.value = params.value;\n                return;\n            case \"doubleValue\":\n                if (typeof params.value !== \"number\") {\n                    throw new Error(\"FilterParamValue.double requires a number value\");\n                }\n                this.value = params.value;\n                return;\n            case \"uintValue\":\n                if (typeof params.value !== \"bigint\") {\n                    throw new Error(\"FilterParamValue.uint requires a bigint value\");\n                }\n                this.value = params.value;\n                return;\n            case \"pubkeyValue\":\n                if (!(params.value instanceof Uint8Array)) {\n                    throw new Error(\"FilterParamValue.pubkey requires a Uint8Array value\");\n                }\n                this.value = copyBytes(params.value);\n                return;\n            case \"signatureValue\":\n                if (!(params.value instanceof Uint8Array)) {\n                    throw new Error(\"FilterParamValue.signature requires a Uint8Array value\");\n                }\n                this.value = copyBytes(params.value);\n                return;\n            case \"taPubkeyValue\":\n                if (typeof params.value !== \"string\") {\n                    throw new Error(\"FilterParamValue.taPubkey requires a string value\");\n                }\n                this.value = params.value;\n                return;\n            case \"tsSignatureValue\":\n                if (typeof params.value !== \"string\") {\n                    throw new Error(\"FilterParamValue.tsSignature requires a string value\");\n                }\n                this.value = params.value;\n                return;\n            default:\n                this.value = undefined;\n        }\n    }\n\n    static none(): FilterParamValue {\n        return new FilterParamValue({});\n    }\n\n    static string(value: string): FilterParamValue {\n        return new FilterParamValue({ case: \"stringValue\", value });\n    }\n\n    static bytes(value: Uint8Array): FilterParamValue {\n        return new FilterParamValue({ case: \"bytesValue\", value });\n    }\n\n    static bool(value: boolean): FilterParamValue {\n        return new FilterParamValue({ case: \"boolValue\", value });\n    }\n\n    static int(value: bigint): FilterParamValue {\n        return new FilterParamValue({ case: \"intValue\", value });\n    }\n\n    static double(value: number): FilterParamValue {\n        if (!Number.isFinite(value)) {\n            throw new Error(\"FilterParamValue.double requires a finite number\");\n        }\n        return new FilterParamValue({ case: \"doubleValue\", value });\n    }\n\n    static uint(value: number | bigint): FilterParamValue {\n        return new FilterParamValue({ case: \"uintValue\", value: toUint(value) });\n    }\n\n    static pubkey(value: PubkeyInput): FilterParamValue {\n        return new FilterParamValue({\n            case: \"pubkeyValue\",\n            value: Pubkey.from(value).toBytes(),\n        });\n    }\n\n    static signature(value: SignatureInput): FilterParamValue {\n        return new FilterParamValue({\n            case: \"signatureValue\",\n            value: Signature.from(value).toBytes(),\n        });\n    }\n\n    static taPubkey(value: PubkeyInput | string): FilterParamValue {\n        return new FilterParamValue({\n            case: \"taPubkeyValue\",\n            value: Pubkey.from(value).toThruFmt(),\n        });\n    }\n\n    static tsSignature(value: SignatureInput): FilterParamValue {\n        return new FilterParamValue({\n            case: \"tsSignatureValue\",\n            value: Signature.from(value).toThruFmt(),\n        });\n    }\n\n    static fromProto(proto: ProtoFilterParamValue): FilterParamValue {\n        const kind = proto.kind;\n        if (!kind.case) {\n            return FilterParamValue.none();\n        }\n\n        switch (kind.case) {\n            case \"stringValue\":\n                return FilterParamValue.string(kind.value);\n            case \"bytesValue\":\n                return FilterParamValue.bytes(kind.value);\n            case \"boolValue\":\n                return FilterParamValue.bool(kind.value);\n            case \"intValue\":\n                return FilterParamValue.int(kind.value);\n            case \"doubleValue\":\n                return FilterParamValue.double(kind.value);\n            case \"uintValue\":\n                return FilterParamValue.uint(kind.value);\n            case \"pubkeyValue\":\n                return FilterParamValue.pubkey(Pubkey.fromProtoPubkey(kind.value).toBytes());\n            case \"signatureValue\":\n                return FilterParamValue.signature(Signature.fromProtoSignature(kind.value).toBytes());\n            case \"taPubkeyValue\":\n                return FilterParamValue.taPubkey(Pubkey.fromProtoTaPubkey(kind.value).toThruFmt());\n            case \"tsSignatureValue\":\n                return FilterParamValue.tsSignature(Signature.fromProtoTsSignature(kind.value).toThruFmt());\n            default:\n                return FilterParamValue.none();\n        }\n    }\n\n    toProto(): ProtoFilterParamValue {\n        if (!this.case) {\n            return create(FilterParamValueSchema);\n        }\n\n        switch (this.case) {\n            case \"stringValue\":\n                return create(FilterParamValueSchema, {\n                    kind: {\n                        case: \"stringValue\",\n                        value: this.value as string,\n                    },\n                });\n            case \"bytesValue\":\n                return create(FilterParamValueSchema, {\n                    kind: {\n                        case: \"bytesValue\",\n                        value: copyBytes(this.value as Uint8Array),\n                    },\n                });\n            case \"boolValue\":\n                return create(FilterParamValueSchema, {\n                    kind: {\n                        case: \"boolValue\",\n                        value: this.value as boolean,\n                    },\n                });\n            case \"intValue\":\n                return create(FilterParamValueSchema, {\n                    kind: {\n                        case: \"intValue\",\n                        value: this.value as bigint,\n                    },\n                });\n            case \"doubleValue\":\n                return create(FilterParamValueSchema, {\n                    kind: {\n                        case: \"doubleValue\",\n                        value: this.value as number,\n                    },\n                });\n            case \"uintValue\":\n                return create(FilterParamValueSchema, {\n                    kind: {\n                        case: \"uintValue\",\n                        value: this.value as bigint,\n                    },\n                });\n            case \"pubkeyValue\":\n                return create(FilterParamValueSchema, {\n                    kind: {\n                        case: \"pubkeyValue\",\n                        value: Pubkey.from(this.value as Uint8Array).toProtoPubkey(),\n                    },\n                });\n            case \"signatureValue\":\n                return create(FilterParamValueSchema, {\n                    kind: {\n                        case: \"signatureValue\",\n                        value: Signature.from(this.value as Uint8Array).toProtoSignature(),\n                    },\n                });\n            case \"taPubkeyValue\":\n                return create(FilterParamValueSchema, {\n                    kind: {\n                        case: \"taPubkeyValue\",\n                        value: Pubkey.from(this.value as string).toProtoTaPubkey(),\n                    },\n                });\n            case \"tsSignatureValue\":\n                return create(FilterParamValueSchema, {\n                    kind: {\n                        case: \"tsSignatureValue\",\n                        value: Signature.from(this.value as string).toProtoTsSignature(),\n                    },\n                });\n            default:\n                throw new Error(\"FilterParamValue has an unknown kind\");\n        }\n    }\n\n    getCase(): FilterParamValueCase | undefined {\n        return this.case;\n    }\n\n    getString(): string | undefined {\n        return this.case === \"stringValue\" ? (this.value as string) : undefined;\n    }\n\n    getBytes(): Uint8Array | undefined {\n        if (this.case !== \"bytesValue\" || !(this.value instanceof Uint8Array)) {\n            return undefined;\n        }\n        return copyBytes(this.value);\n    }\n\n    getBool(): boolean | undefined {\n        return this.case === \"boolValue\" ? (this.value as boolean) : undefined;\n    }\n\n    getInt(): bigint | undefined {\n        return this.case === \"intValue\" ? (this.value as bigint) : undefined;\n    }\n\n    getUint(): bigint | undefined {\n        return this.case === \"uintValue\" ? (this.value as bigint) : undefined;\n    }\n\n    getDouble(): number | undefined {\n        return this.case === \"doubleValue\" ? (this.value as number) : undefined;\n    }\n\n    getPubkey(): Uint8Array | undefined {\n        if (this.case !== \"pubkeyValue\") {\n            return undefined;\n        }\n        return copyBytes(this.value as Uint8Array);\n    }\n\n    getSignature(): Uint8Array | undefined {\n        if (this.case !== \"signatureValue\") {\n            return undefined;\n        }\n        return copyBytes(this.value as Uint8Array);\n    }\n\n    getTaPubkey(): string | undefined {\n        return this.case === \"taPubkeyValue\" ? (this.value as string) : undefined;\n    }\n\n    getTsSignature(): string | undefined {\n        return this.case === \"tsSignatureValue\" ? (this.value as string) : undefined;\n    }\n}\n\nexport interface FilterParamsInit {\n    [key: string]: FilterParamValue;\n}\n\nexport class Filter {\n    readonly expression?: string;\n    private readonly params: Map<string, FilterParamValue>;\n\n    constructor(init: { expression?: string; params?: FilterParamsInit | Map<string, FilterParamValue> | Iterable<[string, FilterParamValue]> } = {}) {\n        this.expression = init.expression;\n        this.params = new Map();\n\n        if (!init.params) {\n            return;\n        }\n\n        if (init.params instanceof Map) {\n            for (const [key, value] of init.params.entries()) {\n                this.setParamInternal(key, value);\n            }\n            return;\n        }\n\n        if (typeof (init.params as FilterParamsInit) === \"object\" && !Array.isArray(init.params)) {\n            for (const [key, value] of Object.entries(init.params as FilterParamsInit)) {\n                this.setParamInternal(key, value);\n            }\n            return;\n        }\n\n        for (const [key, value] of init.params as Iterable<[string, FilterParamValue]>) {\n            this.setParamInternal(key, value);\n        }\n    }\n\n    static fromProto(proto: ProtoFilter): Filter {\n        const params = Object.entries(proto.params ?? {}).map(([key, value]) => [key, FilterParamValue.fromProto(value)] as [string, FilterParamValue]);\n        return new Filter({\n            expression: proto.expression,\n            params,\n        });\n    }\n\n    toProto(): ProtoFilter {\n        const protoParams: { [key: string]: ProtoFilterParamValue } = {};\n        for (const [key, value] of this.params.entries()) {\n            protoParams[key] = value.toProto();\n        }\n\n        return create(FilterSchema, {\n            expression: this.expression,\n            params: protoParams,\n        });\n    }\n\n    hasParam(name: string): boolean {\n        return this.params.has(name);\n    }\n\n    getParam(name: string): FilterParamValue | undefined {\n        const param = this.params.get(name);\n        return param;\n    }\n\n    listParams(): string[] {\n        return Array.from(this.params.keys());\n    }\n\n    entries(): [string, FilterParamValue][] {\n        return Array.from(this.params.entries());\n    }\n\n    withExpression(expression?: string): Filter {\n        return new Filter({ expression, params: this.params });\n    }\n\n    withParam(name: string, value: FilterParamValue): Filter {\n        const params = new Map(this.params);\n        params.set(name, value);\n        return new Filter({ expression: this.expression, params });\n    }\n\n    withoutParam(name: string): Filter {\n        if (!this.params.has(name)) {\n            return this;\n        }\n        const params = new Map(this.params);\n        params.delete(name);\n        return new Filter({ expression: this.expression, params });\n    }\n\n    private setParamInternal(name: string, value: FilterParamValue): void {\n        if (!(value instanceof FilterParamValue)) {\n            throw new Error(`Filter parameter \"${name}\" must be a FilterParamValue`);\n        }\n        this.params.set(name, value);\n    }\n}\n\n\n","import { create } from \"@bufbuild/protobuf\";\n\nimport type { ThruClientContext } from \"../core/client\";\nimport { withCallOptions } from \"../core/client\";\nimport { DEFAULT_ACCOUNT_VIEW, DEFAULT_BLOCK_VIEW, DEFAULT_MIN_CONSENSUS } from \"../defaults\";\nimport { toStreamAccountUpdate, type StreamAccountUpdate } from \"../domain/accounts\";\nimport { Block } from \"../domain/blocks\";\nimport { ChainEvent } from \"../domain/events\";\nimport { Filter, FilterParamValue } from \"../domain/filters\";\nimport { HeightSnapshot } from \"../domain/height\";\nimport { Pubkey, Signature, type PubkeyInput, type SignatureInput } from \"../domain/primitives\";\nimport type { StreamTransactionUpdate, TrackTransactionUpdate } from \"../domain/transactions\";\nimport { toStreamTransactionUpdate, toTrackTransactionUpdate } from \"../domain/transactions\";\nimport {\n    ConsensusStatus,\n    type AccountView,\n    type BlockView,\n    type NodeRecord,\n    StreamAccountUpdatesRequestSchema,\n    StreamBlocksRequestSchema,\n    StreamEventsRequestSchema,\n    StreamHeightRequestSchema,\n    StreamNodeRecordsRequestSchema,\n    StreamSlotMetricsRequestSchema,\n    type StreamSlotMetricsResponse,\n    StreamTransactionsRequestSchema,\n    TrackTransactionRequestSchema,\n} from \"@thru/sdk/proto\";\nimport type { Timestamp } from \"@bufbuild/protobuf/wkt\";\n\nexport type { StreamTransactionUpdate, TrackTransactionUpdate } from \"../domain/transactions\";\n\nexport interface TrackTransactionOptions {\n    timeoutMs?: number;\n    signal?: AbortSignal;\n}\n\nexport interface StreamBlocksOptions {\n    startSlot?: bigint;\n    filter?: Filter;\n    view?: BlockView;\n    minConsensus?: ConsensusStatus;\n    signal?: AbortSignal;\n}\n\nexport interface StreamBlocksResult {\n    block: Block;\n}\n\nexport function streamBlocks(\n    ctx: ThruClientContext,\n    options: StreamBlocksOptions = {},\n): AsyncIterable<StreamBlocksResult> {\n    const request = create(StreamBlocksRequestSchema, {\n        startSlot: options.startSlot,\n        filter: options.filter?.toProto(),\n        view: options.view ?? DEFAULT_BLOCK_VIEW,\n        minConsensus: options.minConsensus ?? DEFAULT_MIN_CONSENSUS,\n    });\n\n    const iterable = ctx.streaming.streamBlocks(request, withCallOptions(ctx, { signal: options.signal }));\n\n    async function* mapper() {\n        for await (const response of iterable) {\n            if (!response.block) {\n                continue;\n            }\n            yield { block: Block.fromProto(response.block) };\n        }\n    }\n\n    return mapper();\n}\n\nexport interface StreamAccountUpdatesOptions {\n    view?: AccountView;\n    filter?: Filter;\n    signal?: AbortSignal;\n}\n\nexport interface StreamAccountUpdatesResult {\n    update: StreamAccountUpdate;\n}\n\nexport function streamAccountUpdates(\n    ctx: ThruClientContext,\n    address: PubkeyInput,\n    options: StreamAccountUpdatesOptions = {},\n): AsyncIterable<StreamAccountUpdatesResult> {\n    // Build address filter - StreamAccountUpdatesRequest now uses filter-based approach\n    const addressBytes = Pubkey.from(address).toBytes();\n    const addressFilter = new Filter({\n        expression: \"account_address.value == params.address\",\n        params: {\n            address: FilterParamValue.bytes(addressBytes),\n        },\n    });\n\n    // Merge with user-provided filter if any\n    let mergedFilter = addressFilter;\n    if (options.filter) {\n        // Combine expressions and params\n        const combinedParams: { [key: string]: FilterParamValue } = {};\n        for (const [key, value] of addressFilter.entries()) {\n            combinedParams[key] = value;\n        }\n        for (const [key, value] of options.filter.entries()) {\n            combinedParams[key] = value;\n        }\n        mergedFilter = new Filter({\n            expression: `(${addressFilter.expression}) && (${options.filter.expression})`,\n            params: combinedParams,\n        });\n    }\n\n    const request = create(StreamAccountUpdatesRequestSchema, {\n        view: options.view ?? DEFAULT_ACCOUNT_VIEW,\n        filter: mergedFilter.toProto(),\n    });\n\n    const iterable = ctx.streaming.streamAccountUpdates(request, withCallOptions(ctx, { signal: options.signal }));\n\n    async function* mapper() {\n        for await (const response of iterable) {\n            const update = toStreamAccountUpdate(response);\n            if (!update) {\n                continue;\n            }\n            yield { update };\n        }\n    }\n\n    return mapper();\n}\n\nexport interface StreamTransactionsOptions {\n    filter?: Filter;\n    minConsensus?: ConsensusStatus;\n    signal?: AbortSignal;\n}\n\nexport type StreamTransactionsResult = StreamTransactionUpdate;\n\nexport function streamTransactions(\n    ctx: ThruClientContext,\n    options: StreamTransactionsOptions = {},\n): AsyncIterable<StreamTransactionsResult> {\n    const request = create(StreamTransactionsRequestSchema, {\n        filter: options.filter?.toProto(),\n        minConsensus: options.minConsensus ?? DEFAULT_MIN_CONSENSUS,\n    });\n\n    const iterable = ctx.streaming.streamTransactions(request, withCallOptions(ctx, { signal: options.signal }));\n\n    async function* mapper(): AsyncGenerator<StreamTransactionsResult> {\n        for await (const response of iterable) {\n            if (!response.transaction) {\n                continue;\n            }\n            try {\n                yield toStreamTransactionUpdate(response.transaction);\n            } catch (err) {\n                console.error(\"streamTransactions: failed to decode transaction update\", err);\n            }\n        }\n    }\n\n    return mapper();\n}\n\nexport interface StreamEventsOptions {\n    filter?: Filter;\n    signal?: AbortSignal;\n}\n\nexport interface StreamEventsResult {\n    event: ChainEvent;\n}\n\nexport function streamEvents(\n    ctx: ThruClientContext,\n    options: StreamEventsOptions = {},\n): AsyncIterable<StreamEventsResult> {\n    const request = create(StreamEventsRequestSchema, {\n        filter: options.filter?.toProto(),\n    });\n\n    const iterable = ctx.streaming.streamEvents(request, withCallOptions(ctx, { signal: options.signal }));\n\n    async function* mapper() {\n        for await (const response of iterable) {\n            yield { event: ChainEvent.fromStream(response) };\n        }\n    }\n\n    return mapper();\n}\n\nexport function trackTransaction(\n    ctx: ThruClientContext,\n    signature: SignatureInput,\n    options: TrackTransactionOptions = {},\n): AsyncIterable<TrackTransactionUpdate> {\n    const timeoutMs = options.timeoutMs;\n    const request = create(TrackTransactionRequestSchema, {\n        signature: Signature.from(signature).toProtoSignature(),\n        timeout:\n            timeoutMs != null\n                ? {\n                    seconds: BigInt(Math.floor(timeoutMs / 1000)),\n                    nanos: (timeoutMs % 1000) * 1_000_000,\n                }\n                : undefined,\n    });\n\n    const iterable = ctx.streaming.trackTransaction(request, withCallOptions(ctx, { signal: options.signal }));\n\n    async function* mapper() {\n        for await (const response of iterable) {\n            yield toTrackTransactionUpdate(response);\n        }\n    }\n\n    return mapper();\n}\n\nexport interface StreamHeightOptions {\n    signal?: AbortSignal;\n}\n\nexport interface StreamHeightResult {\n    height: HeightSnapshot;\n}\n\nexport function streamHeight(\n    ctx: ThruClientContext,\n    options: StreamHeightOptions = {},\n): AsyncIterable<StreamHeightResult> {\n    const request = create(StreamHeightRequestSchema, {});\n\n    const iterable = ctx.streaming.streamHeight(request, withCallOptions(ctx, { signal: options.signal }));\n\n    async function* mapper() {\n        for await (const response of iterable) {\n            yield { height: HeightSnapshot.fromProto(response) };\n        }\n    }\n\n    return mapper();\n}\n\nexport interface StreamSlotMetricsOptions {\n    startSlot?: bigint;\n    signal?: AbortSignal;\n    /**\n     * Ask the server for the slot's compressed-state trie root.\n     *\n     * Off by default: the commitment costs bandwidth on every slot and most\n     * consumers never read it.\n     */\n    includeCompressedStateRoot?: boolean;\n    /**\n     * Ask the server for the slot's active-state hash. Off by default, same\n     * reasoning as {@link StreamSlotMetricsOptions.includeCompressedStateRoot}.\n     */\n    includeActiveStateHash?: boolean;\n}\n\nexport interface StreamSlotMetricsResult {\n    slot: bigint;\n    /** Fees credited to the absent-block-producer fee receiver this block\n     *  because the producer account was not live (UNTO-1293). Disjoint from\n     *  `claimedFees`. */\n    absentBlockProducerFees: bigint;\n    /** Fees credited to a live block-producer account this block (UNTO-1293). */\n    claimedFees: bigint;\n    globalActivatedStateCounter: bigint;\n    globalDeactivatedStateCounter: bigint;\n    blockTimestamp?: Timestamp;\n    /**\n     * Total compute units consumed by this block.\n     *\n     * Zero for an empty block, and also zero when the node could not attribute\n     * this slot's execution results to it. The wire cannot distinguish the two\n     * cases, so do not read zero as \"the block did no work\".\n     */\n    consumedComputeUnits: bigint;\n    /**\n     * Total state units consumed by this block.\n     *\n     * Same zero caveat as {@link StreamSlotMetricsResult.consumedComputeUnits}.\n     */\n    consumedStateUnits: number;\n    /**\n     * The compressed-state trie root as of this slot: the commitment account\n     * state proofs are verified against.\n     *\n     * The server sends exactly 32 bytes. This is a pass-through of whatever\n     * arrived -- unlike the Rust client, the SDK does not reject a\n     * wrong-length value -- so a consumer doing byte comparisons should check\n     * the length rather than assume it.\n     *\n     * Undefined unless requested, and undefined even then when: the node\n     * reported no execution state for the slot; the server predates the field;\n     * the node behind a supporting server predates the wire flag that marks a\n     * terminator as post-execution; or that terminator was truncated. Those\n     * cases are not distinguishable from one another on the wire.\n     *\n     * An all-zero VALUE is legitimate and means something different from\n     * undefined: the trie is empty until compression warms up, and a slot that\n     * compressed nothing repeats the previous root.\n     */\n    compressedStateRoot?: Uint8Array;\n    /**\n     * The active-state hash as of this slot: 32 bytes over the live account set\n     * and this slot's block context. Same presence rules as\n     * {@link StreamSlotMetricsResult.compressedStateRoot}.\n     *\n     * Because that block context contains the compressed-state root, this hash\n     * transitively commits to it -- the two fields agreeing is not an\n     * independent check of either.\n     */\n    activeStateHash?: Uint8Array;\n}\n\n/* Compile-time guard: every property the generated StreamSlotMetricsResponse\n   carries must be surfaced by StreamSlotMetricsResult. Adding a proto field\n   without widening the result type stops this file compiling, and the error\n   names the missing key. This asserts over generated object keys, not protobuf\n   wire fields — the two coincide only because this message has no oneof. */\ntype _UnmappedSlotMetricsKeys = Exclude<\n    Exclude<keyof StreamSlotMetricsResponse, \"$typeName\" | \"$unknown\">,\n    keyof StreamSlotMetricsResult\n>;\ntype _AssertNever<T extends never> = T;\ntype _StreamSlotMetricsCoverage = _AssertNever<_UnmappedSlotMetricsKeys>;\n\nexport function streamSlotMetrics(\n    ctx: ThruClientContext,\n    options: StreamSlotMetricsOptions = {},\n): AsyncIterable<StreamSlotMetricsResult> {\n    const request = create(StreamSlotMetricsRequestSchema, {\n        startSlot: options.startSlot,\n        includeCompressedStateRoot: options.includeCompressedStateRoot ?? false,\n        includeActiveStateHash: options.includeActiveStateHash ?? false,\n    });\n\n    const iterable = ctx.streaming.streamSlotMetrics(request, withCallOptions(ctx, { signal: options.signal }));\n\n    async function* mapper() {\n        for await (const response of iterable) {\n            /* One assignment per proto field, including the ones that may be\n               undefined: the key must always be present so the schema-coverage\n               test can see it. */\n            yield {\n                slot: response.slot,\n                absentBlockProducerFees: response.absentBlockProducerFees,\n                claimedFees: response.claimedFees,\n                globalActivatedStateCounter: response.globalActivatedStateCounter,\n                globalDeactivatedStateCounter: response.globalDeactivatedStateCounter,\n                blockTimestamp: response.blockTimestamp,\n                consumedComputeUnits: response.consumedComputeUnits,\n                consumedStateUnits: response.consumedStateUnits,\n                compressedStateRoot: response.compressedStateRoot,\n                activeStateHash: response.activeStateHash,\n            };\n        }\n    }\n\n    return mapper();\n}\n\nexport type StreamNodeRecordsResult =\n    | { type: \"record\"; record: NodeRecord }\n    | { type: \"finished\" };\n\nexport interface StreamNodeRecordsOptions {\n    signal?: AbortSignal;\n}\n\nexport function streamNodeRecords(\n    ctx: ThruClientContext,\n    options: StreamNodeRecordsOptions = {},\n): AsyncIterable<StreamNodeRecordsResult> {\n    const request = create(StreamNodeRecordsRequestSchema, {});\n\n    const iterable = ctx.streaming.streamNodeRecords(request, withCallOptions(ctx, { signal: options.signal }));\n\n    async function* mapper(): AsyncGenerator<StreamNodeRecordsResult> {\n        for await (const response of iterable) {\n            if (response.message.case === \"record\") {\n                yield { type: \"record\", record: response.message.value };\n            } else if (response.message.case === \"finished\") {\n                yield { type: \"finished\" };\n            }\n        }\n    }\n\n    return mapper();\n}\n\nexport interface CollectStreamOptions {\n    limit?: number;\n    signal?: AbortSignal;\n}\n\nexport async function collectStream<T>(\n    iterable: AsyncIterable<T>,\n    options: CollectStreamOptions = {},\n): Promise<T[]> {\n    const { limit, signal } = options;\n    throwIfAborted(signal);\n    if (limit != null && limit <= 0) {\n        return [];\n    }\n    const results: T[] = [];\n    let count = 0;\n    for await (const value of iterable) {\n        throwIfAborted(signal);\n        results.push(value);\n        count += 1;\n        if (limit != null && count >= limit) {\n            break;\n        }\n    }\n    return results;\n}\n\nexport async function firstStreamValue<T>(\n    iterable: AsyncIterable<T>,\n    options: { signal?: AbortSignal } = {},\n): Promise<T | undefined> {\n    const values = await collectStream(iterable, { ...options, limit: 1 });\n    return values[0];\n}\n\nexport async function forEachStreamValue<T>(\n    iterable: AsyncIterable<T>,\n    handler: (value: T, index: number) => void | Promise<void>,\n    options: { signal?: AbortSignal } = {},\n): Promise<void> {\n    let index = 0;\n    for await (const value of iterable) {\n        throwIfAborted(options.signal);\n        await handler(value, index++);\n    }\n}\n\nfunction throwIfAborted(signal?: AbortSignal): void {\n    if (!signal) {\n        return;\n    }\n    if (signal.aborted) {\n        const reason = signal.reason;\n        if (reason instanceof Error) {\n            throw reason;\n        }\n        if (reason !== undefined) {\n            throw new Error(String(reason));\n        }\n        throw new DOMException(\"The operation was aborted.\", \"AbortError\");\n    }\n}\n","import { create } from \"@bufbuild/protobuf\";\n\nimport type { ThruClientContext } from \"../core/client\";\nimport { withCallOptions } from \"../core/client\";\nimport {\n    DEFAULT_COMPUTE_UNITS,\n    DEFAULT_EXPIRY_AFTER,\n    DEFAULT_FEE,\n    DEFAULT_MEMORY_UNITS,\n    DEFAULT_MIN_CONSENSUS,\n    DEFAULT_STATE_UNITS,\n    DEFAULT_TRANSACTION_VIEW,\n    DEFAULT_VERSION_CONTEXT,\n} from \"../defaults\";\nimport { Filter } from \"../domain/filters\";\nimport { PageRequest, PageResponse } from \"../domain/pagination\";\nimport {\n    type BuildTransactionParams,\n    type InstructionContext,\n    Transaction as LocalTransaction,\n    type OptionalProofs,\n    type SignedTransactionResult,\n    Transaction,\n    type TransactionAccountsInput,\n    TransactionBuilder,\n    type TransactionHeaderInput,\n    type TransactionSigningScheme,\n    TransactionStatusSnapshot\n} from \"../domain/transactions\";\nimport { normalizeAccountList, parseInstructionData } from \"../domain/transactions/utils\";\nimport {\n    ConsensusStatus,\n    type VersionContext,\n    AccountView,\n    RawTransaction,\n    TransactionView,\n    BatchSendTransactionsRequestSchema,\n    type BatchSendTransactionsResponse,\n    SendAndTrackTxnRequestSchema,\n    type SendAndTrackTxnResponse,\n    type SubmissionStatus,\n    SendTransactionRequestSchema,\n    GetRawTransactionRequestSchema,\n    GetTransactionRequestSchema,\n    GetTransactionStatusRequestSchema,\n    ListTransactionsForAccountRequestSchema,\n    type ListTransactionsForAccountResponse as ProtoListTransactionsForAccountResponse,\n    ListTransactionsRequestSchema,\n    type ListTransactionsResponse as ProtoListTransactionsResponse,\n} from \"@thru/sdk/proto\";\n\nimport { encodeSignature } from \"@thru/sdk/helpers\";\nimport { Pubkey, type PubkeyInput, Signature, type SignatureInput } from \"../domain/primitives\";\nimport type { TrackTransactionUpdate, TransactionExecutionResultData } from \"../domain/transactions\";\nimport { getAccount } from \"./accounts\";\nimport { getChainId } from \"./chain\";\nimport { getBlockHeight } from \"./height\";\nimport { trackTransaction } from \"./streaming\";\n\nexport interface TransactionFeePayerConfig {\n    publicKey: PubkeyInput;\n    privateKey?: Uint8Array;\n}\n\nexport interface TransactionAccountsConfig {\n    readWrite?: PubkeyInput[];\n    readOnly?: PubkeyInput[];\n}\n\nexport interface TransactionHeaderConfig {\n    fee?: bigint;\n    nonce?: bigint;\n    startSlot?: bigint;\n    expiryAfter?: number;\n    chainId?: number;\n    computeUnits?: number;\n    stateUnits?: number;\n    memoryUnits?: number;\n    flags?: number;\n}\n/**\n * Instruction data can be either:\n * - A Uint8Array directly\n * - A function that takes an InstructionContext and returns a Uint8Array\n */\nexport type InstructionData = Uint8Array | string| ((context: InstructionContext) => Promise<Uint8Array>);\n\nexport interface BuildTransactionOptions {\n    feePayer: TransactionFeePayerConfig;\n    program: PubkeyInput;\n    header?: TransactionHeaderConfig;\n    accounts?: TransactionAccountsConfig;\n    instructionData?: InstructionData;\n    feePayerStateProof?: Uint8Array;\n    feePayerAccountMetaRaw?: Uint8Array;\n}\n\nexport interface BuildAndSignTransactionOptions extends BuildTransactionOptions {\n    feePayer: TransactionFeePayerConfig & { privateKey: Uint8Array };\n    transactionSigningScheme?: TransactionSigningScheme;\n}\n\nexport interface TransactionQueryOptions {\n    view?: TransactionView;\n    versionContext?: VersionContext;\n    minConsensus?: ConsensusStatus;\n}\n\nexport interface RawTransactionQueryOptions {\n    versionContext?: VersionContext;\n    minConsensus?: ConsensusStatus;\n}\n\nexport interface ListTransactionsForAccountOptions {\n    filter?: Filter;\n    page?: PageRequest;\n    transactionOptions?: TransactionQueryOptions;\n}\n\nexport interface TransactionList {\n    transactions: Transaction[];\n    page?: PageResponse;\n}\n\nexport interface ListTransactionsOptions {\n    filter?: Filter;\n    page?: PageRequest;\n    returnEvents?: boolean;\n    versionContext?: VersionContext;\n    minConsensus?: ConsensusStatus;\n}\n\nexport async function getTransaction(\n    ctx: ThruClientContext,\n    signature: SignatureInput,\n    options: TransactionQueryOptions = {},\n): Promise<Transaction> {\n    const request = create(GetTransactionRequestSchema, {\n        signature: Signature.from(signature).toProtoSignature(),\n        view: options.view ?? DEFAULT_TRANSACTION_VIEW,\n        versionContext: options.versionContext ?? DEFAULT_VERSION_CONTEXT,\n        minConsensus: options.minConsensus ?? DEFAULT_MIN_CONSENSUS,\n    });\n    const proto = await ctx.query.getTransaction(request, withCallOptions(ctx));\n    return Transaction.fromProto(proto);\n}\n\nexport async function getRawTransaction(\n    ctx: ThruClientContext,\n    signature: SignatureInput,\n    options: RawTransactionQueryOptions = {},\n): Promise<RawTransaction> {\n    const request = create(GetRawTransactionRequestSchema, {\n        signature: Signature.from(signature).toProtoSignature(),\n        versionContext: options.versionContext ?? DEFAULT_VERSION_CONTEXT,\n        minConsensus: options.minConsensus ?? DEFAULT_MIN_CONSENSUS,\n    });\n    return ctx.query.getRawTransaction(request, withCallOptions(ctx));\n}\n\nexport async function getTransactionStatus(ctx: ThruClientContext, signature: SignatureInput): Promise<TransactionStatusSnapshot> {\n    const request = create(GetTransactionStatusRequestSchema, {\n        signature: Signature.from(signature).toProtoSignature(),\n    });\n    const proto = await ctx.query.getTransactionStatus(request, withCallOptions(ctx));\n    return TransactionStatusSnapshot.fromProto(proto);\n}\n\nexport async function listTransactionsForAccount(\n    ctx: ThruClientContext,\n    account: PubkeyInput,\n    options: ListTransactionsForAccountOptions = {},\n): Promise<TransactionList> {\n    const request = create(ListTransactionsForAccountRequestSchema, {\n        account: Pubkey.from(account).toProtoPubkey(),\n        filter: options.filter?.toProto(),\n        page: options.page?.toProto(),\n    });\n    const response: ProtoListTransactionsForAccountResponse = await ctx.query.listTransactionsForAccount(\n        request,\n        withCallOptions(ctx),\n    );\n    const protoTransactionSignatures = (response.transactions ?? []).map((transaction) => transaction.signature);\n    const transactions = await Promise.all(\n        protoTransactionSignatures.map((signature) => {\n            if (!signature) {\n                throw new Error(\"ListTransactionsForAccount returned an empty signature\");\n            }\n            return getTransaction(ctx, signature.value, options.transactionOptions);\n        }),\n    );\n    return {\n        transactions,\n        page: PageResponse.fromProto(response.page),\n    };\n}\n\nexport async function listTransactions(\n    ctx: ThruClientContext,\n    options: ListTransactionsOptions = {},\n): Promise<TransactionList> {\n    const request = create(ListTransactionsRequestSchema, {\n        filter: options.filter?.toProto(),\n        page: options.page?.toProto(),\n        returnEvents: options.returnEvents,\n        versionContext: options.versionContext ?? DEFAULT_VERSION_CONTEXT,\n        minConsensus: options.minConsensus ?? DEFAULT_MIN_CONSENSUS,\n    });\n    const response: ProtoListTransactionsResponse = await ctx.query.listTransactions(\n        request,\n        withCallOptions(ctx),\n    );\n    return {\n        transactions: response.transactions.map((proto) => Transaction.fromProto(proto)),\n        page: PageResponse.fromProto(response.page),\n    };\n}\n\nexport async function buildTransaction(\n    ctx: ThruClientContext,\n    options: BuildTransactionOptions,\n): Promise<LocalTransaction> {\n    const builder = createTransactionBuilder();\n    const params = await createBuildParams(ctx, options);\n    return builder.build(params);\n}\n\nexport async function buildAndSignTransaction(\n    ctx: ThruClientContext,\n    options: BuildAndSignTransactionOptions,\n): Promise<SignedTransactionResult> {\n    const builder = createTransactionBuilder();\n    const params = await createBuildParams(ctx, options);\n    if (!params.feePayer.privateKey) {\n        throw new Error(\"Fee payer private key is required to sign the transaction\");\n    }\n    return builder.buildAndSign(params);\n}\n\nexport async function sendTransaction(\n    ctx: ThruClientContext,\n    transaction: LocalTransaction | Uint8Array,\n): Promise<string> {\n    const raw = transaction instanceof Uint8Array ? transaction : transaction.toWire();\n    return sendRawTransaction(ctx, raw);\n}\n\nexport interface BatchSendTransactionsOptions {\n    numRetries?: number;\n}\n\nexport type BatchTrackStatus =\n    | \"executed\"\n    | \"finalized_without_execution\"\n    | \"timeout\"\n    | \"not_accepted\"\n    | \"cancelled\"\n    | \"track_error\";\n\nexport interface BatchSendAndTrackOptions extends BatchSendTransactionsOptions {\n    trackTimeoutMs?: number;\n    signal?: AbortSignal;\n}\n\nexport interface BatchSendAndTrackResult {\n    signature: string;\n    accepted: boolean;\n    trackStatus: BatchTrackStatus;\n    update?: TrackTransactionUpdate;\n    executionResult?: TransactionExecutionResultData;\n    error?: unknown;\n}\n\nexport async function batchSendTransactions(\n    ctx: ThruClientContext,\n    transactions: (LocalTransaction | Uint8Array)[],\n    options: BatchSendTransactionsOptions = {},\n): Promise<BatchSendTransactionsResponse> {\n    const rawTransactions = transactions.map((tx) =>\n        tx instanceof Uint8Array ? tx : tx.toWire(),\n    );\n    const request = create(BatchSendTransactionsRequestSchema, {\n        rawTransactions,\n        numRetries: options.numRetries ?? 0,\n    });\n    return ctx.command.batchSendTransactions(request, withCallOptions(ctx));\n}\n\nexport async function batchSendAndTrack(\n    ctx: ThruClientContext,\n    transactions: (LocalTransaction | Uint8Array)[],\n    options: BatchSendAndTrackOptions = {},\n): Promise<BatchSendAndTrackResult[]> {\n    const rawTransactions = transactions.map((tx) =>\n        tx instanceof Uint8Array ? tx : tx.toWire(),\n    );\n    const signatures = rawTransactions.map(extractSignature);\n    const trackControllers = rawTransactions.map(() => new AbortController());\n    const abortStatuses = rawTransactions.map<BatchTrackStatus | undefined>(() => undefined);\n    const trackPromises = signatures.map((signature, index) =>\n        trackUntilExecution(ctx, signature, {\n            timeoutMs: options.trackTimeoutMs,\n            signal: trackControllers[index].signal,\n            getAbortStatus: () => abortStatuses[index],\n        }),\n    );\n\n    options.signal?.addEventListener(\n        \"abort\",\n        () => {\n            for (let index = 0; index < trackControllers.length; index += 1) {\n                abortStatuses[index] ??= \"cancelled\";\n                trackControllers[index].abort();\n            }\n        },\n        { once: true },\n    );\n\n    let response: BatchSendTransactionsResponse;\n    try {\n        response = await batchSendTransactions(ctx, rawTransactions, {\n            numRetries: options.numRetries ?? 0,\n        });\n    } catch (error) {\n        for (const controller of trackControllers) {\n            controller.abort();\n        }\n        await Promise.allSettled(trackPromises);\n        throw error;\n    }\n\n    const accepted = signatures.map((_, index) => response.accepted[index] === true);\n    for (let index = 0; index < accepted.length; index += 1) {\n        if (!accepted[index]) {\n            abortStatuses[index] = \"not_accepted\";\n            trackControllers[index].abort();\n        }\n    }\n\n    const tracked = await Promise.all(trackPromises);\n    return signatures.map((signature, index) => ({\n        signature,\n        accepted: accepted[index],\n        ...tracked[index],\n    }));\n}\n\nexport interface SendAndTrackTxnOptions {\n    timeoutMs?: number;\n    signal?: AbortSignal;\n}\n\nexport interface SendAndTrackTxnUpdate {\n    status: SubmissionStatus;\n    signature?: { value: Uint8Array };\n    consensusStatus: number;\n    executionResult?: {\n        vmError: number;\n        consumedComputeUnits: number;\n        userErrorCode: bigint;\n        /**\n         * Set only on a nonce reject: the nonce the runtime requires for the\n         * next transaction from this fee payer. Retry against this value.\n         */\n        feePayerExpectedNonce?: bigint;\n    };\n}\n\nexport function sendAndTrackTxn(\n    ctx: ThruClientContext,\n    transaction: LocalTransaction | Uint8Array,\n    options: SendAndTrackTxnOptions = {},\n): AsyncIterable<SendAndTrackTxnUpdate> {\n    const raw = transaction instanceof Uint8Array ? transaction : transaction.toWire();\n    const request = create(SendAndTrackTxnRequestSchema, {\n        transaction: raw,\n        timeout:\n            options.timeoutMs != null\n                ? {\n                    seconds: BigInt(Math.floor(options.timeoutMs / 1000)),\n                    nanos: (options.timeoutMs % 1000) * 1_000_000,\n                }\n                : undefined,\n    });\n\n    const iterable = ctx.command.sendAndTrackTxn(request, {\n        ...withCallOptions(ctx),\n        signal: options.signal,\n    });\n\n    async function* mapper(): AsyncGenerator<SendAndTrackTxnUpdate> {\n        for await (const response of iterable) {\n            yield {\n                status: response.status,\n                signature: response.signature ? { value: response.signature.value } : undefined,\n                consensusStatus: response.consensusStatus,\n                executionResult: response.executionResult\n                    ? {\n                        vmError: response.executionResult.vmError,\n                        consumedComputeUnits: response.executionResult.consumedComputeUnits,\n                        userErrorCode: response.executionResult.userErrorCode,\n                        feePayerExpectedNonce: response.executionResult.feePayerExpectedNonce,\n                    }\n                    : undefined,\n            };\n        }\n    }\n\n    return mapper();\n}\n\nasync function sendRawTransaction(ctx: ThruClientContext, rawTransaction: Uint8Array): Promise<string> {\n    const request = create(SendTransactionRequestSchema, { rawTransaction });\n    const response = await ctx.command.sendTransaction(request, withCallOptions(ctx));\n    if (!response.signature?.value) {\n        throw new Error(\"No signature returned from sendTransaction\");\n    }\n    return encodeSignature(response.signature.value);\n}\n\nfunction extractSignature(rawTransaction: Uint8Array): string {\n    if (rawTransaction.length < 64) {\n        throw new Error(`Raw transaction too short to contain a signature: ${rawTransaction.length} bytes`);\n    }\n\n    const signatureBytes = rawTransaction.slice(rawTransaction.length - 64);\n    return Signature.from(signatureBytes).toThruFmt();\n}\n\nasync function trackUntilExecution(\n    ctx: ThruClientContext,\n    signature: string,\n    options: {\n        timeoutMs?: number;\n        signal?: AbortSignal;\n        getAbortStatus?: () => BatchTrackStatus | undefined;\n    } = {},\n): Promise<Omit<BatchSendAndTrackResult, \"signature\" | \"accepted\">> {\n    let finalizedSeen = false;\n    let latestUpdate: TrackTransactionUpdate | undefined;\n\n    try {\n        for await (const update of trackTransaction(ctx, signature, options)) {\n            latestUpdate = update;\n            if (update.statusCode === ConsensusStatus.FINALIZED || update.status === \"finalized\") {\n                finalizedSeen = true;\n            }\n\n            if (update.executionResult) {\n                return {\n                    trackStatus: \"executed\",\n                    update,\n                    executionResult: update.executionResult,\n                };\n            }\n        }\n    } catch (error) {\n        if (options.signal?.aborted) {\n            return {\n                trackStatus: options.getAbortStatus?.() ?? \"cancelled\",\n                error,\n            };\n        }\n\n        if (finalizedSeen) {\n            return {\n                trackStatus: \"finalized_without_execution\",\n                update: latestUpdate,\n                error,\n            };\n        }\n\n        return {\n            trackStatus: \"track_error\",\n            update: latestUpdate,\n            error,\n        };\n    }\n\n    if (finalizedSeen) {\n        return {\n            trackStatus: \"finalized_without_execution\",\n            update: latestUpdate,\n        };\n    }\n\n    return {\n        trackStatus: \"timeout\",\n        update: latestUpdate,\n    };\n}\n\nfunction createTransactionBuilder(): TransactionBuilder {\n    return new TransactionBuilder();\n}\n\nasync function createBuildParams(\n    ctx: ThruClientContext,\n    options: BuildTransactionOptions & {\n        transactionSigningScheme?: TransactionSigningScheme;\n    },\n): Promise<BuildTransactionParams> {\n    const feePayerPublicKey = Pubkey.from(options.feePayer.publicKey).toBytes();\n    const program = Pubkey.from(options.program).toBytes();\n    const header = await createTransactionHeader(ctx, options.header ?? {}, feePayerPublicKey);\n    const accounts = parseAccounts(options.accounts);\n    \n    // Create context for function resolution\n    const context = createInstructionContext(feePayerPublicKey, program, accounts);\n    \n    // Resolve instruction data (functions get resolved here)\n    const instructionData = await resolveInstructionData(options.instructionData, context);\n    const proofs = createProofs(options);\n\n    return {\n        feePayer: {\n            publicKey: feePayerPublicKey,\n            privateKey: options.feePayer.privateKey,\n        },\n        program: Pubkey.from(options.program).toBytes(),\n        header,\n        accounts,\n        instructionData,\n        proofs,\n        transactionSigningScheme:\n            options.transactionSigningScheme ?? ctx.transactionSigningScheme,\n    };\n}\n\nasync function createTransactionHeader(\n    ctx: ThruClientContext,\n    header: TransactionHeaderConfig,\n    feePayerPublicKey: Uint8Array,\n): Promise<TransactionHeaderInput> {\n    const nonce = header.nonce ?? (await fetchFeePayerNonce(ctx, feePayerPublicKey));\n    const startSlot = header.startSlot ?? (await fetchFinalizedSlot(ctx));\n    const chainId = header.chainId ?? (await fetchChainId(ctx));\n    return {\n        fee: header.fee ?? DEFAULT_FEE,\n        nonce,\n        startSlot,\n        expiryAfter: header.expiryAfter ?? DEFAULT_EXPIRY_AFTER,\n        chainId,\n        computeUnits: header.computeUnits ?? DEFAULT_COMPUTE_UNITS,\n        stateUnits: header.stateUnits ?? DEFAULT_STATE_UNITS,\n        memoryUnits: header.memoryUnits ?? DEFAULT_MEMORY_UNITS,\n        flags: header.flags,\n    };\n}\n\nfunction parseAccounts(accounts?: TransactionAccountsConfig): TransactionAccountsInput | undefined {\n    if (!accounts) {\n        return undefined;\n    }\n    const readWrite = accounts.readWrite?.map((value, index) =>\n        Pubkey.from(value).toBytes(),\n    );\n    const readOnly = accounts.readOnly?.map((value, index) =>\n        Pubkey.from(value).toBytes(),\n    );\n\n    const result: TransactionAccountsInput = {};\n    if (readWrite && readWrite.length > 0) {\n        result.readWriteAccounts = normalizeAccountList(readWrite);\n    }\n    if (readOnly && readOnly.length > 0) {\n        result.readOnlyAccounts = normalizeAccountList(readOnly);\n    }\n\n    if (!result.readWriteAccounts && !result.readOnlyAccounts) {\n        return undefined;\n    }\n\n    return result;\n}\n\nfunction createInstructionContext(\n    feePayer: PubkeyInput,\n    program: PubkeyInput,\n    accounts?: TransactionAccountsInput,\n): InstructionContext {\n    // Build accounts array in transaction order: [feePayer, program, ...readWrite, ...readOnly]\n    const allAccounts: Pubkey[] = [\n        Pubkey.from(feePayer),\n        Pubkey.from(program),\n        ...(accounts?.readWriteAccounts?.map((value) => Pubkey.from(value)) ?? []),\n        ...(accounts?.readOnlyAccounts?.map((value) => Pubkey.from(value)) ?? []),\n    ];\n\n    // Helper to compare two account addresses\n    const getAccountIndex = (pubkey: PubkeyInput): number => {\n        for (let i = 0; i < allAccounts.length; i++) {\n            if (allAccounts[i].equals(Pubkey.from(pubkey))) {\n                return i;\n            }\n        }\n        throw new Error(\"Account not found in transaction accounts\");\n    };\n\n    return { accounts: allAccounts, getAccountIndex };\n}\n\nasync function resolveInstructionData(\n    value: InstructionData | undefined,\n    context: InstructionContext,\n): Promise<Uint8Array | undefined> {\n    if (value === undefined) {\n        return undefined;\n    }\n    \n    // If it's a function, resolve it with the context\n    if (typeof value === \"function\") {\n        return await value(context);\n    }\n    \n    // If it's already a Uint8Array, pass it through\n    if (value instanceof Uint8Array) {\n        return value;\n    }\n    \n    return parseInstructionData(value);\n}\n\nfunction createProofs(options: BuildTransactionOptions): OptionalProofs | undefined {\n    const proofs: OptionalProofs = {};\n    if (options.feePayerStateProof) {\n        proofs.feePayerStateProof = options.feePayerStateProof;\n    }\n    if (options.feePayerAccountMetaRaw) {\n        proofs.feePayerAccountMetaRaw = options.feePayerAccountMetaRaw;\n    }\n    const hasProofs = Boolean(proofs.feePayerStateProof || proofs.feePayerAccountMetaRaw);\n    return hasProofs ? proofs : undefined;\n}\n\nasync function fetchFeePayerNonce(ctx: ThruClientContext, feePayer: Uint8Array): Promise<bigint> {\n    const account = await getAccount(ctx, feePayer, { view: AccountView.FULL });\n    const nonce = account.meta?.nonce;\n    if (nonce === undefined) {\n        throw new Error(\"Fee payer account nonce is unavailable\");\n    }\n    return nonce;\n}\n\nasync function fetchFinalizedSlot(ctx: ThruClientContext): Promise<bigint> {\n    const height = await getBlockHeight(ctx);\n    return height.finalized;\n}\n\nasync function fetchChainId(ctx: ThruClientContext): Promise<number> {\n    return getChainId(ctx);\n}\n","import { create } from \"@bufbuild/protobuf\";\nimport type { Timestamp } from \"@bufbuild/protobuf/wkt\";\n\nimport {\n    CurrentOrHistoricalVersionSchema,\n    CurrentVersionSchema,\n    SlotSeqSchema,\n    VersionContext,\n    VersionContextSchema,\n} from \"@thru/sdk/proto\";\nimport { consensusStatusToString } from \"../utils/utils\";\n\nexport type VersionContextInput =\n    | VersionContext\n    | { current: true }\n    | { currentOrHistorical: true }\n    | { slot: number | bigint }\n    | { timestamp: Date | number | Timestamp }\n    | { slotSeq: { slot: number | bigint; seq: number | bigint } };\n\nexport { consensusStatusToString };\n\nexport function currentVersionContext(): VersionContext {\n    return create(VersionContextSchema, {\n        version: { case: \"current\", value: create(CurrentVersionSchema) },\n    });\n}\n\nexport function currentOrHistoricalVersionContext(): VersionContext {\n    return create(VersionContextSchema, {\n        version: { case: \"currentOrHistorical\", value: create(CurrentOrHistoricalVersionSchema) },\n    });\n}\n\nexport function slotVersionContext(slot: number | bigint): VersionContext {\n    return create(VersionContextSchema, {\n        version: { case: \"slot\", value: toUint64(slot, \"slot\") },\n    });\n}\n\nexport function timestampVersionContext(value: Date | number | Timestamp): VersionContext {\n    return create(VersionContextSchema, {\n        version: { case: \"timestamp\", value: normalizeTimestamp(value) },\n    });\n}\n\nexport function slotSeqVersionContext(slot: number | bigint, seq: number | bigint): VersionContext {\n    return create(VersionContextSchema, {\n        version: {\n            case: \"slotSeq\",\n            value: create(SlotSeqSchema, { slot: toUint64(slot, \"slot\"), seq: toUint64(seq, \"seq\") }),\n        },\n    });\n}\n\nexport function versionContext(input?: VersionContextInput): VersionContext {\n    if (!input) {\n        return currentVersionContext();\n    }\n    if (\"version\" in input) {\n        return input;\n    }\n    if (\"current\" in input) {\n        return currentVersionContext();\n    }\n    if (\"currentOrHistorical\" in input) {\n        return currentOrHistoricalVersionContext();\n    }\n    if (\"slot\" in input) {\n        return slotVersionContext(input.slot);\n    }\n    if (\"timestamp\" in input) {\n        return timestampVersionContext(input.timestamp);\n    }\n    if (\"slotSeq\" in input) {\n        return slotSeqVersionContext(input.slotSeq.slot, input.slotSeq.seq);\n    }\n    throw new Error(\"Version context input must specify current, currentOrHistorical, slot, timestamp, or slotSeq\");\n}\n\nfunction toUint64(value: number | bigint, field: string): bigint {\n    if (typeof value === \"bigint\") {\n        if (value < 0n) {\n            throw new Error(`${field} must be non-negative`);\n        }\n        return value;\n    }\n    if (!Number.isFinite(value) || !Number.isInteger(value) || value < 0) {\n        throw new Error(`${field} must be a non-negative integer`);\n    }\n    return BigInt(value);\n}\n\nfunction normalizeTimestamp(value: Date | number | Timestamp): Timestamp {\n    if (value instanceof Date) {\n        const ms = value.getTime();\n        return {\n            seconds: BigInt(Math.floor(ms / 1000)),\n            nanos: (ms % 1000) * 1_000_000,\n        } as Timestamp;\n    }\n    if (typeof value === \"number\") {\n        if (!Number.isFinite(value)) {\n            throw new Error(\"timestamp must be a finite number\");\n        }\n        const ms = Math.trunc(value);\n        return {\n            seconds: BigInt(Math.floor(ms / 1000)),\n            nanos: (ms % 1000) * 1_000_000,\n        } as Timestamp;\n    }\n    if (typeof value === \"object\" && value !== null) {\n        return value;\n    }\n    throw new Error(\"timestamp must be a Date, number, or protobuf Timestamp\");\n}\n\n","import type { TransactionFeePayerConfig } from '../transactions';\nimport type { ThruTransactionIntent } from '../../domain/transactions/intent';\n\nexport interface PendingCompressionTransaction {\n  signature: string;\n  nonce: bigint;\n  validUntilSlot: bigint;\n}\n\n/** A durable journal belongs to one network and fee payer; never store keys in it. */\nexport interface CompressionJournal {\n  load(): Promise<PendingCompressionTransaction | undefined>;\n  save(pending: PendingCompressionTransaction | undefined): Promise<void>;\n  /** Persist cleanup handles before an uploader creation transaction may be sent. */\n  saveUpload?(upload: UploadCleanup): Promise<void>;\n}\n\nexport interface CompressionOptions {\n  programAddresses?: { compression?: string; multicall?: string; uploader?: string; passkeyManager?: string };\n  signal?: AbortSignal;\n  fee?: bigint;\n  timeoutMs?: number;\n  pollIntervalMs?: number;\n  maxTransactionBytes?: number;\n  journal?: CompressionJournal;\n}\n\nexport type KeypairCompressionOptions = CompressionOptions & {\n  feePayer: TransactionFeePayerConfig & { privateKey: Uint8Array };\n  walletAddress?: never;\n  signTransaction?: never;\n};\n\n/** Uses the wallet's existing intent -> base64 signed transaction contract. */\nexport type WalletCompressionOptions = CompressionOptions & {\n  feePayer: Pick<TransactionFeePayerConfig, 'publicKey'> & { privateKey?: never };\n  walletAddress: string;\n  signTransaction(intent: ThruTransactionIntent): Promise<string>;\n};\n\nexport type DecompressionOptions = KeypairCompressionOptions | WalletCompressionOptions;\n\nexport interface AccountState {\n  address: string;\n  slot?: bigint;\n  deleted: boolean;\n  uncompressable: boolean;\n  ephemeral: boolean;\n  isNew: boolean;\n  dataSize: number;\n  balance: bigint;\n  nonce: bigint;\n}\n\nexport interface AccountImage extends AccountState {\n  /** Runtime image: two-byte prefix followed by the 62-byte SDK metadata. */\n  meta: Uint8Array;\n  data: Uint8Array;\n}\n\nexport interface AccountIndices {\n  getAccountIndex(address: string): number;\n  /** Byte offset of this root instruction within the unsigned transaction wire image. */\n  instructionDataOffset: number;\n}\n\nexport type Instruction = (context: AccountIndices) => Uint8Array | Promise<Uint8Array>;\n\nexport interface CompressionTransaction {\n  program: string;\n  readWrite: string[];\n  readOnly?: string[];\n  instructionData: Instruction;\n  stateUnits: number;\n  computeUnits: number;\n  flags?: number;\n  /** Internal bootstrap transaction for an archived, zero-data EOA payer. */\n  payerRestoration?: { image: AccountImage; proof: Uint8Array };\n}\n\nexport interface UploadPair {\n  meta: string;\n  buffer: string;\n}\n\nexport type AccountOutcome = {\n  address: string;\n  status: \"active\" | \"restored\" | \"compressed\" | \"deleted\" | \"skipped\";\n  signatures: string[];\n};\n\nexport interface UploadCleanup extends UploadPair {\n  /** Retain the original uploader for cleanup after configuration changes/restarts. */\n  uploader?: string;\n  status: \"pending\" | \"cleaned\" | \"failed\";\n  error?: string;\n}\n\nexport interface CompressionResult {\n  accounts: AccountOutcome[];\n  signatures: string[];\n  uploads: UploadCleanup[];\n}\n\nexport type CompressionErrorCode = \"MISSING_ACCOUNT\" | \"NOT_READY\" | \"INVALID_IMAGE\" |\n  \"TRANSACTION_TOO_LARGE\" | \"TRANSACTION_FAILED\" | \"TRANSACTION_UNCERTAIN\" |\n  \"RPC_ERROR\" | \"CANCELLED\" | \"CLEANUP_FAILED\";\n\nexport class CompressionError extends Error {\n  readonly cause?: unknown;\n  constructor(\n    public readonly code: CompressionErrorCode,\n    message: string,\n    public readonly details: {\n      address?: string;\n      retrySlot?: bigint;\n      signature?: string;\n      vmError?: number;\n      userErrorCode?: bigint;\n      result?: CompressionResult;\n      cause?: unknown;\n    } = {},\n  ) {\n    super(message);\n    this.cause = details.cause;\n    this.name = \"CompressionError\";\n  }\n}\n","import { Code, ConnectError } from '@connectrpc/connect';\nimport type { ThruClientContext } from '../../core/client';\nimport { AccountView } from '@thru/sdk/proto';\nimport { getRawAccount } from '../accounts';\nimport { currentVersionContext, currentOrHistoricalVersionContext } from '../consensus';\nimport { Pubkey } from '../../domain/primitives';\nimport { CompressionError, type AccountImage } from './types';\nfunction notFound(error: unknown): boolean { return error instanceof ConnectError && error.code === Code.NotFound; }\nexport function cancelled(signal?: AbortSignal): void {\n  if (signal?.aborted) throw new CompressionError('CANCELLED', 'Compression operation cancelled');\n}\nexport async function readAccount(ctx: ThruClientContext, address: string, historical: boolean, signal?: AbortSignal,\n  historicalView: AccountView.FULL | AccountView.META_ONLY = AccountView.FULL): Promise<AccountImage | undefined> {\n    cancelled(signal);\n    try {\n      const value = await getRawAccount(ctx, address, {\n        view: historical ? historicalView : AccountView.META_ONLY,\n        versionContext: historical ? currentOrHistoricalVersionContext() : currentVersionContext(),\n      });\n      cancelled(signal);\n      if (value.rawMeta.length !== 64)\n        throw new CompressionError(\"INVALID_IMAGE\", \"RPC returned invalid runtime metadata\", { address });\n      const meta = value.rawMeta;\n      const flags = meta[3]!;\n      const view = new DataView(meta.buffer, meta.byteOffset, meta.byteLength);\n      return { address: Pubkey.from(address).toThruFmt(), meta, data: value.rawData ?? new Uint8Array(),\n        slot: value.versionContext?.slot, dataSize: view.getUint32(4, true),\n        balance: view.getBigUint64(48, true), nonce: view.getBigUint64(56, true),\n        deleted: !!(flags & 0x10), uncompressable: !!(flags & 0x04), ephemeral: !!(flags & 0x08), isNew: !!(flags & 0x20) };\n    } catch (error) {\n      if (notFound(error)) return undefined;\n      throw error;\n    }\n  }\n","import { getWebCrypto } from \"@thru/sdk/helpers\";\n\nexport function bytesEqual(a: Uint8Array, b: Uint8Array): boolean {\n  if (a.length !== b.length) return false;\n\n  let different = 0;\n  for (let index = 0; index < a.length; index += 1) {\n    different |= a[index] ^ b[index];\n  }\n\n  return different === 0;\n}\n\nexport function compareBytes(a: Uint8Array, b: Uint8Array): number {\n  const len = Math.min(a.length, b.length);\n  for (let i = 0; i < len; i++) {\n    if (a[i] !== b[i]) return a[i] - b[i];\n  }\n  return a.length - b.length;\n}\n\nexport function uniqueAccounts(accounts: Uint8Array[]): Uint8Array[] {\n  const unique: Uint8Array[] = [];\n  for (const account of accounts) {\n    if (!unique.some((candidate) => bytesEqual(candidate, account))) {\n      unique.push(account);\n    }\n  }\n  return unique;\n}\n\nexport function bytesToHex(bytes: Uint8Array): string {\n  let output = \"\";\n  for (const byte of bytes) output += byte.toString(16).padStart(2, \"0\");\n  return output;\n}\n\nexport function readU32le(bytes: Uint8Array, offset: number): number {\n  return new DataView(\n    bytes.buffer,\n    bytes.byteOffset,\n    bytes.byteLength,\n  ).getUint32(offset, true);\n}\n\nexport async function sha256(bytes: Uint8Array): Promise<Uint8Array> {\n  const crypto = getWebCrypto();\n  const digestInput = new Uint8Array(bytes);\n  return new Uint8Array(await crypto.subtle.digest(\"SHA-256\", digestInput));\n}\n","export interface WalletAccountContext {\n  readWriteAddresses: string[];\n  readOnlyAddresses: string[];\n  walletAccountIdx: number;\n  getAccountIndex: (pubkey: Uint8Array) => number;\n}\nexport interface AccountContext {\n  readWriteAddresses: string[];\n  readOnlyAddresses: string[];\n  accountAddresses: string[];\n  walletAccountIdx: number;\n  getAccountIndex: (pubkey: Uint8Array) => number;\n}\nimport { encodeAddress, decodeAddress } from '@thru/sdk/helpers';\nimport { bytesEqual, compareBytes, uniqueAccounts } from '../helpers/bytes';\nimport { PASSKEY_MANAGER_PROGRAM_ADDRESS } from '../../../../src/core-program-addresses';\n\n\ninterface WalletAccountContextParams {\n  walletAddress: string;\n  readWriteAccounts: Uint8Array[];\n  readOnlyAccounts: Uint8Array[];\n  programAddress?: string;\n}\n\nfunction buildDeferredAccountLists(params: WalletAccountContextParams) {\n  const programBytes = decodeAddress(params.programAddress ?? PASSKEY_MANAGER_PROGRAM_ADDRESS);\n  const walletBytes = decodeAddress(params.walletAddress);\n\n  const readWriteBytes = uniqueAccounts([walletBytes, ...params.readWriteAccounts])\n    .filter((addr) => !bytesEqual(addr, programBytes))\n    .sort(compareBytes);\n  const readOnlyBytes = uniqueAccounts(params.readOnlyAccounts)\n    .filter(\n      (addr) =>\n        !bytesEqual(addr, programBytes) &&\n        !readWriteBytes.some((candidate) => bytesEqual(candidate, addr))\n    )\n    .sort(compareBytes);\n\n  return { programBytes, walletBytes, readWriteBytes, readOnlyBytes };\n}\n\n/**\n * Build account indices for an instruction that a wallet will wrap and pay for.\n * The concrete fee payer is intentionally unknown here; index 0 is reserved for\n * it and index 1 for the wrapper program.\n */\nexport function buildWalletAccountContext(\n  params: WalletAccountContextParams\n): WalletAccountContext {\n  const { programBytes, walletBytes, readWriteBytes, readOnlyBytes } =\n    buildDeferredAccountLists(params);\n  const readWriteAddresses = readWriteBytes.map(encodeAddress);\n  const readOnlyAddresses = readOnlyBytes.map(encodeAddress);\n\n  const findIndex = (target: Uint8Array): number => {\n    if (bytesEqual(target, programBytes)) return 1;\n\n    const rwIndex = readWriteBytes.findIndex((candidate) => bytesEqual(candidate, target));\n    if (rwIndex >= 0) return rwIndex + 2;\n\n    const roIndex = readOnlyBytes.findIndex((candidate) => bytesEqual(candidate, target));\n    if (roIndex >= 0) return roIndex + 2 + readWriteBytes.length;\n\n    return -1;\n  };\n\n  const walletAccountIdx = findIndex(walletBytes);\n  if (walletAccountIdx < 2) {\n    throw new Error('Wallet account must be a non-program account');\n  }\n\n  return {\n    readWriteAddresses,\n    readOnlyAddresses,\n    walletAccountIdx,\n    getAccountIndex: (pubkey: Uint8Array) => {\n      const idx = findIndex(pubkey);\n      if (idx < 0) {\n        throw new Error('Account not found in transaction accounts');\n      }\n      return idx;\n    },\n  };\n}\n\n/** Ensure the wallet-selected fee payer does not invalidate indices that were\n * encoded before that payer was known. */\nexport function assertWalletFeePayerCompatible(params: WalletAccountContextParams & {\n  feePayerAddress: string;\n}): void {\n  const feePayerBytes = decodeAddress(params.feePayerAddress);\n  const { programBytes, walletBytes, readWriteBytes, readOnlyBytes } =\n    buildDeferredAccountLists(params);\n  const conflicts = [programBytes, walletBytes, ...readWriteBytes, ...readOnlyBytes];\n  if (conflicts.some((account) => bytesEqual(account, feePayerBytes))) {\n    throw new Error('Wallet fee payer must not overlap instruction accounts');\n  }\n}\n\n/**\n * Build account context for passkey manager transactions.\n * Handles account deduplication, sorting, and index lookup.\n */\nexport function buildAccountContext(params: {\n  walletAddress: string;\n  readWriteAccounts: Uint8Array[];\n  readOnlyAccounts: Uint8Array[];\n  feePayerAddress: string;\n  programAddress?: string;\n}): AccountContext {\n  const feePayerBytes = decodeAddress(params.feePayerAddress);\n  const programBytes = decodeAddress(params.programAddress ?? PASSKEY_MANAGER_PROGRAM_ADDRESS);\n  const walletBytes = decodeAddress(params.walletAddress);\n\n  const readWriteBytes = uniqueAccounts([walletBytes, ...params.readWriteAccounts])\n    .filter(\n      (addr) => !bytesEqual(addr, feePayerBytes) && !bytesEqual(addr, programBytes)\n    )\n    .sort(compareBytes);\n\n  const readOnlyBytes = uniqueAccounts(params.readOnlyAccounts)\n    .filter(\n      (addr) =>\n        !bytesEqual(addr, feePayerBytes) &&\n        !bytesEqual(addr, programBytes) &&\n        !readWriteBytes.some((candidate) => bytesEqual(candidate, addr))\n    )\n    .sort(compareBytes);\n\n  const readWriteAddresses = readWriteBytes.map(encodeAddress);\n  const readOnlyAddresses = readOnlyBytes.map(encodeAddress);\n\n  const accountAddresses = [\n    encodeAddress(feePayerBytes),\n    encodeAddress(programBytes),\n    ...readWriteAddresses,\n    ...readOnlyAddresses,\n  ];\n\n  const findIndex = (target: Uint8Array): number => {\n    if (bytesEqual(target, feePayerBytes)) return 0;\n    if (bytesEqual(target, programBytes)) return 1;\n\n    const rwIndex = readWriteBytes.findIndex((candidate) => bytesEqual(candidate, target));\n    if (rwIndex >= 0) return rwIndex + 2;\n\n    const roIndex = readOnlyBytes.findIndex((candidate) => bytesEqual(candidate, target));\n    if (roIndex >= 0) return roIndex + 2 + readWriteBytes.length;\n\n    return -1;\n  };\n\n  const walletAccountIdx = findIndex(walletBytes);\n  if (walletAccountIdx < 2) {\n    throw new Error('Wallet account must be a non-fee-payer account');\n  }\n\n  return {\n    readWriteAddresses,\n    readOnlyAddresses,\n    accountAddresses,\n    walletAccountIdx,\n    getAccountIndex: (pubkey: Uint8Array) => {\n      const idx = findIndex(pubkey);\n      if (idx < 0) {\n        throw new Error('Account not found in transaction accounts');\n      }\n      return idx;\n    },\n  };\n}\n\n/**\n * Build read-write accounts list for passkey manager transactions (simpler wallet-only version).\n */\nexport function buildPasskeyReadWriteAccounts(\n  userAccounts: Uint8Array[],\n  feePayerPublicKey: Uint8Array,\n  programAddress: Uint8Array\n): {\n  readWriteAddresses: string[];\n  findAccountIndex: (target: Uint8Array) => number;\n} {\n  const sortedUserAccounts = uniqueAccounts(userAccounts).sort(compareBytes);\n  const filteredUserAccounts = sortedUserAccounts.filter(\n    (addr) => !bytesEqual(addr, feePayerPublicKey) && !bytesEqual(addr, programAddress)\n  );\n  const readWriteAddresses = filteredUserAccounts.map((addr) => encodeAddress(addr));\n\n  const findAccountIndex = (target: Uint8Array): number => {\n    if (bytesEqual(target, feePayerPublicKey)) return 0;\n    if (bytesEqual(target, programAddress)) return 1;\n    for (let i = 0; i < filteredUserAccounts.length; i++) {\n      if (bytesEqual(filteredUserAccounts[i], target)) return i + 2;\n    }\n    return -1;\n  };\n\n  return { readWriteAddresses, findAccountIndex };\n}\n","/* Auto-generated TypeScript code */\n/* WARNING: Do not modify this file directly. It is generated from ABI definitions. */\n\ntype __TnIrNode =\n  | { readonly op: \"zero\" }\n  | { readonly op: \"const\"; readonly value: bigint }\n  | { readonly op: \"field\"; readonly param: string }\n  | {\n      readonly op: \"add\";\n      readonly left: __TnIrNode;\n      readonly right: __TnIrNode;\n    }\n  | {\n      readonly op: \"sub\";\n      readonly left: __TnIrNode;\n      readonly right: __TnIrNode;\n    }\n  | {\n      readonly op: \"mul\";\n      readonly left: __TnIrNode;\n      readonly right: __TnIrNode;\n    }\n  | {\n      readonly op:\n        | \"div\"\n        | \"mod\"\n        | \"bitAnd\"\n        | \"bitOr\"\n        | \"bitXor\"\n        | \"leftShift\"\n        | \"rightShift\";\n      readonly left: __TnIrNode;\n      readonly right: __TnIrNode;\n    }\n  | {\n      readonly op: \"align\";\n      readonly alignment: number;\n      readonly node: __TnIrNode;\n    }\n  | {\n      readonly op: \"switch\";\n      readonly tag: string;\n      readonly cases: readonly { readonly value: number; readonly node: __TnIrNode }[];\n      readonly default?: __TnIrNode;\n    }\n  | {\n      readonly op: \"call\";\n      readonly typeName: string;\n      readonly args: readonly { readonly name: string; readonly source: string }[];\n    }\n  | {\n      readonly op: \"sumOverArray\";\n      readonly count: __TnIrNode;\n      readonly elementTypeName: string;\n      readonly fieldName: string;\n    };\n\ntype __TnIrContext = {\n  params: Record<string, bigint>;\n  buffer?: Uint8Array;\n  typeName?: string;\n};\n\ntype __TnValidateResult = {\n  ok: boolean;\n  code?: string;\n  consumed?: bigint;\n  params?: Record<string, bigint>;\n};\ntype __TnEvalResult =\n  | { ok: true; value: bigint }\n  | { ok: false; code: string };\ntype __TnBuilderLike = { build(): Uint8Array };\ntype __TnStructFieldInput =\n  | Uint8Array\n  | __TnBuilderLike\n  | { buffer?: Uint8Array }\n  | { asUint8Array?: () => Uint8Array }\n  | { bytes?: () => Uint8Array };\ntype __TnVariantDescriptor = {\n  readonly name: string;\n  readonly tag: number;\n  readonly payloadSize: number | null;\n  readonly payloadType?: string;\n  readonly createPayloadBuilder?: () => unknown | null;\n};\ntype __TnVariantSelectorResult<Parent> = {\n  select(\n    name: string\n  ): { writePayload(payload: Uint8Array | __TnBuilderLike): { finish(): Parent } };\n  finish(): Parent;\n};\ntype __TnFamWriterResult<Parent> = {\n  write(payload: Uint8Array | __TnBuilderLike): { finish(): Parent };\n  finish(): Parent;\n};\ntype __TnConsole = { warn?: (...args: unknown[]) => void };\n\nconst __tnWarnings = new Set<string>();\nconst __tnHasNativeBigInt = typeof BigInt === \"function\";\nconst __tnHasBigIntDataView =\n  typeof DataView !== \"undefined\" &&\n  typeof DataView.prototype.getBigInt64 === \"function\" &&\n  typeof DataView.prototype.getBigUint64 === \"function\" &&\n  typeof DataView.prototype.setBigInt64 === \"function\" &&\n  typeof DataView.prototype.setBigUint64 === \"function\";\nconst __tnConsole: __TnConsole | undefined =\n  typeof globalThis !== \"undefined\"\n    ? (globalThis as { console?: __TnConsole }).console\n    : undefined;\n\nfunction __tnLogWarn(message: string): void {\n  if (__tnConsole && typeof __tnConsole.warn === \"function\") {\n    __tnConsole.warn(message);\n  }\n}\n\nfunction __tnWarnOnce(message: string): void {\n  if (!__tnWarnings.has(message)) {\n    __tnWarnings.add(message);\n    __tnLogWarn(message);\n  }\n}\n\nfunction __tnResolveBuilderInput(\n  input: Uint8Array | __TnBuilderLike,\n  context: string\n): Uint8Array {\n  if (input instanceof Uint8Array) {\n    return new Uint8Array(input);\n  }\n  if (input && typeof (input as __TnBuilderLike).build === \"function\") {\n    const built = (input as __TnBuilderLike).build();\n    if (!(built instanceof Uint8Array)) {\n      throw new Error(`${context}: builder did not return Uint8Array`);\n    }\n    return new Uint8Array(built);\n  }\n  throw new Error(`${context}: expected Uint8Array or builder`);\n}\n\nfunction __tnResolveStructFieldInput(\n  input: __TnStructFieldInput,\n  context: string\n): Uint8Array {\n  if (\n    input instanceof Uint8Array ||\n    (input && typeof (input as __TnBuilderLike).build === \"function\")\n  ) {\n    return __tnResolveBuilderInput(input as Uint8Array | __TnBuilderLike, context);\n  }\n  if (input && typeof (input as { asUint8Array?: () => Uint8Array }).asUint8Array === \"function\") {\n    const bytes = (input as { asUint8Array: () => Uint8Array }).asUint8Array();\n    return new Uint8Array(bytes);\n  }\n  if (input && typeof (input as { bytes?: () => Uint8Array }).bytes === \"function\") {\n    const bytes = (input as { bytes: () => Uint8Array }).bytes();\n    return new Uint8Array(bytes);\n  }\n  if (input && (input as { buffer?: unknown }).buffer instanceof Uint8Array) {\n    return new Uint8Array((input as { buffer: Uint8Array }).buffer);\n  }\n  throw new Error(`${context}: expected Uint8Array, builder, or view-like value`);\n}\n\nfunction __tnMaybeCallBuilder(ctor: unknown): unknown | null {\n  if (!ctor) {\n    return null;\n  }\n  const builderFn = (ctor as { builder?: () => unknown }).builder;\n  return typeof builderFn === \"function\" ? builderFn() : null;\n}\n\nfunction __tnCreateVariantSelector<Parent, Descriptor extends __TnVariantDescriptor>(\n  parent: Parent,\n  descriptors: readonly Descriptor[],\n  assign: (descriptor: Descriptor, payload: Uint8Array) => void\n): __TnVariantSelectorResult<Parent> {\n  return {\n    select(name: string) {\n      const descriptor = descriptors.find((variant) => variant.name === name);\n      if (!descriptor) {\n        throw new Error(`Unknown variant '${name}'`);\n      }\n      return {\n        writePayload(payload: Uint8Array | __TnBuilderLike) {\n          const bytes = __tnResolveBuilderInput(\n            payload,\n            `variant ${descriptor.name}`\n          );\n          if (\n            descriptor.payloadSize !== null &&\n            bytes.length !== descriptor.payloadSize\n          ) {\n            throw new Error(\n              `Payload for ${descriptor.name} must be ${descriptor.payloadSize} bytes`\n            );\n          }\n          assign(descriptor, bytes);\n          return {\n            finish(): Parent {\n              return parent;\n            },\n          };\n        },\n      };\n    },\n    finish(): Parent {\n      return parent;\n    },\n  };\n}\n\nfunction __tnCreateFamWriter<Parent>(\n  parent: Parent,\n  fieldName: string,\n  assign: (bytes: Uint8Array) => void\n): __TnFamWriterResult<Parent> {\n  let hasWritten = false;\n  return {\n    write(payload: Uint8Array | __TnBuilderLike) {\n      const bytes = __tnResolveBuilderInput(\n        payload,\n        `flexible array '${fieldName}'`\n      );\n      const copy = new Uint8Array(bytes);\n      assign(copy);\n      hasWritten = true;\n      return {\n        finish(): Parent {\n          return parent;\n        },\n      };\n    },\n    finish(): Parent {\n      if (!hasWritten) {\n        throw new Error(\n          `flexible array '${fieldName}' requires write() before finish()`\n        );\n      }\n      return parent;\n    },\n  };\n}\n\nconst __tnMask32 = __tnHasNativeBigInt\n  ? (BigInt(1) << BigInt(32)) - BigInt(1)\n  : 0xffffffff;\nconst __tnSignBit32 = __tnHasNativeBigInt\n  ? BigInt(1) << BigInt(31)\n  : 0x80000000;\n\nfunction __tnToBigInt(value: number | bigint): bigint {\n  if (__tnHasNativeBigInt) {\n    return typeof value === \"bigint\" ? value : BigInt(value);\n  }\n  if (typeof value === \"bigint\") return value;\n  if (!Number.isFinite(value)) {\n    throw new Error(\"IR runtime received non-finite numeric input\");\n  }\n  if (!Number.isSafeInteger(value)) {\n    __tnWarnOnce(\n      `[thru-net] Precision loss while polyfilling BigInt (value=${value})`\n    );\n  }\n  return (value as unknown) as bigint;\n}\n\nfunction __tnBigIntToNumber(value: bigint, context: string): number {\n  if (__tnHasNativeBigInt) {\n    const converted = Number(value);\n    if (!Number.isFinite(converted)) {\n      throw new Error(`${context} overflowed Number range`);\n    }\n    return converted;\n  }\n  return value as unknown as number;\n}\n\nfunction __tnBigIntEquals(lhs: bigint, rhs: bigint): boolean {\n  if (__tnHasNativeBigInt) return lhs === rhs;\n  return (lhs as unknown as number) === (rhs as unknown as number);\n}\n\nfunction __tnBigIntGreaterThan(lhs: bigint, rhs: bigint): boolean {\n  if (__tnHasNativeBigInt) return lhs > rhs;\n  return (lhs as unknown as number) > (rhs as unknown as number);\n}\n\nfunction __tnPopcount(value: number | bigint): number {\n  let v =\n    typeof value === \"bigint\"\n      ? Number(value & BigInt(0xffffffff))\n      : Number(value) >>> 0;\n  v = v - ((v >>> 1) & 0x55555555);\n  v = (v & 0x33333333) + ((v >>> 2) & 0x33333333);\n  return (((v + (v >>> 4)) & 0x0f0f0f0f) * 0x01010101) >>> 24;\n}\n\nfunction __tnRaiseIrError(code: string, message: string): never {\n  const err = new Error(message);\n  (err as { code?: string }).code = code;\n  throw err;\n}\n\nfunction __tnCheckedAdd(lhs: bigint, rhs: bigint): bigint {\n  if (__tnHasNativeBigInt) {\n    const result = (lhs as bigint) + (rhs as bigint);\n    if (result < BigInt(0)) {\n      __tnRaiseIrError(\n        \"tn.ir.overflow\",\n        \"IR runtime detected negative size via addition\"\n      );\n    }\n    return result;\n  }\n  const left = lhs as unknown as number;\n  const right = rhs as unknown as number;\n  const sum = left + right;\n  if (sum < 0 || !Number.isFinite(sum)) {\n    __tnRaiseIrError(\n      \"tn.ir.overflow\",\n      \"IR runtime detected invalid addition result\"\n    );\n  }\n  if (!Number.isSafeInteger(sum)) {\n    __tnWarnOnce(\"[thru-net] Precision loss while polyfilling BigInt addition\");\n  }\n  return (sum as unknown) as bigint;\n}\n\nfunction __tnCheckedSub(lhs: bigint, rhs: bigint): bigint {\n  if (__tnHasNativeBigInt) {\n    const result = (lhs as bigint) - (rhs as bigint);\n    if (result < BigInt(0)) {\n      __tnRaiseIrError(\n        \"tn.ir.overflow\",\n        \"IR runtime detected negative size via subtraction\"\n      );\n    }\n    return result;\n  }\n  const left = lhs as unknown as number;\n  const right = rhs as unknown as number;\n  const diff = left - right;\n  if (diff < 0 || !Number.isFinite(diff)) {\n    __tnRaiseIrError(\n      \"tn.ir.overflow\",\n      \"IR runtime detected invalid subtraction result\"\n    );\n  }\n  if (!Number.isSafeInteger(diff)) {\n    __tnWarnOnce(\"[thru-net] Precision loss while polyfilling BigInt subtraction\");\n  }\n  return (diff as unknown) as bigint;\n}\n\nfunction __tnCheckedMul(lhs: bigint, rhs: bigint): bigint {\n  if (__tnHasNativeBigInt) {\n    const result = (lhs as bigint) * (rhs as bigint);\n    if (result < BigInt(0)) {\n      __tnRaiseIrError(\n        \"tn.ir.overflow\",\n        \"IR runtime detected negative size via multiplication\"\n      );\n    }\n    return result;\n  }\n  const left = lhs as unknown as number;\n  const right = rhs as unknown as number;\n  const product = left * right;\n  if (product < 0 || !Number.isFinite(product)) {\n    __tnRaiseIrError(\n      \"tn.ir.overflow\",\n      \"IR runtime detected invalid multiplication result\"\n    );\n  }\n  if (!Number.isSafeInteger(product)) {\n    __tnWarnOnce(\n      \"[thru-net] Precision loss while polyfilling BigInt multiplication\"\n    );\n  }\n  return (product as unknown) as bigint;\n}\n\nfunction __tnCheckedDiv(lhs: bigint, rhs: bigint): bigint {\n  if (__tnBigIntEquals(rhs, __tnToBigInt(0))) {\n    __tnRaiseIrError(\"tn.ir.overflow\", \"IR runtime division by zero\");\n  }\n  if (__tnHasNativeBigInt) return (lhs as bigint) / (rhs as bigint);\n  const quotient = Math.floor((lhs as unknown as number) / (rhs as unknown as number));\n  return (quotient as unknown) as bigint;\n}\n\nfunction __tnCheckedMod(lhs: bigint, rhs: bigint): bigint {\n  if (__tnBigIntEquals(rhs, __tnToBigInt(0))) {\n    __tnRaiseIrError(\"tn.ir.overflow\", \"IR runtime modulo by zero\");\n  }\n  if (__tnHasNativeBigInt) return (lhs as bigint) % (rhs as bigint);\n  return (((lhs as unknown as number) % (rhs as unknown as number)) as unknown) as bigint;\n}\n\nfunction __tnBitwise(\n  lhs: bigint,\n  rhs: bigint,\n  op: \"and\" | \"or\" | \"xor\"\n): bigint {\n  if (__tnHasNativeBigInt) {\n    if (op === \"and\") return (lhs as bigint) & (rhs as bigint);\n    if (op === \"or\") return (lhs as bigint) | (rhs as bigint);\n    return (lhs as bigint) ^ (rhs as bigint);\n  }\n  const left = lhs as unknown as number;\n  const right = rhs as unknown as number;\n  const maxU32 = 0xffffffff;\n  if (\n    !Number.isInteger(left) ||\n    !Number.isInteger(right) ||\n    left < 0 ||\n    right < 0 ||\n    left > maxU32 ||\n    right > maxU32\n  ) {\n    __tnRaiseIrError(\n      \"tn.ir.overflow\",\n      \"IR runtime bitwise operation requires BigInt for values outside u32 range\"\n    );\n  }\n  const result = op === \"and\" ? left & right : op === \"or\" ? left | right : left ^ right;\n  return ((result >>> 0) as unknown) as bigint;\n}\n\nfunction __tnCheckedShift(\n  lhs: bigint,\n  rhs: bigint,\n  direction: \"left\" | \"right\"\n): bigint {\n  const amount = __tnBigIntToNumber(rhs, \"IR shift amount\");\n  if (amount < 0 || amount >= 64 || !Number.isInteger(amount)) {\n    __tnRaiseIrError(\"tn.ir.overflow\", \"IR runtime invalid shift amount\");\n  }\n  if (__tnHasNativeBigInt) {\n    const shift = BigInt(amount);\n    return direction === \"left\" ? (lhs as bigint) << shift : (lhs as bigint) >> shift;\n  }\n  const value = lhs as unknown as number;\n  const result = direction === \"left\" ? value * 2 ** amount : Math.floor(value / 2 ** amount);\n  if (!Number.isSafeInteger(result)) {\n    __tnWarnOnce(\"[thru-net] Precision loss while polyfilling BigInt shift\");\n  }\n  return (result as unknown) as bigint;\n}\n\nfunction __tnAlign(value: bigint, alignment: number): bigint {\n  if (alignment <= 1) return value;\n  const alignBig = __tnToBigInt(alignment);\n  if (__tnHasNativeBigInt) {\n    const remainder = value % alignBig;\n    if (__tnBigIntEquals(remainder, __tnToBigInt(0))) {\n      return value;\n    }\n    const delta = alignBig - remainder;\n    return __tnCheckedAdd(value, delta);\n  }\n  const current = __tnBigIntToNumber(value, \"IR align\");\n  const alignNum = alignment >>> 0;\n  const remainder = current % alignNum;\n  const next = remainder === 0 ? current : current + (alignNum - remainder);\n  return __tnToBigInt(next);\n}\n\nfunction __tnSplitUint64(value: bigint): { high: number; low: number } {\n  if (__tnHasNativeBigInt) {\n    const low = Number(value & (__tnMask32 as bigint));\n    const high = Number((value >> BigInt(32)) & (__tnMask32 as bigint));\n    return { high, low };\n  }\n  const num = __tnBigIntToNumber(value, \"DataView.setBigUint64\");\n  const low = num >>> 0;\n  const high = Math.floor(num / 4294967296) >>> 0;\n  return { high, low };\n}\n\nfunction __tnSplitInt64(value: bigint): { high: number; low: number } {\n  if (__tnHasNativeBigInt) {\n    const low = Number(value & (__tnMask32 as bigint));\n    let high = Number((value >> BigInt(32)) & (__tnMask32 as bigint));\n    if ((BigInt(high) & (__tnSignBit32 as bigint)) !== BigInt(0)) {\n      high -= 0x100000000;\n    }\n    return { high, low };\n  }\n  const num = __tnBigIntToNumber(value, \"DataView.setBigInt64\");\n  const low = num >>> 0;\n  const high = Math.floor(num / 4294967296);\n  return { high, low };\n}\n\nfunction __tnPolyfillReadUint64(\n  view: DataView,\n  offset: number,\n  littleEndian: boolean\n): bigint {\n  const low = littleEndian\n    ? view.getUint32(offset, true)\n    : view.getUint32(offset + 4, false);\n  const high = littleEndian\n    ? view.getUint32(offset + 4, true)\n    : view.getUint32(offset, false);\n  if (__tnHasNativeBigInt) {\n    return (BigInt(high) << BigInt(32)) | BigInt(low);\n  }\n  const value = high * 4294967296 + low;\n  if (!Number.isSafeInteger(value)) {\n    __tnWarnOnce(\n      \"[thru-net] Precision loss while polyfilling DataView.getBigUint64\"\n    );\n  }\n  return (value as unknown) as bigint;\n}\n\nfunction __tnPolyfillReadInt64(\n  view: DataView,\n  offset: number,\n  littleEndian: boolean\n): bigint {\n  const low = littleEndian\n    ? view.getUint32(offset, true)\n    : view.getUint32(offset + 4, false);\n  const high = littleEndian\n    ? view.getInt32(offset + 4, true)\n    : view.getInt32(offset, false);\n  if (__tnHasNativeBigInt) {\n    return (BigInt(high) << BigInt(32)) | BigInt(low);\n  }\n  const value = high * 4294967296 + low;\n  if (!Number.isSafeInteger(value)) {\n    __tnWarnOnce(\n      \"[thru-net] Precision loss while polyfilling DataView.getBigInt64\"\n    );\n  }\n  return (value as unknown) as bigint;\n}\n\nfunction __tnPolyfillWriteUint64(\n  view: DataView,\n  offset: number,\n  value: bigint,\n  littleEndian: boolean\n): void {\n  const parts = __tnSplitUint64(value);\n  if (littleEndian) {\n    view.setUint32(offset, parts.low, true);\n    view.setUint32(offset + 4, parts.high, true);\n  } else {\n    view.setUint32(offset, parts.high, false);\n    view.setUint32(offset + 4, parts.low, false);\n  }\n}\n\nfunction __tnPolyfillWriteInt64(\n  view: DataView,\n  offset: number,\n  value: bigint,\n  littleEndian: boolean\n): void {\n  const parts = __tnSplitInt64(value);\n  if (littleEndian) {\n    view.setUint32(offset, parts.low >>> 0, true);\n    view.setInt32(offset + 4, parts.high | 0, true);\n  } else {\n    view.setInt32(offset, parts.high | 0, false);\n    view.setUint32(offset + 4, parts.low >>> 0, false);\n  }\n}\n\nif (typeof DataView !== \"undefined\" && !__tnHasBigIntDataView) {\n  const proto = DataView.prototype as unknown as Record<string, unknown>;\n  if (typeof proto.getBigUint64 !== \"function\") {\n    (proto as any).getBigUint64 = function (\n      offset: number,\n      littleEndian?: boolean\n    ): bigint {\n      __tnWarnOnce(\n        \"[thru-net] Polyfilling DataView.getBigUint64; precision may be lost\"\n      );\n      return __tnPolyfillReadUint64(this, offset, !!littleEndian);\n    };\n  }\n  if (typeof proto.getBigInt64 !== \"function\") {\n    (proto as any).getBigInt64 = function (\n      offset: number,\n      littleEndian?: boolean\n    ): bigint {\n      __tnWarnOnce(\n        \"[thru-net] Polyfilling DataView.getBigInt64; precision may be lost\"\n      );\n      return __tnPolyfillReadInt64(this, offset, !!littleEndian);\n    };\n  }\n  if (typeof proto.setBigUint64 !== \"function\") {\n    (proto as any).setBigUint64 = function (\n      offset: number,\n      value: bigint,\n      littleEndian?: boolean\n    ): void {\n      __tnWarnOnce(\n        \"[thru-net] Polyfilling DataView.setBigUint64; precision may be lost\"\n      );\n      __tnPolyfillWriteUint64(this, offset, value, !!littleEndian);\n    };\n  }\n  if (typeof proto.setBigInt64 !== \"function\") {\n    (proto as any).setBigInt64 = function (\n      offset: number,\n      value: bigint,\n      littleEndian?: boolean\n    ): void {\n      __tnWarnOnce(\n        \"[thru-net] Polyfilling DataView.setBigInt64; precision may be lost\"\n      );\n      __tnPolyfillWriteInt64(this, offset, value, !!littleEndian);\n    };\n  }\n  if (!__tnHasNativeBigInt) {\n    __tnWarnOnce(\n      \"[thru-net] BigInt is unavailable; falling back to lossy 64-bit polyfill\"\n    );\n  }\n}\n\nconst __tnFootprintRegistry: Record<\n  string,\n  (params: Record<string, bigint>) => bigint\n> = {};\nconst __tnValidateRegistry: Record<\n  string,\n  (buffer: Uint8Array, params: Record<string, bigint>) => __TnValidateResult\n> = {};\nconst __tnDynamicValidateRegistry: Record<\n  string,\n  (buffer: Uint8Array) => __TnValidateResult\n> = {};\n\nfunction __tnRegisterFootprint(\n  typeName: string,\n  fn: (params: Record<string, bigint>) => bigint\n): void {\n  __tnFootprintRegistry[typeName] = fn;\n}\n\nfunction __tnRegisterValidate(\n  typeName: string,\n  fn: (buffer: Uint8Array, params: Record<string, bigint>) => __TnValidateResult\n): void {\n  __tnValidateRegistry[typeName] = fn;\n}\n\nfunction __tnRegisterDynamicValidate(\n  typeName: string,\n  fn: (buffer: Uint8Array) => __TnValidateResult\n): void {\n  __tnDynamicValidateRegistry[typeName] = fn;\n}\n\nfunction __tnInvokeFootprint(\n  typeName: string,\n  params: Record<string, bigint>\n): bigint {\n  const fn = __tnFootprintRegistry[typeName];\n  if (!fn) throw new Error(`IR runtime missing footprint for ${typeName}`);\n  return fn(params);\n}\n\nfunction __tnInvokeValidate(\n  typeName: string,\n  buffer: Uint8Array,\n  params: Record<string, bigint>\n): __TnValidateResult {\n  const fn = __tnValidateRegistry[typeName];\n  if (!fn) throw new Error(`IR runtime missing validate helper for ${typeName}`);\n  return fn(buffer, params);\n}\n\nfunction __tnInvokeDynamicValidate(\n  typeName: string,\n  buffer: Uint8Array\n): __TnValidateResult {\n  const fn = __tnDynamicValidateRegistry[typeName];\n  if (!fn) throw new Error(`IR runtime missing dynamic validate helper for ${typeName}`);\n  return fn(buffer);\n}\n\nfunction __tnEvalFootprint(node: __TnIrNode, ctx: __TnIrContext): bigint {\n  return __tnEvalIrNode(node, ctx, __tnToBigInt(0));\n}\n\nfunction __tnTryEvalFootprint(\n  node: __TnIrNode,\n  ctx: __TnIrContext\n): __TnEvalResult {\n  return __tnTryEvalIr(node, ctx);\n}\n\nfunction __tnTryEvalIr(\n  node: __TnIrNode,\n  ctx: __TnIrContext\n): __TnEvalResult {\n  try {\n    return { ok: true, value: __tnEvalIrNode(node, ctx, __tnToBigInt(0)) };\n  } catch (err) {\n    return { ok: false, code: __tnNormalizeIrError(err) };\n  }\n}\n\nfunction __tnIsEvalError(result: __TnEvalResult): result is { ok: false; code: string } {\n  return result.ok === false;\n}\n\nfunction __tnValidateIrTree(\n  ir: { readonly typeName: string; readonly root: __TnIrNode },\n  buffer: Uint8Array,\n  params: Record<string, bigint>\n): __TnValidateResult {\n  const evalResult = __tnTryEvalIr(ir.root, {\n    params,\n    buffer,\n    typeName: ir.typeName,\n  });\n  if (__tnIsEvalError(evalResult)) {\n    return { ok: false, code: evalResult.code };\n  }\n  const required = evalResult.value;\n  const available = __tnToBigInt(buffer.length);\n  if (__tnBigIntGreaterThan(required, available)) {\n    return { ok: false, code: \"tn.buffer_too_small\", consumed: required };\n  }\n  return { ok: true, consumed: required };\n}\n\nfunction __tnEvalIrNode(\n  node: __TnIrNode,\n  ctx: __TnIrContext,\n  baseOffset: bigint\n): bigint {\n  switch (node.op) {\n    case \"zero\":\n      return __tnToBigInt(0);\n    case \"const\":\n      return node.value;\n    case \"field\": {\n      if (node.param === \"__buffer_size\" && ctx.buffer) {\n        return __tnToBigInt(ctx.buffer.length);\n      }\n      const val = ctx.params[node.param];\n      if (val === undefined) {\n        const prefix = ctx.typeName ? `${ctx.typeName}: ` : \"\";\n        __tnRaiseIrError(\n          \"tn.ir.missing_param\",\n          `${prefix}Missing IR parameter '${node.param}'`\n        );\n      }\n      return val;\n    }\n    case \"add\":\n      {\n        const left = __tnEvalIrNode(node.left, ctx, baseOffset);\n        const right = __tnEvalIrNode(\n          node.right,\n          ctx,\n          __tnCheckedAdd(baseOffset, left)\n        );\n        return __tnCheckedAdd(left, right);\n      }\n    case \"sub\":\n      return __tnCheckedSub(\n        __tnEvalIrNode(node.left, ctx, baseOffset),\n        __tnEvalIrNode(node.right, ctx, baseOffset)\n      );\n    case \"mul\":\n      return __tnCheckedMul(\n        __tnEvalIrNode(node.left, ctx, baseOffset),\n        __tnEvalIrNode(node.right, ctx, baseOffset)\n      );\n    case \"div\":\n      return __tnCheckedDiv(\n        __tnEvalIrNode(node.left, ctx, baseOffset),\n        __tnEvalIrNode(node.right, ctx, baseOffset)\n      );\n    case \"mod\":\n      return __tnCheckedMod(\n        __tnEvalIrNode(node.left, ctx, baseOffset),\n        __tnEvalIrNode(node.right, ctx, baseOffset)\n      );\n    case \"bitAnd\":\n      return __tnBitwise(\n        __tnEvalIrNode(node.left, ctx, baseOffset),\n        __tnEvalIrNode(node.right, ctx, baseOffset),\n        \"and\"\n      );\n    case \"bitOr\":\n      return __tnBitwise(\n        __tnEvalIrNode(node.left, ctx, baseOffset),\n        __tnEvalIrNode(node.right, ctx, baseOffset),\n        \"or\"\n      );\n    case \"bitXor\":\n      return __tnBitwise(\n        __tnEvalIrNode(node.left, ctx, baseOffset),\n        __tnEvalIrNode(node.right, ctx, baseOffset),\n        \"xor\"\n      );\n    case \"leftShift\":\n      return __tnCheckedShift(\n        __tnEvalIrNode(node.left, ctx, baseOffset),\n        __tnEvalIrNode(node.right, ctx, baseOffset),\n        \"left\"\n      );\n    case \"rightShift\":\n      return __tnCheckedShift(\n        __tnEvalIrNode(node.left, ctx, baseOffset),\n        __tnEvalIrNode(node.right, ctx, baseOffset),\n        \"right\"\n      );\n    case \"align\":\n      return __tnAlign(__tnEvalIrNode(node.node, ctx, baseOffset), node.alignment);\n    case \"switch\": {\n      const tagVal = ctx.params[node.tag];\n      if (tagVal === undefined) {\n        const prefix = ctx.typeName ? `${ctx.typeName}: ` : \"\";\n        __tnRaiseIrError(\n          \"tn.ir.missing_param\",\n          `${prefix}Missing IR switch tag '${node.tag}'`\n        );\n      }\n      const tagNumber = Number(tagVal);\n      for (const caseNode of node.cases) {\n        if (caseNode.value === tagNumber) {\n          return __tnEvalIrNode(caseNode.node, ctx, baseOffset);\n        }\n      }\n      if (node.default) return __tnEvalIrNode(node.default, ctx, baseOffset);\n      __tnRaiseIrError(\n        \"tn.ir.invalid_tag\",\n        `Unhandled IR switch value ${tagNumber} for '${node.tag}'`\n      );\n    }\n    case \"call\": {\n      const nestedParams: Record<string, bigint> = Object.create(null);\n      for (const arg of node.args) {\n        const val = ctx.params[arg.source];\n        if (val === undefined) {\n          const prefix = ctx.typeName ? `${ctx.typeName}: ` : \"\";\n          __tnRaiseIrError(\n            \"tn.ir.missing_param\",\n            `${prefix}Missing IR parameter '${arg.source}' for nested call`\n          );\n        }\n        nestedParams[arg.name] = val;\n      }\n      if (ctx.buffer) {\n        const nestedOffset = __tnBigIntToNumber(baseOffset, \"IR nested offset\");\n        const nestedResult = __tnInvokeValidate(\n          node.typeName,\n          ctx.buffer.subarray(nestedOffset),\n          nestedParams\n        );\n        if (!nestedResult.ok) {\n          const nestedCode =\n            nestedResult.code ?? `tn.ir.runtime_error: ${node.typeName}`;\n          const prefixed = nestedCode.startsWith(\"tn.\")\n            ? nestedCode\n            : `tn.ir.runtime_error: ${node.typeName} -> ${nestedCode}`;\n          __tnRaiseIrError(\n            prefixed,\n            `Nested validator ${node.typeName} failed`\n          );\n        }\n        if (nestedResult.consumed !== undefined) {\n          return nestedResult.consumed;\n        }\n      }\n      return __tnInvokeFootprint(node.typeName, nestedParams);\n    }\n    case \"sumOverArray\": {\n      if (!ctx.buffer) {\n        __tnRaiseIrError(\n          \"tn.ir.missing_buffer\",\n          `Jagged array '${node.fieldName}' requires buffer-backed validation`\n        );\n      }\n      const count = __tnBigIntToNumber(\n        __tnEvalIrNode(node.count, ctx, baseOffset),\n        `Jagged array '${node.fieldName}' count`\n      );\n      let cursor = __tnBigIntToNumber(baseOffset, \"IR jagged array offset\");\n      let total = __tnToBigInt(0);\n      for (let i = 0; i < count; i++) {\n        const result = __tnInvokeDynamicValidate(\n          node.elementTypeName,\n          ctx.buffer.subarray(cursor)\n        );\n        if (!result.ok || result.consumed === undefined) {\n          const code = result.code ?? \"tn.ir.runtime_error\";\n          __tnRaiseIrError(\n            code,\n            `Jagged array '${node.fieldName}' element ${i} failed validation`\n          );\n        }\n        cursor += __tnBigIntToNumber(result.consumed, \"IR jagged element size\");\n        total = __tnCheckedAdd(total, result.consumed);\n      }\n      return total;\n    }\n    default:\n      __tnRaiseIrError(\n        \"tn.ir.runtime_error\",\n        `Unsupported IR node ${(node as { op: string }).op}`\n      );\n  }\n}\n\nfunction __tnNormalizeIrError(err: unknown): string {\n  if (err && typeof err === \"object\" && \"code\" in err) {\n    const maybeCode = (err as { code?: string }).code;\n    if (typeof maybeCode === \"string\" && maybeCode.length > 0) {\n      return maybeCode;\n    }\n  }\n  const message =\n    err && typeof err === \"object\" && \"message\" in err\n      ? String((err as { message?: unknown }).message ?? \"\")\n      : typeof err === \"string\"\n      ? err\n      : \"\";\n  if (message.includes(\"Missing IR parameter\")) return \"tn.ir.missing_param\";\n  if (message.includes(\"Unhandled IR switch value\")) return \"tn.ir.invalid_tag\";\n  if (\n    message.includes(\"invalid\") ||\n    message.includes(\"overflow\") ||\n    message.includes(\"negative size\")\n  ) {\n    return \"tn.ir.overflow\";\n  }\n  if (message.length > 0) return `tn.ir.runtime_error: ${message}`;\n  return \"tn.ir.runtime_error\";\n}\n\n/* ----- TYPE DEFINITION FOR Date ----- */\n\nconst __tn_ir_Date = {\n  typeName: \"Date\",\n  root: { op: \"const\", value: 6n }\n} as const;\n\nexport class Date {\n  private view: DataView;\n\n  private constructor(private buffer: Uint8Array) {\n    this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n  }\n\n  static __tnCreateView(buffer: Uint8Array, opts?: { fieldContext?: Record<string, number | bigint> }): Date {\n    if (!buffer || buffer.length === undefined) throw new Error(\"Date.__tnCreateView requires a Uint8Array\");\n    return new Date(new Uint8Array(buffer));\n  }\n\n  static builder(): DateBuilder {\n    return new DateBuilder();\n  }\n\n  static fromBuilder(builder: DateBuilder): Date | null {\n    const buffer = builder.build();\n    return Date.from_array(buffer);\n  }\n\n  get_year(): number {\n    const offset = 0;\n    return this.view.getInt32(offset, true); /* little-endian */\n  }\n\n  set_year(value: number): void {\n    const offset = 0;\n    this.view.setInt32(offset, value, true); /* little-endian */\n  }\n\n  get year(): number {\n    return this.get_year();\n  }\n\n  set year(value: number) {\n    this.set_year(value);\n  }\n\n  get_month(): number {\n    const offset = 4;\n    return this.view.getUint8(offset);\n  }\n\n  set_month(value: number): void {\n    const offset = 4;\n    this.view.setUint8(offset, value);\n  }\n\n  get month(): number {\n    return this.get_month();\n  }\n\n  set month(value: number) {\n    this.set_month(value);\n  }\n\n  get_day(): number {\n    const offset = 5;\n    return this.view.getUint8(offset);\n  }\n\n  set_day(value: number): void {\n    const offset = 5;\n    this.view.setUint8(offset, value);\n  }\n\n  get day(): number {\n    return this.get_day();\n  }\n\n  set day(value: number) {\n    this.set_day(value);\n  }\n\n  private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n    return __tnEvalFootprint(__tn_ir_Date.root, { params: __tnParams });\n  }\n\n  private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n    return __tnValidateIrTree(__tn_ir_Date, buffer, __tnParams);\n  }\n\n  static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n    return this.__tnFootprintInternal(__tnParams);\n  }\n\n  static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n    return this.__tnValidateInternal(buffer, __tnParams);\n  }\n\n  static footprintIr(): bigint {\n    return this.__tnFootprintInternal(Object.create(null));\n  }\n\n  static footprint(): number {\n    const irResult = this.footprintIr();\n      const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n    if (__tnBigIntGreaterThan(irResult, maxSafe)) {\n      throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for Date');\n    }\n    return __tnBigIntToNumber(irResult, 'Date::footprint');\n  }\n\n  static validate(buffer: Uint8Array, _opts?: { params?: never }): { ok: boolean; code?: string; consumed?: number } {\n    if (buffer.length < 6) return { ok: false, code: \"tn.buffer_too_small\", consumed: 6 };\n    return { ok: true, consumed: 6 };\n  }\n\n  static new(year: number, month: number, day: number): Date {\n    const buffer = new Uint8Array(6);\n    const view = new DataView(buffer.buffer);\n\n    let offset = 0;\n    view.setInt32(0, year, true); /* year (little-endian) */\n    view.setUint8(4, month); /* month */\n    view.setUint8(5, day); /* day */\n\n    return new Date(buffer);\n  }\n\n  static from_array(buffer: Uint8Array): Date | null {\n    if (!buffer || buffer.length === undefined) {\n      return null;\n    }\n    const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    const validation = this.validate(buffer);\n    if (!validation.ok) {\n      return null;\n    }\n    return new Date(buffer);\n  }\n\n}\n\nexport class DateBuilder {\n  private buffer: Uint8Array;\n  private view: DataView;\n\n  constructor() {\n    this.buffer = new Uint8Array(6);\n    this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n  }\n\n  set_year(value: number): this {\n    this.view.setInt32(0, value, true);\n    return this;\n  }\n\n  set_month(value: number): this {\n    this.view.setUint8(4, value);\n    return this;\n  }\n\n  set_day(value: number): this {\n    this.view.setUint8(5, value);\n    return this;\n  }\n\n  build(): Uint8Array {\n    return this.buffer.slice();\n  }\n\n  buildInto(target: Uint8Array, offset = 0): Uint8Array {\n    if (target.length - offset < this.buffer.length) throw new Error(\"target buffer too small\");\n    target.set(this.buffer, offset);\n    return target;\n  }\n\n  finish(): Date {\n    const view = Date.from_array(this.buffer.slice());\n    if (!view) throw new Error(\"failed to build Date\");\n    return view;\n  }\n}\n\n__tnRegisterFootprint(\"Date\", (params) => Date.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"Date\", (buffer, params) => Date.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"Date\", (buffer) => { const result = Date.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n\n/* ----- TYPE DEFINITION FOR Duration ----- */\n\nconst __tn_ir_Duration = {\n  typeName: \"Duration\",\n  root: { op: \"const\", value: 12n }\n} as const;\n\nexport class Duration {\n  private view: DataView;\n\n  private constructor(private buffer: Uint8Array) {\n    this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n  }\n\n  static __tnCreateView(buffer: Uint8Array, opts?: { fieldContext?: Record<string, number | bigint> }): Duration {\n    if (!buffer || buffer.length === undefined) throw new Error(\"Duration.__tnCreateView requires a Uint8Array\");\n    return new Duration(new Uint8Array(buffer));\n  }\n\n  static builder(): DurationBuilder {\n    return new DurationBuilder();\n  }\n\n  static fromBuilder(builder: DurationBuilder): Duration | null {\n    const buffer = builder.build();\n    return Duration.from_array(buffer);\n  }\n\n  get_seconds(): bigint {\n    const offset = 0;\n    return this.view.getBigInt64(offset, true); /* little-endian */\n  }\n\n  set_seconds(value: bigint): void {\n    const offset = 0;\n    this.view.setBigInt64(offset, value, true); /* little-endian */\n  }\n\n  get seconds(): bigint {\n    return this.get_seconds();\n  }\n\n  set seconds(value: bigint) {\n    this.set_seconds(value);\n  }\n\n  get_nanos(): number {\n    const offset = 8;\n    return this.view.getInt32(offset, true); /* little-endian */\n  }\n\n  set_nanos(value: number): void {\n    const offset = 8;\n    this.view.setInt32(offset, value, true); /* little-endian */\n  }\n\n  get nanos(): number {\n    return this.get_nanos();\n  }\n\n  set nanos(value: number) {\n    this.set_nanos(value);\n  }\n\n  private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n    return __tnEvalFootprint(__tn_ir_Duration.root, { params: __tnParams });\n  }\n\n  private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n    return __tnValidateIrTree(__tn_ir_Duration, buffer, __tnParams);\n  }\n\n  static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n    return this.__tnFootprintInternal(__tnParams);\n  }\n\n  static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n    return this.__tnValidateInternal(buffer, __tnParams);\n  }\n\n  static footprintIr(): bigint {\n    return this.__tnFootprintInternal(Object.create(null));\n  }\n\n  static footprint(): number {\n    const irResult = this.footprintIr();\n      const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n    if (__tnBigIntGreaterThan(irResult, maxSafe)) {\n      throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for Duration');\n    }\n    return __tnBigIntToNumber(irResult, 'Duration::footprint');\n  }\n\n  static validate(buffer: Uint8Array, _opts?: { params?: never }): { ok: boolean; code?: string; consumed?: number } {\n    if (buffer.length < 12) return { ok: false, code: \"tn.buffer_too_small\", consumed: 12 };\n    return { ok: true, consumed: 12 };\n  }\n\n  static new(seconds: bigint, nanos: number): Duration {\n    const buffer = new Uint8Array(12);\n    const view = new DataView(buffer.buffer);\n\n    let offset = 0;\n    view.setBigInt64(0, seconds, true); /* seconds (little-endian) */\n    view.setInt32(8, nanos, true); /* nanos (little-endian) */\n\n    return new Duration(buffer);\n  }\n\n  static from_array(buffer: Uint8Array): Duration | null {\n    if (!buffer || buffer.length === undefined) {\n      return null;\n    }\n    const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    const validation = this.validate(buffer);\n    if (!validation.ok) {\n      return null;\n    }\n    return new Duration(buffer);\n  }\n\n}\n\nexport class DurationBuilder {\n  private buffer: Uint8Array;\n  private view: DataView;\n\n  constructor() {\n    this.buffer = new Uint8Array(12);\n    this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n  }\n\n  set_seconds(value: bigint): this {\n    const cast = __tnToBigInt(value);\n    this.view.setBigInt64(0, cast, true);\n    return this;\n  }\n\n  set_nanos(value: number): this {\n    this.view.setInt32(8, value, true);\n    return this;\n  }\n\n  build(): Uint8Array {\n    return this.buffer.slice();\n  }\n\n  buildInto(target: Uint8Array, offset = 0): Uint8Array {\n    if (target.length - offset < this.buffer.length) throw new Error(\"target buffer too small\");\n    target.set(this.buffer, offset);\n    return target;\n  }\n\n  finish(): Duration {\n    const view = Duration.from_array(this.buffer.slice());\n    if (!view) throw new Error(\"failed to build Duration\");\n    return view;\n  }\n}\n\n__tnRegisterFootprint(\"Duration\", (params) => Duration.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"Duration\", (buffer, params) => Duration.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"Duration\", (buffer) => { const result = Duration.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n\n/* ----- TYPE DEFINITION FOR FixedPoint ----- */\n\nconst __tn_ir_FixedPoint = {\n  typeName: \"FixedPoint\",\n  root: { op: \"const\", value: 9n }\n} as const;\n\nexport class FixedPoint {\n  private view: DataView;\n\n  private constructor(private buffer: Uint8Array) {\n    this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n  }\n\n  static __tnCreateView(buffer: Uint8Array, opts?: { fieldContext?: Record<string, number | bigint> }): FixedPoint {\n    if (!buffer || buffer.length === undefined) throw new Error(\"FixedPoint.__tnCreateView requires a Uint8Array\");\n    return new FixedPoint(new Uint8Array(buffer));\n  }\n\n  static builder(): FixedPointBuilder {\n    return new FixedPointBuilder();\n  }\n\n  static fromBuilder(builder: FixedPointBuilder): FixedPoint | null {\n    const buffer = builder.build();\n    return FixedPoint.from_array(buffer);\n  }\n\n  get_mantissa(): bigint {\n    const offset = 0;\n    return this.view.getBigInt64(offset, true); /* little-endian */\n  }\n\n  set_mantissa(value: bigint): void {\n    const offset = 0;\n    this.view.setBigInt64(offset, value, true); /* little-endian */\n  }\n\n  get mantissa(): bigint {\n    return this.get_mantissa();\n  }\n\n  set mantissa(value: bigint) {\n    this.set_mantissa(value);\n  }\n\n  get_scale(): number {\n    const offset = 8;\n    return this.view.getUint8(offset);\n  }\n\n  set_scale(value: number): void {\n    const offset = 8;\n    this.view.setUint8(offset, value);\n  }\n\n  get scale(): number {\n    return this.get_scale();\n  }\n\n  set scale(value: number) {\n    this.set_scale(value);\n  }\n\n  private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n    return __tnEvalFootprint(__tn_ir_FixedPoint.root, { params: __tnParams });\n  }\n\n  private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n    return __tnValidateIrTree(__tn_ir_FixedPoint, buffer, __tnParams);\n  }\n\n  static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n    return this.__tnFootprintInternal(__tnParams);\n  }\n\n  static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n    return this.__tnValidateInternal(buffer, __tnParams);\n  }\n\n  static footprintIr(): bigint {\n    return this.__tnFootprintInternal(Object.create(null));\n  }\n\n  static footprint(): number {\n    const irResult = this.footprintIr();\n      const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n    if (__tnBigIntGreaterThan(irResult, maxSafe)) {\n      throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for FixedPoint');\n    }\n    return __tnBigIntToNumber(irResult, 'FixedPoint::footprint');\n  }\n\n  static validate(buffer: Uint8Array, _opts?: { params?: never }): { ok: boolean; code?: string; consumed?: number } {\n    if (buffer.length < 9) return { ok: false, code: \"tn.buffer_too_small\", consumed: 9 };\n    return { ok: true, consumed: 9 };\n  }\n\n  static new(mantissa: bigint, scale: number): FixedPoint {\n    const buffer = new Uint8Array(9);\n    const view = new DataView(buffer.buffer);\n\n    let offset = 0;\n    view.setBigInt64(0, mantissa, true); /* mantissa (little-endian) */\n    view.setUint8(8, scale); /* scale */\n\n    return new FixedPoint(buffer);\n  }\n\n  static from_array(buffer: Uint8Array): FixedPoint | null {\n    if (!buffer || buffer.length === undefined) {\n      return null;\n    }\n    const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    const validation = this.validate(buffer);\n    if (!validation.ok) {\n      return null;\n    }\n    return new FixedPoint(buffer);\n  }\n\n}\n\nexport class FixedPointBuilder {\n  private buffer: Uint8Array;\n  private view: DataView;\n\n  constructor() {\n    this.buffer = new Uint8Array(9);\n    this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n  }\n\n  set_mantissa(value: bigint): this {\n    const cast = __tnToBigInt(value);\n    this.view.setBigInt64(0, cast, true);\n    return this;\n  }\n\n  set_scale(value: number): this {\n    this.view.setUint8(8, value);\n    return this;\n  }\n\n  build(): Uint8Array {\n    return this.buffer.slice();\n  }\n\n  buildInto(target: Uint8Array, offset = 0): Uint8Array {\n    if (target.length - offset < this.buffer.length) throw new Error(\"target buffer too small\");\n    target.set(this.buffer, offset);\n    return target;\n  }\n\n  finish(): FixedPoint {\n    const view = FixedPoint.from_array(this.buffer.slice());\n    if (!view) throw new Error(\"failed to build FixedPoint\");\n    return view;\n  }\n}\n\n__tnRegisterFootprint(\"FixedPoint\", (params) => FixedPoint.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"FixedPoint\", (buffer, params) => FixedPoint.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"FixedPoint\", (buffer) => { const result = FixedPoint.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n\n/* ----- TYPE DEFINITION FOR Hash ----- */\n\nconst __tn_ir_Hash = {\n  typeName: \"Hash\",\n  root: { op: \"const\", value: 32n }\n} as const;\n\nexport class Hash {\n  private view: DataView;\n\n  private constructor(private buffer: Uint8Array) {\n    this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n  }\n\n  static __tnCreateView(buffer: Uint8Array, opts?: { fieldContext?: Record<string, number | bigint> }): Hash {\n    if (!buffer || buffer.length === undefined) throw new Error(\"Hash.__tnCreateView requires a Uint8Array\");\n    return new Hash(new Uint8Array(buffer));\n  }\n\n  static builder(): HashBuilder {\n    return new HashBuilder();\n  }\n\n  static fromBuilder(builder: HashBuilder): Hash | null {\n    const buffer = builder.build();\n    return Hash.from_array(buffer);\n  }\n\n  get_bytes(): number[] {\n    const offset = 0;\n    const result: number[] = [];\n    for (let i = 0; i < 32; i++) {\n      result.push(this.view.getUint8((offset + i * 1)));\n    }\n    return result;\n  }\n\n  set_bytes(value: number[]): void {\n    const offset = 0;\n    if (value.length !== 32) {\n      throw new Error('Array length must be 32');\n    }\n    for (let i = 0; i < 32; i++) {\n      this.view.setUint8((offset + i * 1), value[i]);\n    }\n  }\n\n  get bytes(): number[] {\n    return this.get_bytes();\n  }\n\n  set bytes(value: number[]) {\n    this.set_bytes(value);\n  }\n\n  private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n    return __tnEvalFootprint(__tn_ir_Hash.root, { params: __tnParams });\n  }\n\n  private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n    return __tnValidateIrTree(__tn_ir_Hash, buffer, __tnParams);\n  }\n\n  static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n    return this.__tnFootprintInternal(__tnParams);\n  }\n\n  static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n    return this.__tnValidateInternal(buffer, __tnParams);\n  }\n\n  static footprintIr(): bigint {\n    return this.__tnFootprintInternal(Object.create(null));\n  }\n\n  static footprint(): number {\n    const irResult = this.footprintIr();\n      const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n    if (__tnBigIntGreaterThan(irResult, maxSafe)) {\n      throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for Hash');\n    }\n    return __tnBigIntToNumber(irResult, 'Hash::footprint');\n  }\n\n  static validate(buffer: Uint8Array, _opts?: { params?: never }): { ok: boolean; code?: string; consumed?: number } {\n    if (buffer.length < 32) return { ok: false, code: \"tn.buffer_too_small\", consumed: 32 };\n    return { ok: true, consumed: 32 };\n  }\n\n  static from_array(buffer: Uint8Array): Hash | null {\n    if (!buffer || buffer.length === undefined) {\n      return null;\n    }\n    const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    const validation = this.validate(buffer);\n    if (!validation.ok) {\n      return null;\n    }\n    return new Hash(buffer);\n  }\n\n}\n\nexport class HashBuilder {\n  private buffer: Uint8Array;\n  private view: DataView;\n\n  constructor() {\n    this.buffer = new Uint8Array(32);\n    this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n  }\n\n  set_bytes(values: number[]): this {\n    if (values.length !== 32) throw new Error(\"bytes expects 32 elements\");\n    for (let i = 0; i < values.length; i++) {\n      const byteOffset = 0 + i * 1;\n      this.view.setUint8(byteOffset, values[i]);\n    }\n    return this;\n  }\n\n  build(): Uint8Array {\n    return this.buffer.slice();\n  }\n\n  buildInto(target: Uint8Array, offset = 0): Uint8Array {\n    if (target.length - offset < this.buffer.length) throw new Error(\"target buffer too small\");\n    target.set(this.buffer, offset);\n    return target;\n  }\n\n  finish(): Hash {\n    const view = Hash.from_array(this.buffer.slice());\n    if (!view) throw new Error(\"failed to build Hash\");\n    return view;\n  }\n}\n\n__tnRegisterFootprint(\"Hash\", (params) => Hash.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"Hash\", (buffer, params) => Hash.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"Hash\", (buffer) => { const result = Hash.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n\n/* ----- TYPE DEFINITION FOR InstructionData ----- */\n\nconst __tn_ir_InstructionData = {\n  typeName: \"InstructionData\",\n  root: { op: \"align\", alignment: 1, node: { op: \"add\", left: { op: \"add\", left: { op: \"align\", alignment: 2, node: { op: \"const\", value: 2n } }, right: { op: \"align\", alignment: 8, node: { op: \"const\", value: 8n } } }, right: { op: \"align\", alignment: 1, node: { op: \"mul\", left: { op: \"field\", param: \"data.data_size\" }, right: { op: \"const\", value: 1n } } } } }\n} as const;\n\nexport class InstructionData {\n  private view: DataView;\n  private __tnFieldContext: Record<string, number | bigint> | null = null;\n  private __tnParams: InstructionData.Params;\n\n  private constructor(private buffer: Uint8Array, params?: InstructionData.Params, fieldContext?: Record<string, number | bigint>) {\n    this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    this.__tnFieldContext = fieldContext ?? null;\n    if (params) {\n      this.__tnParams = params;\n    } else {\n      const derived = InstructionData.__tnExtractParams(this.view, buffer);\n      if (!derived) {\n        throw new Error(\"InstructionData: failed to derive dynamic parameters\");\n      }\n      this.__tnParams = derived.params;\n    }\n  }\n\n  static __tnCreateView(buffer: Uint8Array, opts?: { params?: InstructionData.Params, fieldContext?: Record<string, number | bigint> }): InstructionData {\n    if (!buffer || buffer.length === undefined) throw new Error(\"InstructionData.__tnCreateView requires a Uint8Array\");\n    let params = opts?.params ?? null;\n    if (!params) {\n      const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n      const derived = InstructionData.__tnExtractParams(view, buffer);\n      if (!derived) throw new Error(\"InstructionData.__tnCreateView: failed to derive params\");\n      params = derived.params;\n    }\n    const instance = new InstructionData(new Uint8Array(buffer), params, opts?.fieldContext);\n    return instance;\n  }\n\n  dynamicParams(): InstructionData.Params {\n    return this.__tnParams;\n  }\n\n  withFieldContext(context: Record<string, number | bigint>): this {\n    this.__tnFieldContext = context;\n    return this;\n  }\n\n  private __tnResolveFieldRef(path: string): number {\n    const getterName = `get_${path.replace(/[.]/g, '_')}`;\n    const getter = (this as any)[getterName];\n    if (typeof getter === \"function\") {\n      const value = getter.call(this);\n      return typeof value === \"bigint\" ? __tnBigIntToNumber(value, \"InstructionData::__tnResolveFieldRef\") : value;\n    }\n    if (this.__tnFieldContext && Object.prototype.hasOwnProperty.call(this.__tnFieldContext, path)) {\n      const contextValue = this.__tnFieldContext[path];\n      return typeof contextValue === \"bigint\" ? __tnBigIntToNumber(contextValue, \"InstructionData::__tnResolveFieldRef\") : contextValue;\n    }\n    throw new Error(\"InstructionData: field reference '\" + path + \"' is not available; provide fieldContext when creating this view\");\n  }\n\n  static builder(): InstructionDataBuilder {\n    return new InstructionDataBuilder();\n  }\n\n  static fromBuilder(builder: InstructionDataBuilder): InstructionData | null {\n    const buffer = builder.build();\n    const params = builder.dynamicParams();\n    return InstructionData.from_array(buffer, { params });\n  }\n\n  static readonly flexibleArrayWriters = Object.freeze([\n    { field: \"data\", method: \"data\", sizeField: \"data_size\", paramKey: \"data_size\", elementSize: 1 },\n  ] as const);\n\n  private static __tnExtractParams(view: DataView, buffer: Uint8Array): { params: InstructionData.Params; derived: Record<string, bigint> | null } | null {\n    if (buffer.length < 10) {\n      return null;\n    }\n    const __tnParam_data_data_size = __tnToBigInt(view.getBigUint64(2, true));\n    const __tnExtractedParams = InstructionData.Params.fromValues({\n      data_data_size: __tnParam_data_data_size,\n    });\n    return { params: __tnExtractedParams, derived: null };\n  }\n\n  get_program_idx(): number {\n    const offset = 0;\n    return this.view.getUint16(offset, true); /* little-endian */\n  }\n\n  set_program_idx(value: number): void {\n    const offset = 0;\n    this.view.setUint16(offset, value, true); /* little-endian */\n  }\n\n  get program_idx(): number {\n    return this.get_program_idx();\n  }\n\n  set program_idx(value: number) {\n    this.set_program_idx(value);\n  }\n\n  get_data_size(): bigint {\n    const offset = 2;\n    return this.view.getBigUint64(offset, true); /* little-endian */\n  }\n\n  set_data_size(value: bigint): void {\n    const offset = 2;\n    this.view.setBigUint64(offset, value, true); /* little-endian */\n  }\n\n  get data_size(): bigint {\n    return this.get_data_size();\n  }\n\n  set data_size(value: bigint) {\n    this.set_data_size(value);\n  }\n\n  get_data_length(): number {\n    return this.__tnResolveFieldRef(\"data_size\");\n  }\n\n  get_data_at(index: number): number {\n    const offset = 10;\n    return this.view.getUint8(offset + index * 1);\n  }\n\n  get_data(): number[] {\n    const len = this.get_data_length();\n    const result: number[] = [];\n    for (let i = 0; i < len; i++) {\n      result.push(this.get_data_at(i));\n    }\n    return result;\n  }\n\n  set_data_at(index: number, value: number): void {\n    const offset = 10;\n    this.view.setUint8((offset + index * 1), value);\n  }\n\n  set_data(value: number[]): void {\n    const len = Math.min(this.get_data_length(), value.length);\n    for (let i = 0; i < len; i++) {\n      this.set_data_at(i, value[i]);\n    }\n  }\n\n  get data(): number[] {\n    return this.get_data();\n  }\n\n  set data(value: number[]) {\n    this.set_data(value);\n  }\n  private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n    return __tnEvalFootprint(__tn_ir_InstructionData.root, { params: __tnParams });\n  }\n\n  private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n    return __tnValidateIrTree(__tn_ir_InstructionData, buffer, __tnParams);\n  }\n\n  static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n    return this.__tnFootprintInternal(__tnParams);\n  }\n\n  static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n    return this.__tnValidateInternal(buffer, __tnParams);\n  }\n\n  static footprintIr(data_data_size: number | bigint): bigint {\n    const params = InstructionData.Params.fromValues({\n      data_data_size: data_data_size,\n    });\n    return this.footprintIrFromParams(params);\n  }\n\n  private static __tnPackParams(params: InstructionData.Params): Record<string, bigint> {\n    const record: Record<string, bigint> = Object.create(null);\n    record[\"data.data_size\"] = params.data_data_size;\n    return record;\n  }\n\n  static footprintIrFromParams(params: InstructionData.Params): bigint {\n    const __tnParams = this.__tnPackParams(params);\n    return this.__tnFootprintInternal(__tnParams);\n  }\n\n  static footprintFromParams(params: InstructionData.Params): number {\n    const irResult = this.footprintIrFromParams(params);\n    const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n    if (__tnBigIntGreaterThan(irResult, maxSafe)) throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for InstructionData');\n    return __tnBigIntToNumber(irResult, 'InstructionData::footprintFromParams');\n  }\n\n  static footprintFromValues(input: { data_data_size: number | bigint }): number {\n    const params = InstructionData.params(input);\n    return this.footprintFromParams(params);\n  }\n\n  static footprint(params: InstructionData.Params): number {\n    return this.footprintFromParams(params);\n  }\n\n  static validate(buffer: Uint8Array, opts?: { params?: InstructionData.Params }): { ok: boolean; code?: string; consumed?: number; params?: InstructionData.Params } {\n    if (!buffer || buffer.length === undefined) {\n      return { ok: false, code: \"tn.invalid_buffer\" };\n    }\n    const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    let params = opts?.params ?? null;\n    if (!params) {\n      const extracted = this.__tnExtractParams(view, buffer);\n      if (!extracted) return { ok: false, code: \"tn.param_extraction_failed\" };\n      params = extracted.params;\n    }\n    const __tnParamsRec = this.__tnPackParams(params);\n    const irResult = this.__tnValidateInternal(buffer, __tnParamsRec);\n    if (!irResult.ok) {\n      return { ok: false, code: irResult.code, consumed: irResult.consumed ? __tnBigIntToNumber(irResult.consumed, 'InstructionData::validate') : undefined, params };\n    }\n    const consumed = irResult.consumed ? __tnBigIntToNumber(irResult.consumed, 'InstructionData::validate') : undefined;\n    return { ok: true, consumed, params };\n  }\n\n  static from_array(buffer: Uint8Array, opts?: { params?: InstructionData.Params }): InstructionData | null {\n    if (!buffer || buffer.length === undefined) {\n      return null;\n    }\n    const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    let params = opts?.params ?? null;\n    if (!params) {\n      const derived = this.__tnExtractParams(view, buffer);\n      if (!derived) return null;\n      params = derived.params;\n    }\n    const validation = this.validate(buffer, { params });\n    if (!validation.ok) {\n      return null;\n    }\n    const cached = validation.params ?? params;\n    const state = new InstructionData(buffer, cached);\n    return state;\n  }\n\n\n}\n\nexport namespace InstructionData {\n  export type Params = {\n    /** ABI path: data.data_size */\n    readonly data_data_size: bigint;\n  };\n\n  export const ParamKeys = Object.freeze({\n    data_data_size: \"data.data_size\",\n  } as const);\n\n  export const Params = {\n    fromValues(input: { data_data_size: number | bigint }): Params {\n      return {\n        data_data_size: __tnToBigInt(input.data_data_size),\n      };\n    },\n    fromBuilder(source: { dynamicParams(): Params } | { params: Params } | Params): Params {\n      if ((source as { dynamicParams?: () => Params }).dynamicParams) {\n        return (source as { dynamicParams(): Params }).dynamicParams();\n      }\n      if ((source as { params?: Params }).params) {\n        return (source as { params: Params }).params;\n      }\n      return source as Params;\n    }\n  };\n\n  export function params(input: { data_data_size: number | bigint }): Params {\n    return Params.fromValues(input);\n  }\n}\n\nexport class InstructionDataBuilder {\n  private buffer: Uint8Array;\n  private view: DataView;\n  private __tnCachedParams: InstructionData.Params | null = null;\n  private __tnLastBuffer: Uint8Array | null = null;\n  private __tnLastParams: InstructionData.Params | null = null;\n  private __tnFam_data: Uint8Array | null = null;\n  private __tnFam_dataCount: number | null = null;\n  private __tnFamWriter_data?: __TnFamWriterResult<InstructionDataBuilder>;\n\n  constructor() {\n    this.buffer = new Uint8Array(10);\n    this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n  }\n\n  private __tnInvalidate(): void {\n    this.__tnCachedParams = null;\n    this.__tnLastBuffer = null;\n    this.__tnLastParams = null;\n  }\n\n  set_program_idx(value: number): this {\n    this.view.setUint16(0, value, true);\n    this.__tnInvalidate();\n    return this;\n  }\n\n  set_data_size(value: bigint): this {\n    const cast = __tnToBigInt(value);\n    this.view.setBigUint64(2, cast, true);\n    this.__tnInvalidate();\n    return this;\n  }\n\n  data(): __TnFamWriterResult<InstructionDataBuilder> {\n    if (!this.__tnFamWriter_data) {\n      this.__tnFamWriter_data = __tnCreateFamWriter(this, \"data\", (payload) => {\n        const bytes = new Uint8Array(payload);\n        const elementCount = bytes.length;\n        this.__tnFam_data = bytes;\n        this.__tnFam_dataCount = elementCount;\n        this.set_data_size(__tnToBigInt(elementCount));\n        this.__tnInvalidate();\n      });\n    }\n    return this.__tnFamWriter_data!;\n  }\n\n  build(): Uint8Array {\n    const params = this.__tnComputeParams();\n    const size = InstructionData.footprintFromParams(params);\n    const buffer = new Uint8Array(size);\n    this.__tnWriteInto(buffer);\n    this.__tnValidateOrThrow(buffer, params);\n    return buffer;\n  }\n\n  buildInto(target: Uint8Array, offset = 0): Uint8Array {\n    const params = this.__tnComputeParams();\n    const size = InstructionData.footprintFromParams(params);\n    if (target.length - offset < size) throw new Error(\"InstructionDataBuilder: target buffer too small\");\n    const slice = target.subarray(offset, offset + size);\n    this.__tnWriteInto(slice);\n    this.__tnValidateOrThrow(slice, params);\n    return target;\n  }\n\n  finish(): InstructionData {\n    const buffer = this.build();\n    const params = this.__tnLastParams ?? this.__tnComputeParams();\n    const view = InstructionData.from_array(buffer, { params });\n    if (!view) throw new Error(\"InstructionDataBuilder: failed to finalize view\");\n    return view;\n  }\n\n  finishView(): InstructionData {\n    return this.finish();\n  }\n\n  dynamicParams(): InstructionData.Params {\n    return this.__tnComputeParams();\n  }\n\n  private __tnComputeParams(): InstructionData.Params {\n    if (this.__tnCachedParams) return this.__tnCachedParams;\n    const params = InstructionData.Params.fromValues({\n      data_data_size: (() => { if (this.__tnFam_dataCount === null) throw new Error(\"InstructionDataBuilder: field 'data' must be written before computing params\"); return __tnToBigInt(this.__tnFam_dataCount); })(),\n    });\n    this.__tnCachedParams = params;\n    return params;\n  }\n\n  private __tnWriteInto(target: Uint8Array): void {\n    target.set(this.buffer, 0);\n    let cursor = this.buffer.length;\n    const __tnLocal_data_bytes = this.__tnFam_data;\n    if (!__tnLocal_data_bytes) throw new Error(\"InstructionDataBuilder: field 'data' must be written before build\");\n    target.set(__tnLocal_data_bytes, cursor);\n    cursor += __tnLocal_data_bytes.length;\n  }\n\n  private __tnValidateOrThrow(buffer: Uint8Array, params: InstructionData.Params): void {\n    const result = InstructionData.validate(buffer, { params });\n    if (!result.ok) {\n      throw new Error(`${ InstructionData }Builder: builder produced invalid buffer (code=${result.code ?? \"unknown\"})`);\n    }\n    this.__tnLastParams = result.params ?? params;\n    this.__tnLastBuffer = buffer;\n  }\n}\n\n__tnRegisterFootprint(\"InstructionData\", (params) => InstructionData.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"InstructionData\", (buffer, params) => InstructionData.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"InstructionData\", (buffer) => { const result = InstructionData.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n\n/* ----- TYPE DEFINITION FOR Pubkey ----- */\n\nconst __tn_ir_Pubkey = {\n  typeName: \"Pubkey\",\n  root: { op: \"const\", value: 32n }\n} as const;\n\nexport class Pubkey {\n  private view: DataView;\n\n  private constructor(private buffer: Uint8Array) {\n    this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n  }\n\n  static __tnCreateView(buffer: Uint8Array, opts?: { fieldContext?: Record<string, number | bigint> }): Pubkey {\n    if (!buffer || buffer.length === undefined) throw new Error(\"Pubkey.__tnCreateView requires a Uint8Array\");\n    return new Pubkey(new Uint8Array(buffer));\n  }\n\n  static builder(): PubkeyBuilder {\n    return new PubkeyBuilder();\n  }\n\n  static fromBuilder(builder: PubkeyBuilder): Pubkey | null {\n    const buffer = builder.build();\n    return Pubkey.from_array(buffer);\n  }\n\n  get_bytes(): number[] {\n    const offset = 0;\n    const result: number[] = [];\n    for (let i = 0; i < 32; i++) {\n      result.push(this.view.getUint8((offset + i * 1)));\n    }\n    return result;\n  }\n\n  set_bytes(value: number[]): void {\n    const offset = 0;\n    if (value.length !== 32) {\n      throw new Error('Array length must be 32');\n    }\n    for (let i = 0; i < 32; i++) {\n      this.view.setUint8((offset + i * 1), value[i]);\n    }\n  }\n\n  get bytes(): number[] {\n    return this.get_bytes();\n  }\n\n  set bytes(value: number[]) {\n    this.set_bytes(value);\n  }\n\n  private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n    return __tnEvalFootprint(__tn_ir_Pubkey.root, { params: __tnParams });\n  }\n\n  private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n    return __tnValidateIrTree(__tn_ir_Pubkey, buffer, __tnParams);\n  }\n\n  static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n    return this.__tnFootprintInternal(__tnParams);\n  }\n\n  static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n    return this.__tnValidateInternal(buffer, __tnParams);\n  }\n\n  static footprintIr(): bigint {\n    return this.__tnFootprintInternal(Object.create(null));\n  }\n\n  static footprint(): number {\n    const irResult = this.footprintIr();\n      const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n    if (__tnBigIntGreaterThan(irResult, maxSafe)) {\n      throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for Pubkey');\n    }\n    return __tnBigIntToNumber(irResult, 'Pubkey::footprint');\n  }\n\n  static validate(buffer: Uint8Array, _opts?: { params?: never }): { ok: boolean; code?: string; consumed?: number } {\n    if (buffer.length < 32) return { ok: false, code: \"tn.buffer_too_small\", consumed: 32 };\n    return { ok: true, consumed: 32 };\n  }\n\n  static from_array(buffer: Uint8Array): Pubkey | null {\n    if (!buffer || buffer.length === undefined) {\n      return null;\n    }\n    const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    const validation = this.validate(buffer);\n    if (!validation.ok) {\n      return null;\n    }\n    return new Pubkey(buffer);\n  }\n\n}\n\nexport class PubkeyBuilder {\n  private buffer: Uint8Array;\n  private view: DataView;\n\n  constructor() {\n    this.buffer = new Uint8Array(32);\n    this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n  }\n\n  set_bytes(values: number[]): this {\n    if (values.length !== 32) throw new Error(\"bytes expects 32 elements\");\n    for (let i = 0; i < values.length; i++) {\n      const byteOffset = 0 + i * 1;\n      this.view.setUint8(byteOffset, values[i]);\n    }\n    return this;\n  }\n\n  build(): Uint8Array {\n    return this.buffer.slice();\n  }\n\n  buildInto(target: Uint8Array, offset = 0): Uint8Array {\n    if (target.length - offset < this.buffer.length) throw new Error(\"target buffer too small\");\n    target.set(this.buffer, offset);\n    return target;\n  }\n\n  finish(): Pubkey {\n    const view = Pubkey.from_array(this.buffer.slice());\n    if (!view) throw new Error(\"failed to build Pubkey\");\n    return view;\n  }\n}\n\n__tnRegisterFootprint(\"Pubkey\", (params) => Pubkey.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"Pubkey\", (buffer, params) => Pubkey.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"Pubkey\", (buffer) => { const result = Pubkey.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n\n/* ----- TYPE DEFINITION FOR Signature ----- */\n\nconst __tn_ir_Signature = {\n  typeName: \"Signature\",\n  root: { op: \"const\", value: 64n }\n} as const;\n\nexport class Signature {\n  private view: DataView;\n\n  private constructor(private buffer: Uint8Array) {\n    this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n  }\n\n  static __tnCreateView(buffer: Uint8Array, opts?: { fieldContext?: Record<string, number | bigint> }): Signature {\n    if (!buffer || buffer.length === undefined) throw new Error(\"Signature.__tnCreateView requires a Uint8Array\");\n    return new Signature(new Uint8Array(buffer));\n  }\n\n  static builder(): SignatureBuilder {\n    return new SignatureBuilder();\n  }\n\n  static fromBuilder(builder: SignatureBuilder): Signature | null {\n    const buffer = builder.build();\n    return Signature.from_array(buffer);\n  }\n\n  get_bytes(): number[] {\n    const offset = 0;\n    const result: number[] = [];\n    for (let i = 0; i < 64; i++) {\n      result.push(this.view.getUint8((offset + i * 1)));\n    }\n    return result;\n  }\n\n  set_bytes(value: number[]): void {\n    const offset = 0;\n    if (value.length !== 64) {\n      throw new Error('Array length must be 64');\n    }\n    for (let i = 0; i < 64; i++) {\n      this.view.setUint8((offset + i * 1), value[i]);\n    }\n  }\n\n  get bytes(): number[] {\n    return this.get_bytes();\n  }\n\n  set bytes(value: number[]) {\n    this.set_bytes(value);\n  }\n\n  private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n    return __tnEvalFootprint(__tn_ir_Signature.root, { params: __tnParams });\n  }\n\n  private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n    return __tnValidateIrTree(__tn_ir_Signature, buffer, __tnParams);\n  }\n\n  static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n    return this.__tnFootprintInternal(__tnParams);\n  }\n\n  static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n    return this.__tnValidateInternal(buffer, __tnParams);\n  }\n\n  static footprintIr(): bigint {\n    return this.__tnFootprintInternal(Object.create(null));\n  }\n\n  static footprint(): number {\n    const irResult = this.footprintIr();\n      const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n    if (__tnBigIntGreaterThan(irResult, maxSafe)) {\n      throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for Signature');\n    }\n    return __tnBigIntToNumber(irResult, 'Signature::footprint');\n  }\n\n  static validate(buffer: Uint8Array, _opts?: { params?: never }): { ok: boolean; code?: string; consumed?: number } {\n    if (buffer.length < 64) return { ok: false, code: \"tn.buffer_too_small\", consumed: 64 };\n    return { ok: true, consumed: 64 };\n  }\n\n  static from_array(buffer: Uint8Array): Signature | null {\n    if (!buffer || buffer.length === undefined) {\n      return null;\n    }\n    const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    const validation = this.validate(buffer);\n    if (!validation.ok) {\n      return null;\n    }\n    return new Signature(buffer);\n  }\n\n}\n\nexport class SignatureBuilder {\n  private buffer: Uint8Array;\n  private view: DataView;\n\n  constructor() {\n    this.buffer = new Uint8Array(64);\n    this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n  }\n\n  set_bytes(values: number[]): this {\n    if (values.length !== 64) throw new Error(\"bytes expects 64 elements\");\n    for (let i = 0; i < values.length; i++) {\n      const byteOffset = 0 + i * 1;\n      this.view.setUint8(byteOffset, values[i]);\n    }\n    return this;\n  }\n\n  build(): Uint8Array {\n    return this.buffer.slice();\n  }\n\n  buildInto(target: Uint8Array, offset = 0): Uint8Array {\n    if (target.length - offset < this.buffer.length) throw new Error(\"target buffer too small\");\n    target.set(this.buffer, offset);\n    return target;\n  }\n\n  finish(): Signature {\n    const view = Signature.from_array(this.buffer.slice());\n    if (!view) throw new Error(\"failed to build Signature\");\n    return view;\n  }\n}\n\n__tnRegisterFootprint(\"Signature\", (params) => Signature.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"Signature\", (buffer, params) => Signature.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"Signature\", (buffer) => { const result = Signature.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n\n/* ----- TYPE DEFINITION FOR Timestamp ----- */\n\nconst __tn_ir_Timestamp = {\n  typeName: \"Timestamp\",\n  root: { op: \"const\", value: 8n }\n} as const;\n\nexport class Timestamp {\n  private view: DataView;\n\n  private constructor(private buffer: Uint8Array) {\n    this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n  }\n\n  static __tnCreateView(buffer: Uint8Array, opts?: { fieldContext?: Record<string, number | bigint> }): Timestamp {\n    if (!buffer || buffer.length === undefined) throw new Error(\"Timestamp.__tnCreateView requires a Uint8Array\");\n    return new Timestamp(new Uint8Array(buffer));\n  }\n\n  static builder(): TimestampBuilder {\n    return new TimestampBuilder();\n  }\n\n  static fromBuilder(builder: TimestampBuilder): Timestamp | null {\n    const buffer = builder.build();\n    return Timestamp.from_array(buffer);\n  }\n\n  get_seconds(): bigint {\n    const offset = 0;\n    return this.view.getBigInt64(offset, true); /* little-endian */\n  }\n\n  set_seconds(value: bigint): void {\n    const offset = 0;\n    this.view.setBigInt64(offset, value, true); /* little-endian */\n  }\n\n  get seconds(): bigint {\n    return this.get_seconds();\n  }\n\n  set seconds(value: bigint) {\n    this.set_seconds(value);\n  }\n\n  private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n    return __tnEvalFootprint(__tn_ir_Timestamp.root, { params: __tnParams });\n  }\n\n  private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n    return __tnValidateIrTree(__tn_ir_Timestamp, buffer, __tnParams);\n  }\n\n  static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n    return this.__tnFootprintInternal(__tnParams);\n  }\n\n  static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n    return this.__tnValidateInternal(buffer, __tnParams);\n  }\n\n  static footprintIr(): bigint {\n    return this.__tnFootprintInternal(Object.create(null));\n  }\n\n  static footprint(): number {\n    const irResult = this.footprintIr();\n      const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n    if (__tnBigIntGreaterThan(irResult, maxSafe)) {\n      throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for Timestamp');\n    }\n    return __tnBigIntToNumber(irResult, 'Timestamp::footprint');\n  }\n\n  static validate(buffer: Uint8Array, _opts?: { params?: never }): { ok: boolean; code?: string; consumed?: number } {\n    if (buffer.length < 8) return { ok: false, code: \"tn.buffer_too_small\", consumed: 8 };\n    return { ok: true, consumed: 8 };\n  }\n\n  static new(seconds: bigint): Timestamp {\n    const buffer = new Uint8Array(8);\n    const view = new DataView(buffer.buffer);\n\n    let offset = 0;\n    view.setBigInt64(0, seconds, true); /* seconds (little-endian) */\n\n    return new Timestamp(buffer);\n  }\n\n  static from_array(buffer: Uint8Array): Timestamp | null {\n    if (!buffer || buffer.length === undefined) {\n      return null;\n    }\n    const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    const validation = this.validate(buffer);\n    if (!validation.ok) {\n      return null;\n    }\n    return new Timestamp(buffer);\n  }\n\n}\n\nexport class TimestampBuilder {\n  private buffer: Uint8Array;\n  private view: DataView;\n\n  constructor() {\n    this.buffer = new Uint8Array(8);\n    this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n  }\n\n  set_seconds(value: bigint): this {\n    const cast = __tnToBigInt(value);\n    this.view.setBigInt64(0, cast, true);\n    return this;\n  }\n\n  build(): Uint8Array {\n    return this.buffer.slice();\n  }\n\n  buildInto(target: Uint8Array, offset = 0): Uint8Array {\n    if (target.length - offset < this.buffer.length) throw new Error(\"target buffer too small\");\n    target.set(this.buffer, offset);\n    return target;\n  }\n\n  finish(): Timestamp {\n    const view = Timestamp.from_array(this.buffer.slice());\n    if (!view) throw new Error(\"failed to build Timestamp\");\n    return view;\n  }\n}\n\n__tnRegisterFootprint(\"Timestamp\", (params) => Timestamp.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"Timestamp\", (buffer, params) => Timestamp.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"Timestamp\", (buffer) => { const result = Timestamp.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n","/* Auto-generated TypeScript code */\n/* WARNING: Do not modify this file directly. It is generated from ABI definitions. */\n\nimport { Hash, Pubkey } from \"../../common/primitives/types\";\n\ntype __TnIrNode =\n  | { readonly op: \"zero\" }\n  | { readonly op: \"const\"; readonly value: bigint }\n  | { readonly op: \"field\"; readonly param: string }\n  | {\n      readonly op: \"add\";\n      readonly left: __TnIrNode;\n      readonly right: __TnIrNode;\n    }\n  | {\n      readonly op: \"sub\";\n      readonly left: __TnIrNode;\n      readonly right: __TnIrNode;\n    }\n  | {\n      readonly op: \"mul\";\n      readonly left: __TnIrNode;\n      readonly right: __TnIrNode;\n    }\n  | {\n      readonly op:\n        | \"div\"\n        | \"mod\"\n        | \"bitAnd\"\n        | \"bitOr\"\n        | \"bitXor\"\n        | \"leftShift\"\n        | \"rightShift\";\n      readonly left: __TnIrNode;\n      readonly right: __TnIrNode;\n    }\n  | {\n      readonly op: \"align\";\n      readonly alignment: number;\n      readonly node: __TnIrNode;\n    }\n  | {\n      readonly op: \"switch\";\n      readonly tag: string;\n      readonly cases: readonly { readonly value: number; readonly node: __TnIrNode }[];\n      readonly default?: __TnIrNode;\n    }\n  | {\n      readonly op: \"call\";\n      readonly typeName: string;\n      readonly args: readonly { readonly name: string; readonly source: string }[];\n    }\n  | {\n      readonly op: \"sumOverArray\";\n      readonly count: __TnIrNode;\n      readonly elementTypeName: string;\n      readonly fieldName: string;\n    };\n\ntype __TnIrContext = {\n  params: Record<string, bigint>;\n  buffer?: Uint8Array;\n  typeName?: string;\n};\n\ntype __TnValidateResult = {\n  ok: boolean;\n  code?: string;\n  consumed?: bigint;\n  params?: Record<string, bigint>;\n};\ntype __TnEvalResult =\n  | { ok: true; value: bigint }\n  | { ok: false; code: string };\ntype __TnBuilderLike = { build(): Uint8Array };\ntype __TnStructFieldInput =\n  | Uint8Array\n  | __TnBuilderLike\n  | { buffer?: Uint8Array }\n  | { asUint8Array?: () => Uint8Array }\n  | { bytes?: () => Uint8Array };\ntype __TnVariantDescriptor = {\n  readonly name: string;\n  readonly tag: number;\n  readonly payloadSize: number | null;\n  readonly payloadType?: string;\n  readonly createPayloadBuilder?: () => unknown | null;\n};\ntype __TnVariantSelectorResult<Parent> = {\n  select(\n    name: string\n  ): { writePayload(payload: Uint8Array | __TnBuilderLike): { finish(): Parent } };\n  finish(): Parent;\n};\ntype __TnFamWriterResult<Parent> = {\n  write(payload: Uint8Array | __TnBuilderLike): { finish(): Parent };\n  finish(): Parent;\n};\ntype __TnConsole = { warn?: (...args: unknown[]) => void };\n\nconst __tnWarnings = new Set<string>();\nconst __tnHasNativeBigInt = typeof BigInt === \"function\";\nconst __tnHasBigIntDataView =\n  typeof DataView !== \"undefined\" &&\n  typeof DataView.prototype.getBigInt64 === \"function\" &&\n  typeof DataView.prototype.getBigUint64 === \"function\" &&\n  typeof DataView.prototype.setBigInt64 === \"function\" &&\n  typeof DataView.prototype.setBigUint64 === \"function\";\nconst __tnConsole: __TnConsole | undefined =\n  typeof globalThis !== \"undefined\"\n    ? (globalThis as { console?: __TnConsole }).console\n    : undefined;\n\nfunction __tnLogWarn(message: string): void {\n  if (__tnConsole && typeof __tnConsole.warn === \"function\") {\n    __tnConsole.warn(message);\n  }\n}\n\nfunction __tnWarnOnce(message: string): void {\n  if (!__tnWarnings.has(message)) {\n    __tnWarnings.add(message);\n    __tnLogWarn(message);\n  }\n}\n\nfunction __tnResolveBuilderInput(\n  input: Uint8Array | __TnBuilderLike,\n  context: string\n): Uint8Array {\n  if (input instanceof Uint8Array) {\n    return new Uint8Array(input);\n  }\n  if (input && typeof (input as __TnBuilderLike).build === \"function\") {\n    const built = (input as __TnBuilderLike).build();\n    if (!(built instanceof Uint8Array)) {\n      throw new Error(`${context}: builder did not return Uint8Array`);\n    }\n    return new Uint8Array(built);\n  }\n  throw new Error(`${context}: expected Uint8Array or builder`);\n}\n\nfunction __tnResolveStructFieldInput(\n  input: __TnStructFieldInput,\n  context: string\n): Uint8Array {\n  if (\n    input instanceof Uint8Array ||\n    (input && typeof (input as __TnBuilderLike).build === \"function\")\n  ) {\n    return __tnResolveBuilderInput(input as Uint8Array | __TnBuilderLike, context);\n  }\n  if (input && typeof (input as { asUint8Array?: () => Uint8Array }).asUint8Array === \"function\") {\n    const bytes = (input as { asUint8Array: () => Uint8Array }).asUint8Array();\n    return new Uint8Array(bytes);\n  }\n  if (input && typeof (input as { bytes?: () => Uint8Array }).bytes === \"function\") {\n    const bytes = (input as { bytes: () => Uint8Array }).bytes();\n    return new Uint8Array(bytes);\n  }\n  if (input && (input as { buffer?: unknown }).buffer instanceof Uint8Array) {\n    return new Uint8Array((input as { buffer: Uint8Array }).buffer);\n  }\n  throw new Error(`${context}: expected Uint8Array, builder, or view-like value`);\n}\n\nfunction __tnMaybeCallBuilder(ctor: unknown): unknown | null {\n  if (!ctor) {\n    return null;\n  }\n  const builderFn = (ctor as { builder?: () => unknown }).builder;\n  return typeof builderFn === \"function\" ? builderFn() : null;\n}\n\nfunction __tnCreateVariantSelector<Parent, Descriptor extends __TnVariantDescriptor>(\n  parent: Parent,\n  descriptors: readonly Descriptor[],\n  assign: (descriptor: Descriptor, payload: Uint8Array) => void\n): __TnVariantSelectorResult<Parent> {\n  return {\n    select(name: string) {\n      const descriptor = descriptors.find((variant) => variant.name === name);\n      if (!descriptor) {\n        throw new Error(`Unknown variant '${name}'`);\n      }\n      return {\n        writePayload(payload: Uint8Array | __TnBuilderLike) {\n          const bytes = __tnResolveBuilderInput(\n            payload,\n            `variant ${descriptor.name}`\n          );\n          if (\n            descriptor.payloadSize !== null &&\n            bytes.length !== descriptor.payloadSize\n          ) {\n            throw new Error(\n              `Payload for ${descriptor.name} must be ${descriptor.payloadSize} bytes`\n            );\n          }\n          assign(descriptor, bytes);\n          return {\n            finish(): Parent {\n              return parent;\n            },\n          };\n        },\n      };\n    },\n    finish(): Parent {\n      return parent;\n    },\n  };\n}\n\nfunction __tnCreateFamWriter<Parent>(\n  parent: Parent,\n  fieldName: string,\n  assign: (bytes: Uint8Array) => void\n): __TnFamWriterResult<Parent> {\n  let hasWritten = false;\n  return {\n    write(payload: Uint8Array | __TnBuilderLike) {\n      const bytes = __tnResolveBuilderInput(\n        payload,\n        `flexible array '${fieldName}'`\n      );\n      const copy = new Uint8Array(bytes);\n      assign(copy);\n      hasWritten = true;\n      return {\n        finish(): Parent {\n          return parent;\n        },\n      };\n    },\n    finish(): Parent {\n      if (!hasWritten) {\n        throw new Error(\n          `flexible array '${fieldName}' requires write() before finish()`\n        );\n      }\n      return parent;\n    },\n  };\n}\n\nconst __tnMask32 = __tnHasNativeBigInt\n  ? (BigInt(1) << BigInt(32)) - BigInt(1)\n  : 0xffffffff;\nconst __tnSignBit32 = __tnHasNativeBigInt\n  ? BigInt(1) << BigInt(31)\n  : 0x80000000;\n\nfunction __tnToBigInt(value: number | bigint): bigint {\n  if (__tnHasNativeBigInt) {\n    return typeof value === \"bigint\" ? value : BigInt(value);\n  }\n  if (typeof value === \"bigint\") return value;\n  if (!Number.isFinite(value)) {\n    throw new Error(\"IR runtime received non-finite numeric input\");\n  }\n  if (!Number.isSafeInteger(value)) {\n    __tnWarnOnce(\n      `[thru-net] Precision loss while polyfilling BigInt (value=${value})`\n    );\n  }\n  return (value as unknown) as bigint;\n}\n\nfunction __tnBigIntToNumber(value: bigint, context: string): number {\n  if (__tnHasNativeBigInt) {\n    const converted = Number(value);\n    if (!Number.isFinite(converted)) {\n      throw new Error(`${context} overflowed Number range`);\n    }\n    return converted;\n  }\n  return value as unknown as number;\n}\n\nfunction __tnBigIntEquals(lhs: bigint, rhs: bigint): boolean {\n  if (__tnHasNativeBigInt) return lhs === rhs;\n  return (lhs as unknown as number) === (rhs as unknown as number);\n}\n\nfunction __tnBigIntGreaterThan(lhs: bigint, rhs: bigint): boolean {\n  if (__tnHasNativeBigInt) return lhs > rhs;\n  return (lhs as unknown as number) > (rhs as unknown as number);\n}\n\nfunction __tnPopcount(value: number | bigint): number {\n  let v =\n    typeof value === \"bigint\"\n      ? Number(value & BigInt(0xffffffff))\n      : Number(value) >>> 0;\n  v = v - ((v >>> 1) & 0x55555555);\n  v = (v & 0x33333333) + ((v >>> 2) & 0x33333333);\n  return (((v + (v >>> 4)) & 0x0f0f0f0f) * 0x01010101) >>> 24;\n}\n\nfunction __tnRaiseIrError(code: string, message: string): never {\n  const err = new Error(message);\n  (err as { code?: string }).code = code;\n  throw err;\n}\n\nfunction __tnCheckedAdd(lhs: bigint, rhs: bigint): bigint {\n  if (__tnHasNativeBigInt) {\n    const result = (lhs as bigint) + (rhs as bigint);\n    if (result < BigInt(0)) {\n      __tnRaiseIrError(\n        \"tn.ir.overflow\",\n        \"IR runtime detected negative size via addition\"\n      );\n    }\n    return result;\n  }\n  const left = lhs as unknown as number;\n  const right = rhs as unknown as number;\n  const sum = left + right;\n  if (sum < 0 || !Number.isFinite(sum)) {\n    __tnRaiseIrError(\n      \"tn.ir.overflow\",\n      \"IR runtime detected invalid addition result\"\n    );\n  }\n  if (!Number.isSafeInteger(sum)) {\n    __tnWarnOnce(\"[thru-net] Precision loss while polyfilling BigInt addition\");\n  }\n  return (sum as unknown) as bigint;\n}\n\nfunction __tnCheckedSub(lhs: bigint, rhs: bigint): bigint {\n  if (__tnHasNativeBigInt) {\n    const result = (lhs as bigint) - (rhs as bigint);\n    if (result < BigInt(0)) {\n      __tnRaiseIrError(\n        \"tn.ir.overflow\",\n        \"IR runtime detected negative size via subtraction\"\n      );\n    }\n    return result;\n  }\n  const left = lhs as unknown as number;\n  const right = rhs as unknown as number;\n  const diff = left - right;\n  if (diff < 0 || !Number.isFinite(diff)) {\n    __tnRaiseIrError(\n      \"tn.ir.overflow\",\n      \"IR runtime detected invalid subtraction result\"\n    );\n  }\n  if (!Number.isSafeInteger(diff)) {\n    __tnWarnOnce(\"[thru-net] Precision loss while polyfilling BigInt subtraction\");\n  }\n  return (diff as unknown) as bigint;\n}\n\nfunction __tnCheckedMul(lhs: bigint, rhs: bigint): bigint {\n  if (__tnHasNativeBigInt) {\n    const result = (lhs as bigint) * (rhs as bigint);\n    if (result < BigInt(0)) {\n      __tnRaiseIrError(\n        \"tn.ir.overflow\",\n        \"IR runtime detected negative size via multiplication\"\n      );\n    }\n    return result;\n  }\n  const left = lhs as unknown as number;\n  const right = rhs as unknown as number;\n  const product = left * right;\n  if (product < 0 || !Number.isFinite(product)) {\n    __tnRaiseIrError(\n      \"tn.ir.overflow\",\n      \"IR runtime detected invalid multiplication result\"\n    );\n  }\n  if (!Number.isSafeInteger(product)) {\n    __tnWarnOnce(\n      \"[thru-net] Precision loss while polyfilling BigInt multiplication\"\n    );\n  }\n  return (product as unknown) as bigint;\n}\n\nfunction __tnCheckedDiv(lhs: bigint, rhs: bigint): bigint {\n  if (__tnBigIntEquals(rhs, __tnToBigInt(0))) {\n    __tnRaiseIrError(\"tn.ir.overflow\", \"IR runtime division by zero\");\n  }\n  if (__tnHasNativeBigInt) return (lhs as bigint) / (rhs as bigint);\n  const quotient = Math.floor((lhs as unknown as number) / (rhs as unknown as number));\n  return (quotient as unknown) as bigint;\n}\n\nfunction __tnCheckedMod(lhs: bigint, rhs: bigint): bigint {\n  if (__tnBigIntEquals(rhs, __tnToBigInt(0))) {\n    __tnRaiseIrError(\"tn.ir.overflow\", \"IR runtime modulo by zero\");\n  }\n  if (__tnHasNativeBigInt) return (lhs as bigint) % (rhs as bigint);\n  return (((lhs as unknown as number) % (rhs as unknown as number)) as unknown) as bigint;\n}\n\nfunction __tnBitwise(\n  lhs: bigint,\n  rhs: bigint,\n  op: \"and\" | \"or\" | \"xor\"\n): bigint {\n  if (__tnHasNativeBigInt) {\n    if (op === \"and\") return (lhs as bigint) & (rhs as bigint);\n    if (op === \"or\") return (lhs as bigint) | (rhs as bigint);\n    return (lhs as bigint) ^ (rhs as bigint);\n  }\n  const left = lhs as unknown as number;\n  const right = rhs as unknown as number;\n  const maxU32 = 0xffffffff;\n  if (\n    !Number.isInteger(left) ||\n    !Number.isInteger(right) ||\n    left < 0 ||\n    right < 0 ||\n    left > maxU32 ||\n    right > maxU32\n  ) {\n    __tnRaiseIrError(\n      \"tn.ir.overflow\",\n      \"IR runtime bitwise operation requires BigInt for values outside u32 range\"\n    );\n  }\n  const result = op === \"and\" ? left & right : op === \"or\" ? left | right : left ^ right;\n  return ((result >>> 0) as unknown) as bigint;\n}\n\nfunction __tnCheckedShift(\n  lhs: bigint,\n  rhs: bigint,\n  direction: \"left\" | \"right\"\n): bigint {\n  const amount = __tnBigIntToNumber(rhs, \"IR shift amount\");\n  if (amount < 0 || amount >= 64 || !Number.isInteger(amount)) {\n    __tnRaiseIrError(\"tn.ir.overflow\", \"IR runtime invalid shift amount\");\n  }\n  if (__tnHasNativeBigInt) {\n    const shift = BigInt(amount);\n    return direction === \"left\" ? (lhs as bigint) << shift : (lhs as bigint) >> shift;\n  }\n  const value = lhs as unknown as number;\n  const result = direction === \"left\" ? value * 2 ** amount : Math.floor(value / 2 ** amount);\n  if (!Number.isSafeInteger(result)) {\n    __tnWarnOnce(\"[thru-net] Precision loss while polyfilling BigInt shift\");\n  }\n  return (result as unknown) as bigint;\n}\n\nfunction __tnAlign(value: bigint, alignment: number): bigint {\n  if (alignment <= 1) return value;\n  const alignBig = __tnToBigInt(alignment);\n  if (__tnHasNativeBigInt) {\n    const remainder = value % alignBig;\n    if (__tnBigIntEquals(remainder, __tnToBigInt(0))) {\n      return value;\n    }\n    const delta = alignBig - remainder;\n    return __tnCheckedAdd(value, delta);\n  }\n  const current = __tnBigIntToNumber(value, \"IR align\");\n  const alignNum = alignment >>> 0;\n  const remainder = current % alignNum;\n  const next = remainder === 0 ? current : current + (alignNum - remainder);\n  return __tnToBigInt(next);\n}\n\nfunction __tnSplitUint64(value: bigint): { high: number; low: number } {\n  if (__tnHasNativeBigInt) {\n    const low = Number(value & (__tnMask32 as bigint));\n    const high = Number((value >> BigInt(32)) & (__tnMask32 as bigint));\n    return { high, low };\n  }\n  const num = __tnBigIntToNumber(value, \"DataView.setBigUint64\");\n  const low = num >>> 0;\n  const high = Math.floor(num / 4294967296) >>> 0;\n  return { high, low };\n}\n\nfunction __tnSplitInt64(value: bigint): { high: number; low: number } {\n  if (__tnHasNativeBigInt) {\n    const low = Number(value & (__tnMask32 as bigint));\n    let high = Number((value >> BigInt(32)) & (__tnMask32 as bigint));\n    if ((BigInt(high) & (__tnSignBit32 as bigint)) !== BigInt(0)) {\n      high -= 0x100000000;\n    }\n    return { high, low };\n  }\n  const num = __tnBigIntToNumber(value, \"DataView.setBigInt64\");\n  const low = num >>> 0;\n  const high = Math.floor(num / 4294967296);\n  return { high, low };\n}\n\nfunction __tnPolyfillReadUint64(\n  view: DataView,\n  offset: number,\n  littleEndian: boolean\n): bigint {\n  const low = littleEndian\n    ? view.getUint32(offset, true)\n    : view.getUint32(offset + 4, false);\n  const high = littleEndian\n    ? view.getUint32(offset + 4, true)\n    : view.getUint32(offset, false);\n  if (__tnHasNativeBigInt) {\n    return (BigInt(high) << BigInt(32)) | BigInt(low);\n  }\n  const value = high * 4294967296 + low;\n  if (!Number.isSafeInteger(value)) {\n    __tnWarnOnce(\n      \"[thru-net] Precision loss while polyfilling DataView.getBigUint64\"\n    );\n  }\n  return (value as unknown) as bigint;\n}\n\nfunction __tnPolyfillReadInt64(\n  view: DataView,\n  offset: number,\n  littleEndian: boolean\n): bigint {\n  const low = littleEndian\n    ? view.getUint32(offset, true)\n    : view.getUint32(offset + 4, false);\n  const high = littleEndian\n    ? view.getInt32(offset + 4, true)\n    : view.getInt32(offset, false);\n  if (__tnHasNativeBigInt) {\n    return (BigInt(high) << BigInt(32)) | BigInt(low);\n  }\n  const value = high * 4294967296 + low;\n  if (!Number.isSafeInteger(value)) {\n    __tnWarnOnce(\n      \"[thru-net] Precision loss while polyfilling DataView.getBigInt64\"\n    );\n  }\n  return (value as unknown) as bigint;\n}\n\nfunction __tnPolyfillWriteUint64(\n  view: DataView,\n  offset: number,\n  value: bigint,\n  littleEndian: boolean\n): void {\n  const parts = __tnSplitUint64(value);\n  if (littleEndian) {\n    view.setUint32(offset, parts.low, true);\n    view.setUint32(offset + 4, parts.high, true);\n  } else {\n    view.setUint32(offset, parts.high, false);\n    view.setUint32(offset + 4, parts.low, false);\n  }\n}\n\nfunction __tnPolyfillWriteInt64(\n  view: DataView,\n  offset: number,\n  value: bigint,\n  littleEndian: boolean\n): void {\n  const parts = __tnSplitInt64(value);\n  if (littleEndian) {\n    view.setUint32(offset, parts.low >>> 0, true);\n    view.setInt32(offset + 4, parts.high | 0, true);\n  } else {\n    view.setInt32(offset, parts.high | 0, false);\n    view.setUint32(offset + 4, parts.low >>> 0, false);\n  }\n}\n\nif (typeof DataView !== \"undefined\" && !__tnHasBigIntDataView) {\n  const proto = DataView.prototype as unknown as Record<string, unknown>;\n  if (typeof proto.getBigUint64 !== \"function\") {\n    (proto as any).getBigUint64 = function (\n      offset: number,\n      littleEndian?: boolean\n    ): bigint {\n      __tnWarnOnce(\n        \"[thru-net] Polyfilling DataView.getBigUint64; precision may be lost\"\n      );\n      return __tnPolyfillReadUint64(this, offset, !!littleEndian);\n    };\n  }\n  if (typeof proto.getBigInt64 !== \"function\") {\n    (proto as any).getBigInt64 = function (\n      offset: number,\n      littleEndian?: boolean\n    ): bigint {\n      __tnWarnOnce(\n        \"[thru-net] Polyfilling DataView.getBigInt64; precision may be lost\"\n      );\n      return __tnPolyfillReadInt64(this, offset, !!littleEndian);\n    };\n  }\n  if (typeof proto.setBigUint64 !== \"function\") {\n    (proto as any).setBigUint64 = function (\n      offset: number,\n      value: bigint,\n      littleEndian?: boolean\n    ): void {\n      __tnWarnOnce(\n        \"[thru-net] Polyfilling DataView.setBigUint64; precision may be lost\"\n      );\n      __tnPolyfillWriteUint64(this, offset, value, !!littleEndian);\n    };\n  }\n  if (typeof proto.setBigInt64 !== \"function\") {\n    (proto as any).setBigInt64 = function (\n      offset: number,\n      value: bigint,\n      littleEndian?: boolean\n    ): void {\n      __tnWarnOnce(\n        \"[thru-net] Polyfilling DataView.setBigInt64; precision may be lost\"\n      );\n      __tnPolyfillWriteInt64(this, offset, value, !!littleEndian);\n    };\n  }\n  if (!__tnHasNativeBigInt) {\n    __tnWarnOnce(\n      \"[thru-net] BigInt is unavailable; falling back to lossy 64-bit polyfill\"\n    );\n  }\n}\n\nconst __tnFootprintRegistry: Record<\n  string,\n  (params: Record<string, bigint>) => bigint\n> = {};\nconst __tnValidateRegistry: Record<\n  string,\n  (buffer: Uint8Array, params: Record<string, bigint>) => __TnValidateResult\n> = {};\nconst __tnDynamicValidateRegistry: Record<\n  string,\n  (buffer: Uint8Array) => __TnValidateResult\n> = {};\n\nfunction __tnRegisterFootprint(\n  typeName: string,\n  fn: (params: Record<string, bigint>) => bigint\n): void {\n  __tnFootprintRegistry[typeName] = fn;\n}\n\nfunction __tnRegisterValidate(\n  typeName: string,\n  fn: (buffer: Uint8Array, params: Record<string, bigint>) => __TnValidateResult\n): void {\n  __tnValidateRegistry[typeName] = fn;\n}\n\nfunction __tnRegisterDynamicValidate(\n  typeName: string,\n  fn: (buffer: Uint8Array) => __TnValidateResult\n): void {\n  __tnDynamicValidateRegistry[typeName] = fn;\n}\n\nfunction __tnInvokeFootprint(\n  typeName: string,\n  params: Record<string, bigint>\n): bigint {\n  const fn = __tnFootprintRegistry[typeName];\n  if (!fn) throw new Error(`IR runtime missing footprint for ${typeName}`);\n  return fn(params);\n}\n\nfunction __tnInvokeValidate(\n  typeName: string,\n  buffer: Uint8Array,\n  params: Record<string, bigint>\n): __TnValidateResult {\n  const fn = __tnValidateRegistry[typeName];\n  if (!fn) throw new Error(`IR runtime missing validate helper for ${typeName}`);\n  return fn(buffer, params);\n}\n\nfunction __tnInvokeDynamicValidate(\n  typeName: string,\n  buffer: Uint8Array\n): __TnValidateResult {\n  const fn = __tnDynamicValidateRegistry[typeName];\n  if (!fn) throw new Error(`IR runtime missing dynamic validate helper for ${typeName}`);\n  return fn(buffer);\n}\n\nfunction __tnEvalFootprint(node: __TnIrNode, ctx: __TnIrContext): bigint {\n  return __tnEvalIrNode(node, ctx, __tnToBigInt(0));\n}\n\nfunction __tnTryEvalFootprint(\n  node: __TnIrNode,\n  ctx: __TnIrContext\n): __TnEvalResult {\n  return __tnTryEvalIr(node, ctx);\n}\n\nfunction __tnTryEvalIr(\n  node: __TnIrNode,\n  ctx: __TnIrContext\n): __TnEvalResult {\n  try {\n    return { ok: true, value: __tnEvalIrNode(node, ctx, __tnToBigInt(0)) };\n  } catch (err) {\n    return { ok: false, code: __tnNormalizeIrError(err) };\n  }\n}\n\nfunction __tnIsEvalError(result: __TnEvalResult): result is { ok: false; code: string } {\n  return result.ok === false;\n}\n\nfunction __tnValidateIrTree(\n  ir: { readonly typeName: string; readonly root: __TnIrNode },\n  buffer: Uint8Array,\n  params: Record<string, bigint>\n): __TnValidateResult {\n  const evalResult = __tnTryEvalIr(ir.root, {\n    params,\n    buffer,\n    typeName: ir.typeName,\n  });\n  if (__tnIsEvalError(evalResult)) {\n    return { ok: false, code: evalResult.code };\n  }\n  const required = evalResult.value;\n  const available = __tnToBigInt(buffer.length);\n  if (__tnBigIntGreaterThan(required, available)) {\n    return { ok: false, code: \"tn.buffer_too_small\", consumed: required };\n  }\n  return { ok: true, consumed: required };\n}\n\nfunction __tnEvalIrNode(\n  node: __TnIrNode,\n  ctx: __TnIrContext,\n  baseOffset: bigint\n): bigint {\n  switch (node.op) {\n    case \"zero\":\n      return __tnToBigInt(0);\n    case \"const\":\n      return node.value;\n    case \"field\": {\n      if (node.param === \"__buffer_size\" && ctx.buffer) {\n        return __tnToBigInt(ctx.buffer.length);\n      }\n      const val = ctx.params[node.param];\n      if (val === undefined) {\n        const prefix = ctx.typeName ? `${ctx.typeName}: ` : \"\";\n        __tnRaiseIrError(\n          \"tn.ir.missing_param\",\n          `${prefix}Missing IR parameter '${node.param}'`\n        );\n      }\n      return val;\n    }\n    case \"add\":\n      {\n        const left = __tnEvalIrNode(node.left, ctx, baseOffset);\n        const right = __tnEvalIrNode(\n          node.right,\n          ctx,\n          __tnCheckedAdd(baseOffset, left)\n        );\n        return __tnCheckedAdd(left, right);\n      }\n    case \"sub\":\n      return __tnCheckedSub(\n        __tnEvalIrNode(node.left, ctx, baseOffset),\n        __tnEvalIrNode(node.right, ctx, baseOffset)\n      );\n    case \"mul\":\n      return __tnCheckedMul(\n        __tnEvalIrNode(node.left, ctx, baseOffset),\n        __tnEvalIrNode(node.right, ctx, baseOffset)\n      );\n    case \"div\":\n      return __tnCheckedDiv(\n        __tnEvalIrNode(node.left, ctx, baseOffset),\n        __tnEvalIrNode(node.right, ctx, baseOffset)\n      );\n    case \"mod\":\n      return __tnCheckedMod(\n        __tnEvalIrNode(node.left, ctx, baseOffset),\n        __tnEvalIrNode(node.right, ctx, baseOffset)\n      );\n    case \"bitAnd\":\n      return __tnBitwise(\n        __tnEvalIrNode(node.left, ctx, baseOffset),\n        __tnEvalIrNode(node.right, ctx, baseOffset),\n        \"and\"\n      );\n    case \"bitOr\":\n      return __tnBitwise(\n        __tnEvalIrNode(node.left, ctx, baseOffset),\n        __tnEvalIrNode(node.right, ctx, baseOffset),\n        \"or\"\n      );\n    case \"bitXor\":\n      return __tnBitwise(\n        __tnEvalIrNode(node.left, ctx, baseOffset),\n        __tnEvalIrNode(node.right, ctx, baseOffset),\n        \"xor\"\n      );\n    case \"leftShift\":\n      return __tnCheckedShift(\n        __tnEvalIrNode(node.left, ctx, baseOffset),\n        __tnEvalIrNode(node.right, ctx, baseOffset),\n        \"left\"\n      );\n    case \"rightShift\":\n      return __tnCheckedShift(\n        __tnEvalIrNode(node.left, ctx, baseOffset),\n        __tnEvalIrNode(node.right, ctx, baseOffset),\n        \"right\"\n      );\n    case \"align\":\n      return __tnAlign(__tnEvalIrNode(node.node, ctx, baseOffset), node.alignment);\n    case \"switch\": {\n      const tagVal = ctx.params[node.tag];\n      if (tagVal === undefined) {\n        const prefix = ctx.typeName ? `${ctx.typeName}: ` : \"\";\n        __tnRaiseIrError(\n          \"tn.ir.missing_param\",\n          `${prefix}Missing IR switch tag '${node.tag}'`\n        );\n      }\n      const tagNumber = Number(tagVal);\n      for (const caseNode of node.cases) {\n        if (caseNode.value === tagNumber) {\n          return __tnEvalIrNode(caseNode.node, ctx, baseOffset);\n        }\n      }\n      if (node.default) return __tnEvalIrNode(node.default, ctx, baseOffset);\n      __tnRaiseIrError(\n        \"tn.ir.invalid_tag\",\n        `Unhandled IR switch value ${tagNumber} for '${node.tag}'`\n      );\n    }\n    case \"call\": {\n      const nestedParams: Record<string, bigint> = Object.create(null);\n      for (const arg of node.args) {\n        const val = ctx.params[arg.source];\n        if (val === undefined) {\n          const prefix = ctx.typeName ? `${ctx.typeName}: ` : \"\";\n          __tnRaiseIrError(\n            \"tn.ir.missing_param\",\n            `${prefix}Missing IR parameter '${arg.source}' for nested call`\n          );\n        }\n        nestedParams[arg.name] = val;\n      }\n      if (ctx.buffer) {\n        const nestedOffset = __tnBigIntToNumber(baseOffset, \"IR nested offset\");\n        const nestedResult = __tnInvokeValidate(\n          node.typeName,\n          ctx.buffer.subarray(nestedOffset),\n          nestedParams\n        );\n        if (!nestedResult.ok) {\n          const nestedCode =\n            nestedResult.code ?? `tn.ir.runtime_error: ${node.typeName}`;\n          const prefixed = nestedCode.startsWith(\"tn.\")\n            ? nestedCode\n            : `tn.ir.runtime_error: ${node.typeName} -> ${nestedCode}`;\n          __tnRaiseIrError(\n            prefixed,\n            `Nested validator ${node.typeName} failed`\n          );\n        }\n        if (nestedResult.consumed !== undefined) {\n          return nestedResult.consumed;\n        }\n      }\n      return __tnInvokeFootprint(node.typeName, nestedParams);\n    }\n    case \"sumOverArray\": {\n      if (!ctx.buffer) {\n        __tnRaiseIrError(\n          \"tn.ir.missing_buffer\",\n          `Jagged array '${node.fieldName}' requires buffer-backed validation`\n        );\n      }\n      const count = __tnBigIntToNumber(\n        __tnEvalIrNode(node.count, ctx, baseOffset),\n        `Jagged array '${node.fieldName}' count`\n      );\n      let cursor = __tnBigIntToNumber(baseOffset, \"IR jagged array offset\");\n      let total = __tnToBigInt(0);\n      for (let i = 0; i < count; i++) {\n        const result = __tnInvokeDynamicValidate(\n          node.elementTypeName,\n          ctx.buffer.subarray(cursor)\n        );\n        if (!result.ok || result.consumed === undefined) {\n          const code = result.code ?? \"tn.ir.runtime_error\";\n          __tnRaiseIrError(\n            code,\n            `Jagged array '${node.fieldName}' element ${i} failed validation`\n          );\n        }\n        cursor += __tnBigIntToNumber(result.consumed, \"IR jagged element size\");\n        total = __tnCheckedAdd(total, result.consumed);\n      }\n      return total;\n    }\n    default:\n      __tnRaiseIrError(\n        \"tn.ir.runtime_error\",\n        `Unsupported IR node ${(node as { op: string }).op}`\n      );\n  }\n}\n\nfunction __tnNormalizeIrError(err: unknown): string {\n  if (err && typeof err === \"object\" && \"code\" in err) {\n    const maybeCode = (err as { code?: string }).code;\n    if (typeof maybeCode === \"string\" && maybeCode.length > 0) {\n      return maybeCode;\n    }\n  }\n  const message =\n    err && typeof err === \"object\" && \"message\" in err\n      ? String((err as { message?: unknown }).message ?? \"\")\n      : typeof err === \"string\"\n      ? err\n      : \"\";\n  if (message.includes(\"Missing IR parameter\")) return \"tn.ir.missing_param\";\n  if (message.includes(\"Unhandled IR switch value\")) return \"tn.ir.invalid_tag\";\n  if (\n    message.includes(\"invalid\") ||\n    message.includes(\"overflow\") ||\n    message.includes(\"negative size\")\n  ) {\n    return \"tn.ir.overflow\";\n  }\n  if (message.length > 0) return `tn.ir.runtime_error: ${message}`;\n  return \"tn.ir.runtime_error\";\n}\n\n__tnRegisterFootprint(\"Hash\", (params) => Hash.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"Hash\", (buffer, params) => Hash.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"Hash\", (buffer) => { const result = Hash.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n\n__tnRegisterFootprint(\"Pubkey\", (params) => Pubkey.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"Pubkey\", (buffer, params) => Pubkey.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"Pubkey\", (buffer) => { const result = Pubkey.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n\n/* ----- TYPE DEFINITION FOR StateProofHeader ----- */\n\nconst __tn_ir_StateProofHeader = {\n  typeName: \"StateProofHeader\",\n  root: { op: \"const\", value: 40n }\n} as const;\n\nexport class StateProofHeader {\n  private view: DataView;\n\n  private constructor(private buffer: Uint8Array) {\n    this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n  }\n\n  static __tnCreateView(buffer: Uint8Array, opts?: { fieldContext?: Record<string, number | bigint> }): StateProofHeader {\n    if (!buffer || buffer.length === undefined) throw new Error(\"StateProofHeader.__tnCreateView requires a Uint8Array\");\n    return new StateProofHeader(new Uint8Array(buffer));\n  }\n\n  static builder(): StateProofHeaderBuilder {\n    return new StateProofHeaderBuilder();\n  }\n\n  static fromBuilder(builder: StateProofHeaderBuilder): StateProofHeader | null {\n    const buffer = builder.build();\n    return StateProofHeader.from_array(buffer);\n  }\n\n  get_type_slot(): bigint {\n    const offset = 0;\n    return this.view.getBigUint64(offset, true); /* little-endian */\n  }\n\n  set_type_slot(value: bigint): void {\n    const offset = 0;\n    this.view.setBigUint64(offset, value, true); /* little-endian */\n  }\n\n  get type_slot(): bigint {\n    return this.get_type_slot();\n  }\n\n  set type_slot(value: bigint) {\n    this.set_type_slot(value);\n  }\n\n  get_path_bitset(): Hash {\n    const offset = 8;\n    const slice = this.buffer.subarray(offset, offset + 32);\n    return Hash.from_array(slice)!;\n  }\n\n  set_path_bitset(value: Hash): void {\n    /* Copy bytes from source struct to this field */\n    const sourceBytes = (value as any).buffer as Uint8Array;\n    const offset = 8;\n    this.buffer.set(sourceBytes, offset);\n  }\n\n  get path_bitset(): Hash {\n    return this.get_path_bitset();\n  }\n\n  set path_bitset(value: Hash) {\n    this.set_path_bitset(value);\n  }\n\n  private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n    return __tnEvalFootprint(__tn_ir_StateProofHeader.root, { params: __tnParams });\n  }\n\n  private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n    return __tnValidateIrTree(__tn_ir_StateProofHeader, buffer, __tnParams);\n  }\n\n  static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n    return this.__tnFootprintInternal(__tnParams);\n  }\n\n  static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n    return this.__tnValidateInternal(buffer, __tnParams);\n  }\n\n  static footprintIr(): bigint {\n    return this.__tnFootprintInternal(Object.create(null));\n  }\n\n  static footprint(): number {\n    const irResult = this.footprintIr();\n      const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n    if (__tnBigIntGreaterThan(irResult, maxSafe)) {\n      throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for StateProofHeader');\n    }\n    return __tnBigIntToNumber(irResult, 'StateProofHeader::footprint');\n  }\n\n  static validate(buffer: Uint8Array, _opts?: { params?: never }): { ok: boolean; code?: string; consumed?: number } {\n    if (buffer.length < 40) return { ok: false, code: \"tn.buffer_too_small\", consumed: 40 };\n    return { ok: true, consumed: 40 };\n  }\n\n  static from_array(buffer: Uint8Array): StateProofHeader | null {\n    if (!buffer || buffer.length === undefined) {\n      return null;\n    }\n    const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    const validation = this.validate(buffer);\n    if (!validation.ok) {\n      return null;\n    }\n    return new StateProofHeader(buffer);\n  }\n\n}\n\nexport class StateProofHeaderBuilder {\n  private buffer: Uint8Array;\n  private view: DataView;\n\n  constructor() {\n    this.buffer = new Uint8Array(40);\n    this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n  }\n\n  set_type_slot(value: bigint): this {\n    const cast = __tnToBigInt(value);\n    this.view.setBigUint64(0, cast, true);\n    return this;\n  }\n\n  set_path_bitset(value: Uint8Array): this {\n    if (value.length !== 32) throw new Error(\"path_bitset expects 32 bytes\");\n    this.buffer.set(value, 8);\n    return this;\n  }\n\n  build(): Uint8Array {\n    return this.buffer.slice();\n  }\n\n  buildInto(target: Uint8Array, offset = 0): Uint8Array {\n    if (target.length - offset < this.buffer.length) throw new Error(\"target buffer too small\");\n    target.set(this.buffer, offset);\n    return target;\n  }\n\n  finish(): StateProofHeader {\n    const view = StateProofHeader.from_array(this.buffer.slice());\n    if (!view) throw new Error(\"failed to build StateProofHeader\");\n    return view;\n  }\n}\n\n__tnRegisterFootprint(\"StateProofHeader\", (params) => StateProofHeader.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"StateProofHeader\", (buffer, params) => StateProofHeader.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"StateProofHeader\", (buffer) => { const result = StateProofHeader.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n\n/* ----- TYPE DEFINITION FOR StateProof ----- */\n\nconst __tn_ir_StateProof = {\n  typeName: \"StateProof\",\n  root: { op: \"align\", alignment: 1, node: { op: \"add\", left: { op: \"align\", alignment: 1, node: { op: \"const\", value: 40n } }, right: { op: \"align\", alignment: 1, node: { op: \"field\", param: \"proof_body.payload_size\" } } } }\n} as const;\n\nexport class StateProof_proof_body_existing_Inner {\n  private view: DataView;\n  private __tnFieldContext: Record<string, number | bigint> | null = null;\n\n  private constructor(private buffer: Uint8Array, fieldContext?: Record<string, number | bigint>) {\n    this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    this.__tnFieldContext = fieldContext ?? null;\n  }\n\n  static __tnCreateView(buffer: Uint8Array, opts?: { fieldContext?: Record<string, number | bigint> }): StateProof_proof_body_existing_Inner {\n    if (!buffer || buffer.length === undefined) throw new Error(\"StateProof_proof_body_existing_Inner.__tnCreateView requires a Uint8Array\");\n    return new StateProof_proof_body_existing_Inner(new Uint8Array(buffer), opts?.fieldContext);\n  }\n\n  withFieldContext(context: Record<string, number | bigint>): this {\n    this.__tnFieldContext = context;\n    return this;\n  }\n\n  private __tnResolveFieldRef(path: string): number {\n    const getterName = `get_${path.replace(/[.]/g, '_')}`;\n    const getter = (this as any)[getterName];\n    if (typeof getter === \"function\") {\n      const value = getter.call(this);\n      return typeof value === \"bigint\" ? __tnBigIntToNumber(value, \"StateProof_proof_body_existing_Inner::__tnResolveFieldRef\") : value;\n    }\n    if (this.__tnFieldContext && Object.prototype.hasOwnProperty.call(this.__tnFieldContext, path)) {\n      const contextValue = this.__tnFieldContext[path];\n      return typeof contextValue === \"bigint\" ? __tnBigIntToNumber(contextValue, \"StateProof_proof_body_existing_Inner::__tnResolveFieldRef\") : contextValue;\n    }\n    throw new Error(\"StateProof_proof_body_existing_Inner: field reference '\" + path + \"' is not available; provide fieldContext when creating this view\");\n  }\n\n  get_sibling_hashes_length(): number {\n    return ((__tnPopcount(this.__tnResolveFieldRef(\"hdr.path_bitset.bytes.0\")) + __tnPopcount(this.__tnResolveFieldRef(\"hdr.path_bitset.bytes.1\"))) + (__tnPopcount(this.__tnResolveFieldRef(\"hdr.path_bitset.bytes.2\")) + __tnPopcount(this.__tnResolveFieldRef(\"hdr.path_bitset.bytes.3\"))));\n  }\n\n  get_sibling_hashes_at(index: number): Hash {\n    const offset = 0;\n    const slice = this.buffer.subarray((offset + index * 32), (offset + (index + 1) * 32));\n    return Hash.from_array(slice)!;\n  }\n\n  get_sibling_hashes(): Hash[] {\n    const len = this.get_sibling_hashes_length();\n    const result: Hash[] = [];\n    for (let i = 0; i < len; i++) {\n      result.push(this.get_sibling_hashes_at(i));\n    }\n    return result;\n  }\n\n  set_sibling_hashes_at(index: number, value: Hash): void {\n    const offset = 0;\n    const slice = this.buffer.subarray(offset + index * 32, offset + (index + 1) * 32);\n    slice.set(value['buffer']);\n  }\n\n  set_sibling_hashes(value: Hash[]): void {\n    const len = Math.min(this.get_sibling_hashes_length(), value.length);\n    for (let i = 0; i < len; i++) {\n      this.set_sibling_hashes_at(i, value[i]);\n    }\n  }\n\n  get sibling_hashes(): Hash[] {\n    return this.get_sibling_hashes();\n  }\n\n  set sibling_hashes(value: Hash[]) {\n    this.set_sibling_hashes(value);\n  }\n\n}\n\nexport class StateProof_proof_body_updating_Inner {\n  private view: DataView;\n  private __tnFieldContext: Record<string, number | bigint> | null = null;\n\n  private constructor(private buffer: Uint8Array, fieldContext?: Record<string, number | bigint>) {\n    this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    this.__tnFieldContext = fieldContext ?? null;\n  }\n\n  static __tnCreateView(buffer: Uint8Array, opts?: { fieldContext?: Record<string, number | bigint> }): StateProof_proof_body_updating_Inner {\n    if (!buffer || buffer.length === undefined) throw new Error(\"StateProof_proof_body_updating_Inner.__tnCreateView requires a Uint8Array\");\n    return new StateProof_proof_body_updating_Inner(new Uint8Array(buffer), opts?.fieldContext);\n  }\n\n  withFieldContext(context: Record<string, number | bigint>): this {\n    this.__tnFieldContext = context;\n    return this;\n  }\n\n  private __tnResolveFieldRef(path: string): number {\n    const getterName = `get_${path.replace(/[.]/g, '_')}`;\n    const getter = (this as any)[getterName];\n    if (typeof getter === \"function\") {\n      const value = getter.call(this);\n      return typeof value === \"bigint\" ? __tnBigIntToNumber(value, \"StateProof_proof_body_updating_Inner::__tnResolveFieldRef\") : value;\n    }\n    if (this.__tnFieldContext && Object.prototype.hasOwnProperty.call(this.__tnFieldContext, path)) {\n      const contextValue = this.__tnFieldContext[path];\n      return typeof contextValue === \"bigint\" ? __tnBigIntToNumber(contextValue, \"StateProof_proof_body_updating_Inner::__tnResolveFieldRef\") : contextValue;\n    }\n    throw new Error(\"StateProof_proof_body_updating_Inner: field reference '\" + path + \"' is not available; provide fieldContext when creating this view\");\n  }\n\n  get_existing_leaf_hash(): Hash {\n    const offset = 0;\n    const slice = this.buffer.subarray(offset, offset + 32);\n    return Hash.from_array(slice)!;\n  }\n\n  set_existing_leaf_hash(value: Hash): void {\n    /* Copy bytes from source struct to this field */\n    const sourceBytes = (value as any).buffer as Uint8Array;\n    const offset = 0;\n    this.buffer.set(sourceBytes, offset);\n  }\n\n  get existing_leaf_hash(): Hash {\n    return this.get_existing_leaf_hash();\n  }\n\n  set existing_leaf_hash(value: Hash) {\n    this.set_existing_leaf_hash(value);\n  }\n\n  get_sibling_hashes_length(): number {\n    return ((__tnPopcount(this.__tnResolveFieldRef(\"hdr.path_bitset.bytes.0\")) + __tnPopcount(this.__tnResolveFieldRef(\"hdr.path_bitset.bytes.1\"))) + (__tnPopcount(this.__tnResolveFieldRef(\"hdr.path_bitset.bytes.2\")) + __tnPopcount(this.__tnResolveFieldRef(\"hdr.path_bitset.bytes.3\"))));\n  }\n\n  get_sibling_hashes_at(index: number): Hash {\n    const offset = 32;\n    const slice = this.buffer.subarray((offset + index * 32), (offset + (index + 1) * 32));\n    return Hash.from_array(slice)!;\n  }\n\n  get_sibling_hashes(): Hash[] {\n    const len = this.get_sibling_hashes_length();\n    const result: Hash[] = [];\n    for (let i = 0; i < len; i++) {\n      result.push(this.get_sibling_hashes_at(i));\n    }\n    return result;\n  }\n\n  set_sibling_hashes_at(index: number, value: Hash): void {\n    const offset = 32;\n    const slice = this.buffer.subarray(offset + index * 32, offset + (index + 1) * 32);\n    slice.set(value['buffer']);\n  }\n\n  set_sibling_hashes(value: Hash[]): void {\n    const len = Math.min(this.get_sibling_hashes_length(), value.length);\n    for (let i = 0; i < len; i++) {\n      this.set_sibling_hashes_at(i, value[i]);\n    }\n  }\n\n  get sibling_hashes(): Hash[] {\n    return this.get_sibling_hashes();\n  }\n\n  set sibling_hashes(value: Hash[]) {\n    this.set_sibling_hashes(value);\n  }\n\n}\n\nexport class StateProof_proof_body_creation_Inner {\n  private view: DataView;\n  private __tnFieldContext: Record<string, number | bigint> | null = null;\n\n  private constructor(private buffer: Uint8Array, fieldContext?: Record<string, number | bigint>) {\n    this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    this.__tnFieldContext = fieldContext ?? null;\n  }\n\n  static __tnCreateView(buffer: Uint8Array, opts?: { fieldContext?: Record<string, number | bigint> }): StateProof_proof_body_creation_Inner {\n    if (!buffer || buffer.length === undefined) throw new Error(\"StateProof_proof_body_creation_Inner.__tnCreateView requires a Uint8Array\");\n    return new StateProof_proof_body_creation_Inner(new Uint8Array(buffer), opts?.fieldContext);\n  }\n\n  withFieldContext(context: Record<string, number | bigint>): this {\n    this.__tnFieldContext = context;\n    return this;\n  }\n\n  private __tnResolveFieldRef(path: string): number {\n    const getterName = `get_${path.replace(/[.]/g, '_')}`;\n    const getter = (this as any)[getterName];\n    if (typeof getter === \"function\") {\n      const value = getter.call(this);\n      return typeof value === \"bigint\" ? __tnBigIntToNumber(value, \"StateProof_proof_body_creation_Inner::__tnResolveFieldRef\") : value;\n    }\n    if (this.__tnFieldContext && Object.prototype.hasOwnProperty.call(this.__tnFieldContext, path)) {\n      const contextValue = this.__tnFieldContext[path];\n      return typeof contextValue === \"bigint\" ? __tnBigIntToNumber(contextValue, \"StateProof_proof_body_creation_Inner::__tnResolveFieldRef\") : contextValue;\n    }\n    throw new Error(\"StateProof_proof_body_creation_Inner: field reference '\" + path + \"' is not available; provide fieldContext when creating this view\");\n  }\n\n  get_existing_leaf_pubkey(): Pubkey {\n    const offset = 0;\n    const slice = this.buffer.subarray(offset, offset + 32);\n    return Pubkey.from_array(slice)!;\n  }\n\n  set_existing_leaf_pubkey(value: Pubkey): void {\n    /* Copy bytes from source struct to this field */\n    const sourceBytes = (value as any).buffer as Uint8Array;\n    const offset = 0;\n    this.buffer.set(sourceBytes, offset);\n  }\n\n  get existing_leaf_pubkey(): Pubkey {\n    return this.get_existing_leaf_pubkey();\n  }\n\n  set existing_leaf_pubkey(value: Pubkey) {\n    this.set_existing_leaf_pubkey(value);\n  }\n\n  get_existing_leaf_hash(): Hash {\n    const offset = 32;\n    const slice = this.buffer.subarray(offset, offset + 32);\n    return Hash.from_array(slice)!;\n  }\n\n  set_existing_leaf_hash(value: Hash): void {\n    /* Copy bytes from source struct to this field */\n    const sourceBytes = (value as any).buffer as Uint8Array;\n    const offset = 32;\n    this.buffer.set(sourceBytes, offset);\n  }\n\n  get existing_leaf_hash(): Hash {\n    return this.get_existing_leaf_hash();\n  }\n\n  set existing_leaf_hash(value: Hash) {\n    this.set_existing_leaf_hash(value);\n  }\n\n  get_sibling_hashes_length(): number {\n    return ((__tnPopcount(this.__tnResolveFieldRef(\"hdr.path_bitset.bytes.0\")) + __tnPopcount(this.__tnResolveFieldRef(\"hdr.path_bitset.bytes.1\"))) + (__tnPopcount(this.__tnResolveFieldRef(\"hdr.path_bitset.bytes.2\")) + __tnPopcount(this.__tnResolveFieldRef(\"hdr.path_bitset.bytes.3\"))));\n  }\n\n  get_sibling_hashes_at(index: number): Hash {\n    const offset = 64;\n    const slice = this.buffer.subarray((offset + index * 32), (offset + (index + 1) * 32));\n    return Hash.from_array(slice)!;\n  }\n\n  get_sibling_hashes(): Hash[] {\n    const len = this.get_sibling_hashes_length();\n    const result: Hash[] = [];\n    for (let i = 0; i < len; i++) {\n      result.push(this.get_sibling_hashes_at(i));\n    }\n    return result;\n  }\n\n  set_sibling_hashes_at(index: number, value: Hash): void {\n    const offset = 64;\n    const slice = this.buffer.subarray(offset + index * 32, offset + (index + 1) * 32);\n    slice.set(value['buffer']);\n  }\n\n  set_sibling_hashes(value: Hash[]): void {\n    const len = Math.min(this.get_sibling_hashes_length(), value.length);\n    for (let i = 0; i < len; i++) {\n      this.set_sibling_hashes_at(i, value[i]);\n    }\n  }\n\n  get sibling_hashes(): Hash[] {\n    return this.get_sibling_hashes();\n  }\n\n  set sibling_hashes(value: Hash[]) {\n    this.set_sibling_hashes(value);\n  }\n\n}\n\nexport class StateProof_proof_body_Inner {\n  private view: DataView;\n  private __tnFieldContext: Record<string, number | bigint> | null = null;\n  private constructor(private buffer: Uint8Array, private descriptor: __TnVariantDescriptor | null, fieldContext?: Record<string, number | bigint>) {\n    this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    this.__tnFieldContext = fieldContext ?? null;\n  }\n\n  static __tnCreate(payload: Uint8Array, descriptor: __TnVariantDescriptor | null, fieldContext?: Record<string, number | bigint>): StateProof_proof_body_Inner {\n    return new StateProof_proof_body_Inner(new Uint8Array(payload), descriptor, fieldContext);\n  }\n\n  bytes(): Uint8Array {\n    return new Uint8Array(this.buffer);\n  }\n\n  variant(): __TnVariantDescriptor | null {\n    return this.descriptor;\n  }\n\n  asExisting(): StateProof_proof_body_existing_Inner | null {\n    if (!this.descriptor || this.descriptor.tag !== 0) return null;\n    return StateProof_proof_body_existing_Inner.__tnCreateView(new Uint8Array(this.buffer), { fieldContext: this.__tnFieldContext ?? undefined });\n  }\n\n  asUpdating(): StateProof_proof_body_updating_Inner | null {\n    if (!this.descriptor || this.descriptor.tag !== 1) return null;\n    return StateProof_proof_body_updating_Inner.__tnCreateView(new Uint8Array(this.buffer), { fieldContext: this.__tnFieldContext ?? undefined });\n  }\n\n  asCreation(): StateProof_proof_body_creation_Inner | null {\n    if (!this.descriptor || this.descriptor.tag !== 2) return null;\n    return StateProof_proof_body_creation_Inner.__tnCreateView(new Uint8Array(this.buffer), { fieldContext: this.__tnFieldContext ?? undefined });\n  }\n\n}\n\nexport class StateProof {\n  private view: DataView;\n  private __tnFieldContext: Record<string, number | bigint> | null = null;\n  private static readonly __tnFieldOffset_proof_body = 40;\n  private __tnParams: StateProof.Params;\n  private __tnDerivedParams: Record<string, bigint> | null = null;\n\n  private constructor(private buffer: Uint8Array, params?: StateProof.Params, fieldContext?: Record<string, number | bigint>) {\n    this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    this.__tnFieldContext = fieldContext ?? null;\n    if (params) {\n      this.__tnParams = params;\n    } else {\n      const derived = StateProof.__tnExtractParams(this.view, buffer);\n      if (!derived) {\n        throw new Error(\"StateProof: failed to derive dynamic parameters\");\n      }\n      this.__tnParams = derived.params;\n      this.__tnDerivedParams = derived.derived;\n    }\n  }\n\n  static __tnCreateView(buffer: Uint8Array, opts?: { params?: StateProof.Params, fieldContext?: Record<string, number | bigint> }): StateProof {\n    if (!buffer || buffer.length === undefined) throw new Error(\"StateProof.__tnCreateView requires a Uint8Array\");\n    let params = opts?.params ?? null;\n    let derivedRecord: Record<string, bigint> | null = null;\n    if (!params) {\n      const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n      const derived = StateProof.__tnExtractParams(view, buffer);\n      if (!derived) throw new Error(\"StateProof.__tnCreateView: failed to derive params\");\n      params = derived.params;\n      derivedRecord = derived.derived;\n    }\n    const instance = new StateProof(new Uint8Array(buffer), params, opts?.fieldContext);\n    if (derivedRecord) instance.__tnDerivedParams = derivedRecord;\n    return instance;\n  }\n\n  dynamicParams(): StateProof.Params {\n    return this.__tnParams;\n  }\n\n  withFieldContext(context: Record<string, number | bigint>): this {\n    this.__tnFieldContext = context;\n    return this;\n  }\n\n  private __tnResolveFieldRef(path: string): number {\n    const getterName = `get_${path.replace(/[.]/g, '_')}`;\n    const getter = (this as any)[getterName];\n    if (typeof getter === \"function\") {\n      const value = getter.call(this);\n      return typeof value === \"bigint\" ? __tnBigIntToNumber(value, \"StateProof::__tnResolveFieldRef\") : value;\n    }\n    if (this.__tnFieldContext && Object.prototype.hasOwnProperty.call(this.__tnFieldContext, path)) {\n      const contextValue = this.__tnFieldContext[path];\n      return typeof contextValue === \"bigint\" ? __tnBigIntToNumber(contextValue, \"StateProof::__tnResolveFieldRef\") : contextValue;\n    }\n    throw new Error(\"StateProof: field reference '\" + path + \"' is not available; provide fieldContext when creating this view\");\n  }\n\n  static builder(): StateProofBuilder {\n    return new StateProofBuilder();\n  }\n\n  static fromBuilder(builder: StateProofBuilder): StateProof | null {\n    const buffer = builder.build();\n    const params = builder.dynamicParams();\n    return StateProof.from_array(buffer, { params });\n  }\n\n  static readonly proof_bodyVariantDescriptors = Object.freeze([\n    {\n      name: \"existing\",\n      tag: 0,\n      payloadSize: null,\n      payloadType: \"StateProof::proof_body::existing\",\n      createPayloadBuilder: () => null,\n    },\n    {\n      name: \"updating\",\n      tag: 1,\n      payloadSize: null,\n      payloadType: \"StateProof::proof_body::updating\",\n      createPayloadBuilder: () => null,\n    },\n    {\n      name: \"creation\",\n      tag: 2,\n      payloadSize: null,\n      payloadType: \"StateProof::proof_body::creation\",\n      createPayloadBuilder: () => null,\n    },\n  ] as const);\n\n  static __tnComputeSequentialLayout(view: DataView, buffer: Uint8Array): { params: Record<string, bigint> | null; offsets: Record<string, number> | null; derived: Record<string, bigint> | null } | null {\n    const derived: Record<string, bigint> = Object.create(null);\n    const __tnLength = buffer.length;\n    let __tnParamSeq_proof_body_payload_size: bigint | null = null;\n    let __tnCursorMutable = 0;\n    if (__tnLength < 8) return null;\n    const __tnRef_hdr_type_slot = view.getBigUint64(0, true);\n    if (__tnCursorMutable + 40 > __tnLength) return null;\n    __tnCursorMutable += 40;\n    const __tnEnumTagValue_proof_body = Math.trunc(Number(((__tnRef_hdr_type_slot >> 62n) & 3n)));\n    if (!Number.isFinite(__tnEnumTagValue_proof_body)) return null;\n    let __tnEnumSize_proof_body = 0;\n    switch (Number(__tnEnumTagValue_proof_body)) {\n      case 0: break;\n      case 1: break;\n      case 2: break;\n      default: return null;\n    }\n    if (__tnCursorMutable > __tnLength) return null;\n    __tnEnumSize_proof_body = __tnLength - __tnCursorMutable;\n    __tnCursorMutable = __tnLength;\n    derived[\"StateProof__proof_body_computed_tag\"] = __tnToBigInt(__tnEnumTagValue_proof_body);\n    __tnParamSeq_proof_body_payload_size = __tnToBigInt(__tnEnumSize_proof_body);\n    const params: Record<string, bigint> = Object.create(null);\n    if (__tnParamSeq_proof_body_payload_size === null) return null;\n    params[\"proof_body_payload_size\"] = __tnParamSeq_proof_body_payload_size as bigint;\n    return { params, offsets: null, derived: derived };\n  }\n\n  private static __tnExtractParams(view: DataView, buffer: Uint8Array): { params: StateProof.Params; derived: Record<string, bigint> | null } | null {\n    if (buffer.length < 8) {\n      return null;\n    }\n    const __tnParam_proof_body_hdr_type_slot = __tnToBigInt(view.getBigUint64(0, true));\n    const __tnLayout = StateProof.__tnComputeSequentialLayout(view, buffer);\n    if (!__tnLayout || !__tnLayout.params) return null;\n    const __tnSeqParams = __tnLayout.params;\n    const __tnParamSeq_proof_body_payload_size = __tnSeqParams[\"proof_body_payload_size\"];\n    if (__tnParamSeq_proof_body_payload_size === undefined) return null;\n    const __tnExtractedParams = StateProof.Params.fromValues({\n      proof_body_hdr_type_slot: __tnParam_proof_body_hdr_type_slot,\n      proof_body_payload_size: __tnParamSeq_proof_body_payload_size as bigint,\n    });\n    return { params: __tnExtractedParams, derived: (__tnLayout && __tnLayout.derived ? __tnLayout.derived : null) };\n  }\n\n  private __tnEnsureDerivedParams(): Record<string, bigint> | null {\n    if (this.__tnDerivedParams) return this.__tnDerivedParams;\n    const layout = StateProof.__tnComputeSequentialLayout(this.view, this.buffer);\n    if (!layout || !layout.derived) return null;\n    this.__tnDerivedParams = layout.derived;\n    return this.__tnDerivedParams;\n  }\n\n  private __tnReadDerivedParam(key: string): number | null {\n    const params = this.__tnEnsureDerivedParams();\n    if (!params) return null;\n    const value = params[key];\n    if (value === undefined) return null;\n    return __tnBigIntToNumber(value, \"StateProof::__tnReadDerivedParam\");\n  }\n\n  get_hdr(): StateProofHeader {\n    const offset = 0;\n    const slice = this.buffer.subarray(offset, offset + 40);\n    return StateProofHeader.from_array(slice)!;\n  }\n\n  set_hdr(value: StateProofHeader): void {\n    /* Copy bytes from source struct to this field */\n    const sourceBytes = (value as any).buffer as Uint8Array;\n    const offset = 0;\n    this.buffer.set(sourceBytes, offset);\n  }\n\n  get hdr(): StateProofHeader {\n    return this.get_hdr();\n  }\n\n  set hdr(value: StateProofHeader) {\n    this.set_hdr(value);\n  }\n\n  get_proof_body_computed_tag(): number {\n    let tag = this.__tnReadDerivedParam(\"StateProof__proof_body_computed_tag\");\n    if (tag === null) {\n      tag = (((this.__tnResolveFieldRef(\"hdr.type_slot\") >> 62) & 3));\n    }\n    return tag;\n  }\n\n  proofBodyVariant(): typeof StateProof.proof_bodyVariantDescriptors[number] | null {\n    const tag = this.get_proof_body_computed_tag();\n    return StateProof.proof_bodyVariantDescriptors.find((variant) => variant.tag === tag) ?? null;\n  }\n\n  proof_body(): StateProof_proof_body_Inner {\n    const descriptor = this.proofBodyVariant();\n    if (!descriptor) throw new Error(\"StateProof: unknown proof_body variant\");\n    const offset = StateProof.__tnFieldOffset_proof_body;\n    const remaining = this.buffer.length - offset;\n    const payloadLength = descriptor.payloadSize ?? remaining;\n    if (payloadLength < 0 || offset + payloadLength > this.buffer.length) throw new Error(\"StateProof: payload exceeds buffer bounds\");\n    const slice = this.buffer.subarray(offset, offset + payloadLength);\n    const __tnAutoContext: Record<string, number | bigint> = {\n      \"hdr.path_bitset.bytes.0\": this.view.getUint8(8),\n      \"hdr.path_bitset.bytes.1\": this.view.getUint8(9),\n      \"hdr.path_bitset.bytes.2\": this.view.getUint8(10),\n      \"hdr.path_bitset.bytes.3\": this.view.getUint8(11),\n    };\n    const __tnMergedContext = this.__tnFieldContext ? { ...__tnAutoContext, ...this.__tnFieldContext } : __tnAutoContext;\n    return StateProof_proof_body_Inner.__tnCreate(slice, descriptor, __tnMergedContext);\n  }\n  private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n    return __tnEvalFootprint(__tn_ir_StateProof.root, { params: __tnParams });\n  }\n\n  private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n    return __tnValidateIrTree(__tn_ir_StateProof, buffer, __tnParams);\n  }\n\n  static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n    return this.__tnFootprintInternal(__tnParams);\n  }\n\n  static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n    return this.__tnValidateInternal(buffer, __tnParams);\n  }\n\n  static footprintIr(proof_body_hdr_type_slot: number | bigint, proof_body_payload_size: number | bigint): bigint {\n    const params = StateProof.Params.fromValues({\n      proof_body_hdr_type_slot: proof_body_hdr_type_slot,\n      proof_body_payload_size: proof_body_payload_size,\n    });\n    return this.footprintIrFromParams(params);\n  }\n\n  private static __tnPackParams(params: StateProof.Params): Record<string, bigint> {\n    const record: Record<string, bigint> = Object.create(null);\n    record[\"proof_body.hdr.type_slot\"] = params.proof_body_hdr_type_slot;\n    record[\"proof_body.payload_size\"] = params.proof_body_payload_size;\n    return record;\n  }\n\n  static footprintIrFromParams(params: StateProof.Params): bigint {\n    const __tnParams = this.__tnPackParams(params);\n    return this.__tnFootprintInternal(__tnParams);\n  }\n\n  static footprintFromParams(params: StateProof.Params): number {\n    const irResult = this.footprintIrFromParams(params);\n    const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n    if (__tnBigIntGreaterThan(irResult, maxSafe)) throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for StateProof');\n    return __tnBigIntToNumber(irResult, 'StateProof::footprintFromParams');\n  }\n\n  static footprintFromValues(input: { proof_body_hdr_type_slot: number | bigint, proof_body_payload_size: number | bigint }): number {\n    const params = StateProof.params(input);\n    return this.footprintFromParams(params);\n  }\n\n  static footprint(params: StateProof.Params): number {\n    return this.footprintFromParams(params);\n  }\n\n  static validate(buffer: Uint8Array, opts?: { params?: StateProof.Params }): { ok: boolean; code?: string; consumed?: number; params?: StateProof.Params } {\n    if (!buffer || buffer.length === undefined) {\n      return { ok: false, code: \"tn.invalid_buffer\" };\n    }\n    const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    let params = opts?.params ?? null;\n    if (!params) {\n      const extracted = this.__tnExtractParams(view, buffer);\n      if (!extracted) return { ok: false, code: \"tn.param_extraction_failed\" };\n      params = extracted.params;\n    }\n    const __tnParamsRec = this.__tnPackParams(params);\n    const irResult = this.__tnValidateInternal(buffer, __tnParamsRec);\n    if (!irResult.ok) {\n      return { ok: false, code: irResult.code, consumed: irResult.consumed ? __tnBigIntToNumber(irResult.consumed, 'StateProof::validate') : undefined, params };\n    }\n    const consumed = irResult.consumed ? __tnBigIntToNumber(irResult.consumed, 'StateProof::validate') : undefined;\n    return { ok: true, consumed, params };\n  }\n\n  static from_array(buffer: Uint8Array, opts?: { params?: StateProof.Params }): StateProof | null {\n    if (!buffer || buffer.length === undefined) {\n      return null;\n    }\n    const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    let params = opts?.params ?? null;\n    let derivedRecord: Record<string, bigint> | null = null;\n    if (!params) {\n      const derived = this.__tnExtractParams(view, buffer);\n      if (!derived) return null;\n      params = derived.params;\n      derivedRecord = derived.derived;\n    }\n    const validation = this.validate(buffer, { params });\n    if (!validation.ok) {\n      return null;\n    }\n    const cached = validation.params ?? params;\n    const state = new StateProof(buffer, cached);\n    if (derivedRecord) state.__tnDerivedParams = derivedRecord;\n    return state;\n  }\n\n\n}\n\nexport namespace StateProof {\n  export type Params = {\n    /** ABI path: proof_body.hdr.type_slot */\n    readonly proof_body_hdr_type_slot: bigint;\n    /** ABI path: proof_body.payload_size */\n    readonly proof_body_payload_size: bigint;\n  };\n\n  export const ParamKeys = Object.freeze({\n    proof_body_hdr_type_slot: \"proof_body.hdr.type_slot\",\n    proof_body_payload_size: \"proof_body.payload_size\",\n  } as const);\n\n  export const Params = {\n    fromValues(input: { proof_body_hdr_type_slot: number | bigint, proof_body_payload_size: number | bigint }): Params {\n      return {\n        proof_body_hdr_type_slot: __tnToBigInt(input.proof_body_hdr_type_slot),\n        proof_body_payload_size: __tnToBigInt(input.proof_body_payload_size),\n      };\n    },\n    fromBuilder(source: { dynamicParams(): Params } | { params: Params } | Params): Params {\n      if ((source as { dynamicParams?: () => Params }).dynamicParams) {\n        return (source as { dynamicParams(): Params }).dynamicParams();\n      }\n      if ((source as { params?: Params }).params) {\n        return (source as { params: Params }).params;\n      }\n      return source as Params;\n    }\n  };\n\n  export function params(input: { proof_body_hdr_type_slot: number | bigint, proof_body_payload_size: number | bigint }): Params {\n    return Params.fromValues(input);\n  }\n}\n\nexport class StateProofBuilder {\n  private __tnPrefixBuffer: Uint8Array;\n  private __tnPrefixView: DataView;\n  private __tnPayload_proof_body: { descriptor: typeof StateProof.proof_bodyVariantDescriptors[number]; bytes: Uint8Array } | null = null;\n  private __tnCachedParams: StateProof.Params | null = null;\n  private __tnLastBuffer: Uint8Array | null = null;\n  private __tnLastParams: StateProof.Params | null = null;\n  private __tnVariantSelector_proof_body?: __TnVariantSelectorResult<StateProofBuilder>;\n\n  constructor() {\n    this.__tnPrefixBuffer = new Uint8Array(40);\n    this.__tnPrefixView = new DataView(this.__tnPrefixBuffer.buffer, this.__tnPrefixBuffer.byteOffset, this.__tnPrefixBuffer.byteLength);\n  }\n\n  set_hdr(value: Uint8Array): this {\n    if (value.length !== 40) throw new Error(\"hdr expects 40 bytes\");\n    this.__tnPrefixBuffer.set(value, 0);\n    this.__tnInvalidate();\n    return this;\n  }\n\n  private __tnInvalidate(): void {\n    this.__tnCachedParams = null;\n    this.__tnLastBuffer = null;\n    this.__tnLastParams = null;\n  }\n\n  proof_body(): __TnVariantSelectorResult<StateProofBuilder> {\n    if (!this.__tnVariantSelector_proof_body) {\n      this.__tnVariantSelector_proof_body = __tnCreateVariantSelector(this, StateProof.proof_bodyVariantDescriptors, (descriptor, payload) => {\n        this.__tnPayload_proof_body = { descriptor, bytes: new Uint8Array(payload) };\n        this.__tnInvalidate();\n      });\n    }\n    return this.__tnVariantSelector_proof_body!;\n  }\n\n  build(): Uint8Array {\n    const params = this.__tnComputeParams();\n    if (!this.__tnPayload_proof_body) throw new Error(\"StateProofBuilder: payload variant not selected\");\n    const payloadLength = this.__tnPayload_proof_body.bytes.length;\n    const requiredSize = 40 + payloadLength;\n    const footprintSize = StateProof.footprintFromParams(params);\n    const size = Math.max(requiredSize, footprintSize);\n    const buffer = new Uint8Array(size);\n    this.__tnWriteInto(buffer);\n    this.__tnValidateOrThrow(buffer, params);\n    return buffer;\n  }\n\n  buildInto(target: Uint8Array, offset = 0): Uint8Array {\n    const params = this.__tnComputeParams();\n    if (!this.__tnPayload_proof_body) throw new Error(\"StateProofBuilder: payload variant not selected\");\n    const payloadLength = this.__tnPayload_proof_body.bytes.length;\n    const requiredSize = 40 + payloadLength;\n    const footprintSize = StateProof.footprintFromParams(params);\n    const size = Math.max(requiredSize, footprintSize);\n    if (target.length - offset < size) throw new Error(\"StateProofBuilder: target buffer too small\");\n    const slice = target.subarray(offset, offset + size);\n    this.__tnWriteInto(slice);\n    this.__tnValidateOrThrow(slice, params);\n    return target;\n  }\n\n  finish(): StateProof {\n    const buffer = this.build();\n    const params = this.__tnLastParams ?? this.__tnComputeParams();\n    const view = StateProof.from_array(buffer, { params });\n    if (!view) throw new Error(\"StateProofBuilder: failed to finalize view\");\n    return view;\n  }\n\n  finishView(): StateProof {\n    return this.finish();\n  }\n\n  dynamicParams(): StateProof.Params {\n    return this.__tnComputeParams();\n  }\n\n  private __tnComputeParams(): StateProof.Params {\n    if (this.__tnCachedParams) return this.__tnCachedParams;\n    const params = StateProof.Params.fromValues({\n      proof_body_hdr_type_slot: (() => { const slice = this.__tnPrefixBuffer.subarray(0, 40); const header = StateProofHeader.from_array(slice); if (!header) throw new Error(\"StateProofBuilder: field 'hdr' must be set before build\"); return __tnToBigInt(header.get_type_slot()); })(),\n      proof_body_payload_size: (() => { if (!this.__tnPayload_proof_body) throw new Error(\"StateProofBuilder: payload 'proof_body' must be selected before build\"); return __tnToBigInt(this.__tnPayload_proof_body.bytes.length); })(),\n    });\n    this.__tnCachedParams = params;\n    return params;\n  }\n\n  private __tnWriteInto(target: Uint8Array): void {\n    if (!this.__tnPayload_proof_body) throw new Error(\"StateProofBuilder: payload variant not selected\");\n    const view = new DataView(target.buffer, target.byteOffset, target.byteLength);\n    target.set(this.__tnPrefixBuffer, 0);\n    target.set(this.__tnPayload_proof_body.bytes, 40);\n    const __tnLayout = StateProof.__tnComputeSequentialLayout(view, target);\n    if (!__tnLayout || !__tnLayout.derived) throw new Error(\"StateProofBuilder: failed to derive enum tag\");\n    const __tnDerivedTagValue = __tnLayout.derived[\"StateProof__proof_body_computed_tag\"];\n    if (__tnDerivedTagValue === undefined) throw new Error(\"StateProofBuilder: computed enum tag missing\");\n    const __tnDerivedTag = __tnBigIntToNumber(__tnDerivedTagValue, \"StateProofBuilder::__tnWriteInto\");\n    const __tnExpectedTag = this.__tnPayload_proof_body!.descriptor.tag;\n    if (__tnDerivedTag !== __tnExpectedTag) throw new Error(\"StateProofBuilder: computed enum tag does not match selected variant\");\n  }\n\n  private __tnValidateOrThrow(buffer: Uint8Array, params: StateProof.Params): void {\n    const result = StateProof.validate(buffer, { params });\n    if (!result.ok) {\n      throw new Error(`${ StateProof }Builder: builder produced invalid buffer (code=${result.code ?? \"unknown\"})`);\n    }\n    this.__tnLastParams = result.params ?? params;\n    this.__tnLastBuffer = buffer;\n  }\n}\n\n__tnRegisterFootprint(\"StateProof\", (params) => StateProof.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"StateProof\", (buffer, params) => StateProof.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"StateProof\", (buffer) => { const result = StateProof.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n","/* Auto-generated TypeScript code */\n/* WARNING: Do not modify this file directly. It is generated from ABI definitions. */\n\nimport { StateProof } from \"../../blockchain/state_proof/types\";\nimport { InstructionData, Pubkey } from \"../../common/primitives/types\";\n\ntype __TnIrNode =\n  | { readonly op: \"zero\" }\n  | { readonly op: \"const\"; readonly value: bigint }\n  | { readonly op: \"field\"; readonly param: string }\n  | {\n      readonly op: \"add\";\n      readonly left: __TnIrNode;\n      readonly right: __TnIrNode;\n    }\n  | {\n      readonly op: \"sub\";\n      readonly left: __TnIrNode;\n      readonly right: __TnIrNode;\n    }\n  | {\n      readonly op: \"mul\";\n      readonly left: __TnIrNode;\n      readonly right: __TnIrNode;\n    }\n  | {\n      readonly op:\n        | \"div\"\n        | \"mod\"\n        | \"bitAnd\"\n        | \"bitOr\"\n        | \"bitXor\"\n        | \"leftShift\"\n        | \"rightShift\";\n      readonly left: __TnIrNode;\n      readonly right: __TnIrNode;\n    }\n  | {\n      readonly op: \"align\";\n      readonly alignment: number;\n      readonly node: __TnIrNode;\n    }\n  | {\n      readonly op: \"switch\";\n      readonly tag: string;\n      readonly cases: readonly { readonly value: number; readonly node: __TnIrNode }[];\n      readonly default?: __TnIrNode;\n    }\n  | {\n      readonly op: \"call\";\n      readonly typeName: string;\n      readonly args: readonly { readonly name: string; readonly source: string }[];\n    }\n  | {\n      readonly op: \"sumOverArray\";\n      readonly count: __TnIrNode;\n      readonly elementTypeName: string;\n      readonly fieldName: string;\n    };\n\ntype __TnIrContext = {\n  params: Record<string, bigint>;\n  buffer?: Uint8Array;\n  typeName?: string;\n};\n\ntype __TnValidateResult = {\n  ok: boolean;\n  code?: string;\n  consumed?: bigint;\n  params?: Record<string, bigint>;\n};\ntype __TnEvalResult =\n  | { ok: true; value: bigint }\n  | { ok: false; code: string };\ntype __TnBuilderLike = { build(): Uint8Array };\ntype __TnStructFieldInput =\n  | Uint8Array\n  | __TnBuilderLike\n  | { buffer?: Uint8Array }\n  | { asUint8Array?: () => Uint8Array }\n  | { bytes?: () => Uint8Array };\ntype __TnVariantDescriptor = {\n  readonly name: string;\n  readonly tag: number;\n  readonly payloadSize: number | null;\n  readonly payloadType?: string;\n  readonly createPayloadBuilder?: () => unknown | null;\n};\ntype __TnVariantSelectorResult<Parent> = {\n  select(\n    name: string\n  ): { writePayload(payload: Uint8Array | __TnBuilderLike): { finish(): Parent } };\n  finish(): Parent;\n};\ntype __TnFamWriterResult<Parent> = {\n  write(payload: Uint8Array | __TnBuilderLike): { finish(): Parent };\n  finish(): Parent;\n};\ntype __TnConsole = { warn?: (...args: unknown[]) => void };\n\nconst __tnWarnings = new Set<string>();\nconst __tnHasNativeBigInt = typeof BigInt === \"function\";\nconst __tnHasBigIntDataView =\n  typeof DataView !== \"undefined\" &&\n  typeof DataView.prototype.getBigInt64 === \"function\" &&\n  typeof DataView.prototype.getBigUint64 === \"function\" &&\n  typeof DataView.prototype.setBigInt64 === \"function\" &&\n  typeof DataView.prototype.setBigUint64 === \"function\";\nconst __tnConsole: __TnConsole | undefined =\n  typeof globalThis !== \"undefined\"\n    ? (globalThis as { console?: __TnConsole }).console\n    : undefined;\n\nfunction __tnLogWarn(message: string): void {\n  if (__tnConsole && typeof __tnConsole.warn === \"function\") {\n    __tnConsole.warn(message);\n  }\n}\n\nfunction __tnWarnOnce(message: string): void {\n  if (!__tnWarnings.has(message)) {\n    __tnWarnings.add(message);\n    __tnLogWarn(message);\n  }\n}\n\nfunction __tnResolveBuilderInput(\n  input: Uint8Array | __TnBuilderLike,\n  context: string\n): Uint8Array {\n  if (input instanceof Uint8Array) {\n    return new Uint8Array(input);\n  }\n  if (input && typeof (input as __TnBuilderLike).build === \"function\") {\n    const built = (input as __TnBuilderLike).build();\n    if (!(built instanceof Uint8Array)) {\n      throw new Error(`${context}: builder did not return Uint8Array`);\n    }\n    return new Uint8Array(built);\n  }\n  throw new Error(`${context}: expected Uint8Array or builder`);\n}\n\nfunction __tnResolveStructFieldInput(\n  input: __TnStructFieldInput,\n  context: string\n): Uint8Array {\n  if (\n    input instanceof Uint8Array ||\n    (input && typeof (input as __TnBuilderLike).build === \"function\")\n  ) {\n    return __tnResolveBuilderInput(input as Uint8Array | __TnBuilderLike, context);\n  }\n  if (input && typeof (input as { asUint8Array?: () => Uint8Array }).asUint8Array === \"function\") {\n    const bytes = (input as { asUint8Array: () => Uint8Array }).asUint8Array();\n    return new Uint8Array(bytes);\n  }\n  if (input && typeof (input as { bytes?: () => Uint8Array }).bytes === \"function\") {\n    const bytes = (input as { bytes: () => Uint8Array }).bytes();\n    return new Uint8Array(bytes);\n  }\n  if (input && (input as { buffer?: unknown }).buffer instanceof Uint8Array) {\n    return new Uint8Array((input as { buffer: Uint8Array }).buffer);\n  }\n  throw new Error(`${context}: expected Uint8Array, builder, or view-like value`);\n}\n\nfunction __tnMaybeCallBuilder(ctor: unknown): unknown | null {\n  if (!ctor) {\n    return null;\n  }\n  const builderFn = (ctor as { builder?: () => unknown }).builder;\n  return typeof builderFn === \"function\" ? builderFn() : null;\n}\n\nfunction __tnCreateVariantSelector<Parent, Descriptor extends __TnVariantDescriptor>(\n  parent: Parent,\n  descriptors: readonly Descriptor[],\n  assign: (descriptor: Descriptor, payload: Uint8Array) => void\n): __TnVariantSelectorResult<Parent> {\n  return {\n    select(name: string) {\n      const descriptor = descriptors.find((variant) => variant.name === name);\n      if (!descriptor) {\n        throw new Error(`Unknown variant '${name}'`);\n      }\n      return {\n        writePayload(payload: Uint8Array | __TnBuilderLike) {\n          const bytes = __tnResolveBuilderInput(\n            payload,\n            `variant ${descriptor.name}`\n          );\n          if (\n            descriptor.payloadSize !== null &&\n            bytes.length !== descriptor.payloadSize\n          ) {\n            throw new Error(\n              `Payload for ${descriptor.name} must be ${descriptor.payloadSize} bytes`\n            );\n          }\n          assign(descriptor, bytes);\n          return {\n            finish(): Parent {\n              return parent;\n            },\n          };\n        },\n      };\n    },\n    finish(): Parent {\n      return parent;\n    },\n  };\n}\n\nfunction __tnCreateFamWriter<Parent>(\n  parent: Parent,\n  fieldName: string,\n  assign: (bytes: Uint8Array) => void\n): __TnFamWriterResult<Parent> {\n  let hasWritten = false;\n  return {\n    write(payload: Uint8Array | __TnBuilderLike) {\n      const bytes = __tnResolveBuilderInput(\n        payload,\n        `flexible array '${fieldName}'`\n      );\n      const copy = new Uint8Array(bytes);\n      assign(copy);\n      hasWritten = true;\n      return {\n        finish(): Parent {\n          return parent;\n        },\n      };\n    },\n    finish(): Parent {\n      if (!hasWritten) {\n        throw new Error(\n          `flexible array '${fieldName}' requires write() before finish()`\n        );\n      }\n      return parent;\n    },\n  };\n}\n\nconst __tnMask32 = __tnHasNativeBigInt\n  ? (BigInt(1) << BigInt(32)) - BigInt(1)\n  : 0xffffffff;\nconst __tnSignBit32 = __tnHasNativeBigInt\n  ? BigInt(1) << BigInt(31)\n  : 0x80000000;\n\nfunction __tnToBigInt(value: number | bigint): bigint {\n  if (__tnHasNativeBigInt) {\n    return typeof value === \"bigint\" ? value : BigInt(value);\n  }\n  if (typeof value === \"bigint\") return value;\n  if (!Number.isFinite(value)) {\n    throw new Error(\"IR runtime received non-finite numeric input\");\n  }\n  if (!Number.isSafeInteger(value)) {\n    __tnWarnOnce(\n      `[thru-net] Precision loss while polyfilling BigInt (value=${value})`\n    );\n  }\n  return (value as unknown) as bigint;\n}\n\nfunction __tnBigIntToNumber(value: bigint, context: string): number {\n  if (__tnHasNativeBigInt) {\n    const converted = Number(value);\n    if (!Number.isFinite(converted)) {\n      throw new Error(`${context} overflowed Number range`);\n    }\n    return converted;\n  }\n  return value as unknown as number;\n}\n\nfunction __tnBigIntEquals(lhs: bigint, rhs: bigint): boolean {\n  if (__tnHasNativeBigInt) return lhs === rhs;\n  return (lhs as unknown as number) === (rhs as unknown as number);\n}\n\nfunction __tnBigIntGreaterThan(lhs: bigint, rhs: bigint): boolean {\n  if (__tnHasNativeBigInt) return lhs > rhs;\n  return (lhs as unknown as number) > (rhs as unknown as number);\n}\n\nfunction __tnPopcount(value: number | bigint): number {\n  let v =\n    typeof value === \"bigint\"\n      ? Number(value & BigInt(0xffffffff))\n      : Number(value) >>> 0;\n  v = v - ((v >>> 1) & 0x55555555);\n  v = (v & 0x33333333) + ((v >>> 2) & 0x33333333);\n  return (((v + (v >>> 4)) & 0x0f0f0f0f) * 0x01010101) >>> 24;\n}\n\nfunction __tnRaiseIrError(code: string, message: string): never {\n  const err = new Error(message);\n  (err as { code?: string }).code = code;\n  throw err;\n}\n\nfunction __tnCheckedAdd(lhs: bigint, rhs: bigint): bigint {\n  if (__tnHasNativeBigInt) {\n    const result = (lhs as bigint) + (rhs as bigint);\n    if (result < BigInt(0)) {\n      __tnRaiseIrError(\n        \"tn.ir.overflow\",\n        \"IR runtime detected negative size via addition\"\n      );\n    }\n    return result;\n  }\n  const left = lhs as unknown as number;\n  const right = rhs as unknown as number;\n  const sum = left + right;\n  if (sum < 0 || !Number.isFinite(sum)) {\n    __tnRaiseIrError(\n      \"tn.ir.overflow\",\n      \"IR runtime detected invalid addition result\"\n    );\n  }\n  if (!Number.isSafeInteger(sum)) {\n    __tnWarnOnce(\"[thru-net] Precision loss while polyfilling BigInt addition\");\n  }\n  return (sum as unknown) as bigint;\n}\n\nfunction __tnCheckedSub(lhs: bigint, rhs: bigint): bigint {\n  if (__tnHasNativeBigInt) {\n    const result = (lhs as bigint) - (rhs as bigint);\n    if (result < BigInt(0)) {\n      __tnRaiseIrError(\n        \"tn.ir.overflow\",\n        \"IR runtime detected negative size via subtraction\"\n      );\n    }\n    return result;\n  }\n  const left = lhs as unknown as number;\n  const right = rhs as unknown as number;\n  const diff = left - right;\n  if (diff < 0 || !Number.isFinite(diff)) {\n    __tnRaiseIrError(\n      \"tn.ir.overflow\",\n      \"IR runtime detected invalid subtraction result\"\n    );\n  }\n  if (!Number.isSafeInteger(diff)) {\n    __tnWarnOnce(\"[thru-net] Precision loss while polyfilling BigInt subtraction\");\n  }\n  return (diff as unknown) as bigint;\n}\n\nfunction __tnCheckedMul(lhs: bigint, rhs: bigint): bigint {\n  if (__tnHasNativeBigInt) {\n    const result = (lhs as bigint) * (rhs as bigint);\n    if (result < BigInt(0)) {\n      __tnRaiseIrError(\n        \"tn.ir.overflow\",\n        \"IR runtime detected negative size via multiplication\"\n      );\n    }\n    return result;\n  }\n  const left = lhs as unknown as number;\n  const right = rhs as unknown as number;\n  const product = left * right;\n  if (product < 0 || !Number.isFinite(product)) {\n    __tnRaiseIrError(\n      \"tn.ir.overflow\",\n      \"IR runtime detected invalid multiplication result\"\n    );\n  }\n  if (!Number.isSafeInteger(product)) {\n    __tnWarnOnce(\n      \"[thru-net] Precision loss while polyfilling BigInt multiplication\"\n    );\n  }\n  return (product as unknown) as bigint;\n}\n\nfunction __tnCheckedDiv(lhs: bigint, rhs: bigint): bigint {\n  if (__tnBigIntEquals(rhs, __tnToBigInt(0))) {\n    __tnRaiseIrError(\"tn.ir.overflow\", \"IR runtime division by zero\");\n  }\n  if (__tnHasNativeBigInt) return (lhs as bigint) / (rhs as bigint);\n  const quotient = Math.floor((lhs as unknown as number) / (rhs as unknown as number));\n  return (quotient as unknown) as bigint;\n}\n\nfunction __tnCheckedMod(lhs: bigint, rhs: bigint): bigint {\n  if (__tnBigIntEquals(rhs, __tnToBigInt(0))) {\n    __tnRaiseIrError(\"tn.ir.overflow\", \"IR runtime modulo by zero\");\n  }\n  if (__tnHasNativeBigInt) return (lhs as bigint) % (rhs as bigint);\n  return (((lhs as unknown as number) % (rhs as unknown as number)) as unknown) as bigint;\n}\n\nfunction __tnBitwise(\n  lhs: bigint,\n  rhs: bigint,\n  op: \"and\" | \"or\" | \"xor\"\n): bigint {\n  if (__tnHasNativeBigInt) {\n    if (op === \"and\") return (lhs as bigint) & (rhs as bigint);\n    if (op === \"or\") return (lhs as bigint) | (rhs as bigint);\n    return (lhs as bigint) ^ (rhs as bigint);\n  }\n  const left = lhs as unknown as number;\n  const right = rhs as unknown as number;\n  const maxU32 = 0xffffffff;\n  if (\n    !Number.isInteger(left) ||\n    !Number.isInteger(right) ||\n    left < 0 ||\n    right < 0 ||\n    left > maxU32 ||\n    right > maxU32\n  ) {\n    __tnRaiseIrError(\n      \"tn.ir.overflow\",\n      \"IR runtime bitwise operation requires BigInt for values outside u32 range\"\n    );\n  }\n  const result = op === \"and\" ? left & right : op === \"or\" ? left | right : left ^ right;\n  return ((result >>> 0) as unknown) as bigint;\n}\n\nfunction __tnCheckedShift(\n  lhs: bigint,\n  rhs: bigint,\n  direction: \"left\" | \"right\"\n): bigint {\n  const amount = __tnBigIntToNumber(rhs, \"IR shift amount\");\n  if (amount < 0 || amount >= 64 || !Number.isInteger(amount)) {\n    __tnRaiseIrError(\"tn.ir.overflow\", \"IR runtime invalid shift amount\");\n  }\n  if (__tnHasNativeBigInt) {\n    const shift = BigInt(amount);\n    return direction === \"left\" ? (lhs as bigint) << shift : (lhs as bigint) >> shift;\n  }\n  const value = lhs as unknown as number;\n  const result = direction === \"left\" ? value * 2 ** amount : Math.floor(value / 2 ** amount);\n  if (!Number.isSafeInteger(result)) {\n    __tnWarnOnce(\"[thru-net] Precision loss while polyfilling BigInt shift\");\n  }\n  return (result as unknown) as bigint;\n}\n\nfunction __tnAlign(value: bigint, alignment: number): bigint {\n  if (alignment <= 1) return value;\n  const alignBig = __tnToBigInt(alignment);\n  if (__tnHasNativeBigInt) {\n    const remainder = value % alignBig;\n    if (__tnBigIntEquals(remainder, __tnToBigInt(0))) {\n      return value;\n    }\n    const delta = alignBig - remainder;\n    return __tnCheckedAdd(value, delta);\n  }\n  const current = __tnBigIntToNumber(value, \"IR align\");\n  const alignNum = alignment >>> 0;\n  const remainder = current % alignNum;\n  const next = remainder === 0 ? current : current + (alignNum - remainder);\n  return __tnToBigInt(next);\n}\n\nfunction __tnSplitUint64(value: bigint): { high: number; low: number } {\n  if (__tnHasNativeBigInt) {\n    const low = Number(value & (__tnMask32 as bigint));\n    const high = Number((value >> BigInt(32)) & (__tnMask32 as bigint));\n    return { high, low };\n  }\n  const num = __tnBigIntToNumber(value, \"DataView.setBigUint64\");\n  const low = num >>> 0;\n  const high = Math.floor(num / 4294967296) >>> 0;\n  return { high, low };\n}\n\nfunction __tnSplitInt64(value: bigint): { high: number; low: number } {\n  if (__tnHasNativeBigInt) {\n    const low = Number(value & (__tnMask32 as bigint));\n    let high = Number((value >> BigInt(32)) & (__tnMask32 as bigint));\n    if ((BigInt(high) & (__tnSignBit32 as bigint)) !== BigInt(0)) {\n      high -= 0x100000000;\n    }\n    return { high, low };\n  }\n  const num = __tnBigIntToNumber(value, \"DataView.setBigInt64\");\n  const low = num >>> 0;\n  const high = Math.floor(num / 4294967296);\n  return { high, low };\n}\n\nfunction __tnPolyfillReadUint64(\n  view: DataView,\n  offset: number,\n  littleEndian: boolean\n): bigint {\n  const low = littleEndian\n    ? view.getUint32(offset, true)\n    : view.getUint32(offset + 4, false);\n  const high = littleEndian\n    ? view.getUint32(offset + 4, true)\n    : view.getUint32(offset, false);\n  if (__tnHasNativeBigInt) {\n    return (BigInt(high) << BigInt(32)) | BigInt(low);\n  }\n  const value = high * 4294967296 + low;\n  if (!Number.isSafeInteger(value)) {\n    __tnWarnOnce(\n      \"[thru-net] Precision loss while polyfilling DataView.getBigUint64\"\n    );\n  }\n  return (value as unknown) as bigint;\n}\n\nfunction __tnPolyfillReadInt64(\n  view: DataView,\n  offset: number,\n  littleEndian: boolean\n): bigint {\n  const low = littleEndian\n    ? view.getUint32(offset, true)\n    : view.getUint32(offset + 4, false);\n  const high = littleEndian\n    ? view.getInt32(offset + 4, true)\n    : view.getInt32(offset, false);\n  if (__tnHasNativeBigInt) {\n    return (BigInt(high) << BigInt(32)) | BigInt(low);\n  }\n  const value = high * 4294967296 + low;\n  if (!Number.isSafeInteger(value)) {\n    __tnWarnOnce(\n      \"[thru-net] Precision loss while polyfilling DataView.getBigInt64\"\n    );\n  }\n  return (value as unknown) as bigint;\n}\n\nfunction __tnPolyfillWriteUint64(\n  view: DataView,\n  offset: number,\n  value: bigint,\n  littleEndian: boolean\n): void {\n  const parts = __tnSplitUint64(value);\n  if (littleEndian) {\n    view.setUint32(offset, parts.low, true);\n    view.setUint32(offset + 4, parts.high, true);\n  } else {\n    view.setUint32(offset, parts.high, false);\n    view.setUint32(offset + 4, parts.low, false);\n  }\n}\n\nfunction __tnPolyfillWriteInt64(\n  view: DataView,\n  offset: number,\n  value: bigint,\n  littleEndian: boolean\n): void {\n  const parts = __tnSplitInt64(value);\n  if (littleEndian) {\n    view.setUint32(offset, parts.low >>> 0, true);\n    view.setInt32(offset + 4, parts.high | 0, true);\n  } else {\n    view.setInt32(offset, parts.high | 0, false);\n    view.setUint32(offset + 4, parts.low >>> 0, false);\n  }\n}\n\nif (typeof DataView !== \"undefined\" && !__tnHasBigIntDataView) {\n  const proto = DataView.prototype as unknown as Record<string, unknown>;\n  if (typeof proto.getBigUint64 !== \"function\") {\n    (proto as any).getBigUint64 = function (\n      offset: number,\n      littleEndian?: boolean\n    ): bigint {\n      __tnWarnOnce(\n        \"[thru-net] Polyfilling DataView.getBigUint64; precision may be lost\"\n      );\n      return __tnPolyfillReadUint64(this, offset, !!littleEndian);\n    };\n  }\n  if (typeof proto.getBigInt64 !== \"function\") {\n    (proto as any).getBigInt64 = function (\n      offset: number,\n      littleEndian?: boolean\n    ): bigint {\n      __tnWarnOnce(\n        \"[thru-net] Polyfilling DataView.getBigInt64; precision may be lost\"\n      );\n      return __tnPolyfillReadInt64(this, offset, !!littleEndian);\n    };\n  }\n  if (typeof proto.setBigUint64 !== \"function\") {\n    (proto as any).setBigUint64 = function (\n      offset: number,\n      value: bigint,\n      littleEndian?: boolean\n    ): void {\n      __tnWarnOnce(\n        \"[thru-net] Polyfilling DataView.setBigUint64; precision may be lost\"\n      );\n      __tnPolyfillWriteUint64(this, offset, value, !!littleEndian);\n    };\n  }\n  if (typeof proto.setBigInt64 !== \"function\") {\n    (proto as any).setBigInt64 = function (\n      offset: number,\n      value: bigint,\n      littleEndian?: boolean\n    ): void {\n      __tnWarnOnce(\n        \"[thru-net] Polyfilling DataView.setBigInt64; precision may be lost\"\n      );\n      __tnPolyfillWriteInt64(this, offset, value, !!littleEndian);\n    };\n  }\n  if (!__tnHasNativeBigInt) {\n    __tnWarnOnce(\n      \"[thru-net] BigInt is unavailable; falling back to lossy 64-bit polyfill\"\n    );\n  }\n}\n\nconst __tnFootprintRegistry: Record<\n  string,\n  (params: Record<string, bigint>) => bigint\n> = {};\nconst __tnValidateRegistry: Record<\n  string,\n  (buffer: Uint8Array, params: Record<string, bigint>) => __TnValidateResult\n> = {};\nconst __tnDynamicValidateRegistry: Record<\n  string,\n  (buffer: Uint8Array) => __TnValidateResult\n> = {};\n\nfunction __tnRegisterFootprint(\n  typeName: string,\n  fn: (params: Record<string, bigint>) => bigint\n): void {\n  __tnFootprintRegistry[typeName] = fn;\n}\n\nfunction __tnRegisterValidate(\n  typeName: string,\n  fn: (buffer: Uint8Array, params: Record<string, bigint>) => __TnValidateResult\n): void {\n  __tnValidateRegistry[typeName] = fn;\n}\n\nfunction __tnRegisterDynamicValidate(\n  typeName: string,\n  fn: (buffer: Uint8Array) => __TnValidateResult\n): void {\n  __tnDynamicValidateRegistry[typeName] = fn;\n}\n\nfunction __tnInvokeFootprint(\n  typeName: string,\n  params: Record<string, bigint>\n): bigint {\n  const fn = __tnFootprintRegistry[typeName];\n  if (!fn) throw new Error(`IR runtime missing footprint for ${typeName}`);\n  return fn(params);\n}\n\nfunction __tnInvokeValidate(\n  typeName: string,\n  buffer: Uint8Array,\n  params: Record<string, bigint>\n): __TnValidateResult {\n  const fn = __tnValidateRegistry[typeName];\n  if (!fn) throw new Error(`IR runtime missing validate helper for ${typeName}`);\n  return fn(buffer, params);\n}\n\nfunction __tnInvokeDynamicValidate(\n  typeName: string,\n  buffer: Uint8Array\n): __TnValidateResult {\n  const fn = __tnDynamicValidateRegistry[typeName];\n  if (!fn) throw new Error(`IR runtime missing dynamic validate helper for ${typeName}`);\n  return fn(buffer);\n}\n\nfunction __tnEvalFootprint(node: __TnIrNode, ctx: __TnIrContext): bigint {\n  return __tnEvalIrNode(node, ctx, __tnToBigInt(0));\n}\n\nfunction __tnTryEvalFootprint(\n  node: __TnIrNode,\n  ctx: __TnIrContext\n): __TnEvalResult {\n  return __tnTryEvalIr(node, ctx);\n}\n\nfunction __tnTryEvalIr(\n  node: __TnIrNode,\n  ctx: __TnIrContext\n): __TnEvalResult {\n  try {\n    return { ok: true, value: __tnEvalIrNode(node, ctx, __tnToBigInt(0)) };\n  } catch (err) {\n    return { ok: false, code: __tnNormalizeIrError(err) };\n  }\n}\n\nfunction __tnIsEvalError(result: __TnEvalResult): result is { ok: false; code: string } {\n  return result.ok === false;\n}\n\nfunction __tnValidateIrTree(\n  ir: { readonly typeName: string; readonly root: __TnIrNode },\n  buffer: Uint8Array,\n  params: Record<string, bigint>\n): __TnValidateResult {\n  const evalResult = __tnTryEvalIr(ir.root, {\n    params,\n    buffer,\n    typeName: ir.typeName,\n  });\n  if (__tnIsEvalError(evalResult)) {\n    return { ok: false, code: evalResult.code };\n  }\n  const required = evalResult.value;\n  const available = __tnToBigInt(buffer.length);\n  if (__tnBigIntGreaterThan(required, available)) {\n    return { ok: false, code: \"tn.buffer_too_small\", consumed: required };\n  }\n  return { ok: true, consumed: required };\n}\n\nfunction __tnEvalIrNode(\n  node: __TnIrNode,\n  ctx: __TnIrContext,\n  baseOffset: bigint\n): bigint {\n  switch (node.op) {\n    case \"zero\":\n      return __tnToBigInt(0);\n    case \"const\":\n      return node.value;\n    case \"field\": {\n      if (node.param === \"__buffer_size\" && ctx.buffer) {\n        return __tnToBigInt(ctx.buffer.length);\n      }\n      const val = ctx.params[node.param];\n      if (val === undefined) {\n        const prefix = ctx.typeName ? `${ctx.typeName}: ` : \"\";\n        __tnRaiseIrError(\n          \"tn.ir.missing_param\",\n          `${prefix}Missing IR parameter '${node.param}'`\n        );\n      }\n      return val;\n    }\n    case \"add\":\n      {\n        const left = __tnEvalIrNode(node.left, ctx, baseOffset);\n        const right = __tnEvalIrNode(\n          node.right,\n          ctx,\n          __tnCheckedAdd(baseOffset, left)\n        );\n        return __tnCheckedAdd(left, right);\n      }\n    case \"sub\":\n      return __tnCheckedSub(\n        __tnEvalIrNode(node.left, ctx, baseOffset),\n        __tnEvalIrNode(node.right, ctx, baseOffset)\n      );\n    case \"mul\":\n      return __tnCheckedMul(\n        __tnEvalIrNode(node.left, ctx, baseOffset),\n        __tnEvalIrNode(node.right, ctx, baseOffset)\n      );\n    case \"div\":\n      return __tnCheckedDiv(\n        __tnEvalIrNode(node.left, ctx, baseOffset),\n        __tnEvalIrNode(node.right, ctx, baseOffset)\n      );\n    case \"mod\":\n      return __tnCheckedMod(\n        __tnEvalIrNode(node.left, ctx, baseOffset),\n        __tnEvalIrNode(node.right, ctx, baseOffset)\n      );\n    case \"bitAnd\":\n      return __tnBitwise(\n        __tnEvalIrNode(node.left, ctx, baseOffset),\n        __tnEvalIrNode(node.right, ctx, baseOffset),\n        \"and\"\n      );\n    case \"bitOr\":\n      return __tnBitwise(\n        __tnEvalIrNode(node.left, ctx, baseOffset),\n        __tnEvalIrNode(node.right, ctx, baseOffset),\n        \"or\"\n      );\n    case \"bitXor\":\n      return __tnBitwise(\n        __tnEvalIrNode(node.left, ctx, baseOffset),\n        __tnEvalIrNode(node.right, ctx, baseOffset),\n        \"xor\"\n      );\n    case \"leftShift\":\n      return __tnCheckedShift(\n        __tnEvalIrNode(node.left, ctx, baseOffset),\n        __tnEvalIrNode(node.right, ctx, baseOffset),\n        \"left\"\n      );\n    case \"rightShift\":\n      return __tnCheckedShift(\n        __tnEvalIrNode(node.left, ctx, baseOffset),\n        __tnEvalIrNode(node.right, ctx, baseOffset),\n        \"right\"\n      );\n    case \"align\":\n      return __tnAlign(__tnEvalIrNode(node.node, ctx, baseOffset), node.alignment);\n    case \"switch\": {\n      const tagVal = ctx.params[node.tag];\n      if (tagVal === undefined) {\n        const prefix = ctx.typeName ? `${ctx.typeName}: ` : \"\";\n        __tnRaiseIrError(\n          \"tn.ir.missing_param\",\n          `${prefix}Missing IR switch tag '${node.tag}'`\n        );\n      }\n      const tagNumber = Number(tagVal);\n      for (const caseNode of node.cases) {\n        if (caseNode.value === tagNumber) {\n          return __tnEvalIrNode(caseNode.node, ctx, baseOffset);\n        }\n      }\n      if (node.default) return __tnEvalIrNode(node.default, ctx, baseOffset);\n      __tnRaiseIrError(\n        \"tn.ir.invalid_tag\",\n        `Unhandled IR switch value ${tagNumber} for '${node.tag}'`\n      );\n    }\n    case \"call\": {\n      const nestedParams: Record<string, bigint> = Object.create(null);\n      for (const arg of node.args) {\n        const val = ctx.params[arg.source];\n        if (val === undefined) {\n          const prefix = ctx.typeName ? `${ctx.typeName}: ` : \"\";\n          __tnRaiseIrError(\n            \"tn.ir.missing_param\",\n            `${prefix}Missing IR parameter '${arg.source}' for nested call`\n          );\n        }\n        nestedParams[arg.name] = val;\n      }\n      if (ctx.buffer) {\n        const nestedOffset = __tnBigIntToNumber(baseOffset, \"IR nested offset\");\n        const nestedResult = __tnInvokeValidate(\n          node.typeName,\n          ctx.buffer.subarray(nestedOffset),\n          nestedParams\n        );\n        if (!nestedResult.ok) {\n          const nestedCode =\n            nestedResult.code ?? `tn.ir.runtime_error: ${node.typeName}`;\n          const prefixed = nestedCode.startsWith(\"tn.\")\n            ? nestedCode\n            : `tn.ir.runtime_error: ${node.typeName} -> ${nestedCode}`;\n          __tnRaiseIrError(\n            prefixed,\n            `Nested validator ${node.typeName} failed`\n          );\n        }\n        if (nestedResult.consumed !== undefined) {\n          return nestedResult.consumed;\n        }\n      }\n      return __tnInvokeFootprint(node.typeName, nestedParams);\n    }\n    case \"sumOverArray\": {\n      if (!ctx.buffer) {\n        __tnRaiseIrError(\n          \"tn.ir.missing_buffer\",\n          `Jagged array '${node.fieldName}' requires buffer-backed validation`\n        );\n      }\n      const count = __tnBigIntToNumber(\n        __tnEvalIrNode(node.count, ctx, baseOffset),\n        `Jagged array '${node.fieldName}' count`\n      );\n      let cursor = __tnBigIntToNumber(baseOffset, \"IR jagged array offset\");\n      let total = __tnToBigInt(0);\n      for (let i = 0; i < count; i++) {\n        const result = __tnInvokeDynamicValidate(\n          node.elementTypeName,\n          ctx.buffer.subarray(cursor)\n        );\n        if (!result.ok || result.consumed === undefined) {\n          const code = result.code ?? \"tn.ir.runtime_error\";\n          __tnRaiseIrError(\n            code,\n            `Jagged array '${node.fieldName}' element ${i} failed validation`\n          );\n        }\n        cursor += __tnBigIntToNumber(result.consumed, \"IR jagged element size\");\n        total = __tnCheckedAdd(total, result.consumed);\n      }\n      return total;\n    }\n    default:\n      __tnRaiseIrError(\n        \"tn.ir.runtime_error\",\n        `Unsupported IR node ${(node as { op: string }).op}`\n      );\n  }\n}\n\nfunction __tnNormalizeIrError(err: unknown): string {\n  if (err && typeof err === \"object\" && \"code\" in err) {\n    const maybeCode = (err as { code?: string }).code;\n    if (typeof maybeCode === \"string\" && maybeCode.length > 0) {\n      return maybeCode;\n    }\n  }\n  const message =\n    err && typeof err === \"object\" && \"message\" in err\n      ? String((err as { message?: unknown }).message ?? \"\")\n      : typeof err === \"string\"\n      ? err\n      : \"\";\n  if (message.includes(\"Missing IR parameter\")) return \"tn.ir.missing_param\";\n  if (message.includes(\"Unhandled IR switch value\")) return \"tn.ir.invalid_tag\";\n  if (\n    message.includes(\"invalid\") ||\n    message.includes(\"overflow\") ||\n    message.includes(\"negative size\")\n  ) {\n    return \"tn.ir.overflow\";\n  }\n  if (message.length > 0) return `tn.ir.runtime_error: ${message}`;\n  return \"tn.ir.runtime_error\";\n}\n\n__tnRegisterFootprint(\"InstructionData\", (params) => InstructionData.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"InstructionData\", (buffer, params) => InstructionData.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"InstructionData\", (buffer) => { const result = InstructionData.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n\n__tnRegisterFootprint(\"Pubkey\", (params) => Pubkey.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"Pubkey\", (buffer, params) => Pubkey.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"Pubkey\", (buffer) => { const result = Pubkey.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n\n__tnRegisterFootprint(\"StateProof\", (params) => StateProof.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"StateProof\", (buffer, params) => StateProof.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"StateProof\", (buffer) => { const result = StateProof.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n\n/* ----- TYPE DEFINITION FOR Authority ----- */\n\nconst __tn_ir_Authority = {\n  typeName: \"Authority\",\n  root: { op: \"const\", value: 65n }\n} as const;\n\nexport class Authority {\n  private view: DataView;\n\n  private constructor(private buffer: Uint8Array) {\n    this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n  }\n\n  static __tnCreateView(buffer: Uint8Array, opts?: { fieldContext?: Record<string, number | bigint> }): Authority {\n    if (!buffer || buffer.length === undefined) throw new Error(\"Authority.__tnCreateView requires a Uint8Array\");\n    return new Authority(new Uint8Array(buffer));\n  }\n\n  static builder(): AuthorityBuilder {\n    return new AuthorityBuilder();\n  }\n\n  static fromBuilder(builder: AuthorityBuilder): Authority | null {\n    const buffer = builder.build();\n    return Authority.from_array(buffer);\n  }\n\n  get_tag(): number {\n    const offset = 0;\n    return this.view.getUint8(offset);\n  }\n\n  set_tag(value: number): void {\n    const offset = 0;\n    this.view.setUint8(offset, value);\n  }\n\n  get tag(): number {\n    return this.get_tag();\n  }\n\n  set tag(value: number) {\n    this.set_tag(value);\n  }\n\n  get_data(): number[] {\n    const offset = 1;\n    const result: number[] = [];\n    for (let i = 0; i < 64; i++) {\n      result.push(this.view.getUint8((offset + i * 1)));\n    }\n    return result;\n  }\n\n  set_data(value: number[]): void {\n    const offset = 1;\n    if (value.length !== 64) {\n      throw new Error('Array length must be 64');\n    }\n    for (let i = 0; i < 64; i++) {\n      this.view.setUint8((offset + i * 1), value[i]);\n    }\n  }\n\n  get data(): number[] {\n    return this.get_data();\n  }\n\n  set data(value: number[]) {\n    this.set_data(value);\n  }\n\n  private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n    return __tnEvalFootprint(__tn_ir_Authority.root, { params: __tnParams });\n  }\n\n  private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n    return __tnValidateIrTree(__tn_ir_Authority, buffer, __tnParams);\n  }\n\n  static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n    return this.__tnFootprintInternal(__tnParams);\n  }\n\n  static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n    return this.__tnValidateInternal(buffer, __tnParams);\n  }\n\n  static footprintIr(): bigint {\n    return this.__tnFootprintInternal(Object.create(null));\n  }\n\n  static footprint(): number {\n    const irResult = this.footprintIr();\n      const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n    if (__tnBigIntGreaterThan(irResult, maxSafe)) {\n      throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for Authority');\n    }\n    return __tnBigIntToNumber(irResult, 'Authority::footprint');\n  }\n\n  static validate(buffer: Uint8Array, _opts?: { params?: never }): { ok: boolean; code?: string; consumed?: number } {\n    if (buffer.length < 65) return { ok: false, code: \"tn.buffer_too_small\", consumed: 65 };\n    return { ok: true, consumed: 65 };\n  }\n\n  static from_array(buffer: Uint8Array): Authority | null {\n    if (!buffer || buffer.length === undefined) {\n      return null;\n    }\n    const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    const validation = this.validate(buffer);\n    if (!validation.ok) {\n      return null;\n    }\n    return new Authority(buffer);\n  }\n\n}\n\nexport class AuthorityBuilder {\n  private buffer: Uint8Array;\n  private view: DataView;\n\n  constructor() {\n    this.buffer = new Uint8Array(65);\n    this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n  }\n\n  set_tag(value: number): this {\n    this.view.setUint8(0, value);\n    return this;\n  }\n\n  set_data(values: number[]): this {\n    if (values.length !== 64) throw new Error(\"data expects 64 elements\");\n    for (let i = 0; i < values.length; i++) {\n      const byteOffset = 1 + i * 1;\n      this.view.setUint8(byteOffset, values[i]);\n    }\n    return this;\n  }\n\n  build(): Uint8Array {\n    return this.buffer.slice();\n  }\n\n  buildInto(target: Uint8Array, offset = 0): Uint8Array {\n    if (target.length - offset < this.buffer.length) throw new Error(\"target buffer too small\");\n    target.set(this.buffer, offset);\n    return target;\n  }\n\n  finish(): Authority {\n    const view = Authority.from_array(this.buffer.slice());\n    if (!view) throw new Error(\"failed to build Authority\");\n    return view;\n  }\n}\n\n__tnRegisterFootprint(\"Authority\", (params) => Authority.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"Authority\", (buffer, params) => Authority.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"Authority\", (buffer) => { const result = Authority.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n\n/* ----- TYPE DEFINITION FOR AuthorityRecord ----- */\n\nconst __tn_ir_AuthorityRecord = {\n  typeName: \"AuthorityRecord\",\n  root: { op: \"const\", value: 73n }\n} as const;\n\nexport class AuthorityRecord {\n  private view: DataView;\n\n  private constructor(private buffer: Uint8Array) {\n    this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n  }\n\n  static __tnCreateView(buffer: Uint8Array, opts?: { fieldContext?: Record<string, number | bigint> }): AuthorityRecord {\n    if (!buffer || buffer.length === undefined) throw new Error(\"AuthorityRecord.__tnCreateView requires a Uint8Array\");\n    return new AuthorityRecord(new Uint8Array(buffer));\n  }\n\n  static builder(): AuthorityRecordBuilder {\n    return new AuthorityRecordBuilder();\n  }\n\n  static fromBuilder(builder: AuthorityRecordBuilder): AuthorityRecord | null {\n    const buffer = builder.build();\n    return AuthorityRecord.from_array(buffer);\n  }\n\n  get_authority(): Authority {\n    const offset = 0;\n    const slice = this.buffer.subarray(offset, offset + 65);\n    return Authority.from_array(slice)!;\n  }\n\n  set_authority(value: Authority): void {\n    /* Copy bytes from source struct to this field */\n    const sourceBytes = (value as any).buffer as Uint8Array;\n    const offset = 0;\n    this.buffer.set(sourceBytes, offset);\n  }\n\n  get authority(): Authority {\n    return this.get_authority();\n  }\n\n  set authority(value: Authority) {\n    this.set_authority(value);\n  }\n\n  get_expires_at_block_time_seconds(): bigint {\n    const offset = 65;\n    return this.view.getBigUint64(offset, true); /* little-endian */\n  }\n\n  set_expires_at_block_time_seconds(value: bigint): void {\n    const offset = 65;\n    this.view.setBigUint64(offset, value, true); /* little-endian */\n  }\n\n  get expires_at_block_time_seconds(): bigint {\n    return this.get_expires_at_block_time_seconds();\n  }\n\n  set expires_at_block_time_seconds(value: bigint) {\n    this.set_expires_at_block_time_seconds(value);\n  }\n\n  private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n    return __tnEvalFootprint(__tn_ir_AuthorityRecord.root, { params: __tnParams });\n  }\n\n  private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n    return __tnValidateIrTree(__tn_ir_AuthorityRecord, buffer, __tnParams);\n  }\n\n  static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n    return this.__tnFootprintInternal(__tnParams);\n  }\n\n  static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n    return this.__tnValidateInternal(buffer, __tnParams);\n  }\n\n  static footprintIr(): bigint {\n    return this.__tnFootprintInternal(Object.create(null));\n  }\n\n  static footprint(): number {\n    const irResult = this.footprintIr();\n      const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n    if (__tnBigIntGreaterThan(irResult, maxSafe)) {\n      throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for AuthorityRecord');\n    }\n    return __tnBigIntToNumber(irResult, 'AuthorityRecord::footprint');\n  }\n\n  static validate(buffer: Uint8Array, _opts?: { params?: never }): { ok: boolean; code?: string; consumed?: number } {\n    if (buffer.length < 73) return { ok: false, code: \"tn.buffer_too_small\", consumed: 73 };\n    return { ok: true, consumed: 73 };\n  }\n\n  static from_array(buffer: Uint8Array): AuthorityRecord | null {\n    if (!buffer || buffer.length === undefined) {\n      return null;\n    }\n    const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    const validation = this.validate(buffer);\n    if (!validation.ok) {\n      return null;\n    }\n    return new AuthorityRecord(buffer);\n  }\n\n}\n\nexport class AuthorityRecordBuilder {\n  private buffer: Uint8Array;\n  private view: DataView;\n\n  constructor() {\n    this.buffer = new Uint8Array(73);\n    this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n  }\n\n  set_authority(value: Uint8Array): this {\n    if (value.length !== 65) throw new Error(\"authority expects 65 bytes\");\n    this.buffer.set(value, 0);\n    return this;\n  }\n\n  set_expires_at_block_time_seconds(value: bigint): this {\n    const cast = __tnToBigInt(value);\n    this.view.setBigUint64(65, cast, true);\n    return this;\n  }\n\n  build(): Uint8Array {\n    return this.buffer.slice();\n  }\n\n  buildInto(target: Uint8Array, offset = 0): Uint8Array {\n    if (target.length - offset < this.buffer.length) throw new Error(\"target buffer too small\");\n    target.set(this.buffer, offset);\n    return target;\n  }\n\n  finish(): AuthorityRecord {\n    const view = AuthorityRecord.from_array(this.buffer.slice());\n    if (!view) throw new Error(\"failed to build AuthorityRecord\");\n    return view;\n  }\n}\n\n__tnRegisterFootprint(\"AuthorityRecord\", (params) => AuthorityRecord.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"AuthorityRecord\", (buffer, params) => AuthorityRecord.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"AuthorityRecord\", (buffer) => { const result = AuthorityRecord.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n\n/* ----- TYPE DEFINITION FOR P256Point ----- */\n\nconst __tn_ir_P256Point = {\n  typeName: \"P256Point\",\n  root: { op: \"const\", value: 32n }\n} as const;\n\nexport class P256Point {\n  private view: DataView;\n  private constructor(private buffer: Uint8Array) {\n    this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n  }\n\n  private static readonly __tnElementSize = 1;\n  private static readonly __tnElementCount: number | null = 32;\n\n  get length(): number {\n    const explicit = P256Point.__tnElementCount;\n    if (explicit !== null) {\n      return explicit;\n    }\n    const stride = P256Point.__tnElementSize;\n    if (stride > 0) {\n      return Math.floor(this.buffer.length / stride);\n    }\n    return this.buffer.length;\n  }\n\n  getElementBytes(index: number): Uint8Array {\n    if (!Number.isInteger(index) || index < 0) {\n      throw new RangeError('P256Point::getElementBytes index must be a non-negative integer');\n    }\n    const stride = P256Point.__tnElementSize;\n    if (stride <= 0) {\n      throw new Error('P256Point::getElementBytes requires constant element size');\n    }\n    const start = index * stride;\n    const end = start + stride;\n    if (end > this.buffer.length) {\n      throw new RangeError('P256Point::getElementBytes out of bounds');\n    }\n    return this.buffer.subarray(start, end);\n  }\n\n  static from_array(buffer: Uint8Array): P256Point | null {\n    if (!buffer || buffer.length === undefined) {\n      return null;\n    }\n    const validation = P256Point.validate(buffer);\n    if (!validation.ok) {\n      return null;\n    }\n    return new P256Point(buffer);\n  }\n\n  asUint8Array(): Uint8Array {\n    return new Uint8Array(this.buffer);\n  }\n\n  private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n    return __tnEvalFootprint(__tn_ir_P256Point.root, { params: __tnParams });\n  }\n\n  private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n    return __tnValidateIrTree(__tn_ir_P256Point, buffer, __tnParams);\n  }\n\n  static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n    return this.__tnFootprintInternal(__tnParams);\n  }\n\n  static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n    return this.__tnValidateInternal(buffer, __tnParams);\n  }\n\n  static footprintIr(): bigint {\n    return this.__tnFootprintInternal(Object.create(null));\n  }\n\n  static footprint(): number {\n    const irResult = this.footprintIr();\n      const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n    if (__tnBigIntGreaterThan(irResult, maxSafe)) {\n      throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for P256Point');\n    }\n    return __tnBigIntToNumber(irResult, 'P256Point::footprint');\n  }\n\n  static validate(buffer: Uint8Array, _opts?: { params?: never }): { ok: boolean; code?: string; consumed?: number } {\n    if (buffer.length < 32) return { ok: false, code: \"tn.buffer_too_small\", consumed: 32 };\n    return { ok: true, consumed: 32 };\n  }\n\n}\n\n__tnRegisterFootprint(\"P256Point\", (params) => P256Point.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"P256Point\", (buffer, params) => P256Point.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"P256Point\", (buffer) => { const result = P256Point.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n\n/* ----- TYPE DEFINITION FOR RemoveAuthorityArgs ----- */\n\nconst __tn_ir_RemoveAuthorityArgs = {\n  typeName: \"RemoveAuthorityArgs\",\n  root: { op: \"const\", value: 3n }\n} as const;\n\nexport class RemoveAuthorityArgs {\n  private view: DataView;\n\n  private constructor(private buffer: Uint8Array) {\n    this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n  }\n\n  static __tnCreateView(buffer: Uint8Array, opts?: { fieldContext?: Record<string, number | bigint> }): RemoveAuthorityArgs {\n    if (!buffer || buffer.length === undefined) throw new Error(\"RemoveAuthorityArgs.__tnCreateView requires a Uint8Array\");\n    return new RemoveAuthorityArgs(new Uint8Array(buffer));\n  }\n\n  static builder(): RemoveAuthorityArgsBuilder {\n    return new RemoveAuthorityArgsBuilder();\n  }\n\n  static fromBuilder(builder: RemoveAuthorityArgsBuilder): RemoveAuthorityArgs | null {\n    const buffer = builder.build();\n    return RemoveAuthorityArgs.from_array(buffer);\n  }\n\n  get_wallet_account_idx(): number {\n    const offset = 0;\n    return this.view.getUint16(offset, true); /* little-endian */\n  }\n\n  set_wallet_account_idx(value: number): void {\n    const offset = 0;\n    this.view.setUint16(offset, value, true); /* little-endian */\n  }\n\n  get wallet_account_idx(): number {\n    return this.get_wallet_account_idx();\n  }\n\n  set wallet_account_idx(value: number) {\n    this.set_wallet_account_idx(value);\n  }\n\n  get_auth_idx(): number {\n    const offset = 2;\n    return this.view.getUint8(offset);\n  }\n\n  set_auth_idx(value: number): void {\n    const offset = 2;\n    this.view.setUint8(offset, value);\n  }\n\n  get auth_idx(): number {\n    return this.get_auth_idx();\n  }\n\n  set auth_idx(value: number) {\n    this.set_auth_idx(value);\n  }\n\n  private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n    return __tnEvalFootprint(__tn_ir_RemoveAuthorityArgs.root, { params: __tnParams });\n  }\n\n  private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n    return __tnValidateIrTree(__tn_ir_RemoveAuthorityArgs, buffer, __tnParams);\n  }\n\n  static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n    return this.__tnFootprintInternal(__tnParams);\n  }\n\n  static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n    return this.__tnValidateInternal(buffer, __tnParams);\n  }\n\n  static footprintIr(): bigint {\n    return this.__tnFootprintInternal(Object.create(null));\n  }\n\n  static footprint(): number {\n    const irResult = this.footprintIr();\n      const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n    if (__tnBigIntGreaterThan(irResult, maxSafe)) {\n      throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for RemoveAuthorityArgs');\n    }\n    return __tnBigIntToNumber(irResult, 'RemoveAuthorityArgs::footprint');\n  }\n\n  static validate(buffer: Uint8Array, _opts?: { params?: never }): { ok: boolean; code?: string; consumed?: number } {\n    if (buffer.length < 3) return { ok: false, code: \"tn.buffer_too_small\", consumed: 3 };\n    return { ok: true, consumed: 3 };\n  }\n\n  static new(wallet_account_idx: number, auth_idx: number): RemoveAuthorityArgs {\n    const buffer = new Uint8Array(3);\n    const view = new DataView(buffer.buffer);\n\n    let offset = 0;\n    view.setUint16(0, wallet_account_idx, true); /* wallet_account_idx (little-endian) */\n    view.setUint8(2, auth_idx); /* auth_idx */\n\n    return new RemoveAuthorityArgs(buffer);\n  }\n\n  static from_array(buffer: Uint8Array): RemoveAuthorityArgs | null {\n    if (!buffer || buffer.length === undefined) {\n      return null;\n    }\n    const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    const validation = this.validate(buffer);\n    if (!validation.ok) {\n      return null;\n    }\n    return new RemoveAuthorityArgs(buffer);\n  }\n\n}\n\nexport class RemoveAuthorityArgsBuilder {\n  private buffer: Uint8Array;\n  private view: DataView;\n\n  constructor() {\n    this.buffer = new Uint8Array(3);\n    this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n  }\n\n  set_wallet_account_idx(value: number): this {\n    this.view.setUint16(0, value, true);\n    return this;\n  }\n\n  set_auth_idx(value: number): this {\n    this.view.setUint8(2, value);\n    return this;\n  }\n\n  build(): Uint8Array {\n    return this.buffer.slice();\n  }\n\n  buildInto(target: Uint8Array, offset = 0): Uint8Array {\n    if (target.length - offset < this.buffer.length) throw new Error(\"target buffer too small\");\n    target.set(this.buffer, offset);\n    return target;\n  }\n\n  finish(): RemoveAuthorityArgs {\n    const view = RemoveAuthorityArgs.from_array(this.buffer.slice());\n    if (!view) throw new Error(\"failed to build RemoveAuthorityArgs\");\n    return view;\n  }\n}\n\n__tnRegisterFootprint(\"RemoveAuthorityArgs\", (params) => RemoveAuthorityArgs.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"RemoveAuthorityArgs\", (buffer, params) => RemoveAuthorityArgs.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"RemoveAuthorityArgs\", (buffer) => { const result = RemoveAuthorityArgs.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n\n/* ----- TYPE DEFINITION FOR Seed32 ----- */\n\nconst __tn_ir_Seed32 = {\n  typeName: \"Seed32\",\n  root: { op: \"const\", value: 32n }\n} as const;\n\nexport class Seed32 {\n  private view: DataView;\n  private constructor(private buffer: Uint8Array) {\n    this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n  }\n\n  private static readonly __tnElementSize = 1;\n  private static readonly __tnElementCount: number | null = 32;\n\n  get length(): number {\n    const explicit = Seed32.__tnElementCount;\n    if (explicit !== null) {\n      return explicit;\n    }\n    const stride = Seed32.__tnElementSize;\n    if (stride > 0) {\n      return Math.floor(this.buffer.length / stride);\n    }\n    return this.buffer.length;\n  }\n\n  getElementBytes(index: number): Uint8Array {\n    if (!Number.isInteger(index) || index < 0) {\n      throw new RangeError('Seed32::getElementBytes index must be a non-negative integer');\n    }\n    const stride = Seed32.__tnElementSize;\n    if (stride <= 0) {\n      throw new Error('Seed32::getElementBytes requires constant element size');\n    }\n    const start = index * stride;\n    const end = start + stride;\n    if (end > this.buffer.length) {\n      throw new RangeError('Seed32::getElementBytes out of bounds');\n    }\n    return this.buffer.subarray(start, end);\n  }\n\n  static from_array(buffer: Uint8Array): Seed32 | null {\n    if (!buffer || buffer.length === undefined) {\n      return null;\n    }\n    const validation = Seed32.validate(buffer);\n    if (!validation.ok) {\n      return null;\n    }\n    return new Seed32(buffer);\n  }\n\n  asUint8Array(): Uint8Array {\n    return new Uint8Array(this.buffer);\n  }\n\n  private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n    return __tnEvalFootprint(__tn_ir_Seed32.root, { params: __tnParams });\n  }\n\n  private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n    return __tnValidateIrTree(__tn_ir_Seed32, buffer, __tnParams);\n  }\n\n  static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n    return this.__tnFootprintInternal(__tnParams);\n  }\n\n  static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n    return this.__tnValidateInternal(buffer, __tnParams);\n  }\n\n  static footprintIr(): bigint {\n    return this.__tnFootprintInternal(Object.create(null));\n  }\n\n  static footprint(): number {\n    const irResult = this.footprintIr();\n      const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n    if (__tnBigIntGreaterThan(irResult, maxSafe)) {\n      throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for Seed32');\n    }\n    return __tnBigIntToNumber(irResult, 'Seed32::footprint');\n  }\n\n  static validate(buffer: Uint8Array, _opts?: { params?: never }): { ok: boolean; code?: string; consumed?: number } {\n    if (buffer.length < 32) return { ok: false, code: \"tn.buffer_too_small\", consumed: 32 };\n    return { ok: true, consumed: 32 };\n  }\n\n}\n\n__tnRegisterFootprint(\"Seed32\", (params) => Seed32.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"Seed32\", (buffer, params) => Seed32.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"Seed32\", (buffer) => { const result = Seed32.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n\n/* ----- TYPE DEFINITION FOR TransferArgs ----- */\n\nconst __tn_ir_TransferArgs = {\n  typeName: \"TransferArgs\",\n  root: { op: \"const\", value: 12n }\n} as const;\n\nexport class TransferArgs {\n  private view: DataView;\n\n  private constructor(private buffer: Uint8Array) {\n    this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n  }\n\n  static __tnCreateView(buffer: Uint8Array, opts?: { fieldContext?: Record<string, number | bigint> }): TransferArgs {\n    if (!buffer || buffer.length === undefined) throw new Error(\"TransferArgs.__tnCreateView requires a Uint8Array\");\n    return new TransferArgs(new Uint8Array(buffer));\n  }\n\n  static builder(): TransferArgsBuilder {\n    return new TransferArgsBuilder();\n  }\n\n  static fromBuilder(builder: TransferArgsBuilder): TransferArgs | null {\n    const buffer = builder.build();\n    return TransferArgs.from_array(buffer);\n  }\n\n  get_wallet_account_idx(): number {\n    const offset = 0;\n    return this.view.getUint16(offset, true); /* little-endian */\n  }\n\n  set_wallet_account_idx(value: number): void {\n    const offset = 0;\n    this.view.setUint16(offset, value, true); /* little-endian */\n  }\n\n  get wallet_account_idx(): number {\n    return this.get_wallet_account_idx();\n  }\n\n  set wallet_account_idx(value: number) {\n    this.set_wallet_account_idx(value);\n  }\n\n  get_to_account_idx(): number {\n    const offset = 2;\n    return this.view.getUint16(offset, true); /* little-endian */\n  }\n\n  set_to_account_idx(value: number): void {\n    const offset = 2;\n    this.view.setUint16(offset, value, true); /* little-endian */\n  }\n\n  get to_account_idx(): number {\n    return this.get_to_account_idx();\n  }\n\n  set to_account_idx(value: number) {\n    this.set_to_account_idx(value);\n  }\n\n  get_amount(): bigint {\n    const offset = 4;\n    return this.view.getBigUint64(offset, true); /* little-endian */\n  }\n\n  set_amount(value: bigint): void {\n    const offset = 4;\n    this.view.setBigUint64(offset, value, true); /* little-endian */\n  }\n\n  get amount(): bigint {\n    return this.get_amount();\n  }\n\n  set amount(value: bigint) {\n    this.set_amount(value);\n  }\n\n  private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n    return __tnEvalFootprint(__tn_ir_TransferArgs.root, { params: __tnParams });\n  }\n\n  private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n    return __tnValidateIrTree(__tn_ir_TransferArgs, buffer, __tnParams);\n  }\n\n  static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n    return this.__tnFootprintInternal(__tnParams);\n  }\n\n  static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n    return this.__tnValidateInternal(buffer, __tnParams);\n  }\n\n  static footprintIr(): bigint {\n    return this.__tnFootprintInternal(Object.create(null));\n  }\n\n  static footprint(): number {\n    const irResult = this.footprintIr();\n      const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n    if (__tnBigIntGreaterThan(irResult, maxSafe)) {\n      throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for TransferArgs');\n    }\n    return __tnBigIntToNumber(irResult, 'TransferArgs::footprint');\n  }\n\n  static validate(buffer: Uint8Array, _opts?: { params?: never }): { ok: boolean; code?: string; consumed?: number } {\n    if (buffer.length < 12) return { ok: false, code: \"tn.buffer_too_small\", consumed: 12 };\n    return { ok: true, consumed: 12 };\n  }\n\n  static new(wallet_account_idx: number, to_account_idx: number, amount: bigint): TransferArgs {\n    const buffer = new Uint8Array(12);\n    const view = new DataView(buffer.buffer);\n\n    let offset = 0;\n    view.setUint16(0, wallet_account_idx, true); /* wallet_account_idx (little-endian) */\n    view.setUint16(2, to_account_idx, true); /* to_account_idx (little-endian) */\n    view.setBigUint64(4, amount, true); /* amount (little-endian) */\n\n    return new TransferArgs(buffer);\n  }\n\n  static from_array(buffer: Uint8Array): TransferArgs | null {\n    if (!buffer || buffer.length === undefined) {\n      return null;\n    }\n    const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    const validation = this.validate(buffer);\n    if (!validation.ok) {\n      return null;\n    }\n    return new TransferArgs(buffer);\n  }\n\n}\n\nexport class TransferArgsBuilder {\n  private buffer: Uint8Array;\n  private view: DataView;\n\n  constructor() {\n    this.buffer = new Uint8Array(12);\n    this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n  }\n\n  set_wallet_account_idx(value: number): this {\n    this.view.setUint16(0, value, true);\n    return this;\n  }\n\n  set_to_account_idx(value: number): this {\n    this.view.setUint16(2, value, true);\n    return this;\n  }\n\n  set_amount(value: bigint): this {\n    const cast = __tnToBigInt(value);\n    this.view.setBigUint64(4, cast, true);\n    return this;\n  }\n\n  build(): Uint8Array {\n    return this.buffer.slice();\n  }\n\n  buildInto(target: Uint8Array, offset = 0): Uint8Array {\n    if (target.length - offset < this.buffer.length) throw new Error(\"target buffer too small\");\n    target.set(this.buffer, offset);\n    return target;\n  }\n\n  finish(): TransferArgs {\n    const view = TransferArgs.from_array(this.buffer.slice());\n    if (!view) throw new Error(\"failed to build TransferArgs\");\n    return view;\n  }\n}\n\n__tnRegisterFootprint(\"TransferArgs\", (params) => TransferArgs.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"TransferArgs\", (buffer, params) => TransferArgs.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"TransferArgs\", (buffer) => { const result = TransferArgs.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n\n/* ----- TYPE DEFINITION FOR ValidateArgs ----- */\n\nconst __tn_ir_ValidateArgs = {\n  typeName: \"ValidateArgs\",\n  root: { op: \"align\", alignment: 1, node: { op: \"add\", left: { op: \"add\", left: { op: \"add\", left: { op: \"add\", left: { op: \"add\", left: { op: \"add\", left: { op: \"add\", left: { op: \"add\", left: { op: \"align\", alignment: 2, node: { op: \"const\", value: 2n } }, right: { op: \"align\", alignment: 1, node: { op: \"const\", value: 1n } } }, right: { op: \"align\", alignment: 1, node: { op: \"const\", value: 32n } } }, right: { op: \"align\", alignment: 1, node: { op: \"const\", value: 32n } } }, right: { op: \"align\", alignment: 2, node: { op: \"const\", value: 2n } } }, right: { op: \"align\", alignment: 2, node: { op: \"const\", value: 2n } } }, right: { op: \"align\", alignment: 1, node: { op: \"mul\", left: { op: \"field\", param: \"authenticator_data.authenticator_data_len\" }, right: { op: \"const\", value: 1n } } } }, right: { op: \"align\", alignment: 1, node: { op: \"mul\", left: { op: \"field\", param: \"client_data.client_data_len\" }, right: { op: \"const\", value: 1n } } } }, right: { op: \"align\", alignment: 1, node: { op: \"call\", typeName: \"InstructionData\", args: [{ name: \"data.data_size\", source: \"data.data_size\" }] } } } }\n} as const;\n\nexport class ValidateArgs {\n  private view: DataView;\n  private __tnFieldContext: Record<string, number | bigint> | null = null;\n  private __tnParams: ValidateArgs.Params;\n\n  private constructor(private buffer: Uint8Array, params?: ValidateArgs.Params, fieldContext?: Record<string, number | bigint>) {\n    this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    this.__tnFieldContext = fieldContext ?? null;\n    if (params) {\n      this.__tnParams = params;\n    } else {\n      const derived = ValidateArgs.__tnExtractParams(this.view, buffer);\n      if (!derived) {\n        throw new Error(\"ValidateArgs: failed to derive dynamic parameters\");\n      }\n      this.__tnParams = derived.params;\n    }\n  }\n\n  static __tnCreateView(buffer: Uint8Array, opts?: { params?: ValidateArgs.Params, fieldContext?: Record<string, number | bigint> }): ValidateArgs {\n    if (!buffer || buffer.length === undefined) throw new Error(\"ValidateArgs.__tnCreateView requires a Uint8Array\");\n    let params = opts?.params ?? null;\n    if (!params) {\n      const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n      const derived = ValidateArgs.__tnExtractParams(view, buffer);\n      if (!derived) throw new Error(\"ValidateArgs.__tnCreateView: failed to derive params\");\n      params = derived.params;\n    }\n    const instance = new ValidateArgs(new Uint8Array(buffer), params, opts?.fieldContext);\n    return instance;\n  }\n\n  dynamicParams(): ValidateArgs.Params {\n    return this.__tnParams;\n  }\n\n  withFieldContext(context: Record<string, number | bigint>): this {\n    this.__tnFieldContext = context;\n    return this;\n  }\n\n  private __tnResolveFieldRef(path: string): number {\n    const getterName = `get_${path.replace(/[.]/g, '_')}`;\n    const getter = (this as any)[getterName];\n    if (typeof getter === \"function\") {\n      const value = getter.call(this);\n      return typeof value === \"bigint\" ? __tnBigIntToNumber(value, \"ValidateArgs::__tnResolveFieldRef\") : value;\n    }\n    if (this.__tnFieldContext && Object.prototype.hasOwnProperty.call(this.__tnFieldContext, path)) {\n      const contextValue = this.__tnFieldContext[path];\n      return typeof contextValue === \"bigint\" ? __tnBigIntToNumber(contextValue, \"ValidateArgs::__tnResolveFieldRef\") : contextValue;\n    }\n    throw new Error(\"ValidateArgs: field reference '\" + path + \"' is not available; provide fieldContext when creating this view\");\n  }\n\n  static builder(): ValidateArgsBuilder {\n    return new ValidateArgsBuilder();\n  }\n\n  static fromBuilder(builder: ValidateArgsBuilder): ValidateArgs | null {\n    const buffer = builder.build();\n    const params = builder.dynamicParams();\n    return ValidateArgs.from_array(buffer, { params });\n  }\n\n  static readonly flexibleArrayWriters = Object.freeze([\n    { field: \"authenticator_data\", method: \"authenticator_data\", sizeField: \"authenticator_data_len\", paramKey: \"authenticator_data_len\", elementSize: 1 },\n    { field: \"client_data\", method: \"client_data\", sizeField: \"client_data_len\", paramKey: \"client_data_len\", elementSize: 1 },\n  ] as const);\n\n  static __tnComputeSequentialLayout(view: DataView, buffer: Uint8Array): { params: Record<string, bigint> | null; offsets: Record<string, number> | null; derived: Record<string, bigint> | null } | null {\n    const offsets: Record<string, number> = Object.create(null);\n    const __tnLength = buffer.length;\n    let __tnParamSeq_data_data_size: bigint | null = null;\n    let __tnFieldValue_wallet_account_idx: number | null = null;\n    let __tnFieldValue_auth_idx: number | null = null;\n    let __tnFieldValue_authenticator_data_len: number | null = null;\n    let __tnFieldValue_client_data_len: number | null = null;\n    let __tnCursorMutable = 0;\n    if (__tnCursorMutable + 2 > __tnLength) return null;\n    const __tnRead_wallet_account_idx = view.getUint16(__tnCursorMutable, true);\n    __tnFieldValue_wallet_account_idx = __tnRead_wallet_account_idx;\n    __tnCursorMutable += 2;\n    if (__tnCursorMutable + 1 > __tnLength) return null;\n    const __tnRead_auth_idx = view.getUint8(__tnCursorMutable);\n    __tnFieldValue_auth_idx = __tnRead_auth_idx;\n    __tnCursorMutable += 1;\n    if (__tnCursorMutable + 32 > __tnLength) return null;\n    __tnCursorMutable += 32;\n    if (__tnCursorMutable + 32 > __tnLength) return null;\n    __tnCursorMutable += 32;\n    if (__tnCursorMutable + 2 > __tnLength) return null;\n    const __tnRead_authenticator_data_len = view.getUint16(__tnCursorMutable, true);\n    __tnFieldValue_authenticator_data_len = __tnRead_authenticator_data_len;\n    __tnCursorMutable += 2;\n    if (__tnCursorMutable + 2 > __tnLength) return null;\n    const __tnRead_client_data_len = view.getUint16(__tnCursorMutable, true);\n    __tnFieldValue_client_data_len = __tnRead_client_data_len;\n    __tnCursorMutable += 2;\n    if (__tnFieldValue_authenticator_data_len === null) return null;\n    const __tnArrayCount_authenticator_data = Math.trunc(Number(__tnFieldValue_authenticator_data_len));\n    if (!Number.isFinite(__tnArrayCount_authenticator_data) || __tnArrayCount_authenticator_data < 0) return null;\n    const __tnArrayBytes_authenticator_data = __tnArrayCount_authenticator_data * 1;\n    if (__tnCursorMutable + __tnArrayBytes_authenticator_data > __tnLength) return null;\n    __tnCursorMutable += __tnArrayBytes_authenticator_data;\n    if (__tnFieldValue_client_data_len === null) return null;\n    const __tnArrayCount_client_data = Math.trunc(Number(__tnFieldValue_client_data_len));\n    if (!Number.isFinite(__tnArrayCount_client_data) || __tnArrayCount_client_data < 0) return null;\n    const __tnArrayBytes_client_data = __tnArrayCount_client_data * 1;\n    offsets[\"client_data\"] = __tnCursorMutable;\n    if (__tnCursorMutable + __tnArrayBytes_client_data > __tnLength) return null;\n    __tnCursorMutable += __tnArrayBytes_client_data;\n    offsets[\"target_instruction\"] = __tnCursorMutable;\n    const __tnTyperefResult_target_instruction = __tnInvokeDynamicValidate(\"InstructionData\", buffer.subarray(__tnCursorMutable));\n    if (!__tnTyperefResult_target_instruction.ok || __tnTyperefResult_target_instruction.consumed === undefined) return null;\n    const __tnTyperefParams_target_instruction = __tnTyperefResult_target_instruction.params ?? null;\n    if (!__tnTyperefParams_target_instruction || __tnTyperefParams_target_instruction[\"data_data_size\"] === undefined) return null;\n    __tnParamSeq_data_data_size = __tnTyperefParams_target_instruction[\"data_data_size\"];\n    __tnCursorMutable += __tnBigIntToNumber(__tnTyperefResult_target_instruction.consumed, \"ValidateArgs::target_instruction\");\n    const params: Record<string, bigint> = Object.create(null);\n    if (__tnParamSeq_data_data_size === null) return null;\n    params[\"data_data_size\"] = __tnParamSeq_data_data_size as bigint;\n    return { params, offsets: offsets, derived: null };\n  }\n\n  private static __tnExtractParams(view: DataView, buffer: Uint8Array): { params: ValidateArgs.Params; derived: Record<string, bigint> | null } | null {\n    if (buffer.length < 69) {\n      return null;\n    }\n    const __tnParam_authenticator_data_authenticator_data_len = __tnToBigInt(view.getUint16(67, true));\n    if (buffer.length < 71) {\n      return null;\n    }\n    const __tnParam_client_data_client_data_len = __tnToBigInt(view.getUint16(69, true));\n    const __tnLayout = ValidateArgs.__tnComputeSequentialLayout(view, buffer);\n    if (!__tnLayout || !__tnLayout.params) return null;\n    const __tnSeqParams = __tnLayout.params;\n    const __tnParamSeq_data_data_size = __tnSeqParams[\"data_data_size\"];\n    if (__tnParamSeq_data_data_size === undefined) return null;\n    const __tnExtractedParams = ValidateArgs.Params.fromValues({\n      authenticator_data_authenticator_data_len: __tnParam_authenticator_data_authenticator_data_len,\n      client_data_client_data_len: __tnParam_client_data_client_data_len,\n      data_data_size: __tnParamSeq_data_data_size as bigint,\n    });\n    return { params: __tnExtractedParams, derived: null };\n  }\n\n  /* Dynamic offsets are derived once per view; mutating length fields later does not invalidate this cache. */\n  private __tnDynamicOffsetCache: Record<string, number> | null = null;\n  private __tnGetDynamicOffset(field: string): number {\n    if (!this.__tnDynamicOffsetCache) {\n      this.__tnDynamicOffsetCache = this.__tnComputeDynamicOffsets();\n    }\n    const offset = this.__tnDynamicOffsetCache[field];\n    if (offset === undefined) {\n      throw new Error(\"ValidateArgs: field '\" + field + \"' does not have a dynamic offset\");\n    }\n    return offset;\n  }\n\n  private __tnComputeDynamicOffsets(): Record<string, number> {\n    const layout = ValidateArgs.__tnComputeSequentialLayout(this.view, this.buffer);\n    if (!layout || !layout.offsets) {\n      throw new Error(\"ValidateArgs: failed to compute dynamic offsets\");\n    }\n    return layout.offsets;\n  }\n\n  get_wallet_account_idx(): number {\n    const offset = 0;\n    return this.view.getUint16(offset, true); /* little-endian */\n  }\n\n  set_wallet_account_idx(value: number): void {\n    const offset = 0;\n    this.view.setUint16(offset, value, true); /* little-endian */\n  }\n\n  get wallet_account_idx(): number {\n    return this.get_wallet_account_idx();\n  }\n\n  set wallet_account_idx(value: number) {\n    this.set_wallet_account_idx(value);\n  }\n\n  get_auth_idx(): number {\n    const offset = 2;\n    return this.view.getUint8(offset);\n  }\n\n  set_auth_idx(value: number): void {\n    const offset = 2;\n    this.view.setUint8(offset, value);\n  }\n\n  get auth_idx(): number {\n    return this.get_auth_idx();\n  }\n\n  set auth_idx(value: number) {\n    this.set_auth_idx(value);\n  }\n\n  get_signature_r(): P256Point {\n    const offset = 3;\n    const slice = this.buffer.subarray(offset, offset + 32);\n    return P256Point.from_array(slice)!;\n  }\n\n  set_signature_r(value: P256Point): void {\n    /* Copy bytes from source struct to this field */\n    const sourceBytes = (value as any).buffer as Uint8Array;\n    const offset = 3;\n    this.buffer.set(sourceBytes, offset);\n  }\n\n  get signature_r(): P256Point {\n    return this.get_signature_r();\n  }\n\n  set signature_r(value: P256Point) {\n    this.set_signature_r(value);\n  }\n\n  get_signature_s(): P256Point {\n    const offset = 35;\n    const slice = this.buffer.subarray(offset, offset + 32);\n    return P256Point.from_array(slice)!;\n  }\n\n  set_signature_s(value: P256Point): void {\n    /* Copy bytes from source struct to this field */\n    const sourceBytes = (value as any).buffer as Uint8Array;\n    const offset = 35;\n    this.buffer.set(sourceBytes, offset);\n  }\n\n  get signature_s(): P256Point {\n    return this.get_signature_s();\n  }\n\n  set signature_s(value: P256Point) {\n    this.set_signature_s(value);\n  }\n\n  get_authenticator_data_len(): number {\n    const offset = 67;\n    return this.view.getUint16(offset, true); /* little-endian */\n  }\n\n  set_authenticator_data_len(value: number): void {\n    const offset = 67;\n    this.view.setUint16(offset, value, true); /* little-endian */\n  }\n\n  get authenticator_data_len(): number {\n    return this.get_authenticator_data_len();\n  }\n\n  set authenticator_data_len(value: number) {\n    this.set_authenticator_data_len(value);\n  }\n\n  get_client_data_len(): number {\n    const offset = 69;\n    return this.view.getUint16(offset, true); /* little-endian */\n  }\n\n  set_client_data_len(value: number): void {\n    const offset = 69;\n    this.view.setUint16(offset, value, true); /* little-endian */\n  }\n\n  get client_data_len(): number {\n    return this.get_client_data_len();\n  }\n\n  set client_data_len(value: number) {\n    this.set_client_data_len(value);\n  }\n\n  get_authenticator_data_length(): number {\n    return this.__tnResolveFieldRef(\"authenticator_data_len\");\n  }\n\n  get_authenticator_data_at(index: number): number {\n    const offset = 71;\n    return this.view.getUint8(offset + index * 1);\n  }\n\n  get_authenticator_data(): number[] {\n    const len = this.get_authenticator_data_length();\n    const result: number[] = [];\n    for (let i = 0; i < len; i++) {\n      result.push(this.get_authenticator_data_at(i));\n    }\n    return result;\n  }\n\n  set_authenticator_data_at(index: number, value: number): void {\n    const offset = 71;\n    this.view.setUint8((offset + index * 1), value);\n  }\n\n  set_authenticator_data(value: number[]): void {\n    const len = Math.min(this.get_authenticator_data_length(), value.length);\n    for (let i = 0; i < len; i++) {\n      this.set_authenticator_data_at(i, value[i]);\n    }\n  }\n\n  get authenticator_data(): number[] {\n    return this.get_authenticator_data();\n  }\n\n  set authenticator_data(value: number[]) {\n    this.set_authenticator_data(value);\n  }\n\n  get_client_data_length(): number {\n    return this.__tnResolveFieldRef(\"client_data_len\");\n  }\n\n  get_client_data_at(index: number): number {\n    const offset = this.__tnGetDynamicOffset(\"client_data\");\n    return this.view.getUint8(offset + index * 1);\n  }\n\n  get_client_data(): number[] {\n    const len = this.get_client_data_length();\n    const result: number[] = [];\n    for (let i = 0; i < len; i++) {\n      result.push(this.get_client_data_at(i));\n    }\n    return result;\n  }\n\n  set_client_data_at(index: number, value: number): void {\n    const offset = this.__tnGetDynamicOffset(\"client_data\");\n    this.view.setUint8((offset + index * 1), value);\n  }\n\n  set_client_data(value: number[]): void {\n    const len = Math.min(this.get_client_data_length(), value.length);\n    for (let i = 0; i < len; i++) {\n      this.set_client_data_at(i, value[i]);\n    }\n  }\n\n  get client_data(): number[] {\n    return this.get_client_data();\n  }\n\n  set client_data(value: number[]) {\n    this.set_client_data(value);\n  }\n\n  get_target_instruction(): InstructionData {\n    const offset = this.__tnGetDynamicOffset(\"target_instruction\");\n    const tail = this.buffer.subarray(offset);\n    const validation = InstructionData.validate(tail);\n    if (!validation.ok || validation.consumed === undefined) {\n      throw new Error(\"ValidateArgs: failed to read field 'target_instruction' (invalid nested payload)\");\n    }\n    const length = validation.consumed;\n    const slice = tail.subarray(0, length);\n    const opts = validation.params ? { params: validation.params } : undefined;\n    return InstructionData.from_array(slice, opts)!;\n  }\n\n  set_target_instruction(value: InstructionData): void {\n    /* Copy bytes from source struct to this field */\n    const sourceBytes = (value as any).buffer as Uint8Array;\n    const offset = this.__tnGetDynamicOffset(\"target_instruction\");\n    this.buffer.set(sourceBytes, offset);\n  }\n\n  get target_instruction(): InstructionData {\n    return this.get_target_instruction();\n  }\n\n  set target_instruction(value: InstructionData) {\n    this.set_target_instruction(value);\n  }\n  private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n    return __tnEvalFootprint(__tn_ir_ValidateArgs.root, { params: __tnParams });\n  }\n\n  private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n    return __tnValidateIrTree(__tn_ir_ValidateArgs, buffer, __tnParams);\n  }\n\n  static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n    return this.__tnFootprintInternal(__tnParams);\n  }\n\n  static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n    return this.__tnValidateInternal(buffer, __tnParams);\n  }\n\n  static footprintIr(authenticator_data_authenticator_data_len: number | bigint, client_data_client_data_len: number | bigint, data_data_size: number | bigint): bigint {\n    const params = ValidateArgs.Params.fromValues({\n      authenticator_data_authenticator_data_len: authenticator_data_authenticator_data_len,\n      client_data_client_data_len: client_data_client_data_len,\n      data_data_size: data_data_size,\n    });\n    return this.footprintIrFromParams(params);\n  }\n\n  private static __tnPackParams(params: ValidateArgs.Params): Record<string, bigint> {\n    const record: Record<string, bigint> = Object.create(null);\n    record[\"authenticator_data.authenticator_data_len\"] = params.authenticator_data_authenticator_data_len;\n    record[\"client_data.client_data_len\"] = params.client_data_client_data_len;\n    record[\"data.data_size\"] = params.data_data_size;\n    return record;\n  }\n\n  static footprintIrFromParams(params: ValidateArgs.Params): bigint {\n    const __tnParams = this.__tnPackParams(params);\n    return this.__tnFootprintInternal(__tnParams);\n  }\n\n  static footprintFromParams(params: ValidateArgs.Params): number {\n    const irResult = this.footprintIrFromParams(params);\n    const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n    if (__tnBigIntGreaterThan(irResult, maxSafe)) throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for ValidateArgs');\n    return __tnBigIntToNumber(irResult, 'ValidateArgs::footprintFromParams');\n  }\n\n  static footprintFromValues(input: { authenticator_data_authenticator_data_len: number | bigint, client_data_client_data_len: number | bigint, data_data_size: number | bigint }): number {\n    const params = ValidateArgs.params(input);\n    return this.footprintFromParams(params);\n  }\n\n  static footprint(params: ValidateArgs.Params): number {\n    return this.footprintFromParams(params);\n  }\n\n  static validate(buffer: Uint8Array, opts?: { params?: ValidateArgs.Params }): { ok: boolean; code?: string; consumed?: number; params?: ValidateArgs.Params } {\n    if (!buffer || buffer.length === undefined) {\n      return { ok: false, code: \"tn.invalid_buffer\" };\n    }\n    const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    let params = opts?.params ?? null;\n    if (!params) {\n      const extracted = this.__tnExtractParams(view, buffer);\n      if (!extracted) return { ok: false, code: \"tn.param_extraction_failed\" };\n      params = extracted.params;\n    }\n    const __tnParamsRec = this.__tnPackParams(params);\n    const irResult = this.__tnValidateInternal(buffer, __tnParamsRec);\n    if (!irResult.ok) {\n      return { ok: false, code: irResult.code, consumed: irResult.consumed ? __tnBigIntToNumber(irResult.consumed, 'ValidateArgs::validate') : undefined, params };\n    }\n    const consumed = irResult.consumed ? __tnBigIntToNumber(irResult.consumed, 'ValidateArgs::validate') : undefined;\n    return { ok: true, consumed, params };\n  }\n\n  static from_array(buffer: Uint8Array, opts?: { params?: ValidateArgs.Params }): ValidateArgs | null {\n    if (!buffer || buffer.length === undefined) {\n      return null;\n    }\n    const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    let params = opts?.params ?? null;\n    if (!params) {\n      const derived = this.__tnExtractParams(view, buffer);\n      if (!derived) return null;\n      params = derived.params;\n    }\n    const validation = this.validate(buffer, { params });\n    if (!validation.ok) {\n      return null;\n    }\n    const cached = validation.params ?? params;\n    const state = new ValidateArgs(buffer, cached);\n    return state;\n  }\n\n\n}\n\nexport namespace ValidateArgs {\n  export type Params = {\n    /** ABI path: authenticator_data.authenticator_data_len */\n    readonly authenticator_data_authenticator_data_len: bigint;\n    /** ABI path: client_data.client_data_len */\n    readonly client_data_client_data_len: bigint;\n    /** ABI path: data.data_size */\n    readonly data_data_size: bigint;\n  };\n\n  export const ParamKeys = Object.freeze({\n    authenticator_data_authenticator_data_len: \"authenticator_data.authenticator_data_len\",\n    client_data_client_data_len: \"client_data.client_data_len\",\n    data_data_size: \"data.data_size\",\n  } as const);\n\n  export const Params = {\n    fromValues(input: { authenticator_data_authenticator_data_len: number | bigint, client_data_client_data_len: number | bigint, data_data_size: number | bigint }): Params {\n      return {\n        authenticator_data_authenticator_data_len: __tnToBigInt(input.authenticator_data_authenticator_data_len),\n        client_data_client_data_len: __tnToBigInt(input.client_data_client_data_len),\n        data_data_size: __tnToBigInt(input.data_data_size),\n      };\n    },\n    fromBuilder(source: { dynamicParams(): Params } | { params: Params } | Params): Params {\n      if ((source as { dynamicParams?: () => Params }).dynamicParams) {\n        return (source as { dynamicParams(): Params }).dynamicParams();\n      }\n      if ((source as { params?: Params }).params) {\n        return (source as { params: Params }).params;\n      }\n      return source as Params;\n    }\n  };\n\n  export function params(input: { authenticator_data_authenticator_data_len: number | bigint, client_data_client_data_len: number | bigint, data_data_size: number | bigint }): Params {\n    return Params.fromValues(input);\n  }\n}\n\nexport class ValidateArgsBuilder {\n  private buffer: Uint8Array;\n  private view: DataView;\n  private __tnCachedParams: ValidateArgs.Params | null = null;\n  private __tnLastBuffer: Uint8Array | null = null;\n  private __tnLastParams: ValidateArgs.Params | null = null;\n  private __tnFam_authenticator_data: Uint8Array | null = null;\n  private __tnFam_authenticator_dataCount: number | null = null;\n  private __tnFamWriter_authenticator_data?: __TnFamWriterResult<ValidateArgsBuilder>;\n  private __tnFam_client_data: Uint8Array | null = null;\n  private __tnFam_client_dataCount: number | null = null;\n  private __tnFamWriter_client_data?: __TnFamWriterResult<ValidateArgsBuilder>;\n  private __tnTail_target_instruction: Uint8Array | null = null;\n  private __tnTailParams_target_instruction: Record<string, bigint> | null = null;\n\n  constructor() {\n    this.buffer = new Uint8Array(71);\n    this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n  }\n\n  private __tnInvalidate(): void {\n    this.__tnCachedParams = null;\n    this.__tnLastBuffer = null;\n    this.__tnLastParams = null;\n  }\n\n  set_wallet_account_idx(value: number): this {\n    this.view.setUint16(0, value, true);\n    this.__tnInvalidate();\n    return this;\n  }\n\n  set_auth_idx(value: number): this {\n    this.view.setUint8(2, value);\n    this.__tnInvalidate();\n    return this;\n  }\n\n  set_signature_r(value: Uint8Array): this {\n    if (value.length !== 32) throw new Error(\"signature_r expects 32 bytes\");\n    this.buffer.set(value, 3);\n    this.__tnInvalidate();\n    return this;\n  }\n\n  set_signature_s(value: Uint8Array): this {\n    if (value.length !== 32) throw new Error(\"signature_s expects 32 bytes\");\n    this.buffer.set(value, 35);\n    this.__tnInvalidate();\n    return this;\n  }\n\n  set_authenticator_data_len(value: number): this {\n    this.view.setUint16(67, value, true);\n    this.__tnInvalidate();\n    return this;\n  }\n\n  set_client_data_len(value: number): this {\n    this.view.setUint16(69, value, true);\n    this.__tnInvalidate();\n    return this;\n  }\n\n  authenticator_data(): __TnFamWriterResult<ValidateArgsBuilder> {\n    if (!this.__tnFamWriter_authenticator_data) {\n      this.__tnFamWriter_authenticator_data = __tnCreateFamWriter(this, \"authenticator_data\", (payload) => {\n        const bytes = new Uint8Array(payload);\n        const elementCount = bytes.length;\n        this.__tnFam_authenticator_data = bytes;\n        this.__tnFam_authenticator_dataCount = elementCount;\n        this.set_authenticator_data_len(elementCount);\n        this.__tnInvalidate();\n      });\n    }\n    return this.__tnFamWriter_authenticator_data!;\n  }\n\n  client_data(): __TnFamWriterResult<ValidateArgsBuilder> {\n    if (!this.__tnFamWriter_client_data) {\n      this.__tnFamWriter_client_data = __tnCreateFamWriter(this, \"client_data\", (payload) => {\n        const bytes = new Uint8Array(payload);\n        const elementCount = bytes.length;\n        this.__tnFam_client_data = bytes;\n        this.__tnFam_client_dataCount = elementCount;\n        this.set_client_data_len(elementCount);\n        this.__tnInvalidate();\n      });\n    }\n    return this.__tnFamWriter_client_data!;\n  }\n\n  set_target_instruction(value: InstructionData | __TnStructFieldInput): this {\n    const bytes = __tnResolveStructFieldInput(value as __TnStructFieldInput, \"ValidateArgsBuilder::target_instruction\");\n    const validation = __tnInvokeDynamicValidate(\"InstructionData\", bytes);\n    if (!validation.ok || validation.consumed === undefined) throw new Error(\"ValidateArgsBuilder: field 'target_instruction' failed validation\");\n    if (__tnBigIntToNumber(validation.consumed, \"ValidateArgsBuilder::target_instruction\") !== bytes.length) throw new Error(\"ValidateArgsBuilder: field 'target_instruction' validation did not consume the full buffer\");\n    this.__tnTail_target_instruction = bytes;\n    this.__tnTailParams_target_instruction = validation.params ?? null;\n    this.__tnInvalidate();\n    return this;\n  }\n\n  build(): Uint8Array {\n    const params = this.__tnComputeParams();\n    const size = ValidateArgs.footprintFromParams(params);\n    const buffer = new Uint8Array(size);\n    this.__tnWriteInto(buffer);\n    this.__tnValidateOrThrow(buffer, params);\n    return buffer;\n  }\n\n  buildInto(target: Uint8Array, offset = 0): Uint8Array {\n    const params = this.__tnComputeParams();\n    const size = ValidateArgs.footprintFromParams(params);\n    if (target.length - offset < size) throw new Error(\"ValidateArgsBuilder: target buffer too small\");\n    const slice = target.subarray(offset, offset + size);\n    this.__tnWriteInto(slice);\n    this.__tnValidateOrThrow(slice, params);\n    return target;\n  }\n\n  finish(): ValidateArgs {\n    const buffer = this.build();\n    const params = this.__tnLastParams ?? this.__tnComputeParams();\n    const view = ValidateArgs.from_array(buffer, { params });\n    if (!view) throw new Error(\"ValidateArgsBuilder: failed to finalize view\");\n    return view;\n  }\n\n  finishView(): ValidateArgs {\n    return this.finish();\n  }\n\n  dynamicParams(): ValidateArgs.Params {\n    return this.__tnComputeParams();\n  }\n\n  private __tnComputeParams(): ValidateArgs.Params {\n    if (this.__tnCachedParams) return this.__tnCachedParams;\n    const params = ValidateArgs.Params.fromValues({\n      authenticator_data_authenticator_data_len: (() => { if (this.__tnFam_authenticator_dataCount === null) throw new Error(\"ValidateArgsBuilder: field 'authenticator_data' must be written before computing params\"); return __tnToBigInt(this.__tnFam_authenticator_dataCount); })(),\n      client_data_client_data_len: (() => { if (this.__tnFam_client_dataCount === null) throw new Error(\"ValidateArgsBuilder: field 'client_data' must be written before computing params\"); return __tnToBigInt(this.__tnFam_client_dataCount); })(),\n      data_data_size: (() => { const params = this.__tnTailParams_target_instruction; if (!params || params[\"data_data_size\"] === undefined) throw new Error(\"ValidateArgsBuilder: field 'target_instruction' must be written before computing params\"); return params[\"data_data_size\"]; })(),\n    });\n    this.__tnCachedParams = params;\n    return params;\n  }\n\n  private __tnWriteInto(target: Uint8Array): void {\n    target.set(this.buffer, 0);\n    let cursor = this.buffer.length;\n    const __tnLocal_authenticator_data_bytes = this.__tnFam_authenticator_data;\n    if (!__tnLocal_authenticator_data_bytes) throw new Error(\"ValidateArgsBuilder: field 'authenticator_data' must be written before build\");\n    target.set(__tnLocal_authenticator_data_bytes, cursor);\n    cursor += __tnLocal_authenticator_data_bytes.length;\n    const __tnLocal_client_data_bytes = this.__tnFam_client_data;\n    if (!__tnLocal_client_data_bytes) throw new Error(\"ValidateArgsBuilder: field 'client_data' must be written before build\");\n    target.set(__tnLocal_client_data_bytes, cursor);\n    cursor += __tnLocal_client_data_bytes.length;\n    const __tnLocal_target_instruction_bytes = this.__tnTail_target_instruction;\n    if (!__tnLocal_target_instruction_bytes) throw new Error(\"ValidateArgsBuilder: field 'target_instruction' must be written before build\");\n    target.set(__tnLocal_target_instruction_bytes, cursor);\n    cursor += __tnLocal_target_instruction_bytes.length;\n  }\n\n  private __tnValidateOrThrow(buffer: Uint8Array, params: ValidateArgs.Params): void {\n    const result = ValidateArgs.validate(buffer, { params });\n    if (!result.ok) {\n      throw new Error(`${ ValidateArgs }Builder: builder produced invalid buffer (code=${result.code ?? \"unknown\"})`);\n    }\n    this.__tnLastParams = result.params ?? params;\n    this.__tnLastBuffer = buffer;\n  }\n}\n\n__tnRegisterFootprint(\"ValidateArgs\", (params) => ValidateArgs.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"ValidateArgs\", (buffer, params) => ValidateArgs.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"ValidateArgs\", (buffer) => { const result = ValidateArgs.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n\n/* ----- TYPE DEFINITION FOR WalletAccount ----- */\n\nconst __tn_ir_WalletAccount = {\n  typeName: \"WalletAccount\",\n  root: { op: \"align\", alignment: 1, node: { op: \"add\", left: { op: \"add\", left: { op: \"align\", alignment: 1, node: { op: \"const\", value: 1n } }, right: { op: \"align\", alignment: 8, node: { op: \"const\", value: 8n } } }, right: { op: \"align\", alignment: 1, node: { op: \"mul\", left: { op: \"add\", left: { op: \"field\", param: \"authorities.num_auth\" }, right: { op: \"const\", value: 1n } }, right: { op: \"const\", value: 73n } } } } }\n} as const;\n\nexport class WalletAccount {\n  private view: DataView;\n  private __tnFieldContext: Record<string, number | bigint> | null = null;\n  private __tnParams: WalletAccount.Params;\n\n  private constructor(private buffer: Uint8Array, params?: WalletAccount.Params, fieldContext?: Record<string, number | bigint>) {\n    this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    this.__tnFieldContext = fieldContext ?? null;\n    if (params) {\n      this.__tnParams = params;\n    } else {\n      const derived = WalletAccount.__tnExtractParams(this.view, buffer);\n      if (!derived) {\n        throw new Error(\"WalletAccount: failed to derive dynamic parameters\");\n      }\n      this.__tnParams = derived.params;\n    }\n  }\n\n  static __tnCreateView(buffer: Uint8Array, opts?: { params?: WalletAccount.Params, fieldContext?: Record<string, number | bigint> }): WalletAccount {\n    if (!buffer || buffer.length === undefined) throw new Error(\"WalletAccount.__tnCreateView requires a Uint8Array\");\n    let params = opts?.params ?? null;\n    if (!params) {\n      const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n      const derived = WalletAccount.__tnExtractParams(view, buffer);\n      if (!derived) throw new Error(\"WalletAccount.__tnCreateView: failed to derive params\");\n      params = derived.params;\n    }\n    const instance = new WalletAccount(new Uint8Array(buffer), params, opts?.fieldContext);\n    return instance;\n  }\n\n  dynamicParams(): WalletAccount.Params {\n    return this.__tnParams;\n  }\n\n  withFieldContext(context: Record<string, number | bigint>): this {\n    this.__tnFieldContext = context;\n    return this;\n  }\n\n  private __tnResolveFieldRef(path: string): number {\n    const getterName = `get_${path.replace(/[.]/g, '_')}`;\n    const getter = (this as any)[getterName];\n    if (typeof getter === \"function\") {\n      const value = getter.call(this);\n      return typeof value === \"bigint\" ? __tnBigIntToNumber(value, \"WalletAccount::__tnResolveFieldRef\") : value;\n    }\n    if (this.__tnFieldContext && Object.prototype.hasOwnProperty.call(this.__tnFieldContext, path)) {\n      const contextValue = this.__tnFieldContext[path];\n      return typeof contextValue === \"bigint\" ? __tnBigIntToNumber(contextValue, \"WalletAccount::__tnResolveFieldRef\") : contextValue;\n    }\n    throw new Error(\"WalletAccount: field reference '\" + path + \"' is not available; provide fieldContext when creating this view\");\n  }\n\n  private static __tnExtractParams(view: DataView, buffer: Uint8Array): { params: WalletAccount.Params; derived: Record<string, bigint> | null } | null {\n    if (buffer.length < 1) {\n      return null;\n    }\n    const __tnParam_authorities_num_auth = __tnToBigInt(view.getUint8(0));\n    const __tnExtractedParams = WalletAccount.Params.fromValues({\n      authorities_num_auth: __tnParam_authorities_num_auth,\n    });\n    return { params: __tnExtractedParams, derived: null };\n  }\n\n  get_num_auth(): number {\n    const offset = 0;\n    return this.view.getUint8(offset);\n  }\n\n  set_num_auth(value: number): void {\n    const offset = 0;\n    this.view.setUint8(offset, value);\n  }\n\n  get num_auth(): number {\n    return this.get_num_auth();\n  }\n\n  set num_auth(value: number) {\n    this.set_num_auth(value);\n  }\n\n  get_nonce(): bigint {\n    const offset = 1;\n    return this.view.getBigUint64(offset, true); /* little-endian */\n  }\n\n  set_nonce(value: bigint): void {\n    const offset = 1;\n    this.view.setBigUint64(offset, value, true); /* little-endian */\n  }\n\n  get nonce(): bigint {\n    return this.get_nonce();\n  }\n\n  set nonce(value: bigint) {\n    this.set_nonce(value);\n  }\n\n  get_authorities_length(): number {\n    return (this.__tnResolveFieldRef(\"num_auth\") + 1);\n  }\n\n  get_authorities_at(index: number): AuthorityRecord {\n    const offset = 9;\n    const slice = this.buffer.subarray((offset + index * 73), (offset + (index + 1) * 73));\n    return AuthorityRecord.from_array(slice)!;\n  }\n\n  get_authorities(): AuthorityRecord[] {\n    const len = this.get_authorities_length();\n    const result: AuthorityRecord[] = [];\n    for (let i = 0; i < len; i++) {\n      result.push(this.get_authorities_at(i));\n    }\n    return result;\n  }\n\n  set_authorities_at(index: number, value: AuthorityRecord): void {\n    const offset = 9;\n    const slice = this.buffer.subarray(offset + index * 73, offset + (index + 1) * 73);\n    slice.set(value['buffer']);\n  }\n\n  set_authorities(value: AuthorityRecord[]): void {\n    const len = Math.min(this.get_authorities_length(), value.length);\n    for (let i = 0; i < len; i++) {\n      this.set_authorities_at(i, value[i]);\n    }\n  }\n\n  get authorities(): AuthorityRecord[] {\n    return this.get_authorities();\n  }\n\n  set authorities(value: AuthorityRecord[]) {\n    this.set_authorities(value);\n  }\n  private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n    return __tnEvalFootprint(__tn_ir_WalletAccount.root, { params: __tnParams });\n  }\n\n  private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n    return __tnValidateIrTree(__tn_ir_WalletAccount, buffer, __tnParams);\n  }\n\n  static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n    return this.__tnFootprintInternal(__tnParams);\n  }\n\n  static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n    return this.__tnValidateInternal(buffer, __tnParams);\n  }\n\n  static footprintIr(authorities_num_auth: number | bigint): bigint {\n    const params = WalletAccount.Params.fromValues({\n      authorities_num_auth: authorities_num_auth,\n    });\n    return this.footprintIrFromParams(params);\n  }\n\n  private static __tnPackParams(params: WalletAccount.Params): Record<string, bigint> {\n    const record: Record<string, bigint> = Object.create(null);\n    record[\"authorities.num_auth\"] = params.authorities_num_auth;\n    return record;\n  }\n\n  static footprintIrFromParams(params: WalletAccount.Params): bigint {\n    const __tnParams = this.__tnPackParams(params);\n    return this.__tnFootprintInternal(__tnParams);\n  }\n\n  static footprintFromParams(params: WalletAccount.Params): number {\n    const irResult = this.footprintIrFromParams(params);\n    const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n    if (__tnBigIntGreaterThan(irResult, maxSafe)) throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for WalletAccount');\n    return __tnBigIntToNumber(irResult, 'WalletAccount::footprintFromParams');\n  }\n\n  static footprintFromValues(input: { authorities_num_auth: number | bigint }): number {\n    const params = WalletAccount.params(input);\n    return this.footprintFromParams(params);\n  }\n\n  static footprint(params: WalletAccount.Params): number {\n    return this.footprintFromParams(params);\n  }\n\n  static validate(buffer: Uint8Array, opts?: { params?: WalletAccount.Params }): { ok: boolean; code?: string; consumed?: number; params?: WalletAccount.Params } {\n    if (!buffer || buffer.length === undefined) {\n      return { ok: false, code: \"tn.invalid_buffer\" };\n    }\n    const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    let params = opts?.params ?? null;\n    if (!params) {\n      const extracted = this.__tnExtractParams(view, buffer);\n      if (!extracted) return { ok: false, code: \"tn.param_extraction_failed\" };\n      params = extracted.params;\n    }\n    const __tnParamsRec = this.__tnPackParams(params);\n    const irResult = this.__tnValidateInternal(buffer, __tnParamsRec);\n    if (!irResult.ok) {\n      return { ok: false, code: irResult.code, consumed: irResult.consumed ? __tnBigIntToNumber(irResult.consumed, 'WalletAccount::validate') : undefined, params };\n    }\n    const consumed = irResult.consumed ? __tnBigIntToNumber(irResult.consumed, 'WalletAccount::validate') : undefined;\n    return { ok: true, consumed, params };\n  }\n\n  static from_array(buffer: Uint8Array, opts?: { params?: WalletAccount.Params }): WalletAccount | null {\n    if (!buffer || buffer.length === undefined) {\n      return null;\n    }\n    const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    let params = opts?.params ?? null;\n    if (!params) {\n      const derived = this.__tnExtractParams(view, buffer);\n      if (!derived) return null;\n      params = derived.params;\n    }\n    const validation = this.validate(buffer, { params });\n    if (!validation.ok) {\n      return null;\n    }\n    const cached = validation.params ?? params;\n    const state = new WalletAccount(buffer, cached);\n    return state;\n  }\n\n\n}\n\nexport namespace WalletAccount {\n  export type Params = {\n    /** ABI path: authorities.num_auth */\n    readonly authorities_num_auth: bigint;\n  };\n\n  export const ParamKeys = Object.freeze({\n    authorities_num_auth: \"authorities.num_auth\",\n  } as const);\n\n  export const Params = {\n    fromValues(input: { authorities_num_auth: number | bigint }): Params {\n      return {\n        authorities_num_auth: __tnToBigInt(input.authorities_num_auth),\n      };\n    },\n    fromBuilder(source: { dynamicParams(): Params } | { params: Params } | Params): Params {\n      if ((source as { dynamicParams?: () => Params }).dynamicParams) {\n        return (source as { dynamicParams(): Params }).dynamicParams();\n      }\n      if ((source as { params?: Params }).params) {\n        return (source as { params: Params }).params;\n      }\n      return source as Params;\n    }\n  };\n\n  export function params(input: { authorities_num_auth: number | bigint }): Params {\n    return Params.fromValues(input);\n  }\n}\n\n__tnRegisterFootprint(\"WalletAccount\", (params) => WalletAccount.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"WalletAccount\", (buffer, params) => WalletAccount.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"WalletAccount\", (buffer) => { const result = WalletAccount.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n\n/* ----- TYPE DEFINITION FOR WalletCreatedEventData ----- */\n\nconst __tn_ir_WalletCreatedEventData = {\n  typeName: \"WalletCreatedEventData\",\n  root: { op: \"const\", value: 97n }\n} as const;\n\nexport class WalletCreatedEventData {\n  private view: DataView;\n\n  private constructor(private buffer: Uint8Array) {\n    this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n  }\n\n  static __tnCreateView(buffer: Uint8Array, opts?: { fieldContext?: Record<string, number | bigint> }): WalletCreatedEventData {\n    if (!buffer || buffer.length === undefined) throw new Error(\"WalletCreatedEventData.__tnCreateView requires a Uint8Array\");\n    return new WalletCreatedEventData(new Uint8Array(buffer));\n  }\n\n  static builder(): WalletCreatedEventDataBuilder {\n    return new WalletCreatedEventDataBuilder();\n  }\n\n  static fromBuilder(builder: WalletCreatedEventDataBuilder): WalletCreatedEventData | null {\n    const buffer = builder.build();\n    return WalletCreatedEventData.from_array(buffer);\n  }\n\n  get_wallet(): Pubkey {\n    const offset = 0;\n    const slice = this.buffer.subarray(offset, offset + 32);\n    return Pubkey.from_array(slice)!;\n  }\n\n  set_wallet(value: Pubkey): void {\n    /* Copy bytes from source struct to this field */\n    const sourceBytes = (value as any).buffer as Uint8Array;\n    const offset = 0;\n    this.buffer.set(sourceBytes, offset);\n  }\n\n  get wallet(): Pubkey {\n    return this.get_wallet();\n  }\n\n  set wallet(value: Pubkey) {\n    this.set_wallet(value);\n  }\n\n  get_authority(): Authority {\n    const offset = 32;\n    const slice = this.buffer.subarray(offset, offset + 65);\n    return Authority.from_array(slice)!;\n  }\n\n  set_authority(value: Authority): void {\n    /* Copy bytes from source struct to this field */\n    const sourceBytes = (value as any).buffer as Uint8Array;\n    const offset = 32;\n    this.buffer.set(sourceBytes, offset);\n  }\n\n  get authority(): Authority {\n    return this.get_authority();\n  }\n\n  set authority(value: Authority) {\n    this.set_authority(value);\n  }\n\n  private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n    return __tnEvalFootprint(__tn_ir_WalletCreatedEventData.root, { params: __tnParams });\n  }\n\n  private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n    return __tnValidateIrTree(__tn_ir_WalletCreatedEventData, buffer, __tnParams);\n  }\n\n  static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n    return this.__tnFootprintInternal(__tnParams);\n  }\n\n  static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n    return this.__tnValidateInternal(buffer, __tnParams);\n  }\n\n  static footprintIr(): bigint {\n    return this.__tnFootprintInternal(Object.create(null));\n  }\n\n  static footprint(): number {\n    const irResult = this.footprintIr();\n      const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n    if (__tnBigIntGreaterThan(irResult, maxSafe)) {\n      throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for WalletCreatedEventData');\n    }\n    return __tnBigIntToNumber(irResult, 'WalletCreatedEventData::footprint');\n  }\n\n  static validate(buffer: Uint8Array, _opts?: { params?: never }): { ok: boolean; code?: string; consumed?: number } {\n    if (buffer.length < 97) return { ok: false, code: \"tn.buffer_too_small\", consumed: 97 };\n    return { ok: true, consumed: 97 };\n  }\n\n  static from_array(buffer: Uint8Array): WalletCreatedEventData | null {\n    if (!buffer || buffer.length === undefined) {\n      return null;\n    }\n    const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    const validation = this.validate(buffer);\n    if (!validation.ok) {\n      return null;\n    }\n    return new WalletCreatedEventData(buffer);\n  }\n\n}\n\nexport class WalletCreatedEventDataBuilder {\n  private buffer: Uint8Array;\n  private view: DataView;\n\n  constructor() {\n    this.buffer = new Uint8Array(97);\n    this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n  }\n\n  set_wallet(value: Uint8Array): this {\n    if (value.length !== 32) throw new Error(\"wallet expects 32 bytes\");\n    this.buffer.set(value, 0);\n    return this;\n  }\n\n  set_authority(value: Uint8Array): this {\n    if (value.length !== 65) throw new Error(\"authority expects 65 bytes\");\n    this.buffer.set(value, 32);\n    return this;\n  }\n\n  build(): Uint8Array {\n    return this.buffer.slice();\n  }\n\n  buildInto(target: Uint8Array, offset = 0): Uint8Array {\n    if (target.length - offset < this.buffer.length) throw new Error(\"target buffer too small\");\n    target.set(this.buffer, offset);\n    return target;\n  }\n\n  finish(): WalletCreatedEventData {\n    const view = WalletCreatedEventData.from_array(this.buffer.slice());\n    if (!view) throw new Error(\"failed to build WalletCreatedEventData\");\n    return view;\n  }\n}\n\n__tnRegisterFootprint(\"WalletCreatedEventData\", (params) => WalletCreatedEventData.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"WalletCreatedEventData\", (buffer, params) => WalletCreatedEventData.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"WalletCreatedEventData\", (buffer) => { const result = WalletCreatedEventData.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n\n/* ----- TYPE DEFINITION FOR WalletTransferEventData ----- */\n\nconst __tn_ir_WalletTransferEventData = {\n  typeName: \"WalletTransferEventData\",\n  root: { op: \"const\", value: 72n }\n} as const;\n\nexport class WalletTransferEventData {\n  private view: DataView;\n\n  private constructor(private buffer: Uint8Array) {\n    this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n  }\n\n  static __tnCreateView(buffer: Uint8Array, opts?: { fieldContext?: Record<string, number | bigint> }): WalletTransferEventData {\n    if (!buffer || buffer.length === undefined) throw new Error(\"WalletTransferEventData.__tnCreateView requires a Uint8Array\");\n    return new WalletTransferEventData(new Uint8Array(buffer));\n  }\n\n  static builder(): WalletTransferEventDataBuilder {\n    return new WalletTransferEventDataBuilder();\n  }\n\n  static fromBuilder(builder: WalletTransferEventDataBuilder): WalletTransferEventData | null {\n    const buffer = builder.build();\n    return WalletTransferEventData.from_array(buffer);\n  }\n\n  get_wallet(): Pubkey {\n    const offset = 0;\n    const slice = this.buffer.subarray(offset, offset + 32);\n    return Pubkey.from_array(slice)!;\n  }\n\n  set_wallet(value: Pubkey): void {\n    /* Copy bytes from source struct to this field */\n    const sourceBytes = (value as any).buffer as Uint8Array;\n    const offset = 0;\n    this.buffer.set(sourceBytes, offset);\n  }\n\n  get wallet(): Pubkey {\n    return this.get_wallet();\n  }\n\n  set wallet(value: Pubkey) {\n    this.set_wallet(value);\n  }\n\n  get_to(): Pubkey {\n    const offset = 32;\n    const slice = this.buffer.subarray(offset, offset + 32);\n    return Pubkey.from_array(slice)!;\n  }\n\n  set_to(value: Pubkey): void {\n    /* Copy bytes from source struct to this field */\n    const sourceBytes = (value as any).buffer as Uint8Array;\n    const offset = 32;\n    this.buffer.set(sourceBytes, offset);\n  }\n\n  get to(): Pubkey {\n    return this.get_to();\n  }\n\n  set to(value: Pubkey) {\n    this.set_to(value);\n  }\n\n  get_amount(): bigint {\n    const offset = 64;\n    return this.view.getBigUint64(offset, true); /* little-endian */\n  }\n\n  set_amount(value: bigint): void {\n    const offset = 64;\n    this.view.setBigUint64(offset, value, true); /* little-endian */\n  }\n\n  get amount(): bigint {\n    return this.get_amount();\n  }\n\n  set amount(value: bigint) {\n    this.set_amount(value);\n  }\n\n  private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n    return __tnEvalFootprint(__tn_ir_WalletTransferEventData.root, { params: __tnParams });\n  }\n\n  private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n    return __tnValidateIrTree(__tn_ir_WalletTransferEventData, buffer, __tnParams);\n  }\n\n  static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n    return this.__tnFootprintInternal(__tnParams);\n  }\n\n  static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n    return this.__tnValidateInternal(buffer, __tnParams);\n  }\n\n  static footprintIr(): bigint {\n    return this.__tnFootprintInternal(Object.create(null));\n  }\n\n  static footprint(): number {\n    const irResult = this.footprintIr();\n      const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n    if (__tnBigIntGreaterThan(irResult, maxSafe)) {\n      throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for WalletTransferEventData');\n    }\n    return __tnBigIntToNumber(irResult, 'WalletTransferEventData::footprint');\n  }\n\n  static validate(buffer: Uint8Array, _opts?: { params?: never }): { ok: boolean; code?: string; consumed?: number } {\n    if (buffer.length < 72) return { ok: false, code: \"tn.buffer_too_small\", consumed: 72 };\n    return { ok: true, consumed: 72 };\n  }\n\n  static from_array(buffer: Uint8Array): WalletTransferEventData | null {\n    if (!buffer || buffer.length === undefined) {\n      return null;\n    }\n    const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    const validation = this.validate(buffer);\n    if (!validation.ok) {\n      return null;\n    }\n    return new WalletTransferEventData(buffer);\n  }\n\n}\n\nexport class WalletTransferEventDataBuilder {\n  private buffer: Uint8Array;\n  private view: DataView;\n\n  constructor() {\n    this.buffer = new Uint8Array(72);\n    this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n  }\n\n  set_wallet(value: Uint8Array): this {\n    if (value.length !== 32) throw new Error(\"wallet expects 32 bytes\");\n    this.buffer.set(value, 0);\n    return this;\n  }\n\n  set_to(value: Uint8Array): this {\n    if (value.length !== 32) throw new Error(\"to expects 32 bytes\");\n    this.buffer.set(value, 32);\n    return this;\n  }\n\n  set_amount(value: bigint): this {\n    const cast = __tnToBigInt(value);\n    this.view.setBigUint64(64, cast, true);\n    return this;\n  }\n\n  build(): Uint8Array {\n    return this.buffer.slice();\n  }\n\n  buildInto(target: Uint8Array, offset = 0): Uint8Array {\n    if (target.length - offset < this.buffer.length) throw new Error(\"target buffer too small\");\n    target.set(this.buffer, offset);\n    return target;\n  }\n\n  finish(): WalletTransferEventData {\n    const view = WalletTransferEventData.from_array(this.buffer.slice());\n    if (!view) throw new Error(\"failed to build WalletTransferEventData\");\n    return view;\n  }\n}\n\n__tnRegisterFootprint(\"WalletTransferEventData\", (params) => WalletTransferEventData.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"WalletTransferEventData\", (buffer, params) => WalletTransferEventData.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"WalletTransferEventData\", (buffer) => { const result = WalletTransferEventData.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n\n/* ----- TYPE DEFINITION FOR WalletValidatedEventData ----- */\n\nconst __tn_ir_WalletValidatedEventData = {\n  typeName: \"WalletValidatedEventData\",\n  root: { op: \"const\", value: 40n }\n} as const;\n\nexport class WalletValidatedEventData {\n  private view: DataView;\n\n  private constructor(private buffer: Uint8Array) {\n    this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n  }\n\n  static __tnCreateView(buffer: Uint8Array, opts?: { fieldContext?: Record<string, number | bigint> }): WalletValidatedEventData {\n    if (!buffer || buffer.length === undefined) throw new Error(\"WalletValidatedEventData.__tnCreateView requires a Uint8Array\");\n    return new WalletValidatedEventData(new Uint8Array(buffer));\n  }\n\n  static builder(): WalletValidatedEventDataBuilder {\n    return new WalletValidatedEventDataBuilder();\n  }\n\n  static fromBuilder(builder: WalletValidatedEventDataBuilder): WalletValidatedEventData | null {\n    const buffer = builder.build();\n    return WalletValidatedEventData.from_array(buffer);\n  }\n\n  get_wallet(): Pubkey {\n    const offset = 0;\n    const slice = this.buffer.subarray(offset, offset + 32);\n    return Pubkey.from_array(slice)!;\n  }\n\n  set_wallet(value: Pubkey): void {\n    /* Copy bytes from source struct to this field */\n    const sourceBytes = (value as any).buffer as Uint8Array;\n    const offset = 0;\n    this.buffer.set(sourceBytes, offset);\n  }\n\n  get wallet(): Pubkey {\n    return this.get_wallet();\n  }\n\n  set wallet(value: Pubkey) {\n    this.set_wallet(value);\n  }\n\n  get_new_nonce(): bigint {\n    const offset = 32;\n    return this.view.getBigUint64(offset, true); /* little-endian */\n  }\n\n  set_new_nonce(value: bigint): void {\n    const offset = 32;\n    this.view.setBigUint64(offset, value, true); /* little-endian */\n  }\n\n  get new_nonce(): bigint {\n    return this.get_new_nonce();\n  }\n\n  set new_nonce(value: bigint) {\n    this.set_new_nonce(value);\n  }\n\n  private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n    return __tnEvalFootprint(__tn_ir_WalletValidatedEventData.root, { params: __tnParams });\n  }\n\n  private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n    return __tnValidateIrTree(__tn_ir_WalletValidatedEventData, buffer, __tnParams);\n  }\n\n  static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n    return this.__tnFootprintInternal(__tnParams);\n  }\n\n  static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n    return this.__tnValidateInternal(buffer, __tnParams);\n  }\n\n  static footprintIr(): bigint {\n    return this.__tnFootprintInternal(Object.create(null));\n  }\n\n  static footprint(): number {\n    const irResult = this.footprintIr();\n      const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n    if (__tnBigIntGreaterThan(irResult, maxSafe)) {\n      throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for WalletValidatedEventData');\n    }\n    return __tnBigIntToNumber(irResult, 'WalletValidatedEventData::footprint');\n  }\n\n  static validate(buffer: Uint8Array, _opts?: { params?: never }): { ok: boolean; code?: string; consumed?: number } {\n    if (buffer.length < 40) return { ok: false, code: \"tn.buffer_too_small\", consumed: 40 };\n    return { ok: true, consumed: 40 };\n  }\n\n  static from_array(buffer: Uint8Array): WalletValidatedEventData | null {\n    if (!buffer || buffer.length === undefined) {\n      return null;\n    }\n    const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    const validation = this.validate(buffer);\n    if (!validation.ok) {\n      return null;\n    }\n    return new WalletValidatedEventData(buffer);\n  }\n\n}\n\nexport class WalletValidatedEventDataBuilder {\n  private buffer: Uint8Array;\n  private view: DataView;\n\n  constructor() {\n    this.buffer = new Uint8Array(40);\n    this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n  }\n\n  set_wallet(value: Uint8Array): this {\n    if (value.length !== 32) throw new Error(\"wallet expects 32 bytes\");\n    this.buffer.set(value, 0);\n    return this;\n  }\n\n  set_new_nonce(value: bigint): this {\n    const cast = __tnToBigInt(value);\n    this.view.setBigUint64(32, cast, true);\n    return this;\n  }\n\n  build(): Uint8Array {\n    return this.buffer.slice();\n  }\n\n  buildInto(target: Uint8Array, offset = 0): Uint8Array {\n    if (target.length - offset < this.buffer.length) throw new Error(\"target buffer too small\");\n    target.set(this.buffer, offset);\n    return target;\n  }\n\n  finish(): WalletValidatedEventData {\n    const view = WalletValidatedEventData.from_array(this.buffer.slice());\n    if (!view) throw new Error(\"failed to build WalletValidatedEventData\");\n    return view;\n  }\n}\n\n__tnRegisterFootprint(\"WalletValidatedEventData\", (params) => WalletValidatedEventData.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"WalletValidatedEventData\", (buffer, params) => WalletValidatedEventData.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"WalletValidatedEventData\", (buffer) => { const result = WalletValidatedEventData.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n\n/* ----- TYPE DEFINITION FOR AddAuthorityArgs ----- */\n\nconst __tn_ir_AddAuthorityArgs = {\n  typeName: \"AddAuthorityArgs\",\n  root: { op: \"const\", value: 75n }\n} as const;\n\nexport class AddAuthorityArgs {\n  private view: DataView;\n\n  private constructor(private buffer: Uint8Array) {\n    this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n  }\n\n  static __tnCreateView(buffer: Uint8Array, opts?: { fieldContext?: Record<string, number | bigint> }): AddAuthorityArgs {\n    if (!buffer || buffer.length === undefined) throw new Error(\"AddAuthorityArgs.__tnCreateView requires a Uint8Array\");\n    return new AddAuthorityArgs(new Uint8Array(buffer));\n  }\n\n  static builder(): AddAuthorityArgsBuilder {\n    return new AddAuthorityArgsBuilder();\n  }\n\n  static fromBuilder(builder: AddAuthorityArgsBuilder): AddAuthorityArgs | null {\n    const buffer = builder.build();\n    return AddAuthorityArgs.from_array(buffer);\n  }\n\n  get_wallet_account_idx(): number {\n    const offset = 0;\n    return this.view.getUint16(offset, true); /* little-endian */\n  }\n\n  set_wallet_account_idx(value: number): void {\n    const offset = 0;\n    this.view.setUint16(offset, value, true); /* little-endian */\n  }\n\n  get wallet_account_idx(): number {\n    return this.get_wallet_account_idx();\n  }\n\n  set wallet_account_idx(value: number) {\n    this.set_wallet_account_idx(value);\n  }\n\n  get_authority_record(): AuthorityRecord {\n    const offset = 2;\n    const slice = this.buffer.subarray(offset, offset + 73);\n    return AuthorityRecord.from_array(slice)!;\n  }\n\n  set_authority_record(value: AuthorityRecord): void {\n    /* Copy bytes from source struct to this field */\n    const sourceBytes = (value as any).buffer as Uint8Array;\n    const offset = 2;\n    this.buffer.set(sourceBytes, offset);\n  }\n\n  get authority_record(): AuthorityRecord {\n    return this.get_authority_record();\n  }\n\n  set authority_record(value: AuthorityRecord) {\n    this.set_authority_record(value);\n  }\n\n  private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n    return __tnEvalFootprint(__tn_ir_AddAuthorityArgs.root, { params: __tnParams });\n  }\n\n  private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n    return __tnValidateIrTree(__tn_ir_AddAuthorityArgs, buffer, __tnParams);\n  }\n\n  static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n    return this.__tnFootprintInternal(__tnParams);\n  }\n\n  static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n    return this.__tnValidateInternal(buffer, __tnParams);\n  }\n\n  static footprintIr(): bigint {\n    return this.__tnFootprintInternal(Object.create(null));\n  }\n\n  static footprint(): number {\n    const irResult = this.footprintIr();\n      const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n    if (__tnBigIntGreaterThan(irResult, maxSafe)) {\n      throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for AddAuthorityArgs');\n    }\n    return __tnBigIntToNumber(irResult, 'AddAuthorityArgs::footprint');\n  }\n\n  static validate(buffer: Uint8Array, _opts?: { params?: never }): { ok: boolean; code?: string; consumed?: number } {\n    if (buffer.length < 75) return { ok: false, code: \"tn.buffer_too_small\", consumed: 75 };\n    return { ok: true, consumed: 75 };\n  }\n\n  static from_array(buffer: Uint8Array): AddAuthorityArgs | null {\n    if (!buffer || buffer.length === undefined) {\n      return null;\n    }\n    const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    const validation = this.validate(buffer);\n    if (!validation.ok) {\n      return null;\n    }\n    return new AddAuthorityArgs(buffer);\n  }\n\n}\n\nexport class AddAuthorityArgsBuilder {\n  private buffer: Uint8Array;\n  private view: DataView;\n\n  constructor() {\n    this.buffer = new Uint8Array(75);\n    this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n  }\n\n  set_wallet_account_idx(value: number): this {\n    this.view.setUint16(0, value, true);\n    return this;\n  }\n\n  set_authority_record(value: Uint8Array): this {\n    if (value.length !== 73) throw new Error(\"authority_record expects 73 bytes\");\n    this.buffer.set(value, 2);\n    return this;\n  }\n\n  build(): Uint8Array {\n    return this.buffer.slice();\n  }\n\n  buildInto(target: Uint8Array, offset = 0): Uint8Array {\n    if (target.length - offset < this.buffer.length) throw new Error(\"target buffer too small\");\n    target.set(this.buffer, offset);\n    return target;\n  }\n\n  finish(): AddAuthorityArgs {\n    const view = AddAuthorityArgs.from_array(this.buffer.slice());\n    if (!view) throw new Error(\"failed to build AddAuthorityArgs\");\n    return view;\n  }\n}\n\n__tnRegisterFootprint(\"AddAuthorityArgs\", (params) => AddAuthorityArgs.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"AddAuthorityArgs\", (buffer, params) => AddAuthorityArgs.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"AddAuthorityArgs\", (buffer) => { const result = AddAuthorityArgs.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n\n/* ----- TYPE DEFINITION FOR CredentialLookup ----- */\n\nconst __tn_ir_CredentialLookup = {\n  typeName: \"CredentialLookup\",\n  root: { op: \"const\", value: 32n }\n} as const;\n\nexport class CredentialLookup {\n  private view: DataView;\n\n  private constructor(private buffer: Uint8Array) {\n    this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n  }\n\n  static __tnCreateView(buffer: Uint8Array, opts?: { fieldContext?: Record<string, number | bigint> }): CredentialLookup {\n    if (!buffer || buffer.length === undefined) throw new Error(\"CredentialLookup.__tnCreateView requires a Uint8Array\");\n    return new CredentialLookup(new Uint8Array(buffer));\n  }\n\n  static builder(): CredentialLookupBuilder {\n    return new CredentialLookupBuilder();\n  }\n\n  static fromBuilder(builder: CredentialLookupBuilder): CredentialLookup | null {\n    const buffer = builder.build();\n    return CredentialLookup.from_array(buffer);\n  }\n\n  get_wallet(): Pubkey {\n    const offset = 0;\n    const slice = this.buffer.subarray(offset, offset + 32);\n    return Pubkey.from_array(slice)!;\n  }\n\n  set_wallet(value: Pubkey): void {\n    /* Copy bytes from source struct to this field */\n    const sourceBytes = (value as any).buffer as Uint8Array;\n    const offset = 0;\n    this.buffer.set(sourceBytes, offset);\n  }\n\n  get wallet(): Pubkey {\n    return this.get_wallet();\n  }\n\n  set wallet(value: Pubkey) {\n    this.set_wallet(value);\n  }\n\n  private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n    return __tnEvalFootprint(__tn_ir_CredentialLookup.root, { params: __tnParams });\n  }\n\n  private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n    return __tnValidateIrTree(__tn_ir_CredentialLookup, buffer, __tnParams);\n  }\n\n  static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n    return this.__tnFootprintInternal(__tnParams);\n  }\n\n  static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n    return this.__tnValidateInternal(buffer, __tnParams);\n  }\n\n  static footprintIr(): bigint {\n    return this.__tnFootprintInternal(Object.create(null));\n  }\n\n  static footprint(): number {\n    const irResult = this.footprintIr();\n      const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n    if (__tnBigIntGreaterThan(irResult, maxSafe)) {\n      throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for CredentialLookup');\n    }\n    return __tnBigIntToNumber(irResult, 'CredentialLookup::footprint');\n  }\n\n  static validate(buffer: Uint8Array, _opts?: { params?: never }): { ok: boolean; code?: string; consumed?: number } {\n    if (buffer.length < 32) return { ok: false, code: \"tn.buffer_too_small\", consumed: 32 };\n    return { ok: true, consumed: 32 };\n  }\n\n  static from_array(buffer: Uint8Array): CredentialLookup | null {\n    if (!buffer || buffer.length === undefined) {\n      return null;\n    }\n    const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    const validation = this.validate(buffer);\n    if (!validation.ok) {\n      return null;\n    }\n    return new CredentialLookup(buffer);\n  }\n\n}\n\nexport class CredentialLookupBuilder {\n  private buffer: Uint8Array;\n  private view: DataView;\n\n  constructor() {\n    this.buffer = new Uint8Array(32);\n    this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n  }\n\n  set_wallet(value: Uint8Array): this {\n    if (value.length !== 32) throw new Error(\"wallet expects 32 bytes\");\n    this.buffer.set(value, 0);\n    return this;\n  }\n\n  build(): Uint8Array {\n    return this.buffer.slice();\n  }\n\n  buildInto(target: Uint8Array, offset = 0): Uint8Array {\n    if (target.length - offset < this.buffer.length) throw new Error(\"target buffer too small\");\n    target.set(this.buffer, offset);\n    return target;\n  }\n\n  finish(): CredentialLookup {\n    const view = CredentialLookup.from_array(this.buffer.slice());\n    if (!view) throw new Error(\"failed to build CredentialLookup\");\n    return view;\n  }\n}\n\n__tnRegisterFootprint(\"CredentialLookup\", (params) => CredentialLookup.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"CredentialLookup\", (buffer, params) => CredentialLookup.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"CredentialLookup\", (buffer) => { const result = CredentialLookup.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n\n/* ----- TYPE DEFINITION FOR CredentialRegisteredEventData ----- */\n\nconst __tn_ir_CredentialRegisteredEventData = {\n  typeName: \"CredentialRegisteredEventData\",\n  root: { op: \"const\", value: 64n }\n} as const;\n\nexport class CredentialRegisteredEventData {\n  private view: DataView;\n\n  private constructor(private buffer: Uint8Array) {\n    this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n  }\n\n  static __tnCreateView(buffer: Uint8Array, opts?: { fieldContext?: Record<string, number | bigint> }): CredentialRegisteredEventData {\n    if (!buffer || buffer.length === undefined) throw new Error(\"CredentialRegisteredEventData.__tnCreateView requires a Uint8Array\");\n    return new CredentialRegisteredEventData(new Uint8Array(buffer));\n  }\n\n  static builder(): CredentialRegisteredEventDataBuilder {\n    return new CredentialRegisteredEventDataBuilder();\n  }\n\n  static fromBuilder(builder: CredentialRegisteredEventDataBuilder): CredentialRegisteredEventData | null {\n    const buffer = builder.build();\n    return CredentialRegisteredEventData.from_array(buffer);\n  }\n\n  get_wallet(): Pubkey {\n    const offset = 0;\n    const slice = this.buffer.subarray(offset, offset + 32);\n    return Pubkey.from_array(slice)!;\n  }\n\n  set_wallet(value: Pubkey): void {\n    /* Copy bytes from source struct to this field */\n    const sourceBytes = (value as any).buffer as Uint8Array;\n    const offset = 0;\n    this.buffer.set(sourceBytes, offset);\n  }\n\n  get wallet(): Pubkey {\n    return this.get_wallet();\n  }\n\n  set wallet(value: Pubkey) {\n    this.set_wallet(value);\n  }\n\n  get_lookup(): Pubkey {\n    const offset = 32;\n    const slice = this.buffer.subarray(offset, offset + 32);\n    return Pubkey.from_array(slice)!;\n  }\n\n  set_lookup(value: Pubkey): void {\n    /* Copy bytes from source struct to this field */\n    const sourceBytes = (value as any).buffer as Uint8Array;\n    const offset = 32;\n    this.buffer.set(sourceBytes, offset);\n  }\n\n  get lookup(): Pubkey {\n    return this.get_lookup();\n  }\n\n  set lookup(value: Pubkey) {\n    this.set_lookup(value);\n  }\n\n  private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n    return __tnEvalFootprint(__tn_ir_CredentialRegisteredEventData.root, { params: __tnParams });\n  }\n\n  private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n    return __tnValidateIrTree(__tn_ir_CredentialRegisteredEventData, buffer, __tnParams);\n  }\n\n  static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n    return this.__tnFootprintInternal(__tnParams);\n  }\n\n  static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n    return this.__tnValidateInternal(buffer, __tnParams);\n  }\n\n  static footprintIr(): bigint {\n    return this.__tnFootprintInternal(Object.create(null));\n  }\n\n  static footprint(): number {\n    const irResult = this.footprintIr();\n      const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n    if (__tnBigIntGreaterThan(irResult, maxSafe)) {\n      throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for CredentialRegisteredEventData');\n    }\n    return __tnBigIntToNumber(irResult, 'CredentialRegisteredEventData::footprint');\n  }\n\n  static validate(buffer: Uint8Array, _opts?: { params?: never }): { ok: boolean; code?: string; consumed?: number } {\n    if (buffer.length < 64) return { ok: false, code: \"tn.buffer_too_small\", consumed: 64 };\n    return { ok: true, consumed: 64 };\n  }\n\n  static from_array(buffer: Uint8Array): CredentialRegisteredEventData | null {\n    if (!buffer || buffer.length === undefined) {\n      return null;\n    }\n    const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    const validation = this.validate(buffer);\n    if (!validation.ok) {\n      return null;\n    }\n    return new CredentialRegisteredEventData(buffer);\n  }\n\n}\n\nexport class CredentialRegisteredEventDataBuilder {\n  private buffer: Uint8Array;\n  private view: DataView;\n\n  constructor() {\n    this.buffer = new Uint8Array(64);\n    this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n  }\n\n  set_wallet(value: Uint8Array): this {\n    if (value.length !== 32) throw new Error(\"wallet expects 32 bytes\");\n    this.buffer.set(value, 0);\n    return this;\n  }\n\n  set_lookup(value: Uint8Array): this {\n    if (value.length !== 32) throw new Error(\"lookup expects 32 bytes\");\n    this.buffer.set(value, 32);\n    return this;\n  }\n\n  build(): Uint8Array {\n    return this.buffer.slice();\n  }\n\n  buildInto(target: Uint8Array, offset = 0): Uint8Array {\n    if (target.length - offset < this.buffer.length) throw new Error(\"target buffer too small\");\n    target.set(this.buffer, offset);\n    return target;\n  }\n\n  finish(): CredentialRegisteredEventData {\n    const view = CredentialRegisteredEventData.from_array(this.buffer.slice());\n    if (!view) throw new Error(\"failed to build CredentialRegisteredEventData\");\n    return view;\n  }\n}\n\n__tnRegisterFootprint(\"CredentialRegisteredEventData\", (params) => CredentialRegisteredEventData.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"CredentialRegisteredEventData\", (buffer, params) => CredentialRegisteredEventData.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"CredentialRegisteredEventData\", (buffer) => { const result = CredentialRegisteredEventData.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n\n/* ----- TYPE DEFINITION FOR PasskeyEvent ----- */\n\nconst __tn_ir_PasskeyEvent = {\n  typeName: \"PasskeyEvent\",\n  root: { op: \"align\", alignment: 1, node: { op: \"add\", left: { op: \"align\", alignment: 1, node: { op: \"const\", value: 1n } }, right: { op: \"align\", alignment: 1, node: { op: \"switch\", tag: \"PasskeyEvent::payload.event_type\", cases: [{ value: 0, node: { op: \"align\", alignment: 1, node: { op: \"const\", value: 97n } } }, { value: 1, node: { op: \"align\", alignment: 1, node: { op: \"const\", value: 40n } } }, { value: 2, node: { op: \"align\", alignment: 1, node: { op: \"const\", value: 72n } } }, { value: 3, node: { op: \"align\", alignment: 1, node: { op: \"const\", value: 64n } } }] } } } }\n} as const;\n\nexport class PasskeyEvent_payload_Inner {\n  private view: DataView;\n  private __tnFieldContext: Record<string, number | bigint> | null = null;\n  private constructor(private buffer: Uint8Array, private descriptor: __TnVariantDescriptor | null, fieldContext?: Record<string, number | bigint>) {\n    this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    this.__tnFieldContext = fieldContext ?? null;\n  }\n\n  static __tnCreate(payload: Uint8Array, descriptor: __TnVariantDescriptor | null, fieldContext?: Record<string, number | bigint>): PasskeyEvent_payload_Inner {\n    return new PasskeyEvent_payload_Inner(new Uint8Array(payload), descriptor, fieldContext);\n  }\n\n  bytes(): Uint8Array {\n    return new Uint8Array(this.buffer);\n  }\n\n  variant(): __TnVariantDescriptor | null {\n    return this.descriptor;\n  }\n\n  asWalletCreated(): WalletCreatedEventData | null {\n    if (!this.descriptor || this.descriptor.tag !== 0) return null;\n    return WalletCreatedEventData.__tnCreateView(new Uint8Array(this.buffer), { fieldContext: this.__tnFieldContext ?? undefined });\n  }\n\n  asWalletValidated(): WalletValidatedEventData | null {\n    if (!this.descriptor || this.descriptor.tag !== 1) return null;\n    return WalletValidatedEventData.__tnCreateView(new Uint8Array(this.buffer), { fieldContext: this.__tnFieldContext ?? undefined });\n  }\n\n  asWalletTransfer(): WalletTransferEventData | null {\n    if (!this.descriptor || this.descriptor.tag !== 2) return null;\n    return WalletTransferEventData.__tnCreateView(new Uint8Array(this.buffer), { fieldContext: this.__tnFieldContext ?? undefined });\n  }\n\n  asCredentialRegistered(): CredentialRegisteredEventData | null {\n    if (!this.descriptor || this.descriptor.tag !== 3) return null;\n    return CredentialRegisteredEventData.__tnCreateView(new Uint8Array(this.buffer), { fieldContext: this.__tnFieldContext ?? undefined });\n  }\n\n}\n\nexport class PasskeyEvent {\n  private view: DataView;\n  private static readonly __tnFieldOffset_payload = 1;\n  private __tnParams: PasskeyEvent.Params;\n\n  private constructor(private buffer: Uint8Array, params?: PasskeyEvent.Params) {\n    this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    if (params) {\n      this.__tnParams = params;\n    } else {\n      const derived = PasskeyEvent.__tnExtractParams(this.view, buffer);\n      if (!derived) {\n        throw new Error(\"PasskeyEvent: failed to derive dynamic parameters\");\n      }\n      this.__tnParams = derived.params;\n    }\n  }\n\n  static __tnCreateView(buffer: Uint8Array, opts?: { params?: PasskeyEvent.Params, fieldContext?: Record<string, number | bigint> }): PasskeyEvent {\n    if (!buffer || buffer.length === undefined) throw new Error(\"PasskeyEvent.__tnCreateView requires a Uint8Array\");\n    let params = opts?.params ?? null;\n    if (!params) {\n      const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n      const derived = PasskeyEvent.__tnExtractParams(view, buffer);\n      if (!derived) throw new Error(\"PasskeyEvent.__tnCreateView: failed to derive params\");\n      params = derived.params;\n    }\n    const instance = new PasskeyEvent(new Uint8Array(buffer), params);\n    return instance;\n  }\n\n  dynamicParams(): PasskeyEvent.Params {\n    return this.__tnParams;\n  }\n\n  static builder(): PasskeyEventBuilder {\n    return new PasskeyEventBuilder();\n  }\n\n  static fromBuilder(builder: PasskeyEventBuilder): PasskeyEvent | null {\n    const buffer = builder.build();\n    const params = builder.dynamicParams();\n    return PasskeyEvent.from_array(buffer, { params });\n  }\n\n  static readonly payloadVariantDescriptors = Object.freeze([\n    {\n      name: \"wallet_created\",\n      tag: 0,\n      payloadSize: 97,\n      payloadType: \"PasskeyEvent::payload::wallet_created\",\n      createPayloadBuilder: () => __tnMaybeCallBuilder(WalletCreatedEventData),\n    },\n    {\n      name: \"wallet_validated\",\n      tag: 1,\n      payloadSize: 40,\n      payloadType: \"PasskeyEvent::payload::wallet_validated\",\n      createPayloadBuilder: () => __tnMaybeCallBuilder(WalletValidatedEventData),\n    },\n    {\n      name: \"wallet_transfer\",\n      tag: 2,\n      payloadSize: 72,\n      payloadType: \"PasskeyEvent::payload::wallet_transfer\",\n      createPayloadBuilder: () => __tnMaybeCallBuilder(WalletTransferEventData),\n    },\n    {\n      name: \"credential_registered\",\n      tag: 3,\n      payloadSize: 64,\n      payloadType: \"PasskeyEvent::payload::credential_registered\",\n      createPayloadBuilder: () => __tnMaybeCallBuilder(CredentialRegisteredEventData),\n    },\n  ] as const);\n\n  private static __tnExtractParams(view: DataView, buffer: Uint8Array): { params: PasskeyEvent.Params; derived: Record<string, bigint> | null } | null {\n    if (buffer.length < 1) {\n      return null;\n    }\n    const __tnParam_payload_event_type = __tnToBigInt(view.getUint8(0));\n    const __tnExtractedParams = PasskeyEvent.Params.fromValues({\n      payload_event_type: __tnParam_payload_event_type,\n    });\n    return { params: __tnExtractedParams, derived: null };\n  }\n\n  get_event_type(): number {\n    const offset = 0;\n    return this.view.getUint8(offset);\n  }\n\n  set_event_type(value: number): void {\n    const offset = 0;\n    this.view.setUint8(offset, value);\n  }\n\n  get event_type(): number {\n    return this.get_event_type();\n  }\n\n  set event_type(value: number) {\n    this.set_event_type(value);\n  }\n\n  payloadVariant(): typeof PasskeyEvent.payloadVariantDescriptors[number] | null {\n    const tag = this.view.getUint8(0);\n    return PasskeyEvent.payloadVariantDescriptors.find((variant) => variant.tag === tag) ?? null;\n  }\n\n  payload(): PasskeyEvent_payload_Inner {\n    const descriptor = this.payloadVariant();\n    if (!descriptor) throw new Error(\"PasskeyEvent: unknown payload variant\");\n    const offset = PasskeyEvent.__tnFieldOffset_payload;\n    const remaining = this.buffer.length - offset;\n    const payloadLength = descriptor.payloadSize ?? remaining;\n    if (payloadLength < 0 || offset + payloadLength > this.buffer.length) throw new Error(\"PasskeyEvent: payload exceeds buffer bounds\");\n    const slice = this.buffer.subarray(offset, offset + payloadLength);\n    return PasskeyEvent_payload_Inner.__tnCreate(slice, descriptor, undefined);\n  }\n  private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n    return __tnEvalFootprint(__tn_ir_PasskeyEvent.root, { params: __tnParams });\n  }\n\n  private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n    return __tnValidateIrTree(__tn_ir_PasskeyEvent, buffer, __tnParams);\n  }\n\n  static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n    return this.__tnFootprintInternal(__tnParams);\n  }\n\n  static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n    return this.__tnValidateInternal(buffer, __tnParams);\n  }\n\n  static footprintIr(payload_event_type: number | bigint): bigint {\n    const params = PasskeyEvent.Params.fromValues({\n      payload_event_type: payload_event_type,\n    });\n    return this.footprintIrFromParams(params);\n  }\n\n  private static __tnPackParams(params: PasskeyEvent.Params): Record<string, bigint> {\n    const record: Record<string, bigint> = Object.create(null);\n    record[\"payload.event_type\"] = params.payload_event_type;\n    record[\"PasskeyEvent::payload.event_type\"] = params.payload_event_type;\n    return record;\n  }\n\n  static footprintIrFromParams(params: PasskeyEvent.Params): bigint {\n    const __tnParams = this.__tnPackParams(params);\n    return this.__tnFootprintInternal(__tnParams);\n  }\n\n  static footprintFromParams(params: PasskeyEvent.Params): number {\n    const irResult = this.footprintIrFromParams(params);\n    const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n    if (__tnBigIntGreaterThan(irResult, maxSafe)) throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for PasskeyEvent');\n    return __tnBigIntToNumber(irResult, 'PasskeyEvent::footprintFromParams');\n  }\n\n  static footprintFromValues(input: { payload_event_type: number | bigint }): number {\n    const params = PasskeyEvent.params(input);\n    return this.footprintFromParams(params);\n  }\n\n  static footprint(params: PasskeyEvent.Params): number {\n    return this.footprintFromParams(params);\n  }\n\n  static validate(buffer: Uint8Array, opts?: { params?: PasskeyEvent.Params }): { ok: boolean; code?: string; consumed?: number; params?: PasskeyEvent.Params } {\n    if (!buffer || buffer.length === undefined) {\n      return { ok: false, code: \"tn.invalid_buffer\" };\n    }\n    const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    let params = opts?.params ?? null;\n    if (!params) {\n      const extracted = this.__tnExtractParams(view, buffer);\n      if (!extracted) return { ok: false, code: \"tn.param_extraction_failed\" };\n      params = extracted.params;\n    }\n    const __tnParamsRec = this.__tnPackParams(params);\n    const irResult = this.__tnValidateInternal(buffer, __tnParamsRec);\n    if (!irResult.ok) {\n      return { ok: false, code: irResult.code, consumed: irResult.consumed ? __tnBigIntToNumber(irResult.consumed, 'PasskeyEvent::validate') : undefined, params };\n    }\n    const consumed = irResult.consumed ? __tnBigIntToNumber(irResult.consumed, 'PasskeyEvent::validate') : undefined;\n    return { ok: true, consumed, params };\n  }\n\n  static from_array(buffer: Uint8Array, opts?: { params?: PasskeyEvent.Params }): PasskeyEvent | null {\n    if (!buffer || buffer.length === undefined) {\n      return null;\n    }\n    const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    let params = opts?.params ?? null;\n    if (!params) {\n      const derived = this.__tnExtractParams(view, buffer);\n      if (!derived) return null;\n      params = derived.params;\n    }\n    const validation = this.validate(buffer, { params });\n    if (!validation.ok) {\n      return null;\n    }\n    const cached = validation.params ?? params;\n    const state = new PasskeyEvent(buffer, cached);\n    return state;\n  }\n\n\n}\n\nexport namespace PasskeyEvent {\n  export type Params = {\n    /** ABI path: payload.event_type */\n    readonly payload_event_type: bigint;\n  };\n\n  export const ParamKeys = Object.freeze({\n    payload_event_type: \"payload.event_type\",\n  } as const);\n\n  export const Params = {\n    fromValues(input: { payload_event_type: number | bigint }): Params {\n      return {\n        payload_event_type: __tnToBigInt(input.payload_event_type),\n      };\n    },\n    fromBuilder(source: { dynamicParams(): Params } | { params: Params } | Params): Params {\n      if ((source as { dynamicParams?: () => Params }).dynamicParams) {\n        return (source as { dynamicParams(): Params }).dynamicParams();\n      }\n      if ((source as { params?: Params }).params) {\n        return (source as { params: Params }).params;\n      }\n      return source as Params;\n    }\n  };\n\n  export function params(input: { payload_event_type: number | bigint }): Params {\n    return Params.fromValues(input);\n  }\n}\n\nexport class PasskeyEventBuilder {\n  private __tnPrefixBuffer: Uint8Array;\n  private __tnPrefixView: DataView;\n  private __tnField_event_type: number | null = null;\n  private __tnPayload_payload: { descriptor: typeof PasskeyEvent.payloadVariantDescriptors[number]; bytes: Uint8Array } | null = null;\n  private __tnCachedParams: PasskeyEvent.Params | null = null;\n  private __tnLastBuffer: Uint8Array | null = null;\n  private __tnLastParams: PasskeyEvent.Params | null = null;\n  private __tnVariantSelector_payload?: __TnVariantSelectorResult<PasskeyEventBuilder>;\n\n  constructor() {\n    this.__tnPrefixBuffer = new Uint8Array(1);\n    this.__tnPrefixView = new DataView(this.__tnPrefixBuffer.buffer, this.__tnPrefixBuffer.byteOffset, this.__tnPrefixBuffer.byteLength);\n  }\n\n  private __tnInvalidate(): void {\n    this.__tnCachedParams = null;\n    this.__tnLastBuffer = null;\n    this.__tnLastParams = null;\n  }\n\n  private __tnAssign_event_type(value: number): void {\n    this.__tnField_event_type = value;\n    this.__tnInvalidate();\n  }\n\n  set_event_type(value: number): this {\n    this.__tnAssign_event_type(value);\n    return this;\n  }\n\n  payload(): __TnVariantSelectorResult<PasskeyEventBuilder> {\n    if (!this.__tnVariantSelector_payload) {\n      this.__tnVariantSelector_payload = __tnCreateVariantSelector(this, PasskeyEvent.payloadVariantDescriptors, (descriptor, payload) => {\n        this.__tnPayload_payload = { descriptor, bytes: new Uint8Array(payload) };\n        this.__tnAssign_event_type(descriptor.tag);\n      });\n    }\n    return this.__tnVariantSelector_payload!;\n  }\n\n  build(): Uint8Array {\n    const params = this.__tnComputeParams();\n    if (this.__tnField_event_type === null) throw new Error(\"PasskeyEventBuilder: field 'event_type' must be set before build\");\n    if (!this.__tnPayload_payload) throw new Error(\"PasskeyEventBuilder: payload variant not selected\");\n    const payloadLength = this.__tnPayload_payload.bytes.length;\n    const requiredSize = 1 + payloadLength;\n    const footprintSize = PasskeyEvent.footprintFromParams(params);\n    const size = Math.max(requiredSize, footprintSize);\n    const buffer = new Uint8Array(size);\n    this.__tnWriteInto(buffer);\n    this.__tnValidateOrThrow(buffer, params);\n    return buffer;\n  }\n\n  buildInto(target: Uint8Array, offset = 0): Uint8Array {\n    const params = this.__tnComputeParams();\n    if (this.__tnField_event_type === null) throw new Error(\"PasskeyEventBuilder: field 'event_type' must be set before build\");\n    if (!this.__tnPayload_payload) throw new Error(\"PasskeyEventBuilder: payload variant not selected\");\n    const payloadLength = this.__tnPayload_payload.bytes.length;\n    const requiredSize = 1 + payloadLength;\n    const footprintSize = PasskeyEvent.footprintFromParams(params);\n    const size = Math.max(requiredSize, footprintSize);\n    if (target.length - offset < size) throw new Error(\"PasskeyEventBuilder: target buffer too small\");\n    const slice = target.subarray(offset, offset + size);\n    this.__tnWriteInto(slice);\n    this.__tnValidateOrThrow(slice, params);\n    return target;\n  }\n\n  finish(): PasskeyEvent {\n    const buffer = this.build();\n    const params = this.__tnLastParams ?? this.__tnComputeParams();\n    const view = PasskeyEvent.from_array(buffer, { params });\n    if (!view) throw new Error(\"PasskeyEventBuilder: failed to finalize view\");\n    return view;\n  }\n\n  finishView(): PasskeyEvent {\n    return this.finish();\n  }\n\n  dynamicParams(): PasskeyEvent.Params {\n    return this.__tnComputeParams();\n  }\n\n  private __tnComputeParams(): PasskeyEvent.Params {\n    if (this.__tnCachedParams) return this.__tnCachedParams;\n    const params = PasskeyEvent.Params.fromValues({\n      payload_event_type: (() => { if (this.__tnField_event_type === null) throw new Error(\"PasskeyEventBuilder: missing enum tag\"); return __tnToBigInt(this.__tnField_event_type); })(),\n    });\n    this.__tnCachedParams = params;\n    return params;\n  }\n\n  private __tnWriteInto(target: Uint8Array): void {\n    if (this.__tnField_event_type === null) throw new Error(\"PasskeyEventBuilder: field 'event_type' must be set before build\");\n    if (!this.__tnPayload_payload) throw new Error(\"PasskeyEventBuilder: payload variant not selected\");\n    const view = new DataView(target.buffer, target.byteOffset, target.byteLength);\n    target.set(this.__tnPrefixBuffer, 0);\n    view.setUint8(0, this.__tnField_event_type);\n    target.set(this.__tnPayload_payload.bytes, 1);\n  }\n\n  private __tnValidateOrThrow(buffer: Uint8Array, params: PasskeyEvent.Params): void {\n    const result = PasskeyEvent.validate(buffer, { params });\n    if (!result.ok) {\n      throw new Error(`${ PasskeyEvent }Builder: builder produced invalid buffer (code=${result.code ?? \"unknown\"})`);\n    }\n    this.__tnLastParams = result.params ?? params;\n    this.__tnLastBuffer = buffer;\n  }\n}\n\n__tnRegisterFootprint(\"PasskeyEvent\", (params) => PasskeyEvent.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"PasskeyEvent\", (buffer, params) => PasskeyEvent.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"PasskeyEvent\", (buffer) => { const result = PasskeyEvent.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n\n/* ----- TYPE DEFINITION FOR CreateArgs ----- */\n\nconst __tn_ir_CreateArgs = {\n  typeName: \"CreateArgs\",\n  root: { op: \"align\", alignment: 1, node: { op: \"add\", left: { op: \"add\", left: { op: \"add\", left: { op: \"align\", alignment: 2, node: { op: \"const\", value: 2n } }, right: { op: \"align\", alignment: 1, node: { op: \"const\", value: 73n } } }, right: { op: \"align\", alignment: 1, node: { op: \"const\", value: 32n } } }, right: { op: \"align\", alignment: 1, node: { op: \"call\", typeName: \"StateProof\", args: [{ name: \"proof_body.hdr.type_slot\", source: \"proof_body.hdr.type_slot\" }, { name: \"proof_body.payload_size\", source: \"proof_body.payload_size\" }] } } } }\n} as const;\n\nexport class CreateArgs {\n  private view: DataView;\n  private __tnParams: CreateArgs.Params;\n\n  private constructor(private buffer: Uint8Array, params?: CreateArgs.Params) {\n    this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    if (params) {\n      this.__tnParams = params;\n    } else {\n      const derived = CreateArgs.__tnExtractParams(this.view, buffer);\n      if (!derived) {\n        throw new Error(\"CreateArgs: failed to derive dynamic parameters\");\n      }\n      this.__tnParams = derived.params;\n    }\n  }\n\n  static __tnCreateView(buffer: Uint8Array, opts?: { params?: CreateArgs.Params, fieldContext?: Record<string, number | bigint> }): CreateArgs {\n    if (!buffer || buffer.length === undefined) throw new Error(\"CreateArgs.__tnCreateView requires a Uint8Array\");\n    let params = opts?.params ?? null;\n    if (!params) {\n      const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n      const derived = CreateArgs.__tnExtractParams(view, buffer);\n      if (!derived) throw new Error(\"CreateArgs.__tnCreateView: failed to derive params\");\n      params = derived.params;\n    }\n    const instance = new CreateArgs(new Uint8Array(buffer), params);\n    return instance;\n  }\n\n  dynamicParams(): CreateArgs.Params {\n    return this.__tnParams;\n  }\n\n  static builder(): CreateArgsBuilder {\n    return new CreateArgsBuilder();\n  }\n\n  static fromBuilder(builder: CreateArgsBuilder): CreateArgs | null {\n    const buffer = builder.build();\n    const params = builder.dynamicParams();\n    return CreateArgs.from_array(buffer, { params });\n  }\n\n  static __tnComputeSequentialLayout(view: DataView, buffer: Uint8Array): { params: Record<string, bigint> | null; offsets: Record<string, number> | null; derived: Record<string, bigint> | null } | null {\n    const __tnLength = buffer.length;\n    let __tnParamSeq_proof_body_hdr_type_slot: bigint | null = null;\n    let __tnParamSeq_proof_body_payload_size: bigint | null = null;\n    let __tnFieldValue_wallet_account_idx: number | null = null;\n    let __tnCursorMutable = 0;\n    if (__tnCursorMutable + 2 > __tnLength) return null;\n    const __tnRead_wallet_account_idx = view.getUint16(__tnCursorMutable, true);\n    __tnFieldValue_wallet_account_idx = __tnRead_wallet_account_idx;\n    __tnCursorMutable += 2;\n    if (__tnCursorMutable + 73 > __tnLength) return null;\n    __tnCursorMutable += 73;\n    if (__tnCursorMutable + 32 > __tnLength) return null;\n    __tnCursorMutable += 32;\n    const __tnTyperefResult_state_proof = __tnInvokeDynamicValidate(\"StateProof\", buffer.subarray(__tnCursorMutable));\n    if (!__tnTyperefResult_state_proof.ok || __tnTyperefResult_state_proof.consumed === undefined) return null;\n    const __tnTyperefParams_state_proof = __tnTyperefResult_state_proof.params ?? null;\n    if (!__tnTyperefParams_state_proof || __tnTyperefParams_state_proof[\"proof_body_hdr_type_slot\"] === undefined) return null;\n    __tnParamSeq_proof_body_hdr_type_slot = __tnTyperefParams_state_proof[\"proof_body_hdr_type_slot\"];\n    if (!__tnTyperefParams_state_proof || __tnTyperefParams_state_proof[\"proof_body_payload_size\"] === undefined) return null;\n    __tnParamSeq_proof_body_payload_size = __tnTyperefParams_state_proof[\"proof_body_payload_size\"];\n    __tnCursorMutable += __tnBigIntToNumber(__tnTyperefResult_state_proof.consumed, \"CreateArgs::state_proof\");\n    const params: Record<string, bigint> = Object.create(null);\n    if (__tnParamSeq_proof_body_hdr_type_slot === null) return null;\n    params[\"proof_body_hdr_type_slot\"] = __tnParamSeq_proof_body_hdr_type_slot as bigint;\n    if (__tnParamSeq_proof_body_payload_size === null) return null;\n    params[\"proof_body_payload_size\"] = __tnParamSeq_proof_body_payload_size as bigint;\n    return { params, offsets: null, derived: null };\n  }\n\n  private static __tnExtractParams(view: DataView, buffer: Uint8Array): { params: CreateArgs.Params; derived: Record<string, bigint> | null } | null {\n    const __tnLayout = CreateArgs.__tnComputeSequentialLayout(view, buffer);\n    if (!__tnLayout || !__tnLayout.params) return null;\n    const __tnSeqParams = __tnLayout.params;\n    const __tnParamSeq_proof_body_hdr_type_slot = __tnSeqParams[\"proof_body_hdr_type_slot\"];\n    if (__tnParamSeq_proof_body_hdr_type_slot === undefined) return null;\n    const __tnParamSeq_proof_body_payload_size = __tnSeqParams[\"proof_body_payload_size\"];\n    if (__tnParamSeq_proof_body_payload_size === undefined) return null;\n    const __tnExtractedParams = CreateArgs.Params.fromValues({\n      proof_body_hdr_type_slot: __tnParamSeq_proof_body_hdr_type_slot as bigint,\n      proof_body_payload_size: __tnParamSeq_proof_body_payload_size as bigint,\n    });\n    return { params: __tnExtractedParams, derived: null };\n  }\n\n  get_wallet_account_idx(): number {\n    const offset = 0;\n    return this.view.getUint16(offset, true); /* little-endian */\n  }\n\n  set_wallet_account_idx(value: number): void {\n    const offset = 0;\n    this.view.setUint16(offset, value, true); /* little-endian */\n  }\n\n  get wallet_account_idx(): number {\n    return this.get_wallet_account_idx();\n  }\n\n  set wallet_account_idx(value: number) {\n    this.set_wallet_account_idx(value);\n  }\n\n  get_authority_record(): AuthorityRecord {\n    const offset = 2;\n    const slice = this.buffer.subarray(offset, offset + 73);\n    return AuthorityRecord.from_array(slice)!;\n  }\n\n  set_authority_record(value: AuthorityRecord): void {\n    /* Copy bytes from source struct to this field */\n    const sourceBytes = (value as any).buffer as Uint8Array;\n    const offset = 2;\n    this.buffer.set(sourceBytes, offset);\n  }\n\n  get authority_record(): AuthorityRecord {\n    return this.get_authority_record();\n  }\n\n  set authority_record(value: AuthorityRecord) {\n    this.set_authority_record(value);\n  }\n\n  get_seed(): Seed32 {\n    const offset = 75;\n    const slice = this.buffer.subarray(offset, offset + 32);\n    return Seed32.from_array(slice)!;\n  }\n\n  set_seed(value: Seed32): void {\n    /* Copy bytes from source struct to this field */\n    const sourceBytes = (value as any).buffer as Uint8Array;\n    const offset = 75;\n    this.buffer.set(sourceBytes, offset);\n  }\n\n  get seed(): Seed32 {\n    return this.get_seed();\n  }\n\n  set seed(value: Seed32) {\n    this.set_seed(value);\n  }\n\n  get_state_proof(): StateProof {\n    const offset = 107;\n    const tail = this.buffer.subarray(offset);\n    const validation = StateProof.validate(tail);\n    if (!validation.ok || validation.consumed === undefined) {\n      throw new Error(\"CreateArgs: failed to read field 'state_proof' (invalid nested payload)\");\n    }\n    const length = validation.consumed;\n    const slice = tail.subarray(0, length);\n    const opts = validation.params ? { params: validation.params } : undefined;\n    return StateProof.from_array(slice, opts)!;\n  }\n\n  set_state_proof(value: StateProof): void {\n    /* Copy bytes from source struct to this field */\n    const sourceBytes = (value as any).buffer as Uint8Array;\n    const offset = 107;\n    this.buffer.set(sourceBytes, offset);\n  }\n\n  get state_proof(): StateProof {\n    return this.get_state_proof();\n  }\n\n  set state_proof(value: StateProof) {\n    this.set_state_proof(value);\n  }\n  private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n    return __tnEvalFootprint(__tn_ir_CreateArgs.root, { params: __tnParams });\n  }\n\n  private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n    return __tnValidateIrTree(__tn_ir_CreateArgs, buffer, __tnParams);\n  }\n\n  static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n    return this.__tnFootprintInternal(__tnParams);\n  }\n\n  static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n    return this.__tnValidateInternal(buffer, __tnParams);\n  }\n\n  static footprintIr(proof_body_hdr_type_slot: number | bigint, proof_body_payload_size: number | bigint): bigint {\n    const params = CreateArgs.Params.fromValues({\n      proof_body_hdr_type_slot: proof_body_hdr_type_slot,\n      proof_body_payload_size: proof_body_payload_size,\n    });\n    return this.footprintIrFromParams(params);\n  }\n\n  private static __tnPackParams(params: CreateArgs.Params): Record<string, bigint> {\n    const record: Record<string, bigint> = Object.create(null);\n    record[\"proof_body.hdr.type_slot\"] = params.proof_body_hdr_type_slot;\n    record[\"proof_body.payload_size\"] = params.proof_body_payload_size;\n    return record;\n  }\n\n  static footprintIrFromParams(params: CreateArgs.Params): bigint {\n    const __tnParams = this.__tnPackParams(params);\n    return this.__tnFootprintInternal(__tnParams);\n  }\n\n  static footprintFromParams(params: CreateArgs.Params): number {\n    const irResult = this.footprintIrFromParams(params);\n    const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n    if (__tnBigIntGreaterThan(irResult, maxSafe)) throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for CreateArgs');\n    return __tnBigIntToNumber(irResult, 'CreateArgs::footprintFromParams');\n  }\n\n  static footprintFromValues(input: { proof_body_hdr_type_slot: number | bigint, proof_body_payload_size: number | bigint }): number {\n    const params = CreateArgs.params(input);\n    return this.footprintFromParams(params);\n  }\n\n  static footprint(params: CreateArgs.Params): number {\n    return this.footprintFromParams(params);\n  }\n\n  static validate(buffer: Uint8Array, opts?: { params?: CreateArgs.Params }): { ok: boolean; code?: string; consumed?: number; params?: CreateArgs.Params } {\n    if (!buffer || buffer.length === undefined) {\n      return { ok: false, code: \"tn.invalid_buffer\" };\n    }\n    const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    let params = opts?.params ?? null;\n    if (!params) {\n      return { ok: false, code: \"tn.param_extraction_failed\" };\n    }\n    const __tnParamsRec = this.__tnPackParams(params);\n    const irResult = this.__tnValidateInternal(buffer, __tnParamsRec);\n    if (!irResult.ok) {\n      return { ok: false, code: irResult.code, consumed: irResult.consumed ? __tnBigIntToNumber(irResult.consumed, 'CreateArgs::validate') : undefined, params };\n    }\n    const consumed = irResult.consumed ? __tnBigIntToNumber(irResult.consumed, 'CreateArgs::validate') : undefined;\n    return { ok: true, consumed, params };\n  }\n\n  static from_array(buffer: Uint8Array, opts?: { params?: CreateArgs.Params }): CreateArgs | null {\n    if (!buffer || buffer.length === undefined) {\n      return null;\n    }\n    const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    let params = opts?.params ?? null;\n    if (!params) {\n      __tnLogWarn('CreateArgs::from_array requires params when IR extraction is unavailable');\n      return null;\n    }\n    const validation = this.validate(buffer, { params });\n    if (!validation.ok) {\n      return null;\n    }\n    const cached = validation.params ?? params;\n    const state = new CreateArgs(buffer, cached);\n    return state;\n  }\n\n\n}\n\nexport namespace CreateArgs {\n  export type Params = {\n    /** ABI path: proof_body.hdr.type_slot */\n    readonly proof_body_hdr_type_slot: bigint;\n    /** ABI path: proof_body.payload_size */\n    readonly proof_body_payload_size: bigint;\n  };\n\n  export const ParamKeys = Object.freeze({\n    proof_body_hdr_type_slot: \"proof_body.hdr.type_slot\",\n    proof_body_payload_size: \"proof_body.payload_size\",\n  } as const);\n\n  export const Params = {\n    fromValues(input: { proof_body_hdr_type_slot: number | bigint, proof_body_payload_size: number | bigint }): Params {\n      return {\n        proof_body_hdr_type_slot: __tnToBigInt(input.proof_body_hdr_type_slot),\n        proof_body_payload_size: __tnToBigInt(input.proof_body_payload_size),\n      };\n    },\n    fromBuilder(source: { dynamicParams(): Params } | { params: Params } | Params): Params {\n      if ((source as { dynamicParams?: () => Params }).dynamicParams) {\n        return (source as { dynamicParams(): Params }).dynamicParams();\n      }\n      if ((source as { params?: Params }).params) {\n        return (source as { params: Params }).params;\n      }\n      return source as Params;\n    }\n  };\n\n  export function params(input: { proof_body_hdr_type_slot: number | bigint, proof_body_payload_size: number | bigint }): Params {\n    return Params.fromValues(input);\n  }\n}\n\nexport class CreateArgsBuilder {\n  private buffer: Uint8Array;\n  private view: DataView;\n  private __tnCachedParams: CreateArgs.Params | null = null;\n  private __tnLastBuffer: Uint8Array | null = null;\n  private __tnLastParams: CreateArgs.Params | null = null;\n  private __tnTail_state_proof: Uint8Array | null = null;\n  private __tnTailParams_state_proof: Record<string, bigint> | null = null;\n\n  constructor() {\n    this.buffer = new Uint8Array(107);\n    this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n  }\n\n  private __tnInvalidate(): void {\n    this.__tnCachedParams = null;\n    this.__tnLastBuffer = null;\n    this.__tnLastParams = null;\n  }\n\n  set_wallet_account_idx(value: number): this {\n    this.view.setUint16(0, value, true);\n    this.__tnInvalidate();\n    return this;\n  }\n\n  set_authority_record(value: Uint8Array): this {\n    if (value.length !== 73) throw new Error(\"authority_record expects 73 bytes\");\n    this.buffer.set(value, 2);\n    this.__tnInvalidate();\n    return this;\n  }\n\n  set_seed(value: Uint8Array): this {\n    if (value.length !== 32) throw new Error(\"seed expects 32 bytes\");\n    this.buffer.set(value, 75);\n    this.__tnInvalidate();\n    return this;\n  }\n\n  set_state_proof(value: StateProof | __TnStructFieldInput): this {\n    const bytes = __tnResolveStructFieldInput(value as __TnStructFieldInput, \"CreateArgsBuilder::state_proof\");\n    const validation = __tnInvokeDynamicValidate(\"StateProof\", bytes);\n    if (!validation.ok || validation.consumed === undefined) throw new Error(\"CreateArgsBuilder: field 'state_proof' failed validation\");\n    if (__tnBigIntToNumber(validation.consumed, \"CreateArgsBuilder::state_proof\") !== bytes.length) throw new Error(\"CreateArgsBuilder: field 'state_proof' validation did not consume the full buffer\");\n    this.__tnTail_state_proof = bytes;\n    this.__tnTailParams_state_proof = validation.params ?? null;\n    this.__tnInvalidate();\n    return this;\n  }\n\n  build(): Uint8Array {\n    const params = this.__tnComputeParams();\n    const size = CreateArgs.footprintFromParams(params);\n    const buffer = new Uint8Array(size);\n    this.__tnWriteInto(buffer);\n    this.__tnValidateOrThrow(buffer, params);\n    return buffer;\n  }\n\n  buildInto(target: Uint8Array, offset = 0): Uint8Array {\n    const params = this.__tnComputeParams();\n    const size = CreateArgs.footprintFromParams(params);\n    if (target.length - offset < size) throw new Error(\"CreateArgsBuilder: target buffer too small\");\n    const slice = target.subarray(offset, offset + size);\n    this.__tnWriteInto(slice);\n    this.__tnValidateOrThrow(slice, params);\n    return target;\n  }\n\n  finish(): CreateArgs {\n    const buffer = this.build();\n    const params = this.__tnLastParams ?? this.__tnComputeParams();\n    const view = CreateArgs.from_array(buffer, { params });\n    if (!view) throw new Error(\"CreateArgsBuilder: failed to finalize view\");\n    return view;\n  }\n\n  finishView(): CreateArgs {\n    return this.finish();\n  }\n\n  dynamicParams(): CreateArgs.Params {\n    return this.__tnComputeParams();\n  }\n\n  private __tnComputeParams(): CreateArgs.Params {\n    if (this.__tnCachedParams) return this.__tnCachedParams;\n    const params = CreateArgs.Params.fromValues({\n      proof_body_hdr_type_slot: (() => { const params = this.__tnTailParams_state_proof; if (!params || params[\"proof_body_hdr_type_slot\"] === undefined) throw new Error(\"CreateArgsBuilder: field 'state_proof' must be written before computing params\"); return params[\"proof_body_hdr_type_slot\"]; })(),\n      proof_body_payload_size: (() => { const params = this.__tnTailParams_state_proof; if (!params || params[\"proof_body_payload_size\"] === undefined) throw new Error(\"CreateArgsBuilder: field 'state_proof' must be written before computing params\"); return params[\"proof_body_payload_size\"]; })(),\n    });\n    this.__tnCachedParams = params;\n    return params;\n  }\n\n  private __tnWriteInto(target: Uint8Array): void {\n    target.set(this.buffer, 0);\n    let cursor = this.buffer.length;\n    const __tnLocal_state_proof_bytes = this.__tnTail_state_proof;\n    if (!__tnLocal_state_proof_bytes) throw new Error(\"CreateArgsBuilder: field 'state_proof' must be written before build\");\n    target.set(__tnLocal_state_proof_bytes, cursor);\n    cursor += __tnLocal_state_proof_bytes.length;\n  }\n\n  private __tnValidateOrThrow(buffer: Uint8Array, params: CreateArgs.Params): void {\n    const result = CreateArgs.validate(buffer, { params });\n    if (!result.ok) {\n      throw new Error(`${ CreateArgs }Builder: builder produced invalid buffer (code=${result.code ?? \"unknown\"})`);\n    }\n    this.__tnLastParams = result.params ?? params;\n    this.__tnLastBuffer = buffer;\n  }\n}\n\n__tnRegisterFootprint(\"CreateArgs\", (params) => CreateArgs.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"CreateArgs\", (buffer, params) => CreateArgs.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"CreateArgs\", (buffer) => { const result = CreateArgs.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n\n/* ----- TYPE DEFINITION FOR RegisterCredentialArgs ----- */\n\nconst __tn_ir_RegisterCredentialArgs = {\n  typeName: \"RegisterCredentialArgs\",\n  root: { op: \"align\", alignment: 1, node: { op: \"add\", left: { op: \"add\", left: { op: \"add\", left: { op: \"align\", alignment: 2, node: { op: \"const\", value: 2n } }, right: { op: \"align\", alignment: 2, node: { op: \"const\", value: 2n } } }, right: { op: \"align\", alignment: 1, node: { op: \"const\", value: 32n } } }, right: { op: \"align\", alignment: 1, node: { op: \"call\", typeName: \"StateProof\", args: [{ name: \"proof_body.hdr.type_slot\", source: \"proof_body.hdr.type_slot\" }, { name: \"proof_body.payload_size\", source: \"proof_body.payload_size\" }] } } } }\n} as const;\n\nexport class RegisterCredentialArgs {\n  private view: DataView;\n  private __tnParams: RegisterCredentialArgs.Params;\n\n  private constructor(private buffer: Uint8Array, params?: RegisterCredentialArgs.Params) {\n    this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    if (params) {\n      this.__tnParams = params;\n    } else {\n      const derived = RegisterCredentialArgs.__tnExtractParams(this.view, buffer);\n      if (!derived) {\n        throw new Error(\"RegisterCredentialArgs: failed to derive dynamic parameters\");\n      }\n      this.__tnParams = derived.params;\n    }\n  }\n\n  static __tnCreateView(buffer: Uint8Array, opts?: { params?: RegisterCredentialArgs.Params, fieldContext?: Record<string, number | bigint> }): RegisterCredentialArgs {\n    if (!buffer || buffer.length === undefined) throw new Error(\"RegisterCredentialArgs.__tnCreateView requires a Uint8Array\");\n    let params = opts?.params ?? null;\n    if (!params) {\n      const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n      const derived = RegisterCredentialArgs.__tnExtractParams(view, buffer);\n      if (!derived) throw new Error(\"RegisterCredentialArgs.__tnCreateView: failed to derive params\");\n      params = derived.params;\n    }\n    const instance = new RegisterCredentialArgs(new Uint8Array(buffer), params);\n    return instance;\n  }\n\n  dynamicParams(): RegisterCredentialArgs.Params {\n    return this.__tnParams;\n  }\n\n  static builder(): RegisterCredentialArgsBuilder {\n    return new RegisterCredentialArgsBuilder();\n  }\n\n  static fromBuilder(builder: RegisterCredentialArgsBuilder): RegisterCredentialArgs | null {\n    const buffer = builder.build();\n    const params = builder.dynamicParams();\n    return RegisterCredentialArgs.from_array(buffer, { params });\n  }\n\n  static __tnComputeSequentialLayout(view: DataView, buffer: Uint8Array): { params: Record<string, bigint> | null; offsets: Record<string, number> | null; derived: Record<string, bigint> | null } | null {\n    const __tnLength = buffer.length;\n    let __tnParamSeq_proof_body_hdr_type_slot: bigint | null = null;\n    let __tnParamSeq_proof_body_payload_size: bigint | null = null;\n    let __tnFieldValue_wallet_account_idx: number | null = null;\n    let __tnFieldValue_lookup_account_idx: number | null = null;\n    let __tnCursorMutable = 0;\n    if (__tnCursorMutable + 2 > __tnLength) return null;\n    const __tnRead_wallet_account_idx = view.getUint16(__tnCursorMutable, true);\n    __tnFieldValue_wallet_account_idx = __tnRead_wallet_account_idx;\n    __tnCursorMutable += 2;\n    if (__tnCursorMutable + 2 > __tnLength) return null;\n    const __tnRead_lookup_account_idx = view.getUint16(__tnCursorMutable, true);\n    __tnFieldValue_lookup_account_idx = __tnRead_lookup_account_idx;\n    __tnCursorMutable += 2;\n    if (__tnCursorMutable + 32 > __tnLength) return null;\n    __tnCursorMutable += 32;\n    const __tnTyperefResult_state_proof = __tnInvokeDynamicValidate(\"StateProof\", buffer.subarray(__tnCursorMutable));\n    if (!__tnTyperefResult_state_proof.ok || __tnTyperefResult_state_proof.consumed === undefined) return null;\n    const __tnTyperefParams_state_proof = __tnTyperefResult_state_proof.params ?? null;\n    if (!__tnTyperefParams_state_proof || __tnTyperefParams_state_proof[\"proof_body_hdr_type_slot\"] === undefined) return null;\n    __tnParamSeq_proof_body_hdr_type_slot = __tnTyperefParams_state_proof[\"proof_body_hdr_type_slot\"];\n    if (!__tnTyperefParams_state_proof || __tnTyperefParams_state_proof[\"proof_body_payload_size\"] === undefined) return null;\n    __tnParamSeq_proof_body_payload_size = __tnTyperefParams_state_proof[\"proof_body_payload_size\"];\n    __tnCursorMutable += __tnBigIntToNumber(__tnTyperefResult_state_proof.consumed, \"RegisterCredentialArgs::state_proof\");\n    const params: Record<string, bigint> = Object.create(null);\n    if (__tnParamSeq_proof_body_hdr_type_slot === null) return null;\n    params[\"proof_body_hdr_type_slot\"] = __tnParamSeq_proof_body_hdr_type_slot as bigint;\n    if (__tnParamSeq_proof_body_payload_size === null) return null;\n    params[\"proof_body_payload_size\"] = __tnParamSeq_proof_body_payload_size as bigint;\n    return { params, offsets: null, derived: null };\n  }\n\n  private static __tnExtractParams(view: DataView, buffer: Uint8Array): { params: RegisterCredentialArgs.Params; derived: Record<string, bigint> | null } | null {\n    const __tnLayout = RegisterCredentialArgs.__tnComputeSequentialLayout(view, buffer);\n    if (!__tnLayout || !__tnLayout.params) return null;\n    const __tnSeqParams = __tnLayout.params;\n    const __tnParamSeq_proof_body_hdr_type_slot = __tnSeqParams[\"proof_body_hdr_type_slot\"];\n    if (__tnParamSeq_proof_body_hdr_type_slot === undefined) return null;\n    const __tnParamSeq_proof_body_payload_size = __tnSeqParams[\"proof_body_payload_size\"];\n    if (__tnParamSeq_proof_body_payload_size === undefined) return null;\n    const __tnExtractedParams = RegisterCredentialArgs.Params.fromValues({\n      proof_body_hdr_type_slot: __tnParamSeq_proof_body_hdr_type_slot as bigint,\n      proof_body_payload_size: __tnParamSeq_proof_body_payload_size as bigint,\n    });\n    return { params: __tnExtractedParams, derived: null };\n  }\n\n  get_wallet_account_idx(): number {\n    const offset = 0;\n    return this.view.getUint16(offset, true); /* little-endian */\n  }\n\n  set_wallet_account_idx(value: number): void {\n    const offset = 0;\n    this.view.setUint16(offset, value, true); /* little-endian */\n  }\n\n  get wallet_account_idx(): number {\n    return this.get_wallet_account_idx();\n  }\n\n  set wallet_account_idx(value: number) {\n    this.set_wallet_account_idx(value);\n  }\n\n  get_lookup_account_idx(): number {\n    const offset = 2;\n    return this.view.getUint16(offset, true); /* little-endian */\n  }\n\n  set_lookup_account_idx(value: number): void {\n    const offset = 2;\n    this.view.setUint16(offset, value, true); /* little-endian */\n  }\n\n  get lookup_account_idx(): number {\n    return this.get_lookup_account_idx();\n  }\n\n  set lookup_account_idx(value: number) {\n    this.set_lookup_account_idx(value);\n  }\n\n  get_seed(): Seed32 {\n    const offset = 4;\n    const slice = this.buffer.subarray(offset, offset + 32);\n    return Seed32.from_array(slice)!;\n  }\n\n  set_seed(value: Seed32): void {\n    /* Copy bytes from source struct to this field */\n    const sourceBytes = (value as any).buffer as Uint8Array;\n    const offset = 4;\n    this.buffer.set(sourceBytes, offset);\n  }\n\n  get seed(): Seed32 {\n    return this.get_seed();\n  }\n\n  set seed(value: Seed32) {\n    this.set_seed(value);\n  }\n\n  get_state_proof(): StateProof {\n    const offset = 36;\n    const tail = this.buffer.subarray(offset);\n    const validation = StateProof.validate(tail);\n    if (!validation.ok || validation.consumed === undefined) {\n      throw new Error(\"RegisterCredentialArgs: failed to read field 'state_proof' (invalid nested payload)\");\n    }\n    const length = validation.consumed;\n    const slice = tail.subarray(0, length);\n    const opts = validation.params ? { params: validation.params } : undefined;\n    return StateProof.from_array(slice, opts)!;\n  }\n\n  set_state_proof(value: StateProof): void {\n    /* Copy bytes from source struct to this field */\n    const sourceBytes = (value as any).buffer as Uint8Array;\n    const offset = 36;\n    this.buffer.set(sourceBytes, offset);\n  }\n\n  get state_proof(): StateProof {\n    return this.get_state_proof();\n  }\n\n  set state_proof(value: StateProof) {\n    this.set_state_proof(value);\n  }\n  private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n    return __tnEvalFootprint(__tn_ir_RegisterCredentialArgs.root, { params: __tnParams });\n  }\n\n  private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n    return __tnValidateIrTree(__tn_ir_RegisterCredentialArgs, buffer, __tnParams);\n  }\n\n  static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n    return this.__tnFootprintInternal(__tnParams);\n  }\n\n  static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n    return this.__tnValidateInternal(buffer, __tnParams);\n  }\n\n  static footprintIr(proof_body_hdr_type_slot: number | bigint, proof_body_payload_size: number | bigint): bigint {\n    const params = RegisterCredentialArgs.Params.fromValues({\n      proof_body_hdr_type_slot: proof_body_hdr_type_slot,\n      proof_body_payload_size: proof_body_payload_size,\n    });\n    return this.footprintIrFromParams(params);\n  }\n\n  private static __tnPackParams(params: RegisterCredentialArgs.Params): Record<string, bigint> {\n    const record: Record<string, bigint> = Object.create(null);\n    record[\"proof_body.hdr.type_slot\"] = params.proof_body_hdr_type_slot;\n    record[\"proof_body.payload_size\"] = params.proof_body_payload_size;\n    return record;\n  }\n\n  static footprintIrFromParams(params: RegisterCredentialArgs.Params): bigint {\n    const __tnParams = this.__tnPackParams(params);\n    return this.__tnFootprintInternal(__tnParams);\n  }\n\n  static footprintFromParams(params: RegisterCredentialArgs.Params): number {\n    const irResult = this.footprintIrFromParams(params);\n    const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n    if (__tnBigIntGreaterThan(irResult, maxSafe)) throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for RegisterCredentialArgs');\n    return __tnBigIntToNumber(irResult, 'RegisterCredentialArgs::footprintFromParams');\n  }\n\n  static footprintFromValues(input: { proof_body_hdr_type_slot: number | bigint, proof_body_payload_size: number | bigint }): number {\n    const params = RegisterCredentialArgs.params(input);\n    return this.footprintFromParams(params);\n  }\n\n  static footprint(params: RegisterCredentialArgs.Params): number {\n    return this.footprintFromParams(params);\n  }\n\n  static validate(buffer: Uint8Array, opts?: { params?: RegisterCredentialArgs.Params }): { ok: boolean; code?: string; consumed?: number; params?: RegisterCredentialArgs.Params } {\n    if (!buffer || buffer.length === undefined) {\n      return { ok: false, code: \"tn.invalid_buffer\" };\n    }\n    const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    let params = opts?.params ?? null;\n    if (!params) {\n      return { ok: false, code: \"tn.param_extraction_failed\" };\n    }\n    const __tnParamsRec = this.__tnPackParams(params);\n    const irResult = this.__tnValidateInternal(buffer, __tnParamsRec);\n    if (!irResult.ok) {\n      return { ok: false, code: irResult.code, consumed: irResult.consumed ? __tnBigIntToNumber(irResult.consumed, 'RegisterCredentialArgs::validate') : undefined, params };\n    }\n    const consumed = irResult.consumed ? __tnBigIntToNumber(irResult.consumed, 'RegisterCredentialArgs::validate') : undefined;\n    return { ok: true, consumed, params };\n  }\n\n  static from_array(buffer: Uint8Array, opts?: { params?: RegisterCredentialArgs.Params }): RegisterCredentialArgs | null {\n    if (!buffer || buffer.length === undefined) {\n      return null;\n    }\n    const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    let params = opts?.params ?? null;\n    if (!params) {\n      __tnLogWarn('RegisterCredentialArgs::from_array requires params when IR extraction is unavailable');\n      return null;\n    }\n    const validation = this.validate(buffer, { params });\n    if (!validation.ok) {\n      return null;\n    }\n    const cached = validation.params ?? params;\n    const state = new RegisterCredentialArgs(buffer, cached);\n    return state;\n  }\n\n\n}\n\nexport namespace RegisterCredentialArgs {\n  export type Params = {\n    /** ABI path: proof_body.hdr.type_slot */\n    readonly proof_body_hdr_type_slot: bigint;\n    /** ABI path: proof_body.payload_size */\n    readonly proof_body_payload_size: bigint;\n  };\n\n  export const ParamKeys = Object.freeze({\n    proof_body_hdr_type_slot: \"proof_body.hdr.type_slot\",\n    proof_body_payload_size: \"proof_body.payload_size\",\n  } as const);\n\n  export const Params = {\n    fromValues(input: { proof_body_hdr_type_slot: number | bigint, proof_body_payload_size: number | bigint }): Params {\n      return {\n        proof_body_hdr_type_slot: __tnToBigInt(input.proof_body_hdr_type_slot),\n        proof_body_payload_size: __tnToBigInt(input.proof_body_payload_size),\n      };\n    },\n    fromBuilder(source: { dynamicParams(): Params } | { params: Params } | Params): Params {\n      if ((source as { dynamicParams?: () => Params }).dynamicParams) {\n        return (source as { dynamicParams(): Params }).dynamicParams();\n      }\n      if ((source as { params?: Params }).params) {\n        return (source as { params: Params }).params;\n      }\n      return source as Params;\n    }\n  };\n\n  export function params(input: { proof_body_hdr_type_slot: number | bigint, proof_body_payload_size: number | bigint }): Params {\n    return Params.fromValues(input);\n  }\n}\n\nexport class RegisterCredentialArgsBuilder {\n  private buffer: Uint8Array;\n  private view: DataView;\n  private __tnCachedParams: RegisterCredentialArgs.Params | null = null;\n  private __tnLastBuffer: Uint8Array | null = null;\n  private __tnLastParams: RegisterCredentialArgs.Params | null = null;\n  private __tnTail_state_proof: Uint8Array | null = null;\n  private __tnTailParams_state_proof: Record<string, bigint> | null = null;\n\n  constructor() {\n    this.buffer = new Uint8Array(36);\n    this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n  }\n\n  private __tnInvalidate(): void {\n    this.__tnCachedParams = null;\n    this.__tnLastBuffer = null;\n    this.__tnLastParams = null;\n  }\n\n  set_wallet_account_idx(value: number): this {\n    this.view.setUint16(0, value, true);\n    this.__tnInvalidate();\n    return this;\n  }\n\n  set_lookup_account_idx(value: number): this {\n    this.view.setUint16(2, value, true);\n    this.__tnInvalidate();\n    return this;\n  }\n\n  set_seed(value: Uint8Array): this {\n    if (value.length !== 32) throw new Error(\"seed expects 32 bytes\");\n    this.buffer.set(value, 4);\n    this.__tnInvalidate();\n    return this;\n  }\n\n  set_state_proof(value: StateProof | __TnStructFieldInput): this {\n    const bytes = __tnResolveStructFieldInput(value as __TnStructFieldInput, \"RegisterCredentialArgsBuilder::state_proof\");\n    const validation = __tnInvokeDynamicValidate(\"StateProof\", bytes);\n    if (!validation.ok || validation.consumed === undefined) throw new Error(\"RegisterCredentialArgsBuilder: field 'state_proof' failed validation\");\n    if (__tnBigIntToNumber(validation.consumed, \"RegisterCredentialArgsBuilder::state_proof\") !== bytes.length) throw new Error(\"RegisterCredentialArgsBuilder: field 'state_proof' validation did not consume the full buffer\");\n    this.__tnTail_state_proof = bytes;\n    this.__tnTailParams_state_proof = validation.params ?? null;\n    this.__tnInvalidate();\n    return this;\n  }\n\n  build(): Uint8Array {\n    const params = this.__tnComputeParams();\n    const size = RegisterCredentialArgs.footprintFromParams(params);\n    const buffer = new Uint8Array(size);\n    this.__tnWriteInto(buffer);\n    this.__tnValidateOrThrow(buffer, params);\n    return buffer;\n  }\n\n  buildInto(target: Uint8Array, offset = 0): Uint8Array {\n    const params = this.__tnComputeParams();\n    const size = RegisterCredentialArgs.footprintFromParams(params);\n    if (target.length - offset < size) throw new Error(\"RegisterCredentialArgsBuilder: target buffer too small\");\n    const slice = target.subarray(offset, offset + size);\n    this.__tnWriteInto(slice);\n    this.__tnValidateOrThrow(slice, params);\n    return target;\n  }\n\n  finish(): RegisterCredentialArgs {\n    const buffer = this.build();\n    const params = this.__tnLastParams ?? this.__tnComputeParams();\n    const view = RegisterCredentialArgs.from_array(buffer, { params });\n    if (!view) throw new Error(\"RegisterCredentialArgsBuilder: failed to finalize view\");\n    return view;\n  }\n\n  finishView(): RegisterCredentialArgs {\n    return this.finish();\n  }\n\n  dynamicParams(): RegisterCredentialArgs.Params {\n    return this.__tnComputeParams();\n  }\n\n  private __tnComputeParams(): RegisterCredentialArgs.Params {\n    if (this.__tnCachedParams) return this.__tnCachedParams;\n    const params = RegisterCredentialArgs.Params.fromValues({\n      proof_body_hdr_type_slot: (() => { const params = this.__tnTailParams_state_proof; if (!params || params[\"proof_body_hdr_type_slot\"] === undefined) throw new Error(\"RegisterCredentialArgsBuilder: field 'state_proof' must be written before computing params\"); return params[\"proof_body_hdr_type_slot\"]; })(),\n      proof_body_payload_size: (() => { const params = this.__tnTailParams_state_proof; if (!params || params[\"proof_body_payload_size\"] === undefined) throw new Error(\"RegisterCredentialArgsBuilder: field 'state_proof' must be written before computing params\"); return params[\"proof_body_payload_size\"]; })(),\n    });\n    this.__tnCachedParams = params;\n    return params;\n  }\n\n  private __tnWriteInto(target: Uint8Array): void {\n    target.set(this.buffer, 0);\n    let cursor = this.buffer.length;\n    const __tnLocal_state_proof_bytes = this.__tnTail_state_proof;\n    if (!__tnLocal_state_proof_bytes) throw new Error(\"RegisterCredentialArgsBuilder: field 'state_proof' must be written before build\");\n    target.set(__tnLocal_state_proof_bytes, cursor);\n    cursor += __tnLocal_state_proof_bytes.length;\n  }\n\n  private __tnValidateOrThrow(buffer: Uint8Array, params: RegisterCredentialArgs.Params): void {\n    const result = RegisterCredentialArgs.validate(buffer, { params });\n    if (!result.ok) {\n      throw new Error(`${ RegisterCredentialArgs }Builder: builder produced invalid buffer (code=${result.code ?? \"unknown\"})`);\n    }\n    this.__tnLastParams = result.params ?? params;\n    this.__tnLastBuffer = buffer;\n  }\n}\n\n__tnRegisterFootprint(\"RegisterCredentialArgs\", (params) => RegisterCredentialArgs.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"RegisterCredentialArgs\", (buffer, params) => RegisterCredentialArgs.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"RegisterCredentialArgs\", (buffer) => { const result = RegisterCredentialArgs.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n\n/* ----- TYPE DEFINITION FOR PasskeyInstruction ----- */\n\nconst __tn_ir_PasskeyInstruction = {\n  typeName: \"PasskeyInstruction\",\n  root: { op: \"align\", alignment: 1, node: { op: \"add\", left: { op: \"align\", alignment: 1, node: { op: \"const\", value: 1n } }, right: { op: \"align\", alignment: 1, node: { op: \"field\", param: \"payload.payload_size\" } } } }\n} as const;\n\nexport class PasskeyInstruction_payload_Inner {\n  private view: DataView;\n  private __tnFieldContext: Record<string, number | bigint> | null = null;\n  private constructor(private buffer: Uint8Array, private descriptor: __TnVariantDescriptor | null, fieldContext?: Record<string, number | bigint>) {\n    this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    this.__tnFieldContext = fieldContext ?? null;\n  }\n\n  static __tnCreate(payload: Uint8Array, descriptor: __TnVariantDescriptor | null, fieldContext?: Record<string, number | bigint>): PasskeyInstruction_payload_Inner {\n    return new PasskeyInstruction_payload_Inner(new Uint8Array(payload), descriptor, fieldContext);\n  }\n\n  bytes(): Uint8Array {\n    return new Uint8Array(this.buffer);\n  }\n\n  variant(): __TnVariantDescriptor | null {\n    return this.descriptor;\n  }\n\n  asCreate(): CreateArgs | null {\n    if (!this.descriptor || this.descriptor.tag !== 0) return null;\n    return CreateArgs.__tnCreateView(new Uint8Array(this.buffer), { fieldContext: this.__tnFieldContext ?? undefined });\n  }\n\n  asValidate(): ValidateArgs | null {\n    if (!this.descriptor || this.descriptor.tag !== 1) return null;\n    return ValidateArgs.__tnCreateView(new Uint8Array(this.buffer), { fieldContext: this.__tnFieldContext ?? undefined });\n  }\n\n  asTransfer(): TransferArgs | null {\n    if (!this.descriptor || this.descriptor.tag !== 2) return null;\n    return TransferArgs.__tnCreateView(new Uint8Array(this.buffer), { fieldContext: this.__tnFieldContext ?? undefined });\n  }\n\n  asAddAuthority(): AddAuthorityArgs | null {\n    if (!this.descriptor || this.descriptor.tag !== 4) return null;\n    return AddAuthorityArgs.__tnCreateView(new Uint8Array(this.buffer), { fieldContext: this.__tnFieldContext ?? undefined });\n  }\n\n  asRemoveAuthority(): RemoveAuthorityArgs | null {\n    if (!this.descriptor || this.descriptor.tag !== 5) return null;\n    return RemoveAuthorityArgs.__tnCreateView(new Uint8Array(this.buffer), { fieldContext: this.__tnFieldContext ?? undefined });\n  }\n\n  asRegisterCredential(): RegisterCredentialArgs | null {\n    if (!this.descriptor || this.descriptor.tag !== 6) return null;\n    return RegisterCredentialArgs.__tnCreateView(new Uint8Array(this.buffer), { fieldContext: this.__tnFieldContext ?? undefined });\n  }\n\n}\n\nexport class PasskeyInstruction {\n  private view: DataView;\n  private static readonly __tnFieldOffset_payload = 1;\n  private __tnParams: PasskeyInstruction.Params;\n\n  private constructor(private buffer: Uint8Array, params?: PasskeyInstruction.Params) {\n    this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    if (params) {\n      this.__tnParams = params;\n    } else {\n      const derived = PasskeyInstruction.__tnExtractParams(this.view, buffer);\n      if (!derived) {\n        throw new Error(\"PasskeyInstruction: failed to derive dynamic parameters\");\n      }\n      this.__tnParams = derived.params;\n    }\n  }\n\n  static __tnCreateView(buffer: Uint8Array, opts?: { params?: PasskeyInstruction.Params, fieldContext?: Record<string, number | bigint> }): PasskeyInstruction {\n    if (!buffer || buffer.length === undefined) throw new Error(\"PasskeyInstruction.__tnCreateView requires a Uint8Array\");\n    let params = opts?.params ?? null;\n    if (!params) {\n      const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n      const derived = PasskeyInstruction.__tnExtractParams(view, buffer);\n      if (!derived) throw new Error(\"PasskeyInstruction.__tnCreateView: failed to derive params\");\n      params = derived.params;\n    }\n    const instance = new PasskeyInstruction(new Uint8Array(buffer), params);\n    return instance;\n  }\n\n  dynamicParams(): PasskeyInstruction.Params {\n    return this.__tnParams;\n  }\n\n  static builder(): PasskeyInstructionBuilder {\n    return new PasskeyInstructionBuilder();\n  }\n\n  static fromBuilder(builder: PasskeyInstructionBuilder): PasskeyInstruction | null {\n    const buffer = builder.build();\n    const params = builder.dynamicParams();\n    return PasskeyInstruction.from_array(buffer, { params });\n  }\n\n  static readonly payloadVariantDescriptors = Object.freeze([\n    {\n      name: \"create\",\n      tag: 0,\n      payloadSize: null,\n      payloadType: \"PasskeyInstruction::payload::create\",\n      createPayloadBuilder: () => __tnMaybeCallBuilder(CreateArgs),\n    },\n    {\n      name: \"validate\",\n      tag: 1,\n      payloadSize: null,\n      payloadType: \"PasskeyInstruction::payload::validate\",\n      createPayloadBuilder: () => __tnMaybeCallBuilder(ValidateArgs),\n    },\n    {\n      name: \"transfer\",\n      tag: 2,\n      payloadSize: 12,\n      payloadType: \"PasskeyInstruction::payload::transfer\",\n      createPayloadBuilder: () => __tnMaybeCallBuilder(TransferArgs),\n    },\n    {\n      name: \"add_authority\",\n      tag: 4,\n      payloadSize: 75,\n      payloadType: \"PasskeyInstruction::payload::add_authority\",\n      createPayloadBuilder: () => __tnMaybeCallBuilder(AddAuthorityArgs),\n    },\n    {\n      name: \"remove_authority\",\n      tag: 5,\n      payloadSize: 3,\n      payloadType: \"PasskeyInstruction::payload::remove_authority\",\n      createPayloadBuilder: () => __tnMaybeCallBuilder(RemoveAuthorityArgs),\n    },\n    {\n      name: \"register_credential\",\n      tag: 6,\n      payloadSize: null,\n      payloadType: \"PasskeyInstruction::payload::register_credential\",\n      createPayloadBuilder: () => __tnMaybeCallBuilder(RegisterCredentialArgs),\n    },\n  ] as const);\n\n  static __tnComputeSequentialLayout(view: DataView, buffer: Uint8Array): { params: Record<string, bigint> | null; offsets: Record<string, number> | null; derived: Record<string, bigint> | null } | null {\n    const __tnLength = buffer.length;\n    let __tnParamSeq_payload_payload_size: bigint | null = null;\n    let __tnFieldValue_tag: number | null = null;\n    let __tnCursorMutable = 0;\n    if (__tnCursorMutable + 1 > __tnLength) return null;\n    const __tnRead_tag = view.getUint8(__tnCursorMutable);\n    __tnFieldValue_tag = __tnRead_tag;\n    __tnCursorMutable += 1;\n    const __tnEnumTagValue_payload = __tnFieldValue_tag;\n    if (__tnEnumTagValue_payload === null) return null;\n    let __tnEnumSize_payload = 0;\n    switch (Number(__tnEnumTagValue_payload)) {\n      case 0: break;\n      case 1: break;\n      case 2: break;\n      case 4: break;\n      case 5: break;\n      case 6: break;\n      default: return null;\n    }\n    if (__tnCursorMutable > __tnLength) return null;\n    __tnEnumSize_payload = __tnLength - __tnCursorMutable;\n    __tnCursorMutable = __tnLength;\n    __tnParamSeq_payload_payload_size = __tnToBigInt(__tnEnumSize_payload);\n    const params: Record<string, bigint> = Object.create(null);\n    if (__tnParamSeq_payload_payload_size === null) return null;\n    params[\"payload_payload_size\"] = __tnParamSeq_payload_payload_size as bigint;\n    return { params, offsets: null, derived: null };\n  }\n\n  private static __tnExtractParams(view: DataView, buffer: Uint8Array): { params: PasskeyInstruction.Params; derived: Record<string, bigint> | null } | null {\n    if (buffer.length < 1) {\n      return null;\n    }\n    const __tnParam_payload_tag = __tnToBigInt(view.getUint8(0));\n    const __tnLayout = PasskeyInstruction.__tnComputeSequentialLayout(view, buffer);\n    if (!__tnLayout || !__tnLayout.params) return null;\n    const __tnSeqParams = __tnLayout.params;\n    const __tnParamSeq_payload_payload_size = __tnSeqParams[\"payload_payload_size\"];\n    if (__tnParamSeq_payload_payload_size === undefined) return null;\n    const __tnExtractedParams = PasskeyInstruction.Params.fromValues({\n      payload_payload_size: __tnParamSeq_payload_payload_size as bigint,\n      payload_tag: __tnParam_payload_tag,\n    });\n    return { params: __tnExtractedParams, derived: null };\n  }\n\n  get_tag(): number {\n    const offset = 0;\n    return this.view.getUint8(offset);\n  }\n\n  set_tag(value: number): void {\n    const offset = 0;\n    this.view.setUint8(offset, value);\n  }\n\n  get tag(): number {\n    return this.get_tag();\n  }\n\n  set tag(value: number) {\n    this.set_tag(value);\n  }\n\n  payloadVariant(): typeof PasskeyInstruction.payloadVariantDescriptors[number] | null {\n    const tag = this.view.getUint8(0);\n    return PasskeyInstruction.payloadVariantDescriptors.find((variant) => variant.tag === tag) ?? null;\n  }\n\n  payload(): PasskeyInstruction_payload_Inner {\n    const descriptor = this.payloadVariant();\n    if (!descriptor) throw new Error(\"PasskeyInstruction: unknown payload variant\");\n    const offset = PasskeyInstruction.__tnFieldOffset_payload;\n    const remaining = this.buffer.length - offset;\n    const payloadLength = descriptor.payloadSize ?? remaining;\n    if (payloadLength < 0 || offset + payloadLength > this.buffer.length) throw new Error(\"PasskeyInstruction: payload exceeds buffer bounds\");\n    const slice = this.buffer.subarray(offset, offset + payloadLength);\n    return PasskeyInstruction_payload_Inner.__tnCreate(slice, descriptor, undefined);\n  }\n  private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n    return __tnEvalFootprint(__tn_ir_PasskeyInstruction.root, { params: __tnParams });\n  }\n\n  private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n    return __tnValidateIrTree(__tn_ir_PasskeyInstruction, buffer, __tnParams);\n  }\n\n  static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n    return this.__tnFootprintInternal(__tnParams);\n  }\n\n  static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n    return this.__tnValidateInternal(buffer, __tnParams);\n  }\n\n  static footprintIr(payload_payload_size: number | bigint, payload_tag: number | bigint): bigint {\n    const params = PasskeyInstruction.Params.fromValues({\n      payload_payload_size: payload_payload_size,\n      payload_tag: payload_tag,\n    });\n    return this.footprintIrFromParams(params);\n  }\n\n  private static __tnPackParams(params: PasskeyInstruction.Params): Record<string, bigint> {\n    const record: Record<string, bigint> = Object.create(null);\n    record[\"payload.payload_size\"] = params.payload_payload_size;\n    record[\"payload.tag\"] = params.payload_tag;\n    return record;\n  }\n\n  static footprintIrFromParams(params: PasskeyInstruction.Params): bigint {\n    const __tnParams = this.__tnPackParams(params);\n    return this.__tnFootprintInternal(__tnParams);\n  }\n\n  static footprintFromParams(params: PasskeyInstruction.Params): number {\n    const irResult = this.footprintIrFromParams(params);\n    const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n    if (__tnBigIntGreaterThan(irResult, maxSafe)) throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for PasskeyInstruction');\n    return __tnBigIntToNumber(irResult, 'PasskeyInstruction::footprintFromParams');\n  }\n\n  static footprintFromValues(input: { payload_payload_size: number | bigint, payload_tag: number | bigint }): number {\n    const params = PasskeyInstruction.params(input);\n    return this.footprintFromParams(params);\n  }\n\n  static footprint(params: PasskeyInstruction.Params): number {\n    return this.footprintFromParams(params);\n  }\n\n  static validate(buffer: Uint8Array, opts?: { params?: PasskeyInstruction.Params }): { ok: boolean; code?: string; consumed?: number; params?: PasskeyInstruction.Params } {\n    if (!buffer || buffer.length === undefined) {\n      return { ok: false, code: \"tn.invalid_buffer\" };\n    }\n    const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    let params = opts?.params ?? null;\n    if (!params) {\n      const extracted = this.__tnExtractParams(view, buffer);\n      if (!extracted) return { ok: false, code: \"tn.param_extraction_failed\" };\n      params = extracted.params;\n    }\n    const __tnParamsRec = this.__tnPackParams(params);\n    const irResult = this.__tnValidateInternal(buffer, __tnParamsRec);\n    if (!irResult.ok) {\n      return { ok: false, code: irResult.code, consumed: irResult.consumed ? __tnBigIntToNumber(irResult.consumed, 'PasskeyInstruction::validate') : undefined, params };\n    }\n    const consumed = irResult.consumed ? __tnBigIntToNumber(irResult.consumed, 'PasskeyInstruction::validate') : undefined;\n    return { ok: true, consumed, params };\n  }\n\n  static from_array(buffer: Uint8Array, opts?: { params?: PasskeyInstruction.Params }): PasskeyInstruction | null {\n    if (!buffer || buffer.length === undefined) {\n      return null;\n    }\n    const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    let params = opts?.params ?? null;\n    if (!params) {\n      const derived = this.__tnExtractParams(view, buffer);\n      if (!derived) return null;\n      params = derived.params;\n    }\n    const validation = this.validate(buffer, { params });\n    if (!validation.ok) {\n      return null;\n    }\n    const cached = validation.params ?? params;\n    const state = new PasskeyInstruction(buffer, cached);\n    return state;\n  }\n\n\n}\n\nexport namespace PasskeyInstruction {\n  export type Params = {\n    /** ABI path: payload.payload_size */\n    readonly payload_payload_size: bigint;\n    /** ABI path: payload.tag */\n    readonly payload_tag: bigint;\n  };\n\n  export const ParamKeys = Object.freeze({\n    payload_payload_size: \"payload.payload_size\",\n    payload_tag: \"payload.tag\",\n  } as const);\n\n  export const Params = {\n    fromValues(input: { payload_payload_size: number | bigint, payload_tag: number | bigint }): Params {\n      return {\n        payload_payload_size: __tnToBigInt(input.payload_payload_size),\n        payload_tag: __tnToBigInt(input.payload_tag),\n      };\n    },\n    fromBuilder(source: { dynamicParams(): Params } | { params: Params } | Params): Params {\n      if ((source as { dynamicParams?: () => Params }).dynamicParams) {\n        return (source as { dynamicParams(): Params }).dynamicParams();\n      }\n      if ((source as { params?: Params }).params) {\n        return (source as { params: Params }).params;\n      }\n      return source as Params;\n    }\n  };\n\n  export function params(input: { payload_payload_size: number | bigint, payload_tag: number | bigint }): Params {\n    return Params.fromValues(input);\n  }\n}\n\nexport class PasskeyInstructionBuilder {\n  private __tnPrefixBuffer: Uint8Array;\n  private __tnPrefixView: DataView;\n  private __tnField_tag: number | null = null;\n  private __tnPayload_payload: { descriptor: typeof PasskeyInstruction.payloadVariantDescriptors[number]; bytes: Uint8Array } | null = null;\n  private __tnCachedParams: PasskeyInstruction.Params | null = null;\n  private __tnLastBuffer: Uint8Array | null = null;\n  private __tnLastParams: PasskeyInstruction.Params | null = null;\n  private __tnVariantSelector_payload?: __TnVariantSelectorResult<PasskeyInstructionBuilder>;\n\n  constructor() {\n    this.__tnPrefixBuffer = new Uint8Array(1);\n    this.__tnPrefixView = new DataView(this.__tnPrefixBuffer.buffer, this.__tnPrefixBuffer.byteOffset, this.__tnPrefixBuffer.byteLength);\n  }\n\n  private __tnInvalidate(): void {\n    this.__tnCachedParams = null;\n    this.__tnLastBuffer = null;\n    this.__tnLastParams = null;\n  }\n\n  private __tnAssign_tag(value: number): void {\n    this.__tnField_tag = value;\n    this.__tnInvalidate();\n  }\n\n  set_tag(value: number): this {\n    this.__tnAssign_tag(value);\n    return this;\n  }\n\n  payload(): __TnVariantSelectorResult<PasskeyInstructionBuilder> {\n    if (!this.__tnVariantSelector_payload) {\n      this.__tnVariantSelector_payload = __tnCreateVariantSelector(this, PasskeyInstruction.payloadVariantDescriptors, (descriptor, payload) => {\n        this.__tnPayload_payload = { descriptor, bytes: new Uint8Array(payload) };\n        this.__tnAssign_tag(descriptor.tag);\n      });\n    }\n    return this.__tnVariantSelector_payload!;\n  }\n\n  build(): Uint8Array {\n    const params = this.__tnComputeParams();\n    if (this.__tnField_tag === null) throw new Error(\"PasskeyInstructionBuilder: field 'tag' must be set before build\");\n    if (!this.__tnPayload_payload) throw new Error(\"PasskeyInstructionBuilder: payload variant not selected\");\n    const payloadLength = this.__tnPayload_payload.bytes.length;\n    const requiredSize = 1 + payloadLength;\n    const footprintSize = PasskeyInstruction.footprintFromParams(params);\n    const size = Math.max(requiredSize, footprintSize);\n    const buffer = new Uint8Array(size);\n    this.__tnWriteInto(buffer);\n    this.__tnValidateOrThrow(buffer, params);\n    return buffer;\n  }\n\n  buildInto(target: Uint8Array, offset = 0): Uint8Array {\n    const params = this.__tnComputeParams();\n    if (this.__tnField_tag === null) throw new Error(\"PasskeyInstructionBuilder: field 'tag' must be set before build\");\n    if (!this.__tnPayload_payload) throw new Error(\"PasskeyInstructionBuilder: payload variant not selected\");\n    const payloadLength = this.__tnPayload_payload.bytes.length;\n    const requiredSize = 1 + payloadLength;\n    const footprintSize = PasskeyInstruction.footprintFromParams(params);\n    const size = Math.max(requiredSize, footprintSize);\n    if (target.length - offset < size) throw new Error(\"PasskeyInstructionBuilder: target buffer too small\");\n    const slice = target.subarray(offset, offset + size);\n    this.__tnWriteInto(slice);\n    this.__tnValidateOrThrow(slice, params);\n    return target;\n  }\n\n  finish(): PasskeyInstruction {\n    const buffer = this.build();\n    const params = this.__tnLastParams ?? this.__tnComputeParams();\n    const view = PasskeyInstruction.from_array(buffer, { params });\n    if (!view) throw new Error(\"PasskeyInstructionBuilder: failed to finalize view\");\n    return view;\n  }\n\n  finishView(): PasskeyInstruction {\n    return this.finish();\n  }\n\n  dynamicParams(): PasskeyInstruction.Params {\n    return this.__tnComputeParams();\n  }\n\n  private __tnComputeParams(): PasskeyInstruction.Params {\n    if (this.__tnCachedParams) return this.__tnCachedParams;\n    const params = PasskeyInstruction.Params.fromValues({\n      payload_payload_size: (() => { if (!this.__tnPayload_payload) throw new Error(\"PasskeyInstructionBuilder: payload 'payload' must be selected before build\"); return __tnToBigInt(this.__tnPayload_payload.bytes.length); })(),\n      payload_tag: (() => { if (this.__tnField_tag === null) throw new Error(\"PasskeyInstructionBuilder: missing enum tag\"); return __tnToBigInt(this.__tnField_tag); })(),\n    });\n    this.__tnCachedParams = params;\n    return params;\n  }\n\n  private __tnWriteInto(target: Uint8Array): void {\n    if (this.__tnField_tag === null) throw new Error(\"PasskeyInstructionBuilder: field 'tag' must be set before build\");\n    if (!this.__tnPayload_payload) throw new Error(\"PasskeyInstructionBuilder: payload variant not selected\");\n    const view = new DataView(target.buffer, target.byteOffset, target.byteLength);\n    target.set(this.__tnPrefixBuffer, 0);\n    view.setUint8(0, this.__tnField_tag);\n    target.set(this.__tnPayload_payload.bytes, 1);\n  }\n\n  private __tnValidateOrThrow(buffer: Uint8Array, params: PasskeyInstruction.Params): void {\n    const result = PasskeyInstruction.validate(buffer, { params });\n    if (!result.ok) {\n      throw new Error(`${ PasskeyInstruction }Builder: builder produced invalid buffer (code=${result.code ?? \"unknown\"})`);\n    }\n    this.__tnLastParams = result.params ?? params;\n    this.__tnLastBuffer = buffer;\n  }\n}\n\n__tnRegisterFootprint(\"PasskeyInstruction\", (params) => PasskeyInstruction.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"PasskeyInstruction\", (buffer, params) => PasskeyInstruction.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"PasskeyInstruction\", (buffer) => { const result = PasskeyInstruction.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n","import { decodeAddress, decodeBase64 } from '@thru/sdk/helpers';\nimport { PASSKEY_MANAGER_PROGRAM_ADDRESS } from '../../../src/core-program-addresses';\nimport type { ThruClientContext } from '../../core/client';\nimport { Transaction } from '../../domain/transactions/Transaction';\nimport { Pubkey } from '../../domain/primitives';\nimport { buildWalletAccountContext, assertWalletFeePayerCompatible } from '../../domain/programs/passkey-manager/context';\nimport { PasskeyInstruction, ValidateArgs } from '../../domain/programs/passkey-manager/abi/thru/program/passkey_manager/types';\nimport { bytesEqual } from '../../domain/programs/helpers/bytes';\nimport { getChainId } from '../chain';\nimport { CompressionError, type CompressionTransaction, type WalletCompressionOptions } from './types';\n\nfunction intentContext(request: CompressionTransaction, options: WalletCompressionOptions) {\n  const programAddress = options.programAddresses?.passkeyManager ?? PASSKEY_MANAGER_PROGRAM_ADDRESS;\n  const params = { walletAddress: options.walletAddress, programAddress,\n    readWriteAccounts: request.readWrite.map(decodeAddress),\n    readOnlyAccounts: [request.program, ...(request.readOnly ?? [])].map(decodeAddress) };\n  assertWalletFeePayerCompatible({ ...params, feePayerAddress: Pubkey.from(options.feePayer.publicKey).toThruFmt() });\n  return { ...buildWalletAccountContext(params), programAddress };\n}\n\nasync function instruction(request: CompressionTransaction, options: WalletCompressionOptions) {\n  const context = intentContext(request, options);\n  const bytes = await request.instructionData({\n    getAccountIndex: address => context.getAccountIndex(decodeAddress(address)),\n    // Uploaded wallet restores use account pointers; no absolute transaction pointer is encoded.\n    instructionDataOffset: 0,\n  });\n  return { context, bytes };\n}\n\nexport async function measureWalletRequest(request: CompressionTransaction, options: WalletCompressionOptions): Promise<number> {\n  const { context, bytes } = await instruction(request, options);\n  // Reserve space for passkey authentication data. The actual signed envelope is\n  // checked again before submission, including authenticators with larger data.\n  return 112 + 64 + 32 * (context.readWriteAddresses.length + context.readOnlyAddresses.length) + bytes.length + 1536;\n}\n\nexport async function signWalletRequest(ctx: ThruClientContext, request: CompressionTransaction,\n  options: WalletCompressionOptions, nonce: bigint): Promise<Uint8Array> {\n  if (request.flags) throw new Error('Wallet intents cannot set compression transaction flags');\n  const { context, bytes } = await instruction(request, options);\n  const chainId = await getChainId(ctx);\n  const signedBase64 = await options.signTransaction({\n    walletAddress: options.walletAddress, programAddress: request.program,\n    instructionData: btoa(Array.from(bytes, byte => String.fromCharCode(byte)).join('')),\n    stateUnits: request.stateUnits,\n    readWriteAddresses: context.readWriteAddresses, readOnlyAddresses: context.readOnlyAddresses,\n  });\n  const signed = decodeBase64(signedBase64);\n  if (signed.length > (options.maxTransactionBytes ?? 32768))\n    throw new CompressionError('TRANSACTION_TOO_LARGE', 'Signed wallet prerequisite exceeds the transaction wire limit');\n  const tx = Transaction.fromWire(signed);\n  const equalAddresses = (actual: Pubkey[], expected: string[]) =>\n    actual.length === expected.length && actual.every((key, index) => key.toThruFmt() === expected[index]);\n  const payload = tx.instructionData ?? new Uint8Array();\n  const wrapper = PasskeyInstruction.validate(payload);\n  const argsValidation = ValidateArgs.validate(payload.subarray(1));\n  const args = argsValidation.ok ? ValidateArgs.from_array(payload.subarray(1)) : null;\n  const target = args?.get_target_instruction();\n  if (tx.feePayer.toThruFmt() !== Pubkey.from(options.feePayer.publicKey).toThruFmt() ||\n      tx.program.toThruFmt() !== context.programAddress || tx.nonce !== nonce || tx.chainId !== chainId ||\n      tx.fee !== 0n || tx.flags !== 0 || tx.requestedStateUnits < request.stateUnits ||\n      !equalAddresses(tx.readWriteAccounts, context.readWriteAddresses) ||\n      !equalAddresses(tx.readOnlyAccounts, context.readOnlyAddresses) ||\n      payload[0] !== 1 || !wrapper.ok || wrapper.consumed !== payload.length ||\n      !args || argsValidation.consumed !== payload.length - 1 ||\n      args.get_wallet_account_idx() !== context.walletAccountIdx ||\n      target?.get_program_idx() !== context.getAccountIndex(decodeAddress(request.program)) ||\n      !bytesEqual(Uint8Array.from(target.get_data()), bytes)) {\n    throw new Error('Wallet changed prerequisite payload, account layout or fee payer; refresh signing context before retrying');\n  }\n  return signed;\n}\n","import { Code, ConnectError } from '@connectrpc/connect';\nimport type { ThruClientContext } from '../../core/client';\nimport { AccountView, StateProofType, TransactionVmError } from '@thru/sdk/proto';\nimport { Pubkey, Signature } from '../../domain/primitives';\nimport { Transaction } from '../../domain/transactions/Transaction';\nimport { buildTransaction, buildAndSignTransaction, sendTransaction, getTransactionStatus, type BuildTransactionOptions } from '../transactions';\nimport { getAccount } from '../accounts';\nimport { getBlockHeight } from '../height';\nimport { generateStateProof, generateStateProofs, getStateRoots } from '../proofs';\nimport { cancelled, readAccount } from './accounts';\nimport { signWalletRequest, measureWalletRequest } from './wallet';\nimport { compressionInstructions } from './instructions';\nimport { CompressionError, type CompressionOptions, type DecompressionOptions, type CompressionTransaction, type CompressionJournal, type PendingCompressionTransaction } from './types';\nfunction notFound(error: unknown): boolean { return error instanceof ConnectError && error.code === Code.NotFound; }\nfunction pause(ms: number): Promise<void> { return new Promise(resolve => setTimeout(resolve, ms)); }\nexport type ReconcileOptions = Pick<CompressionOptions, 'journal' | 'signal'> & {\n  feePayer: Pick<KeypairFeePayer, 'publicKey'>;\n  walletAddress?: never;\n  signTransaction?: never;\n};\ntype KeypairFeePayer = import('../transactions').BuildAndSignTransactionOptions['feePayer'];\nexport type SessionOptions = DecompressionOptions | (CompressionOptions & ReconcileOptions);\nexport interface SubmissionState {\n  pending?: PendingCompressionTransaction;\n  loaded: boolean;\n  journal?: CompressionJournal;\n  tail: Promise<unknown>;\n}\nexport interface WorkflowOptions extends DecompressionOptionsBase {\n  session: CompressionSession;\n  programs: ReturnType<typeof compressionInstructions>;\n}\ntype DecompressionOptionsBase = Omit<DecompressionOptions, 'feePayer' | 'walletAddress' | 'signTransaction'>;\n// These outcomes occur after the pinned runtime's nonce advancement. Format,\n// expiry, missing-payer and nonce rejections do not advance it.\nconst ADVANCES_NONCE = new Set<number>([\n  TransactionVmError.TRANSACTION_VM_EXECUTE_SUCCESS,\n  TransactionVmError.TRANSACTION_VM_ERROR_INSUFFICIENT_FEE_PAYER_BALANCE,\n  TransactionVmError.TRANSACTION_VM_ERROR_VM_FAILED,\n  TransactionVmError.TRANSACTION_VM_ERROR_INVALID_PROGRAM_ACCOUNT,\n  TransactionVmError.TRANSACTION_VM_ERROR_VM_REVERT,\n  TransactionVmError.TRANSACTION_VM_ERROR_CU_EXHAUSTED,\n  TransactionVmError.TRANSACTION_VM_ERROR_SU_EXHAUSTED,\n]);\n\n\n/** Private concrete operation. RPC, building and sending use the SDK directly. */\nexport class CompressionSession {\n  readonly baseCtx: ThruClientContext;\n  readonly feePayer: string;\n  readonly authority: string;\n  readonly wallet: boolean;\n  readonly fee: bigint;\n  readonly timeout: number;\n  readonly interval: number;\n  constructor(readonly ctx: ThruClientContext, readonly options: SessionOptions,\n    readonly state: SubmissionState) {\n    this.baseCtx = ctx;\n    if (options.signal) this.ctx = { ...ctx, callOptions: { ...ctx.callOptions,\n      signal: ctx.callOptions?.signal ? AbortSignal.any([ctx.callOptions.signal, options.signal]) : options.signal } };\n    this.feePayer = Pubkey.from(options.feePayer.publicKey).toThruFmt();\n    this.wallet = options.walletAddress !== undefined;\n    this.authority = options.walletAddress ?? this.feePayer;\n    this.fee = options.fee ?? (this.wallet ? 0n : 1n);\n    this.timeout = options.timeoutMs ?? 60_000;\n    this.interval = options.pollIntervalMs ?? 250;\n    if (typeof this.fee !== 'bigint' || this.fee < 0n || this.fee > 0xffffffffffffffffn)\n      throw new RangeError('fee must be an unsigned 64-bit bigint');\n    if (this.wallet && this.fee !== 0n) throw new RangeError('Wallet intents currently support zero-fee transactions only');\n    if (!Number.isFinite(this.timeout) || this.timeout <= 0 || !Number.isFinite(this.interval) || this.interval <= 0)\n      throw new RangeError('timeoutMs and pollIntervalMs must be positive');\n  }\n  forCleanup(): CompressionSession {\n    // Drop only this operation's signal, preserving client options and shared pending/journal state.\n    return new CompressionSession(this.baseCtx, { ...this.options, signal: undefined }, this.state);\n  }\n  current(address: string, signal?: AbortSignal) { return readAccount(this.ctx, address, false, signal); }\n  historical(address: string, signal?: AbortSignal) { return readAccount(this.ctx, address, true, signal); }\n  async slot(signal?: AbortSignal) { cancelled(signal); return (await getBlockHeight(this.ctx)).locallyExecuted; }\n  async proof(address: string, kind: 'creating' | 'updating' | 'existing', signal?: AbortSignal) {\n    cancelled(signal);\n    const proofType = kind === 'existing' ? StateProofType.EXISTING : kind === 'creating' ? StateProofType.CREATING : StateProofType.UPDATING;\n    return (await generateStateProof(this.ctx, { address, proofType })).proof;\n  }\n  async proofs(addresses: readonly string[], kind: 'creating' | 'updating' | 'existing', signal?: AbortSignal) {\n    cancelled(signal);\n    const proofType = kind === 'existing' ? StateProofType.EXISTING : kind === 'creating' ? StateProofType.CREATING : StateProofType.UPDATING;\n    const outcomes = await generateStateProofs(this.ctx, { requests: addresses.map(address => ({ address, proofType })), signal });\n    return outcomes.map((outcome, index) => {\n      if (outcome.error) throw new CompressionError('RPC_ERROR', 'State proof unavailable', { address: addresses[index], cause: outcome.error });\n      return outcome.proof.proof;\n    });\n  }\n  private buildOptions(request: CompressionTransaction, measure: boolean, nonce?: bigint): BuildTransactionOptions {\n    return { feePayer: this.options.feePayer, program: request.program,\n      accounts: { readWrite: request.readWrite, readOnly: request.readOnly },\n      header: { fee: this.fee, stateUnits: request.stateUnits, computeUnits: request.computeUnits,\n        memoryUnits: 10_000, expiryAfter: 128, flags: request.flags,\n        ...(measure ? { nonce: 0n, startSlot: 0n, chainId: 1 } : { nonce }) },\n      feePayerStateProof: request.payerRestoration?.proof,\n      feePayerAccountMetaRaw: request.payerRestoration?.image.meta,\n      instructionData: async context => request.instructionData({\n        getAccountIndex: address => context.getAccountIndex(address),\n        instructionDataOffset: 112 + 32 * (context.accounts.length - 2),\n      }),\n    };\n  }\n  async measure(request: CompressionTransaction): Promise<number> {\n    if (this.options.walletAddress !== undefined) return measureWalletRequest(request, this.options);\n    return (await buildTransaction(this.ctx, this.buildOptions(request, true))).toWire().length;\n  }\n  private async sign(request: CompressionTransaction, nonce: bigint): Promise<Uint8Array> {\n    if (this.options.walletAddress !== undefined) return signWalletRequest(this.ctx, request, this.options, nonce);\n    if (!('privateKey' in this.options.feePayer) || !this.options.feePayer.privateKey)\n      throw new Error('Fee payer private key is required to sign the transaction');\n    const result = await buildAndSignTransaction(this.ctx, { ...this.buildOptions(request, false, nonce),\n      feePayer: { ...this.options.feePayer, privateKey: this.options.feePayer.privateKey } });\n    return result.rawTransaction;\n  }\n  private async clearPending(): Promise<void> {\n    await this.state.journal?.save(undefined);\n    this.state.pending = undefined;\n  }\n  private async payerState() {\n    try {\n      const payer = await getAccount(this.ctx, this.feePayer, { view: AccountView.META_ONLY });\n      if (payer.meta && !payer.meta.flags.isCompressed && !payer.meta.flags.isDeleted)\n        return { nonce: payer.meta.nonce ?? 0n, active: true };\n      if (payer.meta?.flags.isDeleted) return undefined;\n    } catch (error) { if (!notFound(error)) throw error; }\n    const image = await this.historical(this.feePayer);\n    return image && !image.deleted ? { nonce: image.nonce, active: false } : undefined;\n  }\n  private async reconcile(): Promise<{ vmError: number; userErrorCode: bigint } | \"expired\" | undefined> {\n    if (!this.state.pending) return undefined;\n    let result: { vmError: number; userErrorCode: bigint } | undefined;\n    try {\n      result = (await getTransactionStatus(this.ctx, this.state.pending.signature)).executionResult;\n    } catch (error) {\n      if (!notFound(error)) throw error;\n    }\n    if (result) {\n      // Wait for account indexing too, so the next build does not reuse a stale nonce.\n      if (ADVANCES_NONCE.has(result.vmError)) {\n        const payer = await this.payerState();\n        if (!payer || payer.nonce <= this.state.pending.nonce) return undefined;\n      }\n      await this.clearPending();\n      return result;\n    }\n    if ((await getBlockHeight(this.ctx)).finalized <= this.state.pending.validUntilSlot) return undefined;\n    // GetHeight is an observation clock. State roots are bounded by the RPC's\n    // durable export frontier; wait for it before trusting an unchanged nonce.\n    const { stateRoots } = await getStateRoots(this.ctx);\n    if (!stateRoots.some(root => root.slot > this.state.pending!.validUntilSlot)) return undefined;\n    const payer = await this.payerState();\n    // An advanced nonce can mean committed work whose status is still missing.\n    // Keep its signature until the actual result arrives, never infer failure.\n    if (!payer || payer.nonce !== this.state.pending.nonce) return undefined;\n    await this.clearPending();\n    return \"expired\";\n  }\n\n  async reconcilePending(signal?: AbortSignal): Promise<void> {\n    cancelled(signal);\n    if (!this.state.loaded) {\n      this.state.pending = await this.state.journal?.load();\n      this.state.loaded = true;\n    }\n    if (this.state.pending) {\n      try { await this.reconcile(); }\n      catch (cause) {\n        throw new CompressionError('TRANSACTION_UNCERTAIN', 'Unable to reconcile the previous submission',\n          { signature: this.state.pending.signature, cause });\n      }\n      if (this.state.pending) throw new CompressionError(\"TRANSACTION_UNCERTAIN\",\n        \"Previous submission is unresolved; reconcile its signature before reusing this payer\", { signature: this.state.pending.signature });\n    }\n    cancelled(signal);\n  }\n  async execute(request: CompressionTransaction, signal?: AbortSignal): Promise<string> {\n    await this.reconcilePending(signal);\n    const payer = await this.payerState();\n    if (!payer || (!payer.active && !request.payerRestoration))\n      throw new CompressionError(\"MISSING_ACCOUNT\", \"Compression prerequisites require an active funded fee payer\", { address: this.feePayer });\n    // Never sign a stale archived nonce if another actor already restored the payer.\n    if (request.payerRestoration && (payer.active || payer.nonce !== request.payerRestoration.image.nonce))\n      throw new CompressionError(\"TRANSACTION_FAILED\", \"Fee payer changed before restoration\", { address: this.feePayer });\n    const nonce = payer.nonce;\n    cancelled(signal);\n    const signed = await this.sign(request, nonce);\n    const unsigned = Transaction.fromWire(signed);\n    const signatureBytes = signed.slice(-64);\n    if (!signatureBytes.some(byte => byte !== 0)) throw new Error(\"Signer returned an unsigned transaction\");\n    const signature = Signature.from(signatureBytes).toThruFmt();\n    cancelled(signal);\n    this.state.pending = { signature, nonce, validUntilSlot: unsigned.startSlot + BigInt(unsigned.expiryAfter) };\n    await this.state.journal?.save(this.state.pending);\n    if (signal?.aborted) {\n      await this.clearPending(); // Definitely not sent yet.\n      cancelled(signal);\n    }\n    const deadline = Date.now() + this.timeout;\n    let submissionError: unknown;\n    try { await sendTransaction(this.ctx, signed); }\n    catch (error) { submissionError = error; }\n    // Even a failed transport response may have submitted the transaction. Never blindly resend it.\n    while (Date.now() < deadline) {\n      try {\n        const execution = await this.reconcile();\n        if (execution) {\n          if (execution === \"expired\") throw new CompressionError(\"TRANSACTION_FAILED\",\n            \"Transaction validity window durably finalized without consuming its payer nonce\", { signature });\n          if (execution.vmError !== 0 || execution.userErrorCode !== 0n)\n            throw new CompressionError(\"TRANSACTION_FAILED\", \"Compression prerequisite execution failed\",\n              { signature, vmError: execution.vmError, userErrorCode: execution.userErrorCode });\n          return signature;\n        }\n      } catch (error) {\n        if (error instanceof CompressionError) throw error;\n        submissionError = error;\n      }\n      if (signal?.aborted) break;\n      await pause(this.interval);\n    }\n    throw new CompressionError(\"TRANSACTION_UNCERTAIN\", \"Submission outcome is not confirmed; retain its signature for recovery\",\n      { signature, cause: submissionError });\n  }\n\n}\n","/* Auto-generated TypeScript code */\n/* WARNING: Do not modify this file directly. It is generated from ABI definitions. */\n\ntype __TnIrNode =\n  | { readonly op: \"zero\" }\n  | { readonly op: \"const\"; readonly value: bigint }\n  | { readonly op: \"field\"; readonly param: string }\n  | {\n      readonly op: \"add\";\n      readonly left: __TnIrNode;\n      readonly right: __TnIrNode;\n    }\n  | {\n      readonly op: \"sub\";\n      readonly left: __TnIrNode;\n      readonly right: __TnIrNode;\n    }\n  | {\n      readonly op: \"mul\";\n      readonly left: __TnIrNode;\n      readonly right: __TnIrNode;\n    }\n  | {\n      readonly op:\n        | \"div\"\n        | \"mod\"\n        | \"bitAnd\"\n        | \"bitOr\"\n        | \"bitXor\"\n        | \"leftShift\"\n        | \"rightShift\";\n      readonly left: __TnIrNode;\n      readonly right: __TnIrNode;\n    }\n  | {\n      readonly op: \"align\";\n      readonly alignment: number;\n      readonly node: __TnIrNode;\n    }\n  | {\n      readonly op: \"switch\";\n      readonly tag: string;\n      readonly cases: readonly { readonly value: number; readonly node: __TnIrNode }[];\n      readonly default?: __TnIrNode;\n    }\n  | {\n      readonly op: \"call\";\n      readonly typeName: string;\n      readonly args: readonly { readonly name: string; readonly source: string }[];\n    }\n  | {\n      readonly op: \"sumOverArray\";\n      readonly count: __TnIrNode;\n      readonly elementTypeName: string;\n      readonly fieldName: string;\n    };\n\ntype __TnIrContext = {\n  params: Record<string, bigint>;\n  buffer?: Uint8Array;\n  typeName?: string;\n};\n\ntype __TnValidateResult = {\n  ok: boolean;\n  code?: string;\n  consumed?: bigint;\n  params?: Record<string, bigint>;\n};\ntype __TnEvalResult =\n  | { ok: true; value: bigint }\n  | { ok: false; code: string };\ntype __TnBuilderLike = { build(): Uint8Array };\ntype __TnStructFieldInput =\n  | Uint8Array\n  | __TnBuilderLike\n  | { buffer?: Uint8Array }\n  | { asUint8Array?: () => Uint8Array }\n  | { bytes?: () => Uint8Array };\ntype __TnVariantDescriptor = {\n  readonly name: string;\n  readonly tag: number;\n  readonly payloadSize: number | null;\n  readonly payloadType?: string;\n  readonly createPayloadBuilder?: () => unknown | null;\n};\ntype __TnVariantSelectorResult<Parent> = {\n  select(\n    name: string\n  ): { writePayload(payload: Uint8Array | __TnBuilderLike): { finish(): Parent } };\n  finish(): Parent;\n};\ntype __TnFamWriterResult<Parent> = {\n  write(payload: Uint8Array | __TnBuilderLike): { finish(): Parent };\n  finish(): Parent;\n};\ntype __TnConsole = { warn?: (...args: unknown[]) => void };\n\nconst __tnWarnings = new Set<string>();\nconst __tnHasNativeBigInt = typeof BigInt === \"function\";\nconst __tnHasBigIntDataView =\n  typeof DataView !== \"undefined\" &&\n  typeof DataView.prototype.getBigInt64 === \"function\" &&\n  typeof DataView.prototype.getBigUint64 === \"function\" &&\n  typeof DataView.prototype.setBigInt64 === \"function\" &&\n  typeof DataView.prototype.setBigUint64 === \"function\";\nconst __tnConsole: __TnConsole | undefined =\n  typeof globalThis !== \"undefined\"\n    ? (globalThis as { console?: __TnConsole }).console\n    : undefined;\n\nfunction __tnLogWarn(message: string): void {\n  if (__tnConsole && typeof __tnConsole.warn === \"function\") {\n    __tnConsole.warn(message);\n  }\n}\n\nfunction __tnWarnOnce(message: string): void {\n  if (!__tnWarnings.has(message)) {\n    __tnWarnings.add(message);\n    __tnLogWarn(message);\n  }\n}\n\nfunction __tnResolveBuilderInput(\n  input: Uint8Array | __TnBuilderLike,\n  context: string\n): Uint8Array {\n  if (input instanceof Uint8Array) {\n    return new Uint8Array(input);\n  }\n  if (input && typeof (input as __TnBuilderLike).build === \"function\") {\n    const built = (input as __TnBuilderLike).build();\n    if (!(built instanceof Uint8Array)) {\n      throw new Error(`${context}: builder did not return Uint8Array`);\n    }\n    return new Uint8Array(built);\n  }\n  throw new Error(`${context}: expected Uint8Array or builder`);\n}\n\nfunction __tnResolveStructFieldInput(\n  input: __TnStructFieldInput,\n  context: string\n): Uint8Array {\n  if (\n    input instanceof Uint8Array ||\n    (input && typeof (input as __TnBuilderLike).build === \"function\")\n  ) {\n    return __tnResolveBuilderInput(input as Uint8Array | __TnBuilderLike, context);\n  }\n  if (input && typeof (input as { asUint8Array?: () => Uint8Array }).asUint8Array === \"function\") {\n    const bytes = (input as { asUint8Array: () => Uint8Array }).asUint8Array();\n    return new Uint8Array(bytes);\n  }\n  if (input && typeof (input as { bytes?: () => Uint8Array }).bytes === \"function\") {\n    const bytes = (input as { bytes: () => Uint8Array }).bytes();\n    return new Uint8Array(bytes);\n  }\n  if (input && (input as { buffer?: unknown }).buffer instanceof Uint8Array) {\n    return new Uint8Array((input as { buffer: Uint8Array }).buffer);\n  }\n  throw new Error(`${context}: expected Uint8Array, builder, or view-like value`);\n}\n\nfunction __tnMaybeCallBuilder(ctor: unknown): unknown | null {\n  if (!ctor) {\n    return null;\n  }\n  const builderFn = (ctor as { builder?: () => unknown }).builder;\n  return typeof builderFn === \"function\" ? builderFn() : null;\n}\n\nfunction __tnCreateVariantSelector<Parent, Descriptor extends __TnVariantDescriptor>(\n  parent: Parent,\n  descriptors: readonly Descriptor[],\n  assign: (descriptor: Descriptor, payload: Uint8Array) => void\n): __TnVariantSelectorResult<Parent> {\n  return {\n    select(name: string) {\n      const descriptor = descriptors.find((variant) => variant.name === name);\n      if (!descriptor) {\n        throw new Error(`Unknown variant '${name}'`);\n      }\n      return {\n        writePayload(payload: Uint8Array | __TnBuilderLike) {\n          const bytes = __tnResolveBuilderInput(\n            payload,\n            `variant ${descriptor.name}`\n          );\n          if (\n            descriptor.payloadSize !== null &&\n            bytes.length !== descriptor.payloadSize\n          ) {\n            throw new Error(\n              `Payload for ${descriptor.name} must be ${descriptor.payloadSize} bytes`\n            );\n          }\n          assign(descriptor, bytes);\n          return {\n            finish(): Parent {\n              return parent;\n            },\n          };\n        },\n      };\n    },\n    finish(): Parent {\n      return parent;\n    },\n  };\n}\n\nfunction __tnCreateFamWriter<Parent>(\n  parent: Parent,\n  fieldName: string,\n  assign: (bytes: Uint8Array) => void\n): __TnFamWriterResult<Parent> {\n  let hasWritten = false;\n  return {\n    write(payload: Uint8Array | __TnBuilderLike) {\n      const bytes = __tnResolveBuilderInput(\n        payload,\n        `flexible array '${fieldName}'`\n      );\n      const copy = new Uint8Array(bytes);\n      assign(copy);\n      hasWritten = true;\n      return {\n        finish(): Parent {\n          return parent;\n        },\n      };\n    },\n    finish(): Parent {\n      if (!hasWritten) {\n        throw new Error(\n          `flexible array '${fieldName}' requires write() before finish()`\n        );\n      }\n      return parent;\n    },\n  };\n}\n\nconst __tnMask32 = __tnHasNativeBigInt\n  ? (BigInt(1) << BigInt(32)) - BigInt(1)\n  : 0xffffffff;\nconst __tnSignBit32 = __tnHasNativeBigInt\n  ? BigInt(1) << BigInt(31)\n  : 0x80000000;\n\nfunction __tnToBigInt(value: number | bigint): bigint {\n  if (__tnHasNativeBigInt) {\n    return typeof value === \"bigint\" ? value : BigInt(value);\n  }\n  if (typeof value === \"bigint\") return value;\n  if (!Number.isFinite(value)) {\n    throw new Error(\"IR runtime received non-finite numeric input\");\n  }\n  if (!Number.isSafeInteger(value)) {\n    __tnWarnOnce(\n      `[thru-net] Precision loss while polyfilling BigInt (value=${value})`\n    );\n  }\n  return (value as unknown) as bigint;\n}\n\nfunction __tnBigIntToNumber(value: bigint, context: string): number {\n  if (__tnHasNativeBigInt) {\n    const converted = Number(value);\n    if (!Number.isFinite(converted)) {\n      throw new Error(`${context} overflowed Number range`);\n    }\n    return converted;\n  }\n  return value as unknown as number;\n}\n\nfunction __tnBigIntEquals(lhs: bigint, rhs: bigint): boolean {\n  if (__tnHasNativeBigInt) return lhs === rhs;\n  return (lhs as unknown as number) === (rhs as unknown as number);\n}\n\nfunction __tnBigIntGreaterThan(lhs: bigint, rhs: bigint): boolean {\n  if (__tnHasNativeBigInt) return lhs > rhs;\n  return (lhs as unknown as number) > (rhs as unknown as number);\n}\n\nfunction __tnPopcount(value: number | bigint): number {\n  let v =\n    typeof value === \"bigint\"\n      ? Number(value & BigInt(0xffffffff))\n      : Number(value) >>> 0;\n  v = v - ((v >>> 1) & 0x55555555);\n  v = (v & 0x33333333) + ((v >>> 2) & 0x33333333);\n  return (((v + (v >>> 4)) & 0x0f0f0f0f) * 0x01010101) >>> 24;\n}\n\nfunction __tnRaiseIrError(code: string, message: string): never {\n  const err = new Error(message);\n  (err as { code?: string }).code = code;\n  throw err;\n}\n\nfunction __tnCheckedAdd(lhs: bigint, rhs: bigint): bigint {\n  if (__tnHasNativeBigInt) {\n    const result = (lhs as bigint) + (rhs as bigint);\n    if (result < BigInt(0)) {\n      __tnRaiseIrError(\n        \"tn.ir.overflow\",\n        \"IR runtime detected negative size via addition\"\n      );\n    }\n    return result;\n  }\n  const left = lhs as unknown as number;\n  const right = rhs as unknown as number;\n  const sum = left + right;\n  if (sum < 0 || !Number.isFinite(sum)) {\n    __tnRaiseIrError(\n      \"tn.ir.overflow\",\n      \"IR runtime detected invalid addition result\"\n    );\n  }\n  if (!Number.isSafeInteger(sum)) {\n    __tnWarnOnce(\"[thru-net] Precision loss while polyfilling BigInt addition\");\n  }\n  return (sum as unknown) as bigint;\n}\n\nfunction __tnCheckedSub(lhs: bigint, rhs: bigint): bigint {\n  if (__tnHasNativeBigInt) {\n    const result = (lhs as bigint) - (rhs as bigint);\n    if (result < BigInt(0)) {\n      __tnRaiseIrError(\n        \"tn.ir.overflow\",\n        \"IR runtime detected negative size via subtraction\"\n      );\n    }\n    return result;\n  }\n  const left = lhs as unknown as number;\n  const right = rhs as unknown as number;\n  const diff = left - right;\n  if (diff < 0 || !Number.isFinite(diff)) {\n    __tnRaiseIrError(\n      \"tn.ir.overflow\",\n      \"IR runtime detected invalid subtraction result\"\n    );\n  }\n  if (!Number.isSafeInteger(diff)) {\n    __tnWarnOnce(\"[thru-net] Precision loss while polyfilling BigInt subtraction\");\n  }\n  return (diff as unknown) as bigint;\n}\n\nfunction __tnCheckedMul(lhs: bigint, rhs: bigint): bigint {\n  if (__tnHasNativeBigInt) {\n    const result = (lhs as bigint) * (rhs as bigint);\n    if (result < BigInt(0)) {\n      __tnRaiseIrError(\n        \"tn.ir.overflow\",\n        \"IR runtime detected negative size via multiplication\"\n      );\n    }\n    return result;\n  }\n  const left = lhs as unknown as number;\n  const right = rhs as unknown as number;\n  const product = left * right;\n  if (product < 0 || !Number.isFinite(product)) {\n    __tnRaiseIrError(\n      \"tn.ir.overflow\",\n      \"IR runtime detected invalid multiplication result\"\n    );\n  }\n  if (!Number.isSafeInteger(product)) {\n    __tnWarnOnce(\n      \"[thru-net] Precision loss while polyfilling BigInt multiplication\"\n    );\n  }\n  return (product as unknown) as bigint;\n}\n\nfunction __tnCheckedDiv(lhs: bigint, rhs: bigint): bigint {\n  if (__tnBigIntEquals(rhs, __tnToBigInt(0))) {\n    __tnRaiseIrError(\"tn.ir.overflow\", \"IR runtime division by zero\");\n  }\n  if (__tnHasNativeBigInt) return (lhs as bigint) / (rhs as bigint);\n  const quotient = Math.floor((lhs as unknown as number) / (rhs as unknown as number));\n  return (quotient as unknown) as bigint;\n}\n\nfunction __tnCheckedMod(lhs: bigint, rhs: bigint): bigint {\n  if (__tnBigIntEquals(rhs, __tnToBigInt(0))) {\n    __tnRaiseIrError(\"tn.ir.overflow\", \"IR runtime modulo by zero\");\n  }\n  if (__tnHasNativeBigInt) return (lhs as bigint) % (rhs as bigint);\n  return (((lhs as unknown as number) % (rhs as unknown as number)) as unknown) as bigint;\n}\n\nfunction __tnBitwise(\n  lhs: bigint,\n  rhs: bigint,\n  op: \"and\" | \"or\" | \"xor\"\n): bigint {\n  if (__tnHasNativeBigInt) {\n    if (op === \"and\") return (lhs as bigint) & (rhs as bigint);\n    if (op === \"or\") return (lhs as bigint) | (rhs as bigint);\n    return (lhs as bigint) ^ (rhs as bigint);\n  }\n  const left = lhs as unknown as number;\n  const right = rhs as unknown as number;\n  const maxU32 = 0xffffffff;\n  if (\n    !Number.isInteger(left) ||\n    !Number.isInteger(right) ||\n    left < 0 ||\n    right < 0 ||\n    left > maxU32 ||\n    right > maxU32\n  ) {\n    __tnRaiseIrError(\n      \"tn.ir.overflow\",\n      \"IR runtime bitwise operation requires BigInt for values outside u32 range\"\n    );\n  }\n  const result = op === \"and\" ? left & right : op === \"or\" ? left | right : left ^ right;\n  return ((result >>> 0) as unknown) as bigint;\n}\n\nfunction __tnCheckedShift(\n  lhs: bigint,\n  rhs: bigint,\n  direction: \"left\" | \"right\"\n): bigint {\n  const amount = __tnBigIntToNumber(rhs, \"IR shift amount\");\n  if (amount < 0 || amount >= 64 || !Number.isInteger(amount)) {\n    __tnRaiseIrError(\"tn.ir.overflow\", \"IR runtime invalid shift amount\");\n  }\n  if (__tnHasNativeBigInt) {\n    const shift = BigInt(amount);\n    return direction === \"left\" ? (lhs as bigint) << shift : (lhs as bigint) >> shift;\n  }\n  const value = lhs as unknown as number;\n  const result = direction === \"left\" ? value * 2 ** amount : Math.floor(value / 2 ** amount);\n  if (!Number.isSafeInteger(result)) {\n    __tnWarnOnce(\"[thru-net] Precision loss while polyfilling BigInt shift\");\n  }\n  return (result as unknown) as bigint;\n}\n\nfunction __tnAlign(value: bigint, alignment: number): bigint {\n  if (alignment <= 1) return value;\n  const alignBig = __tnToBigInt(alignment);\n  if (__tnHasNativeBigInt) {\n    const remainder = value % alignBig;\n    if (__tnBigIntEquals(remainder, __tnToBigInt(0))) {\n      return value;\n    }\n    const delta = alignBig - remainder;\n    return __tnCheckedAdd(value, delta);\n  }\n  const current = __tnBigIntToNumber(value, \"IR align\");\n  const alignNum = alignment >>> 0;\n  const remainder = current % alignNum;\n  const next = remainder === 0 ? current : current + (alignNum - remainder);\n  return __tnToBigInt(next);\n}\n\nfunction __tnSplitUint64(value: bigint): { high: number; low: number } {\n  if (__tnHasNativeBigInt) {\n    const low = Number(value & (__tnMask32 as bigint));\n    const high = Number((value >> BigInt(32)) & (__tnMask32 as bigint));\n    return { high, low };\n  }\n  const num = __tnBigIntToNumber(value, \"DataView.setBigUint64\");\n  const low = num >>> 0;\n  const high = Math.floor(num / 4294967296) >>> 0;\n  return { high, low };\n}\n\nfunction __tnSplitInt64(value: bigint): { high: number; low: number } {\n  if (__tnHasNativeBigInt) {\n    const low = Number(value & (__tnMask32 as bigint));\n    let high = Number((value >> BigInt(32)) & (__tnMask32 as bigint));\n    if ((BigInt(high) & (__tnSignBit32 as bigint)) !== BigInt(0)) {\n      high -= 0x100000000;\n    }\n    return { high, low };\n  }\n  const num = __tnBigIntToNumber(value, \"DataView.setBigInt64\");\n  const low = num >>> 0;\n  const high = Math.floor(num / 4294967296);\n  return { high, low };\n}\n\nfunction __tnPolyfillReadUint64(\n  view: DataView,\n  offset: number,\n  littleEndian: boolean\n): bigint {\n  const low = littleEndian\n    ? view.getUint32(offset, true)\n    : view.getUint32(offset + 4, false);\n  const high = littleEndian\n    ? view.getUint32(offset + 4, true)\n    : view.getUint32(offset, false);\n  if (__tnHasNativeBigInt) {\n    return (BigInt(high) << BigInt(32)) | BigInt(low);\n  }\n  const value = high * 4294967296 + low;\n  if (!Number.isSafeInteger(value)) {\n    __tnWarnOnce(\n      \"[thru-net] Precision loss while polyfilling DataView.getBigUint64\"\n    );\n  }\n  return (value as unknown) as bigint;\n}\n\nfunction __tnPolyfillReadInt64(\n  view: DataView,\n  offset: number,\n  littleEndian: boolean\n): bigint {\n  const low = littleEndian\n    ? view.getUint32(offset, true)\n    : view.getUint32(offset + 4, false);\n  const high = littleEndian\n    ? view.getInt32(offset + 4, true)\n    : view.getInt32(offset, false);\n  if (__tnHasNativeBigInt) {\n    return (BigInt(high) << BigInt(32)) | BigInt(low);\n  }\n  const value = high * 4294967296 + low;\n  if (!Number.isSafeInteger(value)) {\n    __tnWarnOnce(\n      \"[thru-net] Precision loss while polyfilling DataView.getBigInt64\"\n    );\n  }\n  return (value as unknown) as bigint;\n}\n\nfunction __tnPolyfillWriteUint64(\n  view: DataView,\n  offset: number,\n  value: bigint,\n  littleEndian: boolean\n): void {\n  const parts = __tnSplitUint64(value);\n  if (littleEndian) {\n    view.setUint32(offset, parts.low, true);\n    view.setUint32(offset + 4, parts.high, true);\n  } else {\n    view.setUint32(offset, parts.high, false);\n    view.setUint32(offset + 4, parts.low, false);\n  }\n}\n\nfunction __tnPolyfillWriteInt64(\n  view: DataView,\n  offset: number,\n  value: bigint,\n  littleEndian: boolean\n): void {\n  const parts = __tnSplitInt64(value);\n  if (littleEndian) {\n    view.setUint32(offset, parts.low >>> 0, true);\n    view.setInt32(offset + 4, parts.high | 0, true);\n  } else {\n    view.setInt32(offset, parts.high | 0, false);\n    view.setUint32(offset + 4, parts.low >>> 0, false);\n  }\n}\n\nif (typeof DataView !== \"undefined\" && !__tnHasBigIntDataView) {\n  const proto = DataView.prototype as unknown as Record<string, unknown>;\n  if (typeof proto.getBigUint64 !== \"function\") {\n    (proto as any).getBigUint64 = function (\n      offset: number,\n      littleEndian?: boolean\n    ): bigint {\n      __tnWarnOnce(\n        \"[thru-net] Polyfilling DataView.getBigUint64; precision may be lost\"\n      );\n      return __tnPolyfillReadUint64(this, offset, !!littleEndian);\n    };\n  }\n  if (typeof proto.getBigInt64 !== \"function\") {\n    (proto as any).getBigInt64 = function (\n      offset: number,\n      littleEndian?: boolean\n    ): bigint {\n      __tnWarnOnce(\n        \"[thru-net] Polyfilling DataView.getBigInt64; precision may be lost\"\n      );\n      return __tnPolyfillReadInt64(this, offset, !!littleEndian);\n    };\n  }\n  if (typeof proto.setBigUint64 !== \"function\") {\n    (proto as any).setBigUint64 = function (\n      offset: number,\n      value: bigint,\n      littleEndian?: boolean\n    ): void {\n      __tnWarnOnce(\n        \"[thru-net] Polyfilling DataView.setBigUint64; precision may be lost\"\n      );\n      __tnPolyfillWriteUint64(this, offset, value, !!littleEndian);\n    };\n  }\n  if (typeof proto.setBigInt64 !== \"function\") {\n    (proto as any).setBigInt64 = function (\n      offset: number,\n      value: bigint,\n      littleEndian?: boolean\n    ): void {\n      __tnWarnOnce(\n        \"[thru-net] Polyfilling DataView.setBigInt64; precision may be lost\"\n      );\n      __tnPolyfillWriteInt64(this, offset, value, !!littleEndian);\n    };\n  }\n  if (!__tnHasNativeBigInt) {\n    __tnWarnOnce(\n      \"[thru-net] BigInt is unavailable; falling back to lossy 64-bit polyfill\"\n    );\n  }\n}\n\nconst __tnFootprintRegistry: Record<\n  string,\n  (params: Record<string, bigint>) => bigint\n> = {};\nconst __tnValidateRegistry: Record<\n  string,\n  (buffer: Uint8Array, params: Record<string, bigint>) => __TnValidateResult\n> = {};\nconst __tnDynamicValidateRegistry: Record<\n  string,\n  (buffer: Uint8Array) => __TnValidateResult\n> = {};\n\nfunction __tnRegisterFootprint(\n  typeName: string,\n  fn: (params: Record<string, bigint>) => bigint\n): void {\n  __tnFootprintRegistry[typeName] = fn;\n}\n\nfunction __tnRegisterValidate(\n  typeName: string,\n  fn: (buffer: Uint8Array, params: Record<string, bigint>) => __TnValidateResult\n): void {\n  __tnValidateRegistry[typeName] = fn;\n}\n\nfunction __tnRegisterDynamicValidate(\n  typeName: string,\n  fn: (buffer: Uint8Array) => __TnValidateResult\n): void {\n  __tnDynamicValidateRegistry[typeName] = fn;\n}\n\nfunction __tnInvokeFootprint(\n  typeName: string,\n  params: Record<string, bigint>\n): bigint {\n  const fn = __tnFootprintRegistry[typeName];\n  if (!fn) throw new Error(`IR runtime missing footprint for ${typeName}`);\n  return fn(params);\n}\n\nfunction __tnInvokeValidate(\n  typeName: string,\n  buffer: Uint8Array,\n  params: Record<string, bigint>\n): __TnValidateResult {\n  const fn = __tnValidateRegistry[typeName];\n  if (!fn) throw new Error(`IR runtime missing validate helper for ${typeName}`);\n  return fn(buffer, params);\n}\n\nfunction __tnInvokeDynamicValidate(\n  typeName: string,\n  buffer: Uint8Array\n): __TnValidateResult {\n  const fn = __tnDynamicValidateRegistry[typeName];\n  if (!fn) throw new Error(`IR runtime missing dynamic validate helper for ${typeName}`);\n  return fn(buffer);\n}\n\nfunction __tnEvalFootprint(node: __TnIrNode, ctx: __TnIrContext): bigint {\n  return __tnEvalIrNode(node, ctx, __tnToBigInt(0));\n}\n\nfunction __tnTryEvalFootprint(\n  node: __TnIrNode,\n  ctx: __TnIrContext\n): __TnEvalResult {\n  return __tnTryEvalIr(node, ctx);\n}\n\nfunction __tnTryEvalIr(\n  node: __TnIrNode,\n  ctx: __TnIrContext\n): __TnEvalResult {\n  try {\n    return { ok: true, value: __tnEvalIrNode(node, ctx, __tnToBigInt(0)) };\n  } catch (err) {\n    return { ok: false, code: __tnNormalizeIrError(err) };\n  }\n}\n\nfunction __tnIsEvalError(result: __TnEvalResult): result is { ok: false; code: string } {\n  return result.ok === false;\n}\n\nfunction __tnValidateIrTree(\n  ir: { readonly typeName: string; readonly root: __TnIrNode },\n  buffer: Uint8Array,\n  params: Record<string, bigint>\n): __TnValidateResult {\n  const evalResult = __tnTryEvalIr(ir.root, {\n    params,\n    buffer,\n    typeName: ir.typeName,\n  });\n  if (__tnIsEvalError(evalResult)) {\n    return { ok: false, code: evalResult.code };\n  }\n  const required = evalResult.value;\n  const available = __tnToBigInt(buffer.length);\n  if (__tnBigIntGreaterThan(required, available)) {\n    return { ok: false, code: \"tn.buffer_too_small\", consumed: required };\n  }\n  return { ok: true, consumed: required };\n}\n\nfunction __tnEvalIrNode(\n  node: __TnIrNode,\n  ctx: __TnIrContext,\n  baseOffset: bigint\n): bigint {\n  switch (node.op) {\n    case \"zero\":\n      return __tnToBigInt(0);\n    case \"const\":\n      return node.value;\n    case \"field\": {\n      if (node.param === \"__buffer_size\" && ctx.buffer) {\n        return __tnToBigInt(ctx.buffer.length);\n      }\n      const val = ctx.params[node.param];\n      if (val === undefined) {\n        const prefix = ctx.typeName ? `${ctx.typeName}: ` : \"\";\n        __tnRaiseIrError(\n          \"tn.ir.missing_param\",\n          `${prefix}Missing IR parameter '${node.param}'`\n        );\n      }\n      return val;\n    }\n    case \"add\":\n      {\n        const left = __tnEvalIrNode(node.left, ctx, baseOffset);\n        const right = __tnEvalIrNode(\n          node.right,\n          ctx,\n          __tnCheckedAdd(baseOffset, left)\n        );\n        return __tnCheckedAdd(left, right);\n      }\n    case \"sub\":\n      return __tnCheckedSub(\n        __tnEvalIrNode(node.left, ctx, baseOffset),\n        __tnEvalIrNode(node.right, ctx, baseOffset)\n      );\n    case \"mul\":\n      return __tnCheckedMul(\n        __tnEvalIrNode(node.left, ctx, baseOffset),\n        __tnEvalIrNode(node.right, ctx, baseOffset)\n      );\n    case \"div\":\n      return __tnCheckedDiv(\n        __tnEvalIrNode(node.left, ctx, baseOffset),\n        __tnEvalIrNode(node.right, ctx, baseOffset)\n      );\n    case \"mod\":\n      return __tnCheckedMod(\n        __tnEvalIrNode(node.left, ctx, baseOffset),\n        __tnEvalIrNode(node.right, ctx, baseOffset)\n      );\n    case \"bitAnd\":\n      return __tnBitwise(\n        __tnEvalIrNode(node.left, ctx, baseOffset),\n        __tnEvalIrNode(node.right, ctx, baseOffset),\n        \"and\"\n      );\n    case \"bitOr\":\n      return __tnBitwise(\n        __tnEvalIrNode(node.left, ctx, baseOffset),\n        __tnEvalIrNode(node.right, ctx, baseOffset),\n        \"or\"\n      );\n    case \"bitXor\":\n      return __tnBitwise(\n        __tnEvalIrNode(node.left, ctx, baseOffset),\n        __tnEvalIrNode(node.right, ctx, baseOffset),\n        \"xor\"\n      );\n    case \"leftShift\":\n      return __tnCheckedShift(\n        __tnEvalIrNode(node.left, ctx, baseOffset),\n        __tnEvalIrNode(node.right, ctx, baseOffset),\n        \"left\"\n      );\n    case \"rightShift\":\n      return __tnCheckedShift(\n        __tnEvalIrNode(node.left, ctx, baseOffset),\n        __tnEvalIrNode(node.right, ctx, baseOffset),\n        \"right\"\n      );\n    case \"align\":\n      return __tnAlign(__tnEvalIrNode(node.node, ctx, baseOffset), node.alignment);\n    case \"switch\": {\n      const tagVal = ctx.params[node.tag];\n      if (tagVal === undefined) {\n        const prefix = ctx.typeName ? `${ctx.typeName}: ` : \"\";\n        __tnRaiseIrError(\n          \"tn.ir.missing_param\",\n          `${prefix}Missing IR switch tag '${node.tag}'`\n        );\n      }\n      const tagNumber = Number(tagVal);\n      for (const caseNode of node.cases) {\n        if (caseNode.value === tagNumber) {\n          return __tnEvalIrNode(caseNode.node, ctx, baseOffset);\n        }\n      }\n      if (node.default) return __tnEvalIrNode(node.default, ctx, baseOffset);\n      __tnRaiseIrError(\n        \"tn.ir.invalid_tag\",\n        `Unhandled IR switch value ${tagNumber} for '${node.tag}'`\n      );\n    }\n    case \"call\": {\n      const nestedParams: Record<string, bigint> = Object.create(null);\n      for (const arg of node.args) {\n        const val = ctx.params[arg.source];\n        if (val === undefined) {\n          const prefix = ctx.typeName ? `${ctx.typeName}: ` : \"\";\n          __tnRaiseIrError(\n            \"tn.ir.missing_param\",\n            `${prefix}Missing IR parameter '${arg.source}' for nested call`\n          );\n        }\n        nestedParams[arg.name] = val;\n      }\n      if (ctx.buffer) {\n        const nestedOffset = __tnBigIntToNumber(baseOffset, \"IR nested offset\");\n        const nestedResult = __tnInvokeValidate(\n          node.typeName,\n          ctx.buffer.subarray(nestedOffset),\n          nestedParams\n        );\n        if (!nestedResult.ok) {\n          const nestedCode =\n            nestedResult.code ?? `tn.ir.runtime_error: ${node.typeName}`;\n          const prefixed = nestedCode.startsWith(\"tn.\")\n            ? nestedCode\n            : `tn.ir.runtime_error: ${node.typeName} -> ${nestedCode}`;\n          __tnRaiseIrError(\n            prefixed,\n            `Nested validator ${node.typeName} failed`\n          );\n        }\n        if (nestedResult.consumed !== undefined) {\n          return nestedResult.consumed;\n        }\n      }\n      return __tnInvokeFootprint(node.typeName, nestedParams);\n    }\n    case \"sumOverArray\": {\n      if (!ctx.buffer) {\n        __tnRaiseIrError(\n          \"tn.ir.missing_buffer\",\n          `Jagged array '${node.fieldName}' requires buffer-backed validation`\n        );\n      }\n      const count = __tnBigIntToNumber(\n        __tnEvalIrNode(node.count, ctx, baseOffset),\n        `Jagged array '${node.fieldName}' count`\n      );\n      let cursor = __tnBigIntToNumber(baseOffset, \"IR jagged array offset\");\n      let total = __tnToBigInt(0);\n      for (let i = 0; i < count; i++) {\n        const result = __tnInvokeDynamicValidate(\n          node.elementTypeName,\n          ctx.buffer.subarray(cursor)\n        );\n        if (!result.ok || result.consumed === undefined) {\n          const code = result.code ?? \"tn.ir.runtime_error\";\n          __tnRaiseIrError(\n            code,\n            `Jagged array '${node.fieldName}' element ${i} failed validation`\n          );\n        }\n        cursor += __tnBigIntToNumber(result.consumed, \"IR jagged element size\");\n        total = __tnCheckedAdd(total, result.consumed);\n      }\n      return total;\n    }\n    default:\n      __tnRaiseIrError(\n        \"tn.ir.runtime_error\",\n        `Unsupported IR node ${(node as { op: string }).op}`\n      );\n  }\n}\n\nfunction __tnNormalizeIrError(err: unknown): string {\n  if (err && typeof err === \"object\" && \"code\" in err) {\n    const maybeCode = (err as { code?: string }).code;\n    if (typeof maybeCode === \"string\" && maybeCode.length > 0) {\n      return maybeCode;\n    }\n  }\n  const message =\n    err && typeof err === \"object\" && \"message\" in err\n      ? String((err as { message?: unknown }).message ?? \"\")\n      : typeof err === \"string\"\n      ? err\n      : \"\";\n  if (message.includes(\"Missing IR parameter\")) return \"tn.ir.missing_param\";\n  if (message.includes(\"Unhandled IR switch value\")) return \"tn.ir.invalid_tag\";\n  if (\n    message.includes(\"invalid\") ||\n    message.includes(\"overflow\") ||\n    message.includes(\"negative size\")\n  ) {\n    return \"tn.ir.overflow\";\n  }\n  if (message.length > 0) return `tn.ir.runtime_error: ${message}`;\n  return \"tn.ir.runtime_error\";\n}\n\n/* ----- TYPE DEFINITION FOR Hash ----- */\n\nconst __tn_ir_Hash = {\n  typeName: \"Hash\",\n  root: { op: \"const\", value: 32n }\n} as const;\n\nexport class Hash {\n  private view: DataView;\n\n  private constructor(private buffer: Uint8Array) {\n    this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n  }\n\n  static __tnCreateView(buffer: Uint8Array, opts?: { fieldContext?: Record<string, number | bigint> }): Hash {\n    if (!buffer || buffer.length === undefined) throw new Error(\"Hash.__tnCreateView requires a Uint8Array\");\n    return new Hash(new Uint8Array(buffer));\n  }\n\n  static builder(): HashBuilder {\n    return new HashBuilder();\n  }\n\n  static fromBuilder(builder: HashBuilder): Hash | null {\n    const buffer = builder.build();\n    return Hash.from_array(buffer);\n  }\n\n  get_bytes(): number[] {\n    const offset = 0;\n    const result: number[] = [];\n    for (let i = 0; i < 32; i++) {\n      result.push(this.view.getUint8((offset + i * 1)));\n    }\n    return result;\n  }\n\n  set_bytes(value: number[]): void {\n    const offset = 0;\n    if (value.length !== 32) {\n      throw new Error('Array length must be 32');\n    }\n    for (let i = 0; i < 32; i++) {\n      this.view.setUint8((offset + i * 1), value[i]);\n    }\n  }\n\n  get bytes(): number[] {\n    return this.get_bytes();\n  }\n\n  set bytes(value: number[]) {\n    this.set_bytes(value);\n  }\n\n  private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n    return __tnEvalFootprint(__tn_ir_Hash.root, { params: __tnParams });\n  }\n\n  private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n    return __tnValidateIrTree(__tn_ir_Hash, buffer, __tnParams);\n  }\n\n  static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n    return this.__tnFootprintInternal(__tnParams);\n  }\n\n  static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n    return this.__tnValidateInternal(buffer, __tnParams);\n  }\n\n  static footprintIr(): bigint {\n    return this.__tnFootprintInternal(Object.create(null));\n  }\n\n  static footprint(): number {\n    const irResult = this.footprintIr();\n      const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n    if (__tnBigIntGreaterThan(irResult, maxSafe)) {\n      throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for Hash');\n    }\n    return __tnBigIntToNumber(irResult, 'Hash::footprint');\n  }\n\n  static validate(buffer: Uint8Array, _opts?: { params?: never }): { ok: boolean; code?: string; consumed?: number } {\n    if (buffer.length < 32) return { ok: false, code: \"tn.buffer_too_small\", consumed: 32 };\n    return { ok: true, consumed: 32 };\n  }\n\n  static from_array(buffer: Uint8Array): Hash | null {\n    if (!buffer || buffer.length === undefined) {\n      return null;\n    }\n    const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    const validation = this.validate(buffer);\n    if (!validation.ok) {\n      return null;\n    }\n    return new Hash(buffer);\n  }\n\n}\n\nexport class HashBuilder {\n  private buffer: Uint8Array;\n  private view: DataView;\n\n  constructor() {\n    this.buffer = new Uint8Array(32);\n    this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n  }\n\n  set_bytes(values: number[]): this {\n    if (values.length !== 32) throw new Error(\"bytes expects 32 elements\");\n    for (let i = 0; i < values.length; i++) {\n      const byteOffset = 0 + i * 1;\n      this.view.setUint8(byteOffset, values[i]);\n    }\n    return this;\n  }\n\n  build(): Uint8Array {\n    return this.buffer.slice();\n  }\n\n  buildInto(target: Uint8Array, offset = 0): Uint8Array {\n    if (target.length - offset < this.buffer.length) throw new Error(\"target buffer too small\");\n    target.set(this.buffer, offset);\n    return target;\n  }\n\n  finish(): Hash {\n    const view = Hash.from_array(this.buffer.slice());\n    if (!view) throw new Error(\"failed to build Hash\");\n    return view;\n  }\n}\n\n__tnRegisterFootprint(\"Hash\", (params) => Hash.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"Hash\", (buffer, params) => Hash.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"Hash\", (buffer) => { const result = Hash.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n\n/* ----- TYPE DEFINITION FOR Pubkey ----- */\n\nconst __tn_ir_Pubkey = {\n  typeName: \"Pubkey\",\n  root: { op: \"const\", value: 32n }\n} as const;\n\nexport class Pubkey {\n  private view: DataView;\n\n  private constructor(private buffer: Uint8Array) {\n    this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n  }\n\n  static __tnCreateView(buffer: Uint8Array, opts?: { fieldContext?: Record<string, number | bigint> }): Pubkey {\n    if (!buffer || buffer.length === undefined) throw new Error(\"Pubkey.__tnCreateView requires a Uint8Array\");\n    return new Pubkey(new Uint8Array(buffer));\n  }\n\n  static builder(): PubkeyBuilder {\n    return new PubkeyBuilder();\n  }\n\n  static fromBuilder(builder: PubkeyBuilder): Pubkey | null {\n    const buffer = builder.build();\n    return Pubkey.from_array(buffer);\n  }\n\n  get_bytes(): number[] {\n    const offset = 0;\n    const result: number[] = [];\n    for (let i = 0; i < 32; i++) {\n      result.push(this.view.getUint8((offset + i * 1)));\n    }\n    return result;\n  }\n\n  set_bytes(value: number[]): void {\n    const offset = 0;\n    if (value.length !== 32) {\n      throw new Error('Array length must be 32');\n    }\n    for (let i = 0; i < 32; i++) {\n      this.view.setUint8((offset + i * 1), value[i]);\n    }\n  }\n\n  get bytes(): number[] {\n    return this.get_bytes();\n  }\n\n  set bytes(value: number[]) {\n    this.set_bytes(value);\n  }\n\n  private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n    return __tnEvalFootprint(__tn_ir_Pubkey.root, { params: __tnParams });\n  }\n\n  private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n    return __tnValidateIrTree(__tn_ir_Pubkey, buffer, __tnParams);\n  }\n\n  static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n    return this.__tnFootprintInternal(__tnParams);\n  }\n\n  static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n    return this.__tnValidateInternal(buffer, __tnParams);\n  }\n\n  static footprintIr(): bigint {\n    return this.__tnFootprintInternal(Object.create(null));\n  }\n\n  static footprint(): number {\n    const irResult = this.footprintIr();\n      const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n    if (__tnBigIntGreaterThan(irResult, maxSafe)) {\n      throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for Pubkey');\n    }\n    return __tnBigIntToNumber(irResult, 'Pubkey::footprint');\n  }\n\n  static validate(buffer: Uint8Array, _opts?: { params?: never }): { ok: boolean; code?: string; consumed?: number } {\n    if (buffer.length < 32) return { ok: false, code: \"tn.buffer_too_small\", consumed: 32 };\n    return { ok: true, consumed: 32 };\n  }\n\n  static from_array(buffer: Uint8Array): Pubkey | null {\n    if (!buffer || buffer.length === undefined) {\n      return null;\n    }\n    const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    const validation = this.validate(buffer);\n    if (!validation.ok) {\n      return null;\n    }\n    return new Pubkey(buffer);\n  }\n\n}\n\nexport class PubkeyBuilder {\n  private buffer: Uint8Array;\n  private view: DataView;\n\n  constructor() {\n    this.buffer = new Uint8Array(32);\n    this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n  }\n\n  set_bytes(values: number[]): this {\n    if (values.length !== 32) throw new Error(\"bytes expects 32 elements\");\n    for (let i = 0; i < values.length; i++) {\n      const byteOffset = 0 + i * 1;\n      this.view.setUint8(byteOffset, values[i]);\n    }\n    return this;\n  }\n\n  build(): Uint8Array {\n    return this.buffer.slice();\n  }\n\n  buildInto(target: Uint8Array, offset = 0): Uint8Array {\n    if (target.length - offset < this.buffer.length) throw new Error(\"target buffer too small\");\n    target.set(this.buffer, offset);\n    return target;\n  }\n\n  finish(): Pubkey {\n    const view = Pubkey.from_array(this.buffer.slice());\n    if (!view) throw new Error(\"failed to build Pubkey\");\n    return view;\n  }\n}\n\n__tnRegisterFootprint(\"Pubkey\", (params) => Pubkey.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"Pubkey\", (buffer, params) => Pubkey.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"Pubkey\", (buffer) => { const result = Pubkey.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n\n/* ----- TYPE DEFINITION FOR StateProofHeader ----- */\n\nconst __tn_ir_StateProofHeader = {\n  typeName: \"StateProofHeader\",\n  root: { op: \"const\", value: 40n }\n} as const;\n\nexport class StateProofHeader {\n  private view: DataView;\n\n  private constructor(private buffer: Uint8Array) {\n    this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n  }\n\n  static __tnCreateView(buffer: Uint8Array, opts?: { fieldContext?: Record<string, number | bigint> }): StateProofHeader {\n    if (!buffer || buffer.length === undefined) throw new Error(\"StateProofHeader.__tnCreateView requires a Uint8Array\");\n    return new StateProofHeader(new Uint8Array(buffer));\n  }\n\n  static builder(): StateProofHeaderBuilder {\n    return new StateProofHeaderBuilder();\n  }\n\n  static fromBuilder(builder: StateProofHeaderBuilder): StateProofHeader | null {\n    const buffer = builder.build();\n    return StateProofHeader.from_array(buffer);\n  }\n\n  get_type_slot(): bigint {\n    const offset = 0;\n    return this.view.getBigUint64(offset, true); /* little-endian */\n  }\n\n  set_type_slot(value: bigint): void {\n    const offset = 0;\n    this.view.setBigUint64(offset, value, true); /* little-endian */\n  }\n\n  get type_slot(): bigint {\n    return this.get_type_slot();\n  }\n\n  set type_slot(value: bigint) {\n    this.set_type_slot(value);\n  }\n\n  get_path_bitset(): Hash {\n    const offset = 8;\n    const slice = this.buffer.subarray(offset, offset + 32);\n    return Hash.from_array(slice)!;\n  }\n\n  set_path_bitset(value: Hash): void {\n    /* Copy bytes from source struct to this field */\n    const sourceBytes = (value as any).buffer as Uint8Array;\n    const offset = 8;\n    this.buffer.set(sourceBytes, offset);\n  }\n\n  get path_bitset(): Hash {\n    return this.get_path_bitset();\n  }\n\n  set path_bitset(value: Hash) {\n    this.set_path_bitset(value);\n  }\n\n  private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n    return __tnEvalFootprint(__tn_ir_StateProofHeader.root, { params: __tnParams });\n  }\n\n  private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n    return __tnValidateIrTree(__tn_ir_StateProofHeader, buffer, __tnParams);\n  }\n\n  static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n    return this.__tnFootprintInternal(__tnParams);\n  }\n\n  static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n    return this.__tnValidateInternal(buffer, __tnParams);\n  }\n\n  static footprintIr(): bigint {\n    return this.__tnFootprintInternal(Object.create(null));\n  }\n\n  static footprint(): number {\n    const irResult = this.footprintIr();\n      const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n    if (__tnBigIntGreaterThan(irResult, maxSafe)) {\n      throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for StateProofHeader');\n    }\n    return __tnBigIntToNumber(irResult, 'StateProofHeader::footprint');\n  }\n\n  static validate(buffer: Uint8Array, _opts?: { params?: never }): { ok: boolean; code?: string; consumed?: number } {\n    if (buffer.length < 40) return { ok: false, code: \"tn.buffer_too_small\", consumed: 40 };\n    return { ok: true, consumed: 40 };\n  }\n\n  static from_array(buffer: Uint8Array): StateProofHeader | null {\n    if (!buffer || buffer.length === undefined) {\n      return null;\n    }\n    const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    const validation = this.validate(buffer);\n    if (!validation.ok) {\n      return null;\n    }\n    return new StateProofHeader(buffer);\n  }\n\n}\n\nexport class StateProofHeaderBuilder {\n  private buffer: Uint8Array;\n  private view: DataView;\n\n  constructor() {\n    this.buffer = new Uint8Array(40);\n    this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n  }\n\n  set_type_slot(value: bigint): this {\n    const cast = __tnToBigInt(value);\n    this.view.setBigUint64(0, cast, true);\n    return this;\n  }\n\n  set_path_bitset(value: Uint8Array): this {\n    if (value.length !== 32) throw new Error(\"path_bitset expects 32 bytes\");\n    this.buffer.set(value, 8);\n    return this;\n  }\n\n  build(): Uint8Array {\n    return this.buffer.slice();\n  }\n\n  buildInto(target: Uint8Array, offset = 0): Uint8Array {\n    if (target.length - offset < this.buffer.length) throw new Error(\"target buffer too small\");\n    target.set(this.buffer, offset);\n    return target;\n  }\n\n  finish(): StateProofHeader {\n    const view = StateProofHeader.from_array(this.buffer.slice());\n    if (!view) throw new Error(\"failed to build StateProofHeader\");\n    return view;\n  }\n}\n\n__tnRegisterFootprint(\"StateProofHeader\", (params) => StateProofHeader.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"StateProofHeader\", (buffer, params) => StateProofHeader.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"StateProofHeader\", (buffer) => { const result = StateProofHeader.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n\n/* ----- TYPE DEFINITION FOR StateProof ----- */\n\nconst __tn_ir_StateProof = {\n  typeName: \"StateProof\",\n  root: { op: \"align\", alignment: 1, node: { op: \"add\", left: { op: \"align\", alignment: 1, node: { op: \"const\", value: 40n } }, right: { op: \"align\", alignment: 1, node: { op: \"field\", param: \"proof_body.payload_size\" } } } }\n} as const;\n\nexport class StateProof_proof_body_existing_Inner {\n  private view: DataView;\n  private __tnFieldContext: Record<string, number | bigint> | null = null;\n\n  private constructor(private buffer: Uint8Array, fieldContext?: Record<string, number | bigint>) {\n    this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    this.__tnFieldContext = fieldContext ?? null;\n  }\n\n  static __tnCreateView(buffer: Uint8Array, opts?: { fieldContext?: Record<string, number | bigint> }): StateProof_proof_body_existing_Inner {\n    if (!buffer || buffer.length === undefined) throw new Error(\"StateProof_proof_body_existing_Inner.__tnCreateView requires a Uint8Array\");\n    return new StateProof_proof_body_existing_Inner(new Uint8Array(buffer), opts?.fieldContext);\n  }\n\n  withFieldContext(context: Record<string, number | bigint>): this {\n    this.__tnFieldContext = context;\n    return this;\n  }\n\n  private __tnResolveFieldRef(path: string): number {\n    const getterName = `get_${path.replace(/[.]/g, '_')}`;\n    const getter = (this as any)[getterName];\n    if (typeof getter === \"function\") {\n      const value = getter.call(this);\n      return typeof value === \"bigint\" ? __tnBigIntToNumber(value, \"StateProof_proof_body_existing_Inner::__tnResolveFieldRef\") : value;\n    }\n    if (this.__tnFieldContext && Object.prototype.hasOwnProperty.call(this.__tnFieldContext, path)) {\n      const contextValue = this.__tnFieldContext[path];\n      return typeof contextValue === \"bigint\" ? __tnBigIntToNumber(contextValue, \"StateProof_proof_body_existing_Inner::__tnResolveFieldRef\") : contextValue;\n    }\n    throw new Error(\"StateProof_proof_body_existing_Inner: field reference '\" + path + \"' is not available; provide fieldContext when creating this view\");\n  }\n\n  get_sibling_hashes_length(): number {\n    return ((__tnPopcount(this.__tnResolveFieldRef(\"hdr.path_bitset.bytes.0\")) + __tnPopcount(this.__tnResolveFieldRef(\"hdr.path_bitset.bytes.1\"))) + (__tnPopcount(this.__tnResolveFieldRef(\"hdr.path_bitset.bytes.2\")) + __tnPopcount(this.__tnResolveFieldRef(\"hdr.path_bitset.bytes.3\"))));\n  }\n\n  get_sibling_hashes_at(index: number): Hash {\n    const offset = 0;\n    const slice = this.buffer.subarray((offset + index * 32), (offset + (index + 1) * 32));\n    return Hash.from_array(slice)!;\n  }\n\n  get_sibling_hashes(): Hash[] {\n    const len = this.get_sibling_hashes_length();\n    const result: Hash[] = [];\n    for (let i = 0; i < len; i++) {\n      result.push(this.get_sibling_hashes_at(i));\n    }\n    return result;\n  }\n\n  set_sibling_hashes_at(index: number, value: Hash): void {\n    const offset = 0;\n    const slice = this.buffer.subarray(offset + index * 32, offset + (index + 1) * 32);\n    slice.set(value['buffer']);\n  }\n\n  set_sibling_hashes(value: Hash[]): void {\n    const len = Math.min(this.get_sibling_hashes_length(), value.length);\n    for (let i = 0; i < len; i++) {\n      this.set_sibling_hashes_at(i, value[i]);\n    }\n  }\n\n  get sibling_hashes(): Hash[] {\n    return this.get_sibling_hashes();\n  }\n\n  set sibling_hashes(value: Hash[]) {\n    this.set_sibling_hashes(value);\n  }\n\n}\n\nexport class StateProof_proof_body_updating_Inner {\n  private view: DataView;\n  private __tnFieldContext: Record<string, number | bigint> | null = null;\n\n  private constructor(private buffer: Uint8Array, fieldContext?: Record<string, number | bigint>) {\n    this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    this.__tnFieldContext = fieldContext ?? null;\n  }\n\n  static __tnCreateView(buffer: Uint8Array, opts?: { fieldContext?: Record<string, number | bigint> }): StateProof_proof_body_updating_Inner {\n    if (!buffer || buffer.length === undefined) throw new Error(\"StateProof_proof_body_updating_Inner.__tnCreateView requires a Uint8Array\");\n    return new StateProof_proof_body_updating_Inner(new Uint8Array(buffer), opts?.fieldContext);\n  }\n\n  withFieldContext(context: Record<string, number | bigint>): this {\n    this.__tnFieldContext = context;\n    return this;\n  }\n\n  private __tnResolveFieldRef(path: string): number {\n    const getterName = `get_${path.replace(/[.]/g, '_')}`;\n    const getter = (this as any)[getterName];\n    if (typeof getter === \"function\") {\n      const value = getter.call(this);\n      return typeof value === \"bigint\" ? __tnBigIntToNumber(value, \"StateProof_proof_body_updating_Inner::__tnResolveFieldRef\") : value;\n    }\n    if (this.__tnFieldContext && Object.prototype.hasOwnProperty.call(this.__tnFieldContext, path)) {\n      const contextValue = this.__tnFieldContext[path];\n      return typeof contextValue === \"bigint\" ? __tnBigIntToNumber(contextValue, \"StateProof_proof_body_updating_Inner::__tnResolveFieldRef\") : contextValue;\n    }\n    throw new Error(\"StateProof_proof_body_updating_Inner: field reference '\" + path + \"' is not available; provide fieldContext when creating this view\");\n  }\n\n  get_existing_leaf_hash(): Hash {\n    const offset = 0;\n    const slice = this.buffer.subarray(offset, offset + 32);\n    return Hash.from_array(slice)!;\n  }\n\n  set_existing_leaf_hash(value: Hash): void {\n    /* Copy bytes from source struct to this field */\n    const sourceBytes = (value as any).buffer as Uint8Array;\n    const offset = 0;\n    this.buffer.set(sourceBytes, offset);\n  }\n\n  get existing_leaf_hash(): Hash {\n    return this.get_existing_leaf_hash();\n  }\n\n  set existing_leaf_hash(value: Hash) {\n    this.set_existing_leaf_hash(value);\n  }\n\n  get_sibling_hashes_length(): number {\n    return ((__tnPopcount(this.__tnResolveFieldRef(\"hdr.path_bitset.bytes.0\")) + __tnPopcount(this.__tnResolveFieldRef(\"hdr.path_bitset.bytes.1\"))) + (__tnPopcount(this.__tnResolveFieldRef(\"hdr.path_bitset.bytes.2\")) + __tnPopcount(this.__tnResolveFieldRef(\"hdr.path_bitset.bytes.3\"))));\n  }\n\n  get_sibling_hashes_at(index: number): Hash {\n    const offset = 32;\n    const slice = this.buffer.subarray((offset + index * 32), (offset + (index + 1) * 32));\n    return Hash.from_array(slice)!;\n  }\n\n  get_sibling_hashes(): Hash[] {\n    const len = this.get_sibling_hashes_length();\n    const result: Hash[] = [];\n    for (let i = 0; i < len; i++) {\n      result.push(this.get_sibling_hashes_at(i));\n    }\n    return result;\n  }\n\n  set_sibling_hashes_at(index: number, value: Hash): void {\n    const offset = 32;\n    const slice = this.buffer.subarray(offset + index * 32, offset + (index + 1) * 32);\n    slice.set(value['buffer']);\n  }\n\n  set_sibling_hashes(value: Hash[]): void {\n    const len = Math.min(this.get_sibling_hashes_length(), value.length);\n    for (let i = 0; i < len; i++) {\n      this.set_sibling_hashes_at(i, value[i]);\n    }\n  }\n\n  get sibling_hashes(): Hash[] {\n    return this.get_sibling_hashes();\n  }\n\n  set sibling_hashes(value: Hash[]) {\n    this.set_sibling_hashes(value);\n  }\n\n}\n\nexport class StateProof_proof_body_creation_Inner {\n  private view: DataView;\n  private __tnFieldContext: Record<string, number | bigint> | null = null;\n\n  private constructor(private buffer: Uint8Array, fieldContext?: Record<string, number | bigint>) {\n    this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    this.__tnFieldContext = fieldContext ?? null;\n  }\n\n  static __tnCreateView(buffer: Uint8Array, opts?: { fieldContext?: Record<string, number | bigint> }): StateProof_proof_body_creation_Inner {\n    if (!buffer || buffer.length === undefined) throw new Error(\"StateProof_proof_body_creation_Inner.__tnCreateView requires a Uint8Array\");\n    return new StateProof_proof_body_creation_Inner(new Uint8Array(buffer), opts?.fieldContext);\n  }\n\n  withFieldContext(context: Record<string, number | bigint>): this {\n    this.__tnFieldContext = context;\n    return this;\n  }\n\n  private __tnResolveFieldRef(path: string): number {\n    const getterName = `get_${path.replace(/[.]/g, '_')}`;\n    const getter = (this as any)[getterName];\n    if (typeof getter === \"function\") {\n      const value = getter.call(this);\n      return typeof value === \"bigint\" ? __tnBigIntToNumber(value, \"StateProof_proof_body_creation_Inner::__tnResolveFieldRef\") : value;\n    }\n    if (this.__tnFieldContext && Object.prototype.hasOwnProperty.call(this.__tnFieldContext, path)) {\n      const contextValue = this.__tnFieldContext[path];\n      return typeof contextValue === \"bigint\" ? __tnBigIntToNumber(contextValue, \"StateProof_proof_body_creation_Inner::__tnResolveFieldRef\") : contextValue;\n    }\n    throw new Error(\"StateProof_proof_body_creation_Inner: field reference '\" + path + \"' is not available; provide fieldContext when creating this view\");\n  }\n\n  get_existing_leaf_pubkey(): Pubkey {\n    const offset = 0;\n    const slice = this.buffer.subarray(offset, offset + 32);\n    return Pubkey.from_array(slice)!;\n  }\n\n  set_existing_leaf_pubkey(value: Pubkey): void {\n    /* Copy bytes from source struct to this field */\n    const sourceBytes = (value as any).buffer as Uint8Array;\n    const offset = 0;\n    this.buffer.set(sourceBytes, offset);\n  }\n\n  get existing_leaf_pubkey(): Pubkey {\n    return this.get_existing_leaf_pubkey();\n  }\n\n  set existing_leaf_pubkey(value: Pubkey) {\n    this.set_existing_leaf_pubkey(value);\n  }\n\n  get_existing_leaf_hash(): Hash {\n    const offset = 32;\n    const slice = this.buffer.subarray(offset, offset + 32);\n    return Hash.from_array(slice)!;\n  }\n\n  set_existing_leaf_hash(value: Hash): void {\n    /* Copy bytes from source struct to this field */\n    const sourceBytes = (value as any).buffer as Uint8Array;\n    const offset = 32;\n    this.buffer.set(sourceBytes, offset);\n  }\n\n  get existing_leaf_hash(): Hash {\n    return this.get_existing_leaf_hash();\n  }\n\n  set existing_leaf_hash(value: Hash) {\n    this.set_existing_leaf_hash(value);\n  }\n\n  get_sibling_hashes_length(): number {\n    return ((__tnPopcount(this.__tnResolveFieldRef(\"hdr.path_bitset.bytes.0\")) + __tnPopcount(this.__tnResolveFieldRef(\"hdr.path_bitset.bytes.1\"))) + (__tnPopcount(this.__tnResolveFieldRef(\"hdr.path_bitset.bytes.2\")) + __tnPopcount(this.__tnResolveFieldRef(\"hdr.path_bitset.bytes.3\"))));\n  }\n\n  get_sibling_hashes_at(index: number): Hash {\n    const offset = 64;\n    const slice = this.buffer.subarray((offset + index * 32), (offset + (index + 1) * 32));\n    return Hash.from_array(slice)!;\n  }\n\n  get_sibling_hashes(): Hash[] {\n    const len = this.get_sibling_hashes_length();\n    const result: Hash[] = [];\n    for (let i = 0; i < len; i++) {\n      result.push(this.get_sibling_hashes_at(i));\n    }\n    return result;\n  }\n\n  set_sibling_hashes_at(index: number, value: Hash): void {\n    const offset = 64;\n    const slice = this.buffer.subarray(offset + index * 32, offset + (index + 1) * 32);\n    slice.set(value['buffer']);\n  }\n\n  set_sibling_hashes(value: Hash[]): void {\n    const len = Math.min(this.get_sibling_hashes_length(), value.length);\n    for (let i = 0; i < len; i++) {\n      this.set_sibling_hashes_at(i, value[i]);\n    }\n  }\n\n  get sibling_hashes(): Hash[] {\n    return this.get_sibling_hashes();\n  }\n\n  set sibling_hashes(value: Hash[]) {\n    this.set_sibling_hashes(value);\n  }\n\n}\n\nexport class StateProof_proof_body_Inner {\n  private view: DataView;\n  private __tnFieldContext: Record<string, number | bigint> | null = null;\n  private constructor(private buffer: Uint8Array, private descriptor: __TnVariantDescriptor | null, fieldContext?: Record<string, number | bigint>) {\n    this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    this.__tnFieldContext = fieldContext ?? null;\n  }\n\n  static __tnCreate(payload: Uint8Array, descriptor: __TnVariantDescriptor | null, fieldContext?: Record<string, number | bigint>): StateProof_proof_body_Inner {\n    return new StateProof_proof_body_Inner(new Uint8Array(payload), descriptor, fieldContext);\n  }\n\n  bytes(): Uint8Array {\n    return new Uint8Array(this.buffer);\n  }\n\n  variant(): __TnVariantDescriptor | null {\n    return this.descriptor;\n  }\n\n  asExisting(): StateProof_proof_body_existing_Inner | null {\n    if (!this.descriptor || this.descriptor.tag !== 0) return null;\n    return StateProof_proof_body_existing_Inner.__tnCreateView(new Uint8Array(this.buffer), { fieldContext: this.__tnFieldContext ?? undefined });\n  }\n\n  asUpdating(): StateProof_proof_body_updating_Inner | null {\n    if (!this.descriptor || this.descriptor.tag !== 1) return null;\n    return StateProof_proof_body_updating_Inner.__tnCreateView(new Uint8Array(this.buffer), { fieldContext: this.__tnFieldContext ?? undefined });\n  }\n\n  asCreation(): StateProof_proof_body_creation_Inner | null {\n    if (!this.descriptor || this.descriptor.tag !== 2) return null;\n    return StateProof_proof_body_creation_Inner.__tnCreateView(new Uint8Array(this.buffer), { fieldContext: this.__tnFieldContext ?? undefined });\n  }\n\n}\n\nexport class StateProof {\n  private view: DataView;\n  private __tnFieldContext: Record<string, number | bigint> | null = null;\n  private static readonly __tnFieldOffset_proof_body = 40;\n  private __tnParams: StateProof.Params;\n  private __tnDerivedParams: Record<string, bigint> | null = null;\n\n  private constructor(private buffer: Uint8Array, params?: StateProof.Params, fieldContext?: Record<string, number | bigint>) {\n    this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    this.__tnFieldContext = fieldContext ?? null;\n    if (params) {\n      this.__tnParams = params;\n    } else {\n      const derived = StateProof.__tnExtractParams(this.view, buffer);\n      if (!derived) {\n        throw new Error(\"StateProof: failed to derive dynamic parameters\");\n      }\n      this.__tnParams = derived.params;\n      this.__tnDerivedParams = derived.derived;\n    }\n  }\n\n  static __tnCreateView(buffer: Uint8Array, opts?: { params?: StateProof.Params, fieldContext?: Record<string, number | bigint> }): StateProof {\n    if (!buffer || buffer.length === undefined) throw new Error(\"StateProof.__tnCreateView requires a Uint8Array\");\n    let params = opts?.params ?? null;\n    let derivedRecord: Record<string, bigint> | null = null;\n    if (!params) {\n      const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n      const derived = StateProof.__tnExtractParams(view, buffer);\n      if (!derived) throw new Error(\"StateProof.__tnCreateView: failed to derive params\");\n      params = derived.params;\n      derivedRecord = derived.derived;\n    }\n    const instance = new StateProof(new Uint8Array(buffer), params, opts?.fieldContext);\n    if (derivedRecord) instance.__tnDerivedParams = derivedRecord;\n    return instance;\n  }\n\n  dynamicParams(): StateProof.Params {\n    return this.__tnParams;\n  }\n\n  withFieldContext(context: Record<string, number | bigint>): this {\n    this.__tnFieldContext = context;\n    return this;\n  }\n\n  private __tnResolveFieldRef(path: string): number {\n    const getterName = `get_${path.replace(/[.]/g, '_')}`;\n    const getter = (this as any)[getterName];\n    if (typeof getter === \"function\") {\n      const value = getter.call(this);\n      return typeof value === \"bigint\" ? __tnBigIntToNumber(value, \"StateProof::__tnResolveFieldRef\") : value;\n    }\n    if (this.__tnFieldContext && Object.prototype.hasOwnProperty.call(this.__tnFieldContext, path)) {\n      const contextValue = this.__tnFieldContext[path];\n      return typeof contextValue === \"bigint\" ? __tnBigIntToNumber(contextValue, \"StateProof::__tnResolveFieldRef\") : contextValue;\n    }\n    throw new Error(\"StateProof: field reference '\" + path + \"' is not available; provide fieldContext when creating this view\");\n  }\n\n  static builder(): StateProofBuilder {\n    return new StateProofBuilder();\n  }\n\n  static fromBuilder(builder: StateProofBuilder): StateProof | null {\n    const buffer = builder.build();\n    const params = builder.dynamicParams();\n    return StateProof.from_array(buffer, { params });\n  }\n\n  static readonly proof_bodyVariantDescriptors = Object.freeze([\n    {\n      name: \"existing\",\n      tag: 0,\n      payloadSize: null,\n      payloadType: \"StateProof::proof_body::existing\",\n      createPayloadBuilder: () => null,\n    },\n    {\n      name: \"updating\",\n      tag: 1,\n      payloadSize: null,\n      payloadType: \"StateProof::proof_body::updating\",\n      createPayloadBuilder: () => null,\n    },\n    {\n      name: \"creation\",\n      tag: 2,\n      payloadSize: null,\n      payloadType: \"StateProof::proof_body::creation\",\n      createPayloadBuilder: () => null,\n    },\n  ] as const);\n\n  static __tnComputeSequentialLayout(view: DataView, buffer: Uint8Array): { params: Record<string, bigint> | null; offsets: Record<string, number> | null; derived: Record<string, bigint> | null } | null {\n    const derived: Record<string, bigint> = Object.create(null);\n    const __tnLength = buffer.length;\n    let __tnParamSeq_proof_body_payload_size: bigint | null = null;\n    let __tnCursorMutable = 0;\n    if (__tnLength < 8) return null;\n    const __tnRef_hdr_type_slot = view.getBigUint64(0, true);\n    if (__tnCursorMutable + 40 > __tnLength) return null;\n    __tnCursorMutable += 40;\n    const __tnEnumTagValue_proof_body = Math.trunc(Number(((__tnRef_hdr_type_slot >> 62n) & 3n)));\n    if (!Number.isFinite(__tnEnumTagValue_proof_body)) return null;\n    let __tnEnumSize_proof_body = 0;\n    switch (Number(__tnEnumTagValue_proof_body)) {\n      case 0: break;\n      case 1: break;\n      case 2: break;\n      default: return null;\n    }\n    if (__tnCursorMutable > __tnLength) return null;\n    __tnEnumSize_proof_body = __tnLength - __tnCursorMutable;\n    __tnCursorMutable = __tnLength;\n    derived[\"StateProof__proof_body_computed_tag\"] = __tnToBigInt(__tnEnumTagValue_proof_body);\n    __tnParamSeq_proof_body_payload_size = __tnToBigInt(__tnEnumSize_proof_body);\n    const params: Record<string, bigint> = Object.create(null);\n    if (__tnParamSeq_proof_body_payload_size === null) return null;\n    params[\"proof_body_payload_size\"] = __tnParamSeq_proof_body_payload_size as bigint;\n    return { params, offsets: null, derived: derived };\n  }\n\n  private static __tnExtractParams(view: DataView, buffer: Uint8Array): { params: StateProof.Params; derived: Record<string, bigint> | null } | null {\n    if (buffer.length < 8) {\n      return null;\n    }\n    const __tnParam_proof_body_hdr_type_slot = __tnToBigInt(view.getBigUint64(0, true));\n    const __tnLayout = StateProof.__tnComputeSequentialLayout(view, buffer);\n    if (!__tnLayout || !__tnLayout.params) return null;\n    const __tnSeqParams = __tnLayout.params;\n    const __tnParamSeq_proof_body_payload_size = __tnSeqParams[\"proof_body_payload_size\"];\n    if (__tnParamSeq_proof_body_payload_size === undefined) return null;\n    const __tnExtractedParams = StateProof.Params.fromValues({\n      proof_body_hdr_type_slot: __tnParam_proof_body_hdr_type_slot,\n      proof_body_payload_size: __tnParamSeq_proof_body_payload_size as bigint,\n    });\n    return { params: __tnExtractedParams, derived: (__tnLayout && __tnLayout.derived ? __tnLayout.derived : null) };\n  }\n\n  private __tnEnsureDerivedParams(): Record<string, bigint> | null {\n    if (this.__tnDerivedParams) return this.__tnDerivedParams;\n    const layout = StateProof.__tnComputeSequentialLayout(this.view, this.buffer);\n    if (!layout || !layout.derived) return null;\n    this.__tnDerivedParams = layout.derived;\n    return this.__tnDerivedParams;\n  }\n\n  private __tnReadDerivedParam(key: string): number | null {\n    const params = this.__tnEnsureDerivedParams();\n    if (!params) return null;\n    const value = params[key];\n    if (value === undefined) return null;\n    return __tnBigIntToNumber(value, \"StateProof::__tnReadDerivedParam\");\n  }\n\n  get_hdr(): StateProofHeader {\n    const offset = 0;\n    const slice = this.buffer.subarray(offset, offset + 40);\n    return StateProofHeader.from_array(slice)!;\n  }\n\n  set_hdr(value: StateProofHeader): void {\n    /* Copy bytes from source struct to this field */\n    const sourceBytes = (value as any).buffer as Uint8Array;\n    const offset = 0;\n    this.buffer.set(sourceBytes, offset);\n  }\n\n  get hdr(): StateProofHeader {\n    return this.get_hdr();\n  }\n\n  set hdr(value: StateProofHeader) {\n    this.set_hdr(value);\n  }\n\n  get_proof_body_computed_tag(): number {\n    let tag = this.__tnReadDerivedParam(\"StateProof__proof_body_computed_tag\");\n    if (tag === null) {\n      tag = (((this.__tnResolveFieldRef(\"hdr.type_slot\") >> 62) & 3));\n    }\n    return tag;\n  }\n\n  proofBodyVariant(): typeof StateProof.proof_bodyVariantDescriptors[number] | null {\n    const tag = this.get_proof_body_computed_tag();\n    return StateProof.proof_bodyVariantDescriptors.find((variant) => variant.tag === tag) ?? null;\n  }\n\n  proof_body(): StateProof_proof_body_Inner {\n    const descriptor = this.proofBodyVariant();\n    if (!descriptor) throw new Error(\"StateProof: unknown proof_body variant\");\n    const offset = StateProof.__tnFieldOffset_proof_body;\n    const remaining = this.buffer.length - offset;\n    const payloadLength = descriptor.payloadSize ?? remaining;\n    if (payloadLength < 0 || offset + payloadLength > this.buffer.length) throw new Error(\"StateProof: payload exceeds buffer bounds\");\n    const slice = this.buffer.subarray(offset, offset + payloadLength);\n    const __tnAutoContext: Record<string, number | bigint> = {\n      \"hdr.path_bitset.bytes.0\": this.view.getUint8(8),\n      \"hdr.path_bitset.bytes.1\": this.view.getUint8(9),\n      \"hdr.path_bitset.bytes.2\": this.view.getUint8(10),\n      \"hdr.path_bitset.bytes.3\": this.view.getUint8(11),\n    };\n    const __tnMergedContext = this.__tnFieldContext ? { ...__tnAutoContext, ...this.__tnFieldContext } : __tnAutoContext;\n    return StateProof_proof_body_Inner.__tnCreate(slice, descriptor, __tnMergedContext);\n  }\n  private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n    return __tnEvalFootprint(__tn_ir_StateProof.root, { params: __tnParams });\n  }\n\n  private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n    return __tnValidateIrTree(__tn_ir_StateProof, buffer, __tnParams);\n  }\n\n  static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n    return this.__tnFootprintInternal(__tnParams);\n  }\n\n  static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n    return this.__tnValidateInternal(buffer, __tnParams);\n  }\n\n  static footprintIr(proof_body_hdr_type_slot: number | bigint, proof_body_payload_size: number | bigint): bigint {\n    const params = StateProof.Params.fromValues({\n      proof_body_hdr_type_slot: proof_body_hdr_type_slot,\n      proof_body_payload_size: proof_body_payload_size,\n    });\n    return this.footprintIrFromParams(params);\n  }\n\n  private static __tnPackParams(params: StateProof.Params): Record<string, bigint> {\n    const record: Record<string, bigint> = Object.create(null);\n    record[\"proof_body.hdr.type_slot\"] = params.proof_body_hdr_type_slot;\n    record[\"proof_body.payload_size\"] = params.proof_body_payload_size;\n    return record;\n  }\n\n  static footprintIrFromParams(params: StateProof.Params): bigint {\n    const __tnParams = this.__tnPackParams(params);\n    return this.__tnFootprintInternal(__tnParams);\n  }\n\n  static footprintFromParams(params: StateProof.Params): number {\n    const irResult = this.footprintIrFromParams(params);\n    const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n    if (__tnBigIntGreaterThan(irResult, maxSafe)) throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for StateProof');\n    return __tnBigIntToNumber(irResult, 'StateProof::footprintFromParams');\n  }\n\n  static footprintFromValues(input: { proof_body_hdr_type_slot: number | bigint, proof_body_payload_size: number | bigint }): number {\n    const params = StateProof.params(input);\n    return this.footprintFromParams(params);\n  }\n\n  static footprint(params: StateProof.Params): number {\n    return this.footprintFromParams(params);\n  }\n\n  static validate(buffer: Uint8Array, opts?: { params?: StateProof.Params }): { ok: boolean; code?: string; consumed?: number; params?: StateProof.Params } {\n    if (!buffer || buffer.length === undefined) {\n      return { ok: false, code: \"tn.invalid_buffer\" };\n    }\n    const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    let params = opts?.params ?? null;\n    if (!params) {\n      const extracted = this.__tnExtractParams(view, buffer);\n      if (!extracted) return { ok: false, code: \"tn.param_extraction_failed\" };\n      params = extracted.params;\n    }\n    const __tnParamsRec = this.__tnPackParams(params);\n    const irResult = this.__tnValidateInternal(buffer, __tnParamsRec);\n    if (!irResult.ok) {\n      return { ok: false, code: irResult.code, consumed: irResult.consumed ? __tnBigIntToNumber(irResult.consumed, 'StateProof::validate') : undefined, params };\n    }\n    const consumed = irResult.consumed ? __tnBigIntToNumber(irResult.consumed, 'StateProof::validate') : undefined;\n    return { ok: true, consumed, params };\n  }\n\n  static from_array(buffer: Uint8Array, opts?: { params?: StateProof.Params }): StateProof | null {\n    if (!buffer || buffer.length === undefined) {\n      return null;\n    }\n    const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    let params = opts?.params ?? null;\n    let derivedRecord: Record<string, bigint> | null = null;\n    if (!params) {\n      const derived = this.__tnExtractParams(view, buffer);\n      if (!derived) return null;\n      params = derived.params;\n      derivedRecord = derived.derived;\n    }\n    const validation = this.validate(buffer, { params });\n    if (!validation.ok) {\n      return null;\n    }\n    const cached = validation.params ?? params;\n    const state = new StateProof(buffer, cached);\n    if (derivedRecord) state.__tnDerivedParams = derivedRecord;\n    return state;\n  }\n\n\n}\n\nexport namespace StateProof {\n  export type Params = {\n    /** ABI path: proof_body.hdr.type_slot */\n    readonly proof_body_hdr_type_slot: bigint;\n    /** ABI path: proof_body.payload_size */\n    readonly proof_body_payload_size: bigint;\n  };\n\n  export const ParamKeys = Object.freeze({\n    proof_body_hdr_type_slot: \"proof_body.hdr.type_slot\",\n    proof_body_payload_size: \"proof_body.payload_size\",\n  } as const);\n\n  export const Params = {\n    fromValues(input: { proof_body_hdr_type_slot: number | bigint, proof_body_payload_size: number | bigint }): Params {\n      return {\n        proof_body_hdr_type_slot: __tnToBigInt(input.proof_body_hdr_type_slot),\n        proof_body_payload_size: __tnToBigInt(input.proof_body_payload_size),\n      };\n    },\n    fromBuilder(source: { dynamicParams(): Params } | { params: Params } | Params): Params {\n      if ((source as { dynamicParams?: () => Params }).dynamicParams) {\n        return (source as { dynamicParams(): Params }).dynamicParams();\n      }\n      if ((source as { params?: Params }).params) {\n        return (source as { params: Params }).params;\n      }\n      return source as Params;\n    }\n  };\n\n  export function params(input: { proof_body_hdr_type_slot: number | bigint, proof_body_payload_size: number | bigint }): Params {\n    return Params.fromValues(input);\n  }\n}\n\nexport class StateProofBuilder {\n  private __tnPrefixBuffer: Uint8Array;\n  private __tnPrefixView: DataView;\n  private __tnPayload_proof_body: { descriptor: typeof StateProof.proof_bodyVariantDescriptors[number]; bytes: Uint8Array } | null = null;\n  private __tnCachedParams: StateProof.Params | null = null;\n  private __tnLastBuffer: Uint8Array | null = null;\n  private __tnLastParams: StateProof.Params | null = null;\n  private __tnVariantSelector_proof_body?: __TnVariantSelectorResult<StateProofBuilder>;\n\n  constructor() {\n    this.__tnPrefixBuffer = new Uint8Array(40);\n    this.__tnPrefixView = new DataView(this.__tnPrefixBuffer.buffer, this.__tnPrefixBuffer.byteOffset, this.__tnPrefixBuffer.byteLength);\n  }\n\n  set_hdr(value: Uint8Array): this {\n    if (value.length !== 40) throw new Error(\"hdr expects 40 bytes\");\n    this.__tnPrefixBuffer.set(value, 0);\n    this.__tnInvalidate();\n    return this;\n  }\n\n  private __tnInvalidate(): void {\n    this.__tnCachedParams = null;\n    this.__tnLastBuffer = null;\n    this.__tnLastParams = null;\n  }\n\n  proof_body(): __TnVariantSelectorResult<StateProofBuilder> {\n    if (!this.__tnVariantSelector_proof_body) {\n      this.__tnVariantSelector_proof_body = __tnCreateVariantSelector(this, StateProof.proof_bodyVariantDescriptors, (descriptor, payload) => {\n        this.__tnPayload_proof_body = { descriptor, bytes: new Uint8Array(payload) };\n        this.__tnInvalidate();\n      });\n    }\n    return this.__tnVariantSelector_proof_body!;\n  }\n\n  build(): Uint8Array {\n    const params = this.__tnComputeParams();\n    if (!this.__tnPayload_proof_body) throw new Error(\"StateProofBuilder: payload variant not selected\");\n    const payloadLength = this.__tnPayload_proof_body.bytes.length;\n    const requiredSize = 40 + payloadLength;\n    const footprintSize = StateProof.footprintFromParams(params);\n    const size = Math.max(requiredSize, footprintSize);\n    const buffer = new Uint8Array(size);\n    this.__tnWriteInto(buffer);\n    this.__tnValidateOrThrow(buffer, params);\n    return buffer;\n  }\n\n  buildInto(target: Uint8Array, offset = 0): Uint8Array {\n    const params = this.__tnComputeParams();\n    if (!this.__tnPayload_proof_body) throw new Error(\"StateProofBuilder: payload variant not selected\");\n    const payloadLength = this.__tnPayload_proof_body.bytes.length;\n    const requiredSize = 40 + payloadLength;\n    const footprintSize = StateProof.footprintFromParams(params);\n    const size = Math.max(requiredSize, footprintSize);\n    if (target.length - offset < size) throw new Error(\"StateProofBuilder: target buffer too small\");\n    const slice = target.subarray(offset, offset + size);\n    this.__tnWriteInto(slice);\n    this.__tnValidateOrThrow(slice, params);\n    return target;\n  }\n\n  finish(): StateProof {\n    const buffer = this.build();\n    const params = this.__tnLastParams ?? this.__tnComputeParams();\n    const view = StateProof.from_array(buffer, { params });\n    if (!view) throw new Error(\"StateProofBuilder: failed to finalize view\");\n    return view;\n  }\n\n  finishView(): StateProof {\n    return this.finish();\n  }\n\n  dynamicParams(): StateProof.Params {\n    return this.__tnComputeParams();\n  }\n\n  private __tnComputeParams(): StateProof.Params {\n    if (this.__tnCachedParams) return this.__tnCachedParams;\n    const params = StateProof.Params.fromValues({\n      proof_body_hdr_type_slot: (() => { const slice = this.__tnPrefixBuffer.subarray(0, 40); const header = StateProofHeader.from_array(slice); if (!header) throw new Error(\"StateProofBuilder: field 'hdr' must be set before build\"); return __tnToBigInt(header.get_type_slot()); })(),\n      proof_body_payload_size: (() => { if (!this.__tnPayload_proof_body) throw new Error(\"StateProofBuilder: payload 'proof_body' must be selected before build\"); return __tnToBigInt(this.__tnPayload_proof_body.bytes.length); })(),\n    });\n    this.__tnCachedParams = params;\n    return params;\n  }\n\n  private __tnWriteInto(target: Uint8Array): void {\n    if (!this.__tnPayload_proof_body) throw new Error(\"StateProofBuilder: payload variant not selected\");\n    const view = new DataView(target.buffer, target.byteOffset, target.byteLength);\n    target.set(this.__tnPrefixBuffer, 0);\n    target.set(this.__tnPayload_proof_body.bytes, 40);\n    const __tnLayout = StateProof.__tnComputeSequentialLayout(view, target);\n    if (!__tnLayout || !__tnLayout.derived) throw new Error(\"StateProofBuilder: failed to derive enum tag\");\n    const __tnDerivedTagValue = __tnLayout.derived[\"StateProof__proof_body_computed_tag\"];\n    if (__tnDerivedTagValue === undefined) throw new Error(\"StateProofBuilder: computed enum tag missing\");\n    const __tnDerivedTag = __tnBigIntToNumber(__tnDerivedTagValue, \"StateProofBuilder::__tnWriteInto\");\n    const __tnExpectedTag = this.__tnPayload_proof_body!.descriptor.tag;\n    if (__tnDerivedTag !== __tnExpectedTag) throw new Error(\"StateProofBuilder: computed enum tag does not match selected variant\");\n  }\n\n  private __tnValidateOrThrow(buffer: Uint8Array, params: StateProof.Params): void {\n    const result = StateProof.validate(buffer, { params });\n    if (!result.ok) {\n      throw new Error(`${ StateProof }Builder: builder produced invalid buffer (code=${result.code ?? \"unknown\"})`);\n    }\n    this.__tnLastParams = result.params ?? params;\n    this.__tnLastBuffer = buffer;\n  }\n}\n\n__tnRegisterFootprint(\"StateProof\", (params) => StateProof.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"StateProof\", (buffer, params) => StateProof.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"StateProof\", (buffer) => { const result = StateProof.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n","/* Auto-generated TypeScript code */\n/* WARNING: Do not modify this file directly. It is generated from ABI definitions. */\n\nimport { StateProof } from \"../../blockchain/state_proof/types\";\n\ntype __TnIrNode =\n  | { readonly op: \"zero\" }\n  | { readonly op: \"const\"; readonly value: bigint }\n  | { readonly op: \"field\"; readonly param: string }\n  | {\n      readonly op: \"add\";\n      readonly left: __TnIrNode;\n      readonly right: __TnIrNode;\n    }\n  | {\n      readonly op: \"sub\";\n      readonly left: __TnIrNode;\n      readonly right: __TnIrNode;\n    }\n  | {\n      readonly op: \"mul\";\n      readonly left: __TnIrNode;\n      readonly right: __TnIrNode;\n    }\n  | {\n      readonly op:\n        | \"div\"\n        | \"mod\"\n        | \"bitAnd\"\n        | \"bitOr\"\n        | \"bitXor\"\n        | \"leftShift\"\n        | \"rightShift\";\n      readonly left: __TnIrNode;\n      readonly right: __TnIrNode;\n    }\n  | {\n      readonly op: \"align\";\n      readonly alignment: number;\n      readonly node: __TnIrNode;\n    }\n  | {\n      readonly op: \"switch\";\n      readonly tag: string;\n      readonly cases: readonly { readonly value: number; readonly node: __TnIrNode }[];\n      readonly default?: __TnIrNode;\n    }\n  | {\n      readonly op: \"call\";\n      readonly typeName: string;\n      readonly args: readonly { readonly name: string; readonly source: string }[];\n    }\n  | {\n      readonly op: \"sumOverArray\";\n      readonly count: __TnIrNode;\n      readonly elementTypeName: string;\n      readonly fieldName: string;\n    };\n\ntype __TnIrContext = {\n  params: Record<string, bigint>;\n  buffer?: Uint8Array;\n  typeName?: string;\n};\n\ntype __TnValidateResult = {\n  ok: boolean;\n  code?: string;\n  consumed?: bigint;\n  params?: Record<string, bigint>;\n};\ntype __TnEvalResult =\n  | { ok: true; value: bigint }\n  | { ok: false; code: string };\ntype __TnBuilderLike = { build(): Uint8Array };\ntype __TnStructFieldInput =\n  | Uint8Array\n  | __TnBuilderLike\n  | { buffer?: Uint8Array }\n  | { asUint8Array?: () => Uint8Array }\n  | { bytes?: () => Uint8Array };\ntype __TnVariantDescriptor = {\n  readonly name: string;\n  readonly tag: number;\n  readonly payloadSize: number | null;\n  readonly payloadType?: string;\n  readonly createPayloadBuilder?: () => unknown | null;\n};\ntype __TnVariantSelectorResult<Parent> = {\n  select(\n    name: string\n  ): { writePayload(payload: Uint8Array | __TnBuilderLike): { finish(): Parent } };\n  finish(): Parent;\n};\ntype __TnFamWriterResult<Parent> = {\n  write(payload: Uint8Array | __TnBuilderLike): { finish(): Parent };\n  finish(): Parent;\n};\ntype __TnConsole = { warn?: (...args: unknown[]) => void };\n\nconst __tnWarnings = new Set<string>();\nconst __tnHasNativeBigInt = typeof BigInt === \"function\";\nconst __tnHasBigIntDataView =\n  typeof DataView !== \"undefined\" &&\n  typeof DataView.prototype.getBigInt64 === \"function\" &&\n  typeof DataView.prototype.getBigUint64 === \"function\" &&\n  typeof DataView.prototype.setBigInt64 === \"function\" &&\n  typeof DataView.prototype.setBigUint64 === \"function\";\nconst __tnConsole: __TnConsole | undefined =\n  typeof globalThis !== \"undefined\"\n    ? (globalThis as { console?: __TnConsole }).console\n    : undefined;\n\nfunction __tnLogWarn(message: string): void {\n  if (__tnConsole && typeof __tnConsole.warn === \"function\") {\n    __tnConsole.warn(message);\n  }\n}\n\nfunction __tnWarnOnce(message: string): void {\n  if (!__tnWarnings.has(message)) {\n    __tnWarnings.add(message);\n    __tnLogWarn(message);\n  }\n}\n\nfunction __tnResolveBuilderInput(\n  input: Uint8Array | __TnBuilderLike,\n  context: string\n): Uint8Array {\n  if (input instanceof Uint8Array) {\n    return new Uint8Array(input);\n  }\n  if (input && typeof (input as __TnBuilderLike).build === \"function\") {\n    const built = (input as __TnBuilderLike).build();\n    if (!(built instanceof Uint8Array)) {\n      throw new Error(`${context}: builder did not return Uint8Array`);\n    }\n    return new Uint8Array(built);\n  }\n  throw new Error(`${context}: expected Uint8Array or builder`);\n}\n\nfunction __tnResolveStructFieldInput(\n  input: __TnStructFieldInput,\n  context: string\n): Uint8Array {\n  if (\n    input instanceof Uint8Array ||\n    (input && typeof (input as __TnBuilderLike).build === \"function\")\n  ) {\n    return __tnResolveBuilderInput(input as Uint8Array | __TnBuilderLike, context);\n  }\n  if (input && typeof (input as { asUint8Array?: () => Uint8Array }).asUint8Array === \"function\") {\n    const bytes = (input as { asUint8Array: () => Uint8Array }).asUint8Array();\n    return new Uint8Array(bytes);\n  }\n  if (input && typeof (input as { bytes?: () => Uint8Array }).bytes === \"function\") {\n    const bytes = (input as { bytes: () => Uint8Array }).bytes();\n    return new Uint8Array(bytes);\n  }\n  if (input && (input as { buffer?: unknown }).buffer instanceof Uint8Array) {\n    return new Uint8Array((input as { buffer: Uint8Array }).buffer);\n  }\n  throw new Error(`${context}: expected Uint8Array, builder, or view-like value`);\n}\n\nfunction __tnMaybeCallBuilder(ctor: unknown): unknown | null {\n  if (!ctor) {\n    return null;\n  }\n  const builderFn = (ctor as { builder?: () => unknown }).builder;\n  return typeof builderFn === \"function\" ? builderFn() : null;\n}\n\nfunction __tnCreateVariantSelector<Parent, Descriptor extends __TnVariantDescriptor>(\n  parent: Parent,\n  descriptors: readonly Descriptor[],\n  assign: (descriptor: Descriptor, payload: Uint8Array) => void\n): __TnVariantSelectorResult<Parent> {\n  return {\n    select(name: string) {\n      const descriptor = descriptors.find((variant) => variant.name === name);\n      if (!descriptor) {\n        throw new Error(`Unknown variant '${name}'`);\n      }\n      return {\n        writePayload(payload: Uint8Array | __TnBuilderLike) {\n          const bytes = __tnResolveBuilderInput(\n            payload,\n            `variant ${descriptor.name}`\n          );\n          if (\n            descriptor.payloadSize !== null &&\n            bytes.length !== descriptor.payloadSize\n          ) {\n            throw new Error(\n              `Payload for ${descriptor.name} must be ${descriptor.payloadSize} bytes`\n            );\n          }\n          assign(descriptor, bytes);\n          return {\n            finish(): Parent {\n              return parent;\n            },\n          };\n        },\n      };\n    },\n    finish(): Parent {\n      return parent;\n    },\n  };\n}\n\nfunction __tnCreateFamWriter<Parent>(\n  parent: Parent,\n  fieldName: string,\n  assign: (bytes: Uint8Array) => void\n): __TnFamWriterResult<Parent> {\n  let hasWritten = false;\n  return {\n    write(payload: Uint8Array | __TnBuilderLike) {\n      const bytes = __tnResolveBuilderInput(\n        payload,\n        `flexible array '${fieldName}'`\n      );\n      const copy = new Uint8Array(bytes);\n      assign(copy);\n      hasWritten = true;\n      return {\n        finish(): Parent {\n          return parent;\n        },\n      };\n    },\n    finish(): Parent {\n      if (!hasWritten) {\n        throw new Error(\n          `flexible array '${fieldName}' requires write() before finish()`\n        );\n      }\n      return parent;\n    },\n  };\n}\n\nconst __tnMask32 = __tnHasNativeBigInt\n  ? (BigInt(1) << BigInt(32)) - BigInt(1)\n  : 0xffffffff;\nconst __tnSignBit32 = __tnHasNativeBigInt\n  ? BigInt(1) << BigInt(31)\n  : 0x80000000;\n\nfunction __tnToBigInt(value: number | bigint): bigint {\n  if (__tnHasNativeBigInt) {\n    return typeof value === \"bigint\" ? value : BigInt(value);\n  }\n  if (typeof value === \"bigint\") return value;\n  if (!Number.isFinite(value)) {\n    throw new Error(\"IR runtime received non-finite numeric input\");\n  }\n  if (!Number.isSafeInteger(value)) {\n    __tnWarnOnce(\n      `[thru-net] Precision loss while polyfilling BigInt (value=${value})`\n    );\n  }\n  return (value as unknown) as bigint;\n}\n\nfunction __tnBigIntToNumber(value: bigint, context: string): number {\n  if (__tnHasNativeBigInt) {\n    const converted = Number(value);\n    if (!Number.isFinite(converted)) {\n      throw new Error(`${context} overflowed Number range`);\n    }\n    return converted;\n  }\n  return value as unknown as number;\n}\n\nfunction __tnBigIntEquals(lhs: bigint, rhs: bigint): boolean {\n  if (__tnHasNativeBigInt) return lhs === rhs;\n  return (lhs as unknown as number) === (rhs as unknown as number);\n}\n\nfunction __tnBigIntGreaterThan(lhs: bigint, rhs: bigint): boolean {\n  if (__tnHasNativeBigInt) return lhs > rhs;\n  return (lhs as unknown as number) > (rhs as unknown as number);\n}\n\nfunction __tnPopcount(value: number | bigint): number {\n  let v =\n    typeof value === \"bigint\"\n      ? Number(value & BigInt(0xffffffff))\n      : Number(value) >>> 0;\n  v = v - ((v >>> 1) & 0x55555555);\n  v = (v & 0x33333333) + ((v >>> 2) & 0x33333333);\n  return (((v + (v >>> 4)) & 0x0f0f0f0f) * 0x01010101) >>> 24;\n}\n\nfunction __tnRaiseIrError(code: string, message: string): never {\n  const err = new Error(message);\n  (err as { code?: string }).code = code;\n  throw err;\n}\n\nfunction __tnCheckedAdd(lhs: bigint, rhs: bigint): bigint {\n  if (__tnHasNativeBigInt) {\n    const result = (lhs as bigint) + (rhs as bigint);\n    if (result < BigInt(0)) {\n      __tnRaiseIrError(\n        \"tn.ir.overflow\",\n        \"IR runtime detected negative size via addition\"\n      );\n    }\n    return result;\n  }\n  const left = lhs as unknown as number;\n  const right = rhs as unknown as number;\n  const sum = left + right;\n  if (sum < 0 || !Number.isFinite(sum)) {\n    __tnRaiseIrError(\n      \"tn.ir.overflow\",\n      \"IR runtime detected invalid addition result\"\n    );\n  }\n  if (!Number.isSafeInteger(sum)) {\n    __tnWarnOnce(\"[thru-net] Precision loss while polyfilling BigInt addition\");\n  }\n  return (sum as unknown) as bigint;\n}\n\nfunction __tnCheckedSub(lhs: bigint, rhs: bigint): bigint {\n  if (__tnHasNativeBigInt) {\n    const result = (lhs as bigint) - (rhs as bigint);\n    if (result < BigInt(0)) {\n      __tnRaiseIrError(\n        \"tn.ir.overflow\",\n        \"IR runtime detected negative size via subtraction\"\n      );\n    }\n    return result;\n  }\n  const left = lhs as unknown as number;\n  const right = rhs as unknown as number;\n  const diff = left - right;\n  if (diff < 0 || !Number.isFinite(diff)) {\n    __tnRaiseIrError(\n      \"tn.ir.overflow\",\n      \"IR runtime detected invalid subtraction result\"\n    );\n  }\n  if (!Number.isSafeInteger(diff)) {\n    __tnWarnOnce(\"[thru-net] Precision loss while polyfilling BigInt subtraction\");\n  }\n  return (diff as unknown) as bigint;\n}\n\nfunction __tnCheckedMul(lhs: bigint, rhs: bigint): bigint {\n  if (__tnHasNativeBigInt) {\n    const result = (lhs as bigint) * (rhs as bigint);\n    if (result < BigInt(0)) {\n      __tnRaiseIrError(\n        \"tn.ir.overflow\",\n        \"IR runtime detected negative size via multiplication\"\n      );\n    }\n    return result;\n  }\n  const left = lhs as unknown as number;\n  const right = rhs as unknown as number;\n  const product = left * right;\n  if (product < 0 || !Number.isFinite(product)) {\n    __tnRaiseIrError(\n      \"tn.ir.overflow\",\n      \"IR runtime detected invalid multiplication result\"\n    );\n  }\n  if (!Number.isSafeInteger(product)) {\n    __tnWarnOnce(\n      \"[thru-net] Precision loss while polyfilling BigInt multiplication\"\n    );\n  }\n  return (product as unknown) as bigint;\n}\n\nfunction __tnCheckedDiv(lhs: bigint, rhs: bigint): bigint {\n  if (__tnBigIntEquals(rhs, __tnToBigInt(0))) {\n    __tnRaiseIrError(\"tn.ir.overflow\", \"IR runtime division by zero\");\n  }\n  if (__tnHasNativeBigInt) return (lhs as bigint) / (rhs as bigint);\n  const quotient = Math.floor((lhs as unknown as number) / (rhs as unknown as number));\n  return (quotient as unknown) as bigint;\n}\n\nfunction __tnCheckedMod(lhs: bigint, rhs: bigint): bigint {\n  if (__tnBigIntEquals(rhs, __tnToBigInt(0))) {\n    __tnRaiseIrError(\"tn.ir.overflow\", \"IR runtime modulo by zero\");\n  }\n  if (__tnHasNativeBigInt) return (lhs as bigint) % (rhs as bigint);\n  return (((lhs as unknown as number) % (rhs as unknown as number)) as unknown) as bigint;\n}\n\nfunction __tnBitwise(\n  lhs: bigint,\n  rhs: bigint,\n  op: \"and\" | \"or\" | \"xor\"\n): bigint {\n  if (__tnHasNativeBigInt) {\n    if (op === \"and\") return (lhs as bigint) & (rhs as bigint);\n    if (op === \"or\") return (lhs as bigint) | (rhs as bigint);\n    return (lhs as bigint) ^ (rhs as bigint);\n  }\n  const left = lhs as unknown as number;\n  const right = rhs as unknown as number;\n  const maxU32 = 0xffffffff;\n  if (\n    !Number.isInteger(left) ||\n    !Number.isInteger(right) ||\n    left < 0 ||\n    right < 0 ||\n    left > maxU32 ||\n    right > maxU32\n  ) {\n    __tnRaiseIrError(\n      \"tn.ir.overflow\",\n      \"IR runtime bitwise operation requires BigInt for values outside u32 range\"\n    );\n  }\n  const result = op === \"and\" ? left & right : op === \"or\" ? left | right : left ^ right;\n  return ((result >>> 0) as unknown) as bigint;\n}\n\nfunction __tnCheckedShift(\n  lhs: bigint,\n  rhs: bigint,\n  direction: \"left\" | \"right\"\n): bigint {\n  const amount = __tnBigIntToNumber(rhs, \"IR shift amount\");\n  if (amount < 0 || amount >= 64 || !Number.isInteger(amount)) {\n    __tnRaiseIrError(\"tn.ir.overflow\", \"IR runtime invalid shift amount\");\n  }\n  if (__tnHasNativeBigInt) {\n    const shift = BigInt(amount);\n    return direction === \"left\" ? (lhs as bigint) << shift : (lhs as bigint) >> shift;\n  }\n  const value = lhs as unknown as number;\n  const result = direction === \"left\" ? value * 2 ** amount : Math.floor(value / 2 ** amount);\n  if (!Number.isSafeInteger(result)) {\n    __tnWarnOnce(\"[thru-net] Precision loss while polyfilling BigInt shift\");\n  }\n  return (result as unknown) as bigint;\n}\n\nfunction __tnAlign(value: bigint, alignment: number): bigint {\n  if (alignment <= 1) return value;\n  const alignBig = __tnToBigInt(alignment);\n  if (__tnHasNativeBigInt) {\n    const remainder = value % alignBig;\n    if (__tnBigIntEquals(remainder, __tnToBigInt(0))) {\n      return value;\n    }\n    const delta = alignBig - remainder;\n    return __tnCheckedAdd(value, delta);\n  }\n  const current = __tnBigIntToNumber(value, \"IR align\");\n  const alignNum = alignment >>> 0;\n  const remainder = current % alignNum;\n  const next = remainder === 0 ? current : current + (alignNum - remainder);\n  return __tnToBigInt(next);\n}\n\nfunction __tnSplitUint64(value: bigint): { high: number; low: number } {\n  if (__tnHasNativeBigInt) {\n    const low = Number(value & (__tnMask32 as bigint));\n    const high = Number((value >> BigInt(32)) & (__tnMask32 as bigint));\n    return { high, low };\n  }\n  const num = __tnBigIntToNumber(value, \"DataView.setBigUint64\");\n  const low = num >>> 0;\n  const high = Math.floor(num / 4294967296) >>> 0;\n  return { high, low };\n}\n\nfunction __tnSplitInt64(value: bigint): { high: number; low: number } {\n  if (__tnHasNativeBigInt) {\n    const low = Number(value & (__tnMask32 as bigint));\n    let high = Number((value >> BigInt(32)) & (__tnMask32 as bigint));\n    if ((BigInt(high) & (__tnSignBit32 as bigint)) !== BigInt(0)) {\n      high -= 0x100000000;\n    }\n    return { high, low };\n  }\n  const num = __tnBigIntToNumber(value, \"DataView.setBigInt64\");\n  const low = num >>> 0;\n  const high = Math.floor(num / 4294967296);\n  return { high, low };\n}\n\nfunction __tnPolyfillReadUint64(\n  view: DataView,\n  offset: number,\n  littleEndian: boolean\n): bigint {\n  const low = littleEndian\n    ? view.getUint32(offset, true)\n    : view.getUint32(offset + 4, false);\n  const high = littleEndian\n    ? view.getUint32(offset + 4, true)\n    : view.getUint32(offset, false);\n  if (__tnHasNativeBigInt) {\n    return (BigInt(high) << BigInt(32)) | BigInt(low);\n  }\n  const value = high * 4294967296 + low;\n  if (!Number.isSafeInteger(value)) {\n    __tnWarnOnce(\n      \"[thru-net] Precision loss while polyfilling DataView.getBigUint64\"\n    );\n  }\n  return (value as unknown) as bigint;\n}\n\nfunction __tnPolyfillReadInt64(\n  view: DataView,\n  offset: number,\n  littleEndian: boolean\n): bigint {\n  const low = littleEndian\n    ? view.getUint32(offset, true)\n    : view.getUint32(offset + 4, false);\n  const high = littleEndian\n    ? view.getInt32(offset + 4, true)\n    : view.getInt32(offset, false);\n  if (__tnHasNativeBigInt) {\n    return (BigInt(high) << BigInt(32)) | BigInt(low);\n  }\n  const value = high * 4294967296 + low;\n  if (!Number.isSafeInteger(value)) {\n    __tnWarnOnce(\n      \"[thru-net] Precision loss while polyfilling DataView.getBigInt64\"\n    );\n  }\n  return (value as unknown) as bigint;\n}\n\nfunction __tnPolyfillWriteUint64(\n  view: DataView,\n  offset: number,\n  value: bigint,\n  littleEndian: boolean\n): void {\n  const parts = __tnSplitUint64(value);\n  if (littleEndian) {\n    view.setUint32(offset, parts.low, true);\n    view.setUint32(offset + 4, parts.high, true);\n  } else {\n    view.setUint32(offset, parts.high, false);\n    view.setUint32(offset + 4, parts.low, false);\n  }\n}\n\nfunction __tnPolyfillWriteInt64(\n  view: DataView,\n  offset: number,\n  value: bigint,\n  littleEndian: boolean\n): void {\n  const parts = __tnSplitInt64(value);\n  if (littleEndian) {\n    view.setUint32(offset, parts.low >>> 0, true);\n    view.setInt32(offset + 4, parts.high | 0, true);\n  } else {\n    view.setInt32(offset, parts.high | 0, false);\n    view.setUint32(offset + 4, parts.low >>> 0, false);\n  }\n}\n\nif (typeof DataView !== \"undefined\" && !__tnHasBigIntDataView) {\n  const proto = DataView.prototype as unknown as Record<string, unknown>;\n  if (typeof proto.getBigUint64 !== \"function\") {\n    (proto as any).getBigUint64 = function (\n      offset: number,\n      littleEndian?: boolean\n    ): bigint {\n      __tnWarnOnce(\n        \"[thru-net] Polyfilling DataView.getBigUint64; precision may be lost\"\n      );\n      return __tnPolyfillReadUint64(this, offset, !!littleEndian);\n    };\n  }\n  if (typeof proto.getBigInt64 !== \"function\") {\n    (proto as any).getBigInt64 = function (\n      offset: number,\n      littleEndian?: boolean\n    ): bigint {\n      __tnWarnOnce(\n        \"[thru-net] Polyfilling DataView.getBigInt64; precision may be lost\"\n      );\n      return __tnPolyfillReadInt64(this, offset, !!littleEndian);\n    };\n  }\n  if (typeof proto.setBigUint64 !== \"function\") {\n    (proto as any).setBigUint64 = function (\n      offset: number,\n      value: bigint,\n      littleEndian?: boolean\n    ): void {\n      __tnWarnOnce(\n        \"[thru-net] Polyfilling DataView.setBigUint64; precision may be lost\"\n      );\n      __tnPolyfillWriteUint64(this, offset, value, !!littleEndian);\n    };\n  }\n  if (typeof proto.setBigInt64 !== \"function\") {\n    (proto as any).setBigInt64 = function (\n      offset: number,\n      value: bigint,\n      littleEndian?: boolean\n    ): void {\n      __tnWarnOnce(\n        \"[thru-net] Polyfilling DataView.setBigInt64; precision may be lost\"\n      );\n      __tnPolyfillWriteInt64(this, offset, value, !!littleEndian);\n    };\n  }\n  if (!__tnHasNativeBigInt) {\n    __tnWarnOnce(\n      \"[thru-net] BigInt is unavailable; falling back to lossy 64-bit polyfill\"\n    );\n  }\n}\n\nconst __tnFootprintRegistry: Record<\n  string,\n  (params: Record<string, bigint>) => bigint\n> = {};\nconst __tnValidateRegistry: Record<\n  string,\n  (buffer: Uint8Array, params: Record<string, bigint>) => __TnValidateResult\n> = {};\nconst __tnDynamicValidateRegistry: Record<\n  string,\n  (buffer: Uint8Array) => __TnValidateResult\n> = {};\n\nfunction __tnRegisterFootprint(\n  typeName: string,\n  fn: (params: Record<string, bigint>) => bigint\n): void {\n  __tnFootprintRegistry[typeName] = fn;\n}\n\nfunction __tnRegisterValidate(\n  typeName: string,\n  fn: (buffer: Uint8Array, params: Record<string, bigint>) => __TnValidateResult\n): void {\n  __tnValidateRegistry[typeName] = fn;\n}\n\nfunction __tnRegisterDynamicValidate(\n  typeName: string,\n  fn: (buffer: Uint8Array) => __TnValidateResult\n): void {\n  __tnDynamicValidateRegistry[typeName] = fn;\n}\n\nfunction __tnInvokeFootprint(\n  typeName: string,\n  params: Record<string, bigint>\n): bigint {\n  const fn = __tnFootprintRegistry[typeName];\n  if (!fn) throw new Error(`IR runtime missing footprint for ${typeName}`);\n  return fn(params);\n}\n\nfunction __tnInvokeValidate(\n  typeName: string,\n  buffer: Uint8Array,\n  params: Record<string, bigint>\n): __TnValidateResult {\n  const fn = __tnValidateRegistry[typeName];\n  if (!fn) throw new Error(`IR runtime missing validate helper for ${typeName}`);\n  return fn(buffer, params);\n}\n\nfunction __tnInvokeDynamicValidate(\n  typeName: string,\n  buffer: Uint8Array\n): __TnValidateResult {\n  const fn = __tnDynamicValidateRegistry[typeName];\n  if (!fn) throw new Error(`IR runtime missing dynamic validate helper for ${typeName}`);\n  return fn(buffer);\n}\n\nfunction __tnEvalFootprint(node: __TnIrNode, ctx: __TnIrContext): bigint {\n  return __tnEvalIrNode(node, ctx, __tnToBigInt(0));\n}\n\nfunction __tnTryEvalFootprint(\n  node: __TnIrNode,\n  ctx: __TnIrContext\n): __TnEvalResult {\n  return __tnTryEvalIr(node, ctx);\n}\n\nfunction __tnTryEvalIr(\n  node: __TnIrNode,\n  ctx: __TnIrContext\n): __TnEvalResult {\n  try {\n    return { ok: true, value: __tnEvalIrNode(node, ctx, __tnToBigInt(0)) };\n  } catch (err) {\n    return { ok: false, code: __tnNormalizeIrError(err) };\n  }\n}\n\nfunction __tnIsEvalError(result: __TnEvalResult): result is { ok: false; code: string } {\n  return result.ok === false;\n}\n\nfunction __tnValidateIrTree(\n  ir: { readonly typeName: string; readonly root: __TnIrNode },\n  buffer: Uint8Array,\n  params: Record<string, bigint>\n): __TnValidateResult {\n  const evalResult = __tnTryEvalIr(ir.root, {\n    params,\n    buffer,\n    typeName: ir.typeName,\n  });\n  if (__tnIsEvalError(evalResult)) {\n    return { ok: false, code: evalResult.code };\n  }\n  const required = evalResult.value;\n  const available = __tnToBigInt(buffer.length);\n  if (__tnBigIntGreaterThan(required, available)) {\n    return { ok: false, code: \"tn.buffer_too_small\", consumed: required };\n  }\n  return { ok: true, consumed: required };\n}\n\nfunction __tnEvalIrNode(\n  node: __TnIrNode,\n  ctx: __TnIrContext,\n  baseOffset: bigint\n): bigint {\n  switch (node.op) {\n    case \"zero\":\n      return __tnToBigInt(0);\n    case \"const\":\n      return node.value;\n    case \"field\": {\n      if (node.param === \"__buffer_size\" && ctx.buffer) {\n        return __tnToBigInt(ctx.buffer.length);\n      }\n      const val = ctx.params[node.param];\n      if (val === undefined) {\n        const prefix = ctx.typeName ? `${ctx.typeName}: ` : \"\";\n        __tnRaiseIrError(\n          \"tn.ir.missing_param\",\n          `${prefix}Missing IR parameter '${node.param}'`\n        );\n      }\n      return val;\n    }\n    case \"add\":\n      {\n        const left = __tnEvalIrNode(node.left, ctx, baseOffset);\n        const right = __tnEvalIrNode(\n          node.right,\n          ctx,\n          __tnCheckedAdd(baseOffset, left)\n        );\n        return __tnCheckedAdd(left, right);\n      }\n    case \"sub\":\n      return __tnCheckedSub(\n        __tnEvalIrNode(node.left, ctx, baseOffset),\n        __tnEvalIrNode(node.right, ctx, baseOffset)\n      );\n    case \"mul\":\n      return __tnCheckedMul(\n        __tnEvalIrNode(node.left, ctx, baseOffset),\n        __tnEvalIrNode(node.right, ctx, baseOffset)\n      );\n    case \"div\":\n      return __tnCheckedDiv(\n        __tnEvalIrNode(node.left, ctx, baseOffset),\n        __tnEvalIrNode(node.right, ctx, baseOffset)\n      );\n    case \"mod\":\n      return __tnCheckedMod(\n        __tnEvalIrNode(node.left, ctx, baseOffset),\n        __tnEvalIrNode(node.right, ctx, baseOffset)\n      );\n    case \"bitAnd\":\n      return __tnBitwise(\n        __tnEvalIrNode(node.left, ctx, baseOffset),\n        __tnEvalIrNode(node.right, ctx, baseOffset),\n        \"and\"\n      );\n    case \"bitOr\":\n      return __tnBitwise(\n        __tnEvalIrNode(node.left, ctx, baseOffset),\n        __tnEvalIrNode(node.right, ctx, baseOffset),\n        \"or\"\n      );\n    case \"bitXor\":\n      return __tnBitwise(\n        __tnEvalIrNode(node.left, ctx, baseOffset),\n        __tnEvalIrNode(node.right, ctx, baseOffset),\n        \"xor\"\n      );\n    case \"leftShift\":\n      return __tnCheckedShift(\n        __tnEvalIrNode(node.left, ctx, baseOffset),\n        __tnEvalIrNode(node.right, ctx, baseOffset),\n        \"left\"\n      );\n    case \"rightShift\":\n      return __tnCheckedShift(\n        __tnEvalIrNode(node.left, ctx, baseOffset),\n        __tnEvalIrNode(node.right, ctx, baseOffset),\n        \"right\"\n      );\n    case \"align\":\n      return __tnAlign(__tnEvalIrNode(node.node, ctx, baseOffset), node.alignment);\n    case \"switch\": {\n      const tagVal = ctx.params[node.tag];\n      if (tagVal === undefined) {\n        const prefix = ctx.typeName ? `${ctx.typeName}: ` : \"\";\n        __tnRaiseIrError(\n          \"tn.ir.missing_param\",\n          `${prefix}Missing IR switch tag '${node.tag}'`\n        );\n      }\n      const tagNumber = Number(tagVal);\n      for (const caseNode of node.cases) {\n        if (caseNode.value === tagNumber) {\n          return __tnEvalIrNode(caseNode.node, ctx, baseOffset);\n        }\n      }\n      if (node.default) return __tnEvalIrNode(node.default, ctx, baseOffset);\n      __tnRaiseIrError(\n        \"tn.ir.invalid_tag\",\n        `Unhandled IR switch value ${tagNumber} for '${node.tag}'`\n      );\n    }\n    case \"call\": {\n      const nestedParams: Record<string, bigint> = Object.create(null);\n      for (const arg of node.args) {\n        const val = ctx.params[arg.source];\n        if (val === undefined) {\n          const prefix = ctx.typeName ? `${ctx.typeName}: ` : \"\";\n          __tnRaiseIrError(\n            \"tn.ir.missing_param\",\n            `${prefix}Missing IR parameter '${arg.source}' for nested call`\n          );\n        }\n        nestedParams[arg.name] = val;\n      }\n      if (ctx.buffer) {\n        const nestedOffset = __tnBigIntToNumber(baseOffset, \"IR nested offset\");\n        const nestedResult = __tnInvokeValidate(\n          node.typeName,\n          ctx.buffer.subarray(nestedOffset),\n          nestedParams\n        );\n        if (!nestedResult.ok) {\n          const nestedCode =\n            nestedResult.code ?? `tn.ir.runtime_error: ${node.typeName}`;\n          const prefixed = nestedCode.startsWith(\"tn.\")\n            ? nestedCode\n            : `tn.ir.runtime_error: ${node.typeName} -> ${nestedCode}`;\n          __tnRaiseIrError(\n            prefixed,\n            `Nested validator ${node.typeName} failed`\n          );\n        }\n        if (nestedResult.consumed !== undefined) {\n          return nestedResult.consumed;\n        }\n      }\n      return __tnInvokeFootprint(node.typeName, nestedParams);\n    }\n    case \"sumOverArray\": {\n      if (!ctx.buffer) {\n        __tnRaiseIrError(\n          \"tn.ir.missing_buffer\",\n          `Jagged array '${node.fieldName}' requires buffer-backed validation`\n        );\n      }\n      const count = __tnBigIntToNumber(\n        __tnEvalIrNode(node.count, ctx, baseOffset),\n        `Jagged array '${node.fieldName}' count`\n      );\n      let cursor = __tnBigIntToNumber(baseOffset, \"IR jagged array offset\");\n      let total = __tnToBigInt(0);\n      for (let i = 0; i < count; i++) {\n        const result = __tnInvokeDynamicValidate(\n          node.elementTypeName,\n          ctx.buffer.subarray(cursor)\n        );\n        if (!result.ok || result.consumed === undefined) {\n          const code = result.code ?? \"tn.ir.runtime_error\";\n          __tnRaiseIrError(\n            code,\n            `Jagged array '${node.fieldName}' element ${i} failed validation`\n          );\n        }\n        cursor += __tnBigIntToNumber(result.consumed, \"IR jagged element size\");\n        total = __tnCheckedAdd(total, result.consumed);\n      }\n      return total;\n    }\n    default:\n      __tnRaiseIrError(\n        \"tn.ir.runtime_error\",\n        `Unsupported IR node ${(node as { op: string }).op}`\n      );\n  }\n}\n\nfunction __tnNormalizeIrError(err: unknown): string {\n  if (err && typeof err === \"object\" && \"code\" in err) {\n    const maybeCode = (err as { code?: string }).code;\n    if (typeof maybeCode === \"string\" && maybeCode.length > 0) {\n      return maybeCode;\n    }\n  }\n  const message =\n    err && typeof err === \"object\" && \"message\" in err\n      ? String((err as { message?: unknown }).message ?? \"\")\n      : typeof err === \"string\"\n      ? err\n      : \"\";\n  if (message.includes(\"Missing IR parameter\")) return \"tn.ir.missing_param\";\n  if (message.includes(\"Unhandled IR switch value\")) return \"tn.ir.invalid_tag\";\n  if (\n    message.includes(\"invalid\") ||\n    message.includes(\"overflow\") ||\n    message.includes(\"negative size\")\n  ) {\n    return \"tn.ir.overflow\";\n  }\n  if (message.length > 0) return `tn.ir.runtime_error: ${message}`;\n  return \"tn.ir.runtime_error\";\n}\n\n__tnRegisterFootprint(\"StateProof\", (params) => StateProof.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"StateProof\", (buffer, params) => StateProof.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"StateProof\", (buffer) => { const result = StateProof.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n\n/* ----- TYPE DEFINITION FOR CompressFromPointerArgs ----- */\n\nconst __tn_ir_CompressFromPointerArgs = {\n  typeName: \"CompressFromPointerArgs\",\n  root: { op: \"const\", value: 18n }\n} as const;\n\nexport class CompressFromPointerArgs {\n  private view: DataView;\n\n  private constructor(private buffer: Uint8Array) {\n    this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n  }\n\n  static __tnCreateView(buffer: Uint8Array, opts?: { fieldContext?: Record<string, number | bigint> }): CompressFromPointerArgs {\n    if (!buffer || buffer.length === undefined) throw new Error(\"CompressFromPointerArgs.__tnCreateView requires a Uint8Array\");\n    return new CompressFromPointerArgs(new Uint8Array(buffer));\n  }\n\n  static builder(): CompressFromPointerArgsBuilder {\n    return new CompressFromPointerArgsBuilder();\n  }\n\n  static fromBuilder(builder: CompressFromPointerArgsBuilder): CompressFromPointerArgs | null {\n    const buffer = builder.build();\n    return CompressFromPointerArgs.from_array(buffer);\n  }\n\n  get_account_idx(): number {\n    const offset = 0;\n    return this.view.getUint16(offset, true); /* little-endian */\n  }\n\n  set_account_idx(value: number): void {\n    const offset = 0;\n    this.view.setUint16(offset, value, true); /* little-endian */\n  }\n\n  get account_idx(): number {\n    return this.get_account_idx();\n  }\n\n  set account_idx(value: number) {\n    this.set_account_idx(value);\n  }\n\n  get_proof_address(): bigint {\n    const offset = 2;\n    return this.view.getBigUint64(offset, true); /* little-endian */\n  }\n\n  set_proof_address(value: bigint): void {\n    const offset = 2;\n    this.view.setBigUint64(offset, value, true); /* little-endian */\n  }\n\n  get proof_address(): bigint {\n    return this.get_proof_address();\n  }\n\n  set proof_address(value: bigint) {\n    this.set_proof_address(value);\n  }\n\n  get_proof_sz(): bigint {\n    const offset = 10;\n    return this.view.getBigUint64(offset, true); /* little-endian */\n  }\n\n  set_proof_sz(value: bigint): void {\n    const offset = 10;\n    this.view.setBigUint64(offset, value, true); /* little-endian */\n  }\n\n  get proof_sz(): bigint {\n    return this.get_proof_sz();\n  }\n\n  set proof_sz(value: bigint) {\n    this.set_proof_sz(value);\n  }\n\n  private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n    return __tnEvalFootprint(__tn_ir_CompressFromPointerArgs.root, { params: __tnParams });\n  }\n\n  private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n    return __tnValidateIrTree(__tn_ir_CompressFromPointerArgs, buffer, __tnParams);\n  }\n\n  static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n    return this.__tnFootprintInternal(__tnParams);\n  }\n\n  static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n    return this.__tnValidateInternal(buffer, __tnParams);\n  }\n\n  static footprintIr(): bigint {\n    return this.__tnFootprintInternal(Object.create(null));\n  }\n\n  static footprint(): number {\n    const irResult = this.footprintIr();\n      const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n    if (__tnBigIntGreaterThan(irResult, maxSafe)) {\n      throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for CompressFromPointerArgs');\n    }\n    return __tnBigIntToNumber(irResult, 'CompressFromPointerArgs::footprint');\n  }\n\n  static validate(buffer: Uint8Array, _opts?: { params?: never }): { ok: boolean; code?: string; consumed?: number } {\n    if (buffer.length < 18) return { ok: false, code: \"tn.buffer_too_small\", consumed: 18 };\n    return { ok: true, consumed: 18 };\n  }\n\n  static new(account_idx: number, proof_address: bigint, proof_sz: bigint): CompressFromPointerArgs {\n    const buffer = new Uint8Array(18);\n    const view = new DataView(buffer.buffer);\n\n    let offset = 0;\n    view.setUint16(0, account_idx, true); /* account_idx (little-endian) */\n    view.setBigUint64(2, proof_address, true); /* proof_address (little-endian) */\n    view.setBigUint64(10, proof_sz, true); /* proof_sz (little-endian) */\n\n    return new CompressFromPointerArgs(buffer);\n  }\n\n  static from_array(buffer: Uint8Array): CompressFromPointerArgs | null {\n    if (!buffer || buffer.length === undefined) {\n      return null;\n    }\n    const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    const validation = this.validate(buffer);\n    if (!validation.ok) {\n      return null;\n    }\n    return new CompressFromPointerArgs(buffer);\n  }\n\n}\n\nexport class CompressFromPointerArgsBuilder {\n  private buffer: Uint8Array;\n  private view: DataView;\n\n  constructor() {\n    this.buffer = new Uint8Array(18);\n    this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n  }\n\n  set_account_idx(value: number): this {\n    this.view.setUint16(0, value, true);\n    return this;\n  }\n\n  set_proof_address(value: bigint): this {\n    const cast = __tnToBigInt(value);\n    this.view.setBigUint64(2, cast, true);\n    return this;\n  }\n\n  set_proof_sz(value: bigint): this {\n    const cast = __tnToBigInt(value);\n    this.view.setBigUint64(10, cast, true);\n    return this;\n  }\n\n  build(): Uint8Array {\n    return this.buffer.slice();\n  }\n\n  buildInto(target: Uint8Array, offset = 0): Uint8Array {\n    if (target.length - offset < this.buffer.length) throw new Error(\"target buffer too small\");\n    target.set(this.buffer, offset);\n    return target;\n  }\n\n  finish(): CompressFromPointerArgs {\n    const view = CompressFromPointerArgs.from_array(this.buffer.slice());\n    if (!view) throw new Error(\"failed to build CompressFromPointerArgs\");\n    return view;\n  }\n}\n\n__tnRegisterFootprint(\"CompressFromPointerArgs\", (params) => CompressFromPointerArgs.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"CompressFromPointerArgs\", (buffer, params) => CompressFromPointerArgs.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"CompressFromPointerArgs\", (buffer) => { const result = CompressFromPointerArgs.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n\n/* ----- TYPE DEFINITION FOR CompressionError ----- */\n\nconst __tn_ir_CompressionError = {\n  typeName: \"CompressionError\",\n  root: { op: \"const\", value: 8n }\n} as const;\n\nexport class CompressionError {\n  private view: DataView;\n\n  private constructor(private buffer: Uint8Array) {\n    this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n  }\n\n  static __tnCreateView(buffer: Uint8Array, opts?: { fieldContext?: Record<string, number | bigint> }): CompressionError {\n    if (!buffer || buffer.length === undefined) throw new Error(\"CompressionError.__tnCreateView requires a Uint8Array\");\n    return new CompressionError(new Uint8Array(buffer));\n  }\n\n  static builder(): CompressionErrorBuilder {\n    return new CompressionErrorBuilder();\n  }\n\n  static fromBuilder(builder: CompressionErrorBuilder): CompressionError | null {\n    const buffer = builder.build();\n    return CompressionError.from_array(buffer);\n  }\n\n  get_code(): bigint {\n    const offset = 0;\n    return this.view.getBigUint64(offset, true); /* little-endian */\n  }\n\n  set_code(value: bigint): void {\n    const offset = 0;\n    this.view.setBigUint64(offset, value, true); /* little-endian */\n  }\n\n  get code(): bigint {\n    return this.get_code();\n  }\n\n  set code(value: bigint) {\n    this.set_code(value);\n  }\n\n  private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n    return __tnEvalFootprint(__tn_ir_CompressionError.root, { params: __tnParams });\n  }\n\n  private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n    return __tnValidateIrTree(__tn_ir_CompressionError, buffer, __tnParams);\n  }\n\n  static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n    return this.__tnFootprintInternal(__tnParams);\n  }\n\n  static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n    return this.__tnValidateInternal(buffer, __tnParams);\n  }\n\n  static footprintIr(): bigint {\n    return this.__tnFootprintInternal(Object.create(null));\n  }\n\n  static footprint(): number {\n    const irResult = this.footprintIr();\n      const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n    if (__tnBigIntGreaterThan(irResult, maxSafe)) {\n      throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for CompressionError');\n    }\n    return __tnBigIntToNumber(irResult, 'CompressionError::footprint');\n  }\n\n  static validate(buffer: Uint8Array, _opts?: { params?: never }): { ok: boolean; code?: string; consumed?: number } {\n    if (buffer.length < 8) return { ok: false, code: \"tn.buffer_too_small\", consumed: 8 };\n    return { ok: true, consumed: 8 };\n  }\n\n  static new(code: bigint): CompressionError {\n    const buffer = new Uint8Array(8);\n    const view = new DataView(buffer.buffer);\n\n    let offset = 0;\n    view.setBigUint64(0, code, true); /* code (little-endian) */\n\n    return new CompressionError(buffer);\n  }\n\n  static from_array(buffer: Uint8Array): CompressionError | null {\n    if (!buffer || buffer.length === undefined) {\n      return null;\n    }\n    const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    const validation = this.validate(buffer);\n    if (!validation.ok) {\n      return null;\n    }\n    return new CompressionError(buffer);\n  }\n\n}\n\nexport class CompressionErrorBuilder {\n  private buffer: Uint8Array;\n  private view: DataView;\n\n  constructor() {\n    this.buffer = new Uint8Array(8);\n    this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n  }\n\n  set_code(value: bigint): this {\n    const cast = __tnToBigInt(value);\n    this.view.setBigUint64(0, cast, true);\n    return this;\n  }\n\n  build(): Uint8Array {\n    return this.buffer.slice();\n  }\n\n  buildInto(target: Uint8Array, offset = 0): Uint8Array {\n    if (target.length - offset < this.buffer.length) throw new Error(\"target buffer too small\");\n    target.set(this.buffer, offset);\n    return target;\n  }\n\n  finish(): CompressionError {\n    const view = CompressionError.from_array(this.buffer.slice());\n    if (!view) throw new Error(\"failed to build CompressionError\");\n    return view;\n  }\n}\n\n__tnRegisterFootprint(\"CompressionError\", (params) => CompressionError.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"CompressionError\", (buffer, params) => CompressionError.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"CompressionError\", (buffer) => { const result = CompressionError.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n\n/* ----- TYPE DEFINITION FOR DecompressFromPointerArgs ----- */\n\nconst __tn_ir_DecompressFromPointerArgs = {\n  typeName: \"DecompressFromPointerArgs\",\n  root: { op: \"const\", value: 42n }\n} as const;\n\nexport class DecompressFromPointerArgs {\n  private view: DataView;\n\n  private constructor(private buffer: Uint8Array) {\n    this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n  }\n\n  static __tnCreateView(buffer: Uint8Array, opts?: { fieldContext?: Record<string, number | bigint> }): DecompressFromPointerArgs {\n    if (!buffer || buffer.length === undefined) throw new Error(\"DecompressFromPointerArgs.__tnCreateView requires a Uint8Array\");\n    return new DecompressFromPointerArgs(new Uint8Array(buffer));\n  }\n\n  static builder(): DecompressFromPointerArgsBuilder {\n    return new DecompressFromPointerArgsBuilder();\n  }\n\n  static fromBuilder(builder: DecompressFromPointerArgsBuilder): DecompressFromPointerArgs | null {\n    const buffer = builder.build();\n    return DecompressFromPointerArgs.from_array(buffer);\n  }\n\n  get_account_idx(): number {\n    const offset = 0;\n    return this.view.getUint16(offset, true); /* little-endian */\n  }\n\n  set_account_idx(value: number): void {\n    const offset = 0;\n    this.view.setUint16(offset, value, true); /* little-endian */\n  }\n\n  get account_idx(): number {\n    return this.get_account_idx();\n  }\n\n  set account_idx(value: number) {\n    this.set_account_idx(value);\n  }\n\n  get_account_data_sz(): bigint {\n    const offset = 2;\n    return this.view.getBigUint64(offset, true); /* little-endian */\n  }\n\n  set_account_data_sz(value: bigint): void {\n    const offset = 2;\n    this.view.setBigUint64(offset, value, true); /* little-endian */\n  }\n\n  get account_data_sz(): bigint {\n    return this.get_account_data_sz();\n  }\n\n  set account_data_sz(value: bigint) {\n    this.set_account_data_sz(value);\n  }\n\n  get_account_meta_address(): bigint {\n    const offset = 10;\n    return this.view.getBigUint64(offset, true); /* little-endian */\n  }\n\n  set_account_meta_address(value: bigint): void {\n    const offset = 10;\n    this.view.setBigUint64(offset, value, true); /* little-endian */\n  }\n\n  get account_meta_address(): bigint {\n    return this.get_account_meta_address();\n  }\n\n  set account_meta_address(value: bigint) {\n    this.set_account_meta_address(value);\n  }\n\n  get_account_data_address(): bigint {\n    const offset = 18;\n    return this.view.getBigUint64(offset, true); /* little-endian */\n  }\n\n  set_account_data_address(value: bigint): void {\n    const offset = 18;\n    this.view.setBigUint64(offset, value, true); /* little-endian */\n  }\n\n  get account_data_address(): bigint {\n    return this.get_account_data_address();\n  }\n\n  set account_data_address(value: bigint) {\n    this.set_account_data_address(value);\n  }\n\n  get_proof_address(): bigint {\n    const offset = 26;\n    return this.view.getBigUint64(offset, true); /* little-endian */\n  }\n\n  set_proof_address(value: bigint): void {\n    const offset = 26;\n    this.view.setBigUint64(offset, value, true); /* little-endian */\n  }\n\n  get proof_address(): bigint {\n    return this.get_proof_address();\n  }\n\n  set proof_address(value: bigint) {\n    this.set_proof_address(value);\n  }\n\n  get_proof_sz(): bigint {\n    const offset = 34;\n    return this.view.getBigUint64(offset, true); /* little-endian */\n  }\n\n  set_proof_sz(value: bigint): void {\n    const offset = 34;\n    this.view.setBigUint64(offset, value, true); /* little-endian */\n  }\n\n  get proof_sz(): bigint {\n    return this.get_proof_sz();\n  }\n\n  set proof_sz(value: bigint) {\n    this.set_proof_sz(value);\n  }\n\n  private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n    return __tnEvalFootprint(__tn_ir_DecompressFromPointerArgs.root, { params: __tnParams });\n  }\n\n  private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n    return __tnValidateIrTree(__tn_ir_DecompressFromPointerArgs, buffer, __tnParams);\n  }\n\n  static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n    return this.__tnFootprintInternal(__tnParams);\n  }\n\n  static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n    return this.__tnValidateInternal(buffer, __tnParams);\n  }\n\n  static footprintIr(): bigint {\n    return this.__tnFootprintInternal(Object.create(null));\n  }\n\n  static footprint(): number {\n    const irResult = this.footprintIr();\n      const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n    if (__tnBigIntGreaterThan(irResult, maxSafe)) {\n      throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for DecompressFromPointerArgs');\n    }\n    return __tnBigIntToNumber(irResult, 'DecompressFromPointerArgs::footprint');\n  }\n\n  static validate(buffer: Uint8Array, _opts?: { params?: never }): { ok: boolean; code?: string; consumed?: number } {\n    if (buffer.length < 42) return { ok: false, code: \"tn.buffer_too_small\", consumed: 42 };\n    return { ok: true, consumed: 42 };\n  }\n\n  static new(account_idx: number, account_data_sz: bigint, account_meta_address: bigint, account_data_address: bigint, proof_address: bigint, proof_sz: bigint): DecompressFromPointerArgs {\n    const buffer = new Uint8Array(42);\n    const view = new DataView(buffer.buffer);\n\n    let offset = 0;\n    view.setUint16(0, account_idx, true); /* account_idx (little-endian) */\n    view.setBigUint64(2, account_data_sz, true); /* account_data_sz (little-endian) */\n    view.setBigUint64(10, account_meta_address, true); /* account_meta_address (little-endian) */\n    view.setBigUint64(18, account_data_address, true); /* account_data_address (little-endian) */\n    view.setBigUint64(26, proof_address, true); /* proof_address (little-endian) */\n    view.setBigUint64(34, proof_sz, true); /* proof_sz (little-endian) */\n\n    return new DecompressFromPointerArgs(buffer);\n  }\n\n  static from_array(buffer: Uint8Array): DecompressFromPointerArgs | null {\n    if (!buffer || buffer.length === undefined) {\n      return null;\n    }\n    const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    const validation = this.validate(buffer);\n    if (!validation.ok) {\n      return null;\n    }\n    return new DecompressFromPointerArgs(buffer);\n  }\n\n}\n\nexport class DecompressFromPointerArgsBuilder {\n  private buffer: Uint8Array;\n  private view: DataView;\n\n  constructor() {\n    this.buffer = new Uint8Array(42);\n    this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n  }\n\n  set_account_idx(value: number): this {\n    this.view.setUint16(0, value, true);\n    return this;\n  }\n\n  set_account_data_sz(value: bigint): this {\n    const cast = __tnToBigInt(value);\n    this.view.setBigUint64(2, cast, true);\n    return this;\n  }\n\n  set_account_meta_address(value: bigint): this {\n    const cast = __tnToBigInt(value);\n    this.view.setBigUint64(10, cast, true);\n    return this;\n  }\n\n  set_account_data_address(value: bigint): this {\n    const cast = __tnToBigInt(value);\n    this.view.setBigUint64(18, cast, true);\n    return this;\n  }\n\n  set_proof_address(value: bigint): this {\n    const cast = __tnToBigInt(value);\n    this.view.setBigUint64(26, cast, true);\n    return this;\n  }\n\n  set_proof_sz(value: bigint): this {\n    const cast = __tnToBigInt(value);\n    this.view.setBigUint64(34, cast, true);\n    return this;\n  }\n\n  build(): Uint8Array {\n    return this.buffer.slice();\n  }\n\n  buildInto(target: Uint8Array, offset = 0): Uint8Array {\n    if (target.length - offset < this.buffer.length) throw new Error(\"target buffer too small\");\n    target.set(this.buffer, offset);\n    return target;\n  }\n\n  finish(): DecompressFromPointerArgs {\n    const view = DecompressFromPointerArgs.from_array(this.buffer.slice());\n    if (!view) throw new Error(\"failed to build DecompressFromPointerArgs\");\n    return view;\n  }\n}\n\n__tnRegisterFootprint(\"DecompressFromPointerArgs\", (params) => DecompressFromPointerArgs.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"DecompressFromPointerArgs\", (buffer, params) => DecompressFromPointerArgs.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"DecompressFromPointerArgs\", (buffer) => { const result = DecompressFromPointerArgs.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n\n/* ----- TYPE DEFINITION FOR CompressArgs ----- */\n\nconst __tn_ir_CompressArgs = {\n  typeName: \"CompressArgs\",\n  root: { op: \"align\", alignment: 1, node: { op: \"add\", left: { op: \"align\", alignment: 2, node: { op: \"const\", value: 2n } }, right: { op: \"align\", alignment: 1, node: { op: \"call\", typeName: \"StateProof\", args: [{ name: \"proof_body.hdr.type_slot\", source: \"proof_body.hdr.type_slot\" }, { name: \"proof_body.payload_size\", source: \"proof_body.payload_size\" }] } } } }\n} as const;\n\nexport class CompressArgs {\n  private view: DataView;\n  private __tnParams: CompressArgs.Params;\n\n  private constructor(private buffer: Uint8Array, params?: CompressArgs.Params) {\n    this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    if (params) {\n      this.__tnParams = params;\n    } else {\n      const derived = CompressArgs.__tnExtractParams(this.view, buffer);\n      if (!derived) {\n        throw new Error(\"CompressArgs: failed to derive dynamic parameters\");\n      }\n      this.__tnParams = derived.params;\n    }\n  }\n\n  static __tnCreateView(buffer: Uint8Array, opts?: { params?: CompressArgs.Params, fieldContext?: Record<string, number | bigint> }): CompressArgs {\n    if (!buffer || buffer.length === undefined) throw new Error(\"CompressArgs.__tnCreateView requires a Uint8Array\");\n    let params = opts?.params ?? null;\n    if (!params) {\n      const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n      const derived = CompressArgs.__tnExtractParams(view, buffer);\n      if (!derived) throw new Error(\"CompressArgs.__tnCreateView: failed to derive params\");\n      params = derived.params;\n    }\n    const instance = new CompressArgs(new Uint8Array(buffer), params);\n    return instance;\n  }\n\n  dynamicParams(): CompressArgs.Params {\n    return this.__tnParams;\n  }\n\n  static builder(): CompressArgsBuilder {\n    return new CompressArgsBuilder();\n  }\n\n  static fromBuilder(builder: CompressArgsBuilder): CompressArgs | null {\n    const buffer = builder.build();\n    const params = builder.dynamicParams();\n    return CompressArgs.from_array(buffer, { params });\n  }\n\n  static __tnComputeSequentialLayout(view: DataView, buffer: Uint8Array): { params: Record<string, bigint> | null; offsets: Record<string, number> | null; derived: Record<string, bigint> | null } | null {\n    const __tnLength = buffer.length;\n    let __tnParamSeq_proof_body_hdr_type_slot: bigint | null = null;\n    let __tnParamSeq_proof_body_payload_size: bigint | null = null;\n    let __tnFieldValue_account_idx: number | null = null;\n    let __tnCursorMutable = 0;\n    if (__tnCursorMutable + 2 > __tnLength) return null;\n    const __tnRead_account_idx = view.getUint16(__tnCursorMutable, true);\n    __tnFieldValue_account_idx = __tnRead_account_idx;\n    __tnCursorMutable += 2;\n    const __tnTyperefResult_proof = __tnInvokeDynamicValidate(\"StateProof\", buffer.subarray(__tnCursorMutable));\n    if (!__tnTyperefResult_proof.ok || __tnTyperefResult_proof.consumed === undefined) return null;\n    const __tnTyperefParams_proof = __tnTyperefResult_proof.params ?? null;\n    if (!__tnTyperefParams_proof || __tnTyperefParams_proof[\"proof_body_hdr_type_slot\"] === undefined) return null;\n    __tnParamSeq_proof_body_hdr_type_slot = __tnTyperefParams_proof[\"proof_body_hdr_type_slot\"];\n    if (!__tnTyperefParams_proof || __tnTyperefParams_proof[\"proof_body_payload_size\"] === undefined) return null;\n    __tnParamSeq_proof_body_payload_size = __tnTyperefParams_proof[\"proof_body_payload_size\"];\n    __tnCursorMutable += __tnBigIntToNumber(__tnTyperefResult_proof.consumed, \"CompressArgs::proof\");\n    const params: Record<string, bigint> = Object.create(null);\n    if (__tnParamSeq_proof_body_hdr_type_slot === null) return null;\n    params[\"proof_body_hdr_type_slot\"] = __tnParamSeq_proof_body_hdr_type_slot as bigint;\n    if (__tnParamSeq_proof_body_payload_size === null) return null;\n    params[\"proof_body_payload_size\"] = __tnParamSeq_proof_body_payload_size as bigint;\n    return { params, offsets: null, derived: null };\n  }\n\n  private static __tnExtractParams(view: DataView, buffer: Uint8Array): { params: CompressArgs.Params; derived: Record<string, bigint> | null } | null {\n    const __tnLayout = CompressArgs.__tnComputeSequentialLayout(view, buffer);\n    if (!__tnLayout || !__tnLayout.params) return null;\n    const __tnSeqParams = __tnLayout.params;\n    const __tnParamSeq_proof_body_hdr_type_slot = __tnSeqParams[\"proof_body_hdr_type_slot\"];\n    if (__tnParamSeq_proof_body_hdr_type_slot === undefined) return null;\n    const __tnParamSeq_proof_body_payload_size = __tnSeqParams[\"proof_body_payload_size\"];\n    if (__tnParamSeq_proof_body_payload_size === undefined) return null;\n    const __tnExtractedParams = CompressArgs.Params.fromValues({\n      proof_body_hdr_type_slot: __tnParamSeq_proof_body_hdr_type_slot as bigint,\n      proof_body_payload_size: __tnParamSeq_proof_body_payload_size as bigint,\n    });\n    return { params: __tnExtractedParams, derived: null };\n  }\n\n  get_account_idx(): number {\n    const offset = 0;\n    return this.view.getUint16(offset, true); /* little-endian */\n  }\n\n  set_account_idx(value: number): void {\n    const offset = 0;\n    this.view.setUint16(offset, value, true); /* little-endian */\n  }\n\n  get account_idx(): number {\n    return this.get_account_idx();\n  }\n\n  set account_idx(value: number) {\n    this.set_account_idx(value);\n  }\n\n  get_proof(): StateProof {\n    const offset = 2;\n    const tail = this.buffer.subarray(offset);\n    const validation = StateProof.validate(tail);\n    if (!validation.ok || validation.consumed === undefined) {\n      throw new Error(\"CompressArgs: failed to read field 'proof' (invalid nested payload)\");\n    }\n    const length = validation.consumed;\n    const slice = tail.subarray(0, length);\n    const opts = validation.params ? { params: validation.params } : undefined;\n    return StateProof.from_array(slice, opts)!;\n  }\n\n  set_proof(value: StateProof): void {\n    /* Copy bytes from source struct to this field */\n    const sourceBytes = (value as any).buffer as Uint8Array;\n    const offset = 2;\n    this.buffer.set(sourceBytes, offset);\n  }\n\n  get proof(): StateProof {\n    return this.get_proof();\n  }\n\n  set proof(value: StateProof) {\n    this.set_proof(value);\n  }\n  private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n    return __tnEvalFootprint(__tn_ir_CompressArgs.root, { params: __tnParams });\n  }\n\n  private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n    return __tnValidateIrTree(__tn_ir_CompressArgs, buffer, __tnParams);\n  }\n\n  static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n    return this.__tnFootprintInternal(__tnParams);\n  }\n\n  static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n    return this.__tnValidateInternal(buffer, __tnParams);\n  }\n\n  static footprintIr(proof_body_hdr_type_slot: number | bigint, proof_body_payload_size: number | bigint): bigint {\n    const params = CompressArgs.Params.fromValues({\n      proof_body_hdr_type_slot: proof_body_hdr_type_slot,\n      proof_body_payload_size: proof_body_payload_size,\n    });\n    return this.footprintIrFromParams(params);\n  }\n\n  private static __tnPackParams(params: CompressArgs.Params): Record<string, bigint> {\n    const record: Record<string, bigint> = Object.create(null);\n    record[\"proof_body.hdr.type_slot\"] = params.proof_body_hdr_type_slot;\n    record[\"proof_body.payload_size\"] = params.proof_body_payload_size;\n    return record;\n  }\n\n  static footprintIrFromParams(params: CompressArgs.Params): bigint {\n    const __tnParams = this.__tnPackParams(params);\n    return this.__tnFootprintInternal(__tnParams);\n  }\n\n  static footprintFromParams(params: CompressArgs.Params): number {\n    const irResult = this.footprintIrFromParams(params);\n    const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n    if (__tnBigIntGreaterThan(irResult, maxSafe)) throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for CompressArgs');\n    return __tnBigIntToNumber(irResult, 'CompressArgs::footprintFromParams');\n  }\n\n  static footprintFromValues(input: { proof_body_hdr_type_slot: number | bigint, proof_body_payload_size: number | bigint }): number {\n    const params = CompressArgs.params(input);\n    return this.footprintFromParams(params);\n  }\n\n  static footprint(params: CompressArgs.Params): number {\n    return this.footprintFromParams(params);\n  }\n\n  static validate(buffer: Uint8Array, opts?: { params?: CompressArgs.Params }): { ok: boolean; code?: string; consumed?: number; params?: CompressArgs.Params } {\n    if (!buffer || buffer.length === undefined) {\n      return { ok: false, code: \"tn.invalid_buffer\" };\n    }\n    const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    let params = opts?.params ?? null;\n    if (!params) {\n      return { ok: false, code: \"tn.param_extraction_failed\" };\n    }\n    const __tnParamsRec = this.__tnPackParams(params);\n    const irResult = this.__tnValidateInternal(buffer, __tnParamsRec);\n    if (!irResult.ok) {\n      return { ok: false, code: irResult.code, consumed: irResult.consumed ? __tnBigIntToNumber(irResult.consumed, 'CompressArgs::validate') : undefined, params };\n    }\n    const consumed = irResult.consumed ? __tnBigIntToNumber(irResult.consumed, 'CompressArgs::validate') : undefined;\n    return { ok: true, consumed, params };\n  }\n\n  static from_array(buffer: Uint8Array, opts?: { params?: CompressArgs.Params }): CompressArgs | null {\n    if (!buffer || buffer.length === undefined) {\n      return null;\n    }\n    const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    let params = opts?.params ?? null;\n    if (!params) {\n      __tnLogWarn('CompressArgs::from_array requires params when IR extraction is unavailable');\n      return null;\n    }\n    const validation = this.validate(buffer, { params });\n    if (!validation.ok) {\n      return null;\n    }\n    const cached = validation.params ?? params;\n    const state = new CompressArgs(buffer, cached);\n    return state;\n  }\n\n\n}\n\nexport namespace CompressArgs {\n  export type Params = {\n    /** ABI path: proof_body.hdr.type_slot */\n    readonly proof_body_hdr_type_slot: bigint;\n    /** ABI path: proof_body.payload_size */\n    readonly proof_body_payload_size: bigint;\n  };\n\n  export const ParamKeys = Object.freeze({\n    proof_body_hdr_type_slot: \"proof_body.hdr.type_slot\",\n    proof_body_payload_size: \"proof_body.payload_size\",\n  } as const);\n\n  export const Params = {\n    fromValues(input: { proof_body_hdr_type_slot: number | bigint, proof_body_payload_size: number | bigint }): Params {\n      return {\n        proof_body_hdr_type_slot: __tnToBigInt(input.proof_body_hdr_type_slot),\n        proof_body_payload_size: __tnToBigInt(input.proof_body_payload_size),\n      };\n    },\n    fromBuilder(source: { dynamicParams(): Params } | { params: Params } | Params): Params {\n      if ((source as { dynamicParams?: () => Params }).dynamicParams) {\n        return (source as { dynamicParams(): Params }).dynamicParams();\n      }\n      if ((source as { params?: Params }).params) {\n        return (source as { params: Params }).params;\n      }\n      return source as Params;\n    }\n  };\n\n  export function params(input: { proof_body_hdr_type_slot: number | bigint, proof_body_payload_size: number | bigint }): Params {\n    return Params.fromValues(input);\n  }\n}\n\nexport class CompressArgsBuilder {\n  private buffer: Uint8Array;\n  private view: DataView;\n  private __tnCachedParams: CompressArgs.Params | null = null;\n  private __tnLastBuffer: Uint8Array | null = null;\n  private __tnLastParams: CompressArgs.Params | null = null;\n  private __tnTail_proof: Uint8Array | null = null;\n  private __tnTailParams_proof: Record<string, bigint> | null = null;\n\n  constructor() {\n    this.buffer = new Uint8Array(2);\n    this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n  }\n\n  private __tnInvalidate(): void {\n    this.__tnCachedParams = null;\n    this.__tnLastBuffer = null;\n    this.__tnLastParams = null;\n  }\n\n  set_account_idx(value: number): this {\n    this.view.setUint16(0, value, true);\n    this.__tnInvalidate();\n    return this;\n  }\n\n  set_proof(value: StateProof | __TnStructFieldInput): this {\n    const bytes = __tnResolveStructFieldInput(value as __TnStructFieldInput, \"CompressArgsBuilder::proof\");\n    const validation = __tnInvokeDynamicValidate(\"StateProof\", bytes);\n    if (!validation.ok || validation.consumed === undefined) throw new Error(\"CompressArgsBuilder: field 'proof' failed validation\");\n    if (__tnBigIntToNumber(validation.consumed, \"CompressArgsBuilder::proof\") !== bytes.length) throw new Error(\"CompressArgsBuilder: field 'proof' validation did not consume the full buffer\");\n    this.__tnTail_proof = bytes;\n    this.__tnTailParams_proof = validation.params ?? null;\n    this.__tnInvalidate();\n    return this;\n  }\n\n  build(): Uint8Array {\n    const params = this.__tnComputeParams();\n    const size = CompressArgs.footprintFromParams(params);\n    const buffer = new Uint8Array(size);\n    this.__tnWriteInto(buffer);\n    this.__tnValidateOrThrow(buffer, params);\n    return buffer;\n  }\n\n  buildInto(target: Uint8Array, offset = 0): Uint8Array {\n    const params = this.__tnComputeParams();\n    const size = CompressArgs.footprintFromParams(params);\n    if (target.length - offset < size) throw new Error(\"CompressArgsBuilder: target buffer too small\");\n    const slice = target.subarray(offset, offset + size);\n    this.__tnWriteInto(slice);\n    this.__tnValidateOrThrow(slice, params);\n    return target;\n  }\n\n  finish(): CompressArgs {\n    const buffer = this.build();\n    const params = this.__tnLastParams ?? this.__tnComputeParams();\n    const view = CompressArgs.from_array(buffer, { params });\n    if (!view) throw new Error(\"CompressArgsBuilder: failed to finalize view\");\n    return view;\n  }\n\n  finishView(): CompressArgs {\n    return this.finish();\n  }\n\n  dynamicParams(): CompressArgs.Params {\n    return this.__tnComputeParams();\n  }\n\n  private __tnComputeParams(): CompressArgs.Params {\n    if (this.__tnCachedParams) return this.__tnCachedParams;\n    const params = CompressArgs.Params.fromValues({\n      proof_body_hdr_type_slot: (() => { const params = this.__tnTailParams_proof; if (!params || params[\"proof_body_hdr_type_slot\"] === undefined) throw new Error(\"CompressArgsBuilder: field 'proof' must be written before computing params\"); return params[\"proof_body_hdr_type_slot\"]; })(),\n      proof_body_payload_size: (() => { const params = this.__tnTailParams_proof; if (!params || params[\"proof_body_payload_size\"] === undefined) throw new Error(\"CompressArgsBuilder: field 'proof' must be written before computing params\"); return params[\"proof_body_payload_size\"]; })(),\n    });\n    this.__tnCachedParams = params;\n    return params;\n  }\n\n  private __tnWriteInto(target: Uint8Array): void {\n    target.set(this.buffer, 0);\n    let cursor = this.buffer.length;\n    const __tnLocal_proof_bytes = this.__tnTail_proof;\n    if (!__tnLocal_proof_bytes) throw new Error(\"CompressArgsBuilder: field 'proof' must be written before build\");\n    target.set(__tnLocal_proof_bytes, cursor);\n    cursor += __tnLocal_proof_bytes.length;\n  }\n\n  private __tnValidateOrThrow(buffer: Uint8Array, params: CompressArgs.Params): void {\n    const result = CompressArgs.validate(buffer, { params });\n    if (!result.ok) {\n      throw new Error(`${ CompressArgs }Builder: builder produced invalid buffer (code=${result.code ?? \"unknown\"})`);\n    }\n    this.__tnLastParams = result.params ?? params;\n    this.__tnLastBuffer = buffer;\n  }\n}\n\n__tnRegisterFootprint(\"CompressArgs\", (params) => CompressArgs.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"CompressArgs\", (buffer, params) => CompressArgs.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"CompressArgs\", (buffer) => { const result = CompressArgs.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n\n/* ----- TYPE DEFINITION FOR DecompressArgs ----- */\n\nconst __tn_ir_DecompressArgs = {\n  typeName: \"DecompressArgs\",\n  root: { op: \"align\", alignment: 1, node: { op: \"add\", left: { op: \"add\", left: { op: \"add\", left: { op: \"add\", left: { op: \"align\", alignment: 2, node: { op: \"const\", value: 2n } }, right: { op: \"align\", alignment: 8, node: { op: \"const\", value: 8n } } }, right: { op: \"align\", alignment: 1, node: { op: \"const\", value: 64n } } }, right: { op: \"align\", alignment: 1, node: { op: \"mul\", left: { op: \"field\", param: \"account_data.account_data_sz\" }, right: { op: \"const\", value: 1n } } } }, right: { op: \"align\", alignment: 1, node: { op: \"call\", typeName: \"StateProof\", args: [{ name: \"proof_body.hdr.type_slot\", source: \"proof_body.hdr.type_slot\" }, { name: \"proof_body.payload_size\", source: \"proof_body.payload_size\" }] } } } }\n} as const;\n\nexport class DecompressArgs {\n  private view: DataView;\n  private __tnFieldContext: Record<string, number | bigint> | null = null;\n  private __tnParams: DecompressArgs.Params;\n\n  private constructor(private buffer: Uint8Array, params?: DecompressArgs.Params, fieldContext?: Record<string, number | bigint>) {\n    this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    this.__tnFieldContext = fieldContext ?? null;\n    if (params) {\n      this.__tnParams = params;\n    } else {\n      const derived = DecompressArgs.__tnExtractParams(this.view, buffer);\n      if (!derived) {\n        throw new Error(\"DecompressArgs: failed to derive dynamic parameters\");\n      }\n      this.__tnParams = derived.params;\n    }\n  }\n\n  static __tnCreateView(buffer: Uint8Array, opts?: { params?: DecompressArgs.Params, fieldContext?: Record<string, number | bigint> }): DecompressArgs {\n    if (!buffer || buffer.length === undefined) throw new Error(\"DecompressArgs.__tnCreateView requires a Uint8Array\");\n    let params = opts?.params ?? null;\n    if (!params) {\n      const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n      const derived = DecompressArgs.__tnExtractParams(view, buffer);\n      if (!derived) throw new Error(\"DecompressArgs.__tnCreateView: failed to derive params\");\n      params = derived.params;\n    }\n    const instance = new DecompressArgs(new Uint8Array(buffer), params, opts?.fieldContext);\n    return instance;\n  }\n\n  dynamicParams(): DecompressArgs.Params {\n    return this.__tnParams;\n  }\n\n  withFieldContext(context: Record<string, number | bigint>): this {\n    this.__tnFieldContext = context;\n    return this;\n  }\n\n  private __tnResolveFieldRef(path: string): number {\n    const getterName = `get_${path.replace(/[.]/g, '_')}`;\n    const getter = (this as any)[getterName];\n    if (typeof getter === \"function\") {\n      const value = getter.call(this);\n      return typeof value === \"bigint\" ? __tnBigIntToNumber(value, \"DecompressArgs::__tnResolveFieldRef\") : value;\n    }\n    if (this.__tnFieldContext && Object.prototype.hasOwnProperty.call(this.__tnFieldContext, path)) {\n      const contextValue = this.__tnFieldContext[path];\n      return typeof contextValue === \"bigint\" ? __tnBigIntToNumber(contextValue, \"DecompressArgs::__tnResolveFieldRef\") : contextValue;\n    }\n    throw new Error(\"DecompressArgs: field reference '\" + path + \"' is not available; provide fieldContext when creating this view\");\n  }\n\n  static builder(): DecompressArgsBuilder {\n    return new DecompressArgsBuilder();\n  }\n\n  static fromBuilder(builder: DecompressArgsBuilder): DecompressArgs | null {\n    const buffer = builder.build();\n    const params = builder.dynamicParams();\n    return DecompressArgs.from_array(buffer, { params });\n  }\n\n  static readonly flexibleArrayWriters = Object.freeze([\n    { field: \"account_data\", method: \"account_data\", sizeField: \"account_data_sz\", paramKey: \"account_data_sz\", elementSize: 1 },\n  ] as const);\n\n  static __tnComputeSequentialLayout(view: DataView, buffer: Uint8Array): { params: Record<string, bigint> | null; offsets: Record<string, number> | null; derived: Record<string, bigint> | null } | null {\n    const offsets: Record<string, number> = Object.create(null);\n    const __tnLength = buffer.length;\n    let __tnParamSeq_proof_body_hdr_type_slot: bigint | null = null;\n    let __tnParamSeq_proof_body_payload_size: bigint | null = null;\n    let __tnFieldValue_account_idx: number | null = null;\n    let __tnFieldValue_account_data_sz: bigint | null = null;\n    let __tnCursorMutable = 0;\n    if (__tnCursorMutable + 2 > __tnLength) return null;\n    const __tnRead_account_idx = view.getUint16(__tnCursorMutable, true);\n    __tnFieldValue_account_idx = __tnRead_account_idx;\n    __tnCursorMutable += 2;\n    if (__tnCursorMutable + 8 > __tnLength) return null;\n    const __tnRead_account_data_sz = view.getBigUint64(__tnCursorMutable, true);\n    __tnFieldValue_account_data_sz = __tnRead_account_data_sz;\n    __tnCursorMutable += 8;\n    if (__tnCursorMutable + 64 > __tnLength) return null;\n    __tnCursorMutable += 64;\n    if (__tnFieldValue_account_data_sz === null) return null;\n    const __tnArrayCount_account_data = Math.trunc(Number(__tnFieldValue_account_data_sz));\n    if (!Number.isFinite(__tnArrayCount_account_data) || __tnArrayCount_account_data < 0) return null;\n    const __tnArrayBytes_account_data = __tnArrayCount_account_data * 1;\n    if (__tnCursorMutable + __tnArrayBytes_account_data > __tnLength) return null;\n    __tnCursorMutable += __tnArrayBytes_account_data;\n    offsets[\"proof\"] = __tnCursorMutable;\n    const __tnTyperefResult_proof = __tnInvokeDynamicValidate(\"StateProof\", buffer.subarray(__tnCursorMutable));\n    if (!__tnTyperefResult_proof.ok || __tnTyperefResult_proof.consumed === undefined) return null;\n    const __tnTyperefParams_proof = __tnTyperefResult_proof.params ?? null;\n    if (!__tnTyperefParams_proof || __tnTyperefParams_proof[\"proof_body_hdr_type_slot\"] === undefined) return null;\n    __tnParamSeq_proof_body_hdr_type_slot = __tnTyperefParams_proof[\"proof_body_hdr_type_slot\"];\n    if (!__tnTyperefParams_proof || __tnTyperefParams_proof[\"proof_body_payload_size\"] === undefined) return null;\n    __tnParamSeq_proof_body_payload_size = __tnTyperefParams_proof[\"proof_body_payload_size\"];\n    __tnCursorMutable += __tnBigIntToNumber(__tnTyperefResult_proof.consumed, \"DecompressArgs::proof\");\n    const params: Record<string, bigint> = Object.create(null);\n    if (__tnParamSeq_proof_body_hdr_type_slot === null) return null;\n    params[\"proof_body_hdr_type_slot\"] = __tnParamSeq_proof_body_hdr_type_slot as bigint;\n    if (__tnParamSeq_proof_body_payload_size === null) return null;\n    params[\"proof_body_payload_size\"] = __tnParamSeq_proof_body_payload_size as bigint;\n    return { params, offsets: offsets, derived: null };\n  }\n\n  private static __tnExtractParams(view: DataView, buffer: Uint8Array): { params: DecompressArgs.Params; derived: Record<string, bigint> | null } | null {\n    if (buffer.length < 10) {\n      return null;\n    }\n    const __tnParam_account_data_account_data_sz = __tnToBigInt(view.getBigUint64(2, true));\n    const __tnLayout = DecompressArgs.__tnComputeSequentialLayout(view, buffer);\n    if (!__tnLayout || !__tnLayout.params) return null;\n    const __tnSeqParams = __tnLayout.params;\n    const __tnParamSeq_proof_body_hdr_type_slot = __tnSeqParams[\"proof_body_hdr_type_slot\"];\n    if (__tnParamSeq_proof_body_hdr_type_slot === undefined) return null;\n    const __tnParamSeq_proof_body_payload_size = __tnSeqParams[\"proof_body_payload_size\"];\n    if (__tnParamSeq_proof_body_payload_size === undefined) return null;\n    const __tnExtractedParams = DecompressArgs.Params.fromValues({\n      account_data_account_data_sz: __tnParam_account_data_account_data_sz,\n      proof_body_hdr_type_slot: __tnParamSeq_proof_body_hdr_type_slot as bigint,\n      proof_body_payload_size: __tnParamSeq_proof_body_payload_size as bigint,\n    });\n    return { params: __tnExtractedParams, derived: null };\n  }\n\n  /* Dynamic offsets are derived once per view; mutating length fields later does not invalidate this cache. */\n  private __tnDynamicOffsetCache: Record<string, number> | null = null;\n  private __tnGetDynamicOffset(field: string): number {\n    if (!this.__tnDynamicOffsetCache) {\n      this.__tnDynamicOffsetCache = this.__tnComputeDynamicOffsets();\n    }\n    const offset = this.__tnDynamicOffsetCache[field];\n    if (offset === undefined) {\n      throw new Error(\"DecompressArgs: field '\" + field + \"' does not have a dynamic offset\");\n    }\n    return offset;\n  }\n\n  private __tnComputeDynamicOffsets(): Record<string, number> {\n    const layout = DecompressArgs.__tnComputeSequentialLayout(this.view, this.buffer);\n    if (!layout || !layout.offsets) {\n      throw new Error(\"DecompressArgs: failed to compute dynamic offsets\");\n    }\n    return layout.offsets;\n  }\n\n  get_account_idx(): number {\n    const offset = 0;\n    return this.view.getUint16(offset, true); /* little-endian */\n  }\n\n  set_account_idx(value: number): void {\n    const offset = 0;\n    this.view.setUint16(offset, value, true); /* little-endian */\n  }\n\n  get account_idx(): number {\n    return this.get_account_idx();\n  }\n\n  set account_idx(value: number) {\n    this.set_account_idx(value);\n  }\n\n  get_account_data_sz(): bigint {\n    const offset = 2;\n    return this.view.getBigUint64(offset, true); /* little-endian */\n  }\n\n  set_account_data_sz(value: bigint): void {\n    const offset = 2;\n    this.view.setBigUint64(offset, value, true); /* little-endian */\n  }\n\n  get account_data_sz(): bigint {\n    return this.get_account_data_sz();\n  }\n\n  set account_data_sz(value: bigint) {\n    this.set_account_data_sz(value);\n  }\n\n  get_account_meta(): number[] {\n    const offset = 10;\n    const result: number[] = [];\n    for (let i = 0; i < 64; i++) {\n      result.push(this.view.getUint8((offset + i * 1)));\n    }\n    return result;\n  }\n\n  set_account_meta(value: number[]): void {\n    const offset = 10;\n    if (value.length !== 64) {\n      throw new Error('Array length must be 64');\n    }\n    for (let i = 0; i < 64; i++) {\n      this.view.setUint8((offset + i * 1), value[i]);\n    }\n  }\n\n  get account_meta(): number[] {\n    return this.get_account_meta();\n  }\n\n  set account_meta(value: number[]) {\n    this.set_account_meta(value);\n  }\n\n  get_account_data_length(): number {\n    return this.__tnResolveFieldRef(\"account_data_sz\");\n  }\n\n  get_account_data_at(index: number): number {\n    const offset = 74;\n    return this.view.getUint8(offset + index * 1);\n  }\n\n  get_account_data(): number[] {\n    const len = this.get_account_data_length();\n    const result: number[] = [];\n    for (let i = 0; i < len; i++) {\n      result.push(this.get_account_data_at(i));\n    }\n    return result;\n  }\n\n  set_account_data_at(index: number, value: number): void {\n    const offset = 74;\n    this.view.setUint8((offset + index * 1), value);\n  }\n\n  set_account_data(value: number[]): void {\n    const len = Math.min(this.get_account_data_length(), value.length);\n    for (let i = 0; i < len; i++) {\n      this.set_account_data_at(i, value[i]);\n    }\n  }\n\n  get account_data(): number[] {\n    return this.get_account_data();\n  }\n\n  set account_data(value: number[]) {\n    this.set_account_data(value);\n  }\n\n  get_proof(): StateProof {\n    const offset = this.__tnGetDynamicOffset(\"proof\");\n    const tail = this.buffer.subarray(offset);\n    const validation = StateProof.validate(tail);\n    if (!validation.ok || validation.consumed === undefined) {\n      throw new Error(\"DecompressArgs: failed to read field 'proof' (invalid nested payload)\");\n    }\n    const length = validation.consumed;\n    const slice = tail.subarray(0, length);\n    const opts = validation.params ? { params: validation.params } : undefined;\n    return StateProof.from_array(slice, opts)!;\n  }\n\n  set_proof(value: StateProof): void {\n    /* Copy bytes from source struct to this field */\n    const sourceBytes = (value as any).buffer as Uint8Array;\n    const offset = this.__tnGetDynamicOffset(\"proof\");\n    this.buffer.set(sourceBytes, offset);\n  }\n\n  get proof(): StateProof {\n    return this.get_proof();\n  }\n\n  set proof(value: StateProof) {\n    this.set_proof(value);\n  }\n  private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n    return __tnEvalFootprint(__tn_ir_DecompressArgs.root, { params: __tnParams });\n  }\n\n  private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n    return __tnValidateIrTree(__tn_ir_DecompressArgs, buffer, __tnParams);\n  }\n\n  static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n    return this.__tnFootprintInternal(__tnParams);\n  }\n\n  static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n    return this.__tnValidateInternal(buffer, __tnParams);\n  }\n\n  static footprintIr(account_data_account_data_sz: number | bigint, proof_body_hdr_type_slot: number | bigint, proof_body_payload_size: number | bigint): bigint {\n    const params = DecompressArgs.Params.fromValues({\n      account_data_account_data_sz: account_data_account_data_sz,\n      proof_body_hdr_type_slot: proof_body_hdr_type_slot,\n      proof_body_payload_size: proof_body_payload_size,\n    });\n    return this.footprintIrFromParams(params);\n  }\n\n  private static __tnPackParams(params: DecompressArgs.Params): Record<string, bigint> {\n    const record: Record<string, bigint> = Object.create(null);\n    record[\"account_data.account_data_sz\"] = params.account_data_account_data_sz;\n    record[\"proof_body.hdr.type_slot\"] = params.proof_body_hdr_type_slot;\n    record[\"proof_body.payload_size\"] = params.proof_body_payload_size;\n    return record;\n  }\n\n  static footprintIrFromParams(params: DecompressArgs.Params): bigint {\n    const __tnParams = this.__tnPackParams(params);\n    return this.__tnFootprintInternal(__tnParams);\n  }\n\n  static footprintFromParams(params: DecompressArgs.Params): number {\n    const irResult = this.footprintIrFromParams(params);\n    const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n    if (__tnBigIntGreaterThan(irResult, maxSafe)) throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for DecompressArgs');\n    return __tnBigIntToNumber(irResult, 'DecompressArgs::footprintFromParams');\n  }\n\n  static footprintFromValues(input: { account_data_account_data_sz: number | bigint, proof_body_hdr_type_slot: number | bigint, proof_body_payload_size: number | bigint }): number {\n    const params = DecompressArgs.params(input);\n    return this.footprintFromParams(params);\n  }\n\n  static footprint(params: DecompressArgs.Params): number {\n    return this.footprintFromParams(params);\n  }\n\n  static validate(buffer: Uint8Array, opts?: { params?: DecompressArgs.Params }): { ok: boolean; code?: string; consumed?: number; params?: DecompressArgs.Params } {\n    if (!buffer || buffer.length === undefined) {\n      return { ok: false, code: \"tn.invalid_buffer\" };\n    }\n    const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    let params = opts?.params ?? null;\n    if (!params) {\n      const extracted = this.__tnExtractParams(view, buffer);\n      if (!extracted) return { ok: false, code: \"tn.param_extraction_failed\" };\n      params = extracted.params;\n    }\n    const __tnParamsRec = this.__tnPackParams(params);\n    const irResult = this.__tnValidateInternal(buffer, __tnParamsRec);\n    if (!irResult.ok) {\n      return { ok: false, code: irResult.code, consumed: irResult.consumed ? __tnBigIntToNumber(irResult.consumed, 'DecompressArgs::validate') : undefined, params };\n    }\n    const consumed = irResult.consumed ? __tnBigIntToNumber(irResult.consumed, 'DecompressArgs::validate') : undefined;\n    return { ok: true, consumed, params };\n  }\n\n  static from_array(buffer: Uint8Array, opts?: { params?: DecompressArgs.Params }): DecompressArgs | null {\n    if (!buffer || buffer.length === undefined) {\n      return null;\n    }\n    const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    let params = opts?.params ?? null;\n    if (!params) {\n      const derived = this.__tnExtractParams(view, buffer);\n      if (!derived) return null;\n      params = derived.params;\n    }\n    const validation = this.validate(buffer, { params });\n    if (!validation.ok) {\n      return null;\n    }\n    const cached = validation.params ?? params;\n    const state = new DecompressArgs(buffer, cached);\n    return state;\n  }\n\n\n}\n\nexport namespace DecompressArgs {\n  export type Params = {\n    /** ABI path: account_data.account_data_sz */\n    readonly account_data_account_data_sz: bigint;\n    /** ABI path: proof_body.hdr.type_slot */\n    readonly proof_body_hdr_type_slot: bigint;\n    /** ABI path: proof_body.payload_size */\n    readonly proof_body_payload_size: bigint;\n  };\n\n  export const ParamKeys = Object.freeze({\n    account_data_account_data_sz: \"account_data.account_data_sz\",\n    proof_body_hdr_type_slot: \"proof_body.hdr.type_slot\",\n    proof_body_payload_size: \"proof_body.payload_size\",\n  } as const);\n\n  export const Params = {\n    fromValues(input: { account_data_account_data_sz: number | bigint, proof_body_hdr_type_slot: number | bigint, proof_body_payload_size: number | bigint }): Params {\n      return {\n        account_data_account_data_sz: __tnToBigInt(input.account_data_account_data_sz),\n        proof_body_hdr_type_slot: __tnToBigInt(input.proof_body_hdr_type_slot),\n        proof_body_payload_size: __tnToBigInt(input.proof_body_payload_size),\n      };\n    },\n    fromBuilder(source: { dynamicParams(): Params } | { params: Params } | Params): Params {\n      if ((source as { dynamicParams?: () => Params }).dynamicParams) {\n        return (source as { dynamicParams(): Params }).dynamicParams();\n      }\n      if ((source as { params?: Params }).params) {\n        return (source as { params: Params }).params;\n      }\n      return source as Params;\n    }\n  };\n\n  export function params(input: { account_data_account_data_sz: number | bigint, proof_body_hdr_type_slot: number | bigint, proof_body_payload_size: number | bigint }): Params {\n    return Params.fromValues(input);\n  }\n}\n\nexport class DecompressArgsBuilder {\n  private buffer: Uint8Array;\n  private view: DataView;\n  private __tnCachedParams: DecompressArgs.Params | null = null;\n  private __tnLastBuffer: Uint8Array | null = null;\n  private __tnLastParams: DecompressArgs.Params | null = null;\n  private __tnFam_account_data: Uint8Array | null = null;\n  private __tnFam_account_dataCount: number | null = null;\n  private __tnFamWriter_account_data?: __TnFamWriterResult<DecompressArgsBuilder>;\n  private __tnTail_proof: Uint8Array | null = null;\n  private __tnTailParams_proof: Record<string, bigint> | null = null;\n\n  constructor() {\n    this.buffer = new Uint8Array(74);\n    this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n  }\n\n  private __tnInvalidate(): void {\n    this.__tnCachedParams = null;\n    this.__tnLastBuffer = null;\n    this.__tnLastParams = null;\n  }\n\n  set_account_idx(value: number): this {\n    this.view.setUint16(0, value, true);\n    this.__tnInvalidate();\n    return this;\n  }\n\n  set_account_data_sz(value: bigint): this {\n    const cast = __tnToBigInt(value);\n    this.view.setBigUint64(2, cast, true);\n    this.__tnInvalidate();\n    return this;\n  }\n\n  set_account_meta(values: number[]): this {\n    if (values.length !== 64) throw new Error(\"account_meta expects 64 elements\");\n    for (let i = 0; i < values.length; i++) {\n      const byteOffset = 10 + i * 1;\n      this.view.setUint8(byteOffset, values[i]);\n    }\n    this.__tnInvalidate();\n    return this;\n  }\n\n  account_data(): __TnFamWriterResult<DecompressArgsBuilder> {\n    if (!this.__tnFamWriter_account_data) {\n      this.__tnFamWriter_account_data = __tnCreateFamWriter(this, \"account_data\", (payload) => {\n        const bytes = new Uint8Array(payload);\n        const elementCount = bytes.length;\n        this.__tnFam_account_data = bytes;\n        this.__tnFam_account_dataCount = elementCount;\n        this.set_account_data_sz(__tnToBigInt(elementCount));\n        this.__tnInvalidate();\n      });\n    }\n    return this.__tnFamWriter_account_data!;\n  }\n\n  set_proof(value: StateProof | __TnStructFieldInput): this {\n    const bytes = __tnResolveStructFieldInput(value as __TnStructFieldInput, \"DecompressArgsBuilder::proof\");\n    const validation = __tnInvokeDynamicValidate(\"StateProof\", bytes);\n    if (!validation.ok || validation.consumed === undefined) throw new Error(\"DecompressArgsBuilder: field 'proof' failed validation\");\n    if (__tnBigIntToNumber(validation.consumed, \"DecompressArgsBuilder::proof\") !== bytes.length) throw new Error(\"DecompressArgsBuilder: field 'proof' validation did not consume the full buffer\");\n    this.__tnTail_proof = bytes;\n    this.__tnTailParams_proof = validation.params ?? null;\n    this.__tnInvalidate();\n    return this;\n  }\n\n  build(): Uint8Array {\n    const params = this.__tnComputeParams();\n    const size = DecompressArgs.footprintFromParams(params);\n    const buffer = new Uint8Array(size);\n    this.__tnWriteInto(buffer);\n    this.__tnValidateOrThrow(buffer, params);\n    return buffer;\n  }\n\n  buildInto(target: Uint8Array, offset = 0): Uint8Array {\n    const params = this.__tnComputeParams();\n    const size = DecompressArgs.footprintFromParams(params);\n    if (target.length - offset < size) throw new Error(\"DecompressArgsBuilder: target buffer too small\");\n    const slice = target.subarray(offset, offset + size);\n    this.__tnWriteInto(slice);\n    this.__tnValidateOrThrow(slice, params);\n    return target;\n  }\n\n  finish(): DecompressArgs {\n    const buffer = this.build();\n    const params = this.__tnLastParams ?? this.__tnComputeParams();\n    const view = DecompressArgs.from_array(buffer, { params });\n    if (!view) throw new Error(\"DecompressArgsBuilder: failed to finalize view\");\n    return view;\n  }\n\n  finishView(): DecompressArgs {\n    return this.finish();\n  }\n\n  dynamicParams(): DecompressArgs.Params {\n    return this.__tnComputeParams();\n  }\n\n  private __tnComputeParams(): DecompressArgs.Params {\n    if (this.__tnCachedParams) return this.__tnCachedParams;\n    const params = DecompressArgs.Params.fromValues({\n      account_data_account_data_sz: (() => { if (this.__tnFam_account_dataCount === null) throw new Error(\"DecompressArgsBuilder: field 'account_data' must be written before computing params\"); return __tnToBigInt(this.__tnFam_account_dataCount); })(),\n      proof_body_hdr_type_slot: (() => { const params = this.__tnTailParams_proof; if (!params || params[\"proof_body_hdr_type_slot\"] === undefined) throw new Error(\"DecompressArgsBuilder: field 'proof' must be written before computing params\"); return params[\"proof_body_hdr_type_slot\"]; })(),\n      proof_body_payload_size: (() => { const params = this.__tnTailParams_proof; if (!params || params[\"proof_body_payload_size\"] === undefined) throw new Error(\"DecompressArgsBuilder: field 'proof' must be written before computing params\"); return params[\"proof_body_payload_size\"]; })(),\n    });\n    this.__tnCachedParams = params;\n    return params;\n  }\n\n  private __tnWriteInto(target: Uint8Array): void {\n    target.set(this.buffer, 0);\n    let cursor = this.buffer.length;\n    const __tnLocal_account_data_bytes = this.__tnFam_account_data;\n    if (!__tnLocal_account_data_bytes) throw new Error(\"DecompressArgsBuilder: field 'account_data' must be written before build\");\n    target.set(__tnLocal_account_data_bytes, cursor);\n    cursor += __tnLocal_account_data_bytes.length;\n    const __tnLocal_proof_bytes = this.__tnTail_proof;\n    if (!__tnLocal_proof_bytes) throw new Error(\"DecompressArgsBuilder: field 'proof' must be written before build\");\n    target.set(__tnLocal_proof_bytes, cursor);\n    cursor += __tnLocal_proof_bytes.length;\n  }\n\n  private __tnValidateOrThrow(buffer: Uint8Array, params: DecompressArgs.Params): void {\n    const result = DecompressArgs.validate(buffer, { params });\n    if (!result.ok) {\n      throw new Error(`${ DecompressArgs }Builder: builder produced invalid buffer (code=${result.code ?? \"unknown\"})`);\n    }\n    this.__tnLastParams = result.params ?? params;\n    this.__tnLastBuffer = buffer;\n  }\n}\n\n__tnRegisterFootprint(\"DecompressArgs\", (params) => DecompressArgs.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"DecompressArgs\", (buffer, params) => DecompressArgs.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"DecompressArgs\", (buffer) => { const result = DecompressArgs.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n\n/* ----- TYPE DEFINITION FOR CompressionInstruction ----- */\n\nconst __tn_ir_CompressionInstruction = {\n  typeName: \"CompressionInstruction\",\n  root: { op: \"align\", alignment: 1, node: { op: \"add\", left: { op: \"align\", alignment: 4, node: { op: \"const\", value: 4n } }, right: { op: \"align\", alignment: 1, node: { op: \"field\", param: \"payload.payload_size\" } } } }\n} as const;\n\nexport class CompressionInstruction_payload_Inner {\n  private view: DataView;\n  private __tnFieldContext: Record<string, number | bigint> | null = null;\n  private constructor(private buffer: Uint8Array, private descriptor: __TnVariantDescriptor | null, fieldContext?: Record<string, number | bigint>) {\n    this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    this.__tnFieldContext = fieldContext ?? null;\n  }\n\n  static __tnCreate(payload: Uint8Array, descriptor: __TnVariantDescriptor | null, fieldContext?: Record<string, number | bigint>): CompressionInstruction_payload_Inner {\n    return new CompressionInstruction_payload_Inner(new Uint8Array(payload), descriptor, fieldContext);\n  }\n\n  bytes(): Uint8Array {\n    return new Uint8Array(this.buffer);\n  }\n\n  variant(): __TnVariantDescriptor | null {\n    return this.descriptor;\n  }\n\n  asCompress(): CompressArgs | null {\n    if (!this.descriptor || this.descriptor.tag !== 1) return null;\n    return CompressArgs.__tnCreateView(new Uint8Array(this.buffer), { fieldContext: this.__tnFieldContext ?? undefined });\n  }\n\n  asDecompress(): DecompressArgs | null {\n    if (!this.descriptor || this.descriptor.tag !== 2) return null;\n    return DecompressArgs.__tnCreateView(new Uint8Array(this.buffer), { fieldContext: this.__tnFieldContext ?? undefined });\n  }\n\n  asCompressFromPointer(): CompressFromPointerArgs | null {\n    if (!this.descriptor || this.descriptor.tag !== 3) return null;\n    return CompressFromPointerArgs.__tnCreateView(new Uint8Array(this.buffer), { fieldContext: this.__tnFieldContext ?? undefined });\n  }\n\n  asDecompressFromPointer(): DecompressFromPointerArgs | null {\n    if (!this.descriptor || this.descriptor.tag !== 4) return null;\n    return DecompressFromPointerArgs.__tnCreateView(new Uint8Array(this.buffer), { fieldContext: this.__tnFieldContext ?? undefined });\n  }\n\n}\n\nexport class CompressionInstruction {\n  private view: DataView;\n  private static readonly __tnFieldOffset_payload = 4;\n  private __tnParams: CompressionInstruction.Params;\n\n  private constructor(private buffer: Uint8Array, params?: CompressionInstruction.Params) {\n    this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    if (params) {\n      this.__tnParams = params;\n    } else {\n      const derived = CompressionInstruction.__tnExtractParams(this.view, buffer);\n      if (!derived) {\n        throw new Error(\"CompressionInstruction: failed to derive dynamic parameters\");\n      }\n      this.__tnParams = derived.params;\n    }\n  }\n\n  static __tnCreateView(buffer: Uint8Array, opts?: { params?: CompressionInstruction.Params, fieldContext?: Record<string, number | bigint> }): CompressionInstruction {\n    if (!buffer || buffer.length === undefined) throw new Error(\"CompressionInstruction.__tnCreateView requires a Uint8Array\");\n    let params = opts?.params ?? null;\n    if (!params) {\n      const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n      const derived = CompressionInstruction.__tnExtractParams(view, buffer);\n      if (!derived) throw new Error(\"CompressionInstruction.__tnCreateView: failed to derive params\");\n      params = derived.params;\n    }\n    const instance = new CompressionInstruction(new Uint8Array(buffer), params);\n    return instance;\n  }\n\n  dynamicParams(): CompressionInstruction.Params {\n    return this.__tnParams;\n  }\n\n  static builder(): CompressionInstructionBuilder {\n    return new CompressionInstructionBuilder();\n  }\n\n  static fromBuilder(builder: CompressionInstructionBuilder): CompressionInstruction | null {\n    const buffer = builder.build();\n    const params = builder.dynamicParams();\n    return CompressionInstruction.from_array(buffer, { params });\n  }\n\n  static readonly payloadVariantDescriptors = Object.freeze([\n    {\n      name: \"compress\",\n      tag: 1,\n      payloadSize: null,\n      payloadType: \"CompressionInstruction::payload::compress\",\n      createPayloadBuilder: () => __tnMaybeCallBuilder(CompressArgs),\n    },\n    {\n      name: \"decompress\",\n      tag: 2,\n      payloadSize: null,\n      payloadType: \"CompressionInstruction::payload::decompress\",\n      createPayloadBuilder: () => __tnMaybeCallBuilder(DecompressArgs),\n    },\n    {\n      name: \"compress_from_pointer\",\n      tag: 3,\n      payloadSize: 18,\n      payloadType: \"CompressionInstruction::payload::compress_from_pointer\",\n      createPayloadBuilder: () => __tnMaybeCallBuilder(CompressFromPointerArgs),\n    },\n    {\n      name: \"decompress_from_pointer\",\n      tag: 4,\n      payloadSize: 42,\n      payloadType: \"CompressionInstruction::payload::decompress_from_pointer\",\n      createPayloadBuilder: () => __tnMaybeCallBuilder(DecompressFromPointerArgs),\n    },\n  ] as const);\n\n  static __tnComputeSequentialLayout(view: DataView, buffer: Uint8Array): { params: Record<string, bigint> | null; offsets: Record<string, number> | null; derived: Record<string, bigint> | null } | null {\n    const __tnLength = buffer.length;\n    let __tnParamSeq_payload_payload_size: bigint | null = null;\n    let __tnFieldValue_discriminant: number | null = null;\n    let __tnCursorMutable = 0;\n    if (__tnCursorMutable + 4 > __tnLength) return null;\n    const __tnRead_discriminant = view.getUint32(__tnCursorMutable, true);\n    __tnFieldValue_discriminant = __tnRead_discriminant;\n    __tnCursorMutable += 4;\n    const __tnEnumTagValue_payload = __tnFieldValue_discriminant;\n    if (__tnEnumTagValue_payload === null) return null;\n    let __tnEnumSize_payload = 0;\n    switch (Number(__tnEnumTagValue_payload)) {\n      case 1: break;\n      case 2: break;\n      case 3: break;\n      case 4: break;\n      default: return null;\n    }\n    if (__tnCursorMutable > __tnLength) return null;\n    __tnEnumSize_payload = __tnLength - __tnCursorMutable;\n    __tnCursorMutable = __tnLength;\n    __tnParamSeq_payload_payload_size = __tnToBigInt(__tnEnumSize_payload);\n    const params: Record<string, bigint> = Object.create(null);\n    if (__tnParamSeq_payload_payload_size === null) return null;\n    params[\"payload_payload_size\"] = __tnParamSeq_payload_payload_size as bigint;\n    return { params, offsets: null, derived: null };\n  }\n\n  private static __tnExtractParams(view: DataView, buffer: Uint8Array): { params: CompressionInstruction.Params; derived: Record<string, bigint> | null } | null {\n    if (buffer.length < 4) {\n      return null;\n    }\n    const __tnParam_payload_discriminant = __tnToBigInt(view.getUint32(0, true));\n    const __tnLayout = CompressionInstruction.__tnComputeSequentialLayout(view, buffer);\n    if (!__tnLayout || !__tnLayout.params) return null;\n    const __tnSeqParams = __tnLayout.params;\n    const __tnParamSeq_payload_payload_size = __tnSeqParams[\"payload_payload_size\"];\n    if (__tnParamSeq_payload_payload_size === undefined) return null;\n    const __tnExtractedParams = CompressionInstruction.Params.fromValues({\n      payload_discriminant: __tnParam_payload_discriminant,\n      payload_payload_size: __tnParamSeq_payload_payload_size as bigint,\n    });\n    return { params: __tnExtractedParams, derived: null };\n  }\n\n  get_discriminant(): number {\n    const offset = 0;\n    return this.view.getUint32(offset, true); /* little-endian */\n  }\n\n  set_discriminant(value: number): void {\n    const offset = 0;\n    this.view.setUint32(offset, value, true); /* little-endian */\n  }\n\n  get discriminant(): number {\n    return this.get_discriminant();\n  }\n\n  set discriminant(value: number) {\n    this.set_discriminant(value);\n  }\n\n  payloadVariant(): typeof CompressionInstruction.payloadVariantDescriptors[number] | null {\n    const tag = this.view.getUint8(0);\n    return CompressionInstruction.payloadVariantDescriptors.find((variant) => variant.tag === tag) ?? null;\n  }\n\n  payload(): CompressionInstruction_payload_Inner {\n    const descriptor = this.payloadVariant();\n    if (!descriptor) throw new Error(\"CompressionInstruction: unknown payload variant\");\n    const offset = CompressionInstruction.__tnFieldOffset_payload;\n    const remaining = this.buffer.length - offset;\n    const payloadLength = descriptor.payloadSize ?? remaining;\n    if (payloadLength < 0 || offset + payloadLength > this.buffer.length) throw new Error(\"CompressionInstruction: payload exceeds buffer bounds\");\n    const slice = this.buffer.subarray(offset, offset + payloadLength);\n    return CompressionInstruction_payload_Inner.__tnCreate(slice, descriptor, undefined);\n  }\n  private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n    return __tnEvalFootprint(__tn_ir_CompressionInstruction.root, { params: __tnParams });\n  }\n\n  private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n    return __tnValidateIrTree(__tn_ir_CompressionInstruction, buffer, __tnParams);\n  }\n\n  static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n    return this.__tnFootprintInternal(__tnParams);\n  }\n\n  static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n    return this.__tnValidateInternal(buffer, __tnParams);\n  }\n\n  static footprintIr(payload_discriminant: number | bigint, payload_payload_size: number | bigint): bigint {\n    const params = CompressionInstruction.Params.fromValues({\n      payload_discriminant: payload_discriminant,\n      payload_payload_size: payload_payload_size,\n    });\n    return this.footprintIrFromParams(params);\n  }\n\n  private static __tnPackParams(params: CompressionInstruction.Params): Record<string, bigint> {\n    const record: Record<string, bigint> = Object.create(null);\n    record[\"payload.discriminant\"] = params.payload_discriminant;\n    record[\"payload.payload_size\"] = params.payload_payload_size;\n    return record;\n  }\n\n  static footprintIrFromParams(params: CompressionInstruction.Params): bigint {\n    const __tnParams = this.__tnPackParams(params);\n    return this.__tnFootprintInternal(__tnParams);\n  }\n\n  static footprintFromParams(params: CompressionInstruction.Params): number {\n    const irResult = this.footprintIrFromParams(params);\n    const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n    if (__tnBigIntGreaterThan(irResult, maxSafe)) throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for CompressionInstruction');\n    return __tnBigIntToNumber(irResult, 'CompressionInstruction::footprintFromParams');\n  }\n\n  static footprintFromValues(input: { payload_discriminant: number | bigint, payload_payload_size: number | bigint }): number {\n    const params = CompressionInstruction.params(input);\n    return this.footprintFromParams(params);\n  }\n\n  static footprint(params: CompressionInstruction.Params): number {\n    return this.footprintFromParams(params);\n  }\n\n  static validate(buffer: Uint8Array, opts?: { params?: CompressionInstruction.Params }): { ok: boolean; code?: string; consumed?: number; params?: CompressionInstruction.Params } {\n    if (!buffer || buffer.length === undefined) {\n      return { ok: false, code: \"tn.invalid_buffer\" };\n    }\n    const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    let params = opts?.params ?? null;\n    if (!params) {\n      const extracted = this.__tnExtractParams(view, buffer);\n      if (!extracted) return { ok: false, code: \"tn.param_extraction_failed\" };\n      params = extracted.params;\n    }\n    const __tnParamsRec = this.__tnPackParams(params);\n    const irResult = this.__tnValidateInternal(buffer, __tnParamsRec);\n    if (!irResult.ok) {\n      return { ok: false, code: irResult.code, consumed: irResult.consumed ? __tnBigIntToNumber(irResult.consumed, 'CompressionInstruction::validate') : undefined, params };\n    }\n    const consumed = irResult.consumed ? __tnBigIntToNumber(irResult.consumed, 'CompressionInstruction::validate') : undefined;\n    return { ok: true, consumed, params };\n  }\n\n  static from_array(buffer: Uint8Array, opts?: { params?: CompressionInstruction.Params }): CompressionInstruction | null {\n    if (!buffer || buffer.length === undefined) {\n      return null;\n    }\n    const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    let params = opts?.params ?? null;\n    if (!params) {\n      const derived = this.__tnExtractParams(view, buffer);\n      if (!derived) return null;\n      params = derived.params;\n    }\n    const validation = this.validate(buffer, { params });\n    if (!validation.ok) {\n      return null;\n    }\n    const cached = validation.params ?? params;\n    const state = new CompressionInstruction(buffer, cached);\n    return state;\n  }\n\n\n}\n\nexport namespace CompressionInstruction {\n  export type Params = {\n    /** ABI path: payload.discriminant */\n    readonly payload_discriminant: bigint;\n    /** ABI path: payload.payload_size */\n    readonly payload_payload_size: bigint;\n  };\n\n  export const ParamKeys = Object.freeze({\n    payload_discriminant: \"payload.discriminant\",\n    payload_payload_size: \"payload.payload_size\",\n  } as const);\n\n  export const Params = {\n    fromValues(input: { payload_discriminant: number | bigint, payload_payload_size: number | bigint }): Params {\n      return {\n        payload_discriminant: __tnToBigInt(input.payload_discriminant),\n        payload_payload_size: __tnToBigInt(input.payload_payload_size),\n      };\n    },\n    fromBuilder(source: { dynamicParams(): Params } | { params: Params } | Params): Params {\n      if ((source as { dynamicParams?: () => Params }).dynamicParams) {\n        return (source as { dynamicParams(): Params }).dynamicParams();\n      }\n      if ((source as { params?: Params }).params) {\n        return (source as { params: Params }).params;\n      }\n      return source as Params;\n    }\n  };\n\n  export function params(input: { payload_discriminant: number | bigint, payload_payload_size: number | bigint }): Params {\n    return Params.fromValues(input);\n  }\n}\n\nexport class CompressionInstructionBuilder {\n  private __tnPrefixBuffer: Uint8Array;\n  private __tnPrefixView: DataView;\n  private __tnField_discriminant: number | null = null;\n  private __tnPayload_payload: { descriptor: typeof CompressionInstruction.payloadVariantDescriptors[number]; bytes: Uint8Array } | null = null;\n  private __tnCachedParams: CompressionInstruction.Params | null = null;\n  private __tnLastBuffer: Uint8Array | null = null;\n  private __tnLastParams: CompressionInstruction.Params | null = null;\n  private __tnVariantSelector_payload?: __TnVariantSelectorResult<CompressionInstructionBuilder>;\n\n  constructor() {\n    this.__tnPrefixBuffer = new Uint8Array(4);\n    this.__tnPrefixView = new DataView(this.__tnPrefixBuffer.buffer, this.__tnPrefixBuffer.byteOffset, this.__tnPrefixBuffer.byteLength);\n  }\n\n  private __tnInvalidate(): void {\n    this.__tnCachedParams = null;\n    this.__tnLastBuffer = null;\n    this.__tnLastParams = null;\n  }\n\n  private __tnAssign_discriminant(value: number): void {\n    this.__tnField_discriminant = value;\n    this.__tnInvalidate();\n  }\n\n  set_discriminant(value: number): this {\n    this.__tnAssign_discriminant(value);\n    return this;\n  }\n\n  payload(): __TnVariantSelectorResult<CompressionInstructionBuilder> {\n    if (!this.__tnVariantSelector_payload) {\n      this.__tnVariantSelector_payload = __tnCreateVariantSelector(this, CompressionInstruction.payloadVariantDescriptors, (descriptor, payload) => {\n        this.__tnPayload_payload = { descriptor, bytes: new Uint8Array(payload) };\n        this.__tnAssign_discriminant(descriptor.tag);\n      });\n    }\n    return this.__tnVariantSelector_payload!;\n  }\n\n  build(): Uint8Array {\n    const params = this.__tnComputeParams();\n    if (this.__tnField_discriminant === null) throw new Error(\"CompressionInstructionBuilder: field 'discriminant' must be set before build\");\n    if (!this.__tnPayload_payload) throw new Error(\"CompressionInstructionBuilder: payload variant not selected\");\n    const payloadLength = this.__tnPayload_payload.bytes.length;\n    const requiredSize = 4 + payloadLength;\n    const footprintSize = CompressionInstruction.footprintFromParams(params);\n    const size = Math.max(requiredSize, footprintSize);\n    const buffer = new Uint8Array(size);\n    this.__tnWriteInto(buffer);\n    this.__tnValidateOrThrow(buffer, params);\n    return buffer;\n  }\n\n  buildInto(target: Uint8Array, offset = 0): Uint8Array {\n    const params = this.__tnComputeParams();\n    if (this.__tnField_discriminant === null) throw new Error(\"CompressionInstructionBuilder: field 'discriminant' must be set before build\");\n    if (!this.__tnPayload_payload) throw new Error(\"CompressionInstructionBuilder: payload variant not selected\");\n    const payloadLength = this.__tnPayload_payload.bytes.length;\n    const requiredSize = 4 + payloadLength;\n    const footprintSize = CompressionInstruction.footprintFromParams(params);\n    const size = Math.max(requiredSize, footprintSize);\n    if (target.length - offset < size) throw new Error(\"CompressionInstructionBuilder: target buffer too small\");\n    const slice = target.subarray(offset, offset + size);\n    this.__tnWriteInto(slice);\n    this.__tnValidateOrThrow(slice, params);\n    return target;\n  }\n\n  finish(): CompressionInstruction {\n    const buffer = this.build();\n    const params = this.__tnLastParams ?? this.__tnComputeParams();\n    const view = CompressionInstruction.from_array(buffer, { params });\n    if (!view) throw new Error(\"CompressionInstructionBuilder: failed to finalize view\");\n    return view;\n  }\n\n  finishView(): CompressionInstruction {\n    return this.finish();\n  }\n\n  dynamicParams(): CompressionInstruction.Params {\n    return this.__tnComputeParams();\n  }\n\n  private __tnComputeParams(): CompressionInstruction.Params {\n    if (this.__tnCachedParams) return this.__tnCachedParams;\n    const params = CompressionInstruction.Params.fromValues({\n      payload_discriminant: (() => { if (this.__tnField_discriminant === null) throw new Error(\"CompressionInstructionBuilder: missing enum tag\"); return __tnToBigInt(this.__tnField_discriminant); })(),\n      payload_payload_size: (() => { if (!this.__tnPayload_payload) throw new Error(\"CompressionInstructionBuilder: payload 'payload' must be selected before build\"); return __tnToBigInt(this.__tnPayload_payload.bytes.length); })(),\n    });\n    this.__tnCachedParams = params;\n    return params;\n  }\n\n  private __tnWriteInto(target: Uint8Array): void {\n    if (this.__tnField_discriminant === null) throw new Error(\"CompressionInstructionBuilder: field 'discriminant' must be set before build\");\n    if (!this.__tnPayload_payload) throw new Error(\"CompressionInstructionBuilder: payload variant not selected\");\n    const view = new DataView(target.buffer, target.byteOffset, target.byteLength);\n    target.set(this.__tnPrefixBuffer, 0);\n    view.setUint32(0, this.__tnField_discriminant, true);\n    target.set(this.__tnPayload_payload.bytes, 4);\n  }\n\n  private __tnValidateOrThrow(buffer: Uint8Array, params: CompressionInstruction.Params): void {\n    const result = CompressionInstruction.validate(buffer, { params });\n    if (!result.ok) {\n      throw new Error(`${ CompressionInstruction }Builder: builder produced invalid buffer (code=${result.code ?? \"unknown\"})`);\n    }\n    this.__tnLastParams = result.params ?? params;\n    this.__tnLastBuffer = buffer;\n  }\n}\n\n__tnRegisterFootprint(\"CompressionInstruction\", (params) => CompressionInstruction.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"CompressionInstruction\", (buffer, params) => CompressionInstruction.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"CompressionInstruction\", (buffer) => { const result = CompressionInstruction.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n","import { CompressArgsBuilder, DecompressArgsBuilder, CompressFromPointerArgsBuilder,\n  DecompressFromPointerArgsBuilder, CompressionInstructionBuilder } from \"./abi/thru/program/compression/types\";\nimport { StateProof } from \"./abi/thru/blockchain/state_proof/types\";\nexport { CompressionInstruction } from \"./abi/thru/program/compression/types\";\n\nexport const COMPRESSION_ERRORS = { INVALID_INSTRUCTION: 1n, INVALID_INSTRUCTION_DATA_SIZE: 2n } as const;\n\nfunction u16(value: number): void {\n  if (!Number.isInteger(value) || value < 0 || value > 0xffff) throw new RangeError(\"account index must be a u16\");\n}\nfunction u64(value: bigint): bigint {\n  if (value < 0n || value > 0xffffffffffffffffn) throw new RangeError(\"value must be a u64\");\n  return value;\n}\nfunction envelope(variant: \"compress\" | \"decompress\" | \"compress_from_pointer\" | \"decompress_from_pointer\", payload: Uint8Array): Uint8Array {\n  return new CompressionInstructionBuilder().payload().select(variant).writePayload(payload).finish().build();\n}\n\n/** Validate the exact state-proof footprint encoded in its type and path bitmap. */\nexport function validateCompressionProof(proof: Uint8Array): void {\n  if (proof.length < 40 || (proof[7]! >>> 6) === 3)\n    throw new RangeError(\"state proof has an invalid type or byte length\");\n  // The generated dynamic enum validator treats its payload as opaque. Check\n  // the state-proof contract too, rather than accepting a truncated payload.\n  let siblings = 0;\n  for (let i = 8; i < 40; i++) {\n    for (let bits = proof[i]!; bits; bits &= bits - 1) siblings++;\n  }\n  if (proof.length !== 40 + 32 * ((proof[7]! >>> 6) + siblings))\n    throw new RangeError(\"state proof has an invalid type or byte length\");\n  const validation = StateProof.validate(proof);\n  if (!validation.ok || validation.consumed !== proof.length)\n    throw new RangeError(\"state proof has an invalid type or byte length\");\n}\n\nexport function buildCompressInstruction(accountIndex: number, proof: Uint8Array): Uint8Array {\n  validateCompressionProof(proof);\n  u16(accountIndex);\n  return envelope(\"compress\", new CompressArgsBuilder().set_account_idx(accountIndex).set_proof(proof).build());\n}\n\nexport function buildDecompressInstruction(accountIndex: number, meta: Uint8Array,\n  data: Uint8Array, proof: Uint8Array): Uint8Array {\n  validateCompressionProof(proof);\n  if (meta.length !== 64 || data.length > 16 * 1024 * 1024 ||\n      new DataView(meta.buffer, meta.byteOffset, meta.byteLength).getUint32(4, true) !== data.length)\n    throw new RangeError(\"account image must contain runtime metadata and the declared data bytes\");\n  u16(accountIndex);\n  const builder = new DecompressArgsBuilder().set_account_idx(accountIndex).set_account_meta(Array.from(meta));\n  builder.account_data().write(data).finish();\n  builder.set_proof(proof);\n  return envelope(\"decompress\", builder.build());\n}\n\nexport function buildCompressFromPointerInstruction(accountIndex: number, proofAddress: bigint, proofSize: bigint): Uint8Array {\n  u16(accountIndex);\n  return envelope(\"compress_from_pointer\", new CompressFromPointerArgsBuilder().set_account_idx(accountIndex)\n    .set_proof_address(u64(proofAddress)).set_proof_sz(u64(proofSize)).build());\n}\n\nexport function buildDecompressFromPointerInstruction(args: {\n  accountIndex: number; dataSize: bigint; metaAddress: bigint; dataAddress: bigint;\n  proofAddress: bigint; proofSize: bigint;\n}): Uint8Array {\n  u16(args.accountIndex);\n  return envelope(\"decompress_from_pointer\", new DecompressFromPointerArgsBuilder().set_account_idx(args.accountIndex)\n    .set_account_data_sz(u64(args.dataSize)).set_account_meta_address(u64(args.metaAddress))\n    .set_account_data_address(u64(args.dataAddress)).set_proof_address(u64(args.proofAddress))\n    .set_proof_sz(u64(args.proofSize)).build());\n}\n","import { create } from \"@bufbuild/protobuf\";\nimport { sha256 } from \"@noble/hashes/sha2.js\";\nimport {\n    encodeAddress,\n    ensureBytes,\n    hexToBytes,\n    isHexString,\n} from \"@thru/sdk/helpers\";\n\nimport { Pubkey, type PubkeyInput } from \"../domain/primitives\";\nimport { BlockHash, BlockHashSchema } from \"@thru/sdk/proto\";\n\nexport type BlockSelector =\n  | { slot: number | bigint }\n  | { blockHash: Uint8Array | string };\n\nexport function toBlockHash(value: Uint8Array | string): BlockHash {\n  return create(BlockHashSchema, { value: ensureBytes(value, \"blockHash\") });\n}\n\nexport interface DeriveProgramAddressOptions {\n  programAddress: PubkeyInput;\n  seed: Uint8Array | string;\n  ephemeral?: boolean;\n}\n\nexport interface DeriveProgramAddressResult {\n  bytes: Uint8Array;\n  address: string;\n}\n\nexport function deriveProgramAddress(\n  options: DeriveProgramAddressOptions\n): DeriveProgramAddressResult {\n  const programAddress = Pubkey.from(options.programAddress).toBytes();\n  const seed = normalizeSeed(options.seed);\n  const ephemeral = options.ephemeral === true;\n\n  const derivationInput = new Uint8Array(\n    programAddress.length + 1 + seed.length\n  );\n  derivationInput.set(programAddress, 0);\n  derivationInput[programAddress.length] = ephemeral ? 1 : 0;\n  derivationInput.set(seed, programAddress.length + 1);\n\n  const hash = sha256(derivationInput);\n  const derivedBytes = new Uint8Array(hash.slice(0, 32));\n\n  return {\n    bytes: derivedBytes,\n    address: encodeAddress(derivedBytes),\n  };\n}\n\nexport type DeriveAddressInput = PubkeyInput | Uint8Array;\n\nexport interface DeriveAddressResult {\n  bytes: Uint8Array;\n  address: string;\n}\n\n/**\n * Derive an address by hashing an array of inputs.\n * Inputs can be pubkeys (as string, Uint8Array, or Pubkey) or raw Uint8Array data.\n *\n * @example\n * // Token account: SHA256(owner || mint || seed)\n * deriveAddress([ownerPubkey, mintPubkey, seed])\n *\n * // Mint account: SHA256(creator || seed)\n * deriveAddress([creatorPubkey, seed])\n */\nexport function deriveAddress(\n  inputs: DeriveAddressInput[]\n): DeriveAddressResult {\n  if (inputs.length === 0) {\n    throw new Error(\"At least one input is required\");\n  }\n\n  const normalizedInputs = inputs.map((input) => normalizeToBytes(input));\n  const totalLength = normalizedInputs.reduce(\n    (sum, arr) => sum + arr.length,\n    0\n  );\n\n  const derivationInput = new Uint8Array(totalLength);\n  let offset = 0;\n  for (const input of normalizedInputs) {\n    derivationInput.set(input, offset);\n    offset += input.length;\n  }\n\n  const hash = sha256(derivationInput);\n  const derivedBytes = new Uint8Array(hash.slice(0, 32));\n\n  return {\n    bytes: derivedBytes,\n    address: encodeAddress(derivedBytes),\n  };\n}\n\nfunction normalizeToBytes(input: DeriveAddressInput): Uint8Array {\n  if (input instanceof Uint8Array) {\n    return input;\n  }\n  return Pubkey.from(input).toBytes();\n}\n\nfunction normalizeSeed(value: Uint8Array | string): Uint8Array {\n  if (value instanceof Uint8Array) {\n    if (value.length === 0) {\n      throw new Error(\"Seed cannot be empty\");\n    }\n    if (value.length > 32) {\n      throw new Error(\"Seed cannot exceed 32 bytes\");\n    }\n    const seed = new Uint8Array(32);\n    seed.set(value);\n    return seed;\n  }\n  if (typeof value === \"string\") {\n    if (value.length === 0) {\n      throw new Error(\"Seed cannot be empty\");\n    }\n    if (isHexString(value)) {\n      const bytes = hexToBytes(value);\n      if (bytes.length !== 32) {\n        throw new Error(\n          `Hex seed must decode to 32 bytes, got ${bytes.length}`\n        );\n      }\n      return bytes;\n    }\n    const encoder = new TextEncoder();\n    const utf8 = encoder.encode(value);\n    if (utf8.length > 32) {\n      throw new Error(`UTF-8 seed too long: ${utf8.length} bytes (max 32)`);\n    }\n    const seed = new Uint8Array(32);\n    seed.set(utf8);\n    return seed;\n  }\n  throw new Error(\"Seed must be provided as Uint8Array or string\");\n}\n","import { Pubkey } from '../../primitives';\nimport { deriveAddress } from '../../../modules/helpers';\nimport type { Account } from '../../accounts';\nimport { encodeAddress } from '@thru/sdk/helpers';\n\nexport const PUBKEY_LENGTH = 32;\nexport const HASH_LENGTH = 32;\n\nconst TEXT_ENCODER = new TextEncoder();\n\nexport type ProgramSeed = string | Uint8Array;\n\nexport interface AccountLookupContext {\n  getAccountIndex: (pubkey: Uint8Array) => number;\n}\n\nexport type InstructionData = (\n  context: AccountLookupContext\n) => Promise<Uint8Array>;\n\nexport function systemProgramPubkey(lastByte: number): Uint8Array {\n  assertInteger(lastByte, 0, 0xff, 'lastByte');\n  const bytes = new Uint8Array(PUBKEY_LENGTH);\n  bytes[PUBKEY_LENGTH - 1] = lastByte;\n  return bytes;\n}\n\nexport function normalizeSeed(seed: ProgramSeed): Uint8Array {\n  const bytes =\n    typeof seed === 'string' ? TEXT_ENCODER.encode(seed) : new Uint8Array(seed);\n  if (bytes.length === 0 || bytes.length > PUBKEY_LENGTH) {\n    throw new Error(`seed must be 1-${PUBKEY_LENGTH} bytes, got ${bytes.length}`);\n  }\n  return bytes;\n}\n\nexport function padSeed(seed: ProgramSeed): Uint8Array {\n  const normalized = normalizeSeed(seed);\n  const padded = new Uint8Array(PUBKEY_LENGTH);\n  padded.set(normalized);\n  return padded;\n}\n\nexport function exactBytes(\n  value: Uint8Array,\n  length: number,\n  label: string\n): Uint8Array {\n  if (!(value instanceof Uint8Array) || value.length !== length) {\n    throw new Error(`${label} must be ${length} bytes`);\n  }\n  return new Uint8Array(value);\n}\n\nexport function pubkeyBytes(\n  value: string | Uint8Array,\n  label = 'public key'\n): Uint8Array {\n  try {\n    return Pubkey.from(value).toBytes();\n  } catch {\n    throw new Error(`${label} is invalid`);\n  }\n}\n\nexport function pubkeyAddress(value: Uint8Array): string {\n  return encodeAddress(exactBytes(value, PUBKEY_LENGTH, 'public key'));\n}\n\nexport function accountData(\n  account: Account | Uint8Array,\n  label: string\n): Uint8Array {\n  if (account instanceof Uint8Array) return account;\n  const data = account.data?.data;\n  if (!data) throw new Error(`${label} data is missing`);\n  return data;\n}\n\nexport function accountIndex(\n  context: AccountLookupContext,\n  account: Uint8Array,\n  label = 'account'\n): number {\n  const index = context.getAccountIndex(exactBytes(account, PUBKEY_LENGTH, label));\n  assertU16(index, `${label} index`);\n  return index;\n}\n\nexport function assertU16(value: number, label: string): void {\n  assertInteger(value, 0, 0xffff, label);\n}\n\nexport function assertU32(value: number, label: string): void {\n  assertInteger(value, 0, 0xffffffff, label);\n}\n\nexport function concatBytes(...parts: Uint8Array[]): Uint8Array {\n  const output = new Uint8Array(\n    parts.reduce((total, part) => total + part.length, 0)\n  );\n  let offset = 0;\n  for (const part of parts) {\n    output.set(part, offset);\n    offset += part.length;\n  }\n  return output;\n}\n\nexport function hashBytes(...parts: Uint8Array[]): Uint8Array {\n  return deriveAddress([concatBytes(...parts)]).bytes;\n}\n\nfunction assertInteger(\n  value: number,\n  minimum: number,\n  maximum: number,\n  label: string\n): void {\n  if (!Number.isInteger(value) || value < minimum || value > maximum) {\n    throw new Error(`${label} must be an integer from ${minimum} to ${maximum}`);\n  }\n}\n","/* Auto-generated TypeScript code */\n/* WARNING: Do not modify this file directly. It is generated from ABI definitions. */\n\ntype __TnIrNode =\n  | { readonly op: \"zero\" }\n  | { readonly op: \"const\"; readonly value: bigint }\n  | { readonly op: \"field\"; readonly param: string }\n  | {\n      readonly op: \"add\";\n      readonly left: __TnIrNode;\n      readonly right: __TnIrNode;\n    }\n  | {\n      readonly op: \"sub\";\n      readonly left: __TnIrNode;\n      readonly right: __TnIrNode;\n    }\n  | {\n      readonly op: \"mul\";\n      readonly left: __TnIrNode;\n      readonly right: __TnIrNode;\n    }\n  | {\n      readonly op:\n        | \"div\"\n        | \"mod\"\n        | \"bitAnd\"\n        | \"bitOr\"\n        | \"bitXor\"\n        | \"leftShift\"\n        | \"rightShift\";\n      readonly left: __TnIrNode;\n      readonly right: __TnIrNode;\n    }\n  | {\n      readonly op: \"align\";\n      readonly alignment: number;\n      readonly node: __TnIrNode;\n    }\n  | {\n      readonly op: \"switch\";\n      readonly tag: string;\n      readonly cases: readonly { readonly value: number; readonly node: __TnIrNode }[];\n      readonly default?: __TnIrNode;\n    }\n  | {\n      readonly op: \"call\";\n      readonly typeName: string;\n      readonly args: readonly { readonly name: string; readonly source: string }[];\n    }\n  | {\n      readonly op: \"sumOverArray\";\n      readonly count: __TnIrNode;\n      readonly elementTypeName: string;\n      readonly fieldName: string;\n    };\n\ntype __TnIrContext = {\n  params: Record<string, bigint>;\n  buffer?: Uint8Array;\n  typeName?: string;\n};\n\ntype __TnValidateResult = {\n  ok: boolean;\n  code?: string;\n  consumed?: bigint;\n  params?: Record<string, bigint>;\n};\ntype __TnEvalResult =\n  | { ok: true; value: bigint }\n  | { ok: false; code: string };\ntype __TnBuilderLike = { build(): Uint8Array };\ntype __TnStructFieldInput =\n  | Uint8Array\n  | __TnBuilderLike\n  | { buffer?: Uint8Array }\n  | { asUint8Array?: () => Uint8Array }\n  | { bytes?: () => Uint8Array };\ntype __TnVariantDescriptor = {\n  readonly name: string;\n  readonly tag: number;\n  readonly payloadSize: number | null;\n  readonly payloadType?: string;\n  readonly createPayloadBuilder?: () => unknown | null;\n};\ntype __TnVariantSelectorResult<Parent> = {\n  select(\n    name: string\n  ): { writePayload(payload: Uint8Array | __TnBuilderLike): { finish(): Parent } };\n  finish(): Parent;\n};\ntype __TnFamWriterResult<Parent> = {\n  write(payload: Uint8Array | __TnBuilderLike): { finish(): Parent };\n  finish(): Parent;\n};\ntype __TnConsole = { warn?: (...args: unknown[]) => void };\n\nconst __tnWarnings = new Set<string>();\nconst __tnHasNativeBigInt = typeof BigInt === \"function\";\nconst __tnHasBigIntDataView =\n  typeof DataView !== \"undefined\" &&\n  typeof DataView.prototype.getBigInt64 === \"function\" &&\n  typeof DataView.prototype.getBigUint64 === \"function\" &&\n  typeof DataView.prototype.setBigInt64 === \"function\" &&\n  typeof DataView.prototype.setBigUint64 === \"function\";\nconst __tnConsole: __TnConsole | undefined =\n  typeof globalThis !== \"undefined\"\n    ? (globalThis as { console?: __TnConsole }).console\n    : undefined;\n\nfunction __tnLogWarn(message: string): void {\n  if (__tnConsole && typeof __tnConsole.warn === \"function\") {\n    __tnConsole.warn(message);\n  }\n}\n\nfunction __tnWarnOnce(message: string): void {\n  if (!__tnWarnings.has(message)) {\n    __tnWarnings.add(message);\n    __tnLogWarn(message);\n  }\n}\n\nfunction __tnResolveBuilderInput(\n  input: Uint8Array | __TnBuilderLike,\n  context: string\n): Uint8Array {\n  if (input instanceof Uint8Array) {\n    return new Uint8Array(input);\n  }\n  if (input && typeof (input as __TnBuilderLike).build === \"function\") {\n    const built = (input as __TnBuilderLike).build();\n    if (!(built instanceof Uint8Array)) {\n      throw new Error(`${context}: builder did not return Uint8Array`);\n    }\n    return new Uint8Array(built);\n  }\n  throw new Error(`${context}: expected Uint8Array or builder`);\n}\n\nfunction __tnResolveStructFieldInput(\n  input: __TnStructFieldInput,\n  context: string\n): Uint8Array {\n  if (\n    input instanceof Uint8Array ||\n    (input && typeof (input as __TnBuilderLike).build === \"function\")\n  ) {\n    return __tnResolveBuilderInput(input as Uint8Array | __TnBuilderLike, context);\n  }\n  if (input && typeof (input as { asUint8Array?: () => Uint8Array }).asUint8Array === \"function\") {\n    const bytes = (input as { asUint8Array: () => Uint8Array }).asUint8Array();\n    return new Uint8Array(bytes);\n  }\n  if (input && typeof (input as { bytes?: () => Uint8Array }).bytes === \"function\") {\n    const bytes = (input as { bytes: () => Uint8Array }).bytes();\n    return new Uint8Array(bytes);\n  }\n  if (input && (input as { buffer?: unknown }).buffer instanceof Uint8Array) {\n    return new Uint8Array((input as { buffer: Uint8Array }).buffer);\n  }\n  throw new Error(`${context}: expected Uint8Array, builder, or view-like value`);\n}\n\nfunction __tnMaybeCallBuilder(ctor: unknown): unknown | null {\n  if (!ctor) {\n    return null;\n  }\n  const builderFn = (ctor as { builder?: () => unknown }).builder;\n  return typeof builderFn === \"function\" ? builderFn() : null;\n}\n\nfunction __tnCreateVariantSelector<Parent, Descriptor extends __TnVariantDescriptor>(\n  parent: Parent,\n  descriptors: readonly Descriptor[],\n  assign: (descriptor: Descriptor, payload: Uint8Array) => void\n): __TnVariantSelectorResult<Parent> {\n  return {\n    select(name: string) {\n      const descriptor = descriptors.find((variant) => variant.name === name);\n      if (!descriptor) {\n        throw new Error(`Unknown variant '${name}'`);\n      }\n      return {\n        writePayload(payload: Uint8Array | __TnBuilderLike) {\n          const bytes = __tnResolveBuilderInput(\n            payload,\n            `variant ${descriptor.name}`\n          );\n          if (\n            descriptor.payloadSize !== null &&\n            bytes.length !== descriptor.payloadSize\n          ) {\n            throw new Error(\n              `Payload for ${descriptor.name} must be ${descriptor.payloadSize} bytes`\n            );\n          }\n          assign(descriptor, bytes);\n          return {\n            finish(): Parent {\n              return parent;\n            },\n          };\n        },\n      };\n    },\n    finish(): Parent {\n      return parent;\n    },\n  };\n}\n\nfunction __tnCreateFamWriter<Parent>(\n  parent: Parent,\n  fieldName: string,\n  assign: (bytes: Uint8Array) => void\n): __TnFamWriterResult<Parent> {\n  let hasWritten = false;\n  return {\n    write(payload: Uint8Array | __TnBuilderLike) {\n      const bytes = __tnResolveBuilderInput(\n        payload,\n        `flexible array '${fieldName}'`\n      );\n      const copy = new Uint8Array(bytes);\n      assign(copy);\n      hasWritten = true;\n      return {\n        finish(): Parent {\n          return parent;\n        },\n      };\n    },\n    finish(): Parent {\n      if (!hasWritten) {\n        throw new Error(\n          `flexible array '${fieldName}' requires write() before finish()`\n        );\n      }\n      return parent;\n    },\n  };\n}\n\nconst __tnMask32 = __tnHasNativeBigInt\n  ? (BigInt(1) << BigInt(32)) - BigInt(1)\n  : 0xffffffff;\nconst __tnSignBit32 = __tnHasNativeBigInt\n  ? BigInt(1) << BigInt(31)\n  : 0x80000000;\n\nfunction __tnToBigInt(value: number | bigint): bigint {\n  if (__tnHasNativeBigInt) {\n    return typeof value === \"bigint\" ? value : BigInt(value);\n  }\n  if (typeof value === \"bigint\") return value;\n  if (!Number.isFinite(value)) {\n    throw new Error(\"IR runtime received non-finite numeric input\");\n  }\n  if (!Number.isSafeInteger(value)) {\n    __tnWarnOnce(\n      `[thru-net] Precision loss while polyfilling BigInt (value=${value})`\n    );\n  }\n  return (value as unknown) as bigint;\n}\n\nfunction __tnBigIntToNumber(value: bigint, context: string): number {\n  if (__tnHasNativeBigInt) {\n    const converted = Number(value);\n    if (!Number.isFinite(converted)) {\n      throw new Error(`${context} overflowed Number range`);\n    }\n    return converted;\n  }\n  return value as unknown as number;\n}\n\nfunction __tnBigIntEquals(lhs: bigint, rhs: bigint): boolean {\n  if (__tnHasNativeBigInt) return lhs === rhs;\n  return (lhs as unknown as number) === (rhs as unknown as number);\n}\n\nfunction __tnBigIntGreaterThan(lhs: bigint, rhs: bigint): boolean {\n  if (__tnHasNativeBigInt) return lhs > rhs;\n  return (lhs as unknown as number) > (rhs as unknown as number);\n}\n\nfunction __tnPopcount(value: number | bigint): number {\n  let v =\n    typeof value === \"bigint\"\n      ? Number(value & BigInt(0xffffffff))\n      : Number(value) >>> 0;\n  v = v - ((v >>> 1) & 0x55555555);\n  v = (v & 0x33333333) + ((v >>> 2) & 0x33333333);\n  return (((v + (v >>> 4)) & 0x0f0f0f0f) * 0x01010101) >>> 24;\n}\n\nfunction __tnRaiseIrError(code: string, message: string): never {\n  const err = new Error(message);\n  (err as { code?: string }).code = code;\n  throw err;\n}\n\nfunction __tnCheckedAdd(lhs: bigint, rhs: bigint): bigint {\n  if (__tnHasNativeBigInt) {\n    const result = (lhs as bigint) + (rhs as bigint);\n    if (result < BigInt(0)) {\n      __tnRaiseIrError(\n        \"tn.ir.overflow\",\n        \"IR runtime detected negative size via addition\"\n      );\n    }\n    return result;\n  }\n  const left = lhs as unknown as number;\n  const right = rhs as unknown as number;\n  const sum = left + right;\n  if (sum < 0 || !Number.isFinite(sum)) {\n    __tnRaiseIrError(\n      \"tn.ir.overflow\",\n      \"IR runtime detected invalid addition result\"\n    );\n  }\n  if (!Number.isSafeInteger(sum)) {\n    __tnWarnOnce(\"[thru-net] Precision loss while polyfilling BigInt addition\");\n  }\n  return (sum as unknown) as bigint;\n}\n\nfunction __tnCheckedSub(lhs: bigint, rhs: bigint): bigint {\n  if (__tnHasNativeBigInt) {\n    const result = (lhs as bigint) - (rhs as bigint);\n    if (result < BigInt(0)) {\n      __tnRaiseIrError(\n        \"tn.ir.overflow\",\n        \"IR runtime detected negative size via subtraction\"\n      );\n    }\n    return result;\n  }\n  const left = lhs as unknown as number;\n  const right = rhs as unknown as number;\n  const diff = left - right;\n  if (diff < 0 || !Number.isFinite(diff)) {\n    __tnRaiseIrError(\n      \"tn.ir.overflow\",\n      \"IR runtime detected invalid subtraction result\"\n    );\n  }\n  if (!Number.isSafeInteger(diff)) {\n    __tnWarnOnce(\"[thru-net] Precision loss while polyfilling BigInt subtraction\");\n  }\n  return (diff as unknown) as bigint;\n}\n\nfunction __tnCheckedMul(lhs: bigint, rhs: bigint): bigint {\n  if (__tnHasNativeBigInt) {\n    const result = (lhs as bigint) * (rhs as bigint);\n    if (result < BigInt(0)) {\n      __tnRaiseIrError(\n        \"tn.ir.overflow\",\n        \"IR runtime detected negative size via multiplication\"\n      );\n    }\n    return result;\n  }\n  const left = lhs as unknown as number;\n  const right = rhs as unknown as number;\n  const product = left * right;\n  if (product < 0 || !Number.isFinite(product)) {\n    __tnRaiseIrError(\n      \"tn.ir.overflow\",\n      \"IR runtime detected invalid multiplication result\"\n    );\n  }\n  if (!Number.isSafeInteger(product)) {\n    __tnWarnOnce(\n      \"[thru-net] Precision loss while polyfilling BigInt multiplication\"\n    );\n  }\n  return (product as unknown) as bigint;\n}\n\nfunction __tnCheckedDiv(lhs: bigint, rhs: bigint): bigint {\n  if (__tnBigIntEquals(rhs, __tnToBigInt(0))) {\n    __tnRaiseIrError(\"tn.ir.overflow\", \"IR runtime division by zero\");\n  }\n  if (__tnHasNativeBigInt) return (lhs as bigint) / (rhs as bigint);\n  const quotient = Math.floor((lhs as unknown as number) / (rhs as unknown as number));\n  return (quotient as unknown) as bigint;\n}\n\nfunction __tnCheckedMod(lhs: bigint, rhs: bigint): bigint {\n  if (__tnBigIntEquals(rhs, __tnToBigInt(0))) {\n    __tnRaiseIrError(\"tn.ir.overflow\", \"IR runtime modulo by zero\");\n  }\n  if (__tnHasNativeBigInt) return (lhs as bigint) % (rhs as bigint);\n  return (((lhs as unknown as number) % (rhs as unknown as number)) as unknown) as bigint;\n}\n\nfunction __tnBitwise(\n  lhs: bigint,\n  rhs: bigint,\n  op: \"and\" | \"or\" | \"xor\"\n): bigint {\n  if (__tnHasNativeBigInt) {\n    if (op === \"and\") return (lhs as bigint) & (rhs as bigint);\n    if (op === \"or\") return (lhs as bigint) | (rhs as bigint);\n    return (lhs as bigint) ^ (rhs as bigint);\n  }\n  const left = lhs as unknown as number;\n  const right = rhs as unknown as number;\n  const maxU32 = 0xffffffff;\n  if (\n    !Number.isInteger(left) ||\n    !Number.isInteger(right) ||\n    left < 0 ||\n    right < 0 ||\n    left > maxU32 ||\n    right > maxU32\n  ) {\n    __tnRaiseIrError(\n      \"tn.ir.overflow\",\n      \"IR runtime bitwise operation requires BigInt for values outside u32 range\"\n    );\n  }\n  const result = op === \"and\" ? left & right : op === \"or\" ? left | right : left ^ right;\n  return ((result >>> 0) as unknown) as bigint;\n}\n\nfunction __tnCheckedShift(\n  lhs: bigint,\n  rhs: bigint,\n  direction: \"left\" | \"right\"\n): bigint {\n  const amount = __tnBigIntToNumber(rhs, \"IR shift amount\");\n  if (amount < 0 || amount >= 64 || !Number.isInteger(amount)) {\n    __tnRaiseIrError(\"tn.ir.overflow\", \"IR runtime invalid shift amount\");\n  }\n  if (__tnHasNativeBigInt) {\n    const shift = BigInt(amount);\n    return direction === \"left\" ? (lhs as bigint) << shift : (lhs as bigint) >> shift;\n  }\n  const value = lhs as unknown as number;\n  const result = direction === \"left\" ? value * 2 ** amount : Math.floor(value / 2 ** amount);\n  if (!Number.isSafeInteger(result)) {\n    __tnWarnOnce(\"[thru-net] Precision loss while polyfilling BigInt shift\");\n  }\n  return (result as unknown) as bigint;\n}\n\nfunction __tnAlign(value: bigint, alignment: number): bigint {\n  if (alignment <= 1) return value;\n  const alignBig = __tnToBigInt(alignment);\n  if (__tnHasNativeBigInt) {\n    const remainder = value % alignBig;\n    if (__tnBigIntEquals(remainder, __tnToBigInt(0))) {\n      return value;\n    }\n    const delta = alignBig - remainder;\n    return __tnCheckedAdd(value, delta);\n  }\n  const current = __tnBigIntToNumber(value, \"IR align\");\n  const alignNum = alignment >>> 0;\n  const remainder = current % alignNum;\n  const next = remainder === 0 ? current : current + (alignNum - remainder);\n  return __tnToBigInt(next);\n}\n\nfunction __tnSplitUint64(value: bigint): { high: number; low: number } {\n  if (__tnHasNativeBigInt) {\n    const low = Number(value & (__tnMask32 as bigint));\n    const high = Number((value >> BigInt(32)) & (__tnMask32 as bigint));\n    return { high, low };\n  }\n  const num = __tnBigIntToNumber(value, \"DataView.setBigUint64\");\n  const low = num >>> 0;\n  const high = Math.floor(num / 4294967296) >>> 0;\n  return { high, low };\n}\n\nfunction __tnSplitInt64(value: bigint): { high: number; low: number } {\n  if (__tnHasNativeBigInt) {\n    const low = Number(value & (__tnMask32 as bigint));\n    let high = Number((value >> BigInt(32)) & (__tnMask32 as bigint));\n    if ((BigInt(high) & (__tnSignBit32 as bigint)) !== BigInt(0)) {\n      high -= 0x100000000;\n    }\n    return { high, low };\n  }\n  const num = __tnBigIntToNumber(value, \"DataView.setBigInt64\");\n  const low = num >>> 0;\n  const high = Math.floor(num / 4294967296);\n  return { high, low };\n}\n\nfunction __tnPolyfillReadUint64(\n  view: DataView,\n  offset: number,\n  littleEndian: boolean\n): bigint {\n  const low = littleEndian\n    ? view.getUint32(offset, true)\n    : view.getUint32(offset + 4, false);\n  const high = littleEndian\n    ? view.getUint32(offset + 4, true)\n    : view.getUint32(offset, false);\n  if (__tnHasNativeBigInt) {\n    return (BigInt(high) << BigInt(32)) | BigInt(low);\n  }\n  const value = high * 4294967296 + low;\n  if (!Number.isSafeInteger(value)) {\n    __tnWarnOnce(\n      \"[thru-net] Precision loss while polyfilling DataView.getBigUint64\"\n    );\n  }\n  return (value as unknown) as bigint;\n}\n\nfunction __tnPolyfillReadInt64(\n  view: DataView,\n  offset: number,\n  littleEndian: boolean\n): bigint {\n  const low = littleEndian\n    ? view.getUint32(offset, true)\n    : view.getUint32(offset + 4, false);\n  const high = littleEndian\n    ? view.getInt32(offset + 4, true)\n    : view.getInt32(offset, false);\n  if (__tnHasNativeBigInt) {\n    return (BigInt(high) << BigInt(32)) | BigInt(low);\n  }\n  const value = high * 4294967296 + low;\n  if (!Number.isSafeInteger(value)) {\n    __tnWarnOnce(\n      \"[thru-net] Precision loss while polyfilling DataView.getBigInt64\"\n    );\n  }\n  return (value as unknown) as bigint;\n}\n\nfunction __tnPolyfillWriteUint64(\n  view: DataView,\n  offset: number,\n  value: bigint,\n  littleEndian: boolean\n): void {\n  const parts = __tnSplitUint64(value);\n  if (littleEndian) {\n    view.setUint32(offset, parts.low, true);\n    view.setUint32(offset + 4, parts.high, true);\n  } else {\n    view.setUint32(offset, parts.high, false);\n    view.setUint32(offset + 4, parts.low, false);\n  }\n}\n\nfunction __tnPolyfillWriteInt64(\n  view: DataView,\n  offset: number,\n  value: bigint,\n  littleEndian: boolean\n): void {\n  const parts = __tnSplitInt64(value);\n  if (littleEndian) {\n    view.setUint32(offset, parts.low >>> 0, true);\n    view.setInt32(offset + 4, parts.high | 0, true);\n  } else {\n    view.setInt32(offset, parts.high | 0, false);\n    view.setUint32(offset + 4, parts.low >>> 0, false);\n  }\n}\n\nif (typeof DataView !== \"undefined\" && !__tnHasBigIntDataView) {\n  const proto = DataView.prototype as unknown as Record<string, unknown>;\n  if (typeof proto.getBigUint64 !== \"function\") {\n    (proto as any).getBigUint64 = function (\n      offset: number,\n      littleEndian?: boolean\n    ): bigint {\n      __tnWarnOnce(\n        \"[thru-net] Polyfilling DataView.getBigUint64; precision may be lost\"\n      );\n      return __tnPolyfillReadUint64(this, offset, !!littleEndian);\n    };\n  }\n  if (typeof proto.getBigInt64 !== \"function\") {\n    (proto as any).getBigInt64 = function (\n      offset: number,\n      littleEndian?: boolean\n    ): bigint {\n      __tnWarnOnce(\n        \"[thru-net] Polyfilling DataView.getBigInt64; precision may be lost\"\n      );\n      return __tnPolyfillReadInt64(this, offset, !!littleEndian);\n    };\n  }\n  if (typeof proto.setBigUint64 !== \"function\") {\n    (proto as any).setBigUint64 = function (\n      offset: number,\n      value: bigint,\n      littleEndian?: boolean\n    ): void {\n      __tnWarnOnce(\n        \"[thru-net] Polyfilling DataView.setBigUint64; precision may be lost\"\n      );\n      __tnPolyfillWriteUint64(this, offset, value, !!littleEndian);\n    };\n  }\n  if (typeof proto.setBigInt64 !== \"function\") {\n    (proto as any).setBigInt64 = function (\n      offset: number,\n      value: bigint,\n      littleEndian?: boolean\n    ): void {\n      __tnWarnOnce(\n        \"[thru-net] Polyfilling DataView.setBigInt64; precision may be lost\"\n      );\n      __tnPolyfillWriteInt64(this, offset, value, !!littleEndian);\n    };\n  }\n  if (!__tnHasNativeBigInt) {\n    __tnWarnOnce(\n      \"[thru-net] BigInt is unavailable; falling back to lossy 64-bit polyfill\"\n    );\n  }\n}\n\nconst __tnFootprintRegistry: Record<\n  string,\n  (params: Record<string, bigint>) => bigint\n> = {};\nconst __tnValidateRegistry: Record<\n  string,\n  (buffer: Uint8Array, params: Record<string, bigint>) => __TnValidateResult\n> = {};\nconst __tnDynamicValidateRegistry: Record<\n  string,\n  (buffer: Uint8Array) => __TnValidateResult\n> = {};\n\nfunction __tnRegisterFootprint(\n  typeName: string,\n  fn: (params: Record<string, bigint>) => bigint\n): void {\n  __tnFootprintRegistry[typeName] = fn;\n}\n\nfunction __tnRegisterValidate(\n  typeName: string,\n  fn: (buffer: Uint8Array, params: Record<string, bigint>) => __TnValidateResult\n): void {\n  __tnValidateRegistry[typeName] = fn;\n}\n\nfunction __tnRegisterDynamicValidate(\n  typeName: string,\n  fn: (buffer: Uint8Array) => __TnValidateResult\n): void {\n  __tnDynamicValidateRegistry[typeName] = fn;\n}\n\nfunction __tnInvokeFootprint(\n  typeName: string,\n  params: Record<string, bigint>\n): bigint {\n  const fn = __tnFootprintRegistry[typeName];\n  if (!fn) throw new Error(`IR runtime missing footprint for ${typeName}`);\n  return fn(params);\n}\n\nfunction __tnInvokeValidate(\n  typeName: string,\n  buffer: Uint8Array,\n  params: Record<string, bigint>\n): __TnValidateResult {\n  const fn = __tnValidateRegistry[typeName];\n  if (!fn) throw new Error(`IR runtime missing validate helper for ${typeName}`);\n  return fn(buffer, params);\n}\n\nfunction __tnInvokeDynamicValidate(\n  typeName: string,\n  buffer: Uint8Array\n): __TnValidateResult {\n  const fn = __tnDynamicValidateRegistry[typeName];\n  if (!fn) throw new Error(`IR runtime missing dynamic validate helper for ${typeName}`);\n  return fn(buffer);\n}\n\nfunction __tnEvalFootprint(node: __TnIrNode, ctx: __TnIrContext): bigint {\n  return __tnEvalIrNode(node, ctx, __tnToBigInt(0));\n}\n\nfunction __tnTryEvalFootprint(\n  node: __TnIrNode,\n  ctx: __TnIrContext\n): __TnEvalResult {\n  return __tnTryEvalIr(node, ctx);\n}\n\nfunction __tnTryEvalIr(\n  node: __TnIrNode,\n  ctx: __TnIrContext\n): __TnEvalResult {\n  try {\n    return { ok: true, value: __tnEvalIrNode(node, ctx, __tnToBigInt(0)) };\n  } catch (err) {\n    return { ok: false, code: __tnNormalizeIrError(err) };\n  }\n}\n\nfunction __tnIsEvalError(result: __TnEvalResult): result is { ok: false; code: string } {\n  return result.ok === false;\n}\n\nfunction __tnValidateIrTree(\n  ir: { readonly typeName: string; readonly root: __TnIrNode },\n  buffer: Uint8Array,\n  params: Record<string, bigint>\n): __TnValidateResult {\n  const evalResult = __tnTryEvalIr(ir.root, {\n    params,\n    buffer,\n    typeName: ir.typeName,\n  });\n  if (__tnIsEvalError(evalResult)) {\n    return { ok: false, code: evalResult.code };\n  }\n  const required = evalResult.value;\n  const available = __tnToBigInt(buffer.length);\n  if (__tnBigIntGreaterThan(required, available)) {\n    return { ok: false, code: \"tn.buffer_too_small\", consumed: required };\n  }\n  return { ok: true, consumed: required };\n}\n\nfunction __tnEvalIrNode(\n  node: __TnIrNode,\n  ctx: __TnIrContext,\n  baseOffset: bigint\n): bigint {\n  switch (node.op) {\n    case \"zero\":\n      return __tnToBigInt(0);\n    case \"const\":\n      return node.value;\n    case \"field\": {\n      if (node.param === \"__buffer_size\" && ctx.buffer) {\n        return __tnToBigInt(ctx.buffer.length);\n      }\n      const val = ctx.params[node.param];\n      if (val === undefined) {\n        const prefix = ctx.typeName ? `${ctx.typeName}: ` : \"\";\n        __tnRaiseIrError(\n          \"tn.ir.missing_param\",\n          `${prefix}Missing IR parameter '${node.param}'`\n        );\n      }\n      return val;\n    }\n    case \"add\":\n      {\n        const left = __tnEvalIrNode(node.left, ctx, baseOffset);\n        const right = __tnEvalIrNode(\n          node.right,\n          ctx,\n          __tnCheckedAdd(baseOffset, left)\n        );\n        return __tnCheckedAdd(left, right);\n      }\n    case \"sub\":\n      return __tnCheckedSub(\n        __tnEvalIrNode(node.left, ctx, baseOffset),\n        __tnEvalIrNode(node.right, ctx, baseOffset)\n      );\n    case \"mul\":\n      return __tnCheckedMul(\n        __tnEvalIrNode(node.left, ctx, baseOffset),\n        __tnEvalIrNode(node.right, ctx, baseOffset)\n      );\n    case \"div\":\n      return __tnCheckedDiv(\n        __tnEvalIrNode(node.left, ctx, baseOffset),\n        __tnEvalIrNode(node.right, ctx, baseOffset)\n      );\n    case \"mod\":\n      return __tnCheckedMod(\n        __tnEvalIrNode(node.left, ctx, baseOffset),\n        __tnEvalIrNode(node.right, ctx, baseOffset)\n      );\n    case \"bitAnd\":\n      return __tnBitwise(\n        __tnEvalIrNode(node.left, ctx, baseOffset),\n        __tnEvalIrNode(node.right, ctx, baseOffset),\n        \"and\"\n      );\n    case \"bitOr\":\n      return __tnBitwise(\n        __tnEvalIrNode(node.left, ctx, baseOffset),\n        __tnEvalIrNode(node.right, ctx, baseOffset),\n        \"or\"\n      );\n    case \"bitXor\":\n      return __tnBitwise(\n        __tnEvalIrNode(node.left, ctx, baseOffset),\n        __tnEvalIrNode(node.right, ctx, baseOffset),\n        \"xor\"\n      );\n    case \"leftShift\":\n      return __tnCheckedShift(\n        __tnEvalIrNode(node.left, ctx, baseOffset),\n        __tnEvalIrNode(node.right, ctx, baseOffset),\n        \"left\"\n      );\n    case \"rightShift\":\n      return __tnCheckedShift(\n        __tnEvalIrNode(node.left, ctx, baseOffset),\n        __tnEvalIrNode(node.right, ctx, baseOffset),\n        \"right\"\n      );\n    case \"align\":\n      return __tnAlign(__tnEvalIrNode(node.node, ctx, baseOffset), node.alignment);\n    case \"switch\": {\n      const tagVal = ctx.params[node.tag];\n      if (tagVal === undefined) {\n        const prefix = ctx.typeName ? `${ctx.typeName}: ` : \"\";\n        __tnRaiseIrError(\n          \"tn.ir.missing_param\",\n          `${prefix}Missing IR switch tag '${node.tag}'`\n        );\n      }\n      const tagNumber = Number(tagVal);\n      for (const caseNode of node.cases) {\n        if (caseNode.value === tagNumber) {\n          return __tnEvalIrNode(caseNode.node, ctx, baseOffset);\n        }\n      }\n      if (node.default) return __tnEvalIrNode(node.default, ctx, baseOffset);\n      __tnRaiseIrError(\n        \"tn.ir.invalid_tag\",\n        `Unhandled IR switch value ${tagNumber} for '${node.tag}'`\n      );\n    }\n    case \"call\": {\n      const nestedParams: Record<string, bigint> = Object.create(null);\n      for (const arg of node.args) {\n        const val = ctx.params[arg.source];\n        if (val === undefined) {\n          const prefix = ctx.typeName ? `${ctx.typeName}: ` : \"\";\n          __tnRaiseIrError(\n            \"tn.ir.missing_param\",\n            `${prefix}Missing IR parameter '${arg.source}' for nested call`\n          );\n        }\n        nestedParams[arg.name] = val;\n      }\n      if (ctx.buffer) {\n        const nestedOffset = __tnBigIntToNumber(baseOffset, \"IR nested offset\");\n        const nestedResult = __tnInvokeValidate(\n          node.typeName,\n          ctx.buffer.subarray(nestedOffset),\n          nestedParams\n        );\n        if (!nestedResult.ok) {\n          const nestedCode =\n            nestedResult.code ?? `tn.ir.runtime_error: ${node.typeName}`;\n          const prefixed = nestedCode.startsWith(\"tn.\")\n            ? nestedCode\n            : `tn.ir.runtime_error: ${node.typeName} -> ${nestedCode}`;\n          __tnRaiseIrError(\n            prefixed,\n            `Nested validator ${node.typeName} failed`\n          );\n        }\n        if (nestedResult.consumed !== undefined) {\n          return nestedResult.consumed;\n        }\n      }\n      return __tnInvokeFootprint(node.typeName, nestedParams);\n    }\n    case \"sumOverArray\": {\n      if (!ctx.buffer) {\n        __tnRaiseIrError(\n          \"tn.ir.missing_buffer\",\n          `Jagged array '${node.fieldName}' requires buffer-backed validation`\n        );\n      }\n      const count = __tnBigIntToNumber(\n        __tnEvalIrNode(node.count, ctx, baseOffset),\n        `Jagged array '${node.fieldName}' count`\n      );\n      let cursor = __tnBigIntToNumber(baseOffset, \"IR jagged array offset\");\n      let total = __tnToBigInt(0);\n      for (let i = 0; i < count; i++) {\n        const result = __tnInvokeDynamicValidate(\n          node.elementTypeName,\n          ctx.buffer.subarray(cursor)\n        );\n        if (!result.ok || result.consumed === undefined) {\n          const code = result.code ?? \"tn.ir.runtime_error\";\n          __tnRaiseIrError(\n            code,\n            `Jagged array '${node.fieldName}' element ${i} failed validation`\n          );\n        }\n        cursor += __tnBigIntToNumber(result.consumed, \"IR jagged element size\");\n        total = __tnCheckedAdd(total, result.consumed);\n      }\n      return total;\n    }\n    default:\n      __tnRaiseIrError(\n        \"tn.ir.runtime_error\",\n        `Unsupported IR node ${(node as { op: string }).op}`\n      );\n  }\n}\n\nfunction __tnNormalizeIrError(err: unknown): string {\n  if (err && typeof err === \"object\" && \"code\" in err) {\n    const maybeCode = (err as { code?: string }).code;\n    if (typeof maybeCode === \"string\" && maybeCode.length > 0) {\n      return maybeCode;\n    }\n  }\n  const message =\n    err && typeof err === \"object\" && \"message\" in err\n      ? String((err as { message?: unknown }).message ?? \"\")\n      : typeof err === \"string\"\n      ? err\n      : \"\";\n  if (message.includes(\"Missing IR parameter\")) return \"tn.ir.missing_param\";\n  if (message.includes(\"Unhandled IR switch value\")) return \"tn.ir.invalid_tag\";\n  if (\n    message.includes(\"invalid\") ||\n    message.includes(\"overflow\") ||\n    message.includes(\"negative size\")\n  ) {\n    return \"tn.ir.overflow\";\n  }\n  if (message.length > 0) return `tn.ir.runtime_error: ${message}`;\n  return \"tn.ir.runtime_error\";\n}\n\n/* ----- TYPE DEFINITION FOR Date ----- */\n\nconst __tn_ir_Date = {\n  typeName: \"Date\",\n  root: { op: \"const\", value: 6n }\n} as const;\n\nexport class Date {\n  private view: DataView;\n\n  private constructor(private buffer: Uint8Array) {\n    this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n  }\n\n  static __tnCreateView(buffer: Uint8Array, opts?: { fieldContext?: Record<string, number | bigint> }): Date {\n    if (!buffer || buffer.length === undefined) throw new Error(\"Date.__tnCreateView requires a Uint8Array\");\n    return new Date(new Uint8Array(buffer));\n  }\n\n  static builder(): DateBuilder {\n    return new DateBuilder();\n  }\n\n  static fromBuilder(builder: DateBuilder): Date | null {\n    const buffer = builder.build();\n    return Date.from_array(buffer);\n  }\n\n  get_year(): number {\n    const offset = 0;\n    return this.view.getInt32(offset, true); /* little-endian */\n  }\n\n  set_year(value: number): void {\n    const offset = 0;\n    this.view.setInt32(offset, value, true); /* little-endian */\n  }\n\n  get year(): number {\n    return this.get_year();\n  }\n\n  set year(value: number) {\n    this.set_year(value);\n  }\n\n  get_month(): number {\n    const offset = 4;\n    return this.view.getUint8(offset);\n  }\n\n  set_month(value: number): void {\n    const offset = 4;\n    this.view.setUint8(offset, value);\n  }\n\n  get month(): number {\n    return this.get_month();\n  }\n\n  set month(value: number) {\n    this.set_month(value);\n  }\n\n  get_day(): number {\n    const offset = 5;\n    return this.view.getUint8(offset);\n  }\n\n  set_day(value: number): void {\n    const offset = 5;\n    this.view.setUint8(offset, value);\n  }\n\n  get day(): number {\n    return this.get_day();\n  }\n\n  set day(value: number) {\n    this.set_day(value);\n  }\n\n  private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n    return __tnEvalFootprint(__tn_ir_Date.root, { params: __tnParams });\n  }\n\n  private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n    return __tnValidateIrTree(__tn_ir_Date, buffer, __tnParams);\n  }\n\n  static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n    return this.__tnFootprintInternal(__tnParams);\n  }\n\n  static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n    return this.__tnValidateInternal(buffer, __tnParams);\n  }\n\n  static footprintIr(): bigint {\n    return this.__tnFootprintInternal(Object.create(null));\n  }\n\n  static footprint(): number {\n    const irResult = this.footprintIr();\n      const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n    if (__tnBigIntGreaterThan(irResult, maxSafe)) {\n      throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for Date');\n    }\n    return __tnBigIntToNumber(irResult, 'Date::footprint');\n  }\n\n  static validate(buffer: Uint8Array, _opts?: { params?: never }): { ok: boolean; code?: string; consumed?: number } {\n    if (buffer.length < 6) return { ok: false, code: \"tn.buffer_too_small\", consumed: 6 };\n    return { ok: true, consumed: 6 };\n  }\n\n  static new(year: number, month: number, day: number): Date {\n    const buffer = new Uint8Array(6);\n    const view = new DataView(buffer.buffer);\n\n    let offset = 0;\n    view.setInt32(0, year, true); /* year (little-endian) */\n    view.setUint8(4, month); /* month */\n    view.setUint8(5, day); /* day */\n\n    return new Date(buffer);\n  }\n\n  static from_array(buffer: Uint8Array): Date | null {\n    if (!buffer || buffer.length === undefined) {\n      return null;\n    }\n    const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    const validation = this.validate(buffer);\n    if (!validation.ok) {\n      return null;\n    }\n    return new Date(buffer);\n  }\n\n}\n\nexport class DateBuilder {\n  private buffer: Uint8Array;\n  private view: DataView;\n\n  constructor() {\n    this.buffer = new Uint8Array(6);\n    this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n  }\n\n  set_year(value: number): this {\n    this.view.setInt32(0, value, true);\n    return this;\n  }\n\n  set_month(value: number): this {\n    this.view.setUint8(4, value);\n    return this;\n  }\n\n  set_day(value: number): this {\n    this.view.setUint8(5, value);\n    return this;\n  }\n\n  build(): Uint8Array {\n    return this.buffer.slice();\n  }\n\n  buildInto(target: Uint8Array, offset = 0): Uint8Array {\n    if (target.length - offset < this.buffer.length) throw new Error(\"target buffer too small\");\n    target.set(this.buffer, offset);\n    return target;\n  }\n\n  finish(): Date {\n    const view = Date.from_array(this.buffer.slice());\n    if (!view) throw new Error(\"failed to build Date\");\n    return view;\n  }\n}\n\n__tnRegisterFootprint(\"Date\", (params) => Date.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"Date\", (buffer, params) => Date.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"Date\", (buffer) => { const result = Date.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n\n/* ----- TYPE DEFINITION FOR Duration ----- */\n\nconst __tn_ir_Duration = {\n  typeName: \"Duration\",\n  root: { op: \"const\", value: 12n }\n} as const;\n\nexport class Duration {\n  private view: DataView;\n\n  private constructor(private buffer: Uint8Array) {\n    this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n  }\n\n  static __tnCreateView(buffer: Uint8Array, opts?: { fieldContext?: Record<string, number | bigint> }): Duration {\n    if (!buffer || buffer.length === undefined) throw new Error(\"Duration.__tnCreateView requires a Uint8Array\");\n    return new Duration(new Uint8Array(buffer));\n  }\n\n  static builder(): DurationBuilder {\n    return new DurationBuilder();\n  }\n\n  static fromBuilder(builder: DurationBuilder): Duration | null {\n    const buffer = builder.build();\n    return Duration.from_array(buffer);\n  }\n\n  get_seconds(): bigint {\n    const offset = 0;\n    return this.view.getBigInt64(offset, true); /* little-endian */\n  }\n\n  set_seconds(value: bigint): void {\n    const offset = 0;\n    this.view.setBigInt64(offset, value, true); /* little-endian */\n  }\n\n  get seconds(): bigint {\n    return this.get_seconds();\n  }\n\n  set seconds(value: bigint) {\n    this.set_seconds(value);\n  }\n\n  get_nanos(): number {\n    const offset = 8;\n    return this.view.getInt32(offset, true); /* little-endian */\n  }\n\n  set_nanos(value: number): void {\n    const offset = 8;\n    this.view.setInt32(offset, value, true); /* little-endian */\n  }\n\n  get nanos(): number {\n    return this.get_nanos();\n  }\n\n  set nanos(value: number) {\n    this.set_nanos(value);\n  }\n\n  private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n    return __tnEvalFootprint(__tn_ir_Duration.root, { params: __tnParams });\n  }\n\n  private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n    return __tnValidateIrTree(__tn_ir_Duration, buffer, __tnParams);\n  }\n\n  static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n    return this.__tnFootprintInternal(__tnParams);\n  }\n\n  static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n    return this.__tnValidateInternal(buffer, __tnParams);\n  }\n\n  static footprintIr(): bigint {\n    return this.__tnFootprintInternal(Object.create(null));\n  }\n\n  static footprint(): number {\n    const irResult = this.footprintIr();\n      const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n    if (__tnBigIntGreaterThan(irResult, maxSafe)) {\n      throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for Duration');\n    }\n    return __tnBigIntToNumber(irResult, 'Duration::footprint');\n  }\n\n  static validate(buffer: Uint8Array, _opts?: { params?: never }): { ok: boolean; code?: string; consumed?: number } {\n    if (buffer.length < 12) return { ok: false, code: \"tn.buffer_too_small\", consumed: 12 };\n    return { ok: true, consumed: 12 };\n  }\n\n  static new(seconds: bigint, nanos: number): Duration {\n    const buffer = new Uint8Array(12);\n    const view = new DataView(buffer.buffer);\n\n    let offset = 0;\n    view.setBigInt64(0, seconds, true); /* seconds (little-endian) */\n    view.setInt32(8, nanos, true); /* nanos (little-endian) */\n\n    return new Duration(buffer);\n  }\n\n  static from_array(buffer: Uint8Array): Duration | null {\n    if (!buffer || buffer.length === undefined) {\n      return null;\n    }\n    const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    const validation = this.validate(buffer);\n    if (!validation.ok) {\n      return null;\n    }\n    return new Duration(buffer);\n  }\n\n}\n\nexport class DurationBuilder {\n  private buffer: Uint8Array;\n  private view: DataView;\n\n  constructor() {\n    this.buffer = new Uint8Array(12);\n    this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n  }\n\n  set_seconds(value: bigint): this {\n    const cast = __tnToBigInt(value);\n    this.view.setBigInt64(0, cast, true);\n    return this;\n  }\n\n  set_nanos(value: number): this {\n    this.view.setInt32(8, value, true);\n    return this;\n  }\n\n  build(): Uint8Array {\n    return this.buffer.slice();\n  }\n\n  buildInto(target: Uint8Array, offset = 0): Uint8Array {\n    if (target.length - offset < this.buffer.length) throw new Error(\"target buffer too small\");\n    target.set(this.buffer, offset);\n    return target;\n  }\n\n  finish(): Duration {\n    const view = Duration.from_array(this.buffer.slice());\n    if (!view) throw new Error(\"failed to build Duration\");\n    return view;\n  }\n}\n\n__tnRegisterFootprint(\"Duration\", (params) => Duration.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"Duration\", (buffer, params) => Duration.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"Duration\", (buffer) => { const result = Duration.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n\n/* ----- TYPE DEFINITION FOR FixedPoint ----- */\n\nconst __tn_ir_FixedPoint = {\n  typeName: \"FixedPoint\",\n  root: { op: \"const\", value: 9n }\n} as const;\n\nexport class FixedPoint {\n  private view: DataView;\n\n  private constructor(private buffer: Uint8Array) {\n    this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n  }\n\n  static __tnCreateView(buffer: Uint8Array, opts?: { fieldContext?: Record<string, number | bigint> }): FixedPoint {\n    if (!buffer || buffer.length === undefined) throw new Error(\"FixedPoint.__tnCreateView requires a Uint8Array\");\n    return new FixedPoint(new Uint8Array(buffer));\n  }\n\n  static builder(): FixedPointBuilder {\n    return new FixedPointBuilder();\n  }\n\n  static fromBuilder(builder: FixedPointBuilder): FixedPoint | null {\n    const buffer = builder.build();\n    return FixedPoint.from_array(buffer);\n  }\n\n  get_mantissa(): bigint {\n    const offset = 0;\n    return this.view.getBigInt64(offset, true); /* little-endian */\n  }\n\n  set_mantissa(value: bigint): void {\n    const offset = 0;\n    this.view.setBigInt64(offset, value, true); /* little-endian */\n  }\n\n  get mantissa(): bigint {\n    return this.get_mantissa();\n  }\n\n  set mantissa(value: bigint) {\n    this.set_mantissa(value);\n  }\n\n  get_scale(): number {\n    const offset = 8;\n    return this.view.getUint8(offset);\n  }\n\n  set_scale(value: number): void {\n    const offset = 8;\n    this.view.setUint8(offset, value);\n  }\n\n  get scale(): number {\n    return this.get_scale();\n  }\n\n  set scale(value: number) {\n    this.set_scale(value);\n  }\n\n  private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n    return __tnEvalFootprint(__tn_ir_FixedPoint.root, { params: __tnParams });\n  }\n\n  private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n    return __tnValidateIrTree(__tn_ir_FixedPoint, buffer, __tnParams);\n  }\n\n  static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n    return this.__tnFootprintInternal(__tnParams);\n  }\n\n  static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n    return this.__tnValidateInternal(buffer, __tnParams);\n  }\n\n  static footprintIr(): bigint {\n    return this.__tnFootprintInternal(Object.create(null));\n  }\n\n  static footprint(): number {\n    const irResult = this.footprintIr();\n      const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n    if (__tnBigIntGreaterThan(irResult, maxSafe)) {\n      throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for FixedPoint');\n    }\n    return __tnBigIntToNumber(irResult, 'FixedPoint::footprint');\n  }\n\n  static validate(buffer: Uint8Array, _opts?: { params?: never }): { ok: boolean; code?: string; consumed?: number } {\n    if (buffer.length < 9) return { ok: false, code: \"tn.buffer_too_small\", consumed: 9 };\n    return { ok: true, consumed: 9 };\n  }\n\n  static new(mantissa: bigint, scale: number): FixedPoint {\n    const buffer = new Uint8Array(9);\n    const view = new DataView(buffer.buffer);\n\n    let offset = 0;\n    view.setBigInt64(0, mantissa, true); /* mantissa (little-endian) */\n    view.setUint8(8, scale); /* scale */\n\n    return new FixedPoint(buffer);\n  }\n\n  static from_array(buffer: Uint8Array): FixedPoint | null {\n    if (!buffer || buffer.length === undefined) {\n      return null;\n    }\n    const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    const validation = this.validate(buffer);\n    if (!validation.ok) {\n      return null;\n    }\n    return new FixedPoint(buffer);\n  }\n\n}\n\nexport class FixedPointBuilder {\n  private buffer: Uint8Array;\n  private view: DataView;\n\n  constructor() {\n    this.buffer = new Uint8Array(9);\n    this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n  }\n\n  set_mantissa(value: bigint): this {\n    const cast = __tnToBigInt(value);\n    this.view.setBigInt64(0, cast, true);\n    return this;\n  }\n\n  set_scale(value: number): this {\n    this.view.setUint8(8, value);\n    return this;\n  }\n\n  build(): Uint8Array {\n    return this.buffer.slice();\n  }\n\n  buildInto(target: Uint8Array, offset = 0): Uint8Array {\n    if (target.length - offset < this.buffer.length) throw new Error(\"target buffer too small\");\n    target.set(this.buffer, offset);\n    return target;\n  }\n\n  finish(): FixedPoint {\n    const view = FixedPoint.from_array(this.buffer.slice());\n    if (!view) throw new Error(\"failed to build FixedPoint\");\n    return view;\n  }\n}\n\n__tnRegisterFootprint(\"FixedPoint\", (params) => FixedPoint.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"FixedPoint\", (buffer, params) => FixedPoint.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"FixedPoint\", (buffer) => { const result = FixedPoint.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n\n/* ----- TYPE DEFINITION FOR Hash ----- */\n\nconst __tn_ir_Hash = {\n  typeName: \"Hash\",\n  root: { op: \"const\", value: 32n }\n} as const;\n\nexport class Hash {\n  private view: DataView;\n\n  private constructor(private buffer: Uint8Array) {\n    this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n  }\n\n  static __tnCreateView(buffer: Uint8Array, opts?: { fieldContext?: Record<string, number | bigint> }): Hash {\n    if (!buffer || buffer.length === undefined) throw new Error(\"Hash.__tnCreateView requires a Uint8Array\");\n    return new Hash(new Uint8Array(buffer));\n  }\n\n  static builder(): HashBuilder {\n    return new HashBuilder();\n  }\n\n  static fromBuilder(builder: HashBuilder): Hash | null {\n    const buffer = builder.build();\n    return Hash.from_array(buffer);\n  }\n\n  get_bytes(): number[] {\n    const offset = 0;\n    const result: number[] = [];\n    for (let i = 0; i < 32; i++) {\n      result.push(this.view.getUint8((offset + i * 1)));\n    }\n    return result;\n  }\n\n  set_bytes(value: number[]): void {\n    const offset = 0;\n    if (value.length !== 32) {\n      throw new Error('Array length must be 32');\n    }\n    for (let i = 0; i < 32; i++) {\n      this.view.setUint8((offset + i * 1), value[i]);\n    }\n  }\n\n  get bytes(): number[] {\n    return this.get_bytes();\n  }\n\n  set bytes(value: number[]) {\n    this.set_bytes(value);\n  }\n\n  private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n    return __tnEvalFootprint(__tn_ir_Hash.root, { params: __tnParams });\n  }\n\n  private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n    return __tnValidateIrTree(__tn_ir_Hash, buffer, __tnParams);\n  }\n\n  static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n    return this.__tnFootprintInternal(__tnParams);\n  }\n\n  static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n    return this.__tnValidateInternal(buffer, __tnParams);\n  }\n\n  static footprintIr(): bigint {\n    return this.__tnFootprintInternal(Object.create(null));\n  }\n\n  static footprint(): number {\n    const irResult = this.footprintIr();\n      const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n    if (__tnBigIntGreaterThan(irResult, maxSafe)) {\n      throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for Hash');\n    }\n    return __tnBigIntToNumber(irResult, 'Hash::footprint');\n  }\n\n  static validate(buffer: Uint8Array, _opts?: { params?: never }): { ok: boolean; code?: string; consumed?: number } {\n    if (buffer.length < 32) return { ok: false, code: \"tn.buffer_too_small\", consumed: 32 };\n    return { ok: true, consumed: 32 };\n  }\n\n  static from_array(buffer: Uint8Array): Hash | null {\n    if (!buffer || buffer.length === undefined) {\n      return null;\n    }\n    const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    const validation = this.validate(buffer);\n    if (!validation.ok) {\n      return null;\n    }\n    return new Hash(buffer);\n  }\n\n}\n\nexport class HashBuilder {\n  private buffer: Uint8Array;\n  private view: DataView;\n\n  constructor() {\n    this.buffer = new Uint8Array(32);\n    this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n  }\n\n  set_bytes(values: number[]): this {\n    if (values.length !== 32) throw new Error(\"bytes expects 32 elements\");\n    for (let i = 0; i < values.length; i++) {\n      const byteOffset = 0 + i * 1;\n      this.view.setUint8(byteOffset, values[i]);\n    }\n    return this;\n  }\n\n  build(): Uint8Array {\n    return this.buffer.slice();\n  }\n\n  buildInto(target: Uint8Array, offset = 0): Uint8Array {\n    if (target.length - offset < this.buffer.length) throw new Error(\"target buffer too small\");\n    target.set(this.buffer, offset);\n    return target;\n  }\n\n  finish(): Hash {\n    const view = Hash.from_array(this.buffer.slice());\n    if (!view) throw new Error(\"failed to build Hash\");\n    return view;\n  }\n}\n\n__tnRegisterFootprint(\"Hash\", (params) => Hash.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"Hash\", (buffer, params) => Hash.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"Hash\", (buffer) => { const result = Hash.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n\n/* ----- TYPE DEFINITION FOR InstructionData ----- */\n\nconst __tn_ir_InstructionData = {\n  typeName: \"InstructionData\",\n  root: { op: \"align\", alignment: 1, node: { op: \"add\", left: { op: \"add\", left: { op: \"align\", alignment: 2, node: { op: \"const\", value: 2n } }, right: { op: \"align\", alignment: 8, node: { op: \"const\", value: 8n } } }, right: { op: \"align\", alignment: 1, node: { op: \"mul\", left: { op: \"field\", param: \"data.data_size\" }, right: { op: \"const\", value: 1n } } } } }\n} as const;\n\nexport class InstructionData {\n  private view: DataView;\n  private __tnFieldContext: Record<string, number | bigint> | null = null;\n  private __tnParams: InstructionData.Params;\n\n  private constructor(private buffer: Uint8Array, params?: InstructionData.Params, fieldContext?: Record<string, number | bigint>) {\n    this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    this.__tnFieldContext = fieldContext ?? null;\n    if (params) {\n      this.__tnParams = params;\n    } else {\n      const derived = InstructionData.__tnExtractParams(this.view, buffer);\n      if (!derived) {\n        throw new Error(\"InstructionData: failed to derive dynamic parameters\");\n      }\n      this.__tnParams = derived.params;\n    }\n  }\n\n  static __tnCreateView(buffer: Uint8Array, opts?: { params?: InstructionData.Params, fieldContext?: Record<string, number | bigint> }): InstructionData {\n    if (!buffer || buffer.length === undefined) throw new Error(\"InstructionData.__tnCreateView requires a Uint8Array\");\n    let params = opts?.params ?? null;\n    if (!params) {\n      const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n      const derived = InstructionData.__tnExtractParams(view, buffer);\n      if (!derived) throw new Error(\"InstructionData.__tnCreateView: failed to derive params\");\n      params = derived.params;\n    }\n    const instance = new InstructionData(new Uint8Array(buffer), params, opts?.fieldContext);\n    return instance;\n  }\n\n  dynamicParams(): InstructionData.Params {\n    return this.__tnParams;\n  }\n\n  withFieldContext(context: Record<string, number | bigint>): this {\n    this.__tnFieldContext = context;\n    return this;\n  }\n\n  private __tnResolveFieldRef(path: string): number {\n    const getterName = `get_${path.replace(/[.]/g, '_')}`;\n    const getter = (this as any)[getterName];\n    if (typeof getter === \"function\") {\n      const value = getter.call(this);\n      return typeof value === \"bigint\" ? __tnBigIntToNumber(value, \"InstructionData::__tnResolveFieldRef\") : value;\n    }\n    if (this.__tnFieldContext && Object.prototype.hasOwnProperty.call(this.__tnFieldContext, path)) {\n      const contextValue = this.__tnFieldContext[path];\n      return typeof contextValue === \"bigint\" ? __tnBigIntToNumber(contextValue, \"InstructionData::__tnResolveFieldRef\") : contextValue;\n    }\n    throw new Error(\"InstructionData: field reference '\" + path + \"' is not available; provide fieldContext when creating this view\");\n  }\n\n  static builder(): InstructionDataBuilder {\n    return new InstructionDataBuilder();\n  }\n\n  static fromBuilder(builder: InstructionDataBuilder): InstructionData | null {\n    const buffer = builder.build();\n    const params = builder.dynamicParams();\n    return InstructionData.from_array(buffer, { params });\n  }\n\n  static readonly flexibleArrayWriters = Object.freeze([\n    { field: \"data\", method: \"data\", sizeField: \"data_size\", paramKey: \"data_size\", elementSize: 1 },\n  ] as const);\n\n  private static __tnExtractParams(view: DataView, buffer: Uint8Array): { params: InstructionData.Params; derived: Record<string, bigint> | null } | null {\n    if (buffer.length < 10) {\n      return null;\n    }\n    const __tnParam_data_data_size = __tnToBigInt(view.getBigUint64(2, true));\n    const __tnExtractedParams = InstructionData.Params.fromValues({\n      data_data_size: __tnParam_data_data_size,\n    });\n    return { params: __tnExtractedParams, derived: null };\n  }\n\n  get_program_idx(): number {\n    const offset = 0;\n    return this.view.getUint16(offset, true); /* little-endian */\n  }\n\n  set_program_idx(value: number): void {\n    const offset = 0;\n    this.view.setUint16(offset, value, true); /* little-endian */\n  }\n\n  get program_idx(): number {\n    return this.get_program_idx();\n  }\n\n  set program_idx(value: number) {\n    this.set_program_idx(value);\n  }\n\n  get_data_size(): bigint {\n    const offset = 2;\n    return this.view.getBigUint64(offset, true); /* little-endian */\n  }\n\n  set_data_size(value: bigint): void {\n    const offset = 2;\n    this.view.setBigUint64(offset, value, true); /* little-endian */\n  }\n\n  get data_size(): bigint {\n    return this.get_data_size();\n  }\n\n  set data_size(value: bigint) {\n    this.set_data_size(value);\n  }\n\n  get_data_length(): number {\n    return this.__tnResolveFieldRef(\"data_size\");\n  }\n\n  get_data_at(index: number): number {\n    const offset = 10;\n    return this.view.getUint8(offset + index * 1);\n  }\n\n  get_data(): number[] {\n    const len = this.get_data_length();\n    const result: number[] = [];\n    for (let i = 0; i < len; i++) {\n      result.push(this.get_data_at(i));\n    }\n    return result;\n  }\n\n  set_data_at(index: number, value: number): void {\n    const offset = 10;\n    this.view.setUint8((offset + index * 1), value);\n  }\n\n  set_data(value: number[]): void {\n    const len = Math.min(this.get_data_length(), value.length);\n    for (let i = 0; i < len; i++) {\n      this.set_data_at(i, value[i]);\n    }\n  }\n\n  get data(): number[] {\n    return this.get_data();\n  }\n\n  set data(value: number[]) {\n    this.set_data(value);\n  }\n  private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n    return __tnEvalFootprint(__tn_ir_InstructionData.root, { params: __tnParams });\n  }\n\n  private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n    return __tnValidateIrTree(__tn_ir_InstructionData, buffer, __tnParams);\n  }\n\n  static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n    return this.__tnFootprintInternal(__tnParams);\n  }\n\n  static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n    return this.__tnValidateInternal(buffer, __tnParams);\n  }\n\n  static footprintIr(data_data_size: number | bigint): bigint {\n    const params = InstructionData.Params.fromValues({\n      data_data_size: data_data_size,\n    });\n    return this.footprintIrFromParams(params);\n  }\n\n  private static __tnPackParams(params: InstructionData.Params): Record<string, bigint> {\n    const record: Record<string, bigint> = Object.create(null);\n    record[\"data.data_size\"] = params.data_data_size;\n    return record;\n  }\n\n  static footprintIrFromParams(params: InstructionData.Params): bigint {\n    const __tnParams = this.__tnPackParams(params);\n    return this.__tnFootprintInternal(__tnParams);\n  }\n\n  static footprintFromParams(params: InstructionData.Params): number {\n    const irResult = this.footprintIrFromParams(params);\n    const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n    if (__tnBigIntGreaterThan(irResult, maxSafe)) throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for InstructionData');\n    return __tnBigIntToNumber(irResult, 'InstructionData::footprintFromParams');\n  }\n\n  static footprintFromValues(input: { data_data_size: number | bigint }): number {\n    const params = InstructionData.params(input);\n    return this.footprintFromParams(params);\n  }\n\n  static footprint(params: InstructionData.Params): number {\n    return this.footprintFromParams(params);\n  }\n\n  static validate(buffer: Uint8Array, opts?: { params?: InstructionData.Params }): { ok: boolean; code?: string; consumed?: number; params?: InstructionData.Params } {\n    if (!buffer || buffer.length === undefined) {\n      return { ok: false, code: \"tn.invalid_buffer\" };\n    }\n    const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    let params = opts?.params ?? null;\n    if (!params) {\n      const extracted = this.__tnExtractParams(view, buffer);\n      if (!extracted) return { ok: false, code: \"tn.param_extraction_failed\" };\n      params = extracted.params;\n    }\n    const __tnParamsRec = this.__tnPackParams(params);\n    const irResult = this.__tnValidateInternal(buffer, __tnParamsRec);\n    if (!irResult.ok) {\n      return { ok: false, code: irResult.code, consumed: irResult.consumed ? __tnBigIntToNumber(irResult.consumed, 'InstructionData::validate') : undefined, params };\n    }\n    const consumed = irResult.consumed ? __tnBigIntToNumber(irResult.consumed, 'InstructionData::validate') : undefined;\n    return { ok: true, consumed, params };\n  }\n\n  static from_array(buffer: Uint8Array, opts?: { params?: InstructionData.Params }): InstructionData | null {\n    if (!buffer || buffer.length === undefined) {\n      return null;\n    }\n    const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    let params = opts?.params ?? null;\n    if (!params) {\n      const derived = this.__tnExtractParams(view, buffer);\n      if (!derived) return null;\n      params = derived.params;\n    }\n    const validation = this.validate(buffer, { params });\n    if (!validation.ok) {\n      return null;\n    }\n    const cached = validation.params ?? params;\n    const state = new InstructionData(buffer, cached);\n    return state;\n  }\n\n\n}\n\nexport namespace InstructionData {\n  export type Params = {\n    /** ABI path: data.data_size */\n    readonly data_data_size: bigint;\n  };\n\n  export const ParamKeys = Object.freeze({\n    data_data_size: \"data.data_size\",\n  } as const);\n\n  export const Params = {\n    fromValues(input: { data_data_size: number | bigint }): Params {\n      return {\n        data_data_size: __tnToBigInt(input.data_data_size),\n      };\n    },\n    fromBuilder(source: { dynamicParams(): Params } | { params: Params } | Params): Params {\n      if ((source as { dynamicParams?: () => Params }).dynamicParams) {\n        return (source as { dynamicParams(): Params }).dynamicParams();\n      }\n      if ((source as { params?: Params }).params) {\n        return (source as { params: Params }).params;\n      }\n      return source as Params;\n    }\n  };\n\n  export function params(input: { data_data_size: number | bigint }): Params {\n    return Params.fromValues(input);\n  }\n}\n\nexport class InstructionDataBuilder {\n  private buffer: Uint8Array;\n  private view: DataView;\n  private __tnCachedParams: InstructionData.Params | null = null;\n  private __tnLastBuffer: Uint8Array | null = null;\n  private __tnLastParams: InstructionData.Params | null = null;\n  private __tnFam_data: Uint8Array | null = null;\n  private __tnFam_dataCount: number | null = null;\n  private __tnFamWriter_data?: __TnFamWriterResult<InstructionDataBuilder>;\n\n  constructor() {\n    this.buffer = new Uint8Array(10);\n    this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n  }\n\n  private __tnInvalidate(): void {\n    this.__tnCachedParams = null;\n    this.__tnLastBuffer = null;\n    this.__tnLastParams = null;\n  }\n\n  set_program_idx(value: number): this {\n    this.view.setUint16(0, value, true);\n    this.__tnInvalidate();\n    return this;\n  }\n\n  set_data_size(value: bigint): this {\n    const cast = __tnToBigInt(value);\n    this.view.setBigUint64(2, cast, true);\n    this.__tnInvalidate();\n    return this;\n  }\n\n  data(): __TnFamWriterResult<InstructionDataBuilder> {\n    if (!this.__tnFamWriter_data) {\n      this.__tnFamWriter_data = __tnCreateFamWriter(this, \"data\", (payload) => {\n        const bytes = new Uint8Array(payload);\n        const elementCount = bytes.length;\n        this.__tnFam_data = bytes;\n        this.__tnFam_dataCount = elementCount;\n        this.set_data_size(__tnToBigInt(elementCount));\n        this.__tnInvalidate();\n      });\n    }\n    return this.__tnFamWriter_data!;\n  }\n\n  build(): Uint8Array {\n    const params = this.__tnComputeParams();\n    const size = InstructionData.footprintFromParams(params);\n    const buffer = new Uint8Array(size);\n    this.__tnWriteInto(buffer);\n    this.__tnValidateOrThrow(buffer, params);\n    return buffer;\n  }\n\n  buildInto(target: Uint8Array, offset = 0): Uint8Array {\n    const params = this.__tnComputeParams();\n    const size = InstructionData.footprintFromParams(params);\n    if (target.length - offset < size) throw new Error(\"InstructionDataBuilder: target buffer too small\");\n    const slice = target.subarray(offset, offset + size);\n    this.__tnWriteInto(slice);\n    this.__tnValidateOrThrow(slice, params);\n    return target;\n  }\n\n  finish(): InstructionData {\n    const buffer = this.build();\n    const params = this.__tnLastParams ?? this.__tnComputeParams();\n    const view = InstructionData.from_array(buffer, { params });\n    if (!view) throw new Error(\"InstructionDataBuilder: failed to finalize view\");\n    return view;\n  }\n\n  finishView(): InstructionData {\n    return this.finish();\n  }\n\n  dynamicParams(): InstructionData.Params {\n    return this.__tnComputeParams();\n  }\n\n  private __tnComputeParams(): InstructionData.Params {\n    if (this.__tnCachedParams) return this.__tnCachedParams;\n    const params = InstructionData.Params.fromValues({\n      data_data_size: (() => { if (this.__tnFam_dataCount === null) throw new Error(\"InstructionDataBuilder: field 'data' must be written before computing params\"); return __tnToBigInt(this.__tnFam_dataCount); })(),\n    });\n    this.__tnCachedParams = params;\n    return params;\n  }\n\n  private __tnWriteInto(target: Uint8Array): void {\n    target.set(this.buffer, 0);\n    let cursor = this.buffer.length;\n    const __tnLocal_data_bytes = this.__tnFam_data;\n    if (!__tnLocal_data_bytes) throw new Error(\"InstructionDataBuilder: field 'data' must be written before build\");\n    target.set(__tnLocal_data_bytes, cursor);\n    cursor += __tnLocal_data_bytes.length;\n  }\n\n  private __tnValidateOrThrow(buffer: Uint8Array, params: InstructionData.Params): void {\n    const result = InstructionData.validate(buffer, { params });\n    if (!result.ok) {\n      throw new Error(`${ InstructionData }Builder: builder produced invalid buffer (code=${result.code ?? \"unknown\"})`);\n    }\n    this.__tnLastParams = result.params ?? params;\n    this.__tnLastBuffer = buffer;\n  }\n}\n\n__tnRegisterFootprint(\"InstructionData\", (params) => InstructionData.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"InstructionData\", (buffer, params) => InstructionData.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"InstructionData\", (buffer) => { const result = InstructionData.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n\n/* ----- TYPE DEFINITION FOR Pubkey ----- */\n\nconst __tn_ir_Pubkey = {\n  typeName: \"Pubkey\",\n  root: { op: \"const\", value: 32n }\n} as const;\n\nexport class Pubkey {\n  private view: DataView;\n\n  private constructor(private buffer: Uint8Array) {\n    this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n  }\n\n  static __tnCreateView(buffer: Uint8Array, opts?: { fieldContext?: Record<string, number | bigint> }): Pubkey {\n    if (!buffer || buffer.length === undefined) throw new Error(\"Pubkey.__tnCreateView requires a Uint8Array\");\n    return new Pubkey(new Uint8Array(buffer));\n  }\n\n  static builder(): PubkeyBuilder {\n    return new PubkeyBuilder();\n  }\n\n  static fromBuilder(builder: PubkeyBuilder): Pubkey | null {\n    const buffer = builder.build();\n    return Pubkey.from_array(buffer);\n  }\n\n  get_bytes(): number[] {\n    const offset = 0;\n    const result: number[] = [];\n    for (let i = 0; i < 32; i++) {\n      result.push(this.view.getUint8((offset + i * 1)));\n    }\n    return result;\n  }\n\n  set_bytes(value: number[]): void {\n    const offset = 0;\n    if (value.length !== 32) {\n      throw new Error('Array length must be 32');\n    }\n    for (let i = 0; i < 32; i++) {\n      this.view.setUint8((offset + i * 1), value[i]);\n    }\n  }\n\n  get bytes(): number[] {\n    return this.get_bytes();\n  }\n\n  set bytes(value: number[]) {\n    this.set_bytes(value);\n  }\n\n  private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n    return __tnEvalFootprint(__tn_ir_Pubkey.root, { params: __tnParams });\n  }\n\n  private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n    return __tnValidateIrTree(__tn_ir_Pubkey, buffer, __tnParams);\n  }\n\n  static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n    return this.__tnFootprintInternal(__tnParams);\n  }\n\n  static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n    return this.__tnValidateInternal(buffer, __tnParams);\n  }\n\n  static footprintIr(): bigint {\n    return this.__tnFootprintInternal(Object.create(null));\n  }\n\n  static footprint(): number {\n    const irResult = this.footprintIr();\n      const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n    if (__tnBigIntGreaterThan(irResult, maxSafe)) {\n      throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for Pubkey');\n    }\n    return __tnBigIntToNumber(irResult, 'Pubkey::footprint');\n  }\n\n  static validate(buffer: Uint8Array, _opts?: { params?: never }): { ok: boolean; code?: string; consumed?: number } {\n    if (buffer.length < 32) return { ok: false, code: \"tn.buffer_too_small\", consumed: 32 };\n    return { ok: true, consumed: 32 };\n  }\n\n  static from_array(buffer: Uint8Array): Pubkey | null {\n    if (!buffer || buffer.length === undefined) {\n      return null;\n    }\n    const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    const validation = this.validate(buffer);\n    if (!validation.ok) {\n      return null;\n    }\n    return new Pubkey(buffer);\n  }\n\n}\n\nexport class PubkeyBuilder {\n  private buffer: Uint8Array;\n  private view: DataView;\n\n  constructor() {\n    this.buffer = new Uint8Array(32);\n    this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n  }\n\n  set_bytes(values: number[]): this {\n    if (values.length !== 32) throw new Error(\"bytes expects 32 elements\");\n    for (let i = 0; i < values.length; i++) {\n      const byteOffset = 0 + i * 1;\n      this.view.setUint8(byteOffset, values[i]);\n    }\n    return this;\n  }\n\n  build(): Uint8Array {\n    return this.buffer.slice();\n  }\n\n  buildInto(target: Uint8Array, offset = 0): Uint8Array {\n    if (target.length - offset < this.buffer.length) throw new Error(\"target buffer too small\");\n    target.set(this.buffer, offset);\n    return target;\n  }\n\n  finish(): Pubkey {\n    const view = Pubkey.from_array(this.buffer.slice());\n    if (!view) throw new Error(\"failed to build Pubkey\");\n    return view;\n  }\n}\n\n__tnRegisterFootprint(\"Pubkey\", (params) => Pubkey.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"Pubkey\", (buffer, params) => Pubkey.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"Pubkey\", (buffer) => { const result = Pubkey.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n\n/* ----- TYPE DEFINITION FOR Signature ----- */\n\nconst __tn_ir_Signature = {\n  typeName: \"Signature\",\n  root: { op: \"const\", value: 64n }\n} as const;\n\nexport class Signature {\n  private view: DataView;\n\n  private constructor(private buffer: Uint8Array) {\n    this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n  }\n\n  static __tnCreateView(buffer: Uint8Array, opts?: { fieldContext?: Record<string, number | bigint> }): Signature {\n    if (!buffer || buffer.length === undefined) throw new Error(\"Signature.__tnCreateView requires a Uint8Array\");\n    return new Signature(new Uint8Array(buffer));\n  }\n\n  static builder(): SignatureBuilder {\n    return new SignatureBuilder();\n  }\n\n  static fromBuilder(builder: SignatureBuilder): Signature | null {\n    const buffer = builder.build();\n    return Signature.from_array(buffer);\n  }\n\n  get_bytes(): number[] {\n    const offset = 0;\n    const result: number[] = [];\n    for (let i = 0; i < 64; i++) {\n      result.push(this.view.getUint8((offset + i * 1)));\n    }\n    return result;\n  }\n\n  set_bytes(value: number[]): void {\n    const offset = 0;\n    if (value.length !== 64) {\n      throw new Error('Array length must be 64');\n    }\n    for (let i = 0; i < 64; i++) {\n      this.view.setUint8((offset + i * 1), value[i]);\n    }\n  }\n\n  get bytes(): number[] {\n    return this.get_bytes();\n  }\n\n  set bytes(value: number[]) {\n    this.set_bytes(value);\n  }\n\n  private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n    return __tnEvalFootprint(__tn_ir_Signature.root, { params: __tnParams });\n  }\n\n  private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n    return __tnValidateIrTree(__tn_ir_Signature, buffer, __tnParams);\n  }\n\n  static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n    return this.__tnFootprintInternal(__tnParams);\n  }\n\n  static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n    return this.__tnValidateInternal(buffer, __tnParams);\n  }\n\n  static footprintIr(): bigint {\n    return this.__tnFootprintInternal(Object.create(null));\n  }\n\n  static footprint(): number {\n    const irResult = this.footprintIr();\n      const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n    if (__tnBigIntGreaterThan(irResult, maxSafe)) {\n      throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for Signature');\n    }\n    return __tnBigIntToNumber(irResult, 'Signature::footprint');\n  }\n\n  static validate(buffer: Uint8Array, _opts?: { params?: never }): { ok: boolean; code?: string; consumed?: number } {\n    if (buffer.length < 64) return { ok: false, code: \"tn.buffer_too_small\", consumed: 64 };\n    return { ok: true, consumed: 64 };\n  }\n\n  static from_array(buffer: Uint8Array): Signature | null {\n    if (!buffer || buffer.length === undefined) {\n      return null;\n    }\n    const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    const validation = this.validate(buffer);\n    if (!validation.ok) {\n      return null;\n    }\n    return new Signature(buffer);\n  }\n\n}\n\nexport class SignatureBuilder {\n  private buffer: Uint8Array;\n  private view: DataView;\n\n  constructor() {\n    this.buffer = new Uint8Array(64);\n    this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n  }\n\n  set_bytes(values: number[]): this {\n    if (values.length !== 64) throw new Error(\"bytes expects 64 elements\");\n    for (let i = 0; i < values.length; i++) {\n      const byteOffset = 0 + i * 1;\n      this.view.setUint8(byteOffset, values[i]);\n    }\n    return this;\n  }\n\n  build(): Uint8Array {\n    return this.buffer.slice();\n  }\n\n  buildInto(target: Uint8Array, offset = 0): Uint8Array {\n    if (target.length - offset < this.buffer.length) throw new Error(\"target buffer too small\");\n    target.set(this.buffer, offset);\n    return target;\n  }\n\n  finish(): Signature {\n    const view = Signature.from_array(this.buffer.slice());\n    if (!view) throw new Error(\"failed to build Signature\");\n    return view;\n  }\n}\n\n__tnRegisterFootprint(\"Signature\", (params) => Signature.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"Signature\", (buffer, params) => Signature.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"Signature\", (buffer) => { const result = Signature.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n\n/* ----- TYPE DEFINITION FOR Timestamp ----- */\n\nconst __tn_ir_Timestamp = {\n  typeName: \"Timestamp\",\n  root: { op: \"const\", value: 8n }\n} as const;\n\nexport class Timestamp {\n  private view: DataView;\n\n  private constructor(private buffer: Uint8Array) {\n    this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n  }\n\n  static __tnCreateView(buffer: Uint8Array, opts?: { fieldContext?: Record<string, number | bigint> }): Timestamp {\n    if (!buffer || buffer.length === undefined) throw new Error(\"Timestamp.__tnCreateView requires a Uint8Array\");\n    return new Timestamp(new Uint8Array(buffer));\n  }\n\n  static builder(): TimestampBuilder {\n    return new TimestampBuilder();\n  }\n\n  static fromBuilder(builder: TimestampBuilder): Timestamp | null {\n    const buffer = builder.build();\n    return Timestamp.from_array(buffer);\n  }\n\n  get_seconds(): bigint {\n    const offset = 0;\n    return this.view.getBigInt64(offset, true); /* little-endian */\n  }\n\n  set_seconds(value: bigint): void {\n    const offset = 0;\n    this.view.setBigInt64(offset, value, true); /* little-endian */\n  }\n\n  get seconds(): bigint {\n    return this.get_seconds();\n  }\n\n  set seconds(value: bigint) {\n    this.set_seconds(value);\n  }\n\n  private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n    return __tnEvalFootprint(__tn_ir_Timestamp.root, { params: __tnParams });\n  }\n\n  private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n    return __tnValidateIrTree(__tn_ir_Timestamp, buffer, __tnParams);\n  }\n\n  static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n    return this.__tnFootprintInternal(__tnParams);\n  }\n\n  static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n    return this.__tnValidateInternal(buffer, __tnParams);\n  }\n\n  static footprintIr(): bigint {\n    return this.__tnFootprintInternal(Object.create(null));\n  }\n\n  static footprint(): number {\n    const irResult = this.footprintIr();\n      const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n    if (__tnBigIntGreaterThan(irResult, maxSafe)) {\n      throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for Timestamp');\n    }\n    return __tnBigIntToNumber(irResult, 'Timestamp::footprint');\n  }\n\n  static validate(buffer: Uint8Array, _opts?: { params?: never }): { ok: boolean; code?: string; consumed?: number } {\n    if (buffer.length < 8) return { ok: false, code: \"tn.buffer_too_small\", consumed: 8 };\n    return { ok: true, consumed: 8 };\n  }\n\n  static new(seconds: bigint): Timestamp {\n    const buffer = new Uint8Array(8);\n    const view = new DataView(buffer.buffer);\n\n    let offset = 0;\n    view.setBigInt64(0, seconds, true); /* seconds (little-endian) */\n\n    return new Timestamp(buffer);\n  }\n\n  static from_array(buffer: Uint8Array): Timestamp | null {\n    if (!buffer || buffer.length === undefined) {\n      return null;\n    }\n    const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    const validation = this.validate(buffer);\n    if (!validation.ok) {\n      return null;\n    }\n    return new Timestamp(buffer);\n  }\n\n}\n\nexport class TimestampBuilder {\n  private buffer: Uint8Array;\n  private view: DataView;\n\n  constructor() {\n    this.buffer = new Uint8Array(8);\n    this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n  }\n\n  set_seconds(value: bigint): this {\n    const cast = __tnToBigInt(value);\n    this.view.setBigInt64(0, cast, true);\n    return this;\n  }\n\n  build(): Uint8Array {\n    return this.buffer.slice();\n  }\n\n  buildInto(target: Uint8Array, offset = 0): Uint8Array {\n    if (target.length - offset < this.buffer.length) throw new Error(\"target buffer too small\");\n    target.set(this.buffer, offset);\n    return target;\n  }\n\n  finish(): Timestamp {\n    const view = Timestamp.from_array(this.buffer.slice());\n    if (!view) throw new Error(\"failed to build Timestamp\");\n    return view;\n  }\n}\n\n__tnRegisterFootprint(\"Timestamp\", (params) => Timestamp.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"Timestamp\", (buffer, params) => Timestamp.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"Timestamp\", (buffer) => { const result = Timestamp.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n","/* Auto-generated TypeScript code */\n/* WARNING: Do not modify this file directly. It is generated from ABI definitions. */\n\nimport { InstructionData } from \"../../common/primitives/types\";\n\ntype __TnIrNode =\n  | { readonly op: \"zero\" }\n  | { readonly op: \"const\"; readonly value: bigint }\n  | { readonly op: \"field\"; readonly param: string }\n  | {\n      readonly op: \"add\";\n      readonly left: __TnIrNode;\n      readonly right: __TnIrNode;\n    }\n  | {\n      readonly op: \"sub\";\n      readonly left: __TnIrNode;\n      readonly right: __TnIrNode;\n    }\n  | {\n      readonly op: \"mul\";\n      readonly left: __TnIrNode;\n      readonly right: __TnIrNode;\n    }\n  | {\n      readonly op:\n        | \"div\"\n        | \"mod\"\n        | \"bitAnd\"\n        | \"bitOr\"\n        | \"bitXor\"\n        | \"leftShift\"\n        | \"rightShift\";\n      readonly left: __TnIrNode;\n      readonly right: __TnIrNode;\n    }\n  | {\n      readonly op: \"align\";\n      readonly alignment: number;\n      readonly node: __TnIrNode;\n    }\n  | {\n      readonly op: \"switch\";\n      readonly tag: string;\n      readonly cases: readonly { readonly value: number; readonly node: __TnIrNode }[];\n      readonly default?: __TnIrNode;\n    }\n  | {\n      readonly op: \"call\";\n      readonly typeName: string;\n      readonly args: readonly { readonly name: string; readonly source: string }[];\n    }\n  | {\n      readonly op: \"sumOverArray\";\n      readonly count: __TnIrNode;\n      readonly elementTypeName: string;\n      readonly fieldName: string;\n    };\n\ntype __TnIrContext = {\n  params: Record<string, bigint>;\n  buffer?: Uint8Array;\n  typeName?: string;\n};\n\ntype __TnValidateResult = {\n  ok: boolean;\n  code?: string;\n  consumed?: bigint;\n  params?: Record<string, bigint>;\n};\ntype __TnEvalResult =\n  | { ok: true; value: bigint }\n  | { ok: false; code: string };\ntype __TnBuilderLike = { build(): Uint8Array };\ntype __TnStructFieldInput =\n  | Uint8Array\n  | __TnBuilderLike\n  | { buffer?: Uint8Array }\n  | { asUint8Array?: () => Uint8Array }\n  | { bytes?: () => Uint8Array };\ntype __TnVariantDescriptor = {\n  readonly name: string;\n  readonly tag: number;\n  readonly payloadSize: number | null;\n  readonly payloadType?: string;\n  readonly createPayloadBuilder?: () => unknown | null;\n};\ntype __TnVariantSelectorResult<Parent> = {\n  select(\n    name: string\n  ): { writePayload(payload: Uint8Array | __TnBuilderLike): { finish(): Parent } };\n  finish(): Parent;\n};\ntype __TnFamWriterResult<Parent> = {\n  write(payload: Uint8Array | __TnBuilderLike): { finish(): Parent };\n  finish(): Parent;\n};\ntype __TnConsole = { warn?: (...args: unknown[]) => void };\n\nconst __tnWarnings = new Set<string>();\nconst __tnHasNativeBigInt = typeof BigInt === \"function\";\nconst __tnHasBigIntDataView =\n  typeof DataView !== \"undefined\" &&\n  typeof DataView.prototype.getBigInt64 === \"function\" &&\n  typeof DataView.prototype.getBigUint64 === \"function\" &&\n  typeof DataView.prototype.setBigInt64 === \"function\" &&\n  typeof DataView.prototype.setBigUint64 === \"function\";\nconst __tnConsole: __TnConsole | undefined =\n  typeof globalThis !== \"undefined\"\n    ? (globalThis as { console?: __TnConsole }).console\n    : undefined;\n\nfunction __tnLogWarn(message: string): void {\n  if (__tnConsole && typeof __tnConsole.warn === \"function\") {\n    __tnConsole.warn(message);\n  }\n}\n\nfunction __tnWarnOnce(message: string): void {\n  if (!__tnWarnings.has(message)) {\n    __tnWarnings.add(message);\n    __tnLogWarn(message);\n  }\n}\n\nfunction __tnResolveBuilderInput(\n  input: Uint8Array | __TnBuilderLike,\n  context: string\n): Uint8Array {\n  if (input instanceof Uint8Array) {\n    return new Uint8Array(input);\n  }\n  if (input && typeof (input as __TnBuilderLike).build === \"function\") {\n    const built = (input as __TnBuilderLike).build();\n    if (!(built instanceof Uint8Array)) {\n      throw new Error(`${context}: builder did not return Uint8Array`);\n    }\n    return new Uint8Array(built);\n  }\n  throw new Error(`${context}: expected Uint8Array or builder`);\n}\n\nfunction __tnResolveStructFieldInput(\n  input: __TnStructFieldInput,\n  context: string\n): Uint8Array {\n  if (\n    input instanceof Uint8Array ||\n    (input && typeof (input as __TnBuilderLike).build === \"function\")\n  ) {\n    return __tnResolveBuilderInput(input as Uint8Array | __TnBuilderLike, context);\n  }\n  if (input && typeof (input as { asUint8Array?: () => Uint8Array }).asUint8Array === \"function\") {\n    const bytes = (input as { asUint8Array: () => Uint8Array }).asUint8Array();\n    return new Uint8Array(bytes);\n  }\n  if (input && typeof (input as { bytes?: () => Uint8Array }).bytes === \"function\") {\n    const bytes = (input as { bytes: () => Uint8Array }).bytes();\n    return new Uint8Array(bytes);\n  }\n  if (input && (input as { buffer?: unknown }).buffer instanceof Uint8Array) {\n    return new Uint8Array((input as { buffer: Uint8Array }).buffer);\n  }\n  throw new Error(`${context}: expected Uint8Array, builder, or view-like value`);\n}\n\nfunction __tnMaybeCallBuilder(ctor: unknown): unknown | null {\n  if (!ctor) {\n    return null;\n  }\n  const builderFn = (ctor as { builder?: () => unknown }).builder;\n  return typeof builderFn === \"function\" ? builderFn() : null;\n}\n\nfunction __tnCreateVariantSelector<Parent, Descriptor extends __TnVariantDescriptor>(\n  parent: Parent,\n  descriptors: readonly Descriptor[],\n  assign: (descriptor: Descriptor, payload: Uint8Array) => void\n): __TnVariantSelectorResult<Parent> {\n  return {\n    select(name: string) {\n      const descriptor = descriptors.find((variant) => variant.name === name);\n      if (!descriptor) {\n        throw new Error(`Unknown variant '${name}'`);\n      }\n      return {\n        writePayload(payload: Uint8Array | __TnBuilderLike) {\n          const bytes = __tnResolveBuilderInput(\n            payload,\n            `variant ${descriptor.name}`\n          );\n          if (\n            descriptor.payloadSize !== null &&\n            bytes.length !== descriptor.payloadSize\n          ) {\n            throw new Error(\n              `Payload for ${descriptor.name} must be ${descriptor.payloadSize} bytes`\n            );\n          }\n          assign(descriptor, bytes);\n          return {\n            finish(): Parent {\n              return parent;\n            },\n          };\n        },\n      };\n    },\n    finish(): Parent {\n      return parent;\n    },\n  };\n}\n\nfunction __tnCreateFamWriter<Parent>(\n  parent: Parent,\n  fieldName: string,\n  assign: (bytes: Uint8Array) => void\n): __TnFamWriterResult<Parent> {\n  let hasWritten = false;\n  return {\n    write(payload: Uint8Array | __TnBuilderLike) {\n      const bytes = __tnResolveBuilderInput(\n        payload,\n        `flexible array '${fieldName}'`\n      );\n      const copy = new Uint8Array(bytes);\n      assign(copy);\n      hasWritten = true;\n      return {\n        finish(): Parent {\n          return parent;\n        },\n      };\n    },\n    finish(): Parent {\n      if (!hasWritten) {\n        throw new Error(\n          `flexible array '${fieldName}' requires write() before finish()`\n        );\n      }\n      return parent;\n    },\n  };\n}\n\nconst __tnMask32 = __tnHasNativeBigInt\n  ? (BigInt(1) << BigInt(32)) - BigInt(1)\n  : 0xffffffff;\nconst __tnSignBit32 = __tnHasNativeBigInt\n  ? BigInt(1) << BigInt(31)\n  : 0x80000000;\n\nfunction __tnToBigInt(value: number | bigint): bigint {\n  if (__tnHasNativeBigInt) {\n    return typeof value === \"bigint\" ? value : BigInt(value);\n  }\n  if (typeof value === \"bigint\") return value;\n  if (!Number.isFinite(value)) {\n    throw new Error(\"IR runtime received non-finite numeric input\");\n  }\n  if (!Number.isSafeInteger(value)) {\n    __tnWarnOnce(\n      `[thru-net] Precision loss while polyfilling BigInt (value=${value})`\n    );\n  }\n  return (value as unknown) as bigint;\n}\n\nfunction __tnBigIntToNumber(value: bigint, context: string): number {\n  if (__tnHasNativeBigInt) {\n    const converted = Number(value);\n    if (!Number.isFinite(converted)) {\n      throw new Error(`${context} overflowed Number range`);\n    }\n    return converted;\n  }\n  return value as unknown as number;\n}\n\nfunction __tnBigIntEquals(lhs: bigint, rhs: bigint): boolean {\n  if (__tnHasNativeBigInt) return lhs === rhs;\n  return (lhs as unknown as number) === (rhs as unknown as number);\n}\n\nfunction __tnBigIntGreaterThan(lhs: bigint, rhs: bigint): boolean {\n  if (__tnHasNativeBigInt) return lhs > rhs;\n  return (lhs as unknown as number) > (rhs as unknown as number);\n}\n\nfunction __tnPopcount(value: number | bigint): number {\n  let v =\n    typeof value === \"bigint\"\n      ? Number(value & BigInt(0xffffffff))\n      : Number(value) >>> 0;\n  v = v - ((v >>> 1) & 0x55555555);\n  v = (v & 0x33333333) + ((v >>> 2) & 0x33333333);\n  return (((v + (v >>> 4)) & 0x0f0f0f0f) * 0x01010101) >>> 24;\n}\n\nfunction __tnRaiseIrError(code: string, message: string): never {\n  const err = new Error(message);\n  (err as { code?: string }).code = code;\n  throw err;\n}\n\nfunction __tnCheckedAdd(lhs: bigint, rhs: bigint): bigint {\n  if (__tnHasNativeBigInt) {\n    const result = (lhs as bigint) + (rhs as bigint);\n    if (result < BigInt(0)) {\n      __tnRaiseIrError(\n        \"tn.ir.overflow\",\n        \"IR runtime detected negative size via addition\"\n      );\n    }\n    return result;\n  }\n  const left = lhs as unknown as number;\n  const right = rhs as unknown as number;\n  const sum = left + right;\n  if (sum < 0 || !Number.isFinite(sum)) {\n    __tnRaiseIrError(\n      \"tn.ir.overflow\",\n      \"IR runtime detected invalid addition result\"\n    );\n  }\n  if (!Number.isSafeInteger(sum)) {\n    __tnWarnOnce(\"[thru-net] Precision loss while polyfilling BigInt addition\");\n  }\n  return (sum as unknown) as bigint;\n}\n\nfunction __tnCheckedSub(lhs: bigint, rhs: bigint): bigint {\n  if (__tnHasNativeBigInt) {\n    const result = (lhs as bigint) - (rhs as bigint);\n    if (result < BigInt(0)) {\n      __tnRaiseIrError(\n        \"tn.ir.overflow\",\n        \"IR runtime detected negative size via subtraction\"\n      );\n    }\n    return result;\n  }\n  const left = lhs as unknown as number;\n  const right = rhs as unknown as number;\n  const diff = left - right;\n  if (diff < 0 || !Number.isFinite(diff)) {\n    __tnRaiseIrError(\n      \"tn.ir.overflow\",\n      \"IR runtime detected invalid subtraction result\"\n    );\n  }\n  if (!Number.isSafeInteger(diff)) {\n    __tnWarnOnce(\"[thru-net] Precision loss while polyfilling BigInt subtraction\");\n  }\n  return (diff as unknown) as bigint;\n}\n\nfunction __tnCheckedMul(lhs: bigint, rhs: bigint): bigint {\n  if (__tnHasNativeBigInt) {\n    const result = (lhs as bigint) * (rhs as bigint);\n    if (result < BigInt(0)) {\n      __tnRaiseIrError(\n        \"tn.ir.overflow\",\n        \"IR runtime detected negative size via multiplication\"\n      );\n    }\n    return result;\n  }\n  const left = lhs as unknown as number;\n  const right = rhs as unknown as number;\n  const product = left * right;\n  if (product < 0 || !Number.isFinite(product)) {\n    __tnRaiseIrError(\n      \"tn.ir.overflow\",\n      \"IR runtime detected invalid multiplication result\"\n    );\n  }\n  if (!Number.isSafeInteger(product)) {\n    __tnWarnOnce(\n      \"[thru-net] Precision loss while polyfilling BigInt multiplication\"\n    );\n  }\n  return (product as unknown) as bigint;\n}\n\nfunction __tnCheckedDiv(lhs: bigint, rhs: bigint): bigint {\n  if (__tnBigIntEquals(rhs, __tnToBigInt(0))) {\n    __tnRaiseIrError(\"tn.ir.overflow\", \"IR runtime division by zero\");\n  }\n  if (__tnHasNativeBigInt) return (lhs as bigint) / (rhs as bigint);\n  const quotient = Math.floor((lhs as unknown as number) / (rhs as unknown as number));\n  return (quotient as unknown) as bigint;\n}\n\nfunction __tnCheckedMod(lhs: bigint, rhs: bigint): bigint {\n  if (__tnBigIntEquals(rhs, __tnToBigInt(0))) {\n    __tnRaiseIrError(\"tn.ir.overflow\", \"IR runtime modulo by zero\");\n  }\n  if (__tnHasNativeBigInt) return (lhs as bigint) % (rhs as bigint);\n  return (((lhs as unknown as number) % (rhs as unknown as number)) as unknown) as bigint;\n}\n\nfunction __tnBitwise(\n  lhs: bigint,\n  rhs: bigint,\n  op: \"and\" | \"or\" | \"xor\"\n): bigint {\n  if (__tnHasNativeBigInt) {\n    if (op === \"and\") return (lhs as bigint) & (rhs as bigint);\n    if (op === \"or\") return (lhs as bigint) | (rhs as bigint);\n    return (lhs as bigint) ^ (rhs as bigint);\n  }\n  const left = lhs as unknown as number;\n  const right = rhs as unknown as number;\n  const maxU32 = 0xffffffff;\n  if (\n    !Number.isInteger(left) ||\n    !Number.isInteger(right) ||\n    left < 0 ||\n    right < 0 ||\n    left > maxU32 ||\n    right > maxU32\n  ) {\n    __tnRaiseIrError(\n      \"tn.ir.overflow\",\n      \"IR runtime bitwise operation requires BigInt for values outside u32 range\"\n    );\n  }\n  const result = op === \"and\" ? left & right : op === \"or\" ? left | right : left ^ right;\n  return ((result >>> 0) as unknown) as bigint;\n}\n\nfunction __tnCheckedShift(\n  lhs: bigint,\n  rhs: bigint,\n  direction: \"left\" | \"right\"\n): bigint {\n  const amount = __tnBigIntToNumber(rhs, \"IR shift amount\");\n  if (amount < 0 || amount >= 64 || !Number.isInteger(amount)) {\n    __tnRaiseIrError(\"tn.ir.overflow\", \"IR runtime invalid shift amount\");\n  }\n  if (__tnHasNativeBigInt) {\n    const shift = BigInt(amount);\n    return direction === \"left\" ? (lhs as bigint) << shift : (lhs as bigint) >> shift;\n  }\n  const value = lhs as unknown as number;\n  const result = direction === \"left\" ? value * 2 ** amount : Math.floor(value / 2 ** amount);\n  if (!Number.isSafeInteger(result)) {\n    __tnWarnOnce(\"[thru-net] Precision loss while polyfilling BigInt shift\");\n  }\n  return (result as unknown) as bigint;\n}\n\nfunction __tnAlign(value: bigint, alignment: number): bigint {\n  if (alignment <= 1) return value;\n  const alignBig = __tnToBigInt(alignment);\n  if (__tnHasNativeBigInt) {\n    const remainder = value % alignBig;\n    if (__tnBigIntEquals(remainder, __tnToBigInt(0))) {\n      return value;\n    }\n    const delta = alignBig - remainder;\n    return __tnCheckedAdd(value, delta);\n  }\n  const current = __tnBigIntToNumber(value, \"IR align\");\n  const alignNum = alignment >>> 0;\n  const remainder = current % alignNum;\n  const next = remainder === 0 ? current : current + (alignNum - remainder);\n  return __tnToBigInt(next);\n}\n\nfunction __tnSplitUint64(value: bigint): { high: number; low: number } {\n  if (__tnHasNativeBigInt) {\n    const low = Number(value & (__tnMask32 as bigint));\n    const high = Number((value >> BigInt(32)) & (__tnMask32 as bigint));\n    return { high, low };\n  }\n  const num = __tnBigIntToNumber(value, \"DataView.setBigUint64\");\n  const low = num >>> 0;\n  const high = Math.floor(num / 4294967296) >>> 0;\n  return { high, low };\n}\n\nfunction __tnSplitInt64(value: bigint): { high: number; low: number } {\n  if (__tnHasNativeBigInt) {\n    const low = Number(value & (__tnMask32 as bigint));\n    let high = Number((value >> BigInt(32)) & (__tnMask32 as bigint));\n    if ((BigInt(high) & (__tnSignBit32 as bigint)) !== BigInt(0)) {\n      high -= 0x100000000;\n    }\n    return { high, low };\n  }\n  const num = __tnBigIntToNumber(value, \"DataView.setBigInt64\");\n  const low = num >>> 0;\n  const high = Math.floor(num / 4294967296);\n  return { high, low };\n}\n\nfunction __tnPolyfillReadUint64(\n  view: DataView,\n  offset: number,\n  littleEndian: boolean\n): bigint {\n  const low = littleEndian\n    ? view.getUint32(offset, true)\n    : view.getUint32(offset + 4, false);\n  const high = littleEndian\n    ? view.getUint32(offset + 4, true)\n    : view.getUint32(offset, false);\n  if (__tnHasNativeBigInt) {\n    return (BigInt(high) << BigInt(32)) | BigInt(low);\n  }\n  const value = high * 4294967296 + low;\n  if (!Number.isSafeInteger(value)) {\n    __tnWarnOnce(\n      \"[thru-net] Precision loss while polyfilling DataView.getBigUint64\"\n    );\n  }\n  return (value as unknown) as bigint;\n}\n\nfunction __tnPolyfillReadInt64(\n  view: DataView,\n  offset: number,\n  littleEndian: boolean\n): bigint {\n  const low = littleEndian\n    ? view.getUint32(offset, true)\n    : view.getUint32(offset + 4, false);\n  const high = littleEndian\n    ? view.getInt32(offset + 4, true)\n    : view.getInt32(offset, false);\n  if (__tnHasNativeBigInt) {\n    return (BigInt(high) << BigInt(32)) | BigInt(low);\n  }\n  const value = high * 4294967296 + low;\n  if (!Number.isSafeInteger(value)) {\n    __tnWarnOnce(\n      \"[thru-net] Precision loss while polyfilling DataView.getBigInt64\"\n    );\n  }\n  return (value as unknown) as bigint;\n}\n\nfunction __tnPolyfillWriteUint64(\n  view: DataView,\n  offset: number,\n  value: bigint,\n  littleEndian: boolean\n): void {\n  const parts = __tnSplitUint64(value);\n  if (littleEndian) {\n    view.setUint32(offset, parts.low, true);\n    view.setUint32(offset + 4, parts.high, true);\n  } else {\n    view.setUint32(offset, parts.high, false);\n    view.setUint32(offset + 4, parts.low, false);\n  }\n}\n\nfunction __tnPolyfillWriteInt64(\n  view: DataView,\n  offset: number,\n  value: bigint,\n  littleEndian: boolean\n): void {\n  const parts = __tnSplitInt64(value);\n  if (littleEndian) {\n    view.setUint32(offset, parts.low >>> 0, true);\n    view.setInt32(offset + 4, parts.high | 0, true);\n  } else {\n    view.setInt32(offset, parts.high | 0, false);\n    view.setUint32(offset + 4, parts.low >>> 0, false);\n  }\n}\n\nif (typeof DataView !== \"undefined\" && !__tnHasBigIntDataView) {\n  const proto = DataView.prototype as unknown as Record<string, unknown>;\n  if (typeof proto.getBigUint64 !== \"function\") {\n    (proto as any).getBigUint64 = function (\n      offset: number,\n      littleEndian?: boolean\n    ): bigint {\n      __tnWarnOnce(\n        \"[thru-net] Polyfilling DataView.getBigUint64; precision may be lost\"\n      );\n      return __tnPolyfillReadUint64(this, offset, !!littleEndian);\n    };\n  }\n  if (typeof proto.getBigInt64 !== \"function\") {\n    (proto as any).getBigInt64 = function (\n      offset: number,\n      littleEndian?: boolean\n    ): bigint {\n      __tnWarnOnce(\n        \"[thru-net] Polyfilling DataView.getBigInt64; precision may be lost\"\n      );\n      return __tnPolyfillReadInt64(this, offset, !!littleEndian);\n    };\n  }\n  if (typeof proto.setBigUint64 !== \"function\") {\n    (proto as any).setBigUint64 = function (\n      offset: number,\n      value: bigint,\n      littleEndian?: boolean\n    ): void {\n      __tnWarnOnce(\n        \"[thru-net] Polyfilling DataView.setBigUint64; precision may be lost\"\n      );\n      __tnPolyfillWriteUint64(this, offset, value, !!littleEndian);\n    };\n  }\n  if (typeof proto.setBigInt64 !== \"function\") {\n    (proto as any).setBigInt64 = function (\n      offset: number,\n      value: bigint,\n      littleEndian?: boolean\n    ): void {\n      __tnWarnOnce(\n        \"[thru-net] Polyfilling DataView.setBigInt64; precision may be lost\"\n      );\n      __tnPolyfillWriteInt64(this, offset, value, !!littleEndian);\n    };\n  }\n  if (!__tnHasNativeBigInt) {\n    __tnWarnOnce(\n      \"[thru-net] BigInt is unavailable; falling back to lossy 64-bit polyfill\"\n    );\n  }\n}\n\nconst __tnFootprintRegistry: Record<\n  string,\n  (params: Record<string, bigint>) => bigint\n> = {};\nconst __tnValidateRegistry: Record<\n  string,\n  (buffer: Uint8Array, params: Record<string, bigint>) => __TnValidateResult\n> = {};\nconst __tnDynamicValidateRegistry: Record<\n  string,\n  (buffer: Uint8Array) => __TnValidateResult\n> = {};\n\nfunction __tnRegisterFootprint(\n  typeName: string,\n  fn: (params: Record<string, bigint>) => bigint\n): void {\n  __tnFootprintRegistry[typeName] = fn;\n}\n\nfunction __tnRegisterValidate(\n  typeName: string,\n  fn: (buffer: Uint8Array, params: Record<string, bigint>) => __TnValidateResult\n): void {\n  __tnValidateRegistry[typeName] = fn;\n}\n\nfunction __tnRegisterDynamicValidate(\n  typeName: string,\n  fn: (buffer: Uint8Array) => __TnValidateResult\n): void {\n  __tnDynamicValidateRegistry[typeName] = fn;\n}\n\nfunction __tnInvokeFootprint(\n  typeName: string,\n  params: Record<string, bigint>\n): bigint {\n  const fn = __tnFootprintRegistry[typeName];\n  if (!fn) throw new Error(`IR runtime missing footprint for ${typeName}`);\n  return fn(params);\n}\n\nfunction __tnInvokeValidate(\n  typeName: string,\n  buffer: Uint8Array,\n  params: Record<string, bigint>\n): __TnValidateResult {\n  const fn = __tnValidateRegistry[typeName];\n  if (!fn) throw new Error(`IR runtime missing validate helper for ${typeName}`);\n  return fn(buffer, params);\n}\n\nfunction __tnInvokeDynamicValidate(\n  typeName: string,\n  buffer: Uint8Array\n): __TnValidateResult {\n  const fn = __tnDynamicValidateRegistry[typeName];\n  if (!fn) throw new Error(`IR runtime missing dynamic validate helper for ${typeName}`);\n  return fn(buffer);\n}\n\nfunction __tnEvalFootprint(node: __TnIrNode, ctx: __TnIrContext): bigint {\n  return __tnEvalIrNode(node, ctx, __tnToBigInt(0));\n}\n\nfunction __tnTryEvalFootprint(\n  node: __TnIrNode,\n  ctx: __TnIrContext\n): __TnEvalResult {\n  return __tnTryEvalIr(node, ctx);\n}\n\nfunction __tnTryEvalIr(\n  node: __TnIrNode,\n  ctx: __TnIrContext\n): __TnEvalResult {\n  try {\n    return { ok: true, value: __tnEvalIrNode(node, ctx, __tnToBigInt(0)) };\n  } catch (err) {\n    return { ok: false, code: __tnNormalizeIrError(err) };\n  }\n}\n\nfunction __tnIsEvalError(result: __TnEvalResult): result is { ok: false; code: string } {\n  return result.ok === false;\n}\n\nfunction __tnValidateIrTree(\n  ir: { readonly typeName: string; readonly root: __TnIrNode },\n  buffer: Uint8Array,\n  params: Record<string, bigint>\n): __TnValidateResult {\n  const evalResult = __tnTryEvalIr(ir.root, {\n    params,\n    buffer,\n    typeName: ir.typeName,\n  });\n  if (__tnIsEvalError(evalResult)) {\n    return { ok: false, code: evalResult.code };\n  }\n  const required = evalResult.value;\n  const available = __tnToBigInt(buffer.length);\n  if (__tnBigIntGreaterThan(required, available)) {\n    return { ok: false, code: \"tn.buffer_too_small\", consumed: required };\n  }\n  return { ok: true, consumed: required };\n}\n\nfunction __tnEvalIrNode(\n  node: __TnIrNode,\n  ctx: __TnIrContext,\n  baseOffset: bigint\n): bigint {\n  switch (node.op) {\n    case \"zero\":\n      return __tnToBigInt(0);\n    case \"const\":\n      return node.value;\n    case \"field\": {\n      if (node.param === \"__buffer_size\" && ctx.buffer) {\n        return __tnToBigInt(ctx.buffer.length);\n      }\n      const val = ctx.params[node.param];\n      if (val === undefined) {\n        const prefix = ctx.typeName ? `${ctx.typeName}: ` : \"\";\n        __tnRaiseIrError(\n          \"tn.ir.missing_param\",\n          `${prefix}Missing IR parameter '${node.param}'`\n        );\n      }\n      return val;\n    }\n    case \"add\":\n      {\n        const left = __tnEvalIrNode(node.left, ctx, baseOffset);\n        const right = __tnEvalIrNode(\n          node.right,\n          ctx,\n          __tnCheckedAdd(baseOffset, left)\n        );\n        return __tnCheckedAdd(left, right);\n      }\n    case \"sub\":\n      return __tnCheckedSub(\n        __tnEvalIrNode(node.left, ctx, baseOffset),\n        __tnEvalIrNode(node.right, ctx, baseOffset)\n      );\n    case \"mul\":\n      return __tnCheckedMul(\n        __tnEvalIrNode(node.left, ctx, baseOffset),\n        __tnEvalIrNode(node.right, ctx, baseOffset)\n      );\n    case \"div\":\n      return __tnCheckedDiv(\n        __tnEvalIrNode(node.left, ctx, baseOffset),\n        __tnEvalIrNode(node.right, ctx, baseOffset)\n      );\n    case \"mod\":\n      return __tnCheckedMod(\n        __tnEvalIrNode(node.left, ctx, baseOffset),\n        __tnEvalIrNode(node.right, ctx, baseOffset)\n      );\n    case \"bitAnd\":\n      return __tnBitwise(\n        __tnEvalIrNode(node.left, ctx, baseOffset),\n        __tnEvalIrNode(node.right, ctx, baseOffset),\n        \"and\"\n      );\n    case \"bitOr\":\n      return __tnBitwise(\n        __tnEvalIrNode(node.left, ctx, baseOffset),\n        __tnEvalIrNode(node.right, ctx, baseOffset),\n        \"or\"\n      );\n    case \"bitXor\":\n      return __tnBitwise(\n        __tnEvalIrNode(node.left, ctx, baseOffset),\n        __tnEvalIrNode(node.right, ctx, baseOffset),\n        \"xor\"\n      );\n    case \"leftShift\":\n      return __tnCheckedShift(\n        __tnEvalIrNode(node.left, ctx, baseOffset),\n        __tnEvalIrNode(node.right, ctx, baseOffset),\n        \"left\"\n      );\n    case \"rightShift\":\n      return __tnCheckedShift(\n        __tnEvalIrNode(node.left, ctx, baseOffset),\n        __tnEvalIrNode(node.right, ctx, baseOffset),\n        \"right\"\n      );\n    case \"align\":\n      return __tnAlign(__tnEvalIrNode(node.node, ctx, baseOffset), node.alignment);\n    case \"switch\": {\n      const tagVal = ctx.params[node.tag];\n      if (tagVal === undefined) {\n        const prefix = ctx.typeName ? `${ctx.typeName}: ` : \"\";\n        __tnRaiseIrError(\n          \"tn.ir.missing_param\",\n          `${prefix}Missing IR switch tag '${node.tag}'`\n        );\n      }\n      const tagNumber = Number(tagVal);\n      for (const caseNode of node.cases) {\n        if (caseNode.value === tagNumber) {\n          return __tnEvalIrNode(caseNode.node, ctx, baseOffset);\n        }\n      }\n      if (node.default) return __tnEvalIrNode(node.default, ctx, baseOffset);\n      __tnRaiseIrError(\n        \"tn.ir.invalid_tag\",\n        `Unhandled IR switch value ${tagNumber} for '${node.tag}'`\n      );\n    }\n    case \"call\": {\n      const nestedParams: Record<string, bigint> = Object.create(null);\n      for (const arg of node.args) {\n        const val = ctx.params[arg.source];\n        if (val === undefined) {\n          const prefix = ctx.typeName ? `${ctx.typeName}: ` : \"\";\n          __tnRaiseIrError(\n            \"tn.ir.missing_param\",\n            `${prefix}Missing IR parameter '${arg.source}' for nested call`\n          );\n        }\n        nestedParams[arg.name] = val;\n      }\n      if (ctx.buffer) {\n        const nestedOffset = __tnBigIntToNumber(baseOffset, \"IR nested offset\");\n        const nestedResult = __tnInvokeValidate(\n          node.typeName,\n          ctx.buffer.subarray(nestedOffset),\n          nestedParams\n        );\n        if (!nestedResult.ok) {\n          const nestedCode =\n            nestedResult.code ?? `tn.ir.runtime_error: ${node.typeName}`;\n          const prefixed = nestedCode.startsWith(\"tn.\")\n            ? nestedCode\n            : `tn.ir.runtime_error: ${node.typeName} -> ${nestedCode}`;\n          __tnRaiseIrError(\n            prefixed,\n            `Nested validator ${node.typeName} failed`\n          );\n        }\n        if (nestedResult.consumed !== undefined) {\n          return nestedResult.consumed;\n        }\n      }\n      return __tnInvokeFootprint(node.typeName, nestedParams);\n    }\n    case \"sumOverArray\": {\n      if (!ctx.buffer) {\n        __tnRaiseIrError(\n          \"tn.ir.missing_buffer\",\n          `Jagged array '${node.fieldName}' requires buffer-backed validation`\n        );\n      }\n      const count = __tnBigIntToNumber(\n        __tnEvalIrNode(node.count, ctx, baseOffset),\n        `Jagged array '${node.fieldName}' count`\n      );\n      let cursor = __tnBigIntToNumber(baseOffset, \"IR jagged array offset\");\n      let total = __tnToBigInt(0);\n      for (let i = 0; i < count; i++) {\n        const result = __tnInvokeDynamicValidate(\n          node.elementTypeName,\n          ctx.buffer.subarray(cursor)\n        );\n        if (!result.ok || result.consumed === undefined) {\n          const code = result.code ?? \"tn.ir.runtime_error\";\n          __tnRaiseIrError(\n            code,\n            `Jagged array '${node.fieldName}' element ${i} failed validation`\n          );\n        }\n        cursor += __tnBigIntToNumber(result.consumed, \"IR jagged element size\");\n        total = __tnCheckedAdd(total, result.consumed);\n      }\n      return total;\n    }\n    default:\n      __tnRaiseIrError(\n        \"tn.ir.runtime_error\",\n        `Unsupported IR node ${(node as { op: string }).op}`\n      );\n  }\n}\n\nfunction __tnNormalizeIrError(err: unknown): string {\n  if (err && typeof err === \"object\" && \"code\" in err) {\n    const maybeCode = (err as { code?: string }).code;\n    if (typeof maybeCode === \"string\" && maybeCode.length > 0) {\n      return maybeCode;\n    }\n  }\n  const message =\n    err && typeof err === \"object\" && \"message\" in err\n      ? String((err as { message?: unknown }).message ?? \"\")\n      : typeof err === \"string\"\n      ? err\n      : \"\";\n  if (message.includes(\"Missing IR parameter\")) return \"tn.ir.missing_param\";\n  if (message.includes(\"Unhandled IR switch value\")) return \"tn.ir.invalid_tag\";\n  if (\n    message.includes(\"invalid\") ||\n    message.includes(\"overflow\") ||\n    message.includes(\"negative size\")\n  ) {\n    return \"tn.ir.overflow\";\n  }\n  if (message.length > 0) return `tn.ir.runtime_error: ${message}`;\n  return \"tn.ir.runtime_error\";\n}\n\n__tnRegisterFootprint(\"InstructionData\", (params) => InstructionData.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"InstructionData\", (buffer, params) => InstructionData.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"InstructionData\", (buffer) => { const result = InstructionData.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n\n/* ----- TYPE DEFINITION FOR MulticallArgs ----- */\n\nconst __tn_ir_MulticallArgs = {\n  typeName: \"MulticallArgs\",\n  root: { op: \"align\", alignment: 1, node: { op: \"add\", left: { op: \"align\", alignment: 2, node: { op: \"const\", value: 2n } }, right: { op: \"align\", alignment: 1, node: { op: \"sumOverArray\", count: { op: \"field\", param: \"calls.calls_count\" }, elementTypeName: \"InstructionData\", fieldName: \"calls\" } } } }\n} as const;\n\nexport class MulticallArgs {\n  private view: DataView;\n  private __tnFieldContext: Record<string, number | bigint> | null = null;\n  private __tnParams: MulticallArgs.Params;\n\n  private constructor(private buffer: Uint8Array, params?: MulticallArgs.Params, fieldContext?: Record<string, number | bigint>) {\n    this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    this.__tnFieldContext = fieldContext ?? null;\n    if (params) {\n      this.__tnParams = params;\n    } else {\n      const derived = MulticallArgs.__tnExtractParams(this.view, buffer);\n      if (!derived) {\n        throw new Error(\"MulticallArgs: failed to derive dynamic parameters\");\n      }\n      this.__tnParams = derived.params;\n    }\n  }\n\n  static __tnCreateView(buffer: Uint8Array, opts?: { params?: MulticallArgs.Params, fieldContext?: Record<string, number | bigint> }): MulticallArgs {\n    if (!buffer || buffer.length === undefined) throw new Error(\"MulticallArgs.__tnCreateView requires a Uint8Array\");\n    let params = opts?.params ?? null;\n    if (!params) {\n      const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n      const derived = MulticallArgs.__tnExtractParams(view, buffer);\n      if (!derived) throw new Error(\"MulticallArgs.__tnCreateView: failed to derive params\");\n      params = derived.params;\n    }\n    const instance = new MulticallArgs(new Uint8Array(buffer), params, opts?.fieldContext);\n    return instance;\n  }\n\n  dynamicParams(): MulticallArgs.Params {\n    return this.__tnParams;\n  }\n\n  withFieldContext(context: Record<string, number | bigint>): this {\n    this.__tnFieldContext = context;\n    return this;\n  }\n\n  private __tnResolveFieldRef(path: string): number {\n    const getterName = `get_${path.replace(/[.]/g, '_')}`;\n    const getter = (this as any)[getterName];\n    if (typeof getter === \"function\") {\n      const value = getter.call(this);\n      return typeof value === \"bigint\" ? __tnBigIntToNumber(value, \"MulticallArgs::__tnResolveFieldRef\") : value;\n    }\n    if (this.__tnFieldContext && Object.prototype.hasOwnProperty.call(this.__tnFieldContext, path)) {\n      const contextValue = this.__tnFieldContext[path];\n      return typeof contextValue === \"bigint\" ? __tnBigIntToNumber(contextValue, \"MulticallArgs::__tnResolveFieldRef\") : contextValue;\n    }\n    throw new Error(\"MulticallArgs: field reference '\" + path + \"' is not available; provide fieldContext when creating this view\");\n  }\n\n  static builder(): MulticallArgsBuilder {\n    return new MulticallArgsBuilder();\n  }\n\n  static fromBuilder(builder: MulticallArgsBuilder): MulticallArgs | null {\n    const buffer = builder.build();\n    const params = builder.dynamicParams();\n    return MulticallArgs.from_array(buffer, { params });\n  }\n\n  private static __tnExtractParams(view: DataView, buffer: Uint8Array): { params: MulticallArgs.Params; derived: Record<string, bigint> | null } | null {\n    if (buffer.length < 2) {\n      return null;\n    }\n    const __tnParam_calls_calls_count = __tnToBigInt(view.getUint16(0, true));\n    const __tnExtractedParams = MulticallArgs.Params.fromValues({\n      calls_calls_count: __tnParam_calls_calls_count,\n    });\n    return { params: __tnExtractedParams, derived: null };\n  }\n\n  get_calls_count(): number {\n    const offset = 0;\n    return this.view.getUint16(offset, true); /* little-endian */\n  }\n\n  set_calls_count(value: number): void {\n    const offset = 0;\n    this.view.setUint16(offset, value, true); /* little-endian */\n  }\n\n  get calls_count(): number {\n    return this.get_calls_count();\n  }\n\n  set calls_count(value: number) {\n    this.set_calls_count(value);\n  }\n\n  /** Returns the number of elements in the jagged array. */\n  get_calls_length(): number {\n    return this.__tnResolveFieldRef(\"calls_count\");\n  }\n\n  /** Returns the element at the given index, or null if out of bounds.\n   * Note: This is O(n) as jagged arrays require sequential traversal. */\n  get_calls_at(index: number): InstructionData | null {\n    const count = this.get_calls_length();\n    if (index < 0 || index >= count) {\n      return null;\n    }\n    const offset = 2;\n    let cursor = offset;\n    for (let i = 0; i < index; i++) {\n      const elem = InstructionData.from_array(this.buffer.subarray(cursor));\n      if (!elem) {\n        throw new Error(\"MulticallArgs: invalid element at index \" + i + \" in jagged array 'calls'\");\n      }\n      const validation = InstructionData.validate(this.buffer.subarray(cursor));\n      if (!validation.ok || validation.consumed === undefined) {\n        throw new Error(\"MulticallArgs: failed to get footprint for element at index \" + i);\n      }\n      cursor += validation.consumed;\n    }\n    return InstructionData.from_array(this.buffer.subarray(cursor));\n  }\n\n  /** Returns a generator over the jagged array elements.\n   * This is more efficient than repeated calls to `get_calls_at()` for sequential access. */\n  *callsIter(): Generator<InstructionData, void, unknown> {\n    const count = this.get_calls_length();\n    const offset = 2;\n    let cursor = offset;\n    for (let i = 0; i < count; i++) {\n      const elem = InstructionData.from_array(this.buffer.subarray(cursor));\n      if (!elem) {\n        throw new Error(\"MulticallArgs: invalid element at index \" + i + \" in jagged array 'calls'\");\n      }\n      yield elem;\n      const validation = InstructionData.validate(this.buffer.subarray(cursor));\n      if (!validation.ok || validation.consumed === undefined) {\n        throw new Error(\"MulticallArgs: failed to get footprint for element at index \" + i);\n      }\n      cursor += validation.consumed;\n    }\n  }\n\n  get_calls(): InstructionData[] {\n    return Array.from(this.callsIter());\n  }\n\n  set_calls(_value: InstructionData[]): void {\n    throw new Error(\"MulticallArgs: jagged array 'calls' cannot be set in-place\");\n  }\n\n  /** Returns the total byte size of all elements in the jagged array. */\n  get_calls_size(): number {\n    const count = this.get_calls_length();\n    const offset = 2;\n    let cursor = offset;\n    for (let i = 0; i < count; i++) {\n      const elem = InstructionData.from_array(this.buffer.subarray(cursor));\n      if (!elem) {\n        throw new Error(\"MulticallArgs: invalid element at index \" + i + \" in jagged array 'calls'\");\n      }\n      const validation = InstructionData.validate(this.buffer.subarray(cursor));\n      if (!validation.ok || validation.consumed === undefined) {\n        throw new Error(\"MulticallArgs: failed to get footprint for element at index \" + i);\n      }\n      cursor += validation.consumed;\n    }\n    return cursor - offset;\n  }\n\n  get calls(): InstructionData[] {\n    return this.get_calls();\n  }\n\n  set calls(value: InstructionData[]) {\n    this.set_calls(value);\n  }\n  private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n    return __tnEvalFootprint(__tn_ir_MulticallArgs.root, { params: __tnParams });\n  }\n\n  private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n    return __tnValidateIrTree(__tn_ir_MulticallArgs, buffer, __tnParams);\n  }\n\n  static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n    return this.__tnFootprintInternal(__tnParams);\n  }\n\n  static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n    return this.__tnValidateInternal(buffer, __tnParams);\n  }\n\n  static footprintIr(calls_calls_count: number | bigint): bigint {\n    const params = MulticallArgs.Params.fromValues({\n      calls_calls_count: calls_calls_count,\n    });\n    return this.footprintIrFromParams(params);\n  }\n\n  private static __tnPackParams(params: MulticallArgs.Params): Record<string, bigint> {\n    const record: Record<string, bigint> = Object.create(null);\n    record[\"calls.calls_count\"] = params.calls_calls_count;\n    return record;\n  }\n\n  static footprintIrFromParams(params: MulticallArgs.Params): bigint {\n    const __tnParams = this.__tnPackParams(params);\n    return this.__tnFootprintInternal(__tnParams);\n  }\n\n  static footprintFromParams(params: MulticallArgs.Params): number {\n    const irResult = this.footprintIrFromParams(params);\n    const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n    if (__tnBigIntGreaterThan(irResult, maxSafe)) throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for MulticallArgs');\n    return __tnBigIntToNumber(irResult, 'MulticallArgs::footprintFromParams');\n  }\n\n  static footprintFromValues(input: { calls_calls_count: number | bigint }): number {\n    const params = MulticallArgs.params(input);\n    return this.footprintFromParams(params);\n  }\n\n  static footprint(params: MulticallArgs.Params): number {\n    return this.footprintFromParams(params);\n  }\n\n  static validate(buffer: Uint8Array, opts?: { params?: MulticallArgs.Params }): { ok: boolean; code?: string; consumed?: number; params?: MulticallArgs.Params } {\n    if (!buffer || buffer.length === undefined) {\n      return { ok: false, code: \"tn.invalid_buffer\" };\n    }\n    const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    let params = opts?.params ?? null;\n    if (!params) {\n      const extracted = this.__tnExtractParams(view, buffer);\n      if (!extracted) return { ok: false, code: \"tn.param_extraction_failed\" };\n      params = extracted.params;\n    }\n    const __tnParamsRec = this.__tnPackParams(params);\n    const irResult = this.__tnValidateInternal(buffer, __tnParamsRec);\n    if (!irResult.ok) {\n      return { ok: false, code: irResult.code, consumed: irResult.consumed ? __tnBigIntToNumber(irResult.consumed, 'MulticallArgs::validate') : undefined, params };\n    }\n    const consumed = irResult.consumed ? __tnBigIntToNumber(irResult.consumed, 'MulticallArgs::validate') : undefined;\n    return { ok: true, consumed, params };\n  }\n\n  static from_array(buffer: Uint8Array, opts?: { params?: MulticallArgs.Params }): MulticallArgs | null {\n    if (!buffer || buffer.length === undefined) {\n      return null;\n    }\n    const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    let params = opts?.params ?? null;\n    if (!params) {\n      const derived = this.__tnExtractParams(view, buffer);\n      if (!derived) return null;\n      params = derived.params;\n    }\n    const validation = this.validate(buffer, { params });\n    if (!validation.ok) {\n      return null;\n    }\n    const cached = validation.params ?? params;\n    const state = new MulticallArgs(buffer, cached);\n    return state;\n  }\n\n\n}\n\nexport namespace MulticallArgs {\n  export type Params = {\n    /** ABI path: calls.calls_count */\n    readonly calls_calls_count: bigint;\n  };\n\n  export const ParamKeys = Object.freeze({\n    calls_calls_count: \"calls.calls_count\",\n  } as const);\n\n  export const Params = {\n    fromValues(input: { calls_calls_count: number | bigint }): Params {\n      return {\n        calls_calls_count: __tnToBigInt(input.calls_calls_count),\n      };\n    },\n    fromBuilder(source: { dynamicParams(): Params } | { params: Params } | Params): Params {\n      if ((source as { dynamicParams?: () => Params }).dynamicParams) {\n        return (source as { dynamicParams(): Params }).dynamicParams();\n      }\n      if ((source as { params?: Params }).params) {\n        return (source as { params: Params }).params;\n      }\n      return source as Params;\n    }\n  };\n\n  export function params(input: { calls_calls_count: number | bigint }): Params {\n    return Params.fromValues(input);\n  }\n}\n\nexport class MulticallArgsBuilder {\n  private buffer: Uint8Array;\n  private view: DataView;\n  private __tnJagged_calls: Uint8Array[] | null = null;\n  private __tnCachedParams: MulticallArgs.Params | null = null;\n  private __tnLastBuffer: Uint8Array | null = null;\n  private __tnLastParams: MulticallArgs.Params | null = null;\n\n  constructor() {\n    this.buffer = new Uint8Array(2);\n    this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n  }\n\n  private __tnInvalidate(): void {\n    this.__tnCachedParams = null;\n    this.__tnLastBuffer = null;\n    this.__tnLastParams = null;\n  }\n\n  set_calls_count(value: number): this {\n    this.view.setUint16(0, value, true);\n    this.__tnInvalidate();\n    return this;\n  }\n\n  set_calls(values: readonly (InstructionData | __TnStructFieldInput)[]): this {\n    const fragments: Uint8Array[] = [];\n    for (let i = 0; i < values.length; i++) {\n      const bytes = __tnResolveStructFieldInput(values[i] as __TnStructFieldInput, \"MulticallArgsBuilder::calls[\" + i + \"]\");\n      const validation = __tnInvokeDynamicValidate(\"InstructionData\", bytes);\n      if (!validation.ok || validation.consumed === undefined) throw new Error(\"MulticallArgsBuilder: field 'calls' element failed validation\");\n      if (__tnBigIntToNumber(validation.consumed, \"MulticallArgsBuilder::calls\") !== bytes.length) throw new Error(\"MulticallArgsBuilder: field 'calls' element validation did not consume the full buffer\");\n      fragments.push(bytes);\n    }\n    this.__tnJagged_calls = fragments;\n    this.set_calls_count(fragments.length);\n    this.__tnInvalidate();\n    return this;\n  }\n\n  build(): Uint8Array {\n    const params = this.__tnComputeParams();\n    const fragments = this.__tnCollectFragments();\n    const size = this.__tnComputeSize(fragments);\n    const buffer = new Uint8Array(size);\n    this.__tnWriteInto(buffer, fragments);\n    this.__tnValidateOrThrow(buffer, params);\n    return buffer;\n  }\n\n  buildInto(target: Uint8Array, offset = 0): Uint8Array {\n    const params = this.__tnComputeParams();\n    const fragments = this.__tnCollectFragments();\n    const size = this.__tnComputeSize(fragments);\n    if (target.length - offset < size) throw new Error(\"MulticallArgsBuilder: target buffer too small\");\n    const slice = target.subarray(offset, offset + size);\n    this.__tnWriteInto(slice, fragments);\n    this.__tnValidateOrThrow(slice, params);\n    return target;\n  }\n\n  finish(): MulticallArgs {\n    const buffer = this.build();\n    const params = this.__tnLastParams ?? this.__tnComputeParams();\n    const view = MulticallArgs.from_array(buffer, { params });\n    if (!view) throw new Error(\"MulticallArgsBuilder: failed to finalize view\");\n    return view;\n  }\n\n  finishView(): MulticallArgs {\n    return this.finish();\n  }\n\n  dynamicParams(): MulticallArgs.Params {\n    return this.__tnComputeParams();\n  }\n\n  private __tnComputeParams(): MulticallArgs.Params {\n    if (this.__tnCachedParams) return this.__tnCachedParams;\n    const params = MulticallArgs.Params.fromValues({\n      calls_calls_count: (() => { const fragments = this.__tnJagged_calls; if (!fragments) throw new Error(\"MulticallArgsBuilder: field 'calls' must be written before computing params\"); return __tnToBigInt(fragments.length); })(),\n    });\n    this.__tnCachedParams = params;\n    return params;\n  }\n\n  private __tnCollectFragments(): Uint8Array[] {\n    const fragments = this.__tnJagged_calls;\n    if (!fragments) throw new Error(\"MulticallArgsBuilder: field 'calls' must be written before build\");\n    return fragments;\n  }\n\n  private __tnComputeSize(fragments: readonly Uint8Array[]): number {\n    let total = this.buffer.length;\n    for (const fragment of fragments) total += fragment.length;\n    return total;\n  }\n\n  private __tnWriteInto(target: Uint8Array, fragments: readonly Uint8Array[]): void {\n    target.set(this.buffer, 0);\n    let cursor = this.buffer.length;\n    for (const fragment of fragments) {\n      target.set(fragment, cursor);\n      cursor += fragment.length;\n    }\n  }\n\n  private __tnValidateOrThrow(buffer: Uint8Array, params: MulticallArgs.Params): void {\n    const result = MulticallArgs.validate(buffer, { params });\n    if (!result.ok) {\n      throw new Error(`${ MulticallArgs }Builder: builder produced invalid buffer (code=${result.code ?? \"unknown\"})`);\n    }\n    this.__tnLastParams = result.params ?? params;\n    this.__tnLastBuffer = buffer;\n  }\n}\n\n__tnRegisterFootprint(\"MulticallArgs\", (params) => MulticallArgs.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"MulticallArgs\", (buffer, params) => MulticallArgs.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"MulticallArgs\", (buffer) => { const result = MulticallArgs.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n\n/* ----- TYPE DEFINITION FOR MulticallError ----- */\n\nconst __tn_ir_MulticallError = {\n  typeName: \"MulticallError\",\n  root: { op: \"const\", value: 8n }\n} as const;\n\nexport class MulticallError {\n  private view: DataView;\n\n  private constructor(private buffer: Uint8Array) {\n    this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n  }\n\n  static __tnCreateView(buffer: Uint8Array, opts?: { fieldContext?: Record<string, number | bigint> }): MulticallError {\n    if (!buffer || buffer.length === undefined) throw new Error(\"MulticallError.__tnCreateView requires a Uint8Array\");\n    return new MulticallError(new Uint8Array(buffer));\n  }\n\n  static builder(): MulticallErrorBuilder {\n    return new MulticallErrorBuilder();\n  }\n\n  static fromBuilder(builder: MulticallErrorBuilder): MulticallError | null {\n    const buffer = builder.build();\n    return MulticallError.from_array(buffer);\n  }\n\n  get_code(): bigint {\n    const offset = 0;\n    return this.view.getBigUint64(offset, true); /* little-endian */\n  }\n\n  set_code(value: bigint): void {\n    const offset = 0;\n    this.view.setBigUint64(offset, value, true); /* little-endian */\n  }\n\n  get code(): bigint {\n    return this.get_code();\n  }\n\n  set code(value: bigint) {\n    this.set_code(value);\n  }\n\n  private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n    return __tnEvalFootprint(__tn_ir_MulticallError.root, { params: __tnParams });\n  }\n\n  private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n    return __tnValidateIrTree(__tn_ir_MulticallError, buffer, __tnParams);\n  }\n\n  static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n    return this.__tnFootprintInternal(__tnParams);\n  }\n\n  static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n    return this.__tnValidateInternal(buffer, __tnParams);\n  }\n\n  static footprintIr(): bigint {\n    return this.__tnFootprintInternal(Object.create(null));\n  }\n\n  static footprint(): number {\n    const irResult = this.footprintIr();\n      const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n    if (__tnBigIntGreaterThan(irResult, maxSafe)) {\n      throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for MulticallError');\n    }\n    return __tnBigIntToNumber(irResult, 'MulticallError::footprint');\n  }\n\n  static validate(buffer: Uint8Array, _opts?: { params?: never }): { ok: boolean; code?: string; consumed?: number } {\n    if (buffer.length < 8) return { ok: false, code: \"tn.buffer_too_small\", consumed: 8 };\n    return { ok: true, consumed: 8 };\n  }\n\n  static new(code: bigint): MulticallError {\n    const buffer = new Uint8Array(8);\n    const view = new DataView(buffer.buffer);\n\n    let offset = 0;\n    view.setBigUint64(0, code, true); /* code (little-endian) */\n\n    return new MulticallError(buffer);\n  }\n\n  static from_array(buffer: Uint8Array): MulticallError | null {\n    if (!buffer || buffer.length === undefined) {\n      return null;\n    }\n    const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    const validation = this.validate(buffer);\n    if (!validation.ok) {\n      return null;\n    }\n    return new MulticallError(buffer);\n  }\n\n}\n\nexport class MulticallErrorBuilder {\n  private buffer: Uint8Array;\n  private view: DataView;\n\n  constructor() {\n    this.buffer = new Uint8Array(8);\n    this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n  }\n\n  set_code(value: bigint): this {\n    const cast = __tnToBigInt(value);\n    this.view.setBigUint64(0, cast, true);\n    return this;\n  }\n\n  build(): Uint8Array {\n    return this.buffer.slice();\n  }\n\n  buildInto(target: Uint8Array, offset = 0): Uint8Array {\n    if (target.length - offset < this.buffer.length) throw new Error(\"target buffer too small\");\n    target.set(this.buffer, offset);\n    return target;\n  }\n\n  finish(): MulticallError {\n    const view = MulticallError.from_array(this.buffer.slice());\n    if (!view) throw new Error(\"failed to build MulticallError\");\n    return view;\n  }\n}\n\n__tnRegisterFootprint(\"MulticallError\", (params) => MulticallError.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"MulticallError\", (buffer, params) => MulticallError.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"MulticallError\", (buffer) => { const result = MulticallError.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n","import { decodeAddress, encodeAddress } from '@thru/sdk/helpers';\nimport { MULTICALL_PROGRAM_ADDRESS } from '../../../../src/core-program-addresses';\nexport { MULTICALL_PROGRAM_ADDRESS };\nimport { systemProgramPubkey } from '../utils/helpers';\nimport {\n  InstructionData,\n  InstructionDataBuilder,\n} from './abi/thru/common/primitives/types';\nimport {\n  MulticallArgs,\n  MulticallArgsBuilder,\n} from './abi/thru/program/multicall/types';\n\nexport {\n  InstructionData,\n  InstructionDataBuilder,\n} from './abi/thru/common/primitives/types';\nexport {\n  MulticallArgs,\n  MulticallArgsBuilder,\n  MulticallError,\n} from './abi/thru/program/multicall/types';\n\nexport type MulticallCall = {\n  programIdx: number;\n  instructionData: Uint8Array;\n};\n\n/** Genesis Multicall remains available on networks that do not run bootstrap. */\nexport const GENESIS_MULTICALL_PROGRAM_PUBKEY = systemProgramPubkey(0x09);\nexport const GENESIS_MULTICALL_PROGRAM_ADDRESS = encodeAddress(\n  GENESIS_MULTICALL_PROGRAM_PUBKEY,\n);\n\n\nexport const MULTICALL_PROGRAM_PUBKEY = decodeAddress(\n  MULTICALL_PROGRAM_ADDRESS,\n);\n\nfunction assertProgramIdx(programIdx: number): void {\n  if (!Number.isInteger(programIdx) || programIdx < 0 || programIdx > 0xffff) {\n    throw new Error('programIdx must be 0-65535');\n  }\n}\n\nfunction buildInstructionData(call: MulticallCall): Uint8Array {\n  assertProgramIdx(call.programIdx);\n  if (!(call.instructionData instanceof Uint8Array)) {\n    throw new Error('instructionData must be a Uint8Array');\n  }\n\n  const builder = new InstructionDataBuilder();\n  builder.set_program_idx(call.programIdx);\n  builder.data().write(call.instructionData).finish();\n  const buffer = builder.build();\n  const view = InstructionData.from_array(buffer);\n  if (!view) {\n    throw new Error('generated InstructionData failed validation');\n  }\n  return buffer;\n}\n\nexport function buildMulticallInstruction(calls: MulticallCall[]): Uint8Array {\n  if (!Array.isArray(calls)) throw new Error('calls must be an array');\n  if (calls.length > 0xffff) throw new Error('calls length must be 0-65535');\n\n  const encodedCalls = calls.map(buildInstructionData);\n  const output = new MulticallArgsBuilder().set_calls(encodedCalls).build();\n\n  const validation = MulticallArgs.validate(output);\n  if (!validation.ok || validation.consumed !== output.length) {\n    throw new Error(\n      `generated MulticallArgs failed validation (code=${validation.code ?? 'unknown'})`\n    );\n  }\n\n  return output;\n}\n","/* Auto-generated TypeScript code */\n/* WARNING: Do not modify this file directly. It is generated from ABI definitions. */\n\ntype __TnIrNode =\n  | { readonly op: \"zero\" }\n  | { readonly op: \"const\"; readonly value: bigint }\n  | { readonly op: \"field\"; readonly param: string }\n  | {\n      readonly op: \"add\";\n      readonly left: __TnIrNode;\n      readonly right: __TnIrNode;\n    }\n  | {\n      readonly op: \"sub\";\n      readonly left: __TnIrNode;\n      readonly right: __TnIrNode;\n    }\n  | {\n      readonly op: \"mul\";\n      readonly left: __TnIrNode;\n      readonly right: __TnIrNode;\n    }\n  | {\n      readonly op:\n        | \"div\"\n        | \"mod\"\n        | \"bitAnd\"\n        | \"bitOr\"\n        | \"bitXor\"\n        | \"leftShift\"\n        | \"rightShift\";\n      readonly left: __TnIrNode;\n      readonly right: __TnIrNode;\n    }\n  | {\n      readonly op: \"align\";\n      readonly alignment: number;\n      readonly node: __TnIrNode;\n    }\n  | {\n      readonly op: \"switch\";\n      readonly tag: string;\n      readonly cases: readonly { readonly value: number; readonly node: __TnIrNode }[];\n      readonly default?: __TnIrNode;\n    }\n  | {\n      readonly op: \"call\";\n      readonly typeName: string;\n      readonly args: readonly { readonly name: string; readonly source: string }[];\n    }\n  | {\n      readonly op: \"sumOverArray\";\n      readonly count: __TnIrNode;\n      readonly elementTypeName: string;\n      readonly fieldName: string;\n    };\n\ntype __TnIrContext = {\n  params: Record<string, bigint>;\n  buffer?: Uint8Array;\n  typeName?: string;\n};\n\ntype __TnValidateResult = {\n  ok: boolean;\n  code?: string;\n  consumed?: bigint;\n  params?: Record<string, bigint>;\n};\ntype __TnEvalResult =\n  | { ok: true; value: bigint }\n  | { ok: false; code: string };\ntype __TnBuilderLike = { build(): Uint8Array };\ntype __TnStructFieldInput =\n  | Uint8Array\n  | __TnBuilderLike\n  | { buffer?: Uint8Array }\n  | { asUint8Array?: () => Uint8Array }\n  | { bytes?: () => Uint8Array };\ntype __TnVariantDescriptor = {\n  readonly name: string;\n  readonly tag: number;\n  readonly payloadSize: number | null;\n  readonly payloadType?: string;\n  readonly createPayloadBuilder?: () => unknown | null;\n};\ntype __TnVariantSelectorResult<Parent> = {\n  select(\n    name: string\n  ): { writePayload(payload: Uint8Array | __TnBuilderLike): { finish(): Parent } };\n  finish(): Parent;\n};\ntype __TnFamWriterResult<Parent> = {\n  write(payload: Uint8Array | __TnBuilderLike): { finish(): Parent };\n  finish(): Parent;\n};\ntype __TnConsole = { warn?: (...args: unknown[]) => void };\n\nconst __tnWarnings = new Set<string>();\nconst __tnHasNativeBigInt = typeof BigInt === \"function\";\nconst __tnHasBigIntDataView =\n  typeof DataView !== \"undefined\" &&\n  typeof DataView.prototype.getBigInt64 === \"function\" &&\n  typeof DataView.prototype.getBigUint64 === \"function\" &&\n  typeof DataView.prototype.setBigInt64 === \"function\" &&\n  typeof DataView.prototype.setBigUint64 === \"function\";\nconst __tnConsole: __TnConsole | undefined =\n  typeof globalThis !== \"undefined\"\n    ? (globalThis as { console?: __TnConsole }).console\n    : undefined;\n\nfunction __tnLogWarn(message: string): void {\n  if (__tnConsole && typeof __tnConsole.warn === \"function\") {\n    __tnConsole.warn(message);\n  }\n}\n\nfunction __tnWarnOnce(message: string): void {\n  if (!__tnWarnings.has(message)) {\n    __tnWarnings.add(message);\n    __tnLogWarn(message);\n  }\n}\n\nfunction __tnResolveBuilderInput(\n  input: Uint8Array | __TnBuilderLike,\n  context: string\n): Uint8Array {\n  if (input instanceof Uint8Array) {\n    return new Uint8Array(input);\n  }\n  if (input && typeof (input as __TnBuilderLike).build === \"function\") {\n    const built = (input as __TnBuilderLike).build();\n    if (!(built instanceof Uint8Array)) {\n      throw new Error(`${context}: builder did not return Uint8Array`);\n    }\n    return new Uint8Array(built);\n  }\n  throw new Error(`${context}: expected Uint8Array or builder`);\n}\n\nfunction __tnResolveStructFieldInput(\n  input: __TnStructFieldInput,\n  context: string\n): Uint8Array {\n  if (\n    input instanceof Uint8Array ||\n    (input && typeof (input as __TnBuilderLike).build === \"function\")\n  ) {\n    return __tnResolveBuilderInput(input as Uint8Array | __TnBuilderLike, context);\n  }\n  if (input && typeof (input as { asUint8Array?: () => Uint8Array }).asUint8Array === \"function\") {\n    const bytes = (input as { asUint8Array: () => Uint8Array }).asUint8Array();\n    return new Uint8Array(bytes);\n  }\n  if (input && typeof (input as { bytes?: () => Uint8Array }).bytes === \"function\") {\n    const bytes = (input as { bytes: () => Uint8Array }).bytes();\n    return new Uint8Array(bytes);\n  }\n  if (input && (input as { buffer?: unknown }).buffer instanceof Uint8Array) {\n    return new Uint8Array((input as { buffer: Uint8Array }).buffer);\n  }\n  throw new Error(`${context}: expected Uint8Array, builder, or view-like value`);\n}\n\nfunction __tnMaybeCallBuilder(ctor: unknown): unknown | null {\n  if (!ctor) {\n    return null;\n  }\n  const builderFn = (ctor as { builder?: () => unknown }).builder;\n  return typeof builderFn === \"function\" ? builderFn() : null;\n}\n\nfunction __tnCreateVariantSelector<Parent, Descriptor extends __TnVariantDescriptor>(\n  parent: Parent,\n  descriptors: readonly Descriptor[],\n  assign: (descriptor: Descriptor, payload: Uint8Array) => void\n): __TnVariantSelectorResult<Parent> {\n  return {\n    select(name: string) {\n      const descriptor = descriptors.find((variant) => variant.name === name);\n      if (!descriptor) {\n        throw new Error(`Unknown variant '${name}'`);\n      }\n      return {\n        writePayload(payload: Uint8Array | __TnBuilderLike) {\n          const bytes = __tnResolveBuilderInput(\n            payload,\n            `variant ${descriptor.name}`\n          );\n          if (\n            descriptor.payloadSize !== null &&\n            bytes.length !== descriptor.payloadSize\n          ) {\n            throw new Error(\n              `Payload for ${descriptor.name} must be ${descriptor.payloadSize} bytes`\n            );\n          }\n          assign(descriptor, bytes);\n          return {\n            finish(): Parent {\n              return parent;\n            },\n          };\n        },\n      };\n    },\n    finish(): Parent {\n      return parent;\n    },\n  };\n}\n\nfunction __tnCreateFamWriter<Parent>(\n  parent: Parent,\n  fieldName: string,\n  assign: (bytes: Uint8Array) => void\n): __TnFamWriterResult<Parent> {\n  let hasWritten = false;\n  return {\n    write(payload: Uint8Array | __TnBuilderLike) {\n      const bytes = __tnResolveBuilderInput(\n        payload,\n        `flexible array '${fieldName}'`\n      );\n      const copy = new Uint8Array(bytes);\n      assign(copy);\n      hasWritten = true;\n      return {\n        finish(): Parent {\n          return parent;\n        },\n      };\n    },\n    finish(): Parent {\n      if (!hasWritten) {\n        throw new Error(\n          `flexible array '${fieldName}' requires write() before finish()`\n        );\n      }\n      return parent;\n    },\n  };\n}\n\nconst __tnMask32 = __tnHasNativeBigInt\n  ? (BigInt(1) << BigInt(32)) - BigInt(1)\n  : 0xffffffff;\nconst __tnSignBit32 = __tnHasNativeBigInt\n  ? BigInt(1) << BigInt(31)\n  : 0x80000000;\n\nfunction __tnToBigInt(value: number | bigint): bigint {\n  if (__tnHasNativeBigInt) {\n    return typeof value === \"bigint\" ? value : BigInt(value);\n  }\n  if (typeof value === \"bigint\") return value;\n  if (!Number.isFinite(value)) {\n    throw new Error(\"IR runtime received non-finite numeric input\");\n  }\n  if (!Number.isSafeInteger(value)) {\n    __tnWarnOnce(\n      `[thru-net] Precision loss while polyfilling BigInt (value=${value})`\n    );\n  }\n  return (value as unknown) as bigint;\n}\n\nfunction __tnBigIntToNumber(value: bigint, context: string): number {\n  if (__tnHasNativeBigInt) {\n    const converted = Number(value);\n    if (!Number.isFinite(converted)) {\n      throw new Error(`${context} overflowed Number range`);\n    }\n    return converted;\n  }\n  return value as unknown as number;\n}\n\nfunction __tnBigIntEquals(lhs: bigint, rhs: bigint): boolean {\n  if (__tnHasNativeBigInt) return lhs === rhs;\n  return (lhs as unknown as number) === (rhs as unknown as number);\n}\n\nfunction __tnBigIntGreaterThan(lhs: bigint, rhs: bigint): boolean {\n  if (__tnHasNativeBigInt) return lhs > rhs;\n  return (lhs as unknown as number) > (rhs as unknown as number);\n}\n\nfunction __tnPopcount(value: number | bigint): number {\n  let v =\n    typeof value === \"bigint\"\n      ? Number(value & BigInt(0xffffffff))\n      : Number(value) >>> 0;\n  v = v - ((v >>> 1) & 0x55555555);\n  v = (v & 0x33333333) + ((v >>> 2) & 0x33333333);\n  return (((v + (v >>> 4)) & 0x0f0f0f0f) * 0x01010101) >>> 24;\n}\n\nfunction __tnRaiseIrError(code: string, message: string): never {\n  const err = new Error(message);\n  (err as { code?: string }).code = code;\n  throw err;\n}\n\nfunction __tnCheckedAdd(lhs: bigint, rhs: bigint): bigint {\n  if (__tnHasNativeBigInt) {\n    const result = (lhs as bigint) + (rhs as bigint);\n    if (result < BigInt(0)) {\n      __tnRaiseIrError(\n        \"tn.ir.overflow\",\n        \"IR runtime detected negative size via addition\"\n      );\n    }\n    return result;\n  }\n  const left = lhs as unknown as number;\n  const right = rhs as unknown as number;\n  const sum = left + right;\n  if (sum < 0 || !Number.isFinite(sum)) {\n    __tnRaiseIrError(\n      \"tn.ir.overflow\",\n      \"IR runtime detected invalid addition result\"\n    );\n  }\n  if (!Number.isSafeInteger(sum)) {\n    __tnWarnOnce(\"[thru-net] Precision loss while polyfilling BigInt addition\");\n  }\n  return (sum as unknown) as bigint;\n}\n\nfunction __tnCheckedSub(lhs: bigint, rhs: bigint): bigint {\n  if (__tnHasNativeBigInt) {\n    const result = (lhs as bigint) - (rhs as bigint);\n    if (result < BigInt(0)) {\n      __tnRaiseIrError(\n        \"tn.ir.overflow\",\n        \"IR runtime detected negative size via subtraction\"\n      );\n    }\n    return result;\n  }\n  const left = lhs as unknown as number;\n  const right = rhs as unknown as number;\n  const diff = left - right;\n  if (diff < 0 || !Number.isFinite(diff)) {\n    __tnRaiseIrError(\n      \"tn.ir.overflow\",\n      \"IR runtime detected invalid subtraction result\"\n    );\n  }\n  if (!Number.isSafeInteger(diff)) {\n    __tnWarnOnce(\"[thru-net] Precision loss while polyfilling BigInt subtraction\");\n  }\n  return (diff as unknown) as bigint;\n}\n\nfunction __tnCheckedMul(lhs: bigint, rhs: bigint): bigint {\n  if (__tnHasNativeBigInt) {\n    const result = (lhs as bigint) * (rhs as bigint);\n    if (result < BigInt(0)) {\n      __tnRaiseIrError(\n        \"tn.ir.overflow\",\n        \"IR runtime detected negative size via multiplication\"\n      );\n    }\n    return result;\n  }\n  const left = lhs as unknown as number;\n  const right = rhs as unknown as number;\n  const product = left * right;\n  if (product < 0 || !Number.isFinite(product)) {\n    __tnRaiseIrError(\n      \"tn.ir.overflow\",\n      \"IR runtime detected invalid multiplication result\"\n    );\n  }\n  if (!Number.isSafeInteger(product)) {\n    __tnWarnOnce(\n      \"[thru-net] Precision loss while polyfilling BigInt multiplication\"\n    );\n  }\n  return (product as unknown) as bigint;\n}\n\nfunction __tnCheckedDiv(lhs: bigint, rhs: bigint): bigint {\n  if (__tnBigIntEquals(rhs, __tnToBigInt(0))) {\n    __tnRaiseIrError(\"tn.ir.overflow\", \"IR runtime division by zero\");\n  }\n  if (__tnHasNativeBigInt) return (lhs as bigint) / (rhs as bigint);\n  const quotient = Math.floor((lhs as unknown as number) / (rhs as unknown as number));\n  return (quotient as unknown) as bigint;\n}\n\nfunction __tnCheckedMod(lhs: bigint, rhs: bigint): bigint {\n  if (__tnBigIntEquals(rhs, __tnToBigInt(0))) {\n    __tnRaiseIrError(\"tn.ir.overflow\", \"IR runtime modulo by zero\");\n  }\n  if (__tnHasNativeBigInt) return (lhs as bigint) % (rhs as bigint);\n  return (((lhs as unknown as number) % (rhs as unknown as number)) as unknown) as bigint;\n}\n\nfunction __tnBitwise(\n  lhs: bigint,\n  rhs: bigint,\n  op: \"and\" | \"or\" | \"xor\"\n): bigint {\n  if (__tnHasNativeBigInt) {\n    if (op === \"and\") return (lhs as bigint) & (rhs as bigint);\n    if (op === \"or\") return (lhs as bigint) | (rhs as bigint);\n    return (lhs as bigint) ^ (rhs as bigint);\n  }\n  const left = lhs as unknown as number;\n  const right = rhs as unknown as number;\n  const maxU32 = 0xffffffff;\n  if (\n    !Number.isInteger(left) ||\n    !Number.isInteger(right) ||\n    left < 0 ||\n    right < 0 ||\n    left > maxU32 ||\n    right > maxU32\n  ) {\n    __tnRaiseIrError(\n      \"tn.ir.overflow\",\n      \"IR runtime bitwise operation requires BigInt for values outside u32 range\"\n    );\n  }\n  const result = op === \"and\" ? left & right : op === \"or\" ? left | right : left ^ right;\n  return ((result >>> 0) as unknown) as bigint;\n}\n\nfunction __tnCheckedShift(\n  lhs: bigint,\n  rhs: bigint,\n  direction: \"left\" | \"right\"\n): bigint {\n  const amount = __tnBigIntToNumber(rhs, \"IR shift amount\");\n  if (amount < 0 || amount >= 64 || !Number.isInteger(amount)) {\n    __tnRaiseIrError(\"tn.ir.overflow\", \"IR runtime invalid shift amount\");\n  }\n  if (__tnHasNativeBigInt) {\n    const shift = BigInt(amount);\n    return direction === \"left\" ? (lhs as bigint) << shift : (lhs as bigint) >> shift;\n  }\n  const value = lhs as unknown as number;\n  const result = direction === \"left\" ? value * 2 ** amount : Math.floor(value / 2 ** amount);\n  if (!Number.isSafeInteger(result)) {\n    __tnWarnOnce(\"[thru-net] Precision loss while polyfilling BigInt shift\");\n  }\n  return (result as unknown) as bigint;\n}\n\nfunction __tnAlign(value: bigint, alignment: number): bigint {\n  if (alignment <= 1) return value;\n  const alignBig = __tnToBigInt(alignment);\n  if (__tnHasNativeBigInt) {\n    const remainder = value % alignBig;\n    if (__tnBigIntEquals(remainder, __tnToBigInt(0))) {\n      return value;\n    }\n    const delta = alignBig - remainder;\n    return __tnCheckedAdd(value, delta);\n  }\n  const current = __tnBigIntToNumber(value, \"IR align\");\n  const alignNum = alignment >>> 0;\n  const remainder = current % alignNum;\n  const next = remainder === 0 ? current : current + (alignNum - remainder);\n  return __tnToBigInt(next);\n}\n\nfunction __tnSplitUint64(value: bigint): { high: number; low: number } {\n  if (__tnHasNativeBigInt) {\n    const low = Number(value & (__tnMask32 as bigint));\n    const high = Number((value >> BigInt(32)) & (__tnMask32 as bigint));\n    return { high, low };\n  }\n  const num = __tnBigIntToNumber(value, \"DataView.setBigUint64\");\n  const low = num >>> 0;\n  const high = Math.floor(num / 4294967296) >>> 0;\n  return { high, low };\n}\n\nfunction __tnSplitInt64(value: bigint): { high: number; low: number } {\n  if (__tnHasNativeBigInt) {\n    const low = Number(value & (__tnMask32 as bigint));\n    let high = Number((value >> BigInt(32)) & (__tnMask32 as bigint));\n    if ((BigInt(high) & (__tnSignBit32 as bigint)) !== BigInt(0)) {\n      high -= 0x100000000;\n    }\n    return { high, low };\n  }\n  const num = __tnBigIntToNumber(value, \"DataView.setBigInt64\");\n  const low = num >>> 0;\n  const high = Math.floor(num / 4294967296);\n  return { high, low };\n}\n\nfunction __tnPolyfillReadUint64(\n  view: DataView,\n  offset: number,\n  littleEndian: boolean\n): bigint {\n  const low = littleEndian\n    ? view.getUint32(offset, true)\n    : view.getUint32(offset + 4, false);\n  const high = littleEndian\n    ? view.getUint32(offset + 4, true)\n    : view.getUint32(offset, false);\n  if (__tnHasNativeBigInt) {\n    return (BigInt(high) << BigInt(32)) | BigInt(low);\n  }\n  const value = high * 4294967296 + low;\n  if (!Number.isSafeInteger(value)) {\n    __tnWarnOnce(\n      \"[thru-net] Precision loss while polyfilling DataView.getBigUint64\"\n    );\n  }\n  return (value as unknown) as bigint;\n}\n\nfunction __tnPolyfillReadInt64(\n  view: DataView,\n  offset: number,\n  littleEndian: boolean\n): bigint {\n  const low = littleEndian\n    ? view.getUint32(offset, true)\n    : view.getUint32(offset + 4, false);\n  const high = littleEndian\n    ? view.getInt32(offset + 4, true)\n    : view.getInt32(offset, false);\n  if (__tnHasNativeBigInt) {\n    return (BigInt(high) << BigInt(32)) | BigInt(low);\n  }\n  const value = high * 4294967296 + low;\n  if (!Number.isSafeInteger(value)) {\n    __tnWarnOnce(\n      \"[thru-net] Precision loss while polyfilling DataView.getBigInt64\"\n    );\n  }\n  return (value as unknown) as bigint;\n}\n\nfunction __tnPolyfillWriteUint64(\n  view: DataView,\n  offset: number,\n  value: bigint,\n  littleEndian: boolean\n): void {\n  const parts = __tnSplitUint64(value);\n  if (littleEndian) {\n    view.setUint32(offset, parts.low, true);\n    view.setUint32(offset + 4, parts.high, true);\n  } else {\n    view.setUint32(offset, parts.high, false);\n    view.setUint32(offset + 4, parts.low, false);\n  }\n}\n\nfunction __tnPolyfillWriteInt64(\n  view: DataView,\n  offset: number,\n  value: bigint,\n  littleEndian: boolean\n): void {\n  const parts = __tnSplitInt64(value);\n  if (littleEndian) {\n    view.setUint32(offset, parts.low >>> 0, true);\n    view.setInt32(offset + 4, parts.high | 0, true);\n  } else {\n    view.setInt32(offset, parts.high | 0, false);\n    view.setUint32(offset + 4, parts.low >>> 0, false);\n  }\n}\n\nif (typeof DataView !== \"undefined\" && !__tnHasBigIntDataView) {\n  const proto = DataView.prototype as unknown as Record<string, unknown>;\n  if (typeof proto.getBigUint64 !== \"function\") {\n    (proto as any).getBigUint64 = function (\n      offset: number,\n      littleEndian?: boolean\n    ): bigint {\n      __tnWarnOnce(\n        \"[thru-net] Polyfilling DataView.getBigUint64; precision may be lost\"\n      );\n      return __tnPolyfillReadUint64(this, offset, !!littleEndian);\n    };\n  }\n  if (typeof proto.getBigInt64 !== \"function\") {\n    (proto as any).getBigInt64 = function (\n      offset: number,\n      littleEndian?: boolean\n    ): bigint {\n      __tnWarnOnce(\n        \"[thru-net] Polyfilling DataView.getBigInt64; precision may be lost\"\n      );\n      return __tnPolyfillReadInt64(this, offset, !!littleEndian);\n    };\n  }\n  if (typeof proto.setBigUint64 !== \"function\") {\n    (proto as any).setBigUint64 = function (\n      offset: number,\n      value: bigint,\n      littleEndian?: boolean\n    ): void {\n      __tnWarnOnce(\n        \"[thru-net] Polyfilling DataView.setBigUint64; precision may be lost\"\n      );\n      __tnPolyfillWriteUint64(this, offset, value, !!littleEndian);\n    };\n  }\n  if (typeof proto.setBigInt64 !== \"function\") {\n    (proto as any).setBigInt64 = function (\n      offset: number,\n      value: bigint,\n      littleEndian?: boolean\n    ): void {\n      __tnWarnOnce(\n        \"[thru-net] Polyfilling DataView.setBigInt64; precision may be lost\"\n      );\n      __tnPolyfillWriteInt64(this, offset, value, !!littleEndian);\n    };\n  }\n  if (!__tnHasNativeBigInt) {\n    __tnWarnOnce(\n      \"[thru-net] BigInt is unavailable; falling back to lossy 64-bit polyfill\"\n    );\n  }\n}\n\nconst __tnFootprintRegistry: Record<\n  string,\n  (params: Record<string, bigint>) => bigint\n> = {};\nconst __tnValidateRegistry: Record<\n  string,\n  (buffer: Uint8Array, params: Record<string, bigint>) => __TnValidateResult\n> = {};\nconst __tnDynamicValidateRegistry: Record<\n  string,\n  (buffer: Uint8Array) => __TnValidateResult\n> = {};\n\nfunction __tnRegisterFootprint(\n  typeName: string,\n  fn: (params: Record<string, bigint>) => bigint\n): void {\n  __tnFootprintRegistry[typeName] = fn;\n}\n\nfunction __tnRegisterValidate(\n  typeName: string,\n  fn: (buffer: Uint8Array, params: Record<string, bigint>) => __TnValidateResult\n): void {\n  __tnValidateRegistry[typeName] = fn;\n}\n\nfunction __tnRegisterDynamicValidate(\n  typeName: string,\n  fn: (buffer: Uint8Array) => __TnValidateResult\n): void {\n  __tnDynamicValidateRegistry[typeName] = fn;\n}\n\nfunction __tnInvokeFootprint(\n  typeName: string,\n  params: Record<string, bigint>\n): bigint {\n  const fn = __tnFootprintRegistry[typeName];\n  if (!fn) throw new Error(`IR runtime missing footprint for ${typeName}`);\n  return fn(params);\n}\n\nfunction __tnInvokeValidate(\n  typeName: string,\n  buffer: Uint8Array,\n  params: Record<string, bigint>\n): __TnValidateResult {\n  const fn = __tnValidateRegistry[typeName];\n  if (!fn) throw new Error(`IR runtime missing validate helper for ${typeName}`);\n  return fn(buffer, params);\n}\n\nfunction __tnInvokeDynamicValidate(\n  typeName: string,\n  buffer: Uint8Array\n): __TnValidateResult {\n  const fn = __tnDynamicValidateRegistry[typeName];\n  if (!fn) throw new Error(`IR runtime missing dynamic validate helper for ${typeName}`);\n  return fn(buffer);\n}\n\nfunction __tnEvalFootprint(node: __TnIrNode, ctx: __TnIrContext): bigint {\n  return __tnEvalIrNode(node, ctx, __tnToBigInt(0));\n}\n\nfunction __tnTryEvalFootprint(\n  node: __TnIrNode,\n  ctx: __TnIrContext\n): __TnEvalResult {\n  return __tnTryEvalIr(node, ctx);\n}\n\nfunction __tnTryEvalIr(\n  node: __TnIrNode,\n  ctx: __TnIrContext\n): __TnEvalResult {\n  try {\n    return { ok: true, value: __tnEvalIrNode(node, ctx, __tnToBigInt(0)) };\n  } catch (err) {\n    return { ok: false, code: __tnNormalizeIrError(err) };\n  }\n}\n\nfunction __tnIsEvalError(result: __TnEvalResult): result is { ok: false; code: string } {\n  return result.ok === false;\n}\n\nfunction __tnValidateIrTree(\n  ir: { readonly typeName: string; readonly root: __TnIrNode },\n  buffer: Uint8Array,\n  params: Record<string, bigint>\n): __TnValidateResult {\n  const evalResult = __tnTryEvalIr(ir.root, {\n    params,\n    buffer,\n    typeName: ir.typeName,\n  });\n  if (__tnIsEvalError(evalResult)) {\n    return { ok: false, code: evalResult.code };\n  }\n  const required = evalResult.value;\n  const available = __tnToBigInt(buffer.length);\n  if (__tnBigIntGreaterThan(required, available)) {\n    return { ok: false, code: \"tn.buffer_too_small\", consumed: required };\n  }\n  return { ok: true, consumed: required };\n}\n\nfunction __tnEvalIrNode(\n  node: __TnIrNode,\n  ctx: __TnIrContext,\n  baseOffset: bigint\n): bigint {\n  switch (node.op) {\n    case \"zero\":\n      return __tnToBigInt(0);\n    case \"const\":\n      return node.value;\n    case \"field\": {\n      if (node.param === \"__buffer_size\" && ctx.buffer) {\n        return __tnToBigInt(ctx.buffer.length);\n      }\n      const val = ctx.params[node.param];\n      if (val === undefined) {\n        const prefix = ctx.typeName ? `${ctx.typeName}: ` : \"\";\n        __tnRaiseIrError(\n          \"tn.ir.missing_param\",\n          `${prefix}Missing IR parameter '${node.param}'`\n        );\n      }\n      return val;\n    }\n    case \"add\":\n      {\n        const left = __tnEvalIrNode(node.left, ctx, baseOffset);\n        const right = __tnEvalIrNode(\n          node.right,\n          ctx,\n          __tnCheckedAdd(baseOffset, left)\n        );\n        return __tnCheckedAdd(left, right);\n      }\n    case \"sub\":\n      return __tnCheckedSub(\n        __tnEvalIrNode(node.left, ctx, baseOffset),\n        __tnEvalIrNode(node.right, ctx, baseOffset)\n      );\n    case \"mul\":\n      return __tnCheckedMul(\n        __tnEvalIrNode(node.left, ctx, baseOffset),\n        __tnEvalIrNode(node.right, ctx, baseOffset)\n      );\n    case \"div\":\n      return __tnCheckedDiv(\n        __tnEvalIrNode(node.left, ctx, baseOffset),\n        __tnEvalIrNode(node.right, ctx, baseOffset)\n      );\n    case \"mod\":\n      return __tnCheckedMod(\n        __tnEvalIrNode(node.left, ctx, baseOffset),\n        __tnEvalIrNode(node.right, ctx, baseOffset)\n      );\n    case \"bitAnd\":\n      return __tnBitwise(\n        __tnEvalIrNode(node.left, ctx, baseOffset),\n        __tnEvalIrNode(node.right, ctx, baseOffset),\n        \"and\"\n      );\n    case \"bitOr\":\n      return __tnBitwise(\n        __tnEvalIrNode(node.left, ctx, baseOffset),\n        __tnEvalIrNode(node.right, ctx, baseOffset),\n        \"or\"\n      );\n    case \"bitXor\":\n      return __tnBitwise(\n        __tnEvalIrNode(node.left, ctx, baseOffset),\n        __tnEvalIrNode(node.right, ctx, baseOffset),\n        \"xor\"\n      );\n    case \"leftShift\":\n      return __tnCheckedShift(\n        __tnEvalIrNode(node.left, ctx, baseOffset),\n        __tnEvalIrNode(node.right, ctx, baseOffset),\n        \"left\"\n      );\n    case \"rightShift\":\n      return __tnCheckedShift(\n        __tnEvalIrNode(node.left, ctx, baseOffset),\n        __tnEvalIrNode(node.right, ctx, baseOffset),\n        \"right\"\n      );\n    case \"align\":\n      return __tnAlign(__tnEvalIrNode(node.node, ctx, baseOffset), node.alignment);\n    case \"switch\": {\n      const tagVal = ctx.params[node.tag];\n      if (tagVal === undefined) {\n        const prefix = ctx.typeName ? `${ctx.typeName}: ` : \"\";\n        __tnRaiseIrError(\n          \"tn.ir.missing_param\",\n          `${prefix}Missing IR switch tag '${node.tag}'`\n        );\n      }\n      const tagNumber = Number(tagVal);\n      for (const caseNode of node.cases) {\n        if (caseNode.value === tagNumber) {\n          return __tnEvalIrNode(caseNode.node, ctx, baseOffset);\n        }\n      }\n      if (node.default) return __tnEvalIrNode(node.default, ctx, baseOffset);\n      __tnRaiseIrError(\n        \"tn.ir.invalid_tag\",\n        `Unhandled IR switch value ${tagNumber} for '${node.tag}'`\n      );\n    }\n    case \"call\": {\n      const nestedParams: Record<string, bigint> = Object.create(null);\n      for (const arg of node.args) {\n        const val = ctx.params[arg.source];\n        if (val === undefined) {\n          const prefix = ctx.typeName ? `${ctx.typeName}: ` : \"\";\n          __tnRaiseIrError(\n            \"tn.ir.missing_param\",\n            `${prefix}Missing IR parameter '${arg.source}' for nested call`\n          );\n        }\n        nestedParams[arg.name] = val;\n      }\n      if (ctx.buffer) {\n        const nestedOffset = __tnBigIntToNumber(baseOffset, \"IR nested offset\");\n        const nestedResult = __tnInvokeValidate(\n          node.typeName,\n          ctx.buffer.subarray(nestedOffset),\n          nestedParams\n        );\n        if (!nestedResult.ok) {\n          const nestedCode =\n            nestedResult.code ?? `tn.ir.runtime_error: ${node.typeName}`;\n          const prefixed = nestedCode.startsWith(\"tn.\")\n            ? nestedCode\n            : `tn.ir.runtime_error: ${node.typeName} -> ${nestedCode}`;\n          __tnRaiseIrError(\n            prefixed,\n            `Nested validator ${node.typeName} failed`\n          );\n        }\n        if (nestedResult.consumed !== undefined) {\n          return nestedResult.consumed;\n        }\n      }\n      return __tnInvokeFootprint(node.typeName, nestedParams);\n    }\n    case \"sumOverArray\": {\n      if (!ctx.buffer) {\n        __tnRaiseIrError(\n          \"tn.ir.missing_buffer\",\n          `Jagged array '${node.fieldName}' requires buffer-backed validation`\n        );\n      }\n      const count = __tnBigIntToNumber(\n        __tnEvalIrNode(node.count, ctx, baseOffset),\n        `Jagged array '${node.fieldName}' count`\n      );\n      let cursor = __tnBigIntToNumber(baseOffset, \"IR jagged array offset\");\n      let total = __tnToBigInt(0);\n      for (let i = 0; i < count; i++) {\n        const result = __tnInvokeDynamicValidate(\n          node.elementTypeName,\n          ctx.buffer.subarray(cursor)\n        );\n        if (!result.ok || result.consumed === undefined) {\n          const code = result.code ?? \"tn.ir.runtime_error\";\n          __tnRaiseIrError(\n            code,\n            `Jagged array '${node.fieldName}' element ${i} failed validation`\n          );\n        }\n        cursor += __tnBigIntToNumber(result.consumed, \"IR jagged element size\");\n        total = __tnCheckedAdd(total, result.consumed);\n      }\n      return total;\n    }\n    default:\n      __tnRaiseIrError(\n        \"tn.ir.runtime_error\",\n        `Unsupported IR node ${(node as { op: string }).op}`\n      );\n  }\n}\n\nfunction __tnNormalizeIrError(err: unknown): string {\n  if (err && typeof err === \"object\" && \"code\" in err) {\n    const maybeCode = (err as { code?: string }).code;\n    if (typeof maybeCode === \"string\" && maybeCode.length > 0) {\n      return maybeCode;\n    }\n  }\n  const message =\n    err && typeof err === \"object\" && \"message\" in err\n      ? String((err as { message?: unknown }).message ?? \"\")\n      : typeof err === \"string\"\n      ? err\n      : \"\";\n  if (message.includes(\"Missing IR parameter\")) return \"tn.ir.missing_param\";\n  if (message.includes(\"Unhandled IR switch value\")) return \"tn.ir.invalid_tag\";\n  if (\n    message.includes(\"invalid\") ||\n    message.includes(\"overflow\") ||\n    message.includes(\"negative size\")\n  ) {\n    return \"tn.ir.overflow\";\n  }\n  if (message.length > 0) return `tn.ir.runtime_error: ${message}`;\n  return \"tn.ir.runtime_error\";\n}\n\n/* ----- TYPE DEFINITION FOR Date ----- */\n\nconst __tn_ir_Date = {\n  typeName: \"Date\",\n  root: { op: \"const\", value: 6n }\n} as const;\n\nexport class Date {\n  private view: DataView;\n\n  private constructor(private buffer: Uint8Array) {\n    this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n  }\n\n  static __tnCreateView(buffer: Uint8Array, opts?: { fieldContext?: Record<string, number | bigint> }): Date {\n    if (!buffer || buffer.length === undefined) throw new Error(\"Date.__tnCreateView requires a Uint8Array\");\n    return new Date(new Uint8Array(buffer));\n  }\n\n  static builder(): DateBuilder {\n    return new DateBuilder();\n  }\n\n  static fromBuilder(builder: DateBuilder): Date | null {\n    const buffer = builder.build();\n    return Date.from_array(buffer);\n  }\n\n  get_year(): number {\n    const offset = 0;\n    return this.view.getInt32(offset, true); /* little-endian */\n  }\n\n  set_year(value: number): void {\n    const offset = 0;\n    this.view.setInt32(offset, value, true); /* little-endian */\n  }\n\n  get year(): number {\n    return this.get_year();\n  }\n\n  set year(value: number) {\n    this.set_year(value);\n  }\n\n  get_month(): number {\n    const offset = 4;\n    return this.view.getUint8(offset);\n  }\n\n  set_month(value: number): void {\n    const offset = 4;\n    this.view.setUint8(offset, value);\n  }\n\n  get month(): number {\n    return this.get_month();\n  }\n\n  set month(value: number) {\n    this.set_month(value);\n  }\n\n  get_day(): number {\n    const offset = 5;\n    return this.view.getUint8(offset);\n  }\n\n  set_day(value: number): void {\n    const offset = 5;\n    this.view.setUint8(offset, value);\n  }\n\n  get day(): number {\n    return this.get_day();\n  }\n\n  set day(value: number) {\n    this.set_day(value);\n  }\n\n  private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n    return __tnEvalFootprint(__tn_ir_Date.root, { params: __tnParams });\n  }\n\n  private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n    return __tnValidateIrTree(__tn_ir_Date, buffer, __tnParams);\n  }\n\n  static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n    return this.__tnFootprintInternal(__tnParams);\n  }\n\n  static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n    return this.__tnValidateInternal(buffer, __tnParams);\n  }\n\n  static footprintIr(): bigint {\n    return this.__tnFootprintInternal(Object.create(null));\n  }\n\n  static footprint(): number {\n    const irResult = this.footprintIr();\n      const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n    if (__tnBigIntGreaterThan(irResult, maxSafe)) {\n      throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for Date');\n    }\n    return __tnBigIntToNumber(irResult, 'Date::footprint');\n  }\n\n  static validate(buffer: Uint8Array, _opts?: { params?: never }): { ok: boolean; code?: string; consumed?: number } {\n    if (buffer.length < 6) return { ok: false, code: \"tn.buffer_too_small\", consumed: 6 };\n    return { ok: true, consumed: 6 };\n  }\n\n  static new(year: number, month: number, day: number): Date {\n    const buffer = new Uint8Array(6);\n    const view = new DataView(buffer.buffer);\n\n    let offset = 0;\n    view.setInt32(0, year, true); /* year (little-endian) */\n    view.setUint8(4, month); /* month */\n    view.setUint8(5, day); /* day */\n\n    return new Date(buffer);\n  }\n\n  static from_array(buffer: Uint8Array): Date | null {\n    if (!buffer || buffer.length === undefined) {\n      return null;\n    }\n    const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    const validation = this.validate(buffer);\n    if (!validation.ok) {\n      return null;\n    }\n    return new Date(buffer);\n  }\n\n}\n\nexport class DateBuilder {\n  private buffer: Uint8Array;\n  private view: DataView;\n\n  constructor() {\n    this.buffer = new Uint8Array(6);\n    this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n  }\n\n  set_year(value: number): this {\n    this.view.setInt32(0, value, true);\n    return this;\n  }\n\n  set_month(value: number): this {\n    this.view.setUint8(4, value);\n    return this;\n  }\n\n  set_day(value: number): this {\n    this.view.setUint8(5, value);\n    return this;\n  }\n\n  build(): Uint8Array {\n    return this.buffer.slice();\n  }\n\n  buildInto(target: Uint8Array, offset = 0): Uint8Array {\n    if (target.length - offset < this.buffer.length) throw new Error(\"target buffer too small\");\n    target.set(this.buffer, offset);\n    return target;\n  }\n\n  finish(): Date {\n    const view = Date.from_array(this.buffer.slice());\n    if (!view) throw new Error(\"failed to build Date\");\n    return view;\n  }\n}\n\n__tnRegisterFootprint(\"Date\", (params) => Date.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"Date\", (buffer, params) => Date.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"Date\", (buffer) => { const result = Date.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n\n/* ----- TYPE DEFINITION FOR Duration ----- */\n\nconst __tn_ir_Duration = {\n  typeName: \"Duration\",\n  root: { op: \"const\", value: 12n }\n} as const;\n\nexport class Duration {\n  private view: DataView;\n\n  private constructor(private buffer: Uint8Array) {\n    this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n  }\n\n  static __tnCreateView(buffer: Uint8Array, opts?: { fieldContext?: Record<string, number | bigint> }): Duration {\n    if (!buffer || buffer.length === undefined) throw new Error(\"Duration.__tnCreateView requires a Uint8Array\");\n    return new Duration(new Uint8Array(buffer));\n  }\n\n  static builder(): DurationBuilder {\n    return new DurationBuilder();\n  }\n\n  static fromBuilder(builder: DurationBuilder): Duration | null {\n    const buffer = builder.build();\n    return Duration.from_array(buffer);\n  }\n\n  get_seconds(): bigint {\n    const offset = 0;\n    return this.view.getBigInt64(offset, true); /* little-endian */\n  }\n\n  set_seconds(value: bigint): void {\n    const offset = 0;\n    this.view.setBigInt64(offset, value, true); /* little-endian */\n  }\n\n  get seconds(): bigint {\n    return this.get_seconds();\n  }\n\n  set seconds(value: bigint) {\n    this.set_seconds(value);\n  }\n\n  get_nanos(): number {\n    const offset = 8;\n    return this.view.getInt32(offset, true); /* little-endian */\n  }\n\n  set_nanos(value: number): void {\n    const offset = 8;\n    this.view.setInt32(offset, value, true); /* little-endian */\n  }\n\n  get nanos(): number {\n    return this.get_nanos();\n  }\n\n  set nanos(value: number) {\n    this.set_nanos(value);\n  }\n\n  private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n    return __tnEvalFootprint(__tn_ir_Duration.root, { params: __tnParams });\n  }\n\n  private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n    return __tnValidateIrTree(__tn_ir_Duration, buffer, __tnParams);\n  }\n\n  static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n    return this.__tnFootprintInternal(__tnParams);\n  }\n\n  static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n    return this.__tnValidateInternal(buffer, __tnParams);\n  }\n\n  static footprintIr(): bigint {\n    return this.__tnFootprintInternal(Object.create(null));\n  }\n\n  static footprint(): number {\n    const irResult = this.footprintIr();\n      const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n    if (__tnBigIntGreaterThan(irResult, maxSafe)) {\n      throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for Duration');\n    }\n    return __tnBigIntToNumber(irResult, 'Duration::footprint');\n  }\n\n  static validate(buffer: Uint8Array, _opts?: { params?: never }): { ok: boolean; code?: string; consumed?: number } {\n    if (buffer.length < 12) return { ok: false, code: \"tn.buffer_too_small\", consumed: 12 };\n    return { ok: true, consumed: 12 };\n  }\n\n  static new(seconds: bigint, nanos: number): Duration {\n    const buffer = new Uint8Array(12);\n    const view = new DataView(buffer.buffer);\n\n    let offset = 0;\n    view.setBigInt64(0, seconds, true); /* seconds (little-endian) */\n    view.setInt32(8, nanos, true); /* nanos (little-endian) */\n\n    return new Duration(buffer);\n  }\n\n  static from_array(buffer: Uint8Array): Duration | null {\n    if (!buffer || buffer.length === undefined) {\n      return null;\n    }\n    const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    const validation = this.validate(buffer);\n    if (!validation.ok) {\n      return null;\n    }\n    return new Duration(buffer);\n  }\n\n}\n\nexport class DurationBuilder {\n  private buffer: Uint8Array;\n  private view: DataView;\n\n  constructor() {\n    this.buffer = new Uint8Array(12);\n    this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n  }\n\n  set_seconds(value: bigint): this {\n    const cast = __tnToBigInt(value);\n    this.view.setBigInt64(0, cast, true);\n    return this;\n  }\n\n  set_nanos(value: number): this {\n    this.view.setInt32(8, value, true);\n    return this;\n  }\n\n  build(): Uint8Array {\n    return this.buffer.slice();\n  }\n\n  buildInto(target: Uint8Array, offset = 0): Uint8Array {\n    if (target.length - offset < this.buffer.length) throw new Error(\"target buffer too small\");\n    target.set(this.buffer, offset);\n    return target;\n  }\n\n  finish(): Duration {\n    const view = Duration.from_array(this.buffer.slice());\n    if (!view) throw new Error(\"failed to build Duration\");\n    return view;\n  }\n}\n\n__tnRegisterFootprint(\"Duration\", (params) => Duration.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"Duration\", (buffer, params) => Duration.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"Duration\", (buffer) => { const result = Duration.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n\n/* ----- TYPE DEFINITION FOR FixedPoint ----- */\n\nconst __tn_ir_FixedPoint = {\n  typeName: \"FixedPoint\",\n  root: { op: \"const\", value: 9n }\n} as const;\n\nexport class FixedPoint {\n  private view: DataView;\n\n  private constructor(private buffer: Uint8Array) {\n    this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n  }\n\n  static __tnCreateView(buffer: Uint8Array, opts?: { fieldContext?: Record<string, number | bigint> }): FixedPoint {\n    if (!buffer || buffer.length === undefined) throw new Error(\"FixedPoint.__tnCreateView requires a Uint8Array\");\n    return new FixedPoint(new Uint8Array(buffer));\n  }\n\n  static builder(): FixedPointBuilder {\n    return new FixedPointBuilder();\n  }\n\n  static fromBuilder(builder: FixedPointBuilder): FixedPoint | null {\n    const buffer = builder.build();\n    return FixedPoint.from_array(buffer);\n  }\n\n  get_mantissa(): bigint {\n    const offset = 0;\n    return this.view.getBigInt64(offset, true); /* little-endian */\n  }\n\n  set_mantissa(value: bigint): void {\n    const offset = 0;\n    this.view.setBigInt64(offset, value, true); /* little-endian */\n  }\n\n  get mantissa(): bigint {\n    return this.get_mantissa();\n  }\n\n  set mantissa(value: bigint) {\n    this.set_mantissa(value);\n  }\n\n  get_scale(): number {\n    const offset = 8;\n    return this.view.getUint8(offset);\n  }\n\n  set_scale(value: number): void {\n    const offset = 8;\n    this.view.setUint8(offset, value);\n  }\n\n  get scale(): number {\n    return this.get_scale();\n  }\n\n  set scale(value: number) {\n    this.set_scale(value);\n  }\n\n  private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n    return __tnEvalFootprint(__tn_ir_FixedPoint.root, { params: __tnParams });\n  }\n\n  private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n    return __tnValidateIrTree(__tn_ir_FixedPoint, buffer, __tnParams);\n  }\n\n  static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n    return this.__tnFootprintInternal(__tnParams);\n  }\n\n  static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n    return this.__tnValidateInternal(buffer, __tnParams);\n  }\n\n  static footprintIr(): bigint {\n    return this.__tnFootprintInternal(Object.create(null));\n  }\n\n  static footprint(): number {\n    const irResult = this.footprintIr();\n      const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n    if (__tnBigIntGreaterThan(irResult, maxSafe)) {\n      throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for FixedPoint');\n    }\n    return __tnBigIntToNumber(irResult, 'FixedPoint::footprint');\n  }\n\n  static validate(buffer: Uint8Array, _opts?: { params?: never }): { ok: boolean; code?: string; consumed?: number } {\n    if (buffer.length < 9) return { ok: false, code: \"tn.buffer_too_small\", consumed: 9 };\n    return { ok: true, consumed: 9 };\n  }\n\n  static new(mantissa: bigint, scale: number): FixedPoint {\n    const buffer = new Uint8Array(9);\n    const view = new DataView(buffer.buffer);\n\n    let offset = 0;\n    view.setBigInt64(0, mantissa, true); /* mantissa (little-endian) */\n    view.setUint8(8, scale); /* scale */\n\n    return new FixedPoint(buffer);\n  }\n\n  static from_array(buffer: Uint8Array): FixedPoint | null {\n    if (!buffer || buffer.length === undefined) {\n      return null;\n    }\n    const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    const validation = this.validate(buffer);\n    if (!validation.ok) {\n      return null;\n    }\n    return new FixedPoint(buffer);\n  }\n\n}\n\nexport class FixedPointBuilder {\n  private buffer: Uint8Array;\n  private view: DataView;\n\n  constructor() {\n    this.buffer = new Uint8Array(9);\n    this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n  }\n\n  set_mantissa(value: bigint): this {\n    const cast = __tnToBigInt(value);\n    this.view.setBigInt64(0, cast, true);\n    return this;\n  }\n\n  set_scale(value: number): this {\n    this.view.setUint8(8, value);\n    return this;\n  }\n\n  build(): Uint8Array {\n    return this.buffer.slice();\n  }\n\n  buildInto(target: Uint8Array, offset = 0): Uint8Array {\n    if (target.length - offset < this.buffer.length) throw new Error(\"target buffer too small\");\n    target.set(this.buffer, offset);\n    return target;\n  }\n\n  finish(): FixedPoint {\n    const view = FixedPoint.from_array(this.buffer.slice());\n    if (!view) throw new Error(\"failed to build FixedPoint\");\n    return view;\n  }\n}\n\n__tnRegisterFootprint(\"FixedPoint\", (params) => FixedPoint.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"FixedPoint\", (buffer, params) => FixedPoint.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"FixedPoint\", (buffer) => { const result = FixedPoint.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n\n/* ----- TYPE DEFINITION FOR Hash ----- */\n\nconst __tn_ir_Hash = {\n  typeName: \"Hash\",\n  root: { op: \"const\", value: 32n }\n} as const;\n\nexport class Hash {\n  private view: DataView;\n\n  private constructor(private buffer: Uint8Array) {\n    this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n  }\n\n  static __tnCreateView(buffer: Uint8Array, opts?: { fieldContext?: Record<string, number | bigint> }): Hash {\n    if (!buffer || buffer.length === undefined) throw new Error(\"Hash.__tnCreateView requires a Uint8Array\");\n    return new Hash(new Uint8Array(buffer));\n  }\n\n  static builder(): HashBuilder {\n    return new HashBuilder();\n  }\n\n  static fromBuilder(builder: HashBuilder): Hash | null {\n    const buffer = builder.build();\n    return Hash.from_array(buffer);\n  }\n\n  get_bytes(): number[] {\n    const offset = 0;\n    const result: number[] = [];\n    for (let i = 0; i < 32; i++) {\n      result.push(this.view.getUint8((offset + i * 1)));\n    }\n    return result;\n  }\n\n  set_bytes(value: number[]): void {\n    const offset = 0;\n    if (value.length !== 32) {\n      throw new Error('Array length must be 32');\n    }\n    for (let i = 0; i < 32; i++) {\n      this.view.setUint8((offset + i * 1), value[i]);\n    }\n  }\n\n  get bytes(): number[] {\n    return this.get_bytes();\n  }\n\n  set bytes(value: number[]) {\n    this.set_bytes(value);\n  }\n\n  private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n    return __tnEvalFootprint(__tn_ir_Hash.root, { params: __tnParams });\n  }\n\n  private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n    return __tnValidateIrTree(__tn_ir_Hash, buffer, __tnParams);\n  }\n\n  static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n    return this.__tnFootprintInternal(__tnParams);\n  }\n\n  static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n    return this.__tnValidateInternal(buffer, __tnParams);\n  }\n\n  static footprintIr(): bigint {\n    return this.__tnFootprintInternal(Object.create(null));\n  }\n\n  static footprint(): number {\n    const irResult = this.footprintIr();\n      const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n    if (__tnBigIntGreaterThan(irResult, maxSafe)) {\n      throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for Hash');\n    }\n    return __tnBigIntToNumber(irResult, 'Hash::footprint');\n  }\n\n  static validate(buffer: Uint8Array, _opts?: { params?: never }): { ok: boolean; code?: string; consumed?: number } {\n    if (buffer.length < 32) return { ok: false, code: \"tn.buffer_too_small\", consumed: 32 };\n    return { ok: true, consumed: 32 };\n  }\n\n  static from_array(buffer: Uint8Array): Hash | null {\n    if (!buffer || buffer.length === undefined) {\n      return null;\n    }\n    const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    const validation = this.validate(buffer);\n    if (!validation.ok) {\n      return null;\n    }\n    return new Hash(buffer);\n  }\n\n}\n\nexport class HashBuilder {\n  private buffer: Uint8Array;\n  private view: DataView;\n\n  constructor() {\n    this.buffer = new Uint8Array(32);\n    this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n  }\n\n  set_bytes(values: number[]): this {\n    if (values.length !== 32) throw new Error(\"bytes expects 32 elements\");\n    for (let i = 0; i < values.length; i++) {\n      const byteOffset = 0 + i * 1;\n      this.view.setUint8(byteOffset, values[i]);\n    }\n    return this;\n  }\n\n  build(): Uint8Array {\n    return this.buffer.slice();\n  }\n\n  buildInto(target: Uint8Array, offset = 0): Uint8Array {\n    if (target.length - offset < this.buffer.length) throw new Error(\"target buffer too small\");\n    target.set(this.buffer, offset);\n    return target;\n  }\n\n  finish(): Hash {\n    const view = Hash.from_array(this.buffer.slice());\n    if (!view) throw new Error(\"failed to build Hash\");\n    return view;\n  }\n}\n\n__tnRegisterFootprint(\"Hash\", (params) => Hash.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"Hash\", (buffer, params) => Hash.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"Hash\", (buffer) => { const result = Hash.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n\n/* ----- TYPE DEFINITION FOR InstructionData ----- */\n\nconst __tn_ir_InstructionData = {\n  typeName: \"InstructionData\",\n  root: { op: \"align\", alignment: 1, node: { op: \"add\", left: { op: \"add\", left: { op: \"align\", alignment: 2, node: { op: \"const\", value: 2n } }, right: { op: \"align\", alignment: 8, node: { op: \"const\", value: 8n } } }, right: { op: \"align\", alignment: 1, node: { op: \"mul\", left: { op: \"field\", param: \"data.data_size\" }, right: { op: \"const\", value: 1n } } } } }\n} as const;\n\nexport class InstructionData {\n  private view: DataView;\n  private __tnFieldContext: Record<string, number | bigint> | null = null;\n  private __tnParams: InstructionData.Params;\n\n  private constructor(private buffer: Uint8Array, params?: InstructionData.Params, fieldContext?: Record<string, number | bigint>) {\n    this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    this.__tnFieldContext = fieldContext ?? null;\n    if (params) {\n      this.__tnParams = params;\n    } else {\n      const derived = InstructionData.__tnExtractParams(this.view, buffer);\n      if (!derived) {\n        throw new Error(\"InstructionData: failed to derive dynamic parameters\");\n      }\n      this.__tnParams = derived.params;\n    }\n  }\n\n  static __tnCreateView(buffer: Uint8Array, opts?: { params?: InstructionData.Params, fieldContext?: Record<string, number | bigint> }): InstructionData {\n    if (!buffer || buffer.length === undefined) throw new Error(\"InstructionData.__tnCreateView requires a Uint8Array\");\n    let params = opts?.params ?? null;\n    if (!params) {\n      const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n      const derived = InstructionData.__tnExtractParams(view, buffer);\n      if (!derived) throw new Error(\"InstructionData.__tnCreateView: failed to derive params\");\n      params = derived.params;\n    }\n    const instance = new InstructionData(new Uint8Array(buffer), params, opts?.fieldContext);\n    return instance;\n  }\n\n  dynamicParams(): InstructionData.Params {\n    return this.__tnParams;\n  }\n\n  withFieldContext(context: Record<string, number | bigint>): this {\n    this.__tnFieldContext = context;\n    return this;\n  }\n\n  private __tnResolveFieldRef(path: string): number {\n    const getterName = `get_${path.replace(/[.]/g, '_')}`;\n    const getter = (this as any)[getterName];\n    if (typeof getter === \"function\") {\n      const value = getter.call(this);\n      return typeof value === \"bigint\" ? __tnBigIntToNumber(value, \"InstructionData::__tnResolveFieldRef\") : value;\n    }\n    if (this.__tnFieldContext && Object.prototype.hasOwnProperty.call(this.__tnFieldContext, path)) {\n      const contextValue = this.__tnFieldContext[path];\n      return typeof contextValue === \"bigint\" ? __tnBigIntToNumber(contextValue, \"InstructionData::__tnResolveFieldRef\") : contextValue;\n    }\n    throw new Error(\"InstructionData: field reference '\" + path + \"' is not available; provide fieldContext when creating this view\");\n  }\n\n  static builder(): InstructionDataBuilder {\n    return new InstructionDataBuilder();\n  }\n\n  static fromBuilder(builder: InstructionDataBuilder): InstructionData | null {\n    const buffer = builder.build();\n    const params = builder.dynamicParams();\n    return InstructionData.from_array(buffer, { params });\n  }\n\n  static readonly flexibleArrayWriters = Object.freeze([\n    { field: \"data\", method: \"data\", sizeField: \"data_size\", paramKey: \"data_size\", elementSize: 1 },\n  ] as const);\n\n  private static __tnExtractParams(view: DataView, buffer: Uint8Array): { params: InstructionData.Params; derived: Record<string, bigint> | null } | null {\n    if (buffer.length < 10) {\n      return null;\n    }\n    const __tnParam_data_data_size = __tnToBigInt(view.getBigUint64(2, true));\n    const __tnExtractedParams = InstructionData.Params.fromValues({\n      data_data_size: __tnParam_data_data_size,\n    });\n    return { params: __tnExtractedParams, derived: null };\n  }\n\n  get_program_idx(): number {\n    const offset = 0;\n    return this.view.getUint16(offset, true); /* little-endian */\n  }\n\n  set_program_idx(value: number): void {\n    const offset = 0;\n    this.view.setUint16(offset, value, true); /* little-endian */\n  }\n\n  get program_idx(): number {\n    return this.get_program_idx();\n  }\n\n  set program_idx(value: number) {\n    this.set_program_idx(value);\n  }\n\n  get_data_size(): bigint {\n    const offset = 2;\n    return this.view.getBigUint64(offset, true); /* little-endian */\n  }\n\n  set_data_size(value: bigint): void {\n    const offset = 2;\n    this.view.setBigUint64(offset, value, true); /* little-endian */\n  }\n\n  get data_size(): bigint {\n    return this.get_data_size();\n  }\n\n  set data_size(value: bigint) {\n    this.set_data_size(value);\n  }\n\n  get_data_length(): number {\n    return this.__tnResolveFieldRef(\"data_size\");\n  }\n\n  get_data_at(index: number): number {\n    const offset = 10;\n    return this.view.getUint8(offset + index * 1);\n  }\n\n  get_data(): number[] {\n    const len = this.get_data_length();\n    const result: number[] = [];\n    for (let i = 0; i < len; i++) {\n      result.push(this.get_data_at(i));\n    }\n    return result;\n  }\n\n  set_data_at(index: number, value: number): void {\n    const offset = 10;\n    this.view.setUint8((offset + index * 1), value);\n  }\n\n  set_data(value: number[]): void {\n    const len = Math.min(this.get_data_length(), value.length);\n    for (let i = 0; i < len; i++) {\n      this.set_data_at(i, value[i]);\n    }\n  }\n\n  get data(): number[] {\n    return this.get_data();\n  }\n\n  set data(value: number[]) {\n    this.set_data(value);\n  }\n  private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n    return __tnEvalFootprint(__tn_ir_InstructionData.root, { params: __tnParams });\n  }\n\n  private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n    return __tnValidateIrTree(__tn_ir_InstructionData, buffer, __tnParams);\n  }\n\n  static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n    return this.__tnFootprintInternal(__tnParams);\n  }\n\n  static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n    return this.__tnValidateInternal(buffer, __tnParams);\n  }\n\n  static footprintIr(data_data_size: number | bigint): bigint {\n    const params = InstructionData.Params.fromValues({\n      data_data_size: data_data_size,\n    });\n    return this.footprintIrFromParams(params);\n  }\n\n  private static __tnPackParams(params: InstructionData.Params): Record<string, bigint> {\n    const record: Record<string, bigint> = Object.create(null);\n    record[\"data.data_size\"] = params.data_data_size;\n    return record;\n  }\n\n  static footprintIrFromParams(params: InstructionData.Params): bigint {\n    const __tnParams = this.__tnPackParams(params);\n    return this.__tnFootprintInternal(__tnParams);\n  }\n\n  static footprintFromParams(params: InstructionData.Params): number {\n    const irResult = this.footprintIrFromParams(params);\n    const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n    if (__tnBigIntGreaterThan(irResult, maxSafe)) throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for InstructionData');\n    return __tnBigIntToNumber(irResult, 'InstructionData::footprintFromParams');\n  }\n\n  static footprintFromValues(input: { data_data_size: number | bigint }): number {\n    const params = InstructionData.params(input);\n    return this.footprintFromParams(params);\n  }\n\n  static footprint(params: InstructionData.Params): number {\n    return this.footprintFromParams(params);\n  }\n\n  static validate(buffer: Uint8Array, opts?: { params?: InstructionData.Params }): { ok: boolean; code?: string; consumed?: number; params?: InstructionData.Params } {\n    if (!buffer || buffer.length === undefined) {\n      return { ok: false, code: \"tn.invalid_buffer\" };\n    }\n    const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    let params = opts?.params ?? null;\n    if (!params) {\n      const extracted = this.__tnExtractParams(view, buffer);\n      if (!extracted) return { ok: false, code: \"tn.param_extraction_failed\" };\n      params = extracted.params;\n    }\n    const __tnParamsRec = this.__tnPackParams(params);\n    const irResult = this.__tnValidateInternal(buffer, __tnParamsRec);\n    if (!irResult.ok) {\n      return { ok: false, code: irResult.code, consumed: irResult.consumed ? __tnBigIntToNumber(irResult.consumed, 'InstructionData::validate') : undefined, params };\n    }\n    const consumed = irResult.consumed ? __tnBigIntToNumber(irResult.consumed, 'InstructionData::validate') : undefined;\n    return { ok: true, consumed, params };\n  }\n\n  static from_array(buffer: Uint8Array, opts?: { params?: InstructionData.Params }): InstructionData | null {\n    if (!buffer || buffer.length === undefined) {\n      return null;\n    }\n    const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    let params = opts?.params ?? null;\n    if (!params) {\n      const derived = this.__tnExtractParams(view, buffer);\n      if (!derived) return null;\n      params = derived.params;\n    }\n    const validation = this.validate(buffer, { params });\n    if (!validation.ok) {\n      return null;\n    }\n    const cached = validation.params ?? params;\n    const state = new InstructionData(buffer, cached);\n    return state;\n  }\n\n\n}\n\nexport namespace InstructionData {\n  export type Params = {\n    /** ABI path: data.data_size */\n    readonly data_data_size: bigint;\n  };\n\n  export const ParamKeys = Object.freeze({\n    data_data_size: \"data.data_size\",\n  } as const);\n\n  export const Params = {\n    fromValues(input: { data_data_size: number | bigint }): Params {\n      return {\n        data_data_size: __tnToBigInt(input.data_data_size),\n      };\n    },\n    fromBuilder(source: { dynamicParams(): Params } | { params: Params } | Params): Params {\n      if ((source as { dynamicParams?: () => Params }).dynamicParams) {\n        return (source as { dynamicParams(): Params }).dynamicParams();\n      }\n      if ((source as { params?: Params }).params) {\n        return (source as { params: Params }).params;\n      }\n      return source as Params;\n    }\n  };\n\n  export function params(input: { data_data_size: number | bigint }): Params {\n    return Params.fromValues(input);\n  }\n}\n\nexport class InstructionDataBuilder {\n  private buffer: Uint8Array;\n  private view: DataView;\n  private __tnCachedParams: InstructionData.Params | null = null;\n  private __tnLastBuffer: Uint8Array | null = null;\n  private __tnLastParams: InstructionData.Params | null = null;\n  private __tnFam_data: Uint8Array | null = null;\n  private __tnFam_dataCount: number | null = null;\n  private __tnFamWriter_data?: __TnFamWriterResult<InstructionDataBuilder>;\n\n  constructor() {\n    this.buffer = new Uint8Array(10);\n    this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n  }\n\n  private __tnInvalidate(): void {\n    this.__tnCachedParams = null;\n    this.__tnLastBuffer = null;\n    this.__tnLastParams = null;\n  }\n\n  set_program_idx(value: number): this {\n    this.view.setUint16(0, value, true);\n    this.__tnInvalidate();\n    return this;\n  }\n\n  set_data_size(value: bigint): this {\n    const cast = __tnToBigInt(value);\n    this.view.setBigUint64(2, cast, true);\n    this.__tnInvalidate();\n    return this;\n  }\n\n  data(): __TnFamWriterResult<InstructionDataBuilder> {\n    if (!this.__tnFamWriter_data) {\n      this.__tnFamWriter_data = __tnCreateFamWriter(this, \"data\", (payload) => {\n        const bytes = new Uint8Array(payload);\n        const elementCount = bytes.length;\n        this.__tnFam_data = bytes;\n        this.__tnFam_dataCount = elementCount;\n        this.set_data_size(__tnToBigInt(elementCount));\n        this.__tnInvalidate();\n      });\n    }\n    return this.__tnFamWriter_data!;\n  }\n\n  build(): Uint8Array {\n    const params = this.__tnComputeParams();\n    const size = InstructionData.footprintFromParams(params);\n    const buffer = new Uint8Array(size);\n    this.__tnWriteInto(buffer);\n    this.__tnValidateOrThrow(buffer, params);\n    return buffer;\n  }\n\n  buildInto(target: Uint8Array, offset = 0): Uint8Array {\n    const params = this.__tnComputeParams();\n    const size = InstructionData.footprintFromParams(params);\n    if (target.length - offset < size) throw new Error(\"InstructionDataBuilder: target buffer too small\");\n    const slice = target.subarray(offset, offset + size);\n    this.__tnWriteInto(slice);\n    this.__tnValidateOrThrow(slice, params);\n    return target;\n  }\n\n  finish(): InstructionData {\n    const buffer = this.build();\n    const params = this.__tnLastParams ?? this.__tnComputeParams();\n    const view = InstructionData.from_array(buffer, { params });\n    if (!view) throw new Error(\"InstructionDataBuilder: failed to finalize view\");\n    return view;\n  }\n\n  finishView(): InstructionData {\n    return this.finish();\n  }\n\n  dynamicParams(): InstructionData.Params {\n    return this.__tnComputeParams();\n  }\n\n  private __tnComputeParams(): InstructionData.Params {\n    if (this.__tnCachedParams) return this.__tnCachedParams;\n    const params = InstructionData.Params.fromValues({\n      data_data_size: (() => { if (this.__tnFam_dataCount === null) throw new Error(\"InstructionDataBuilder: field 'data' must be written before computing params\"); return __tnToBigInt(this.__tnFam_dataCount); })(),\n    });\n    this.__tnCachedParams = params;\n    return params;\n  }\n\n  private __tnWriteInto(target: Uint8Array): void {\n    target.set(this.buffer, 0);\n    let cursor = this.buffer.length;\n    const __tnLocal_data_bytes = this.__tnFam_data;\n    if (!__tnLocal_data_bytes) throw new Error(\"InstructionDataBuilder: field 'data' must be written before build\");\n    target.set(__tnLocal_data_bytes, cursor);\n    cursor += __tnLocal_data_bytes.length;\n  }\n\n  private __tnValidateOrThrow(buffer: Uint8Array, params: InstructionData.Params): void {\n    const result = InstructionData.validate(buffer, { params });\n    if (!result.ok) {\n      throw new Error(`${ InstructionData }Builder: builder produced invalid buffer (code=${result.code ?? \"unknown\"})`);\n    }\n    this.__tnLastParams = result.params ?? params;\n    this.__tnLastBuffer = buffer;\n  }\n}\n\n__tnRegisterFootprint(\"InstructionData\", (params) => InstructionData.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"InstructionData\", (buffer, params) => InstructionData.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"InstructionData\", (buffer) => { const result = InstructionData.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n\n/* ----- TYPE DEFINITION FOR Pubkey ----- */\n\nconst __tn_ir_Pubkey = {\n  typeName: \"Pubkey\",\n  root: { op: \"const\", value: 32n }\n} as const;\n\nexport class Pubkey {\n  private view: DataView;\n\n  private constructor(private buffer: Uint8Array) {\n    this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n  }\n\n  static __tnCreateView(buffer: Uint8Array, opts?: { fieldContext?: Record<string, number | bigint> }): Pubkey {\n    if (!buffer || buffer.length === undefined) throw new Error(\"Pubkey.__tnCreateView requires a Uint8Array\");\n    return new Pubkey(new Uint8Array(buffer));\n  }\n\n  static builder(): PubkeyBuilder {\n    return new PubkeyBuilder();\n  }\n\n  static fromBuilder(builder: PubkeyBuilder): Pubkey | null {\n    const buffer = builder.build();\n    return Pubkey.from_array(buffer);\n  }\n\n  get_bytes(): number[] {\n    const offset = 0;\n    const result: number[] = [];\n    for (let i = 0; i < 32; i++) {\n      result.push(this.view.getUint8((offset + i * 1)));\n    }\n    return result;\n  }\n\n  set_bytes(value: number[]): void {\n    const offset = 0;\n    if (value.length !== 32) {\n      throw new Error('Array length must be 32');\n    }\n    for (let i = 0; i < 32; i++) {\n      this.view.setUint8((offset + i * 1), value[i]);\n    }\n  }\n\n  get bytes(): number[] {\n    return this.get_bytes();\n  }\n\n  set bytes(value: number[]) {\n    this.set_bytes(value);\n  }\n\n  private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n    return __tnEvalFootprint(__tn_ir_Pubkey.root, { params: __tnParams });\n  }\n\n  private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n    return __tnValidateIrTree(__tn_ir_Pubkey, buffer, __tnParams);\n  }\n\n  static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n    return this.__tnFootprintInternal(__tnParams);\n  }\n\n  static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n    return this.__tnValidateInternal(buffer, __tnParams);\n  }\n\n  static footprintIr(): bigint {\n    return this.__tnFootprintInternal(Object.create(null));\n  }\n\n  static footprint(): number {\n    const irResult = this.footprintIr();\n      const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n    if (__tnBigIntGreaterThan(irResult, maxSafe)) {\n      throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for Pubkey');\n    }\n    return __tnBigIntToNumber(irResult, 'Pubkey::footprint');\n  }\n\n  static validate(buffer: Uint8Array, _opts?: { params?: never }): { ok: boolean; code?: string; consumed?: number } {\n    if (buffer.length < 32) return { ok: false, code: \"tn.buffer_too_small\", consumed: 32 };\n    return { ok: true, consumed: 32 };\n  }\n\n  static from_array(buffer: Uint8Array): Pubkey | null {\n    if (!buffer || buffer.length === undefined) {\n      return null;\n    }\n    const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    const validation = this.validate(buffer);\n    if (!validation.ok) {\n      return null;\n    }\n    return new Pubkey(buffer);\n  }\n\n}\n\nexport class PubkeyBuilder {\n  private buffer: Uint8Array;\n  private view: DataView;\n\n  constructor() {\n    this.buffer = new Uint8Array(32);\n    this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n  }\n\n  set_bytes(values: number[]): this {\n    if (values.length !== 32) throw new Error(\"bytes expects 32 elements\");\n    for (let i = 0; i < values.length; i++) {\n      const byteOffset = 0 + i * 1;\n      this.view.setUint8(byteOffset, values[i]);\n    }\n    return this;\n  }\n\n  build(): Uint8Array {\n    return this.buffer.slice();\n  }\n\n  buildInto(target: Uint8Array, offset = 0): Uint8Array {\n    if (target.length - offset < this.buffer.length) throw new Error(\"target buffer too small\");\n    target.set(this.buffer, offset);\n    return target;\n  }\n\n  finish(): Pubkey {\n    const view = Pubkey.from_array(this.buffer.slice());\n    if (!view) throw new Error(\"failed to build Pubkey\");\n    return view;\n  }\n}\n\n__tnRegisterFootprint(\"Pubkey\", (params) => Pubkey.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"Pubkey\", (buffer, params) => Pubkey.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"Pubkey\", (buffer) => { const result = Pubkey.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n\n/* ----- TYPE DEFINITION FOR Signature ----- */\n\nconst __tn_ir_Signature = {\n  typeName: \"Signature\",\n  root: { op: \"const\", value: 64n }\n} as const;\n\nexport class Signature {\n  private view: DataView;\n\n  private constructor(private buffer: Uint8Array) {\n    this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n  }\n\n  static __tnCreateView(buffer: Uint8Array, opts?: { fieldContext?: Record<string, number | bigint> }): Signature {\n    if (!buffer || buffer.length === undefined) throw new Error(\"Signature.__tnCreateView requires a Uint8Array\");\n    return new Signature(new Uint8Array(buffer));\n  }\n\n  static builder(): SignatureBuilder {\n    return new SignatureBuilder();\n  }\n\n  static fromBuilder(builder: SignatureBuilder): Signature | null {\n    const buffer = builder.build();\n    return Signature.from_array(buffer);\n  }\n\n  get_bytes(): number[] {\n    const offset = 0;\n    const result: number[] = [];\n    for (let i = 0; i < 64; i++) {\n      result.push(this.view.getUint8((offset + i * 1)));\n    }\n    return result;\n  }\n\n  set_bytes(value: number[]): void {\n    const offset = 0;\n    if (value.length !== 64) {\n      throw new Error('Array length must be 64');\n    }\n    for (let i = 0; i < 64; i++) {\n      this.view.setUint8((offset + i * 1), value[i]);\n    }\n  }\n\n  get bytes(): number[] {\n    return this.get_bytes();\n  }\n\n  set bytes(value: number[]) {\n    this.set_bytes(value);\n  }\n\n  private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n    return __tnEvalFootprint(__tn_ir_Signature.root, { params: __tnParams });\n  }\n\n  private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n    return __tnValidateIrTree(__tn_ir_Signature, buffer, __tnParams);\n  }\n\n  static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n    return this.__tnFootprintInternal(__tnParams);\n  }\n\n  static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n    return this.__tnValidateInternal(buffer, __tnParams);\n  }\n\n  static footprintIr(): bigint {\n    return this.__tnFootprintInternal(Object.create(null));\n  }\n\n  static footprint(): number {\n    const irResult = this.footprintIr();\n      const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n    if (__tnBigIntGreaterThan(irResult, maxSafe)) {\n      throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for Signature');\n    }\n    return __tnBigIntToNumber(irResult, 'Signature::footprint');\n  }\n\n  static validate(buffer: Uint8Array, _opts?: { params?: never }): { ok: boolean; code?: string; consumed?: number } {\n    if (buffer.length < 64) return { ok: false, code: \"tn.buffer_too_small\", consumed: 64 };\n    return { ok: true, consumed: 64 };\n  }\n\n  static from_array(buffer: Uint8Array): Signature | null {\n    if (!buffer || buffer.length === undefined) {\n      return null;\n    }\n    const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    const validation = this.validate(buffer);\n    if (!validation.ok) {\n      return null;\n    }\n    return new Signature(buffer);\n  }\n\n}\n\nexport class SignatureBuilder {\n  private buffer: Uint8Array;\n  private view: DataView;\n\n  constructor() {\n    this.buffer = new Uint8Array(64);\n    this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n  }\n\n  set_bytes(values: number[]): this {\n    if (values.length !== 64) throw new Error(\"bytes expects 64 elements\");\n    for (let i = 0; i < values.length; i++) {\n      const byteOffset = 0 + i * 1;\n      this.view.setUint8(byteOffset, values[i]);\n    }\n    return this;\n  }\n\n  build(): Uint8Array {\n    return this.buffer.slice();\n  }\n\n  buildInto(target: Uint8Array, offset = 0): Uint8Array {\n    if (target.length - offset < this.buffer.length) throw new Error(\"target buffer too small\");\n    target.set(this.buffer, offset);\n    return target;\n  }\n\n  finish(): Signature {\n    const view = Signature.from_array(this.buffer.slice());\n    if (!view) throw new Error(\"failed to build Signature\");\n    return view;\n  }\n}\n\n__tnRegisterFootprint(\"Signature\", (params) => Signature.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"Signature\", (buffer, params) => Signature.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"Signature\", (buffer) => { const result = Signature.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n\n/* ----- TYPE DEFINITION FOR Timestamp ----- */\n\nconst __tn_ir_Timestamp = {\n  typeName: \"Timestamp\",\n  root: { op: \"const\", value: 8n }\n} as const;\n\nexport class Timestamp {\n  private view: DataView;\n\n  private constructor(private buffer: Uint8Array) {\n    this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n  }\n\n  static __tnCreateView(buffer: Uint8Array, opts?: { fieldContext?: Record<string, number | bigint> }): Timestamp {\n    if (!buffer || buffer.length === undefined) throw new Error(\"Timestamp.__tnCreateView requires a Uint8Array\");\n    return new Timestamp(new Uint8Array(buffer));\n  }\n\n  static builder(): TimestampBuilder {\n    return new TimestampBuilder();\n  }\n\n  static fromBuilder(builder: TimestampBuilder): Timestamp | null {\n    const buffer = builder.build();\n    return Timestamp.from_array(buffer);\n  }\n\n  get_seconds(): bigint {\n    const offset = 0;\n    return this.view.getBigInt64(offset, true); /* little-endian */\n  }\n\n  set_seconds(value: bigint): void {\n    const offset = 0;\n    this.view.setBigInt64(offset, value, true); /* little-endian */\n  }\n\n  get seconds(): bigint {\n    return this.get_seconds();\n  }\n\n  set seconds(value: bigint) {\n    this.set_seconds(value);\n  }\n\n  private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n    return __tnEvalFootprint(__tn_ir_Timestamp.root, { params: __tnParams });\n  }\n\n  private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n    return __tnValidateIrTree(__tn_ir_Timestamp, buffer, __tnParams);\n  }\n\n  static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n    return this.__tnFootprintInternal(__tnParams);\n  }\n\n  static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n    return this.__tnValidateInternal(buffer, __tnParams);\n  }\n\n  static footprintIr(): bigint {\n    return this.__tnFootprintInternal(Object.create(null));\n  }\n\n  static footprint(): number {\n    const irResult = this.footprintIr();\n      const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n    if (__tnBigIntGreaterThan(irResult, maxSafe)) {\n      throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for Timestamp');\n    }\n    return __tnBigIntToNumber(irResult, 'Timestamp::footprint');\n  }\n\n  static validate(buffer: Uint8Array, _opts?: { params?: never }): { ok: boolean; code?: string; consumed?: number } {\n    if (buffer.length < 8) return { ok: false, code: \"tn.buffer_too_small\", consumed: 8 };\n    return { ok: true, consumed: 8 };\n  }\n\n  static new(seconds: bigint): Timestamp {\n    const buffer = new Uint8Array(8);\n    const view = new DataView(buffer.buffer);\n\n    let offset = 0;\n    view.setBigInt64(0, seconds, true); /* seconds (little-endian) */\n\n    return new Timestamp(buffer);\n  }\n\n  static from_array(buffer: Uint8Array): Timestamp | null {\n    if (!buffer || buffer.length === undefined) {\n      return null;\n    }\n    const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    const validation = this.validate(buffer);\n    if (!validation.ok) {\n      return null;\n    }\n    return new Timestamp(buffer);\n  }\n\n}\n\nexport class TimestampBuilder {\n  private buffer: Uint8Array;\n  private view: DataView;\n\n  constructor() {\n    this.buffer = new Uint8Array(8);\n    this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n  }\n\n  set_seconds(value: bigint): this {\n    const cast = __tnToBigInt(value);\n    this.view.setBigInt64(0, cast, true);\n    return this;\n  }\n\n  build(): Uint8Array {\n    return this.buffer.slice();\n  }\n\n  buildInto(target: Uint8Array, offset = 0): Uint8Array {\n    if (target.length - offset < this.buffer.length) throw new Error(\"target buffer too small\");\n    target.set(this.buffer, offset);\n    return target;\n  }\n\n  finish(): Timestamp {\n    const view = Timestamp.from_array(this.buffer.slice());\n    if (!view) throw new Error(\"failed to build Timestamp\");\n    return view;\n  }\n}\n\n__tnRegisterFootprint(\"Timestamp\", (params) => Timestamp.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"Timestamp\", (buffer, params) => Timestamp.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"Timestamp\", (buffer) => { const result = Timestamp.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n","/* Auto-generated TypeScript code */\n/* WARNING: Do not modify this file directly. It is generated from ABI definitions. */\n\nimport { Hash, Pubkey } from \"../../common/primitives/types\";\n\ntype __TnIrNode =\n  | { readonly op: \"zero\" }\n  | { readonly op: \"const\"; readonly value: bigint }\n  | { readonly op: \"field\"; readonly param: string }\n  | {\n      readonly op: \"add\";\n      readonly left: __TnIrNode;\n      readonly right: __TnIrNode;\n    }\n  | {\n      readonly op: \"sub\";\n      readonly left: __TnIrNode;\n      readonly right: __TnIrNode;\n    }\n  | {\n      readonly op: \"mul\";\n      readonly left: __TnIrNode;\n      readonly right: __TnIrNode;\n    }\n  | {\n      readonly op:\n        | \"div\"\n        | \"mod\"\n        | \"bitAnd\"\n        | \"bitOr\"\n        | \"bitXor\"\n        | \"leftShift\"\n        | \"rightShift\";\n      readonly left: __TnIrNode;\n      readonly right: __TnIrNode;\n    }\n  | {\n      readonly op: \"align\";\n      readonly alignment: number;\n      readonly node: __TnIrNode;\n    }\n  | {\n      readonly op: \"switch\";\n      readonly tag: string;\n      readonly cases: readonly { readonly value: number; readonly node: __TnIrNode }[];\n      readonly default?: __TnIrNode;\n    }\n  | {\n      readonly op: \"call\";\n      readonly typeName: string;\n      readonly args: readonly { readonly name: string; readonly source: string }[];\n    }\n  | {\n      readonly op: \"sumOverArray\";\n      readonly count: __TnIrNode;\n      readonly elementTypeName: string;\n      readonly fieldName: string;\n    };\n\ntype __TnIrContext = {\n  params: Record<string, bigint>;\n  buffer?: Uint8Array;\n  typeName?: string;\n};\n\ntype __TnValidateResult = {\n  ok: boolean;\n  code?: string;\n  consumed?: bigint;\n  params?: Record<string, bigint>;\n};\ntype __TnEvalResult =\n  | { ok: true; value: bigint }\n  | { ok: false; code: string };\ntype __TnBuilderLike = { build(): Uint8Array };\ntype __TnStructFieldInput =\n  | Uint8Array\n  | __TnBuilderLike\n  | { buffer?: Uint8Array }\n  | { asUint8Array?: () => Uint8Array }\n  | { bytes?: () => Uint8Array };\ntype __TnVariantDescriptor = {\n  readonly name: string;\n  readonly tag: number;\n  readonly payloadSize: number | null;\n  readonly payloadType?: string;\n  readonly createPayloadBuilder?: () => unknown | null;\n};\ntype __TnVariantSelectorResult<Parent> = {\n  select(\n    name: string\n  ): { writePayload(payload: Uint8Array | __TnBuilderLike): { finish(): Parent } };\n  finish(): Parent;\n};\ntype __TnFamWriterResult<Parent> = {\n  write(payload: Uint8Array | __TnBuilderLike): { finish(): Parent };\n  finish(): Parent;\n};\ntype __TnConsole = { warn?: (...args: unknown[]) => void };\n\nconst __tnWarnings = new Set<string>();\nconst __tnHasNativeBigInt = typeof BigInt === \"function\";\nconst __tnHasBigIntDataView =\n  typeof DataView !== \"undefined\" &&\n  typeof DataView.prototype.getBigInt64 === \"function\" &&\n  typeof DataView.prototype.getBigUint64 === \"function\" &&\n  typeof DataView.prototype.setBigInt64 === \"function\" &&\n  typeof DataView.prototype.setBigUint64 === \"function\";\nconst __tnConsole: __TnConsole | undefined =\n  typeof globalThis !== \"undefined\"\n    ? (globalThis as { console?: __TnConsole }).console\n    : undefined;\n\nfunction __tnLogWarn(message: string): void {\n  if (__tnConsole && typeof __tnConsole.warn === \"function\") {\n    __tnConsole.warn(message);\n  }\n}\n\nfunction __tnWarnOnce(message: string): void {\n  if (!__tnWarnings.has(message)) {\n    __tnWarnings.add(message);\n    __tnLogWarn(message);\n  }\n}\n\nfunction __tnResolveBuilderInput(\n  input: Uint8Array | __TnBuilderLike,\n  context: string\n): Uint8Array {\n  if (input instanceof Uint8Array) {\n    return new Uint8Array(input);\n  }\n  if (input && typeof (input as __TnBuilderLike).build === \"function\") {\n    const built = (input as __TnBuilderLike).build();\n    if (!(built instanceof Uint8Array)) {\n      throw new Error(`${context}: builder did not return Uint8Array`);\n    }\n    return new Uint8Array(built);\n  }\n  throw new Error(`${context}: expected Uint8Array or builder`);\n}\n\nfunction __tnResolveStructFieldInput(\n  input: __TnStructFieldInput,\n  context: string\n): Uint8Array {\n  if (\n    input instanceof Uint8Array ||\n    (input && typeof (input as __TnBuilderLike).build === \"function\")\n  ) {\n    return __tnResolveBuilderInput(input as Uint8Array | __TnBuilderLike, context);\n  }\n  if (input && typeof (input as { asUint8Array?: () => Uint8Array }).asUint8Array === \"function\") {\n    const bytes = (input as { asUint8Array: () => Uint8Array }).asUint8Array();\n    return new Uint8Array(bytes);\n  }\n  if (input && typeof (input as { bytes?: () => Uint8Array }).bytes === \"function\") {\n    const bytes = (input as { bytes: () => Uint8Array }).bytes();\n    return new Uint8Array(bytes);\n  }\n  if (input && (input as { buffer?: unknown }).buffer instanceof Uint8Array) {\n    return new Uint8Array((input as { buffer: Uint8Array }).buffer);\n  }\n  throw new Error(`${context}: expected Uint8Array, builder, or view-like value`);\n}\n\nfunction __tnMaybeCallBuilder(ctor: unknown): unknown | null {\n  if (!ctor) {\n    return null;\n  }\n  const builderFn = (ctor as { builder?: () => unknown }).builder;\n  return typeof builderFn === \"function\" ? builderFn() : null;\n}\n\nfunction __tnCreateVariantSelector<Parent, Descriptor extends __TnVariantDescriptor>(\n  parent: Parent,\n  descriptors: readonly Descriptor[],\n  assign: (descriptor: Descriptor, payload: Uint8Array) => void\n): __TnVariantSelectorResult<Parent> {\n  return {\n    select(name: string) {\n      const descriptor = descriptors.find((variant) => variant.name === name);\n      if (!descriptor) {\n        throw new Error(`Unknown variant '${name}'`);\n      }\n      return {\n        writePayload(payload: Uint8Array | __TnBuilderLike) {\n          const bytes = __tnResolveBuilderInput(\n            payload,\n            `variant ${descriptor.name}`\n          );\n          if (\n            descriptor.payloadSize !== null &&\n            bytes.length !== descriptor.payloadSize\n          ) {\n            throw new Error(\n              `Payload for ${descriptor.name} must be ${descriptor.payloadSize} bytes`\n            );\n          }\n          assign(descriptor, bytes);\n          return {\n            finish(): Parent {\n              return parent;\n            },\n          };\n        },\n      };\n    },\n    finish(): Parent {\n      return parent;\n    },\n  };\n}\n\nfunction __tnCreateFamWriter<Parent>(\n  parent: Parent,\n  fieldName: string,\n  assign: (bytes: Uint8Array) => void\n): __TnFamWriterResult<Parent> {\n  let hasWritten = false;\n  return {\n    write(payload: Uint8Array | __TnBuilderLike) {\n      const bytes = __tnResolveBuilderInput(\n        payload,\n        `flexible array '${fieldName}'`\n      );\n      const copy = new Uint8Array(bytes);\n      assign(copy);\n      hasWritten = true;\n      return {\n        finish(): Parent {\n          return parent;\n        },\n      };\n    },\n    finish(): Parent {\n      if (!hasWritten) {\n        throw new Error(\n          `flexible array '${fieldName}' requires write() before finish()`\n        );\n      }\n      return parent;\n    },\n  };\n}\n\nconst __tnMask32 = __tnHasNativeBigInt\n  ? (BigInt(1) << BigInt(32)) - BigInt(1)\n  : 0xffffffff;\nconst __tnSignBit32 = __tnHasNativeBigInt\n  ? BigInt(1) << BigInt(31)\n  : 0x80000000;\n\nfunction __tnToBigInt(value: number | bigint): bigint {\n  if (__tnHasNativeBigInt) {\n    return typeof value === \"bigint\" ? value : BigInt(value);\n  }\n  if (typeof value === \"bigint\") return value;\n  if (!Number.isFinite(value)) {\n    throw new Error(\"IR runtime received non-finite numeric input\");\n  }\n  if (!Number.isSafeInteger(value)) {\n    __tnWarnOnce(\n      `[thru-net] Precision loss while polyfilling BigInt (value=${value})`\n    );\n  }\n  return (value as unknown) as bigint;\n}\n\nfunction __tnBigIntToNumber(value: bigint, context: string): number {\n  if (__tnHasNativeBigInt) {\n    const converted = Number(value);\n    if (!Number.isFinite(converted)) {\n      throw new Error(`${context} overflowed Number range`);\n    }\n    return converted;\n  }\n  return value as unknown as number;\n}\n\nfunction __tnBigIntEquals(lhs: bigint, rhs: bigint): boolean {\n  if (__tnHasNativeBigInt) return lhs === rhs;\n  return (lhs as unknown as number) === (rhs as unknown as number);\n}\n\nfunction __tnBigIntGreaterThan(lhs: bigint, rhs: bigint): boolean {\n  if (__tnHasNativeBigInt) return lhs > rhs;\n  return (lhs as unknown as number) > (rhs as unknown as number);\n}\n\nfunction __tnPopcount(value: number | bigint): number {\n  let v =\n    typeof value === \"bigint\"\n      ? Number(value & BigInt(0xffffffff))\n      : Number(value) >>> 0;\n  v = v - ((v >>> 1) & 0x55555555);\n  v = (v & 0x33333333) + ((v >>> 2) & 0x33333333);\n  return (((v + (v >>> 4)) & 0x0f0f0f0f) * 0x01010101) >>> 24;\n}\n\nfunction __tnRaiseIrError(code: string, message: string): never {\n  const err = new Error(message);\n  (err as { code?: string }).code = code;\n  throw err;\n}\n\nfunction __tnCheckedAdd(lhs: bigint, rhs: bigint): bigint {\n  if (__tnHasNativeBigInt) {\n    const result = (lhs as bigint) + (rhs as bigint);\n    if (result < BigInt(0)) {\n      __tnRaiseIrError(\n        \"tn.ir.overflow\",\n        \"IR runtime detected negative size via addition\"\n      );\n    }\n    return result;\n  }\n  const left = lhs as unknown as number;\n  const right = rhs as unknown as number;\n  const sum = left + right;\n  if (sum < 0 || !Number.isFinite(sum)) {\n    __tnRaiseIrError(\n      \"tn.ir.overflow\",\n      \"IR runtime detected invalid addition result\"\n    );\n  }\n  if (!Number.isSafeInteger(sum)) {\n    __tnWarnOnce(\"[thru-net] Precision loss while polyfilling BigInt addition\");\n  }\n  return (sum as unknown) as bigint;\n}\n\nfunction __tnCheckedSub(lhs: bigint, rhs: bigint): bigint {\n  if (__tnHasNativeBigInt) {\n    const result = (lhs as bigint) - (rhs as bigint);\n    if (result < BigInt(0)) {\n      __tnRaiseIrError(\n        \"tn.ir.overflow\",\n        \"IR runtime detected negative size via subtraction\"\n      );\n    }\n    return result;\n  }\n  const left = lhs as unknown as number;\n  const right = rhs as unknown as number;\n  const diff = left - right;\n  if (diff < 0 || !Number.isFinite(diff)) {\n    __tnRaiseIrError(\n      \"tn.ir.overflow\",\n      \"IR runtime detected invalid subtraction result\"\n    );\n  }\n  if (!Number.isSafeInteger(diff)) {\n    __tnWarnOnce(\"[thru-net] Precision loss while polyfilling BigInt subtraction\");\n  }\n  return (diff as unknown) as bigint;\n}\n\nfunction __tnCheckedMul(lhs: bigint, rhs: bigint): bigint {\n  if (__tnHasNativeBigInt) {\n    const result = (lhs as bigint) * (rhs as bigint);\n    if (result < BigInt(0)) {\n      __tnRaiseIrError(\n        \"tn.ir.overflow\",\n        \"IR runtime detected negative size via multiplication\"\n      );\n    }\n    return result;\n  }\n  const left = lhs as unknown as number;\n  const right = rhs as unknown as number;\n  const product = left * right;\n  if (product < 0 || !Number.isFinite(product)) {\n    __tnRaiseIrError(\n      \"tn.ir.overflow\",\n      \"IR runtime detected invalid multiplication result\"\n    );\n  }\n  if (!Number.isSafeInteger(product)) {\n    __tnWarnOnce(\n      \"[thru-net] Precision loss while polyfilling BigInt multiplication\"\n    );\n  }\n  return (product as unknown) as bigint;\n}\n\nfunction __tnCheckedDiv(lhs: bigint, rhs: bigint): bigint {\n  if (__tnBigIntEquals(rhs, __tnToBigInt(0))) {\n    __tnRaiseIrError(\"tn.ir.overflow\", \"IR runtime division by zero\");\n  }\n  if (__tnHasNativeBigInt) return (lhs as bigint) / (rhs as bigint);\n  const quotient = Math.floor((lhs as unknown as number) / (rhs as unknown as number));\n  return (quotient as unknown) as bigint;\n}\n\nfunction __tnCheckedMod(lhs: bigint, rhs: bigint): bigint {\n  if (__tnBigIntEquals(rhs, __tnToBigInt(0))) {\n    __tnRaiseIrError(\"tn.ir.overflow\", \"IR runtime modulo by zero\");\n  }\n  if (__tnHasNativeBigInt) return (lhs as bigint) % (rhs as bigint);\n  return (((lhs as unknown as number) % (rhs as unknown as number)) as unknown) as bigint;\n}\n\nfunction __tnBitwise(\n  lhs: bigint,\n  rhs: bigint,\n  op: \"and\" | \"or\" | \"xor\"\n): bigint {\n  if (__tnHasNativeBigInt) {\n    if (op === \"and\") return (lhs as bigint) & (rhs as bigint);\n    if (op === \"or\") return (lhs as bigint) | (rhs as bigint);\n    return (lhs as bigint) ^ (rhs as bigint);\n  }\n  const left = lhs as unknown as number;\n  const right = rhs as unknown as number;\n  const maxU32 = 0xffffffff;\n  if (\n    !Number.isInteger(left) ||\n    !Number.isInteger(right) ||\n    left < 0 ||\n    right < 0 ||\n    left > maxU32 ||\n    right > maxU32\n  ) {\n    __tnRaiseIrError(\n      \"tn.ir.overflow\",\n      \"IR runtime bitwise operation requires BigInt for values outside u32 range\"\n    );\n  }\n  const result = op === \"and\" ? left & right : op === \"or\" ? left | right : left ^ right;\n  return ((result >>> 0) as unknown) as bigint;\n}\n\nfunction __tnCheckedShift(\n  lhs: bigint,\n  rhs: bigint,\n  direction: \"left\" | \"right\"\n): bigint {\n  const amount = __tnBigIntToNumber(rhs, \"IR shift amount\");\n  if (amount < 0 || amount >= 64 || !Number.isInteger(amount)) {\n    __tnRaiseIrError(\"tn.ir.overflow\", \"IR runtime invalid shift amount\");\n  }\n  if (__tnHasNativeBigInt) {\n    const shift = BigInt(amount);\n    return direction === \"left\" ? (lhs as bigint) << shift : (lhs as bigint) >> shift;\n  }\n  const value = lhs as unknown as number;\n  const result = direction === \"left\" ? value * 2 ** amount : Math.floor(value / 2 ** amount);\n  if (!Number.isSafeInteger(result)) {\n    __tnWarnOnce(\"[thru-net] Precision loss while polyfilling BigInt shift\");\n  }\n  return (result as unknown) as bigint;\n}\n\nfunction __tnAlign(value: bigint, alignment: number): bigint {\n  if (alignment <= 1) return value;\n  const alignBig = __tnToBigInt(alignment);\n  if (__tnHasNativeBigInt) {\n    const remainder = value % alignBig;\n    if (__tnBigIntEquals(remainder, __tnToBigInt(0))) {\n      return value;\n    }\n    const delta = alignBig - remainder;\n    return __tnCheckedAdd(value, delta);\n  }\n  const current = __tnBigIntToNumber(value, \"IR align\");\n  const alignNum = alignment >>> 0;\n  const remainder = current % alignNum;\n  const next = remainder === 0 ? current : current + (alignNum - remainder);\n  return __tnToBigInt(next);\n}\n\nfunction __tnSplitUint64(value: bigint): { high: number; low: number } {\n  if (__tnHasNativeBigInt) {\n    const low = Number(value & (__tnMask32 as bigint));\n    const high = Number((value >> BigInt(32)) & (__tnMask32 as bigint));\n    return { high, low };\n  }\n  const num = __tnBigIntToNumber(value, \"DataView.setBigUint64\");\n  const low = num >>> 0;\n  const high = Math.floor(num / 4294967296) >>> 0;\n  return { high, low };\n}\n\nfunction __tnSplitInt64(value: bigint): { high: number; low: number } {\n  if (__tnHasNativeBigInt) {\n    const low = Number(value & (__tnMask32 as bigint));\n    let high = Number((value >> BigInt(32)) & (__tnMask32 as bigint));\n    if ((BigInt(high) & (__tnSignBit32 as bigint)) !== BigInt(0)) {\n      high -= 0x100000000;\n    }\n    return { high, low };\n  }\n  const num = __tnBigIntToNumber(value, \"DataView.setBigInt64\");\n  const low = num >>> 0;\n  const high = Math.floor(num / 4294967296);\n  return { high, low };\n}\n\nfunction __tnPolyfillReadUint64(\n  view: DataView,\n  offset: number,\n  littleEndian: boolean\n): bigint {\n  const low = littleEndian\n    ? view.getUint32(offset, true)\n    : view.getUint32(offset + 4, false);\n  const high = littleEndian\n    ? view.getUint32(offset + 4, true)\n    : view.getUint32(offset, false);\n  if (__tnHasNativeBigInt) {\n    return (BigInt(high) << BigInt(32)) | BigInt(low);\n  }\n  const value = high * 4294967296 + low;\n  if (!Number.isSafeInteger(value)) {\n    __tnWarnOnce(\n      \"[thru-net] Precision loss while polyfilling DataView.getBigUint64\"\n    );\n  }\n  return (value as unknown) as bigint;\n}\n\nfunction __tnPolyfillReadInt64(\n  view: DataView,\n  offset: number,\n  littleEndian: boolean\n): bigint {\n  const low = littleEndian\n    ? view.getUint32(offset, true)\n    : view.getUint32(offset + 4, false);\n  const high = littleEndian\n    ? view.getInt32(offset + 4, true)\n    : view.getInt32(offset, false);\n  if (__tnHasNativeBigInt) {\n    return (BigInt(high) << BigInt(32)) | BigInt(low);\n  }\n  const value = high * 4294967296 + low;\n  if (!Number.isSafeInteger(value)) {\n    __tnWarnOnce(\n      \"[thru-net] Precision loss while polyfilling DataView.getBigInt64\"\n    );\n  }\n  return (value as unknown) as bigint;\n}\n\nfunction __tnPolyfillWriteUint64(\n  view: DataView,\n  offset: number,\n  value: bigint,\n  littleEndian: boolean\n): void {\n  const parts = __tnSplitUint64(value);\n  if (littleEndian) {\n    view.setUint32(offset, parts.low, true);\n    view.setUint32(offset + 4, parts.high, true);\n  } else {\n    view.setUint32(offset, parts.high, false);\n    view.setUint32(offset + 4, parts.low, false);\n  }\n}\n\nfunction __tnPolyfillWriteInt64(\n  view: DataView,\n  offset: number,\n  value: bigint,\n  littleEndian: boolean\n): void {\n  const parts = __tnSplitInt64(value);\n  if (littleEndian) {\n    view.setUint32(offset, parts.low >>> 0, true);\n    view.setInt32(offset + 4, parts.high | 0, true);\n  } else {\n    view.setInt32(offset, parts.high | 0, false);\n    view.setUint32(offset + 4, parts.low >>> 0, false);\n  }\n}\n\nif (typeof DataView !== \"undefined\" && !__tnHasBigIntDataView) {\n  const proto = DataView.prototype as unknown as Record<string, unknown>;\n  if (typeof proto.getBigUint64 !== \"function\") {\n    (proto as any).getBigUint64 = function (\n      offset: number,\n      littleEndian?: boolean\n    ): bigint {\n      __tnWarnOnce(\n        \"[thru-net] Polyfilling DataView.getBigUint64; precision may be lost\"\n      );\n      return __tnPolyfillReadUint64(this, offset, !!littleEndian);\n    };\n  }\n  if (typeof proto.getBigInt64 !== \"function\") {\n    (proto as any).getBigInt64 = function (\n      offset: number,\n      littleEndian?: boolean\n    ): bigint {\n      __tnWarnOnce(\n        \"[thru-net] Polyfilling DataView.getBigInt64; precision may be lost\"\n      );\n      return __tnPolyfillReadInt64(this, offset, !!littleEndian);\n    };\n  }\n  if (typeof proto.setBigUint64 !== \"function\") {\n    (proto as any).setBigUint64 = function (\n      offset: number,\n      value: bigint,\n      littleEndian?: boolean\n    ): void {\n      __tnWarnOnce(\n        \"[thru-net] Polyfilling DataView.setBigUint64; precision may be lost\"\n      );\n      __tnPolyfillWriteUint64(this, offset, value, !!littleEndian);\n    };\n  }\n  if (typeof proto.setBigInt64 !== \"function\") {\n    (proto as any).setBigInt64 = function (\n      offset: number,\n      value: bigint,\n      littleEndian?: boolean\n    ): void {\n      __tnWarnOnce(\n        \"[thru-net] Polyfilling DataView.setBigInt64; precision may be lost\"\n      );\n      __tnPolyfillWriteInt64(this, offset, value, !!littleEndian);\n    };\n  }\n  if (!__tnHasNativeBigInt) {\n    __tnWarnOnce(\n      \"[thru-net] BigInt is unavailable; falling back to lossy 64-bit polyfill\"\n    );\n  }\n}\n\nconst __tnFootprintRegistry: Record<\n  string,\n  (params: Record<string, bigint>) => bigint\n> = {};\nconst __tnValidateRegistry: Record<\n  string,\n  (buffer: Uint8Array, params: Record<string, bigint>) => __TnValidateResult\n> = {};\nconst __tnDynamicValidateRegistry: Record<\n  string,\n  (buffer: Uint8Array) => __TnValidateResult\n> = {};\n\nfunction __tnRegisterFootprint(\n  typeName: string,\n  fn: (params: Record<string, bigint>) => bigint\n): void {\n  __tnFootprintRegistry[typeName] = fn;\n}\n\nfunction __tnRegisterValidate(\n  typeName: string,\n  fn: (buffer: Uint8Array, params: Record<string, bigint>) => __TnValidateResult\n): void {\n  __tnValidateRegistry[typeName] = fn;\n}\n\nfunction __tnRegisterDynamicValidate(\n  typeName: string,\n  fn: (buffer: Uint8Array) => __TnValidateResult\n): void {\n  __tnDynamicValidateRegistry[typeName] = fn;\n}\n\nfunction __tnInvokeFootprint(\n  typeName: string,\n  params: Record<string, bigint>\n): bigint {\n  const fn = __tnFootprintRegistry[typeName];\n  if (!fn) throw new Error(`IR runtime missing footprint for ${typeName}`);\n  return fn(params);\n}\n\nfunction __tnInvokeValidate(\n  typeName: string,\n  buffer: Uint8Array,\n  params: Record<string, bigint>\n): __TnValidateResult {\n  const fn = __tnValidateRegistry[typeName];\n  if (!fn) throw new Error(`IR runtime missing validate helper for ${typeName}`);\n  return fn(buffer, params);\n}\n\nfunction __tnInvokeDynamicValidate(\n  typeName: string,\n  buffer: Uint8Array\n): __TnValidateResult {\n  const fn = __tnDynamicValidateRegistry[typeName];\n  if (!fn) throw new Error(`IR runtime missing dynamic validate helper for ${typeName}`);\n  return fn(buffer);\n}\n\nfunction __tnEvalFootprint(node: __TnIrNode, ctx: __TnIrContext): bigint {\n  return __tnEvalIrNode(node, ctx, __tnToBigInt(0));\n}\n\nfunction __tnTryEvalFootprint(\n  node: __TnIrNode,\n  ctx: __TnIrContext\n): __TnEvalResult {\n  return __tnTryEvalIr(node, ctx);\n}\n\nfunction __tnTryEvalIr(\n  node: __TnIrNode,\n  ctx: __TnIrContext\n): __TnEvalResult {\n  try {\n    return { ok: true, value: __tnEvalIrNode(node, ctx, __tnToBigInt(0)) };\n  } catch (err) {\n    return { ok: false, code: __tnNormalizeIrError(err) };\n  }\n}\n\nfunction __tnIsEvalError(result: __TnEvalResult): result is { ok: false; code: string } {\n  return result.ok === false;\n}\n\nfunction __tnValidateIrTree(\n  ir: { readonly typeName: string; readonly root: __TnIrNode },\n  buffer: Uint8Array,\n  params: Record<string, bigint>\n): __TnValidateResult {\n  const evalResult = __tnTryEvalIr(ir.root, {\n    params,\n    buffer,\n    typeName: ir.typeName,\n  });\n  if (__tnIsEvalError(evalResult)) {\n    return { ok: false, code: evalResult.code };\n  }\n  const required = evalResult.value;\n  const available = __tnToBigInt(buffer.length);\n  if (__tnBigIntGreaterThan(required, available)) {\n    return { ok: false, code: \"tn.buffer_too_small\", consumed: required };\n  }\n  return { ok: true, consumed: required };\n}\n\nfunction __tnEvalIrNode(\n  node: __TnIrNode,\n  ctx: __TnIrContext,\n  baseOffset: bigint\n): bigint {\n  switch (node.op) {\n    case \"zero\":\n      return __tnToBigInt(0);\n    case \"const\":\n      return node.value;\n    case \"field\": {\n      if (node.param === \"__buffer_size\" && ctx.buffer) {\n        return __tnToBigInt(ctx.buffer.length);\n      }\n      const val = ctx.params[node.param];\n      if (val === undefined) {\n        const prefix = ctx.typeName ? `${ctx.typeName}: ` : \"\";\n        __tnRaiseIrError(\n          \"tn.ir.missing_param\",\n          `${prefix}Missing IR parameter '${node.param}'`\n        );\n      }\n      return val;\n    }\n    case \"add\":\n      {\n        const left = __tnEvalIrNode(node.left, ctx, baseOffset);\n        const right = __tnEvalIrNode(\n          node.right,\n          ctx,\n          __tnCheckedAdd(baseOffset, left)\n        );\n        return __tnCheckedAdd(left, right);\n      }\n    case \"sub\":\n      return __tnCheckedSub(\n        __tnEvalIrNode(node.left, ctx, baseOffset),\n        __tnEvalIrNode(node.right, ctx, baseOffset)\n      );\n    case \"mul\":\n      return __tnCheckedMul(\n        __tnEvalIrNode(node.left, ctx, baseOffset),\n        __tnEvalIrNode(node.right, ctx, baseOffset)\n      );\n    case \"div\":\n      return __tnCheckedDiv(\n        __tnEvalIrNode(node.left, ctx, baseOffset),\n        __tnEvalIrNode(node.right, ctx, baseOffset)\n      );\n    case \"mod\":\n      return __tnCheckedMod(\n        __tnEvalIrNode(node.left, ctx, baseOffset),\n        __tnEvalIrNode(node.right, ctx, baseOffset)\n      );\n    case \"bitAnd\":\n      return __tnBitwise(\n        __tnEvalIrNode(node.left, ctx, baseOffset),\n        __tnEvalIrNode(node.right, ctx, baseOffset),\n        \"and\"\n      );\n    case \"bitOr\":\n      return __tnBitwise(\n        __tnEvalIrNode(node.left, ctx, baseOffset),\n        __tnEvalIrNode(node.right, ctx, baseOffset),\n        \"or\"\n      );\n    case \"bitXor\":\n      return __tnBitwise(\n        __tnEvalIrNode(node.left, ctx, baseOffset),\n        __tnEvalIrNode(node.right, ctx, baseOffset),\n        \"xor\"\n      );\n    case \"leftShift\":\n      return __tnCheckedShift(\n        __tnEvalIrNode(node.left, ctx, baseOffset),\n        __tnEvalIrNode(node.right, ctx, baseOffset),\n        \"left\"\n      );\n    case \"rightShift\":\n      return __tnCheckedShift(\n        __tnEvalIrNode(node.left, ctx, baseOffset),\n        __tnEvalIrNode(node.right, ctx, baseOffset),\n        \"right\"\n      );\n    case \"align\":\n      return __tnAlign(__tnEvalIrNode(node.node, ctx, baseOffset), node.alignment);\n    case \"switch\": {\n      const tagVal = ctx.params[node.tag];\n      if (tagVal === undefined) {\n        const prefix = ctx.typeName ? `${ctx.typeName}: ` : \"\";\n        __tnRaiseIrError(\n          \"tn.ir.missing_param\",\n          `${prefix}Missing IR switch tag '${node.tag}'`\n        );\n      }\n      const tagNumber = Number(tagVal);\n      for (const caseNode of node.cases) {\n        if (caseNode.value === tagNumber) {\n          return __tnEvalIrNode(caseNode.node, ctx, baseOffset);\n        }\n      }\n      if (node.default) return __tnEvalIrNode(node.default, ctx, baseOffset);\n      __tnRaiseIrError(\n        \"tn.ir.invalid_tag\",\n        `Unhandled IR switch value ${tagNumber} for '${node.tag}'`\n      );\n    }\n    case \"call\": {\n      const nestedParams: Record<string, bigint> = Object.create(null);\n      for (const arg of node.args) {\n        const val = ctx.params[arg.source];\n        if (val === undefined) {\n          const prefix = ctx.typeName ? `${ctx.typeName}: ` : \"\";\n          __tnRaiseIrError(\n            \"tn.ir.missing_param\",\n            `${prefix}Missing IR parameter '${arg.source}' for nested call`\n          );\n        }\n        nestedParams[arg.name] = val;\n      }\n      if (ctx.buffer) {\n        const nestedOffset = __tnBigIntToNumber(baseOffset, \"IR nested offset\");\n        const nestedResult = __tnInvokeValidate(\n          node.typeName,\n          ctx.buffer.subarray(nestedOffset),\n          nestedParams\n        );\n        if (!nestedResult.ok) {\n          const nestedCode =\n            nestedResult.code ?? `tn.ir.runtime_error: ${node.typeName}`;\n          const prefixed = nestedCode.startsWith(\"tn.\")\n            ? nestedCode\n            : `tn.ir.runtime_error: ${node.typeName} -> ${nestedCode}`;\n          __tnRaiseIrError(\n            prefixed,\n            `Nested validator ${node.typeName} failed`\n          );\n        }\n        if (nestedResult.consumed !== undefined) {\n          return nestedResult.consumed;\n        }\n      }\n      return __tnInvokeFootprint(node.typeName, nestedParams);\n    }\n    case \"sumOverArray\": {\n      if (!ctx.buffer) {\n        __tnRaiseIrError(\n          \"tn.ir.missing_buffer\",\n          `Jagged array '${node.fieldName}' requires buffer-backed validation`\n        );\n      }\n      const count = __tnBigIntToNumber(\n        __tnEvalIrNode(node.count, ctx, baseOffset),\n        `Jagged array '${node.fieldName}' count`\n      );\n      let cursor = __tnBigIntToNumber(baseOffset, \"IR jagged array offset\");\n      let total = __tnToBigInt(0);\n      for (let i = 0; i < count; i++) {\n        const result = __tnInvokeDynamicValidate(\n          node.elementTypeName,\n          ctx.buffer.subarray(cursor)\n        );\n        if (!result.ok || result.consumed === undefined) {\n          const code = result.code ?? \"tn.ir.runtime_error\";\n          __tnRaiseIrError(\n            code,\n            `Jagged array '${node.fieldName}' element ${i} failed validation`\n          );\n        }\n        cursor += __tnBigIntToNumber(result.consumed, \"IR jagged element size\");\n        total = __tnCheckedAdd(total, result.consumed);\n      }\n      return total;\n    }\n    default:\n      __tnRaiseIrError(\n        \"tn.ir.runtime_error\",\n        `Unsupported IR node ${(node as { op: string }).op}`\n      );\n  }\n}\n\nfunction __tnNormalizeIrError(err: unknown): string {\n  if (err && typeof err === \"object\" && \"code\" in err) {\n    const maybeCode = (err as { code?: string }).code;\n    if (typeof maybeCode === \"string\" && maybeCode.length > 0) {\n      return maybeCode;\n    }\n  }\n  const message =\n    err && typeof err === \"object\" && \"message\" in err\n      ? String((err as { message?: unknown }).message ?? \"\")\n      : typeof err === \"string\"\n      ? err\n      : \"\";\n  if (message.includes(\"Missing IR parameter\")) return \"tn.ir.missing_param\";\n  if (message.includes(\"Unhandled IR switch value\")) return \"tn.ir.invalid_tag\";\n  if (\n    message.includes(\"invalid\") ||\n    message.includes(\"overflow\") ||\n    message.includes(\"negative size\")\n  ) {\n    return \"tn.ir.overflow\";\n  }\n  if (message.length > 0) return `tn.ir.runtime_error: ${message}`;\n  return \"tn.ir.runtime_error\";\n}\n\n__tnRegisterFootprint(\"Hash\", (params) => Hash.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"Hash\", (buffer, params) => Hash.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"Hash\", (buffer) => { const result = Hash.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n\n__tnRegisterFootprint(\"Pubkey\", (params) => Pubkey.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"Pubkey\", (buffer, params) => Pubkey.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"Pubkey\", (buffer) => { const result = Pubkey.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n\n/* ----- TYPE DEFINITION FOR DestroyArgs ----- */\n\nconst __tn_ir_DestroyArgs = {\n  typeName: \"DestroyArgs\",\n  root: { op: \"const\", value: 4n }\n} as const;\n\nexport class DestroyArgs {\n  private view: DataView;\n\n  private constructor(private buffer: Uint8Array) {\n    this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n  }\n\n  static __tnCreateView(buffer: Uint8Array, opts?: { fieldContext?: Record<string, number | bigint> }): DestroyArgs {\n    if (!buffer || buffer.length === undefined) throw new Error(\"DestroyArgs.__tnCreateView requires a Uint8Array\");\n    return new DestroyArgs(new Uint8Array(buffer));\n  }\n\n  static builder(): DestroyArgsBuilder {\n    return new DestroyArgsBuilder();\n  }\n\n  static fromBuilder(builder: DestroyArgsBuilder): DestroyArgs | null {\n    const buffer = builder.build();\n    return DestroyArgs.from_array(buffer);\n  }\n\n  get_buffer_account_idx(): number {\n    const offset = 0;\n    return this.view.getUint16(offset, true); /* little-endian */\n  }\n\n  set_buffer_account_idx(value: number): void {\n    const offset = 0;\n    this.view.setUint16(offset, value, true); /* little-endian */\n  }\n\n  get buffer_account_idx(): number {\n    return this.get_buffer_account_idx();\n  }\n\n  set buffer_account_idx(value: number) {\n    this.set_buffer_account_idx(value);\n  }\n\n  get_meta_account_idx(): number {\n    const offset = 2;\n    return this.view.getUint16(offset, true); /* little-endian */\n  }\n\n  set_meta_account_idx(value: number): void {\n    const offset = 2;\n    this.view.setUint16(offset, value, true); /* little-endian */\n  }\n\n  get meta_account_idx(): number {\n    return this.get_meta_account_idx();\n  }\n\n  set meta_account_idx(value: number) {\n    this.set_meta_account_idx(value);\n  }\n\n  private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n    return __tnEvalFootprint(__tn_ir_DestroyArgs.root, { params: __tnParams });\n  }\n\n  private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n    return __tnValidateIrTree(__tn_ir_DestroyArgs, buffer, __tnParams);\n  }\n\n  static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n    return this.__tnFootprintInternal(__tnParams);\n  }\n\n  static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n    return this.__tnValidateInternal(buffer, __tnParams);\n  }\n\n  static footprintIr(): bigint {\n    return this.__tnFootprintInternal(Object.create(null));\n  }\n\n  static footprint(): number {\n    const irResult = this.footprintIr();\n      const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n    if (__tnBigIntGreaterThan(irResult, maxSafe)) {\n      throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for DestroyArgs');\n    }\n    return __tnBigIntToNumber(irResult, 'DestroyArgs::footprint');\n  }\n\n  static validate(buffer: Uint8Array, _opts?: { params?: never }): { ok: boolean; code?: string; consumed?: number } {\n    if (buffer.length < 4) return { ok: false, code: \"tn.buffer_too_small\", consumed: 4 };\n    return { ok: true, consumed: 4 };\n  }\n\n  static new(buffer_account_idx: number, meta_account_idx: number): DestroyArgs {\n    const buffer = new Uint8Array(4);\n    const view = new DataView(buffer.buffer);\n\n    let offset = 0;\n    view.setUint16(0, buffer_account_idx, true); /* buffer_account_idx (little-endian) */\n    view.setUint16(2, meta_account_idx, true); /* meta_account_idx (little-endian) */\n\n    return new DestroyArgs(buffer);\n  }\n\n  static from_array(buffer: Uint8Array): DestroyArgs | null {\n    if (!buffer || buffer.length === undefined) {\n      return null;\n    }\n    const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    const validation = this.validate(buffer);\n    if (!validation.ok) {\n      return null;\n    }\n    return new DestroyArgs(buffer);\n  }\n\n}\n\nexport class DestroyArgsBuilder {\n  private buffer: Uint8Array;\n  private view: DataView;\n\n  constructor() {\n    this.buffer = new Uint8Array(4);\n    this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n  }\n\n  set_buffer_account_idx(value: number): this {\n    this.view.setUint16(0, value, true);\n    return this;\n  }\n\n  set_meta_account_idx(value: number): this {\n    this.view.setUint16(2, value, true);\n    return this;\n  }\n\n  build(): Uint8Array {\n    return this.buffer.slice();\n  }\n\n  buildInto(target: Uint8Array, offset = 0): Uint8Array {\n    if (target.length - offset < this.buffer.length) throw new Error(\"target buffer too small\");\n    target.set(this.buffer, offset);\n    return target;\n  }\n\n  finish(): DestroyArgs {\n    const view = DestroyArgs.from_array(this.buffer.slice());\n    if (!view) throw new Error(\"failed to build DestroyArgs\");\n    return view;\n  }\n}\n\n__tnRegisterFootprint(\"DestroyArgs\", (params) => DestroyArgs.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"DestroyArgs\", (buffer, params) => DestroyArgs.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"DestroyArgs\", (buffer) => { const result = DestroyArgs.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n\n/* ----- TYPE DEFINITION FOR UploaderError ----- */\n\nconst __tn_ir_UploaderError = {\n  typeName: \"UploaderError\",\n  root: { op: \"const\", value: 8n }\n} as const;\n\nexport class UploaderError {\n  private view: DataView;\n\n  private constructor(private buffer: Uint8Array) {\n    this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n  }\n\n  static __tnCreateView(buffer: Uint8Array, opts?: { fieldContext?: Record<string, number | bigint> }): UploaderError {\n    if (!buffer || buffer.length === undefined) throw new Error(\"UploaderError.__tnCreateView requires a Uint8Array\");\n    return new UploaderError(new Uint8Array(buffer));\n  }\n\n  static builder(): UploaderErrorBuilder {\n    return new UploaderErrorBuilder();\n  }\n\n  static fromBuilder(builder: UploaderErrorBuilder): UploaderError | null {\n    const buffer = builder.build();\n    return UploaderError.from_array(buffer);\n  }\n\n  get_code(): bigint {\n    const offset = 0;\n    return this.view.getBigUint64(offset, true); /* little-endian */\n  }\n\n  set_code(value: bigint): void {\n    const offset = 0;\n    this.view.setBigUint64(offset, value, true); /* little-endian */\n  }\n\n  get code(): bigint {\n    return this.get_code();\n  }\n\n  set code(value: bigint) {\n    this.set_code(value);\n  }\n\n  private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n    return __tnEvalFootprint(__tn_ir_UploaderError.root, { params: __tnParams });\n  }\n\n  private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n    return __tnValidateIrTree(__tn_ir_UploaderError, buffer, __tnParams);\n  }\n\n  static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n    return this.__tnFootprintInternal(__tnParams);\n  }\n\n  static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n    return this.__tnValidateInternal(buffer, __tnParams);\n  }\n\n  static footprintIr(): bigint {\n    return this.__tnFootprintInternal(Object.create(null));\n  }\n\n  static footprint(): number {\n    const irResult = this.footprintIr();\n      const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n    if (__tnBigIntGreaterThan(irResult, maxSafe)) {\n      throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for UploaderError');\n    }\n    return __tnBigIntToNumber(irResult, 'UploaderError::footprint');\n  }\n\n  static validate(buffer: Uint8Array, _opts?: { params?: never }): { ok: boolean; code?: string; consumed?: number } {\n    if (buffer.length < 8) return { ok: false, code: \"tn.buffer_too_small\", consumed: 8 };\n    return { ok: true, consumed: 8 };\n  }\n\n  static new(code: bigint): UploaderError {\n    const buffer = new Uint8Array(8);\n    const view = new DataView(buffer.buffer);\n\n    let offset = 0;\n    view.setBigUint64(0, code, true); /* code (little-endian) */\n\n    return new UploaderError(buffer);\n  }\n\n  static from_array(buffer: Uint8Array): UploaderError | null {\n    if (!buffer || buffer.length === undefined) {\n      return null;\n    }\n    const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    const validation = this.validate(buffer);\n    if (!validation.ok) {\n      return null;\n    }\n    return new UploaderError(buffer);\n  }\n\n}\n\nexport class UploaderErrorBuilder {\n  private buffer: Uint8Array;\n  private view: DataView;\n\n  constructor() {\n    this.buffer = new Uint8Array(8);\n    this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n  }\n\n  set_code(value: bigint): this {\n    const cast = __tnToBigInt(value);\n    this.view.setBigUint64(0, cast, true);\n    return this;\n  }\n\n  build(): Uint8Array {\n    return this.buffer.slice();\n  }\n\n  buildInto(target: Uint8Array, offset = 0): Uint8Array {\n    if (target.length - offset < this.buffer.length) throw new Error(\"target buffer too small\");\n    target.set(this.buffer, offset);\n    return target;\n  }\n\n  finish(): UploaderError {\n    const view = UploaderError.from_array(this.buffer.slice());\n    if (!view) throw new Error(\"failed to build UploaderError\");\n    return view;\n  }\n}\n\n__tnRegisterFootprint(\"UploaderError\", (params) => UploaderError.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"UploaderError\", (buffer, params) => UploaderError.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"UploaderError\", (buffer) => { const result = UploaderError.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n\n/* ----- TYPE DEFINITION FOR UploaderProgramMeta ----- */\n\nconst __tn_ir_UploaderProgramMeta = {\n  typeName: \"UploaderProgramMeta\",\n  root: { op: \"const\", value: 65n }\n} as const;\n\nexport class UploaderProgramMeta {\n  private view: DataView;\n\n  private constructor(private buffer: Uint8Array) {\n    this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n  }\n\n  static __tnCreateView(buffer: Uint8Array, opts?: { fieldContext?: Record<string, number | bigint> }): UploaderProgramMeta {\n    if (!buffer || buffer.length === undefined) throw new Error(\"UploaderProgramMeta.__tnCreateView requires a Uint8Array\");\n    return new UploaderProgramMeta(new Uint8Array(buffer));\n  }\n\n  static builder(): UploaderProgramMetaBuilder {\n    return new UploaderProgramMetaBuilder();\n  }\n\n  static fromBuilder(builder: UploaderProgramMetaBuilder): UploaderProgramMeta | null {\n    const buffer = builder.build();\n    return UploaderProgramMeta.from_array(buffer);\n  }\n\n  get_authority(): Pubkey {\n    const offset = 0;\n    const slice = this.buffer.subarray(offset, offset + 32);\n    return Pubkey.from_array(slice)!;\n  }\n\n  set_authority(value: Pubkey): void {\n    /* Copy bytes from source struct to this field */\n    const sourceBytes = (value as any).buffer as Uint8Array;\n    const offset = 0;\n    this.buffer.set(sourceBytes, offset);\n  }\n\n  get authority(): Pubkey {\n    return this.get_authority();\n  }\n\n  set authority(value: Pubkey) {\n    this.set_authority(value);\n  }\n\n  get_expected_account_hash(): Hash {\n    const offset = 32;\n    const slice = this.buffer.subarray(offset, offset + 32);\n    return Hash.from_array(slice)!;\n  }\n\n  set_expected_account_hash(value: Hash): void {\n    /* Copy bytes from source struct to this field */\n    const sourceBytes = (value as any).buffer as Uint8Array;\n    const offset = 32;\n    this.buffer.set(sourceBytes, offset);\n  }\n\n  get expected_account_hash(): Hash {\n    return this.get_expected_account_hash();\n  }\n\n  set expected_account_hash(value: Hash) {\n    this.set_expected_account_hash(value);\n  }\n\n  get_state(): number {\n    const offset = 64;\n    return this.view.getUint8(offset);\n  }\n\n  set_state(value: number): void {\n    const offset = 64;\n    this.view.setUint8(offset, value);\n  }\n\n  get state(): number {\n    return this.get_state();\n  }\n\n  set state(value: number) {\n    this.set_state(value);\n  }\n\n  private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n    return __tnEvalFootprint(__tn_ir_UploaderProgramMeta.root, { params: __tnParams });\n  }\n\n  private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n    return __tnValidateIrTree(__tn_ir_UploaderProgramMeta, buffer, __tnParams);\n  }\n\n  static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n    return this.__tnFootprintInternal(__tnParams);\n  }\n\n  static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n    return this.__tnValidateInternal(buffer, __tnParams);\n  }\n\n  static footprintIr(): bigint {\n    return this.__tnFootprintInternal(Object.create(null));\n  }\n\n  static footprint(): number {\n    const irResult = this.footprintIr();\n      const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n    if (__tnBigIntGreaterThan(irResult, maxSafe)) {\n      throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for UploaderProgramMeta');\n    }\n    return __tnBigIntToNumber(irResult, 'UploaderProgramMeta::footprint');\n  }\n\n  static validate(buffer: Uint8Array, _opts?: { params?: never }): { ok: boolean; code?: string; consumed?: number } {\n    if (buffer.length < 65) return { ok: false, code: \"tn.buffer_too_small\", consumed: 65 };\n    return { ok: true, consumed: 65 };\n  }\n\n  static from_array(buffer: Uint8Array): UploaderProgramMeta | null {\n    if (!buffer || buffer.length === undefined) {\n      return null;\n    }\n    const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    const validation = this.validate(buffer);\n    if (!validation.ok) {\n      return null;\n    }\n    return new UploaderProgramMeta(buffer);\n  }\n\n}\n\nexport class UploaderProgramMetaBuilder {\n  private buffer: Uint8Array;\n  private view: DataView;\n\n  constructor() {\n    this.buffer = new Uint8Array(65);\n    this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n  }\n\n  set_authority(value: Uint8Array): this {\n    if (value.length !== 32) throw new Error(\"authority expects 32 bytes\");\n    this.buffer.set(value, 0);\n    return this;\n  }\n\n  set_expected_account_hash(value: Uint8Array): this {\n    if (value.length !== 32) throw new Error(\"expected_account_hash expects 32 bytes\");\n    this.buffer.set(value, 32);\n    return this;\n  }\n\n  set_state(value: number): this {\n    this.view.setUint8(64, value);\n    return this;\n  }\n\n  build(): Uint8Array {\n    return this.buffer.slice();\n  }\n\n  buildInto(target: Uint8Array, offset = 0): Uint8Array {\n    if (target.length - offset < this.buffer.length) throw new Error(\"target buffer too small\");\n    target.set(this.buffer, offset);\n    return target;\n  }\n\n  finish(): UploaderProgramMeta {\n    const view = UploaderProgramMeta.from_array(this.buffer.slice());\n    if (!view) throw new Error(\"failed to build UploaderProgramMeta\");\n    return view;\n  }\n}\n\n__tnRegisterFootprint(\"UploaderProgramMeta\", (params) => UploaderProgramMeta.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"UploaderProgramMeta\", (buffer, params) => UploaderProgramMeta.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"UploaderProgramMeta\", (buffer) => { const result = UploaderProgramMeta.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n\n/* ----- TYPE DEFINITION FOR WriteArgs ----- */\n\nconst __tn_ir_WriteArgs = {\n  typeName: \"WriteArgs\",\n  root: { op: \"align\", alignment: 1, node: { op: \"add\", left: { op: \"add\", left: { op: \"add\", left: { op: \"add\", left: { op: \"align\", alignment: 2, node: { op: \"const\", value: 2n } }, right: { op: \"align\", alignment: 2, node: { op: \"const\", value: 2n } } }, right: { op: \"align\", alignment: 4, node: { op: \"const\", value: 4n } } }, right: { op: \"align\", alignment: 4, node: { op: \"const\", value: 4n } } }, right: { op: \"align\", alignment: 1, node: { op: \"mul\", left: { op: \"field\", param: \"data.data_len\" }, right: { op: \"const\", value: 1n } } } } }\n} as const;\n\nexport class WriteArgs {\n  private view: DataView;\n  private __tnFieldContext: Record<string, number | bigint> | null = null;\n  private __tnParams: WriteArgs.Params;\n\n  private constructor(private buffer: Uint8Array, params?: WriteArgs.Params, fieldContext?: Record<string, number | bigint>) {\n    this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    this.__tnFieldContext = fieldContext ?? null;\n    if (params) {\n      this.__tnParams = params;\n    } else {\n      const derived = WriteArgs.__tnExtractParams(this.view, buffer);\n      if (!derived) {\n        throw new Error(\"WriteArgs: failed to derive dynamic parameters\");\n      }\n      this.__tnParams = derived.params;\n    }\n  }\n\n  static __tnCreateView(buffer: Uint8Array, opts?: { params?: WriteArgs.Params, fieldContext?: Record<string, number | bigint> }): WriteArgs {\n    if (!buffer || buffer.length === undefined) throw new Error(\"WriteArgs.__tnCreateView requires a Uint8Array\");\n    let params = opts?.params ?? null;\n    if (!params) {\n      const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n      const derived = WriteArgs.__tnExtractParams(view, buffer);\n      if (!derived) throw new Error(\"WriteArgs.__tnCreateView: failed to derive params\");\n      params = derived.params;\n    }\n    const instance = new WriteArgs(new Uint8Array(buffer), params, opts?.fieldContext);\n    return instance;\n  }\n\n  dynamicParams(): WriteArgs.Params {\n    return this.__tnParams;\n  }\n\n  withFieldContext(context: Record<string, number | bigint>): this {\n    this.__tnFieldContext = context;\n    return this;\n  }\n\n  private __tnResolveFieldRef(path: string): number {\n    const getterName = `get_${path.replace(/[.]/g, '_')}`;\n    const getter = (this as any)[getterName];\n    if (typeof getter === \"function\") {\n      const value = getter.call(this);\n      return typeof value === \"bigint\" ? __tnBigIntToNumber(value, \"WriteArgs::__tnResolveFieldRef\") : value;\n    }\n    if (this.__tnFieldContext && Object.prototype.hasOwnProperty.call(this.__tnFieldContext, path)) {\n      const contextValue = this.__tnFieldContext[path];\n      return typeof contextValue === \"bigint\" ? __tnBigIntToNumber(contextValue, \"WriteArgs::__tnResolveFieldRef\") : contextValue;\n    }\n    throw new Error(\"WriteArgs: field reference '\" + path + \"' is not available; provide fieldContext when creating this view\");\n  }\n\n  static builder(): WriteArgsBuilder {\n    return new WriteArgsBuilder();\n  }\n\n  static fromBuilder(builder: WriteArgsBuilder): WriteArgs | null {\n    const buffer = builder.build();\n    const params = builder.dynamicParams();\n    return WriteArgs.from_array(buffer, { params });\n  }\n\n  static readonly flexibleArrayWriters = Object.freeze([\n    { field: \"data\", method: \"data\", sizeField: \"data_len\", paramKey: \"data_len\", elementSize: 1 },\n  ] as const);\n\n  private static __tnExtractParams(view: DataView, buffer: Uint8Array): { params: WriteArgs.Params; derived: Record<string, bigint> | null } | null {\n    if (buffer.length < 8) {\n      return null;\n    }\n    const __tnParam_data_data_len = __tnToBigInt(view.getUint32(4, true));\n    const __tnExtractedParams = WriteArgs.Params.fromValues({\n      data_data_len: __tnParam_data_data_len,\n    });\n    return { params: __tnExtractedParams, derived: null };\n  }\n\n  get_buffer_account_idx(): number {\n    const offset = 0;\n    return this.view.getUint16(offset, true); /* little-endian */\n  }\n\n  set_buffer_account_idx(value: number): void {\n    const offset = 0;\n    this.view.setUint16(offset, value, true); /* little-endian */\n  }\n\n  get buffer_account_idx(): number {\n    return this.get_buffer_account_idx();\n  }\n\n  set buffer_account_idx(value: number) {\n    this.set_buffer_account_idx(value);\n  }\n\n  get_meta_account_idx(): number {\n    const offset = 2;\n    return this.view.getUint16(offset, true); /* little-endian */\n  }\n\n  set_meta_account_idx(value: number): void {\n    const offset = 2;\n    this.view.setUint16(offset, value, true); /* little-endian */\n  }\n\n  get meta_account_idx(): number {\n    return this.get_meta_account_idx();\n  }\n\n  set meta_account_idx(value: number) {\n    this.set_meta_account_idx(value);\n  }\n\n  get_data_len(): number {\n    const offset = 4;\n    return this.view.getUint32(offset, true); /* little-endian */\n  }\n\n  set_data_len(value: number): void {\n    const offset = 4;\n    this.view.setUint32(offset, value, true); /* little-endian */\n  }\n\n  get data_len(): number {\n    return this.get_data_len();\n  }\n\n  set data_len(value: number) {\n    this.set_data_len(value);\n  }\n\n  get_data_offset(): number {\n    const offset = 8;\n    return this.view.getUint32(offset, true); /* little-endian */\n  }\n\n  set_data_offset(value: number): void {\n    const offset = 8;\n    this.view.setUint32(offset, value, true); /* little-endian */\n  }\n\n  get data_offset(): number {\n    return this.get_data_offset();\n  }\n\n  set data_offset(value: number) {\n    this.set_data_offset(value);\n  }\n\n  get_data_length(): number {\n    return this.__tnResolveFieldRef(\"data_len\");\n  }\n\n  get_data_at(index: number): number {\n    const offset = 12;\n    return this.view.getUint8(offset + index * 1);\n  }\n\n  get_data(): number[] {\n    const len = this.get_data_length();\n    const result: number[] = [];\n    for (let i = 0; i < len; i++) {\n      result.push(this.get_data_at(i));\n    }\n    return result;\n  }\n\n  set_data_at(index: number, value: number): void {\n    const offset = 12;\n    this.view.setUint8((offset + index * 1), value);\n  }\n\n  set_data(value: number[]): void {\n    const len = Math.min(this.get_data_length(), value.length);\n    for (let i = 0; i < len; i++) {\n      this.set_data_at(i, value[i]);\n    }\n  }\n\n  get data(): number[] {\n    return this.get_data();\n  }\n\n  set data(value: number[]) {\n    this.set_data(value);\n  }\n  private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n    return __tnEvalFootprint(__tn_ir_WriteArgs.root, { params: __tnParams });\n  }\n\n  private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n    return __tnValidateIrTree(__tn_ir_WriteArgs, buffer, __tnParams);\n  }\n\n  static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n    return this.__tnFootprintInternal(__tnParams);\n  }\n\n  static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n    return this.__tnValidateInternal(buffer, __tnParams);\n  }\n\n  static footprintIr(data_data_len: number | bigint): bigint {\n    const params = WriteArgs.Params.fromValues({\n      data_data_len: data_data_len,\n    });\n    return this.footprintIrFromParams(params);\n  }\n\n  private static __tnPackParams(params: WriteArgs.Params): Record<string, bigint> {\n    const record: Record<string, bigint> = Object.create(null);\n    record[\"data.data_len\"] = params.data_data_len;\n    return record;\n  }\n\n  static footprintIrFromParams(params: WriteArgs.Params): bigint {\n    const __tnParams = this.__tnPackParams(params);\n    return this.__tnFootprintInternal(__tnParams);\n  }\n\n  static footprintFromParams(params: WriteArgs.Params): number {\n    const irResult = this.footprintIrFromParams(params);\n    const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n    if (__tnBigIntGreaterThan(irResult, maxSafe)) throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for WriteArgs');\n    return __tnBigIntToNumber(irResult, 'WriteArgs::footprintFromParams');\n  }\n\n  static footprintFromValues(input: { data_data_len: number | bigint }): number {\n    const params = WriteArgs.params(input);\n    return this.footprintFromParams(params);\n  }\n\n  static footprint(params: WriteArgs.Params): number {\n    return this.footprintFromParams(params);\n  }\n\n  static validate(buffer: Uint8Array, opts?: { params?: WriteArgs.Params }): { ok: boolean; code?: string; consumed?: number; params?: WriteArgs.Params } {\n    if (!buffer || buffer.length === undefined) {\n      return { ok: false, code: \"tn.invalid_buffer\" };\n    }\n    const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    let params = opts?.params ?? null;\n    if (!params) {\n      const extracted = this.__tnExtractParams(view, buffer);\n      if (!extracted) return { ok: false, code: \"tn.param_extraction_failed\" };\n      params = extracted.params;\n    }\n    const __tnParamsRec = this.__tnPackParams(params);\n    const irResult = this.__tnValidateInternal(buffer, __tnParamsRec);\n    if (!irResult.ok) {\n      return { ok: false, code: irResult.code, consumed: irResult.consumed ? __tnBigIntToNumber(irResult.consumed, 'WriteArgs::validate') : undefined, params };\n    }\n    const consumed = irResult.consumed ? __tnBigIntToNumber(irResult.consumed, 'WriteArgs::validate') : undefined;\n    return { ok: true, consumed, params };\n  }\n\n  static from_array(buffer: Uint8Array, opts?: { params?: WriteArgs.Params }): WriteArgs | null {\n    if (!buffer || buffer.length === undefined) {\n      return null;\n    }\n    const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    let params = opts?.params ?? null;\n    if (!params) {\n      const derived = this.__tnExtractParams(view, buffer);\n      if (!derived) return null;\n      params = derived.params;\n    }\n    const validation = this.validate(buffer, { params });\n    if (!validation.ok) {\n      return null;\n    }\n    const cached = validation.params ?? params;\n    const state = new WriteArgs(buffer, cached);\n    return state;\n  }\n\n\n}\n\nexport namespace WriteArgs {\n  export type Params = {\n    /** ABI path: data.data_len */\n    readonly data_data_len: bigint;\n  };\n\n  export const ParamKeys = Object.freeze({\n    data_data_len: \"data.data_len\",\n  } as const);\n\n  export const Params = {\n    fromValues(input: { data_data_len: number | bigint }): Params {\n      return {\n        data_data_len: __tnToBigInt(input.data_data_len),\n      };\n    },\n    fromBuilder(source: { dynamicParams(): Params } | { params: Params } | Params): Params {\n      if ((source as { dynamicParams?: () => Params }).dynamicParams) {\n        return (source as { dynamicParams(): Params }).dynamicParams();\n      }\n      if ((source as { params?: Params }).params) {\n        return (source as { params: Params }).params;\n      }\n      return source as Params;\n    }\n  };\n\n  export function params(input: { data_data_len: number | bigint }): Params {\n    return Params.fromValues(input);\n  }\n}\n\nexport class WriteArgsBuilder {\n  private buffer: Uint8Array;\n  private view: DataView;\n  private __tnCachedParams: WriteArgs.Params | null = null;\n  private __tnLastBuffer: Uint8Array | null = null;\n  private __tnLastParams: WriteArgs.Params | null = null;\n  private __tnFam_data: Uint8Array | null = null;\n  private __tnFam_dataCount: number | null = null;\n  private __tnFamWriter_data?: __TnFamWriterResult<WriteArgsBuilder>;\n\n  constructor() {\n    this.buffer = new Uint8Array(12);\n    this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n  }\n\n  private __tnInvalidate(): void {\n    this.__tnCachedParams = null;\n    this.__tnLastBuffer = null;\n    this.__tnLastParams = null;\n  }\n\n  set_buffer_account_idx(value: number): this {\n    this.view.setUint16(0, value, true);\n    this.__tnInvalidate();\n    return this;\n  }\n\n  set_meta_account_idx(value: number): this {\n    this.view.setUint16(2, value, true);\n    this.__tnInvalidate();\n    return this;\n  }\n\n  set_data_len(value: number): this {\n    this.view.setUint32(4, value, true);\n    this.__tnInvalidate();\n    return this;\n  }\n\n  set_data_offset(value: number): this {\n    this.view.setUint32(8, value, true);\n    this.__tnInvalidate();\n    return this;\n  }\n\n  data(): __TnFamWriterResult<WriteArgsBuilder> {\n    if (!this.__tnFamWriter_data) {\n      this.__tnFamWriter_data = __tnCreateFamWriter(this, \"data\", (payload) => {\n        const bytes = new Uint8Array(payload);\n        const elementCount = bytes.length;\n        this.__tnFam_data = bytes;\n        this.__tnFam_dataCount = elementCount;\n        this.set_data_len(elementCount);\n        this.__tnInvalidate();\n      });\n    }\n    return this.__tnFamWriter_data!;\n  }\n\n  build(): Uint8Array {\n    const params = this.__tnComputeParams();\n    const size = WriteArgs.footprintFromParams(params);\n    const buffer = new Uint8Array(size);\n    this.__tnWriteInto(buffer);\n    this.__tnValidateOrThrow(buffer, params);\n    return buffer;\n  }\n\n  buildInto(target: Uint8Array, offset = 0): Uint8Array {\n    const params = this.__tnComputeParams();\n    const size = WriteArgs.footprintFromParams(params);\n    if (target.length - offset < size) throw new Error(\"WriteArgsBuilder: target buffer too small\");\n    const slice = target.subarray(offset, offset + size);\n    this.__tnWriteInto(slice);\n    this.__tnValidateOrThrow(slice, params);\n    return target;\n  }\n\n  finish(): WriteArgs {\n    const buffer = this.build();\n    const params = this.__tnLastParams ?? this.__tnComputeParams();\n    const view = WriteArgs.from_array(buffer, { params });\n    if (!view) throw new Error(\"WriteArgsBuilder: failed to finalize view\");\n    return view;\n  }\n\n  finishView(): WriteArgs {\n    return this.finish();\n  }\n\n  dynamicParams(): WriteArgs.Params {\n    return this.__tnComputeParams();\n  }\n\n  private __tnComputeParams(): WriteArgs.Params {\n    if (this.__tnCachedParams) return this.__tnCachedParams;\n    const params = WriteArgs.Params.fromValues({\n      data_data_len: (() => { if (this.__tnFam_dataCount === null) throw new Error(\"WriteArgsBuilder: field 'data' must be written before computing params\"); return __tnToBigInt(this.__tnFam_dataCount); })(),\n    });\n    this.__tnCachedParams = params;\n    return params;\n  }\n\n  private __tnWriteInto(target: Uint8Array): void {\n    target.set(this.buffer, 0);\n    let cursor = this.buffer.length;\n    const __tnLocal_data_bytes = this.__tnFam_data;\n    if (!__tnLocal_data_bytes) throw new Error(\"WriteArgsBuilder: field 'data' must be written before build\");\n    target.set(__tnLocal_data_bytes, cursor);\n    cursor += __tnLocal_data_bytes.length;\n  }\n\n  private __tnValidateOrThrow(buffer: Uint8Array, params: WriteArgs.Params): void {\n    const result = WriteArgs.validate(buffer, { params });\n    if (!result.ok) {\n      throw new Error(`${ WriteArgs }Builder: builder produced invalid buffer (code=${result.code ?? \"unknown\"})`);\n    }\n    this.__tnLastParams = result.params ?? params;\n    this.__tnLastBuffer = buffer;\n  }\n}\n\n__tnRegisterFootprint(\"WriteArgs\", (params) => WriteArgs.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"WriteArgs\", (buffer, params) => WriteArgs.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"WriteArgs\", (buffer) => { const result = WriteArgs.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n\n/* ----- TYPE DEFINITION FOR CreateArgs ----- */\n\nconst __tn_ir_CreateArgs = {\n  typeName: \"CreateArgs\",\n  root: { op: \"align\", alignment: 1, node: { op: \"add\", left: { op: \"add\", left: { op: \"add\", left: { op: \"add\", left: { op: \"add\", left: { op: \"add\", left: { op: \"align\", alignment: 2, node: { op: \"const\", value: 2n } }, right: { op: \"align\", alignment: 2, node: { op: \"const\", value: 2n } } }, right: { op: \"align\", alignment: 2, node: { op: \"const\", value: 2n } } }, right: { op: \"align\", alignment: 4, node: { op: \"const\", value: 4n } } }, right: { op: \"align\", alignment: 1, node: { op: \"const\", value: 32n } } }, right: { op: \"align\", alignment: 4, node: { op: \"const\", value: 4n } } }, right: { op: \"align\", alignment: 1, node: { op: \"mul\", left: { op: \"field\", param: \"seed.seed_len\" }, right: { op: \"const\", value: 1n } } } } }\n} as const;\n\nexport class CreateArgs {\n  private view: DataView;\n  private __tnFieldContext: Record<string, number | bigint> | null = null;\n  private __tnParams: CreateArgs.Params;\n\n  private constructor(private buffer: Uint8Array, params?: CreateArgs.Params, fieldContext?: Record<string, number | bigint>) {\n    this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    this.__tnFieldContext = fieldContext ?? null;\n    if (params) {\n      this.__tnParams = params;\n    } else {\n      const derived = CreateArgs.__tnExtractParams(this.view, buffer);\n      if (!derived) {\n        throw new Error(\"CreateArgs: failed to derive dynamic parameters\");\n      }\n      this.__tnParams = derived.params;\n    }\n  }\n\n  static __tnCreateView(buffer: Uint8Array, opts?: { params?: CreateArgs.Params, fieldContext?: Record<string, number | bigint> }): CreateArgs {\n    if (!buffer || buffer.length === undefined) throw new Error(\"CreateArgs.__tnCreateView requires a Uint8Array\");\n    let params = opts?.params ?? null;\n    if (!params) {\n      const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n      const derived = CreateArgs.__tnExtractParams(view, buffer);\n      if (!derived) throw new Error(\"CreateArgs.__tnCreateView: failed to derive params\");\n      params = derived.params;\n    }\n    const instance = new CreateArgs(new Uint8Array(buffer), params, opts?.fieldContext);\n    return instance;\n  }\n\n  dynamicParams(): CreateArgs.Params {\n    return this.__tnParams;\n  }\n\n  withFieldContext(context: Record<string, number | bigint>): this {\n    this.__tnFieldContext = context;\n    return this;\n  }\n\n  private __tnResolveFieldRef(path: string): number {\n    const getterName = `get_${path.replace(/[.]/g, '_')}`;\n    const getter = (this as any)[getterName];\n    if (typeof getter === \"function\") {\n      const value = getter.call(this);\n      return typeof value === \"bigint\" ? __tnBigIntToNumber(value, \"CreateArgs::__tnResolveFieldRef\") : value;\n    }\n    if (this.__tnFieldContext && Object.prototype.hasOwnProperty.call(this.__tnFieldContext, path)) {\n      const contextValue = this.__tnFieldContext[path];\n      return typeof contextValue === \"bigint\" ? __tnBigIntToNumber(contextValue, \"CreateArgs::__tnResolveFieldRef\") : contextValue;\n    }\n    throw new Error(\"CreateArgs: field reference '\" + path + \"' is not available; provide fieldContext when creating this view\");\n  }\n\n  static builder(): CreateArgsBuilder {\n    return new CreateArgsBuilder();\n  }\n\n  static fromBuilder(builder: CreateArgsBuilder): CreateArgs | null {\n    const buffer = builder.build();\n    const params = builder.dynamicParams();\n    return CreateArgs.from_array(buffer, { params });\n  }\n\n  static readonly flexibleArrayWriters = Object.freeze([\n    { field: \"seed\", method: \"seed\", sizeField: \"seed_len\", paramKey: \"seed_len\", elementSize: 1 },\n  ] as const);\n\n  private static __tnExtractParams(view: DataView, buffer: Uint8Array): { params: CreateArgs.Params; derived: Record<string, bigint> | null } | null {\n    if (buffer.length < 46) {\n      return null;\n    }\n    const __tnParam_seed_seed_len = __tnToBigInt(view.getUint32(42, true));\n    const __tnExtractedParams = CreateArgs.Params.fromValues({\n      seed_seed_len: __tnParam_seed_seed_len,\n    });\n    return { params: __tnExtractedParams, derived: null };\n  }\n\n  get_buffer_account_idx(): number {\n    const offset = 0;\n    return this.view.getUint16(offset, true); /* little-endian */\n  }\n\n  set_buffer_account_idx(value: number): void {\n    const offset = 0;\n    this.view.setUint16(offset, value, true); /* little-endian */\n  }\n\n  get buffer_account_idx(): number {\n    return this.get_buffer_account_idx();\n  }\n\n  set buffer_account_idx(value: number) {\n    this.set_buffer_account_idx(value);\n  }\n\n  get_meta_account_idx(): number {\n    const offset = 2;\n    return this.view.getUint16(offset, true); /* little-endian */\n  }\n\n  set_meta_account_idx(value: number): void {\n    const offset = 2;\n    this.view.setUint16(offset, value, true); /* little-endian */\n  }\n\n  get meta_account_idx(): number {\n    return this.get_meta_account_idx();\n  }\n\n  set meta_account_idx(value: number) {\n    this.set_meta_account_idx(value);\n  }\n\n  get_authority_account_idx(): number {\n    const offset = 4;\n    return this.view.getUint16(offset, true); /* little-endian */\n  }\n\n  set_authority_account_idx(value: number): void {\n    const offset = 4;\n    this.view.setUint16(offset, value, true); /* little-endian */\n  }\n\n  get authority_account_idx(): number {\n    return this.get_authority_account_idx();\n  }\n\n  set authority_account_idx(value: number) {\n    this.set_authority_account_idx(value);\n  }\n\n  get_buffer_account_sz(): number {\n    const offset = 6;\n    return this.view.getUint32(offset, true); /* little-endian */\n  }\n\n  set_buffer_account_sz(value: number): void {\n    const offset = 6;\n    this.view.setUint32(offset, value, true); /* little-endian */\n  }\n\n  get buffer_account_sz(): number {\n    return this.get_buffer_account_sz();\n  }\n\n  set buffer_account_sz(value: number) {\n    this.set_buffer_account_sz(value);\n  }\n\n  get_expected_account_hash(): Hash {\n    const offset = 10;\n    const slice = this.buffer.subarray(offset, offset + 32);\n    return Hash.from_array(slice)!;\n  }\n\n  set_expected_account_hash(value: Hash): void {\n    /* Copy bytes from source struct to this field */\n    const sourceBytes = (value as any).buffer as Uint8Array;\n    const offset = 10;\n    this.buffer.set(sourceBytes, offset);\n  }\n\n  get expected_account_hash(): Hash {\n    return this.get_expected_account_hash();\n  }\n\n  set expected_account_hash(value: Hash) {\n    this.set_expected_account_hash(value);\n  }\n\n  get_seed_len(): number {\n    const offset = 42;\n    return this.view.getUint32(offset, true); /* little-endian */\n  }\n\n  set_seed_len(value: number): void {\n    const offset = 42;\n    this.view.setUint32(offset, value, true); /* little-endian */\n  }\n\n  get seed_len(): number {\n    return this.get_seed_len();\n  }\n\n  set seed_len(value: number) {\n    this.set_seed_len(value);\n  }\n\n  get_seed_length(): number {\n    return this.__tnResolveFieldRef(\"seed_len\");\n  }\n\n  get_seed_at(index: number): number {\n    const offset = 46;\n    return this.view.getUint8(offset + index * 1);\n  }\n\n  get_seed(): number[] {\n    const len = this.get_seed_length();\n    const result: number[] = [];\n    for (let i = 0; i < len; i++) {\n      result.push(this.get_seed_at(i));\n    }\n    return result;\n  }\n\n  set_seed_at(index: number, value: number): void {\n    const offset = 46;\n    this.view.setUint8((offset + index * 1), value);\n  }\n\n  set_seed(value: number[]): void {\n    const len = Math.min(this.get_seed_length(), value.length);\n    for (let i = 0; i < len; i++) {\n      this.set_seed_at(i, value[i]);\n    }\n  }\n\n  get seed(): number[] {\n    return this.get_seed();\n  }\n\n  set seed(value: number[]) {\n    this.set_seed(value);\n  }\n  private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n    return __tnEvalFootprint(__tn_ir_CreateArgs.root, { params: __tnParams });\n  }\n\n  private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n    return __tnValidateIrTree(__tn_ir_CreateArgs, buffer, __tnParams);\n  }\n\n  static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n    return this.__tnFootprintInternal(__tnParams);\n  }\n\n  static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n    return this.__tnValidateInternal(buffer, __tnParams);\n  }\n\n  static footprintIr(seed_seed_len: number | bigint): bigint {\n    const params = CreateArgs.Params.fromValues({\n      seed_seed_len: seed_seed_len,\n    });\n    return this.footprintIrFromParams(params);\n  }\n\n  private static __tnPackParams(params: CreateArgs.Params): Record<string, bigint> {\n    const record: Record<string, bigint> = Object.create(null);\n    record[\"seed.seed_len\"] = params.seed_seed_len;\n    return record;\n  }\n\n  static footprintIrFromParams(params: CreateArgs.Params): bigint {\n    const __tnParams = this.__tnPackParams(params);\n    return this.__tnFootprintInternal(__tnParams);\n  }\n\n  static footprintFromParams(params: CreateArgs.Params): number {\n    const irResult = this.footprintIrFromParams(params);\n    const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n    if (__tnBigIntGreaterThan(irResult, maxSafe)) throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for CreateArgs');\n    return __tnBigIntToNumber(irResult, 'CreateArgs::footprintFromParams');\n  }\n\n  static footprintFromValues(input: { seed_seed_len: number | bigint }): number {\n    const params = CreateArgs.params(input);\n    return this.footprintFromParams(params);\n  }\n\n  static footprint(params: CreateArgs.Params): number {\n    return this.footprintFromParams(params);\n  }\n\n  static validate(buffer: Uint8Array, opts?: { params?: CreateArgs.Params }): { ok: boolean; code?: string; consumed?: number; params?: CreateArgs.Params } {\n    if (!buffer || buffer.length === undefined) {\n      return { ok: false, code: \"tn.invalid_buffer\" };\n    }\n    const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    let params = opts?.params ?? null;\n    if (!params) {\n      const extracted = this.__tnExtractParams(view, buffer);\n      if (!extracted) return { ok: false, code: \"tn.param_extraction_failed\" };\n      params = extracted.params;\n    }\n    const __tnParamsRec = this.__tnPackParams(params);\n    const irResult = this.__tnValidateInternal(buffer, __tnParamsRec);\n    if (!irResult.ok) {\n      return { ok: false, code: irResult.code, consumed: irResult.consumed ? __tnBigIntToNumber(irResult.consumed, 'CreateArgs::validate') : undefined, params };\n    }\n    const consumed = irResult.consumed ? __tnBigIntToNumber(irResult.consumed, 'CreateArgs::validate') : undefined;\n    return { ok: true, consumed, params };\n  }\n\n  static from_array(buffer: Uint8Array, opts?: { params?: CreateArgs.Params }): CreateArgs | null {\n    if (!buffer || buffer.length === undefined) {\n      return null;\n    }\n    const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    let params = opts?.params ?? null;\n    if (!params) {\n      const derived = this.__tnExtractParams(view, buffer);\n      if (!derived) return null;\n      params = derived.params;\n    }\n    const validation = this.validate(buffer, { params });\n    if (!validation.ok) {\n      return null;\n    }\n    const cached = validation.params ?? params;\n    const state = new CreateArgs(buffer, cached);\n    return state;\n  }\n\n\n}\n\nexport namespace CreateArgs {\n  export type Params = {\n    /** ABI path: seed.seed_len */\n    readonly seed_seed_len: bigint;\n  };\n\n  export const ParamKeys = Object.freeze({\n    seed_seed_len: \"seed.seed_len\",\n  } as const);\n\n  export const Params = {\n    fromValues(input: { seed_seed_len: number | bigint }): Params {\n      return {\n        seed_seed_len: __tnToBigInt(input.seed_seed_len),\n      };\n    },\n    fromBuilder(source: { dynamicParams(): Params } | { params: Params } | Params): Params {\n      if ((source as { dynamicParams?: () => Params }).dynamicParams) {\n        return (source as { dynamicParams(): Params }).dynamicParams();\n      }\n      if ((source as { params?: Params }).params) {\n        return (source as { params: Params }).params;\n      }\n      return source as Params;\n    }\n  };\n\n  export function params(input: { seed_seed_len: number | bigint }): Params {\n    return Params.fromValues(input);\n  }\n}\n\nexport class CreateArgsBuilder {\n  private buffer: Uint8Array;\n  private view: DataView;\n  private __tnCachedParams: CreateArgs.Params | null = null;\n  private __tnLastBuffer: Uint8Array | null = null;\n  private __tnLastParams: CreateArgs.Params | null = null;\n  private __tnFam_seed: Uint8Array | null = null;\n  private __tnFam_seedCount: number | null = null;\n  private __tnFamWriter_seed?: __TnFamWriterResult<CreateArgsBuilder>;\n\n  constructor() {\n    this.buffer = new Uint8Array(46);\n    this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n  }\n\n  private __tnInvalidate(): void {\n    this.__tnCachedParams = null;\n    this.__tnLastBuffer = null;\n    this.__tnLastParams = null;\n  }\n\n  set_buffer_account_idx(value: number): this {\n    this.view.setUint16(0, value, true);\n    this.__tnInvalidate();\n    return this;\n  }\n\n  set_meta_account_idx(value: number): this {\n    this.view.setUint16(2, value, true);\n    this.__tnInvalidate();\n    return this;\n  }\n\n  set_authority_account_idx(value: number): this {\n    this.view.setUint16(4, value, true);\n    this.__tnInvalidate();\n    return this;\n  }\n\n  set_buffer_account_sz(value: number): this {\n    this.view.setUint32(6, value, true);\n    this.__tnInvalidate();\n    return this;\n  }\n\n  set_expected_account_hash(value: Uint8Array): this {\n    if (value.length !== 32) throw new Error(\"expected_account_hash expects 32 bytes\");\n    this.buffer.set(value, 10);\n    this.__tnInvalidate();\n    return this;\n  }\n\n  set_seed_len(value: number): this {\n    this.view.setUint32(42, value, true);\n    this.__tnInvalidate();\n    return this;\n  }\n\n  seed(): __TnFamWriterResult<CreateArgsBuilder> {\n    if (!this.__tnFamWriter_seed) {\n      this.__tnFamWriter_seed = __tnCreateFamWriter(this, \"seed\", (payload) => {\n        const bytes = new Uint8Array(payload);\n        const elementCount = bytes.length;\n        this.__tnFam_seed = bytes;\n        this.__tnFam_seedCount = elementCount;\n        this.set_seed_len(elementCount);\n        this.__tnInvalidate();\n      });\n    }\n    return this.__tnFamWriter_seed!;\n  }\n\n  build(): Uint8Array {\n    const params = this.__tnComputeParams();\n    const size = CreateArgs.footprintFromParams(params);\n    const buffer = new Uint8Array(size);\n    this.__tnWriteInto(buffer);\n    this.__tnValidateOrThrow(buffer, params);\n    return buffer;\n  }\n\n  buildInto(target: Uint8Array, offset = 0): Uint8Array {\n    const params = this.__tnComputeParams();\n    const size = CreateArgs.footprintFromParams(params);\n    if (target.length - offset < size) throw new Error(\"CreateArgsBuilder: target buffer too small\");\n    const slice = target.subarray(offset, offset + size);\n    this.__tnWriteInto(slice);\n    this.__tnValidateOrThrow(slice, params);\n    return target;\n  }\n\n  finish(): CreateArgs {\n    const buffer = this.build();\n    const params = this.__tnLastParams ?? this.__tnComputeParams();\n    const view = CreateArgs.from_array(buffer, { params });\n    if (!view) throw new Error(\"CreateArgsBuilder: failed to finalize view\");\n    return view;\n  }\n\n  finishView(): CreateArgs {\n    return this.finish();\n  }\n\n  dynamicParams(): CreateArgs.Params {\n    return this.__tnComputeParams();\n  }\n\n  private __tnComputeParams(): CreateArgs.Params {\n    if (this.__tnCachedParams) return this.__tnCachedParams;\n    const params = CreateArgs.Params.fromValues({\n      seed_seed_len: (() => { if (this.__tnFam_seedCount === null) throw new Error(\"CreateArgsBuilder: field 'seed' must be written before computing params\"); return __tnToBigInt(this.__tnFam_seedCount); })(),\n    });\n    this.__tnCachedParams = params;\n    return params;\n  }\n\n  private __tnWriteInto(target: Uint8Array): void {\n    target.set(this.buffer, 0);\n    let cursor = this.buffer.length;\n    const __tnLocal_seed_bytes = this.__tnFam_seed;\n    if (!__tnLocal_seed_bytes) throw new Error(\"CreateArgsBuilder: field 'seed' must be written before build\");\n    target.set(__tnLocal_seed_bytes, cursor);\n    cursor += __tnLocal_seed_bytes.length;\n  }\n\n  private __tnValidateOrThrow(buffer: Uint8Array, params: CreateArgs.Params): void {\n    const result = CreateArgs.validate(buffer, { params });\n    if (!result.ok) {\n      throw new Error(`${ CreateArgs }Builder: builder produced invalid buffer (code=${result.code ?? \"unknown\"})`);\n    }\n    this.__tnLastParams = result.params ?? params;\n    this.__tnLastBuffer = buffer;\n  }\n}\n\n__tnRegisterFootprint(\"CreateArgs\", (params) => CreateArgs.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"CreateArgs\", (buffer, params) => CreateArgs.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"CreateArgs\", (buffer) => { const result = CreateArgs.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n\n/* ----- TYPE DEFINITION FOR FinalizeArgs ----- */\n\nconst __tn_ir_FinalizeArgs = {\n  typeName: \"FinalizeArgs\",\n  root: { op: \"const\", value: 36n }\n} as const;\n\nexport class FinalizeArgs {\n  private view: DataView;\n\n  private constructor(private buffer: Uint8Array) {\n    this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n  }\n\n  static __tnCreateView(buffer: Uint8Array, opts?: { fieldContext?: Record<string, number | bigint> }): FinalizeArgs {\n    if (!buffer || buffer.length === undefined) throw new Error(\"FinalizeArgs.__tnCreateView requires a Uint8Array\");\n    return new FinalizeArgs(new Uint8Array(buffer));\n  }\n\n  static builder(): FinalizeArgsBuilder {\n    return new FinalizeArgsBuilder();\n  }\n\n  static fromBuilder(builder: FinalizeArgsBuilder): FinalizeArgs | null {\n    const buffer = builder.build();\n    return FinalizeArgs.from_array(buffer);\n  }\n\n  get_buffer_account_idx(): number {\n    const offset = 0;\n    return this.view.getUint16(offset, true); /* little-endian */\n  }\n\n  set_buffer_account_idx(value: number): void {\n    const offset = 0;\n    this.view.setUint16(offset, value, true); /* little-endian */\n  }\n\n  get buffer_account_idx(): number {\n    return this.get_buffer_account_idx();\n  }\n\n  set buffer_account_idx(value: number) {\n    this.set_buffer_account_idx(value);\n  }\n\n  get_meta_account_idx(): number {\n    const offset = 2;\n    return this.view.getUint16(offset, true); /* little-endian */\n  }\n\n  set_meta_account_idx(value: number): void {\n    const offset = 2;\n    this.view.setUint16(offset, value, true); /* little-endian */\n  }\n\n  get meta_account_idx(): number {\n    return this.get_meta_account_idx();\n  }\n\n  set meta_account_idx(value: number) {\n    this.set_meta_account_idx(value);\n  }\n\n  get_expected_account_hash(): Hash {\n    const offset = 4;\n    const slice = this.buffer.subarray(offset, offset + 32);\n    return Hash.from_array(slice)!;\n  }\n\n  set_expected_account_hash(value: Hash): void {\n    /* Copy bytes from source struct to this field */\n    const sourceBytes = (value as any).buffer as Uint8Array;\n    const offset = 4;\n    this.buffer.set(sourceBytes, offset);\n  }\n\n  get expected_account_hash(): Hash {\n    return this.get_expected_account_hash();\n  }\n\n  set expected_account_hash(value: Hash) {\n    this.set_expected_account_hash(value);\n  }\n\n  private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n    return __tnEvalFootprint(__tn_ir_FinalizeArgs.root, { params: __tnParams });\n  }\n\n  private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n    return __tnValidateIrTree(__tn_ir_FinalizeArgs, buffer, __tnParams);\n  }\n\n  static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n    return this.__tnFootprintInternal(__tnParams);\n  }\n\n  static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n    return this.__tnValidateInternal(buffer, __tnParams);\n  }\n\n  static footprintIr(): bigint {\n    return this.__tnFootprintInternal(Object.create(null));\n  }\n\n  static footprint(): number {\n    const irResult = this.footprintIr();\n      const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n    if (__tnBigIntGreaterThan(irResult, maxSafe)) {\n      throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for FinalizeArgs');\n    }\n    return __tnBigIntToNumber(irResult, 'FinalizeArgs::footprint');\n  }\n\n  static validate(buffer: Uint8Array, _opts?: { params?: never }): { ok: boolean; code?: string; consumed?: number } {\n    if (buffer.length < 36) return { ok: false, code: \"tn.buffer_too_small\", consumed: 36 };\n    return { ok: true, consumed: 36 };\n  }\n\n  static from_array(buffer: Uint8Array): FinalizeArgs | null {\n    if (!buffer || buffer.length === undefined) {\n      return null;\n    }\n    const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    const validation = this.validate(buffer);\n    if (!validation.ok) {\n      return null;\n    }\n    return new FinalizeArgs(buffer);\n  }\n\n}\n\nexport class FinalizeArgsBuilder {\n  private buffer: Uint8Array;\n  private view: DataView;\n\n  constructor() {\n    this.buffer = new Uint8Array(36);\n    this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n  }\n\n  set_buffer_account_idx(value: number): this {\n    this.view.setUint16(0, value, true);\n    return this;\n  }\n\n  set_meta_account_idx(value: number): this {\n    this.view.setUint16(2, value, true);\n    return this;\n  }\n\n  set_expected_account_hash(value: Uint8Array): this {\n    if (value.length !== 32) throw new Error(\"expected_account_hash expects 32 bytes\");\n    this.buffer.set(value, 4);\n    return this;\n  }\n\n  build(): Uint8Array {\n    return this.buffer.slice();\n  }\n\n  buildInto(target: Uint8Array, offset = 0): Uint8Array {\n    if (target.length - offset < this.buffer.length) throw new Error(\"target buffer too small\");\n    target.set(this.buffer, offset);\n    return target;\n  }\n\n  finish(): FinalizeArgs {\n    const view = FinalizeArgs.from_array(this.buffer.slice());\n    if (!view) throw new Error(\"failed to build FinalizeArgs\");\n    return view;\n  }\n}\n\n__tnRegisterFootprint(\"FinalizeArgs\", (params) => FinalizeArgs.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"FinalizeArgs\", (buffer, params) => FinalizeArgs.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"FinalizeArgs\", (buffer) => { const result = FinalizeArgs.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n\n/* ----- TYPE DEFINITION FOR UploaderInstruction ----- */\n\nconst __tn_ir_UploaderInstruction = {\n  typeName: \"UploaderInstruction\",\n  root: { op: \"align\", alignment: 1, node: { op: \"add\", left: { op: \"align\", alignment: 4, node: { op: \"const\", value: 4n } }, right: { op: \"align\", alignment: 1, node: { op: \"field\", param: \"payload.payload_size\" } } } }\n} as const;\n\nexport class UploaderInstruction_payload_Inner {\n  private view: DataView;\n  private __tnFieldContext: Record<string, number | bigint> | null = null;\n  private constructor(private buffer: Uint8Array, private descriptor: __TnVariantDescriptor | null, fieldContext?: Record<string, number | bigint>) {\n    this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    this.__tnFieldContext = fieldContext ?? null;\n  }\n\n  static __tnCreate(payload: Uint8Array, descriptor: __TnVariantDescriptor | null, fieldContext?: Record<string, number | bigint>): UploaderInstruction_payload_Inner {\n    return new UploaderInstruction_payload_Inner(new Uint8Array(payload), descriptor, fieldContext);\n  }\n\n  bytes(): Uint8Array {\n    return new Uint8Array(this.buffer);\n  }\n\n  variant(): __TnVariantDescriptor | null {\n    return this.descriptor;\n  }\n\n  asCreate(): CreateArgs | null {\n    if (!this.descriptor || this.descriptor.tag !== 0) return null;\n    return CreateArgs.__tnCreateView(new Uint8Array(this.buffer), { fieldContext: this.__tnFieldContext ?? undefined });\n  }\n\n  asWrite(): WriteArgs | null {\n    if (!this.descriptor || this.descriptor.tag !== 1) return null;\n    return WriteArgs.__tnCreateView(new Uint8Array(this.buffer), { fieldContext: this.__tnFieldContext ?? undefined });\n  }\n\n  asDestroy(): DestroyArgs | null {\n    if (!this.descriptor || this.descriptor.tag !== 2) return null;\n    return DestroyArgs.__tnCreateView(new Uint8Array(this.buffer), { fieldContext: this.__tnFieldContext ?? undefined });\n  }\n\n  asFinalize(): FinalizeArgs | null {\n    if (!this.descriptor || this.descriptor.tag !== 3) return null;\n    return FinalizeArgs.__tnCreateView(new Uint8Array(this.buffer), { fieldContext: this.__tnFieldContext ?? undefined });\n  }\n\n}\n\nexport class UploaderInstruction {\n  private view: DataView;\n  private static readonly __tnFieldOffset_payload = 4;\n  private __tnParams: UploaderInstruction.Params;\n\n  private constructor(private buffer: Uint8Array, params?: UploaderInstruction.Params) {\n    this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    if (params) {\n      this.__tnParams = params;\n    } else {\n      const derived = UploaderInstruction.__tnExtractParams(this.view, buffer);\n      if (!derived) {\n        throw new Error(\"UploaderInstruction: failed to derive dynamic parameters\");\n      }\n      this.__tnParams = derived.params;\n    }\n  }\n\n  static __tnCreateView(buffer: Uint8Array, opts?: { params?: UploaderInstruction.Params, fieldContext?: Record<string, number | bigint> }): UploaderInstruction {\n    if (!buffer || buffer.length === undefined) throw new Error(\"UploaderInstruction.__tnCreateView requires a Uint8Array\");\n    let params = opts?.params ?? null;\n    if (!params) {\n      const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n      const derived = UploaderInstruction.__tnExtractParams(view, buffer);\n      if (!derived) throw new Error(\"UploaderInstruction.__tnCreateView: failed to derive params\");\n      params = derived.params;\n    }\n    const instance = new UploaderInstruction(new Uint8Array(buffer), params);\n    return instance;\n  }\n\n  dynamicParams(): UploaderInstruction.Params {\n    return this.__tnParams;\n  }\n\n  static builder(): UploaderInstructionBuilder {\n    return new UploaderInstructionBuilder();\n  }\n\n  static fromBuilder(builder: UploaderInstructionBuilder): UploaderInstruction | null {\n    const buffer = builder.build();\n    const params = builder.dynamicParams();\n    return UploaderInstruction.from_array(buffer, { params });\n  }\n\n  static readonly payloadVariantDescriptors = Object.freeze([\n    {\n      name: \"create\",\n      tag: 0,\n      payloadSize: null,\n      payloadType: \"UploaderInstruction::payload::create\",\n      createPayloadBuilder: () => __tnMaybeCallBuilder(CreateArgs),\n    },\n    {\n      name: \"write\",\n      tag: 1,\n      payloadSize: null,\n      payloadType: \"UploaderInstruction::payload::write\",\n      createPayloadBuilder: () => __tnMaybeCallBuilder(WriteArgs),\n    },\n    {\n      name: \"destroy\",\n      tag: 2,\n      payloadSize: 4,\n      payloadType: \"UploaderInstruction::payload::destroy\",\n      createPayloadBuilder: () => __tnMaybeCallBuilder(DestroyArgs),\n    },\n    {\n      name: \"finalize\",\n      tag: 3,\n      payloadSize: 36,\n      payloadType: \"UploaderInstruction::payload::finalize\",\n      createPayloadBuilder: () => __tnMaybeCallBuilder(FinalizeArgs),\n    },\n  ] as const);\n\n  static __tnComputeSequentialLayout(view: DataView, buffer: Uint8Array): { params: Record<string, bigint> | null; offsets: Record<string, number> | null; derived: Record<string, bigint> | null } | null {\n    const __tnLength = buffer.length;\n    let __tnParamSeq_payload_payload_size: bigint | null = null;\n    let __tnFieldValue_tag: number | null = null;\n    let __tnCursorMutable = 0;\n    if (__tnCursorMutable + 4 > __tnLength) return null;\n    const __tnRead_tag = view.getUint32(__tnCursorMutable, true);\n    __tnFieldValue_tag = __tnRead_tag;\n    __tnCursorMutable += 4;\n    const __tnEnumTagValue_payload = __tnFieldValue_tag;\n    if (__tnEnumTagValue_payload === null) return null;\n    let __tnEnumSize_payload = 0;\n    switch (Number(__tnEnumTagValue_payload)) {\n      case 0: break;\n      case 1: break;\n      case 2: break;\n      case 3: break;\n      default: return null;\n    }\n    if (__tnCursorMutable > __tnLength) return null;\n    __tnEnumSize_payload = __tnLength - __tnCursorMutable;\n    __tnCursorMutable = __tnLength;\n    __tnParamSeq_payload_payload_size = __tnToBigInt(__tnEnumSize_payload);\n    const params: Record<string, bigint> = Object.create(null);\n    if (__tnParamSeq_payload_payload_size === null) return null;\n    params[\"payload_payload_size\"] = __tnParamSeq_payload_payload_size as bigint;\n    return { params, offsets: null, derived: null };\n  }\n\n  private static __tnExtractParams(view: DataView, buffer: Uint8Array): { params: UploaderInstruction.Params; derived: Record<string, bigint> | null } | null {\n    if (buffer.length < 4) {\n      return null;\n    }\n    const __tnParam_payload_tag = __tnToBigInt(view.getUint32(0, true));\n    const __tnLayout = UploaderInstruction.__tnComputeSequentialLayout(view, buffer);\n    if (!__tnLayout || !__tnLayout.params) return null;\n    const __tnSeqParams = __tnLayout.params;\n    const __tnParamSeq_payload_payload_size = __tnSeqParams[\"payload_payload_size\"];\n    if (__tnParamSeq_payload_payload_size === undefined) return null;\n    const __tnExtractedParams = UploaderInstruction.Params.fromValues({\n      payload_payload_size: __tnParamSeq_payload_payload_size as bigint,\n      payload_tag: __tnParam_payload_tag,\n    });\n    return { params: __tnExtractedParams, derived: null };\n  }\n\n  get_tag(): number {\n    const offset = 0;\n    return this.view.getUint32(offset, true); /* little-endian */\n  }\n\n  set_tag(value: number): void {\n    const offset = 0;\n    this.view.setUint32(offset, value, true); /* little-endian */\n  }\n\n  get tag(): number {\n    return this.get_tag();\n  }\n\n  set tag(value: number) {\n    this.set_tag(value);\n  }\n\n  payloadVariant(): typeof UploaderInstruction.payloadVariantDescriptors[number] | null {\n    const tag = this.view.getUint8(0);\n    return UploaderInstruction.payloadVariantDescriptors.find((variant) => variant.tag === tag) ?? null;\n  }\n\n  payload(): UploaderInstruction_payload_Inner {\n    const descriptor = this.payloadVariant();\n    if (!descriptor) throw new Error(\"UploaderInstruction: unknown payload variant\");\n    const offset = UploaderInstruction.__tnFieldOffset_payload;\n    const remaining = this.buffer.length - offset;\n    const payloadLength = descriptor.payloadSize ?? remaining;\n    if (payloadLength < 0 || offset + payloadLength > this.buffer.length) throw new Error(\"UploaderInstruction: payload exceeds buffer bounds\");\n    const slice = this.buffer.subarray(offset, offset + payloadLength);\n    return UploaderInstruction_payload_Inner.__tnCreate(slice, descriptor, undefined);\n  }\n  private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n    return __tnEvalFootprint(__tn_ir_UploaderInstruction.root, { params: __tnParams });\n  }\n\n  private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n    return __tnValidateIrTree(__tn_ir_UploaderInstruction, buffer, __tnParams);\n  }\n\n  static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n    return this.__tnFootprintInternal(__tnParams);\n  }\n\n  static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n    return this.__tnValidateInternal(buffer, __tnParams);\n  }\n\n  static footprintIr(payload_payload_size: number | bigint, payload_tag: number | bigint): bigint {\n    const params = UploaderInstruction.Params.fromValues({\n      payload_payload_size: payload_payload_size,\n      payload_tag: payload_tag,\n    });\n    return this.footprintIrFromParams(params);\n  }\n\n  private static __tnPackParams(params: UploaderInstruction.Params): Record<string, bigint> {\n    const record: Record<string, bigint> = Object.create(null);\n    record[\"payload.payload_size\"] = params.payload_payload_size;\n    record[\"payload.tag\"] = params.payload_tag;\n    return record;\n  }\n\n  static footprintIrFromParams(params: UploaderInstruction.Params): bigint {\n    const __tnParams = this.__tnPackParams(params);\n    return this.__tnFootprintInternal(__tnParams);\n  }\n\n  static footprintFromParams(params: UploaderInstruction.Params): number {\n    const irResult = this.footprintIrFromParams(params);\n    const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n    if (__tnBigIntGreaterThan(irResult, maxSafe)) throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for UploaderInstruction');\n    return __tnBigIntToNumber(irResult, 'UploaderInstruction::footprintFromParams');\n  }\n\n  static footprintFromValues(input: { payload_payload_size: number | bigint, payload_tag: number | bigint }): number {\n    const params = UploaderInstruction.params(input);\n    return this.footprintFromParams(params);\n  }\n\n  static footprint(params: UploaderInstruction.Params): number {\n    return this.footprintFromParams(params);\n  }\n\n  static validate(buffer: Uint8Array, opts?: { params?: UploaderInstruction.Params }): { ok: boolean; code?: string; consumed?: number; params?: UploaderInstruction.Params } {\n    if (!buffer || buffer.length === undefined) {\n      return { ok: false, code: \"tn.invalid_buffer\" };\n    }\n    const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    let params = opts?.params ?? null;\n    if (!params) {\n      const extracted = this.__tnExtractParams(view, buffer);\n      if (!extracted) return { ok: false, code: \"tn.param_extraction_failed\" };\n      params = extracted.params;\n    }\n    const __tnParamsRec = this.__tnPackParams(params);\n    const irResult = this.__tnValidateInternal(buffer, __tnParamsRec);\n    if (!irResult.ok) {\n      return { ok: false, code: irResult.code, consumed: irResult.consumed ? __tnBigIntToNumber(irResult.consumed, 'UploaderInstruction::validate') : undefined, params };\n    }\n    const consumed = irResult.consumed ? __tnBigIntToNumber(irResult.consumed, 'UploaderInstruction::validate') : undefined;\n    return { ok: true, consumed, params };\n  }\n\n  static from_array(buffer: Uint8Array, opts?: { params?: UploaderInstruction.Params }): UploaderInstruction | null {\n    if (!buffer || buffer.length === undefined) {\n      return null;\n    }\n    const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    let params = opts?.params ?? null;\n    if (!params) {\n      const derived = this.__tnExtractParams(view, buffer);\n      if (!derived) return null;\n      params = derived.params;\n    }\n    const validation = this.validate(buffer, { params });\n    if (!validation.ok) {\n      return null;\n    }\n    const cached = validation.params ?? params;\n    const state = new UploaderInstruction(buffer, cached);\n    return state;\n  }\n\n\n}\n\nexport namespace UploaderInstruction {\n  export type Params = {\n    /** ABI path: payload.payload_size */\n    readonly payload_payload_size: bigint;\n    /** ABI path: payload.tag */\n    readonly payload_tag: bigint;\n  };\n\n  export const ParamKeys = Object.freeze({\n    payload_payload_size: \"payload.payload_size\",\n    payload_tag: \"payload.tag\",\n  } as const);\n\n  export const Params = {\n    fromValues(input: { payload_payload_size: number | bigint, payload_tag: number | bigint }): Params {\n      return {\n        payload_payload_size: __tnToBigInt(input.payload_payload_size),\n        payload_tag: __tnToBigInt(input.payload_tag),\n      };\n    },\n    fromBuilder(source: { dynamicParams(): Params } | { params: Params } | Params): Params {\n      if ((source as { dynamicParams?: () => Params }).dynamicParams) {\n        return (source as { dynamicParams(): Params }).dynamicParams();\n      }\n      if ((source as { params?: Params }).params) {\n        return (source as { params: Params }).params;\n      }\n      return source as Params;\n    }\n  };\n\n  export function params(input: { payload_payload_size: number | bigint, payload_tag: number | bigint }): Params {\n    return Params.fromValues(input);\n  }\n}\n\nexport class UploaderInstructionBuilder {\n  private __tnPrefixBuffer: Uint8Array;\n  private __tnPrefixView: DataView;\n  private __tnField_tag: number | null = null;\n  private __tnPayload_payload: { descriptor: typeof UploaderInstruction.payloadVariantDescriptors[number]; bytes: Uint8Array } | null = null;\n  private __tnCachedParams: UploaderInstruction.Params | null = null;\n  private __tnLastBuffer: Uint8Array | null = null;\n  private __tnLastParams: UploaderInstruction.Params | null = null;\n  private __tnVariantSelector_payload?: __TnVariantSelectorResult<UploaderInstructionBuilder>;\n\n  constructor() {\n    this.__tnPrefixBuffer = new Uint8Array(4);\n    this.__tnPrefixView = new DataView(this.__tnPrefixBuffer.buffer, this.__tnPrefixBuffer.byteOffset, this.__tnPrefixBuffer.byteLength);\n  }\n\n  private __tnInvalidate(): void {\n    this.__tnCachedParams = null;\n    this.__tnLastBuffer = null;\n    this.__tnLastParams = null;\n  }\n\n  private __tnAssign_tag(value: number): void {\n    this.__tnField_tag = value;\n    this.__tnInvalidate();\n  }\n\n  set_tag(value: number): this {\n    this.__tnAssign_tag(value);\n    return this;\n  }\n\n  payload(): __TnVariantSelectorResult<UploaderInstructionBuilder> {\n    if (!this.__tnVariantSelector_payload) {\n      this.__tnVariantSelector_payload = __tnCreateVariantSelector(this, UploaderInstruction.payloadVariantDescriptors, (descriptor, payload) => {\n        this.__tnPayload_payload = { descriptor, bytes: new Uint8Array(payload) };\n        this.__tnAssign_tag(descriptor.tag);\n      });\n    }\n    return this.__tnVariantSelector_payload!;\n  }\n\n  build(): Uint8Array {\n    const params = this.__tnComputeParams();\n    if (this.__tnField_tag === null) throw new Error(\"UploaderInstructionBuilder: field 'tag' must be set before build\");\n    if (!this.__tnPayload_payload) throw new Error(\"UploaderInstructionBuilder: payload variant not selected\");\n    const payloadLength = this.__tnPayload_payload.bytes.length;\n    const requiredSize = 4 + payloadLength;\n    const footprintSize = UploaderInstruction.footprintFromParams(params);\n    const size = Math.max(requiredSize, footprintSize);\n    const buffer = new Uint8Array(size);\n    this.__tnWriteInto(buffer);\n    this.__tnValidateOrThrow(buffer, params);\n    return buffer;\n  }\n\n  buildInto(target: Uint8Array, offset = 0): Uint8Array {\n    const params = this.__tnComputeParams();\n    if (this.__tnField_tag === null) throw new Error(\"UploaderInstructionBuilder: field 'tag' must be set before build\");\n    if (!this.__tnPayload_payload) throw new Error(\"UploaderInstructionBuilder: payload variant not selected\");\n    const payloadLength = this.__tnPayload_payload.bytes.length;\n    const requiredSize = 4 + payloadLength;\n    const footprintSize = UploaderInstruction.footprintFromParams(params);\n    const size = Math.max(requiredSize, footprintSize);\n    if (target.length - offset < size) throw new Error(\"UploaderInstructionBuilder: target buffer too small\");\n    const slice = target.subarray(offset, offset + size);\n    this.__tnWriteInto(slice);\n    this.__tnValidateOrThrow(slice, params);\n    return target;\n  }\n\n  finish(): UploaderInstruction {\n    const buffer = this.build();\n    const params = this.__tnLastParams ?? this.__tnComputeParams();\n    const view = UploaderInstruction.from_array(buffer, { params });\n    if (!view) throw new Error(\"UploaderInstructionBuilder: failed to finalize view\");\n    return view;\n  }\n\n  finishView(): UploaderInstruction {\n    return this.finish();\n  }\n\n  dynamicParams(): UploaderInstruction.Params {\n    return this.__tnComputeParams();\n  }\n\n  private __tnComputeParams(): UploaderInstruction.Params {\n    if (this.__tnCachedParams) return this.__tnCachedParams;\n    const params = UploaderInstruction.Params.fromValues({\n      payload_payload_size: (() => { if (!this.__tnPayload_payload) throw new Error(\"UploaderInstructionBuilder: payload 'payload' must be selected before build\"); return __tnToBigInt(this.__tnPayload_payload.bytes.length); })(),\n      payload_tag: (() => { if (this.__tnField_tag === null) throw new Error(\"UploaderInstructionBuilder: missing enum tag\"); return __tnToBigInt(this.__tnField_tag); })(),\n    });\n    this.__tnCachedParams = params;\n    return params;\n  }\n\n  private __tnWriteInto(target: Uint8Array): void {\n    if (this.__tnField_tag === null) throw new Error(\"UploaderInstructionBuilder: field 'tag' must be set before build\");\n    if (!this.__tnPayload_payload) throw new Error(\"UploaderInstructionBuilder: payload variant not selected\");\n    const view = new DataView(target.buffer, target.byteOffset, target.byteLength);\n    target.set(this.__tnPrefixBuffer, 0);\n    view.setUint32(0, this.__tnField_tag, true);\n    target.set(this.__tnPayload_payload.bytes, 4);\n  }\n\n  private __tnValidateOrThrow(buffer: Uint8Array, params: UploaderInstruction.Params): void {\n    const result = UploaderInstruction.validate(buffer, { params });\n    if (!result.ok) {\n      throw new Error(`${ UploaderInstruction }Builder: builder produced invalid buffer (code=${result.code ?? \"unknown\"})`);\n    }\n    this.__tnLastParams = result.params ?? params;\n    this.__tnLastBuffer = buffer;\n  }\n}\n\n__tnRegisterFootprint(\"UploaderInstruction\", (params) => UploaderInstruction.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"UploaderInstruction\", (buffer, params) => UploaderInstruction.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"UploaderInstruction\", (buffer) => { const result = UploaderInstruction.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n","import {\n  CreateArgsBuilder,\n  DestroyArgsBuilder,\n  FinalizeArgsBuilder,\n  UploaderInstruction,\n  UploaderInstructionBuilder,\n  WriteArgsBuilder,\n} from './abi/thru/program/uploader/types';\nimport {\n  accountIndex,\n  assertU16,\n  assertU32,\n  exactBytes,\n  normalizeSeed,\n  type AccountLookupContext,\n  type InstructionData,\n} from '../utils/helpers';\nimport type {\n  CreateUploadBufferInstructionArgs,\n  DestroyUploadInstructionArgs,\n  FinalizeUploadInstructionArgs,\n  UploaderInstructionArgs,\n  WriteUploadInstructionArgs,\n} from './types';\n\ntype UploaderVariant =\n  (typeof UploaderInstruction.payloadVariantDescriptors)[number]['name'];\n\nfunction envelope(\n  variant: UploaderVariant,\n  payload: Uint8Array\n): Uint8Array {\n  return new UploaderInstructionBuilder()\n    .payload()\n    .select(variant)\n    .writePayload(payload)\n    .finish()\n    .build();\n}\n\nfunction validateIndices(args: {\n  bufferAccountIdx: number;\n  metaAccountIdx: number;\n}): void {\n  assertU16(args.bufferAccountIdx, 'bufferAccountIdx');\n  assertU16(args.metaAccountIdx, 'metaAccountIdx');\n}\n\nexport function buildUploaderInstructionBytes(\n  args: UploaderInstructionArgs\n): Uint8Array {\n  validateIndices(args);\n  switch (args.kind) {\n    case 'create': {\n      assertU16(args.authorityAccountIdx, 'authorityAccountIdx');\n      assertU32(args.bufferSize, 'bufferSize');\n      const builder = new CreateArgsBuilder()\n        .set_buffer_account_idx(args.bufferAccountIdx)\n        .set_meta_account_idx(args.metaAccountIdx)\n        .set_authority_account_idx(args.authorityAccountIdx)\n        .set_buffer_account_sz(args.bufferSize)\n        .set_expected_account_hash(\n          exactBytes(args.expectedHash, 32, 'expectedHash')\n        );\n      builder.seed().write(normalizeSeed(args.seed)).finish();\n      return envelope('create', builder.build());\n    }\n    case 'write': {\n      assertU32(args.offset, 'offset');\n      assertU32(args.data.length, 'data length');\n      const builder = new WriteArgsBuilder()\n        .set_buffer_account_idx(args.bufferAccountIdx)\n        .set_meta_account_idx(args.metaAccountIdx)\n        .set_data_offset(args.offset);\n      builder.data().write(args.data).finish();\n      return envelope('write', builder.build());\n    }\n    case 'destroy':\n      return envelope(\n        'destroy',\n        new DestroyArgsBuilder()\n          .set_buffer_account_idx(args.bufferAccountIdx)\n          .set_meta_account_idx(args.metaAccountIdx)\n          .build()\n      );\n    case 'finalize':\n      return envelope(\n        'finalize',\n        new FinalizeArgsBuilder()\n          .set_buffer_account_idx(args.bufferAccountIdx)\n          .set_meta_account_idx(args.metaAccountIdx)\n          .set_expected_account_hash(\n            exactBytes(args.expectedHash, 32, 'expectedHash')\n          )\n          .build()\n      );\n  }\n}\n\nfunction indices(\n  context: AccountLookupContext,\n  args: { bufferAccount: Uint8Array; metaAccount: Uint8Array }\n): { bufferAccountIdx: number; metaAccountIdx: number } {\n  return {\n    bufferAccountIdx: accountIndex(\n      context,\n      args.bufferAccount,\n      'bufferAccount'\n    ),\n    metaAccountIdx: accountIndex(context, args.metaAccount, 'metaAccount'),\n  };\n}\n\nexport function createUploadBufferInstruction(\n  args: CreateUploadBufferInstructionArgs\n): InstructionData {\n  return async (context) =>\n    buildUploaderInstructionBytes({\n      kind: 'create',\n      ...indices(context, args),\n      authorityAccountIdx: accountIndex(\n        context,\n        args.authorityAccount,\n        'authorityAccount'\n      ),\n      bufferSize: args.bufferSize,\n      expectedHash: args.expectedHash,\n      seed: args.seed,\n    });\n}\n\nexport function createWriteUploadInstruction(\n  args: WriteUploadInstructionArgs\n): InstructionData {\n  return async (context) =>\n    buildUploaderInstructionBytes({\n      kind: 'write',\n      ...indices(context, args),\n      data: args.data,\n      offset: args.offset,\n    });\n}\n\nexport function createDestroyUploadInstruction(\n  args: DestroyUploadInstructionArgs\n): InstructionData {\n  return async (context) =>\n    buildUploaderInstructionBytes({\n      kind: 'destroy',\n      ...indices(context, args),\n    });\n}\n\nexport function createFinalizeUploadInstruction(\n  args: FinalizeUploadInstructionArgs\n): InstructionData {\n  return async (context) =>\n    buildUploaderInstructionBytes({\n      kind: 'finalize',\n      ...indices(context, args),\n      expectedHash: args.expectedHash,\n    });\n}\n","import { decodeAddress } from '@thru/sdk/helpers';\nimport { UPLOADER_PROGRAM_ADDRESS } from '../../../../src/core-program-addresses';\nexport { UPLOADER_PROGRAM_ADDRESS };\nexport const UPLOADER_PROGRAM_SEED = 'thru-program:1073768';\nexport const UPLOADER_PROGRAM_PUBKEY = decodeAddress(UPLOADER_PROGRAM_ADDRESS);\n\nexport const UPLOADER_META_SIZE = 65;\nexport const UPLOADER_STATE_OPEN = 0x01;\nexport const UPLOADER_STATE_FINALIZED = 0x02;\n\n/* Safe uploader write sizes matching the CLI policy under TN_TXN_MTU. */\nexport const UPLOADER_DEFAULT_CHUNK_SIZE = 30_720;\nexport const UPLOADER_MIN_CHUNK_SIZE = 1_024;\nexport const UPLOADER_MAX_CHUNK_SIZE = 31_000;\n","import { deriveProgramAddress } from '../../../modules/helpers';\nimport {\n  padSeed,\n  pubkeyBytes,\n  type ProgramSeed,\n} from '../utils/helpers';\nimport { UPLOADER_PROGRAM_ADDRESS } from './constants';\nimport type { UploadAddresses } from './types';\n\nexport function deriveUploadAddresses(\n  seed: ProgramSeed,\n  uploaderProgramAddress: string | Uint8Array = UPLOADER_PROGRAM_ADDRESS\n): UploadAddresses {\n  const uploader = pubkeyBytes(\n    uploaderProgramAddress,\n    'uploader program address'\n  );\n  const meta = deriveProgramAddress({\n    programAddress: uploader,\n    seed: padSeed(seed),\n    ephemeral: true,\n  });\n  const buffer = deriveProgramAddress({\n    programAddress: uploader,\n    seed: meta.bytes,\n    ephemeral: true,\n  });\n  return {\n    metaAccountAddress: meta.address,\n    metaAccountBytes: meta.bytes,\n    bufferAccountAddress: buffer.address,\n    bufferAccountBytes: buffer.bytes,\n  };\n}\n","import { decodeAddress } from '@thru/sdk/helpers';\nimport { COMPRESSION_PROGRAM_ADDRESS, MULTICALL_PROGRAM_ADDRESS, UPLOADER_PROGRAM_ADDRESS } from '../../../src/core-program-addresses';\nimport { buildCompressInstruction, buildDecompressInstruction, buildDecompressFromPointerInstruction, validateCompressionProof } from '../../domain/programs/compression/instructions';\nimport { buildMulticallInstruction } from '../../domain/programs/multicall';\nimport { buildUploaderInstructionBytes } from '../../domain/programs/uploader/instructions';\nimport { deriveUploadAddresses } from '../../domain/programs/uploader/derivation';\nimport type { AccountImage, Instruction, UploadPair } from './types';\nfunction u16(value: number): void {\n  if (!Number.isInteger(value) || value < 0 || value > 0xffff) throw new RangeError('account index must be a u16');\n}\nfunction dataPointer(index: number, offset: number): bigint {\n  u16(index);\n  if (!Number.isInteger(offset) || offset < 0 || offset >= 1 << 24) throw new RangeError(\"invalid VM data offset\");\n  return (3n << 40n) | (BigInt(index) << 24n) | BigInt(offset);\n}\n\n/** Concrete instruction composition for the built-in compression workflows. */\nexport function compressionInstructions(config: {\n  compression?: string; multicall?: string; uploader?: string;\n}) {\n  const addresses = { compression: config.compression ?? COMPRESSION_PROGRAM_ADDRESS,\n    multicall: config.multicall ?? MULTICALL_PROGRAM_ADDRESS,\n    uploader: config.uploader ?? UPLOADER_PROGRAM_ADDRESS };\n  for (const address of Object.values(addresses)) decodeAddress(address);\n  return {\n    ...addresses,\n    compress: (address: string, proof: Uint8Array): Instruction => ctx => buildCompressInstruction(ctx.getAccountIndex(address), proof),\n    decompress: (address: string, image: AccountImage, proof: Uint8Array): Instruction => ctx => buildDecompressInstruction(ctx.getAccountIndex(address), image.meta, image.data, proof),\n    decompressUploaded: (address: string, image: AccountImage, metaBuffer: string, dataBuffer: string, dataOffset: number, proof: Uint8Array, proofBuffer?: string): Instruction => ctx => {\n      validateCompressionProof(proof);\n      const prefix = buildDecompressFromPointerInstruction({ accountIndex: ctx.getAccountIndex(address),\n        dataSize: BigInt(image.data.length), metaAddress: dataPointer(ctx.getAccountIndex(metaBuffer), 2),\n        dataAddress: dataPointer(ctx.getAccountIndex(dataBuffer), dataOffset),\n        proofAddress: proofBuffer ? dataPointer(ctx.getAccountIndex(proofBuffer), 0) : (1n << 24n) + BigInt(ctx.instructionDataOffset + 46), proofSize: BigInt(proof.length) });\n      if (proofBuffer) return prefix;\n      const bytes = new Uint8Array(prefix.length + proof.length);\n      bytes.set(prefix); bytes.set(proof, prefix.length);\n      return bytes;\n    },\n    batch: (calls: Instruction[]): Instruction => async ctx => buildMulticallInstruction(await Promise.all(calls.map(async call => ({\n      programIdx: ctx.getAccountIndex(addresses.compression), instructionData: await call(ctx),\n    })))),\n    deriveUpload: (seed: Uint8Array) => {\n      const pair = deriveUploadAddresses(seed, addresses.uploader);\n      return { meta: pair.metaAccountAddress, buffer: pair.bufferAccountAddress };\n    },\n    createUpload: (pair: UploadPair, authority: string, seed: Uint8Array, size: number, hash: Uint8Array): Instruction => ctx => buildUploaderInstructionBytes({ kind: \"create\",\n      bufferAccountIdx: ctx.getAccountIndex(pair.buffer), metaAccountIdx: ctx.getAccountIndex(pair.meta),\n      authorityAccountIdx: ctx.getAccountIndex(authority), seed, bufferSize: size, expectedHash: hash }),\n    writeUpload: (pair: UploadPair, offset: number, data: Uint8Array): Instruction => ctx => buildUploaderInstructionBytes({ kind: \"write\",\n      bufferAccountIdx: ctx.getAccountIndex(pair.buffer), metaAccountIdx: ctx.getAccountIndex(pair.meta), offset, data }),\n    destroyUpload: (pair: UploadPair): Instruction => ctx => buildUploaderInstructionBytes({ kind: \"destroy\",\n      bufferAccountIdx: ctx.getAccountIndex(pair.buffer), metaAccountIdx: ctx.getAccountIndex(pair.meta) }),\n  };\n}\n","import { AccountView } from '@thru/sdk/proto';\nimport type { ThruClientContext } from '../../core/client';\nimport { readAccount } from './accounts';\nimport { CompressionError, type AccountImage, type AccountState } from \"./types\";\n\nexport type AccountCompressionStatus = {\n  address: string;\n  status: \"ACTIVE\" | \"COMPRESSED\" | \"DOES_NOT_EXIST\";\n  /** Compression archive slot, when the RPC supplies it. */\n  compressionSlot?: bigint;\n  retrySlot?: bigint;\n};\n\nexport async function lookupAccount(ctx: ThruClientContext, options: { signal?: AbortSignal }, address: string,\n  historicalView: AccountView.FULL | AccountView.META_ONLY = AccountView.FULL): Promise<{\n  current?: AccountState; image?: AccountImage;\n}> {\n  if (options.signal?.aborted) throw new CompressionError(\"CANCELLED\", \"Compression operation cancelled\");\n  const current = await readAccount(ctx, address, false, options.signal);\n  if (current) return { current };\n  const image = await readAccount(ctx, address, true, options.signal, historicalView);\n  // Historical reads clear COMPRESSED. A retained DELETED marker is distinct\n  // from a compression archive. Recheck current in case restoration just landed.\n  const recheck = await readAccount(ctx, address, false, options.signal);\n  return recheck ? { current: recheck } : { image: image?.deleted ? undefined : image };\n}\n\n/** Preserves input order and duplicates. RPC errors propagate; absence is never inferred from an outage. */\nexport async function getAccountStatuses(ctx: ThruClientContext, options: { signal?: AbortSignal } & {\n  accounts: readonly string[];\n}): Promise<AccountCompressionStatus[]> {\n  const statuses = new Map<string, AccountCompressionStatus>();\n  for (const address of new Set(options.accounts)) {\n    const { current, image } = await lookupAccount(ctx, options, address, AccountView.META_ONLY);\n    statuses.set(address, current ? { address, status: \"ACTIVE\" } : image ? {\n      address, status: \"COMPRESSED\", compressionSlot: image.slot,\n      retrySlot: image.slot === undefined ? undefined : image.slot + 384n,\n    } : { address, status: \"DOES_NOT_EXIST\" });\n  }\n  return options.accounts.map(address => ({ ...statuses.get(address)! }));\n}\n","import type { WorkflowOptions } from './session';\nimport { CompressionError, type AccountImage,\n  type CompressionResult, type CompressionTransaction, type Instruction,\n  type UploadCleanup, type UploadPair } from \"./types\";\nimport { lookupAccount } from \"./status\";\nimport { Pubkey } from '../../domain/primitives';\nimport { EOA_PROGRAM_ID, NOOP_PROGRAM_ADDRESS } from '../../../src/core-program-addresses';\n\nconst MAX_DATA = 16 * 1024 * 1024;\nconst MAX_WIRE = 32_768;\nconst COOLDOWN = 384n;\nconst CHUNK = 30_000;\nconst result = (): CompressionResult => ({ accounts: [], signatures: [], uploads: [] });\n\nfunction checkAbort(signal?: AbortSignal): void {\n  if (signal?.aborted) throw new CompressionError(\"CANCELLED\", \"Compression operation cancelled\");\n}\n\nfunction checkedLimit(options: WorkflowOptions): number {\n  const limit = options.maxTransactionBytes ?? MAX_WIRE;\n  if (!Number.isInteger(limit) || limit < 512 || limit > MAX_WIRE)\n    throw new RangeError(`maxTransactionBytes must be between 512 and ${MAX_WIRE}`);\n  return limit;\n}\n\nfunction validateImage(image: AccountImage): void {\n  if (image.meta.length !== 64 || image.data.length > MAX_DATA || image.dataSize !== image.data.length ||\n      new DataView(image.meta.buffer, image.meta.byteOffset, image.meta.byteLength).getUint32(4, true) !== image.data.length)\n    throw new CompressionError(\"INVALID_IMAGE\", \"Malformed archived account image\", { address: image.address });\n}\n\nfunction transaction(program: string, readWrite: string[], instructionData: Instruction,\n  bytes = 0, readOnly: string[] = [], accounts = 1): CompressionTransaction {\n  return { program, readWrite, readOnly, instructionData,\n    // One extra unit permits fee-payer activation. Each restored account rounds separately.\n    stateUnits: Math.ceil((bytes + 64 * accounts) / 4096) + accounts + 1,\n    computeUnits: Math.min(500_000_000, 1_000_000 + 4 * bytes) };\n}\n\nasync function execute(options: WorkflowOptions, output: CompressionResult,\n  tx: CompressionTransaction, signal = options.signal): Promise<string> {\n  checkAbort(signal);\n  if (await options.session.measure(tx) > checkedLimit(options))\n    throw new CompressionError(\"TRANSACTION_TOO_LARGE\", \"Compression prerequisite exceeds the transaction wire limit\");\n  try {\n    const signature = await options.session.execute(tx, signal);\n    output.signatures.push(signature);\n    return signature;\n  } catch (error) {\n    if (error instanceof CompressionError && error.details.signature)\n      output.signatures.push(error.details.signature);\n    throw error;\n  }\n}\n\nfunction withProgress(error: unknown, output: CompressionResult): CompressionError {\n  if (error instanceof CompressionError)\n    return new CompressionError(error.code, error.message, { ...error.details, result: output, cause: error });\n  return new CompressionError(\"RPC_ERROR\", error instanceof Error ? error.message : String(error),\n    { result: output, cause: error });\n}\n\n/** Returns only after the target is already inactive or its compression executed. */\nexport async function compressAccount(options: WorkflowOptions & { account: string }): Promise<CompressionResult> {\n  const output = result();\n  try {\n    checkAbort(options.signal);\n    const account = await options.session.current(options.account, options.signal);\n    if (!account) {\n      output.accounts.push({ address: options.account, status: \"skipped\", signatures: [] });\n      return output;\n    }\n    if (account.uncompressable || options.account === options.session.feePayer ||\n        [options.programs.compression, options.programs.multicall, options.programs.uploader].includes(options.account)) {\n      output.accounts.push({ address: options.account, status: \"skipped\", signatures: [] });\n      return output;\n    }\n    // Runtime requires CREATING for NEW accounts and UPDATING after restoration.\n    // A missing updating proof is not permission to switch proof kinds.\n    const proof = account.ephemeral ? new Uint8Array(40) :\n      await options.session.proof(options.account, account.isNew ? \"creating\" : \"updating\", options.signal);\n    const request = transaction(options.programs.compression,\n      [options.account], options.programs.compress(options.account, proof), account.dataSize);\n    // Compression frees active state; the session requires an active fee payer.\n    request.stateUnits = 0;\n    request.flags = 2; // TN_TXN_FLAG_MAY_COMPRESS_ACCOUNT (bit 1).\n    const signature = await execute(options, output, request);\n    const deleted = account.ephemeral || (account.isNew && account.dataSize === 0 && account.balance === 0n && account.nonce === 0n);\n    output.accounts.push({ address: options.account, status: deleted ? \"deleted\" : \"compressed\", signatures: [signature] });\n    return output;\n  } catch (error) { throw withProgress(error, output); }\n}\n\nasync function imageFor(options: WorkflowOptions, address: string): Promise<AccountImage | undefined> {\n  checkAbort(options.signal);\n  const { current, image } = await lookupAccount(options.session.ctx, options, address);\n  if (current && !current.deleted) return undefined;\n  if (current?.deleted)\n    throw new CompressionError(\"MISSING_ACCOUNT\", \"Deleted accounts cannot be restored\", { address });\n  if (!image)\n    throw new CompressionError(\"MISSING_ACCOUNT\", \"Account does not have a restorable image\", { address });\n  validateImage(image);\n  if (image.slot !== undefined) {\n    const retrySlot = image.slot + COOLDOWN;\n    if (await options.session.slot(options.signal) < retrySlot)\n      throw new CompressionError(\"NOT_READY\", \"Account is still in compression cooldown\", { address, retrySlot });\n  }\n  return image;\n}\n\nasync function pack(options: WorkflowOptions, images: AccountImage[], cached?: Map<string, Uint8Array>): Promise<CompressionTransaction> {\n  const calls: Instruction[] = [];\n  const proofs = cached ? images.map(image => cached.get(image.address)!) : options.session.proofs ?\n    await options.session.proofs(images.map(image => image.address), \"existing\", options.signal) :\n    await Promise.all(images.map(image => options.session.proof(image.address, \"existing\", options.signal)));\n  if (proofs.length !== images.length || proofs.some(proof => !proof))\n    throw new CompressionError(\"RPC_ERROR\", \"Batch proof response does not match the requested accounts\");\n  for (const [index, image] of images.entries()) {\n    calls.push(options.programs.decompress(image.address, image, proofs[index]!));\n  }\n  return transaction(images.length === 1 ? options.programs.compression : options.programs.multicall,\n    images.map(image => image.address), images.length === 1 ? calls[0]! : options.programs.batch(calls),\n    images.reduce((n, image) => n + image.data.length, 0),\n    images.length === 1 ? [] : [options.programs.compression], images.length);\n}\n\nasync function restoreBatch(options: WorkflowOptions, output: CompressionResult, images: AccountImage[]): Promise<void> {\n  if (!images.length) return;\n  try {\n    const signature = await execute(options, output, await pack(options, images));\n    for (const image of images)\n      output.accounts.push({ address: image.address, status: \"restored\", signatures: [signature] });\n  } catch (error) {\n    if (!(error instanceof CompressionError) || error.code !== \"TRANSACTION_FAILED\") throw error;\n    // Another caller may have restored a member, causing this entire atomic batch to fail.\n    const remaining: AccountImage[] = [];\n    for (const image of images) {\n      if (await options.session.current(image.address, options.signal))\n        output.accounts.push({ address: image.address, status: \"active\", signatures: [] });\n      else remaining.push(image);\n    }\n    if (remaining.length === images.length) throw error;\n    // Retry only after observing actual progress, so the recursion is bounded by account count.\n    await restoreBatch(options, output, remaining);\n  }\n}\n\nasync function upload(options: WorkflowOptions, output: CompressionResult, bytes: Uint8Array): Promise<UploadPair> {\n  checkAbort(options.signal);\n  const seed = crypto.getRandomValues(new Uint8Array(32));\n  const hash = new Uint8Array(await crypto.subtle.digest(\"SHA-256\", new Uint8Array(bytes)));\n  const pair = options.programs.deriveUpload(seed);\n  // Register before submission: even a timeout creating the buffer must expose recovery handles.\n  const cleanup: UploadCleanup = { ...pair, uploader: options.programs.uploader, status: \"pending\" };\n  await options.session.state.journal?.saveUpload?.(cleanup);\n  output.uploads.push(cleanup);\n  await execute(options, output, transaction(options.programs.uploader, [pair.meta, pair.buffer],\n    options.programs.createUpload(pair, options.session.authority, seed, bytes.length, hash), bytes.length, [], 2));\n  // Reserve room for transaction/accounts and the uploader header at a caller's lower wire limit.\n  const chunkSize = Math.min(CHUNK, checkedLimit(options) - (options.session.wallet ? 2048 : 512));\n  if (chunkSize < 1) throw new CompressionError(\"TRANSACTION_TOO_LARGE\", \"No room for an upload chunk\");\n  for (let offset = 0; offset < bytes.length; offset += chunkSize) {\n    const chunk = bytes.slice(offset, offset + chunkSize);\n    const request = transaction(options.programs.uploader, [pair.meta, pair.buffer],\n      options.programs.writeUpload(pair, offset, chunk), chunk.length);\n    // Creation already allocated the buffer; writing does not grow active state.\n    request.stateUnits = 0;\n    await execute(options, output, request);\n  }\n  return pair;\n}\n\n/** Retry cleanup using the same funded caller/authority. Preserve returned handles on failure. */\nexport async function cleanupUploads(options: WorkflowOptions & { uploads: UploadCleanup[] }): Promise<CompressionResult> {\n  const output = result();\n  output.uploads = options.uploads.map(item => ({ ...item }));\n  await options.session.reconcilePending(options.signal);\n  for (const pair of output.uploads) {\n    if (pair.status === \"cleaned\") continue;\n    try {\n      checkAbort(options.signal);\n      const [meta, buffer] = await Promise.all([\n        options.session.current(pair.meta, options.signal), options.session.current(pair.buffer, options.signal),\n      ]);\n      if (meta || buffer) {\n        const request = transaction(pair.uploader ?? options.programs.uploader,\n          [pair.meta, pair.buffer], options.programs.destroyUpload(pair));\n        // Cleanup frees state and must remain possible when capacity is full.\n        request.stateUnits = 0;\n        await execute(options, output, request);\n      }\n      pair.status = \"cleaned\";\n      delete pair.error;\n    } catch (error) {\n      pair.status = \"failed\";\n      pair.error = error instanceof Error ? error.message : String(error);\n    }\n  }\n  return output;\n}\n\nasync function restoreLarge(options: WorkflowOptions, output: CompressionResult, image: AccountImage): Promise<void> {\n  const firstUpload = output.uploads.length;\n  let uncertain = false;\n  try {\n    let metaBuffer: string;\n    let dataBuffer: string;\n    let dataOffset: number;\n    if (image.meta.length + image.data.length <= MAX_DATA) {\n      const bytes = new Uint8Array(image.meta.length + image.data.length);\n      bytes.set(image.meta); bytes.set(image.data, image.meta.length);\n      metaBuffer = dataBuffer = (await upload(options, output, bytes)).buffer;\n      dataOffset = image.meta.length;\n    } else {\n      metaBuffer = (await upload(options, output, image.meta)).buffer;\n      dataBuffer = (await upload(options, output, image.data)).buffer;\n      dataOffset = 0;\n    }\n    if (await options.session.current(image.address, options.signal)) {\n      output.accounts.push({ address: image.address, status: \"active\", signatures: [] });\n      return;\n    }\n    const proof = await options.session.proof(image.address, \"existing\", options.signal);\n    // Wallet wrapping changes the transaction-data offset. An account pointer\n    // is stable across passkey and signing-session envelope sizes.\n    const proofBuffer = options.session.wallet ? (await upload(options, output, proof)).buffer : undefined;\n    const signature = await execute(options, output, transaction(options.programs.compression, [image.address],\n      options.programs.decompressUploaded(image.address, image, metaBuffer, dataBuffer, dataOffset, proof, proofBuffer),\n      image.data.length, [...new Set([metaBuffer, dataBuffer, ...(proofBuffer ? [proofBuffer] : [])])]));\n    output.accounts.push({ address: image.address, status: \"restored\", signatures: [signature] });\n  } catch (error) {\n    uncertain = error instanceof CompressionError && error.code === \"TRANSACTION_UNCERTAIN\";\n    if (error instanceof CompressionError && error.code === \"TRANSACTION_FAILED\" &&\n        await options.session.current(image.address, options.signal))\n      output.accounts.push({ address: image.address, status: \"active\", signatures: [] });\n    else throw error;\n  } finally {\n    // Do not delete staging that an uncertain restoration could still read.\n    if (!uncertain) {\n      const cleaned = await cleanupUploads({ ...options, session: options.session.forCleanup(),\n        signal: undefined, uploads: output.uploads.slice(firstUpload) });\n      output.uploads.splice(firstUpload, cleaned.uploads.length, ...cleaned.uploads);\n      output.signatures.push(...cleaned.signatures);\n    }\n  }\n}\n\n/** Explicit prerequisite operation. Never builds, signs or sends the application transaction. */\nexport async function decompressAccounts(options: WorkflowOptions & { accounts: readonly string[] }): Promise<CompressionResult> {\n  const output = result();\n  let batch: AccountImage[] = [];\n  const packingProofs = new Map<string, Uint8Array>();\n  try {\n    checkedLimit(options);\n    const accounts = options.accounts.map(address => Pubkey.from(address).toThruFmt());\n    if (!options.session.wallet && accounts.includes(options.session.feePayer)) {\n      const address = options.session.feePayer;\n      const image = await imageFor(options, address);\n      if (image) {\n        if (image.dataSize !== 0 || Pubkey.from(image.meta.subarray(16, 48)).toThruFmt() !== EOA_PROGRAM_ID)\n          throw new CompressionError('INVALID_IMAGE', 'Self-restoration requires a zero-data EOA fee payer', { address });\n        const request: CompressionTransaction = {\n          program: NOOP_PROGRAM_ADDRESS, readWrite: [], instructionData: () => new Uint8Array(),\n          stateUnits: 1, computeUnits: 1_000_000,\n          payerRestoration: { image, proof: await options.session.proof(address, 'existing', options.signal) },\n        };\n        try {\n          const signature = await execute(options, output, request);\n          output.accounts.push({ address, status: 'restored', signatures: [signature] });\n        } catch (error) {\n          // Only a definite failure permits a race check. Uncertain submissions retain their journal.\n          if (!(error instanceof CompressionError) || error.code !== 'TRANSACTION_FAILED') throw error;\n          const current = await options.session.current(address, options.signal);\n          if (!current || current.deleted) throw error;\n          output.accounts.push({ address, status: 'active', signatures: [] });\n        }\n      }\n    }\n    for (const address of new Set(accounts)) {\n      if (output.accounts.some(account => account.address === address)) continue;\n      const image = await imageFor(options, address);\n      if (!image) {\n        output.accounts.push({ address, status: \"active\", signatures: [] });\n        continue;\n      }\n      // Huge images cannot fit regardless of proof size; avoid materializing a huge instruction.\n      if (image.data.length + 512 > checkedLimit(options)) {\n        await restoreBatch(options, output, batch); batch = [];\n        await restoreLarge(options, output, image);\n        continue;\n      }\n      packingProofs.set(image.address, await options.session.proof(image.address, \"existing\", options.signal));\n      const candidate = [...batch, image];\n      if (await options.session.measure(await pack(options, candidate, packingProofs)) <= checkedLimit(options)) {\n        batch = candidate;\n      } else {\n        await restoreBatch(options, output, batch); batch = [];\n        if (await options.session.measure(await pack(options, [image], packingProofs)) <= checkedLimit(options)) batch = [image];\n        else await restoreLarge(options, output, image);\n      }\n    }\n    await restoreBatch(options, output, batch);\n    if (output.uploads.some(pair => pair.status !== \"cleaned\"))\n      throw new CompressionError(\"CLEANUP_FAILED\", \"Accounts restored, but temporary upload cleanup needs retry\");\n    return output;\n  } catch (error) { throw withProgress(error, output); }\n}\n","import type { ThruClientContext } from '../../core/client';\nimport { Pubkey } from '../../domain/primitives';\nimport { CompressionSession, type SubmissionState, type WorkflowOptions, type SessionOptions, type ReconcileOptions } from './session';\nimport { compressionInstructions } from './instructions';\nimport { getAccountStatuses } from './status';\nimport * as workflows from './workflows';\nimport { CompressionError, type DecompressionOptions, type KeypairCompressionOptions, type UploadCleanup } from './types';\nexport { CompressionError } from './types';\nexport type { CompressionErrorCode, CompressionOptions, KeypairCompressionOptions, WalletCompressionOptions, DecompressionOptions,\n  CompressionResult, AccountOutcome, UploadCleanup, CompressionJournal, PendingCompressionTransaction } from './types';\nexport type { AccountCompressionStatus } from './status';\n\nexport function createCompressionModule(ctx: ThruClientContext) {\n  const payers = new Map<string, SubmissionState>();\n  function run<T>(options: SessionOptions, fn: (operation: WorkflowOptions) => Promise<T>): Promise<T> {\n    const key = Pubkey.from(options.feePayer.publicKey).toThruFmt();\n    let state = payers.get(key);\n    if (!state) { state = { loaded: false, tail: Promise.resolve() }; payers.set(key, state); }\n    const current = state;\n    const next = current.tail.then(async () => {\n      if (options.journal && current.journal !== options.journal) {\n        if (current.pending) throw new CompressionError('TRANSACTION_UNCERTAIN', 'Reconcile the existing journal before changing it', { signature: current.pending.signature });\n        current.journal = options.journal;\n        current.loaded = false;\n      }\n      const session = new CompressionSession(ctx, options, current);\n      await session.reconcilePending(options.signal);\n      return fn({ ...options, session, programs: compressionInstructions(options.programAddresses ?? {}) });\n    });\n    current.tail = next.catch(() => undefined);\n    return next;\n  }\n  return {\n    getAccountStatuses: (options: { accounts: readonly string[]; signal?: AbortSignal }) => getAccountStatuses(ctx, options),\n    decompressAccounts: (options: DecompressionOptions & { accounts: readonly string[] }) =>\n      run(options, operation => workflows.decompressAccounts({ ...operation, accounts: options.accounts })),\n    compressAccount: (options: KeypairCompressionOptions & { account: string }) =>\n      run(options, operation => workflows.compressAccount({ ...operation, account: options.account })),\n    cleanupUploads: (options: DecompressionOptions & { uploads: UploadCleanup[] }) =>\n      run(options, operation => workflows.cleanupUploads({ ...operation, uploads: options.uploads })),\n    reconcilePending: (options: ReconcileOptions) =>\n      // Reconciliation only reads chain/journal state. No signing key is used.\n      run(options, async () => {}),\n  };\n}\nexport type CompressionModule = ReturnType<typeof createCompressionModule>;\n","import { create } from \"@bufbuild/protobuf\";\n\nimport type { ThruClientContext } from \"../core/client\";\nimport { withCallOptions } from \"../core/client\";\nimport { DEFAULT_BLOCK_VIEW, DEFAULT_MIN_CONSENSUS } from \"../defaults\";\nimport { Block } from \"../domain/blocks\";\nimport { Filter } from \"../domain/filters\";\nimport { PageRequest, PageResponse } from \"../domain/pagination\";\nimport {\n    ConsensusStatus,\n    BlockView,\n    RawBlock,\n    GetBlockRequestSchema,\n    GetRawBlockRequestSchema,\n    ListBlocksRequestSchema,\n    ListBlocksResponse as ProtoListBlocksResponse,\n} from \"@thru/sdk/proto\";\nimport { isSlotSelector } from \"../utils/utils\";\nimport { BLOCK_HEADER_SIZE } from \"../wire-format\";\nimport type { BlockSelector } from \"./helpers\";\nimport { toBlockHash } from \"./helpers\";\n\nexport interface BlockQueryOptions {\n    view?: BlockView;\n    minConsensus?: ConsensusStatus;\n}\n\nexport interface RawBlockQueryOptions {\n    minConsensus?: ConsensusStatus;\n}\n\nexport interface ListBlocksOptions {\n    filter?: Filter;\n    page?: PageRequest;\n    view?: BlockView;\n    minConsensus?: ConsensusStatus;\n}\n\nexport interface BlockList {\n    blocks: Block[];\n    page?: PageResponse;\n}\n\nexport async function getBlock(\n    ctx: ThruClientContext,\n    selector: BlockSelector,\n    options: BlockQueryOptions = {},\n): Promise<Block> {\n    // Get proto block\n    const request = create(GetBlockRequestSchema, {\n        selector: isSlotSelector(selector)\n            ? { case: \"slot\", value: typeof selector.slot === \"bigint\" ? selector.slot : BigInt(selector.slot) }\n            : { case: \"blockHash\", value: toBlockHash(selector.blockHash) },\n        view: options.view ?? DEFAULT_BLOCK_VIEW,\n        minConsensus: options.minConsensus ?? DEFAULT_MIN_CONSENSUS,\n    });\n    const proto = await ctx.query.getBlock(request, withCallOptions(ctx));\n    const protoBlock = Block.fromProto(proto);\n\n    // Try to enrich with raw block metadata (block time, attestor payment) when available.\n    try {\n        const rawBlock = await getRawBlock(ctx, selector);\n        const rawBytes = rawBlock?.rawBlock;\n        if (rawBytes && rawBytes.length >= BLOCK_HEADER_SIZE) {\n            const rawBlockParsed = Block.fromWire(rawBytes);\n            if (rawBlockParsed.blockTimeNs !== undefined) {\n                protoBlock.blockTimeNs = rawBlockParsed.blockTimeNs;\n            }\n            if (rawBlockParsed.attestorPayment !== undefined) {\n                protoBlock.attestorPayment = rawBlockParsed.attestorPayment;\n            }\n        }\n    } catch (error) {\n        console.debug(\"blocks.getBlock: failed to enrich with raw block\", error);   \n    }\n\n    return protoBlock;\n}\n\nexport function getRawBlock(\n    ctx: ThruClientContext,\n    selector: BlockSelector,\n    options: RawBlockQueryOptions = {},\n): Promise<RawBlock> {\n    const request = create(GetRawBlockRequestSchema, {\n        selector: isSlotSelector(selector)\n            ? { case: \"slot\", value: typeof selector.slot === \"bigint\" ? selector.slot : BigInt(selector.slot) }\n            : { case: \"blockHash\", value: toBlockHash(selector.blockHash) },\n        minConsensus: options.minConsensus ?? DEFAULT_MIN_CONSENSUS,\n    });\n    return ctx.query.getRawBlock(request, withCallOptions(ctx));\n}\n\nexport async function listBlocks(\n    ctx: ThruClientContext,\n    options: ListBlocksOptions = {},\n): Promise<BlockList> {\n    const request = create(ListBlocksRequestSchema, {\n        filter: options.filter?.toProto(),\n        page: options.page?.toProto(),\n        view: options.view ?? DEFAULT_BLOCK_VIEW,\n        minConsensus: options.minConsensus ?? DEFAULT_MIN_CONSENSUS,\n    });\n    const response: ProtoListBlocksResponse = await ctx.query.listBlocks(request, withCallOptions(ctx));\n    return {\n        blocks: response.blocks.map((proto) => Block.fromProto(proto)),\n        page: PageResponse.fromProto(response.page),\n    };\n}\n","import { create } from \"@bufbuild/protobuf\";\n\nimport type { ThruClientContext } from \"../core/client\";\nimport { withCallOptions } from \"../core/client\";\nimport { DEFAULT_MIN_CONSENSUS, DEFAULT_VERSION_CONTEXT } from \"../defaults\";\nimport { ChainEvent } from \"../domain/events\";\nimport { Filter } from \"../domain/filters\";\nimport { PageRequest, PageResponse } from \"../domain/pagination\";\nimport {\n    type ConsensusStatus,\n    type VersionContext,\n    GetEventRequestSchema,\n    ListEventsRequestSchema,\n    type ListEventsResponse as ProtoListEventsResponse,\n    Event as QueryEvent,\n} from \"@thru/sdk/proto\";\n\nexport interface GetEventOptions {\n    versionContext?: VersionContext;\n}\n\nexport interface ListEventsOptions {\n    filter?: Filter;\n    page?: PageRequest;\n    versionContext?: VersionContext;\n    minConsensus?: ConsensusStatus;\n}\n\nexport interface EventList {\n    events: ChainEvent[];\n    page?: PageResponse;\n}\n\nexport function getEvent(ctx: ThruClientContext, eventId: string, options: GetEventOptions = {}): Promise<ChainEvent> {\n    if (!eventId) {\n        throw new Error(\"eventId is required\");\n    }\n    const request = create(GetEventRequestSchema, {\n        eventId,\n        versionContext: options.versionContext ?? DEFAULT_VERSION_CONTEXT,\n    });\n    return ctx.query.getEvent(request, withCallOptions(ctx)).then((proto: QueryEvent) => ChainEvent.fromQuery(proto));\n}\n\nexport function listEvents(\n    ctx: ThruClientContext,\n    options: ListEventsOptions = {},\n): Promise<EventList> {\n    const request = create(ListEventsRequestSchema, {\n        filter: options.filter?.toProto(),\n        page: options.page?.toProto(),\n        versionContext: options.versionContext ?? DEFAULT_VERSION_CONTEXT,\n        minConsensus: options.minConsensus ?? DEFAULT_MIN_CONSENSUS,\n    });\n    return ctx.query.listEvents(request, withCallOptions(ctx)).then((response: ProtoListEventsResponse) => ({\n        events: response.events.map((proto) => ChainEvent.fromQuery(proto)),\n        page: PageResponse.fromProto(response.page),\n    }));\n}\n","import HDKey from 'micro-key-producer/slip10.js';\nimport { encodeAddress } from '@thru/sdk/helpers';\n\n/**\n * HD Wallet helpers for Thru (BIP44 coin type 9999).\n * Uses SLIP-0010 for Ed25519 key derivation via micro-key-producer.\n * Returns raw key material along with encoded addresses.\n */\nexport class ThruHDWallet {\n  static readonly THRU_COIN_TYPE = 9999;\n  static readonly THRU_DERIVATION_PATH = `m/44'/${ThruHDWallet.THRU_COIN_TYPE}'`;\n\n  private static ensureSeed(seed: Uint8Array): void {\n    if (seed.length !== 64) {\n      throw new Error('Seed must be 64 bytes');\n    }\n  }\n\n  private static deriveKeyPair(seed: Uint8Array, path: string) {\n    ThruHDWallet.ensureSeed(seed);\n    const hdkey = HDKey.fromMasterSeed(seed);\n    const derived = hdkey.derive(path);\n\n    if (!derived.privateKey || !derived.publicKey) {\n      throw new Error('Failed to derive key pair');\n    }\n\n    const privateKey = derived.privateKey;\n    const publicKey = derived.publicKeyRaw;\n    const secretKey = new Uint8Array(privateKey.length + publicKey.length);\n    secretKey.set(privateKey, 0);\n    secretKey.set(publicKey, privateKey.length);\n\n    return {\n      publicKey,\n      privateKey,\n      secretKey,\n    };\n  }\n\n  static async getAccount(\n    seed: Uint8Array,\n    accountIndex: number = 0,\n    change: number = 0\n  ): Promise<{\n    address: string;\n    publicKey: Uint8Array;\n    privateKey: Uint8Array;\n    secretKey: Uint8Array;\n    path: string;\n  }> {\n    if (accountIndex < 0) {\n      throw new Error('Account index must be non-negative');\n    }\n\n    const path = `${ThruHDWallet.THRU_DERIVATION_PATH}/${accountIndex}'/${change}'`;\n    const { publicKey, privateKey, secretKey } = ThruHDWallet.deriveKeyPair(seed, path);\n\n    return {\n      address: encodeAddress(publicKey),\n      publicKey,\n      privateKey,\n      secretKey,\n      path,\n    };\n  }\n\n  static async deriveAccounts(\n    seed: Uint8Array,\n    count: number\n  ): Promise<Array<{\n    index: number;\n    address: string;\n    path: string;\n    publicKey: Uint8Array;\n  }>> {\n    const accounts = [];\n    for (let i = 0; i < count; i++) {\n      const account = await ThruHDWallet.getAccount(seed, i);\n      accounts.push({\n        index: i,\n        address: account.address,\n        path: account.path,\n        publicKey: account.publicKey,\n      });\n    }\n    return accounts;\n  }\n\n  static isValidPath(path: string): boolean {\n    const pathRegex = /^m(\\/\\d+')+$/;\n    return pathRegex.test(path);\n  }\n}\n","import { getPublicKeyAsync } from \"@noble/ed25519\";\nimport { getWebCrypto, ThruHDWallet } from \"@thru/sdk/crypto\";\n\nexport interface GeneratedKeyPair {\n    address: string;\n    publicKey: Uint8Array;\n    privateKey: Uint8Array;\n}\n\n/**\n * Generates a new Ed25519 keypair using the same HD wallet pipeline as the Thru wallet.\n */\nexport async function generateKeyPair(): Promise<GeneratedKeyPair> {\n    const seed = generateSeed();\n    const account = await ThruHDWallet.getAccount(seed, 0);\n    seed.fill(0);\n\n    return {\n        address: account.address,\n        publicKey: account.publicKey,\n        privateKey: account.privateKey,\n    };\n}\n\nexport async function fromPrivateKey(privateKey: Uint8Array): Promise<Uint8Array> {\n    return new Uint8Array(await getPublicKeyAsync(privateKey));\n}\n\nfunction generateSeed(): Uint8Array {\n    const cryptoObj = getWebCrypto();\n    const bytes = new Uint8Array(64);\n    cryptoObj.getRandomValues(bytes);\n    return bytes;\n}\n","import { create } from \"@bufbuild/protobuf\";\n\nimport type { ThruClientContext } from \"../core/client\";\nimport { withCallOptions } from \"../core/client\";\nimport {\n    GetNodeStatusRequestSchema,\n    type GetNodeStatusResponse,\n    GetNodePubkeyRequestSchema,\n    type GetNodePubkeyResponse,\n    GetNodeRecordsRequestSchema,\n    type GetNodeRecordsResponse,\n} from \"@thru/sdk/proto\";\n\nexport async function getNodeStatus(\n    ctx: ThruClientContext,\n): Promise<GetNodeStatusResponse> {\n    const request = create(GetNodeStatusRequestSchema, {});\n    return ctx.query.getNodeStatus(request, withCallOptions(ctx));\n}\n\nexport async function getNodePubkey(\n    ctx: ThruClientContext,\n): Promise<GetNodePubkeyResponse> {\n    const request = create(GetNodePubkeyRequestSchema, {});\n    return ctx.query.getNodePubkey(request, withCallOptions(ctx));\n}\n\nexport async function getNodeRecords(\n    ctx: ThruClientContext,\n): Promise<GetNodeRecordsResponse> {\n    const request = create(GetNodeRecordsRequestSchema, {});\n    return ctx.query.getNodeRecords(request, withCallOptions(ctx));\n}\n","import type { ThruClientContext } from \"../core/client\";\nimport { AccountView, TransactionVmError, type VersionContext } from \"@thru/sdk/proto\";\nimport { Pubkey, type PubkeyInput } from \"../domain/primitives\";\nimport { getAccount } from \"./accounts\";\nimport { currentVersionContext } from \"./consensus\";\nimport { streamAccountUpdates } from \"./streaming\";\n\nconst DEFAULT_NONCE_WAIT_TIMEOUT_MS = 10_000;\n\n/**\n * The two rejects that carry `feePayerExpectedNonce`. Mirrors\n * `tn_runtime_err_is_nonce_reject` (src/thru/runtime/tn_runtime_errors.h).\n */\nconst NONCE_REJECT_VM_ERRORS: readonly number[] = [\n    TransactionVmError.TRANSACTION_VM_ERROR_NONCE_TOO_LOW,\n    TransactionVmError.TRANSACTION_VM_ERROR_NONCE_TOO_HIGH,\n];\n\n/** Shape of the execution result fields this module needs. */\nexport interface NonceRejectExecutionResult {\n    vmError: number;\n    feePayerExpectedNonce?: bigint;\n}\n\n/**\n * Returns the nonce a rejected transaction should have used, or undefined when\n * the result is not a nonce reject or the node did not report one (an older\n * node, or a reject for some other reason).\n */\nexport function expectedNonceFromExecutionResult(\n    executionResult: NonceRejectExecutionResult | undefined,\n): bigint | undefined {\n    if (!executionResult || !NONCE_REJECT_VM_ERRORS.includes(executionResult.vmError)) {\n        return undefined;\n    }\n    return executionResult.feePayerExpectedNonce;\n}\n\nexport interface AccountNonceObserverOptions {\n    versionContext?: VersionContext;\n    signal?: AbortSignal;\n}\n\nexport interface WaitForNonceOptions {\n    timeoutMs?: number;\n}\n\ntype NonceWaiter = {\n    target: bigint;\n    resolve: (nonce: bigint) => void;\n    reject: (error: Error) => void;\n    timeoutId?: ReturnType<typeof setTimeout>;\n};\n\nexport class AccountNonceObserver {\n    private readonly ctx: ThruClientContext;\n    private readonly account: Pubkey;\n    private readonly versionContext: VersionContext;\n    private readonly abortController = new AbortController();\n    private readonly waiters = new Set<NonceWaiter>();\n    private latestNonce: bigint | undefined;\n    private closed = false;\n    private streamStarted = false;\n\n    constructor(ctx: ThruClientContext, account: PubkeyInput, options: AccountNonceObserverOptions = {}) {\n        this.ctx = ctx;\n        this.account = Pubkey.from(account);\n        this.versionContext = options.versionContext ?? currentVersionContext();\n\n        options.signal?.addEventListener(\"abort\", () => this.close(), { once: true });\n    }\n\n    getLatestNonce(): bigint | undefined {\n        return this.latestNonce;\n    }\n\n    async refresh(): Promise<bigint | undefined> {\n        const account = await getAccount(this.ctx, this.account, {\n            view: AccountView.FULL,\n            versionContext: this.versionContext,\n        });\n        this.observeNonce(account.meta?.nonce);\n        return this.latestNonce;\n    }\n\n    start(): void {\n        if (this.streamStarted || this.closed) {\n            return;\n        }\n\n        this.streamStarted = true;\n        void this.runStream();\n    }\n\n    async waitForNonceAtLeast(target: bigint, options: WaitForNonceOptions = {}): Promise<bigint> {\n        if (this.closed) {\n            throw new Error(\"AccountNonceObserver is closed\");\n        }\n\n        if (this.latestNonce === undefined || this.latestNonce < target) {\n            this.start();\n            await this.refresh();\n        }\n\n        if (this.closed) {\n            throw new Error(\"AccountNonceObserver is closed\");\n        }\n\n        if (this.latestNonce !== undefined && this.latestNonce >= target) {\n            return this.latestNonce;\n        }\n\n        return new Promise<bigint>((resolve, reject) => {\n            const timeoutMs = options.timeoutMs ?? DEFAULT_NONCE_WAIT_TIMEOUT_MS;\n            const waiter: NonceWaiter = {\n                target,\n                resolve,\n                reject,\n            };\n\n            waiter.timeoutId = setTimeout(() => {\n                this.waiters.delete(waiter);\n                reject(new Error(`Timed out waiting for nonce >= ${target.toString()} after ${timeoutMs}ms`));\n            }, timeoutMs);\n\n            this.waiters.add(waiter);\n        });\n    }\n\n    close(): void {\n        if (this.closed) {\n            return;\n        }\n\n        this.closed = true;\n        this.abortController.abort();\n        for (const waiter of this.waiters) {\n            if (waiter.timeoutId) {\n                clearTimeout(waiter.timeoutId);\n            }\n            waiter.reject(new Error(\"AccountNonceObserver closed\"));\n        }\n        this.waiters.clear();\n    }\n\n    private async runStream(): Promise<void> {\n        try {\n            for await (const { update } of streamAccountUpdates(this.ctx, this.account, {\n                view: AccountView.FULL,\n                signal: this.abortController.signal,\n            })) {\n                if (this.closed) {\n                    return;\n                }\n\n                if (update.kind === \"snapshot\") {\n                    this.observeNonce(update.snapshot.account.meta?.nonce);\n                    continue;\n                }\n\n                this.observeNonce(update.update.meta?.nonce);\n            }\n        } catch (error) {\n            if (!this.closed) {\n                this.rejectWaiters(error instanceof Error ? error : new Error(String(error)));\n            }\n        } finally {\n            this.streamStarted = false;\n            if (!this.closed) {\n                this.rejectWaiters(new Error(\"Account nonce stream ended unexpectedly\"));\n            }\n        }\n    }\n\n    private observeNonce(nonce: bigint | undefined): void {\n        if (nonce === undefined) {\n            return;\n        }\n\n        if (this.latestNonce === undefined || nonce > this.latestNonce) {\n            this.latestNonce = nonce;\n        }\n\n        this.resolveReadyWaiters();\n    }\n\n    private resolveReadyWaiters(): void {\n        if (this.latestNonce === undefined) {\n            return;\n        }\n\n        for (const waiter of Array.from(this.waiters)) {\n            if (this.latestNonce < waiter.target) {\n                continue;\n            }\n\n            this.waiters.delete(waiter);\n            if (waiter.timeoutId) {\n                clearTimeout(waiter.timeoutId);\n            }\n            waiter.resolve(this.latestNonce);\n        }\n    }\n\n    private rejectWaiters(error: Error): void {\n        for (const waiter of this.waiters) {\n            if (waiter.timeoutId) {\n                clearTimeout(waiter.timeoutId);\n            }\n            waiter.reject(error);\n        }\n        this.waiters.clear();\n    }\n}\n\nexport interface FeePayerNonceAllocation {\n    baseNonce: bigint;\n    nonces: bigint[];\n    barrierNonce: bigint;\n}\n\nexport interface FeePayerNonceManagerOptions {\n    observer?: AccountNonceObserver;\n}\n\nexport class FeePayerNonceManager {\n    readonly observer: AccountNonceObserver;\n    private allocationQueue: Promise<void> = Promise.resolve();\n    private nextNonce: bigint | undefined;\n\n    constructor(ctx: ThruClientContext, feePayer: PubkeyInput, options: FeePayerNonceManagerOptions = {}) {\n        this.observer = options.observer ?? new AccountNonceObserver(ctx, feePayer);\n    }\n\n    async allocate(count: number): Promise<FeePayerNonceAllocation> {\n        return this.withAllocationLock(() => this.allocateUnsafe(count));\n    }\n\n    reset(nextNonce?: bigint): void {\n        this.nextNonce = nextNonce;\n    }\n\n    /**\n     * Applies a nonce correction reported by the node on a rejected\n     * transaction, and returns true when one was applied.\n     *\n     * This MUST assign rather than take a maximum. NONCE_TOO_HIGH means the\n     * allocation cursor ran ahead of the chain -- which is what happens\n     * whenever an optimistically-allocated transaction fails to land -- so the\n     * correction is always SMALLER than `nextNonce`. A monotone update would\n     * discard it and the cursor would stay wrong forever (UNTO-2619).\n     *\n     * The observer is deliberately not updated: `latestNonce` tracks values\n     * actually observed on chain and is monotone by design.\n     */\n    applyNonceReject(executionResult: NonceRejectExecutionResult | undefined): boolean {\n        const expected = expectedNonceFromExecutionResult(executionResult);\n        if (expected === undefined) {\n            return false;\n        }\n        this.nextNonce = expected;\n        return true;\n    }\n\n    async sync(): Promise<bigint> {\n        const latestNonce = await this.observer.refresh();\n        if (latestNonce === undefined) {\n            throw new Error(\"Unable to read fee payer nonce\");\n        }\n\n        this.nextNonce = latestNonce;\n        return latestNonce;\n    }\n\n    async waitForNonceAtLeast(target: bigint, options?: WaitForNonceOptions): Promise<bigint> {\n        const nonce = await this.observer.waitForNonceAtLeast(target, options);\n        if (this.nextNonce === undefined || nonce > this.nextNonce) {\n            this.nextNonce = nonce;\n        }\n        return nonce;\n    }\n\n    close(): void {\n        this.observer.close();\n    }\n\n    private async allocateUnsafe(count: number): Promise<FeePayerNonceAllocation> {\n        if (!Number.isInteger(count) || count <= 0) {\n            throw new Error(\"Nonce allocation count must be a positive integer\");\n        }\n\n        const latestNonce = await this.observer.refresh();\n        if (latestNonce === undefined) {\n            throw new Error(\"Unable to read fee payer nonce\");\n        }\n\n        const baseNonce = this.nextNonce === undefined || latestNonce > this.nextNonce\n            ? latestNonce\n            : this.nextNonce;\n        const barrierNonce = baseNonce + BigInt(count);\n        const nonces = Array.from({ length: count }, (_, index) => baseNonce + BigInt(index));\n        this.nextNonce = barrierNonce;\n\n        return {\n            baseNonce,\n            nonces,\n            barrierNonce,\n        };\n    }\n\n    private async withAllocationLock<T>(work: () => Promise<T>): Promise<T> {\n        const previous = this.allocationQueue;\n        let release!: () => void;\n        this.allocationQueue = new Promise<void>((resolve) => {\n            release = resolve;\n        });\n\n        await previous;\n\n        try {\n            return await work();\n        } finally {\n            release();\n        }\n    }\n}\n","import { create } from \"@bufbuild/protobuf\";\n\nimport type { ThruClientContext } from \"../core/client\";\nimport { withCallOptions } from \"../core/client\";\nimport {\n    GetSlotMetricsRequestSchema,\n    type GetSlotMetricsResponse,\n    ListSlotMetricsRequestSchema,\n    type ListSlotMetricsResponse,\n} from \"@thru/sdk/proto\";\n\nexport interface ListSlotMetricsOptions {\n    startSlot: bigint;\n    endSlot?: bigint;\n    limit?: number;\n}\n\nexport async function getSlotMetrics(\n    ctx: ThruClientContext,\n    slot: bigint,\n): Promise<GetSlotMetricsResponse> {\n    const request = create(GetSlotMetricsRequestSchema, { slot });\n    return ctx.query.getSlotMetrics(request, withCallOptions(ctx));\n}\n\nexport async function listSlotMetrics(\n    ctx: ThruClientContext,\n    options: ListSlotMetricsOptions,\n): Promise<ListSlotMetricsResponse> {\n    const request = create(ListSlotMetricsRequestSchema, {\n        startSlot: options.startSlot,\n        endSlot: options.endSlot,\n        limit: options.limit,\n    });\n    return ctx.query.listSlotMetrics(request, withCallOptions(ctx));\n}\n","import type { GetVersionResponse } from \"@thru/sdk/proto\";\n\nexport class VersionInfo {\n    readonly components: Record<string, string>;\n\n    constructor(components: Record<string, string>) {\n        this.components = { ...components };\n    }\n\n    static fromProto(proto: GetVersionResponse): VersionInfo {\n        return new VersionInfo(proto.versions ?? {});\n    }\n\n    get(component: string): string | undefined {\n        return this.components[component];\n    }\n}\n\n","import { create } from \"@bufbuild/protobuf\";\n\nimport type { ThruClientContext } from \"../core/client\";\nimport { withCallOptions } from \"../core/client\";\nimport { VersionInfo } from \"../domain/version\";\nimport { GetVersionRequestSchema, type GetVersionResponse } from \"@thru/sdk/proto\";\n\nexport function getVersion(ctx: ThruClientContext): Promise<VersionInfo> {\n    const request = create(GetVersionRequestSchema);\n    return ctx.query\n        .getVersion(request, withCallOptions(ctx))\n        .then((response: GetVersionResponse) => VersionInfo.fromProto(response));\n}\n\n","import { createCompressionModule, type CompressionModule } from '../modules/compression';\nimport type { ThruClientContext } from \"./client\";\n\nimport { Pubkey, Signature, type PubkeyInput, type SignatureInput } from \"../domain/primitives\";\nimport * as accountsModule from \"../modules/accounts\";\nimport * as blocksModule from \"../modules/blocks\";\nimport * as consensusModule from \"../modules/consensus\";\nimport * as eventsModule from \"../modules/events\";\nimport * as heightModule from \"../modules/height\";\nimport {\n    deriveAddress,\n    DeriveAddressInput,\n    DeriveAddressResult,\n    deriveProgramAddress,\n    type DeriveProgramAddressOptions,\n    type DeriveProgramAddressResult\n} from \"../modules/helpers\";\nimport * as chainModule from \"../modules/chain\";\nimport * as keysModule from \"../modules/keys\";\nimport * as nodeModule from \"../modules/node\";\nimport * as nonceModule from \"../modules/nonce\";\nimport * as proofsModule from \"../modules/proofs\";\nimport * as slotsModule from \"../modules/slots\";\nimport * as streamingModule from \"../modules/streaming\";\nimport * as transactionsModule from \"../modules/transactions\";\nimport * as versionModule from \"../modules/version\";\n\ntype ContextualParameters<F> = F extends (ctx: ThruClientContext, ...args: infer P) => any ? P : never;\n\ntype BoundFunction<F> = F extends (ctx: ThruClientContext, ...args: infer P) => infer R ? (...args: P) => R : never;\n\nfunction bind<F extends (ctx: ThruClientContext, ...args: any[]) => any>(\n    ctx: ThruClientContext,\n    fn: F,\n): BoundFunction<F> {\n    return ((...args: ContextualParameters<F>) => fn(ctx, ...args)) as BoundFunction<F>;\n}\n\ninterface BoundBlocks {\n    get: BoundFunction<typeof blocksModule.getBlock>;\n    getRaw: BoundFunction<typeof blocksModule.getRawBlock>;\n    list: BoundFunction<typeof blocksModule.listBlocks>;\n    stream: BoundFunction<typeof streamingModule.streamBlocks>;\n    getBlockHeight: BoundFunction<typeof heightModule.getBlockHeight>;\n    streamHeight: BoundFunction<typeof streamingModule.streamHeight>;\n}\n\ninterface BoundAccounts {\n    get: BoundFunction<typeof accountsModule.getAccount>;\n    getRaw: BoundFunction<typeof accountsModule.getRawAccount>;\n    list: BoundFunction<typeof accountsModule.listAccounts>;\n    stream: BoundFunction<typeof streamingModule.streamAccountUpdates>;\n    create: BoundFunction<typeof accountsModule.createAccount>;\n}\n\ninterface BoundTransactions {\n    get: BoundFunction<typeof transactionsModule.getTransaction>;\n    getRaw: BoundFunction<typeof transactionsModule.getRawTransaction>;\n    getStatus: BoundFunction<typeof transactionsModule.getTransactionStatus>;\n    list: BoundFunction<typeof transactionsModule.listTransactions>;\n    listForAccount: BoundFunction<typeof transactionsModule.listTransactionsForAccount>;\n    stream: BoundFunction<typeof streamingModule.streamTransactions>;\n    build: BoundFunction<typeof transactionsModule.buildTransaction>;\n    buildAndSign: BoundFunction<typeof transactionsModule.buildAndSignTransaction>;\n    send: BoundFunction<typeof transactionsModule.sendTransaction>;\n    batchSend: BoundFunction<typeof transactionsModule.batchSendTransactions>;\n    batchSendAndTrack: BoundFunction<typeof transactionsModule.batchSendAndTrack>;\n    sendAndTrack: BoundFunction<typeof transactionsModule.sendAndTrackTxn>;\n    track: BoundFunction<typeof streamingModule.trackTransaction>;\n}\n\ninterface BoundNonce {\n    createObserver(account: PubkeyInput, options?: nonceModule.AccountNonceObserverOptions): nonceModule.AccountNonceObserver;\n    createFeePayerManager(\n        feePayer: PubkeyInput,\n        options?: nonceModule.FeePayerNonceManagerOptions,\n    ): nonceModule.FeePayerNonceManager;\n}\n\ninterface BoundEvents {\n    get: BoundFunction<typeof eventsModule.getEvent>;\n    list: BoundFunction<typeof eventsModule.listEvents>;\n    stream: BoundFunction<typeof streamingModule.streamEvents>;\n}\n\ninterface BoundProofs {\n    generate: BoundFunction<typeof proofsModule.generateStateProof>;\n    generateBatch: BoundFunction<typeof proofsModule.generateStateProofs>;\n    getStateRoots: BoundFunction<typeof proofsModule.getStateRoots>;\n}\n\ninterface BoundKeys {\n    generateKeyPair: typeof keysModule.generateKeyPair;\n    fromPrivateKey: typeof keysModule.fromPrivateKey;\n}\n\ninterface BoundVersion {\n    get: BoundFunction<typeof versionModule.getVersion>;\n}\n\ninterface BoundSlots {\n    getMetrics: BoundFunction<typeof slotsModule.getSlotMetrics>;\n    listMetrics: BoundFunction<typeof slotsModule.listSlotMetrics>;\n    streamMetrics: BoundFunction<typeof streamingModule.streamSlotMetrics>;\n}\n\ninterface BoundNode {\n    getStatus: BoundFunction<typeof nodeModule.getNodeStatus>;\n    getPubkey: BoundFunction<typeof nodeModule.getNodePubkey>;\n    getRecords: BoundFunction<typeof nodeModule.getNodeRecords>;\n    streamRecords: BoundFunction<typeof streamingModule.streamNodeRecords>;\n}\n\ninterface BoundChain {\n    getChainInfo: BoundFunction<typeof chainModule.getChainInfo>;\n    getChainId: BoundFunction<typeof chainModule.getChainId>;\n}\n\ninterface BoundConsensus {\n    statusToString: typeof consensusModule.consensusStatusToString;\n    versionContext: typeof consensusModule.versionContext;\n    currentVersionContext: typeof consensusModule.currentVersionContext;\n    currentOrHistoricalVersionContext: typeof consensusModule.currentOrHistoricalVersionContext;\n    slotVersionContext: typeof consensusModule.slotVersionContext;\n    timestampVersionContext: typeof consensusModule.timestampVersionContext;\n    slotSeqVersionContext: typeof consensusModule.slotSeqVersionContext;\n}\n\ninterface Helpers {\n    createSignature(value: SignatureInput): Signature;\n    createPubkey(value: PubkeyInput): Pubkey;\n    deriveProgramAddress(options: DeriveProgramAddressOptions): DeriveProgramAddressResult;\n    deriveAddress(inputs: DeriveAddressInput[]): DeriveAddressResult;\n}\n\nexport interface Thru {\n    ctx: ThruClientContext;\n    compression: CompressionModule;\n    blocks: BoundBlocks;\n    accounts: BoundAccounts;\n    transactions: BoundTransactions;\n    events: BoundEvents;\n    slots: BoundSlots;\n    proofs: BoundProofs;\n    keys: BoundKeys;\n    version: BoundVersion;\n    consensus: BoundConsensus;\n    nonce: BoundNonce;\n    node: BoundNode;\n    chain: BoundChain;\n    helpers: Helpers;\n}\n\nexport function createBoundThruClient(ctx: ThruClientContext): Thru {\n    return {\n        ctx,\n        compression: createCompressionModule(ctx),\n        blocks: {\n            get: bind(ctx, blocksModule.getBlock),\n            getRaw: bind(ctx, blocksModule.getRawBlock),\n            list: bind(ctx, blocksModule.listBlocks),\n            stream: bind(ctx, streamingModule.streamBlocks),\n            getBlockHeight: bind(ctx, heightModule.getBlockHeight),\n            streamHeight: bind(ctx, streamingModule.streamHeight),\n        },\n        accounts: {\n            get: bind(ctx, accountsModule.getAccount),\n            getRaw: bind(ctx, accountsModule.getRawAccount),\n            list: bind(ctx, accountsModule.listAccounts),\n            stream: bind(ctx, streamingModule.streamAccountUpdates),\n            create: bind(ctx, accountsModule.createAccount),\n        },\n        transactions: {\n            get: bind(ctx, transactionsModule.getTransaction),\n            getRaw: bind(ctx, transactionsModule.getRawTransaction),\n            getStatus: bind(ctx, transactionsModule.getTransactionStatus),\n            list: bind(ctx, transactionsModule.listTransactions),\n            listForAccount: bind(ctx, transactionsModule.listTransactionsForAccount),\n            stream: bind(ctx, streamingModule.streamTransactions),\n            build: bind(ctx, transactionsModule.buildTransaction),\n            buildAndSign: bind(ctx, transactionsModule.buildAndSignTransaction),\n            send: bind(ctx, transactionsModule.sendTransaction),\n            batchSend: bind(ctx, transactionsModule.batchSendTransactions),\n            batchSendAndTrack: bind(ctx, transactionsModule.batchSendAndTrack),\n            sendAndTrack: bind(ctx, transactionsModule.sendAndTrackTxn),\n            track: bind(ctx, streamingModule.trackTransaction),\n        },\n        nonce: {\n            createObserver: (account, options) => new nonceModule.AccountNonceObserver(ctx, account, options),\n            createFeePayerManager: (feePayer, options) => new nonceModule.FeePayerNonceManager(ctx, feePayer, options),\n        },\n        helpers: {\n            createSignature: Signature.from,\n            createPubkey: Pubkey.from,\n            deriveProgramAddress,\n            deriveAddress\n        },\n        keys: {\n            generateKeyPair: keysModule.generateKeyPair,\n            fromPrivateKey: keysModule.fromPrivateKey,\n        },\n        events: {\n            get: bind(ctx, eventsModule.getEvent),\n            list: bind(ctx, eventsModule.listEvents),\n            stream: bind(ctx, streamingModule.streamEvents),\n        },\n        slots: {\n            getMetrics: bind(ctx, slotsModule.getSlotMetrics),\n            listMetrics: bind(ctx, slotsModule.listSlotMetrics),\n            streamMetrics: bind(ctx, streamingModule.streamSlotMetrics),\n        },\n        proofs: {\n            generate: bind(ctx, proofsModule.generateStateProof),\n            generateBatch: bind(ctx, proofsModule.generateStateProofs),\n            getStateRoots: bind(ctx, proofsModule.getStateRoots),\n        },\n        node: {\n            getStatus: bind(ctx, nodeModule.getNodeStatus),\n            getPubkey: bind(ctx, nodeModule.getNodePubkey),\n            getRecords: bind(ctx, nodeModule.getNodeRecords),\n            streamRecords: bind(ctx, streamingModule.streamNodeRecords),\n        },\n        chain: {\n            getChainInfo: bind(ctx, chainModule.getChainInfo),\n            getChainId: bind(ctx, chainModule.getChainId),\n        },\n        version: {\n            get: bind(ctx, versionModule.getVersion),\n        },\n        consensus: {\n            statusToString: consensusModule.consensusStatusToString,\n            versionContext: consensusModule.versionContext,\n            currentVersionContext: consensusModule.currentVersionContext,\n            currentOrHistoricalVersionContext: consensusModule.currentOrHistoricalVersionContext,\n            slotVersionContext: consensusModule.slotVersionContext,\n            timestampVersionContext: consensusModule.timestampVersionContext,\n            slotSeqVersionContext: consensusModule.slotSeqVersionContext,\n        },\n    };\n}\n","import { createBoundThruClient, Thru } from \"./core/bound-client\";\nimport { createThruClientContext, ThruClientConfig } from \"./core/client\";\n\n// ============================================================================\n// Type Exports\n// ============================================================================\nexport type { Thru } from \"./core/bound-client\";\nexport type { ThruClientConfig } from \"./core/client\";\n\n// ============================================================================\n// Value Exports (functions)\n// ============================================================================\nexport function createThruClient(config: ThruClientConfig = {}): Thru {\n    const ctx = createThruClientContext(config);\n    return createBoundThruClient(ctx);\n}"]}