{"version":3,"sources":["../../src/helpers/constants.ts","../../src/helpers/address.ts","../../src/core-program-addresses.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"],"names":["a","b","c","d","triple","byte1","byte2","remainder","low","high","InstructionData","__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","MulticallArgs"],"mappings":"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","file":"multicall.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","// 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 { 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"]}