{"version":3,"sources":["../../../thru-ts-client-sdk/domain/programs/compression/abi/thru/blockchain/state_proof/types.ts","../../../thru-ts-client-sdk/domain/programs/compression/abi/thru/program/compression/types.ts","../../../thru-ts-client-sdk/domain/programs/compression/instructions.ts"],"names":["remainder","low","high","StateProof","__tnWarnings","__tnHasNativeBigInt","__tnHasBigIntDataView","__tnConsole","__tnLogWarn","__tnWarnOnce","__tnResolveBuilderInput","__tnCreateVariantSelector","__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","CompressArgs","params","DecompressArgs","CompressionInstruction"],"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 Hash ----- */\n\nconst __tn_ir_Hash = {\n  typeName: \"Hash\",\n  root: { op: \"const\", value: 32n }\n} as const;\n\nexport class Hash {\n  private view: DataView;\n\n  private constructor(private buffer: Uint8Array) {\n    this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n  }\n\n  static __tnCreateView(buffer: Uint8Array, opts?: { fieldContext?: Record<string, number | bigint> }): Hash {\n    if (!buffer || buffer.length === undefined) throw new Error(\"Hash.__tnCreateView requires a Uint8Array\");\n    return new Hash(new Uint8Array(buffer));\n  }\n\n  static builder(): HashBuilder {\n    return new HashBuilder();\n  }\n\n  static fromBuilder(builder: HashBuilder): Hash | null {\n    const buffer = builder.build();\n    return Hash.from_array(buffer);\n  }\n\n  get_bytes(): number[] {\n    const offset = 0;\n    const result: number[] = [];\n    for (let i = 0; i < 32; i++) {\n      result.push(this.view.getUint8((offset + i * 1)));\n    }\n    return result;\n  }\n\n  set_bytes(value: number[]): void {\n    const offset = 0;\n    if (value.length !== 32) {\n      throw new Error('Array length must be 32');\n    }\n    for (let i = 0; i < 32; i++) {\n      this.view.setUint8((offset + i * 1), value[i]);\n    }\n  }\n\n  get bytes(): number[] {\n    return this.get_bytes();\n  }\n\n  set bytes(value: number[]) {\n    this.set_bytes(value);\n  }\n\n  private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n    return __tnEvalFootprint(__tn_ir_Hash.root, { params: __tnParams });\n  }\n\n  private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n    return __tnValidateIrTree(__tn_ir_Hash, buffer, __tnParams);\n  }\n\n  static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n    return this.__tnFootprintInternal(__tnParams);\n  }\n\n  static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n    return this.__tnValidateInternal(buffer, __tnParams);\n  }\n\n  static footprintIr(): bigint {\n    return this.__tnFootprintInternal(Object.create(null));\n  }\n\n  static footprint(): number {\n    const irResult = this.footprintIr();\n      const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n    if (__tnBigIntGreaterThan(irResult, maxSafe)) {\n      throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for Hash');\n    }\n    return __tnBigIntToNumber(irResult, 'Hash::footprint');\n  }\n\n  static validate(buffer: Uint8Array, _opts?: { params?: never }): { ok: boolean; code?: string; consumed?: number } {\n    if (buffer.length < 32) return { ok: false, code: \"tn.buffer_too_small\", consumed: 32 };\n    return { ok: true, consumed: 32 };\n  }\n\n  static from_array(buffer: Uint8Array): Hash | null {\n    if (!buffer || buffer.length === undefined) {\n      return null;\n    }\n    const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    const validation = this.validate(buffer);\n    if (!validation.ok) {\n      return null;\n    }\n    return new Hash(buffer);\n  }\n\n}\n\nexport class HashBuilder {\n  private buffer: Uint8Array;\n  private view: DataView;\n\n  constructor() {\n    this.buffer = new Uint8Array(32);\n    this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n  }\n\n  set_bytes(values: number[]): this {\n    if (values.length !== 32) throw new Error(\"bytes expects 32 elements\");\n    for (let i = 0; i < values.length; i++) {\n      const byteOffset = 0 + i * 1;\n      this.view.setUint8(byteOffset, values[i]);\n    }\n    return this;\n  }\n\n  build(): Uint8Array {\n    return this.buffer.slice();\n  }\n\n  buildInto(target: Uint8Array, offset = 0): Uint8Array {\n    if (target.length - offset < this.buffer.length) throw new Error(\"target buffer too small\");\n    target.set(this.buffer, offset);\n    return target;\n  }\n\n  finish(): Hash {\n    const view = Hash.from_array(this.buffer.slice());\n    if (!view) throw new Error(\"failed to build Hash\");\n    return view;\n  }\n}\n\n__tnRegisterFootprint(\"Hash\", (params) => Hash.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"Hash\", (buffer, params) => Hash.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"Hash\", (buffer) => { const result = Hash.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n\n/* ----- TYPE DEFINITION FOR Pubkey ----- */\n\nconst __tn_ir_Pubkey = {\n  typeName: \"Pubkey\",\n  root: { op: \"const\", value: 32n }\n} as const;\n\nexport class Pubkey {\n  private view: DataView;\n\n  private constructor(private buffer: Uint8Array) {\n    this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n  }\n\n  static __tnCreateView(buffer: Uint8Array, opts?: { fieldContext?: Record<string, number | bigint> }): Pubkey {\n    if (!buffer || buffer.length === undefined) throw new Error(\"Pubkey.__tnCreateView requires a Uint8Array\");\n    return new Pubkey(new Uint8Array(buffer));\n  }\n\n  static builder(): PubkeyBuilder {\n    return new PubkeyBuilder();\n  }\n\n  static fromBuilder(builder: PubkeyBuilder): Pubkey | null {\n    const buffer = builder.build();\n    return Pubkey.from_array(buffer);\n  }\n\n  get_bytes(): number[] {\n    const offset = 0;\n    const result: number[] = [];\n    for (let i = 0; i < 32; i++) {\n      result.push(this.view.getUint8((offset + i * 1)));\n    }\n    return result;\n  }\n\n  set_bytes(value: number[]): void {\n    const offset = 0;\n    if (value.length !== 32) {\n      throw new Error('Array length must be 32');\n    }\n    for (let i = 0; i < 32; i++) {\n      this.view.setUint8((offset + i * 1), value[i]);\n    }\n  }\n\n  get bytes(): number[] {\n    return this.get_bytes();\n  }\n\n  set bytes(value: number[]) {\n    this.set_bytes(value);\n  }\n\n  private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n    return __tnEvalFootprint(__tn_ir_Pubkey.root, { params: __tnParams });\n  }\n\n  private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n    return __tnValidateIrTree(__tn_ir_Pubkey, buffer, __tnParams);\n  }\n\n  static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n    return this.__tnFootprintInternal(__tnParams);\n  }\n\n  static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n    return this.__tnValidateInternal(buffer, __tnParams);\n  }\n\n  static footprintIr(): bigint {\n    return this.__tnFootprintInternal(Object.create(null));\n  }\n\n  static footprint(): number {\n    const irResult = this.footprintIr();\n      const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n    if (__tnBigIntGreaterThan(irResult, maxSafe)) {\n      throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for Pubkey');\n    }\n    return __tnBigIntToNumber(irResult, 'Pubkey::footprint');\n  }\n\n  static validate(buffer: Uint8Array, _opts?: { params?: never }): { ok: boolean; code?: string; consumed?: number } {\n    if (buffer.length < 32) return { ok: false, code: \"tn.buffer_too_small\", consumed: 32 };\n    return { ok: true, consumed: 32 };\n  }\n\n  static from_array(buffer: Uint8Array): Pubkey | null {\n    if (!buffer || buffer.length === undefined) {\n      return null;\n    }\n    const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    const validation = this.validate(buffer);\n    if (!validation.ok) {\n      return null;\n    }\n    return new Pubkey(buffer);\n  }\n\n}\n\nexport class PubkeyBuilder {\n  private buffer: Uint8Array;\n  private view: DataView;\n\n  constructor() {\n    this.buffer = new Uint8Array(32);\n    this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n  }\n\n  set_bytes(values: number[]): this {\n    if (values.length !== 32) throw new Error(\"bytes expects 32 elements\");\n    for (let i = 0; i < values.length; i++) {\n      const byteOffset = 0 + i * 1;\n      this.view.setUint8(byteOffset, values[i]);\n    }\n    return this;\n  }\n\n  build(): Uint8Array {\n    return this.buffer.slice();\n  }\n\n  buildInto(target: Uint8Array, offset = 0): Uint8Array {\n    if (target.length - offset < this.buffer.length) throw new Error(\"target buffer too small\");\n    target.set(this.buffer, offset);\n    return target;\n  }\n\n  finish(): Pubkey {\n    const view = Pubkey.from_array(this.buffer.slice());\n    if (!view) throw new Error(\"failed to build Pubkey\");\n    return view;\n  }\n}\n\n__tnRegisterFootprint(\"Pubkey\", (params) => Pubkey.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"Pubkey\", (buffer, params) => Pubkey.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"Pubkey\", (buffer) => { const result = Pubkey.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n\n/* ----- TYPE DEFINITION FOR StateProofHeader ----- */\n\nconst __tn_ir_StateProofHeader = {\n  typeName: \"StateProofHeader\",\n  root: { op: \"const\", value: 40n }\n} as const;\n\nexport class StateProofHeader {\n  private view: DataView;\n\n  private constructor(private buffer: Uint8Array) {\n    this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n  }\n\n  static __tnCreateView(buffer: Uint8Array, opts?: { fieldContext?: Record<string, number | bigint> }): StateProofHeader {\n    if (!buffer || buffer.length === undefined) throw new Error(\"StateProofHeader.__tnCreateView requires a Uint8Array\");\n    return new StateProofHeader(new Uint8Array(buffer));\n  }\n\n  static builder(): StateProofHeaderBuilder {\n    return new StateProofHeaderBuilder();\n  }\n\n  static fromBuilder(builder: StateProofHeaderBuilder): StateProofHeader | null {\n    const buffer = builder.build();\n    return StateProofHeader.from_array(buffer);\n  }\n\n  get_type_slot(): bigint {\n    const offset = 0;\n    return this.view.getBigUint64(offset, true); /* little-endian */\n  }\n\n  set_type_slot(value: bigint): void {\n    const offset = 0;\n    this.view.setBigUint64(offset, value, true); /* little-endian */\n  }\n\n  get type_slot(): bigint {\n    return this.get_type_slot();\n  }\n\n  set type_slot(value: bigint) {\n    this.set_type_slot(value);\n  }\n\n  get_path_bitset(): Hash {\n    const offset = 8;\n    const slice = this.buffer.subarray(offset, offset + 32);\n    return Hash.from_array(slice)!;\n  }\n\n  set_path_bitset(value: Hash): void {\n    /* Copy bytes from source struct to this field */\n    const sourceBytes = (value as any).buffer as Uint8Array;\n    const offset = 8;\n    this.buffer.set(sourceBytes, offset);\n  }\n\n  get path_bitset(): Hash {\n    return this.get_path_bitset();\n  }\n\n  set path_bitset(value: Hash) {\n    this.set_path_bitset(value);\n  }\n\n  private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n    return __tnEvalFootprint(__tn_ir_StateProofHeader.root, { params: __tnParams });\n  }\n\n  private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n    return __tnValidateIrTree(__tn_ir_StateProofHeader, buffer, __tnParams);\n  }\n\n  static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n    return this.__tnFootprintInternal(__tnParams);\n  }\n\n  static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n    return this.__tnValidateInternal(buffer, __tnParams);\n  }\n\n  static footprintIr(): bigint {\n    return this.__tnFootprintInternal(Object.create(null));\n  }\n\n  static footprint(): number {\n    const irResult = this.footprintIr();\n      const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n    if (__tnBigIntGreaterThan(irResult, maxSafe)) {\n      throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for StateProofHeader');\n    }\n    return __tnBigIntToNumber(irResult, 'StateProofHeader::footprint');\n  }\n\n  static validate(buffer: Uint8Array, _opts?: { params?: never }): { ok: boolean; code?: string; consumed?: number } {\n    if (buffer.length < 40) return { ok: false, code: \"tn.buffer_too_small\", consumed: 40 };\n    return { ok: true, consumed: 40 };\n  }\n\n  static from_array(buffer: Uint8Array): StateProofHeader | null {\n    if (!buffer || buffer.length === undefined) {\n      return null;\n    }\n    const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    const validation = this.validate(buffer);\n    if (!validation.ok) {\n      return null;\n    }\n    return new StateProofHeader(buffer);\n  }\n\n}\n\nexport class StateProofHeaderBuilder {\n  private buffer: Uint8Array;\n  private view: DataView;\n\n  constructor() {\n    this.buffer = new Uint8Array(40);\n    this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n  }\n\n  set_type_slot(value: bigint): this {\n    const cast = __tnToBigInt(value);\n    this.view.setBigUint64(0, cast, true);\n    return this;\n  }\n\n  set_path_bitset(value: Uint8Array): this {\n    if (value.length !== 32) throw new Error(\"path_bitset expects 32 bytes\");\n    this.buffer.set(value, 8);\n    return this;\n  }\n\n  build(): Uint8Array {\n    return this.buffer.slice();\n  }\n\n  buildInto(target: Uint8Array, offset = 0): Uint8Array {\n    if (target.length - offset < this.buffer.length) throw new Error(\"target buffer too small\");\n    target.set(this.buffer, offset);\n    return target;\n  }\n\n  finish(): StateProofHeader {\n    const view = StateProofHeader.from_array(this.buffer.slice());\n    if (!view) throw new Error(\"failed to build StateProofHeader\");\n    return view;\n  }\n}\n\n__tnRegisterFootprint(\"StateProofHeader\", (params) => StateProofHeader.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"StateProofHeader\", (buffer, params) => StateProofHeader.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"StateProofHeader\", (buffer) => { const result = StateProofHeader.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n\n/* ----- TYPE DEFINITION FOR StateProof ----- */\n\nconst __tn_ir_StateProof = {\n  typeName: \"StateProof\",\n  root: { op: \"align\", alignment: 1, node: { op: \"add\", left: { op: \"align\", alignment: 1, node: { op: \"const\", value: 40n } }, right: { op: \"align\", alignment: 1, node: { op: \"field\", param: \"proof_body.payload_size\" } } } }\n} as const;\n\nexport class StateProof_proof_body_existing_Inner {\n  private view: DataView;\n  private __tnFieldContext: Record<string, number | bigint> | null = null;\n\n  private constructor(private buffer: Uint8Array, fieldContext?: Record<string, number | bigint>) {\n    this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    this.__tnFieldContext = fieldContext ?? null;\n  }\n\n  static __tnCreateView(buffer: Uint8Array, opts?: { fieldContext?: Record<string, number | bigint> }): StateProof_proof_body_existing_Inner {\n    if (!buffer || buffer.length === undefined) throw new Error(\"StateProof_proof_body_existing_Inner.__tnCreateView requires a Uint8Array\");\n    return new StateProof_proof_body_existing_Inner(new Uint8Array(buffer), opts?.fieldContext);\n  }\n\n  withFieldContext(context: Record<string, number | bigint>): this {\n    this.__tnFieldContext = context;\n    return this;\n  }\n\n  private __tnResolveFieldRef(path: string): number {\n    const getterName = `get_${path.replace(/[.]/g, '_')}`;\n    const getter = (this as any)[getterName];\n    if (typeof getter === \"function\") {\n      const value = getter.call(this);\n      return typeof value === \"bigint\" ? __tnBigIntToNumber(value, \"StateProof_proof_body_existing_Inner::__tnResolveFieldRef\") : value;\n    }\n    if (this.__tnFieldContext && Object.prototype.hasOwnProperty.call(this.__tnFieldContext, path)) {\n      const contextValue = this.__tnFieldContext[path];\n      return typeof contextValue === \"bigint\" ? __tnBigIntToNumber(contextValue, \"StateProof_proof_body_existing_Inner::__tnResolveFieldRef\") : contextValue;\n    }\n    throw new Error(\"StateProof_proof_body_existing_Inner: field reference '\" + path + \"' is not available; provide fieldContext when creating this view\");\n  }\n\n  get_sibling_hashes_length(): number {\n    return ((__tnPopcount(this.__tnResolveFieldRef(\"hdr.path_bitset.bytes.0\")) + __tnPopcount(this.__tnResolveFieldRef(\"hdr.path_bitset.bytes.1\"))) + (__tnPopcount(this.__tnResolveFieldRef(\"hdr.path_bitset.bytes.2\")) + __tnPopcount(this.__tnResolveFieldRef(\"hdr.path_bitset.bytes.3\"))));\n  }\n\n  get_sibling_hashes_at(index: number): Hash {\n    const offset = 0;\n    const slice = this.buffer.subarray((offset + index * 32), (offset + (index + 1) * 32));\n    return Hash.from_array(slice)!;\n  }\n\n  get_sibling_hashes(): Hash[] {\n    const len = this.get_sibling_hashes_length();\n    const result: Hash[] = [];\n    for (let i = 0; i < len; i++) {\n      result.push(this.get_sibling_hashes_at(i));\n    }\n    return result;\n  }\n\n  set_sibling_hashes_at(index: number, value: Hash): void {\n    const offset = 0;\n    const slice = this.buffer.subarray(offset + index * 32, offset + (index + 1) * 32);\n    slice.set(value['buffer']);\n  }\n\n  set_sibling_hashes(value: Hash[]): void {\n    const len = Math.min(this.get_sibling_hashes_length(), value.length);\n    for (let i = 0; i < len; i++) {\n      this.set_sibling_hashes_at(i, value[i]);\n    }\n  }\n\n  get sibling_hashes(): Hash[] {\n    return this.get_sibling_hashes();\n  }\n\n  set sibling_hashes(value: Hash[]) {\n    this.set_sibling_hashes(value);\n  }\n\n}\n\nexport class StateProof_proof_body_updating_Inner {\n  private view: DataView;\n  private __tnFieldContext: Record<string, number | bigint> | null = null;\n\n  private constructor(private buffer: Uint8Array, fieldContext?: Record<string, number | bigint>) {\n    this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    this.__tnFieldContext = fieldContext ?? null;\n  }\n\n  static __tnCreateView(buffer: Uint8Array, opts?: { fieldContext?: Record<string, number | bigint> }): StateProof_proof_body_updating_Inner {\n    if (!buffer || buffer.length === undefined) throw new Error(\"StateProof_proof_body_updating_Inner.__tnCreateView requires a Uint8Array\");\n    return new StateProof_proof_body_updating_Inner(new Uint8Array(buffer), opts?.fieldContext);\n  }\n\n  withFieldContext(context: Record<string, number | bigint>): this {\n    this.__tnFieldContext = context;\n    return this;\n  }\n\n  private __tnResolveFieldRef(path: string): number {\n    const getterName = `get_${path.replace(/[.]/g, '_')}`;\n    const getter = (this as any)[getterName];\n    if (typeof getter === \"function\") {\n      const value = getter.call(this);\n      return typeof value === \"bigint\" ? __tnBigIntToNumber(value, \"StateProof_proof_body_updating_Inner::__tnResolveFieldRef\") : value;\n    }\n    if (this.__tnFieldContext && Object.prototype.hasOwnProperty.call(this.__tnFieldContext, path)) {\n      const contextValue = this.__tnFieldContext[path];\n      return typeof contextValue === \"bigint\" ? __tnBigIntToNumber(contextValue, \"StateProof_proof_body_updating_Inner::__tnResolveFieldRef\") : contextValue;\n    }\n    throw new Error(\"StateProof_proof_body_updating_Inner: field reference '\" + path + \"' is not available; provide fieldContext when creating this view\");\n  }\n\n  get_existing_leaf_hash(): Hash {\n    const offset = 0;\n    const slice = this.buffer.subarray(offset, offset + 32);\n    return Hash.from_array(slice)!;\n  }\n\n  set_existing_leaf_hash(value: Hash): void {\n    /* Copy bytes from source struct to this field */\n    const sourceBytes = (value as any).buffer as Uint8Array;\n    const offset = 0;\n    this.buffer.set(sourceBytes, offset);\n  }\n\n  get existing_leaf_hash(): Hash {\n    return this.get_existing_leaf_hash();\n  }\n\n  set existing_leaf_hash(value: Hash) {\n    this.set_existing_leaf_hash(value);\n  }\n\n  get_sibling_hashes_length(): number {\n    return ((__tnPopcount(this.__tnResolveFieldRef(\"hdr.path_bitset.bytes.0\")) + __tnPopcount(this.__tnResolveFieldRef(\"hdr.path_bitset.bytes.1\"))) + (__tnPopcount(this.__tnResolveFieldRef(\"hdr.path_bitset.bytes.2\")) + __tnPopcount(this.__tnResolveFieldRef(\"hdr.path_bitset.bytes.3\"))));\n  }\n\n  get_sibling_hashes_at(index: number): Hash {\n    const offset = 32;\n    const slice = this.buffer.subarray((offset + index * 32), (offset + (index + 1) * 32));\n    return Hash.from_array(slice)!;\n  }\n\n  get_sibling_hashes(): Hash[] {\n    const len = this.get_sibling_hashes_length();\n    const result: Hash[] = [];\n    for (let i = 0; i < len; i++) {\n      result.push(this.get_sibling_hashes_at(i));\n    }\n    return result;\n  }\n\n  set_sibling_hashes_at(index: number, value: Hash): void {\n    const offset = 32;\n    const slice = this.buffer.subarray(offset + index * 32, offset + (index + 1) * 32);\n    slice.set(value['buffer']);\n  }\n\n  set_sibling_hashes(value: Hash[]): void {\n    const len = Math.min(this.get_sibling_hashes_length(), value.length);\n    for (let i = 0; i < len; i++) {\n      this.set_sibling_hashes_at(i, value[i]);\n    }\n  }\n\n  get sibling_hashes(): Hash[] {\n    return this.get_sibling_hashes();\n  }\n\n  set sibling_hashes(value: Hash[]) {\n    this.set_sibling_hashes(value);\n  }\n\n}\n\nexport class StateProof_proof_body_creation_Inner {\n  private view: DataView;\n  private __tnFieldContext: Record<string, number | bigint> | null = null;\n\n  private constructor(private buffer: Uint8Array, fieldContext?: Record<string, number | bigint>) {\n    this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    this.__tnFieldContext = fieldContext ?? null;\n  }\n\n  static __tnCreateView(buffer: Uint8Array, opts?: { fieldContext?: Record<string, number | bigint> }): StateProof_proof_body_creation_Inner {\n    if (!buffer || buffer.length === undefined) throw new Error(\"StateProof_proof_body_creation_Inner.__tnCreateView requires a Uint8Array\");\n    return new StateProof_proof_body_creation_Inner(new Uint8Array(buffer), opts?.fieldContext);\n  }\n\n  withFieldContext(context: Record<string, number | bigint>): this {\n    this.__tnFieldContext = context;\n    return this;\n  }\n\n  private __tnResolveFieldRef(path: string): number {\n    const getterName = `get_${path.replace(/[.]/g, '_')}`;\n    const getter = (this as any)[getterName];\n    if (typeof getter === \"function\") {\n      const value = getter.call(this);\n      return typeof value === \"bigint\" ? __tnBigIntToNumber(value, \"StateProof_proof_body_creation_Inner::__tnResolveFieldRef\") : value;\n    }\n    if (this.__tnFieldContext && Object.prototype.hasOwnProperty.call(this.__tnFieldContext, path)) {\n      const contextValue = this.__tnFieldContext[path];\n      return typeof contextValue === \"bigint\" ? __tnBigIntToNumber(contextValue, \"StateProof_proof_body_creation_Inner::__tnResolveFieldRef\") : contextValue;\n    }\n    throw new Error(\"StateProof_proof_body_creation_Inner: field reference '\" + path + \"' is not available; provide fieldContext when creating this view\");\n  }\n\n  get_existing_leaf_pubkey(): Pubkey {\n    const offset = 0;\n    const slice = this.buffer.subarray(offset, offset + 32);\n    return Pubkey.from_array(slice)!;\n  }\n\n  set_existing_leaf_pubkey(value: Pubkey): void {\n    /* Copy bytes from source struct to this field */\n    const sourceBytes = (value as any).buffer as Uint8Array;\n    const offset = 0;\n    this.buffer.set(sourceBytes, offset);\n  }\n\n  get existing_leaf_pubkey(): Pubkey {\n    return this.get_existing_leaf_pubkey();\n  }\n\n  set existing_leaf_pubkey(value: Pubkey) {\n    this.set_existing_leaf_pubkey(value);\n  }\n\n  get_existing_leaf_hash(): Hash {\n    const offset = 32;\n    const slice = this.buffer.subarray(offset, offset + 32);\n    return Hash.from_array(slice)!;\n  }\n\n  set_existing_leaf_hash(value: Hash): void {\n    /* Copy bytes from source struct to this field */\n    const sourceBytes = (value as any).buffer as Uint8Array;\n    const offset = 32;\n    this.buffer.set(sourceBytes, offset);\n  }\n\n  get existing_leaf_hash(): Hash {\n    return this.get_existing_leaf_hash();\n  }\n\n  set existing_leaf_hash(value: Hash) {\n    this.set_existing_leaf_hash(value);\n  }\n\n  get_sibling_hashes_length(): number {\n    return ((__tnPopcount(this.__tnResolveFieldRef(\"hdr.path_bitset.bytes.0\")) + __tnPopcount(this.__tnResolveFieldRef(\"hdr.path_bitset.bytes.1\"))) + (__tnPopcount(this.__tnResolveFieldRef(\"hdr.path_bitset.bytes.2\")) + __tnPopcount(this.__tnResolveFieldRef(\"hdr.path_bitset.bytes.3\"))));\n  }\n\n  get_sibling_hashes_at(index: number): Hash {\n    const offset = 64;\n    const slice = this.buffer.subarray((offset + index * 32), (offset + (index + 1) * 32));\n    return Hash.from_array(slice)!;\n  }\n\n  get_sibling_hashes(): Hash[] {\n    const len = this.get_sibling_hashes_length();\n    const result: Hash[] = [];\n    for (let i = 0; i < len; i++) {\n      result.push(this.get_sibling_hashes_at(i));\n    }\n    return result;\n  }\n\n  set_sibling_hashes_at(index: number, value: Hash): void {\n    const offset = 64;\n    const slice = this.buffer.subarray(offset + index * 32, offset + (index + 1) * 32);\n    slice.set(value['buffer']);\n  }\n\n  set_sibling_hashes(value: Hash[]): void {\n    const len = Math.min(this.get_sibling_hashes_length(), value.length);\n    for (let i = 0; i < len; i++) {\n      this.set_sibling_hashes_at(i, value[i]);\n    }\n  }\n\n  get sibling_hashes(): Hash[] {\n    return this.get_sibling_hashes();\n  }\n\n  set sibling_hashes(value: Hash[]) {\n    this.set_sibling_hashes(value);\n  }\n\n}\n\nexport class StateProof_proof_body_Inner {\n  private view: DataView;\n  private __tnFieldContext: Record<string, number | bigint> | null = null;\n  private constructor(private buffer: Uint8Array, private descriptor: __TnVariantDescriptor | null, fieldContext?: Record<string, number | bigint>) {\n    this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    this.__tnFieldContext = fieldContext ?? null;\n  }\n\n  static __tnCreate(payload: Uint8Array, descriptor: __TnVariantDescriptor | null, fieldContext?: Record<string, number | bigint>): StateProof_proof_body_Inner {\n    return new StateProof_proof_body_Inner(new Uint8Array(payload), descriptor, fieldContext);\n  }\n\n  bytes(): Uint8Array {\n    return new Uint8Array(this.buffer);\n  }\n\n  variant(): __TnVariantDescriptor | null {\n    return this.descriptor;\n  }\n\n  asExisting(): StateProof_proof_body_existing_Inner | null {\n    if (!this.descriptor || this.descriptor.tag !== 0) return null;\n    return StateProof_proof_body_existing_Inner.__tnCreateView(new Uint8Array(this.buffer), { fieldContext: this.__tnFieldContext ?? undefined });\n  }\n\n  asUpdating(): StateProof_proof_body_updating_Inner | null {\n    if (!this.descriptor || this.descriptor.tag !== 1) return null;\n    return StateProof_proof_body_updating_Inner.__tnCreateView(new Uint8Array(this.buffer), { fieldContext: this.__tnFieldContext ?? undefined });\n  }\n\n  asCreation(): StateProof_proof_body_creation_Inner | null {\n    if (!this.descriptor || this.descriptor.tag !== 2) return null;\n    return StateProof_proof_body_creation_Inner.__tnCreateView(new Uint8Array(this.buffer), { fieldContext: this.__tnFieldContext ?? undefined });\n  }\n\n}\n\nexport class StateProof {\n  private view: DataView;\n  private __tnFieldContext: Record<string, number | bigint> | null = null;\n  private static readonly __tnFieldOffset_proof_body = 40;\n  private __tnParams: StateProof.Params;\n  private __tnDerivedParams: Record<string, bigint> | null = null;\n\n  private constructor(private buffer: Uint8Array, params?: StateProof.Params, fieldContext?: Record<string, number | bigint>) {\n    this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    this.__tnFieldContext = fieldContext ?? null;\n    if (params) {\n      this.__tnParams = params;\n    } else {\n      const derived = StateProof.__tnExtractParams(this.view, buffer);\n      if (!derived) {\n        throw new Error(\"StateProof: failed to derive dynamic parameters\");\n      }\n      this.__tnParams = derived.params;\n      this.__tnDerivedParams = derived.derived;\n    }\n  }\n\n  static __tnCreateView(buffer: Uint8Array, opts?: { params?: StateProof.Params, fieldContext?: Record<string, number | bigint> }): StateProof {\n    if (!buffer || buffer.length === undefined) throw new Error(\"StateProof.__tnCreateView requires a Uint8Array\");\n    let params = opts?.params ?? null;\n    let derivedRecord: Record<string, bigint> | null = null;\n    if (!params) {\n      const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n      const derived = StateProof.__tnExtractParams(view, buffer);\n      if (!derived) throw new Error(\"StateProof.__tnCreateView: failed to derive params\");\n      params = derived.params;\n      derivedRecord = derived.derived;\n    }\n    const instance = new StateProof(new Uint8Array(buffer), params, opts?.fieldContext);\n    if (derivedRecord) instance.__tnDerivedParams = derivedRecord;\n    return instance;\n  }\n\n  dynamicParams(): StateProof.Params {\n    return this.__tnParams;\n  }\n\n  withFieldContext(context: Record<string, number | bigint>): this {\n    this.__tnFieldContext = context;\n    return this;\n  }\n\n  private __tnResolveFieldRef(path: string): number {\n    const getterName = `get_${path.replace(/[.]/g, '_')}`;\n    const getter = (this as any)[getterName];\n    if (typeof getter === \"function\") {\n      const value = getter.call(this);\n      return typeof value === \"bigint\" ? __tnBigIntToNumber(value, \"StateProof::__tnResolveFieldRef\") : value;\n    }\n    if (this.__tnFieldContext && Object.prototype.hasOwnProperty.call(this.__tnFieldContext, path)) {\n      const contextValue = this.__tnFieldContext[path];\n      return typeof contextValue === \"bigint\" ? __tnBigIntToNumber(contextValue, \"StateProof::__tnResolveFieldRef\") : contextValue;\n    }\n    throw new Error(\"StateProof: field reference '\" + path + \"' is not available; provide fieldContext when creating this view\");\n  }\n\n  static builder(): StateProofBuilder {\n    return new StateProofBuilder();\n  }\n\n  static fromBuilder(builder: StateProofBuilder): StateProof | null {\n    const buffer = builder.build();\n    const params = builder.dynamicParams();\n    return StateProof.from_array(buffer, { params });\n  }\n\n  static readonly proof_bodyVariantDescriptors = Object.freeze([\n    {\n      name: \"existing\",\n      tag: 0,\n      payloadSize: null,\n      payloadType: \"StateProof::proof_body::existing\",\n      createPayloadBuilder: () => null,\n    },\n    {\n      name: \"updating\",\n      tag: 1,\n      payloadSize: null,\n      payloadType: \"StateProof::proof_body::updating\",\n      createPayloadBuilder: () => null,\n    },\n    {\n      name: \"creation\",\n      tag: 2,\n      payloadSize: null,\n      payloadType: \"StateProof::proof_body::creation\",\n      createPayloadBuilder: () => null,\n    },\n  ] as const);\n\n  static __tnComputeSequentialLayout(view: DataView, buffer: Uint8Array): { params: Record<string, bigint> | null; offsets: Record<string, number> | null; derived: Record<string, bigint> | null } | null {\n    const derived: Record<string, bigint> = Object.create(null);\n    const __tnLength = buffer.length;\n    let __tnParamSeq_proof_body_payload_size: bigint | null = null;\n    let __tnCursorMutable = 0;\n    if (__tnLength < 8) return null;\n    const __tnRef_hdr_type_slot = view.getBigUint64(0, true);\n    if (__tnCursorMutable + 40 > __tnLength) return null;\n    __tnCursorMutable += 40;\n    const __tnEnumTagValue_proof_body = Math.trunc(Number(((__tnRef_hdr_type_slot >> 62n) & 3n)));\n    if (!Number.isFinite(__tnEnumTagValue_proof_body)) return null;\n    let __tnEnumSize_proof_body = 0;\n    switch (Number(__tnEnumTagValue_proof_body)) {\n      case 0: break;\n      case 1: break;\n      case 2: break;\n      default: return null;\n    }\n    if (__tnCursorMutable > __tnLength) return null;\n    __tnEnumSize_proof_body = __tnLength - __tnCursorMutable;\n    __tnCursorMutable = __tnLength;\n    derived[\"StateProof__proof_body_computed_tag\"] = __tnToBigInt(__tnEnumTagValue_proof_body);\n    __tnParamSeq_proof_body_payload_size = __tnToBigInt(__tnEnumSize_proof_body);\n    const params: Record<string, bigint> = Object.create(null);\n    if (__tnParamSeq_proof_body_payload_size === null) return null;\n    params[\"proof_body_payload_size\"] = __tnParamSeq_proof_body_payload_size as bigint;\n    return { params, offsets: null, derived: derived };\n  }\n\n  private static __tnExtractParams(view: DataView, buffer: Uint8Array): { params: StateProof.Params; derived: Record<string, bigint> | null } | null {\n    if (buffer.length < 8) {\n      return null;\n    }\n    const __tnParam_proof_body_hdr_type_slot = __tnToBigInt(view.getBigUint64(0, true));\n    const __tnLayout = StateProof.__tnComputeSequentialLayout(view, buffer);\n    if (!__tnLayout || !__tnLayout.params) return null;\n    const __tnSeqParams = __tnLayout.params;\n    const __tnParamSeq_proof_body_payload_size = __tnSeqParams[\"proof_body_payload_size\"];\n    if (__tnParamSeq_proof_body_payload_size === undefined) return null;\n    const __tnExtractedParams = StateProof.Params.fromValues({\n      proof_body_hdr_type_slot: __tnParam_proof_body_hdr_type_slot,\n      proof_body_payload_size: __tnParamSeq_proof_body_payload_size as bigint,\n    });\n    return { params: __tnExtractedParams, derived: (__tnLayout && __tnLayout.derived ? __tnLayout.derived : null) };\n  }\n\n  private __tnEnsureDerivedParams(): Record<string, bigint> | null {\n    if (this.__tnDerivedParams) return this.__tnDerivedParams;\n    const layout = StateProof.__tnComputeSequentialLayout(this.view, this.buffer);\n    if (!layout || !layout.derived) return null;\n    this.__tnDerivedParams = layout.derived;\n    return this.__tnDerivedParams;\n  }\n\n  private __tnReadDerivedParam(key: string): number | null {\n    const params = this.__tnEnsureDerivedParams();\n    if (!params) return null;\n    const value = params[key];\n    if (value === undefined) return null;\n    return __tnBigIntToNumber(value, \"StateProof::__tnReadDerivedParam\");\n  }\n\n  get_hdr(): StateProofHeader {\n    const offset = 0;\n    const slice = this.buffer.subarray(offset, offset + 40);\n    return StateProofHeader.from_array(slice)!;\n  }\n\n  set_hdr(value: StateProofHeader): void {\n    /* Copy bytes from source struct to this field */\n    const sourceBytes = (value as any).buffer as Uint8Array;\n    const offset = 0;\n    this.buffer.set(sourceBytes, offset);\n  }\n\n  get hdr(): StateProofHeader {\n    return this.get_hdr();\n  }\n\n  set hdr(value: StateProofHeader) {\n    this.set_hdr(value);\n  }\n\n  get_proof_body_computed_tag(): number {\n    let tag = this.__tnReadDerivedParam(\"StateProof__proof_body_computed_tag\");\n    if (tag === null) {\n      tag = (((this.__tnResolveFieldRef(\"hdr.type_slot\") >> 62) & 3));\n    }\n    return tag;\n  }\n\n  proofBodyVariant(): typeof StateProof.proof_bodyVariantDescriptors[number] | null {\n    const tag = this.get_proof_body_computed_tag();\n    return StateProof.proof_bodyVariantDescriptors.find((variant) => variant.tag === tag) ?? null;\n  }\n\n  proof_body(): StateProof_proof_body_Inner {\n    const descriptor = this.proofBodyVariant();\n    if (!descriptor) throw new Error(\"StateProof: unknown proof_body variant\");\n    const offset = StateProof.__tnFieldOffset_proof_body;\n    const remaining = this.buffer.length - offset;\n    const payloadLength = descriptor.payloadSize ?? remaining;\n    if (payloadLength < 0 || offset + payloadLength > this.buffer.length) throw new Error(\"StateProof: payload exceeds buffer bounds\");\n    const slice = this.buffer.subarray(offset, offset + payloadLength);\n    const __tnAutoContext: Record<string, number | bigint> = {\n      \"hdr.path_bitset.bytes.0\": this.view.getUint8(8),\n      \"hdr.path_bitset.bytes.1\": this.view.getUint8(9),\n      \"hdr.path_bitset.bytes.2\": this.view.getUint8(10),\n      \"hdr.path_bitset.bytes.3\": this.view.getUint8(11),\n    };\n    const __tnMergedContext = this.__tnFieldContext ? { ...__tnAutoContext, ...this.__tnFieldContext } : __tnAutoContext;\n    return StateProof_proof_body_Inner.__tnCreate(slice, descriptor, __tnMergedContext);\n  }\n  private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n    return __tnEvalFootprint(__tn_ir_StateProof.root, { params: __tnParams });\n  }\n\n  private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n    return __tnValidateIrTree(__tn_ir_StateProof, buffer, __tnParams);\n  }\n\n  static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n    return this.__tnFootprintInternal(__tnParams);\n  }\n\n  static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n    return this.__tnValidateInternal(buffer, __tnParams);\n  }\n\n  static footprintIr(proof_body_hdr_type_slot: number | bigint, proof_body_payload_size: number | bigint): bigint {\n    const params = StateProof.Params.fromValues({\n      proof_body_hdr_type_slot: proof_body_hdr_type_slot,\n      proof_body_payload_size: proof_body_payload_size,\n    });\n    return this.footprintIrFromParams(params);\n  }\n\n  private static __tnPackParams(params: StateProof.Params): Record<string, bigint> {\n    const record: Record<string, bigint> = Object.create(null);\n    record[\"proof_body.hdr.type_slot\"] = params.proof_body_hdr_type_slot;\n    record[\"proof_body.payload_size\"] = params.proof_body_payload_size;\n    return record;\n  }\n\n  static footprintIrFromParams(params: StateProof.Params): bigint {\n    const __tnParams = this.__tnPackParams(params);\n    return this.__tnFootprintInternal(__tnParams);\n  }\n\n  static footprintFromParams(params: StateProof.Params): number {\n    const irResult = this.footprintIrFromParams(params);\n    const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n    if (__tnBigIntGreaterThan(irResult, maxSafe)) throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for StateProof');\n    return __tnBigIntToNumber(irResult, 'StateProof::footprintFromParams');\n  }\n\n  static footprintFromValues(input: { proof_body_hdr_type_slot: number | bigint, proof_body_payload_size: number | bigint }): number {\n    const params = StateProof.params(input);\n    return this.footprintFromParams(params);\n  }\n\n  static footprint(params: StateProof.Params): number {\n    return this.footprintFromParams(params);\n  }\n\n  static validate(buffer: Uint8Array, opts?: { params?: StateProof.Params }): { ok: boolean; code?: string; consumed?: number; params?: StateProof.Params } {\n    if (!buffer || buffer.length === undefined) {\n      return { ok: false, code: \"tn.invalid_buffer\" };\n    }\n    const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    let params = opts?.params ?? null;\n    if (!params) {\n      const extracted = this.__tnExtractParams(view, buffer);\n      if (!extracted) return { ok: false, code: \"tn.param_extraction_failed\" };\n      params = extracted.params;\n    }\n    const __tnParamsRec = this.__tnPackParams(params);\n    const irResult = this.__tnValidateInternal(buffer, __tnParamsRec);\n    if (!irResult.ok) {\n      return { ok: false, code: irResult.code, consumed: irResult.consumed ? __tnBigIntToNumber(irResult.consumed, 'StateProof::validate') : undefined, params };\n    }\n    const consumed = irResult.consumed ? __tnBigIntToNumber(irResult.consumed, 'StateProof::validate') : undefined;\n    return { ok: true, consumed, params };\n  }\n\n  static from_array(buffer: Uint8Array, opts?: { params?: StateProof.Params }): StateProof | null {\n    if (!buffer || buffer.length === undefined) {\n      return null;\n    }\n    const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    let params = opts?.params ?? null;\n    let derivedRecord: Record<string, bigint> | null = null;\n    if (!params) {\n      const derived = this.__tnExtractParams(view, buffer);\n      if (!derived) return null;\n      params = derived.params;\n      derivedRecord = derived.derived;\n    }\n    const validation = this.validate(buffer, { params });\n    if (!validation.ok) {\n      return null;\n    }\n    const cached = validation.params ?? params;\n    const state = new StateProof(buffer, cached);\n    if (derivedRecord) state.__tnDerivedParams = derivedRecord;\n    return state;\n  }\n\n\n}\n\nexport namespace StateProof {\n  export type Params = {\n    /** ABI path: proof_body.hdr.type_slot */\n    readonly proof_body_hdr_type_slot: bigint;\n    /** ABI path: proof_body.payload_size */\n    readonly proof_body_payload_size: bigint;\n  };\n\n  export const ParamKeys = Object.freeze({\n    proof_body_hdr_type_slot: \"proof_body.hdr.type_slot\",\n    proof_body_payload_size: \"proof_body.payload_size\",\n  } as const);\n\n  export const Params = {\n    fromValues(input: { proof_body_hdr_type_slot: number | bigint, proof_body_payload_size: number | bigint }): Params {\n      return {\n        proof_body_hdr_type_slot: __tnToBigInt(input.proof_body_hdr_type_slot),\n        proof_body_payload_size: __tnToBigInt(input.proof_body_payload_size),\n      };\n    },\n    fromBuilder(source: { dynamicParams(): Params } | { params: Params } | Params): Params {\n      if ((source as { dynamicParams?: () => Params }).dynamicParams) {\n        return (source as { dynamicParams(): Params }).dynamicParams();\n      }\n      if ((source as { params?: Params }).params) {\n        return (source as { params: Params }).params;\n      }\n      return source as Params;\n    }\n  };\n\n  export function params(input: { proof_body_hdr_type_slot: number | bigint, proof_body_payload_size: number | bigint }): Params {\n    return Params.fromValues(input);\n  }\n}\n\nexport class StateProofBuilder {\n  private __tnPrefixBuffer: Uint8Array;\n  private __tnPrefixView: DataView;\n  private __tnPayload_proof_body: { descriptor: typeof StateProof.proof_bodyVariantDescriptors[number]; bytes: Uint8Array } | null = null;\n  private __tnCachedParams: StateProof.Params | null = null;\n  private __tnLastBuffer: Uint8Array | null = null;\n  private __tnLastParams: StateProof.Params | null = null;\n  private __tnVariantSelector_proof_body?: __TnVariantSelectorResult<StateProofBuilder>;\n\n  constructor() {\n    this.__tnPrefixBuffer = new Uint8Array(40);\n    this.__tnPrefixView = new DataView(this.__tnPrefixBuffer.buffer, this.__tnPrefixBuffer.byteOffset, this.__tnPrefixBuffer.byteLength);\n  }\n\n  set_hdr(value: Uint8Array): this {\n    if (value.length !== 40) throw new Error(\"hdr expects 40 bytes\");\n    this.__tnPrefixBuffer.set(value, 0);\n    this.__tnInvalidate();\n    return this;\n  }\n\n  private __tnInvalidate(): void {\n    this.__tnCachedParams = null;\n    this.__tnLastBuffer = null;\n    this.__tnLastParams = null;\n  }\n\n  proof_body(): __TnVariantSelectorResult<StateProofBuilder> {\n    if (!this.__tnVariantSelector_proof_body) {\n      this.__tnVariantSelector_proof_body = __tnCreateVariantSelector(this, StateProof.proof_bodyVariantDescriptors, (descriptor, payload) => {\n        this.__tnPayload_proof_body = { descriptor, bytes: new Uint8Array(payload) };\n        this.__tnInvalidate();\n      });\n    }\n    return this.__tnVariantSelector_proof_body!;\n  }\n\n  build(): Uint8Array {\n    const params = this.__tnComputeParams();\n    if (!this.__tnPayload_proof_body) throw new Error(\"StateProofBuilder: payload variant not selected\");\n    const payloadLength = this.__tnPayload_proof_body.bytes.length;\n    const requiredSize = 40 + payloadLength;\n    const footprintSize = StateProof.footprintFromParams(params);\n    const size = Math.max(requiredSize, footprintSize);\n    const buffer = new Uint8Array(size);\n    this.__tnWriteInto(buffer);\n    this.__tnValidateOrThrow(buffer, params);\n    return buffer;\n  }\n\n  buildInto(target: Uint8Array, offset = 0): Uint8Array {\n    const params = this.__tnComputeParams();\n    if (!this.__tnPayload_proof_body) throw new Error(\"StateProofBuilder: payload variant not selected\");\n    const payloadLength = this.__tnPayload_proof_body.bytes.length;\n    const requiredSize = 40 + payloadLength;\n    const footprintSize = StateProof.footprintFromParams(params);\n    const size = Math.max(requiredSize, footprintSize);\n    if (target.length - offset < size) throw new Error(\"StateProofBuilder: target buffer too small\");\n    const slice = target.subarray(offset, offset + size);\n    this.__tnWriteInto(slice);\n    this.__tnValidateOrThrow(slice, params);\n    return target;\n  }\n\n  finish(): StateProof {\n    const buffer = this.build();\n    const params = this.__tnLastParams ?? this.__tnComputeParams();\n    const view = StateProof.from_array(buffer, { params });\n    if (!view) throw new Error(\"StateProofBuilder: failed to finalize view\");\n    return view;\n  }\n\n  finishView(): StateProof {\n    return this.finish();\n  }\n\n  dynamicParams(): StateProof.Params {\n    return this.__tnComputeParams();\n  }\n\n  private __tnComputeParams(): StateProof.Params {\n    if (this.__tnCachedParams) return this.__tnCachedParams;\n    const params = StateProof.Params.fromValues({\n      proof_body_hdr_type_slot: (() => { const slice = this.__tnPrefixBuffer.subarray(0, 40); const header = StateProofHeader.from_array(slice); if (!header) throw new Error(\"StateProofBuilder: field 'hdr' must be set before build\"); return __tnToBigInt(header.get_type_slot()); })(),\n      proof_body_payload_size: (() => { if (!this.__tnPayload_proof_body) throw new Error(\"StateProofBuilder: payload 'proof_body' must be selected before build\"); return __tnToBigInt(this.__tnPayload_proof_body.bytes.length); })(),\n    });\n    this.__tnCachedParams = params;\n    return params;\n  }\n\n  private __tnWriteInto(target: Uint8Array): void {\n    if (!this.__tnPayload_proof_body) throw new Error(\"StateProofBuilder: payload variant not selected\");\n    const view = new DataView(target.buffer, target.byteOffset, target.byteLength);\n    target.set(this.__tnPrefixBuffer, 0);\n    target.set(this.__tnPayload_proof_body.bytes, 40);\n    const __tnLayout = StateProof.__tnComputeSequentialLayout(view, target);\n    if (!__tnLayout || !__tnLayout.derived) throw new Error(\"StateProofBuilder: failed to derive enum tag\");\n    const __tnDerivedTagValue = __tnLayout.derived[\"StateProof__proof_body_computed_tag\"];\n    if (__tnDerivedTagValue === undefined) throw new Error(\"StateProofBuilder: computed enum tag missing\");\n    const __tnDerivedTag = __tnBigIntToNumber(__tnDerivedTagValue, \"StateProofBuilder::__tnWriteInto\");\n    const __tnExpectedTag = this.__tnPayload_proof_body!.descriptor.tag;\n    if (__tnDerivedTag !== __tnExpectedTag) throw new Error(\"StateProofBuilder: computed enum tag does not match selected variant\");\n  }\n\n  private __tnValidateOrThrow(buffer: Uint8Array, params: StateProof.Params): void {\n    const result = StateProof.validate(buffer, { params });\n    if (!result.ok) {\n      throw new Error(`${ StateProof }Builder: builder produced invalid buffer (code=${result.code ?? \"unknown\"})`);\n    }\n    this.__tnLastParams = result.params ?? params;\n    this.__tnLastBuffer = buffer;\n  }\n}\n\n__tnRegisterFootprint(\"StateProof\", (params) => StateProof.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"StateProof\", (buffer, params) => StateProof.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"StateProof\", (buffer) => { const result = StateProof.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n","/* Auto-generated TypeScript code */\n/* WARNING: Do not modify this file directly. It is generated from ABI definitions. */\n\nimport { StateProof } from \"../../blockchain/state_proof/types\";\n\ntype __TnIrNode =\n  | { readonly op: \"zero\" }\n  | { readonly op: \"const\"; readonly value: bigint }\n  | { readonly op: \"field\"; readonly param: string }\n  | {\n      readonly op: \"add\";\n      readonly left: __TnIrNode;\n      readonly right: __TnIrNode;\n    }\n  | {\n      readonly op: \"sub\";\n      readonly left: __TnIrNode;\n      readonly right: __TnIrNode;\n    }\n  | {\n      readonly op: \"mul\";\n      readonly left: __TnIrNode;\n      readonly right: __TnIrNode;\n    }\n  | {\n      readonly op:\n        | \"div\"\n        | \"mod\"\n        | \"bitAnd\"\n        | \"bitOr\"\n        | \"bitXor\"\n        | \"leftShift\"\n        | \"rightShift\";\n      readonly left: __TnIrNode;\n      readonly right: __TnIrNode;\n    }\n  | {\n      readonly op: \"align\";\n      readonly alignment: number;\n      readonly node: __TnIrNode;\n    }\n  | {\n      readonly op: \"switch\";\n      readonly tag: string;\n      readonly cases: readonly { readonly value: number; readonly node: __TnIrNode }[];\n      readonly default?: __TnIrNode;\n    }\n  | {\n      readonly op: \"call\";\n      readonly typeName: string;\n      readonly args: readonly { readonly name: string; readonly source: string }[];\n    }\n  | {\n      readonly op: \"sumOverArray\";\n      readonly count: __TnIrNode;\n      readonly elementTypeName: string;\n      readonly fieldName: string;\n    };\n\ntype __TnIrContext = {\n  params: Record<string, bigint>;\n  buffer?: Uint8Array;\n  typeName?: string;\n};\n\ntype __TnValidateResult = {\n  ok: boolean;\n  code?: string;\n  consumed?: bigint;\n  params?: Record<string, bigint>;\n};\ntype __TnEvalResult =\n  | { ok: true; value: bigint }\n  | { ok: false; code: string };\ntype __TnBuilderLike = { build(): Uint8Array };\ntype __TnStructFieldInput =\n  | Uint8Array\n  | __TnBuilderLike\n  | { buffer?: Uint8Array }\n  | { asUint8Array?: () => Uint8Array }\n  | { bytes?: () => Uint8Array };\ntype __TnVariantDescriptor = {\n  readonly name: string;\n  readonly tag: number;\n  readonly payloadSize: number | null;\n  readonly payloadType?: string;\n  readonly createPayloadBuilder?: () => unknown | null;\n};\ntype __TnVariantSelectorResult<Parent> = {\n  select(\n    name: string\n  ): { writePayload(payload: Uint8Array | __TnBuilderLike): { finish(): Parent } };\n  finish(): Parent;\n};\ntype __TnFamWriterResult<Parent> = {\n  write(payload: Uint8Array | __TnBuilderLike): { finish(): Parent };\n  finish(): Parent;\n};\ntype __TnConsole = { warn?: (...args: unknown[]) => void };\n\nconst __tnWarnings = new Set<string>();\nconst __tnHasNativeBigInt = typeof BigInt === \"function\";\nconst __tnHasBigIntDataView =\n  typeof DataView !== \"undefined\" &&\n  typeof DataView.prototype.getBigInt64 === \"function\" &&\n  typeof DataView.prototype.getBigUint64 === \"function\" &&\n  typeof DataView.prototype.setBigInt64 === \"function\" &&\n  typeof DataView.prototype.setBigUint64 === \"function\";\nconst __tnConsole: __TnConsole | undefined =\n  typeof globalThis !== \"undefined\"\n    ? (globalThis as { console?: __TnConsole }).console\n    : undefined;\n\nfunction __tnLogWarn(message: string): void {\n  if (__tnConsole && typeof __tnConsole.warn === \"function\") {\n    __tnConsole.warn(message);\n  }\n}\n\nfunction __tnWarnOnce(message: string): void {\n  if (!__tnWarnings.has(message)) {\n    __tnWarnings.add(message);\n    __tnLogWarn(message);\n  }\n}\n\nfunction __tnResolveBuilderInput(\n  input: Uint8Array | __TnBuilderLike,\n  context: string\n): Uint8Array {\n  if (input instanceof Uint8Array) {\n    return new Uint8Array(input);\n  }\n  if (input && typeof (input as __TnBuilderLike).build === \"function\") {\n    const built = (input as __TnBuilderLike).build();\n    if (!(built instanceof Uint8Array)) {\n      throw new Error(`${context}: builder did not return Uint8Array`);\n    }\n    return new Uint8Array(built);\n  }\n  throw new Error(`${context}: expected Uint8Array or builder`);\n}\n\nfunction __tnResolveStructFieldInput(\n  input: __TnStructFieldInput,\n  context: string\n): Uint8Array {\n  if (\n    input instanceof Uint8Array ||\n    (input && typeof (input as __TnBuilderLike).build === \"function\")\n  ) {\n    return __tnResolveBuilderInput(input as Uint8Array | __TnBuilderLike, context);\n  }\n  if (input && typeof (input as { asUint8Array?: () => Uint8Array }).asUint8Array === \"function\") {\n    const bytes = (input as { asUint8Array: () => Uint8Array }).asUint8Array();\n    return new Uint8Array(bytes);\n  }\n  if (input && typeof (input as { bytes?: () => Uint8Array }).bytes === \"function\") {\n    const bytes = (input as { bytes: () => Uint8Array }).bytes();\n    return new Uint8Array(bytes);\n  }\n  if (input && (input as { buffer?: unknown }).buffer instanceof Uint8Array) {\n    return new Uint8Array((input as { buffer: Uint8Array }).buffer);\n  }\n  throw new Error(`${context}: expected Uint8Array, builder, or view-like value`);\n}\n\nfunction __tnMaybeCallBuilder(ctor: unknown): unknown | null {\n  if (!ctor) {\n    return null;\n  }\n  const builderFn = (ctor as { builder?: () => unknown }).builder;\n  return typeof builderFn === \"function\" ? builderFn() : null;\n}\n\nfunction __tnCreateVariantSelector<Parent, Descriptor extends __TnVariantDescriptor>(\n  parent: Parent,\n  descriptors: readonly Descriptor[],\n  assign: (descriptor: Descriptor, payload: Uint8Array) => void\n): __TnVariantSelectorResult<Parent> {\n  return {\n    select(name: string) {\n      const descriptor = descriptors.find((variant) => variant.name === name);\n      if (!descriptor) {\n        throw new Error(`Unknown variant '${name}'`);\n      }\n      return {\n        writePayload(payload: Uint8Array | __TnBuilderLike) {\n          const bytes = __tnResolveBuilderInput(\n            payload,\n            `variant ${descriptor.name}`\n          );\n          if (\n            descriptor.payloadSize !== null &&\n            bytes.length !== descriptor.payloadSize\n          ) {\n            throw new Error(\n              `Payload for ${descriptor.name} must be ${descriptor.payloadSize} bytes`\n            );\n          }\n          assign(descriptor, bytes);\n          return {\n            finish(): Parent {\n              return parent;\n            },\n          };\n        },\n      };\n    },\n    finish(): Parent {\n      return parent;\n    },\n  };\n}\n\nfunction __tnCreateFamWriter<Parent>(\n  parent: Parent,\n  fieldName: string,\n  assign: (bytes: Uint8Array) => void\n): __TnFamWriterResult<Parent> {\n  let hasWritten = false;\n  return {\n    write(payload: Uint8Array | __TnBuilderLike) {\n      const bytes = __tnResolveBuilderInput(\n        payload,\n        `flexible array '${fieldName}'`\n      );\n      const copy = new Uint8Array(bytes);\n      assign(copy);\n      hasWritten = true;\n      return {\n        finish(): Parent {\n          return parent;\n        },\n      };\n    },\n    finish(): Parent {\n      if (!hasWritten) {\n        throw new Error(\n          `flexible array '${fieldName}' requires write() before finish()`\n        );\n      }\n      return parent;\n    },\n  };\n}\n\nconst __tnMask32 = __tnHasNativeBigInt\n  ? (BigInt(1) << BigInt(32)) - BigInt(1)\n  : 0xffffffff;\nconst __tnSignBit32 = __tnHasNativeBigInt\n  ? BigInt(1) << BigInt(31)\n  : 0x80000000;\n\nfunction __tnToBigInt(value: number | bigint): bigint {\n  if (__tnHasNativeBigInt) {\n    return typeof value === \"bigint\" ? value : BigInt(value);\n  }\n  if (typeof value === \"bigint\") return value;\n  if (!Number.isFinite(value)) {\n    throw new Error(\"IR runtime received non-finite numeric input\");\n  }\n  if (!Number.isSafeInteger(value)) {\n    __tnWarnOnce(\n      `[thru-net] Precision loss while polyfilling BigInt (value=${value})`\n    );\n  }\n  return (value as unknown) as bigint;\n}\n\nfunction __tnBigIntToNumber(value: bigint, context: string): number {\n  if (__tnHasNativeBigInt) {\n    const converted = Number(value);\n    if (!Number.isFinite(converted)) {\n      throw new Error(`${context} overflowed Number range`);\n    }\n    return converted;\n  }\n  return value as unknown as number;\n}\n\nfunction __tnBigIntEquals(lhs: bigint, rhs: bigint): boolean {\n  if (__tnHasNativeBigInt) return lhs === rhs;\n  return (lhs as unknown as number) === (rhs as unknown as number);\n}\n\nfunction __tnBigIntGreaterThan(lhs: bigint, rhs: bigint): boolean {\n  if (__tnHasNativeBigInt) return lhs > rhs;\n  return (lhs as unknown as number) > (rhs as unknown as number);\n}\n\nfunction __tnPopcount(value: number | bigint): number {\n  let v =\n    typeof value === \"bigint\"\n      ? Number(value & BigInt(0xffffffff))\n      : Number(value) >>> 0;\n  v = v - ((v >>> 1) & 0x55555555);\n  v = (v & 0x33333333) + ((v >>> 2) & 0x33333333);\n  return (((v + (v >>> 4)) & 0x0f0f0f0f) * 0x01010101) >>> 24;\n}\n\nfunction __tnRaiseIrError(code: string, message: string): never {\n  const err = new Error(message);\n  (err as { code?: string }).code = code;\n  throw err;\n}\n\nfunction __tnCheckedAdd(lhs: bigint, rhs: bigint): bigint {\n  if (__tnHasNativeBigInt) {\n    const result = (lhs as bigint) + (rhs as bigint);\n    if (result < BigInt(0)) {\n      __tnRaiseIrError(\n        \"tn.ir.overflow\",\n        \"IR runtime detected negative size via addition\"\n      );\n    }\n    return result;\n  }\n  const left = lhs as unknown as number;\n  const right = rhs as unknown as number;\n  const sum = left + right;\n  if (sum < 0 || !Number.isFinite(sum)) {\n    __tnRaiseIrError(\n      \"tn.ir.overflow\",\n      \"IR runtime detected invalid addition result\"\n    );\n  }\n  if (!Number.isSafeInteger(sum)) {\n    __tnWarnOnce(\"[thru-net] Precision loss while polyfilling BigInt addition\");\n  }\n  return (sum as unknown) as bigint;\n}\n\nfunction __tnCheckedSub(lhs: bigint, rhs: bigint): bigint {\n  if (__tnHasNativeBigInt) {\n    const result = (lhs as bigint) - (rhs as bigint);\n    if (result < BigInt(0)) {\n      __tnRaiseIrError(\n        \"tn.ir.overflow\",\n        \"IR runtime detected negative size via subtraction\"\n      );\n    }\n    return result;\n  }\n  const left = lhs as unknown as number;\n  const right = rhs as unknown as number;\n  const diff = left - right;\n  if (diff < 0 || !Number.isFinite(diff)) {\n    __tnRaiseIrError(\n      \"tn.ir.overflow\",\n      \"IR runtime detected invalid subtraction result\"\n    );\n  }\n  if (!Number.isSafeInteger(diff)) {\n    __tnWarnOnce(\"[thru-net] Precision loss while polyfilling BigInt subtraction\");\n  }\n  return (diff as unknown) as bigint;\n}\n\nfunction __tnCheckedMul(lhs: bigint, rhs: bigint): bigint {\n  if (__tnHasNativeBigInt) {\n    const result = (lhs as bigint) * (rhs as bigint);\n    if (result < BigInt(0)) {\n      __tnRaiseIrError(\n        \"tn.ir.overflow\",\n        \"IR runtime detected negative size via multiplication\"\n      );\n    }\n    return result;\n  }\n  const left = lhs as unknown as number;\n  const right = rhs as unknown as number;\n  const product = left * right;\n  if (product < 0 || !Number.isFinite(product)) {\n    __tnRaiseIrError(\n      \"tn.ir.overflow\",\n      \"IR runtime detected invalid multiplication result\"\n    );\n  }\n  if (!Number.isSafeInteger(product)) {\n    __tnWarnOnce(\n      \"[thru-net] Precision loss while polyfilling BigInt multiplication\"\n    );\n  }\n  return (product as unknown) as bigint;\n}\n\nfunction __tnCheckedDiv(lhs: bigint, rhs: bigint): bigint {\n  if (__tnBigIntEquals(rhs, __tnToBigInt(0))) {\n    __tnRaiseIrError(\"tn.ir.overflow\", \"IR runtime division by zero\");\n  }\n  if (__tnHasNativeBigInt) return (lhs as bigint) / (rhs as bigint);\n  const quotient = Math.floor((lhs as unknown as number) / (rhs as unknown as number));\n  return (quotient as unknown) as bigint;\n}\n\nfunction __tnCheckedMod(lhs: bigint, rhs: bigint): bigint {\n  if (__tnBigIntEquals(rhs, __tnToBigInt(0))) {\n    __tnRaiseIrError(\"tn.ir.overflow\", \"IR runtime modulo by zero\");\n  }\n  if (__tnHasNativeBigInt) return (lhs as bigint) % (rhs as bigint);\n  return (((lhs as unknown as number) % (rhs as unknown as number)) as unknown) as bigint;\n}\n\nfunction __tnBitwise(\n  lhs: bigint,\n  rhs: bigint,\n  op: \"and\" | \"or\" | \"xor\"\n): bigint {\n  if (__tnHasNativeBigInt) {\n    if (op === \"and\") return (lhs as bigint) & (rhs as bigint);\n    if (op === \"or\") return (lhs as bigint) | (rhs as bigint);\n    return (lhs as bigint) ^ (rhs as bigint);\n  }\n  const left = lhs as unknown as number;\n  const right = rhs as unknown as number;\n  const maxU32 = 0xffffffff;\n  if (\n    !Number.isInteger(left) ||\n    !Number.isInteger(right) ||\n    left < 0 ||\n    right < 0 ||\n    left > maxU32 ||\n    right > maxU32\n  ) {\n    __tnRaiseIrError(\n      \"tn.ir.overflow\",\n      \"IR runtime bitwise operation requires BigInt for values outside u32 range\"\n    );\n  }\n  const result = op === \"and\" ? left & right : op === \"or\" ? left | right : left ^ right;\n  return ((result >>> 0) as unknown) as bigint;\n}\n\nfunction __tnCheckedShift(\n  lhs: bigint,\n  rhs: bigint,\n  direction: \"left\" | \"right\"\n): bigint {\n  const amount = __tnBigIntToNumber(rhs, \"IR shift amount\");\n  if (amount < 0 || amount >= 64 || !Number.isInteger(amount)) {\n    __tnRaiseIrError(\"tn.ir.overflow\", \"IR runtime invalid shift amount\");\n  }\n  if (__tnHasNativeBigInt) {\n    const shift = BigInt(amount);\n    return direction === \"left\" ? (lhs as bigint) << shift : (lhs as bigint) >> shift;\n  }\n  const value = lhs as unknown as number;\n  const result = direction === \"left\" ? value * 2 ** amount : Math.floor(value / 2 ** amount);\n  if (!Number.isSafeInteger(result)) {\n    __tnWarnOnce(\"[thru-net] Precision loss while polyfilling BigInt shift\");\n  }\n  return (result as unknown) as bigint;\n}\n\nfunction __tnAlign(value: bigint, alignment: number): bigint {\n  if (alignment <= 1) return value;\n  const alignBig = __tnToBigInt(alignment);\n  if (__tnHasNativeBigInt) {\n    const remainder = value % alignBig;\n    if (__tnBigIntEquals(remainder, __tnToBigInt(0))) {\n      return value;\n    }\n    const delta = alignBig - remainder;\n    return __tnCheckedAdd(value, delta);\n  }\n  const current = __tnBigIntToNumber(value, \"IR align\");\n  const alignNum = alignment >>> 0;\n  const remainder = current % alignNum;\n  const next = remainder === 0 ? current : current + (alignNum - remainder);\n  return __tnToBigInt(next);\n}\n\nfunction __tnSplitUint64(value: bigint): { high: number; low: number } {\n  if (__tnHasNativeBigInt) {\n    const low = Number(value & (__tnMask32 as bigint));\n    const high = Number((value >> BigInt(32)) & (__tnMask32 as bigint));\n    return { high, low };\n  }\n  const num = __tnBigIntToNumber(value, \"DataView.setBigUint64\");\n  const low = num >>> 0;\n  const high = Math.floor(num / 4294967296) >>> 0;\n  return { high, low };\n}\n\nfunction __tnSplitInt64(value: bigint): { high: number; low: number } {\n  if (__tnHasNativeBigInt) {\n    const low = Number(value & (__tnMask32 as bigint));\n    let high = Number((value >> BigInt(32)) & (__tnMask32 as bigint));\n    if ((BigInt(high) & (__tnSignBit32 as bigint)) !== BigInt(0)) {\n      high -= 0x100000000;\n    }\n    return { high, low };\n  }\n  const num = __tnBigIntToNumber(value, \"DataView.setBigInt64\");\n  const low = num >>> 0;\n  const high = Math.floor(num / 4294967296);\n  return { high, low };\n}\n\nfunction __tnPolyfillReadUint64(\n  view: DataView,\n  offset: number,\n  littleEndian: boolean\n): bigint {\n  const low = littleEndian\n    ? view.getUint32(offset, true)\n    : view.getUint32(offset + 4, false);\n  const high = littleEndian\n    ? view.getUint32(offset + 4, true)\n    : view.getUint32(offset, false);\n  if (__tnHasNativeBigInt) {\n    return (BigInt(high) << BigInt(32)) | BigInt(low);\n  }\n  const value = high * 4294967296 + low;\n  if (!Number.isSafeInteger(value)) {\n    __tnWarnOnce(\n      \"[thru-net] Precision loss while polyfilling DataView.getBigUint64\"\n    );\n  }\n  return (value as unknown) as bigint;\n}\n\nfunction __tnPolyfillReadInt64(\n  view: DataView,\n  offset: number,\n  littleEndian: boolean\n): bigint {\n  const low = littleEndian\n    ? view.getUint32(offset, true)\n    : view.getUint32(offset + 4, false);\n  const high = littleEndian\n    ? view.getInt32(offset + 4, true)\n    : view.getInt32(offset, false);\n  if (__tnHasNativeBigInt) {\n    return (BigInt(high) << BigInt(32)) | BigInt(low);\n  }\n  const value = high * 4294967296 + low;\n  if (!Number.isSafeInteger(value)) {\n    __tnWarnOnce(\n      \"[thru-net] Precision loss while polyfilling DataView.getBigInt64\"\n    );\n  }\n  return (value as unknown) as bigint;\n}\n\nfunction __tnPolyfillWriteUint64(\n  view: DataView,\n  offset: number,\n  value: bigint,\n  littleEndian: boolean\n): void {\n  const parts = __tnSplitUint64(value);\n  if (littleEndian) {\n    view.setUint32(offset, parts.low, true);\n    view.setUint32(offset + 4, parts.high, true);\n  } else {\n    view.setUint32(offset, parts.high, false);\n    view.setUint32(offset + 4, parts.low, false);\n  }\n}\n\nfunction __tnPolyfillWriteInt64(\n  view: DataView,\n  offset: number,\n  value: bigint,\n  littleEndian: boolean\n): void {\n  const parts = __tnSplitInt64(value);\n  if (littleEndian) {\n    view.setUint32(offset, parts.low >>> 0, true);\n    view.setInt32(offset + 4, parts.high | 0, true);\n  } else {\n    view.setInt32(offset, parts.high | 0, false);\n    view.setUint32(offset + 4, parts.low >>> 0, false);\n  }\n}\n\nif (typeof DataView !== \"undefined\" && !__tnHasBigIntDataView) {\n  const proto = DataView.prototype as unknown as Record<string, unknown>;\n  if (typeof proto.getBigUint64 !== \"function\") {\n    (proto as any).getBigUint64 = function (\n      offset: number,\n      littleEndian?: boolean\n    ): bigint {\n      __tnWarnOnce(\n        \"[thru-net] Polyfilling DataView.getBigUint64; precision may be lost\"\n      );\n      return __tnPolyfillReadUint64(this, offset, !!littleEndian);\n    };\n  }\n  if (typeof proto.getBigInt64 !== \"function\") {\n    (proto as any).getBigInt64 = function (\n      offset: number,\n      littleEndian?: boolean\n    ): bigint {\n      __tnWarnOnce(\n        \"[thru-net] Polyfilling DataView.getBigInt64; precision may be lost\"\n      );\n      return __tnPolyfillReadInt64(this, offset, !!littleEndian);\n    };\n  }\n  if (typeof proto.setBigUint64 !== \"function\") {\n    (proto as any).setBigUint64 = function (\n      offset: number,\n      value: bigint,\n      littleEndian?: boolean\n    ): void {\n      __tnWarnOnce(\n        \"[thru-net] Polyfilling DataView.setBigUint64; precision may be lost\"\n      );\n      __tnPolyfillWriteUint64(this, offset, value, !!littleEndian);\n    };\n  }\n  if (typeof proto.setBigInt64 !== \"function\") {\n    (proto as any).setBigInt64 = function (\n      offset: number,\n      value: bigint,\n      littleEndian?: boolean\n    ): void {\n      __tnWarnOnce(\n        \"[thru-net] Polyfilling DataView.setBigInt64; precision may be lost\"\n      );\n      __tnPolyfillWriteInt64(this, offset, value, !!littleEndian);\n    };\n  }\n  if (!__tnHasNativeBigInt) {\n    __tnWarnOnce(\n      \"[thru-net] BigInt is unavailable; falling back to lossy 64-bit polyfill\"\n    );\n  }\n}\n\nconst __tnFootprintRegistry: Record<\n  string,\n  (params: Record<string, bigint>) => bigint\n> = {};\nconst __tnValidateRegistry: Record<\n  string,\n  (buffer: Uint8Array, params: Record<string, bigint>) => __TnValidateResult\n> = {};\nconst __tnDynamicValidateRegistry: Record<\n  string,\n  (buffer: Uint8Array) => __TnValidateResult\n> = {};\n\nfunction __tnRegisterFootprint(\n  typeName: string,\n  fn: (params: Record<string, bigint>) => bigint\n): void {\n  __tnFootprintRegistry[typeName] = fn;\n}\n\nfunction __tnRegisterValidate(\n  typeName: string,\n  fn: (buffer: Uint8Array, params: Record<string, bigint>) => __TnValidateResult\n): void {\n  __tnValidateRegistry[typeName] = fn;\n}\n\nfunction __tnRegisterDynamicValidate(\n  typeName: string,\n  fn: (buffer: Uint8Array) => __TnValidateResult\n): void {\n  __tnDynamicValidateRegistry[typeName] = fn;\n}\n\nfunction __tnInvokeFootprint(\n  typeName: string,\n  params: Record<string, bigint>\n): bigint {\n  const fn = __tnFootprintRegistry[typeName];\n  if (!fn) throw new Error(`IR runtime missing footprint for ${typeName}`);\n  return fn(params);\n}\n\nfunction __tnInvokeValidate(\n  typeName: string,\n  buffer: Uint8Array,\n  params: Record<string, bigint>\n): __TnValidateResult {\n  const fn = __tnValidateRegistry[typeName];\n  if (!fn) throw new Error(`IR runtime missing validate helper for ${typeName}`);\n  return fn(buffer, params);\n}\n\nfunction __tnInvokeDynamicValidate(\n  typeName: string,\n  buffer: Uint8Array\n): __TnValidateResult {\n  const fn = __tnDynamicValidateRegistry[typeName];\n  if (!fn) throw new Error(`IR runtime missing dynamic validate helper for ${typeName}`);\n  return fn(buffer);\n}\n\nfunction __tnEvalFootprint(node: __TnIrNode, ctx: __TnIrContext): bigint {\n  return __tnEvalIrNode(node, ctx, __tnToBigInt(0));\n}\n\nfunction __tnTryEvalFootprint(\n  node: __TnIrNode,\n  ctx: __TnIrContext\n): __TnEvalResult {\n  return __tnTryEvalIr(node, ctx);\n}\n\nfunction __tnTryEvalIr(\n  node: __TnIrNode,\n  ctx: __TnIrContext\n): __TnEvalResult {\n  try {\n    return { ok: true, value: __tnEvalIrNode(node, ctx, __tnToBigInt(0)) };\n  } catch (err) {\n    return { ok: false, code: __tnNormalizeIrError(err) };\n  }\n}\n\nfunction __tnIsEvalError(result: __TnEvalResult): result is { ok: false; code: string } {\n  return result.ok === false;\n}\n\nfunction __tnValidateIrTree(\n  ir: { readonly typeName: string; readonly root: __TnIrNode },\n  buffer: Uint8Array,\n  params: Record<string, bigint>\n): __TnValidateResult {\n  const evalResult = __tnTryEvalIr(ir.root, {\n    params,\n    buffer,\n    typeName: ir.typeName,\n  });\n  if (__tnIsEvalError(evalResult)) {\n    return { ok: false, code: evalResult.code };\n  }\n  const required = evalResult.value;\n  const available = __tnToBigInt(buffer.length);\n  if (__tnBigIntGreaterThan(required, available)) {\n    return { ok: false, code: \"tn.buffer_too_small\", consumed: required };\n  }\n  return { ok: true, consumed: required };\n}\n\nfunction __tnEvalIrNode(\n  node: __TnIrNode,\n  ctx: __TnIrContext,\n  baseOffset: bigint\n): bigint {\n  switch (node.op) {\n    case \"zero\":\n      return __tnToBigInt(0);\n    case \"const\":\n      return node.value;\n    case \"field\": {\n      if (node.param === \"__buffer_size\" && ctx.buffer) {\n        return __tnToBigInt(ctx.buffer.length);\n      }\n      const val = ctx.params[node.param];\n      if (val === undefined) {\n        const prefix = ctx.typeName ? `${ctx.typeName}: ` : \"\";\n        __tnRaiseIrError(\n          \"tn.ir.missing_param\",\n          `${prefix}Missing IR parameter '${node.param}'`\n        );\n      }\n      return val;\n    }\n    case \"add\":\n      {\n        const left = __tnEvalIrNode(node.left, ctx, baseOffset);\n        const right = __tnEvalIrNode(\n          node.right,\n          ctx,\n          __tnCheckedAdd(baseOffset, left)\n        );\n        return __tnCheckedAdd(left, right);\n      }\n    case \"sub\":\n      return __tnCheckedSub(\n        __tnEvalIrNode(node.left, ctx, baseOffset),\n        __tnEvalIrNode(node.right, ctx, baseOffset)\n      );\n    case \"mul\":\n      return __tnCheckedMul(\n        __tnEvalIrNode(node.left, ctx, baseOffset),\n        __tnEvalIrNode(node.right, ctx, baseOffset)\n      );\n    case \"div\":\n      return __tnCheckedDiv(\n        __tnEvalIrNode(node.left, ctx, baseOffset),\n        __tnEvalIrNode(node.right, ctx, baseOffset)\n      );\n    case \"mod\":\n      return __tnCheckedMod(\n        __tnEvalIrNode(node.left, ctx, baseOffset),\n        __tnEvalIrNode(node.right, ctx, baseOffset)\n      );\n    case \"bitAnd\":\n      return __tnBitwise(\n        __tnEvalIrNode(node.left, ctx, baseOffset),\n        __tnEvalIrNode(node.right, ctx, baseOffset),\n        \"and\"\n      );\n    case \"bitOr\":\n      return __tnBitwise(\n        __tnEvalIrNode(node.left, ctx, baseOffset),\n        __tnEvalIrNode(node.right, ctx, baseOffset),\n        \"or\"\n      );\n    case \"bitXor\":\n      return __tnBitwise(\n        __tnEvalIrNode(node.left, ctx, baseOffset),\n        __tnEvalIrNode(node.right, ctx, baseOffset),\n        \"xor\"\n      );\n    case \"leftShift\":\n      return __tnCheckedShift(\n        __tnEvalIrNode(node.left, ctx, baseOffset),\n        __tnEvalIrNode(node.right, ctx, baseOffset),\n        \"left\"\n      );\n    case \"rightShift\":\n      return __tnCheckedShift(\n        __tnEvalIrNode(node.left, ctx, baseOffset),\n        __tnEvalIrNode(node.right, ctx, baseOffset),\n        \"right\"\n      );\n    case \"align\":\n      return __tnAlign(__tnEvalIrNode(node.node, ctx, baseOffset), node.alignment);\n    case \"switch\": {\n      const tagVal = ctx.params[node.tag];\n      if (tagVal === undefined) {\n        const prefix = ctx.typeName ? `${ctx.typeName}: ` : \"\";\n        __tnRaiseIrError(\n          \"tn.ir.missing_param\",\n          `${prefix}Missing IR switch tag '${node.tag}'`\n        );\n      }\n      const tagNumber = Number(tagVal);\n      for (const caseNode of node.cases) {\n        if (caseNode.value === tagNumber) {\n          return __tnEvalIrNode(caseNode.node, ctx, baseOffset);\n        }\n      }\n      if (node.default) return __tnEvalIrNode(node.default, ctx, baseOffset);\n      __tnRaiseIrError(\n        \"tn.ir.invalid_tag\",\n        `Unhandled IR switch value ${tagNumber} for '${node.tag}'`\n      );\n    }\n    case \"call\": {\n      const nestedParams: Record<string, bigint> = Object.create(null);\n      for (const arg of node.args) {\n        const val = ctx.params[arg.source];\n        if (val === undefined) {\n          const prefix = ctx.typeName ? `${ctx.typeName}: ` : \"\";\n          __tnRaiseIrError(\n            \"tn.ir.missing_param\",\n            `${prefix}Missing IR parameter '${arg.source}' for nested call`\n          );\n        }\n        nestedParams[arg.name] = val;\n      }\n      if (ctx.buffer) {\n        const nestedOffset = __tnBigIntToNumber(baseOffset, \"IR nested offset\");\n        const nestedResult = __tnInvokeValidate(\n          node.typeName,\n          ctx.buffer.subarray(nestedOffset),\n          nestedParams\n        );\n        if (!nestedResult.ok) {\n          const nestedCode =\n            nestedResult.code ?? `tn.ir.runtime_error: ${node.typeName}`;\n          const prefixed = nestedCode.startsWith(\"tn.\")\n            ? nestedCode\n            : `tn.ir.runtime_error: ${node.typeName} -> ${nestedCode}`;\n          __tnRaiseIrError(\n            prefixed,\n            `Nested validator ${node.typeName} failed`\n          );\n        }\n        if (nestedResult.consumed !== undefined) {\n          return nestedResult.consumed;\n        }\n      }\n      return __tnInvokeFootprint(node.typeName, nestedParams);\n    }\n    case \"sumOverArray\": {\n      if (!ctx.buffer) {\n        __tnRaiseIrError(\n          \"tn.ir.missing_buffer\",\n          `Jagged array '${node.fieldName}' requires buffer-backed validation`\n        );\n      }\n      const count = __tnBigIntToNumber(\n        __tnEvalIrNode(node.count, ctx, baseOffset),\n        `Jagged array '${node.fieldName}' count`\n      );\n      let cursor = __tnBigIntToNumber(baseOffset, \"IR jagged array offset\");\n      let total = __tnToBigInt(0);\n      for (let i = 0; i < count; i++) {\n        const result = __tnInvokeDynamicValidate(\n          node.elementTypeName,\n          ctx.buffer.subarray(cursor)\n        );\n        if (!result.ok || result.consumed === undefined) {\n          const code = result.code ?? \"tn.ir.runtime_error\";\n          __tnRaiseIrError(\n            code,\n            `Jagged array '${node.fieldName}' element ${i} failed validation`\n          );\n        }\n        cursor += __tnBigIntToNumber(result.consumed, \"IR jagged element size\");\n        total = __tnCheckedAdd(total, result.consumed);\n      }\n      return total;\n    }\n    default:\n      __tnRaiseIrError(\n        \"tn.ir.runtime_error\",\n        `Unsupported IR node ${(node as { op: string }).op}`\n      );\n  }\n}\n\nfunction __tnNormalizeIrError(err: unknown): string {\n  if (err && typeof err === \"object\" && \"code\" in err) {\n    const maybeCode = (err as { code?: string }).code;\n    if (typeof maybeCode === \"string\" && maybeCode.length > 0) {\n      return maybeCode;\n    }\n  }\n  const message =\n    err && typeof err === \"object\" && \"message\" in err\n      ? String((err as { message?: unknown }).message ?? \"\")\n      : typeof err === \"string\"\n      ? err\n      : \"\";\n  if (message.includes(\"Missing IR parameter\")) return \"tn.ir.missing_param\";\n  if (message.includes(\"Unhandled IR switch value\")) return \"tn.ir.invalid_tag\";\n  if (\n    message.includes(\"invalid\") ||\n    message.includes(\"overflow\") ||\n    message.includes(\"negative size\")\n  ) {\n    return \"tn.ir.overflow\";\n  }\n  if (message.length > 0) return `tn.ir.runtime_error: ${message}`;\n  return \"tn.ir.runtime_error\";\n}\n\n__tnRegisterFootprint(\"StateProof\", (params) => StateProof.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"StateProof\", (buffer, params) => StateProof.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"StateProof\", (buffer) => { const result = StateProof.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n\n/* ----- TYPE DEFINITION FOR CompressFromPointerArgs ----- */\n\nconst __tn_ir_CompressFromPointerArgs = {\n  typeName: \"CompressFromPointerArgs\",\n  root: { op: \"const\", value: 18n }\n} as const;\n\nexport class CompressFromPointerArgs {\n  private view: DataView;\n\n  private constructor(private buffer: Uint8Array) {\n    this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n  }\n\n  static __tnCreateView(buffer: Uint8Array, opts?: { fieldContext?: Record<string, number | bigint> }): CompressFromPointerArgs {\n    if (!buffer || buffer.length === undefined) throw new Error(\"CompressFromPointerArgs.__tnCreateView requires a Uint8Array\");\n    return new CompressFromPointerArgs(new Uint8Array(buffer));\n  }\n\n  static builder(): CompressFromPointerArgsBuilder {\n    return new CompressFromPointerArgsBuilder();\n  }\n\n  static fromBuilder(builder: CompressFromPointerArgsBuilder): CompressFromPointerArgs | null {\n    const buffer = builder.build();\n    return CompressFromPointerArgs.from_array(buffer);\n  }\n\n  get_account_idx(): number {\n    const offset = 0;\n    return this.view.getUint16(offset, true); /* little-endian */\n  }\n\n  set_account_idx(value: number): void {\n    const offset = 0;\n    this.view.setUint16(offset, value, true); /* little-endian */\n  }\n\n  get account_idx(): number {\n    return this.get_account_idx();\n  }\n\n  set account_idx(value: number) {\n    this.set_account_idx(value);\n  }\n\n  get_proof_address(): bigint {\n    const offset = 2;\n    return this.view.getBigUint64(offset, true); /* little-endian */\n  }\n\n  set_proof_address(value: bigint): void {\n    const offset = 2;\n    this.view.setBigUint64(offset, value, true); /* little-endian */\n  }\n\n  get proof_address(): bigint {\n    return this.get_proof_address();\n  }\n\n  set proof_address(value: bigint) {\n    this.set_proof_address(value);\n  }\n\n  get_proof_sz(): bigint {\n    const offset = 10;\n    return this.view.getBigUint64(offset, true); /* little-endian */\n  }\n\n  set_proof_sz(value: bigint): void {\n    const offset = 10;\n    this.view.setBigUint64(offset, value, true); /* little-endian */\n  }\n\n  get proof_sz(): bigint {\n    return this.get_proof_sz();\n  }\n\n  set proof_sz(value: bigint) {\n    this.set_proof_sz(value);\n  }\n\n  private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n    return __tnEvalFootprint(__tn_ir_CompressFromPointerArgs.root, { params: __tnParams });\n  }\n\n  private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n    return __tnValidateIrTree(__tn_ir_CompressFromPointerArgs, buffer, __tnParams);\n  }\n\n  static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n    return this.__tnFootprintInternal(__tnParams);\n  }\n\n  static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n    return this.__tnValidateInternal(buffer, __tnParams);\n  }\n\n  static footprintIr(): bigint {\n    return this.__tnFootprintInternal(Object.create(null));\n  }\n\n  static footprint(): number {\n    const irResult = this.footprintIr();\n      const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n    if (__tnBigIntGreaterThan(irResult, maxSafe)) {\n      throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for CompressFromPointerArgs');\n    }\n    return __tnBigIntToNumber(irResult, 'CompressFromPointerArgs::footprint');\n  }\n\n  static validate(buffer: Uint8Array, _opts?: { params?: never }): { ok: boolean; code?: string; consumed?: number } {\n    if (buffer.length < 18) return { ok: false, code: \"tn.buffer_too_small\", consumed: 18 };\n    return { ok: true, consumed: 18 };\n  }\n\n  static new(account_idx: number, proof_address: bigint, proof_sz: bigint): CompressFromPointerArgs {\n    const buffer = new Uint8Array(18);\n    const view = new DataView(buffer.buffer);\n\n    let offset = 0;\n    view.setUint16(0, account_idx, true); /* account_idx (little-endian) */\n    view.setBigUint64(2, proof_address, true); /* proof_address (little-endian) */\n    view.setBigUint64(10, proof_sz, true); /* proof_sz (little-endian) */\n\n    return new CompressFromPointerArgs(buffer);\n  }\n\n  static from_array(buffer: Uint8Array): CompressFromPointerArgs | null {\n    if (!buffer || buffer.length === undefined) {\n      return null;\n    }\n    const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    const validation = this.validate(buffer);\n    if (!validation.ok) {\n      return null;\n    }\n    return new CompressFromPointerArgs(buffer);\n  }\n\n}\n\nexport class CompressFromPointerArgsBuilder {\n  private buffer: Uint8Array;\n  private view: DataView;\n\n  constructor() {\n    this.buffer = new Uint8Array(18);\n    this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n  }\n\n  set_account_idx(value: number): this {\n    this.view.setUint16(0, value, true);\n    return this;\n  }\n\n  set_proof_address(value: bigint): this {\n    const cast = __tnToBigInt(value);\n    this.view.setBigUint64(2, cast, true);\n    return this;\n  }\n\n  set_proof_sz(value: bigint): this {\n    const cast = __tnToBigInt(value);\n    this.view.setBigUint64(10, cast, true);\n    return this;\n  }\n\n  build(): Uint8Array {\n    return this.buffer.slice();\n  }\n\n  buildInto(target: Uint8Array, offset = 0): Uint8Array {\n    if (target.length - offset < this.buffer.length) throw new Error(\"target buffer too small\");\n    target.set(this.buffer, offset);\n    return target;\n  }\n\n  finish(): CompressFromPointerArgs {\n    const view = CompressFromPointerArgs.from_array(this.buffer.slice());\n    if (!view) throw new Error(\"failed to build CompressFromPointerArgs\");\n    return view;\n  }\n}\n\n__tnRegisterFootprint(\"CompressFromPointerArgs\", (params) => CompressFromPointerArgs.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"CompressFromPointerArgs\", (buffer, params) => CompressFromPointerArgs.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"CompressFromPointerArgs\", (buffer) => { const result = CompressFromPointerArgs.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n\n/* ----- TYPE DEFINITION FOR CompressionError ----- */\n\nconst __tn_ir_CompressionError = {\n  typeName: \"CompressionError\",\n  root: { op: \"const\", value: 8n }\n} as const;\n\nexport class CompressionError {\n  private view: DataView;\n\n  private constructor(private buffer: Uint8Array) {\n    this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n  }\n\n  static __tnCreateView(buffer: Uint8Array, opts?: { fieldContext?: Record<string, number | bigint> }): CompressionError {\n    if (!buffer || buffer.length === undefined) throw new Error(\"CompressionError.__tnCreateView requires a Uint8Array\");\n    return new CompressionError(new Uint8Array(buffer));\n  }\n\n  static builder(): CompressionErrorBuilder {\n    return new CompressionErrorBuilder();\n  }\n\n  static fromBuilder(builder: CompressionErrorBuilder): CompressionError | null {\n    const buffer = builder.build();\n    return CompressionError.from_array(buffer);\n  }\n\n  get_code(): bigint {\n    const offset = 0;\n    return this.view.getBigUint64(offset, true); /* little-endian */\n  }\n\n  set_code(value: bigint): void {\n    const offset = 0;\n    this.view.setBigUint64(offset, value, true); /* little-endian */\n  }\n\n  get code(): bigint {\n    return this.get_code();\n  }\n\n  set code(value: bigint) {\n    this.set_code(value);\n  }\n\n  private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n    return __tnEvalFootprint(__tn_ir_CompressionError.root, { params: __tnParams });\n  }\n\n  private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n    return __tnValidateIrTree(__tn_ir_CompressionError, buffer, __tnParams);\n  }\n\n  static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n    return this.__tnFootprintInternal(__tnParams);\n  }\n\n  static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n    return this.__tnValidateInternal(buffer, __tnParams);\n  }\n\n  static footprintIr(): bigint {\n    return this.__tnFootprintInternal(Object.create(null));\n  }\n\n  static footprint(): number {\n    const irResult = this.footprintIr();\n      const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n    if (__tnBigIntGreaterThan(irResult, maxSafe)) {\n      throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for CompressionError');\n    }\n    return __tnBigIntToNumber(irResult, 'CompressionError::footprint');\n  }\n\n  static validate(buffer: Uint8Array, _opts?: { params?: never }): { ok: boolean; code?: string; consumed?: number } {\n    if (buffer.length < 8) return { ok: false, code: \"tn.buffer_too_small\", consumed: 8 };\n    return { ok: true, consumed: 8 };\n  }\n\n  static new(code: bigint): CompressionError {\n    const buffer = new Uint8Array(8);\n    const view = new DataView(buffer.buffer);\n\n    let offset = 0;\n    view.setBigUint64(0, code, true); /* code (little-endian) */\n\n    return new CompressionError(buffer);\n  }\n\n  static from_array(buffer: Uint8Array): CompressionError | null {\n    if (!buffer || buffer.length === undefined) {\n      return null;\n    }\n    const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    const validation = this.validate(buffer);\n    if (!validation.ok) {\n      return null;\n    }\n    return new CompressionError(buffer);\n  }\n\n}\n\nexport class CompressionErrorBuilder {\n  private buffer: Uint8Array;\n  private view: DataView;\n\n  constructor() {\n    this.buffer = new Uint8Array(8);\n    this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n  }\n\n  set_code(value: bigint): this {\n    const cast = __tnToBigInt(value);\n    this.view.setBigUint64(0, cast, true);\n    return this;\n  }\n\n  build(): Uint8Array {\n    return this.buffer.slice();\n  }\n\n  buildInto(target: Uint8Array, offset = 0): Uint8Array {\n    if (target.length - offset < this.buffer.length) throw new Error(\"target buffer too small\");\n    target.set(this.buffer, offset);\n    return target;\n  }\n\n  finish(): CompressionError {\n    const view = CompressionError.from_array(this.buffer.slice());\n    if (!view) throw new Error(\"failed to build CompressionError\");\n    return view;\n  }\n}\n\n__tnRegisterFootprint(\"CompressionError\", (params) => CompressionError.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"CompressionError\", (buffer, params) => CompressionError.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"CompressionError\", (buffer) => { const result = CompressionError.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n\n/* ----- TYPE DEFINITION FOR DecompressFromPointerArgs ----- */\n\nconst __tn_ir_DecompressFromPointerArgs = {\n  typeName: \"DecompressFromPointerArgs\",\n  root: { op: \"const\", value: 42n }\n} as const;\n\nexport class DecompressFromPointerArgs {\n  private view: DataView;\n\n  private constructor(private buffer: Uint8Array) {\n    this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n  }\n\n  static __tnCreateView(buffer: Uint8Array, opts?: { fieldContext?: Record<string, number | bigint> }): DecompressFromPointerArgs {\n    if (!buffer || buffer.length === undefined) throw new Error(\"DecompressFromPointerArgs.__tnCreateView requires a Uint8Array\");\n    return new DecompressFromPointerArgs(new Uint8Array(buffer));\n  }\n\n  static builder(): DecompressFromPointerArgsBuilder {\n    return new DecompressFromPointerArgsBuilder();\n  }\n\n  static fromBuilder(builder: DecompressFromPointerArgsBuilder): DecompressFromPointerArgs | null {\n    const buffer = builder.build();\n    return DecompressFromPointerArgs.from_array(buffer);\n  }\n\n  get_account_idx(): number {\n    const offset = 0;\n    return this.view.getUint16(offset, true); /* little-endian */\n  }\n\n  set_account_idx(value: number): void {\n    const offset = 0;\n    this.view.setUint16(offset, value, true); /* little-endian */\n  }\n\n  get account_idx(): number {\n    return this.get_account_idx();\n  }\n\n  set account_idx(value: number) {\n    this.set_account_idx(value);\n  }\n\n  get_account_data_sz(): bigint {\n    const offset = 2;\n    return this.view.getBigUint64(offset, true); /* little-endian */\n  }\n\n  set_account_data_sz(value: bigint): void {\n    const offset = 2;\n    this.view.setBigUint64(offset, value, true); /* little-endian */\n  }\n\n  get account_data_sz(): bigint {\n    return this.get_account_data_sz();\n  }\n\n  set account_data_sz(value: bigint) {\n    this.set_account_data_sz(value);\n  }\n\n  get_account_meta_address(): bigint {\n    const offset = 10;\n    return this.view.getBigUint64(offset, true); /* little-endian */\n  }\n\n  set_account_meta_address(value: bigint): void {\n    const offset = 10;\n    this.view.setBigUint64(offset, value, true); /* little-endian */\n  }\n\n  get account_meta_address(): bigint {\n    return this.get_account_meta_address();\n  }\n\n  set account_meta_address(value: bigint) {\n    this.set_account_meta_address(value);\n  }\n\n  get_account_data_address(): bigint {\n    const offset = 18;\n    return this.view.getBigUint64(offset, true); /* little-endian */\n  }\n\n  set_account_data_address(value: bigint): void {\n    const offset = 18;\n    this.view.setBigUint64(offset, value, true); /* little-endian */\n  }\n\n  get account_data_address(): bigint {\n    return this.get_account_data_address();\n  }\n\n  set account_data_address(value: bigint) {\n    this.set_account_data_address(value);\n  }\n\n  get_proof_address(): bigint {\n    const offset = 26;\n    return this.view.getBigUint64(offset, true); /* little-endian */\n  }\n\n  set_proof_address(value: bigint): void {\n    const offset = 26;\n    this.view.setBigUint64(offset, value, true); /* little-endian */\n  }\n\n  get proof_address(): bigint {\n    return this.get_proof_address();\n  }\n\n  set proof_address(value: bigint) {\n    this.set_proof_address(value);\n  }\n\n  get_proof_sz(): bigint {\n    const offset = 34;\n    return this.view.getBigUint64(offset, true); /* little-endian */\n  }\n\n  set_proof_sz(value: bigint): void {\n    const offset = 34;\n    this.view.setBigUint64(offset, value, true); /* little-endian */\n  }\n\n  get proof_sz(): bigint {\n    return this.get_proof_sz();\n  }\n\n  set proof_sz(value: bigint) {\n    this.set_proof_sz(value);\n  }\n\n  private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n    return __tnEvalFootprint(__tn_ir_DecompressFromPointerArgs.root, { params: __tnParams });\n  }\n\n  private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n    return __tnValidateIrTree(__tn_ir_DecompressFromPointerArgs, buffer, __tnParams);\n  }\n\n  static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n    return this.__tnFootprintInternal(__tnParams);\n  }\n\n  static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n    return this.__tnValidateInternal(buffer, __tnParams);\n  }\n\n  static footprintIr(): bigint {\n    return this.__tnFootprintInternal(Object.create(null));\n  }\n\n  static footprint(): number {\n    const irResult = this.footprintIr();\n      const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n    if (__tnBigIntGreaterThan(irResult, maxSafe)) {\n      throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for DecompressFromPointerArgs');\n    }\n    return __tnBigIntToNumber(irResult, 'DecompressFromPointerArgs::footprint');\n  }\n\n  static validate(buffer: Uint8Array, _opts?: { params?: never }): { ok: boolean; code?: string; consumed?: number } {\n    if (buffer.length < 42) return { ok: false, code: \"tn.buffer_too_small\", consumed: 42 };\n    return { ok: true, consumed: 42 };\n  }\n\n  static new(account_idx: number, account_data_sz: bigint, account_meta_address: bigint, account_data_address: bigint, proof_address: bigint, proof_sz: bigint): DecompressFromPointerArgs {\n    const buffer = new Uint8Array(42);\n    const view = new DataView(buffer.buffer);\n\n    let offset = 0;\n    view.setUint16(0, account_idx, true); /* account_idx (little-endian) */\n    view.setBigUint64(2, account_data_sz, true); /* account_data_sz (little-endian) */\n    view.setBigUint64(10, account_meta_address, true); /* account_meta_address (little-endian) */\n    view.setBigUint64(18, account_data_address, true); /* account_data_address (little-endian) */\n    view.setBigUint64(26, proof_address, true); /* proof_address (little-endian) */\n    view.setBigUint64(34, proof_sz, true); /* proof_sz (little-endian) */\n\n    return new DecompressFromPointerArgs(buffer);\n  }\n\n  static from_array(buffer: Uint8Array): DecompressFromPointerArgs | null {\n    if (!buffer || buffer.length === undefined) {\n      return null;\n    }\n    const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    const validation = this.validate(buffer);\n    if (!validation.ok) {\n      return null;\n    }\n    return new DecompressFromPointerArgs(buffer);\n  }\n\n}\n\nexport class DecompressFromPointerArgsBuilder {\n  private buffer: Uint8Array;\n  private view: DataView;\n\n  constructor() {\n    this.buffer = new Uint8Array(42);\n    this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n  }\n\n  set_account_idx(value: number): this {\n    this.view.setUint16(0, value, true);\n    return this;\n  }\n\n  set_account_data_sz(value: bigint): this {\n    const cast = __tnToBigInt(value);\n    this.view.setBigUint64(2, cast, true);\n    return this;\n  }\n\n  set_account_meta_address(value: bigint): this {\n    const cast = __tnToBigInt(value);\n    this.view.setBigUint64(10, cast, true);\n    return this;\n  }\n\n  set_account_data_address(value: bigint): this {\n    const cast = __tnToBigInt(value);\n    this.view.setBigUint64(18, cast, true);\n    return this;\n  }\n\n  set_proof_address(value: bigint): this {\n    const cast = __tnToBigInt(value);\n    this.view.setBigUint64(26, cast, true);\n    return this;\n  }\n\n  set_proof_sz(value: bigint): this {\n    const cast = __tnToBigInt(value);\n    this.view.setBigUint64(34, cast, true);\n    return this;\n  }\n\n  build(): Uint8Array {\n    return this.buffer.slice();\n  }\n\n  buildInto(target: Uint8Array, offset = 0): Uint8Array {\n    if (target.length - offset < this.buffer.length) throw new Error(\"target buffer too small\");\n    target.set(this.buffer, offset);\n    return target;\n  }\n\n  finish(): DecompressFromPointerArgs {\n    const view = DecompressFromPointerArgs.from_array(this.buffer.slice());\n    if (!view) throw new Error(\"failed to build DecompressFromPointerArgs\");\n    return view;\n  }\n}\n\n__tnRegisterFootprint(\"DecompressFromPointerArgs\", (params) => DecompressFromPointerArgs.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"DecompressFromPointerArgs\", (buffer, params) => DecompressFromPointerArgs.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"DecompressFromPointerArgs\", (buffer) => { const result = DecompressFromPointerArgs.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n\n/* ----- TYPE DEFINITION FOR CompressArgs ----- */\n\nconst __tn_ir_CompressArgs = {\n  typeName: \"CompressArgs\",\n  root: { op: \"align\", alignment: 1, node: { op: \"add\", left: { op: \"align\", alignment: 2, node: { op: \"const\", value: 2n } }, right: { op: \"align\", alignment: 1, node: { op: \"call\", typeName: \"StateProof\", args: [{ name: \"proof_body.hdr.type_slot\", source: \"proof_body.hdr.type_slot\" }, { name: \"proof_body.payload_size\", source: \"proof_body.payload_size\" }] } } } }\n} as const;\n\nexport class CompressArgs {\n  private view: DataView;\n  private __tnParams: CompressArgs.Params;\n\n  private constructor(private buffer: Uint8Array, params?: CompressArgs.Params) {\n    this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    if (params) {\n      this.__tnParams = params;\n    } else {\n      const derived = CompressArgs.__tnExtractParams(this.view, buffer);\n      if (!derived) {\n        throw new Error(\"CompressArgs: failed to derive dynamic parameters\");\n      }\n      this.__tnParams = derived.params;\n    }\n  }\n\n  static __tnCreateView(buffer: Uint8Array, opts?: { params?: CompressArgs.Params, fieldContext?: Record<string, number | bigint> }): CompressArgs {\n    if (!buffer || buffer.length === undefined) throw new Error(\"CompressArgs.__tnCreateView requires a Uint8Array\");\n    let params = opts?.params ?? null;\n    if (!params) {\n      const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n      const derived = CompressArgs.__tnExtractParams(view, buffer);\n      if (!derived) throw new Error(\"CompressArgs.__tnCreateView: failed to derive params\");\n      params = derived.params;\n    }\n    const instance = new CompressArgs(new Uint8Array(buffer), params);\n    return instance;\n  }\n\n  dynamicParams(): CompressArgs.Params {\n    return this.__tnParams;\n  }\n\n  static builder(): CompressArgsBuilder {\n    return new CompressArgsBuilder();\n  }\n\n  static fromBuilder(builder: CompressArgsBuilder): CompressArgs | null {\n    const buffer = builder.build();\n    const params = builder.dynamicParams();\n    return CompressArgs.from_array(buffer, { params });\n  }\n\n  static __tnComputeSequentialLayout(view: DataView, buffer: Uint8Array): { params: Record<string, bigint> | null; offsets: Record<string, number> | null; derived: Record<string, bigint> | null } | null {\n    const __tnLength = buffer.length;\n    let __tnParamSeq_proof_body_hdr_type_slot: bigint | null = null;\n    let __tnParamSeq_proof_body_payload_size: bigint | null = null;\n    let __tnFieldValue_account_idx: number | null = null;\n    let __tnCursorMutable = 0;\n    if (__tnCursorMutable + 2 > __tnLength) return null;\n    const __tnRead_account_idx = view.getUint16(__tnCursorMutable, true);\n    __tnFieldValue_account_idx = __tnRead_account_idx;\n    __tnCursorMutable += 2;\n    const __tnTyperefResult_proof = __tnInvokeDynamicValidate(\"StateProof\", buffer.subarray(__tnCursorMutable));\n    if (!__tnTyperefResult_proof.ok || __tnTyperefResult_proof.consumed === undefined) return null;\n    const __tnTyperefParams_proof = __tnTyperefResult_proof.params ?? null;\n    if (!__tnTyperefParams_proof || __tnTyperefParams_proof[\"proof_body_hdr_type_slot\"] === undefined) return null;\n    __tnParamSeq_proof_body_hdr_type_slot = __tnTyperefParams_proof[\"proof_body_hdr_type_slot\"];\n    if (!__tnTyperefParams_proof || __tnTyperefParams_proof[\"proof_body_payload_size\"] === undefined) return null;\n    __tnParamSeq_proof_body_payload_size = __tnTyperefParams_proof[\"proof_body_payload_size\"];\n    __tnCursorMutable += __tnBigIntToNumber(__tnTyperefResult_proof.consumed, \"CompressArgs::proof\");\n    const params: Record<string, bigint> = Object.create(null);\n    if (__tnParamSeq_proof_body_hdr_type_slot === null) return null;\n    params[\"proof_body_hdr_type_slot\"] = __tnParamSeq_proof_body_hdr_type_slot as bigint;\n    if (__tnParamSeq_proof_body_payload_size === null) return null;\n    params[\"proof_body_payload_size\"] = __tnParamSeq_proof_body_payload_size as bigint;\n    return { params, offsets: null, derived: null };\n  }\n\n  private static __tnExtractParams(view: DataView, buffer: Uint8Array): { params: CompressArgs.Params; derived: Record<string, bigint> | null } | null {\n    const __tnLayout = CompressArgs.__tnComputeSequentialLayout(view, buffer);\n    if (!__tnLayout || !__tnLayout.params) return null;\n    const __tnSeqParams = __tnLayout.params;\n    const __tnParamSeq_proof_body_hdr_type_slot = __tnSeqParams[\"proof_body_hdr_type_slot\"];\n    if (__tnParamSeq_proof_body_hdr_type_slot === undefined) return null;\n    const __tnParamSeq_proof_body_payload_size = __tnSeqParams[\"proof_body_payload_size\"];\n    if (__tnParamSeq_proof_body_payload_size === undefined) return null;\n    const __tnExtractedParams = CompressArgs.Params.fromValues({\n      proof_body_hdr_type_slot: __tnParamSeq_proof_body_hdr_type_slot as bigint,\n      proof_body_payload_size: __tnParamSeq_proof_body_payload_size as bigint,\n    });\n    return { params: __tnExtractedParams, derived: null };\n  }\n\n  get_account_idx(): number {\n    const offset = 0;\n    return this.view.getUint16(offset, true); /* little-endian */\n  }\n\n  set_account_idx(value: number): void {\n    const offset = 0;\n    this.view.setUint16(offset, value, true); /* little-endian */\n  }\n\n  get account_idx(): number {\n    return this.get_account_idx();\n  }\n\n  set account_idx(value: number) {\n    this.set_account_idx(value);\n  }\n\n  get_proof(): StateProof {\n    const offset = 2;\n    const tail = this.buffer.subarray(offset);\n    const validation = StateProof.validate(tail);\n    if (!validation.ok || validation.consumed === undefined) {\n      throw new Error(\"CompressArgs: failed to read field 'proof' (invalid nested payload)\");\n    }\n    const length = validation.consumed;\n    const slice = tail.subarray(0, length);\n    const opts = validation.params ? { params: validation.params } : undefined;\n    return StateProof.from_array(slice, opts)!;\n  }\n\n  set_proof(value: StateProof): void {\n    /* Copy bytes from source struct to this field */\n    const sourceBytes = (value as any).buffer as Uint8Array;\n    const offset = 2;\n    this.buffer.set(sourceBytes, offset);\n  }\n\n  get proof(): StateProof {\n    return this.get_proof();\n  }\n\n  set proof(value: StateProof) {\n    this.set_proof(value);\n  }\n  private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n    return __tnEvalFootprint(__tn_ir_CompressArgs.root, { params: __tnParams });\n  }\n\n  private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n    return __tnValidateIrTree(__tn_ir_CompressArgs, buffer, __tnParams);\n  }\n\n  static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n    return this.__tnFootprintInternal(__tnParams);\n  }\n\n  static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n    return this.__tnValidateInternal(buffer, __tnParams);\n  }\n\n  static footprintIr(proof_body_hdr_type_slot: number | bigint, proof_body_payload_size: number | bigint): bigint {\n    const params = CompressArgs.Params.fromValues({\n      proof_body_hdr_type_slot: proof_body_hdr_type_slot,\n      proof_body_payload_size: proof_body_payload_size,\n    });\n    return this.footprintIrFromParams(params);\n  }\n\n  private static __tnPackParams(params: CompressArgs.Params): Record<string, bigint> {\n    const record: Record<string, bigint> = Object.create(null);\n    record[\"proof_body.hdr.type_slot\"] = params.proof_body_hdr_type_slot;\n    record[\"proof_body.payload_size\"] = params.proof_body_payload_size;\n    return record;\n  }\n\n  static footprintIrFromParams(params: CompressArgs.Params): bigint {\n    const __tnParams = this.__tnPackParams(params);\n    return this.__tnFootprintInternal(__tnParams);\n  }\n\n  static footprintFromParams(params: CompressArgs.Params): number {\n    const irResult = this.footprintIrFromParams(params);\n    const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n    if (__tnBigIntGreaterThan(irResult, maxSafe)) throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for CompressArgs');\n    return __tnBigIntToNumber(irResult, 'CompressArgs::footprintFromParams');\n  }\n\n  static footprintFromValues(input: { proof_body_hdr_type_slot: number | bigint, proof_body_payload_size: number | bigint }): number {\n    const params = CompressArgs.params(input);\n    return this.footprintFromParams(params);\n  }\n\n  static footprint(params: CompressArgs.Params): number {\n    return this.footprintFromParams(params);\n  }\n\n  static validate(buffer: Uint8Array, opts?: { params?: CompressArgs.Params }): { ok: boolean; code?: string; consumed?: number; params?: CompressArgs.Params } {\n    if (!buffer || buffer.length === undefined) {\n      return { ok: false, code: \"tn.invalid_buffer\" };\n    }\n    const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    let params = opts?.params ?? null;\n    if (!params) {\n      return { ok: false, code: \"tn.param_extraction_failed\" };\n    }\n    const __tnParamsRec = this.__tnPackParams(params);\n    const irResult = this.__tnValidateInternal(buffer, __tnParamsRec);\n    if (!irResult.ok) {\n      return { ok: false, code: irResult.code, consumed: irResult.consumed ? __tnBigIntToNumber(irResult.consumed, 'CompressArgs::validate') : undefined, params };\n    }\n    const consumed = irResult.consumed ? __tnBigIntToNumber(irResult.consumed, 'CompressArgs::validate') : undefined;\n    return { ok: true, consumed, params };\n  }\n\n  static from_array(buffer: Uint8Array, opts?: { params?: CompressArgs.Params }): CompressArgs | null {\n    if (!buffer || buffer.length === undefined) {\n      return null;\n    }\n    const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    let params = opts?.params ?? null;\n    if (!params) {\n      __tnLogWarn('CompressArgs::from_array requires params when IR extraction is unavailable');\n      return null;\n    }\n    const validation = this.validate(buffer, { params });\n    if (!validation.ok) {\n      return null;\n    }\n    const cached = validation.params ?? params;\n    const state = new CompressArgs(buffer, cached);\n    return state;\n  }\n\n\n}\n\nexport namespace CompressArgs {\n  export type Params = {\n    /** ABI path: proof_body.hdr.type_slot */\n    readonly proof_body_hdr_type_slot: bigint;\n    /** ABI path: proof_body.payload_size */\n    readonly proof_body_payload_size: bigint;\n  };\n\n  export const ParamKeys = Object.freeze({\n    proof_body_hdr_type_slot: \"proof_body.hdr.type_slot\",\n    proof_body_payload_size: \"proof_body.payload_size\",\n  } as const);\n\n  export const Params = {\n    fromValues(input: { proof_body_hdr_type_slot: number | bigint, proof_body_payload_size: number | bigint }): Params {\n      return {\n        proof_body_hdr_type_slot: __tnToBigInt(input.proof_body_hdr_type_slot),\n        proof_body_payload_size: __tnToBigInt(input.proof_body_payload_size),\n      };\n    },\n    fromBuilder(source: { dynamicParams(): Params } | { params: Params } | Params): Params {\n      if ((source as { dynamicParams?: () => Params }).dynamicParams) {\n        return (source as { dynamicParams(): Params }).dynamicParams();\n      }\n      if ((source as { params?: Params }).params) {\n        return (source as { params: Params }).params;\n      }\n      return source as Params;\n    }\n  };\n\n  export function params(input: { proof_body_hdr_type_slot: number | bigint, proof_body_payload_size: number | bigint }): Params {\n    return Params.fromValues(input);\n  }\n}\n\nexport class CompressArgsBuilder {\n  private buffer: Uint8Array;\n  private view: DataView;\n  private __tnCachedParams: CompressArgs.Params | null = null;\n  private __tnLastBuffer: Uint8Array | null = null;\n  private __tnLastParams: CompressArgs.Params | null = null;\n  private __tnTail_proof: Uint8Array | null = null;\n  private __tnTailParams_proof: Record<string, bigint> | null = null;\n\n  constructor() {\n    this.buffer = new Uint8Array(2);\n    this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n  }\n\n  private __tnInvalidate(): void {\n    this.__tnCachedParams = null;\n    this.__tnLastBuffer = null;\n    this.__tnLastParams = null;\n  }\n\n  set_account_idx(value: number): this {\n    this.view.setUint16(0, value, true);\n    this.__tnInvalidate();\n    return this;\n  }\n\n  set_proof(value: StateProof | __TnStructFieldInput): this {\n    const bytes = __tnResolveStructFieldInput(value as __TnStructFieldInput, \"CompressArgsBuilder::proof\");\n    const validation = __tnInvokeDynamicValidate(\"StateProof\", bytes);\n    if (!validation.ok || validation.consumed === undefined) throw new Error(\"CompressArgsBuilder: field 'proof' failed validation\");\n    if (__tnBigIntToNumber(validation.consumed, \"CompressArgsBuilder::proof\") !== bytes.length) throw new Error(\"CompressArgsBuilder: field 'proof' validation did not consume the full buffer\");\n    this.__tnTail_proof = bytes;\n    this.__tnTailParams_proof = validation.params ?? null;\n    this.__tnInvalidate();\n    return this;\n  }\n\n  build(): Uint8Array {\n    const params = this.__tnComputeParams();\n    const size = CompressArgs.footprintFromParams(params);\n    const buffer = new Uint8Array(size);\n    this.__tnWriteInto(buffer);\n    this.__tnValidateOrThrow(buffer, params);\n    return buffer;\n  }\n\n  buildInto(target: Uint8Array, offset = 0): Uint8Array {\n    const params = this.__tnComputeParams();\n    const size = CompressArgs.footprintFromParams(params);\n    if (target.length - offset < size) throw new Error(\"CompressArgsBuilder: target buffer too small\");\n    const slice = target.subarray(offset, offset + size);\n    this.__tnWriteInto(slice);\n    this.__tnValidateOrThrow(slice, params);\n    return target;\n  }\n\n  finish(): CompressArgs {\n    const buffer = this.build();\n    const params = this.__tnLastParams ?? this.__tnComputeParams();\n    const view = CompressArgs.from_array(buffer, { params });\n    if (!view) throw new Error(\"CompressArgsBuilder: failed to finalize view\");\n    return view;\n  }\n\n  finishView(): CompressArgs {\n    return this.finish();\n  }\n\n  dynamicParams(): CompressArgs.Params {\n    return this.__tnComputeParams();\n  }\n\n  private __tnComputeParams(): CompressArgs.Params {\n    if (this.__tnCachedParams) return this.__tnCachedParams;\n    const params = CompressArgs.Params.fromValues({\n      proof_body_hdr_type_slot: (() => { const params = this.__tnTailParams_proof; if (!params || params[\"proof_body_hdr_type_slot\"] === undefined) throw new Error(\"CompressArgsBuilder: field 'proof' must be written before computing params\"); return params[\"proof_body_hdr_type_slot\"]; })(),\n      proof_body_payload_size: (() => { const params = this.__tnTailParams_proof; if (!params || params[\"proof_body_payload_size\"] === undefined) throw new Error(\"CompressArgsBuilder: field 'proof' must be written before computing params\"); return params[\"proof_body_payload_size\"]; })(),\n    });\n    this.__tnCachedParams = params;\n    return params;\n  }\n\n  private __tnWriteInto(target: Uint8Array): void {\n    target.set(this.buffer, 0);\n    let cursor = this.buffer.length;\n    const __tnLocal_proof_bytes = this.__tnTail_proof;\n    if (!__tnLocal_proof_bytes) throw new Error(\"CompressArgsBuilder: field 'proof' must be written before build\");\n    target.set(__tnLocal_proof_bytes, cursor);\n    cursor += __tnLocal_proof_bytes.length;\n  }\n\n  private __tnValidateOrThrow(buffer: Uint8Array, params: CompressArgs.Params): void {\n    const result = CompressArgs.validate(buffer, { params });\n    if (!result.ok) {\n      throw new Error(`${ CompressArgs }Builder: builder produced invalid buffer (code=${result.code ?? \"unknown\"})`);\n    }\n    this.__tnLastParams = result.params ?? params;\n    this.__tnLastBuffer = buffer;\n  }\n}\n\n__tnRegisterFootprint(\"CompressArgs\", (params) => CompressArgs.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"CompressArgs\", (buffer, params) => CompressArgs.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"CompressArgs\", (buffer) => { const result = CompressArgs.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n\n/* ----- TYPE DEFINITION FOR DecompressArgs ----- */\n\nconst __tn_ir_DecompressArgs = {\n  typeName: \"DecompressArgs\",\n  root: { op: \"align\", alignment: 1, node: { op: \"add\", left: { op: \"add\", left: { op: \"add\", left: { op: \"add\", left: { op: \"align\", alignment: 2, node: { op: \"const\", value: 2n } }, right: { op: \"align\", alignment: 8, node: { op: \"const\", value: 8n } } }, right: { op: \"align\", alignment: 1, node: { op: \"const\", value: 64n } } }, right: { op: \"align\", alignment: 1, node: { op: \"mul\", left: { op: \"field\", param: \"account_data.account_data_sz\" }, right: { op: \"const\", value: 1n } } } }, right: { op: \"align\", alignment: 1, node: { op: \"call\", typeName: \"StateProof\", args: [{ name: \"proof_body.hdr.type_slot\", source: \"proof_body.hdr.type_slot\" }, { name: \"proof_body.payload_size\", source: \"proof_body.payload_size\" }] } } } }\n} as const;\n\nexport class DecompressArgs {\n  private view: DataView;\n  private __tnFieldContext: Record<string, number | bigint> | null = null;\n  private __tnParams: DecompressArgs.Params;\n\n  private constructor(private buffer: Uint8Array, params?: DecompressArgs.Params, fieldContext?: Record<string, number | bigint>) {\n    this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    this.__tnFieldContext = fieldContext ?? null;\n    if (params) {\n      this.__tnParams = params;\n    } else {\n      const derived = DecompressArgs.__tnExtractParams(this.view, buffer);\n      if (!derived) {\n        throw new Error(\"DecompressArgs: failed to derive dynamic parameters\");\n      }\n      this.__tnParams = derived.params;\n    }\n  }\n\n  static __tnCreateView(buffer: Uint8Array, opts?: { params?: DecompressArgs.Params, fieldContext?: Record<string, number | bigint> }): DecompressArgs {\n    if (!buffer || buffer.length === undefined) throw new Error(\"DecompressArgs.__tnCreateView requires a Uint8Array\");\n    let params = opts?.params ?? null;\n    if (!params) {\n      const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n      const derived = DecompressArgs.__tnExtractParams(view, buffer);\n      if (!derived) throw new Error(\"DecompressArgs.__tnCreateView: failed to derive params\");\n      params = derived.params;\n    }\n    const instance = new DecompressArgs(new Uint8Array(buffer), params, opts?.fieldContext);\n    return instance;\n  }\n\n  dynamicParams(): DecompressArgs.Params {\n    return this.__tnParams;\n  }\n\n  withFieldContext(context: Record<string, number | bigint>): this {\n    this.__tnFieldContext = context;\n    return this;\n  }\n\n  private __tnResolveFieldRef(path: string): number {\n    const getterName = `get_${path.replace(/[.]/g, '_')}`;\n    const getter = (this as any)[getterName];\n    if (typeof getter === \"function\") {\n      const value = getter.call(this);\n      return typeof value === \"bigint\" ? __tnBigIntToNumber(value, \"DecompressArgs::__tnResolveFieldRef\") : value;\n    }\n    if (this.__tnFieldContext && Object.prototype.hasOwnProperty.call(this.__tnFieldContext, path)) {\n      const contextValue = this.__tnFieldContext[path];\n      return typeof contextValue === \"bigint\" ? __tnBigIntToNumber(contextValue, \"DecompressArgs::__tnResolveFieldRef\") : contextValue;\n    }\n    throw new Error(\"DecompressArgs: field reference '\" + path + \"' is not available; provide fieldContext when creating this view\");\n  }\n\n  static builder(): DecompressArgsBuilder {\n    return new DecompressArgsBuilder();\n  }\n\n  static fromBuilder(builder: DecompressArgsBuilder): DecompressArgs | null {\n    const buffer = builder.build();\n    const params = builder.dynamicParams();\n    return DecompressArgs.from_array(buffer, { params });\n  }\n\n  static readonly flexibleArrayWriters = Object.freeze([\n    { field: \"account_data\", method: \"account_data\", sizeField: \"account_data_sz\", paramKey: \"account_data_sz\", elementSize: 1 },\n  ] as const);\n\n  static __tnComputeSequentialLayout(view: DataView, buffer: Uint8Array): { params: Record<string, bigint> | null; offsets: Record<string, number> | null; derived: Record<string, bigint> | null } | null {\n    const offsets: Record<string, number> = Object.create(null);\n    const __tnLength = buffer.length;\n    let __tnParamSeq_proof_body_hdr_type_slot: bigint | null = null;\n    let __tnParamSeq_proof_body_payload_size: bigint | null = null;\n    let __tnFieldValue_account_idx: number | null = null;\n    let __tnFieldValue_account_data_sz: bigint | null = null;\n    let __tnCursorMutable = 0;\n    if (__tnCursorMutable + 2 > __tnLength) return null;\n    const __tnRead_account_idx = view.getUint16(__tnCursorMutable, true);\n    __tnFieldValue_account_idx = __tnRead_account_idx;\n    __tnCursorMutable += 2;\n    if (__tnCursorMutable + 8 > __tnLength) return null;\n    const __tnRead_account_data_sz = view.getBigUint64(__tnCursorMutable, true);\n    __tnFieldValue_account_data_sz = __tnRead_account_data_sz;\n    __tnCursorMutable += 8;\n    if (__tnCursorMutable + 64 > __tnLength) return null;\n    __tnCursorMutable += 64;\n    if (__tnFieldValue_account_data_sz === null) return null;\n    const __tnArrayCount_account_data = Math.trunc(Number(__tnFieldValue_account_data_sz));\n    if (!Number.isFinite(__tnArrayCount_account_data) || __tnArrayCount_account_data < 0) return null;\n    const __tnArrayBytes_account_data = __tnArrayCount_account_data * 1;\n    if (__tnCursorMutable + __tnArrayBytes_account_data > __tnLength) return null;\n    __tnCursorMutable += __tnArrayBytes_account_data;\n    offsets[\"proof\"] = __tnCursorMutable;\n    const __tnTyperefResult_proof = __tnInvokeDynamicValidate(\"StateProof\", buffer.subarray(__tnCursorMutable));\n    if (!__tnTyperefResult_proof.ok || __tnTyperefResult_proof.consumed === undefined) return null;\n    const __tnTyperefParams_proof = __tnTyperefResult_proof.params ?? null;\n    if (!__tnTyperefParams_proof || __tnTyperefParams_proof[\"proof_body_hdr_type_slot\"] === undefined) return null;\n    __tnParamSeq_proof_body_hdr_type_slot = __tnTyperefParams_proof[\"proof_body_hdr_type_slot\"];\n    if (!__tnTyperefParams_proof || __tnTyperefParams_proof[\"proof_body_payload_size\"] === undefined) return null;\n    __tnParamSeq_proof_body_payload_size = __tnTyperefParams_proof[\"proof_body_payload_size\"];\n    __tnCursorMutable += __tnBigIntToNumber(__tnTyperefResult_proof.consumed, \"DecompressArgs::proof\");\n    const params: Record<string, bigint> = Object.create(null);\n    if (__tnParamSeq_proof_body_hdr_type_slot === null) return null;\n    params[\"proof_body_hdr_type_slot\"] = __tnParamSeq_proof_body_hdr_type_slot as bigint;\n    if (__tnParamSeq_proof_body_payload_size === null) return null;\n    params[\"proof_body_payload_size\"] = __tnParamSeq_proof_body_payload_size as bigint;\n    return { params, offsets: offsets, derived: null };\n  }\n\n  private static __tnExtractParams(view: DataView, buffer: Uint8Array): { params: DecompressArgs.Params; derived: Record<string, bigint> | null } | null {\n    if (buffer.length < 10) {\n      return null;\n    }\n    const __tnParam_account_data_account_data_sz = __tnToBigInt(view.getBigUint64(2, true));\n    const __tnLayout = DecompressArgs.__tnComputeSequentialLayout(view, buffer);\n    if (!__tnLayout || !__tnLayout.params) return null;\n    const __tnSeqParams = __tnLayout.params;\n    const __tnParamSeq_proof_body_hdr_type_slot = __tnSeqParams[\"proof_body_hdr_type_slot\"];\n    if (__tnParamSeq_proof_body_hdr_type_slot === undefined) return null;\n    const __tnParamSeq_proof_body_payload_size = __tnSeqParams[\"proof_body_payload_size\"];\n    if (__tnParamSeq_proof_body_payload_size === undefined) return null;\n    const __tnExtractedParams = DecompressArgs.Params.fromValues({\n      account_data_account_data_sz: __tnParam_account_data_account_data_sz,\n      proof_body_hdr_type_slot: __tnParamSeq_proof_body_hdr_type_slot as bigint,\n      proof_body_payload_size: __tnParamSeq_proof_body_payload_size as bigint,\n    });\n    return { params: __tnExtractedParams, derived: null };\n  }\n\n  /* Dynamic offsets are derived once per view; mutating length fields later does not invalidate this cache. */\n  private __tnDynamicOffsetCache: Record<string, number> | null = null;\n  private __tnGetDynamicOffset(field: string): number {\n    if (!this.__tnDynamicOffsetCache) {\n      this.__tnDynamicOffsetCache = this.__tnComputeDynamicOffsets();\n    }\n    const offset = this.__tnDynamicOffsetCache[field];\n    if (offset === undefined) {\n      throw new Error(\"DecompressArgs: field '\" + field + \"' does not have a dynamic offset\");\n    }\n    return offset;\n  }\n\n  private __tnComputeDynamicOffsets(): Record<string, number> {\n    const layout = DecompressArgs.__tnComputeSequentialLayout(this.view, this.buffer);\n    if (!layout || !layout.offsets) {\n      throw new Error(\"DecompressArgs: failed to compute dynamic offsets\");\n    }\n    return layout.offsets;\n  }\n\n  get_account_idx(): number {\n    const offset = 0;\n    return this.view.getUint16(offset, true); /* little-endian */\n  }\n\n  set_account_idx(value: number): void {\n    const offset = 0;\n    this.view.setUint16(offset, value, true); /* little-endian */\n  }\n\n  get account_idx(): number {\n    return this.get_account_idx();\n  }\n\n  set account_idx(value: number) {\n    this.set_account_idx(value);\n  }\n\n  get_account_data_sz(): bigint {\n    const offset = 2;\n    return this.view.getBigUint64(offset, true); /* little-endian */\n  }\n\n  set_account_data_sz(value: bigint): void {\n    const offset = 2;\n    this.view.setBigUint64(offset, value, true); /* little-endian */\n  }\n\n  get account_data_sz(): bigint {\n    return this.get_account_data_sz();\n  }\n\n  set account_data_sz(value: bigint) {\n    this.set_account_data_sz(value);\n  }\n\n  get_account_meta(): number[] {\n    const offset = 10;\n    const result: number[] = [];\n    for (let i = 0; i < 64; i++) {\n      result.push(this.view.getUint8((offset + i * 1)));\n    }\n    return result;\n  }\n\n  set_account_meta(value: number[]): void {\n    const offset = 10;\n    if (value.length !== 64) {\n      throw new Error('Array length must be 64');\n    }\n    for (let i = 0; i < 64; i++) {\n      this.view.setUint8((offset + i * 1), value[i]);\n    }\n  }\n\n  get account_meta(): number[] {\n    return this.get_account_meta();\n  }\n\n  set account_meta(value: number[]) {\n    this.set_account_meta(value);\n  }\n\n  get_account_data_length(): number {\n    return this.__tnResolveFieldRef(\"account_data_sz\");\n  }\n\n  get_account_data_at(index: number): number {\n    const offset = 74;\n    return this.view.getUint8(offset + index * 1);\n  }\n\n  get_account_data(): number[] {\n    const len = this.get_account_data_length();\n    const result: number[] = [];\n    for (let i = 0; i < len; i++) {\n      result.push(this.get_account_data_at(i));\n    }\n    return result;\n  }\n\n  set_account_data_at(index: number, value: number): void {\n    const offset = 74;\n    this.view.setUint8((offset + index * 1), value);\n  }\n\n  set_account_data(value: number[]): void {\n    const len = Math.min(this.get_account_data_length(), value.length);\n    for (let i = 0; i < len; i++) {\n      this.set_account_data_at(i, value[i]);\n    }\n  }\n\n  get account_data(): number[] {\n    return this.get_account_data();\n  }\n\n  set account_data(value: number[]) {\n    this.set_account_data(value);\n  }\n\n  get_proof(): StateProof {\n    const offset = this.__tnGetDynamicOffset(\"proof\");\n    const tail = this.buffer.subarray(offset);\n    const validation = StateProof.validate(tail);\n    if (!validation.ok || validation.consumed === undefined) {\n      throw new Error(\"DecompressArgs: failed to read field 'proof' (invalid nested payload)\");\n    }\n    const length = validation.consumed;\n    const slice = tail.subarray(0, length);\n    const opts = validation.params ? { params: validation.params } : undefined;\n    return StateProof.from_array(slice, opts)!;\n  }\n\n  set_proof(value: StateProof): void {\n    /* Copy bytes from source struct to this field */\n    const sourceBytes = (value as any).buffer as Uint8Array;\n    const offset = this.__tnGetDynamicOffset(\"proof\");\n    this.buffer.set(sourceBytes, offset);\n  }\n\n  get proof(): StateProof {\n    return this.get_proof();\n  }\n\n  set proof(value: StateProof) {\n    this.set_proof(value);\n  }\n  private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n    return __tnEvalFootprint(__tn_ir_DecompressArgs.root, { params: __tnParams });\n  }\n\n  private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n    return __tnValidateIrTree(__tn_ir_DecompressArgs, buffer, __tnParams);\n  }\n\n  static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n    return this.__tnFootprintInternal(__tnParams);\n  }\n\n  static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n    return this.__tnValidateInternal(buffer, __tnParams);\n  }\n\n  static footprintIr(account_data_account_data_sz: number | bigint, proof_body_hdr_type_slot: number | bigint, proof_body_payload_size: number | bigint): bigint {\n    const params = DecompressArgs.Params.fromValues({\n      account_data_account_data_sz: account_data_account_data_sz,\n      proof_body_hdr_type_slot: proof_body_hdr_type_slot,\n      proof_body_payload_size: proof_body_payload_size,\n    });\n    return this.footprintIrFromParams(params);\n  }\n\n  private static __tnPackParams(params: DecompressArgs.Params): Record<string, bigint> {\n    const record: Record<string, bigint> = Object.create(null);\n    record[\"account_data.account_data_sz\"] = params.account_data_account_data_sz;\n    record[\"proof_body.hdr.type_slot\"] = params.proof_body_hdr_type_slot;\n    record[\"proof_body.payload_size\"] = params.proof_body_payload_size;\n    return record;\n  }\n\n  static footprintIrFromParams(params: DecompressArgs.Params): bigint {\n    const __tnParams = this.__tnPackParams(params);\n    return this.__tnFootprintInternal(__tnParams);\n  }\n\n  static footprintFromParams(params: DecompressArgs.Params): number {\n    const irResult = this.footprintIrFromParams(params);\n    const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n    if (__tnBigIntGreaterThan(irResult, maxSafe)) throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for DecompressArgs');\n    return __tnBigIntToNumber(irResult, 'DecompressArgs::footprintFromParams');\n  }\n\n  static footprintFromValues(input: { account_data_account_data_sz: number | bigint, proof_body_hdr_type_slot: number | bigint, proof_body_payload_size: number | bigint }): number {\n    const params = DecompressArgs.params(input);\n    return this.footprintFromParams(params);\n  }\n\n  static footprint(params: DecompressArgs.Params): number {\n    return this.footprintFromParams(params);\n  }\n\n  static validate(buffer: Uint8Array, opts?: { params?: DecompressArgs.Params }): { ok: boolean; code?: string; consumed?: number; params?: DecompressArgs.Params } {\n    if (!buffer || buffer.length === undefined) {\n      return { ok: false, code: \"tn.invalid_buffer\" };\n    }\n    const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    let params = opts?.params ?? null;\n    if (!params) {\n      const extracted = this.__tnExtractParams(view, buffer);\n      if (!extracted) return { ok: false, code: \"tn.param_extraction_failed\" };\n      params = extracted.params;\n    }\n    const __tnParamsRec = this.__tnPackParams(params);\n    const irResult = this.__tnValidateInternal(buffer, __tnParamsRec);\n    if (!irResult.ok) {\n      return { ok: false, code: irResult.code, consumed: irResult.consumed ? __tnBigIntToNumber(irResult.consumed, 'DecompressArgs::validate') : undefined, params };\n    }\n    const consumed = irResult.consumed ? __tnBigIntToNumber(irResult.consumed, 'DecompressArgs::validate') : undefined;\n    return { ok: true, consumed, params };\n  }\n\n  static from_array(buffer: Uint8Array, opts?: { params?: DecompressArgs.Params }): DecompressArgs | null {\n    if (!buffer || buffer.length === undefined) {\n      return null;\n    }\n    const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    let params = opts?.params ?? null;\n    if (!params) {\n      const derived = this.__tnExtractParams(view, buffer);\n      if (!derived) return null;\n      params = derived.params;\n    }\n    const validation = this.validate(buffer, { params });\n    if (!validation.ok) {\n      return null;\n    }\n    const cached = validation.params ?? params;\n    const state = new DecompressArgs(buffer, cached);\n    return state;\n  }\n\n\n}\n\nexport namespace DecompressArgs {\n  export type Params = {\n    /** ABI path: account_data.account_data_sz */\n    readonly account_data_account_data_sz: bigint;\n    /** ABI path: proof_body.hdr.type_slot */\n    readonly proof_body_hdr_type_slot: bigint;\n    /** ABI path: proof_body.payload_size */\n    readonly proof_body_payload_size: bigint;\n  };\n\n  export const ParamKeys = Object.freeze({\n    account_data_account_data_sz: \"account_data.account_data_sz\",\n    proof_body_hdr_type_slot: \"proof_body.hdr.type_slot\",\n    proof_body_payload_size: \"proof_body.payload_size\",\n  } as const);\n\n  export const Params = {\n    fromValues(input: { account_data_account_data_sz: number | bigint, proof_body_hdr_type_slot: number | bigint, proof_body_payload_size: number | bigint }): Params {\n      return {\n        account_data_account_data_sz: __tnToBigInt(input.account_data_account_data_sz),\n        proof_body_hdr_type_slot: __tnToBigInt(input.proof_body_hdr_type_slot),\n        proof_body_payload_size: __tnToBigInt(input.proof_body_payload_size),\n      };\n    },\n    fromBuilder(source: { dynamicParams(): Params } | { params: Params } | Params): Params {\n      if ((source as { dynamicParams?: () => Params }).dynamicParams) {\n        return (source as { dynamicParams(): Params }).dynamicParams();\n      }\n      if ((source as { params?: Params }).params) {\n        return (source as { params: Params }).params;\n      }\n      return source as Params;\n    }\n  };\n\n  export function params(input: { account_data_account_data_sz: number | bigint, proof_body_hdr_type_slot: number | bigint, proof_body_payload_size: number | bigint }): Params {\n    return Params.fromValues(input);\n  }\n}\n\nexport class DecompressArgsBuilder {\n  private buffer: Uint8Array;\n  private view: DataView;\n  private __tnCachedParams: DecompressArgs.Params | null = null;\n  private __tnLastBuffer: Uint8Array | null = null;\n  private __tnLastParams: DecompressArgs.Params | null = null;\n  private __tnFam_account_data: Uint8Array | null = null;\n  private __tnFam_account_dataCount: number | null = null;\n  private __tnFamWriter_account_data?: __TnFamWriterResult<DecompressArgsBuilder>;\n  private __tnTail_proof: Uint8Array | null = null;\n  private __tnTailParams_proof: Record<string, bigint> | null = null;\n\n  constructor() {\n    this.buffer = new Uint8Array(74);\n    this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n  }\n\n  private __tnInvalidate(): void {\n    this.__tnCachedParams = null;\n    this.__tnLastBuffer = null;\n    this.__tnLastParams = null;\n  }\n\n  set_account_idx(value: number): this {\n    this.view.setUint16(0, value, true);\n    this.__tnInvalidate();\n    return this;\n  }\n\n  set_account_data_sz(value: bigint): this {\n    const cast = __tnToBigInt(value);\n    this.view.setBigUint64(2, cast, true);\n    this.__tnInvalidate();\n    return this;\n  }\n\n  set_account_meta(values: number[]): this {\n    if (values.length !== 64) throw new Error(\"account_meta expects 64 elements\");\n    for (let i = 0; i < values.length; i++) {\n      const byteOffset = 10 + i * 1;\n      this.view.setUint8(byteOffset, values[i]);\n    }\n    this.__tnInvalidate();\n    return this;\n  }\n\n  account_data(): __TnFamWriterResult<DecompressArgsBuilder> {\n    if (!this.__tnFamWriter_account_data) {\n      this.__tnFamWriter_account_data = __tnCreateFamWriter(this, \"account_data\", (payload) => {\n        const bytes = new Uint8Array(payload);\n        const elementCount = bytes.length;\n        this.__tnFam_account_data = bytes;\n        this.__tnFam_account_dataCount = elementCount;\n        this.set_account_data_sz(__tnToBigInt(elementCount));\n        this.__tnInvalidate();\n      });\n    }\n    return this.__tnFamWriter_account_data!;\n  }\n\n  set_proof(value: StateProof | __TnStructFieldInput): this {\n    const bytes = __tnResolveStructFieldInput(value as __TnStructFieldInput, \"DecompressArgsBuilder::proof\");\n    const validation = __tnInvokeDynamicValidate(\"StateProof\", bytes);\n    if (!validation.ok || validation.consumed === undefined) throw new Error(\"DecompressArgsBuilder: field 'proof' failed validation\");\n    if (__tnBigIntToNumber(validation.consumed, \"DecompressArgsBuilder::proof\") !== bytes.length) throw new Error(\"DecompressArgsBuilder: field 'proof' validation did not consume the full buffer\");\n    this.__tnTail_proof = bytes;\n    this.__tnTailParams_proof = validation.params ?? null;\n    this.__tnInvalidate();\n    return this;\n  }\n\n  build(): Uint8Array {\n    const params = this.__tnComputeParams();\n    const size = DecompressArgs.footprintFromParams(params);\n    const buffer = new Uint8Array(size);\n    this.__tnWriteInto(buffer);\n    this.__tnValidateOrThrow(buffer, params);\n    return buffer;\n  }\n\n  buildInto(target: Uint8Array, offset = 0): Uint8Array {\n    const params = this.__tnComputeParams();\n    const size = DecompressArgs.footprintFromParams(params);\n    if (target.length - offset < size) throw new Error(\"DecompressArgsBuilder: target buffer too small\");\n    const slice = target.subarray(offset, offset + size);\n    this.__tnWriteInto(slice);\n    this.__tnValidateOrThrow(slice, params);\n    return target;\n  }\n\n  finish(): DecompressArgs {\n    const buffer = this.build();\n    const params = this.__tnLastParams ?? this.__tnComputeParams();\n    const view = DecompressArgs.from_array(buffer, { params });\n    if (!view) throw new Error(\"DecompressArgsBuilder: failed to finalize view\");\n    return view;\n  }\n\n  finishView(): DecompressArgs {\n    return this.finish();\n  }\n\n  dynamicParams(): DecompressArgs.Params {\n    return this.__tnComputeParams();\n  }\n\n  private __tnComputeParams(): DecompressArgs.Params {\n    if (this.__tnCachedParams) return this.__tnCachedParams;\n    const params = DecompressArgs.Params.fromValues({\n      account_data_account_data_sz: (() => { if (this.__tnFam_account_dataCount === null) throw new Error(\"DecompressArgsBuilder: field 'account_data' must be written before computing params\"); return __tnToBigInt(this.__tnFam_account_dataCount); })(),\n      proof_body_hdr_type_slot: (() => { const params = this.__tnTailParams_proof; if (!params || params[\"proof_body_hdr_type_slot\"] === undefined) throw new Error(\"DecompressArgsBuilder: field 'proof' must be written before computing params\"); return params[\"proof_body_hdr_type_slot\"]; })(),\n      proof_body_payload_size: (() => { const params = this.__tnTailParams_proof; if (!params || params[\"proof_body_payload_size\"] === undefined) throw new Error(\"DecompressArgsBuilder: field 'proof' must be written before computing params\"); return params[\"proof_body_payload_size\"]; })(),\n    });\n    this.__tnCachedParams = params;\n    return params;\n  }\n\n  private __tnWriteInto(target: Uint8Array): void {\n    target.set(this.buffer, 0);\n    let cursor = this.buffer.length;\n    const __tnLocal_account_data_bytes = this.__tnFam_account_data;\n    if (!__tnLocal_account_data_bytes) throw new Error(\"DecompressArgsBuilder: field 'account_data' must be written before build\");\n    target.set(__tnLocal_account_data_bytes, cursor);\n    cursor += __tnLocal_account_data_bytes.length;\n    const __tnLocal_proof_bytes = this.__tnTail_proof;\n    if (!__tnLocal_proof_bytes) throw new Error(\"DecompressArgsBuilder: field 'proof' must be written before build\");\n    target.set(__tnLocal_proof_bytes, cursor);\n    cursor += __tnLocal_proof_bytes.length;\n  }\n\n  private __tnValidateOrThrow(buffer: Uint8Array, params: DecompressArgs.Params): void {\n    const result = DecompressArgs.validate(buffer, { params });\n    if (!result.ok) {\n      throw new Error(`${ DecompressArgs }Builder: builder produced invalid buffer (code=${result.code ?? \"unknown\"})`);\n    }\n    this.__tnLastParams = result.params ?? params;\n    this.__tnLastBuffer = buffer;\n  }\n}\n\n__tnRegisterFootprint(\"DecompressArgs\", (params) => DecompressArgs.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"DecompressArgs\", (buffer, params) => DecompressArgs.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"DecompressArgs\", (buffer) => { const result = DecompressArgs.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n\n/* ----- TYPE DEFINITION FOR CompressionInstruction ----- */\n\nconst __tn_ir_CompressionInstruction = {\n  typeName: \"CompressionInstruction\",\n  root: { op: \"align\", alignment: 1, node: { op: \"add\", left: { op: \"align\", alignment: 4, node: { op: \"const\", value: 4n } }, right: { op: \"align\", alignment: 1, node: { op: \"field\", param: \"payload.payload_size\" } } } }\n} as const;\n\nexport class CompressionInstruction_payload_Inner {\n  private view: DataView;\n  private __tnFieldContext: Record<string, number | bigint> | null = null;\n  private constructor(private buffer: Uint8Array, private descriptor: __TnVariantDescriptor | null, fieldContext?: Record<string, number | bigint>) {\n    this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    this.__tnFieldContext = fieldContext ?? null;\n  }\n\n  static __tnCreate(payload: Uint8Array, descriptor: __TnVariantDescriptor | null, fieldContext?: Record<string, number | bigint>): CompressionInstruction_payload_Inner {\n    return new CompressionInstruction_payload_Inner(new Uint8Array(payload), descriptor, fieldContext);\n  }\n\n  bytes(): Uint8Array {\n    return new Uint8Array(this.buffer);\n  }\n\n  variant(): __TnVariantDescriptor | null {\n    return this.descriptor;\n  }\n\n  asCompress(): CompressArgs | null {\n    if (!this.descriptor || this.descriptor.tag !== 1) return null;\n    return CompressArgs.__tnCreateView(new Uint8Array(this.buffer), { fieldContext: this.__tnFieldContext ?? undefined });\n  }\n\n  asDecompress(): DecompressArgs | null {\n    if (!this.descriptor || this.descriptor.tag !== 2) return null;\n    return DecompressArgs.__tnCreateView(new Uint8Array(this.buffer), { fieldContext: this.__tnFieldContext ?? undefined });\n  }\n\n  asCompressFromPointer(): CompressFromPointerArgs | null {\n    if (!this.descriptor || this.descriptor.tag !== 3) return null;\n    return CompressFromPointerArgs.__tnCreateView(new Uint8Array(this.buffer), { fieldContext: this.__tnFieldContext ?? undefined });\n  }\n\n  asDecompressFromPointer(): DecompressFromPointerArgs | null {\n    if (!this.descriptor || this.descriptor.tag !== 4) return null;\n    return DecompressFromPointerArgs.__tnCreateView(new Uint8Array(this.buffer), { fieldContext: this.__tnFieldContext ?? undefined });\n  }\n\n}\n\nexport class CompressionInstruction {\n  private view: DataView;\n  private static readonly __tnFieldOffset_payload = 4;\n  private __tnParams: CompressionInstruction.Params;\n\n  private constructor(private buffer: Uint8Array, params?: CompressionInstruction.Params) {\n    this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    if (params) {\n      this.__tnParams = params;\n    } else {\n      const derived = CompressionInstruction.__tnExtractParams(this.view, buffer);\n      if (!derived) {\n        throw new Error(\"CompressionInstruction: failed to derive dynamic parameters\");\n      }\n      this.__tnParams = derived.params;\n    }\n  }\n\n  static __tnCreateView(buffer: Uint8Array, opts?: { params?: CompressionInstruction.Params, fieldContext?: Record<string, number | bigint> }): CompressionInstruction {\n    if (!buffer || buffer.length === undefined) throw new Error(\"CompressionInstruction.__tnCreateView requires a Uint8Array\");\n    let params = opts?.params ?? null;\n    if (!params) {\n      const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n      const derived = CompressionInstruction.__tnExtractParams(view, buffer);\n      if (!derived) throw new Error(\"CompressionInstruction.__tnCreateView: failed to derive params\");\n      params = derived.params;\n    }\n    const instance = new CompressionInstruction(new Uint8Array(buffer), params);\n    return instance;\n  }\n\n  dynamicParams(): CompressionInstruction.Params {\n    return this.__tnParams;\n  }\n\n  static builder(): CompressionInstructionBuilder {\n    return new CompressionInstructionBuilder();\n  }\n\n  static fromBuilder(builder: CompressionInstructionBuilder): CompressionInstruction | null {\n    const buffer = builder.build();\n    const params = builder.dynamicParams();\n    return CompressionInstruction.from_array(buffer, { params });\n  }\n\n  static readonly payloadVariantDescriptors = Object.freeze([\n    {\n      name: \"compress\",\n      tag: 1,\n      payloadSize: null,\n      payloadType: \"CompressionInstruction::payload::compress\",\n      createPayloadBuilder: () => __tnMaybeCallBuilder(CompressArgs),\n    },\n    {\n      name: \"decompress\",\n      tag: 2,\n      payloadSize: null,\n      payloadType: \"CompressionInstruction::payload::decompress\",\n      createPayloadBuilder: () => __tnMaybeCallBuilder(DecompressArgs),\n    },\n    {\n      name: \"compress_from_pointer\",\n      tag: 3,\n      payloadSize: 18,\n      payloadType: \"CompressionInstruction::payload::compress_from_pointer\",\n      createPayloadBuilder: () => __tnMaybeCallBuilder(CompressFromPointerArgs),\n    },\n    {\n      name: \"decompress_from_pointer\",\n      tag: 4,\n      payloadSize: 42,\n      payloadType: \"CompressionInstruction::payload::decompress_from_pointer\",\n      createPayloadBuilder: () => __tnMaybeCallBuilder(DecompressFromPointerArgs),\n    },\n  ] as const);\n\n  static __tnComputeSequentialLayout(view: DataView, buffer: Uint8Array): { params: Record<string, bigint> | null; offsets: Record<string, number> | null; derived: Record<string, bigint> | null } | null {\n    const __tnLength = buffer.length;\n    let __tnParamSeq_payload_payload_size: bigint | null = null;\n    let __tnFieldValue_discriminant: number | null = null;\n    let __tnCursorMutable = 0;\n    if (__tnCursorMutable + 4 > __tnLength) return null;\n    const __tnRead_discriminant = view.getUint32(__tnCursorMutable, true);\n    __tnFieldValue_discriminant = __tnRead_discriminant;\n    __tnCursorMutable += 4;\n    const __tnEnumTagValue_payload = __tnFieldValue_discriminant;\n    if (__tnEnumTagValue_payload === null) return null;\n    let __tnEnumSize_payload = 0;\n    switch (Number(__tnEnumTagValue_payload)) {\n      case 1: break;\n      case 2: break;\n      case 3: break;\n      case 4: break;\n      default: return null;\n    }\n    if (__tnCursorMutable > __tnLength) return null;\n    __tnEnumSize_payload = __tnLength - __tnCursorMutable;\n    __tnCursorMutable = __tnLength;\n    __tnParamSeq_payload_payload_size = __tnToBigInt(__tnEnumSize_payload);\n    const params: Record<string, bigint> = Object.create(null);\n    if (__tnParamSeq_payload_payload_size === null) return null;\n    params[\"payload_payload_size\"] = __tnParamSeq_payload_payload_size as bigint;\n    return { params, offsets: null, derived: null };\n  }\n\n  private static __tnExtractParams(view: DataView, buffer: Uint8Array): { params: CompressionInstruction.Params; derived: Record<string, bigint> | null } | null {\n    if (buffer.length < 4) {\n      return null;\n    }\n    const __tnParam_payload_discriminant = __tnToBigInt(view.getUint32(0, true));\n    const __tnLayout = CompressionInstruction.__tnComputeSequentialLayout(view, buffer);\n    if (!__tnLayout || !__tnLayout.params) return null;\n    const __tnSeqParams = __tnLayout.params;\n    const __tnParamSeq_payload_payload_size = __tnSeqParams[\"payload_payload_size\"];\n    if (__tnParamSeq_payload_payload_size === undefined) return null;\n    const __tnExtractedParams = CompressionInstruction.Params.fromValues({\n      payload_discriminant: __tnParam_payload_discriminant,\n      payload_payload_size: __tnParamSeq_payload_payload_size as bigint,\n    });\n    return { params: __tnExtractedParams, derived: null };\n  }\n\n  get_discriminant(): number {\n    const offset = 0;\n    return this.view.getUint32(offset, true); /* little-endian */\n  }\n\n  set_discriminant(value: number): void {\n    const offset = 0;\n    this.view.setUint32(offset, value, true); /* little-endian */\n  }\n\n  get discriminant(): number {\n    return this.get_discriminant();\n  }\n\n  set discriminant(value: number) {\n    this.set_discriminant(value);\n  }\n\n  payloadVariant(): typeof CompressionInstruction.payloadVariantDescriptors[number] | null {\n    const tag = this.view.getUint8(0);\n    return CompressionInstruction.payloadVariantDescriptors.find((variant) => variant.tag === tag) ?? null;\n  }\n\n  payload(): CompressionInstruction_payload_Inner {\n    const descriptor = this.payloadVariant();\n    if (!descriptor) throw new Error(\"CompressionInstruction: unknown payload variant\");\n    const offset = CompressionInstruction.__tnFieldOffset_payload;\n    const remaining = this.buffer.length - offset;\n    const payloadLength = descriptor.payloadSize ?? remaining;\n    if (payloadLength < 0 || offset + payloadLength > this.buffer.length) throw new Error(\"CompressionInstruction: payload exceeds buffer bounds\");\n    const slice = this.buffer.subarray(offset, offset + payloadLength);\n    return CompressionInstruction_payload_Inner.__tnCreate(slice, descriptor, undefined);\n  }\n  private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n    return __tnEvalFootprint(__tn_ir_CompressionInstruction.root, { params: __tnParams });\n  }\n\n  private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n    return __tnValidateIrTree(__tn_ir_CompressionInstruction, buffer, __tnParams);\n  }\n\n  static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n    return this.__tnFootprintInternal(__tnParams);\n  }\n\n  static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n    return this.__tnValidateInternal(buffer, __tnParams);\n  }\n\n  static footprintIr(payload_discriminant: number | bigint, payload_payload_size: number | bigint): bigint {\n    const params = CompressionInstruction.Params.fromValues({\n      payload_discriminant: payload_discriminant,\n      payload_payload_size: payload_payload_size,\n    });\n    return this.footprintIrFromParams(params);\n  }\n\n  private static __tnPackParams(params: CompressionInstruction.Params): Record<string, bigint> {\n    const record: Record<string, bigint> = Object.create(null);\n    record[\"payload.discriminant\"] = params.payload_discriminant;\n    record[\"payload.payload_size\"] = params.payload_payload_size;\n    return record;\n  }\n\n  static footprintIrFromParams(params: CompressionInstruction.Params): bigint {\n    const __tnParams = this.__tnPackParams(params);\n    return this.__tnFootprintInternal(__tnParams);\n  }\n\n  static footprintFromParams(params: CompressionInstruction.Params): number {\n    const irResult = this.footprintIrFromParams(params);\n    const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n    if (__tnBigIntGreaterThan(irResult, maxSafe)) throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for CompressionInstruction');\n    return __tnBigIntToNumber(irResult, 'CompressionInstruction::footprintFromParams');\n  }\n\n  static footprintFromValues(input: { payload_discriminant: number | bigint, payload_payload_size: number | bigint }): number {\n    const params = CompressionInstruction.params(input);\n    return this.footprintFromParams(params);\n  }\n\n  static footprint(params: CompressionInstruction.Params): number {\n    return this.footprintFromParams(params);\n  }\n\n  static validate(buffer: Uint8Array, opts?: { params?: CompressionInstruction.Params }): { ok: boolean; code?: string; consumed?: number; params?: CompressionInstruction.Params } {\n    if (!buffer || buffer.length === undefined) {\n      return { ok: false, code: \"tn.invalid_buffer\" };\n    }\n    const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    let params = opts?.params ?? null;\n    if (!params) {\n      const extracted = this.__tnExtractParams(view, buffer);\n      if (!extracted) return { ok: false, code: \"tn.param_extraction_failed\" };\n      params = extracted.params;\n    }\n    const __tnParamsRec = this.__tnPackParams(params);\n    const irResult = this.__tnValidateInternal(buffer, __tnParamsRec);\n    if (!irResult.ok) {\n      return { ok: false, code: irResult.code, consumed: irResult.consumed ? __tnBigIntToNumber(irResult.consumed, 'CompressionInstruction::validate') : undefined, params };\n    }\n    const consumed = irResult.consumed ? __tnBigIntToNumber(irResult.consumed, 'CompressionInstruction::validate') : undefined;\n    return { ok: true, consumed, params };\n  }\n\n  static from_array(buffer: Uint8Array, opts?: { params?: CompressionInstruction.Params }): CompressionInstruction | null {\n    if (!buffer || buffer.length === undefined) {\n      return null;\n    }\n    const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    let params = opts?.params ?? null;\n    if (!params) {\n      const derived = this.__tnExtractParams(view, buffer);\n      if (!derived) return null;\n      params = derived.params;\n    }\n    const validation = this.validate(buffer, { params });\n    if (!validation.ok) {\n      return null;\n    }\n    const cached = validation.params ?? params;\n    const state = new CompressionInstruction(buffer, cached);\n    return state;\n  }\n\n\n}\n\nexport namespace CompressionInstruction {\n  export type Params = {\n    /** ABI path: payload.discriminant */\n    readonly payload_discriminant: bigint;\n    /** ABI path: payload.payload_size */\n    readonly payload_payload_size: bigint;\n  };\n\n  export const ParamKeys = Object.freeze({\n    payload_discriminant: \"payload.discriminant\",\n    payload_payload_size: \"payload.payload_size\",\n  } as const);\n\n  export const Params = {\n    fromValues(input: { payload_discriminant: number | bigint, payload_payload_size: number | bigint }): Params {\n      return {\n        payload_discriminant: __tnToBigInt(input.payload_discriminant),\n        payload_payload_size: __tnToBigInt(input.payload_payload_size),\n      };\n    },\n    fromBuilder(source: { dynamicParams(): Params } | { params: Params } | Params): Params {\n      if ((source as { dynamicParams?: () => Params }).dynamicParams) {\n        return (source as { dynamicParams(): Params }).dynamicParams();\n      }\n      if ((source as { params?: Params }).params) {\n        return (source as { params: Params }).params;\n      }\n      return source as Params;\n    }\n  };\n\n  export function params(input: { payload_discriminant: number | bigint, payload_payload_size: number | bigint }): Params {\n    return Params.fromValues(input);\n  }\n}\n\nexport class CompressionInstructionBuilder {\n  private __tnPrefixBuffer: Uint8Array;\n  private __tnPrefixView: DataView;\n  private __tnField_discriminant: number | null = null;\n  private __tnPayload_payload: { descriptor: typeof CompressionInstruction.payloadVariantDescriptors[number]; bytes: Uint8Array } | null = null;\n  private __tnCachedParams: CompressionInstruction.Params | null = null;\n  private __tnLastBuffer: Uint8Array | null = null;\n  private __tnLastParams: CompressionInstruction.Params | null = null;\n  private __tnVariantSelector_payload?: __TnVariantSelectorResult<CompressionInstructionBuilder>;\n\n  constructor() {\n    this.__tnPrefixBuffer = new Uint8Array(4);\n    this.__tnPrefixView = new DataView(this.__tnPrefixBuffer.buffer, this.__tnPrefixBuffer.byteOffset, this.__tnPrefixBuffer.byteLength);\n  }\n\n  private __tnInvalidate(): void {\n    this.__tnCachedParams = null;\n    this.__tnLastBuffer = null;\n    this.__tnLastParams = null;\n  }\n\n  private __tnAssign_discriminant(value: number): void {\n    this.__tnField_discriminant = value;\n    this.__tnInvalidate();\n  }\n\n  set_discriminant(value: number): this {\n    this.__tnAssign_discriminant(value);\n    return this;\n  }\n\n  payload(): __TnVariantSelectorResult<CompressionInstructionBuilder> {\n    if (!this.__tnVariantSelector_payload) {\n      this.__tnVariantSelector_payload = __tnCreateVariantSelector(this, CompressionInstruction.payloadVariantDescriptors, (descriptor, payload) => {\n        this.__tnPayload_payload = { descriptor, bytes: new Uint8Array(payload) };\n        this.__tnAssign_discriminant(descriptor.tag);\n      });\n    }\n    return this.__tnVariantSelector_payload!;\n  }\n\n  build(): Uint8Array {\n    const params = this.__tnComputeParams();\n    if (this.__tnField_discriminant === null) throw new Error(\"CompressionInstructionBuilder: field 'discriminant' must be set before build\");\n    if (!this.__tnPayload_payload) throw new Error(\"CompressionInstructionBuilder: payload variant not selected\");\n    const payloadLength = this.__tnPayload_payload.bytes.length;\n    const requiredSize = 4 + payloadLength;\n    const footprintSize = CompressionInstruction.footprintFromParams(params);\n    const size = Math.max(requiredSize, footprintSize);\n    const buffer = new Uint8Array(size);\n    this.__tnWriteInto(buffer);\n    this.__tnValidateOrThrow(buffer, params);\n    return buffer;\n  }\n\n  buildInto(target: Uint8Array, offset = 0): Uint8Array {\n    const params = this.__tnComputeParams();\n    if (this.__tnField_discriminant === null) throw new Error(\"CompressionInstructionBuilder: field 'discriminant' must be set before build\");\n    if (!this.__tnPayload_payload) throw new Error(\"CompressionInstructionBuilder: payload variant not selected\");\n    const payloadLength = this.__tnPayload_payload.bytes.length;\n    const requiredSize = 4 + payloadLength;\n    const footprintSize = CompressionInstruction.footprintFromParams(params);\n    const size = Math.max(requiredSize, footprintSize);\n    if (target.length - offset < size) throw new Error(\"CompressionInstructionBuilder: target buffer too small\");\n    const slice = target.subarray(offset, offset + size);\n    this.__tnWriteInto(slice);\n    this.__tnValidateOrThrow(slice, params);\n    return target;\n  }\n\n  finish(): CompressionInstruction {\n    const buffer = this.build();\n    const params = this.__tnLastParams ?? this.__tnComputeParams();\n    const view = CompressionInstruction.from_array(buffer, { params });\n    if (!view) throw new Error(\"CompressionInstructionBuilder: failed to finalize view\");\n    return view;\n  }\n\n  finishView(): CompressionInstruction {\n    return this.finish();\n  }\n\n  dynamicParams(): CompressionInstruction.Params {\n    return this.__tnComputeParams();\n  }\n\n  private __tnComputeParams(): CompressionInstruction.Params {\n    if (this.__tnCachedParams) return this.__tnCachedParams;\n    const params = CompressionInstruction.Params.fromValues({\n      payload_discriminant: (() => { if (this.__tnField_discriminant === null) throw new Error(\"CompressionInstructionBuilder: missing enum tag\"); return __tnToBigInt(this.__tnField_discriminant); })(),\n      payload_payload_size: (() => { if (!this.__tnPayload_payload) throw new Error(\"CompressionInstructionBuilder: payload 'payload' must be selected before build\"); return __tnToBigInt(this.__tnPayload_payload.bytes.length); })(),\n    });\n    this.__tnCachedParams = params;\n    return params;\n  }\n\n  private __tnWriteInto(target: Uint8Array): void {\n    if (this.__tnField_discriminant === null) throw new Error(\"CompressionInstructionBuilder: field 'discriminant' must be set before build\");\n    if (!this.__tnPayload_payload) throw new Error(\"CompressionInstructionBuilder: payload variant not selected\");\n    const view = new DataView(target.buffer, target.byteOffset, target.byteLength);\n    target.set(this.__tnPrefixBuffer, 0);\n    view.setUint32(0, this.__tnField_discriminant, true);\n    target.set(this.__tnPayload_payload.bytes, 4);\n  }\n\n  private __tnValidateOrThrow(buffer: Uint8Array, params: CompressionInstruction.Params): void {\n    const result = CompressionInstruction.validate(buffer, { params });\n    if (!result.ok) {\n      throw new Error(`${ CompressionInstruction }Builder: builder produced invalid buffer (code=${result.code ?? \"unknown\"})`);\n    }\n    this.__tnLastParams = result.params ?? params;\n    this.__tnLastBuffer = buffer;\n  }\n}\n\n__tnRegisterFootprint(\"CompressionInstruction\", (params) => CompressionInstruction.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"CompressionInstruction\", (buffer, params) => CompressionInstruction.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"CompressionInstruction\", (buffer) => { const result = CompressionInstruction.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n","import { CompressArgsBuilder, DecompressArgsBuilder, CompressFromPointerArgsBuilder,\n  DecompressFromPointerArgsBuilder, CompressionInstructionBuilder } from \"./abi/thru/program/compression/types\";\nimport { StateProof } from \"./abi/thru/blockchain/state_proof/types\";\nexport { CompressionInstruction } from \"./abi/thru/program/compression/types\";\n\nexport const COMPRESSION_ERRORS = { INVALID_INSTRUCTION: 1n, INVALID_INSTRUCTION_DATA_SIZE: 2n } as const;\n\nfunction u16(value: number): void {\n  if (!Number.isInteger(value) || value < 0 || value > 0xffff) throw new RangeError(\"account index must be a u16\");\n}\nfunction u64(value: bigint): bigint {\n  if (value < 0n || value > 0xffffffffffffffffn) throw new RangeError(\"value must be a u64\");\n  return value;\n}\nfunction envelope(variant: \"compress\" | \"decompress\" | \"compress_from_pointer\" | \"decompress_from_pointer\", payload: Uint8Array): Uint8Array {\n  return new CompressionInstructionBuilder().payload().select(variant).writePayload(payload).finish().build();\n}\n\n/** Validate the exact state-proof footprint encoded in its type and path bitmap. */\nexport function validateCompressionProof(proof: Uint8Array): void {\n  if (proof.length < 40 || (proof[7]! >>> 6) === 3)\n    throw new RangeError(\"state proof has an invalid type or byte length\");\n  // The generated dynamic enum validator treats its payload as opaque. Check\n  // the state-proof contract too, rather than accepting a truncated payload.\n  let siblings = 0;\n  for (let i = 8; i < 40; i++) {\n    for (let bits = proof[i]!; bits; bits &= bits - 1) siblings++;\n  }\n  if (proof.length !== 40 + 32 * ((proof[7]! >>> 6) + siblings))\n    throw new RangeError(\"state proof has an invalid type or byte length\");\n  const validation = StateProof.validate(proof);\n  if (!validation.ok || validation.consumed !== proof.length)\n    throw new RangeError(\"state proof has an invalid type or byte length\");\n}\n\nexport function buildCompressInstruction(accountIndex: number, proof: Uint8Array): Uint8Array {\n  validateCompressionProof(proof);\n  u16(accountIndex);\n  return envelope(\"compress\", new CompressArgsBuilder().set_account_idx(accountIndex).set_proof(proof).build());\n}\n\nexport function buildDecompressInstruction(accountIndex: number, meta: Uint8Array,\n  data: Uint8Array, proof: Uint8Array): Uint8Array {\n  validateCompressionProof(proof);\n  if (meta.length !== 64 || data.length > 16 * 1024 * 1024 ||\n      new DataView(meta.buffer, meta.byteOffset, meta.byteLength).getUint32(4, true) !== data.length)\n    throw new RangeError(\"account image must contain runtime metadata and the declared data bytes\");\n  u16(accountIndex);\n  const builder = new DecompressArgsBuilder().set_account_idx(accountIndex).set_account_meta(Array.from(meta));\n  builder.account_data().write(data).finish();\n  builder.set_proof(proof);\n  return envelope(\"decompress\", builder.build());\n}\n\nexport function buildCompressFromPointerInstruction(accountIndex: number, proofAddress: bigint, proofSize: bigint): Uint8Array {\n  u16(accountIndex);\n  return envelope(\"compress_from_pointer\", new CompressFromPointerArgsBuilder().set_account_idx(accountIndex)\n    .set_proof_address(u64(proofAddress)).set_proof_sz(u64(proofSize)).build());\n}\n\nexport function buildDecompressFromPointerInstruction(args: {\n  accountIndex: number; dataSize: bigint; metaAddress: bigint; dataAddress: bigint;\n  proofAddress: bigint; proofSize: bigint;\n}): Uint8Array {\n  u16(args.accountIndex);\n  return envelope(\"decompress_from_pointer\", new DecompressFromPointerArgsBuilder().set_account_idx(args.accountIndex)\n    .set_account_data_sz(u64(args.dataSize)).set_account_meta_address(u64(args.metaAddress))\n    .set_account_data_address(u64(args.dataAddress)).set_proof_address(u64(args.proofAddress))\n    .set_proof_sz(u64(args.proofSize)).build());\n}\n"]}