{"version":3,"sources":["../../../thru-ts-client-sdk/domain/programs/uploader/abi/thru/common/primitives/types.ts","../../../thru-ts-client-sdk/domain/programs/uploader/abi/thru/program/uploader/types.ts","../../../thru-ts-client-sdk/domain/programs/utils/helpers.ts","../../../thru-ts-client-sdk/domain/programs/uploader/instructions.ts"],"names":["remainder","low","high","InstructionData","__tnWarnings","__tnHasNativeBigInt","__tnHasBigIntDataView","__tnConsole","__tnLogWarn","__tnWarnOnce","__tnResolveBuilderInput","__tnCreateFamWriter","__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","WriteArgs","CreateArgs","UploaderInstruction"],"mappings":"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","file":"instructions.cjs","sourcesContent":["/* Auto-generated TypeScript code */\n/* WARNING: Do not modify this file directly. It is generated from ABI definitions. */\n\ntype __TnIrNode =\n  | { readonly op: \"zero\" }\n  | { readonly op: \"const\"; readonly value: bigint }\n  | { readonly op: \"field\"; readonly param: string }\n  | {\n      readonly op: \"add\";\n      readonly left: __TnIrNode;\n      readonly right: __TnIrNode;\n    }\n  | {\n      readonly op: \"sub\";\n      readonly left: __TnIrNode;\n      readonly right: __TnIrNode;\n    }\n  | {\n      readonly op: \"mul\";\n      readonly left: __TnIrNode;\n      readonly right: __TnIrNode;\n    }\n  | {\n      readonly op:\n        | \"div\"\n        | \"mod\"\n        | \"bitAnd\"\n        | \"bitOr\"\n        | \"bitXor\"\n        | \"leftShift\"\n        | \"rightShift\";\n      readonly left: __TnIrNode;\n      readonly right: __TnIrNode;\n    }\n  | {\n      readonly op: \"align\";\n      readonly alignment: number;\n      readonly node: __TnIrNode;\n    }\n  | {\n      readonly op: \"switch\";\n      readonly tag: string;\n      readonly cases: readonly { readonly value: number; readonly node: __TnIrNode }[];\n      readonly default?: __TnIrNode;\n    }\n  | {\n      readonly op: \"call\";\n      readonly typeName: string;\n      readonly args: readonly { readonly name: string; readonly source: string }[];\n    }\n  | {\n      readonly op: \"sumOverArray\";\n      readonly count: __TnIrNode;\n      readonly elementTypeName: string;\n      readonly fieldName: string;\n    };\n\ntype __TnIrContext = {\n  params: Record<string, bigint>;\n  buffer?: Uint8Array;\n  typeName?: string;\n};\n\ntype __TnValidateResult = {\n  ok: boolean;\n  code?: string;\n  consumed?: bigint;\n  params?: Record<string, bigint>;\n};\ntype __TnEvalResult =\n  | { ok: true; value: bigint }\n  | { ok: false; code: string };\ntype __TnBuilderLike = { build(): Uint8Array };\ntype __TnStructFieldInput =\n  | Uint8Array\n  | __TnBuilderLike\n  | { buffer?: Uint8Array }\n  | { asUint8Array?: () => Uint8Array }\n  | { bytes?: () => Uint8Array };\ntype __TnVariantDescriptor = {\n  readonly name: string;\n  readonly tag: number;\n  readonly payloadSize: number | null;\n  readonly payloadType?: string;\n  readonly createPayloadBuilder?: () => unknown | null;\n};\ntype __TnVariantSelectorResult<Parent> = {\n  select(\n    name: string\n  ): { writePayload(payload: Uint8Array | __TnBuilderLike): { finish(): Parent } };\n  finish(): Parent;\n};\ntype __TnFamWriterResult<Parent> = {\n  write(payload: Uint8Array | __TnBuilderLike): { finish(): Parent };\n  finish(): Parent;\n};\ntype __TnConsole = { warn?: (...args: unknown[]) => void };\n\nconst __tnWarnings = new Set<string>();\nconst __tnHasNativeBigInt = typeof BigInt === \"function\";\nconst __tnHasBigIntDataView =\n  typeof DataView !== \"undefined\" &&\n  typeof DataView.prototype.getBigInt64 === \"function\" &&\n  typeof DataView.prototype.getBigUint64 === \"function\" &&\n  typeof DataView.prototype.setBigInt64 === \"function\" &&\n  typeof DataView.prototype.setBigUint64 === \"function\";\nconst __tnConsole: __TnConsole | undefined =\n  typeof globalThis !== \"undefined\"\n    ? (globalThis as { console?: __TnConsole }).console\n    : undefined;\n\nfunction __tnLogWarn(message: string): void {\n  if (__tnConsole && typeof __tnConsole.warn === \"function\") {\n    __tnConsole.warn(message);\n  }\n}\n\nfunction __tnWarnOnce(message: string): void {\n  if (!__tnWarnings.has(message)) {\n    __tnWarnings.add(message);\n    __tnLogWarn(message);\n  }\n}\n\nfunction __tnResolveBuilderInput(\n  input: Uint8Array | __TnBuilderLike,\n  context: string\n): Uint8Array {\n  if (input instanceof Uint8Array) {\n    return new Uint8Array(input);\n  }\n  if (input && typeof (input as __TnBuilderLike).build === \"function\") {\n    const built = (input as __TnBuilderLike).build();\n    if (!(built instanceof Uint8Array)) {\n      throw new Error(`${context}: builder did not return Uint8Array`);\n    }\n    return new Uint8Array(built);\n  }\n  throw new Error(`${context}: expected Uint8Array or builder`);\n}\n\nfunction __tnResolveStructFieldInput(\n  input: __TnStructFieldInput,\n  context: string\n): Uint8Array {\n  if (\n    input instanceof Uint8Array ||\n    (input && typeof (input as __TnBuilderLike).build === \"function\")\n  ) {\n    return __tnResolveBuilderInput(input as Uint8Array | __TnBuilderLike, context);\n  }\n  if (input && typeof (input as { asUint8Array?: () => Uint8Array }).asUint8Array === \"function\") {\n    const bytes = (input as { asUint8Array: () => Uint8Array }).asUint8Array();\n    return new Uint8Array(bytes);\n  }\n  if (input && typeof (input as { bytes?: () => Uint8Array }).bytes === \"function\") {\n    const bytes = (input as { bytes: () => Uint8Array }).bytes();\n    return new Uint8Array(bytes);\n  }\n  if (input && (input as { buffer?: unknown }).buffer instanceof Uint8Array) {\n    return new Uint8Array((input as { buffer: Uint8Array }).buffer);\n  }\n  throw new Error(`${context}: expected Uint8Array, builder, or view-like value`);\n}\n\nfunction __tnMaybeCallBuilder(ctor: unknown): unknown | null {\n  if (!ctor) {\n    return null;\n  }\n  const builderFn = (ctor as { builder?: () => unknown }).builder;\n  return typeof builderFn === \"function\" ? builderFn() : null;\n}\n\nfunction __tnCreateVariantSelector<Parent, Descriptor extends __TnVariantDescriptor>(\n  parent: Parent,\n  descriptors: readonly Descriptor[],\n  assign: (descriptor: Descriptor, payload: Uint8Array) => void\n): __TnVariantSelectorResult<Parent> {\n  return {\n    select(name: string) {\n      const descriptor = descriptors.find((variant) => variant.name === name);\n      if (!descriptor) {\n        throw new Error(`Unknown variant '${name}'`);\n      }\n      return {\n        writePayload(payload: Uint8Array | __TnBuilderLike) {\n          const bytes = __tnResolveBuilderInput(\n            payload,\n            `variant ${descriptor.name}`\n          );\n          if (\n            descriptor.payloadSize !== null &&\n            bytes.length !== descriptor.payloadSize\n          ) {\n            throw new Error(\n              `Payload for ${descriptor.name} must be ${descriptor.payloadSize} bytes`\n            );\n          }\n          assign(descriptor, bytes);\n          return {\n            finish(): Parent {\n              return parent;\n            },\n          };\n        },\n      };\n    },\n    finish(): Parent {\n      return parent;\n    },\n  };\n}\n\nfunction __tnCreateFamWriter<Parent>(\n  parent: Parent,\n  fieldName: string,\n  assign: (bytes: Uint8Array) => void\n): __TnFamWriterResult<Parent> {\n  let hasWritten = false;\n  return {\n    write(payload: Uint8Array | __TnBuilderLike) {\n      const bytes = __tnResolveBuilderInput(\n        payload,\n        `flexible array '${fieldName}'`\n      );\n      const copy = new Uint8Array(bytes);\n      assign(copy);\n      hasWritten = true;\n      return {\n        finish(): Parent {\n          return parent;\n        },\n      };\n    },\n    finish(): Parent {\n      if (!hasWritten) {\n        throw new Error(\n          `flexible array '${fieldName}' requires write() before finish()`\n        );\n      }\n      return parent;\n    },\n  };\n}\n\nconst __tnMask32 = __tnHasNativeBigInt\n  ? (BigInt(1) << BigInt(32)) - BigInt(1)\n  : 0xffffffff;\nconst __tnSignBit32 = __tnHasNativeBigInt\n  ? BigInt(1) << BigInt(31)\n  : 0x80000000;\n\nfunction __tnToBigInt(value: number | bigint): bigint {\n  if (__tnHasNativeBigInt) {\n    return typeof value === \"bigint\" ? value : BigInt(value);\n  }\n  if (typeof value === \"bigint\") return value;\n  if (!Number.isFinite(value)) {\n    throw new Error(\"IR runtime received non-finite numeric input\");\n  }\n  if (!Number.isSafeInteger(value)) {\n    __tnWarnOnce(\n      `[thru-net] Precision loss while polyfilling BigInt (value=${value})`\n    );\n  }\n  return (value as unknown) as bigint;\n}\n\nfunction __tnBigIntToNumber(value: bigint, context: string): number {\n  if (__tnHasNativeBigInt) {\n    const converted = Number(value);\n    if (!Number.isFinite(converted)) {\n      throw new Error(`${context} overflowed Number range`);\n    }\n    return converted;\n  }\n  return value as unknown as number;\n}\n\nfunction __tnBigIntEquals(lhs: bigint, rhs: bigint): boolean {\n  if (__tnHasNativeBigInt) return lhs === rhs;\n  return (lhs as unknown as number) === (rhs as unknown as number);\n}\n\nfunction __tnBigIntGreaterThan(lhs: bigint, rhs: bigint): boolean {\n  if (__tnHasNativeBigInt) return lhs > rhs;\n  return (lhs as unknown as number) > (rhs as unknown as number);\n}\n\nfunction __tnPopcount(value: number | bigint): number {\n  let v =\n    typeof value === \"bigint\"\n      ? Number(value & BigInt(0xffffffff))\n      : Number(value) >>> 0;\n  v = v - ((v >>> 1) & 0x55555555);\n  v = (v & 0x33333333) + ((v >>> 2) & 0x33333333);\n  return (((v + (v >>> 4)) & 0x0f0f0f0f) * 0x01010101) >>> 24;\n}\n\nfunction __tnRaiseIrError(code: string, message: string): never {\n  const err = new Error(message);\n  (err as { code?: string }).code = code;\n  throw err;\n}\n\nfunction __tnCheckedAdd(lhs: bigint, rhs: bigint): bigint {\n  if (__tnHasNativeBigInt) {\n    const result = (lhs as bigint) + (rhs as bigint);\n    if (result < BigInt(0)) {\n      __tnRaiseIrError(\n        \"tn.ir.overflow\",\n        \"IR runtime detected negative size via addition\"\n      );\n    }\n    return result;\n  }\n  const left = lhs as unknown as number;\n  const right = rhs as unknown as number;\n  const sum = left + right;\n  if (sum < 0 || !Number.isFinite(sum)) {\n    __tnRaiseIrError(\n      \"tn.ir.overflow\",\n      \"IR runtime detected invalid addition result\"\n    );\n  }\n  if (!Number.isSafeInteger(sum)) {\n    __tnWarnOnce(\"[thru-net] Precision loss while polyfilling BigInt addition\");\n  }\n  return (sum as unknown) as bigint;\n}\n\nfunction __tnCheckedSub(lhs: bigint, rhs: bigint): bigint {\n  if (__tnHasNativeBigInt) {\n    const result = (lhs as bigint) - (rhs as bigint);\n    if (result < BigInt(0)) {\n      __tnRaiseIrError(\n        \"tn.ir.overflow\",\n        \"IR runtime detected negative size via subtraction\"\n      );\n    }\n    return result;\n  }\n  const left = lhs as unknown as number;\n  const right = rhs as unknown as number;\n  const diff = left - right;\n  if (diff < 0 || !Number.isFinite(diff)) {\n    __tnRaiseIrError(\n      \"tn.ir.overflow\",\n      \"IR runtime detected invalid subtraction result\"\n    );\n  }\n  if (!Number.isSafeInteger(diff)) {\n    __tnWarnOnce(\"[thru-net] Precision loss while polyfilling BigInt subtraction\");\n  }\n  return (diff as unknown) as bigint;\n}\n\nfunction __tnCheckedMul(lhs: bigint, rhs: bigint): bigint {\n  if (__tnHasNativeBigInt) {\n    const result = (lhs as bigint) * (rhs as bigint);\n    if (result < BigInt(0)) {\n      __tnRaiseIrError(\n        \"tn.ir.overflow\",\n        \"IR runtime detected negative size via multiplication\"\n      );\n    }\n    return result;\n  }\n  const left = lhs as unknown as number;\n  const right = rhs as unknown as number;\n  const product = left * right;\n  if (product < 0 || !Number.isFinite(product)) {\n    __tnRaiseIrError(\n      \"tn.ir.overflow\",\n      \"IR runtime detected invalid multiplication result\"\n    );\n  }\n  if (!Number.isSafeInteger(product)) {\n    __tnWarnOnce(\n      \"[thru-net] Precision loss while polyfilling BigInt multiplication\"\n    );\n  }\n  return (product as unknown) as bigint;\n}\n\nfunction __tnCheckedDiv(lhs: bigint, rhs: bigint): bigint {\n  if (__tnBigIntEquals(rhs, __tnToBigInt(0))) {\n    __tnRaiseIrError(\"tn.ir.overflow\", \"IR runtime division by zero\");\n  }\n  if (__tnHasNativeBigInt) return (lhs as bigint) / (rhs as bigint);\n  const quotient = Math.floor((lhs as unknown as number) / (rhs as unknown as number));\n  return (quotient as unknown) as bigint;\n}\n\nfunction __tnCheckedMod(lhs: bigint, rhs: bigint): bigint {\n  if (__tnBigIntEquals(rhs, __tnToBigInt(0))) {\n    __tnRaiseIrError(\"tn.ir.overflow\", \"IR runtime modulo by zero\");\n  }\n  if (__tnHasNativeBigInt) return (lhs as bigint) % (rhs as bigint);\n  return (((lhs as unknown as number) % (rhs as unknown as number)) as unknown) as bigint;\n}\n\nfunction __tnBitwise(\n  lhs: bigint,\n  rhs: bigint,\n  op: \"and\" | \"or\" | \"xor\"\n): bigint {\n  if (__tnHasNativeBigInt) {\n    if (op === \"and\") return (lhs as bigint) & (rhs as bigint);\n    if (op === \"or\") return (lhs as bigint) | (rhs as bigint);\n    return (lhs as bigint) ^ (rhs as bigint);\n  }\n  const left = lhs as unknown as number;\n  const right = rhs as unknown as number;\n  const maxU32 = 0xffffffff;\n  if (\n    !Number.isInteger(left) ||\n    !Number.isInteger(right) ||\n    left < 0 ||\n    right < 0 ||\n    left > maxU32 ||\n    right > maxU32\n  ) {\n    __tnRaiseIrError(\n      \"tn.ir.overflow\",\n      \"IR runtime bitwise operation requires BigInt for values outside u32 range\"\n    );\n  }\n  const result = op === \"and\" ? left & right : op === \"or\" ? left | right : left ^ right;\n  return ((result >>> 0) as unknown) as bigint;\n}\n\nfunction __tnCheckedShift(\n  lhs: bigint,\n  rhs: bigint,\n  direction: \"left\" | \"right\"\n): bigint {\n  const amount = __tnBigIntToNumber(rhs, \"IR shift amount\");\n  if (amount < 0 || amount >= 64 || !Number.isInteger(amount)) {\n    __tnRaiseIrError(\"tn.ir.overflow\", \"IR runtime invalid shift amount\");\n  }\n  if (__tnHasNativeBigInt) {\n    const shift = BigInt(amount);\n    return direction === \"left\" ? (lhs as bigint) << shift : (lhs as bigint) >> shift;\n  }\n  const value = lhs as unknown as number;\n  const result = direction === \"left\" ? value * 2 ** amount : Math.floor(value / 2 ** amount);\n  if (!Number.isSafeInteger(result)) {\n    __tnWarnOnce(\"[thru-net] Precision loss while polyfilling BigInt shift\");\n  }\n  return (result as unknown) as bigint;\n}\n\nfunction __tnAlign(value: bigint, alignment: number): bigint {\n  if (alignment <= 1) return value;\n  const alignBig = __tnToBigInt(alignment);\n  if (__tnHasNativeBigInt) {\n    const remainder = value % alignBig;\n    if (__tnBigIntEquals(remainder, __tnToBigInt(0))) {\n      return value;\n    }\n    const delta = alignBig - remainder;\n    return __tnCheckedAdd(value, delta);\n  }\n  const current = __tnBigIntToNumber(value, \"IR align\");\n  const alignNum = alignment >>> 0;\n  const remainder = current % alignNum;\n  const next = remainder === 0 ? current : current + (alignNum - remainder);\n  return __tnToBigInt(next);\n}\n\nfunction __tnSplitUint64(value: bigint): { high: number; low: number } {\n  if (__tnHasNativeBigInt) {\n    const low = Number(value & (__tnMask32 as bigint));\n    const high = Number((value >> BigInt(32)) & (__tnMask32 as bigint));\n    return { high, low };\n  }\n  const num = __tnBigIntToNumber(value, \"DataView.setBigUint64\");\n  const low = num >>> 0;\n  const high = Math.floor(num / 4294967296) >>> 0;\n  return { high, low };\n}\n\nfunction __tnSplitInt64(value: bigint): { high: number; low: number } {\n  if (__tnHasNativeBigInt) {\n    const low = Number(value & (__tnMask32 as bigint));\n    let high = Number((value >> BigInt(32)) & (__tnMask32 as bigint));\n    if ((BigInt(high) & (__tnSignBit32 as bigint)) !== BigInt(0)) {\n      high -= 0x100000000;\n    }\n    return { high, low };\n  }\n  const num = __tnBigIntToNumber(value, \"DataView.setBigInt64\");\n  const low = num >>> 0;\n  const high = Math.floor(num / 4294967296);\n  return { high, low };\n}\n\nfunction __tnPolyfillReadUint64(\n  view: DataView,\n  offset: number,\n  littleEndian: boolean\n): bigint {\n  const low = littleEndian\n    ? view.getUint32(offset, true)\n    : view.getUint32(offset + 4, false);\n  const high = littleEndian\n    ? view.getUint32(offset + 4, true)\n    : view.getUint32(offset, false);\n  if (__tnHasNativeBigInt) {\n    return (BigInt(high) << BigInt(32)) | BigInt(low);\n  }\n  const value = high * 4294967296 + low;\n  if (!Number.isSafeInteger(value)) {\n    __tnWarnOnce(\n      \"[thru-net] Precision loss while polyfilling DataView.getBigUint64\"\n    );\n  }\n  return (value as unknown) as bigint;\n}\n\nfunction __tnPolyfillReadInt64(\n  view: DataView,\n  offset: number,\n  littleEndian: boolean\n): bigint {\n  const low = littleEndian\n    ? view.getUint32(offset, true)\n    : view.getUint32(offset + 4, false);\n  const high = littleEndian\n    ? view.getInt32(offset + 4, true)\n    : view.getInt32(offset, false);\n  if (__tnHasNativeBigInt) {\n    return (BigInt(high) << BigInt(32)) | BigInt(low);\n  }\n  const value = high * 4294967296 + low;\n  if (!Number.isSafeInteger(value)) {\n    __tnWarnOnce(\n      \"[thru-net] Precision loss while polyfilling DataView.getBigInt64\"\n    );\n  }\n  return (value as unknown) as bigint;\n}\n\nfunction __tnPolyfillWriteUint64(\n  view: DataView,\n  offset: number,\n  value: bigint,\n  littleEndian: boolean\n): void {\n  const parts = __tnSplitUint64(value);\n  if (littleEndian) {\n    view.setUint32(offset, parts.low, true);\n    view.setUint32(offset + 4, parts.high, true);\n  } else {\n    view.setUint32(offset, parts.high, false);\n    view.setUint32(offset + 4, parts.low, false);\n  }\n}\n\nfunction __tnPolyfillWriteInt64(\n  view: DataView,\n  offset: number,\n  value: bigint,\n  littleEndian: boolean\n): void {\n  const parts = __tnSplitInt64(value);\n  if (littleEndian) {\n    view.setUint32(offset, parts.low >>> 0, true);\n    view.setInt32(offset + 4, parts.high | 0, true);\n  } else {\n    view.setInt32(offset, parts.high | 0, false);\n    view.setUint32(offset + 4, parts.low >>> 0, false);\n  }\n}\n\nif (typeof DataView !== \"undefined\" && !__tnHasBigIntDataView) {\n  const proto = DataView.prototype as unknown as Record<string, unknown>;\n  if (typeof proto.getBigUint64 !== \"function\") {\n    (proto as any).getBigUint64 = function (\n      offset: number,\n      littleEndian?: boolean\n    ): bigint {\n      __tnWarnOnce(\n        \"[thru-net] Polyfilling DataView.getBigUint64; precision may be lost\"\n      );\n      return __tnPolyfillReadUint64(this, offset, !!littleEndian);\n    };\n  }\n  if (typeof proto.getBigInt64 !== \"function\") {\n    (proto as any).getBigInt64 = function (\n      offset: number,\n      littleEndian?: boolean\n    ): bigint {\n      __tnWarnOnce(\n        \"[thru-net] Polyfilling DataView.getBigInt64; precision may be lost\"\n      );\n      return __tnPolyfillReadInt64(this, offset, !!littleEndian);\n    };\n  }\n  if (typeof proto.setBigUint64 !== \"function\") {\n    (proto as any).setBigUint64 = function (\n      offset: number,\n      value: bigint,\n      littleEndian?: boolean\n    ): void {\n      __tnWarnOnce(\n        \"[thru-net] Polyfilling DataView.setBigUint64; precision may be lost\"\n      );\n      __tnPolyfillWriteUint64(this, offset, value, !!littleEndian);\n    };\n  }\n  if (typeof proto.setBigInt64 !== \"function\") {\n    (proto as any).setBigInt64 = function (\n      offset: number,\n      value: bigint,\n      littleEndian?: boolean\n    ): void {\n      __tnWarnOnce(\n        \"[thru-net] Polyfilling DataView.setBigInt64; precision may be lost\"\n      );\n      __tnPolyfillWriteInt64(this, offset, value, !!littleEndian);\n    };\n  }\n  if (!__tnHasNativeBigInt) {\n    __tnWarnOnce(\n      \"[thru-net] BigInt is unavailable; falling back to lossy 64-bit polyfill\"\n    );\n  }\n}\n\nconst __tnFootprintRegistry: Record<\n  string,\n  (params: Record<string, bigint>) => bigint\n> = {};\nconst __tnValidateRegistry: Record<\n  string,\n  (buffer: Uint8Array, params: Record<string, bigint>) => __TnValidateResult\n> = {};\nconst __tnDynamicValidateRegistry: Record<\n  string,\n  (buffer: Uint8Array) => __TnValidateResult\n> = {};\n\nfunction __tnRegisterFootprint(\n  typeName: string,\n  fn: (params: Record<string, bigint>) => bigint\n): void {\n  __tnFootprintRegistry[typeName] = fn;\n}\n\nfunction __tnRegisterValidate(\n  typeName: string,\n  fn: (buffer: Uint8Array, params: Record<string, bigint>) => __TnValidateResult\n): void {\n  __tnValidateRegistry[typeName] = fn;\n}\n\nfunction __tnRegisterDynamicValidate(\n  typeName: string,\n  fn: (buffer: Uint8Array) => __TnValidateResult\n): void {\n  __tnDynamicValidateRegistry[typeName] = fn;\n}\n\nfunction __tnInvokeFootprint(\n  typeName: string,\n  params: Record<string, bigint>\n): bigint {\n  const fn = __tnFootprintRegistry[typeName];\n  if (!fn) throw new Error(`IR runtime missing footprint for ${typeName}`);\n  return fn(params);\n}\n\nfunction __tnInvokeValidate(\n  typeName: string,\n  buffer: Uint8Array,\n  params: Record<string, bigint>\n): __TnValidateResult {\n  const fn = __tnValidateRegistry[typeName];\n  if (!fn) throw new Error(`IR runtime missing validate helper for ${typeName}`);\n  return fn(buffer, params);\n}\n\nfunction __tnInvokeDynamicValidate(\n  typeName: string,\n  buffer: Uint8Array\n): __TnValidateResult {\n  const fn = __tnDynamicValidateRegistry[typeName];\n  if (!fn) throw new Error(`IR runtime missing dynamic validate helper for ${typeName}`);\n  return fn(buffer);\n}\n\nfunction __tnEvalFootprint(node: __TnIrNode, ctx: __TnIrContext): bigint {\n  return __tnEvalIrNode(node, ctx, __tnToBigInt(0));\n}\n\nfunction __tnTryEvalFootprint(\n  node: __TnIrNode,\n  ctx: __TnIrContext\n): __TnEvalResult {\n  return __tnTryEvalIr(node, ctx);\n}\n\nfunction __tnTryEvalIr(\n  node: __TnIrNode,\n  ctx: __TnIrContext\n): __TnEvalResult {\n  try {\n    return { ok: true, value: __tnEvalIrNode(node, ctx, __tnToBigInt(0)) };\n  } catch (err) {\n    return { ok: false, code: __tnNormalizeIrError(err) };\n  }\n}\n\nfunction __tnIsEvalError(result: __TnEvalResult): result is { ok: false; code: string } {\n  return result.ok === false;\n}\n\nfunction __tnValidateIrTree(\n  ir: { readonly typeName: string; readonly root: __TnIrNode },\n  buffer: Uint8Array,\n  params: Record<string, bigint>\n): __TnValidateResult {\n  const evalResult = __tnTryEvalIr(ir.root, {\n    params,\n    buffer,\n    typeName: ir.typeName,\n  });\n  if (__tnIsEvalError(evalResult)) {\n    return { ok: false, code: evalResult.code };\n  }\n  const required = evalResult.value;\n  const available = __tnToBigInt(buffer.length);\n  if (__tnBigIntGreaterThan(required, available)) {\n    return { ok: false, code: \"tn.buffer_too_small\", consumed: required };\n  }\n  return { ok: true, consumed: required };\n}\n\nfunction __tnEvalIrNode(\n  node: __TnIrNode,\n  ctx: __TnIrContext,\n  baseOffset: bigint\n): bigint {\n  switch (node.op) {\n    case \"zero\":\n      return __tnToBigInt(0);\n    case \"const\":\n      return node.value;\n    case \"field\": {\n      if (node.param === \"__buffer_size\" && ctx.buffer) {\n        return __tnToBigInt(ctx.buffer.length);\n      }\n      const val = ctx.params[node.param];\n      if (val === undefined) {\n        const prefix = ctx.typeName ? `${ctx.typeName}: ` : \"\";\n        __tnRaiseIrError(\n          \"tn.ir.missing_param\",\n          `${prefix}Missing IR parameter '${node.param}'`\n        );\n      }\n      return val;\n    }\n    case \"add\":\n      {\n        const left = __tnEvalIrNode(node.left, ctx, baseOffset);\n        const right = __tnEvalIrNode(\n          node.right,\n          ctx,\n          __tnCheckedAdd(baseOffset, left)\n        );\n        return __tnCheckedAdd(left, right);\n      }\n    case \"sub\":\n      return __tnCheckedSub(\n        __tnEvalIrNode(node.left, ctx, baseOffset),\n        __tnEvalIrNode(node.right, ctx, baseOffset)\n      );\n    case \"mul\":\n      return __tnCheckedMul(\n        __tnEvalIrNode(node.left, ctx, baseOffset),\n        __tnEvalIrNode(node.right, ctx, baseOffset)\n      );\n    case \"div\":\n      return __tnCheckedDiv(\n        __tnEvalIrNode(node.left, ctx, baseOffset),\n        __tnEvalIrNode(node.right, ctx, baseOffset)\n      );\n    case \"mod\":\n      return __tnCheckedMod(\n        __tnEvalIrNode(node.left, ctx, baseOffset),\n        __tnEvalIrNode(node.right, ctx, baseOffset)\n      );\n    case \"bitAnd\":\n      return __tnBitwise(\n        __tnEvalIrNode(node.left, ctx, baseOffset),\n        __tnEvalIrNode(node.right, ctx, baseOffset),\n        \"and\"\n      );\n    case \"bitOr\":\n      return __tnBitwise(\n        __tnEvalIrNode(node.left, ctx, baseOffset),\n        __tnEvalIrNode(node.right, ctx, baseOffset),\n        \"or\"\n      );\n    case \"bitXor\":\n      return __tnBitwise(\n        __tnEvalIrNode(node.left, ctx, baseOffset),\n        __tnEvalIrNode(node.right, ctx, baseOffset),\n        \"xor\"\n      );\n    case \"leftShift\":\n      return __tnCheckedShift(\n        __tnEvalIrNode(node.left, ctx, baseOffset),\n        __tnEvalIrNode(node.right, ctx, baseOffset),\n        \"left\"\n      );\n    case \"rightShift\":\n      return __tnCheckedShift(\n        __tnEvalIrNode(node.left, ctx, baseOffset),\n        __tnEvalIrNode(node.right, ctx, baseOffset),\n        \"right\"\n      );\n    case \"align\":\n      return __tnAlign(__tnEvalIrNode(node.node, ctx, baseOffset), node.alignment);\n    case \"switch\": {\n      const tagVal = ctx.params[node.tag];\n      if (tagVal === undefined) {\n        const prefix = ctx.typeName ? `${ctx.typeName}: ` : \"\";\n        __tnRaiseIrError(\n          \"tn.ir.missing_param\",\n          `${prefix}Missing IR switch tag '${node.tag}'`\n        );\n      }\n      const tagNumber = Number(tagVal);\n      for (const caseNode of node.cases) {\n        if (caseNode.value === tagNumber) {\n          return __tnEvalIrNode(caseNode.node, ctx, baseOffset);\n        }\n      }\n      if (node.default) return __tnEvalIrNode(node.default, ctx, baseOffset);\n      __tnRaiseIrError(\n        \"tn.ir.invalid_tag\",\n        `Unhandled IR switch value ${tagNumber} for '${node.tag}'`\n      );\n    }\n    case \"call\": {\n      const nestedParams: Record<string, bigint> = Object.create(null);\n      for (const arg of node.args) {\n        const val = ctx.params[arg.source];\n        if (val === undefined) {\n          const prefix = ctx.typeName ? `${ctx.typeName}: ` : \"\";\n          __tnRaiseIrError(\n            \"tn.ir.missing_param\",\n            `${prefix}Missing IR parameter '${arg.source}' for nested call`\n          );\n        }\n        nestedParams[arg.name] = val;\n      }\n      if (ctx.buffer) {\n        const nestedOffset = __tnBigIntToNumber(baseOffset, \"IR nested offset\");\n        const nestedResult = __tnInvokeValidate(\n          node.typeName,\n          ctx.buffer.subarray(nestedOffset),\n          nestedParams\n        );\n        if (!nestedResult.ok) {\n          const nestedCode =\n            nestedResult.code ?? `tn.ir.runtime_error: ${node.typeName}`;\n          const prefixed = nestedCode.startsWith(\"tn.\")\n            ? nestedCode\n            : `tn.ir.runtime_error: ${node.typeName} -> ${nestedCode}`;\n          __tnRaiseIrError(\n            prefixed,\n            `Nested validator ${node.typeName} failed`\n          );\n        }\n        if (nestedResult.consumed !== undefined) {\n          return nestedResult.consumed;\n        }\n      }\n      return __tnInvokeFootprint(node.typeName, nestedParams);\n    }\n    case \"sumOverArray\": {\n      if (!ctx.buffer) {\n        __tnRaiseIrError(\n          \"tn.ir.missing_buffer\",\n          `Jagged array '${node.fieldName}' requires buffer-backed validation`\n        );\n      }\n      const count = __tnBigIntToNumber(\n        __tnEvalIrNode(node.count, ctx, baseOffset),\n        `Jagged array '${node.fieldName}' count`\n      );\n      let cursor = __tnBigIntToNumber(baseOffset, \"IR jagged array offset\");\n      let total = __tnToBigInt(0);\n      for (let i = 0; i < count; i++) {\n        const result = __tnInvokeDynamicValidate(\n          node.elementTypeName,\n          ctx.buffer.subarray(cursor)\n        );\n        if (!result.ok || result.consumed === undefined) {\n          const code = result.code ?? \"tn.ir.runtime_error\";\n          __tnRaiseIrError(\n            code,\n            `Jagged array '${node.fieldName}' element ${i} failed validation`\n          );\n        }\n        cursor += __tnBigIntToNumber(result.consumed, \"IR jagged element size\");\n        total = __tnCheckedAdd(total, result.consumed);\n      }\n      return total;\n    }\n    default:\n      __tnRaiseIrError(\n        \"tn.ir.runtime_error\",\n        `Unsupported IR node ${(node as { op: string }).op}`\n      );\n  }\n}\n\nfunction __tnNormalizeIrError(err: unknown): string {\n  if (err && typeof err === \"object\" && \"code\" in err) {\n    const maybeCode = (err as { code?: string }).code;\n    if (typeof maybeCode === \"string\" && maybeCode.length > 0) {\n      return maybeCode;\n    }\n  }\n  const message =\n    err && typeof err === \"object\" && \"message\" in err\n      ? String((err as { message?: unknown }).message ?? \"\")\n      : typeof err === \"string\"\n      ? err\n      : \"\";\n  if (message.includes(\"Missing IR parameter\")) return \"tn.ir.missing_param\";\n  if (message.includes(\"Unhandled IR switch value\")) return \"tn.ir.invalid_tag\";\n  if (\n    message.includes(\"invalid\") ||\n    message.includes(\"overflow\") ||\n    message.includes(\"negative size\")\n  ) {\n    return \"tn.ir.overflow\";\n  }\n  if (message.length > 0) return `tn.ir.runtime_error: ${message}`;\n  return \"tn.ir.runtime_error\";\n}\n\n/* ----- TYPE DEFINITION FOR Date ----- */\n\nconst __tn_ir_Date = {\n  typeName: \"Date\",\n  root: { op: \"const\", value: 6n }\n} as const;\n\nexport class Date {\n  private view: DataView;\n\n  private constructor(private buffer: Uint8Array) {\n    this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n  }\n\n  static __tnCreateView(buffer: Uint8Array, opts?: { fieldContext?: Record<string, number | bigint> }): Date {\n    if (!buffer || buffer.length === undefined) throw new Error(\"Date.__tnCreateView requires a Uint8Array\");\n    return new Date(new Uint8Array(buffer));\n  }\n\n  static builder(): DateBuilder {\n    return new DateBuilder();\n  }\n\n  static fromBuilder(builder: DateBuilder): Date | null {\n    const buffer = builder.build();\n    return Date.from_array(buffer);\n  }\n\n  get_year(): number {\n    const offset = 0;\n    return this.view.getInt32(offset, true); /* little-endian */\n  }\n\n  set_year(value: number): void {\n    const offset = 0;\n    this.view.setInt32(offset, value, true); /* little-endian */\n  }\n\n  get year(): number {\n    return this.get_year();\n  }\n\n  set year(value: number) {\n    this.set_year(value);\n  }\n\n  get_month(): number {\n    const offset = 4;\n    return this.view.getUint8(offset);\n  }\n\n  set_month(value: number): void {\n    const offset = 4;\n    this.view.setUint8(offset, value);\n  }\n\n  get month(): number {\n    return this.get_month();\n  }\n\n  set month(value: number) {\n    this.set_month(value);\n  }\n\n  get_day(): number {\n    const offset = 5;\n    return this.view.getUint8(offset);\n  }\n\n  set_day(value: number): void {\n    const offset = 5;\n    this.view.setUint8(offset, value);\n  }\n\n  get day(): number {\n    return this.get_day();\n  }\n\n  set day(value: number) {\n    this.set_day(value);\n  }\n\n  private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n    return __tnEvalFootprint(__tn_ir_Date.root, { params: __tnParams });\n  }\n\n  private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n    return __tnValidateIrTree(__tn_ir_Date, buffer, __tnParams);\n  }\n\n  static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n    return this.__tnFootprintInternal(__tnParams);\n  }\n\n  static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n    return this.__tnValidateInternal(buffer, __tnParams);\n  }\n\n  static footprintIr(): bigint {\n    return this.__tnFootprintInternal(Object.create(null));\n  }\n\n  static footprint(): number {\n    const irResult = this.footprintIr();\n      const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n    if (__tnBigIntGreaterThan(irResult, maxSafe)) {\n      throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for Date');\n    }\n    return __tnBigIntToNumber(irResult, 'Date::footprint');\n  }\n\n  static validate(buffer: Uint8Array, _opts?: { params?: never }): { ok: boolean; code?: string; consumed?: number } {\n    if (buffer.length < 6) return { ok: false, code: \"tn.buffer_too_small\", consumed: 6 };\n    return { ok: true, consumed: 6 };\n  }\n\n  static new(year: number, month: number, day: number): Date {\n    const buffer = new Uint8Array(6);\n    const view = new DataView(buffer.buffer);\n\n    let offset = 0;\n    view.setInt32(0, year, true); /* year (little-endian) */\n    view.setUint8(4, month); /* month */\n    view.setUint8(5, day); /* day */\n\n    return new Date(buffer);\n  }\n\n  static from_array(buffer: Uint8Array): Date | null {\n    if (!buffer || buffer.length === undefined) {\n      return null;\n    }\n    const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    const validation = this.validate(buffer);\n    if (!validation.ok) {\n      return null;\n    }\n    return new Date(buffer);\n  }\n\n}\n\nexport class DateBuilder {\n  private buffer: Uint8Array;\n  private view: DataView;\n\n  constructor() {\n    this.buffer = new Uint8Array(6);\n    this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n  }\n\n  set_year(value: number): this {\n    this.view.setInt32(0, value, true);\n    return this;\n  }\n\n  set_month(value: number): this {\n    this.view.setUint8(4, value);\n    return this;\n  }\n\n  set_day(value: number): this {\n    this.view.setUint8(5, value);\n    return this;\n  }\n\n  build(): Uint8Array {\n    return this.buffer.slice();\n  }\n\n  buildInto(target: Uint8Array, offset = 0): Uint8Array {\n    if (target.length - offset < this.buffer.length) throw new Error(\"target buffer too small\");\n    target.set(this.buffer, offset);\n    return target;\n  }\n\n  finish(): Date {\n    const view = Date.from_array(this.buffer.slice());\n    if (!view) throw new Error(\"failed to build Date\");\n    return view;\n  }\n}\n\n__tnRegisterFootprint(\"Date\", (params) => Date.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"Date\", (buffer, params) => Date.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"Date\", (buffer) => { const result = Date.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n\n/* ----- TYPE DEFINITION FOR Duration ----- */\n\nconst __tn_ir_Duration = {\n  typeName: \"Duration\",\n  root: { op: \"const\", value: 12n }\n} as const;\n\nexport class Duration {\n  private view: DataView;\n\n  private constructor(private buffer: Uint8Array) {\n    this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n  }\n\n  static __tnCreateView(buffer: Uint8Array, opts?: { fieldContext?: Record<string, number | bigint> }): Duration {\n    if (!buffer || buffer.length === undefined) throw new Error(\"Duration.__tnCreateView requires a Uint8Array\");\n    return new Duration(new Uint8Array(buffer));\n  }\n\n  static builder(): DurationBuilder {\n    return new DurationBuilder();\n  }\n\n  static fromBuilder(builder: DurationBuilder): Duration | null {\n    const buffer = builder.build();\n    return Duration.from_array(buffer);\n  }\n\n  get_seconds(): bigint {\n    const offset = 0;\n    return this.view.getBigInt64(offset, true); /* little-endian */\n  }\n\n  set_seconds(value: bigint): void {\n    const offset = 0;\n    this.view.setBigInt64(offset, value, true); /* little-endian */\n  }\n\n  get seconds(): bigint {\n    return this.get_seconds();\n  }\n\n  set seconds(value: bigint) {\n    this.set_seconds(value);\n  }\n\n  get_nanos(): number {\n    const offset = 8;\n    return this.view.getInt32(offset, true); /* little-endian */\n  }\n\n  set_nanos(value: number): void {\n    const offset = 8;\n    this.view.setInt32(offset, value, true); /* little-endian */\n  }\n\n  get nanos(): number {\n    return this.get_nanos();\n  }\n\n  set nanos(value: number) {\n    this.set_nanos(value);\n  }\n\n  private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n    return __tnEvalFootprint(__tn_ir_Duration.root, { params: __tnParams });\n  }\n\n  private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n    return __tnValidateIrTree(__tn_ir_Duration, buffer, __tnParams);\n  }\n\n  static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n    return this.__tnFootprintInternal(__tnParams);\n  }\n\n  static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n    return this.__tnValidateInternal(buffer, __tnParams);\n  }\n\n  static footprintIr(): bigint {\n    return this.__tnFootprintInternal(Object.create(null));\n  }\n\n  static footprint(): number {\n    const irResult = this.footprintIr();\n      const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n    if (__tnBigIntGreaterThan(irResult, maxSafe)) {\n      throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for Duration');\n    }\n    return __tnBigIntToNumber(irResult, 'Duration::footprint');\n  }\n\n  static validate(buffer: Uint8Array, _opts?: { params?: never }): { ok: boolean; code?: string; consumed?: number } {\n    if (buffer.length < 12) return { ok: false, code: \"tn.buffer_too_small\", consumed: 12 };\n    return { ok: true, consumed: 12 };\n  }\n\n  static new(seconds: bigint, nanos: number): Duration {\n    const buffer = new Uint8Array(12);\n    const view = new DataView(buffer.buffer);\n\n    let offset = 0;\n    view.setBigInt64(0, seconds, true); /* seconds (little-endian) */\n    view.setInt32(8, nanos, true); /* nanos (little-endian) */\n\n    return new Duration(buffer);\n  }\n\n  static from_array(buffer: Uint8Array): Duration | null {\n    if (!buffer || buffer.length === undefined) {\n      return null;\n    }\n    const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    const validation = this.validate(buffer);\n    if (!validation.ok) {\n      return null;\n    }\n    return new Duration(buffer);\n  }\n\n}\n\nexport class DurationBuilder {\n  private buffer: Uint8Array;\n  private view: DataView;\n\n  constructor() {\n    this.buffer = new Uint8Array(12);\n    this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n  }\n\n  set_seconds(value: bigint): this {\n    const cast = __tnToBigInt(value);\n    this.view.setBigInt64(0, cast, true);\n    return this;\n  }\n\n  set_nanos(value: number): this {\n    this.view.setInt32(8, value, true);\n    return this;\n  }\n\n  build(): Uint8Array {\n    return this.buffer.slice();\n  }\n\n  buildInto(target: Uint8Array, offset = 0): Uint8Array {\n    if (target.length - offset < this.buffer.length) throw new Error(\"target buffer too small\");\n    target.set(this.buffer, offset);\n    return target;\n  }\n\n  finish(): Duration {\n    const view = Duration.from_array(this.buffer.slice());\n    if (!view) throw new Error(\"failed to build Duration\");\n    return view;\n  }\n}\n\n__tnRegisterFootprint(\"Duration\", (params) => Duration.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"Duration\", (buffer, params) => Duration.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"Duration\", (buffer) => { const result = Duration.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n\n/* ----- TYPE DEFINITION FOR FixedPoint ----- */\n\nconst __tn_ir_FixedPoint = {\n  typeName: \"FixedPoint\",\n  root: { op: \"const\", value: 9n }\n} as const;\n\nexport class FixedPoint {\n  private view: DataView;\n\n  private constructor(private buffer: Uint8Array) {\n    this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n  }\n\n  static __tnCreateView(buffer: Uint8Array, opts?: { fieldContext?: Record<string, number | bigint> }): FixedPoint {\n    if (!buffer || buffer.length === undefined) throw new Error(\"FixedPoint.__tnCreateView requires a Uint8Array\");\n    return new FixedPoint(new Uint8Array(buffer));\n  }\n\n  static builder(): FixedPointBuilder {\n    return new FixedPointBuilder();\n  }\n\n  static fromBuilder(builder: FixedPointBuilder): FixedPoint | null {\n    const buffer = builder.build();\n    return FixedPoint.from_array(buffer);\n  }\n\n  get_mantissa(): bigint {\n    const offset = 0;\n    return this.view.getBigInt64(offset, true); /* little-endian */\n  }\n\n  set_mantissa(value: bigint): void {\n    const offset = 0;\n    this.view.setBigInt64(offset, value, true); /* little-endian */\n  }\n\n  get mantissa(): bigint {\n    return this.get_mantissa();\n  }\n\n  set mantissa(value: bigint) {\n    this.set_mantissa(value);\n  }\n\n  get_scale(): number {\n    const offset = 8;\n    return this.view.getUint8(offset);\n  }\n\n  set_scale(value: number): void {\n    const offset = 8;\n    this.view.setUint8(offset, value);\n  }\n\n  get scale(): number {\n    return this.get_scale();\n  }\n\n  set scale(value: number) {\n    this.set_scale(value);\n  }\n\n  private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n    return __tnEvalFootprint(__tn_ir_FixedPoint.root, { params: __tnParams });\n  }\n\n  private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n    return __tnValidateIrTree(__tn_ir_FixedPoint, buffer, __tnParams);\n  }\n\n  static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n    return this.__tnFootprintInternal(__tnParams);\n  }\n\n  static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n    return this.__tnValidateInternal(buffer, __tnParams);\n  }\n\n  static footprintIr(): bigint {\n    return this.__tnFootprintInternal(Object.create(null));\n  }\n\n  static footprint(): number {\n    const irResult = this.footprintIr();\n      const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n    if (__tnBigIntGreaterThan(irResult, maxSafe)) {\n      throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for FixedPoint');\n    }\n    return __tnBigIntToNumber(irResult, 'FixedPoint::footprint');\n  }\n\n  static validate(buffer: Uint8Array, _opts?: { params?: never }): { ok: boolean; code?: string; consumed?: number } {\n    if (buffer.length < 9) return { ok: false, code: \"tn.buffer_too_small\", consumed: 9 };\n    return { ok: true, consumed: 9 };\n  }\n\n  static new(mantissa: bigint, scale: number): FixedPoint {\n    const buffer = new Uint8Array(9);\n    const view = new DataView(buffer.buffer);\n\n    let offset = 0;\n    view.setBigInt64(0, mantissa, true); /* mantissa (little-endian) */\n    view.setUint8(8, scale); /* scale */\n\n    return new FixedPoint(buffer);\n  }\n\n  static from_array(buffer: Uint8Array): FixedPoint | null {\n    if (!buffer || buffer.length === undefined) {\n      return null;\n    }\n    const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    const validation = this.validate(buffer);\n    if (!validation.ok) {\n      return null;\n    }\n    return new FixedPoint(buffer);\n  }\n\n}\n\nexport class FixedPointBuilder {\n  private buffer: Uint8Array;\n  private view: DataView;\n\n  constructor() {\n    this.buffer = new Uint8Array(9);\n    this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n  }\n\n  set_mantissa(value: bigint): this {\n    const cast = __tnToBigInt(value);\n    this.view.setBigInt64(0, cast, true);\n    return this;\n  }\n\n  set_scale(value: number): this {\n    this.view.setUint8(8, value);\n    return this;\n  }\n\n  build(): Uint8Array {\n    return this.buffer.slice();\n  }\n\n  buildInto(target: Uint8Array, offset = 0): Uint8Array {\n    if (target.length - offset < this.buffer.length) throw new Error(\"target buffer too small\");\n    target.set(this.buffer, offset);\n    return target;\n  }\n\n  finish(): FixedPoint {\n    const view = FixedPoint.from_array(this.buffer.slice());\n    if (!view) throw new Error(\"failed to build FixedPoint\");\n    return view;\n  }\n}\n\n__tnRegisterFootprint(\"FixedPoint\", (params) => FixedPoint.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"FixedPoint\", (buffer, params) => FixedPoint.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"FixedPoint\", (buffer) => { const result = FixedPoint.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n\n/* ----- TYPE DEFINITION FOR Hash ----- */\n\nconst __tn_ir_Hash = {\n  typeName: \"Hash\",\n  root: { op: \"const\", value: 32n }\n} as const;\n\nexport class Hash {\n  private view: DataView;\n\n  private constructor(private buffer: Uint8Array) {\n    this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n  }\n\n  static __tnCreateView(buffer: Uint8Array, opts?: { fieldContext?: Record<string, number | bigint> }): Hash {\n    if (!buffer || buffer.length === undefined) throw new Error(\"Hash.__tnCreateView requires a Uint8Array\");\n    return new Hash(new Uint8Array(buffer));\n  }\n\n  static builder(): HashBuilder {\n    return new HashBuilder();\n  }\n\n  static fromBuilder(builder: HashBuilder): Hash | null {\n    const buffer = builder.build();\n    return Hash.from_array(buffer);\n  }\n\n  get_bytes(): number[] {\n    const offset = 0;\n    const result: number[] = [];\n    for (let i = 0; i < 32; i++) {\n      result.push(this.view.getUint8((offset + i * 1)));\n    }\n    return result;\n  }\n\n  set_bytes(value: number[]): void {\n    const offset = 0;\n    if (value.length !== 32) {\n      throw new Error('Array length must be 32');\n    }\n    for (let i = 0; i < 32; i++) {\n      this.view.setUint8((offset + i * 1), value[i]);\n    }\n  }\n\n  get bytes(): number[] {\n    return this.get_bytes();\n  }\n\n  set bytes(value: number[]) {\n    this.set_bytes(value);\n  }\n\n  private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n    return __tnEvalFootprint(__tn_ir_Hash.root, { params: __tnParams });\n  }\n\n  private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n    return __tnValidateIrTree(__tn_ir_Hash, buffer, __tnParams);\n  }\n\n  static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n    return this.__tnFootprintInternal(__tnParams);\n  }\n\n  static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n    return this.__tnValidateInternal(buffer, __tnParams);\n  }\n\n  static footprintIr(): bigint {\n    return this.__tnFootprintInternal(Object.create(null));\n  }\n\n  static footprint(): number {\n    const irResult = this.footprintIr();\n      const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n    if (__tnBigIntGreaterThan(irResult, maxSafe)) {\n      throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for Hash');\n    }\n    return __tnBigIntToNumber(irResult, 'Hash::footprint');\n  }\n\n  static validate(buffer: Uint8Array, _opts?: { params?: never }): { ok: boolean; code?: string; consumed?: number } {\n    if (buffer.length < 32) return { ok: false, code: \"tn.buffer_too_small\", consumed: 32 };\n    return { ok: true, consumed: 32 };\n  }\n\n  static from_array(buffer: Uint8Array): Hash | null {\n    if (!buffer || buffer.length === undefined) {\n      return null;\n    }\n    const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    const validation = this.validate(buffer);\n    if (!validation.ok) {\n      return null;\n    }\n    return new Hash(buffer);\n  }\n\n}\n\nexport class HashBuilder {\n  private buffer: Uint8Array;\n  private view: DataView;\n\n  constructor() {\n    this.buffer = new Uint8Array(32);\n    this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n  }\n\n  set_bytes(values: number[]): this {\n    if (values.length !== 32) throw new Error(\"bytes expects 32 elements\");\n    for (let i = 0; i < values.length; i++) {\n      const byteOffset = 0 + i * 1;\n      this.view.setUint8(byteOffset, values[i]);\n    }\n    return this;\n  }\n\n  build(): Uint8Array {\n    return this.buffer.slice();\n  }\n\n  buildInto(target: Uint8Array, offset = 0): Uint8Array {\n    if (target.length - offset < this.buffer.length) throw new Error(\"target buffer too small\");\n    target.set(this.buffer, offset);\n    return target;\n  }\n\n  finish(): Hash {\n    const view = Hash.from_array(this.buffer.slice());\n    if (!view) throw new Error(\"failed to build Hash\");\n    return view;\n  }\n}\n\n__tnRegisterFootprint(\"Hash\", (params) => Hash.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"Hash\", (buffer, params) => Hash.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"Hash\", (buffer) => { const result = Hash.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n\n/* ----- TYPE DEFINITION FOR InstructionData ----- */\n\nconst __tn_ir_InstructionData = {\n  typeName: \"InstructionData\",\n  root: { op: \"align\", alignment: 1, node: { op: \"add\", left: { op: \"add\", left: { op: \"align\", alignment: 2, node: { op: \"const\", value: 2n } }, right: { op: \"align\", alignment: 8, node: { op: \"const\", value: 8n } } }, right: { op: \"align\", alignment: 1, node: { op: \"mul\", left: { op: \"field\", param: \"data.data_size\" }, right: { op: \"const\", value: 1n } } } } }\n} as const;\n\nexport class InstructionData {\n  private view: DataView;\n  private __tnFieldContext: Record<string, number | bigint> | null = null;\n  private __tnParams: InstructionData.Params;\n\n  private constructor(private buffer: Uint8Array, params?: InstructionData.Params, fieldContext?: Record<string, number | bigint>) {\n    this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    this.__tnFieldContext = fieldContext ?? null;\n    if (params) {\n      this.__tnParams = params;\n    } else {\n      const derived = InstructionData.__tnExtractParams(this.view, buffer);\n      if (!derived) {\n        throw new Error(\"InstructionData: failed to derive dynamic parameters\");\n      }\n      this.__tnParams = derived.params;\n    }\n  }\n\n  static __tnCreateView(buffer: Uint8Array, opts?: { params?: InstructionData.Params, fieldContext?: Record<string, number | bigint> }): InstructionData {\n    if (!buffer || buffer.length === undefined) throw new Error(\"InstructionData.__tnCreateView requires a Uint8Array\");\n    let params = opts?.params ?? null;\n    if (!params) {\n      const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n      const derived = InstructionData.__tnExtractParams(view, buffer);\n      if (!derived) throw new Error(\"InstructionData.__tnCreateView: failed to derive params\");\n      params = derived.params;\n    }\n    const instance = new InstructionData(new Uint8Array(buffer), params, opts?.fieldContext);\n    return instance;\n  }\n\n  dynamicParams(): InstructionData.Params {\n    return this.__tnParams;\n  }\n\n  withFieldContext(context: Record<string, number | bigint>): this {\n    this.__tnFieldContext = context;\n    return this;\n  }\n\n  private __tnResolveFieldRef(path: string): number {\n    const getterName = `get_${path.replace(/[.]/g, '_')}`;\n    const getter = (this as any)[getterName];\n    if (typeof getter === \"function\") {\n      const value = getter.call(this);\n      return typeof value === \"bigint\" ? __tnBigIntToNumber(value, \"InstructionData::__tnResolveFieldRef\") : value;\n    }\n    if (this.__tnFieldContext && Object.prototype.hasOwnProperty.call(this.__tnFieldContext, path)) {\n      const contextValue = this.__tnFieldContext[path];\n      return typeof contextValue === \"bigint\" ? __tnBigIntToNumber(contextValue, \"InstructionData::__tnResolveFieldRef\") : contextValue;\n    }\n    throw new Error(\"InstructionData: field reference '\" + path + \"' is not available; provide fieldContext when creating this view\");\n  }\n\n  static builder(): InstructionDataBuilder {\n    return new InstructionDataBuilder();\n  }\n\n  static fromBuilder(builder: InstructionDataBuilder): InstructionData | null {\n    const buffer = builder.build();\n    const params = builder.dynamicParams();\n    return InstructionData.from_array(buffer, { params });\n  }\n\n  static readonly flexibleArrayWriters = Object.freeze([\n    { field: \"data\", method: \"data\", sizeField: \"data_size\", paramKey: \"data_size\", elementSize: 1 },\n  ] as const);\n\n  private static __tnExtractParams(view: DataView, buffer: Uint8Array): { params: InstructionData.Params; derived: Record<string, bigint> | null } | null {\n    if (buffer.length < 10) {\n      return null;\n    }\n    const __tnParam_data_data_size = __tnToBigInt(view.getBigUint64(2, true));\n    const __tnExtractedParams = InstructionData.Params.fromValues({\n      data_data_size: __tnParam_data_data_size,\n    });\n    return { params: __tnExtractedParams, derived: null };\n  }\n\n  get_program_idx(): number {\n    const offset = 0;\n    return this.view.getUint16(offset, true); /* little-endian */\n  }\n\n  set_program_idx(value: number): void {\n    const offset = 0;\n    this.view.setUint16(offset, value, true); /* little-endian */\n  }\n\n  get program_idx(): number {\n    return this.get_program_idx();\n  }\n\n  set program_idx(value: number) {\n    this.set_program_idx(value);\n  }\n\n  get_data_size(): bigint {\n    const offset = 2;\n    return this.view.getBigUint64(offset, true); /* little-endian */\n  }\n\n  set_data_size(value: bigint): void {\n    const offset = 2;\n    this.view.setBigUint64(offset, value, true); /* little-endian */\n  }\n\n  get data_size(): bigint {\n    return this.get_data_size();\n  }\n\n  set data_size(value: bigint) {\n    this.set_data_size(value);\n  }\n\n  get_data_length(): number {\n    return this.__tnResolveFieldRef(\"data_size\");\n  }\n\n  get_data_at(index: number): number {\n    const offset = 10;\n    return this.view.getUint8(offset + index * 1);\n  }\n\n  get_data(): number[] {\n    const len = this.get_data_length();\n    const result: number[] = [];\n    for (let i = 0; i < len; i++) {\n      result.push(this.get_data_at(i));\n    }\n    return result;\n  }\n\n  set_data_at(index: number, value: number): void {\n    const offset = 10;\n    this.view.setUint8((offset + index * 1), value);\n  }\n\n  set_data(value: number[]): void {\n    const len = Math.min(this.get_data_length(), value.length);\n    for (let i = 0; i < len; i++) {\n      this.set_data_at(i, value[i]);\n    }\n  }\n\n  get data(): number[] {\n    return this.get_data();\n  }\n\n  set data(value: number[]) {\n    this.set_data(value);\n  }\n  private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n    return __tnEvalFootprint(__tn_ir_InstructionData.root, { params: __tnParams });\n  }\n\n  private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n    return __tnValidateIrTree(__tn_ir_InstructionData, buffer, __tnParams);\n  }\n\n  static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n    return this.__tnFootprintInternal(__tnParams);\n  }\n\n  static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n    return this.__tnValidateInternal(buffer, __tnParams);\n  }\n\n  static footprintIr(data_data_size: number | bigint): bigint {\n    const params = InstructionData.Params.fromValues({\n      data_data_size: data_data_size,\n    });\n    return this.footprintIrFromParams(params);\n  }\n\n  private static __tnPackParams(params: InstructionData.Params): Record<string, bigint> {\n    const record: Record<string, bigint> = Object.create(null);\n    record[\"data.data_size\"] = params.data_data_size;\n    return record;\n  }\n\n  static footprintIrFromParams(params: InstructionData.Params): bigint {\n    const __tnParams = this.__tnPackParams(params);\n    return this.__tnFootprintInternal(__tnParams);\n  }\n\n  static footprintFromParams(params: InstructionData.Params): number {\n    const irResult = this.footprintIrFromParams(params);\n    const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n    if (__tnBigIntGreaterThan(irResult, maxSafe)) throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for InstructionData');\n    return __tnBigIntToNumber(irResult, 'InstructionData::footprintFromParams');\n  }\n\n  static footprintFromValues(input: { data_data_size: number | bigint }): number {\n    const params = InstructionData.params(input);\n    return this.footprintFromParams(params);\n  }\n\n  static footprint(params: InstructionData.Params): number {\n    return this.footprintFromParams(params);\n  }\n\n  static validate(buffer: Uint8Array, opts?: { params?: InstructionData.Params }): { ok: boolean; code?: string; consumed?: number; params?: InstructionData.Params } {\n    if (!buffer || buffer.length === undefined) {\n      return { ok: false, code: \"tn.invalid_buffer\" };\n    }\n    const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    let params = opts?.params ?? null;\n    if (!params) {\n      const extracted = this.__tnExtractParams(view, buffer);\n      if (!extracted) return { ok: false, code: \"tn.param_extraction_failed\" };\n      params = extracted.params;\n    }\n    const __tnParamsRec = this.__tnPackParams(params);\n    const irResult = this.__tnValidateInternal(buffer, __tnParamsRec);\n    if (!irResult.ok) {\n      return { ok: false, code: irResult.code, consumed: irResult.consumed ? __tnBigIntToNumber(irResult.consumed, 'InstructionData::validate') : undefined, params };\n    }\n    const consumed = irResult.consumed ? __tnBigIntToNumber(irResult.consumed, 'InstructionData::validate') : undefined;\n    return { ok: true, consumed, params };\n  }\n\n  static from_array(buffer: Uint8Array, opts?: { params?: InstructionData.Params }): InstructionData | null {\n    if (!buffer || buffer.length === undefined) {\n      return null;\n    }\n    const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    let params = opts?.params ?? null;\n    if (!params) {\n      const derived = this.__tnExtractParams(view, buffer);\n      if (!derived) return null;\n      params = derived.params;\n    }\n    const validation = this.validate(buffer, { params });\n    if (!validation.ok) {\n      return null;\n    }\n    const cached = validation.params ?? params;\n    const state = new InstructionData(buffer, cached);\n    return state;\n  }\n\n\n}\n\nexport namespace InstructionData {\n  export type Params = {\n    /** ABI path: data.data_size */\n    readonly data_data_size: bigint;\n  };\n\n  export const ParamKeys = Object.freeze({\n    data_data_size: \"data.data_size\",\n  } as const);\n\n  export const Params = {\n    fromValues(input: { data_data_size: number | bigint }): Params {\n      return {\n        data_data_size: __tnToBigInt(input.data_data_size),\n      };\n    },\n    fromBuilder(source: { dynamicParams(): Params } | { params: Params } | Params): Params {\n      if ((source as { dynamicParams?: () => Params }).dynamicParams) {\n        return (source as { dynamicParams(): Params }).dynamicParams();\n      }\n      if ((source as { params?: Params }).params) {\n        return (source as { params: Params }).params;\n      }\n      return source as Params;\n    }\n  };\n\n  export function params(input: { data_data_size: number | bigint }): Params {\n    return Params.fromValues(input);\n  }\n}\n\nexport class InstructionDataBuilder {\n  private buffer: Uint8Array;\n  private view: DataView;\n  private __tnCachedParams: InstructionData.Params | null = null;\n  private __tnLastBuffer: Uint8Array | null = null;\n  private __tnLastParams: InstructionData.Params | null = null;\n  private __tnFam_data: Uint8Array | null = null;\n  private __tnFam_dataCount: number | null = null;\n  private __tnFamWriter_data?: __TnFamWriterResult<InstructionDataBuilder>;\n\n  constructor() {\n    this.buffer = new Uint8Array(10);\n    this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n  }\n\n  private __tnInvalidate(): void {\n    this.__tnCachedParams = null;\n    this.__tnLastBuffer = null;\n    this.__tnLastParams = null;\n  }\n\n  set_program_idx(value: number): this {\n    this.view.setUint16(0, value, true);\n    this.__tnInvalidate();\n    return this;\n  }\n\n  set_data_size(value: bigint): this {\n    const cast = __tnToBigInt(value);\n    this.view.setBigUint64(2, cast, true);\n    this.__tnInvalidate();\n    return this;\n  }\n\n  data(): __TnFamWriterResult<InstructionDataBuilder> {\n    if (!this.__tnFamWriter_data) {\n      this.__tnFamWriter_data = __tnCreateFamWriter(this, \"data\", (payload) => {\n        const bytes = new Uint8Array(payload);\n        const elementCount = bytes.length;\n        this.__tnFam_data = bytes;\n        this.__tnFam_dataCount = elementCount;\n        this.set_data_size(__tnToBigInt(elementCount));\n        this.__tnInvalidate();\n      });\n    }\n    return this.__tnFamWriter_data!;\n  }\n\n  build(): Uint8Array {\n    const params = this.__tnComputeParams();\n    const size = InstructionData.footprintFromParams(params);\n    const buffer = new Uint8Array(size);\n    this.__tnWriteInto(buffer);\n    this.__tnValidateOrThrow(buffer, params);\n    return buffer;\n  }\n\n  buildInto(target: Uint8Array, offset = 0): Uint8Array {\n    const params = this.__tnComputeParams();\n    const size = InstructionData.footprintFromParams(params);\n    if (target.length - offset < size) throw new Error(\"InstructionDataBuilder: target buffer too small\");\n    const slice = target.subarray(offset, offset + size);\n    this.__tnWriteInto(slice);\n    this.__tnValidateOrThrow(slice, params);\n    return target;\n  }\n\n  finish(): InstructionData {\n    const buffer = this.build();\n    const params = this.__tnLastParams ?? this.__tnComputeParams();\n    const view = InstructionData.from_array(buffer, { params });\n    if (!view) throw new Error(\"InstructionDataBuilder: failed to finalize view\");\n    return view;\n  }\n\n  finishView(): InstructionData {\n    return this.finish();\n  }\n\n  dynamicParams(): InstructionData.Params {\n    return this.__tnComputeParams();\n  }\n\n  private __tnComputeParams(): InstructionData.Params {\n    if (this.__tnCachedParams) return this.__tnCachedParams;\n    const params = InstructionData.Params.fromValues({\n      data_data_size: (() => { if (this.__tnFam_dataCount === null) throw new Error(\"InstructionDataBuilder: field 'data' must be written before computing params\"); return __tnToBigInt(this.__tnFam_dataCount); })(),\n    });\n    this.__tnCachedParams = params;\n    return params;\n  }\n\n  private __tnWriteInto(target: Uint8Array): void {\n    target.set(this.buffer, 0);\n    let cursor = this.buffer.length;\n    const __tnLocal_data_bytes = this.__tnFam_data;\n    if (!__tnLocal_data_bytes) throw new Error(\"InstructionDataBuilder: field 'data' must be written before build\");\n    target.set(__tnLocal_data_bytes, cursor);\n    cursor += __tnLocal_data_bytes.length;\n  }\n\n  private __tnValidateOrThrow(buffer: Uint8Array, params: InstructionData.Params): void {\n    const result = InstructionData.validate(buffer, { params });\n    if (!result.ok) {\n      throw new Error(`${ InstructionData }Builder: builder produced invalid buffer (code=${result.code ?? \"unknown\"})`);\n    }\n    this.__tnLastParams = result.params ?? params;\n    this.__tnLastBuffer = buffer;\n  }\n}\n\n__tnRegisterFootprint(\"InstructionData\", (params) => InstructionData.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"InstructionData\", (buffer, params) => InstructionData.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"InstructionData\", (buffer) => { const result = InstructionData.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n\n/* ----- TYPE DEFINITION FOR Pubkey ----- */\n\nconst __tn_ir_Pubkey = {\n  typeName: \"Pubkey\",\n  root: { op: \"const\", value: 32n }\n} as const;\n\nexport class Pubkey {\n  private view: DataView;\n\n  private constructor(private buffer: Uint8Array) {\n    this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n  }\n\n  static __tnCreateView(buffer: Uint8Array, opts?: { fieldContext?: Record<string, number | bigint> }): Pubkey {\n    if (!buffer || buffer.length === undefined) throw new Error(\"Pubkey.__tnCreateView requires a Uint8Array\");\n    return new Pubkey(new Uint8Array(buffer));\n  }\n\n  static builder(): PubkeyBuilder {\n    return new PubkeyBuilder();\n  }\n\n  static fromBuilder(builder: PubkeyBuilder): Pubkey | null {\n    const buffer = builder.build();\n    return Pubkey.from_array(buffer);\n  }\n\n  get_bytes(): number[] {\n    const offset = 0;\n    const result: number[] = [];\n    for (let i = 0; i < 32; i++) {\n      result.push(this.view.getUint8((offset + i * 1)));\n    }\n    return result;\n  }\n\n  set_bytes(value: number[]): void {\n    const offset = 0;\n    if (value.length !== 32) {\n      throw new Error('Array length must be 32');\n    }\n    for (let i = 0; i < 32; i++) {\n      this.view.setUint8((offset + i * 1), value[i]);\n    }\n  }\n\n  get bytes(): number[] {\n    return this.get_bytes();\n  }\n\n  set bytes(value: number[]) {\n    this.set_bytes(value);\n  }\n\n  private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n    return __tnEvalFootprint(__tn_ir_Pubkey.root, { params: __tnParams });\n  }\n\n  private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n    return __tnValidateIrTree(__tn_ir_Pubkey, buffer, __tnParams);\n  }\n\n  static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n    return this.__tnFootprintInternal(__tnParams);\n  }\n\n  static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n    return this.__tnValidateInternal(buffer, __tnParams);\n  }\n\n  static footprintIr(): bigint {\n    return this.__tnFootprintInternal(Object.create(null));\n  }\n\n  static footprint(): number {\n    const irResult = this.footprintIr();\n      const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n    if (__tnBigIntGreaterThan(irResult, maxSafe)) {\n      throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for Pubkey');\n    }\n    return __tnBigIntToNumber(irResult, 'Pubkey::footprint');\n  }\n\n  static validate(buffer: Uint8Array, _opts?: { params?: never }): { ok: boolean; code?: string; consumed?: number } {\n    if (buffer.length < 32) return { ok: false, code: \"tn.buffer_too_small\", consumed: 32 };\n    return { ok: true, consumed: 32 };\n  }\n\n  static from_array(buffer: Uint8Array): Pubkey | null {\n    if (!buffer || buffer.length === undefined) {\n      return null;\n    }\n    const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    const validation = this.validate(buffer);\n    if (!validation.ok) {\n      return null;\n    }\n    return new Pubkey(buffer);\n  }\n\n}\n\nexport class PubkeyBuilder {\n  private buffer: Uint8Array;\n  private view: DataView;\n\n  constructor() {\n    this.buffer = new Uint8Array(32);\n    this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n  }\n\n  set_bytes(values: number[]): this {\n    if (values.length !== 32) throw new Error(\"bytes expects 32 elements\");\n    for (let i = 0; i < values.length; i++) {\n      const byteOffset = 0 + i * 1;\n      this.view.setUint8(byteOffset, values[i]);\n    }\n    return this;\n  }\n\n  build(): Uint8Array {\n    return this.buffer.slice();\n  }\n\n  buildInto(target: Uint8Array, offset = 0): Uint8Array {\n    if (target.length - offset < this.buffer.length) throw new Error(\"target buffer too small\");\n    target.set(this.buffer, offset);\n    return target;\n  }\n\n  finish(): Pubkey {\n    const view = Pubkey.from_array(this.buffer.slice());\n    if (!view) throw new Error(\"failed to build Pubkey\");\n    return view;\n  }\n}\n\n__tnRegisterFootprint(\"Pubkey\", (params) => Pubkey.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"Pubkey\", (buffer, params) => Pubkey.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"Pubkey\", (buffer) => { const result = Pubkey.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n\n/* ----- TYPE DEFINITION FOR Signature ----- */\n\nconst __tn_ir_Signature = {\n  typeName: \"Signature\",\n  root: { op: \"const\", value: 64n }\n} as const;\n\nexport class Signature {\n  private view: DataView;\n\n  private constructor(private buffer: Uint8Array) {\n    this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n  }\n\n  static __tnCreateView(buffer: Uint8Array, opts?: { fieldContext?: Record<string, number | bigint> }): Signature {\n    if (!buffer || buffer.length === undefined) throw new Error(\"Signature.__tnCreateView requires a Uint8Array\");\n    return new Signature(new Uint8Array(buffer));\n  }\n\n  static builder(): SignatureBuilder {\n    return new SignatureBuilder();\n  }\n\n  static fromBuilder(builder: SignatureBuilder): Signature | null {\n    const buffer = builder.build();\n    return Signature.from_array(buffer);\n  }\n\n  get_bytes(): number[] {\n    const offset = 0;\n    const result: number[] = [];\n    for (let i = 0; i < 64; i++) {\n      result.push(this.view.getUint8((offset + i * 1)));\n    }\n    return result;\n  }\n\n  set_bytes(value: number[]): void {\n    const offset = 0;\n    if (value.length !== 64) {\n      throw new Error('Array length must be 64');\n    }\n    for (let i = 0; i < 64; i++) {\n      this.view.setUint8((offset + i * 1), value[i]);\n    }\n  }\n\n  get bytes(): number[] {\n    return this.get_bytes();\n  }\n\n  set bytes(value: number[]) {\n    this.set_bytes(value);\n  }\n\n  private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n    return __tnEvalFootprint(__tn_ir_Signature.root, { params: __tnParams });\n  }\n\n  private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n    return __tnValidateIrTree(__tn_ir_Signature, buffer, __tnParams);\n  }\n\n  static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n    return this.__tnFootprintInternal(__tnParams);\n  }\n\n  static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n    return this.__tnValidateInternal(buffer, __tnParams);\n  }\n\n  static footprintIr(): bigint {\n    return this.__tnFootprintInternal(Object.create(null));\n  }\n\n  static footprint(): number {\n    const irResult = this.footprintIr();\n      const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n    if (__tnBigIntGreaterThan(irResult, maxSafe)) {\n      throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for Signature');\n    }\n    return __tnBigIntToNumber(irResult, 'Signature::footprint');\n  }\n\n  static validate(buffer: Uint8Array, _opts?: { params?: never }): { ok: boolean; code?: string; consumed?: number } {\n    if (buffer.length < 64) return { ok: false, code: \"tn.buffer_too_small\", consumed: 64 };\n    return { ok: true, consumed: 64 };\n  }\n\n  static from_array(buffer: Uint8Array): Signature | null {\n    if (!buffer || buffer.length === undefined) {\n      return null;\n    }\n    const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    const validation = this.validate(buffer);\n    if (!validation.ok) {\n      return null;\n    }\n    return new Signature(buffer);\n  }\n\n}\n\nexport class SignatureBuilder {\n  private buffer: Uint8Array;\n  private view: DataView;\n\n  constructor() {\n    this.buffer = new Uint8Array(64);\n    this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n  }\n\n  set_bytes(values: number[]): this {\n    if (values.length !== 64) throw new Error(\"bytes expects 64 elements\");\n    for (let i = 0; i < values.length; i++) {\n      const byteOffset = 0 + i * 1;\n      this.view.setUint8(byteOffset, values[i]);\n    }\n    return this;\n  }\n\n  build(): Uint8Array {\n    return this.buffer.slice();\n  }\n\n  buildInto(target: Uint8Array, offset = 0): Uint8Array {\n    if (target.length - offset < this.buffer.length) throw new Error(\"target buffer too small\");\n    target.set(this.buffer, offset);\n    return target;\n  }\n\n  finish(): Signature {\n    const view = Signature.from_array(this.buffer.slice());\n    if (!view) throw new Error(\"failed to build Signature\");\n    return view;\n  }\n}\n\n__tnRegisterFootprint(\"Signature\", (params) => Signature.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"Signature\", (buffer, params) => Signature.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"Signature\", (buffer) => { const result = Signature.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n\n/* ----- TYPE DEFINITION FOR Timestamp ----- */\n\nconst __tn_ir_Timestamp = {\n  typeName: \"Timestamp\",\n  root: { op: \"const\", value: 8n }\n} as const;\n\nexport class Timestamp {\n  private view: DataView;\n\n  private constructor(private buffer: Uint8Array) {\n    this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n  }\n\n  static __tnCreateView(buffer: Uint8Array, opts?: { fieldContext?: Record<string, number | bigint> }): Timestamp {\n    if (!buffer || buffer.length === undefined) throw new Error(\"Timestamp.__tnCreateView requires a Uint8Array\");\n    return new Timestamp(new Uint8Array(buffer));\n  }\n\n  static builder(): TimestampBuilder {\n    return new TimestampBuilder();\n  }\n\n  static fromBuilder(builder: TimestampBuilder): Timestamp | null {\n    const buffer = builder.build();\n    return Timestamp.from_array(buffer);\n  }\n\n  get_seconds(): bigint {\n    const offset = 0;\n    return this.view.getBigInt64(offset, true); /* little-endian */\n  }\n\n  set_seconds(value: bigint): void {\n    const offset = 0;\n    this.view.setBigInt64(offset, value, true); /* little-endian */\n  }\n\n  get seconds(): bigint {\n    return this.get_seconds();\n  }\n\n  set seconds(value: bigint) {\n    this.set_seconds(value);\n  }\n\n  private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n    return __tnEvalFootprint(__tn_ir_Timestamp.root, { params: __tnParams });\n  }\n\n  private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n    return __tnValidateIrTree(__tn_ir_Timestamp, buffer, __tnParams);\n  }\n\n  static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n    return this.__tnFootprintInternal(__tnParams);\n  }\n\n  static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n    return this.__tnValidateInternal(buffer, __tnParams);\n  }\n\n  static footprintIr(): bigint {\n    return this.__tnFootprintInternal(Object.create(null));\n  }\n\n  static footprint(): number {\n    const irResult = this.footprintIr();\n      const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n    if (__tnBigIntGreaterThan(irResult, maxSafe)) {\n      throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for Timestamp');\n    }\n    return __tnBigIntToNumber(irResult, 'Timestamp::footprint');\n  }\n\n  static validate(buffer: Uint8Array, _opts?: { params?: never }): { ok: boolean; code?: string; consumed?: number } {\n    if (buffer.length < 8) return { ok: false, code: \"tn.buffer_too_small\", consumed: 8 };\n    return { ok: true, consumed: 8 };\n  }\n\n  static new(seconds: bigint): Timestamp {\n    const buffer = new Uint8Array(8);\n    const view = new DataView(buffer.buffer);\n\n    let offset = 0;\n    view.setBigInt64(0, seconds, true); /* seconds (little-endian) */\n\n    return new Timestamp(buffer);\n  }\n\n  static from_array(buffer: Uint8Array): Timestamp | null {\n    if (!buffer || buffer.length === undefined) {\n      return null;\n    }\n    const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    const validation = this.validate(buffer);\n    if (!validation.ok) {\n      return null;\n    }\n    return new Timestamp(buffer);\n  }\n\n}\n\nexport class TimestampBuilder {\n  private buffer: Uint8Array;\n  private view: DataView;\n\n  constructor() {\n    this.buffer = new Uint8Array(8);\n    this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n  }\n\n  set_seconds(value: bigint): this {\n    const cast = __tnToBigInt(value);\n    this.view.setBigInt64(0, cast, true);\n    return this;\n  }\n\n  build(): Uint8Array {\n    return this.buffer.slice();\n  }\n\n  buildInto(target: Uint8Array, offset = 0): Uint8Array {\n    if (target.length - offset < this.buffer.length) throw new Error(\"target buffer too small\");\n    target.set(this.buffer, offset);\n    return target;\n  }\n\n  finish(): Timestamp {\n    const view = Timestamp.from_array(this.buffer.slice());\n    if (!view) throw new Error(\"failed to build Timestamp\");\n    return view;\n  }\n}\n\n__tnRegisterFootprint(\"Timestamp\", (params) => Timestamp.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"Timestamp\", (buffer, params) => Timestamp.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"Timestamp\", (buffer) => { const result = Timestamp.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n","/* Auto-generated TypeScript code */\n/* WARNING: Do not modify this file directly. It is generated from ABI definitions. */\n\nimport { Hash, Pubkey } from \"../../common/primitives/types\";\n\ntype __TnIrNode =\n  | { readonly op: \"zero\" }\n  | { readonly op: \"const\"; readonly value: bigint }\n  | { readonly op: \"field\"; readonly param: string }\n  | {\n      readonly op: \"add\";\n      readonly left: __TnIrNode;\n      readonly right: __TnIrNode;\n    }\n  | {\n      readonly op: \"sub\";\n      readonly left: __TnIrNode;\n      readonly right: __TnIrNode;\n    }\n  | {\n      readonly op: \"mul\";\n      readonly left: __TnIrNode;\n      readonly right: __TnIrNode;\n    }\n  | {\n      readonly op:\n        | \"div\"\n        | \"mod\"\n        | \"bitAnd\"\n        | \"bitOr\"\n        | \"bitXor\"\n        | \"leftShift\"\n        | \"rightShift\";\n      readonly left: __TnIrNode;\n      readonly right: __TnIrNode;\n    }\n  | {\n      readonly op: \"align\";\n      readonly alignment: number;\n      readonly node: __TnIrNode;\n    }\n  | {\n      readonly op: \"switch\";\n      readonly tag: string;\n      readonly cases: readonly { readonly value: number; readonly node: __TnIrNode }[];\n      readonly default?: __TnIrNode;\n    }\n  | {\n      readonly op: \"call\";\n      readonly typeName: string;\n      readonly args: readonly { readonly name: string; readonly source: string }[];\n    }\n  | {\n      readonly op: \"sumOverArray\";\n      readonly count: __TnIrNode;\n      readonly elementTypeName: string;\n      readonly fieldName: string;\n    };\n\ntype __TnIrContext = {\n  params: Record<string, bigint>;\n  buffer?: Uint8Array;\n  typeName?: string;\n};\n\ntype __TnValidateResult = {\n  ok: boolean;\n  code?: string;\n  consumed?: bigint;\n  params?: Record<string, bigint>;\n};\ntype __TnEvalResult =\n  | { ok: true; value: bigint }\n  | { ok: false; code: string };\ntype __TnBuilderLike = { build(): Uint8Array };\ntype __TnStructFieldInput =\n  | Uint8Array\n  | __TnBuilderLike\n  | { buffer?: Uint8Array }\n  | { asUint8Array?: () => Uint8Array }\n  | { bytes?: () => Uint8Array };\ntype __TnVariantDescriptor = {\n  readonly name: string;\n  readonly tag: number;\n  readonly payloadSize: number | null;\n  readonly payloadType?: string;\n  readonly createPayloadBuilder?: () => unknown | null;\n};\ntype __TnVariantSelectorResult<Parent> = {\n  select(\n    name: string\n  ): { writePayload(payload: Uint8Array | __TnBuilderLike): { finish(): Parent } };\n  finish(): Parent;\n};\ntype __TnFamWriterResult<Parent> = {\n  write(payload: Uint8Array | __TnBuilderLike): { finish(): Parent };\n  finish(): Parent;\n};\ntype __TnConsole = { warn?: (...args: unknown[]) => void };\n\nconst __tnWarnings = new Set<string>();\nconst __tnHasNativeBigInt = typeof BigInt === \"function\";\nconst __tnHasBigIntDataView =\n  typeof DataView !== \"undefined\" &&\n  typeof DataView.prototype.getBigInt64 === \"function\" &&\n  typeof DataView.prototype.getBigUint64 === \"function\" &&\n  typeof DataView.prototype.setBigInt64 === \"function\" &&\n  typeof DataView.prototype.setBigUint64 === \"function\";\nconst __tnConsole: __TnConsole | undefined =\n  typeof globalThis !== \"undefined\"\n    ? (globalThis as { console?: __TnConsole }).console\n    : undefined;\n\nfunction __tnLogWarn(message: string): void {\n  if (__tnConsole && typeof __tnConsole.warn === \"function\") {\n    __tnConsole.warn(message);\n  }\n}\n\nfunction __tnWarnOnce(message: string): void {\n  if (!__tnWarnings.has(message)) {\n    __tnWarnings.add(message);\n    __tnLogWarn(message);\n  }\n}\n\nfunction __tnResolveBuilderInput(\n  input: Uint8Array | __TnBuilderLike,\n  context: string\n): Uint8Array {\n  if (input instanceof Uint8Array) {\n    return new Uint8Array(input);\n  }\n  if (input && typeof (input as __TnBuilderLike).build === \"function\") {\n    const built = (input as __TnBuilderLike).build();\n    if (!(built instanceof Uint8Array)) {\n      throw new Error(`${context}: builder did not return Uint8Array`);\n    }\n    return new Uint8Array(built);\n  }\n  throw new Error(`${context}: expected Uint8Array or builder`);\n}\n\nfunction __tnResolveStructFieldInput(\n  input: __TnStructFieldInput,\n  context: string\n): Uint8Array {\n  if (\n    input instanceof Uint8Array ||\n    (input && typeof (input as __TnBuilderLike).build === \"function\")\n  ) {\n    return __tnResolveBuilderInput(input as Uint8Array | __TnBuilderLike, context);\n  }\n  if (input && typeof (input as { asUint8Array?: () => Uint8Array }).asUint8Array === \"function\") {\n    const bytes = (input as { asUint8Array: () => Uint8Array }).asUint8Array();\n    return new Uint8Array(bytes);\n  }\n  if (input && typeof (input as { bytes?: () => Uint8Array }).bytes === \"function\") {\n    const bytes = (input as { bytes: () => Uint8Array }).bytes();\n    return new Uint8Array(bytes);\n  }\n  if (input && (input as { buffer?: unknown }).buffer instanceof Uint8Array) {\n    return new Uint8Array((input as { buffer: Uint8Array }).buffer);\n  }\n  throw new Error(`${context}: expected Uint8Array, builder, or view-like value`);\n}\n\nfunction __tnMaybeCallBuilder(ctor: unknown): unknown | null {\n  if (!ctor) {\n    return null;\n  }\n  const builderFn = (ctor as { builder?: () => unknown }).builder;\n  return typeof builderFn === \"function\" ? builderFn() : null;\n}\n\nfunction __tnCreateVariantSelector<Parent, Descriptor extends __TnVariantDescriptor>(\n  parent: Parent,\n  descriptors: readonly Descriptor[],\n  assign: (descriptor: Descriptor, payload: Uint8Array) => void\n): __TnVariantSelectorResult<Parent> {\n  return {\n    select(name: string) {\n      const descriptor = descriptors.find((variant) => variant.name === name);\n      if (!descriptor) {\n        throw new Error(`Unknown variant '${name}'`);\n      }\n      return {\n        writePayload(payload: Uint8Array | __TnBuilderLike) {\n          const bytes = __tnResolveBuilderInput(\n            payload,\n            `variant ${descriptor.name}`\n          );\n          if (\n            descriptor.payloadSize !== null &&\n            bytes.length !== descriptor.payloadSize\n          ) {\n            throw new Error(\n              `Payload for ${descriptor.name} must be ${descriptor.payloadSize} bytes`\n            );\n          }\n          assign(descriptor, bytes);\n          return {\n            finish(): Parent {\n              return parent;\n            },\n          };\n        },\n      };\n    },\n    finish(): Parent {\n      return parent;\n    },\n  };\n}\n\nfunction __tnCreateFamWriter<Parent>(\n  parent: Parent,\n  fieldName: string,\n  assign: (bytes: Uint8Array) => void\n): __TnFamWriterResult<Parent> {\n  let hasWritten = false;\n  return {\n    write(payload: Uint8Array | __TnBuilderLike) {\n      const bytes = __tnResolveBuilderInput(\n        payload,\n        `flexible array '${fieldName}'`\n      );\n      const copy = new Uint8Array(bytes);\n      assign(copy);\n      hasWritten = true;\n      return {\n        finish(): Parent {\n          return parent;\n        },\n      };\n    },\n    finish(): Parent {\n      if (!hasWritten) {\n        throw new Error(\n          `flexible array '${fieldName}' requires write() before finish()`\n        );\n      }\n      return parent;\n    },\n  };\n}\n\nconst __tnMask32 = __tnHasNativeBigInt\n  ? (BigInt(1) << BigInt(32)) - BigInt(1)\n  : 0xffffffff;\nconst __tnSignBit32 = __tnHasNativeBigInt\n  ? BigInt(1) << BigInt(31)\n  : 0x80000000;\n\nfunction __tnToBigInt(value: number | bigint): bigint {\n  if (__tnHasNativeBigInt) {\n    return typeof value === \"bigint\" ? value : BigInt(value);\n  }\n  if (typeof value === \"bigint\") return value;\n  if (!Number.isFinite(value)) {\n    throw new Error(\"IR runtime received non-finite numeric input\");\n  }\n  if (!Number.isSafeInteger(value)) {\n    __tnWarnOnce(\n      `[thru-net] Precision loss while polyfilling BigInt (value=${value})`\n    );\n  }\n  return (value as unknown) as bigint;\n}\n\nfunction __tnBigIntToNumber(value: bigint, context: string): number {\n  if (__tnHasNativeBigInt) {\n    const converted = Number(value);\n    if (!Number.isFinite(converted)) {\n      throw new Error(`${context} overflowed Number range`);\n    }\n    return converted;\n  }\n  return value as unknown as number;\n}\n\nfunction __tnBigIntEquals(lhs: bigint, rhs: bigint): boolean {\n  if (__tnHasNativeBigInt) return lhs === rhs;\n  return (lhs as unknown as number) === (rhs as unknown as number);\n}\n\nfunction __tnBigIntGreaterThan(lhs: bigint, rhs: bigint): boolean {\n  if (__tnHasNativeBigInt) return lhs > rhs;\n  return (lhs as unknown as number) > (rhs as unknown as number);\n}\n\nfunction __tnPopcount(value: number | bigint): number {\n  let v =\n    typeof value === \"bigint\"\n      ? Number(value & BigInt(0xffffffff))\n      : Number(value) >>> 0;\n  v = v - ((v >>> 1) & 0x55555555);\n  v = (v & 0x33333333) + ((v >>> 2) & 0x33333333);\n  return (((v + (v >>> 4)) & 0x0f0f0f0f) * 0x01010101) >>> 24;\n}\n\nfunction __tnRaiseIrError(code: string, message: string): never {\n  const err = new Error(message);\n  (err as { code?: string }).code = code;\n  throw err;\n}\n\nfunction __tnCheckedAdd(lhs: bigint, rhs: bigint): bigint {\n  if (__tnHasNativeBigInt) {\n    const result = (lhs as bigint) + (rhs as bigint);\n    if (result < BigInt(0)) {\n      __tnRaiseIrError(\n        \"tn.ir.overflow\",\n        \"IR runtime detected negative size via addition\"\n      );\n    }\n    return result;\n  }\n  const left = lhs as unknown as number;\n  const right = rhs as unknown as number;\n  const sum = left + right;\n  if (sum < 0 || !Number.isFinite(sum)) {\n    __tnRaiseIrError(\n      \"tn.ir.overflow\",\n      \"IR runtime detected invalid addition result\"\n    );\n  }\n  if (!Number.isSafeInteger(sum)) {\n    __tnWarnOnce(\"[thru-net] Precision loss while polyfilling BigInt addition\");\n  }\n  return (sum as unknown) as bigint;\n}\n\nfunction __tnCheckedSub(lhs: bigint, rhs: bigint): bigint {\n  if (__tnHasNativeBigInt) {\n    const result = (lhs as bigint) - (rhs as bigint);\n    if (result < BigInt(0)) {\n      __tnRaiseIrError(\n        \"tn.ir.overflow\",\n        \"IR runtime detected negative size via subtraction\"\n      );\n    }\n    return result;\n  }\n  const left = lhs as unknown as number;\n  const right = rhs as unknown as number;\n  const diff = left - right;\n  if (diff < 0 || !Number.isFinite(diff)) {\n    __tnRaiseIrError(\n      \"tn.ir.overflow\",\n      \"IR runtime detected invalid subtraction result\"\n    );\n  }\n  if (!Number.isSafeInteger(diff)) {\n    __tnWarnOnce(\"[thru-net] Precision loss while polyfilling BigInt subtraction\");\n  }\n  return (diff as unknown) as bigint;\n}\n\nfunction __tnCheckedMul(lhs: bigint, rhs: bigint): bigint {\n  if (__tnHasNativeBigInt) {\n    const result = (lhs as bigint) * (rhs as bigint);\n    if (result < BigInt(0)) {\n      __tnRaiseIrError(\n        \"tn.ir.overflow\",\n        \"IR runtime detected negative size via multiplication\"\n      );\n    }\n    return result;\n  }\n  const left = lhs as unknown as number;\n  const right = rhs as unknown as number;\n  const product = left * right;\n  if (product < 0 || !Number.isFinite(product)) {\n    __tnRaiseIrError(\n      \"tn.ir.overflow\",\n      \"IR runtime detected invalid multiplication result\"\n    );\n  }\n  if (!Number.isSafeInteger(product)) {\n    __tnWarnOnce(\n      \"[thru-net] Precision loss while polyfilling BigInt multiplication\"\n    );\n  }\n  return (product as unknown) as bigint;\n}\n\nfunction __tnCheckedDiv(lhs: bigint, rhs: bigint): bigint {\n  if (__tnBigIntEquals(rhs, __tnToBigInt(0))) {\n    __tnRaiseIrError(\"tn.ir.overflow\", \"IR runtime division by zero\");\n  }\n  if (__tnHasNativeBigInt) return (lhs as bigint) / (rhs as bigint);\n  const quotient = Math.floor((lhs as unknown as number) / (rhs as unknown as number));\n  return (quotient as unknown) as bigint;\n}\n\nfunction __tnCheckedMod(lhs: bigint, rhs: bigint): bigint {\n  if (__tnBigIntEquals(rhs, __tnToBigInt(0))) {\n    __tnRaiseIrError(\"tn.ir.overflow\", \"IR runtime modulo by zero\");\n  }\n  if (__tnHasNativeBigInt) return (lhs as bigint) % (rhs as bigint);\n  return (((lhs as unknown as number) % (rhs as unknown as number)) as unknown) as bigint;\n}\n\nfunction __tnBitwise(\n  lhs: bigint,\n  rhs: bigint,\n  op: \"and\" | \"or\" | \"xor\"\n): bigint {\n  if (__tnHasNativeBigInt) {\n    if (op === \"and\") return (lhs as bigint) & (rhs as bigint);\n    if (op === \"or\") return (lhs as bigint) | (rhs as bigint);\n    return (lhs as bigint) ^ (rhs as bigint);\n  }\n  const left = lhs as unknown as number;\n  const right = rhs as unknown as number;\n  const maxU32 = 0xffffffff;\n  if (\n    !Number.isInteger(left) ||\n    !Number.isInteger(right) ||\n    left < 0 ||\n    right < 0 ||\n    left > maxU32 ||\n    right > maxU32\n  ) {\n    __tnRaiseIrError(\n      \"tn.ir.overflow\",\n      \"IR runtime bitwise operation requires BigInt for values outside u32 range\"\n    );\n  }\n  const result = op === \"and\" ? left & right : op === \"or\" ? left | right : left ^ right;\n  return ((result >>> 0) as unknown) as bigint;\n}\n\nfunction __tnCheckedShift(\n  lhs: bigint,\n  rhs: bigint,\n  direction: \"left\" | \"right\"\n): bigint {\n  const amount = __tnBigIntToNumber(rhs, \"IR shift amount\");\n  if (amount < 0 || amount >= 64 || !Number.isInteger(amount)) {\n    __tnRaiseIrError(\"tn.ir.overflow\", \"IR runtime invalid shift amount\");\n  }\n  if (__tnHasNativeBigInt) {\n    const shift = BigInt(amount);\n    return direction === \"left\" ? (lhs as bigint) << shift : (lhs as bigint) >> shift;\n  }\n  const value = lhs as unknown as number;\n  const result = direction === \"left\" ? value * 2 ** amount : Math.floor(value / 2 ** amount);\n  if (!Number.isSafeInteger(result)) {\n    __tnWarnOnce(\"[thru-net] Precision loss while polyfilling BigInt shift\");\n  }\n  return (result as unknown) as bigint;\n}\n\nfunction __tnAlign(value: bigint, alignment: number): bigint {\n  if (alignment <= 1) return value;\n  const alignBig = __tnToBigInt(alignment);\n  if (__tnHasNativeBigInt) {\n    const remainder = value % alignBig;\n    if (__tnBigIntEquals(remainder, __tnToBigInt(0))) {\n      return value;\n    }\n    const delta = alignBig - remainder;\n    return __tnCheckedAdd(value, delta);\n  }\n  const current = __tnBigIntToNumber(value, \"IR align\");\n  const alignNum = alignment >>> 0;\n  const remainder = current % alignNum;\n  const next = remainder === 0 ? current : current + (alignNum - remainder);\n  return __tnToBigInt(next);\n}\n\nfunction __tnSplitUint64(value: bigint): { high: number; low: number } {\n  if (__tnHasNativeBigInt) {\n    const low = Number(value & (__tnMask32 as bigint));\n    const high = Number((value >> BigInt(32)) & (__tnMask32 as bigint));\n    return { high, low };\n  }\n  const num = __tnBigIntToNumber(value, \"DataView.setBigUint64\");\n  const low = num >>> 0;\n  const high = Math.floor(num / 4294967296) >>> 0;\n  return { high, low };\n}\n\nfunction __tnSplitInt64(value: bigint): { high: number; low: number } {\n  if (__tnHasNativeBigInt) {\n    const low = Number(value & (__tnMask32 as bigint));\n    let high = Number((value >> BigInt(32)) & (__tnMask32 as bigint));\n    if ((BigInt(high) & (__tnSignBit32 as bigint)) !== BigInt(0)) {\n      high -= 0x100000000;\n    }\n    return { high, low };\n  }\n  const num = __tnBigIntToNumber(value, \"DataView.setBigInt64\");\n  const low = num >>> 0;\n  const high = Math.floor(num / 4294967296);\n  return { high, low };\n}\n\nfunction __tnPolyfillReadUint64(\n  view: DataView,\n  offset: number,\n  littleEndian: boolean\n): bigint {\n  const low = littleEndian\n    ? view.getUint32(offset, true)\n    : view.getUint32(offset + 4, false);\n  const high = littleEndian\n    ? view.getUint32(offset + 4, true)\n    : view.getUint32(offset, false);\n  if (__tnHasNativeBigInt) {\n    return (BigInt(high) << BigInt(32)) | BigInt(low);\n  }\n  const value = high * 4294967296 + low;\n  if (!Number.isSafeInteger(value)) {\n    __tnWarnOnce(\n      \"[thru-net] Precision loss while polyfilling DataView.getBigUint64\"\n    );\n  }\n  return (value as unknown) as bigint;\n}\n\nfunction __tnPolyfillReadInt64(\n  view: DataView,\n  offset: number,\n  littleEndian: boolean\n): bigint {\n  const low = littleEndian\n    ? view.getUint32(offset, true)\n    : view.getUint32(offset + 4, false);\n  const high = littleEndian\n    ? view.getInt32(offset + 4, true)\n    : view.getInt32(offset, false);\n  if (__tnHasNativeBigInt) {\n    return (BigInt(high) << BigInt(32)) | BigInt(low);\n  }\n  const value = high * 4294967296 + low;\n  if (!Number.isSafeInteger(value)) {\n    __tnWarnOnce(\n      \"[thru-net] Precision loss while polyfilling DataView.getBigInt64\"\n    );\n  }\n  return (value as unknown) as bigint;\n}\n\nfunction __tnPolyfillWriteUint64(\n  view: DataView,\n  offset: number,\n  value: bigint,\n  littleEndian: boolean\n): void {\n  const parts = __tnSplitUint64(value);\n  if (littleEndian) {\n    view.setUint32(offset, parts.low, true);\n    view.setUint32(offset + 4, parts.high, true);\n  } else {\n    view.setUint32(offset, parts.high, false);\n    view.setUint32(offset + 4, parts.low, false);\n  }\n}\n\nfunction __tnPolyfillWriteInt64(\n  view: DataView,\n  offset: number,\n  value: bigint,\n  littleEndian: boolean\n): void {\n  const parts = __tnSplitInt64(value);\n  if (littleEndian) {\n    view.setUint32(offset, parts.low >>> 0, true);\n    view.setInt32(offset + 4, parts.high | 0, true);\n  } else {\n    view.setInt32(offset, parts.high | 0, false);\n    view.setUint32(offset + 4, parts.low >>> 0, false);\n  }\n}\n\nif (typeof DataView !== \"undefined\" && !__tnHasBigIntDataView) {\n  const proto = DataView.prototype as unknown as Record<string, unknown>;\n  if (typeof proto.getBigUint64 !== \"function\") {\n    (proto as any).getBigUint64 = function (\n      offset: number,\n      littleEndian?: boolean\n    ): bigint {\n      __tnWarnOnce(\n        \"[thru-net] Polyfilling DataView.getBigUint64; precision may be lost\"\n      );\n      return __tnPolyfillReadUint64(this, offset, !!littleEndian);\n    };\n  }\n  if (typeof proto.getBigInt64 !== \"function\") {\n    (proto as any).getBigInt64 = function (\n      offset: number,\n      littleEndian?: boolean\n    ): bigint {\n      __tnWarnOnce(\n        \"[thru-net] Polyfilling DataView.getBigInt64; precision may be lost\"\n      );\n      return __tnPolyfillReadInt64(this, offset, !!littleEndian);\n    };\n  }\n  if (typeof proto.setBigUint64 !== \"function\") {\n    (proto as any).setBigUint64 = function (\n      offset: number,\n      value: bigint,\n      littleEndian?: boolean\n    ): void {\n      __tnWarnOnce(\n        \"[thru-net] Polyfilling DataView.setBigUint64; precision may be lost\"\n      );\n      __tnPolyfillWriteUint64(this, offset, value, !!littleEndian);\n    };\n  }\n  if (typeof proto.setBigInt64 !== \"function\") {\n    (proto as any).setBigInt64 = function (\n      offset: number,\n      value: bigint,\n      littleEndian?: boolean\n    ): void {\n      __tnWarnOnce(\n        \"[thru-net] Polyfilling DataView.setBigInt64; precision may be lost\"\n      );\n      __tnPolyfillWriteInt64(this, offset, value, !!littleEndian);\n    };\n  }\n  if (!__tnHasNativeBigInt) {\n    __tnWarnOnce(\n      \"[thru-net] BigInt is unavailable; falling back to lossy 64-bit polyfill\"\n    );\n  }\n}\n\nconst __tnFootprintRegistry: Record<\n  string,\n  (params: Record<string, bigint>) => bigint\n> = {};\nconst __tnValidateRegistry: Record<\n  string,\n  (buffer: Uint8Array, params: Record<string, bigint>) => __TnValidateResult\n> = {};\nconst __tnDynamicValidateRegistry: Record<\n  string,\n  (buffer: Uint8Array) => __TnValidateResult\n> = {};\n\nfunction __tnRegisterFootprint(\n  typeName: string,\n  fn: (params: Record<string, bigint>) => bigint\n): void {\n  __tnFootprintRegistry[typeName] = fn;\n}\n\nfunction __tnRegisterValidate(\n  typeName: string,\n  fn: (buffer: Uint8Array, params: Record<string, bigint>) => __TnValidateResult\n): void {\n  __tnValidateRegistry[typeName] = fn;\n}\n\nfunction __tnRegisterDynamicValidate(\n  typeName: string,\n  fn: (buffer: Uint8Array) => __TnValidateResult\n): void {\n  __tnDynamicValidateRegistry[typeName] = fn;\n}\n\nfunction __tnInvokeFootprint(\n  typeName: string,\n  params: Record<string, bigint>\n): bigint {\n  const fn = __tnFootprintRegistry[typeName];\n  if (!fn) throw new Error(`IR runtime missing footprint for ${typeName}`);\n  return fn(params);\n}\n\nfunction __tnInvokeValidate(\n  typeName: string,\n  buffer: Uint8Array,\n  params: Record<string, bigint>\n): __TnValidateResult {\n  const fn = __tnValidateRegistry[typeName];\n  if (!fn) throw new Error(`IR runtime missing validate helper for ${typeName}`);\n  return fn(buffer, params);\n}\n\nfunction __tnInvokeDynamicValidate(\n  typeName: string,\n  buffer: Uint8Array\n): __TnValidateResult {\n  const fn = __tnDynamicValidateRegistry[typeName];\n  if (!fn) throw new Error(`IR runtime missing dynamic validate helper for ${typeName}`);\n  return fn(buffer);\n}\n\nfunction __tnEvalFootprint(node: __TnIrNode, ctx: __TnIrContext): bigint {\n  return __tnEvalIrNode(node, ctx, __tnToBigInt(0));\n}\n\nfunction __tnTryEvalFootprint(\n  node: __TnIrNode,\n  ctx: __TnIrContext\n): __TnEvalResult {\n  return __tnTryEvalIr(node, ctx);\n}\n\nfunction __tnTryEvalIr(\n  node: __TnIrNode,\n  ctx: __TnIrContext\n): __TnEvalResult {\n  try {\n    return { ok: true, value: __tnEvalIrNode(node, ctx, __tnToBigInt(0)) };\n  } catch (err) {\n    return { ok: false, code: __tnNormalizeIrError(err) };\n  }\n}\n\nfunction __tnIsEvalError(result: __TnEvalResult): result is { ok: false; code: string } {\n  return result.ok === false;\n}\n\nfunction __tnValidateIrTree(\n  ir: { readonly typeName: string; readonly root: __TnIrNode },\n  buffer: Uint8Array,\n  params: Record<string, bigint>\n): __TnValidateResult {\n  const evalResult = __tnTryEvalIr(ir.root, {\n    params,\n    buffer,\n    typeName: ir.typeName,\n  });\n  if (__tnIsEvalError(evalResult)) {\n    return { ok: false, code: evalResult.code };\n  }\n  const required = evalResult.value;\n  const available = __tnToBigInt(buffer.length);\n  if (__tnBigIntGreaterThan(required, available)) {\n    return { ok: false, code: \"tn.buffer_too_small\", consumed: required };\n  }\n  return { ok: true, consumed: required };\n}\n\nfunction __tnEvalIrNode(\n  node: __TnIrNode,\n  ctx: __TnIrContext,\n  baseOffset: bigint\n): bigint {\n  switch (node.op) {\n    case \"zero\":\n      return __tnToBigInt(0);\n    case \"const\":\n      return node.value;\n    case \"field\": {\n      if (node.param === \"__buffer_size\" && ctx.buffer) {\n        return __tnToBigInt(ctx.buffer.length);\n      }\n      const val = ctx.params[node.param];\n      if (val === undefined) {\n        const prefix = ctx.typeName ? `${ctx.typeName}: ` : \"\";\n        __tnRaiseIrError(\n          \"tn.ir.missing_param\",\n          `${prefix}Missing IR parameter '${node.param}'`\n        );\n      }\n      return val;\n    }\n    case \"add\":\n      {\n        const left = __tnEvalIrNode(node.left, ctx, baseOffset);\n        const right = __tnEvalIrNode(\n          node.right,\n          ctx,\n          __tnCheckedAdd(baseOffset, left)\n        );\n        return __tnCheckedAdd(left, right);\n      }\n    case \"sub\":\n      return __tnCheckedSub(\n        __tnEvalIrNode(node.left, ctx, baseOffset),\n        __tnEvalIrNode(node.right, ctx, baseOffset)\n      );\n    case \"mul\":\n      return __tnCheckedMul(\n        __tnEvalIrNode(node.left, ctx, baseOffset),\n        __tnEvalIrNode(node.right, ctx, baseOffset)\n      );\n    case \"div\":\n      return __tnCheckedDiv(\n        __tnEvalIrNode(node.left, ctx, baseOffset),\n        __tnEvalIrNode(node.right, ctx, baseOffset)\n      );\n    case \"mod\":\n      return __tnCheckedMod(\n        __tnEvalIrNode(node.left, ctx, baseOffset),\n        __tnEvalIrNode(node.right, ctx, baseOffset)\n      );\n    case \"bitAnd\":\n      return __tnBitwise(\n        __tnEvalIrNode(node.left, ctx, baseOffset),\n        __tnEvalIrNode(node.right, ctx, baseOffset),\n        \"and\"\n      );\n    case \"bitOr\":\n      return __tnBitwise(\n        __tnEvalIrNode(node.left, ctx, baseOffset),\n        __tnEvalIrNode(node.right, ctx, baseOffset),\n        \"or\"\n      );\n    case \"bitXor\":\n      return __tnBitwise(\n        __tnEvalIrNode(node.left, ctx, baseOffset),\n        __tnEvalIrNode(node.right, ctx, baseOffset),\n        \"xor\"\n      );\n    case \"leftShift\":\n      return __tnCheckedShift(\n        __tnEvalIrNode(node.left, ctx, baseOffset),\n        __tnEvalIrNode(node.right, ctx, baseOffset),\n        \"left\"\n      );\n    case \"rightShift\":\n      return __tnCheckedShift(\n        __tnEvalIrNode(node.left, ctx, baseOffset),\n        __tnEvalIrNode(node.right, ctx, baseOffset),\n        \"right\"\n      );\n    case \"align\":\n      return __tnAlign(__tnEvalIrNode(node.node, ctx, baseOffset), node.alignment);\n    case \"switch\": {\n      const tagVal = ctx.params[node.tag];\n      if (tagVal === undefined) {\n        const prefix = ctx.typeName ? `${ctx.typeName}: ` : \"\";\n        __tnRaiseIrError(\n          \"tn.ir.missing_param\",\n          `${prefix}Missing IR switch tag '${node.tag}'`\n        );\n      }\n      const tagNumber = Number(tagVal);\n      for (const caseNode of node.cases) {\n        if (caseNode.value === tagNumber) {\n          return __tnEvalIrNode(caseNode.node, ctx, baseOffset);\n        }\n      }\n      if (node.default) return __tnEvalIrNode(node.default, ctx, baseOffset);\n      __tnRaiseIrError(\n        \"tn.ir.invalid_tag\",\n        `Unhandled IR switch value ${tagNumber} for '${node.tag}'`\n      );\n    }\n    case \"call\": {\n      const nestedParams: Record<string, bigint> = Object.create(null);\n      for (const arg of node.args) {\n        const val = ctx.params[arg.source];\n        if (val === undefined) {\n          const prefix = ctx.typeName ? `${ctx.typeName}: ` : \"\";\n          __tnRaiseIrError(\n            \"tn.ir.missing_param\",\n            `${prefix}Missing IR parameter '${arg.source}' for nested call`\n          );\n        }\n        nestedParams[arg.name] = val;\n      }\n      if (ctx.buffer) {\n        const nestedOffset = __tnBigIntToNumber(baseOffset, \"IR nested offset\");\n        const nestedResult = __tnInvokeValidate(\n          node.typeName,\n          ctx.buffer.subarray(nestedOffset),\n          nestedParams\n        );\n        if (!nestedResult.ok) {\n          const nestedCode =\n            nestedResult.code ?? `tn.ir.runtime_error: ${node.typeName}`;\n          const prefixed = nestedCode.startsWith(\"tn.\")\n            ? nestedCode\n            : `tn.ir.runtime_error: ${node.typeName} -> ${nestedCode}`;\n          __tnRaiseIrError(\n            prefixed,\n            `Nested validator ${node.typeName} failed`\n          );\n        }\n        if (nestedResult.consumed !== undefined) {\n          return nestedResult.consumed;\n        }\n      }\n      return __tnInvokeFootprint(node.typeName, nestedParams);\n    }\n    case \"sumOverArray\": {\n      if (!ctx.buffer) {\n        __tnRaiseIrError(\n          \"tn.ir.missing_buffer\",\n          `Jagged array '${node.fieldName}' requires buffer-backed validation`\n        );\n      }\n      const count = __tnBigIntToNumber(\n        __tnEvalIrNode(node.count, ctx, baseOffset),\n        `Jagged array '${node.fieldName}' count`\n      );\n      let cursor = __tnBigIntToNumber(baseOffset, \"IR jagged array offset\");\n      let total = __tnToBigInt(0);\n      for (let i = 0; i < count; i++) {\n        const result = __tnInvokeDynamicValidate(\n          node.elementTypeName,\n          ctx.buffer.subarray(cursor)\n        );\n        if (!result.ok || result.consumed === undefined) {\n          const code = result.code ?? \"tn.ir.runtime_error\";\n          __tnRaiseIrError(\n            code,\n            `Jagged array '${node.fieldName}' element ${i} failed validation`\n          );\n        }\n        cursor += __tnBigIntToNumber(result.consumed, \"IR jagged element size\");\n        total = __tnCheckedAdd(total, result.consumed);\n      }\n      return total;\n    }\n    default:\n      __tnRaiseIrError(\n        \"tn.ir.runtime_error\",\n        `Unsupported IR node ${(node as { op: string }).op}`\n      );\n  }\n}\n\nfunction __tnNormalizeIrError(err: unknown): string {\n  if (err && typeof err === \"object\" && \"code\" in err) {\n    const maybeCode = (err as { code?: string }).code;\n    if (typeof maybeCode === \"string\" && maybeCode.length > 0) {\n      return maybeCode;\n    }\n  }\n  const message =\n    err && typeof err === \"object\" && \"message\" in err\n      ? String((err as { message?: unknown }).message ?? \"\")\n      : typeof err === \"string\"\n      ? err\n      : \"\";\n  if (message.includes(\"Missing IR parameter\")) return \"tn.ir.missing_param\";\n  if (message.includes(\"Unhandled IR switch value\")) return \"tn.ir.invalid_tag\";\n  if (\n    message.includes(\"invalid\") ||\n    message.includes(\"overflow\") ||\n    message.includes(\"negative size\")\n  ) {\n    return \"tn.ir.overflow\";\n  }\n  if (message.length > 0) return `tn.ir.runtime_error: ${message}`;\n  return \"tn.ir.runtime_error\";\n}\n\n__tnRegisterFootprint(\"Hash\", (params) => Hash.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"Hash\", (buffer, params) => Hash.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"Hash\", (buffer) => { const result = Hash.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n\n__tnRegisterFootprint(\"Pubkey\", (params) => Pubkey.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"Pubkey\", (buffer, params) => Pubkey.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"Pubkey\", (buffer) => { const result = Pubkey.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n\n/* ----- TYPE DEFINITION FOR DestroyArgs ----- */\n\nconst __tn_ir_DestroyArgs = {\n  typeName: \"DestroyArgs\",\n  root: { op: \"const\", value: 4n }\n} as const;\n\nexport class DestroyArgs {\n  private view: DataView;\n\n  private constructor(private buffer: Uint8Array) {\n    this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n  }\n\n  static __tnCreateView(buffer: Uint8Array, opts?: { fieldContext?: Record<string, number | bigint> }): DestroyArgs {\n    if (!buffer || buffer.length === undefined) throw new Error(\"DestroyArgs.__tnCreateView requires a Uint8Array\");\n    return new DestroyArgs(new Uint8Array(buffer));\n  }\n\n  static builder(): DestroyArgsBuilder {\n    return new DestroyArgsBuilder();\n  }\n\n  static fromBuilder(builder: DestroyArgsBuilder): DestroyArgs | null {\n    const buffer = builder.build();\n    return DestroyArgs.from_array(buffer);\n  }\n\n  get_buffer_account_idx(): number {\n    const offset = 0;\n    return this.view.getUint16(offset, true); /* little-endian */\n  }\n\n  set_buffer_account_idx(value: number): void {\n    const offset = 0;\n    this.view.setUint16(offset, value, true); /* little-endian */\n  }\n\n  get buffer_account_idx(): number {\n    return this.get_buffer_account_idx();\n  }\n\n  set buffer_account_idx(value: number) {\n    this.set_buffer_account_idx(value);\n  }\n\n  get_meta_account_idx(): number {\n    const offset = 2;\n    return this.view.getUint16(offset, true); /* little-endian */\n  }\n\n  set_meta_account_idx(value: number): void {\n    const offset = 2;\n    this.view.setUint16(offset, value, true); /* little-endian */\n  }\n\n  get meta_account_idx(): number {\n    return this.get_meta_account_idx();\n  }\n\n  set meta_account_idx(value: number) {\n    this.set_meta_account_idx(value);\n  }\n\n  private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n    return __tnEvalFootprint(__tn_ir_DestroyArgs.root, { params: __tnParams });\n  }\n\n  private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n    return __tnValidateIrTree(__tn_ir_DestroyArgs, buffer, __tnParams);\n  }\n\n  static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n    return this.__tnFootprintInternal(__tnParams);\n  }\n\n  static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n    return this.__tnValidateInternal(buffer, __tnParams);\n  }\n\n  static footprintIr(): bigint {\n    return this.__tnFootprintInternal(Object.create(null));\n  }\n\n  static footprint(): number {\n    const irResult = this.footprintIr();\n      const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n    if (__tnBigIntGreaterThan(irResult, maxSafe)) {\n      throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for DestroyArgs');\n    }\n    return __tnBigIntToNumber(irResult, 'DestroyArgs::footprint');\n  }\n\n  static validate(buffer: Uint8Array, _opts?: { params?: never }): { ok: boolean; code?: string; consumed?: number } {\n    if (buffer.length < 4) return { ok: false, code: \"tn.buffer_too_small\", consumed: 4 };\n    return { ok: true, consumed: 4 };\n  }\n\n  static new(buffer_account_idx: number, meta_account_idx: number): DestroyArgs {\n    const buffer = new Uint8Array(4);\n    const view = new DataView(buffer.buffer);\n\n    let offset = 0;\n    view.setUint16(0, buffer_account_idx, true); /* buffer_account_idx (little-endian) */\n    view.setUint16(2, meta_account_idx, true); /* meta_account_idx (little-endian) */\n\n    return new DestroyArgs(buffer);\n  }\n\n  static from_array(buffer: Uint8Array): DestroyArgs | null {\n    if (!buffer || buffer.length === undefined) {\n      return null;\n    }\n    const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    const validation = this.validate(buffer);\n    if (!validation.ok) {\n      return null;\n    }\n    return new DestroyArgs(buffer);\n  }\n\n}\n\nexport class DestroyArgsBuilder {\n  private buffer: Uint8Array;\n  private view: DataView;\n\n  constructor() {\n    this.buffer = new Uint8Array(4);\n    this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n  }\n\n  set_buffer_account_idx(value: number): this {\n    this.view.setUint16(0, value, true);\n    return this;\n  }\n\n  set_meta_account_idx(value: number): this {\n    this.view.setUint16(2, value, true);\n    return this;\n  }\n\n  build(): Uint8Array {\n    return this.buffer.slice();\n  }\n\n  buildInto(target: Uint8Array, offset = 0): Uint8Array {\n    if (target.length - offset < this.buffer.length) throw new Error(\"target buffer too small\");\n    target.set(this.buffer, offset);\n    return target;\n  }\n\n  finish(): DestroyArgs {\n    const view = DestroyArgs.from_array(this.buffer.slice());\n    if (!view) throw new Error(\"failed to build DestroyArgs\");\n    return view;\n  }\n}\n\n__tnRegisterFootprint(\"DestroyArgs\", (params) => DestroyArgs.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"DestroyArgs\", (buffer, params) => DestroyArgs.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"DestroyArgs\", (buffer) => { const result = DestroyArgs.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n\n/* ----- TYPE DEFINITION FOR UploaderError ----- */\n\nconst __tn_ir_UploaderError = {\n  typeName: \"UploaderError\",\n  root: { op: \"const\", value: 8n }\n} as const;\n\nexport class UploaderError {\n  private view: DataView;\n\n  private constructor(private buffer: Uint8Array) {\n    this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n  }\n\n  static __tnCreateView(buffer: Uint8Array, opts?: { fieldContext?: Record<string, number | bigint> }): UploaderError {\n    if (!buffer || buffer.length === undefined) throw new Error(\"UploaderError.__tnCreateView requires a Uint8Array\");\n    return new UploaderError(new Uint8Array(buffer));\n  }\n\n  static builder(): UploaderErrorBuilder {\n    return new UploaderErrorBuilder();\n  }\n\n  static fromBuilder(builder: UploaderErrorBuilder): UploaderError | null {\n    const buffer = builder.build();\n    return UploaderError.from_array(buffer);\n  }\n\n  get_code(): bigint {\n    const offset = 0;\n    return this.view.getBigUint64(offset, true); /* little-endian */\n  }\n\n  set_code(value: bigint): void {\n    const offset = 0;\n    this.view.setBigUint64(offset, value, true); /* little-endian */\n  }\n\n  get code(): bigint {\n    return this.get_code();\n  }\n\n  set code(value: bigint) {\n    this.set_code(value);\n  }\n\n  private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n    return __tnEvalFootprint(__tn_ir_UploaderError.root, { params: __tnParams });\n  }\n\n  private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n    return __tnValidateIrTree(__tn_ir_UploaderError, buffer, __tnParams);\n  }\n\n  static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n    return this.__tnFootprintInternal(__tnParams);\n  }\n\n  static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n    return this.__tnValidateInternal(buffer, __tnParams);\n  }\n\n  static footprintIr(): bigint {\n    return this.__tnFootprintInternal(Object.create(null));\n  }\n\n  static footprint(): number {\n    const irResult = this.footprintIr();\n      const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n    if (__tnBigIntGreaterThan(irResult, maxSafe)) {\n      throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for UploaderError');\n    }\n    return __tnBigIntToNumber(irResult, 'UploaderError::footprint');\n  }\n\n  static validate(buffer: Uint8Array, _opts?: { params?: never }): { ok: boolean; code?: string; consumed?: number } {\n    if (buffer.length < 8) return { ok: false, code: \"tn.buffer_too_small\", consumed: 8 };\n    return { ok: true, consumed: 8 };\n  }\n\n  static new(code: bigint): UploaderError {\n    const buffer = new Uint8Array(8);\n    const view = new DataView(buffer.buffer);\n\n    let offset = 0;\n    view.setBigUint64(0, code, true); /* code (little-endian) */\n\n    return new UploaderError(buffer);\n  }\n\n  static from_array(buffer: Uint8Array): UploaderError | null {\n    if (!buffer || buffer.length === undefined) {\n      return null;\n    }\n    const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    const validation = this.validate(buffer);\n    if (!validation.ok) {\n      return null;\n    }\n    return new UploaderError(buffer);\n  }\n\n}\n\nexport class UploaderErrorBuilder {\n  private buffer: Uint8Array;\n  private view: DataView;\n\n  constructor() {\n    this.buffer = new Uint8Array(8);\n    this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n  }\n\n  set_code(value: bigint): this {\n    const cast = __tnToBigInt(value);\n    this.view.setBigUint64(0, cast, true);\n    return this;\n  }\n\n  build(): Uint8Array {\n    return this.buffer.slice();\n  }\n\n  buildInto(target: Uint8Array, offset = 0): Uint8Array {\n    if (target.length - offset < this.buffer.length) throw new Error(\"target buffer too small\");\n    target.set(this.buffer, offset);\n    return target;\n  }\n\n  finish(): UploaderError {\n    const view = UploaderError.from_array(this.buffer.slice());\n    if (!view) throw new Error(\"failed to build UploaderError\");\n    return view;\n  }\n}\n\n__tnRegisterFootprint(\"UploaderError\", (params) => UploaderError.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"UploaderError\", (buffer, params) => UploaderError.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"UploaderError\", (buffer) => { const result = UploaderError.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n\n/* ----- TYPE DEFINITION FOR UploaderProgramMeta ----- */\n\nconst __tn_ir_UploaderProgramMeta = {\n  typeName: \"UploaderProgramMeta\",\n  root: { op: \"const\", value: 65n }\n} as const;\n\nexport class UploaderProgramMeta {\n  private view: DataView;\n\n  private constructor(private buffer: Uint8Array) {\n    this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n  }\n\n  static __tnCreateView(buffer: Uint8Array, opts?: { fieldContext?: Record<string, number | bigint> }): UploaderProgramMeta {\n    if (!buffer || buffer.length === undefined) throw new Error(\"UploaderProgramMeta.__tnCreateView requires a Uint8Array\");\n    return new UploaderProgramMeta(new Uint8Array(buffer));\n  }\n\n  static builder(): UploaderProgramMetaBuilder {\n    return new UploaderProgramMetaBuilder();\n  }\n\n  static fromBuilder(builder: UploaderProgramMetaBuilder): UploaderProgramMeta | null {\n    const buffer = builder.build();\n    return UploaderProgramMeta.from_array(buffer);\n  }\n\n  get_authority(): Pubkey {\n    const offset = 0;\n    const slice = this.buffer.subarray(offset, offset + 32);\n    return Pubkey.from_array(slice)!;\n  }\n\n  set_authority(value: Pubkey): void {\n    /* Copy bytes from source struct to this field */\n    const sourceBytes = (value as any).buffer as Uint8Array;\n    const offset = 0;\n    this.buffer.set(sourceBytes, offset);\n  }\n\n  get authority(): Pubkey {\n    return this.get_authority();\n  }\n\n  set authority(value: Pubkey) {\n    this.set_authority(value);\n  }\n\n  get_expected_account_hash(): Hash {\n    const offset = 32;\n    const slice = this.buffer.subarray(offset, offset + 32);\n    return Hash.from_array(slice)!;\n  }\n\n  set_expected_account_hash(value: Hash): void {\n    /* Copy bytes from source struct to this field */\n    const sourceBytes = (value as any).buffer as Uint8Array;\n    const offset = 32;\n    this.buffer.set(sourceBytes, offset);\n  }\n\n  get expected_account_hash(): Hash {\n    return this.get_expected_account_hash();\n  }\n\n  set expected_account_hash(value: Hash) {\n    this.set_expected_account_hash(value);\n  }\n\n  get_state(): number {\n    const offset = 64;\n    return this.view.getUint8(offset);\n  }\n\n  set_state(value: number): void {\n    const offset = 64;\n    this.view.setUint8(offset, value);\n  }\n\n  get state(): number {\n    return this.get_state();\n  }\n\n  set state(value: number) {\n    this.set_state(value);\n  }\n\n  private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n    return __tnEvalFootprint(__tn_ir_UploaderProgramMeta.root, { params: __tnParams });\n  }\n\n  private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n    return __tnValidateIrTree(__tn_ir_UploaderProgramMeta, buffer, __tnParams);\n  }\n\n  static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n    return this.__tnFootprintInternal(__tnParams);\n  }\n\n  static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n    return this.__tnValidateInternal(buffer, __tnParams);\n  }\n\n  static footprintIr(): bigint {\n    return this.__tnFootprintInternal(Object.create(null));\n  }\n\n  static footprint(): number {\n    const irResult = this.footprintIr();\n      const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n    if (__tnBigIntGreaterThan(irResult, maxSafe)) {\n      throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for UploaderProgramMeta');\n    }\n    return __tnBigIntToNumber(irResult, 'UploaderProgramMeta::footprint');\n  }\n\n  static validate(buffer: Uint8Array, _opts?: { params?: never }): { ok: boolean; code?: string; consumed?: number } {\n    if (buffer.length < 65) return { ok: false, code: \"tn.buffer_too_small\", consumed: 65 };\n    return { ok: true, consumed: 65 };\n  }\n\n  static from_array(buffer: Uint8Array): UploaderProgramMeta | null {\n    if (!buffer || buffer.length === undefined) {\n      return null;\n    }\n    const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    const validation = this.validate(buffer);\n    if (!validation.ok) {\n      return null;\n    }\n    return new UploaderProgramMeta(buffer);\n  }\n\n}\n\nexport class UploaderProgramMetaBuilder {\n  private buffer: Uint8Array;\n  private view: DataView;\n\n  constructor() {\n    this.buffer = new Uint8Array(65);\n    this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n  }\n\n  set_authority(value: Uint8Array): this {\n    if (value.length !== 32) throw new Error(\"authority expects 32 bytes\");\n    this.buffer.set(value, 0);\n    return this;\n  }\n\n  set_expected_account_hash(value: Uint8Array): this {\n    if (value.length !== 32) throw new Error(\"expected_account_hash expects 32 bytes\");\n    this.buffer.set(value, 32);\n    return this;\n  }\n\n  set_state(value: number): this {\n    this.view.setUint8(64, value);\n    return this;\n  }\n\n  build(): Uint8Array {\n    return this.buffer.slice();\n  }\n\n  buildInto(target: Uint8Array, offset = 0): Uint8Array {\n    if (target.length - offset < this.buffer.length) throw new Error(\"target buffer too small\");\n    target.set(this.buffer, offset);\n    return target;\n  }\n\n  finish(): UploaderProgramMeta {\n    const view = UploaderProgramMeta.from_array(this.buffer.slice());\n    if (!view) throw new Error(\"failed to build UploaderProgramMeta\");\n    return view;\n  }\n}\n\n__tnRegisterFootprint(\"UploaderProgramMeta\", (params) => UploaderProgramMeta.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"UploaderProgramMeta\", (buffer, params) => UploaderProgramMeta.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"UploaderProgramMeta\", (buffer) => { const result = UploaderProgramMeta.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n\n/* ----- TYPE DEFINITION FOR WriteArgs ----- */\n\nconst __tn_ir_WriteArgs = {\n  typeName: \"WriteArgs\",\n  root: { op: \"align\", alignment: 1, node: { op: \"add\", left: { op: \"add\", left: { op: \"add\", left: { op: \"add\", left: { op: \"align\", alignment: 2, node: { op: \"const\", value: 2n } }, right: { op: \"align\", alignment: 2, node: { op: \"const\", value: 2n } } }, right: { op: \"align\", alignment: 4, node: { op: \"const\", value: 4n } } }, right: { op: \"align\", alignment: 4, node: { op: \"const\", value: 4n } } }, right: { op: \"align\", alignment: 1, node: { op: \"mul\", left: { op: \"field\", param: \"data.data_len\" }, right: { op: \"const\", value: 1n } } } } }\n} as const;\n\nexport class WriteArgs {\n  private view: DataView;\n  private __tnFieldContext: Record<string, number | bigint> | null = null;\n  private __tnParams: WriteArgs.Params;\n\n  private constructor(private buffer: Uint8Array, params?: WriteArgs.Params, fieldContext?: Record<string, number | bigint>) {\n    this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    this.__tnFieldContext = fieldContext ?? null;\n    if (params) {\n      this.__tnParams = params;\n    } else {\n      const derived = WriteArgs.__tnExtractParams(this.view, buffer);\n      if (!derived) {\n        throw new Error(\"WriteArgs: failed to derive dynamic parameters\");\n      }\n      this.__tnParams = derived.params;\n    }\n  }\n\n  static __tnCreateView(buffer: Uint8Array, opts?: { params?: WriteArgs.Params, fieldContext?: Record<string, number | bigint> }): WriteArgs {\n    if (!buffer || buffer.length === undefined) throw new Error(\"WriteArgs.__tnCreateView requires a Uint8Array\");\n    let params = opts?.params ?? null;\n    if (!params) {\n      const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n      const derived = WriteArgs.__tnExtractParams(view, buffer);\n      if (!derived) throw new Error(\"WriteArgs.__tnCreateView: failed to derive params\");\n      params = derived.params;\n    }\n    const instance = new WriteArgs(new Uint8Array(buffer), params, opts?.fieldContext);\n    return instance;\n  }\n\n  dynamicParams(): WriteArgs.Params {\n    return this.__tnParams;\n  }\n\n  withFieldContext(context: Record<string, number | bigint>): this {\n    this.__tnFieldContext = context;\n    return this;\n  }\n\n  private __tnResolveFieldRef(path: string): number {\n    const getterName = `get_${path.replace(/[.]/g, '_')}`;\n    const getter = (this as any)[getterName];\n    if (typeof getter === \"function\") {\n      const value = getter.call(this);\n      return typeof value === \"bigint\" ? __tnBigIntToNumber(value, \"WriteArgs::__tnResolveFieldRef\") : value;\n    }\n    if (this.__tnFieldContext && Object.prototype.hasOwnProperty.call(this.__tnFieldContext, path)) {\n      const contextValue = this.__tnFieldContext[path];\n      return typeof contextValue === \"bigint\" ? __tnBigIntToNumber(contextValue, \"WriteArgs::__tnResolveFieldRef\") : contextValue;\n    }\n    throw new Error(\"WriteArgs: field reference '\" + path + \"' is not available; provide fieldContext when creating this view\");\n  }\n\n  static builder(): WriteArgsBuilder {\n    return new WriteArgsBuilder();\n  }\n\n  static fromBuilder(builder: WriteArgsBuilder): WriteArgs | null {\n    const buffer = builder.build();\n    const params = builder.dynamicParams();\n    return WriteArgs.from_array(buffer, { params });\n  }\n\n  static readonly flexibleArrayWriters = Object.freeze([\n    { field: \"data\", method: \"data\", sizeField: \"data_len\", paramKey: \"data_len\", elementSize: 1 },\n  ] as const);\n\n  private static __tnExtractParams(view: DataView, buffer: Uint8Array): { params: WriteArgs.Params; derived: Record<string, bigint> | null } | null {\n    if (buffer.length < 8) {\n      return null;\n    }\n    const __tnParam_data_data_len = __tnToBigInt(view.getUint32(4, true));\n    const __tnExtractedParams = WriteArgs.Params.fromValues({\n      data_data_len: __tnParam_data_data_len,\n    });\n    return { params: __tnExtractedParams, derived: null };\n  }\n\n  get_buffer_account_idx(): number {\n    const offset = 0;\n    return this.view.getUint16(offset, true); /* little-endian */\n  }\n\n  set_buffer_account_idx(value: number): void {\n    const offset = 0;\n    this.view.setUint16(offset, value, true); /* little-endian */\n  }\n\n  get buffer_account_idx(): number {\n    return this.get_buffer_account_idx();\n  }\n\n  set buffer_account_idx(value: number) {\n    this.set_buffer_account_idx(value);\n  }\n\n  get_meta_account_idx(): number {\n    const offset = 2;\n    return this.view.getUint16(offset, true); /* little-endian */\n  }\n\n  set_meta_account_idx(value: number): void {\n    const offset = 2;\n    this.view.setUint16(offset, value, true); /* little-endian */\n  }\n\n  get meta_account_idx(): number {\n    return this.get_meta_account_idx();\n  }\n\n  set meta_account_idx(value: number) {\n    this.set_meta_account_idx(value);\n  }\n\n  get_data_len(): number {\n    const offset = 4;\n    return this.view.getUint32(offset, true); /* little-endian */\n  }\n\n  set_data_len(value: number): void {\n    const offset = 4;\n    this.view.setUint32(offset, value, true); /* little-endian */\n  }\n\n  get data_len(): number {\n    return this.get_data_len();\n  }\n\n  set data_len(value: number) {\n    this.set_data_len(value);\n  }\n\n  get_data_offset(): number {\n    const offset = 8;\n    return this.view.getUint32(offset, true); /* little-endian */\n  }\n\n  set_data_offset(value: number): void {\n    const offset = 8;\n    this.view.setUint32(offset, value, true); /* little-endian */\n  }\n\n  get data_offset(): number {\n    return this.get_data_offset();\n  }\n\n  set data_offset(value: number) {\n    this.set_data_offset(value);\n  }\n\n  get_data_length(): number {\n    return this.__tnResolveFieldRef(\"data_len\");\n  }\n\n  get_data_at(index: number): number {\n    const offset = 12;\n    return this.view.getUint8(offset + index * 1);\n  }\n\n  get_data(): number[] {\n    const len = this.get_data_length();\n    const result: number[] = [];\n    for (let i = 0; i < len; i++) {\n      result.push(this.get_data_at(i));\n    }\n    return result;\n  }\n\n  set_data_at(index: number, value: number): void {\n    const offset = 12;\n    this.view.setUint8((offset + index * 1), value);\n  }\n\n  set_data(value: number[]): void {\n    const len = Math.min(this.get_data_length(), value.length);\n    for (let i = 0; i < len; i++) {\n      this.set_data_at(i, value[i]);\n    }\n  }\n\n  get data(): number[] {\n    return this.get_data();\n  }\n\n  set data(value: number[]) {\n    this.set_data(value);\n  }\n  private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n    return __tnEvalFootprint(__tn_ir_WriteArgs.root, { params: __tnParams });\n  }\n\n  private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n    return __tnValidateIrTree(__tn_ir_WriteArgs, buffer, __tnParams);\n  }\n\n  static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n    return this.__tnFootprintInternal(__tnParams);\n  }\n\n  static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n    return this.__tnValidateInternal(buffer, __tnParams);\n  }\n\n  static footprintIr(data_data_len: number | bigint): bigint {\n    const params = WriteArgs.Params.fromValues({\n      data_data_len: data_data_len,\n    });\n    return this.footprintIrFromParams(params);\n  }\n\n  private static __tnPackParams(params: WriteArgs.Params): Record<string, bigint> {\n    const record: Record<string, bigint> = Object.create(null);\n    record[\"data.data_len\"] = params.data_data_len;\n    return record;\n  }\n\n  static footprintIrFromParams(params: WriteArgs.Params): bigint {\n    const __tnParams = this.__tnPackParams(params);\n    return this.__tnFootprintInternal(__tnParams);\n  }\n\n  static footprintFromParams(params: WriteArgs.Params): number {\n    const irResult = this.footprintIrFromParams(params);\n    const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n    if (__tnBigIntGreaterThan(irResult, maxSafe)) throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for WriteArgs');\n    return __tnBigIntToNumber(irResult, 'WriteArgs::footprintFromParams');\n  }\n\n  static footprintFromValues(input: { data_data_len: number | bigint }): number {\n    const params = WriteArgs.params(input);\n    return this.footprintFromParams(params);\n  }\n\n  static footprint(params: WriteArgs.Params): number {\n    return this.footprintFromParams(params);\n  }\n\n  static validate(buffer: Uint8Array, opts?: { params?: WriteArgs.Params }): { ok: boolean; code?: string; consumed?: number; params?: WriteArgs.Params } {\n    if (!buffer || buffer.length === undefined) {\n      return { ok: false, code: \"tn.invalid_buffer\" };\n    }\n    const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    let params = opts?.params ?? null;\n    if (!params) {\n      const extracted = this.__tnExtractParams(view, buffer);\n      if (!extracted) return { ok: false, code: \"tn.param_extraction_failed\" };\n      params = extracted.params;\n    }\n    const __tnParamsRec = this.__tnPackParams(params);\n    const irResult = this.__tnValidateInternal(buffer, __tnParamsRec);\n    if (!irResult.ok) {\n      return { ok: false, code: irResult.code, consumed: irResult.consumed ? __tnBigIntToNumber(irResult.consumed, 'WriteArgs::validate') : undefined, params };\n    }\n    const consumed = irResult.consumed ? __tnBigIntToNumber(irResult.consumed, 'WriteArgs::validate') : undefined;\n    return { ok: true, consumed, params };\n  }\n\n  static from_array(buffer: Uint8Array, opts?: { params?: WriteArgs.Params }): WriteArgs | null {\n    if (!buffer || buffer.length === undefined) {\n      return null;\n    }\n    const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    let params = opts?.params ?? null;\n    if (!params) {\n      const derived = this.__tnExtractParams(view, buffer);\n      if (!derived) return null;\n      params = derived.params;\n    }\n    const validation = this.validate(buffer, { params });\n    if (!validation.ok) {\n      return null;\n    }\n    const cached = validation.params ?? params;\n    const state = new WriteArgs(buffer, cached);\n    return state;\n  }\n\n\n}\n\nexport namespace WriteArgs {\n  export type Params = {\n    /** ABI path: data.data_len */\n    readonly data_data_len: bigint;\n  };\n\n  export const ParamKeys = Object.freeze({\n    data_data_len: \"data.data_len\",\n  } as const);\n\n  export const Params = {\n    fromValues(input: { data_data_len: number | bigint }): Params {\n      return {\n        data_data_len: __tnToBigInt(input.data_data_len),\n      };\n    },\n    fromBuilder(source: { dynamicParams(): Params } | { params: Params } | Params): Params {\n      if ((source as { dynamicParams?: () => Params }).dynamicParams) {\n        return (source as { dynamicParams(): Params }).dynamicParams();\n      }\n      if ((source as { params?: Params }).params) {\n        return (source as { params: Params }).params;\n      }\n      return source as Params;\n    }\n  };\n\n  export function params(input: { data_data_len: number | bigint }): Params {\n    return Params.fromValues(input);\n  }\n}\n\nexport class WriteArgsBuilder {\n  private buffer: Uint8Array;\n  private view: DataView;\n  private __tnCachedParams: WriteArgs.Params | null = null;\n  private __tnLastBuffer: Uint8Array | null = null;\n  private __tnLastParams: WriteArgs.Params | null = null;\n  private __tnFam_data: Uint8Array | null = null;\n  private __tnFam_dataCount: number | null = null;\n  private __tnFamWriter_data?: __TnFamWriterResult<WriteArgsBuilder>;\n\n  constructor() {\n    this.buffer = new Uint8Array(12);\n    this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n  }\n\n  private __tnInvalidate(): void {\n    this.__tnCachedParams = null;\n    this.__tnLastBuffer = null;\n    this.__tnLastParams = null;\n  }\n\n  set_buffer_account_idx(value: number): this {\n    this.view.setUint16(0, value, true);\n    this.__tnInvalidate();\n    return this;\n  }\n\n  set_meta_account_idx(value: number): this {\n    this.view.setUint16(2, value, true);\n    this.__tnInvalidate();\n    return this;\n  }\n\n  set_data_len(value: number): this {\n    this.view.setUint32(4, value, true);\n    this.__tnInvalidate();\n    return this;\n  }\n\n  set_data_offset(value: number): this {\n    this.view.setUint32(8, value, true);\n    this.__tnInvalidate();\n    return this;\n  }\n\n  data(): __TnFamWriterResult<WriteArgsBuilder> {\n    if (!this.__tnFamWriter_data) {\n      this.__tnFamWriter_data = __tnCreateFamWriter(this, \"data\", (payload) => {\n        const bytes = new Uint8Array(payload);\n        const elementCount = bytes.length;\n        this.__tnFam_data = bytes;\n        this.__tnFam_dataCount = elementCount;\n        this.set_data_len(elementCount);\n        this.__tnInvalidate();\n      });\n    }\n    return this.__tnFamWriter_data!;\n  }\n\n  build(): Uint8Array {\n    const params = this.__tnComputeParams();\n    const size = WriteArgs.footprintFromParams(params);\n    const buffer = new Uint8Array(size);\n    this.__tnWriteInto(buffer);\n    this.__tnValidateOrThrow(buffer, params);\n    return buffer;\n  }\n\n  buildInto(target: Uint8Array, offset = 0): Uint8Array {\n    const params = this.__tnComputeParams();\n    const size = WriteArgs.footprintFromParams(params);\n    if (target.length - offset < size) throw new Error(\"WriteArgsBuilder: target buffer too small\");\n    const slice = target.subarray(offset, offset + size);\n    this.__tnWriteInto(slice);\n    this.__tnValidateOrThrow(slice, params);\n    return target;\n  }\n\n  finish(): WriteArgs {\n    const buffer = this.build();\n    const params = this.__tnLastParams ?? this.__tnComputeParams();\n    const view = WriteArgs.from_array(buffer, { params });\n    if (!view) throw new Error(\"WriteArgsBuilder: failed to finalize view\");\n    return view;\n  }\n\n  finishView(): WriteArgs {\n    return this.finish();\n  }\n\n  dynamicParams(): WriteArgs.Params {\n    return this.__tnComputeParams();\n  }\n\n  private __tnComputeParams(): WriteArgs.Params {\n    if (this.__tnCachedParams) return this.__tnCachedParams;\n    const params = WriteArgs.Params.fromValues({\n      data_data_len: (() => { if (this.__tnFam_dataCount === null) throw new Error(\"WriteArgsBuilder: field 'data' must be written before computing params\"); return __tnToBigInt(this.__tnFam_dataCount); })(),\n    });\n    this.__tnCachedParams = params;\n    return params;\n  }\n\n  private __tnWriteInto(target: Uint8Array): void {\n    target.set(this.buffer, 0);\n    let cursor = this.buffer.length;\n    const __tnLocal_data_bytes = this.__tnFam_data;\n    if (!__tnLocal_data_bytes) throw new Error(\"WriteArgsBuilder: field 'data' must be written before build\");\n    target.set(__tnLocal_data_bytes, cursor);\n    cursor += __tnLocal_data_bytes.length;\n  }\n\n  private __tnValidateOrThrow(buffer: Uint8Array, params: WriteArgs.Params): void {\n    const result = WriteArgs.validate(buffer, { params });\n    if (!result.ok) {\n      throw new Error(`${ WriteArgs }Builder: builder produced invalid buffer (code=${result.code ?? \"unknown\"})`);\n    }\n    this.__tnLastParams = result.params ?? params;\n    this.__tnLastBuffer = buffer;\n  }\n}\n\n__tnRegisterFootprint(\"WriteArgs\", (params) => WriteArgs.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"WriteArgs\", (buffer, params) => WriteArgs.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"WriteArgs\", (buffer) => { const result = WriteArgs.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n\n/* ----- TYPE DEFINITION FOR CreateArgs ----- */\n\nconst __tn_ir_CreateArgs = {\n  typeName: \"CreateArgs\",\n  root: { op: \"align\", alignment: 1, node: { op: \"add\", left: { op: \"add\", left: { op: \"add\", left: { op: \"add\", left: { op: \"add\", left: { op: \"add\", left: { op: \"align\", alignment: 2, node: { op: \"const\", value: 2n } }, right: { op: \"align\", alignment: 2, node: { op: \"const\", value: 2n } } }, right: { op: \"align\", alignment: 2, node: { op: \"const\", value: 2n } } }, right: { op: \"align\", alignment: 4, node: { op: \"const\", value: 4n } } }, right: { op: \"align\", alignment: 1, node: { op: \"const\", value: 32n } } }, right: { op: \"align\", alignment: 4, node: { op: \"const\", value: 4n } } }, right: { op: \"align\", alignment: 1, node: { op: \"mul\", left: { op: \"field\", param: \"seed.seed_len\" }, right: { op: \"const\", value: 1n } } } } }\n} as const;\n\nexport class CreateArgs {\n  private view: DataView;\n  private __tnFieldContext: Record<string, number | bigint> | null = null;\n  private __tnParams: CreateArgs.Params;\n\n  private constructor(private buffer: Uint8Array, params?: CreateArgs.Params, fieldContext?: Record<string, number | bigint>) {\n    this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    this.__tnFieldContext = fieldContext ?? null;\n    if (params) {\n      this.__tnParams = params;\n    } else {\n      const derived = CreateArgs.__tnExtractParams(this.view, buffer);\n      if (!derived) {\n        throw new Error(\"CreateArgs: failed to derive dynamic parameters\");\n      }\n      this.__tnParams = derived.params;\n    }\n  }\n\n  static __tnCreateView(buffer: Uint8Array, opts?: { params?: CreateArgs.Params, fieldContext?: Record<string, number | bigint> }): CreateArgs {\n    if (!buffer || buffer.length === undefined) throw new Error(\"CreateArgs.__tnCreateView requires a Uint8Array\");\n    let params = opts?.params ?? null;\n    if (!params) {\n      const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n      const derived = CreateArgs.__tnExtractParams(view, buffer);\n      if (!derived) throw new Error(\"CreateArgs.__tnCreateView: failed to derive params\");\n      params = derived.params;\n    }\n    const instance = new CreateArgs(new Uint8Array(buffer), params, opts?.fieldContext);\n    return instance;\n  }\n\n  dynamicParams(): CreateArgs.Params {\n    return this.__tnParams;\n  }\n\n  withFieldContext(context: Record<string, number | bigint>): this {\n    this.__tnFieldContext = context;\n    return this;\n  }\n\n  private __tnResolveFieldRef(path: string): number {\n    const getterName = `get_${path.replace(/[.]/g, '_')}`;\n    const getter = (this as any)[getterName];\n    if (typeof getter === \"function\") {\n      const value = getter.call(this);\n      return typeof value === \"bigint\" ? __tnBigIntToNumber(value, \"CreateArgs::__tnResolveFieldRef\") : value;\n    }\n    if (this.__tnFieldContext && Object.prototype.hasOwnProperty.call(this.__tnFieldContext, path)) {\n      const contextValue = this.__tnFieldContext[path];\n      return typeof contextValue === \"bigint\" ? __tnBigIntToNumber(contextValue, \"CreateArgs::__tnResolveFieldRef\") : contextValue;\n    }\n    throw new Error(\"CreateArgs: field reference '\" + path + \"' is not available; provide fieldContext when creating this view\");\n  }\n\n  static builder(): CreateArgsBuilder {\n    return new CreateArgsBuilder();\n  }\n\n  static fromBuilder(builder: CreateArgsBuilder): CreateArgs | null {\n    const buffer = builder.build();\n    const params = builder.dynamicParams();\n    return CreateArgs.from_array(buffer, { params });\n  }\n\n  static readonly flexibleArrayWriters = Object.freeze([\n    { field: \"seed\", method: \"seed\", sizeField: \"seed_len\", paramKey: \"seed_len\", elementSize: 1 },\n  ] as const);\n\n  private static __tnExtractParams(view: DataView, buffer: Uint8Array): { params: CreateArgs.Params; derived: Record<string, bigint> | null } | null {\n    if (buffer.length < 46) {\n      return null;\n    }\n    const __tnParam_seed_seed_len = __tnToBigInt(view.getUint32(42, true));\n    const __tnExtractedParams = CreateArgs.Params.fromValues({\n      seed_seed_len: __tnParam_seed_seed_len,\n    });\n    return { params: __tnExtractedParams, derived: null };\n  }\n\n  get_buffer_account_idx(): number {\n    const offset = 0;\n    return this.view.getUint16(offset, true); /* little-endian */\n  }\n\n  set_buffer_account_idx(value: number): void {\n    const offset = 0;\n    this.view.setUint16(offset, value, true); /* little-endian */\n  }\n\n  get buffer_account_idx(): number {\n    return this.get_buffer_account_idx();\n  }\n\n  set buffer_account_idx(value: number) {\n    this.set_buffer_account_idx(value);\n  }\n\n  get_meta_account_idx(): number {\n    const offset = 2;\n    return this.view.getUint16(offset, true); /* little-endian */\n  }\n\n  set_meta_account_idx(value: number): void {\n    const offset = 2;\n    this.view.setUint16(offset, value, true); /* little-endian */\n  }\n\n  get meta_account_idx(): number {\n    return this.get_meta_account_idx();\n  }\n\n  set meta_account_idx(value: number) {\n    this.set_meta_account_idx(value);\n  }\n\n  get_authority_account_idx(): number {\n    const offset = 4;\n    return this.view.getUint16(offset, true); /* little-endian */\n  }\n\n  set_authority_account_idx(value: number): void {\n    const offset = 4;\n    this.view.setUint16(offset, value, true); /* little-endian */\n  }\n\n  get authority_account_idx(): number {\n    return this.get_authority_account_idx();\n  }\n\n  set authority_account_idx(value: number) {\n    this.set_authority_account_idx(value);\n  }\n\n  get_buffer_account_sz(): number {\n    const offset = 6;\n    return this.view.getUint32(offset, true); /* little-endian */\n  }\n\n  set_buffer_account_sz(value: number): void {\n    const offset = 6;\n    this.view.setUint32(offset, value, true); /* little-endian */\n  }\n\n  get buffer_account_sz(): number {\n    return this.get_buffer_account_sz();\n  }\n\n  set buffer_account_sz(value: number) {\n    this.set_buffer_account_sz(value);\n  }\n\n  get_expected_account_hash(): Hash {\n    const offset = 10;\n    const slice = this.buffer.subarray(offset, offset + 32);\n    return Hash.from_array(slice)!;\n  }\n\n  set_expected_account_hash(value: Hash): void {\n    /* Copy bytes from source struct to this field */\n    const sourceBytes = (value as any).buffer as Uint8Array;\n    const offset = 10;\n    this.buffer.set(sourceBytes, offset);\n  }\n\n  get expected_account_hash(): Hash {\n    return this.get_expected_account_hash();\n  }\n\n  set expected_account_hash(value: Hash) {\n    this.set_expected_account_hash(value);\n  }\n\n  get_seed_len(): number {\n    const offset = 42;\n    return this.view.getUint32(offset, true); /* little-endian */\n  }\n\n  set_seed_len(value: number): void {\n    const offset = 42;\n    this.view.setUint32(offset, value, true); /* little-endian */\n  }\n\n  get seed_len(): number {\n    return this.get_seed_len();\n  }\n\n  set seed_len(value: number) {\n    this.set_seed_len(value);\n  }\n\n  get_seed_length(): number {\n    return this.__tnResolveFieldRef(\"seed_len\");\n  }\n\n  get_seed_at(index: number): number {\n    const offset = 46;\n    return this.view.getUint8(offset + index * 1);\n  }\n\n  get_seed(): number[] {\n    const len = this.get_seed_length();\n    const result: number[] = [];\n    for (let i = 0; i < len; i++) {\n      result.push(this.get_seed_at(i));\n    }\n    return result;\n  }\n\n  set_seed_at(index: number, value: number): void {\n    const offset = 46;\n    this.view.setUint8((offset + index * 1), value);\n  }\n\n  set_seed(value: number[]): void {\n    const len = Math.min(this.get_seed_length(), value.length);\n    for (let i = 0; i < len; i++) {\n      this.set_seed_at(i, value[i]);\n    }\n  }\n\n  get seed(): number[] {\n    return this.get_seed();\n  }\n\n  set seed(value: number[]) {\n    this.set_seed(value);\n  }\n  private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n    return __tnEvalFootprint(__tn_ir_CreateArgs.root, { params: __tnParams });\n  }\n\n  private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n    return __tnValidateIrTree(__tn_ir_CreateArgs, buffer, __tnParams);\n  }\n\n  static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n    return this.__tnFootprintInternal(__tnParams);\n  }\n\n  static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n    return this.__tnValidateInternal(buffer, __tnParams);\n  }\n\n  static footprintIr(seed_seed_len: number | bigint): bigint {\n    const params = CreateArgs.Params.fromValues({\n      seed_seed_len: seed_seed_len,\n    });\n    return this.footprintIrFromParams(params);\n  }\n\n  private static __tnPackParams(params: CreateArgs.Params): Record<string, bigint> {\n    const record: Record<string, bigint> = Object.create(null);\n    record[\"seed.seed_len\"] = params.seed_seed_len;\n    return record;\n  }\n\n  static footprintIrFromParams(params: CreateArgs.Params): bigint {\n    const __tnParams = this.__tnPackParams(params);\n    return this.__tnFootprintInternal(__tnParams);\n  }\n\n  static footprintFromParams(params: CreateArgs.Params): number {\n    const irResult = this.footprintIrFromParams(params);\n    const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n    if (__tnBigIntGreaterThan(irResult, maxSafe)) throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for CreateArgs');\n    return __tnBigIntToNumber(irResult, 'CreateArgs::footprintFromParams');\n  }\n\n  static footprintFromValues(input: { seed_seed_len: number | bigint }): number {\n    const params = CreateArgs.params(input);\n    return this.footprintFromParams(params);\n  }\n\n  static footprint(params: CreateArgs.Params): number {\n    return this.footprintFromParams(params);\n  }\n\n  static validate(buffer: Uint8Array, opts?: { params?: CreateArgs.Params }): { ok: boolean; code?: string; consumed?: number; params?: CreateArgs.Params } {\n    if (!buffer || buffer.length === undefined) {\n      return { ok: false, code: \"tn.invalid_buffer\" };\n    }\n    const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    let params = opts?.params ?? null;\n    if (!params) {\n      const extracted = this.__tnExtractParams(view, buffer);\n      if (!extracted) return { ok: false, code: \"tn.param_extraction_failed\" };\n      params = extracted.params;\n    }\n    const __tnParamsRec = this.__tnPackParams(params);\n    const irResult = this.__tnValidateInternal(buffer, __tnParamsRec);\n    if (!irResult.ok) {\n      return { ok: false, code: irResult.code, consumed: irResult.consumed ? __tnBigIntToNumber(irResult.consumed, 'CreateArgs::validate') : undefined, params };\n    }\n    const consumed = irResult.consumed ? __tnBigIntToNumber(irResult.consumed, 'CreateArgs::validate') : undefined;\n    return { ok: true, consumed, params };\n  }\n\n  static from_array(buffer: Uint8Array, opts?: { params?: CreateArgs.Params }): CreateArgs | null {\n    if (!buffer || buffer.length === undefined) {\n      return null;\n    }\n    const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    let params = opts?.params ?? null;\n    if (!params) {\n      const derived = this.__tnExtractParams(view, buffer);\n      if (!derived) return null;\n      params = derived.params;\n    }\n    const validation = this.validate(buffer, { params });\n    if (!validation.ok) {\n      return null;\n    }\n    const cached = validation.params ?? params;\n    const state = new CreateArgs(buffer, cached);\n    return state;\n  }\n\n\n}\n\nexport namespace CreateArgs {\n  export type Params = {\n    /** ABI path: seed.seed_len */\n    readonly seed_seed_len: bigint;\n  };\n\n  export const ParamKeys = Object.freeze({\n    seed_seed_len: \"seed.seed_len\",\n  } as const);\n\n  export const Params = {\n    fromValues(input: { seed_seed_len: number | bigint }): Params {\n      return {\n        seed_seed_len: __tnToBigInt(input.seed_seed_len),\n      };\n    },\n    fromBuilder(source: { dynamicParams(): Params } | { params: Params } | Params): Params {\n      if ((source as { dynamicParams?: () => Params }).dynamicParams) {\n        return (source as { dynamicParams(): Params }).dynamicParams();\n      }\n      if ((source as { params?: Params }).params) {\n        return (source as { params: Params }).params;\n      }\n      return source as Params;\n    }\n  };\n\n  export function params(input: { seed_seed_len: number | bigint }): Params {\n    return Params.fromValues(input);\n  }\n}\n\nexport class CreateArgsBuilder {\n  private buffer: Uint8Array;\n  private view: DataView;\n  private __tnCachedParams: CreateArgs.Params | null = null;\n  private __tnLastBuffer: Uint8Array | null = null;\n  private __tnLastParams: CreateArgs.Params | null = null;\n  private __tnFam_seed: Uint8Array | null = null;\n  private __tnFam_seedCount: number | null = null;\n  private __tnFamWriter_seed?: __TnFamWriterResult<CreateArgsBuilder>;\n\n  constructor() {\n    this.buffer = new Uint8Array(46);\n    this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n  }\n\n  private __tnInvalidate(): void {\n    this.__tnCachedParams = null;\n    this.__tnLastBuffer = null;\n    this.__tnLastParams = null;\n  }\n\n  set_buffer_account_idx(value: number): this {\n    this.view.setUint16(0, value, true);\n    this.__tnInvalidate();\n    return this;\n  }\n\n  set_meta_account_idx(value: number): this {\n    this.view.setUint16(2, value, true);\n    this.__tnInvalidate();\n    return this;\n  }\n\n  set_authority_account_idx(value: number): this {\n    this.view.setUint16(4, value, true);\n    this.__tnInvalidate();\n    return this;\n  }\n\n  set_buffer_account_sz(value: number): this {\n    this.view.setUint32(6, value, true);\n    this.__tnInvalidate();\n    return this;\n  }\n\n  set_expected_account_hash(value: Uint8Array): this {\n    if (value.length !== 32) throw new Error(\"expected_account_hash expects 32 bytes\");\n    this.buffer.set(value, 10);\n    this.__tnInvalidate();\n    return this;\n  }\n\n  set_seed_len(value: number): this {\n    this.view.setUint32(42, value, true);\n    this.__tnInvalidate();\n    return this;\n  }\n\n  seed(): __TnFamWriterResult<CreateArgsBuilder> {\n    if (!this.__tnFamWriter_seed) {\n      this.__tnFamWriter_seed = __tnCreateFamWriter(this, \"seed\", (payload) => {\n        const bytes = new Uint8Array(payload);\n        const elementCount = bytes.length;\n        this.__tnFam_seed = bytes;\n        this.__tnFam_seedCount = elementCount;\n        this.set_seed_len(elementCount);\n        this.__tnInvalidate();\n      });\n    }\n    return this.__tnFamWriter_seed!;\n  }\n\n  build(): Uint8Array {\n    const params = this.__tnComputeParams();\n    const size = CreateArgs.footprintFromParams(params);\n    const buffer = new Uint8Array(size);\n    this.__tnWriteInto(buffer);\n    this.__tnValidateOrThrow(buffer, params);\n    return buffer;\n  }\n\n  buildInto(target: Uint8Array, offset = 0): Uint8Array {\n    const params = this.__tnComputeParams();\n    const size = CreateArgs.footprintFromParams(params);\n    if (target.length - offset < size) throw new Error(\"CreateArgsBuilder: target buffer too small\");\n    const slice = target.subarray(offset, offset + size);\n    this.__tnWriteInto(slice);\n    this.__tnValidateOrThrow(slice, params);\n    return target;\n  }\n\n  finish(): CreateArgs {\n    const buffer = this.build();\n    const params = this.__tnLastParams ?? this.__tnComputeParams();\n    const view = CreateArgs.from_array(buffer, { params });\n    if (!view) throw new Error(\"CreateArgsBuilder: failed to finalize view\");\n    return view;\n  }\n\n  finishView(): CreateArgs {\n    return this.finish();\n  }\n\n  dynamicParams(): CreateArgs.Params {\n    return this.__tnComputeParams();\n  }\n\n  private __tnComputeParams(): CreateArgs.Params {\n    if (this.__tnCachedParams) return this.__tnCachedParams;\n    const params = CreateArgs.Params.fromValues({\n      seed_seed_len: (() => { if (this.__tnFam_seedCount === null) throw new Error(\"CreateArgsBuilder: field 'seed' must be written before computing params\"); return __tnToBigInt(this.__tnFam_seedCount); })(),\n    });\n    this.__tnCachedParams = params;\n    return params;\n  }\n\n  private __tnWriteInto(target: Uint8Array): void {\n    target.set(this.buffer, 0);\n    let cursor = this.buffer.length;\n    const __tnLocal_seed_bytes = this.__tnFam_seed;\n    if (!__tnLocal_seed_bytes) throw new Error(\"CreateArgsBuilder: field 'seed' must be written before build\");\n    target.set(__tnLocal_seed_bytes, cursor);\n    cursor += __tnLocal_seed_bytes.length;\n  }\n\n  private __tnValidateOrThrow(buffer: Uint8Array, params: CreateArgs.Params): void {\n    const result = CreateArgs.validate(buffer, { params });\n    if (!result.ok) {\n      throw new Error(`${ CreateArgs }Builder: builder produced invalid buffer (code=${result.code ?? \"unknown\"})`);\n    }\n    this.__tnLastParams = result.params ?? params;\n    this.__tnLastBuffer = buffer;\n  }\n}\n\n__tnRegisterFootprint(\"CreateArgs\", (params) => CreateArgs.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"CreateArgs\", (buffer, params) => CreateArgs.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"CreateArgs\", (buffer) => { const result = CreateArgs.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n\n/* ----- TYPE DEFINITION FOR FinalizeArgs ----- */\n\nconst __tn_ir_FinalizeArgs = {\n  typeName: \"FinalizeArgs\",\n  root: { op: \"const\", value: 36n }\n} as const;\n\nexport class FinalizeArgs {\n  private view: DataView;\n\n  private constructor(private buffer: Uint8Array) {\n    this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n  }\n\n  static __tnCreateView(buffer: Uint8Array, opts?: { fieldContext?: Record<string, number | bigint> }): FinalizeArgs {\n    if (!buffer || buffer.length === undefined) throw new Error(\"FinalizeArgs.__tnCreateView requires a Uint8Array\");\n    return new FinalizeArgs(new Uint8Array(buffer));\n  }\n\n  static builder(): FinalizeArgsBuilder {\n    return new FinalizeArgsBuilder();\n  }\n\n  static fromBuilder(builder: FinalizeArgsBuilder): FinalizeArgs | null {\n    const buffer = builder.build();\n    return FinalizeArgs.from_array(buffer);\n  }\n\n  get_buffer_account_idx(): number {\n    const offset = 0;\n    return this.view.getUint16(offset, true); /* little-endian */\n  }\n\n  set_buffer_account_idx(value: number): void {\n    const offset = 0;\n    this.view.setUint16(offset, value, true); /* little-endian */\n  }\n\n  get buffer_account_idx(): number {\n    return this.get_buffer_account_idx();\n  }\n\n  set buffer_account_idx(value: number) {\n    this.set_buffer_account_idx(value);\n  }\n\n  get_meta_account_idx(): number {\n    const offset = 2;\n    return this.view.getUint16(offset, true); /* little-endian */\n  }\n\n  set_meta_account_idx(value: number): void {\n    const offset = 2;\n    this.view.setUint16(offset, value, true); /* little-endian */\n  }\n\n  get meta_account_idx(): number {\n    return this.get_meta_account_idx();\n  }\n\n  set meta_account_idx(value: number) {\n    this.set_meta_account_idx(value);\n  }\n\n  get_expected_account_hash(): Hash {\n    const offset = 4;\n    const slice = this.buffer.subarray(offset, offset + 32);\n    return Hash.from_array(slice)!;\n  }\n\n  set_expected_account_hash(value: Hash): void {\n    /* Copy bytes from source struct to this field */\n    const sourceBytes = (value as any).buffer as Uint8Array;\n    const offset = 4;\n    this.buffer.set(sourceBytes, offset);\n  }\n\n  get expected_account_hash(): Hash {\n    return this.get_expected_account_hash();\n  }\n\n  set expected_account_hash(value: Hash) {\n    this.set_expected_account_hash(value);\n  }\n\n  private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n    return __tnEvalFootprint(__tn_ir_FinalizeArgs.root, { params: __tnParams });\n  }\n\n  private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n    return __tnValidateIrTree(__tn_ir_FinalizeArgs, buffer, __tnParams);\n  }\n\n  static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n    return this.__tnFootprintInternal(__tnParams);\n  }\n\n  static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n    return this.__tnValidateInternal(buffer, __tnParams);\n  }\n\n  static footprintIr(): bigint {\n    return this.__tnFootprintInternal(Object.create(null));\n  }\n\n  static footprint(): number {\n    const irResult = this.footprintIr();\n      const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n    if (__tnBigIntGreaterThan(irResult, maxSafe)) {\n      throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for FinalizeArgs');\n    }\n    return __tnBigIntToNumber(irResult, 'FinalizeArgs::footprint');\n  }\n\n  static validate(buffer: Uint8Array, _opts?: { params?: never }): { ok: boolean; code?: string; consumed?: number } {\n    if (buffer.length < 36) return { ok: false, code: \"tn.buffer_too_small\", consumed: 36 };\n    return { ok: true, consumed: 36 };\n  }\n\n  static from_array(buffer: Uint8Array): FinalizeArgs | null {\n    if (!buffer || buffer.length === undefined) {\n      return null;\n    }\n    const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    const validation = this.validate(buffer);\n    if (!validation.ok) {\n      return null;\n    }\n    return new FinalizeArgs(buffer);\n  }\n\n}\n\nexport class FinalizeArgsBuilder {\n  private buffer: Uint8Array;\n  private view: DataView;\n\n  constructor() {\n    this.buffer = new Uint8Array(36);\n    this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n  }\n\n  set_buffer_account_idx(value: number): this {\n    this.view.setUint16(0, value, true);\n    return this;\n  }\n\n  set_meta_account_idx(value: number): this {\n    this.view.setUint16(2, value, true);\n    return this;\n  }\n\n  set_expected_account_hash(value: Uint8Array): this {\n    if (value.length !== 32) throw new Error(\"expected_account_hash expects 32 bytes\");\n    this.buffer.set(value, 4);\n    return this;\n  }\n\n  build(): Uint8Array {\n    return this.buffer.slice();\n  }\n\n  buildInto(target: Uint8Array, offset = 0): Uint8Array {\n    if (target.length - offset < this.buffer.length) throw new Error(\"target buffer too small\");\n    target.set(this.buffer, offset);\n    return target;\n  }\n\n  finish(): FinalizeArgs {\n    const view = FinalizeArgs.from_array(this.buffer.slice());\n    if (!view) throw new Error(\"failed to build FinalizeArgs\");\n    return view;\n  }\n}\n\n__tnRegisterFootprint(\"FinalizeArgs\", (params) => FinalizeArgs.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"FinalizeArgs\", (buffer, params) => FinalizeArgs.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"FinalizeArgs\", (buffer) => { const result = FinalizeArgs.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n\n/* ----- TYPE DEFINITION FOR UploaderInstruction ----- */\n\nconst __tn_ir_UploaderInstruction = {\n  typeName: \"UploaderInstruction\",\n  root: { op: \"align\", alignment: 1, node: { op: \"add\", left: { op: \"align\", alignment: 4, node: { op: \"const\", value: 4n } }, right: { op: \"align\", alignment: 1, node: { op: \"field\", param: \"payload.payload_size\" } } } }\n} as const;\n\nexport class UploaderInstruction_payload_Inner {\n  private view: DataView;\n  private __tnFieldContext: Record<string, number | bigint> | null = null;\n  private constructor(private buffer: Uint8Array, private descriptor: __TnVariantDescriptor | null, fieldContext?: Record<string, number | bigint>) {\n    this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    this.__tnFieldContext = fieldContext ?? null;\n  }\n\n  static __tnCreate(payload: Uint8Array, descriptor: __TnVariantDescriptor | null, fieldContext?: Record<string, number | bigint>): UploaderInstruction_payload_Inner {\n    return new UploaderInstruction_payload_Inner(new Uint8Array(payload), descriptor, fieldContext);\n  }\n\n  bytes(): Uint8Array {\n    return new Uint8Array(this.buffer);\n  }\n\n  variant(): __TnVariantDescriptor | null {\n    return this.descriptor;\n  }\n\n  asCreate(): CreateArgs | null {\n    if (!this.descriptor || this.descriptor.tag !== 0) return null;\n    return CreateArgs.__tnCreateView(new Uint8Array(this.buffer), { fieldContext: this.__tnFieldContext ?? undefined });\n  }\n\n  asWrite(): WriteArgs | null {\n    if (!this.descriptor || this.descriptor.tag !== 1) return null;\n    return WriteArgs.__tnCreateView(new Uint8Array(this.buffer), { fieldContext: this.__tnFieldContext ?? undefined });\n  }\n\n  asDestroy(): DestroyArgs | null {\n    if (!this.descriptor || this.descriptor.tag !== 2) return null;\n    return DestroyArgs.__tnCreateView(new Uint8Array(this.buffer), { fieldContext: this.__tnFieldContext ?? undefined });\n  }\n\n  asFinalize(): FinalizeArgs | null {\n    if (!this.descriptor || this.descriptor.tag !== 3) return null;\n    return FinalizeArgs.__tnCreateView(new Uint8Array(this.buffer), { fieldContext: this.__tnFieldContext ?? undefined });\n  }\n\n}\n\nexport class UploaderInstruction {\n  private view: DataView;\n  private static readonly __tnFieldOffset_payload = 4;\n  private __tnParams: UploaderInstruction.Params;\n\n  private constructor(private buffer: Uint8Array, params?: UploaderInstruction.Params) {\n    this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    if (params) {\n      this.__tnParams = params;\n    } else {\n      const derived = UploaderInstruction.__tnExtractParams(this.view, buffer);\n      if (!derived) {\n        throw new Error(\"UploaderInstruction: failed to derive dynamic parameters\");\n      }\n      this.__tnParams = derived.params;\n    }\n  }\n\n  static __tnCreateView(buffer: Uint8Array, opts?: { params?: UploaderInstruction.Params, fieldContext?: Record<string, number | bigint> }): UploaderInstruction {\n    if (!buffer || buffer.length === undefined) throw new Error(\"UploaderInstruction.__tnCreateView requires a Uint8Array\");\n    let params = opts?.params ?? null;\n    if (!params) {\n      const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n      const derived = UploaderInstruction.__tnExtractParams(view, buffer);\n      if (!derived) throw new Error(\"UploaderInstruction.__tnCreateView: failed to derive params\");\n      params = derived.params;\n    }\n    const instance = new UploaderInstruction(new Uint8Array(buffer), params);\n    return instance;\n  }\n\n  dynamicParams(): UploaderInstruction.Params {\n    return this.__tnParams;\n  }\n\n  static builder(): UploaderInstructionBuilder {\n    return new UploaderInstructionBuilder();\n  }\n\n  static fromBuilder(builder: UploaderInstructionBuilder): UploaderInstruction | null {\n    const buffer = builder.build();\n    const params = builder.dynamicParams();\n    return UploaderInstruction.from_array(buffer, { params });\n  }\n\n  static readonly payloadVariantDescriptors = Object.freeze([\n    {\n      name: \"create\",\n      tag: 0,\n      payloadSize: null,\n      payloadType: \"UploaderInstruction::payload::create\",\n      createPayloadBuilder: () => __tnMaybeCallBuilder(CreateArgs),\n    },\n    {\n      name: \"write\",\n      tag: 1,\n      payloadSize: null,\n      payloadType: \"UploaderInstruction::payload::write\",\n      createPayloadBuilder: () => __tnMaybeCallBuilder(WriteArgs),\n    },\n    {\n      name: \"destroy\",\n      tag: 2,\n      payloadSize: 4,\n      payloadType: \"UploaderInstruction::payload::destroy\",\n      createPayloadBuilder: () => __tnMaybeCallBuilder(DestroyArgs),\n    },\n    {\n      name: \"finalize\",\n      tag: 3,\n      payloadSize: 36,\n      payloadType: \"UploaderInstruction::payload::finalize\",\n      createPayloadBuilder: () => __tnMaybeCallBuilder(FinalizeArgs),\n    },\n  ] as const);\n\n  static __tnComputeSequentialLayout(view: DataView, buffer: Uint8Array): { params: Record<string, bigint> | null; offsets: Record<string, number> | null; derived: Record<string, bigint> | null } | null {\n    const __tnLength = buffer.length;\n    let __tnParamSeq_payload_payload_size: bigint | null = null;\n    let __tnFieldValue_tag: number | null = null;\n    let __tnCursorMutable = 0;\n    if (__tnCursorMutable + 4 > __tnLength) return null;\n    const __tnRead_tag = view.getUint32(__tnCursorMutable, true);\n    __tnFieldValue_tag = __tnRead_tag;\n    __tnCursorMutable += 4;\n    const __tnEnumTagValue_payload = __tnFieldValue_tag;\n    if (__tnEnumTagValue_payload === null) return null;\n    let __tnEnumSize_payload = 0;\n    switch (Number(__tnEnumTagValue_payload)) {\n      case 0: break;\n      case 1: break;\n      case 2: break;\n      case 3: break;\n      default: return null;\n    }\n    if (__tnCursorMutable > __tnLength) return null;\n    __tnEnumSize_payload = __tnLength - __tnCursorMutable;\n    __tnCursorMutable = __tnLength;\n    __tnParamSeq_payload_payload_size = __tnToBigInt(__tnEnumSize_payload);\n    const params: Record<string, bigint> = Object.create(null);\n    if (__tnParamSeq_payload_payload_size === null) return null;\n    params[\"payload_payload_size\"] = __tnParamSeq_payload_payload_size as bigint;\n    return { params, offsets: null, derived: null };\n  }\n\n  private static __tnExtractParams(view: DataView, buffer: Uint8Array): { params: UploaderInstruction.Params; derived: Record<string, bigint> | null } | null {\n    if (buffer.length < 4) {\n      return null;\n    }\n    const __tnParam_payload_tag = __tnToBigInt(view.getUint32(0, true));\n    const __tnLayout = UploaderInstruction.__tnComputeSequentialLayout(view, buffer);\n    if (!__tnLayout || !__tnLayout.params) return null;\n    const __tnSeqParams = __tnLayout.params;\n    const __tnParamSeq_payload_payload_size = __tnSeqParams[\"payload_payload_size\"];\n    if (__tnParamSeq_payload_payload_size === undefined) return null;\n    const __tnExtractedParams = UploaderInstruction.Params.fromValues({\n      payload_payload_size: __tnParamSeq_payload_payload_size as bigint,\n      payload_tag: __tnParam_payload_tag,\n    });\n    return { params: __tnExtractedParams, derived: null };\n  }\n\n  get_tag(): number {\n    const offset = 0;\n    return this.view.getUint32(offset, true); /* little-endian */\n  }\n\n  set_tag(value: number): void {\n    const offset = 0;\n    this.view.setUint32(offset, value, true); /* little-endian */\n  }\n\n  get tag(): number {\n    return this.get_tag();\n  }\n\n  set tag(value: number) {\n    this.set_tag(value);\n  }\n\n  payloadVariant(): typeof UploaderInstruction.payloadVariantDescriptors[number] | null {\n    const tag = this.view.getUint8(0);\n    return UploaderInstruction.payloadVariantDescriptors.find((variant) => variant.tag === tag) ?? null;\n  }\n\n  payload(): UploaderInstruction_payload_Inner {\n    const descriptor = this.payloadVariant();\n    if (!descriptor) throw new Error(\"UploaderInstruction: unknown payload variant\");\n    const offset = UploaderInstruction.__tnFieldOffset_payload;\n    const remaining = this.buffer.length - offset;\n    const payloadLength = descriptor.payloadSize ?? remaining;\n    if (payloadLength < 0 || offset + payloadLength > this.buffer.length) throw new Error(\"UploaderInstruction: payload exceeds buffer bounds\");\n    const slice = this.buffer.subarray(offset, offset + payloadLength);\n    return UploaderInstruction_payload_Inner.__tnCreate(slice, descriptor, undefined);\n  }\n  private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n    return __tnEvalFootprint(__tn_ir_UploaderInstruction.root, { params: __tnParams });\n  }\n\n  private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n    return __tnValidateIrTree(__tn_ir_UploaderInstruction, buffer, __tnParams);\n  }\n\n  static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n    return this.__tnFootprintInternal(__tnParams);\n  }\n\n  static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n    return this.__tnValidateInternal(buffer, __tnParams);\n  }\n\n  static footprintIr(payload_payload_size: number | bigint, payload_tag: number | bigint): bigint {\n    const params = UploaderInstruction.Params.fromValues({\n      payload_payload_size: payload_payload_size,\n      payload_tag: payload_tag,\n    });\n    return this.footprintIrFromParams(params);\n  }\n\n  private static __tnPackParams(params: UploaderInstruction.Params): Record<string, bigint> {\n    const record: Record<string, bigint> = Object.create(null);\n    record[\"payload.payload_size\"] = params.payload_payload_size;\n    record[\"payload.tag\"] = params.payload_tag;\n    return record;\n  }\n\n  static footprintIrFromParams(params: UploaderInstruction.Params): bigint {\n    const __tnParams = this.__tnPackParams(params);\n    return this.__tnFootprintInternal(__tnParams);\n  }\n\n  static footprintFromParams(params: UploaderInstruction.Params): number {\n    const irResult = this.footprintIrFromParams(params);\n    const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n    if (__tnBigIntGreaterThan(irResult, maxSafe)) throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for UploaderInstruction');\n    return __tnBigIntToNumber(irResult, 'UploaderInstruction::footprintFromParams');\n  }\n\n  static footprintFromValues(input: { payload_payload_size: number | bigint, payload_tag: number | bigint }): number {\n    const params = UploaderInstruction.params(input);\n    return this.footprintFromParams(params);\n  }\n\n  static footprint(params: UploaderInstruction.Params): number {\n    return this.footprintFromParams(params);\n  }\n\n  static validate(buffer: Uint8Array, opts?: { params?: UploaderInstruction.Params }): { ok: boolean; code?: string; consumed?: number; params?: UploaderInstruction.Params } {\n    if (!buffer || buffer.length === undefined) {\n      return { ok: false, code: \"tn.invalid_buffer\" };\n    }\n    const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    let params = opts?.params ?? null;\n    if (!params) {\n      const extracted = this.__tnExtractParams(view, buffer);\n      if (!extracted) return { ok: false, code: \"tn.param_extraction_failed\" };\n      params = extracted.params;\n    }\n    const __tnParamsRec = this.__tnPackParams(params);\n    const irResult = this.__tnValidateInternal(buffer, __tnParamsRec);\n    if (!irResult.ok) {\n      return { ok: false, code: irResult.code, consumed: irResult.consumed ? __tnBigIntToNumber(irResult.consumed, 'UploaderInstruction::validate') : undefined, params };\n    }\n    const consumed = irResult.consumed ? __tnBigIntToNumber(irResult.consumed, 'UploaderInstruction::validate') : undefined;\n    return { ok: true, consumed, params };\n  }\n\n  static from_array(buffer: Uint8Array, opts?: { params?: UploaderInstruction.Params }): UploaderInstruction | null {\n    if (!buffer || buffer.length === undefined) {\n      return null;\n    }\n    const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    let params = opts?.params ?? null;\n    if (!params) {\n      const derived = this.__tnExtractParams(view, buffer);\n      if (!derived) return null;\n      params = derived.params;\n    }\n    const validation = this.validate(buffer, { params });\n    if (!validation.ok) {\n      return null;\n    }\n    const cached = validation.params ?? params;\n    const state = new UploaderInstruction(buffer, cached);\n    return state;\n  }\n\n\n}\n\nexport namespace UploaderInstruction {\n  export type Params = {\n    /** ABI path: payload.payload_size */\n    readonly payload_payload_size: bigint;\n    /** ABI path: payload.tag */\n    readonly payload_tag: bigint;\n  };\n\n  export const ParamKeys = Object.freeze({\n    payload_payload_size: \"payload.payload_size\",\n    payload_tag: \"payload.tag\",\n  } as const);\n\n  export const Params = {\n    fromValues(input: { payload_payload_size: number | bigint, payload_tag: number | bigint }): Params {\n      return {\n        payload_payload_size: __tnToBigInt(input.payload_payload_size),\n        payload_tag: __tnToBigInt(input.payload_tag),\n      };\n    },\n    fromBuilder(source: { dynamicParams(): Params } | { params: Params } | Params): Params {\n      if ((source as { dynamicParams?: () => Params }).dynamicParams) {\n        return (source as { dynamicParams(): Params }).dynamicParams();\n      }\n      if ((source as { params?: Params }).params) {\n        return (source as { params: Params }).params;\n      }\n      return source as Params;\n    }\n  };\n\n  export function params(input: { payload_payload_size: number | bigint, payload_tag: number | bigint }): Params {\n    return Params.fromValues(input);\n  }\n}\n\nexport class UploaderInstructionBuilder {\n  private __tnPrefixBuffer: Uint8Array;\n  private __tnPrefixView: DataView;\n  private __tnField_tag: number | null = null;\n  private __tnPayload_payload: { descriptor: typeof UploaderInstruction.payloadVariantDescriptors[number]; bytes: Uint8Array } | null = null;\n  private __tnCachedParams: UploaderInstruction.Params | null = null;\n  private __tnLastBuffer: Uint8Array | null = null;\n  private __tnLastParams: UploaderInstruction.Params | null = null;\n  private __tnVariantSelector_payload?: __TnVariantSelectorResult<UploaderInstructionBuilder>;\n\n  constructor() {\n    this.__tnPrefixBuffer = new Uint8Array(4);\n    this.__tnPrefixView = new DataView(this.__tnPrefixBuffer.buffer, this.__tnPrefixBuffer.byteOffset, this.__tnPrefixBuffer.byteLength);\n  }\n\n  private __tnInvalidate(): void {\n    this.__tnCachedParams = null;\n    this.__tnLastBuffer = null;\n    this.__tnLastParams = null;\n  }\n\n  private __tnAssign_tag(value: number): void {\n    this.__tnField_tag = value;\n    this.__tnInvalidate();\n  }\n\n  set_tag(value: number): this {\n    this.__tnAssign_tag(value);\n    return this;\n  }\n\n  payload(): __TnVariantSelectorResult<UploaderInstructionBuilder> {\n    if (!this.__tnVariantSelector_payload) {\n      this.__tnVariantSelector_payload = __tnCreateVariantSelector(this, UploaderInstruction.payloadVariantDescriptors, (descriptor, payload) => {\n        this.__tnPayload_payload = { descriptor, bytes: new Uint8Array(payload) };\n        this.__tnAssign_tag(descriptor.tag);\n      });\n    }\n    return this.__tnVariantSelector_payload!;\n  }\n\n  build(): Uint8Array {\n    const params = this.__tnComputeParams();\n    if (this.__tnField_tag === null) throw new Error(\"UploaderInstructionBuilder: field 'tag' must be set before build\");\n    if (!this.__tnPayload_payload) throw new Error(\"UploaderInstructionBuilder: payload variant not selected\");\n    const payloadLength = this.__tnPayload_payload.bytes.length;\n    const requiredSize = 4 + payloadLength;\n    const footprintSize = UploaderInstruction.footprintFromParams(params);\n    const size = Math.max(requiredSize, footprintSize);\n    const buffer = new Uint8Array(size);\n    this.__tnWriteInto(buffer);\n    this.__tnValidateOrThrow(buffer, params);\n    return buffer;\n  }\n\n  buildInto(target: Uint8Array, offset = 0): Uint8Array {\n    const params = this.__tnComputeParams();\n    if (this.__tnField_tag === null) throw new Error(\"UploaderInstructionBuilder: field 'tag' must be set before build\");\n    if (!this.__tnPayload_payload) throw new Error(\"UploaderInstructionBuilder: payload variant not selected\");\n    const payloadLength = this.__tnPayload_payload.bytes.length;\n    const requiredSize = 4 + payloadLength;\n    const footprintSize = UploaderInstruction.footprintFromParams(params);\n    const size = Math.max(requiredSize, footprintSize);\n    if (target.length - offset < size) throw new Error(\"UploaderInstructionBuilder: target buffer too small\");\n    const slice = target.subarray(offset, offset + size);\n    this.__tnWriteInto(slice);\n    this.__tnValidateOrThrow(slice, params);\n    return target;\n  }\n\n  finish(): UploaderInstruction {\n    const buffer = this.build();\n    const params = this.__tnLastParams ?? this.__tnComputeParams();\n    const view = UploaderInstruction.from_array(buffer, { params });\n    if (!view) throw new Error(\"UploaderInstructionBuilder: failed to finalize view\");\n    return view;\n  }\n\n  finishView(): UploaderInstruction {\n    return this.finish();\n  }\n\n  dynamicParams(): UploaderInstruction.Params {\n    return this.__tnComputeParams();\n  }\n\n  private __tnComputeParams(): UploaderInstruction.Params {\n    if (this.__tnCachedParams) return this.__tnCachedParams;\n    const params = UploaderInstruction.Params.fromValues({\n      payload_payload_size: (() => { if (!this.__tnPayload_payload) throw new Error(\"UploaderInstructionBuilder: payload 'payload' must be selected before build\"); return __tnToBigInt(this.__tnPayload_payload.bytes.length); })(),\n      payload_tag: (() => { if (this.__tnField_tag === null) throw new Error(\"UploaderInstructionBuilder: missing enum tag\"); return __tnToBigInt(this.__tnField_tag); })(),\n    });\n    this.__tnCachedParams = params;\n    return params;\n  }\n\n  private __tnWriteInto(target: Uint8Array): void {\n    if (this.__tnField_tag === null) throw new Error(\"UploaderInstructionBuilder: field 'tag' must be set before build\");\n    if (!this.__tnPayload_payload) throw new Error(\"UploaderInstructionBuilder: payload variant not selected\");\n    const view = new DataView(target.buffer, target.byteOffset, target.byteLength);\n    target.set(this.__tnPrefixBuffer, 0);\n    view.setUint32(0, this.__tnField_tag, true);\n    target.set(this.__tnPayload_payload.bytes, 4);\n  }\n\n  private __tnValidateOrThrow(buffer: Uint8Array, params: UploaderInstruction.Params): void {\n    const result = UploaderInstruction.validate(buffer, { params });\n    if (!result.ok) {\n      throw new Error(`${ UploaderInstruction }Builder: builder produced invalid buffer (code=${result.code ?? \"unknown\"})`);\n    }\n    this.__tnLastParams = result.params ?? params;\n    this.__tnLastBuffer = buffer;\n  }\n}\n\n__tnRegisterFootprint(\"UploaderInstruction\", (params) => UploaderInstruction.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"UploaderInstruction\", (buffer, params) => UploaderInstruction.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"UploaderInstruction\", (buffer) => { const result = UploaderInstruction.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n","import { 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","import {\n  CreateArgsBuilder,\n  DestroyArgsBuilder,\n  FinalizeArgsBuilder,\n  UploaderInstruction,\n  UploaderInstructionBuilder,\n  WriteArgsBuilder,\n} from './abi/thru/program/uploader/types';\nimport {\n  accountIndex,\n  assertU16,\n  assertU32,\n  exactBytes,\n  normalizeSeed,\n  type AccountLookupContext,\n  type InstructionData,\n} from '../utils/helpers';\nimport type {\n  CreateUploadBufferInstructionArgs,\n  DestroyUploadInstructionArgs,\n  FinalizeUploadInstructionArgs,\n  UploaderInstructionArgs,\n  WriteUploadInstructionArgs,\n} from './types';\n\ntype UploaderVariant =\n  (typeof UploaderInstruction.payloadVariantDescriptors)[number]['name'];\n\nfunction envelope(\n  variant: UploaderVariant,\n  payload: Uint8Array\n): Uint8Array {\n  return new UploaderInstructionBuilder()\n    .payload()\n    .select(variant)\n    .writePayload(payload)\n    .finish()\n    .build();\n}\n\nfunction validateIndices(args: {\n  bufferAccountIdx: number;\n  metaAccountIdx: number;\n}): void {\n  assertU16(args.bufferAccountIdx, 'bufferAccountIdx');\n  assertU16(args.metaAccountIdx, 'metaAccountIdx');\n}\n\nexport function buildUploaderInstructionBytes(\n  args: UploaderInstructionArgs\n): Uint8Array {\n  validateIndices(args);\n  switch (args.kind) {\n    case 'create': {\n      assertU16(args.authorityAccountIdx, 'authorityAccountIdx');\n      assertU32(args.bufferSize, 'bufferSize');\n      const builder = new CreateArgsBuilder()\n        .set_buffer_account_idx(args.bufferAccountIdx)\n        .set_meta_account_idx(args.metaAccountIdx)\n        .set_authority_account_idx(args.authorityAccountIdx)\n        .set_buffer_account_sz(args.bufferSize)\n        .set_expected_account_hash(\n          exactBytes(args.expectedHash, 32, 'expectedHash')\n        );\n      builder.seed().write(normalizeSeed(args.seed)).finish();\n      return envelope('create', builder.build());\n    }\n    case 'write': {\n      assertU32(args.offset, 'offset');\n      assertU32(args.data.length, 'data length');\n      const builder = new WriteArgsBuilder()\n        .set_buffer_account_idx(args.bufferAccountIdx)\n        .set_meta_account_idx(args.metaAccountIdx)\n        .set_data_offset(args.offset);\n      builder.data().write(args.data).finish();\n      return envelope('write', builder.build());\n    }\n    case 'destroy':\n      return envelope(\n        'destroy',\n        new DestroyArgsBuilder()\n          .set_buffer_account_idx(args.bufferAccountIdx)\n          .set_meta_account_idx(args.metaAccountIdx)\n          .build()\n      );\n    case 'finalize':\n      return envelope(\n        'finalize',\n        new FinalizeArgsBuilder()\n          .set_buffer_account_idx(args.bufferAccountIdx)\n          .set_meta_account_idx(args.metaAccountIdx)\n          .set_expected_account_hash(\n            exactBytes(args.expectedHash, 32, 'expectedHash')\n          )\n          .build()\n      );\n  }\n}\n\nfunction indices(\n  context: AccountLookupContext,\n  args: { bufferAccount: Uint8Array; metaAccount: Uint8Array }\n): { bufferAccountIdx: number; metaAccountIdx: number } {\n  return {\n    bufferAccountIdx: accountIndex(\n      context,\n      args.bufferAccount,\n      'bufferAccount'\n    ),\n    metaAccountIdx: accountIndex(context, args.metaAccount, 'metaAccount'),\n  };\n}\n\nexport function createUploadBufferInstruction(\n  args: CreateUploadBufferInstructionArgs\n): InstructionData {\n  return async (context) =>\n    buildUploaderInstructionBytes({\n      kind: 'create',\n      ...indices(context, args),\n      authorityAccountIdx: accountIndex(\n        context,\n        args.authorityAccount,\n        'authorityAccount'\n      ),\n      bufferSize: args.bufferSize,\n      expectedHash: args.expectedHash,\n      seed: args.seed,\n    });\n}\n\nexport function createWriteUploadInstruction(\n  args: WriteUploadInstructionArgs\n): InstructionData {\n  return async (context) =>\n    buildUploaderInstructionBytes({\n      kind: 'write',\n      ...indices(context, args),\n      data: args.data,\n      offset: args.offset,\n    });\n}\n\nexport function createDestroyUploadInstruction(\n  args: DestroyUploadInstructionArgs\n): InstructionData {\n  return async (context) =>\n    buildUploaderInstructionBytes({\n      kind: 'destroy',\n      ...indices(context, args),\n    });\n}\n\nexport function createFinalizeUploadInstruction(\n  args: FinalizeUploadInstructionArgs\n): InstructionData {\n  return async (context) =>\n    buildUploaderInstructionBytes({\n      kind: 'finalize',\n      ...indices(context, args),\n      expectedHash: args.expectedHash,\n    });\n}\n"]}