@thru/programs 0.2.27 → 0.2.29
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/multicall/index.cjs +166 -24
- package/dist/multicall/index.cjs.map +1 -1
- package/dist/multicall/index.d.cts +39 -3
- package/dist/multicall/index.d.ts +39 -3
- package/dist/multicall/index.js +166 -25
- package/dist/multicall/index.js.map +1 -1
- package/dist/passkey-manager/index.cjs +1235 -345
- package/dist/passkey-manager/index.cjs.map +1 -1
- package/dist/passkey-manager/index.d.cts +45 -11
- package/dist/passkey-manager/index.d.ts +45 -11
- package/dist/passkey-manager/index.js +1225 -346
- package/dist/passkey-manager/index.js.map +1 -1
- package/package.json +2 -2
- package/src/multicall/abi/thru/common/primitives/types.ts +14 -9
- package/src/multicall/abi/thru/program/multicall/types.ts +136 -4
- package/src/multicall/index.ts +6 -17
- package/src/passkey-manager/abi/thru/blockchain/state_proof/types.ts +11 -6
- package/src/passkey-manager/abi/thru/common/primitives/types.ts +19 -14
- package/src/passkey-manager/abi/thru/program/passkey_manager/types.ts +1069 -271
- package/src/passkey-manager/accounts.ts +79 -40
- package/src/passkey-manager/constants.ts +10 -1
- package/src/passkey-manager/index.ts +18 -2
- package/src/passkey-manager/instructions/add-authority.ts +31 -3
- package/src/passkey-manager/instructions/create.ts +106 -11
- package/src/passkey-manager/instructions/invoke.ts +9 -0
- package/src/passkey-manager/instructions/shared.ts +15 -0
- package/src/passkey-manager/instructions/transfer.ts +1 -1
- package/src/passkey-manager/instructions/validate.ts +13 -43
- package/src/passkey-manager/types.ts +7 -2
- package/src/passkey-manager/validate.test.ts +71 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/multicall/abi/thru/common/primitives/types.ts","../../src/multicall/abi/thru/program/multicall/types.ts","../../src/multicall/index.ts"],"names":["remainder","low","high","InstructionData","__tnWarnings","__tnHasNativeBigInt","__tnHasBigIntDataView","__tnConsole","__tnLogWarn","__tnWarnOnce","__tnMask32","__tnSignBit32","__tnToBigInt","__tnBigIntToNumber","__tnBigIntEquals","__tnBigIntGreaterThan","__tnRaiseIrError","__tnCheckedAdd","__tnCheckedMul","__tnAlign","__tnSplitUint64","__tnSplitInt64","__tnPolyfillReadUint64","__tnPolyfillReadInt64","__tnPolyfillWriteUint64","__tnPolyfillWriteInt64","__tnFootprintRegistry","__tnValidateRegistry","__tnDynamicValidateRegistry","__tnRegisterFootprint","__tnRegisterValidate","__tnRegisterDynamicValidate","__tnInvokeFootprint","__tnInvokeValidate","__tnInvokeDynamicValidate","__tnEvalFootprint","__tnEvalIrNode","__tnTryEvalIr","__tnNormalizeIrError","__tnIsEvalError","__tnValidateIrTree","MulticallArgs"],"mappings":"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","file":"index.js","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: \"mul\";\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 = { ok: boolean; code?: string; consumed?: bigint };\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 __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 __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 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 \"mul\":\n return __tnCheckedMul(\n __tnEvalIrNode(node.left, ctx, baseOffset),\n __tnEvalIrNode(node.right, ctx, baseOffset)\n );\n case \"align\":\n return __tnAlign(__tnEvalIrNode(node.node, ctx, baseOffset), node.alignment);\n case \"switch\": {\n const tagVal = ctx.params[node.tag];\n if (tagVal === undefined) {\n const prefix = ctx.typeName ? `${ctx.typeName}: ` : \"\";\n __tnRaiseIrError(\n \"tn.ir.missing_param\",\n `${prefix}Missing IR switch tag '${node.tag}'`\n );\n }\n const tagNumber = Number(tagVal);\n for (const caseNode of node.cases) {\n if (caseNode.value === tagNumber) {\n return __tnEvalIrNode(caseNode.node, ctx, baseOffset);\n }\n }\n if (node.default) return __tnEvalIrNode(node.default, ctx, baseOffset);\n __tnRaiseIrError(\n \"tn.ir.invalid_tag\",\n `Unhandled IR switch value ${tagNumber} for '${node.tag}'`\n );\n }\n case \"call\": {\n const nestedParams: Record<string, bigint> = Object.create(null);\n for (const arg of node.args) {\n const val = ctx.params[arg.source];\n if (val === undefined) {\n const prefix = ctx.typeName ? `${ctx.typeName}: ` : \"\";\n __tnRaiseIrError(\n \"tn.ir.missing_param\",\n `${prefix}Missing IR parameter '${arg.source}' for nested call`\n );\n }\n nestedParams[arg.name] = val;\n }\n if (ctx.buffer) {\n const nestedOffset = __tnBigIntToNumber(baseOffset, \"IR nested offset\");\n const nestedResult = __tnInvokeValidate(\n node.typeName,\n ctx.buffer.subarray(nestedOffset),\n nestedParams\n );\n if (!nestedResult.ok) {\n const nestedCode =\n nestedResult.code ?? `tn.ir.runtime_error: ${node.typeName}`;\n const prefixed = nestedCode.startsWith(\"tn.\")\n ? nestedCode\n : `tn.ir.runtime_error: ${node.typeName} -> ${nestedCode}`;\n __tnRaiseIrError(\n prefixed,\n `Nested validator ${node.typeName} failed`\n );\n }\n if (nestedResult.consumed !== undefined) {\n return nestedResult.consumed;\n }\n }\n return __tnInvokeFootprint(node.typeName, nestedParams);\n }\n case \"sumOverArray\": {\n if (!ctx.buffer) {\n __tnRaiseIrError(\n \"tn.ir.missing_buffer\",\n `Jagged array '${node.fieldName}' requires buffer-backed validation`\n );\n }\n const count = __tnBigIntToNumber(\n __tnEvalIrNode(node.count, ctx, baseOffset),\n `Jagged array '${node.fieldName}' count`\n );\n let cursor = __tnBigIntToNumber(baseOffset, \"IR jagged array offset\");\n let total = __tnToBigInt(0);\n for (let i = 0; i < count; i++) {\n const result = __tnInvokeDynamicValidate(\n node.elementTypeName,\n ctx.buffer.subarray(cursor)\n );\n if (!result.ok || result.consumed === undefined) {\n const code = result.code ?? \"tn.ir.runtime_error\";\n __tnRaiseIrError(\n code,\n `Jagged array '${node.fieldName}' element ${i} failed validation`\n );\n }\n cursor += __tnBigIntToNumber(result.consumed, \"IR jagged element size\");\n total = __tnCheckedAdd(total, result.consumed);\n }\n return total;\n }\n default:\n __tnRaiseIrError(\n \"tn.ir.runtime_error\",\n `Unsupported IR node ${(node as { op: string }).op}`\n );\n }\n}\n\nfunction __tnNormalizeIrError(err: unknown): string {\n if (err && typeof err === \"object\" && \"code\" in err) {\n const maybeCode = (err as { code?: string }).code;\n if (typeof maybeCode === \"string\" && maybeCode.length > 0) {\n return maybeCode;\n }\n }\n const message =\n err && typeof err === \"object\" && \"message\" in err\n ? String((err as { message?: unknown }).message ?? \"\")\n : typeof err === \"string\"\n ? err\n : \"\";\n if (message.includes(\"Missing IR parameter\")) return \"tn.ir.missing_param\";\n if (message.includes(\"Unhandled IR switch value\")) return \"tn.ir.invalid_tag\";\n if (\n message.includes(\"invalid\") ||\n message.includes(\"overflow\") ||\n message.includes(\"negative size\")\n ) {\n return \"tn.ir.overflow\";\n }\n if (message.length > 0) return `tn.ir.runtime_error: ${message}`;\n return \"tn.ir.runtime_error\";\n}\n\n/* ----- TYPE DEFINITION FOR Date ----- */\n\nconst __tn_ir_Date = {\n typeName: \"Date\",\n root: { op: \"const\", value: 6n }\n} as const;\n\nexport class Date {\n private view: DataView;\n\n private constructor(private buffer: Uint8Array) {\n this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n }\n\n static __tnCreateView(buffer: Uint8Array, opts?: { fieldContext?: Record<string, number | bigint> }): Date {\n if (!buffer || buffer.length === undefined) throw new Error(\"Date.__tnCreateView requires a Uint8Array\");\n return new Date(new Uint8Array(buffer));\n }\n\n static builder(): DateBuilder {\n return new DateBuilder();\n }\n\n static fromBuilder(builder: DateBuilder): Date | null {\n const buffer = builder.build();\n return Date.from_array(buffer);\n }\n\n get_year(): number {\n const offset = 0;\n return this.view.getInt32(offset, true); /* little-endian */\n }\n\n set_year(value: number): void {\n const offset = 0;\n this.view.setInt32(offset, value, true); /* little-endian */\n }\n\n get year(): number {\n return this.get_year();\n }\n\n set year(value: number) {\n this.set_year(value);\n }\n\n get_month(): number {\n const offset = 4;\n return this.view.getUint8(offset);\n }\n\n set_month(value: number): void {\n const offset = 4;\n this.view.setUint8(offset, value);\n }\n\n get month(): number {\n return this.get_month();\n }\n\n set month(value: number) {\n this.set_month(value);\n }\n\n get_day(): number {\n const offset = 5;\n return this.view.getUint8(offset);\n }\n\n set_day(value: number): void {\n const offset = 5;\n this.view.setUint8(offset, value);\n }\n\n get day(): number {\n return this.get_day();\n }\n\n set day(value: number) {\n this.set_day(value);\n }\n\n private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n return __tnEvalFootprint(__tn_ir_Date.root, { params: __tnParams });\n }\n\n private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n return __tnValidateIrTree(__tn_ir_Date, buffer, __tnParams);\n }\n\n static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n return this.__tnFootprintInternal(__tnParams);\n }\n\n static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n return this.__tnValidateInternal(buffer, __tnParams);\n }\n\n static footprintIr(): bigint {\n return this.__tnFootprintInternal(Object.create(null));\n }\n\n static footprint(): number {\n const irResult = this.footprintIr();\n const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n if (__tnBigIntGreaterThan(irResult, maxSafe)) {\n throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for Date');\n }\n return __tnBigIntToNumber(irResult, 'Date::footprint');\n }\n\n static validate(buffer: Uint8Array, _opts?: { params?: never }): { ok: boolean; code?: string; consumed?: number } {\n if (buffer.length < 6) return { ok: false, code: \"tn.buffer_too_small\", consumed: 6 };\n return { ok: true, consumed: 6 };\n }\n\n static new(year: number, month: number, day: number): Date {\n const buffer = new Uint8Array(6);\n const view = new DataView(buffer.buffer);\n\n let offset = 0;\n view.setInt32(0, year, true); /* year (little-endian) */\n view.setUint8(4, month); /* month */\n view.setUint8(5, day); /* day */\n\n return new Date(buffer);\n }\n\n static from_array(buffer: Uint8Array): Date | null {\n if (!buffer || buffer.length === undefined) {\n return null;\n }\n const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n const validation = this.validate(buffer);\n if (!validation.ok) {\n return null;\n }\n return new Date(buffer);\n }\n\n}\n\nexport class DateBuilder {\n private buffer: Uint8Array;\n private view: DataView;\n\n constructor() {\n this.buffer = new Uint8Array(6);\n this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n }\n\n set_year(value: number): this {\n this.view.setInt32(0, value, true);\n return this;\n }\n\n set_month(value: number): this {\n this.view.setUint8(4, value);\n return this;\n }\n\n set_day(value: number): this {\n this.view.setUint8(5, value);\n return this;\n }\n\n build(): Uint8Array {\n return this.buffer.slice();\n }\n\n buildInto(target: Uint8Array, offset = 0): Uint8Array {\n if (target.length - offset < this.buffer.length) throw new Error(\"target buffer too small\");\n target.set(this.buffer, offset);\n return target;\n }\n\n finish(): Date {\n const view = Date.from_array(this.buffer.slice());\n if (!view) throw new Error(\"failed to build Date\");\n return view;\n }\n}\n\n__tnRegisterFootprint(\"Date\", (params) => Date.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"Date\", (buffer, params) => Date.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"Date\", (buffer) => { const result = Date.validate(buffer); return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed) }; });\n\n/* ----- TYPE DEFINITION FOR Duration ----- */\n\nconst __tn_ir_Duration = {\n typeName: \"Duration\",\n root: { op: \"const\", value: 12n }\n} as const;\n\nexport class Duration {\n private view: DataView;\n\n private constructor(private buffer: Uint8Array) {\n this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n }\n\n static __tnCreateView(buffer: Uint8Array, opts?: { fieldContext?: Record<string, number | bigint> }): Duration {\n if (!buffer || buffer.length === undefined) throw new Error(\"Duration.__tnCreateView requires a Uint8Array\");\n return new Duration(new Uint8Array(buffer));\n }\n\n static builder(): DurationBuilder {\n return new DurationBuilder();\n }\n\n static fromBuilder(builder: DurationBuilder): Duration | null {\n const buffer = builder.build();\n return Duration.from_array(buffer);\n }\n\n get_seconds(): bigint {\n const offset = 0;\n return this.view.getBigInt64(offset, true); /* little-endian */\n }\n\n set_seconds(value: bigint): void {\n const offset = 0;\n this.view.setBigInt64(offset, value, true); /* little-endian */\n }\n\n get seconds(): bigint {\n return this.get_seconds();\n }\n\n set seconds(value: bigint) {\n this.set_seconds(value);\n }\n\n get_nanos(): number {\n const offset = 8;\n return this.view.getInt32(offset, true); /* little-endian */\n }\n\n set_nanos(value: number): void {\n const offset = 8;\n this.view.setInt32(offset, value, true); /* little-endian */\n }\n\n get nanos(): number {\n return this.get_nanos();\n }\n\n set nanos(value: number) {\n this.set_nanos(value);\n }\n\n private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n return __tnEvalFootprint(__tn_ir_Duration.root, { params: __tnParams });\n }\n\n private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n return __tnValidateIrTree(__tn_ir_Duration, buffer, __tnParams);\n }\n\n static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n return this.__tnFootprintInternal(__tnParams);\n }\n\n static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n return this.__tnValidateInternal(buffer, __tnParams);\n }\n\n static footprintIr(): bigint {\n return this.__tnFootprintInternal(Object.create(null));\n }\n\n static footprint(): number {\n const irResult = this.footprintIr();\n const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n if (__tnBigIntGreaterThan(irResult, maxSafe)) {\n throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for Duration');\n }\n return __tnBigIntToNumber(irResult, 'Duration::footprint');\n }\n\n static validate(buffer: Uint8Array, _opts?: { params?: never }): { ok: boolean; code?: string; consumed?: number } {\n if (buffer.length < 12) return { ok: false, code: \"tn.buffer_too_small\", consumed: 12 };\n return { ok: true, consumed: 12 };\n }\n\n static new(seconds: bigint, nanos: number): Duration {\n const buffer = new Uint8Array(12);\n const view = new DataView(buffer.buffer);\n\n let offset = 0;\n view.setBigInt64(0, seconds, true); /* seconds (little-endian) */\n view.setInt32(8, nanos, true); /* nanos (little-endian) */\n\n return new Duration(buffer);\n }\n\n static from_array(buffer: Uint8Array): Duration | null {\n if (!buffer || buffer.length === undefined) {\n return null;\n }\n const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n const validation = this.validate(buffer);\n if (!validation.ok) {\n return null;\n }\n return new Duration(buffer);\n }\n\n}\n\nexport class DurationBuilder {\n private buffer: Uint8Array;\n private view: DataView;\n\n constructor() {\n this.buffer = new Uint8Array(12);\n this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n }\n\n set_seconds(value: number): this {\n const cast = __tnToBigInt(value);\n this.view.setBigInt64(0, cast, true);\n return this;\n }\n\n set_nanos(value: number): this {\n this.view.setInt32(8, value, true);\n return this;\n }\n\n build(): Uint8Array {\n return this.buffer.slice();\n }\n\n buildInto(target: Uint8Array, offset = 0): Uint8Array {\n if (target.length - offset < this.buffer.length) throw new Error(\"target buffer too small\");\n target.set(this.buffer, offset);\n return target;\n }\n\n finish(): Duration {\n const view = Duration.from_array(this.buffer.slice());\n if (!view) throw new Error(\"failed to build Duration\");\n return view;\n }\n}\n\n__tnRegisterFootprint(\"Duration\", (params) => Duration.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"Duration\", (buffer, params) => Duration.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"Duration\", (buffer) => { const result = Duration.validate(buffer); return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed) }; });\n\n/* ----- TYPE DEFINITION FOR FixedPoint ----- */\n\nconst __tn_ir_FixedPoint = {\n typeName: \"FixedPoint\",\n root: { op: \"const\", value: 9n }\n} as const;\n\nexport class FixedPoint {\n private view: DataView;\n\n private constructor(private buffer: Uint8Array) {\n this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n }\n\n static __tnCreateView(buffer: Uint8Array, opts?: { fieldContext?: Record<string, number | bigint> }): FixedPoint {\n if (!buffer || buffer.length === undefined) throw new Error(\"FixedPoint.__tnCreateView requires a Uint8Array\");\n return new FixedPoint(new Uint8Array(buffer));\n }\n\n static builder(): FixedPointBuilder {\n return new FixedPointBuilder();\n }\n\n static fromBuilder(builder: FixedPointBuilder): FixedPoint | null {\n const buffer = builder.build();\n return FixedPoint.from_array(buffer);\n }\n\n get_mantissa(): bigint {\n const offset = 0;\n return this.view.getBigInt64(offset, true); /* little-endian */\n }\n\n set_mantissa(value: bigint): void {\n const offset = 0;\n this.view.setBigInt64(offset, value, true); /* little-endian */\n }\n\n get mantissa(): bigint {\n return this.get_mantissa();\n }\n\n set mantissa(value: bigint) {\n this.set_mantissa(value);\n }\n\n get_scale(): number {\n const offset = 8;\n return this.view.getUint8(offset);\n }\n\n set_scale(value: number): void {\n const offset = 8;\n this.view.setUint8(offset, value);\n }\n\n get scale(): number {\n return this.get_scale();\n }\n\n set scale(value: number) {\n this.set_scale(value);\n }\n\n private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n return __tnEvalFootprint(__tn_ir_FixedPoint.root, { params: __tnParams });\n }\n\n private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n return __tnValidateIrTree(__tn_ir_FixedPoint, buffer, __tnParams);\n }\n\n static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n return this.__tnFootprintInternal(__tnParams);\n }\n\n static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n return this.__tnValidateInternal(buffer, __tnParams);\n }\n\n static footprintIr(): bigint {\n return this.__tnFootprintInternal(Object.create(null));\n }\n\n static footprint(): number {\n const irResult = this.footprintIr();\n const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n if (__tnBigIntGreaterThan(irResult, maxSafe)) {\n throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for FixedPoint');\n }\n return __tnBigIntToNumber(irResult, 'FixedPoint::footprint');\n }\n\n static validate(buffer: Uint8Array, _opts?: { params?: never }): { ok: boolean; code?: string; consumed?: number } {\n if (buffer.length < 9) return { ok: false, code: \"tn.buffer_too_small\", consumed: 9 };\n return { ok: true, consumed: 9 };\n }\n\n static new(mantissa: bigint, scale: number): FixedPoint {\n const buffer = new Uint8Array(9);\n const view = new DataView(buffer.buffer);\n\n let offset = 0;\n view.setBigInt64(0, mantissa, true); /* mantissa (little-endian) */\n view.setUint8(8, scale); /* scale */\n\n return new FixedPoint(buffer);\n }\n\n static from_array(buffer: Uint8Array): FixedPoint | null {\n if (!buffer || buffer.length === undefined) {\n return null;\n }\n const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n const validation = this.validate(buffer);\n if (!validation.ok) {\n return null;\n }\n return new FixedPoint(buffer);\n }\n\n}\n\nexport class FixedPointBuilder {\n private buffer: Uint8Array;\n private view: DataView;\n\n constructor() {\n this.buffer = new Uint8Array(9);\n this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n }\n\n set_mantissa(value: number): this {\n const cast = __tnToBigInt(value);\n this.view.setBigInt64(0, cast, true);\n return this;\n }\n\n set_scale(value: number): this {\n this.view.setUint8(8, value);\n return this;\n }\n\n build(): Uint8Array {\n return this.buffer.slice();\n }\n\n buildInto(target: Uint8Array, offset = 0): Uint8Array {\n if (target.length - offset < this.buffer.length) throw new Error(\"target buffer too small\");\n target.set(this.buffer, offset);\n return target;\n }\n\n finish(): FixedPoint {\n const view = FixedPoint.from_array(this.buffer.slice());\n if (!view) throw new Error(\"failed to build FixedPoint\");\n return view;\n }\n}\n\n__tnRegisterFootprint(\"FixedPoint\", (params) => FixedPoint.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"FixedPoint\", (buffer, params) => FixedPoint.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"FixedPoint\", (buffer) => { const result = FixedPoint.validate(buffer); return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed) }; });\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); return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed) }; });\n\n/* ----- TYPE DEFINITION FOR InstructionData ----- */\n\nconst __tn_ir_InstructionData = {\n typeName: \"InstructionData\",\n root: { op: \"align\", alignment: 1, node: { op: \"add\", left: { op: \"add\", left: { op: \"align\", alignment: 2, node: { op: \"const\", value: 2n } }, right: { op: \"align\", alignment: 8, node: { op: \"const\", value: 8n } } }, right: { op: \"align\", alignment: 1, node: { op: \"mul\", left: { op: \"field\", param: \"data.data_size\" }, right: { op: \"const\", value: 1n } } } } }\n} as const;\n\nexport class InstructionData {\n private view: DataView;\n private __tnFieldContext: Record<string, number | bigint> | null = null;\n private __tnParams: InstructionData.Params;\n\n private constructor(private buffer: Uint8Array, params?: InstructionData.Params, fieldContext?: Record<string, number | bigint>) {\n this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n this.__tnFieldContext = fieldContext ?? null;\n if (params) {\n this.__tnParams = params;\n } else {\n const derived = InstructionData.__tnExtractParams(this.view, buffer);\n if (!derived) {\n throw new Error(\"InstructionData: failed to derive dynamic parameters\");\n }\n this.__tnParams = derived.params;\n }\n }\n\n static __tnCreateView(buffer: Uint8Array, opts?: { params?: InstructionData.Params, fieldContext?: Record<string, number | bigint> }): InstructionData {\n if (!buffer || buffer.length === undefined) throw new Error(\"InstructionData.__tnCreateView requires a Uint8Array\");\n let params = opts?.params ?? null;\n if (!params) {\n const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n const derived = InstructionData.__tnExtractParams(view, buffer);\n if (!derived) throw new Error(\"InstructionData.__tnCreateView: failed to derive params\");\n params = derived.params;\n }\n const instance = new InstructionData(new Uint8Array(buffer), params, opts?.fieldContext);\n return instance;\n }\n\n dynamicParams(): InstructionData.Params {\n return this.__tnParams;\n }\n\n withFieldContext(context: Record<string, number | bigint>): this {\n this.__tnFieldContext = context;\n return this;\n }\n\n private __tnResolveFieldRef(path: string): number {\n const getterName = `get_${path.replace(/[.]/g, '_')}`;\n const getter = (this as any)[getterName];\n if (typeof getter === \"function\") {\n const value = getter.call(this);\n return typeof value === \"bigint\" ? __tnBigIntToNumber(value, \"InstructionData::__tnResolveFieldRef\") : value;\n }\n if (this.__tnFieldContext && Object.prototype.hasOwnProperty.call(this.__tnFieldContext, path)) {\n const contextValue = this.__tnFieldContext[path];\n return typeof contextValue === \"bigint\" ? __tnBigIntToNumber(contextValue, \"InstructionData::__tnResolveFieldRef\") : contextValue;\n }\n throw new Error(\"InstructionData: field reference '\" + path + \"' is not available; provide fieldContext when creating this view\");\n }\n\n static builder(): InstructionDataBuilder {\n return new InstructionDataBuilder();\n }\n\n static fromBuilder(builder: InstructionDataBuilder): InstructionData | null {\n const buffer = builder.build();\n const params = builder.dynamicParams();\n return InstructionData.from_array(buffer, { params });\n }\n\n static readonly flexibleArrayWriters = Object.freeze([\n { field: \"data\", method: \"data\", sizeField: \"data_size\", paramKey: \"data_size\", elementSize: 1 },\n ] as const);\n\n private static __tnExtractParams(view: DataView, buffer: Uint8Array): { params: InstructionData.Params; derived: Record<string, bigint> | null } | null {\n if (buffer.length < 10) {\n return null;\n }\n const __tnParam_data_data_size = __tnToBigInt(view.getBigUint64(2, true));\n const __tnExtractedParams = InstructionData.Params.fromValues({\n data_data_size: __tnParam_data_data_size,\n });\n return { params: __tnExtractedParams, derived: null };\n }\n\n get_program_idx(): number {\n const offset = 0;\n return this.view.getUint16(offset, true); /* little-endian */\n }\n\n set_program_idx(value: number): void {\n const offset = 0;\n this.view.setUint16(offset, value, true); /* little-endian */\n }\n\n get program_idx(): number {\n return this.get_program_idx();\n }\n\n set program_idx(value: number) {\n this.set_program_idx(value);\n }\n\n get_data_size(): bigint {\n const offset = 2;\n return this.view.getBigUint64(offset, true); /* little-endian */\n }\n\n set_data_size(value: bigint): void {\n const offset = 2;\n this.view.setBigUint64(offset, value, true); /* little-endian */\n }\n\n get data_size(): bigint {\n return this.get_data_size();\n }\n\n set data_size(value: bigint) {\n this.set_data_size(value);\n }\n\n get_data_length(): number {\n return this.__tnResolveFieldRef(\"data_size\");\n }\n\n get_data_at(index: number): number {\n const offset = 10;\n return this.view.getUint8(offset + index * 1);\n }\n\n get_data(): number[] {\n const len = this.get_data_length();\n const result: number[] = [];\n for (let i = 0; i < len; i++) {\n result.push(this.get_data_at(i));\n }\n return result;\n }\n\n set_data_at(index: number, value: number): void {\n const offset = 10;\n this.view.setUint8((offset + index * 1), value);\n }\n\n set_data(value: number[]): void {\n const len = Math.min(this.get_data_length(), value.length);\n for (let i = 0; i < len; i++) {\n this.set_data_at(i, value[i]);\n }\n }\n\n get data(): number[] {\n return this.get_data();\n }\n\n set data(value: number[]) {\n this.set_data(value);\n }\n private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n return __tnEvalFootprint(__tn_ir_InstructionData.root, { params: __tnParams });\n }\n\n private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n return __tnValidateIrTree(__tn_ir_InstructionData, buffer, __tnParams);\n }\n\n static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n return this.__tnFootprintInternal(__tnParams);\n }\n\n static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n return this.__tnValidateInternal(buffer, __tnParams);\n }\n\n static footprintIr(data_data_size: number | bigint): bigint {\n const params = InstructionData.Params.fromValues({\n data_data_size: data_data_size,\n });\n return this.footprintIrFromParams(params);\n }\n\n private static __tnPackParams(params: InstructionData.Params): Record<string, bigint> {\n const record: Record<string, bigint> = Object.create(null);\n record[\"data.data_size\"] = params.data_data_size;\n return record;\n }\n\n static footprintIrFromParams(params: InstructionData.Params): bigint {\n const __tnParams = this.__tnPackParams(params);\n return this.__tnFootprintInternal(__tnParams);\n }\n\n static footprintFromParams(params: InstructionData.Params): number {\n const irResult = this.footprintIrFromParams(params);\n const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n if (__tnBigIntGreaterThan(irResult, maxSafe)) throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for InstructionData');\n return __tnBigIntToNumber(irResult, 'InstructionData::footprintFromParams');\n }\n\n static footprintFromValues(input: { data_data_size: number | bigint }): number {\n const params = InstructionData.params(input);\n return this.footprintFromParams(params);\n }\n\n static footprint(params: InstructionData.Params): number {\n return this.footprintFromParams(params);\n }\n\n static validate(buffer: Uint8Array, opts?: { params?: InstructionData.Params }): { ok: boolean; code?: string; consumed?: number; params?: InstructionData.Params } {\n if (!buffer || buffer.length === undefined) {\n return { ok: false, code: \"tn.invalid_buffer\" };\n }\n const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n let params = opts?.params ?? null;\n if (!params) {\n const extracted = this.__tnExtractParams(view, buffer);\n if (!extracted) return { ok: false, code: \"tn.param_extraction_failed\" };\n params = extracted.params;\n }\n const __tnParamsRec = this.__tnPackParams(params);\n const irResult = this.__tnValidateInternal(buffer, __tnParamsRec);\n if (!irResult.ok) {\n return { ok: false, code: irResult.code, consumed: irResult.consumed ? __tnBigIntToNumber(irResult.consumed, 'InstructionData::validate') : undefined, params };\n }\n const consumed = irResult.consumed ? __tnBigIntToNumber(irResult.consumed, 'InstructionData::validate') : undefined;\n return { ok: true, consumed, params };\n }\n\n static from_array(buffer: Uint8Array, opts?: { params?: InstructionData.Params }): InstructionData | null {\n if (!buffer || buffer.length === undefined) {\n return null;\n }\n const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n let params = opts?.params ?? null;\n if (!params) {\n const derived = this.__tnExtractParams(view, buffer);\n if (!derived) return null;\n params = derived.params;\n }\n const validation = this.validate(buffer, { params });\n if (!validation.ok) {\n return null;\n }\n const cached = validation.params ?? params;\n const state = new InstructionData(buffer, cached);\n return state;\n }\n\n\n}\n\nexport namespace InstructionData {\n export type Params = {\n /** ABI path: data.data_size */\n readonly data_data_size: bigint;\n };\n\n export const ParamKeys = Object.freeze({\n data_data_size: \"data.data_size\",\n } as const);\n\n export const Params = {\n fromValues(input: { data_data_size: number | bigint }): Params {\n return {\n data_data_size: __tnToBigInt(input.data_data_size),\n };\n },\n fromBuilder(source: { dynamicParams(): Params } | { params: Params } | Params): Params {\n if ((source as { dynamicParams?: () => Params }).dynamicParams) {\n return (source as { dynamicParams(): Params }).dynamicParams();\n }\n if ((source as { params?: Params }).params) {\n return (source as { params: Params }).params;\n }\n return source as Params;\n }\n };\n\n export function params(input: { data_data_size: number | bigint }): Params {\n return Params.fromValues(input);\n }\n}\n\nexport class InstructionDataBuilder {\n private buffer: Uint8Array;\n private view: DataView;\n private __tnCachedParams: InstructionData.Params | null = null;\n private __tnLastBuffer: Uint8Array | null = null;\n private __tnLastParams: InstructionData.Params | null = null;\n private __tnFam_data: Uint8Array | null = null;\n private __tnFam_dataCount: number | null = null;\n private __tnFamWriter_data?: __TnFamWriterResult<InstructionDataBuilder>;\n\n constructor() {\n this.buffer = new Uint8Array(10);\n this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n }\n\n private __tnInvalidate(): void {\n this.__tnCachedParams = null;\n this.__tnLastBuffer = null;\n this.__tnLastParams = null;\n }\n\n set_program_idx(value: number): this {\n this.view.setUint16(0, value, true);\n this.__tnInvalidate();\n return this;\n }\n\n set_data_size(value: number): this {\n const cast = __tnToBigInt(value);\n this.view.setBigUint64(2, cast, true);\n this.__tnInvalidate();\n return this;\n }\n\n data(): __TnFamWriterResult<InstructionDataBuilder> {\n if (!this.__tnFamWriter_data) {\n this.__tnFamWriter_data = __tnCreateFamWriter(this, \"data\", (payload) => {\n const bytes = new Uint8Array(payload);\n const elementCount = bytes.length;\n this.__tnFam_data = bytes;\n this.__tnFam_dataCount = elementCount;\n this.set_data_size(elementCount);\n this.__tnInvalidate();\n });\n }\n return this.__tnFamWriter_data!;\n }\n\n build(): Uint8Array {\n const params = this.__tnComputeParams();\n const size = InstructionData.footprintFromParams(params);\n const buffer = new Uint8Array(size);\n this.__tnWriteInto(buffer);\n this.__tnValidateOrThrow(buffer, params);\n return buffer;\n }\n\n buildInto(target: Uint8Array, offset = 0): Uint8Array {\n const params = this.__tnComputeParams();\n const size = InstructionData.footprintFromParams(params);\n if (target.length - offset < size) throw new Error(\"InstructionDataBuilder: target buffer too small\");\n const slice = target.subarray(offset, offset + size);\n this.__tnWriteInto(slice);\n this.__tnValidateOrThrow(slice, params);\n return target;\n }\n\n finish(): InstructionData {\n const buffer = this.build();\n const params = this.__tnLastParams ?? this.__tnComputeParams();\n const view = InstructionData.from_array(buffer, { params });\n if (!view) throw new Error(\"InstructionDataBuilder: failed to finalize view\");\n return view;\n }\n\n finishView(): InstructionData {\n return this.finish();\n }\n\n dynamicParams(): InstructionData.Params {\n return this.__tnComputeParams();\n }\n\n private __tnComputeParams(): InstructionData.Params {\n if (this.__tnCachedParams) return this.__tnCachedParams;\n const params = InstructionData.Params.fromValues({\n data_data_size: (() => { if (this.__tnFam_dataCount === null) throw new Error(\"InstructionDataBuilder: field 'data' must be written before computing params\"); return __tnToBigInt(this.__tnFam_dataCount); })(),\n });\n this.__tnCachedParams = params;\n return params;\n }\n\n private __tnWriteInto(target: Uint8Array): void {\n target.set(this.buffer, 0);\n let cursor = this.buffer.length;\n const __tnLocal_data_bytes = this.__tnFam_data;\n if (!__tnLocal_data_bytes) throw new Error(\"InstructionDataBuilder: field 'data' must be written before build\");\n target.set(__tnLocal_data_bytes, cursor);\n cursor += __tnLocal_data_bytes.length;\n }\n\n private __tnValidateOrThrow(buffer: Uint8Array, params: InstructionData.Params): void {\n const result = InstructionData.validate(buffer, { params });\n if (!result.ok) {\n throw new Error(`${ InstructionData }Builder: builder produced invalid buffer (code=${result.code ?? \"unknown\"})`);\n }\n this.__tnLastParams = result.params ?? params;\n this.__tnLastBuffer = buffer;\n }\n}\n\n__tnRegisterFootprint(\"InstructionData\", (params) => InstructionData.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"InstructionData\", (buffer, params) => InstructionData.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"InstructionData\", (buffer) => { const result = InstructionData.validate(buffer); return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed) }; });\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); return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed) }; });\n\n/* ----- TYPE DEFINITION FOR Signature ----- */\n\nconst __tn_ir_Signature = {\n typeName: \"Signature\",\n root: { op: \"const\", value: 64n }\n} as const;\n\nexport class Signature {\n private view: DataView;\n\n private constructor(private buffer: Uint8Array) {\n this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n }\n\n static __tnCreateView(buffer: Uint8Array, opts?: { fieldContext?: Record<string, number | bigint> }): Signature {\n if (!buffer || buffer.length === undefined) throw new Error(\"Signature.__tnCreateView requires a Uint8Array\");\n return new Signature(new Uint8Array(buffer));\n }\n\n static builder(): SignatureBuilder {\n return new SignatureBuilder();\n }\n\n static fromBuilder(builder: SignatureBuilder): Signature | null {\n const buffer = builder.build();\n return Signature.from_array(buffer);\n }\n\n get_bytes(): number[] {\n const offset = 0;\n const result: number[] = [];\n for (let i = 0; i < 64; i++) {\n result.push(this.view.getUint8((offset + i * 1)));\n }\n return result;\n }\n\n set_bytes(value: number[]): void {\n const offset = 0;\n if (value.length !== 64) {\n throw new Error('Array length must be 64');\n }\n for (let i = 0; i < 64; i++) {\n this.view.setUint8((offset + i * 1), value[i]);\n }\n }\n\n get bytes(): number[] {\n return this.get_bytes();\n }\n\n set bytes(value: number[]) {\n this.set_bytes(value);\n }\n\n private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n return __tnEvalFootprint(__tn_ir_Signature.root, { params: __tnParams });\n }\n\n private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n return __tnValidateIrTree(__tn_ir_Signature, buffer, __tnParams);\n }\n\n static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n return this.__tnFootprintInternal(__tnParams);\n }\n\n static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n return this.__tnValidateInternal(buffer, __tnParams);\n }\n\n static footprintIr(): bigint {\n return this.__tnFootprintInternal(Object.create(null));\n }\n\n static footprint(): number {\n const irResult = this.footprintIr();\n const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n if (__tnBigIntGreaterThan(irResult, maxSafe)) {\n throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for Signature');\n }\n return __tnBigIntToNumber(irResult, 'Signature::footprint');\n }\n\n static validate(buffer: Uint8Array, _opts?: { params?: never }): { ok: boolean; code?: string; consumed?: number } {\n if (buffer.length < 64) return { ok: false, code: \"tn.buffer_too_small\", consumed: 64 };\n return { ok: true, consumed: 64 };\n }\n\n static from_array(buffer: Uint8Array): Signature | null {\n if (!buffer || buffer.length === undefined) {\n return null;\n }\n const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n const validation = this.validate(buffer);\n if (!validation.ok) {\n return null;\n }\n return new Signature(buffer);\n }\n\n}\n\nexport class SignatureBuilder {\n private buffer: Uint8Array;\n private view: DataView;\n\n constructor() {\n this.buffer = new Uint8Array(64);\n this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n }\n\n set_bytes(values: number[]): this {\n if (values.length !== 64) throw new Error(\"bytes expects 64 elements\");\n for (let i = 0; i < values.length; i++) {\n const byteOffset = 0 + i * 1;\n this.view.setUint8(byteOffset, values[i]);\n }\n return this;\n }\n\n build(): Uint8Array {\n return this.buffer.slice();\n }\n\n buildInto(target: Uint8Array, offset = 0): Uint8Array {\n if (target.length - offset < this.buffer.length) throw new Error(\"target buffer too small\");\n target.set(this.buffer, offset);\n return target;\n }\n\n finish(): Signature {\n const view = Signature.from_array(this.buffer.slice());\n if (!view) throw new Error(\"failed to build Signature\");\n return view;\n }\n}\n\n__tnRegisterFootprint(\"Signature\", (params) => Signature.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"Signature\", (buffer, params) => Signature.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"Signature\", (buffer) => { const result = Signature.validate(buffer); return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed) }; });\n\n/* ----- TYPE DEFINITION FOR Timestamp ----- */\n\nconst __tn_ir_Timestamp = {\n typeName: \"Timestamp\",\n root: { op: \"const\", value: 8n }\n} as const;\n\nexport class Timestamp {\n private view: DataView;\n\n private constructor(private buffer: Uint8Array) {\n this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n }\n\n static __tnCreateView(buffer: Uint8Array, opts?: { fieldContext?: Record<string, number | bigint> }): Timestamp {\n if (!buffer || buffer.length === undefined) throw new Error(\"Timestamp.__tnCreateView requires a Uint8Array\");\n return new Timestamp(new Uint8Array(buffer));\n }\n\n static builder(): TimestampBuilder {\n return new TimestampBuilder();\n }\n\n static fromBuilder(builder: TimestampBuilder): Timestamp | null {\n const buffer = builder.build();\n return Timestamp.from_array(buffer);\n }\n\n get_seconds(): bigint {\n const offset = 0;\n return this.view.getBigInt64(offset, true); /* little-endian */\n }\n\n set_seconds(value: bigint): void {\n const offset = 0;\n this.view.setBigInt64(offset, value, true); /* little-endian */\n }\n\n get seconds(): bigint {\n return this.get_seconds();\n }\n\n set seconds(value: bigint) {\n this.set_seconds(value);\n }\n\n private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n return __tnEvalFootprint(__tn_ir_Timestamp.root, { params: __tnParams });\n }\n\n private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n return __tnValidateIrTree(__tn_ir_Timestamp, buffer, __tnParams);\n }\n\n static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n return this.__tnFootprintInternal(__tnParams);\n }\n\n static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n return this.__tnValidateInternal(buffer, __tnParams);\n }\n\n static footprintIr(): bigint {\n return this.__tnFootprintInternal(Object.create(null));\n }\n\n static footprint(): number {\n const irResult = this.footprintIr();\n const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n if (__tnBigIntGreaterThan(irResult, maxSafe)) {\n throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for Timestamp');\n }\n return __tnBigIntToNumber(irResult, 'Timestamp::footprint');\n }\n\n static validate(buffer: Uint8Array, _opts?: { params?: never }): { ok: boolean; code?: string; consumed?: number } {\n if (buffer.length < 8) return { ok: false, code: \"tn.buffer_too_small\", consumed: 8 };\n return { ok: true, consumed: 8 };\n }\n\n static new(seconds: bigint): Timestamp {\n const buffer = new Uint8Array(8);\n const view = new DataView(buffer.buffer);\n\n let offset = 0;\n view.setBigInt64(0, seconds, true); /* seconds (little-endian) */\n\n return new Timestamp(buffer);\n }\n\n static from_array(buffer: Uint8Array): Timestamp | null {\n if (!buffer || buffer.length === undefined) {\n return null;\n }\n const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n const validation = this.validate(buffer);\n if (!validation.ok) {\n return null;\n }\n return new Timestamp(buffer);\n }\n\n}\n\nexport class TimestampBuilder {\n private buffer: Uint8Array;\n private view: DataView;\n\n constructor() {\n this.buffer = new Uint8Array(8);\n this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n }\n\n set_seconds(value: number): this {\n const cast = __tnToBigInt(value);\n this.view.setBigInt64(0, cast, true);\n return this;\n }\n\n build(): Uint8Array {\n return this.buffer.slice();\n }\n\n buildInto(target: Uint8Array, offset = 0): Uint8Array {\n if (target.length - offset < this.buffer.length) throw new Error(\"target buffer too small\");\n target.set(this.buffer, offset);\n return target;\n }\n\n finish(): Timestamp {\n const view = Timestamp.from_array(this.buffer.slice());\n if (!view) throw new Error(\"failed to build Timestamp\");\n return view;\n }\n}\n\n__tnRegisterFootprint(\"Timestamp\", (params) => Timestamp.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"Timestamp\", (buffer, params) => Timestamp.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"Timestamp\", (buffer) => { const result = Timestamp.validate(buffer); return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed) }; });\n\n","/* Auto-generated TypeScript code */\n/* WARNING: Do not modify this file directly. It is generated from ABI definitions. */\n\nimport { InstructionData } from \"../../common/primitives/types\";\n\ntype __TnIrNode =\n | { readonly op: \"zero\" }\n | { readonly op: \"const\"; readonly value: bigint }\n | { readonly op: \"field\"; readonly param: string }\n | {\n readonly op: \"add\";\n readonly left: __TnIrNode;\n readonly right: __TnIrNode;\n }\n | {\n readonly op: \"mul\";\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 = { ok: boolean; code?: string; consumed?: bigint };\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 __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 __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 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 \"mul\":\n return __tnCheckedMul(\n __tnEvalIrNode(node.left, ctx, baseOffset),\n __tnEvalIrNode(node.right, ctx, baseOffset)\n );\n case \"align\":\n return __tnAlign(__tnEvalIrNode(node.node, ctx, baseOffset), node.alignment);\n case \"switch\": {\n const tagVal = ctx.params[node.tag];\n if (tagVal === undefined) {\n const prefix = ctx.typeName ? `${ctx.typeName}: ` : \"\";\n __tnRaiseIrError(\n \"tn.ir.missing_param\",\n `${prefix}Missing IR switch tag '${node.tag}'`\n );\n }\n const tagNumber = Number(tagVal);\n for (const caseNode of node.cases) {\n if (caseNode.value === tagNumber) {\n return __tnEvalIrNode(caseNode.node, ctx, baseOffset);\n }\n }\n if (node.default) return __tnEvalIrNode(node.default, ctx, baseOffset);\n __tnRaiseIrError(\n \"tn.ir.invalid_tag\",\n `Unhandled IR switch value ${tagNumber} for '${node.tag}'`\n );\n }\n case \"call\": {\n const nestedParams: Record<string, bigint> = Object.create(null);\n for (const arg of node.args) {\n const val = ctx.params[arg.source];\n if (val === undefined) {\n const prefix = ctx.typeName ? `${ctx.typeName}: ` : \"\";\n __tnRaiseIrError(\n \"tn.ir.missing_param\",\n `${prefix}Missing IR parameter '${arg.source}' for nested call`\n );\n }\n nestedParams[arg.name] = val;\n }\n if (ctx.buffer) {\n const nestedOffset = __tnBigIntToNumber(baseOffset, \"IR nested offset\");\n const nestedResult = __tnInvokeValidate(\n node.typeName,\n ctx.buffer.subarray(nestedOffset),\n nestedParams\n );\n if (!nestedResult.ok) {\n const nestedCode =\n nestedResult.code ?? `tn.ir.runtime_error: ${node.typeName}`;\n const prefixed = nestedCode.startsWith(\"tn.\")\n ? nestedCode\n : `tn.ir.runtime_error: ${node.typeName} -> ${nestedCode}`;\n __tnRaiseIrError(\n prefixed,\n `Nested validator ${node.typeName} failed`\n );\n }\n if (nestedResult.consumed !== undefined) {\n return nestedResult.consumed;\n }\n }\n return __tnInvokeFootprint(node.typeName, nestedParams);\n }\n case \"sumOverArray\": {\n if (!ctx.buffer) {\n __tnRaiseIrError(\n \"tn.ir.missing_buffer\",\n `Jagged array '${node.fieldName}' requires buffer-backed validation`\n );\n }\n const count = __tnBigIntToNumber(\n __tnEvalIrNode(node.count, ctx, baseOffset),\n `Jagged array '${node.fieldName}' count`\n );\n let cursor = __tnBigIntToNumber(baseOffset, \"IR jagged array offset\");\n let total = __tnToBigInt(0);\n for (let i = 0; i < count; i++) {\n const result = __tnInvokeDynamicValidate(\n node.elementTypeName,\n ctx.buffer.subarray(cursor)\n );\n if (!result.ok || result.consumed === undefined) {\n const code = result.code ?? \"tn.ir.runtime_error\";\n __tnRaiseIrError(\n code,\n `Jagged array '${node.fieldName}' element ${i} failed validation`\n );\n }\n cursor += __tnBigIntToNumber(result.consumed, \"IR jagged element size\");\n total = __tnCheckedAdd(total, result.consumed);\n }\n return total;\n }\n default:\n __tnRaiseIrError(\n \"tn.ir.runtime_error\",\n `Unsupported IR node ${(node as { op: string }).op}`\n );\n }\n}\n\nfunction __tnNormalizeIrError(err: unknown): string {\n if (err && typeof err === \"object\" && \"code\" in err) {\n const maybeCode = (err as { code?: string }).code;\n if (typeof maybeCode === \"string\" && maybeCode.length > 0) {\n return maybeCode;\n }\n }\n const message =\n err && typeof err === \"object\" && \"message\" in err\n ? String((err as { message?: unknown }).message ?? \"\")\n : typeof err === \"string\"\n ? err\n : \"\";\n if (message.includes(\"Missing IR parameter\")) return \"tn.ir.missing_param\";\n if (message.includes(\"Unhandled IR switch value\")) return \"tn.ir.invalid_tag\";\n if (\n message.includes(\"invalid\") ||\n message.includes(\"overflow\") ||\n message.includes(\"negative size\")\n ) {\n return \"tn.ir.overflow\";\n }\n if (message.length > 0) return `tn.ir.runtime_error: ${message}`;\n return \"tn.ir.runtime_error\";\n}\n\n__tnRegisterFootprint(\"InstructionData\", (params) => InstructionData.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"InstructionData\", (buffer, params) => InstructionData.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"InstructionData\", (buffer) => { const result = InstructionData.validate(buffer); return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed) }; });\n\n/* ----- TYPE DEFINITION FOR MulticallArgs ----- */\n\nconst __tn_ir_MulticallArgs = {\n typeName: \"MulticallArgs\",\n root: { op: \"align\", alignment: 1, node: { op: \"add\", left: { op: \"align\", alignment: 2, node: { op: \"const\", value: 2n } }, right: { op: \"align\", alignment: 1, node: { op: \"sumOverArray\", count: { op: \"field\", param: \"calls.calls_count\" }, elementTypeName: \"InstructionData\", fieldName: \"calls\" } } } }\n} as const;\n\nexport class MulticallArgs {\n private view: DataView;\n private __tnFieldContext: Record<string, number | bigint> | null = null;\n private __tnParams: MulticallArgs.Params;\n\n private constructor(private buffer: Uint8Array, params?: MulticallArgs.Params, fieldContext?: Record<string, number | bigint>) {\n this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n this.__tnFieldContext = fieldContext ?? null;\n if (params) {\n this.__tnParams = params;\n } else {\n const derived = MulticallArgs.__tnExtractParams(this.view, buffer);\n if (!derived) {\n throw new Error(\"MulticallArgs: failed to derive dynamic parameters\");\n }\n this.__tnParams = derived.params;\n }\n }\n\n static __tnCreateView(buffer: Uint8Array, opts?: { params?: MulticallArgs.Params, fieldContext?: Record<string, number | bigint> }): MulticallArgs {\n if (!buffer || buffer.length === undefined) throw new Error(\"MulticallArgs.__tnCreateView requires a Uint8Array\");\n let params = opts?.params ?? null;\n if (!params) {\n const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n const derived = MulticallArgs.__tnExtractParams(view, buffer);\n if (!derived) throw new Error(\"MulticallArgs.__tnCreateView: failed to derive params\");\n params = derived.params;\n }\n const instance = new MulticallArgs(new Uint8Array(buffer), params, opts?.fieldContext);\n return instance;\n }\n\n dynamicParams(): MulticallArgs.Params {\n return this.__tnParams;\n }\n\n withFieldContext(context: Record<string, number | bigint>): this {\n this.__tnFieldContext = context;\n return this;\n }\n\n private __tnResolveFieldRef(path: string): number {\n const getterName = `get_${path.replace(/[.]/g, '_')}`;\n const getter = (this as any)[getterName];\n if (typeof getter === \"function\") {\n const value = getter.call(this);\n return typeof value === \"bigint\" ? __tnBigIntToNumber(value, \"MulticallArgs::__tnResolveFieldRef\") : value;\n }\n if (this.__tnFieldContext && Object.prototype.hasOwnProperty.call(this.__tnFieldContext, path)) {\n const contextValue = this.__tnFieldContext[path];\n return typeof contextValue === \"bigint\" ? __tnBigIntToNumber(contextValue, \"MulticallArgs::__tnResolveFieldRef\") : contextValue;\n }\n throw new Error(\"MulticallArgs: field reference '\" + path + \"' is not available; provide fieldContext when creating this view\");\n }\n\n private static __tnExtractParams(view: DataView, buffer: Uint8Array): { params: MulticallArgs.Params; derived: Record<string, bigint> | null } | null {\n if (buffer.length < 2) {\n return null;\n }\n const __tnParam_calls_calls_count = __tnToBigInt(view.getUint16(0, true));\n const __tnExtractedParams = MulticallArgs.Params.fromValues({\n calls_calls_count: __tnParam_calls_calls_count,\n });\n return { params: __tnExtractedParams, derived: null };\n }\n\n get_calls_count(): number {\n const offset = 0;\n return this.view.getUint16(offset, true); /* little-endian */\n }\n\n set_calls_count(value: number): void {\n const offset = 0;\n this.view.setUint16(offset, value, true); /* little-endian */\n }\n\n get calls_count(): number {\n return this.get_calls_count();\n }\n\n set calls_count(value: number) {\n this.set_calls_count(value);\n }\n\n /** Returns the number of elements in the jagged array. */\n get_calls_length(): number {\n return this.__tnResolveFieldRef(\"calls_count\");\n }\n\n /** Returns the element at the given index, or null if out of bounds.\n * Note: This is O(n) as jagged arrays require sequential traversal. */\n get_calls_at(index: number): InstructionData | null {\n const count = this.get_calls_length();\n if (index < 0 || index >= count) {\n return null;\n }\n const offset = 2;\n let cursor = offset;\n for (let i = 0; i < index; i++) {\n const elem = InstructionData.from_array(this.buffer.subarray(cursor));\n if (!elem) {\n throw new Error(\"MulticallArgs: invalid element at index \" + i + \" in jagged array 'calls'\");\n }\n const validation = InstructionData.validate(this.buffer.subarray(cursor));\n if (!validation.ok || validation.consumed === undefined) {\n throw new Error(\"MulticallArgs: failed to get footprint for element at index \" + i);\n }\n cursor += validation.consumed;\n }\n return InstructionData.from_array(this.buffer.subarray(cursor));\n }\n\n /** Returns a generator over the jagged array elements.\n * This is more efficient than repeated calls to `get_calls_at()` for sequential access. */\n *callsIter(): Generator<InstructionData, void, unknown> {\n const count = this.get_calls_length();\n const offset = 2;\n let cursor = offset;\n for (let i = 0; i < count; i++) {\n const elem = InstructionData.from_array(this.buffer.subarray(cursor));\n if (!elem) {\n throw new Error(\"MulticallArgs: invalid element at index \" + i + \" in jagged array 'calls'\");\n }\n yield elem;\n const validation = InstructionData.validate(this.buffer.subarray(cursor));\n if (!validation.ok || validation.consumed === undefined) {\n throw new Error(\"MulticallArgs: failed to get footprint for element at index \" + i);\n }\n cursor += validation.consumed;\n }\n }\n\n get_calls(): InstructionData[] {\n return Array.from(this.callsIter());\n }\n\n set_calls(_value: InstructionData[]): void {\n throw new Error(\"MulticallArgs: jagged array 'calls' cannot be set in-place\");\n }\n\n /** Returns the total byte size of all elements in the jagged array. */\n get_calls_size(): number {\n const count = this.get_calls_length();\n const offset = 2;\n let cursor = offset;\n for (let i = 0; i < count; i++) {\n const elem = InstructionData.from_array(this.buffer.subarray(cursor));\n if (!elem) {\n throw new Error(\"MulticallArgs: invalid element at index \" + i + \" in jagged array 'calls'\");\n }\n const validation = InstructionData.validate(this.buffer.subarray(cursor));\n if (!validation.ok || validation.consumed === undefined) {\n throw new Error(\"MulticallArgs: failed to get footprint for element at index \" + i);\n }\n cursor += validation.consumed;\n }\n return cursor - offset;\n }\n\n get calls(): InstructionData[] {\n return this.get_calls();\n }\n\n set calls(value: InstructionData[]) {\n this.set_calls(value);\n }\n private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n return __tnEvalFootprint(__tn_ir_MulticallArgs.root, { params: __tnParams });\n }\n\n private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n return __tnValidateIrTree(__tn_ir_MulticallArgs, buffer, __tnParams);\n }\n\n static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n return this.__tnFootprintInternal(__tnParams);\n }\n\n static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n return this.__tnValidateInternal(buffer, __tnParams);\n }\n\n static footprintIr(calls_calls_count: number | bigint): bigint {\n const params = MulticallArgs.Params.fromValues({\n calls_calls_count: calls_calls_count,\n });\n return this.footprintIrFromParams(params);\n }\n\n private static __tnPackParams(params: MulticallArgs.Params): Record<string, bigint> {\n const record: Record<string, bigint> = Object.create(null);\n record[\"calls.calls_count\"] = params.calls_calls_count;\n return record;\n }\n\n static footprintIrFromParams(params: MulticallArgs.Params): bigint {\n const __tnParams = this.__tnPackParams(params);\n return this.__tnFootprintInternal(__tnParams);\n }\n\n static footprintFromParams(params: MulticallArgs.Params): number {\n const irResult = this.footprintIrFromParams(params);\n const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n if (__tnBigIntGreaterThan(irResult, maxSafe)) throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for MulticallArgs');\n return __tnBigIntToNumber(irResult, 'MulticallArgs::footprintFromParams');\n }\n\n static footprintFromValues(input: { calls_calls_count: number | bigint }): number {\n const params = MulticallArgs.params(input);\n return this.footprintFromParams(params);\n }\n\n static footprint(params: MulticallArgs.Params): number {\n return this.footprintFromParams(params);\n }\n\n static validate(buffer: Uint8Array, opts?: { params?: MulticallArgs.Params }): { ok: boolean; code?: string; consumed?: number; params?: MulticallArgs.Params } {\n if (!buffer || buffer.length === undefined) {\n return { ok: false, code: \"tn.invalid_buffer\" };\n }\n const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n let params = opts?.params ?? null;\n if (!params) {\n const extracted = this.__tnExtractParams(view, buffer);\n if (!extracted) return { ok: false, code: \"tn.param_extraction_failed\" };\n params = extracted.params;\n }\n const __tnParamsRec = this.__tnPackParams(params);\n const irResult = this.__tnValidateInternal(buffer, __tnParamsRec);\n if (!irResult.ok) {\n return { ok: false, code: irResult.code, consumed: irResult.consumed ? __tnBigIntToNumber(irResult.consumed, 'MulticallArgs::validate') : undefined, params };\n }\n const consumed = irResult.consumed ? __tnBigIntToNumber(irResult.consumed, 'MulticallArgs::validate') : undefined;\n return { ok: true, consumed, params };\n }\n\n static from_array(buffer: Uint8Array, opts?: { params?: MulticallArgs.Params }): MulticallArgs | null {\n if (!buffer || buffer.length === undefined) {\n return null;\n }\n const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n let params = opts?.params ?? null;\n if (!params) {\n const derived = this.__tnExtractParams(view, buffer);\n if (!derived) return null;\n params = derived.params;\n }\n const validation = this.validate(buffer, { params });\n if (!validation.ok) {\n return null;\n }\n const cached = validation.params ?? params;\n const state = new MulticallArgs(buffer, cached);\n return state;\n }\n\n\n}\n\nexport namespace MulticallArgs {\n export type Params = {\n /** ABI path: calls.calls_count */\n readonly calls_calls_count: bigint;\n };\n\n export const ParamKeys = Object.freeze({\n calls_calls_count: \"calls.calls_count\",\n } as const);\n\n export const Params = {\n fromValues(input: { calls_calls_count: number | bigint }): Params {\n return {\n calls_calls_count: __tnToBigInt(input.calls_calls_count),\n };\n },\n fromBuilder(source: { dynamicParams(): Params } | { params: Params } | Params): Params {\n if ((source as { dynamicParams?: () => Params }).dynamicParams) {\n return (source as { dynamicParams(): Params }).dynamicParams();\n }\n if ((source as { params?: Params }).params) {\n return (source as { params: Params }).params;\n }\n return source as Params;\n }\n };\n\n export function params(input: { calls_calls_count: number | bigint }): Params {\n return Params.fromValues(input);\n }\n}\n\n__tnRegisterFootprint(\"MulticallArgs\", (params) => MulticallArgs.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"MulticallArgs\", (buffer, params) => MulticallArgs.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"MulticallArgs\", (buffer) => { const result = MulticallArgs.validate(buffer); return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed) }; });\n\n/* ----- TYPE DEFINITION FOR MulticallError ----- */\n\nconst __tn_ir_MulticallError = {\n typeName: \"MulticallError\",\n root: { op: \"const\", value: 8n }\n} as const;\n\nexport class MulticallError {\n private view: DataView;\n\n private constructor(private buffer: Uint8Array) {\n this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n }\n\n static __tnCreateView(buffer: Uint8Array, opts?: { fieldContext?: Record<string, number | bigint> }): MulticallError {\n if (!buffer || buffer.length === undefined) throw new Error(\"MulticallError.__tnCreateView requires a Uint8Array\");\n return new MulticallError(new Uint8Array(buffer));\n }\n\n static builder(): MulticallErrorBuilder {\n return new MulticallErrorBuilder();\n }\n\n static fromBuilder(builder: MulticallErrorBuilder): MulticallError | null {\n const buffer = builder.build();\n return MulticallError.from_array(buffer);\n }\n\n get_code(): bigint {\n const offset = 0;\n return this.view.getBigUint64(offset, true); /* little-endian */\n }\n\n set_code(value: bigint): void {\n const offset = 0;\n this.view.setBigUint64(offset, value, true); /* little-endian */\n }\n\n get code(): bigint {\n return this.get_code();\n }\n\n set code(value: bigint) {\n this.set_code(value);\n }\n\n private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n return __tnEvalFootprint(__tn_ir_MulticallError.root, { params: __tnParams });\n }\n\n private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n return __tnValidateIrTree(__tn_ir_MulticallError, buffer, __tnParams);\n }\n\n static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n return this.__tnFootprintInternal(__tnParams);\n }\n\n static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n return this.__tnValidateInternal(buffer, __tnParams);\n }\n\n static footprintIr(): bigint {\n return this.__tnFootprintInternal(Object.create(null));\n }\n\n static footprint(): number {\n const irResult = this.footprintIr();\n const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n if (__tnBigIntGreaterThan(irResult, maxSafe)) {\n throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for MulticallError');\n }\n return __tnBigIntToNumber(irResult, 'MulticallError::footprint');\n }\n\n static validate(buffer: Uint8Array, _opts?: { params?: never }): { ok: boolean; code?: string; consumed?: number } {\n if (buffer.length < 8) return { ok: false, code: \"tn.buffer_too_small\", consumed: 8 };\n return { ok: true, consumed: 8 };\n }\n\n static new(code: bigint): MulticallError {\n const buffer = new Uint8Array(8);\n const view = new DataView(buffer.buffer);\n\n let offset = 0;\n view.setBigUint64(0, code, true); /* code (little-endian) */\n\n return new MulticallError(buffer);\n }\n\n static from_array(buffer: Uint8Array): MulticallError | null {\n if (!buffer || buffer.length === undefined) {\n return null;\n }\n const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n const validation = this.validate(buffer);\n if (!validation.ok) {\n return null;\n }\n return new MulticallError(buffer);\n }\n\n}\n\nexport class MulticallErrorBuilder {\n private buffer: Uint8Array;\n private view: DataView;\n\n constructor() {\n this.buffer = new Uint8Array(8);\n this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n }\n\n set_code(value: number): this {\n const cast = __tnToBigInt(value);\n this.view.setBigUint64(0, cast, true);\n return this;\n }\n\n build(): Uint8Array {\n return this.buffer.slice();\n }\n\n buildInto(target: Uint8Array, offset = 0): Uint8Array {\n if (target.length - offset < this.buffer.length) throw new Error(\"target buffer too small\");\n target.set(this.buffer, offset);\n return target;\n }\n\n finish(): MulticallError {\n const view = MulticallError.from_array(this.buffer.slice());\n if (!view) throw new Error(\"failed to build MulticallError\");\n return view;\n }\n}\n\n__tnRegisterFootprint(\"MulticallError\", (params) => MulticallError.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"MulticallError\", (buffer, params) => MulticallError.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"MulticallError\", (buffer) => { const result = MulticallError.validate(buffer); return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed) }; });\n\n","import { encodeAddress } from '@thru/sdk/helpers';\nimport {\n InstructionData,\n InstructionDataBuilder,\n} from './abi/thru/common/primitives/types';\nimport { MulticallArgs } from './abi/thru/program/multicall/types';\n\nexport {\n InstructionData,\n InstructionDataBuilder,\n} from './abi/thru/common/primitives/types';\nexport {\n MulticallArgs,\n MulticallError,\n} from './abi/thru/program/multicall/types';\n\nexport type MulticallCall = {\n programIdx: number;\n instructionData: Uint8Array;\n};\n\nexport const MULTICALL_PROGRAM_PUBKEY = new Uint8Array([\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9,\n]);\n\nexport const MULTICALL_PROGRAM_ADDRESS = encodeAddress(MULTICALL_PROGRAM_PUBKEY);\n\nfunction writeU16LE(target: Uint8Array, offset: number, value: number): void {\n target[offset] = value & 0xff;\n target[offset + 1] = (value >> 8) & 0xff;\n}\n\nfunction assertProgramIdx(programIdx: number): void {\n if (!Number.isInteger(programIdx) || programIdx < 0 || programIdx > 0xffff) {\n throw new Error('programIdx must be 0-65535');\n }\n}\n\nfunction buildInstructionData(call: MulticallCall): Uint8Array {\n assertProgramIdx(call.programIdx);\n if (!(call.instructionData instanceof Uint8Array)) {\n throw new Error('instructionData must be a Uint8Array');\n }\n\n const builder = new InstructionDataBuilder();\n builder.set_program_idx(call.programIdx);\n builder.data().write(call.instructionData).finish();\n const buffer = builder.build();\n const view = InstructionData.from_array(buffer);\n if (!view) {\n throw new Error('generated InstructionData failed validation');\n }\n return buffer;\n}\n\nexport function buildMulticallInstruction(calls: MulticallCall[]): Uint8Array {\n if (!Array.isArray(calls)) throw new Error('calls must be an array');\n if (calls.length > 0xffff) throw new Error('calls length must be 0-65535');\n\n const encodedCalls = calls.map(buildInstructionData);\n const totalLength = 2 + encodedCalls.reduce((sum, call) => sum + call.length, 0);\n\n const output = new Uint8Array(totalLength);\n let offset = 0;\n writeU16LE(output, offset, calls.length);\n offset += 2;\n\n for (const call of encodedCalls) {\n output.set(call, offset);\n offset += call.length;\n }\n\n const validation = MulticallArgs.validate(output);\n if (!validation.ok || validation.consumed !== output.length) {\n throw new Error(\n `generated MulticallArgs failed validation (code=${validation.code ?? 'unknown'})`\n );\n }\n\n return output;\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../src/multicall/abi/thru/common/primitives/types.ts","../../src/multicall/abi/thru/program/multicall/types.ts","../../src/multicall/index.ts"],"names":["remainder","low","high","InstructionData","__tnWarnings","__tnHasNativeBigInt","__tnHasBigIntDataView","__tnConsole","__tnLogWarn","__tnWarnOnce","__tnResolveBuilderInput","__tnMask32","__tnSignBit32","__tnToBigInt","__tnBigIntToNumber","__tnBigIntEquals","__tnBigIntGreaterThan","__tnRaiseIrError","__tnCheckedAdd","__tnCheckedMul","__tnAlign","__tnSplitUint64","__tnSplitInt64","__tnPolyfillReadUint64","__tnPolyfillReadInt64","__tnPolyfillWriteUint64","__tnPolyfillWriteInt64","__tnFootprintRegistry","__tnValidateRegistry","__tnDynamicValidateRegistry","__tnRegisterFootprint","__tnRegisterValidate","__tnRegisterDynamicValidate","__tnInvokeFootprint","__tnInvokeValidate","__tnInvokeDynamicValidate","__tnEvalFootprint","__tnEvalIrNode","__tnTryEvalIr","__tnNormalizeIrError","__tnIsEvalError","__tnValidateIrTree","MulticallArgs"],"mappings":"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","file":"index.js","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: \"mul\";\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 __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 __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 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 \"mul\":\n return __tnCheckedMul(\n __tnEvalIrNode(node.left, ctx, baseOffset),\n __tnEvalIrNode(node.right, ctx, baseOffset)\n );\n case \"align\":\n return __tnAlign(__tnEvalIrNode(node.node, ctx, baseOffset), node.alignment);\n case \"switch\": {\n const tagVal = ctx.params[node.tag];\n if (tagVal === undefined) {\n const prefix = ctx.typeName ? `${ctx.typeName}: ` : \"\";\n __tnRaiseIrError(\n \"tn.ir.missing_param\",\n `${prefix}Missing IR switch tag '${node.tag}'`\n );\n }\n const tagNumber = Number(tagVal);\n for (const caseNode of node.cases) {\n if (caseNode.value === tagNumber) {\n return __tnEvalIrNode(caseNode.node, ctx, baseOffset);\n }\n }\n if (node.default) return __tnEvalIrNode(node.default, ctx, baseOffset);\n __tnRaiseIrError(\n \"tn.ir.invalid_tag\",\n `Unhandled IR switch value ${tagNumber} for '${node.tag}'`\n );\n }\n case \"call\": {\n const nestedParams: Record<string, bigint> = Object.create(null);\n for (const arg of node.args) {\n const val = ctx.params[arg.source];\n if (val === undefined) {\n const prefix = ctx.typeName ? `${ctx.typeName}: ` : \"\";\n __tnRaiseIrError(\n \"tn.ir.missing_param\",\n `${prefix}Missing IR parameter '${arg.source}' for nested call`\n );\n }\n nestedParams[arg.name] = val;\n }\n if (ctx.buffer) {\n const nestedOffset = __tnBigIntToNumber(baseOffset, \"IR nested offset\");\n const nestedResult = __tnInvokeValidate(\n node.typeName,\n ctx.buffer.subarray(nestedOffset),\n nestedParams\n );\n if (!nestedResult.ok) {\n const nestedCode =\n nestedResult.code ?? `tn.ir.runtime_error: ${node.typeName}`;\n const prefixed = nestedCode.startsWith(\"tn.\")\n ? nestedCode\n : `tn.ir.runtime_error: ${node.typeName} -> ${nestedCode}`;\n __tnRaiseIrError(\n prefixed,\n `Nested validator ${node.typeName} failed`\n );\n }\n if (nestedResult.consumed !== undefined) {\n return nestedResult.consumed;\n }\n }\n return __tnInvokeFootprint(node.typeName, nestedParams);\n }\n case \"sumOverArray\": {\n if (!ctx.buffer) {\n __tnRaiseIrError(\n \"tn.ir.missing_buffer\",\n `Jagged array '${node.fieldName}' requires buffer-backed validation`\n );\n }\n const count = __tnBigIntToNumber(\n __tnEvalIrNode(node.count, ctx, baseOffset),\n `Jagged array '${node.fieldName}' count`\n );\n let cursor = __tnBigIntToNumber(baseOffset, \"IR jagged array offset\");\n let total = __tnToBigInt(0);\n for (let i = 0; i < count; i++) {\n const result = __tnInvokeDynamicValidate(\n node.elementTypeName,\n ctx.buffer.subarray(cursor)\n );\n if (!result.ok || result.consumed === undefined) {\n const code = result.code ?? \"tn.ir.runtime_error\";\n __tnRaiseIrError(\n code,\n `Jagged array '${node.fieldName}' element ${i} failed validation`\n );\n }\n cursor += __tnBigIntToNumber(result.consumed, \"IR jagged element size\");\n total = __tnCheckedAdd(total, result.consumed);\n }\n return total;\n }\n default:\n __tnRaiseIrError(\n \"tn.ir.runtime_error\",\n `Unsupported IR node ${(node as { op: string }).op}`\n );\n }\n}\n\nfunction __tnNormalizeIrError(err: unknown): string {\n if (err && typeof err === \"object\" && \"code\" in err) {\n const maybeCode = (err as { code?: string }).code;\n if (typeof maybeCode === \"string\" && maybeCode.length > 0) {\n return maybeCode;\n }\n }\n const message =\n err && typeof err === \"object\" && \"message\" in err\n ? String((err as { message?: unknown }).message ?? \"\")\n : typeof err === \"string\"\n ? err\n : \"\";\n if (message.includes(\"Missing IR parameter\")) return \"tn.ir.missing_param\";\n if (message.includes(\"Unhandled IR switch value\")) return \"tn.ir.invalid_tag\";\n if (\n message.includes(\"invalid\") ||\n message.includes(\"overflow\") ||\n message.includes(\"negative size\")\n ) {\n return \"tn.ir.overflow\";\n }\n if (message.length > 0) return `tn.ir.runtime_error: ${message}`;\n return \"tn.ir.runtime_error\";\n}\n\n/* ----- TYPE DEFINITION FOR Date ----- */\n\nconst __tn_ir_Date = {\n typeName: \"Date\",\n root: { op: \"const\", value: 6n }\n} as const;\n\nexport class Date {\n private view: DataView;\n\n private constructor(private buffer: Uint8Array) {\n this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n }\n\n static __tnCreateView(buffer: Uint8Array, opts?: { fieldContext?: Record<string, number | bigint> }): Date {\n if (!buffer || buffer.length === undefined) throw new Error(\"Date.__tnCreateView requires a Uint8Array\");\n return new Date(new Uint8Array(buffer));\n }\n\n static builder(): DateBuilder {\n return new DateBuilder();\n }\n\n static fromBuilder(builder: DateBuilder): Date | null {\n const buffer = builder.build();\n return Date.from_array(buffer);\n }\n\n get_year(): number {\n const offset = 0;\n return this.view.getInt32(offset, true); /* little-endian */\n }\n\n set_year(value: number): void {\n const offset = 0;\n this.view.setInt32(offset, value, true); /* little-endian */\n }\n\n get year(): number {\n return this.get_year();\n }\n\n set year(value: number) {\n this.set_year(value);\n }\n\n get_month(): number {\n const offset = 4;\n return this.view.getUint8(offset);\n }\n\n set_month(value: number): void {\n const offset = 4;\n this.view.setUint8(offset, value);\n }\n\n get month(): number {\n return this.get_month();\n }\n\n set month(value: number) {\n this.set_month(value);\n }\n\n get_day(): number {\n const offset = 5;\n return this.view.getUint8(offset);\n }\n\n set_day(value: number): void {\n const offset = 5;\n this.view.setUint8(offset, value);\n }\n\n get day(): number {\n return this.get_day();\n }\n\n set day(value: number) {\n this.set_day(value);\n }\n\n private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n return __tnEvalFootprint(__tn_ir_Date.root, { params: __tnParams });\n }\n\n private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n return __tnValidateIrTree(__tn_ir_Date, buffer, __tnParams);\n }\n\n static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n return this.__tnFootprintInternal(__tnParams);\n }\n\n static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n return this.__tnValidateInternal(buffer, __tnParams);\n }\n\n static footprintIr(): bigint {\n return this.__tnFootprintInternal(Object.create(null));\n }\n\n static footprint(): number {\n const irResult = this.footprintIr();\n const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n if (__tnBigIntGreaterThan(irResult, maxSafe)) {\n throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for Date');\n }\n return __tnBigIntToNumber(irResult, 'Date::footprint');\n }\n\n static validate(buffer: Uint8Array, _opts?: { params?: never }): { ok: boolean; code?: string; consumed?: number } {\n if (buffer.length < 6) return { ok: false, code: \"tn.buffer_too_small\", consumed: 6 };\n return { ok: true, consumed: 6 };\n }\n\n static new(year: number, month: number, day: number): Date {\n const buffer = new Uint8Array(6);\n const view = new DataView(buffer.buffer);\n\n let offset = 0;\n view.setInt32(0, year, true); /* year (little-endian) */\n view.setUint8(4, month); /* month */\n view.setUint8(5, day); /* day */\n\n return new Date(buffer);\n }\n\n static from_array(buffer: Uint8Array): Date | null {\n if (!buffer || buffer.length === undefined) {\n return null;\n }\n const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n const validation = this.validate(buffer);\n if (!validation.ok) {\n return null;\n }\n return new Date(buffer);\n }\n\n}\n\nexport class DateBuilder {\n private buffer: Uint8Array;\n private view: DataView;\n\n constructor() {\n this.buffer = new Uint8Array(6);\n this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n }\n\n set_year(value: number): this {\n this.view.setInt32(0, value, true);\n return this;\n }\n\n set_month(value: number): this {\n this.view.setUint8(4, value);\n return this;\n }\n\n set_day(value: number): this {\n this.view.setUint8(5, value);\n return this;\n }\n\n build(): Uint8Array {\n return this.buffer.slice();\n }\n\n buildInto(target: Uint8Array, offset = 0): Uint8Array {\n if (target.length - offset < this.buffer.length) throw new Error(\"target buffer too small\");\n target.set(this.buffer, offset);\n return target;\n }\n\n finish(): Date {\n const view = Date.from_array(this.buffer.slice());\n if (!view) throw new Error(\"failed to build Date\");\n return view;\n }\n}\n\n__tnRegisterFootprint(\"Date\", (params) => Date.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"Date\", (buffer, params) => Date.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"Date\", (buffer) => { const result = Date.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n\n/* ----- TYPE DEFINITION FOR Duration ----- */\n\nconst __tn_ir_Duration = {\n typeName: \"Duration\",\n root: { op: \"const\", value: 12n }\n} as const;\n\nexport class Duration {\n private view: DataView;\n\n private constructor(private buffer: Uint8Array) {\n this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n }\n\n static __tnCreateView(buffer: Uint8Array, opts?: { fieldContext?: Record<string, number | bigint> }): Duration {\n if (!buffer || buffer.length === undefined) throw new Error(\"Duration.__tnCreateView requires a Uint8Array\");\n return new Duration(new Uint8Array(buffer));\n }\n\n static builder(): DurationBuilder {\n return new DurationBuilder();\n }\n\n static fromBuilder(builder: DurationBuilder): Duration | null {\n const buffer = builder.build();\n return Duration.from_array(buffer);\n }\n\n get_seconds(): bigint {\n const offset = 0;\n return this.view.getBigInt64(offset, true); /* little-endian */\n }\n\n set_seconds(value: bigint): void {\n const offset = 0;\n this.view.setBigInt64(offset, value, true); /* little-endian */\n }\n\n get seconds(): bigint {\n return this.get_seconds();\n }\n\n set seconds(value: bigint) {\n this.set_seconds(value);\n }\n\n get_nanos(): number {\n const offset = 8;\n return this.view.getInt32(offset, true); /* little-endian */\n }\n\n set_nanos(value: number): void {\n const offset = 8;\n this.view.setInt32(offset, value, true); /* little-endian */\n }\n\n get nanos(): number {\n return this.get_nanos();\n }\n\n set nanos(value: number) {\n this.set_nanos(value);\n }\n\n private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n return __tnEvalFootprint(__tn_ir_Duration.root, { params: __tnParams });\n }\n\n private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n return __tnValidateIrTree(__tn_ir_Duration, buffer, __tnParams);\n }\n\n static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n return this.__tnFootprintInternal(__tnParams);\n }\n\n static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n return this.__tnValidateInternal(buffer, __tnParams);\n }\n\n static footprintIr(): bigint {\n return this.__tnFootprintInternal(Object.create(null));\n }\n\n static footprint(): number {\n const irResult = this.footprintIr();\n const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n if (__tnBigIntGreaterThan(irResult, maxSafe)) {\n throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for Duration');\n }\n return __tnBigIntToNumber(irResult, 'Duration::footprint');\n }\n\n static validate(buffer: Uint8Array, _opts?: { params?: never }): { ok: boolean; code?: string; consumed?: number } {\n if (buffer.length < 12) return { ok: false, code: \"tn.buffer_too_small\", consumed: 12 };\n return { ok: true, consumed: 12 };\n }\n\n static new(seconds: bigint, nanos: number): Duration {\n const buffer = new Uint8Array(12);\n const view = new DataView(buffer.buffer);\n\n let offset = 0;\n view.setBigInt64(0, seconds, true); /* seconds (little-endian) */\n view.setInt32(8, nanos, true); /* nanos (little-endian) */\n\n return new Duration(buffer);\n }\n\n static from_array(buffer: Uint8Array): Duration | null {\n if (!buffer || buffer.length === undefined) {\n return null;\n }\n const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n const validation = this.validate(buffer);\n if (!validation.ok) {\n return null;\n }\n return new Duration(buffer);\n }\n\n}\n\nexport class DurationBuilder {\n private buffer: Uint8Array;\n private view: DataView;\n\n constructor() {\n this.buffer = new Uint8Array(12);\n this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n }\n\n set_seconds(value: number): this {\n const cast = __tnToBigInt(value);\n this.view.setBigInt64(0, cast, true);\n return this;\n }\n\n set_nanos(value: number): this {\n this.view.setInt32(8, value, true);\n return this;\n }\n\n build(): Uint8Array {\n return this.buffer.slice();\n }\n\n buildInto(target: Uint8Array, offset = 0): Uint8Array {\n if (target.length - offset < this.buffer.length) throw new Error(\"target buffer too small\");\n target.set(this.buffer, offset);\n return target;\n }\n\n finish(): Duration {\n const view = Duration.from_array(this.buffer.slice());\n if (!view) throw new Error(\"failed to build Duration\");\n return view;\n }\n}\n\n__tnRegisterFootprint(\"Duration\", (params) => Duration.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"Duration\", (buffer, params) => Duration.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"Duration\", (buffer) => { const result = Duration.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n\n/* ----- TYPE DEFINITION FOR FixedPoint ----- */\n\nconst __tn_ir_FixedPoint = {\n typeName: \"FixedPoint\",\n root: { op: \"const\", value: 9n }\n} as const;\n\nexport class FixedPoint {\n private view: DataView;\n\n private constructor(private buffer: Uint8Array) {\n this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n }\n\n static __tnCreateView(buffer: Uint8Array, opts?: { fieldContext?: Record<string, number | bigint> }): FixedPoint {\n if (!buffer || buffer.length === undefined) throw new Error(\"FixedPoint.__tnCreateView requires a Uint8Array\");\n return new FixedPoint(new Uint8Array(buffer));\n }\n\n static builder(): FixedPointBuilder {\n return new FixedPointBuilder();\n }\n\n static fromBuilder(builder: FixedPointBuilder): FixedPoint | null {\n const buffer = builder.build();\n return FixedPoint.from_array(buffer);\n }\n\n get_mantissa(): bigint {\n const offset = 0;\n return this.view.getBigInt64(offset, true); /* little-endian */\n }\n\n set_mantissa(value: bigint): void {\n const offset = 0;\n this.view.setBigInt64(offset, value, true); /* little-endian */\n }\n\n get mantissa(): bigint {\n return this.get_mantissa();\n }\n\n set mantissa(value: bigint) {\n this.set_mantissa(value);\n }\n\n get_scale(): number {\n const offset = 8;\n return this.view.getUint8(offset);\n }\n\n set_scale(value: number): void {\n const offset = 8;\n this.view.setUint8(offset, value);\n }\n\n get scale(): number {\n return this.get_scale();\n }\n\n set scale(value: number) {\n this.set_scale(value);\n }\n\n private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n return __tnEvalFootprint(__tn_ir_FixedPoint.root, { params: __tnParams });\n }\n\n private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n return __tnValidateIrTree(__tn_ir_FixedPoint, buffer, __tnParams);\n }\n\n static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n return this.__tnFootprintInternal(__tnParams);\n }\n\n static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n return this.__tnValidateInternal(buffer, __tnParams);\n }\n\n static footprintIr(): bigint {\n return this.__tnFootprintInternal(Object.create(null));\n }\n\n static footprint(): number {\n const irResult = this.footprintIr();\n const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n if (__tnBigIntGreaterThan(irResult, maxSafe)) {\n throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for FixedPoint');\n }\n return __tnBigIntToNumber(irResult, 'FixedPoint::footprint');\n }\n\n static validate(buffer: Uint8Array, _opts?: { params?: never }): { ok: boolean; code?: string; consumed?: number } {\n if (buffer.length < 9) return { ok: false, code: \"tn.buffer_too_small\", consumed: 9 };\n return { ok: true, consumed: 9 };\n }\n\n static new(mantissa: bigint, scale: number): FixedPoint {\n const buffer = new Uint8Array(9);\n const view = new DataView(buffer.buffer);\n\n let offset = 0;\n view.setBigInt64(0, mantissa, true); /* mantissa (little-endian) */\n view.setUint8(8, scale); /* scale */\n\n return new FixedPoint(buffer);\n }\n\n static from_array(buffer: Uint8Array): FixedPoint | null {\n if (!buffer || buffer.length === undefined) {\n return null;\n }\n const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n const validation = this.validate(buffer);\n if (!validation.ok) {\n return null;\n }\n return new FixedPoint(buffer);\n }\n\n}\n\nexport class FixedPointBuilder {\n private buffer: Uint8Array;\n private view: DataView;\n\n constructor() {\n this.buffer = new Uint8Array(9);\n this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n }\n\n set_mantissa(value: number): this {\n const cast = __tnToBigInt(value);\n this.view.setBigInt64(0, cast, true);\n return this;\n }\n\n set_scale(value: number): this {\n this.view.setUint8(8, value);\n return this;\n }\n\n build(): Uint8Array {\n return this.buffer.slice();\n }\n\n buildInto(target: Uint8Array, offset = 0): Uint8Array {\n if (target.length - offset < this.buffer.length) throw new Error(\"target buffer too small\");\n target.set(this.buffer, offset);\n return target;\n }\n\n finish(): FixedPoint {\n const view = FixedPoint.from_array(this.buffer.slice());\n if (!view) throw new Error(\"failed to build FixedPoint\");\n return view;\n }\n}\n\n__tnRegisterFootprint(\"FixedPoint\", (params) => FixedPoint.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"FixedPoint\", (buffer, params) => FixedPoint.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"FixedPoint\", (buffer) => { const result = FixedPoint.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n\n/* ----- TYPE DEFINITION FOR Hash ----- */\n\nconst __tn_ir_Hash = {\n typeName: \"Hash\",\n root: { op: \"const\", value: 32n }\n} as const;\n\nexport class Hash {\n private view: DataView;\n\n private constructor(private buffer: Uint8Array) {\n this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n }\n\n static __tnCreateView(buffer: Uint8Array, opts?: { fieldContext?: Record<string, number | bigint> }): Hash {\n if (!buffer || buffer.length === undefined) throw new Error(\"Hash.__tnCreateView requires a Uint8Array\");\n return new Hash(new Uint8Array(buffer));\n }\n\n static builder(): HashBuilder {\n return new HashBuilder();\n }\n\n static fromBuilder(builder: HashBuilder): Hash | null {\n const buffer = builder.build();\n return Hash.from_array(buffer);\n }\n\n get_bytes(): number[] {\n const offset = 0;\n const result: number[] = [];\n for (let i = 0; i < 32; i++) {\n result.push(this.view.getUint8((offset + i * 1)));\n }\n return result;\n }\n\n set_bytes(value: number[]): void {\n const offset = 0;\n if (value.length !== 32) {\n throw new Error('Array length must be 32');\n }\n for (let i = 0; i < 32; i++) {\n this.view.setUint8((offset + i * 1), value[i]);\n }\n }\n\n get bytes(): number[] {\n return this.get_bytes();\n }\n\n set bytes(value: number[]) {\n this.set_bytes(value);\n }\n\n private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n return __tnEvalFootprint(__tn_ir_Hash.root, { params: __tnParams });\n }\n\n private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n return __tnValidateIrTree(__tn_ir_Hash, buffer, __tnParams);\n }\n\n static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n return this.__tnFootprintInternal(__tnParams);\n }\n\n static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n return this.__tnValidateInternal(buffer, __tnParams);\n }\n\n static footprintIr(): bigint {\n return this.__tnFootprintInternal(Object.create(null));\n }\n\n static footprint(): number {\n const irResult = this.footprintIr();\n const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n if (__tnBigIntGreaterThan(irResult, maxSafe)) {\n throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for Hash');\n }\n return __tnBigIntToNumber(irResult, 'Hash::footprint');\n }\n\n static validate(buffer: Uint8Array, _opts?: { params?: never }): { ok: boolean; code?: string; consumed?: number } {\n if (buffer.length < 32) return { ok: false, code: \"tn.buffer_too_small\", consumed: 32 };\n return { ok: true, consumed: 32 };\n }\n\n static from_array(buffer: Uint8Array): Hash | null {\n if (!buffer || buffer.length === undefined) {\n return null;\n }\n const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n const validation = this.validate(buffer);\n if (!validation.ok) {\n return null;\n }\n return new Hash(buffer);\n }\n\n}\n\nexport class HashBuilder {\n private buffer: Uint8Array;\n private view: DataView;\n\n constructor() {\n this.buffer = new Uint8Array(32);\n this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n }\n\n set_bytes(values: number[]): this {\n if (values.length !== 32) throw new Error(\"bytes expects 32 elements\");\n for (let i = 0; i < values.length; i++) {\n const byteOffset = 0 + i * 1;\n this.view.setUint8(byteOffset, values[i]);\n }\n return this;\n }\n\n build(): Uint8Array {\n return this.buffer.slice();\n }\n\n buildInto(target: Uint8Array, offset = 0): Uint8Array {\n if (target.length - offset < this.buffer.length) throw new Error(\"target buffer too small\");\n target.set(this.buffer, offset);\n return target;\n }\n\n finish(): Hash {\n const view = Hash.from_array(this.buffer.slice());\n if (!view) throw new Error(\"failed to build Hash\");\n return view;\n }\n}\n\n__tnRegisterFootprint(\"Hash\", (params) => Hash.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"Hash\", (buffer, params) => Hash.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"Hash\", (buffer) => { const result = Hash.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n\n/* ----- TYPE DEFINITION FOR InstructionData ----- */\n\nconst __tn_ir_InstructionData = {\n typeName: \"InstructionData\",\n root: { op: \"align\", alignment: 1, node: { op: \"add\", left: { op: \"add\", left: { op: \"align\", alignment: 2, node: { op: \"const\", value: 2n } }, right: { op: \"align\", alignment: 8, node: { op: \"const\", value: 8n } } }, right: { op: \"align\", alignment: 1, node: { op: \"mul\", left: { op: \"field\", param: \"data.data_size\" }, right: { op: \"const\", value: 1n } } } } }\n} as const;\n\nexport class InstructionData {\n private view: DataView;\n private __tnFieldContext: Record<string, number | bigint> | null = null;\n private __tnParams: InstructionData.Params;\n\n private constructor(private buffer: Uint8Array, params?: InstructionData.Params, fieldContext?: Record<string, number | bigint>) {\n this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n this.__tnFieldContext = fieldContext ?? null;\n if (params) {\n this.__tnParams = params;\n } else {\n const derived = InstructionData.__tnExtractParams(this.view, buffer);\n if (!derived) {\n throw new Error(\"InstructionData: failed to derive dynamic parameters\");\n }\n this.__tnParams = derived.params;\n }\n }\n\n static __tnCreateView(buffer: Uint8Array, opts?: { params?: InstructionData.Params, fieldContext?: Record<string, number | bigint> }): InstructionData {\n if (!buffer || buffer.length === undefined) throw new Error(\"InstructionData.__tnCreateView requires a Uint8Array\");\n let params = opts?.params ?? null;\n if (!params) {\n const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n const derived = InstructionData.__tnExtractParams(view, buffer);\n if (!derived) throw new Error(\"InstructionData.__tnCreateView: failed to derive params\");\n params = derived.params;\n }\n const instance = new InstructionData(new Uint8Array(buffer), params, opts?.fieldContext);\n return instance;\n }\n\n dynamicParams(): InstructionData.Params {\n return this.__tnParams;\n }\n\n withFieldContext(context: Record<string, number | bigint>): this {\n this.__tnFieldContext = context;\n return this;\n }\n\n private __tnResolveFieldRef(path: string): number {\n const getterName = `get_${path.replace(/[.]/g, '_')}`;\n const getter = (this as any)[getterName];\n if (typeof getter === \"function\") {\n const value = getter.call(this);\n return typeof value === \"bigint\" ? __tnBigIntToNumber(value, \"InstructionData::__tnResolveFieldRef\") : value;\n }\n if (this.__tnFieldContext && Object.prototype.hasOwnProperty.call(this.__tnFieldContext, path)) {\n const contextValue = this.__tnFieldContext[path];\n return typeof contextValue === \"bigint\" ? __tnBigIntToNumber(contextValue, \"InstructionData::__tnResolveFieldRef\") : contextValue;\n }\n throw new Error(\"InstructionData: field reference '\" + path + \"' is not available; provide fieldContext when creating this view\");\n }\n\n static builder(): InstructionDataBuilder {\n return new InstructionDataBuilder();\n }\n\n static fromBuilder(builder: InstructionDataBuilder): InstructionData | null {\n const buffer = builder.build();\n const params = builder.dynamicParams();\n return InstructionData.from_array(buffer, { params });\n }\n\n static readonly flexibleArrayWriters = Object.freeze([\n { field: \"data\", method: \"data\", sizeField: \"data_size\", paramKey: \"data_size\", elementSize: 1 },\n ] as const);\n\n private static __tnExtractParams(view: DataView, buffer: Uint8Array): { params: InstructionData.Params; derived: Record<string, bigint> | null } | null {\n if (buffer.length < 10) {\n return null;\n }\n const __tnParam_data_data_size = __tnToBigInt(view.getBigUint64(2, true));\n const __tnExtractedParams = InstructionData.Params.fromValues({\n data_data_size: __tnParam_data_data_size,\n });\n return { params: __tnExtractedParams, derived: null };\n }\n\n get_program_idx(): number {\n const offset = 0;\n return this.view.getUint16(offset, true); /* little-endian */\n }\n\n set_program_idx(value: number): void {\n const offset = 0;\n this.view.setUint16(offset, value, true); /* little-endian */\n }\n\n get program_idx(): number {\n return this.get_program_idx();\n }\n\n set program_idx(value: number) {\n this.set_program_idx(value);\n }\n\n get_data_size(): bigint {\n const offset = 2;\n return this.view.getBigUint64(offset, true); /* little-endian */\n }\n\n set_data_size(value: bigint): void {\n const offset = 2;\n this.view.setBigUint64(offset, value, true); /* little-endian */\n }\n\n get data_size(): bigint {\n return this.get_data_size();\n }\n\n set data_size(value: bigint) {\n this.set_data_size(value);\n }\n\n get_data_length(): number {\n return this.__tnResolveFieldRef(\"data_size\");\n }\n\n get_data_at(index: number): number {\n const offset = 10;\n return this.view.getUint8(offset + index * 1);\n }\n\n get_data(): number[] {\n const len = this.get_data_length();\n const result: number[] = [];\n for (let i = 0; i < len; i++) {\n result.push(this.get_data_at(i));\n }\n return result;\n }\n\n set_data_at(index: number, value: number): void {\n const offset = 10;\n this.view.setUint8((offset + index * 1), value);\n }\n\n set_data(value: number[]): void {\n const len = Math.min(this.get_data_length(), value.length);\n for (let i = 0; i < len; i++) {\n this.set_data_at(i, value[i]);\n }\n }\n\n get data(): number[] {\n return this.get_data();\n }\n\n set data(value: number[]) {\n this.set_data(value);\n }\n private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n return __tnEvalFootprint(__tn_ir_InstructionData.root, { params: __tnParams });\n }\n\n private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n return __tnValidateIrTree(__tn_ir_InstructionData, buffer, __tnParams);\n }\n\n static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n return this.__tnFootprintInternal(__tnParams);\n }\n\n static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n return this.__tnValidateInternal(buffer, __tnParams);\n }\n\n static footprintIr(data_data_size: number | bigint): bigint {\n const params = InstructionData.Params.fromValues({\n data_data_size: data_data_size,\n });\n return this.footprintIrFromParams(params);\n }\n\n private static __tnPackParams(params: InstructionData.Params): Record<string, bigint> {\n const record: Record<string, bigint> = Object.create(null);\n record[\"data.data_size\"] = params.data_data_size;\n return record;\n }\n\n static footprintIrFromParams(params: InstructionData.Params): bigint {\n const __tnParams = this.__tnPackParams(params);\n return this.__tnFootprintInternal(__tnParams);\n }\n\n static footprintFromParams(params: InstructionData.Params): number {\n const irResult = this.footprintIrFromParams(params);\n const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n if (__tnBigIntGreaterThan(irResult, maxSafe)) throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for InstructionData');\n return __tnBigIntToNumber(irResult, 'InstructionData::footprintFromParams');\n }\n\n static footprintFromValues(input: { data_data_size: number | bigint }): number {\n const params = InstructionData.params(input);\n return this.footprintFromParams(params);\n }\n\n static footprint(params: InstructionData.Params): number {\n return this.footprintFromParams(params);\n }\n\n static validate(buffer: Uint8Array, opts?: { params?: InstructionData.Params }): { ok: boolean; code?: string; consumed?: number; params?: InstructionData.Params } {\n if (!buffer || buffer.length === undefined) {\n return { ok: false, code: \"tn.invalid_buffer\" };\n }\n const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n let params = opts?.params ?? null;\n if (!params) {\n const extracted = this.__tnExtractParams(view, buffer);\n if (!extracted) return { ok: false, code: \"tn.param_extraction_failed\" };\n params = extracted.params;\n }\n const __tnParamsRec = this.__tnPackParams(params);\n const irResult = this.__tnValidateInternal(buffer, __tnParamsRec);\n if (!irResult.ok) {\n return { ok: false, code: irResult.code, consumed: irResult.consumed ? __tnBigIntToNumber(irResult.consumed, 'InstructionData::validate') : undefined, params };\n }\n const consumed = irResult.consumed ? __tnBigIntToNumber(irResult.consumed, 'InstructionData::validate') : undefined;\n return { ok: true, consumed, params };\n }\n\n static from_array(buffer: Uint8Array, opts?: { params?: InstructionData.Params }): InstructionData | null {\n if (!buffer || buffer.length === undefined) {\n return null;\n }\n const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n let params = opts?.params ?? null;\n if (!params) {\n const derived = this.__tnExtractParams(view, buffer);\n if (!derived) return null;\n params = derived.params;\n }\n const validation = this.validate(buffer, { params });\n if (!validation.ok) {\n return null;\n }\n const cached = validation.params ?? params;\n const state = new InstructionData(buffer, cached);\n return state;\n }\n\n\n}\n\nexport namespace InstructionData {\n export type Params = {\n /** ABI path: data.data_size */\n readonly data_data_size: bigint;\n };\n\n export const ParamKeys = Object.freeze({\n data_data_size: \"data.data_size\",\n } as const);\n\n export const Params = {\n fromValues(input: { data_data_size: number | bigint }): Params {\n return {\n data_data_size: __tnToBigInt(input.data_data_size),\n };\n },\n fromBuilder(source: { dynamicParams(): Params } | { params: Params } | Params): Params {\n if ((source as { dynamicParams?: () => Params }).dynamicParams) {\n return (source as { dynamicParams(): Params }).dynamicParams();\n }\n if ((source as { params?: Params }).params) {\n return (source as { params: Params }).params;\n }\n return source as Params;\n }\n };\n\n export function params(input: { data_data_size: number | bigint }): Params {\n return Params.fromValues(input);\n }\n}\n\nexport class InstructionDataBuilder {\n private buffer: Uint8Array;\n private view: DataView;\n private __tnCachedParams: InstructionData.Params | null = null;\n private __tnLastBuffer: Uint8Array | null = null;\n private __tnLastParams: InstructionData.Params | null = null;\n private __tnFam_data: Uint8Array | null = null;\n private __tnFam_dataCount: number | null = null;\n private __tnFamWriter_data?: __TnFamWriterResult<InstructionDataBuilder>;\n\n constructor() {\n this.buffer = new Uint8Array(10);\n this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n }\n\n private __tnInvalidate(): void {\n this.__tnCachedParams = null;\n this.__tnLastBuffer = null;\n this.__tnLastParams = null;\n }\n\n set_program_idx(value: number): this {\n this.view.setUint16(0, value, true);\n this.__tnInvalidate();\n return this;\n }\n\n set_data_size(value: number): this {\n const cast = __tnToBigInt(value);\n this.view.setBigUint64(2, cast, true);\n this.__tnInvalidate();\n return this;\n }\n\n data(): __TnFamWriterResult<InstructionDataBuilder> {\n if (!this.__tnFamWriter_data) {\n this.__tnFamWriter_data = __tnCreateFamWriter(this, \"data\", (payload) => {\n const bytes = new Uint8Array(payload);\n const elementCount = bytes.length;\n this.__tnFam_data = bytes;\n this.__tnFam_dataCount = elementCount;\n this.set_data_size(elementCount);\n this.__tnInvalidate();\n });\n }\n return this.__tnFamWriter_data!;\n }\n\n build(): Uint8Array {\n const params = this.__tnComputeParams();\n const size = InstructionData.footprintFromParams(params);\n const buffer = new Uint8Array(size);\n this.__tnWriteInto(buffer);\n this.__tnValidateOrThrow(buffer, params);\n return buffer;\n }\n\n buildInto(target: Uint8Array, offset = 0): Uint8Array {\n const params = this.__tnComputeParams();\n const size = InstructionData.footprintFromParams(params);\n if (target.length - offset < size) throw new Error(\"InstructionDataBuilder: target buffer too small\");\n const slice = target.subarray(offset, offset + size);\n this.__tnWriteInto(slice);\n this.__tnValidateOrThrow(slice, params);\n return target;\n }\n\n finish(): InstructionData {\n const buffer = this.build();\n const params = this.__tnLastParams ?? this.__tnComputeParams();\n const view = InstructionData.from_array(buffer, { params });\n if (!view) throw new Error(\"InstructionDataBuilder: failed to finalize view\");\n return view;\n }\n\n finishView(): InstructionData {\n return this.finish();\n }\n\n dynamicParams(): InstructionData.Params {\n return this.__tnComputeParams();\n }\n\n private __tnComputeParams(): InstructionData.Params {\n if (this.__tnCachedParams) return this.__tnCachedParams;\n const params = InstructionData.Params.fromValues({\n data_data_size: (() => { if (this.__tnFam_dataCount === null) throw new Error(\"InstructionDataBuilder: field 'data' must be written before computing params\"); return __tnToBigInt(this.__tnFam_dataCount); })(),\n });\n this.__tnCachedParams = params;\n return params;\n }\n\n private __tnWriteInto(target: Uint8Array): void {\n target.set(this.buffer, 0);\n let cursor = this.buffer.length;\n const __tnLocal_data_bytes = this.__tnFam_data;\n if (!__tnLocal_data_bytes) throw new Error(\"InstructionDataBuilder: field 'data' must be written before build\");\n target.set(__tnLocal_data_bytes, cursor);\n cursor += __tnLocal_data_bytes.length;\n }\n\n private __tnValidateOrThrow(buffer: Uint8Array, params: InstructionData.Params): void {\n const result = InstructionData.validate(buffer, { params });\n if (!result.ok) {\n throw new Error(`${ InstructionData }Builder: builder produced invalid buffer (code=${result.code ?? \"unknown\"})`);\n }\n this.__tnLastParams = result.params ?? params;\n this.__tnLastBuffer = buffer;\n }\n}\n\n__tnRegisterFootprint(\"InstructionData\", (params) => InstructionData.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"InstructionData\", (buffer, params) => InstructionData.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"InstructionData\", (buffer) => { const result = InstructionData.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n\n/* ----- TYPE DEFINITION FOR Pubkey ----- */\n\nconst __tn_ir_Pubkey = {\n typeName: \"Pubkey\",\n root: { op: \"const\", value: 32n }\n} as const;\n\nexport class Pubkey {\n private view: DataView;\n\n private constructor(private buffer: Uint8Array) {\n this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n }\n\n static __tnCreateView(buffer: Uint8Array, opts?: { fieldContext?: Record<string, number | bigint> }): Pubkey {\n if (!buffer || buffer.length === undefined) throw new Error(\"Pubkey.__tnCreateView requires a Uint8Array\");\n return new Pubkey(new Uint8Array(buffer));\n }\n\n static builder(): PubkeyBuilder {\n return new PubkeyBuilder();\n }\n\n static fromBuilder(builder: PubkeyBuilder): Pubkey | null {\n const buffer = builder.build();\n return Pubkey.from_array(buffer);\n }\n\n get_bytes(): number[] {\n const offset = 0;\n const result: number[] = [];\n for (let i = 0; i < 32; i++) {\n result.push(this.view.getUint8((offset + i * 1)));\n }\n return result;\n }\n\n set_bytes(value: number[]): void {\n const offset = 0;\n if (value.length !== 32) {\n throw new Error('Array length must be 32');\n }\n for (let i = 0; i < 32; i++) {\n this.view.setUint8((offset + i * 1), value[i]);\n }\n }\n\n get bytes(): number[] {\n return this.get_bytes();\n }\n\n set bytes(value: number[]) {\n this.set_bytes(value);\n }\n\n private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n return __tnEvalFootprint(__tn_ir_Pubkey.root, { params: __tnParams });\n }\n\n private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n return __tnValidateIrTree(__tn_ir_Pubkey, buffer, __tnParams);\n }\n\n static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n return this.__tnFootprintInternal(__tnParams);\n }\n\n static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n return this.__tnValidateInternal(buffer, __tnParams);\n }\n\n static footprintIr(): bigint {\n return this.__tnFootprintInternal(Object.create(null));\n }\n\n static footprint(): number {\n const irResult = this.footprintIr();\n const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n if (__tnBigIntGreaterThan(irResult, maxSafe)) {\n throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for Pubkey');\n }\n return __tnBigIntToNumber(irResult, 'Pubkey::footprint');\n }\n\n static validate(buffer: Uint8Array, _opts?: { params?: never }): { ok: boolean; code?: string; consumed?: number } {\n if (buffer.length < 32) return { ok: false, code: \"tn.buffer_too_small\", consumed: 32 };\n return { ok: true, consumed: 32 };\n }\n\n static from_array(buffer: Uint8Array): Pubkey | null {\n if (!buffer || buffer.length === undefined) {\n return null;\n }\n const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n const validation = this.validate(buffer);\n if (!validation.ok) {\n return null;\n }\n return new Pubkey(buffer);\n }\n\n}\n\nexport class PubkeyBuilder {\n private buffer: Uint8Array;\n private view: DataView;\n\n constructor() {\n this.buffer = new Uint8Array(32);\n this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n }\n\n set_bytes(values: number[]): this {\n if (values.length !== 32) throw new Error(\"bytes expects 32 elements\");\n for (let i = 0; i < values.length; i++) {\n const byteOffset = 0 + i * 1;\n this.view.setUint8(byteOffset, values[i]);\n }\n return this;\n }\n\n build(): Uint8Array {\n return this.buffer.slice();\n }\n\n buildInto(target: Uint8Array, offset = 0): Uint8Array {\n if (target.length - offset < this.buffer.length) throw new Error(\"target buffer too small\");\n target.set(this.buffer, offset);\n return target;\n }\n\n finish(): Pubkey {\n const view = Pubkey.from_array(this.buffer.slice());\n if (!view) throw new Error(\"failed to build Pubkey\");\n return view;\n }\n}\n\n__tnRegisterFootprint(\"Pubkey\", (params) => Pubkey.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"Pubkey\", (buffer, params) => Pubkey.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"Pubkey\", (buffer) => { const result = Pubkey.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n\n/* ----- TYPE DEFINITION FOR Signature ----- */\n\nconst __tn_ir_Signature = {\n typeName: \"Signature\",\n root: { op: \"const\", value: 64n }\n} as const;\n\nexport class Signature {\n private view: DataView;\n\n private constructor(private buffer: Uint8Array) {\n this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n }\n\n static __tnCreateView(buffer: Uint8Array, opts?: { fieldContext?: Record<string, number | bigint> }): Signature {\n if (!buffer || buffer.length === undefined) throw new Error(\"Signature.__tnCreateView requires a Uint8Array\");\n return new Signature(new Uint8Array(buffer));\n }\n\n static builder(): SignatureBuilder {\n return new SignatureBuilder();\n }\n\n static fromBuilder(builder: SignatureBuilder): Signature | null {\n const buffer = builder.build();\n return Signature.from_array(buffer);\n }\n\n get_bytes(): number[] {\n const offset = 0;\n const result: number[] = [];\n for (let i = 0; i < 64; i++) {\n result.push(this.view.getUint8((offset + i * 1)));\n }\n return result;\n }\n\n set_bytes(value: number[]): void {\n const offset = 0;\n if (value.length !== 64) {\n throw new Error('Array length must be 64');\n }\n for (let i = 0; i < 64; i++) {\n this.view.setUint8((offset + i * 1), value[i]);\n }\n }\n\n get bytes(): number[] {\n return this.get_bytes();\n }\n\n set bytes(value: number[]) {\n this.set_bytes(value);\n }\n\n private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n return __tnEvalFootprint(__tn_ir_Signature.root, { params: __tnParams });\n }\n\n private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n return __tnValidateIrTree(__tn_ir_Signature, buffer, __tnParams);\n }\n\n static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n return this.__tnFootprintInternal(__tnParams);\n }\n\n static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n return this.__tnValidateInternal(buffer, __tnParams);\n }\n\n static footprintIr(): bigint {\n return this.__tnFootprintInternal(Object.create(null));\n }\n\n static footprint(): number {\n const irResult = this.footprintIr();\n const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n if (__tnBigIntGreaterThan(irResult, maxSafe)) {\n throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for Signature');\n }\n return __tnBigIntToNumber(irResult, 'Signature::footprint');\n }\n\n static validate(buffer: Uint8Array, _opts?: { params?: never }): { ok: boolean; code?: string; consumed?: number } {\n if (buffer.length < 64) return { ok: false, code: \"tn.buffer_too_small\", consumed: 64 };\n return { ok: true, consumed: 64 };\n }\n\n static from_array(buffer: Uint8Array): Signature | null {\n if (!buffer || buffer.length === undefined) {\n return null;\n }\n const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n const validation = this.validate(buffer);\n if (!validation.ok) {\n return null;\n }\n return new Signature(buffer);\n }\n\n}\n\nexport class SignatureBuilder {\n private buffer: Uint8Array;\n private view: DataView;\n\n constructor() {\n this.buffer = new Uint8Array(64);\n this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n }\n\n set_bytes(values: number[]): this {\n if (values.length !== 64) throw new Error(\"bytes expects 64 elements\");\n for (let i = 0; i < values.length; i++) {\n const byteOffset = 0 + i * 1;\n this.view.setUint8(byteOffset, values[i]);\n }\n return this;\n }\n\n build(): Uint8Array {\n return this.buffer.slice();\n }\n\n buildInto(target: Uint8Array, offset = 0): Uint8Array {\n if (target.length - offset < this.buffer.length) throw new Error(\"target buffer too small\");\n target.set(this.buffer, offset);\n return target;\n }\n\n finish(): Signature {\n const view = Signature.from_array(this.buffer.slice());\n if (!view) throw new Error(\"failed to build Signature\");\n return view;\n }\n}\n\n__tnRegisterFootprint(\"Signature\", (params) => Signature.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"Signature\", (buffer, params) => Signature.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"Signature\", (buffer) => { const result = Signature.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n\n/* ----- TYPE DEFINITION FOR Timestamp ----- */\n\nconst __tn_ir_Timestamp = {\n typeName: \"Timestamp\",\n root: { op: \"const\", value: 8n }\n} as const;\n\nexport class Timestamp {\n private view: DataView;\n\n private constructor(private buffer: Uint8Array) {\n this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n }\n\n static __tnCreateView(buffer: Uint8Array, opts?: { fieldContext?: Record<string, number | bigint> }): Timestamp {\n if (!buffer || buffer.length === undefined) throw new Error(\"Timestamp.__tnCreateView requires a Uint8Array\");\n return new Timestamp(new Uint8Array(buffer));\n }\n\n static builder(): TimestampBuilder {\n return new TimestampBuilder();\n }\n\n static fromBuilder(builder: TimestampBuilder): Timestamp | null {\n const buffer = builder.build();\n return Timestamp.from_array(buffer);\n }\n\n get_seconds(): bigint {\n const offset = 0;\n return this.view.getBigInt64(offset, true); /* little-endian */\n }\n\n set_seconds(value: bigint): void {\n const offset = 0;\n this.view.setBigInt64(offset, value, true); /* little-endian */\n }\n\n get seconds(): bigint {\n return this.get_seconds();\n }\n\n set seconds(value: bigint) {\n this.set_seconds(value);\n }\n\n private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n return __tnEvalFootprint(__tn_ir_Timestamp.root, { params: __tnParams });\n }\n\n private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n return __tnValidateIrTree(__tn_ir_Timestamp, buffer, __tnParams);\n }\n\n static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n return this.__tnFootprintInternal(__tnParams);\n }\n\n static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n return this.__tnValidateInternal(buffer, __tnParams);\n }\n\n static footprintIr(): bigint {\n return this.__tnFootprintInternal(Object.create(null));\n }\n\n static footprint(): number {\n const irResult = this.footprintIr();\n const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n if (__tnBigIntGreaterThan(irResult, maxSafe)) {\n throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for Timestamp');\n }\n return __tnBigIntToNumber(irResult, 'Timestamp::footprint');\n }\n\n static validate(buffer: Uint8Array, _opts?: { params?: never }): { ok: boolean; code?: string; consumed?: number } {\n if (buffer.length < 8) return { ok: false, code: \"tn.buffer_too_small\", consumed: 8 };\n return { ok: true, consumed: 8 };\n }\n\n static new(seconds: bigint): Timestamp {\n const buffer = new Uint8Array(8);\n const view = new DataView(buffer.buffer);\n\n let offset = 0;\n view.setBigInt64(0, seconds, true); /* seconds (little-endian) */\n\n return new Timestamp(buffer);\n }\n\n static from_array(buffer: Uint8Array): Timestamp | null {\n if (!buffer || buffer.length === undefined) {\n return null;\n }\n const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n const validation = this.validate(buffer);\n if (!validation.ok) {\n return null;\n }\n return new Timestamp(buffer);\n }\n\n}\n\nexport class TimestampBuilder {\n private buffer: Uint8Array;\n private view: DataView;\n\n constructor() {\n this.buffer = new Uint8Array(8);\n this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n }\n\n set_seconds(value: number): this {\n const cast = __tnToBigInt(value);\n this.view.setBigInt64(0, cast, true);\n return this;\n }\n\n build(): Uint8Array {\n return this.buffer.slice();\n }\n\n buildInto(target: Uint8Array, offset = 0): Uint8Array {\n if (target.length - offset < this.buffer.length) throw new Error(\"target buffer too small\");\n target.set(this.buffer, offset);\n return target;\n }\n\n finish(): Timestamp {\n const view = Timestamp.from_array(this.buffer.slice());\n if (!view) throw new Error(\"failed to build Timestamp\");\n return view;\n }\n}\n\n__tnRegisterFootprint(\"Timestamp\", (params) => Timestamp.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"Timestamp\", (buffer, params) => Timestamp.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"Timestamp\", (buffer) => { const result = Timestamp.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n\n","/* Auto-generated TypeScript code */\n/* WARNING: Do not modify this file directly. It is generated from ABI definitions. */\n\nimport { InstructionData } from \"../../common/primitives/types\";\n\ntype __TnIrNode =\n | { readonly op: \"zero\" }\n | { readonly op: \"const\"; readonly value: bigint }\n | { readonly op: \"field\"; readonly param: string }\n | {\n readonly op: \"add\";\n readonly left: __TnIrNode;\n readonly right: __TnIrNode;\n }\n | {\n readonly op: \"mul\";\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 __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 __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 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 \"mul\":\n return __tnCheckedMul(\n __tnEvalIrNode(node.left, ctx, baseOffset),\n __tnEvalIrNode(node.right, ctx, baseOffset)\n );\n case \"align\":\n return __tnAlign(__tnEvalIrNode(node.node, ctx, baseOffset), node.alignment);\n case \"switch\": {\n const tagVal = ctx.params[node.tag];\n if (tagVal === undefined) {\n const prefix = ctx.typeName ? `${ctx.typeName}: ` : \"\";\n __tnRaiseIrError(\n \"tn.ir.missing_param\",\n `${prefix}Missing IR switch tag '${node.tag}'`\n );\n }\n const tagNumber = Number(tagVal);\n for (const caseNode of node.cases) {\n if (caseNode.value === tagNumber) {\n return __tnEvalIrNode(caseNode.node, ctx, baseOffset);\n }\n }\n if (node.default) return __tnEvalIrNode(node.default, ctx, baseOffset);\n __tnRaiseIrError(\n \"tn.ir.invalid_tag\",\n `Unhandled IR switch value ${tagNumber} for '${node.tag}'`\n );\n }\n case \"call\": {\n const nestedParams: Record<string, bigint> = Object.create(null);\n for (const arg of node.args) {\n const val = ctx.params[arg.source];\n if (val === undefined) {\n const prefix = ctx.typeName ? `${ctx.typeName}: ` : \"\";\n __tnRaiseIrError(\n \"tn.ir.missing_param\",\n `${prefix}Missing IR parameter '${arg.source}' for nested call`\n );\n }\n nestedParams[arg.name] = val;\n }\n if (ctx.buffer) {\n const nestedOffset = __tnBigIntToNumber(baseOffset, \"IR nested offset\");\n const nestedResult = __tnInvokeValidate(\n node.typeName,\n ctx.buffer.subarray(nestedOffset),\n nestedParams\n );\n if (!nestedResult.ok) {\n const nestedCode =\n nestedResult.code ?? `tn.ir.runtime_error: ${node.typeName}`;\n const prefixed = nestedCode.startsWith(\"tn.\")\n ? nestedCode\n : `tn.ir.runtime_error: ${node.typeName} -> ${nestedCode}`;\n __tnRaiseIrError(\n prefixed,\n `Nested validator ${node.typeName} failed`\n );\n }\n if (nestedResult.consumed !== undefined) {\n return nestedResult.consumed;\n }\n }\n return __tnInvokeFootprint(node.typeName, nestedParams);\n }\n case \"sumOverArray\": {\n if (!ctx.buffer) {\n __tnRaiseIrError(\n \"tn.ir.missing_buffer\",\n `Jagged array '${node.fieldName}' requires buffer-backed validation`\n );\n }\n const count = __tnBigIntToNumber(\n __tnEvalIrNode(node.count, ctx, baseOffset),\n `Jagged array '${node.fieldName}' count`\n );\n let cursor = __tnBigIntToNumber(baseOffset, \"IR jagged array offset\");\n let total = __tnToBigInt(0);\n for (let i = 0; i < count; i++) {\n const result = __tnInvokeDynamicValidate(\n node.elementTypeName,\n ctx.buffer.subarray(cursor)\n );\n if (!result.ok || result.consumed === undefined) {\n const code = result.code ?? \"tn.ir.runtime_error\";\n __tnRaiseIrError(\n code,\n `Jagged array '${node.fieldName}' element ${i} failed validation`\n );\n }\n cursor += __tnBigIntToNumber(result.consumed, \"IR jagged element size\");\n total = __tnCheckedAdd(total, result.consumed);\n }\n return total;\n }\n default:\n __tnRaiseIrError(\n \"tn.ir.runtime_error\",\n `Unsupported IR node ${(node as { op: string }).op}`\n );\n }\n}\n\nfunction __tnNormalizeIrError(err: unknown): string {\n if (err && typeof err === \"object\" && \"code\" in err) {\n const maybeCode = (err as { code?: string }).code;\n if (typeof maybeCode === \"string\" && maybeCode.length > 0) {\n return maybeCode;\n }\n }\n const message =\n err && typeof err === \"object\" && \"message\" in err\n ? String((err as { message?: unknown }).message ?? \"\")\n : typeof err === \"string\"\n ? err\n : \"\";\n if (message.includes(\"Missing IR parameter\")) return \"tn.ir.missing_param\";\n if (message.includes(\"Unhandled IR switch value\")) return \"tn.ir.invalid_tag\";\n if (\n message.includes(\"invalid\") ||\n message.includes(\"overflow\") ||\n message.includes(\"negative size\")\n ) {\n return \"tn.ir.overflow\";\n }\n if (message.length > 0) return `tn.ir.runtime_error: ${message}`;\n return \"tn.ir.runtime_error\";\n}\n\n__tnRegisterFootprint(\"InstructionData\", (params) => InstructionData.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"InstructionData\", (buffer, params) => InstructionData.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"InstructionData\", (buffer) => { const result = InstructionData.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n\n/* ----- TYPE DEFINITION FOR MulticallArgs ----- */\n\nconst __tn_ir_MulticallArgs = {\n typeName: \"MulticallArgs\",\n root: { op: \"align\", alignment: 1, node: { op: \"add\", left: { op: \"align\", alignment: 2, node: { op: \"const\", value: 2n } }, right: { op: \"align\", alignment: 1, node: { op: \"sumOverArray\", count: { op: \"field\", param: \"calls.calls_count\" }, elementTypeName: \"InstructionData\", fieldName: \"calls\" } } } }\n} as const;\n\nexport class MulticallArgs {\n private view: DataView;\n private __tnFieldContext: Record<string, number | bigint> | null = null;\n private __tnParams: MulticallArgs.Params;\n\n private constructor(private buffer: Uint8Array, params?: MulticallArgs.Params, fieldContext?: Record<string, number | bigint>) {\n this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n this.__tnFieldContext = fieldContext ?? null;\n if (params) {\n this.__tnParams = params;\n } else {\n const derived = MulticallArgs.__tnExtractParams(this.view, buffer);\n if (!derived) {\n throw new Error(\"MulticallArgs: failed to derive dynamic parameters\");\n }\n this.__tnParams = derived.params;\n }\n }\n\n static __tnCreateView(buffer: Uint8Array, opts?: { params?: MulticallArgs.Params, fieldContext?: Record<string, number | bigint> }): MulticallArgs {\n if (!buffer || buffer.length === undefined) throw new Error(\"MulticallArgs.__tnCreateView requires a Uint8Array\");\n let params = opts?.params ?? null;\n if (!params) {\n const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n const derived = MulticallArgs.__tnExtractParams(view, buffer);\n if (!derived) throw new Error(\"MulticallArgs.__tnCreateView: failed to derive params\");\n params = derived.params;\n }\n const instance = new MulticallArgs(new Uint8Array(buffer), params, opts?.fieldContext);\n return instance;\n }\n\n dynamicParams(): MulticallArgs.Params {\n return this.__tnParams;\n }\n\n withFieldContext(context: Record<string, number | bigint>): this {\n this.__tnFieldContext = context;\n return this;\n }\n\n private __tnResolveFieldRef(path: string): number {\n const getterName = `get_${path.replace(/[.]/g, '_')}`;\n const getter = (this as any)[getterName];\n if (typeof getter === \"function\") {\n const value = getter.call(this);\n return typeof value === \"bigint\" ? __tnBigIntToNumber(value, \"MulticallArgs::__tnResolveFieldRef\") : value;\n }\n if (this.__tnFieldContext && Object.prototype.hasOwnProperty.call(this.__tnFieldContext, path)) {\n const contextValue = this.__tnFieldContext[path];\n return typeof contextValue === \"bigint\" ? __tnBigIntToNumber(contextValue, \"MulticallArgs::__tnResolveFieldRef\") : contextValue;\n }\n throw new Error(\"MulticallArgs: field reference '\" + path + \"' is not available; provide fieldContext when creating this view\");\n }\n\n static builder(): MulticallArgsBuilder {\n return new MulticallArgsBuilder();\n }\n\n static fromBuilder(builder: MulticallArgsBuilder): MulticallArgs | null {\n const buffer = builder.build();\n const params = builder.dynamicParams();\n return MulticallArgs.from_array(buffer, { params });\n }\n\n private static __tnExtractParams(view: DataView, buffer: Uint8Array): { params: MulticallArgs.Params; derived: Record<string, bigint> | null } | null {\n if (buffer.length < 2) {\n return null;\n }\n const __tnParam_calls_calls_count = __tnToBigInt(view.getUint16(0, true));\n const __tnExtractedParams = MulticallArgs.Params.fromValues({\n calls_calls_count: __tnParam_calls_calls_count,\n });\n return { params: __tnExtractedParams, derived: null };\n }\n\n get_calls_count(): number {\n const offset = 0;\n return this.view.getUint16(offset, true); /* little-endian */\n }\n\n set_calls_count(value: number): void {\n const offset = 0;\n this.view.setUint16(offset, value, true); /* little-endian */\n }\n\n get calls_count(): number {\n return this.get_calls_count();\n }\n\n set calls_count(value: number) {\n this.set_calls_count(value);\n }\n\n /** Returns the number of elements in the jagged array. */\n get_calls_length(): number {\n return this.__tnResolveFieldRef(\"calls_count\");\n }\n\n /** Returns the element at the given index, or null if out of bounds.\n * Note: This is O(n) as jagged arrays require sequential traversal. */\n get_calls_at(index: number): InstructionData | null {\n const count = this.get_calls_length();\n if (index < 0 || index >= count) {\n return null;\n }\n const offset = 2;\n let cursor = offset;\n for (let i = 0; i < index; i++) {\n const elem = InstructionData.from_array(this.buffer.subarray(cursor));\n if (!elem) {\n throw new Error(\"MulticallArgs: invalid element at index \" + i + \" in jagged array 'calls'\");\n }\n const validation = InstructionData.validate(this.buffer.subarray(cursor));\n if (!validation.ok || validation.consumed === undefined) {\n throw new Error(\"MulticallArgs: failed to get footprint for element at index \" + i);\n }\n cursor += validation.consumed;\n }\n return InstructionData.from_array(this.buffer.subarray(cursor));\n }\n\n /** Returns a generator over the jagged array elements.\n * This is more efficient than repeated calls to `get_calls_at()` for sequential access. */\n *callsIter(): Generator<InstructionData, void, unknown> {\n const count = this.get_calls_length();\n const offset = 2;\n let cursor = offset;\n for (let i = 0; i < count; i++) {\n const elem = InstructionData.from_array(this.buffer.subarray(cursor));\n if (!elem) {\n throw new Error(\"MulticallArgs: invalid element at index \" + i + \" in jagged array 'calls'\");\n }\n yield elem;\n const validation = InstructionData.validate(this.buffer.subarray(cursor));\n if (!validation.ok || validation.consumed === undefined) {\n throw new Error(\"MulticallArgs: failed to get footprint for element at index \" + i);\n }\n cursor += validation.consumed;\n }\n }\n\n get_calls(): InstructionData[] {\n return Array.from(this.callsIter());\n }\n\n set_calls(_value: InstructionData[]): void {\n throw new Error(\"MulticallArgs: jagged array 'calls' cannot be set in-place\");\n }\n\n /** Returns the total byte size of all elements in the jagged array. */\n get_calls_size(): number {\n const count = this.get_calls_length();\n const offset = 2;\n let cursor = offset;\n for (let i = 0; i < count; i++) {\n const elem = InstructionData.from_array(this.buffer.subarray(cursor));\n if (!elem) {\n throw new Error(\"MulticallArgs: invalid element at index \" + i + \" in jagged array 'calls'\");\n }\n const validation = InstructionData.validate(this.buffer.subarray(cursor));\n if (!validation.ok || validation.consumed === undefined) {\n throw new Error(\"MulticallArgs: failed to get footprint for element at index \" + i);\n }\n cursor += validation.consumed;\n }\n return cursor - offset;\n }\n\n get calls(): InstructionData[] {\n return this.get_calls();\n }\n\n set calls(value: InstructionData[]) {\n this.set_calls(value);\n }\n private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n return __tnEvalFootprint(__tn_ir_MulticallArgs.root, { params: __tnParams });\n }\n\n private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n return __tnValidateIrTree(__tn_ir_MulticallArgs, buffer, __tnParams);\n }\n\n static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n return this.__tnFootprintInternal(__tnParams);\n }\n\n static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n return this.__tnValidateInternal(buffer, __tnParams);\n }\n\n static footprintIr(calls_calls_count: number | bigint): bigint {\n const params = MulticallArgs.Params.fromValues({\n calls_calls_count: calls_calls_count,\n });\n return this.footprintIrFromParams(params);\n }\n\n private static __tnPackParams(params: MulticallArgs.Params): Record<string, bigint> {\n const record: Record<string, bigint> = Object.create(null);\n record[\"calls.calls_count\"] = params.calls_calls_count;\n return record;\n }\n\n static footprintIrFromParams(params: MulticallArgs.Params): bigint {\n const __tnParams = this.__tnPackParams(params);\n return this.__tnFootprintInternal(__tnParams);\n }\n\n static footprintFromParams(params: MulticallArgs.Params): number {\n const irResult = this.footprintIrFromParams(params);\n const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n if (__tnBigIntGreaterThan(irResult, maxSafe)) throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for MulticallArgs');\n return __tnBigIntToNumber(irResult, 'MulticallArgs::footprintFromParams');\n }\n\n static footprintFromValues(input: { calls_calls_count: number | bigint }): number {\n const params = MulticallArgs.params(input);\n return this.footprintFromParams(params);\n }\n\n static footprint(params: MulticallArgs.Params): number {\n return this.footprintFromParams(params);\n }\n\n static validate(buffer: Uint8Array, opts?: { params?: MulticallArgs.Params }): { ok: boolean; code?: string; consumed?: number; params?: MulticallArgs.Params } {\n if (!buffer || buffer.length === undefined) {\n return { ok: false, code: \"tn.invalid_buffer\" };\n }\n const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n let params = opts?.params ?? null;\n if (!params) {\n const extracted = this.__tnExtractParams(view, buffer);\n if (!extracted) return { ok: false, code: \"tn.param_extraction_failed\" };\n params = extracted.params;\n }\n const __tnParamsRec = this.__tnPackParams(params);\n const irResult = this.__tnValidateInternal(buffer, __tnParamsRec);\n if (!irResult.ok) {\n return { ok: false, code: irResult.code, consumed: irResult.consumed ? __tnBigIntToNumber(irResult.consumed, 'MulticallArgs::validate') : undefined, params };\n }\n const consumed = irResult.consumed ? __tnBigIntToNumber(irResult.consumed, 'MulticallArgs::validate') : undefined;\n return { ok: true, consumed, params };\n }\n\n static from_array(buffer: Uint8Array, opts?: { params?: MulticallArgs.Params }): MulticallArgs | null {\n if (!buffer || buffer.length === undefined) {\n return null;\n }\n const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n let params = opts?.params ?? null;\n if (!params) {\n const derived = this.__tnExtractParams(view, buffer);\n if (!derived) return null;\n params = derived.params;\n }\n const validation = this.validate(buffer, { params });\n if (!validation.ok) {\n return null;\n }\n const cached = validation.params ?? params;\n const state = new MulticallArgs(buffer, cached);\n return state;\n }\n\n\n}\n\nexport namespace MulticallArgs {\n export type Params = {\n /** ABI path: calls.calls_count */\n readonly calls_calls_count: bigint;\n };\n\n export const ParamKeys = Object.freeze({\n calls_calls_count: \"calls.calls_count\",\n } as const);\n\n export const Params = {\n fromValues(input: { calls_calls_count: number | bigint }): Params {\n return {\n calls_calls_count: __tnToBigInt(input.calls_calls_count),\n };\n },\n fromBuilder(source: { dynamicParams(): Params } | { params: Params } | Params): Params {\n if ((source as { dynamicParams?: () => Params }).dynamicParams) {\n return (source as { dynamicParams(): Params }).dynamicParams();\n }\n if ((source as { params?: Params }).params) {\n return (source as { params: Params }).params;\n }\n return source as Params;\n }\n };\n\n export function params(input: { calls_calls_count: number | bigint }): Params {\n return Params.fromValues(input);\n }\n}\n\nexport class MulticallArgsBuilder {\n private buffer: Uint8Array;\n private view: DataView;\n private __tnJagged_calls: Uint8Array[] | null = null;\n private __tnCachedParams: MulticallArgs.Params | null = null;\n private __tnLastBuffer: Uint8Array | null = null;\n private __tnLastParams: MulticallArgs.Params | null = null;\n\n constructor() {\n this.buffer = new Uint8Array(2);\n this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n }\n\n private __tnInvalidate(): void {\n this.__tnCachedParams = null;\n this.__tnLastBuffer = null;\n this.__tnLastParams = null;\n }\n\n set_calls_count(value: number): this {\n this.view.setUint16(0, value, true);\n this.__tnInvalidate();\n return this;\n }\n\n set_calls(values: readonly (InstructionData | __TnStructFieldInput)[]): this {\n const fragments: Uint8Array[] = [];\n for (let i = 0; i < values.length; i++) {\n const bytes = __tnResolveStructFieldInput(values[i] as __TnStructFieldInput, \"MulticallArgsBuilder::calls[\" + i + \"]\");\n const validation = __tnInvokeDynamicValidate(\"InstructionData\", bytes);\n if (!validation.ok || validation.consumed === undefined) throw new Error(\"MulticallArgsBuilder: field 'calls' element failed validation\");\n if (__tnBigIntToNumber(validation.consumed, \"MulticallArgsBuilder::calls\") !== bytes.length) throw new Error(\"MulticallArgsBuilder: field 'calls' element validation did not consume the full buffer\");\n fragments.push(bytes);\n }\n this.__tnJagged_calls = fragments;\n this.set_calls_count(fragments.length);\n this.__tnInvalidate();\n return this;\n }\n\n build(): Uint8Array {\n const params = this.__tnComputeParams();\n const fragments = this.__tnCollectFragments();\n const size = this.__tnComputeSize(fragments);\n const buffer = new Uint8Array(size);\n this.__tnWriteInto(buffer, fragments);\n this.__tnValidateOrThrow(buffer, params);\n return buffer;\n }\n\n buildInto(target: Uint8Array, offset = 0): Uint8Array {\n const params = this.__tnComputeParams();\n const fragments = this.__tnCollectFragments();\n const size = this.__tnComputeSize(fragments);\n if (target.length - offset < size) throw new Error(\"MulticallArgsBuilder: target buffer too small\");\n const slice = target.subarray(offset, offset + size);\n this.__tnWriteInto(slice, fragments);\n this.__tnValidateOrThrow(slice, params);\n return target;\n }\n\n finish(): MulticallArgs {\n const buffer = this.build();\n const params = this.__tnLastParams ?? this.__tnComputeParams();\n const view = MulticallArgs.from_array(buffer, { params });\n if (!view) throw new Error(\"MulticallArgsBuilder: failed to finalize view\");\n return view;\n }\n\n finishView(): MulticallArgs {\n return this.finish();\n }\n\n dynamicParams(): MulticallArgs.Params {\n return this.__tnComputeParams();\n }\n\n private __tnComputeParams(): MulticallArgs.Params {\n if (this.__tnCachedParams) return this.__tnCachedParams;\n const params = MulticallArgs.Params.fromValues({\n calls_calls_count: (() => { const fragments = this.__tnJagged_calls; if (!fragments) throw new Error(\"MulticallArgsBuilder: field 'calls' must be written before computing params\"); return __tnToBigInt(fragments.length); })(),\n });\n this.__tnCachedParams = params;\n return params;\n }\n\n private __tnCollectFragments(): Uint8Array[] {\n const fragments = this.__tnJagged_calls;\n if (!fragments) throw new Error(\"MulticallArgsBuilder: field 'calls' must be written before build\");\n return fragments;\n }\n\n private __tnComputeSize(fragments: readonly Uint8Array[]): number {\n let total = this.buffer.length;\n for (const fragment of fragments) total += fragment.length;\n return total;\n }\n\n private __tnWriteInto(target: Uint8Array, fragments: readonly Uint8Array[]): void {\n target.set(this.buffer, 0);\n let cursor = this.buffer.length;\n for (const fragment of fragments) {\n target.set(fragment, cursor);\n cursor += fragment.length;\n }\n }\n\n private __tnValidateOrThrow(buffer: Uint8Array, params: MulticallArgs.Params): void {\n const result = MulticallArgs.validate(buffer, { params });\n if (!result.ok) {\n throw new Error(`${ MulticallArgs }Builder: builder produced invalid buffer (code=${result.code ?? \"unknown\"})`);\n }\n this.__tnLastParams = result.params ?? params;\n this.__tnLastBuffer = buffer;\n }\n}\n\n__tnRegisterFootprint(\"MulticallArgs\", (params) => MulticallArgs.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"MulticallArgs\", (buffer, params) => MulticallArgs.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"MulticallArgs\", (buffer) => { const result = MulticallArgs.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n\n/* ----- TYPE DEFINITION FOR MulticallError ----- */\n\nconst __tn_ir_MulticallError = {\n typeName: \"MulticallError\",\n root: { op: \"const\", value: 8n }\n} as const;\n\nexport class MulticallError {\n private view: DataView;\n\n private constructor(private buffer: Uint8Array) {\n this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n }\n\n static __tnCreateView(buffer: Uint8Array, opts?: { fieldContext?: Record<string, number | bigint> }): MulticallError {\n if (!buffer || buffer.length === undefined) throw new Error(\"MulticallError.__tnCreateView requires a Uint8Array\");\n return new MulticallError(new Uint8Array(buffer));\n }\n\n static builder(): MulticallErrorBuilder {\n return new MulticallErrorBuilder();\n }\n\n static fromBuilder(builder: MulticallErrorBuilder): MulticallError | null {\n const buffer = builder.build();\n return MulticallError.from_array(buffer);\n }\n\n get_code(): bigint {\n const offset = 0;\n return this.view.getBigUint64(offset, true); /* little-endian */\n }\n\n set_code(value: bigint): void {\n const offset = 0;\n this.view.setBigUint64(offset, value, true); /* little-endian */\n }\n\n get code(): bigint {\n return this.get_code();\n }\n\n set code(value: bigint) {\n this.set_code(value);\n }\n\n private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n return __tnEvalFootprint(__tn_ir_MulticallError.root, { params: __tnParams });\n }\n\n private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n return __tnValidateIrTree(__tn_ir_MulticallError, buffer, __tnParams);\n }\n\n static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n return this.__tnFootprintInternal(__tnParams);\n }\n\n static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n return this.__tnValidateInternal(buffer, __tnParams);\n }\n\n static footprintIr(): bigint {\n return this.__tnFootprintInternal(Object.create(null));\n }\n\n static footprint(): number {\n const irResult = this.footprintIr();\n const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n if (__tnBigIntGreaterThan(irResult, maxSafe)) {\n throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for MulticallError');\n }\n return __tnBigIntToNumber(irResult, 'MulticallError::footprint');\n }\n\n static validate(buffer: Uint8Array, _opts?: { params?: never }): { ok: boolean; code?: string; consumed?: number } {\n if (buffer.length < 8) return { ok: false, code: \"tn.buffer_too_small\", consumed: 8 };\n return { ok: true, consumed: 8 };\n }\n\n static new(code: bigint): MulticallError {\n const buffer = new Uint8Array(8);\n const view = new DataView(buffer.buffer);\n\n let offset = 0;\n view.setBigUint64(0, code, true); /* code (little-endian) */\n\n return new MulticallError(buffer);\n }\n\n static from_array(buffer: Uint8Array): MulticallError | null {\n if (!buffer || buffer.length === undefined) {\n return null;\n }\n const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n const validation = this.validate(buffer);\n if (!validation.ok) {\n return null;\n }\n return new MulticallError(buffer);\n }\n\n}\n\nexport class MulticallErrorBuilder {\n private buffer: Uint8Array;\n private view: DataView;\n\n constructor() {\n this.buffer = new Uint8Array(8);\n this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n }\n\n set_code(value: number): this {\n const cast = __tnToBigInt(value);\n this.view.setBigUint64(0, cast, true);\n return this;\n }\n\n build(): Uint8Array {\n return this.buffer.slice();\n }\n\n buildInto(target: Uint8Array, offset = 0): Uint8Array {\n if (target.length - offset < this.buffer.length) throw new Error(\"target buffer too small\");\n target.set(this.buffer, offset);\n return target;\n }\n\n finish(): MulticallError {\n const view = MulticallError.from_array(this.buffer.slice());\n if (!view) throw new Error(\"failed to build MulticallError\");\n return view;\n }\n}\n\n__tnRegisterFootprint(\"MulticallError\", (params) => MulticallError.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"MulticallError\", (buffer, params) => MulticallError.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"MulticallError\", (buffer) => { const result = MulticallError.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n\n","import { encodeAddress } from '@thru/sdk/helpers';\nimport {\n InstructionData,\n InstructionDataBuilder,\n} from './abi/thru/common/primitives/types';\nimport {\n MulticallArgs,\n MulticallArgsBuilder,\n} from './abi/thru/program/multicall/types';\n\nexport {\n InstructionData,\n InstructionDataBuilder,\n} from './abi/thru/common/primitives/types';\nexport {\n MulticallArgs,\n MulticallArgsBuilder,\n MulticallError,\n} from './abi/thru/program/multicall/types';\n\nexport type MulticallCall = {\n programIdx: number;\n instructionData: Uint8Array;\n};\n\nexport const MULTICALL_PROGRAM_PUBKEY = new Uint8Array([\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9,\n]);\n\nexport const MULTICALL_PROGRAM_ADDRESS = encodeAddress(MULTICALL_PROGRAM_PUBKEY);\n\nfunction assertProgramIdx(programIdx: number): void {\n if (!Number.isInteger(programIdx) || programIdx < 0 || programIdx > 0xffff) {\n throw new Error('programIdx must be 0-65535');\n }\n}\n\nfunction buildInstructionData(call: MulticallCall): Uint8Array {\n assertProgramIdx(call.programIdx);\n if (!(call.instructionData instanceof Uint8Array)) {\n throw new Error('instructionData must be a Uint8Array');\n }\n\n const builder = new InstructionDataBuilder();\n builder.set_program_idx(call.programIdx);\n builder.data().write(call.instructionData).finish();\n const buffer = builder.build();\n const view = InstructionData.from_array(buffer);\n if (!view) {\n throw new Error('generated InstructionData failed validation');\n }\n return buffer;\n}\n\nexport function buildMulticallInstruction(calls: MulticallCall[]): Uint8Array {\n if (!Array.isArray(calls)) throw new Error('calls must be an array');\n if (calls.length > 0xffff) throw new Error('calls length must be 0-65535');\n\n const encodedCalls = calls.map(buildInstructionData);\n const output = new MulticallArgsBuilder().set_calls(encodedCalls).build();\n\n const validation = MulticallArgs.validate(output);\n if (!validation.ok || validation.consumed !== output.length) {\n throw new Error(\n `generated MulticallArgs failed validation (code=${validation.code ?? 'unknown'})`\n );\n }\n\n return output;\n}\n"]}
|