@thru/programs 0.2.27 → 0.2.28
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/passkey-manager/constants.ts","../../src/passkey-manager/abi/thru/common/primitives/types.ts","../../src/passkey-manager/abi/thru/blockchain/state_proof/types.ts","../../src/passkey-manager/abi/thru/program/passkey_manager/types.ts","../../src/passkey-manager/instructions/create.ts","../../src/passkey-manager/target-instruction.ts","../../src/passkey-manager/instructions/validate.ts","../../src/passkey-manager/instructions/transfer.ts","../../src/passkey-manager/instructions/add-authority.ts","../../src/passkey-manager/instructions/remove-authority.ts","../../src/passkey-manager/instructions/register-credential.ts","../../src/passkey-manager/challenge.ts","../../src/passkey-manager/seeds.ts","../../src/passkey-manager/encoding.ts","../../src/passkey-manager/context.ts","../../src/passkey-manager/accounts.ts","../../src/passkey-manager/authority.ts","../../src/passkey-manager/crypto.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","StateProof","__tnCreateVariantSelector","ValidateArgs","PasskeyEvent","PasskeyInstruction","decodeAddress","sharedHexToBytes","encodeAddress"],"mappings":"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","file":"index.cjs","sourcesContent":["export const PASSKEY_MANAGER_PROGRAM_ADDRESS =\n 'taUDdQyFxvM5i0HFRkEK3W45kWLyblAHSnMg4zplgUnz6Z';\n\n// Instruction discriminants\nexport const INSTRUCTION_CREATE = 0x00;\nexport const INSTRUCTION_VALIDATE = 0x01;\nexport const INSTRUCTION_TRANSFER = 0x02;\nexport const INSTRUCTION_ADD_AUTHORITY = 0x04;\nexport const INSTRUCTION_REMOVE_AUTHORITY = 0x05;\nexport const INSTRUCTION_REGISTER_CREDENTIAL = 0x06;\n\n// Authority tags\nexport const AUTHORITY_TAG_PASSKEY = 1;\nexport const AUTHORITY_TAG_PUBKEY = 2;\n","/* Auto-generated TypeScript code */\n/* WARNING: Do not modify this file directly. It is generated from ABI definitions. */\n\ntype __TnIrNode =\n | { readonly op: \"zero\" }\n | { readonly op: \"const\"; readonly value: bigint }\n | { readonly op: \"field\"; readonly param: string }\n | {\n readonly op: \"add\";\n readonly left: __TnIrNode;\n readonly right: __TnIrNode;\n }\n | {\n readonly op: \"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 { Hash, Pubkey } from \"../../common/primitives/types\";\n\ntype __TnIrNode =\n | { readonly op: \"zero\" }\n | { readonly op: \"const\"; readonly value: bigint }\n | { readonly op: \"field\"; readonly param: string }\n | {\n readonly op: \"add\";\n readonly left: __TnIrNode;\n readonly right: __TnIrNode;\n }\n | {\n readonly op: \"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(\"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__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 StateProofHeader ----- */\n\nconst __tn_ir_StateProofHeader = {\n typeName: \"StateProofHeader\",\n root: { op: \"const\", value: 40n }\n} as const;\n\nexport class StateProofHeader {\n private view: DataView;\n\n private constructor(private buffer: Uint8Array) {\n this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n }\n\n static __tnCreateView(buffer: Uint8Array, opts?: { fieldContext?: Record<string, number | bigint> }): StateProofHeader {\n if (!buffer || buffer.length === undefined) throw new Error(\"StateProofHeader.__tnCreateView requires a Uint8Array\");\n return new StateProofHeader(new Uint8Array(buffer));\n }\n\n static builder(): StateProofHeaderBuilder {\n return new StateProofHeaderBuilder();\n }\n\n static fromBuilder(builder: StateProofHeaderBuilder): StateProofHeader | null {\n const buffer = builder.build();\n return StateProofHeader.from_array(buffer);\n }\n\n get_type_slot(): bigint {\n const offset = 0;\n return this.view.getBigUint64(offset, true); /* little-endian */\n }\n\n set_type_slot(value: bigint): void {\n const offset = 0;\n this.view.setBigUint64(offset, value, true); /* little-endian */\n }\n\n get type_slot(): bigint {\n return this.get_type_slot();\n }\n\n set type_slot(value: bigint) {\n this.set_type_slot(value);\n }\n\n get_path_bitset(): Hash {\n const offset = 8;\n const slice = this.buffer.subarray(offset, offset + 32);\n return Hash.from_array(slice)!;\n }\n\n set_path_bitset(value: Hash): void {\n /* Copy bytes from source struct to this field */\n const sourceBytes = (value as any).buffer as Uint8Array;\n const offset = 8;\n this.buffer.set(sourceBytes, offset);\n }\n\n get path_bitset(): Hash {\n return this.get_path_bitset();\n }\n\n set path_bitset(value: Hash) {\n this.set_path_bitset(value);\n }\n\n private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n return __tnEvalFootprint(__tn_ir_StateProofHeader.root, { params: __tnParams });\n }\n\n private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n return __tnValidateIrTree(__tn_ir_StateProofHeader, buffer, __tnParams);\n }\n\n static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n return this.__tnFootprintInternal(__tnParams);\n }\n\n static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n return this.__tnValidateInternal(buffer, __tnParams);\n }\n\n static footprintIr(): bigint {\n return this.__tnFootprintInternal(Object.create(null));\n }\n\n static footprint(): number {\n const irResult = this.footprintIr();\n const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n if (__tnBigIntGreaterThan(irResult, maxSafe)) {\n throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for StateProofHeader');\n }\n return __tnBigIntToNumber(irResult, 'StateProofHeader::footprint');\n }\n\n static validate(buffer: Uint8Array, _opts?: { params?: never }): { ok: boolean; code?: string; consumed?: number } {\n if (buffer.length < 40) return { ok: false, code: \"tn.buffer_too_small\", consumed: 40 };\n return { ok: true, consumed: 40 };\n }\n\n static from_array(buffer: Uint8Array): StateProofHeader | null {\n if (!buffer || buffer.length === undefined) {\n return null;\n }\n const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n const validation = this.validate(buffer);\n if (!validation.ok) {\n return null;\n }\n return new StateProofHeader(buffer);\n }\n\n}\n\nexport class StateProofHeaderBuilder {\n private buffer: Uint8Array;\n private view: DataView;\n\n constructor() {\n this.buffer = new Uint8Array(40);\n this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n }\n\n set_type_slot(value: number): this {\n const cast = __tnToBigInt(value);\n this.view.setBigUint64(0, cast, true);\n return this;\n }\n\n set_path_bitset(value: Uint8Array): this {\n if (value.length !== 32) throw new Error(\"path_bitset expects 32 bytes\");\n this.buffer.set(value, 8);\n return this;\n }\n\n build(): Uint8Array {\n return this.buffer.slice();\n }\n\n buildInto(target: Uint8Array, offset = 0): Uint8Array {\n if (target.length - offset < this.buffer.length) throw new Error(\"target buffer too small\");\n target.set(this.buffer, offset);\n return target;\n }\n\n finish(): StateProofHeader {\n const view = StateProofHeader.from_array(this.buffer.slice());\n if (!view) throw new Error(\"failed to build StateProofHeader\");\n return view;\n }\n}\n\n__tnRegisterFootprint(\"StateProofHeader\", (params) => StateProofHeader.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"StateProofHeader\", (buffer, params) => StateProofHeader.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"StateProofHeader\", (buffer) => { const result = StateProofHeader.validate(buffer); return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed) }; });\n\n/* ----- TYPE DEFINITION FOR StateProof ----- */\n\nconst __tn_ir_StateProof = {\n typeName: \"StateProof\",\n root: { op: \"align\", alignment: 1, node: { op: \"add\", left: { op: \"align\", alignment: 1, node: { op: \"const\", value: 40n } }, right: { op: \"align\", alignment: 1, node: { op: \"field\", param: \"proof_body.payload_size\" } } } }\n} as const;\n\nexport class StateProof_proof_body_existing_Inner {\n private view: DataView;\n private __tnFieldContext: Record<string, number | bigint> | null = null;\n\n private constructor(private buffer: Uint8Array, fieldContext?: Record<string, number | bigint>) {\n this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n this.__tnFieldContext = fieldContext ?? null;\n }\n\n static __tnCreateView(buffer: Uint8Array, opts?: { fieldContext?: Record<string, number | bigint> }): StateProof_proof_body_existing_Inner {\n if (!buffer || buffer.length === undefined) throw new Error(\"StateProof_proof_body_existing_Inner.__tnCreateView requires a Uint8Array\");\n return new StateProof_proof_body_existing_Inner(new Uint8Array(buffer), opts?.fieldContext);\n }\n\n withFieldContext(context: Record<string, number | bigint>): this {\n this.__tnFieldContext = context;\n return this;\n }\n\n private __tnResolveFieldRef(path: string): number {\n const getterName = `get_${path.replace(/[.]/g, '_')}`;\n const getter = (this as any)[getterName];\n if (typeof getter === \"function\") {\n const value = getter.call(this);\n return typeof value === \"bigint\" ? __tnBigIntToNumber(value, \"StateProof_proof_body_existing_Inner::__tnResolveFieldRef\") : value;\n }\n if (this.__tnFieldContext && Object.prototype.hasOwnProperty.call(this.__tnFieldContext, path)) {\n const contextValue = this.__tnFieldContext[path];\n return typeof contextValue === \"bigint\" ? __tnBigIntToNumber(contextValue, \"StateProof_proof_body_existing_Inner::__tnResolveFieldRef\") : contextValue;\n }\n throw new Error(\"StateProof_proof_body_existing_Inner: field reference '\" + path + \"' is not available; provide fieldContext when creating this view\");\n }\n\n get_sibling_hashes_length(): number {\n return ((__tnPopcount(this.__tnResolveFieldRef(\"hdr.path_bitset.bytes.0\")) + __tnPopcount(this.__tnResolveFieldRef(\"hdr.path_bitset.bytes.1\"))) + (__tnPopcount(this.__tnResolveFieldRef(\"hdr.path_bitset.bytes.2\")) + __tnPopcount(this.__tnResolveFieldRef(\"hdr.path_bitset.bytes.3\"))));\n }\n\n get_sibling_hashes_at(index: number): Hash {\n const offset = 0;\n const slice = this.buffer.subarray((offset + index * 32), (offset + (index + 1) * 32));\n return Hash.from_array(slice)!;\n }\n\n get_sibling_hashes(): Hash[] {\n const len = this.get_sibling_hashes_length();\n const result: Hash[] = [];\n for (let i = 0; i < len; i++) {\n result.push(this.get_sibling_hashes_at(i));\n }\n return result;\n }\n\n set_sibling_hashes_at(index: number, value: Hash): void {\n const offset = 0;\n const slice = this.buffer.subarray(offset + index * 32, offset + (index + 1) * 32);\n slice.set(value['buffer']);\n }\n\n set_sibling_hashes(value: Hash[]): void {\n const len = Math.min(this.get_sibling_hashes_length(), value.length);\n for (let i = 0; i < len; i++) {\n this.set_sibling_hashes_at(i, value[i]);\n }\n }\n\n get sibling_hashes(): Hash[] {\n return this.get_sibling_hashes();\n }\n\n set sibling_hashes(value: Hash[]) {\n this.set_sibling_hashes(value);\n }\n\n}\n\nexport class StateProof_proof_body_updating_Inner {\n private view: DataView;\n private __tnFieldContext: Record<string, number | bigint> | null = null;\n\n private constructor(private buffer: Uint8Array, fieldContext?: Record<string, number | bigint>) {\n this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n this.__tnFieldContext = fieldContext ?? null;\n }\n\n static __tnCreateView(buffer: Uint8Array, opts?: { fieldContext?: Record<string, number | bigint> }): StateProof_proof_body_updating_Inner {\n if (!buffer || buffer.length === undefined) throw new Error(\"StateProof_proof_body_updating_Inner.__tnCreateView requires a Uint8Array\");\n return new StateProof_proof_body_updating_Inner(new Uint8Array(buffer), opts?.fieldContext);\n }\n\n withFieldContext(context: Record<string, number | bigint>): this {\n this.__tnFieldContext = context;\n return this;\n }\n\n private __tnResolveFieldRef(path: string): number {\n const getterName = `get_${path.replace(/[.]/g, '_')}`;\n const getter = (this as any)[getterName];\n if (typeof getter === \"function\") {\n const value = getter.call(this);\n return typeof value === \"bigint\" ? __tnBigIntToNumber(value, \"StateProof_proof_body_updating_Inner::__tnResolveFieldRef\") : value;\n }\n if (this.__tnFieldContext && Object.prototype.hasOwnProperty.call(this.__tnFieldContext, path)) {\n const contextValue = this.__tnFieldContext[path];\n return typeof contextValue === \"bigint\" ? __tnBigIntToNumber(contextValue, \"StateProof_proof_body_updating_Inner::__tnResolveFieldRef\") : contextValue;\n }\n throw new Error(\"StateProof_proof_body_updating_Inner: field reference '\" + path + \"' is not available; provide fieldContext when creating this view\");\n }\n\n get_existing_leaf_hash(): Hash {\n const offset = 0;\n const slice = this.buffer.subarray(offset, offset + 32);\n return Hash.from_array(slice)!;\n }\n\n set_existing_leaf_hash(value: Hash): void {\n /* Copy bytes from source struct to this field */\n const sourceBytes = (value as any).buffer as Uint8Array;\n const offset = 0;\n this.buffer.set(sourceBytes, offset);\n }\n\n get existing_leaf_hash(): Hash {\n return this.get_existing_leaf_hash();\n }\n\n set existing_leaf_hash(value: Hash) {\n this.set_existing_leaf_hash(value);\n }\n\n get_sibling_hashes_length(): number {\n return ((__tnPopcount(this.__tnResolveFieldRef(\"hdr.path_bitset.bytes.0\")) + __tnPopcount(this.__tnResolveFieldRef(\"hdr.path_bitset.bytes.1\"))) + (__tnPopcount(this.__tnResolveFieldRef(\"hdr.path_bitset.bytes.2\")) + __tnPopcount(this.__tnResolveFieldRef(\"hdr.path_bitset.bytes.3\"))));\n }\n\n get_sibling_hashes_at(index: number): Hash {\n const offset = 32;\n const slice = this.buffer.subarray((offset + index * 32), (offset + (index + 1) * 32));\n return Hash.from_array(slice)!;\n }\n\n get_sibling_hashes(): Hash[] {\n const len = this.get_sibling_hashes_length();\n const result: Hash[] = [];\n for (let i = 0; i < len; i++) {\n result.push(this.get_sibling_hashes_at(i));\n }\n return result;\n }\n\n set_sibling_hashes_at(index: number, value: Hash): void {\n const offset = 32;\n const slice = this.buffer.subarray(offset + index * 32, offset + (index + 1) * 32);\n slice.set(value['buffer']);\n }\n\n set_sibling_hashes(value: Hash[]): void {\n const len = Math.min(this.get_sibling_hashes_length(), value.length);\n for (let i = 0; i < len; i++) {\n this.set_sibling_hashes_at(i, value[i]);\n }\n }\n\n get sibling_hashes(): Hash[] {\n return this.get_sibling_hashes();\n }\n\n set sibling_hashes(value: Hash[]) {\n this.set_sibling_hashes(value);\n }\n\n}\n\nexport class StateProof_proof_body_creation_Inner {\n private view: DataView;\n private __tnFieldContext: Record<string, number | bigint> | null = null;\n\n private constructor(private buffer: Uint8Array, fieldContext?: Record<string, number | bigint>) {\n this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n this.__tnFieldContext = fieldContext ?? null;\n }\n\n static __tnCreateView(buffer: Uint8Array, opts?: { fieldContext?: Record<string, number | bigint> }): StateProof_proof_body_creation_Inner {\n if (!buffer || buffer.length === undefined) throw new Error(\"StateProof_proof_body_creation_Inner.__tnCreateView requires a Uint8Array\");\n return new StateProof_proof_body_creation_Inner(new Uint8Array(buffer), opts?.fieldContext);\n }\n\n withFieldContext(context: Record<string, number | bigint>): this {\n this.__tnFieldContext = context;\n return this;\n }\n\n private __tnResolveFieldRef(path: string): number {\n const getterName = `get_${path.replace(/[.]/g, '_')}`;\n const getter = (this as any)[getterName];\n if (typeof getter === \"function\") {\n const value = getter.call(this);\n return typeof value === \"bigint\" ? __tnBigIntToNumber(value, \"StateProof_proof_body_creation_Inner::__tnResolveFieldRef\") : value;\n }\n if (this.__tnFieldContext && Object.prototype.hasOwnProperty.call(this.__tnFieldContext, path)) {\n const contextValue = this.__tnFieldContext[path];\n return typeof contextValue === \"bigint\" ? __tnBigIntToNumber(contextValue, \"StateProof_proof_body_creation_Inner::__tnResolveFieldRef\") : contextValue;\n }\n throw new Error(\"StateProof_proof_body_creation_Inner: field reference '\" + path + \"' is not available; provide fieldContext when creating this view\");\n }\n\n get_existing_leaf_pubkey(): Pubkey {\n const offset = 0;\n const slice = this.buffer.subarray(offset, offset + 32);\n return Pubkey.from_array(slice)!;\n }\n\n set_existing_leaf_pubkey(value: Pubkey): void {\n /* Copy bytes from source struct to this field */\n const sourceBytes = (value as any).buffer as Uint8Array;\n const offset = 0;\n this.buffer.set(sourceBytes, offset);\n }\n\n get existing_leaf_pubkey(): Pubkey {\n return this.get_existing_leaf_pubkey();\n }\n\n set existing_leaf_pubkey(value: Pubkey) {\n this.set_existing_leaf_pubkey(value);\n }\n\n get_existing_leaf_hash(): Hash {\n const offset = 32;\n const slice = this.buffer.subarray(offset, offset + 32);\n return Hash.from_array(slice)!;\n }\n\n set_existing_leaf_hash(value: Hash): void {\n /* Copy bytes from source struct to this field */\n const sourceBytes = (value as any).buffer as Uint8Array;\n const offset = 32;\n this.buffer.set(sourceBytes, offset);\n }\n\n get existing_leaf_hash(): Hash {\n return this.get_existing_leaf_hash();\n }\n\n set existing_leaf_hash(value: Hash) {\n this.set_existing_leaf_hash(value);\n }\n\n get_sibling_hashes_length(): number {\n return ((__tnPopcount(this.__tnResolveFieldRef(\"hdr.path_bitset.bytes.0\")) + __tnPopcount(this.__tnResolveFieldRef(\"hdr.path_bitset.bytes.1\"))) + (__tnPopcount(this.__tnResolveFieldRef(\"hdr.path_bitset.bytes.2\")) + __tnPopcount(this.__tnResolveFieldRef(\"hdr.path_bitset.bytes.3\"))));\n }\n\n get_sibling_hashes_at(index: number): Hash {\n const offset = 64;\n const slice = this.buffer.subarray((offset + index * 32), (offset + (index + 1) * 32));\n return Hash.from_array(slice)!;\n }\n\n get_sibling_hashes(): Hash[] {\n const len = this.get_sibling_hashes_length();\n const result: Hash[] = [];\n for (let i = 0; i < len; i++) {\n result.push(this.get_sibling_hashes_at(i));\n }\n return result;\n }\n\n set_sibling_hashes_at(index: number, value: Hash): void {\n const offset = 64;\n const slice = this.buffer.subarray(offset + index * 32, offset + (index + 1) * 32);\n slice.set(value['buffer']);\n }\n\n set_sibling_hashes(value: Hash[]): void {\n const len = Math.min(this.get_sibling_hashes_length(), value.length);\n for (let i = 0; i < len; i++) {\n this.set_sibling_hashes_at(i, value[i]);\n }\n }\n\n get sibling_hashes(): Hash[] {\n return this.get_sibling_hashes();\n }\n\n set sibling_hashes(value: Hash[]) {\n this.set_sibling_hashes(value);\n }\n\n}\n\nexport class StateProof_proof_body_Inner {\n private view: DataView;\n private __tnFieldContext: Record<string, number | bigint> | null = null;\n private constructor(private buffer: Uint8Array, private descriptor: __TnVariantDescriptor | null, fieldContext?: Record<string, number | bigint>) {\n this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n this.__tnFieldContext = fieldContext ?? null;\n }\n\n static __tnCreate(payload: Uint8Array, descriptor: __TnVariantDescriptor | null, fieldContext?: Record<string, number | bigint>): StateProof_proof_body_Inner {\n return new StateProof_proof_body_Inner(new Uint8Array(payload), descriptor, fieldContext);\n }\n\n bytes(): Uint8Array {\n return new Uint8Array(this.buffer);\n }\n\n variant(): __TnVariantDescriptor | null {\n return this.descriptor;\n }\n\n asExisting(): StateProof_proof_body_existing_Inner | null {\n if (!this.descriptor || this.descriptor.tag !== 0) return null;\n return StateProof_proof_body_existing_Inner.__tnCreateView(new Uint8Array(this.buffer), { fieldContext: this.__tnFieldContext ?? undefined });\n }\n\n asUpdating(): StateProof_proof_body_updating_Inner | null {\n if (!this.descriptor || this.descriptor.tag !== 1) return null;\n return StateProof_proof_body_updating_Inner.__tnCreateView(new Uint8Array(this.buffer), { fieldContext: this.__tnFieldContext ?? undefined });\n }\n\n asCreation(): StateProof_proof_body_creation_Inner | null {\n if (!this.descriptor || this.descriptor.tag !== 2) return null;\n return StateProof_proof_body_creation_Inner.__tnCreateView(new Uint8Array(this.buffer), { fieldContext: this.__tnFieldContext ?? undefined });\n }\n\n}\n\nexport class StateProof {\n private view: DataView;\n private __tnFieldContext: Record<string, number | bigint> | null = null;\n private static readonly __tnFieldOffset_proof_body = 40;\n private __tnParams: StateProof.Params;\n private __tnDerivedParams: Record<string, bigint> | null = null;\n\n private constructor(private buffer: Uint8Array, params?: StateProof.Params, fieldContext?: Record<string, number | bigint>) {\n this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n this.__tnFieldContext = fieldContext ?? null;\n if (params) {\n this.__tnParams = params;\n } else {\n const derived = StateProof.__tnExtractParams(this.view, buffer);\n if (!derived) {\n throw new Error(\"StateProof: failed to derive dynamic parameters\");\n }\n this.__tnParams = derived.params;\n this.__tnDerivedParams = derived.derived;\n }\n }\n\n static __tnCreateView(buffer: Uint8Array, opts?: { params?: StateProof.Params, fieldContext?: Record<string, number | bigint> }): StateProof {\n if (!buffer || buffer.length === undefined) throw new Error(\"StateProof.__tnCreateView requires a Uint8Array\");\n let params = opts?.params ?? null;\n let derivedRecord: Record<string, bigint> | null = null;\n if (!params) {\n const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n const derived = StateProof.__tnExtractParams(view, buffer);\n if (!derived) throw new Error(\"StateProof.__tnCreateView: failed to derive params\");\n params = derived.params;\n derivedRecord = derived.derived;\n }\n const instance = new StateProof(new Uint8Array(buffer), params, opts?.fieldContext);\n if (derivedRecord) instance.__tnDerivedParams = derivedRecord;\n return instance;\n }\n\n dynamicParams(): StateProof.Params {\n return this.__tnParams;\n }\n\n withFieldContext(context: Record<string, number | bigint>): this {\n this.__tnFieldContext = context;\n return this;\n }\n\n private __tnResolveFieldRef(path: string): number {\n const getterName = `get_${path.replace(/[.]/g, '_')}`;\n const getter = (this as any)[getterName];\n if (typeof getter === \"function\") {\n const value = getter.call(this);\n return typeof value === \"bigint\" ? __tnBigIntToNumber(value, \"StateProof::__tnResolveFieldRef\") : value;\n }\n if (this.__tnFieldContext && Object.prototype.hasOwnProperty.call(this.__tnFieldContext, path)) {\n const contextValue = this.__tnFieldContext[path];\n return typeof contextValue === \"bigint\" ? __tnBigIntToNumber(contextValue, \"StateProof::__tnResolveFieldRef\") : contextValue;\n }\n throw new Error(\"StateProof: field reference '\" + path + \"' is not available; provide fieldContext when creating this view\");\n }\n\n static builder(): StateProofBuilder {\n return new StateProofBuilder();\n }\n\n static fromBuilder(builder: StateProofBuilder): StateProof | null {\n const buffer = builder.build();\n const params = builder.dynamicParams();\n return StateProof.from_array(buffer, { params });\n }\n\n static readonly proof_bodyVariantDescriptors = Object.freeze([\n {\n name: \"existing\",\n tag: 0,\n payloadSize: null,\n payloadType: \"StateProof::proof_body::existing\",\n createPayloadBuilder: () => null,\n },\n {\n name: \"updating\",\n tag: 1,\n payloadSize: null,\n payloadType: \"StateProof::proof_body::updating\",\n createPayloadBuilder: () => null,\n },\n {\n name: \"creation\",\n tag: 2,\n payloadSize: null,\n payloadType: \"StateProof::proof_body::creation\",\n createPayloadBuilder: () => null,\n },\n ] as const);\n\n static __tnComputeSequentialLayout(view: DataView, buffer: Uint8Array): { params: Record<string, bigint> | null; offsets: Record<string, number> | null; derived: Record<string, bigint> | null } | null {\n const derived: Record<string, bigint> = Object.create(null);\n const __tnLength = buffer.length;\n let __tnParamSeq_proof_body_payload_size: bigint | null = null;\n let __tnCursorMutable = 0;\n if (__tnLength < 8) return null;\n const __tnRef_hdr_type_slot = view.getBigUint64(0, true);\n if (__tnCursorMutable + 40 > __tnLength) return null;\n __tnCursorMutable += 40;\n const __tnEnumTagValue_proof_body = Math.trunc(Number(((__tnRef_hdr_type_slot >> 62n) & 3n)));\n if (!Number.isFinite(__tnEnumTagValue_proof_body)) return null;\n let __tnEnumSize_proof_body = 0;\n switch (Number(__tnEnumTagValue_proof_body)) {\n case 0: break;\n case 1: break;\n case 2: break;\n default: return null;\n }\n if (__tnCursorMutable > __tnLength) return null;\n __tnEnumSize_proof_body = __tnLength - __tnCursorMutable;\n __tnCursorMutable = __tnLength;\n derived[\"StateProof__proof_body_computed_tag\"] = __tnToBigInt(__tnEnumTagValue_proof_body);\n __tnParamSeq_proof_body_payload_size = __tnToBigInt(__tnEnumSize_proof_body);\n const params: Record<string, bigint> = Object.create(null);\n if (__tnParamSeq_proof_body_payload_size === null) return null;\n params[\"proof_body_payload_size\"] = __tnParamSeq_proof_body_payload_size as bigint;\n return { params, offsets: null, derived: derived };\n }\n\n private static __tnExtractParams(view: DataView, buffer: Uint8Array): { params: StateProof.Params; derived: Record<string, bigint> | null } | null {\n if (buffer.length < 8) {\n return null;\n }\n const __tnParam_proof_body_hdr_type_slot = __tnToBigInt(view.getBigUint64(0, true));\n const __tnLayout = StateProof.__tnComputeSequentialLayout(view, buffer);\n if (!__tnLayout || !__tnLayout.params) return null;\n const __tnSeqParams = __tnLayout.params;\n const __tnParamSeq_proof_body_payload_size = __tnSeqParams[\"proof_body_payload_size\"];\n if (__tnParamSeq_proof_body_payload_size === undefined) return null;\n const __tnExtractedParams = StateProof.Params.fromValues({\n proof_body_hdr_type_slot: __tnParam_proof_body_hdr_type_slot,\n proof_body_payload_size: __tnParamSeq_proof_body_payload_size as bigint,\n });\n return { params: __tnExtractedParams, derived: (__tnLayout && __tnLayout.derived ? __tnLayout.derived : null) };\n }\n\n private __tnEnsureDerivedParams(): Record<string, bigint> | null {\n if (this.__tnDerivedParams) return this.__tnDerivedParams;\n const layout = StateProof.__tnComputeSequentialLayout(this.view, this.buffer);\n if (!layout || !layout.derived) return null;\n this.__tnDerivedParams = layout.derived;\n return this.__tnDerivedParams;\n }\n\n private __tnReadDerivedParam(key: string): number | null {\n const params = this.__tnEnsureDerivedParams();\n if (!params) return null;\n const value = params[key];\n if (value === undefined) return null;\n return __tnBigIntToNumber(value, \"StateProof::__tnReadDerivedParam\");\n }\n\n get_hdr(): StateProofHeader {\n const offset = 0;\n const slice = this.buffer.subarray(offset, offset + 40);\n return StateProofHeader.from_array(slice)!;\n }\n\n set_hdr(value: StateProofHeader): void {\n /* Copy bytes from source struct to this field */\n const sourceBytes = (value as any).buffer as Uint8Array;\n const offset = 0;\n this.buffer.set(sourceBytes, offset);\n }\n\n get hdr(): StateProofHeader {\n return this.get_hdr();\n }\n\n set hdr(value: StateProofHeader) {\n this.set_hdr(value);\n }\n\n get_proof_body_computed_tag(): number {\n let tag = this.__tnReadDerivedParam(\"StateProof__proof_body_computed_tag\");\n if (tag === null) {\n tag = (((this.__tnResolveFieldRef(\"hdr.type_slot\") >> 62) & 3));\n }\n return tag;\n }\n\n proofBodyVariant(): typeof StateProof.proof_bodyVariantDescriptors[number] | null {\n const tag = this.get_proof_body_computed_tag();\n return StateProof.proof_bodyVariantDescriptors.find((variant) => variant.tag === tag) ?? null;\n }\n\n proof_body(): StateProof_proof_body_Inner {\n const descriptor = this.proofBodyVariant();\n if (!descriptor) throw new Error(\"StateProof: unknown proof_body variant\");\n const offset = StateProof.__tnFieldOffset_proof_body;\n const remaining = this.buffer.length - offset;\n const payloadLength = descriptor.payloadSize ?? remaining;\n if (payloadLength < 0 || offset + payloadLength > this.buffer.length) throw new Error(\"StateProof: payload exceeds buffer bounds\");\n const slice = this.buffer.subarray(offset, offset + payloadLength);\n const __tnAutoContext: Record<string, number | bigint> = {\n \"hdr.path_bitset.bytes.0\": this.view.getUint8(8),\n \"hdr.path_bitset.bytes.1\": this.view.getUint8(9),\n \"hdr.path_bitset.bytes.2\": this.view.getUint8(10),\n \"hdr.path_bitset.bytes.3\": this.view.getUint8(11),\n };\n const __tnMergedContext = this.__tnFieldContext ? { ...__tnAutoContext, ...this.__tnFieldContext } : __tnAutoContext;\n return StateProof_proof_body_Inner.__tnCreate(slice, descriptor, __tnMergedContext);\n }\n private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n return __tnEvalFootprint(__tn_ir_StateProof.root, { params: __tnParams });\n }\n\n private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n return __tnValidateIrTree(__tn_ir_StateProof, buffer, __tnParams);\n }\n\n static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n return this.__tnFootprintInternal(__tnParams);\n }\n\n static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n return this.__tnValidateInternal(buffer, __tnParams);\n }\n\n static footprintIr(proof_body_hdr_type_slot: number | bigint, proof_body_payload_size: number | bigint): bigint {\n const params = StateProof.Params.fromValues({\n proof_body_hdr_type_slot: proof_body_hdr_type_slot,\n proof_body_payload_size: proof_body_payload_size,\n });\n return this.footprintIrFromParams(params);\n }\n\n private static __tnPackParams(params: StateProof.Params): Record<string, bigint> {\n const record: Record<string, bigint> = Object.create(null);\n record[\"proof_body.hdr.type_slot\"] = params.proof_body_hdr_type_slot;\n record[\"proof_body.payload_size\"] = params.proof_body_payload_size;\n return record;\n }\n\n static footprintIrFromParams(params: StateProof.Params): bigint {\n const __tnParams = this.__tnPackParams(params);\n return this.__tnFootprintInternal(__tnParams);\n }\n\n static footprintFromParams(params: StateProof.Params): number {\n const irResult = this.footprintIrFromParams(params);\n const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n if (__tnBigIntGreaterThan(irResult, maxSafe)) throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for StateProof');\n return __tnBigIntToNumber(irResult, 'StateProof::footprintFromParams');\n }\n\n static footprintFromValues(input: { proof_body_hdr_type_slot: number | bigint, proof_body_payload_size: number | bigint }): number {\n const params = StateProof.params(input);\n return this.footprintFromParams(params);\n }\n\n static footprint(params: StateProof.Params): number {\n return this.footprintFromParams(params);\n }\n\n static validate(buffer: Uint8Array, opts?: { params?: StateProof.Params }): { ok: boolean; code?: string; consumed?: number; params?: StateProof.Params } {\n if (!buffer || buffer.length === undefined) {\n return { ok: false, code: \"tn.invalid_buffer\" };\n }\n const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n let params = opts?.params ?? null;\n if (!params) {\n const extracted = this.__tnExtractParams(view, buffer);\n if (!extracted) return { ok: false, code: \"tn.param_extraction_failed\" };\n params = extracted.params;\n }\n const __tnParamsRec = this.__tnPackParams(params);\n const irResult = this.__tnValidateInternal(buffer, __tnParamsRec);\n if (!irResult.ok) {\n return { ok: false, code: irResult.code, consumed: irResult.consumed ? __tnBigIntToNumber(irResult.consumed, 'StateProof::validate') : undefined, params };\n }\n const consumed = irResult.consumed ? __tnBigIntToNumber(irResult.consumed, 'StateProof::validate') : undefined;\n return { ok: true, consumed, params };\n }\n\n static from_array(buffer: Uint8Array, opts?: { params?: StateProof.Params }): StateProof | null {\n if (!buffer || buffer.length === undefined) {\n return null;\n }\n const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n let params = opts?.params ?? null;\n let derivedRecord: Record<string, bigint> | null = null;\n if (!params) {\n const derived = this.__tnExtractParams(view, buffer);\n if (!derived) return null;\n params = derived.params;\n derivedRecord = derived.derived;\n }\n const validation = this.validate(buffer, { params });\n if (!validation.ok) {\n return null;\n }\n const cached = validation.params ?? params;\n const state = new StateProof(buffer, cached);\n if (derivedRecord) state.__tnDerivedParams = derivedRecord;\n return state;\n }\n\n\n}\n\nexport namespace StateProof {\n export type Params = {\n /** ABI path: proof_body.hdr.type_slot */\n readonly proof_body_hdr_type_slot: bigint;\n /** ABI path: proof_body.payload_size */\n readonly proof_body_payload_size: bigint;\n };\n\n export const ParamKeys = Object.freeze({\n proof_body_hdr_type_slot: \"proof_body.hdr.type_slot\",\n proof_body_payload_size: \"proof_body.payload_size\",\n } as const);\n\n export const Params = {\n fromValues(input: { proof_body_hdr_type_slot: number | bigint, proof_body_payload_size: number | bigint }): Params {\n return {\n proof_body_hdr_type_slot: __tnToBigInt(input.proof_body_hdr_type_slot),\n proof_body_payload_size: __tnToBigInt(input.proof_body_payload_size),\n };\n },\n fromBuilder(source: { dynamicParams(): Params } | { params: Params } | Params): Params {\n if ((source as { dynamicParams?: () => Params }).dynamicParams) {\n return (source as { dynamicParams(): Params }).dynamicParams();\n }\n if ((source as { params?: Params }).params) {\n return (source as { params: Params }).params;\n }\n return source as Params;\n }\n };\n\n export function params(input: { proof_body_hdr_type_slot: number | bigint, proof_body_payload_size: number | bigint }): Params {\n return Params.fromValues(input);\n }\n}\n\nexport class StateProofBuilder {\n private __tnPrefixBuffer: Uint8Array;\n private __tnPrefixView: DataView;\n private __tnPayload_proof_body: { descriptor: typeof StateProof.proof_bodyVariantDescriptors[number]; bytes: Uint8Array } | null = null;\n private __tnCachedParams: StateProof.Params | null = null;\n private __tnLastBuffer: Uint8Array | null = null;\n private __tnLastParams: StateProof.Params | null = null;\n private __tnVariantSelector_proof_body?: __TnVariantSelectorResult<StateProofBuilder>;\n\n constructor() {\n this.__tnPrefixBuffer = new Uint8Array(40);\n this.__tnPrefixView = new DataView(this.__tnPrefixBuffer.buffer, this.__tnPrefixBuffer.byteOffset, this.__tnPrefixBuffer.byteLength);\n }\n\n set_hdr(value: Uint8Array): this {\n if (value.length !== 40) throw new Error(\"hdr expects 40 bytes\");\n this.__tnPrefixBuffer.set(value, 0);\n this.__tnInvalidate();\n return this;\n }\n\n private __tnInvalidate(): void {\n this.__tnCachedParams = null;\n this.__tnLastBuffer = null;\n this.__tnLastParams = null;\n }\n\n proof_body(): __TnVariantSelectorResult<StateProofBuilder> {\n if (!this.__tnVariantSelector_proof_body) {\n this.__tnVariantSelector_proof_body = __tnCreateVariantSelector(this, StateProof.proof_bodyVariantDescriptors, (descriptor, payload) => {\n this.__tnPayload_proof_body = { descriptor, bytes: new Uint8Array(payload) };\n this.__tnInvalidate();\n });\n }\n return this.__tnVariantSelector_proof_body!;\n }\n\n build(): Uint8Array {\n const params = this.__tnComputeParams();\n if (!this.__tnPayload_proof_body) throw new Error(\"StateProofBuilder: payload variant not selected\");\n const payloadLength = this.__tnPayload_proof_body.bytes.length;\n const requiredSize = 40 + payloadLength;\n const footprintSize = StateProof.footprintFromParams(params);\n const size = Math.max(requiredSize, footprintSize);\n const buffer = new Uint8Array(size);\n this.__tnWriteInto(buffer);\n this.__tnValidateOrThrow(buffer, params);\n return buffer;\n }\n\n buildInto(target: Uint8Array, offset = 0): Uint8Array {\n const params = this.__tnComputeParams();\n if (!this.__tnPayload_proof_body) throw new Error(\"StateProofBuilder: payload variant not selected\");\n const payloadLength = this.__tnPayload_proof_body.bytes.length;\n const requiredSize = 40 + payloadLength;\n const footprintSize = StateProof.footprintFromParams(params);\n const size = Math.max(requiredSize, footprintSize);\n if (target.length - offset < size) throw new Error(\"StateProofBuilder: target buffer too small\");\n const slice = target.subarray(offset, offset + size);\n this.__tnWriteInto(slice);\n this.__tnValidateOrThrow(slice, params);\n return target;\n }\n\n finish(): StateProof {\n const buffer = this.build();\n const params = this.__tnLastParams ?? this.__tnComputeParams();\n const view = StateProof.from_array(buffer, { params });\n if (!view) throw new Error(\"StateProofBuilder: failed to finalize view\");\n return view;\n }\n\n finishView(): StateProof {\n return this.finish();\n }\n\n dynamicParams(): StateProof.Params {\n return this.__tnComputeParams();\n }\n\n private __tnComputeParams(): StateProof.Params {\n if (this.__tnCachedParams) return this.__tnCachedParams;\n const params = StateProof.Params.fromValues({\n proof_body_hdr_type_slot: (() => { const slice = this.__tnPrefixBuffer.subarray(0, 40); const header = StateProofHeader.from_array(slice); if (!header) throw new Error(\"StateProofBuilder: field 'hdr' must be set before build\"); return __tnToBigInt(header.get_type_slot()); })(),\n proof_body_payload_size: (() => { if (!this.__tnPayload_proof_body) throw new Error(\"StateProofBuilder: payload 'proof_body' must be selected before build\"); return __tnToBigInt(this.__tnPayload_proof_body.bytes.length); })(),\n });\n this.__tnCachedParams = params;\n return params;\n }\n\n private __tnWriteInto(target: Uint8Array): void {\n if (!this.__tnPayload_proof_body) throw new Error(\"StateProofBuilder: payload variant not selected\");\n const view = new DataView(target.buffer, target.byteOffset, target.byteLength);\n target.set(this.__tnPrefixBuffer, 0);\n target.set(this.__tnPayload_proof_body.bytes, 40);\n const __tnLayout = StateProof.__tnComputeSequentialLayout(view, target);\n if (!__tnLayout || !__tnLayout.derived) throw new Error(\"StateProofBuilder: failed to derive enum tag\");\n const __tnDerivedTagValue = __tnLayout.derived[\"StateProof__proof_body_computed_tag\"];\n if (__tnDerivedTagValue === undefined) throw new Error(\"StateProofBuilder: computed enum tag missing\");\n const __tnDerivedTag = __tnBigIntToNumber(__tnDerivedTagValue, \"StateProofBuilder::__tnWriteInto\");\n const __tnExpectedTag = this.__tnPayload_proof_body!.descriptor.tag;\n if (__tnDerivedTag !== __tnExpectedTag) throw new Error(\"StateProofBuilder: computed enum tag does not match selected variant\");\n }\n\n private __tnValidateOrThrow(buffer: Uint8Array, params: StateProof.Params): void {\n const result = StateProof.validate(buffer, { params });\n if (!result.ok) {\n throw new Error(`${ StateProof }Builder: builder produced invalid buffer (code=${result.code ?? \"unknown\"})`);\n }\n this.__tnLastParams = result.params ?? params;\n this.__tnLastBuffer = buffer;\n }\n}\n\n__tnRegisterFootprint(\"StateProof\", (params) => StateProof.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"StateProof\", (buffer, params) => StateProof.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"StateProof\", (buffer) => { const result = StateProof.validate(buffer); 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 { StateProof } from \"../../blockchain/state_proof/types\";\nimport { InstructionData, Pubkey } from \"../../common/primitives/types\";\n\ntype __TnIrNode =\n | { readonly op: \"zero\" }\n | { readonly op: \"const\"; readonly value: bigint }\n | { readonly op: \"field\"; readonly param: string }\n | {\n readonly op: \"add\";\n readonly left: __TnIrNode;\n readonly right: __TnIrNode;\n }\n | {\n readonly op: \"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__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__tnRegisterFootprint(\"StateProof\", (params) => StateProof.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"StateProof\", (buffer, params) => StateProof.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"StateProof\", (buffer) => { const result = StateProof.validate(buffer); return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed) }; });\n\n/* ----- TYPE DEFINITION FOR Authority ----- */\n\nconst __tn_ir_Authority = {\n typeName: \"Authority\",\n root: { op: \"const\", value: 65n }\n} as const;\n\nexport class Authority {\n private view: DataView;\n\n private constructor(private buffer: Uint8Array) {\n this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n }\n\n static __tnCreateView(buffer: Uint8Array, opts?: { fieldContext?: Record<string, number | bigint> }): Authority {\n if (!buffer || buffer.length === undefined) throw new Error(\"Authority.__tnCreateView requires a Uint8Array\");\n return new Authority(new Uint8Array(buffer));\n }\n\n static builder(): AuthorityBuilder {\n return new AuthorityBuilder();\n }\n\n static fromBuilder(builder: AuthorityBuilder): Authority | null {\n const buffer = builder.build();\n return Authority.from_array(buffer);\n }\n\n get_tag(): number {\n const offset = 0;\n return this.view.getUint8(offset);\n }\n\n set_tag(value: number): void {\n const offset = 0;\n this.view.setUint8(offset, value);\n }\n\n get tag(): number {\n return this.get_tag();\n }\n\n set tag(value: number) {\n this.set_tag(value);\n }\n\n get_data(): number[] {\n const offset = 1;\n const result: number[] = [];\n for (let i = 0; i < 64; i++) {\n result.push(this.view.getUint8((offset + i * 1)));\n }\n return result;\n }\n\n set_data(value: number[]): void {\n const offset = 1;\n if (value.length !== 64) {\n throw new Error('Array length must be 64');\n }\n for (let i = 0; i < 64; i++) {\n this.view.setUint8((offset + i * 1), value[i]);\n }\n }\n\n get data(): number[] {\n return this.get_data();\n }\n\n set data(value: number[]) {\n this.set_data(value);\n }\n\n private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n return __tnEvalFootprint(__tn_ir_Authority.root, { params: __tnParams });\n }\n\n private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n return __tnValidateIrTree(__tn_ir_Authority, buffer, __tnParams);\n }\n\n static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n return this.__tnFootprintInternal(__tnParams);\n }\n\n static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n return this.__tnValidateInternal(buffer, __tnParams);\n }\n\n static footprintIr(): bigint {\n return this.__tnFootprintInternal(Object.create(null));\n }\n\n static footprint(): number {\n const irResult = this.footprintIr();\n const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n if (__tnBigIntGreaterThan(irResult, maxSafe)) {\n throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for Authority');\n }\n return __tnBigIntToNumber(irResult, 'Authority::footprint');\n }\n\n static validate(buffer: Uint8Array, _opts?: { params?: never }): { ok: boolean; code?: string; consumed?: number } {\n if (buffer.length < 65) return { ok: false, code: \"tn.buffer_too_small\", consumed: 65 };\n return { ok: true, consumed: 65 };\n }\n\n static from_array(buffer: Uint8Array): Authority | null {\n if (!buffer || buffer.length === undefined) {\n return null;\n }\n const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n const validation = this.validate(buffer);\n if (!validation.ok) {\n return null;\n }\n return new Authority(buffer);\n }\n\n}\n\nexport class AuthorityBuilder {\n private buffer: Uint8Array;\n private view: DataView;\n\n constructor() {\n this.buffer = new Uint8Array(65);\n this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n }\n\n set_tag(value: number): this {\n this.view.setUint8(0, value);\n return this;\n }\n\n set_data(values: number[]): this {\n if (values.length !== 64) throw new Error(\"data expects 64 elements\");\n for (let i = 0; i < values.length; i++) {\n const byteOffset = 1 + i * 1;\n this.view.setUint8(byteOffset, values[i]);\n }\n return this;\n }\n\n build(): Uint8Array {\n return this.buffer.slice();\n }\n\n buildInto(target: Uint8Array, offset = 0): Uint8Array {\n if (target.length - offset < this.buffer.length) throw new Error(\"target buffer too small\");\n target.set(this.buffer, offset);\n return target;\n }\n\n finish(): Authority {\n const view = Authority.from_array(this.buffer.slice());\n if (!view) throw new Error(\"failed to build Authority\");\n return view;\n }\n}\n\n__tnRegisterFootprint(\"Authority\", (params) => Authority.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"Authority\", (buffer, params) => Authority.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"Authority\", (buffer) => { const result = Authority.validate(buffer); return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed) }; });\n\n/* ----- TYPE DEFINITION FOR P256Point ----- */\n\nconst __tn_ir_P256Point = {\n typeName: \"P256Point\",\n root: { op: \"const\", value: 32n }\n} as const;\n\nexport class P256Point {\n private view: DataView;\n private constructor(private buffer: Uint8Array) {\n this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n }\n\n private static readonly __tnElementSize = 1;\n private static readonly __tnElementCount: number | null = 32;\n\n get length(): number {\n const explicit = P256Point.__tnElementCount;\n if (explicit !== null) {\n return explicit;\n }\n const stride = P256Point.__tnElementSize;\n if (stride > 0) {\n return Math.floor(this.buffer.length / stride);\n }\n return this.buffer.length;\n }\n\n getElementBytes(index: number): Uint8Array {\n if (!Number.isInteger(index) || index < 0) {\n throw new RangeError('P256Point::getElementBytes index must be a non-negative integer');\n }\n const stride = P256Point.__tnElementSize;\n if (stride <= 0) {\n throw new Error('P256Point::getElementBytes requires constant element size');\n }\n const start = index * stride;\n const end = start + stride;\n if (end > this.buffer.length) {\n throw new RangeError('P256Point::getElementBytes out of bounds');\n }\n return this.buffer.subarray(start, end);\n }\n\n static from_array(buffer: Uint8Array): P256Point | null {\n if (!buffer || buffer.length === undefined) {\n return null;\n }\n const validation = P256Point.validate(buffer);\n if (!validation.ok) {\n return null;\n }\n return new P256Point(buffer);\n }\n\n asUint8Array(): Uint8Array {\n return new Uint8Array(this.buffer);\n }\n\n private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n return __tnEvalFootprint(__tn_ir_P256Point.root, { params: __tnParams });\n }\n\n private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n return __tnValidateIrTree(__tn_ir_P256Point, buffer, __tnParams);\n }\n\n static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n return this.__tnFootprintInternal(__tnParams);\n }\n\n static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n return this.__tnValidateInternal(buffer, __tnParams);\n }\n\n static footprintIr(): bigint {\n return this.__tnFootprintInternal(Object.create(null));\n }\n\n static footprint(): number {\n const irResult = this.footprintIr();\n const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n if (__tnBigIntGreaterThan(irResult, maxSafe)) {\n throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for P256Point');\n }\n return __tnBigIntToNumber(irResult, 'P256Point::footprint');\n }\n\n static validate(buffer: Uint8Array, _opts?: { params?: never }): { ok: boolean; code?: string; consumed?: number } {\n if (buffer.length < 32) return { ok: false, code: \"tn.buffer_too_small\", consumed: 32 };\n return { ok: true, consumed: 32 };\n }\n\n}\n\n__tnRegisterFootprint(\"P256Point\", (params) => P256Point.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"P256Point\", (buffer, params) => P256Point.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"P256Point\", (buffer) => { const result = P256Point.validate(buffer); return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed) }; });\n\n/* ----- TYPE DEFINITION FOR RemoveAuthorityArgs ----- */\n\nconst __tn_ir_RemoveAuthorityArgs = {\n typeName: \"RemoveAuthorityArgs\",\n root: { op: \"const\", value: 3n }\n} as const;\n\nexport class RemoveAuthorityArgs {\n private view: DataView;\n\n private constructor(private buffer: Uint8Array) {\n this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n }\n\n static __tnCreateView(buffer: Uint8Array, opts?: { fieldContext?: Record<string, number | bigint> }): RemoveAuthorityArgs {\n if (!buffer || buffer.length === undefined) throw new Error(\"RemoveAuthorityArgs.__tnCreateView requires a Uint8Array\");\n return new RemoveAuthorityArgs(new Uint8Array(buffer));\n }\n\n static builder(): RemoveAuthorityArgsBuilder {\n return new RemoveAuthorityArgsBuilder();\n }\n\n static fromBuilder(builder: RemoveAuthorityArgsBuilder): RemoveAuthorityArgs | null {\n const buffer = builder.build();\n return RemoveAuthorityArgs.from_array(buffer);\n }\n\n get_wallet_account_idx(): number {\n const offset = 0;\n return this.view.getUint16(offset, true); /* little-endian */\n }\n\n set_wallet_account_idx(value: number): void {\n const offset = 0;\n this.view.setUint16(offset, value, true); /* little-endian */\n }\n\n get wallet_account_idx(): number {\n return this.get_wallet_account_idx();\n }\n\n set wallet_account_idx(value: number) {\n this.set_wallet_account_idx(value);\n }\n\n get_auth_idx(): number {\n const offset = 2;\n return this.view.getUint8(offset);\n }\n\n set_auth_idx(value: number): void {\n const offset = 2;\n this.view.setUint8(offset, value);\n }\n\n get auth_idx(): number {\n return this.get_auth_idx();\n }\n\n set auth_idx(value: number) {\n this.set_auth_idx(value);\n }\n\n private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n return __tnEvalFootprint(__tn_ir_RemoveAuthorityArgs.root, { params: __tnParams });\n }\n\n private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n return __tnValidateIrTree(__tn_ir_RemoveAuthorityArgs, buffer, __tnParams);\n }\n\n static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n return this.__tnFootprintInternal(__tnParams);\n }\n\n static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n return this.__tnValidateInternal(buffer, __tnParams);\n }\n\n static footprintIr(): bigint {\n return this.__tnFootprintInternal(Object.create(null));\n }\n\n static footprint(): number {\n const irResult = this.footprintIr();\n const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n if (__tnBigIntGreaterThan(irResult, maxSafe)) {\n throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for RemoveAuthorityArgs');\n }\n return __tnBigIntToNumber(irResult, 'RemoveAuthorityArgs::footprint');\n }\n\n static validate(buffer: Uint8Array, _opts?: { params?: never }): { ok: boolean; code?: string; consumed?: number } {\n if (buffer.length < 3) return { ok: false, code: \"tn.buffer_too_small\", consumed: 3 };\n return { ok: true, consumed: 3 };\n }\n\n static new(wallet_account_idx: number, auth_idx: number): RemoveAuthorityArgs {\n const buffer = new Uint8Array(3);\n const view = new DataView(buffer.buffer);\n\n let offset = 0;\n view.setUint16(0, wallet_account_idx, true); /* wallet_account_idx (little-endian) */\n view.setUint8(2, auth_idx); /* auth_idx */\n\n return new RemoveAuthorityArgs(buffer);\n }\n\n static from_array(buffer: Uint8Array): RemoveAuthorityArgs | null {\n if (!buffer || buffer.length === undefined) {\n return null;\n }\n const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n const validation = this.validate(buffer);\n if (!validation.ok) {\n return null;\n }\n return new RemoveAuthorityArgs(buffer);\n }\n\n}\n\nexport class RemoveAuthorityArgsBuilder {\n private buffer: Uint8Array;\n private view: DataView;\n\n constructor() {\n this.buffer = new Uint8Array(3);\n this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n }\n\n set_wallet_account_idx(value: number): this {\n this.view.setUint16(0, value, true);\n return this;\n }\n\n set_auth_idx(value: number): this {\n this.view.setUint8(2, value);\n return this;\n }\n\n build(): Uint8Array {\n return this.buffer.slice();\n }\n\n buildInto(target: Uint8Array, offset = 0): Uint8Array {\n if (target.length - offset < this.buffer.length) throw new Error(\"target buffer too small\");\n target.set(this.buffer, offset);\n return target;\n }\n\n finish(): RemoveAuthorityArgs {\n const view = RemoveAuthorityArgs.from_array(this.buffer.slice());\n if (!view) throw new Error(\"failed to build RemoveAuthorityArgs\");\n return view;\n }\n}\n\n__tnRegisterFootprint(\"RemoveAuthorityArgs\", (params) => RemoveAuthorityArgs.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"RemoveAuthorityArgs\", (buffer, params) => RemoveAuthorityArgs.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"RemoveAuthorityArgs\", (buffer) => { const result = RemoveAuthorityArgs.validate(buffer); return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed) }; });\n\n/* ----- TYPE DEFINITION FOR Seed32 ----- */\n\nconst __tn_ir_Seed32 = {\n typeName: \"Seed32\",\n root: { op: \"const\", value: 32n }\n} as const;\n\nexport class Seed32 {\n private view: DataView;\n private constructor(private buffer: Uint8Array) {\n this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n }\n\n private static readonly __tnElementSize = 1;\n private static readonly __tnElementCount: number | null = 32;\n\n get length(): number {\n const explicit = Seed32.__tnElementCount;\n if (explicit !== null) {\n return explicit;\n }\n const stride = Seed32.__tnElementSize;\n if (stride > 0) {\n return Math.floor(this.buffer.length / stride);\n }\n return this.buffer.length;\n }\n\n getElementBytes(index: number): Uint8Array {\n if (!Number.isInteger(index) || index < 0) {\n throw new RangeError('Seed32::getElementBytes index must be a non-negative integer');\n }\n const stride = Seed32.__tnElementSize;\n if (stride <= 0) {\n throw new Error('Seed32::getElementBytes requires constant element size');\n }\n const start = index * stride;\n const end = start + stride;\n if (end > this.buffer.length) {\n throw new RangeError('Seed32::getElementBytes out of bounds');\n }\n return this.buffer.subarray(start, end);\n }\n\n static from_array(buffer: Uint8Array): Seed32 | null {\n if (!buffer || buffer.length === undefined) {\n return null;\n }\n const validation = Seed32.validate(buffer);\n if (!validation.ok) {\n return null;\n }\n return new Seed32(buffer);\n }\n\n asUint8Array(): Uint8Array {\n return new Uint8Array(this.buffer);\n }\n\n private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n return __tnEvalFootprint(__tn_ir_Seed32.root, { params: __tnParams });\n }\n\n private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n return __tnValidateIrTree(__tn_ir_Seed32, buffer, __tnParams);\n }\n\n static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n return this.__tnFootprintInternal(__tnParams);\n }\n\n static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n return this.__tnValidateInternal(buffer, __tnParams);\n }\n\n static footprintIr(): bigint {\n return this.__tnFootprintInternal(Object.create(null));\n }\n\n static footprint(): number {\n const irResult = this.footprintIr();\n const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n if (__tnBigIntGreaterThan(irResult, maxSafe)) {\n throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for Seed32');\n }\n return __tnBigIntToNumber(irResult, 'Seed32::footprint');\n }\n\n static validate(buffer: Uint8Array, _opts?: { params?: never }): { ok: boolean; code?: string; consumed?: number } {\n if (buffer.length < 32) return { ok: false, code: \"tn.buffer_too_small\", consumed: 32 };\n return { ok: true, consumed: 32 };\n }\n\n}\n\n__tnRegisterFootprint(\"Seed32\", (params) => Seed32.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"Seed32\", (buffer, params) => Seed32.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"Seed32\", (buffer) => { const result = Seed32.validate(buffer); return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed) }; });\n\n/* ----- TYPE DEFINITION FOR TransferArgs ----- */\n\nconst __tn_ir_TransferArgs = {\n typeName: \"TransferArgs\",\n root: { op: \"const\", value: 12n }\n} as const;\n\nexport class TransferArgs {\n private view: DataView;\n\n private constructor(private buffer: Uint8Array) {\n this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n }\n\n static __tnCreateView(buffer: Uint8Array, opts?: { fieldContext?: Record<string, number | bigint> }): TransferArgs {\n if (!buffer || buffer.length === undefined) throw new Error(\"TransferArgs.__tnCreateView requires a Uint8Array\");\n return new TransferArgs(new Uint8Array(buffer));\n }\n\n static builder(): TransferArgsBuilder {\n return new TransferArgsBuilder();\n }\n\n static fromBuilder(builder: TransferArgsBuilder): TransferArgs | null {\n const buffer = builder.build();\n return TransferArgs.from_array(buffer);\n }\n\n get_wallet_account_idx(): number {\n const offset = 0;\n return this.view.getUint16(offset, true); /* little-endian */\n }\n\n set_wallet_account_idx(value: number): void {\n const offset = 0;\n this.view.setUint16(offset, value, true); /* little-endian */\n }\n\n get wallet_account_idx(): number {\n return this.get_wallet_account_idx();\n }\n\n set wallet_account_idx(value: number) {\n this.set_wallet_account_idx(value);\n }\n\n get_to_account_idx(): number {\n const offset = 2;\n return this.view.getUint16(offset, true); /* little-endian */\n }\n\n set_to_account_idx(value: number): void {\n const offset = 2;\n this.view.setUint16(offset, value, true); /* little-endian */\n }\n\n get to_account_idx(): number {\n return this.get_to_account_idx();\n }\n\n set to_account_idx(value: number) {\n this.set_to_account_idx(value);\n }\n\n get_amount(): bigint {\n const offset = 4;\n return this.view.getBigUint64(offset, true); /* little-endian */\n }\n\n set_amount(value: bigint): void {\n const offset = 4;\n this.view.setBigUint64(offset, value, true); /* little-endian */\n }\n\n get amount(): bigint {\n return this.get_amount();\n }\n\n set amount(value: bigint) {\n this.set_amount(value);\n }\n\n private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n return __tnEvalFootprint(__tn_ir_TransferArgs.root, { params: __tnParams });\n }\n\n private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n return __tnValidateIrTree(__tn_ir_TransferArgs, buffer, __tnParams);\n }\n\n static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n return this.__tnFootprintInternal(__tnParams);\n }\n\n static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n return this.__tnValidateInternal(buffer, __tnParams);\n }\n\n static footprintIr(): bigint {\n return this.__tnFootprintInternal(Object.create(null));\n }\n\n static footprint(): number {\n const irResult = this.footprintIr();\n const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n if (__tnBigIntGreaterThan(irResult, maxSafe)) {\n throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for TransferArgs');\n }\n return __tnBigIntToNumber(irResult, 'TransferArgs::footprint');\n }\n\n static validate(buffer: Uint8Array, _opts?: { params?: never }): { ok: boolean; code?: string; consumed?: number } {\n if (buffer.length < 12) return { ok: false, code: \"tn.buffer_too_small\", consumed: 12 };\n return { ok: true, consumed: 12 };\n }\n\n static new(wallet_account_idx: number, to_account_idx: number, amount: bigint): TransferArgs {\n const buffer = new Uint8Array(12);\n const view = new DataView(buffer.buffer);\n\n let offset = 0;\n view.setUint16(0, wallet_account_idx, true); /* wallet_account_idx (little-endian) */\n view.setUint16(2, to_account_idx, true); /* to_account_idx (little-endian) */\n view.setBigUint64(4, amount, true); /* amount (little-endian) */\n\n return new TransferArgs(buffer);\n }\n\n static from_array(buffer: Uint8Array): TransferArgs | null {\n if (!buffer || buffer.length === undefined) {\n return null;\n }\n const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n const validation = this.validate(buffer);\n if (!validation.ok) {\n return null;\n }\n return new TransferArgs(buffer);\n }\n\n}\n\nexport class TransferArgsBuilder {\n private buffer: Uint8Array;\n private view: DataView;\n\n constructor() {\n this.buffer = new Uint8Array(12);\n this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n }\n\n set_wallet_account_idx(value: number): this {\n this.view.setUint16(0, value, true);\n return this;\n }\n\n set_to_account_idx(value: number): this {\n this.view.setUint16(2, value, true);\n return this;\n }\n\n set_amount(value: number): this {\n const cast = __tnToBigInt(value);\n this.view.setBigUint64(4, cast, true);\n return this;\n }\n\n build(): Uint8Array {\n return this.buffer.slice();\n }\n\n buildInto(target: Uint8Array, offset = 0): Uint8Array {\n if (target.length - offset < this.buffer.length) throw new Error(\"target buffer too small\");\n target.set(this.buffer, offset);\n return target;\n }\n\n finish(): TransferArgs {\n const view = TransferArgs.from_array(this.buffer.slice());\n if (!view) throw new Error(\"failed to build TransferArgs\");\n return view;\n }\n}\n\n__tnRegisterFootprint(\"TransferArgs\", (params) => TransferArgs.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"TransferArgs\", (buffer, params) => TransferArgs.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"TransferArgs\", (buffer) => { const result = TransferArgs.validate(buffer); return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed) }; });\n\n/* ----- TYPE DEFINITION FOR ValidateArgs ----- */\n\nconst __tn_ir_ValidateArgs = {\n typeName: \"ValidateArgs\",\n root: { op: \"align\", alignment: 1, node: { op: \"add\", left: { op: \"add\", left: { op: \"add\", left: { op: \"add\", left: { op: \"add\", left: { op: \"add\", left: { op: \"add\", left: { op: \"add\", left: { op: \"align\", alignment: 2, node: { op: \"const\", value: 2n } }, right: { op: \"align\", alignment: 1, node: { op: \"const\", value: 1n } } }, right: { op: \"align\", alignment: 1, node: { op: \"const\", value: 32n } } }, right: { op: \"align\", alignment: 1, node: { op: \"const\", value: 32n } } }, right: { op: \"align\", alignment: 2, node: { op: \"const\", value: 2n } } }, right: { op: \"align\", alignment: 2, node: { op: \"const\", value: 2n } } }, right: { op: \"align\", alignment: 1, node: { op: \"mul\", left: { op: \"field\", param: \"authenticator_data.authenticator_data_len\" }, right: { op: \"const\", value: 1n } } } }, right: { op: \"align\", alignment: 1, node: { op: \"mul\", left: { op: \"field\", param: \"client_data.client_data_len\" }, right: { op: \"const\", value: 1n } } } }, right: { op: \"align\", alignment: 1, node: { op: \"call\", typeName: \"InstructionData\", args: [{ name: \"data.data_size\", source: \"data.data_size\" }] } } } }\n} as const;\n\nexport class ValidateArgs {\n private view: DataView;\n private __tnFieldContext: Record<string, number | bigint> | null = null;\n private __tnParams: ValidateArgs.Params;\n\n private constructor(private buffer: Uint8Array, params?: ValidateArgs.Params, fieldContext?: Record<string, number | bigint>) {\n this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n this.__tnFieldContext = fieldContext ?? null;\n if (params) {\n this.__tnParams = params;\n } else {\n const derived = ValidateArgs.__tnExtractParams(this.view, buffer);\n if (!derived) {\n throw new Error(\"ValidateArgs: failed to derive dynamic parameters\");\n }\n this.__tnParams = derived.params;\n }\n }\n\n static __tnCreateView(buffer: Uint8Array, opts?: { params?: ValidateArgs.Params, fieldContext?: Record<string, number | bigint> }): ValidateArgs {\n if (!buffer || buffer.length === undefined) throw new Error(\"ValidateArgs.__tnCreateView requires a Uint8Array\");\n let params = opts?.params ?? null;\n if (!params) {\n const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n const derived = ValidateArgs.__tnExtractParams(view, buffer);\n if (!derived) throw new Error(\"ValidateArgs.__tnCreateView: failed to derive params\");\n params = derived.params;\n }\n const instance = new ValidateArgs(new Uint8Array(buffer), params, opts?.fieldContext);\n return instance;\n }\n\n dynamicParams(): ValidateArgs.Params {\n return this.__tnParams;\n }\n\n withFieldContext(context: Record<string, number | bigint>): this {\n this.__tnFieldContext = context;\n return this;\n }\n\n private __tnResolveFieldRef(path: string): number {\n const getterName = `get_${path.replace(/[.]/g, '_')}`;\n const getter = (this as any)[getterName];\n if (typeof getter === \"function\") {\n const value = getter.call(this);\n return typeof value === \"bigint\" ? __tnBigIntToNumber(value, \"ValidateArgs::__tnResolveFieldRef\") : value;\n }\n if (this.__tnFieldContext && Object.prototype.hasOwnProperty.call(this.__tnFieldContext, path)) {\n const contextValue = this.__tnFieldContext[path];\n return typeof contextValue === \"bigint\" ? __tnBigIntToNumber(contextValue, \"ValidateArgs::__tnResolveFieldRef\") : contextValue;\n }\n throw new Error(\"ValidateArgs: field reference '\" + path + \"' is not available; provide fieldContext when creating this view\");\n }\n\n static readonly flexibleArrayWriters = Object.freeze([\n { field: \"authenticator_data\", method: \"authenticator_data\", sizeField: \"authenticator_data_len\", paramKey: \"authenticator_data_len\", elementSize: 1 },\n { field: \"client_data\", method: \"client_data\", sizeField: \"client_data_len\", paramKey: \"client_data_len\", elementSize: 1 },\n ] as const);\n\n static __tnComputeSequentialLayout(view: DataView, buffer: Uint8Array): { params: Record<string, bigint> | null; offsets: Record<string, number> | null; derived: Record<string, bigint> | null } | null {\n const offsets: Record<string, number> = Object.create(null);\n const __tnLength = buffer.length;\n let __tnFieldValue_wallet_account_idx: number | null = null;\n let __tnFieldValue_auth_idx: number | null = null;\n let __tnFieldValue_authenticator_data_len: number | null = null;\n let __tnFieldValue_client_data_len: number | null = null;\n let __tnCursorMutable = 0;\n if (__tnCursorMutable + 2 > __tnLength) return null;\n const __tnRead_wallet_account_idx = view.getUint16(__tnCursorMutable, true);\n __tnFieldValue_wallet_account_idx = __tnRead_wallet_account_idx;\n __tnCursorMutable += 2;\n if (__tnCursorMutable + 1 > __tnLength) return null;\n const __tnRead_auth_idx = view.getUint8(__tnCursorMutable);\n __tnFieldValue_auth_idx = __tnRead_auth_idx;\n __tnCursorMutable += 1;\n if (__tnCursorMutable + 32 > __tnLength) return null;\n __tnCursorMutable += 32;\n if (__tnCursorMutable + 32 > __tnLength) return null;\n __tnCursorMutable += 32;\n if (__tnCursorMutable + 2 > __tnLength) return null;\n const __tnRead_authenticator_data_len = view.getUint16(__tnCursorMutable, true);\n __tnFieldValue_authenticator_data_len = __tnRead_authenticator_data_len;\n __tnCursorMutable += 2;\n if (__tnCursorMutable + 2 > __tnLength) return null;\n const __tnRead_client_data_len = view.getUint16(__tnCursorMutable, true);\n __tnFieldValue_client_data_len = __tnRead_client_data_len;\n __tnCursorMutable += 2;\n if (__tnFieldValue_authenticator_data_len === null) return null;\n const __tnArrayCount_authenticator_data = Math.trunc(Number(__tnFieldValue_authenticator_data_len));\n if (!Number.isFinite(__tnArrayCount_authenticator_data) || __tnArrayCount_authenticator_data < 0) return null;\n const __tnArrayBytes_authenticator_data = __tnArrayCount_authenticator_data * 1;\n if (__tnCursorMutable + __tnArrayBytes_authenticator_data > __tnLength) return null;\n __tnCursorMutable += __tnArrayBytes_authenticator_data;\n if (__tnFieldValue_client_data_len === null) return null;\n const __tnArrayCount_client_data = Math.trunc(Number(__tnFieldValue_client_data_len));\n if (!Number.isFinite(__tnArrayCount_client_data) || __tnArrayCount_client_data < 0) return null;\n const __tnArrayBytes_client_data = __tnArrayCount_client_data * 1;\n offsets[\"client_data\"] = __tnCursorMutable;\n if (__tnCursorMutable + __tnArrayBytes_client_data > __tnLength) return null;\n __tnCursorMutable += __tnArrayBytes_client_data;\n return null;\n return { params: null, offsets: offsets, derived: null };\n }\n\n private static __tnExtractParams(view: DataView, buffer: Uint8Array): { params: ValidateArgs.Params; derived: Record<string, bigint> | null } | null {\n if (buffer.length < 69) {\n return null;\n }\n const __tnParam_authenticator_data_authenticator_data_len = __tnToBigInt(view.getUint16(67, true));\n if (buffer.length < 71) {\n return null;\n }\n const __tnParam_client_data_client_data_len = __tnToBigInt(view.getUint16(69, true));\n const __tnExtractedParams = ValidateArgs.Params.fromValues({\n authenticator_data_authenticator_data_len: __tnParam_authenticator_data_authenticator_data_len,\n client_data_client_data_len: __tnParam_client_data_client_data_len,\n });\n return { params: __tnExtractedParams, derived: null };\n }\n\n /* Dynamic offsets are derived once per view; mutating length fields later does not invalidate this cache. */\n private __tnDynamicOffsetCache: Record<string, number> | null = null;\n private __tnGetDynamicOffset(field: string): number {\n if (!this.__tnDynamicOffsetCache) {\n this.__tnDynamicOffsetCache = this.__tnComputeDynamicOffsets();\n }\n const offset = this.__tnDynamicOffsetCache[field];\n if (offset === undefined) {\n throw new Error(\"ValidateArgs: field '\" + field + \"' does not have a dynamic offset\");\n }\n return offset;\n }\n\n private __tnComputeDynamicOffsets(): Record<string, number> {\n const layout = ValidateArgs.__tnComputeSequentialLayout(this.view, this.buffer);\n if (!layout || !layout.offsets) {\n throw new Error(\"ValidateArgs: failed to compute dynamic offsets\");\n }\n return layout.offsets;\n }\n\n get_wallet_account_idx(): number {\n const offset = 0;\n return this.view.getUint16(offset, true); /* little-endian */\n }\n\n set_wallet_account_idx(value: number): void {\n const offset = 0;\n this.view.setUint16(offset, value, true); /* little-endian */\n }\n\n get wallet_account_idx(): number {\n return this.get_wallet_account_idx();\n }\n\n set wallet_account_idx(value: number) {\n this.set_wallet_account_idx(value);\n }\n\n get_auth_idx(): number {\n const offset = 2;\n return this.view.getUint8(offset);\n }\n\n set_auth_idx(value: number): void {\n const offset = 2;\n this.view.setUint8(offset, value);\n }\n\n get auth_idx(): number {\n return this.get_auth_idx();\n }\n\n set auth_idx(value: number) {\n this.set_auth_idx(value);\n }\n\n get_signature_r(): P256Point {\n const offset = 3;\n const slice = this.buffer.subarray(offset, offset + 32);\n return P256Point.from_array(slice)!;\n }\n\n set_signature_r(value: P256Point): void {\n /* Copy bytes from source struct to this field */\n const sourceBytes = (value as any).buffer as Uint8Array;\n const offset = 3;\n this.buffer.set(sourceBytes, offset);\n }\n\n get signature_r(): P256Point {\n return this.get_signature_r();\n }\n\n set signature_r(value: P256Point) {\n this.set_signature_r(value);\n }\n\n get_signature_s(): P256Point {\n const offset = 35;\n const slice = this.buffer.subarray(offset, offset + 32);\n return P256Point.from_array(slice)!;\n }\n\n set_signature_s(value: P256Point): void {\n /* Copy bytes from source struct to this field */\n const sourceBytes = (value as any).buffer as Uint8Array;\n const offset = 35;\n this.buffer.set(sourceBytes, offset);\n }\n\n get signature_s(): P256Point {\n return this.get_signature_s();\n }\n\n set signature_s(value: P256Point) {\n this.set_signature_s(value);\n }\n\n get_authenticator_data_len(): number {\n const offset = 67;\n return this.view.getUint16(offset, true); /* little-endian */\n }\n\n set_authenticator_data_len(value: number): void {\n const offset = 67;\n this.view.setUint16(offset, value, true); /* little-endian */\n }\n\n get authenticator_data_len(): number {\n return this.get_authenticator_data_len();\n }\n\n set authenticator_data_len(value: number) {\n this.set_authenticator_data_len(value);\n }\n\n get_client_data_len(): number {\n const offset = 69;\n return this.view.getUint16(offset, true); /* little-endian */\n }\n\n set_client_data_len(value: number): void {\n const offset = 69;\n this.view.setUint16(offset, value, true); /* little-endian */\n }\n\n get client_data_len(): number {\n return this.get_client_data_len();\n }\n\n set client_data_len(value: number) {\n this.set_client_data_len(value);\n }\n\n get_authenticator_data_length(): number {\n return this.__tnResolveFieldRef(\"authenticator_data_len\");\n }\n\n get_authenticator_data_at(index: number): number {\n const offset = 71;\n return this.view.getUint8(offset + index * 1);\n }\n\n get_authenticator_data(): number[] {\n const len = this.get_authenticator_data_length();\n const result: number[] = [];\n for (let i = 0; i < len; i++) {\n result.push(this.get_authenticator_data_at(i));\n }\n return result;\n }\n\n set_authenticator_data_at(index: number, value: number): void {\n const offset = 71;\n this.view.setUint8((offset + index * 1), value);\n }\n\n set_authenticator_data(value: number[]): void {\n const len = Math.min(this.get_authenticator_data_length(), value.length);\n for (let i = 0; i < len; i++) {\n this.set_authenticator_data_at(i, value[i]);\n }\n }\n\n get authenticator_data(): number[] {\n return this.get_authenticator_data();\n }\n\n set authenticator_data(value: number[]) {\n this.set_authenticator_data(value);\n }\n\n get_client_data_length(): number {\n return this.__tnResolveFieldRef(\"client_data_len\");\n }\n\n get_client_data_at(index: number): number {\n const offset = this.__tnGetDynamicOffset(\"client_data\");\n return this.view.getUint8(offset + index * 1);\n }\n\n get_client_data(): number[] {\n const len = this.get_client_data_length();\n const result: number[] = [];\n for (let i = 0; i < len; i++) {\n result.push(this.get_client_data_at(i));\n }\n return result;\n }\n\n set_client_data_at(index: number, value: number): void {\n const offset = this.__tnGetDynamicOffset(\"client_data\");\n this.view.setUint8((offset + index * 1), value);\n }\n\n set_client_data(value: number[]): void {\n const len = Math.min(this.get_client_data_length(), value.length);\n for (let i = 0; i < len; i++) {\n this.set_client_data_at(i, value[i]);\n }\n }\n\n get client_data(): number[] {\n return this.get_client_data();\n }\n\n set client_data(value: number[]) {\n this.set_client_data(value);\n }\n\n get_target_instruction(): InstructionData {\n const offset = this.__tnGetDynamicOffset(\"target_instruction\");\n const tail = this.buffer.subarray(offset);\n const validation = InstructionData.validate(tail);\n if (!validation.ok || validation.consumed === undefined) {\n throw new Error(\"ValidateArgs: failed to read field 'target_instruction' (invalid nested payload)\");\n }\n const length = validation.consumed;\n const slice = tail.subarray(0, length);\n const opts = validation.params ? { params: validation.params } : undefined;\n return InstructionData.from_array(slice, opts)!;\n }\n\n set_target_instruction(value: InstructionData): void {\n /* Copy bytes from source struct to this field */\n const sourceBytes = (value as any).buffer as Uint8Array;\n const offset = this.__tnGetDynamicOffset(\"target_instruction\");\n this.buffer.set(sourceBytes, offset);\n }\n\n get target_instruction(): InstructionData {\n return this.get_target_instruction();\n }\n\n set target_instruction(value: InstructionData) {\n this.set_target_instruction(value);\n }\n private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n return __tnEvalFootprint(__tn_ir_ValidateArgs.root, { params: __tnParams });\n }\n\n private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n return __tnValidateIrTree(__tn_ir_ValidateArgs, buffer, __tnParams);\n }\n\n static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n return this.__tnFootprintInternal(__tnParams);\n }\n\n static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n return this.__tnValidateInternal(buffer, __tnParams);\n }\n\n static footprintIr(authenticator_data_authenticator_data_len: number | bigint, client_data_client_data_len: number | bigint): bigint {\n const params = ValidateArgs.Params.fromValues({\n authenticator_data_authenticator_data_len: authenticator_data_authenticator_data_len,\n client_data_client_data_len: client_data_client_data_len,\n });\n return this.footprintIrFromParams(params);\n }\n\n private static __tnPackParams(params: ValidateArgs.Params): Record<string, bigint> {\n const record: Record<string, bigint> = Object.create(null);\n record[\"authenticator_data.authenticator_data_len\"] = params.authenticator_data_authenticator_data_len;\n record[\"client_data.client_data_len\"] = params.client_data_client_data_len;\n return record;\n }\n\n static footprintIrFromParams(params: ValidateArgs.Params): bigint {\n const __tnParams = this.__tnPackParams(params);\n return this.__tnFootprintInternal(__tnParams);\n }\n\n static footprintFromParams(params: ValidateArgs.Params): number {\n const irResult = this.footprintIrFromParams(params);\n const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n if (__tnBigIntGreaterThan(irResult, maxSafe)) throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for ValidateArgs');\n return __tnBigIntToNumber(irResult, 'ValidateArgs::footprintFromParams');\n }\n\n static footprintFromValues(input: { authenticator_data_authenticator_data_len: number | bigint, client_data_client_data_len: number | bigint }): number {\n const params = ValidateArgs.params(input);\n return this.footprintFromParams(params);\n }\n\n static footprint(params: ValidateArgs.Params): number {\n return this.footprintFromParams(params);\n }\n\n static validate(buffer: Uint8Array, opts?: { params?: ValidateArgs.Params }): { ok: boolean; code?: string; consumed?: number; params?: ValidateArgs.Params } {\n if (!buffer || buffer.length === undefined) {\n return { ok: false, code: \"tn.invalid_buffer\" };\n }\n const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n let params = opts?.params ?? null;\n if (!params) {\n const extracted = this.__tnExtractParams(view, buffer);\n if (!extracted) return { ok: false, code: \"tn.param_extraction_failed\" };\n params = extracted.params;\n }\n const __tnParamsRec = this.__tnPackParams(params);\n const irResult = this.__tnValidateInternal(buffer, __tnParamsRec);\n if (!irResult.ok) {\n return { ok: false, code: irResult.code, consumed: irResult.consumed ? __tnBigIntToNumber(irResult.consumed, 'ValidateArgs::validate') : undefined, params };\n }\n const consumed = irResult.consumed ? __tnBigIntToNumber(irResult.consumed, 'ValidateArgs::validate') : undefined;\n return { ok: true, consumed, params };\n }\n\n static from_array(buffer: Uint8Array, opts?: { params?: ValidateArgs.Params }): ValidateArgs | null {\n if (!buffer || buffer.length === undefined) {\n return null;\n }\n const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n let params = opts?.params ?? null;\n if (!params) {\n const derived = this.__tnExtractParams(view, buffer);\n if (!derived) return null;\n params = derived.params;\n }\n const validation = this.validate(buffer, { params });\n if (!validation.ok) {\n return null;\n }\n const cached = validation.params ?? params;\n const state = new ValidateArgs(buffer, cached);\n return state;\n }\n\n\n}\n\nexport namespace ValidateArgs {\n export type Params = {\n /** ABI path: authenticator_data.authenticator_data_len */\n readonly authenticator_data_authenticator_data_len: bigint;\n /** ABI path: client_data.client_data_len */\n readonly client_data_client_data_len: bigint;\n };\n\n export const ParamKeys = Object.freeze({\n authenticator_data_authenticator_data_len: \"authenticator_data.authenticator_data_len\",\n client_data_client_data_len: \"client_data.client_data_len\",\n } as const);\n\n export const Params = {\n fromValues(input: { authenticator_data_authenticator_data_len: number | bigint, client_data_client_data_len: number | bigint }): Params {\n return {\n authenticator_data_authenticator_data_len: __tnToBigInt(input.authenticator_data_authenticator_data_len),\n client_data_client_data_len: __tnToBigInt(input.client_data_client_data_len),\n };\n },\n fromBuilder(source: { dynamicParams(): Params } | { params: Params } | Params): Params {\n if ((source as { dynamicParams?: () => Params }).dynamicParams) {\n return (source as { dynamicParams(): Params }).dynamicParams();\n }\n if ((source as { params?: Params }).params) {\n return (source as { params: Params }).params;\n }\n return source as Params;\n }\n };\n\n export function params(input: { authenticator_data_authenticator_data_len: number | bigint, client_data_client_data_len: number | bigint }): Params {\n return Params.fromValues(input);\n }\n}\n\n__tnRegisterFootprint(\"ValidateArgs\", (params) => ValidateArgs.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"ValidateArgs\", (buffer, params) => ValidateArgs.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"ValidateArgs\", (buffer) => { const result = ValidateArgs.validate(buffer); return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed) }; });\n\n/* ----- TYPE DEFINITION FOR WalletAccount ----- */\n\nconst __tn_ir_WalletAccount = {\n typeName: \"WalletAccount\",\n root: { op: \"const\", value: 9n }\n} as const;\n\nexport class WalletAccount {\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> }): WalletAccount {\n if (!buffer || buffer.length === undefined) throw new Error(\"WalletAccount.__tnCreateView requires a Uint8Array\");\n return new WalletAccount(new Uint8Array(buffer));\n }\n\n static builder(): WalletAccountBuilder {\n return new WalletAccountBuilder();\n }\n\n static fromBuilder(builder: WalletAccountBuilder): WalletAccount | null {\n const buffer = builder.build();\n return WalletAccount.from_array(buffer);\n }\n\n get_num_auth(): number {\n const offset = 0;\n return this.view.getUint8(offset);\n }\n\n set_num_auth(value: number): void {\n const offset = 0;\n this.view.setUint8(offset, value);\n }\n\n get num_auth(): number {\n return this.get_num_auth();\n }\n\n set num_auth(value: number) {\n this.set_num_auth(value);\n }\n\n get_nonce(): bigint {\n const offset = 1;\n return this.view.getBigUint64(offset, true); /* little-endian */\n }\n\n set_nonce(value: bigint): void {\n const offset = 1;\n this.view.setBigUint64(offset, value, true); /* little-endian */\n }\n\n get nonce(): bigint {\n return this.get_nonce();\n }\n\n set nonce(value: bigint) {\n this.set_nonce(value);\n }\n\n private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n return __tnEvalFootprint(__tn_ir_WalletAccount.root, { params: __tnParams });\n }\n\n private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n return __tnValidateIrTree(__tn_ir_WalletAccount, buffer, __tnParams);\n }\n\n static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n return this.__tnFootprintInternal(__tnParams);\n }\n\n static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n return this.__tnValidateInternal(buffer, __tnParams);\n }\n\n static footprintIr(): 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 WalletAccount');\n }\n return __tnBigIntToNumber(irResult, 'WalletAccount::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(num_auth: number, nonce: bigint): WalletAccount {\n const buffer = new Uint8Array(9);\n const view = new DataView(buffer.buffer);\n\n let offset = 0;\n view.setUint8(0, num_auth); /* num_auth */\n view.setBigUint64(1, nonce, true); /* nonce (little-endian) */\n\n return new WalletAccount(buffer);\n }\n\n static from_array(buffer: Uint8Array): WalletAccount | 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 WalletAccount(buffer);\n }\n\n}\n\nexport class WalletAccountBuilder {\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_num_auth(value: number): this {\n this.view.setUint8(0, value);\n return this;\n }\n\n set_nonce(value: number): this {\n const cast = __tnToBigInt(value);\n this.view.setBigUint64(1, 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(): WalletAccount {\n const view = WalletAccount.from_array(this.buffer.slice());\n if (!view) throw new Error(\"failed to build WalletAccount\");\n return view;\n }\n}\n\n__tnRegisterFootprint(\"WalletAccount\", (params) => WalletAccount.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"WalletAccount\", (buffer, params) => WalletAccount.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"WalletAccount\", (buffer) => { const result = WalletAccount.validate(buffer); return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed) }; });\n\n/* ----- TYPE DEFINITION FOR WalletCreatedEventData ----- */\n\nconst __tn_ir_WalletCreatedEventData = {\n typeName: \"WalletCreatedEventData\",\n root: { op: \"const\", value: 97n }\n} as const;\n\nexport class WalletCreatedEventData {\n private view: DataView;\n\n private constructor(private buffer: Uint8Array) {\n this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n }\n\n static __tnCreateView(buffer: Uint8Array, opts?: { fieldContext?: Record<string, number | bigint> }): WalletCreatedEventData {\n if (!buffer || buffer.length === undefined) throw new Error(\"WalletCreatedEventData.__tnCreateView requires a Uint8Array\");\n return new WalletCreatedEventData(new Uint8Array(buffer));\n }\n\n static builder(): WalletCreatedEventDataBuilder {\n return new WalletCreatedEventDataBuilder();\n }\n\n static fromBuilder(builder: WalletCreatedEventDataBuilder): WalletCreatedEventData | null {\n const buffer = builder.build();\n return WalletCreatedEventData.from_array(buffer);\n }\n\n get_wallet(): Pubkey {\n const offset = 0;\n const slice = this.buffer.subarray(offset, offset + 32);\n return Pubkey.from_array(slice)!;\n }\n\n set_wallet(value: Pubkey): void {\n /* Copy bytes from source struct to this field */\n const sourceBytes = (value as any).buffer as Uint8Array;\n const offset = 0;\n this.buffer.set(sourceBytes, offset);\n }\n\n get wallet(): Pubkey {\n return this.get_wallet();\n }\n\n set wallet(value: Pubkey) {\n this.set_wallet(value);\n }\n\n get_authority(): Authority {\n const offset = 32;\n const slice = this.buffer.subarray(offset, offset + 65);\n return Authority.from_array(slice)!;\n }\n\n set_authority(value: Authority): void {\n /* Copy bytes from source struct to this field */\n const sourceBytes = (value as any).buffer as Uint8Array;\n const offset = 32;\n this.buffer.set(sourceBytes, offset);\n }\n\n get authority(): Authority {\n return this.get_authority();\n }\n\n set authority(value: Authority) {\n this.set_authority(value);\n }\n\n private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n return __tnEvalFootprint(__tn_ir_WalletCreatedEventData.root, { params: __tnParams });\n }\n\n private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n return __tnValidateIrTree(__tn_ir_WalletCreatedEventData, buffer, __tnParams);\n }\n\n static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n return this.__tnFootprintInternal(__tnParams);\n }\n\n static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n return this.__tnValidateInternal(buffer, __tnParams);\n }\n\n static footprintIr(): bigint {\n return this.__tnFootprintInternal(Object.create(null));\n }\n\n static footprint(): number {\n const irResult = this.footprintIr();\n const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n if (__tnBigIntGreaterThan(irResult, maxSafe)) {\n throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for WalletCreatedEventData');\n }\n return __tnBigIntToNumber(irResult, 'WalletCreatedEventData::footprint');\n }\n\n static validate(buffer: Uint8Array, _opts?: { params?: never }): { ok: boolean; code?: string; consumed?: number } {\n if (buffer.length < 97) return { ok: false, code: \"tn.buffer_too_small\", consumed: 97 };\n return { ok: true, consumed: 97 };\n }\n\n static from_array(buffer: Uint8Array): WalletCreatedEventData | null {\n if (!buffer || buffer.length === undefined) {\n return null;\n }\n const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n const validation = this.validate(buffer);\n if (!validation.ok) {\n return null;\n }\n return new WalletCreatedEventData(buffer);\n }\n\n}\n\nexport class WalletCreatedEventDataBuilder {\n private buffer: Uint8Array;\n private view: DataView;\n\n constructor() {\n this.buffer = new Uint8Array(97);\n this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n }\n\n set_wallet(value: Uint8Array): this {\n if (value.length !== 32) throw new Error(\"wallet expects 32 bytes\");\n this.buffer.set(value, 0);\n return this;\n }\n\n set_authority(value: Uint8Array): this {\n if (value.length !== 65) throw new Error(\"authority expects 65 bytes\");\n this.buffer.set(value, 32);\n return this;\n }\n\n build(): Uint8Array {\n return this.buffer.slice();\n }\n\n buildInto(target: Uint8Array, offset = 0): Uint8Array {\n if (target.length - offset < this.buffer.length) throw new Error(\"target buffer too small\");\n target.set(this.buffer, offset);\n return target;\n }\n\n finish(): WalletCreatedEventData {\n const view = WalletCreatedEventData.from_array(this.buffer.slice());\n if (!view) throw new Error(\"failed to build WalletCreatedEventData\");\n return view;\n }\n}\n\n__tnRegisterFootprint(\"WalletCreatedEventData\", (params) => WalletCreatedEventData.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"WalletCreatedEventData\", (buffer, params) => WalletCreatedEventData.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"WalletCreatedEventData\", (buffer) => { const result = WalletCreatedEventData.validate(buffer); return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed) }; });\n\n/* ----- TYPE DEFINITION FOR WalletTransferEventData ----- */\n\nconst __tn_ir_WalletTransferEventData = {\n typeName: \"WalletTransferEventData\",\n root: { op: \"const\", value: 72n }\n} as const;\n\nexport class WalletTransferEventData {\n private view: DataView;\n\n private constructor(private buffer: Uint8Array) {\n this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n }\n\n static __tnCreateView(buffer: Uint8Array, opts?: { fieldContext?: Record<string, number | bigint> }): WalletTransferEventData {\n if (!buffer || buffer.length === undefined) throw new Error(\"WalletTransferEventData.__tnCreateView requires a Uint8Array\");\n return new WalletTransferEventData(new Uint8Array(buffer));\n }\n\n static builder(): WalletTransferEventDataBuilder {\n return new WalletTransferEventDataBuilder();\n }\n\n static fromBuilder(builder: WalletTransferEventDataBuilder): WalletTransferEventData | null {\n const buffer = builder.build();\n return WalletTransferEventData.from_array(buffer);\n }\n\n get_wallet(): Pubkey {\n const offset = 0;\n const slice = this.buffer.subarray(offset, offset + 32);\n return Pubkey.from_array(slice)!;\n }\n\n set_wallet(value: Pubkey): void {\n /* Copy bytes from source struct to this field */\n const sourceBytes = (value as any).buffer as Uint8Array;\n const offset = 0;\n this.buffer.set(sourceBytes, offset);\n }\n\n get wallet(): Pubkey {\n return this.get_wallet();\n }\n\n set wallet(value: Pubkey) {\n this.set_wallet(value);\n }\n\n get_to(): Pubkey {\n const offset = 32;\n const slice = this.buffer.subarray(offset, offset + 32);\n return Pubkey.from_array(slice)!;\n }\n\n set_to(value: Pubkey): void {\n /* Copy bytes from source struct to this field */\n const sourceBytes = (value as any).buffer as Uint8Array;\n const offset = 32;\n this.buffer.set(sourceBytes, offset);\n }\n\n get to(): Pubkey {\n return this.get_to();\n }\n\n set to(value: Pubkey) {\n this.set_to(value);\n }\n\n get_amount(): bigint {\n const offset = 64;\n return this.view.getBigUint64(offset, true); /* little-endian */\n }\n\n set_amount(value: bigint): void {\n const offset = 64;\n this.view.setBigUint64(offset, value, true); /* little-endian */\n }\n\n get amount(): bigint {\n return this.get_amount();\n }\n\n set amount(value: bigint) {\n this.set_amount(value);\n }\n\n private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n return __tnEvalFootprint(__tn_ir_WalletTransferEventData.root, { params: __tnParams });\n }\n\n private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n return __tnValidateIrTree(__tn_ir_WalletTransferEventData, buffer, __tnParams);\n }\n\n static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n return this.__tnFootprintInternal(__tnParams);\n }\n\n static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n return this.__tnValidateInternal(buffer, __tnParams);\n }\n\n static footprintIr(): bigint {\n return this.__tnFootprintInternal(Object.create(null));\n }\n\n static footprint(): number {\n const irResult = this.footprintIr();\n const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n if (__tnBigIntGreaterThan(irResult, maxSafe)) {\n throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for WalletTransferEventData');\n }\n return __tnBigIntToNumber(irResult, 'WalletTransferEventData::footprint');\n }\n\n static validate(buffer: Uint8Array, _opts?: { params?: never }): { ok: boolean; code?: string; consumed?: number } {\n if (buffer.length < 72) return { ok: false, code: \"tn.buffer_too_small\", consumed: 72 };\n return { ok: true, consumed: 72 };\n }\n\n static from_array(buffer: Uint8Array): WalletTransferEventData | null {\n if (!buffer || buffer.length === undefined) {\n return null;\n }\n const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n const validation = this.validate(buffer);\n if (!validation.ok) {\n return null;\n }\n return new WalletTransferEventData(buffer);\n }\n\n}\n\nexport class WalletTransferEventDataBuilder {\n private buffer: Uint8Array;\n private view: DataView;\n\n constructor() {\n this.buffer = new Uint8Array(72);\n this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n }\n\n set_wallet(value: Uint8Array): this {\n if (value.length !== 32) throw new Error(\"wallet expects 32 bytes\");\n this.buffer.set(value, 0);\n return this;\n }\n\n set_to(value: Uint8Array): this {\n if (value.length !== 32) throw new Error(\"to expects 32 bytes\");\n this.buffer.set(value, 32);\n return this;\n }\n\n set_amount(value: number): this {\n const cast = __tnToBigInt(value);\n this.view.setBigUint64(64, cast, true);\n return this;\n }\n\n build(): Uint8Array {\n return this.buffer.slice();\n }\n\n buildInto(target: Uint8Array, offset = 0): Uint8Array {\n if (target.length - offset < this.buffer.length) throw new Error(\"target buffer too small\");\n target.set(this.buffer, offset);\n return target;\n }\n\n finish(): WalletTransferEventData {\n const view = WalletTransferEventData.from_array(this.buffer.slice());\n if (!view) throw new Error(\"failed to build WalletTransferEventData\");\n return view;\n }\n}\n\n__tnRegisterFootprint(\"WalletTransferEventData\", (params) => WalletTransferEventData.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"WalletTransferEventData\", (buffer, params) => WalletTransferEventData.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"WalletTransferEventData\", (buffer) => { const result = WalletTransferEventData.validate(buffer); return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed) }; });\n\n/* ----- TYPE DEFINITION FOR WalletValidatedEventData ----- */\n\nconst __tn_ir_WalletValidatedEventData = {\n typeName: \"WalletValidatedEventData\",\n root: { op: \"const\", value: 40n }\n} as const;\n\nexport class WalletValidatedEventData {\n private view: DataView;\n\n private constructor(private buffer: Uint8Array) {\n this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n }\n\n static __tnCreateView(buffer: Uint8Array, opts?: { fieldContext?: Record<string, number | bigint> }): WalletValidatedEventData {\n if (!buffer || buffer.length === undefined) throw new Error(\"WalletValidatedEventData.__tnCreateView requires a Uint8Array\");\n return new WalletValidatedEventData(new Uint8Array(buffer));\n }\n\n static builder(): WalletValidatedEventDataBuilder {\n return new WalletValidatedEventDataBuilder();\n }\n\n static fromBuilder(builder: WalletValidatedEventDataBuilder): WalletValidatedEventData | null {\n const buffer = builder.build();\n return WalletValidatedEventData.from_array(buffer);\n }\n\n get_wallet(): Pubkey {\n const offset = 0;\n const slice = this.buffer.subarray(offset, offset + 32);\n return Pubkey.from_array(slice)!;\n }\n\n set_wallet(value: Pubkey): void {\n /* Copy bytes from source struct to this field */\n const sourceBytes = (value as any).buffer as Uint8Array;\n const offset = 0;\n this.buffer.set(sourceBytes, offset);\n }\n\n get wallet(): Pubkey {\n return this.get_wallet();\n }\n\n set wallet(value: Pubkey) {\n this.set_wallet(value);\n }\n\n get_new_nonce(): bigint {\n const offset = 32;\n return this.view.getBigUint64(offset, true); /* little-endian */\n }\n\n set_new_nonce(value: bigint): void {\n const offset = 32;\n this.view.setBigUint64(offset, value, true); /* little-endian */\n }\n\n get new_nonce(): bigint {\n return this.get_new_nonce();\n }\n\n set new_nonce(value: bigint) {\n this.set_new_nonce(value);\n }\n\n private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n return __tnEvalFootprint(__tn_ir_WalletValidatedEventData.root, { params: __tnParams });\n }\n\n private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n return __tnValidateIrTree(__tn_ir_WalletValidatedEventData, buffer, __tnParams);\n }\n\n static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n return this.__tnFootprintInternal(__tnParams);\n }\n\n static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n return this.__tnValidateInternal(buffer, __tnParams);\n }\n\n static footprintIr(): bigint {\n return this.__tnFootprintInternal(Object.create(null));\n }\n\n static footprint(): number {\n const irResult = this.footprintIr();\n const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n if (__tnBigIntGreaterThan(irResult, maxSafe)) {\n throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for WalletValidatedEventData');\n }\n return __tnBigIntToNumber(irResult, 'WalletValidatedEventData::footprint');\n }\n\n static validate(buffer: Uint8Array, _opts?: { params?: never }): { ok: boolean; code?: string; consumed?: number } {\n if (buffer.length < 40) return { ok: false, code: \"tn.buffer_too_small\", consumed: 40 };\n return { ok: true, consumed: 40 };\n }\n\n static from_array(buffer: Uint8Array): WalletValidatedEventData | null {\n if (!buffer || buffer.length === undefined) {\n return null;\n }\n const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n const validation = this.validate(buffer);\n if (!validation.ok) {\n return null;\n }\n return new WalletValidatedEventData(buffer);\n }\n\n}\n\nexport class WalletValidatedEventDataBuilder {\n private buffer: Uint8Array;\n private view: DataView;\n\n constructor() {\n this.buffer = new Uint8Array(40);\n this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n }\n\n set_wallet(value: Uint8Array): this {\n if (value.length !== 32) throw new Error(\"wallet expects 32 bytes\");\n this.buffer.set(value, 0);\n return this;\n }\n\n set_new_nonce(value: number): this {\n const cast = __tnToBigInt(value);\n this.view.setBigUint64(32, cast, true);\n return this;\n }\n\n build(): Uint8Array {\n return this.buffer.slice();\n }\n\n buildInto(target: Uint8Array, offset = 0): Uint8Array {\n if (target.length - offset < this.buffer.length) throw new Error(\"target buffer too small\");\n target.set(this.buffer, offset);\n return target;\n }\n\n finish(): WalletValidatedEventData {\n const view = WalletValidatedEventData.from_array(this.buffer.slice());\n if (!view) throw new Error(\"failed to build WalletValidatedEventData\");\n return view;\n }\n}\n\n__tnRegisterFootprint(\"WalletValidatedEventData\", (params) => WalletValidatedEventData.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"WalletValidatedEventData\", (buffer, params) => WalletValidatedEventData.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"WalletValidatedEventData\", (buffer) => { const result = WalletValidatedEventData.validate(buffer); return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed) }; });\n\n/* ----- TYPE DEFINITION FOR AddAuthorityArgs ----- */\n\nconst __tn_ir_AddAuthorityArgs = {\n typeName: \"AddAuthorityArgs\",\n root: { op: \"const\", value: 67n }\n} as const;\n\nexport class AddAuthorityArgs {\n private view: DataView;\n\n private constructor(private buffer: Uint8Array) {\n this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n }\n\n static __tnCreateView(buffer: Uint8Array, opts?: { fieldContext?: Record<string, number | bigint> }): AddAuthorityArgs {\n if (!buffer || buffer.length === undefined) throw new Error(\"AddAuthorityArgs.__tnCreateView requires a Uint8Array\");\n return new AddAuthorityArgs(new Uint8Array(buffer));\n }\n\n static builder(): AddAuthorityArgsBuilder {\n return new AddAuthorityArgsBuilder();\n }\n\n static fromBuilder(builder: AddAuthorityArgsBuilder): AddAuthorityArgs | null {\n const buffer = builder.build();\n return AddAuthorityArgs.from_array(buffer);\n }\n\n get_wallet_account_idx(): number {\n const offset = 0;\n return this.view.getUint16(offset, true); /* little-endian */\n }\n\n set_wallet_account_idx(value: number): void {\n const offset = 0;\n this.view.setUint16(offset, value, true); /* little-endian */\n }\n\n get wallet_account_idx(): number {\n return this.get_wallet_account_idx();\n }\n\n set wallet_account_idx(value: number) {\n this.set_wallet_account_idx(value);\n }\n\n get_authority(): Authority {\n const offset = 2;\n const slice = this.buffer.subarray(offset, offset + 65);\n return Authority.from_array(slice)!;\n }\n\n set_authority(value: Authority): void {\n /* Copy bytes from source struct to this field */\n const sourceBytes = (value as any).buffer as Uint8Array;\n const offset = 2;\n this.buffer.set(sourceBytes, offset);\n }\n\n get authority(): Authority {\n return this.get_authority();\n }\n\n set authority(value: Authority) {\n this.set_authority(value);\n }\n\n private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n return __tnEvalFootprint(__tn_ir_AddAuthorityArgs.root, { params: __tnParams });\n }\n\n private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n return __tnValidateIrTree(__tn_ir_AddAuthorityArgs, buffer, __tnParams);\n }\n\n static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n return this.__tnFootprintInternal(__tnParams);\n }\n\n static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n return this.__tnValidateInternal(buffer, __tnParams);\n }\n\n static footprintIr(): bigint {\n return this.__tnFootprintInternal(Object.create(null));\n }\n\n static footprint(): number {\n const irResult = this.footprintIr();\n const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n if (__tnBigIntGreaterThan(irResult, maxSafe)) {\n throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for AddAuthorityArgs');\n }\n return __tnBigIntToNumber(irResult, 'AddAuthorityArgs::footprint');\n }\n\n static validate(buffer: Uint8Array, _opts?: { params?: never }): { ok: boolean; code?: string; consumed?: number } {\n if (buffer.length < 67) return { ok: false, code: \"tn.buffer_too_small\", consumed: 67 };\n return { ok: true, consumed: 67 };\n }\n\n static from_array(buffer: Uint8Array): AddAuthorityArgs | null {\n if (!buffer || buffer.length === undefined) {\n return null;\n }\n const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n const validation = this.validate(buffer);\n if (!validation.ok) {\n return null;\n }\n return new AddAuthorityArgs(buffer);\n }\n\n}\n\nexport class AddAuthorityArgsBuilder {\n private buffer: Uint8Array;\n private view: DataView;\n\n constructor() {\n this.buffer = new Uint8Array(67);\n this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n }\n\n set_wallet_account_idx(value: number): this {\n this.view.setUint16(0, value, true);\n return this;\n }\n\n set_authority(value: Uint8Array): this {\n if (value.length !== 65) throw new Error(\"authority expects 65 bytes\");\n this.buffer.set(value, 2);\n return this;\n }\n\n build(): Uint8Array {\n return this.buffer.slice();\n }\n\n buildInto(target: Uint8Array, offset = 0): Uint8Array {\n if (target.length - offset < this.buffer.length) throw new Error(\"target buffer too small\");\n target.set(this.buffer, offset);\n return target;\n }\n\n finish(): AddAuthorityArgs {\n const view = AddAuthorityArgs.from_array(this.buffer.slice());\n if (!view) throw new Error(\"failed to build AddAuthorityArgs\");\n return view;\n }\n}\n\n__tnRegisterFootprint(\"AddAuthorityArgs\", (params) => AddAuthorityArgs.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"AddAuthorityArgs\", (buffer, params) => AddAuthorityArgs.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"AddAuthorityArgs\", (buffer) => { const result = AddAuthorityArgs.validate(buffer); return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed) }; });\n\n/* ----- TYPE DEFINITION FOR CredentialLookup ----- */\n\nconst __tn_ir_CredentialLookup = {\n typeName: \"CredentialLookup\",\n root: { op: \"const\", value: 32n }\n} as const;\n\nexport class CredentialLookup {\n private view: DataView;\n\n private constructor(private buffer: Uint8Array) {\n this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n }\n\n static __tnCreateView(buffer: Uint8Array, opts?: { fieldContext?: Record<string, number | bigint> }): CredentialLookup {\n if (!buffer || buffer.length === undefined) throw new Error(\"CredentialLookup.__tnCreateView requires a Uint8Array\");\n return new CredentialLookup(new Uint8Array(buffer));\n }\n\n static builder(): CredentialLookupBuilder {\n return new CredentialLookupBuilder();\n }\n\n static fromBuilder(builder: CredentialLookupBuilder): CredentialLookup | null {\n const buffer = builder.build();\n return CredentialLookup.from_array(buffer);\n }\n\n get_wallet(): Pubkey {\n const offset = 0;\n const slice = this.buffer.subarray(offset, offset + 32);\n return Pubkey.from_array(slice)!;\n }\n\n set_wallet(value: Pubkey): void {\n /* Copy bytes from source struct to this field */\n const sourceBytes = (value as any).buffer as Uint8Array;\n const offset = 0;\n this.buffer.set(sourceBytes, offset);\n }\n\n get wallet(): Pubkey {\n return this.get_wallet();\n }\n\n set wallet(value: Pubkey) {\n this.set_wallet(value);\n }\n\n private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n return __tnEvalFootprint(__tn_ir_CredentialLookup.root, { params: __tnParams });\n }\n\n private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n return __tnValidateIrTree(__tn_ir_CredentialLookup, buffer, __tnParams);\n }\n\n static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n return this.__tnFootprintInternal(__tnParams);\n }\n\n static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n return this.__tnValidateInternal(buffer, __tnParams);\n }\n\n static footprintIr(): bigint {\n return this.__tnFootprintInternal(Object.create(null));\n }\n\n static footprint(): number {\n const irResult = this.footprintIr();\n const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n if (__tnBigIntGreaterThan(irResult, maxSafe)) {\n throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for CredentialLookup');\n }\n return __tnBigIntToNumber(irResult, 'CredentialLookup::footprint');\n }\n\n static validate(buffer: Uint8Array, _opts?: { params?: never }): { ok: boolean; code?: string; consumed?: number } {\n if (buffer.length < 32) return { ok: false, code: \"tn.buffer_too_small\", consumed: 32 };\n return { ok: true, consumed: 32 };\n }\n\n static from_array(buffer: Uint8Array): CredentialLookup | null {\n if (!buffer || buffer.length === undefined) {\n return null;\n }\n const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n const validation = this.validate(buffer);\n if (!validation.ok) {\n return null;\n }\n return new CredentialLookup(buffer);\n }\n\n}\n\nexport class CredentialLookupBuilder {\n private buffer: Uint8Array;\n private view: DataView;\n\n constructor() {\n this.buffer = new Uint8Array(32);\n this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n }\n\n set_wallet(value: Uint8Array): this {\n if (value.length !== 32) throw new Error(\"wallet expects 32 bytes\");\n this.buffer.set(value, 0);\n return this;\n }\n\n build(): Uint8Array {\n return this.buffer.slice();\n }\n\n buildInto(target: Uint8Array, offset = 0): Uint8Array {\n if (target.length - offset < this.buffer.length) throw new Error(\"target buffer too small\");\n target.set(this.buffer, offset);\n return target;\n }\n\n finish(): CredentialLookup {\n const view = CredentialLookup.from_array(this.buffer.slice());\n if (!view) throw new Error(\"failed to build CredentialLookup\");\n return view;\n }\n}\n\n__tnRegisterFootprint(\"CredentialLookup\", (params) => CredentialLookup.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"CredentialLookup\", (buffer, params) => CredentialLookup.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"CredentialLookup\", (buffer) => { const result = CredentialLookup.validate(buffer); return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed) }; });\n\n/* ----- TYPE DEFINITION FOR CredentialRegisteredEventData ----- */\n\nconst __tn_ir_CredentialRegisteredEventData = {\n typeName: \"CredentialRegisteredEventData\",\n root: { op: \"const\", value: 64n }\n} as const;\n\nexport class CredentialRegisteredEventData {\n private view: DataView;\n\n private constructor(private buffer: Uint8Array) {\n this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n }\n\n static __tnCreateView(buffer: Uint8Array, opts?: { fieldContext?: Record<string, number | bigint> }): CredentialRegisteredEventData {\n if (!buffer || buffer.length === undefined) throw new Error(\"CredentialRegisteredEventData.__tnCreateView requires a Uint8Array\");\n return new CredentialRegisteredEventData(new Uint8Array(buffer));\n }\n\n static builder(): CredentialRegisteredEventDataBuilder {\n return new CredentialRegisteredEventDataBuilder();\n }\n\n static fromBuilder(builder: CredentialRegisteredEventDataBuilder): CredentialRegisteredEventData | null {\n const buffer = builder.build();\n return CredentialRegisteredEventData.from_array(buffer);\n }\n\n get_wallet(): Pubkey {\n const offset = 0;\n const slice = this.buffer.subarray(offset, offset + 32);\n return Pubkey.from_array(slice)!;\n }\n\n set_wallet(value: Pubkey): void {\n /* Copy bytes from source struct to this field */\n const sourceBytes = (value as any).buffer as Uint8Array;\n const offset = 0;\n this.buffer.set(sourceBytes, offset);\n }\n\n get wallet(): Pubkey {\n return this.get_wallet();\n }\n\n set wallet(value: Pubkey) {\n this.set_wallet(value);\n }\n\n get_lookup(): Pubkey {\n const offset = 32;\n const slice = this.buffer.subarray(offset, offset + 32);\n return Pubkey.from_array(slice)!;\n }\n\n set_lookup(value: Pubkey): void {\n /* Copy bytes from source struct to this field */\n const sourceBytes = (value as any).buffer as Uint8Array;\n const offset = 32;\n this.buffer.set(sourceBytes, offset);\n }\n\n get lookup(): Pubkey {\n return this.get_lookup();\n }\n\n set lookup(value: Pubkey) {\n this.set_lookup(value);\n }\n\n private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n return __tnEvalFootprint(__tn_ir_CredentialRegisteredEventData.root, { params: __tnParams });\n }\n\n private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n return __tnValidateIrTree(__tn_ir_CredentialRegisteredEventData, buffer, __tnParams);\n }\n\n static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n return this.__tnFootprintInternal(__tnParams);\n }\n\n static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n return this.__tnValidateInternal(buffer, __tnParams);\n }\n\n static footprintIr(): bigint {\n return this.__tnFootprintInternal(Object.create(null));\n }\n\n static footprint(): number {\n const irResult = this.footprintIr();\n const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n if (__tnBigIntGreaterThan(irResult, maxSafe)) {\n throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for CredentialRegisteredEventData');\n }\n return __tnBigIntToNumber(irResult, 'CredentialRegisteredEventData::footprint');\n }\n\n static validate(buffer: Uint8Array, _opts?: { params?: never }): { ok: boolean; code?: string; consumed?: number } {\n if (buffer.length < 64) return { ok: false, code: \"tn.buffer_too_small\", consumed: 64 };\n return { ok: true, consumed: 64 };\n }\n\n static from_array(buffer: Uint8Array): CredentialRegisteredEventData | null {\n if (!buffer || buffer.length === undefined) {\n return null;\n }\n const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n const validation = this.validate(buffer);\n if (!validation.ok) {\n return null;\n }\n return new CredentialRegisteredEventData(buffer);\n }\n\n}\n\nexport class CredentialRegisteredEventDataBuilder {\n private buffer: Uint8Array;\n private view: DataView;\n\n constructor() {\n this.buffer = new Uint8Array(64);\n this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n }\n\n set_wallet(value: Uint8Array): this {\n if (value.length !== 32) throw new Error(\"wallet expects 32 bytes\");\n this.buffer.set(value, 0);\n return this;\n }\n\n set_lookup(value: Uint8Array): this {\n if (value.length !== 32) throw new Error(\"lookup expects 32 bytes\");\n this.buffer.set(value, 32);\n return this;\n }\n\n build(): Uint8Array {\n return this.buffer.slice();\n }\n\n buildInto(target: Uint8Array, offset = 0): Uint8Array {\n if (target.length - offset < this.buffer.length) throw new Error(\"target buffer too small\");\n target.set(this.buffer, offset);\n return target;\n }\n\n finish(): CredentialRegisteredEventData {\n const view = CredentialRegisteredEventData.from_array(this.buffer.slice());\n if (!view) throw new Error(\"failed to build CredentialRegisteredEventData\");\n return view;\n }\n}\n\n__tnRegisterFootprint(\"CredentialRegisteredEventData\", (params) => CredentialRegisteredEventData.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"CredentialRegisteredEventData\", (buffer, params) => CredentialRegisteredEventData.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"CredentialRegisteredEventData\", (buffer) => { const result = CredentialRegisteredEventData.validate(buffer); return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed) }; });\n\n/* ----- TYPE DEFINITION FOR PasskeyEvent ----- */\n\nconst __tn_ir_PasskeyEvent = {\n typeName: \"PasskeyEvent\",\n root: { op: \"align\", alignment: 1, node: { op: \"add\", left: { op: \"align\", alignment: 1, node: { op: \"const\", value: 1n } }, right: { op: \"align\", alignment: 1, node: { op: \"switch\", tag: \"PasskeyEvent::payload.event_type\", cases: [{ value: 0, node: { op: \"align\", alignment: 1, node: { op: \"const\", value: 97n } } }, { value: 1, node: { op: \"align\", alignment: 1, node: { op: \"const\", value: 40n } } }, { value: 2, node: { op: \"align\", alignment: 1, node: { op: \"const\", value: 72n } } }, { value: 3, node: { op: \"align\", alignment: 1, node: { op: \"const\", value: 64n } } }] } } } }\n} as const;\n\nexport class PasskeyEvent_payload_Inner {\n private view: DataView;\n private __tnFieldContext: Record<string, number | bigint> | null = null;\n private constructor(private buffer: Uint8Array, private descriptor: __TnVariantDescriptor | null, fieldContext?: Record<string, number | bigint>) {\n this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n this.__tnFieldContext = fieldContext ?? null;\n }\n\n static __tnCreate(payload: Uint8Array, descriptor: __TnVariantDescriptor | null, fieldContext?: Record<string, number | bigint>): PasskeyEvent_payload_Inner {\n return new PasskeyEvent_payload_Inner(new Uint8Array(payload), descriptor, fieldContext);\n }\n\n bytes(): Uint8Array {\n return new Uint8Array(this.buffer);\n }\n\n variant(): __TnVariantDescriptor | null {\n return this.descriptor;\n }\n\n asWalletCreated(): WalletCreatedEventData | null {\n if (!this.descriptor || this.descriptor.tag !== 0) return null;\n return WalletCreatedEventData.__tnCreateView(new Uint8Array(this.buffer), { fieldContext: this.__tnFieldContext ?? undefined });\n }\n\n asWalletValidated(): WalletValidatedEventData | null {\n if (!this.descriptor || this.descriptor.tag !== 1) return null;\n return WalletValidatedEventData.__tnCreateView(new Uint8Array(this.buffer), { fieldContext: this.__tnFieldContext ?? undefined });\n }\n\n asWalletTransfer(): WalletTransferEventData | null {\n if (!this.descriptor || this.descriptor.tag !== 2) return null;\n return WalletTransferEventData.__tnCreateView(new Uint8Array(this.buffer), { fieldContext: this.__tnFieldContext ?? undefined });\n }\n\n asCredentialRegistered(): CredentialRegisteredEventData | null {\n if (!this.descriptor || this.descriptor.tag !== 3) return null;\n return CredentialRegisteredEventData.__tnCreateView(new Uint8Array(this.buffer), { fieldContext: this.__tnFieldContext ?? undefined });\n }\n\n}\n\nexport class PasskeyEvent {\n private view: DataView;\n private static readonly __tnFieldOffset_payload = 1;\n private __tnParams: PasskeyEvent.Params;\n\n private constructor(private buffer: Uint8Array, params?: PasskeyEvent.Params) {\n this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n if (params) {\n this.__tnParams = params;\n } else {\n const derived = PasskeyEvent.__tnExtractParams(this.view, buffer);\n if (!derived) {\n throw new Error(\"PasskeyEvent: failed to derive dynamic parameters\");\n }\n this.__tnParams = derived.params;\n }\n }\n\n static __tnCreateView(buffer: Uint8Array, opts?: { params?: PasskeyEvent.Params }): PasskeyEvent {\n if (!buffer || buffer.length === undefined) throw new Error(\"PasskeyEvent.__tnCreateView requires a Uint8Array\");\n let params = opts?.params ?? null;\n if (!params) {\n const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n const derived = PasskeyEvent.__tnExtractParams(view, buffer);\n if (!derived) throw new Error(\"PasskeyEvent.__tnCreateView: failed to derive params\");\n params = derived.params;\n }\n const instance = new PasskeyEvent(new Uint8Array(buffer), params);\n return instance;\n }\n\n dynamicParams(): PasskeyEvent.Params {\n return this.__tnParams;\n }\n\n static builder(): PasskeyEventBuilder {\n return new PasskeyEventBuilder();\n }\n\n static fromBuilder(builder: PasskeyEventBuilder): PasskeyEvent | null {\n const buffer = builder.build();\n const params = builder.dynamicParams();\n return PasskeyEvent.from_array(buffer, { params });\n }\n\n static readonly payloadVariantDescriptors = Object.freeze([\n {\n name: \"wallet_created\",\n tag: 0,\n payloadSize: 97,\n payloadType: \"PasskeyEvent::payload::wallet_created\",\n createPayloadBuilder: () => __tnMaybeCallBuilder(WalletCreatedEventData),\n },\n {\n name: \"wallet_validated\",\n tag: 1,\n payloadSize: 40,\n payloadType: \"PasskeyEvent::payload::wallet_validated\",\n createPayloadBuilder: () => __tnMaybeCallBuilder(WalletValidatedEventData),\n },\n {\n name: \"wallet_transfer\",\n tag: 2,\n payloadSize: 72,\n payloadType: \"PasskeyEvent::payload::wallet_transfer\",\n createPayloadBuilder: () => __tnMaybeCallBuilder(WalletTransferEventData),\n },\n {\n name: \"credential_registered\",\n tag: 3,\n payloadSize: 64,\n payloadType: \"PasskeyEvent::payload::credential_registered\",\n createPayloadBuilder: () => __tnMaybeCallBuilder(CredentialRegisteredEventData),\n },\n ] as const);\n\n private static __tnExtractParams(view: DataView, buffer: Uint8Array): { params: PasskeyEvent.Params; derived: Record<string, bigint> | null } | null {\n if (buffer.length < 1) {\n return null;\n }\n const __tnParam_payload_event_type = __tnToBigInt(view.getUint8(0));\n const __tnExtractedParams = PasskeyEvent.Params.fromValues({\n payload_event_type: __tnParam_payload_event_type,\n });\n return { params: __tnExtractedParams, derived: null };\n }\n\n get_event_type(): number {\n const offset = 0;\n return this.view.getUint8(offset);\n }\n\n set_event_type(value: number): void {\n const offset = 0;\n this.view.setUint8(offset, value);\n }\n\n get event_type(): number {\n return this.get_event_type();\n }\n\n set event_type(value: number) {\n this.set_event_type(value);\n }\n\n payloadVariant(): typeof PasskeyEvent.payloadVariantDescriptors[number] | null {\n const tag = this.view.getUint8(0);\n return PasskeyEvent.payloadVariantDescriptors.find((variant) => variant.tag === tag) ?? null;\n }\n\n payload(): PasskeyEvent_payload_Inner {\n const descriptor = this.payloadVariant();\n if (!descriptor) throw new Error(\"PasskeyEvent: unknown payload variant\");\n const offset = PasskeyEvent.__tnFieldOffset_payload;\n const remaining = this.buffer.length - offset;\n const payloadLength = descriptor.payloadSize ?? remaining;\n if (payloadLength < 0 || offset + payloadLength > this.buffer.length) throw new Error(\"PasskeyEvent: payload exceeds buffer bounds\");\n const slice = this.buffer.subarray(offset, offset + payloadLength);\n return PasskeyEvent_payload_Inner.__tnCreate(slice, descriptor, undefined);\n }\n private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n return __tnEvalFootprint(__tn_ir_PasskeyEvent.root, { params: __tnParams });\n }\n\n private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n return __tnValidateIrTree(__tn_ir_PasskeyEvent, buffer, __tnParams);\n }\n\n static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n return this.__tnFootprintInternal(__tnParams);\n }\n\n static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n return this.__tnValidateInternal(buffer, __tnParams);\n }\n\n static footprintIr(payload_event_type: number | bigint): bigint {\n const params = PasskeyEvent.Params.fromValues({\n payload_event_type: payload_event_type,\n });\n return this.footprintIrFromParams(params);\n }\n\n private static __tnPackParams(params: PasskeyEvent.Params): Record<string, bigint> {\n const record: Record<string, bigint> = Object.create(null);\n record[\"payload.event_type\"] = params.payload_event_type;\n record[\"PasskeyEvent::payload.event_type\"] = params.payload_event_type;\n return record;\n }\n\n static footprintIrFromParams(params: PasskeyEvent.Params): bigint {\n const __tnParams = this.__tnPackParams(params);\n return this.__tnFootprintInternal(__tnParams);\n }\n\n static footprintFromParams(params: PasskeyEvent.Params): number {\n const irResult = this.footprintIrFromParams(params);\n const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n if (__tnBigIntGreaterThan(irResult, maxSafe)) throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for PasskeyEvent');\n return __tnBigIntToNumber(irResult, 'PasskeyEvent::footprintFromParams');\n }\n\n static footprintFromValues(input: { payload_event_type: number | bigint }): number {\n const params = PasskeyEvent.params(input);\n return this.footprintFromParams(params);\n }\n\n static footprint(params: PasskeyEvent.Params): number {\n return this.footprintFromParams(params);\n }\n\n static validate(buffer: Uint8Array, opts?: { params?: PasskeyEvent.Params }): { ok: boolean; code?: string; consumed?: number; params?: PasskeyEvent.Params } {\n if (!buffer || buffer.length === undefined) {\n return { ok: false, code: \"tn.invalid_buffer\" };\n }\n const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n let params = opts?.params ?? null;\n if (!params) {\n const extracted = this.__tnExtractParams(view, buffer);\n if (!extracted) return { ok: false, code: \"tn.param_extraction_failed\" };\n params = extracted.params;\n }\n const __tnParamsRec = this.__tnPackParams(params);\n const irResult = this.__tnValidateInternal(buffer, __tnParamsRec);\n if (!irResult.ok) {\n return { ok: false, code: irResult.code, consumed: irResult.consumed ? __tnBigIntToNumber(irResult.consumed, 'PasskeyEvent::validate') : undefined, params };\n }\n const consumed = irResult.consumed ? __tnBigIntToNumber(irResult.consumed, 'PasskeyEvent::validate') : undefined;\n return { ok: true, consumed, params };\n }\n\n static from_array(buffer: Uint8Array, opts?: { params?: PasskeyEvent.Params }): PasskeyEvent | null {\n if (!buffer || buffer.length === undefined) {\n return null;\n }\n const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n let params = opts?.params ?? null;\n if (!params) {\n const derived = this.__tnExtractParams(view, buffer);\n if (!derived) return null;\n params = derived.params;\n }\n const validation = this.validate(buffer, { params });\n if (!validation.ok) {\n return null;\n }\n const cached = validation.params ?? params;\n const state = new PasskeyEvent(buffer, cached);\n return state;\n }\n\n\n}\n\nexport namespace PasskeyEvent {\n export type Params = {\n /** ABI path: payload.event_type */\n readonly payload_event_type: bigint;\n };\n\n export const ParamKeys = Object.freeze({\n payload_event_type: \"payload.event_type\",\n } as const);\n\n export const Params = {\n fromValues(input: { payload_event_type: number | bigint }): Params {\n return {\n payload_event_type: __tnToBigInt(input.payload_event_type),\n };\n },\n fromBuilder(source: { dynamicParams(): Params } | { params: Params } | Params): Params {\n if ((source as { dynamicParams?: () => Params }).dynamicParams) {\n return (source as { dynamicParams(): Params }).dynamicParams();\n }\n if ((source as { params?: Params }).params) {\n return (source as { params: Params }).params;\n }\n return source as Params;\n }\n };\n\n export function params(input: { payload_event_type: number | bigint }): Params {\n return Params.fromValues(input);\n }\n}\n\nexport class PasskeyEventBuilder {\n private __tnPrefixBuffer: Uint8Array;\n private __tnPrefixView: DataView;\n private __tnField_event_type: number | null = null;\n private __tnPayload_payload: { descriptor: typeof PasskeyEvent.payloadVariantDescriptors[number]; bytes: Uint8Array } | null = null;\n private __tnCachedParams: PasskeyEvent.Params | null = null;\n private __tnLastBuffer: Uint8Array | null = null;\n private __tnLastParams: PasskeyEvent.Params | null = null;\n private __tnVariantSelector_payload?: __TnVariantSelectorResult<PasskeyEventBuilder>;\n\n constructor() {\n this.__tnPrefixBuffer = new Uint8Array(1);\n this.__tnPrefixView = new DataView(this.__tnPrefixBuffer.buffer, this.__tnPrefixBuffer.byteOffset, this.__tnPrefixBuffer.byteLength);\n }\n\n private __tnInvalidate(): void {\n this.__tnCachedParams = null;\n this.__tnLastBuffer = null;\n this.__tnLastParams = null;\n }\n\n private __tnAssign_event_type(value: number): void {\n this.__tnField_event_type = value & 0xff;\n this.__tnInvalidate();\n }\n\n set_event_type(value: number): this {\n this.__tnAssign_event_type(value);\n return this;\n }\n\n payload(): __TnVariantSelectorResult<PasskeyEventBuilder> {\n if (!this.__tnVariantSelector_payload) {\n this.__tnVariantSelector_payload = __tnCreateVariantSelector(this, PasskeyEvent.payloadVariantDescriptors, (descriptor, payload) => {\n this.__tnPayload_payload = { descriptor, bytes: new Uint8Array(payload) };\n this.__tnAssign_event_type(descriptor.tag);\n });\n }\n return this.__tnVariantSelector_payload!;\n }\n\n build(): Uint8Array {\n const params = this.__tnComputeParams();\n if (this.__tnField_event_type === null) throw new Error(\"PasskeyEventBuilder: field 'event_type' must be set before build\");\n if (!this.__tnPayload_payload) throw new Error(\"PasskeyEventBuilder: payload variant not selected\");\n const payloadLength = this.__tnPayload_payload.bytes.length;\n const requiredSize = 1 + payloadLength;\n const footprintSize = PasskeyEvent.footprintFromParams(params);\n const size = Math.max(requiredSize, footprintSize);\n const buffer = new Uint8Array(size);\n this.__tnWriteInto(buffer);\n this.__tnValidateOrThrow(buffer, params);\n return buffer;\n }\n\n buildInto(target: Uint8Array, offset = 0): Uint8Array {\n const params = this.__tnComputeParams();\n if (this.__tnField_event_type === null) throw new Error(\"PasskeyEventBuilder: field 'event_type' must be set before build\");\n if (!this.__tnPayload_payload) throw new Error(\"PasskeyEventBuilder: payload variant not selected\");\n const payloadLength = this.__tnPayload_payload.bytes.length;\n const requiredSize = 1 + payloadLength;\n const footprintSize = PasskeyEvent.footprintFromParams(params);\n const size = Math.max(requiredSize, footprintSize);\n if (target.length - offset < size) throw new Error(\"PasskeyEventBuilder: target buffer too small\");\n const slice = target.subarray(offset, offset + size);\n this.__tnWriteInto(slice);\n this.__tnValidateOrThrow(slice, params);\n return target;\n }\n\n finish(): PasskeyEvent {\n const buffer = this.build();\n const params = this.__tnLastParams ?? this.__tnComputeParams();\n const view = PasskeyEvent.from_array(buffer, { params });\n if (!view) throw new Error(\"PasskeyEventBuilder: failed to finalize view\");\n return view;\n }\n\n finishView(): PasskeyEvent {\n return this.finish();\n }\n\n dynamicParams(): PasskeyEvent.Params {\n return this.__tnComputeParams();\n }\n\n private __tnComputeParams(): PasskeyEvent.Params {\n if (this.__tnCachedParams) return this.__tnCachedParams;\n const params = PasskeyEvent.Params.fromValues({\n payload_event_type: (() => { return __tnToBigInt(this.__tnPrefixView.getUint8(0)); })(),\n });\n this.__tnCachedParams = params;\n return params;\n }\n\n private __tnWriteInto(target: Uint8Array): void {\n if (this.__tnField_event_type === null) throw new Error(\"PasskeyEventBuilder: field 'event_type' must be set before build\");\n if (!this.__tnPayload_payload) throw new Error(\"PasskeyEventBuilder: payload variant not selected\");\n const view = new DataView(target.buffer, target.byteOffset, target.byteLength);\n target.set(this.__tnPrefixBuffer, 0);\n view.setUint8(0, this.__tnField_event_type);\n target.set(this.__tnPayload_payload.bytes, 1);\n }\n\n private __tnValidateOrThrow(buffer: Uint8Array, params: PasskeyEvent.Params): void {\n const result = PasskeyEvent.validate(buffer, { params });\n if (!result.ok) {\n throw new Error(`${ PasskeyEvent }Builder: builder produced invalid buffer (code=${result.code ?? \"unknown\"})`);\n }\n this.__tnLastParams = result.params ?? params;\n this.__tnLastBuffer = buffer;\n }\n}\n\n__tnRegisterFootprint(\"PasskeyEvent\", (params) => PasskeyEvent.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"PasskeyEvent\", (buffer, params) => PasskeyEvent.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"PasskeyEvent\", (buffer) => { const result = PasskeyEvent.validate(buffer); return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed) }; });\n\n/* ----- TYPE DEFINITION FOR CreateArgs ----- */\n\nconst __tn_ir_CreateArgs = {\n typeName: \"CreateArgs\",\n root: { op: \"align\", alignment: 1, node: { op: \"add\", left: { op: \"add\", left: { op: \"add\", left: { op: \"align\", alignment: 2, node: { op: \"const\", value: 2n } }, right: { op: \"align\", alignment: 1, node: { op: \"const\", value: 65n } } }, right: { op: \"align\", alignment: 1, node: { op: \"const\", value: 32n } } }, right: { op: \"align\", alignment: 1, node: { op: \"call\", typeName: \"StateProof\", args: [{ name: \"proof_body.hdr.type_slot\", source: \"proof_body.hdr.type_slot\" }, { name: \"proof_body.payload_size\", source: \"proof_body.payload_size\" }] } } } }\n} as const;\n\nexport class CreateArgs {\n private view: DataView;\n\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> }): CreateArgs {\n if (!buffer || buffer.length === undefined) throw new Error(\"CreateArgs.__tnCreateView requires a Uint8Array\");\n return new CreateArgs(new Uint8Array(buffer));\n }\n\n static builder(): CreateArgsBuilder {\n return new CreateArgsBuilder();\n }\n\n static fromBuilder(builder: CreateArgsBuilder): CreateArgs | null {\n const buffer = builder.build();\n return CreateArgs.from_array(buffer);\n }\n\n get_wallet_account_idx(): number {\n const offset = 0;\n return this.view.getUint16(offset, true); /* little-endian */\n }\n\n set_wallet_account_idx(value: number): void {\n const offset = 0;\n this.view.setUint16(offset, value, true); /* little-endian */\n }\n\n get wallet_account_idx(): number {\n return this.get_wallet_account_idx();\n }\n\n set wallet_account_idx(value: number) {\n this.set_wallet_account_idx(value);\n }\n\n get_authority(): Authority {\n const offset = 2;\n const slice = this.buffer.subarray(offset, offset + 65);\n return Authority.from_array(slice)!;\n }\n\n set_authority(value: Authority): void {\n /* Copy bytes from source struct to this field */\n const sourceBytes = (value as any).buffer as Uint8Array;\n const offset = 2;\n this.buffer.set(sourceBytes, offset);\n }\n\n get authority(): Authority {\n return this.get_authority();\n }\n\n set authority(value: Authority) {\n this.set_authority(value);\n }\n\n get_seed(): Seed32 {\n const offset = 67;\n const slice = this.buffer.subarray(offset, offset + 32);\n return Seed32.from_array(slice)!;\n }\n\n set_seed(value: Seed32): void {\n /* Copy bytes from source struct to this field */\n const sourceBytes = (value as any).buffer as Uint8Array;\n const offset = 67;\n this.buffer.set(sourceBytes, offset);\n }\n\n get seed(): Seed32 {\n return this.get_seed();\n }\n\n set seed(value: Seed32) {\n this.set_seed(value);\n }\n\n get_state_proof(): StateProof {\n const offset = 99;\n const tail = this.buffer.subarray(offset);\n const validation = StateProof.validate(tail);\n if (!validation.ok || validation.consumed === undefined) {\n throw new Error(\"CreateArgs: failed to read field 'state_proof' (invalid nested payload)\");\n }\n const length = validation.consumed;\n const slice = tail.subarray(0, length);\n const opts = validation.params ? { params: validation.params } : undefined;\n return StateProof.from_array(slice, opts)!;\n }\n\n set_state_proof(value: StateProof): void {\n /* Copy bytes from source struct to this field */\n const sourceBytes = (value as any).buffer as Uint8Array;\n const offset = 99;\n this.buffer.set(sourceBytes, offset);\n }\n\n get state_proof(): StateProof {\n return this.get_state_proof();\n }\n\n set state_proof(value: StateProof) {\n this.set_state_proof(value);\n }\n\n private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n return __tnEvalFootprint(__tn_ir_CreateArgs.root, { params: __tnParams });\n }\n\n private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n return __tnValidateIrTree(__tn_ir_CreateArgs, buffer, __tnParams);\n }\n\n static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n return this.__tnFootprintInternal(__tnParams);\n }\n\n static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n return this.__tnValidateInternal(buffer, __tnParams);\n }\n\n static footprintIr(): 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 CreateArgs');\n }\n return __tnBigIntToNumber(irResult, 'CreateArgs::footprint');\n }\n\n static validate(_buffer: Uint8Array, _opts?: { params?: never }): { ok: boolean; code?: string; consumed?: number } {\n __tnLogWarn(\"CreateArgs::validate falling back to basic length check\");\n return { ok: true, consumed: _buffer.length };\n }\n\n static from_array(buffer: Uint8Array): CreateArgs | 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 CreateArgs(buffer);\n }\n\n}\n\nexport class CreateArgsBuilder {\n private buffer: Uint8Array;\n private view: DataView;\n private __tnTail_state_proof: Uint8Array | null = null;\n\n constructor() {\n this.buffer = new Uint8Array(99);\n this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n }\n\n private __tnInvalidate(): void {\n /* Placeholder for future cache invalidation. */\n }\n\n set_wallet_account_idx(value: number): this {\n this.view.setUint16(0, value, true);\n this.__tnInvalidate();\n return this;\n }\n\n set_authority(value: Uint8Array): this {\n if (value.length !== 65) throw new Error(\"authority expects 65 bytes\");\n this.buffer.set(value, 2);\n this.__tnInvalidate();\n return this;\n }\n\n set_seed(value: Uint8Array): this {\n if (value.length !== 32) throw new Error(\"seed expects 32 bytes\");\n this.buffer.set(value, 67);\n this.__tnInvalidate();\n return this;\n }\n\n set_state_proof(value: StateProof | __TnStructFieldInput): this {\n const bytes = __tnResolveStructFieldInput(value as __TnStructFieldInput, \"CreateArgsBuilder::state_proof\");\n this.__tnTail_state_proof = bytes;\n this.__tnInvalidate();\n return this;\n }\n\n build(): Uint8Array {\n const fragments = this.__tnCollectTailFragments();\n const size = this.__tnComputeSize(fragments);\n const buffer = new Uint8Array(size);\n this.__tnWriteInto(buffer, fragments);\n this.__tnValidateOrThrow(buffer);\n return buffer;\n }\n\n buildInto(target: Uint8Array, offset = 0): Uint8Array {\n const fragments = this.__tnCollectTailFragments();\n const size = this.__tnComputeSize(fragments);\n if (target.length - offset < size) throw new Error(\"CreateArgsBuilder: target buffer too small\");\n const slice = target.subarray(offset, offset + size);\n this.__tnWriteInto(slice, fragments);\n this.__tnValidateOrThrow(slice);\n return target;\n }\n\n finish(): CreateArgs {\n const buffer = this.build();\n const view = CreateArgs.from_array(buffer);\n if (!view) throw new Error(\"CreateArgsBuilder: failed to finalize view\");\n return view;\n }\n\n finishView(): CreateArgs {\n return this.finish();\n }\n\n private __tnCollectTailFragments(): Uint8Array[] {\n return [\n (() => {\n const bytes = this.__tnTail_state_proof;\n if (!bytes) throw new Error(\"CreateArgsBuilder: field 'state_proof' must be set before build()\");\n return bytes;\n })(),\n ];\n }\n\n private __tnComputeSize(fragments: readonly Uint8Array[]): number {\n let total = this.buffer.length;\n for (const fragment of fragments) {\n total += fragment.length;\n }\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): void {\n const result = CreateArgs.validate(buffer);\n if (!result.ok) {\n throw new Error(`CreateArgsBuilder: builder produced invalid buffer (code=${result.code ?? \"unknown\"})`);\n }\n }\n}\n\n__tnRegisterFootprint(\"CreateArgs\", (params) => CreateArgs.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"CreateArgs\", (buffer, params) => CreateArgs.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"CreateArgs\", (buffer) => { const result = CreateArgs.validate(buffer); return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed) }; });\n\n/* ----- TYPE DEFINITION FOR RegisterCredentialArgs ----- */\n\nconst __tn_ir_RegisterCredentialArgs = {\n typeName: \"RegisterCredentialArgs\",\n root: { op: \"align\", alignment: 1, node: { op: \"add\", left: { op: \"add\", left: { op: \"add\", left: { op: \"align\", alignment: 2, node: { op: \"const\", value: 2n } }, right: { op: \"align\", alignment: 2, node: { op: \"const\", value: 2n } } }, right: { op: \"align\", alignment: 1, node: { op: \"const\", value: 32n } } }, right: { op: \"align\", alignment: 1, node: { op: \"call\", typeName: \"StateProof\", args: [{ name: \"proof_body.hdr.type_slot\", source: \"proof_body.hdr.type_slot\" }, { name: \"proof_body.payload_size\", source: \"proof_body.payload_size\" }] } } } }\n} as const;\n\nexport class RegisterCredentialArgs {\n private view: DataView;\n\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> }): RegisterCredentialArgs {\n if (!buffer || buffer.length === undefined) throw new Error(\"RegisterCredentialArgs.__tnCreateView requires a Uint8Array\");\n return new RegisterCredentialArgs(new Uint8Array(buffer));\n }\n\n static builder(): RegisterCredentialArgsBuilder {\n return new RegisterCredentialArgsBuilder();\n }\n\n static fromBuilder(builder: RegisterCredentialArgsBuilder): RegisterCredentialArgs | null {\n const buffer = builder.build();\n return RegisterCredentialArgs.from_array(buffer);\n }\n\n get_wallet_account_idx(): number {\n const offset = 0;\n return this.view.getUint16(offset, true); /* little-endian */\n }\n\n set_wallet_account_idx(value: number): void {\n const offset = 0;\n this.view.setUint16(offset, value, true); /* little-endian */\n }\n\n get wallet_account_idx(): number {\n return this.get_wallet_account_idx();\n }\n\n set wallet_account_idx(value: number) {\n this.set_wallet_account_idx(value);\n }\n\n get_lookup_account_idx(): number {\n const offset = 2;\n return this.view.getUint16(offset, true); /* little-endian */\n }\n\n set_lookup_account_idx(value: number): void {\n const offset = 2;\n this.view.setUint16(offset, value, true); /* little-endian */\n }\n\n get lookup_account_idx(): number {\n return this.get_lookup_account_idx();\n }\n\n set lookup_account_idx(value: number) {\n this.set_lookup_account_idx(value);\n }\n\n get_seed(): Seed32 {\n const offset = 4;\n const slice = this.buffer.subarray(offset, offset + 32);\n return Seed32.from_array(slice)!;\n }\n\n set_seed(value: Seed32): void {\n /* Copy bytes from source struct to this field */\n const sourceBytes = (value as any).buffer as Uint8Array;\n const offset = 4;\n this.buffer.set(sourceBytes, offset);\n }\n\n get seed(): Seed32 {\n return this.get_seed();\n }\n\n set seed(value: Seed32) {\n this.set_seed(value);\n }\n\n get_state_proof(): StateProof {\n const offset = 36;\n const tail = this.buffer.subarray(offset);\n const validation = StateProof.validate(tail);\n if (!validation.ok || validation.consumed === undefined) {\n throw new Error(\"RegisterCredentialArgs: failed to read field 'state_proof' (invalid nested payload)\");\n }\n const length = validation.consumed;\n const slice = tail.subarray(0, length);\n const opts = validation.params ? { params: validation.params } : undefined;\n return StateProof.from_array(slice, opts)!;\n }\n\n set_state_proof(value: StateProof): void {\n /* Copy bytes from source struct to this field */\n const sourceBytes = (value as any).buffer as Uint8Array;\n const offset = 36;\n this.buffer.set(sourceBytes, offset);\n }\n\n get state_proof(): StateProof {\n return this.get_state_proof();\n }\n\n set state_proof(value: StateProof) {\n this.set_state_proof(value);\n }\n\n private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n return __tnEvalFootprint(__tn_ir_RegisterCredentialArgs.root, { params: __tnParams });\n }\n\n private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n return __tnValidateIrTree(__tn_ir_RegisterCredentialArgs, buffer, __tnParams);\n }\n\n static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n return this.__tnFootprintInternal(__tnParams);\n }\n\n static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n return this.__tnValidateInternal(buffer, __tnParams);\n }\n\n static footprintIr(): 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 RegisterCredentialArgs');\n }\n return __tnBigIntToNumber(irResult, 'RegisterCredentialArgs::footprint');\n }\n\n static validate(_buffer: Uint8Array, _opts?: { params?: never }): { ok: boolean; code?: string; consumed?: number } {\n __tnLogWarn(\"RegisterCredentialArgs::validate falling back to basic length check\");\n return { ok: true, consumed: _buffer.length };\n }\n\n static from_array(buffer: Uint8Array): RegisterCredentialArgs | 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 RegisterCredentialArgs(buffer);\n }\n\n}\n\nexport class RegisterCredentialArgsBuilder {\n private buffer: Uint8Array;\n private view: DataView;\n private __tnTail_state_proof: Uint8Array | null = null;\n\n constructor() {\n this.buffer = new Uint8Array(36);\n this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n }\n\n private __tnInvalidate(): void {\n /* Placeholder for future cache invalidation. */\n }\n\n set_wallet_account_idx(value: number): this {\n this.view.setUint16(0, value, true);\n this.__tnInvalidate();\n return this;\n }\n\n set_lookup_account_idx(value: number): this {\n this.view.setUint16(2, value, true);\n this.__tnInvalidate();\n return this;\n }\n\n set_seed(value: Uint8Array): this {\n if (value.length !== 32) throw new Error(\"seed expects 32 bytes\");\n this.buffer.set(value, 4);\n this.__tnInvalidate();\n return this;\n }\n\n set_state_proof(value: StateProof | __TnStructFieldInput): this {\n const bytes = __tnResolveStructFieldInput(value as __TnStructFieldInput, \"RegisterCredentialArgsBuilder::state_proof\");\n this.__tnTail_state_proof = bytes;\n this.__tnInvalidate();\n return this;\n }\n\n build(): Uint8Array {\n const fragments = this.__tnCollectTailFragments();\n const size = this.__tnComputeSize(fragments);\n const buffer = new Uint8Array(size);\n this.__tnWriteInto(buffer, fragments);\n this.__tnValidateOrThrow(buffer);\n return buffer;\n }\n\n buildInto(target: Uint8Array, offset = 0): Uint8Array {\n const fragments = this.__tnCollectTailFragments();\n const size = this.__tnComputeSize(fragments);\n if (target.length - offset < size) throw new Error(\"RegisterCredentialArgsBuilder: target buffer too small\");\n const slice = target.subarray(offset, offset + size);\n this.__tnWriteInto(slice, fragments);\n this.__tnValidateOrThrow(slice);\n return target;\n }\n\n finish(): RegisterCredentialArgs {\n const buffer = this.build();\n const view = RegisterCredentialArgs.from_array(buffer);\n if (!view) throw new Error(\"RegisterCredentialArgsBuilder: failed to finalize view\");\n return view;\n }\n\n finishView(): RegisterCredentialArgs {\n return this.finish();\n }\n\n private __tnCollectTailFragments(): Uint8Array[] {\n return [\n (() => {\n const bytes = this.__tnTail_state_proof;\n if (!bytes) throw new Error(\"RegisterCredentialArgsBuilder: field 'state_proof' must be set before build()\");\n return bytes;\n })(),\n ];\n }\n\n private __tnComputeSize(fragments: readonly Uint8Array[]): number {\n let total = this.buffer.length;\n for (const fragment of fragments) {\n total += fragment.length;\n }\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): void {\n const result = RegisterCredentialArgs.validate(buffer);\n if (!result.ok) {\n throw new Error(`RegisterCredentialArgsBuilder: builder produced invalid buffer (code=${result.code ?? \"unknown\"})`);\n }\n }\n}\n\n__tnRegisterFootprint(\"RegisterCredentialArgs\", (params) => RegisterCredentialArgs.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"RegisterCredentialArgs\", (buffer, params) => RegisterCredentialArgs.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"RegisterCredentialArgs\", (buffer) => { const result = RegisterCredentialArgs.validate(buffer); return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed) }; });\n\n/* ----- TYPE DEFINITION FOR PasskeyInstruction ----- */\n\nconst __tn_ir_PasskeyInstruction = {\n typeName: \"PasskeyInstruction\",\n root: { op: \"align\", alignment: 1, node: { op: \"add\", left: { op: \"align\", alignment: 1, node: { op: \"const\", value: 1n } }, right: { op: \"align\", alignment: 1, node: { op: \"field\", param: \"payload.payload_size\" } } } }\n} as const;\n\nexport class PasskeyInstruction_payload_Inner {\n private view: DataView;\n private __tnFieldContext: Record<string, number | bigint> | null = null;\n private constructor(private buffer: Uint8Array, private descriptor: __TnVariantDescriptor | null, fieldContext?: Record<string, number | bigint>) {\n this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n this.__tnFieldContext = fieldContext ?? null;\n }\n\n static __tnCreate(payload: Uint8Array, descriptor: __TnVariantDescriptor | null, fieldContext?: Record<string, number | bigint>): PasskeyInstruction_payload_Inner {\n return new PasskeyInstruction_payload_Inner(new Uint8Array(payload), descriptor, fieldContext);\n }\n\n bytes(): Uint8Array {\n return new Uint8Array(this.buffer);\n }\n\n variant(): __TnVariantDescriptor | null {\n return this.descriptor;\n }\n\n asCreate(): CreateArgs | null {\n if (!this.descriptor || this.descriptor.tag !== 0) return null;\n return CreateArgs.__tnCreateView(new Uint8Array(this.buffer), { fieldContext: this.__tnFieldContext ?? undefined });\n }\n\n asValidate(): ValidateArgs | null {\n if (!this.descriptor || this.descriptor.tag !== 1) return null;\n return ValidateArgs.__tnCreateView(new Uint8Array(this.buffer), { fieldContext: this.__tnFieldContext ?? undefined });\n }\n\n asTransfer(): TransferArgs | null {\n if (!this.descriptor || this.descriptor.tag !== 2) return null;\n return TransferArgs.__tnCreateView(new Uint8Array(this.buffer), { fieldContext: this.__tnFieldContext ?? undefined });\n }\n\n asAddAuthority(): AddAuthorityArgs | null {\n if (!this.descriptor || this.descriptor.tag !== 4) return null;\n return AddAuthorityArgs.__tnCreateView(new Uint8Array(this.buffer), { fieldContext: this.__tnFieldContext ?? undefined });\n }\n\n asRemoveAuthority(): RemoveAuthorityArgs | null {\n if (!this.descriptor || this.descriptor.tag !== 5) return null;\n return RemoveAuthorityArgs.__tnCreateView(new Uint8Array(this.buffer), { fieldContext: this.__tnFieldContext ?? undefined });\n }\n\n asRegisterCredential(): RegisterCredentialArgs | null {\n if (!this.descriptor || this.descriptor.tag !== 6) return null;\n return RegisterCredentialArgs.__tnCreateView(new Uint8Array(this.buffer), { fieldContext: this.__tnFieldContext ?? undefined });\n }\n\n}\n\nexport class PasskeyInstruction {\n private view: DataView;\n private static readonly __tnFieldOffset_payload = 1;\n private __tnParams: PasskeyInstruction.Params;\n\n private constructor(private buffer: Uint8Array, params?: PasskeyInstruction.Params) {\n this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n if (params) {\n this.__tnParams = params;\n } else {\n const derived = PasskeyInstruction.__tnExtractParams(this.view, buffer);\n if (!derived) {\n throw new Error(\"PasskeyInstruction: failed to derive dynamic parameters\");\n }\n this.__tnParams = derived.params;\n }\n }\n\n static __tnCreateView(buffer: Uint8Array, opts?: { params?: PasskeyInstruction.Params }): PasskeyInstruction {\n if (!buffer || buffer.length === undefined) throw new Error(\"PasskeyInstruction.__tnCreateView requires a Uint8Array\");\n let params = opts?.params ?? null;\n if (!params) {\n const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n const derived = PasskeyInstruction.__tnExtractParams(view, buffer);\n if (!derived) throw new Error(\"PasskeyInstruction.__tnCreateView: failed to derive params\");\n params = derived.params;\n }\n const instance = new PasskeyInstruction(new Uint8Array(buffer), params);\n return instance;\n }\n\n dynamicParams(): PasskeyInstruction.Params {\n return this.__tnParams;\n }\n\n static builder(): PasskeyInstructionBuilder {\n return new PasskeyInstructionBuilder();\n }\n\n static fromBuilder(builder: PasskeyInstructionBuilder): PasskeyInstruction | null {\n const buffer = builder.build();\n const params = builder.dynamicParams();\n return PasskeyInstruction.from_array(buffer, { params });\n }\n\n static readonly payloadVariantDescriptors = Object.freeze([\n {\n name: \"create\",\n tag: 0,\n payloadSize: null,\n payloadType: \"PasskeyInstruction::payload::create\",\n createPayloadBuilder: () => __tnMaybeCallBuilder(CreateArgs),\n },\n {\n name: \"validate\",\n tag: 1,\n payloadSize: null,\n payloadType: \"PasskeyInstruction::payload::validate\",\n createPayloadBuilder: () => null,\n },\n {\n name: \"transfer\",\n tag: 2,\n payloadSize: 12,\n payloadType: \"PasskeyInstruction::payload::transfer\",\n createPayloadBuilder: () => __tnMaybeCallBuilder(TransferArgs),\n },\n {\n name: \"add_authority\",\n tag: 4,\n payloadSize: 67,\n payloadType: \"PasskeyInstruction::payload::add_authority\",\n createPayloadBuilder: () => __tnMaybeCallBuilder(AddAuthorityArgs),\n },\n {\n name: \"remove_authority\",\n tag: 5,\n payloadSize: 3,\n payloadType: \"PasskeyInstruction::payload::remove_authority\",\n createPayloadBuilder: () => __tnMaybeCallBuilder(RemoveAuthorityArgs),\n },\n {\n name: \"register_credential\",\n tag: 6,\n payloadSize: null,\n payloadType: \"PasskeyInstruction::payload::register_credential\",\n createPayloadBuilder: () => __tnMaybeCallBuilder(RegisterCredentialArgs),\n },\n ] as const);\n\n static __tnComputeSequentialLayout(view: DataView, buffer: Uint8Array): { params: Record<string, bigint> | null; offsets: Record<string, number> | null; derived: Record<string, bigint> | null } | null {\n const __tnLength = buffer.length;\n let __tnParamSeq_payload_payload_size: bigint | null = null;\n let __tnFieldValue_tag: number | null = null;\n let __tnCursorMutable = 0;\n if (__tnCursorMutable + 1 > __tnLength) return null;\n const __tnRead_tag = view.getUint8(__tnCursorMutable);\n __tnFieldValue_tag = __tnRead_tag;\n __tnCursorMutable += 1;\n const __tnEnumTagValue_payload = __tnFieldValue_tag;\n if (__tnEnumTagValue_payload === null) return null;\n let __tnEnumSize_payload = 0;\n switch (Number(__tnEnumTagValue_payload)) {\n case 0: break;\n case 1: break;\n case 2: break;\n case 4: break;\n case 5: break;\n case 6: break;\n default: return null;\n }\n if (__tnCursorMutable > __tnLength) return null;\n __tnEnumSize_payload = __tnLength - __tnCursorMutable;\n __tnCursorMutable = __tnLength;\n __tnParamSeq_payload_payload_size = __tnToBigInt(__tnEnumSize_payload);\n const params: Record<string, bigint> = Object.create(null);\n if (__tnParamSeq_payload_payload_size === null) return null;\n params[\"payload_payload_size\"] = __tnParamSeq_payload_payload_size as bigint;\n return { params, offsets: null, derived: null };\n }\n\n private static __tnExtractParams(view: DataView, buffer: Uint8Array): { params: PasskeyInstruction.Params; derived: Record<string, bigint> | null } | null {\n if (buffer.length < 1) {\n return null;\n }\n const __tnParam_payload_tag = __tnToBigInt(view.getUint8(0));\n const __tnLayout = PasskeyInstruction.__tnComputeSequentialLayout(view, buffer);\n if (!__tnLayout || !__tnLayout.params) return null;\n const __tnSeqParams = __tnLayout.params;\n const __tnParamSeq_payload_payload_size = __tnSeqParams[\"payload_payload_size\"];\n if (__tnParamSeq_payload_payload_size === undefined) return null;\n const __tnExtractedParams = PasskeyInstruction.Params.fromValues({\n payload_payload_size: __tnParamSeq_payload_payload_size as bigint,\n payload_tag: __tnParam_payload_tag,\n });\n return { params: __tnExtractedParams, derived: null };\n }\n\n get_tag(): number {\n const offset = 0;\n return this.view.getUint8(offset);\n }\n\n set_tag(value: number): void {\n const offset = 0;\n this.view.setUint8(offset, value);\n }\n\n get tag(): number {\n return this.get_tag();\n }\n\n set tag(value: number) {\n this.set_tag(value);\n }\n\n payloadVariant(): typeof PasskeyInstruction.payloadVariantDescriptors[number] | null {\n const tag = this.view.getUint8(0);\n return PasskeyInstruction.payloadVariantDescriptors.find((variant) => variant.tag === tag) ?? null;\n }\n\n payload(): PasskeyInstruction_payload_Inner {\n const descriptor = this.payloadVariant();\n if (!descriptor) throw new Error(\"PasskeyInstruction: unknown payload variant\");\n const offset = PasskeyInstruction.__tnFieldOffset_payload;\n const remaining = this.buffer.length - offset;\n const payloadLength = descriptor.payloadSize ?? remaining;\n if (payloadLength < 0 || offset + payloadLength > this.buffer.length) throw new Error(\"PasskeyInstruction: payload exceeds buffer bounds\");\n const slice = this.buffer.subarray(offset, offset + payloadLength);\n return PasskeyInstruction_payload_Inner.__tnCreate(slice, descriptor, undefined);\n }\n private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n return __tnEvalFootprint(__tn_ir_PasskeyInstruction.root, { params: __tnParams });\n }\n\n private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n return __tnValidateIrTree(__tn_ir_PasskeyInstruction, buffer, __tnParams);\n }\n\n static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n return this.__tnFootprintInternal(__tnParams);\n }\n\n static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n return this.__tnValidateInternal(buffer, __tnParams);\n }\n\n static footprintIr(payload_payload_size: number | bigint, payload_tag: number | bigint): bigint {\n const params = PasskeyInstruction.Params.fromValues({\n payload_payload_size: payload_payload_size,\n payload_tag: payload_tag,\n });\n return this.footprintIrFromParams(params);\n }\n\n private static __tnPackParams(params: PasskeyInstruction.Params): Record<string, bigint> {\n const record: Record<string, bigint> = Object.create(null);\n record[\"payload.payload_size\"] = params.payload_payload_size;\n record[\"payload.tag\"] = params.payload_tag;\n return record;\n }\n\n static footprintIrFromParams(params: PasskeyInstruction.Params): bigint {\n const __tnParams = this.__tnPackParams(params);\n return this.__tnFootprintInternal(__tnParams);\n }\n\n static footprintFromParams(params: PasskeyInstruction.Params): number {\n const irResult = this.footprintIrFromParams(params);\n const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n if (__tnBigIntGreaterThan(irResult, maxSafe)) throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for PasskeyInstruction');\n return __tnBigIntToNumber(irResult, 'PasskeyInstruction::footprintFromParams');\n }\n\n static footprintFromValues(input: { payload_payload_size: number | bigint, payload_tag: number | bigint }): number {\n const params = PasskeyInstruction.params(input);\n return this.footprintFromParams(params);\n }\n\n static footprint(params: PasskeyInstruction.Params): number {\n return this.footprintFromParams(params);\n }\n\n static validate(buffer: Uint8Array, opts?: { params?: PasskeyInstruction.Params }): { ok: boolean; code?: string; consumed?: number; params?: PasskeyInstruction.Params } {\n if (!buffer || buffer.length === undefined) {\n return { ok: false, code: \"tn.invalid_buffer\" };\n }\n const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n let params = opts?.params ?? null;\n if (!params) {\n const extracted = this.__tnExtractParams(view, buffer);\n if (!extracted) return { ok: false, code: \"tn.param_extraction_failed\" };\n params = extracted.params;\n }\n const __tnParamsRec = this.__tnPackParams(params);\n const irResult = this.__tnValidateInternal(buffer, __tnParamsRec);\n if (!irResult.ok) {\n return { ok: false, code: irResult.code, consumed: irResult.consumed ? __tnBigIntToNumber(irResult.consumed, 'PasskeyInstruction::validate') : undefined, params };\n }\n const consumed = irResult.consumed ? __tnBigIntToNumber(irResult.consumed, 'PasskeyInstruction::validate') : undefined;\n return { ok: true, consumed, params };\n }\n\n static from_array(buffer: Uint8Array, opts?: { params?: PasskeyInstruction.Params }): PasskeyInstruction | null {\n if (!buffer || buffer.length === undefined) {\n return null;\n }\n const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n let params = opts?.params ?? null;\n if (!params) {\n const derived = this.__tnExtractParams(view, buffer);\n if (!derived) return null;\n params = derived.params;\n }\n const validation = this.validate(buffer, { params });\n if (!validation.ok) {\n return null;\n }\n const cached = validation.params ?? params;\n const state = new PasskeyInstruction(buffer, cached);\n return state;\n }\n\n\n}\n\nexport namespace PasskeyInstruction {\n export type Params = {\n /** ABI path: payload.payload_size */\n readonly payload_payload_size: bigint;\n /** ABI path: payload.tag */\n readonly payload_tag: bigint;\n };\n\n export const ParamKeys = Object.freeze({\n payload_payload_size: \"payload.payload_size\",\n payload_tag: \"payload.tag\",\n } as const);\n\n export const Params = {\n fromValues(input: { payload_payload_size: number | bigint, payload_tag: number | bigint }): Params {\n return {\n payload_payload_size: __tnToBigInt(input.payload_payload_size),\n payload_tag: __tnToBigInt(input.payload_tag),\n };\n },\n fromBuilder(source: { dynamicParams(): Params } | { params: Params } | Params): Params {\n if ((source as { dynamicParams?: () => Params }).dynamicParams) {\n return (source as { dynamicParams(): Params }).dynamicParams();\n }\n if ((source as { params?: Params }).params) {\n return (source as { params: Params }).params;\n }\n return source as Params;\n }\n };\n\n export function params(input: { payload_payload_size: number | bigint, payload_tag: number | bigint }): Params {\n return Params.fromValues(input);\n }\n}\n\nexport class PasskeyInstructionBuilder {\n private __tnPrefixBuffer: Uint8Array;\n private __tnPrefixView: DataView;\n private __tnField_tag: number | null = null;\n private __tnPayload_payload: { descriptor: typeof PasskeyInstruction.payloadVariantDescriptors[number]; bytes: Uint8Array } | null = null;\n private __tnCachedParams: PasskeyInstruction.Params | null = null;\n private __tnLastBuffer: Uint8Array | null = null;\n private __tnLastParams: PasskeyInstruction.Params | null = null;\n private __tnVariantSelector_payload?: __TnVariantSelectorResult<PasskeyInstructionBuilder>;\n\n constructor() {\n this.__tnPrefixBuffer = new Uint8Array(1);\n this.__tnPrefixView = new DataView(this.__tnPrefixBuffer.buffer, this.__tnPrefixBuffer.byteOffset, this.__tnPrefixBuffer.byteLength);\n }\n\n private __tnInvalidate(): void {\n this.__tnCachedParams = null;\n this.__tnLastBuffer = null;\n this.__tnLastParams = null;\n }\n\n private __tnAssign_tag(value: number): void {\n this.__tnField_tag = value & 0xff;\n this.__tnInvalidate();\n }\n\n set_tag(value: number): this {\n this.__tnAssign_tag(value);\n return this;\n }\n\n payload(): __TnVariantSelectorResult<PasskeyInstructionBuilder> {\n if (!this.__tnVariantSelector_payload) {\n this.__tnVariantSelector_payload = __tnCreateVariantSelector(this, PasskeyInstruction.payloadVariantDescriptors, (descriptor, payload) => {\n this.__tnPayload_payload = { descriptor, bytes: new Uint8Array(payload) };\n this.__tnAssign_tag(descriptor.tag);\n });\n }\n return this.__tnVariantSelector_payload!;\n }\n\n build(): Uint8Array {\n const params = this.__tnComputeParams();\n if (this.__tnField_tag === null) throw new Error(\"PasskeyInstructionBuilder: field 'tag' must be set before build\");\n if (!this.__tnPayload_payload) throw new Error(\"PasskeyInstructionBuilder: payload variant not selected\");\n const payloadLength = this.__tnPayload_payload.bytes.length;\n const requiredSize = 1 + payloadLength;\n const footprintSize = PasskeyInstruction.footprintFromParams(params);\n const size = Math.max(requiredSize, footprintSize);\n const buffer = new Uint8Array(size);\n this.__tnWriteInto(buffer);\n this.__tnValidateOrThrow(buffer, params);\n return buffer;\n }\n\n buildInto(target: Uint8Array, offset = 0): Uint8Array {\n const params = this.__tnComputeParams();\n if (this.__tnField_tag === null) throw new Error(\"PasskeyInstructionBuilder: field 'tag' must be set before build\");\n if (!this.__tnPayload_payload) throw new Error(\"PasskeyInstructionBuilder: payload variant not selected\");\n const payloadLength = this.__tnPayload_payload.bytes.length;\n const requiredSize = 1 + payloadLength;\n const footprintSize = PasskeyInstruction.footprintFromParams(params);\n const size = Math.max(requiredSize, footprintSize);\n if (target.length - offset < size) throw new Error(\"PasskeyInstructionBuilder: target buffer too small\");\n const slice = target.subarray(offset, offset + size);\n this.__tnWriteInto(slice);\n this.__tnValidateOrThrow(slice, params);\n return target;\n }\n\n finish(): PasskeyInstruction {\n const buffer = this.build();\n const params = this.__tnLastParams ?? this.__tnComputeParams();\n const view = PasskeyInstruction.from_array(buffer, { params });\n if (!view) throw new Error(\"PasskeyInstructionBuilder: failed to finalize view\");\n return view;\n }\n\n finishView(): PasskeyInstruction {\n return this.finish();\n }\n\n dynamicParams(): PasskeyInstruction.Params {\n return this.__tnComputeParams();\n }\n\n private __tnComputeParams(): PasskeyInstruction.Params {\n if (this.__tnCachedParams) return this.__tnCachedParams;\n const params = PasskeyInstruction.Params.fromValues({\n payload_payload_size: (() => { if (!this.__tnPayload_payload) throw new Error(\"PasskeyInstructionBuilder: payload 'payload' must be selected before build\"); return __tnToBigInt(this.__tnPayload_payload.bytes.length); })(),\n payload_tag: (() => { if (this.__tnField_tag === null) throw new Error(\"PasskeyInstructionBuilder: missing enum tag\"); return __tnToBigInt(this.__tnField_tag); })(),\n });\n this.__tnCachedParams = params;\n return params;\n }\n\n private __tnWriteInto(target: Uint8Array): void {\n if (this.__tnField_tag === null) throw new Error(\"PasskeyInstructionBuilder: field 'tag' must be set before build\");\n if (!this.__tnPayload_payload) throw new Error(\"PasskeyInstructionBuilder: payload variant not selected\");\n const view = new DataView(target.buffer, target.byteOffset, target.byteLength);\n target.set(this.__tnPrefixBuffer, 0);\n view.setUint8(0, this.__tnField_tag);\n target.set(this.__tnPayload_payload.bytes, 1);\n }\n\n private __tnValidateOrThrow(buffer: Uint8Array, params: PasskeyInstruction.Params): void {\n const result = PasskeyInstruction.validate(buffer, { params });\n if (!result.ok) {\n throw new Error(`${ PasskeyInstruction }Builder: builder produced invalid buffer (code=${result.code ?? \"unknown\"})`);\n }\n this.__tnLastParams = result.params ?? params;\n this.__tnLastBuffer = buffer;\n }\n}\n\n__tnRegisterFootprint(\"PasskeyInstruction\", (params) => PasskeyInstruction.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"PasskeyInstruction\", (buffer, params) => PasskeyInstruction.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"PasskeyInstruction\", (buffer) => { const result = PasskeyInstruction.validate(buffer); return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed) }; });\n\n","import type { Authority, CreateInstructionParams } from '../types';\nimport {\n AuthorityBuilder,\n CreateArgsBuilder,\n PasskeyInstructionBuilder,\n} from '../abi/thru/program/passkey_manager/types';\n\nfunction buildAuthority(authority: Authority): Uint8Array {\n const data = new Array<number>(64).fill(0);\n\n if (authority.tag === 1) {\n if (authority.pubkeyX.length !== 32) throw new Error('pubkeyX must be 32 bytes');\n if (authority.pubkeyY.length !== 32) throw new Error('pubkeyY must be 32 bytes');\n for (let i = 0; i < 32; i++) data[i] = authority.pubkeyX[i];\n for (let i = 0; i < 32; i++) data[32 + i] = authority.pubkeyY[i];\n } else if (authority.tag === 2) {\n if (authority.pubkey.length !== 32) throw new Error('pubkey must be 32 bytes');\n for (let i = 0; i < 32; i++) data[i] = authority.pubkey[i];\n } else {\n throw new Error('Invalid authority tag');\n }\n\n return new AuthorityBuilder()\n .set_tag(authority.tag)\n .set_data(data)\n .build();\n}\n\nexport { buildAuthority };\n\nexport function encodeCreateInstruction(params: CreateInstructionParams): Uint8Array {\n const { walletAccountIdx, authority, seed, stateProof } = params;\n\n if (seed.length !== 32) throw new Error('seed must be 32 bytes');\n if (walletAccountIdx < 0 || walletAccountIdx > 0xffff) {\n throw new Error('walletAccountIdx must be 0-65535');\n }\n\n const authorityBytes = buildAuthority(authority);\n\n const argsPayload = new CreateArgsBuilder()\n .set_wallet_account_idx(walletAccountIdx)\n .set_authority(authorityBytes)\n .set_seed(seed)\n .set_state_proof(stateProof)\n .build();\n\n return new PasskeyInstructionBuilder()\n .payload()\n .select('create')\n .writePayload(argsPayload)\n .finish()\n .build();\n}\n","import {\n InstructionData,\n InstructionDataBuilder,\n} from './abi/thru/common/primitives/types';\nimport type { TargetInstructionParams } from './types';\n\nexport function buildTargetInstructionBytes({\n programIdx,\n instructionData,\n}: TargetInstructionParams): Uint8Array {\n if (!Number.isInteger(programIdx) || programIdx < 0 || programIdx > 0xffff) {\n throw new Error('programIdx must be 0-65535');\n }\n if (!(instructionData instanceof Uint8Array)) {\n throw new Error('instructionData must be a Uint8Array');\n }\n\n const builder = new InstructionDataBuilder();\n builder.set_program_idx(programIdx);\n builder.data().write(instructionData).finish();\n\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\n return buffer;\n}\n","import type { ValidateInstructionParams } from '../types';\nimport { PasskeyInstructionBuilder } from '../abi/thru/program/passkey_manager/types';\nimport { buildTargetInstructionBytes } from '../target-instruction';\n\nconst U8_SIZE = Uint8Array.BYTES_PER_ELEMENT;\nconst U16_SIZE = Uint16Array.BYTES_PER_ELEMENT;\nconst P256_COORDINATE_SIZE = 32;\nconst VALIDATE_FIXED_PREFIX_SIZE =\n U16_SIZE +\n U8_SIZE +\n P256_COORDINATE_SIZE +\n P256_COORDINATE_SIZE +\n U16_SIZE +\n U16_SIZE;\n\nfunction writeU16LE(target: Uint8Array, offset: number, value: number): void {\n target[offset] = value & 0xff;\n target[offset + 1] = (value >> 8) & 0xff;\n}\n\nexport function encodeValidateInstruction(params: ValidateInstructionParams): Uint8Array {\n const {\n walletAccountIdx,\n authIdx,\n targetInstruction,\n signatureR,\n signatureS,\n authenticatorData,\n clientDataJSON,\n } = params;\n\n if (walletAccountIdx < 0 || walletAccountIdx > 0xffff) {\n throw new Error('walletAccountIdx must be 0-65535');\n }\n if (authIdx < 0 || authIdx > 0xff) throw new Error('authIdx must be 0-255');\n if (signatureR.length !== 32) throw new Error('signatureR must be 32 bytes');\n if (signatureS.length !== 32) throw new Error('signatureS must be 32 bytes');\n if (authenticatorData.length > 0xffff) {\n throw new Error('authenticatorData length must be 0-65535');\n }\n if (clientDataJSON.length > 0xffff) {\n throw new Error('clientDataJSON length must be 0-65535');\n }\n\n const targetInstructionBytes = buildTargetInstructionBytes(targetInstruction);\n\n const argsPayload = new Uint8Array(\n VALIDATE_FIXED_PREFIX_SIZE +\n authenticatorData.length +\n clientDataJSON.length +\n targetInstructionBytes.length\n );\n let offset = 0;\n\n writeU16LE(argsPayload, offset, walletAccountIdx);\n offset += 2;\n argsPayload[offset] = authIdx;\n offset += 1;\n argsPayload.set(signatureR, offset);\n offset += signatureR.length;\n argsPayload.set(signatureS, offset);\n offset += signatureS.length;\n writeU16LE(argsPayload, offset, authenticatorData.length);\n offset += 2;\n writeU16LE(argsPayload, offset, clientDataJSON.length);\n offset += 2;\n argsPayload.set(authenticatorData, offset);\n offset += authenticatorData.length;\n argsPayload.set(clientDataJSON, offset);\n offset += clientDataJSON.length;\n argsPayload.set(targetInstructionBytes, offset);\n\n return new PasskeyInstructionBuilder()\n .payload()\n .select('validate')\n .writePayload(argsPayload)\n .finish()\n .build();\n}\n","import type { TransferInstructionParams } from '../types';\nimport {\n TransferArgsBuilder,\n PasskeyInstructionBuilder,\n} from '../abi/thru/program/passkey_manager/types';\n\nexport function encodeTransferInstruction(params: TransferInstructionParams): Uint8Array {\n const { walletAccountIdx, toAccountIdx, amount } = params;\n\n if (walletAccountIdx < 0 || walletAccountIdx > 0xffff) {\n throw new Error('walletAccountIdx must be 0-65535');\n }\n if (toAccountIdx < 0 || toAccountIdx > 0xffff) {\n throw new Error('toAccountIdx must be 0-65535');\n }\n if (amount < 0n) throw new Error('amount must be non-negative');\n\n const argsPayload = new TransferArgsBuilder()\n .set_wallet_account_idx(walletAccountIdx)\n .set_to_account_idx(toAccountIdx)\n .set_amount(amount as unknown as number)\n .build();\n\n return new PasskeyInstructionBuilder()\n .payload()\n .select('transfer')\n .writePayload(argsPayload)\n .finish()\n .build();\n}\n","import type { AddAuthorityInstructionParams } from '../types';\nimport {\n AddAuthorityArgsBuilder,\n PasskeyInstructionBuilder,\n} from '../abi/thru/program/passkey_manager/types';\nimport { buildAuthority } from './create';\n\nexport function encodeAddAuthorityInstruction(params: AddAuthorityInstructionParams): Uint8Array {\n const { walletAccountIdx } = params;\n if (walletAccountIdx < 0 || walletAccountIdx > 0xffff) {\n throw new Error('walletAccountIdx must be 0-65535');\n }\n\n const authorityBytes = buildAuthority(params.authority);\n\n const argsPayload = new AddAuthorityArgsBuilder()\n .set_wallet_account_idx(walletAccountIdx)\n .set_authority(authorityBytes)\n .build();\n\n return new PasskeyInstructionBuilder()\n .payload()\n .select('add_authority')\n .writePayload(argsPayload)\n .finish()\n .build();\n}\n","import {\n RemoveAuthorityArgsBuilder,\n PasskeyInstructionBuilder,\n} from '../abi/thru/program/passkey_manager/types';\nimport type { RemoveAuthorityInstructionParams } from '../types';\n\nexport function encodeRemoveAuthorityInstruction(\n params: RemoveAuthorityInstructionParams\n): Uint8Array {\n const { walletAccountIdx, authIdx } = params;\n if (walletAccountIdx < 0 || walletAccountIdx > 0xffff) {\n throw new Error('walletAccountIdx must be 0-65535');\n }\n if (authIdx < 0 || authIdx > 0xff) throw new Error('authIdx must be 0-255');\n\n const argsPayload = new RemoveAuthorityArgsBuilder()\n .set_wallet_account_idx(walletAccountIdx)\n .set_auth_idx(authIdx)\n .build();\n\n return new PasskeyInstructionBuilder()\n .payload()\n .select('remove_authority')\n .writePayload(argsPayload)\n .finish()\n .build();\n}\n","import type { RegisterCredentialInstructionParams } from '../types';\nimport {\n RegisterCredentialArgsBuilder,\n PasskeyInstructionBuilder,\n} from '../abi/thru/program/passkey_manager/types';\n\nexport function encodeRegisterCredentialInstruction(\n params: RegisterCredentialInstructionParams\n): Uint8Array {\n const { walletAccountIdx, lookupAccountIdx, seed, stateProof } = params;\n\n if (seed.length !== 32) throw new Error('seed must be 32 bytes');\n if (walletAccountIdx < 0 || walletAccountIdx > 0xffff) {\n throw new Error('walletAccountIdx must be 0-65535');\n }\n if (lookupAccountIdx < 0 || lookupAccountIdx > 0xffff) {\n throw new Error('lookupAccountIdx must be 0-65535');\n }\n\n const argsPayload = new RegisterCredentialArgsBuilder()\n .set_wallet_account_idx(walletAccountIdx)\n .set_lookup_account_idx(lookupAccountIdx)\n .set_seed(seed)\n .set_state_proof(stateProof)\n .build();\n\n return new PasskeyInstructionBuilder()\n .payload()\n .select('register_credential')\n .writePayload(argsPayload)\n .finish()\n .build();\n}\n","import type { TargetInstructionParams } from './types';\nimport { buildTargetInstructionBytes } from './target-instruction';\n\n/**\n * Create challenge for VALIDATE instruction.\n * SHA256(domain || nonce || wallet_account_idx || auth_idx || account_count ||\n * account_0 || account_1 || ... || target_instruction)\n */\nexport const VALIDATE_CHALLENGE_DOMAIN = 'thru.passkey.validate';\n\nfunction writeU64LE(target: Uint8Array, offset: number, value: bigint): void {\n let remaining = value;\n for (let i = 0; i < 8; i++) {\n target[offset + i] = Number(remaining & 0xffn);\n remaining >>= 8n;\n }\n}\n\nexport async function createValidateChallenge(\n nonce: bigint,\n accountAddresses: string[],\n walletAccountIdx: number,\n authIdx: number,\n targetInstruction: TargetInstructionParams\n): Promise<Uint8Array> {\n const targetInstructionBytes = buildTargetInstructionBytes(targetInstruction);\n const encoder = new TextEncoder();\n const domainBytes = encoder.encode(VALIDATE_CHALLENGE_DOMAIN);\n const accountBytes = accountAddresses.map((address) => {\n const bytes = encoder.encode(address);\n if (bytes.length !== 46) {\n throw new Error('accountAddresses must contain ta addresses');\n }\n return bytes;\n });\n if (walletAccountIdx < 0 || walletAccountIdx > 0xffff) {\n throw new Error('walletAccountIdx must be 0-65535');\n }\n if (authIdx < 0 || authIdx > 0xff) throw new Error('authIdx must be 0-255');\n if (accountBytes.length > 0xffff) throw new Error('accountAddresses length must be 0-65535');\n\n const totalSize =\n domainBytes.length +\n 8 +\n 2 +\n 1 +\n 2 +\n accountBytes.reduce((sum, bytes) => sum + bytes.length, 0) +\n targetInstructionBytes.length;\n const challengeData = new Uint8Array(totalSize);\n\n let offset = 0;\n challengeData.set(domainBytes, offset);\n offset += domainBytes.length;\n\n writeU64LE(challengeData, offset, nonce);\n offset += 8;\n\n challengeData[offset] = walletAccountIdx & 0xff;\n challengeData[offset + 1] = (walletAccountIdx >> 8) & 0xff;\n offset += 2;\n\n challengeData[offset] = authIdx & 0xff;\n offset += 1;\n\n challengeData[offset] = accountBytes.length & 0xff;\n challengeData[offset + 1] = (accountBytes.length >> 8) & 0xff;\n offset += 2;\n\n for (const bytes of accountBytes) {\n challengeData.set(bytes, offset);\n offset += bytes.length;\n }\n\n challengeData.set(targetInstructionBytes, offset);\n\n const hashBuffer = await crypto.subtle.digest('SHA-256', challengeData);\n return new Uint8Array(hashBuffer);\n}\n","import { decodeAddress } from '@thru/sdk/helpers';\n\n/**\n * Create a 32-byte seed from wallet name and passkey coordinates.\n * SHA-256(walletName || pubkey_x || pubkey_y)\n */\nexport async function createWalletSeed(\n walletName: string,\n pubkeyX: Uint8Array,\n pubkeyY: Uint8Array,\n): Promise<Uint8Array> {\n if (pubkeyX.length !== 32) throw new Error(\"pubkeyX must be 32 bytes\");\n if (pubkeyY.length !== 32) throw new Error(\"pubkeyY must be 32 bytes\");\n\n const nameBytes = new TextEncoder().encode(walletName);\n const data = new Uint8Array(nameBytes.length + 32 + 32);\n data.set(nameBytes, 0);\n data.set(pubkeyX, nameBytes.length);\n data.set(pubkeyY, nameBytes.length + 32);\n\n const hashBuffer = await crypto.subtle.digest(\"SHA-256\", data);\n return new Uint8Array(hashBuffer);\n}\n\n/**\n * Derive wallet account address from seed using proper PDA derivation.\n * SHA256(program_address || is_ephemeral || seed)\n */\nexport async function deriveWalletAddress(\n seed: Uint8Array,\n programAddress: string,\n): Promise<Uint8Array> {\n if (seed.length !== 32) {\n throw new Error(\"seed must be 32 bytes\");\n }\n\n const programBytes = decodeAddress(programAddress);\n const isEphemeral = new Uint8Array([0]);\n\n const preimage = new Uint8Array(32 + 1 + 32);\n preimage.set(programBytes, 0);\n preimage.set(isEphemeral, 32);\n preimage.set(seed, 33);\n\n const hashBuffer = await crypto.subtle.digest(\"SHA-256\", preimage);\n return new Uint8Array(hashBuffer);\n}\n\n/**\n * Create a 32-byte seed for a credential lookup PDA.\n * SHA-256(credentialId)\n */\nexport async function createCredentialLookupSeed(\n credentialId: Uint8Array,\n): Promise<Uint8Array> {\n const data = new Uint8Array(credentialId.length);\n data.set(credentialId);\n\n const hashBuffer = await crypto.subtle.digest(\"SHA-256\", data);\n return new Uint8Array(hashBuffer);\n}\n\n/**\n * Derive credential lookup PDA address from a credential ID.\n * Convenience wrapper: deriveWalletAddress(SHA-256(credentialId), programAddress)\n */\nexport async function deriveCredentialLookupAddress(\n credentialId: Uint8Array,\n programAddress: string,\n): Promise<Uint8Array> {\n const seed = await createCredentialLookupSeed(credentialId);\n return deriveWalletAddress(seed, programAddress);\n}\n","import { hexToBytes as sharedHexToBytes } from '@thru/sdk/helpers';\n\nexport function arrayBufferToBase64Url(buffer: ArrayBuffer | SharedArrayBuffer): string {\n const bytes = new Uint8Array(buffer);\n let base64 = '';\n for (let i = 0; i < bytes.length; i++) {\n base64 += String.fromCharCode(bytes[i]);\n }\n return btoa(base64).replace(/\\+/g, '-').replace(/\\//g, '_').replace(/=+$/, '');\n}\n\nexport function base64UrlToArrayBuffer(base64Url: string): ArrayBuffer {\n const base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');\n const padded = base64.padEnd(base64.length + ((4 - (base64.length % 4)) % 4), '=');\n const binary = atob(padded);\n const bytes = new Uint8Array(binary.length);\n for (let i = 0; i < binary.length; i++) {\n bytes[i] = binary.charCodeAt(i);\n }\n return bytes.buffer;\n}\n\nexport function bytesToBase64Url(bytes: Uint8Array): string {\n const slice = bytes.buffer.slice(bytes.byteOffset, bytes.byteOffset + bytes.byteLength);\n return arrayBufferToBase64Url(slice);\n}\n\nexport function bytesToBase64(bytes: Uint8Array): string {\n type BufferLike = {\n from(value: Uint8Array): { toString(encoding: 'base64'): string };\n };\n const globalBuffer =\n typeof globalThis !== 'undefined' ? (globalThis as { Buffer?: BufferLike }).Buffer : undefined;\n if (globalBuffer) {\n return globalBuffer.from(bytes).toString('base64');\n }\n\n if (typeof btoa === 'function') {\n let binary = '';\n for (let i = 0; i < bytes.length; i++) {\n binary += String.fromCharCode(bytes[i]);\n }\n return btoa(binary);\n }\n\n throw new Error('Base64 encoding is not supported in this environment');\n}\n\nexport function base64UrlToBytes(base64Url: string): Uint8Array {\n return new Uint8Array(base64UrlToArrayBuffer(base64Url));\n}\n\nexport function bytesToHex(bytes: Uint8Array): string {\n return Array.from(bytes, (b) => b.toString(16).padStart(2, '0')).join('');\n}\n\nexport function hexToBytes(hex: string): Uint8Array {\n return sharedHexToBytes(hex);\n}\n\nexport function bytesEqual(a: Uint8Array, b: Uint8Array): boolean {\n if (a.length !== b.length) return false;\n for (let i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) return false;\n }\n return true;\n}\n\nexport function compareBytes(a: Uint8Array, b: Uint8Array): number {\n const len = Math.min(a.length, b.length);\n for (let i = 0; i < len; i++) {\n if (a[i] !== b[i]) return a[i] - b[i];\n }\n return a.length - b.length;\n}\n\nexport function uniqueAccounts(accounts: Uint8Array[]): Uint8Array[] {\n const unique: Uint8Array[] = [];\n for (const account of accounts) {\n if (!unique.some((candidate) => bytesEqual(candidate, account))) {\n unique.push(account);\n }\n }\n return unique;\n}\n","import { encodeAddress, decodeAddress } from '@thru/sdk/helpers';\nimport { bytesEqual, compareBytes, uniqueAccounts } from './encoding';\nimport { PASSKEY_MANAGER_PROGRAM_ADDRESS } from './constants';\nimport type { AccountContext } from './types';\n\n/**\n * Default fee payer address (manager profile).\n */\nexport const FEE_PAYER_ADDRESS =\n 'taVcZv3wB2m-euBpMHm2rF9fQRY_fO_g7WdOjs70CxDh_S';\n\n/**\n * Build account context for passkey manager transactions.\n * Handles account deduplication, sorting, and index lookup.\n */\nexport function buildAccountContext(params: {\n walletAddress: string;\n readWriteAccounts: Uint8Array[];\n readOnlyAccounts: Uint8Array[];\n feePayerAddress?: string;\n programAddress?: string;\n}): AccountContext {\n const feePayerBytes = decodeAddress(params.feePayerAddress ?? FEE_PAYER_ADDRESS);\n const programBytes = decodeAddress(params.programAddress ?? PASSKEY_MANAGER_PROGRAM_ADDRESS);\n const walletBytes = decodeAddress(params.walletAddress);\n\n const readWriteBytes = uniqueAccounts([walletBytes, ...params.readWriteAccounts])\n .filter(\n (addr) => !bytesEqual(addr, feePayerBytes) && !bytesEqual(addr, programBytes)\n )\n .sort(compareBytes);\n\n const readOnlyBytes = uniqueAccounts(params.readOnlyAccounts)\n .filter(\n (addr) =>\n !bytesEqual(addr, feePayerBytes) &&\n !bytesEqual(addr, programBytes) &&\n !readWriteBytes.some((candidate) => bytesEqual(candidate, addr))\n )\n .sort(compareBytes);\n\n const readWriteAddresses = readWriteBytes.map(encodeAddress);\n const readOnlyAddresses = readOnlyBytes.map(encodeAddress);\n\n const accountAddresses = [\n encodeAddress(feePayerBytes),\n encodeAddress(programBytes),\n ...readWriteAddresses,\n ...readOnlyAddresses,\n ];\n\n const findIndex = (target: Uint8Array): number => {\n if (bytesEqual(target, feePayerBytes)) return 0;\n if (bytesEqual(target, programBytes)) return 1;\n\n const rwIndex = readWriteBytes.findIndex((candidate) => bytesEqual(candidate, target));\n if (rwIndex >= 0) return rwIndex + 2;\n\n const roIndex = readOnlyBytes.findIndex((candidate) => bytesEqual(candidate, target));\n if (roIndex >= 0) return roIndex + 2 + readWriteBytes.length;\n\n return -1;\n };\n\n const walletAccountIdx = findIndex(walletBytes);\n if (walletAccountIdx < 2) {\n throw new Error('Wallet account must be a non-fee-payer account');\n }\n\n return {\n readWriteAddresses,\n readOnlyAddresses,\n accountAddresses,\n walletAccountIdx,\n getAccountIndex: (pubkey: Uint8Array) => {\n const idx = findIndex(pubkey);\n if (idx < 0) {\n throw new Error('Account not found in transaction accounts');\n }\n return idx;\n },\n };\n}\n\n/**\n * Build read-write accounts list for passkey manager transactions (simpler wallet-only version).\n */\nexport function buildPasskeyReadWriteAccounts(\n userAccounts: Uint8Array[],\n feePayerPublicKey: Uint8Array,\n programAddress: Uint8Array\n): {\n readWriteAddresses: string[];\n findAccountIndex: (target: Uint8Array) => number;\n} {\n const sortedUserAccounts = uniqueAccounts(userAccounts).sort(compareBytes);\n const filteredUserAccounts = sortedUserAccounts.filter(\n (addr) => !bytesEqual(addr, feePayerPublicKey) && !bytesEqual(addr, programAddress)\n );\n const readWriteAddresses = filteredUserAccounts.map((addr) => encodeAddress(addr));\n\n const findAccountIndex = (target: Uint8Array): number => {\n if (bytesEqual(target, feePayerPublicKey)) return 0;\n if (bytesEqual(target, programAddress)) return 1;\n for (let i = 0; i < filteredUserAccounts.length; i++) {\n if (bytesEqual(filteredUserAccounts[i], target)) return i + 2;\n }\n return -1;\n };\n\n return { readWriteAddresses, findAccountIndex };\n}\n","import { encodeAddress } from '@thru/sdk/helpers';\nimport {\n CredentialLookup,\n WalletAccount,\n} from './abi/thru/program/passkey_manager/types';\n\n/**\n * Parse wallet account data to extract nonce.\n */\nexport function parseWalletNonce(data: Uint8Array): bigint {\n const account = WalletAccount.from_array(data);\n if (!account) return 0n;\n return account.get_nonce();\n}\n\n/**\n * Fetch wallet nonce from the chain.\n * Takes an SDK-like object with accounts.get() method.\n */\nexport async function fetchWalletNonce(\n sdk: { accounts: { get: (address: string) => Promise<{ data?: { data?: Uint8Array } }> } },\n walletAddress: string\n): Promise<bigint> {\n const account = await sdk.accounts.get(walletAddress);\n const data = account.data?.data;\n if (!data) return 0n;\n const parsed = WalletAccount.from_array(data);\n if (!parsed) return 0n;\n return parsed.get_nonce();\n}\n\n/* ------------------------------------------------------------------ */\n/* Authority list parsing */\n/* ------------------------------------------------------------------ */\n\nexport type ParsedAuthority =\n | {\n idx: number;\n kind: 'passkey';\n x: Uint8Array;\n y: Uint8Array;\n }\n | {\n idx: number;\n kind: 'pubkey';\n pubkey: Uint8Array;\n }\n | {\n idx: number;\n kind: 'unknown';\n tag: number;\n data: Uint8Array;\n };\n\nexport interface WalletAuthorities {\n nonce: bigint;\n authorities: ParsedAuthority[];\n}\n\nconst AUTHORITY_HEADER_BYTES = 9; /* num_auth (u8) + nonce (u64 LE) */\nconst AUTHORITY_ENTRY_BYTES = 65; /* tag (u8) + data (64) */\n\nfunction readU64LE(data: Uint8Array, offset: number): bigint {\n if (offset + 8 > data.length) {\n throw new Error('Out of bounds');\n }\n let value = 0n;\n for (let i = 0; i < 8; i++) {\n value |= BigInt(data[offset + i]) << (8n * BigInt(i));\n }\n return value;\n}\n\n/**\n * Parse the on-chain WalletAccount data buffer into its nonce and full\n * authority list. The on-chain layout is:\n *\n * num_auth: u8\n * nonce: u64 LE\n * authorities[num_auth + 1]: { tag: u8, data: [u8; 64] }\n *\n * (`num_auth + 1` because num_auth stores the count minus one.)\n */\nexport function parseWalletAuthorities(data: Uint8Array): WalletAuthorities {\n if (data.length < AUTHORITY_HEADER_BYTES) {\n throw new Error('Wallet data too small');\n }\n\n const numAuth = data[0];\n const nonce = readU64LE(data, 1);\n\n const count = numAuth + 1;\n const required =\n AUTHORITY_HEADER_BYTES + count * AUTHORITY_ENTRY_BYTES;\n if (data.length < required) {\n throw new Error('Wallet data truncated');\n }\n\n const authorities: ParsedAuthority[] = [];\n for (let idx = 0; idx < count; idx++) {\n const offset = AUTHORITY_HEADER_BYTES + idx * AUTHORITY_ENTRY_BYTES;\n const tag = data[offset];\n const payload = data.slice(offset + 1, offset + AUTHORITY_ENTRY_BYTES);\n\n if (tag === 1) {\n authorities.push({\n idx,\n kind: 'passkey',\n x: payload.slice(0, 32),\n y: payload.slice(32, 64),\n });\n continue;\n }\n\n if (tag === 2) {\n authorities.push({ idx, kind: 'pubkey', pubkey: payload.slice(0, 32) });\n continue;\n }\n\n authorities.push({ idx, kind: 'unknown', tag, data: payload });\n }\n\n return { nonce, authorities };\n}\n\n/**\n * Encode a 32-byte pubkey to its base58 wallet address representation.\n */\nexport function formatAuthorityPubkey(pubkey: Uint8Array): string {\n return encodeAddress(pubkey);\n}\n\n/**\n * Parse a CredentialLookup account and return the wallet account pubkey\n * stored inside it.\n */\nexport function parseCredentialLookupWallet(data: Uint8Array): Uint8Array | null {\n const lookup = CredentialLookup.from_array(data);\n if (!lookup) return null;\n const wallet = lookup.get_wallet() as unknown as { buffer?: Uint8Array };\n return wallet.buffer ? wallet.buffer.slice() : null;\n}\n","import { parseWalletAuthorities, type ParsedAuthority } from './accounts';\nimport { bytesToHex } from './encoding';\n\nconst DEFAULT_AUTHORITY_TARGET_CONCURRENCY = 8;\n\nexport interface PasskeyAuthorityIdentity {\n publicKeyX?: string | null;\n publicKeyY?: string | null;\n}\n\nexport interface CheckablePasskeyAuthorityIdentity {\n publicKeyX: string;\n publicKeyY: string;\n}\n\ninterface AccountLike {\n data?: {\n data?: Uint8Array;\n };\n}\n\ninterface ThruAccountClient {\n accounts: {\n get(address: string): Promise<AccountLike>;\n };\n}\n\nexport interface PasskeyAuthorityTarget<T> {\n account: T;\n walletAddress: string;\n authIdx: number;\n authorities: ParsedAuthority[];\n}\n\nexport interface PreparePasskeyAuthorityTargetsOptions<T> {\n accounts: T[];\n passkey?: PasskeyAuthorityIdentity | null;\n thru: ThruAccountClient;\n getWalletAddress: (account: T) => string;\n concurrency?: number;\n}\n\nfunction getAccountData(account: AccountLike | null | undefined): Uint8Array | null {\n return account?.data?.data ?? null;\n}\n\nexport function isPasskeyAuthorityCheckable(\n passkey: PasskeyAuthorityIdentity | null | undefined\n): passkey is CheckablePasskeyAuthorityIdentity {\n return Boolean(passkey?.publicKeyX && passkey.publicKeyY);\n}\n\nexport function findPasskeyAuthorityIndexForIdentity(\n authorities: ParsedAuthority[],\n passkey: PasskeyAuthorityIdentity | null | undefined\n): number | null {\n if (!isPasskeyAuthorityCheckable(passkey)) return null;\n\n const expectedX = passkey.publicKeyX.toLowerCase();\n const expectedY = passkey.publicKeyY.toLowerCase();\n const authority = authorities.find(\n (item) =>\n item.kind === 'passkey' &&\n bytesToHex(item.x).toLowerCase() === expectedX &&\n bytesToHex(item.y).toLowerCase() === expectedY\n );\n return authority?.idx ?? null;\n}\n\nexport function findPasskeyAuthorityIndexInWalletData(\n walletData: Uint8Array,\n passkey: PasskeyAuthorityIdentity | null | undefined\n): { authIdx: number; authorities: ParsedAuthority[] } | null {\n const parsed = parseWalletAuthorities(walletData);\n const authIdx = findPasskeyAuthorityIndexForIdentity(parsed.authorities, passkey);\n return authIdx === null ? null : { authIdx, authorities: parsed.authorities };\n}\n\nexport async function resolvePasskeyAuthorityIndex(params: {\n thru: ThruAccountClient;\n walletAddress: string;\n passkey?: PasskeyAuthorityIdentity | null;\n}): Promise<number | null> {\n const walletAccount = await params.thru.accounts.get(params.walletAddress);\n const walletData = getAccountData(walletAccount);\n if (!walletData) return null;\n\n return findPasskeyAuthorityIndexInWalletData(walletData, params.passkey)?.authIdx ?? null;\n}\n\nasync function mapWithConcurrency<T, R>(\n items: T[],\n concurrency: number,\n mapper: (item: T) => Promise<R>\n): Promise<R[]> {\n const results = new Array<R>(items.length);\n let nextIndex = 0;\n const workerCount = Math.max(1, Math.min(Math.floor(concurrency), items.length));\n\n await Promise.all(\n Array.from({ length: workerCount }, async () => {\n while (nextIndex < items.length) {\n const currentIndex = nextIndex;\n nextIndex += 1;\n results[currentIndex] = await mapper(items[currentIndex]);\n }\n })\n );\n\n return results;\n}\n\nexport async function preparePasskeyAuthorityTargets<T>({\n accounts,\n passkey,\n thru,\n getWalletAddress,\n concurrency = DEFAULT_AUTHORITY_TARGET_CONCURRENCY,\n}: PreparePasskeyAuthorityTargetsOptions<T>): Promise<PasskeyAuthorityTarget<T>[]> {\n if (!isPasskeyAuthorityCheckable(passkey) || accounts.length === 0) {\n return [];\n }\n\n const targets = await mapWithConcurrency(accounts, concurrency, async (account) => {\n const walletAddress = getWalletAddress(account);\n try {\n const walletAccount = await thru.accounts.get(walletAddress);\n const walletData = getAccountData(walletAccount);\n if (!walletData) return null;\n\n const target = findPasskeyAuthorityIndexInWalletData(walletData, passkey);\n if (!target) return null;\n\n return {\n account,\n walletAddress,\n authIdx: target.authIdx,\n authorities: target.authorities,\n };\n } catch {\n return null;\n }\n });\n\n return targets.filter(\n (target): target is PasskeyAuthorityTarget<T> => target !== null\n );\n}\n","/**\n * P-256 curve order and half-order for low-S normalization.\n */\nexport const P256_N =\n 0xffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551n;\nexport const P256_HALF_N = P256_N >> 1n;\n\n/**\n * Parse DER-encoded ECDSA signature to get r and s components.\n */\nexport function parseDerSignature(der: Uint8Array): { r: Uint8Array; s: Uint8Array } {\n if (der[0] !== 0x30) throw new Error('Invalid DER signature');\n\n let offset = 2;\n\n if (der[offset] !== 0x02) throw new Error('Invalid DER signature');\n offset++;\n\n const rLen = der[offset++];\n let r: Uint8Array = der.slice(offset, offset + rLen);\n offset += rLen;\n\n if (der[offset] !== 0x02) throw new Error('Invalid DER signature');\n offset++;\n\n const sLen = der[offset++];\n let s: Uint8Array = der.slice(offset, offset + sLen);\n\n r = normalizeSignatureComponent(r);\n s = normalizeSignatureComponent(s);\n\n return { r, s };\n}\n\n/**\n * Ensure S is in the lower half of the curve order (BIP-62 / SEC1 compliance).\n */\nexport function normalizeLowS(s: Uint8Array): Uint8Array {\n const sValue = bytesToBigIntBE(s);\n if (sValue > P256_HALF_N) {\n return bigIntToBytesBE(P256_N - sValue, 32);\n }\n return s;\n}\n\n/**\n * Normalize signature component to exactly 32 bytes.\n */\nexport function normalizeSignatureComponent(component: Uint8Array): Uint8Array {\n if (component.length === 32) return component;\n\n if (component.length > 32) {\n if (component[0] === 0x00 && component.length === 33) {\n return component.slice(1);\n }\n throw new Error('Invalid signature component length');\n }\n\n const normalized = new Uint8Array(32);\n normalized.set(component, 32 - component.length);\n return normalized;\n}\n\nexport function bytesToBigIntBE(bytes: Uint8Array): bigint {\n let value = 0n;\n for (const byte of bytes) {\n value = (value << 8n) | BigInt(byte);\n }\n return value;\n}\n\nexport function bigIntToBytesBE(value: bigint, length: number): Uint8Array {\n const out = new Uint8Array(length);\n let v = value;\n for (let i = length - 1; i >= 0; i--) {\n out[i] = Number(v & 0xffn);\n v >>= 8n;\n }\n return out;\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../src/passkey-manager/abi/thru/common/primitives/types.ts","../../src/passkey-manager/abi/thru/blockchain/state_proof/types.ts","../../src/passkey-manager/abi/thru/program/passkey_manager/types.ts","../../src/passkey-manager/constants.ts","../../src/passkey-manager/instructions/create.ts","../../src/passkey-manager/target-instruction.ts","../../src/passkey-manager/instructions/validate.ts","../../src/passkey-manager/instructions/transfer.ts","../../src/passkey-manager/instructions/invoke.ts","../../src/passkey-manager/instructions/add-authority.ts","../../src/passkey-manager/instructions/remove-authority.ts","../../src/passkey-manager/instructions/register-credential.ts","../../src/passkey-manager/instructions/shared.ts","../../src/passkey-manager/challenge.ts","../../src/passkey-manager/seeds.ts","../../src/passkey-manager/encoding.ts","../../src/passkey-manager/context.ts","../../src/passkey-manager/accounts.ts","../../src/passkey-manager/authority.ts","../../src/passkey-manager/crypto.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","StateProof","__tnCreateVariantSelector","__tnCreateFamWriter","ValidateArgs","params","WalletAccount","PasskeyEvent","CreateArgs","RegisterCredentialArgs","PasskeyInstruction","writeU16LE","decodeAddress","sharedHexToBytes","encodeAddress","AUTHORITY_DATA_BYTES"],"mappings":"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","file":"index.cjs","sourcesContent":["/* Auto-generated TypeScript code */\n/* WARNING: Do not modify this file directly. It is generated from ABI definitions. */\n\ntype __TnIrNode =\n | { readonly op: \"zero\" }\n | { readonly op: \"const\"; readonly value: bigint }\n | { readonly op: \"field\"; readonly param: string }\n | {\n readonly op: \"add\";\n readonly left: __TnIrNode;\n readonly right: __TnIrNode;\n }\n | {\n readonly op: \"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: bigint): this {\n const cast = __tnToBigInt(value);\n this.view.setBigInt64(0, cast, true);\n return this;\n }\n\n set_nanos(value: number): this {\n this.view.setInt32(8, value, true);\n return this;\n }\n\n build(): Uint8Array {\n return this.buffer.slice();\n }\n\n buildInto(target: Uint8Array, offset = 0): Uint8Array {\n if (target.length - offset < this.buffer.length) throw new Error(\"target buffer too small\");\n target.set(this.buffer, offset);\n return target;\n }\n\n finish(): Duration {\n const view = Duration.from_array(this.buffer.slice());\n if (!view) throw new Error(\"failed to build Duration\");\n return view;\n }\n}\n\n__tnRegisterFootprint(\"Duration\", (params) => Duration.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"Duration\", (buffer, params) => Duration.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"Duration\", (buffer) => { const result = Duration.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n\n/* ----- TYPE DEFINITION FOR FixedPoint ----- */\n\nconst __tn_ir_FixedPoint = {\n typeName: \"FixedPoint\",\n root: { op: \"const\", value: 9n }\n} as const;\n\nexport class FixedPoint {\n private view: DataView;\n\n private constructor(private buffer: Uint8Array) {\n this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n }\n\n static __tnCreateView(buffer: Uint8Array, opts?: { fieldContext?: Record<string, number | bigint> }): FixedPoint {\n if (!buffer || buffer.length === undefined) throw new Error(\"FixedPoint.__tnCreateView requires a Uint8Array\");\n return new FixedPoint(new Uint8Array(buffer));\n }\n\n static builder(): FixedPointBuilder {\n return new FixedPointBuilder();\n }\n\n static fromBuilder(builder: FixedPointBuilder): FixedPoint | null {\n const buffer = builder.build();\n return FixedPoint.from_array(buffer);\n }\n\n get_mantissa(): bigint {\n const offset = 0;\n return this.view.getBigInt64(offset, true); /* little-endian */\n }\n\n set_mantissa(value: bigint): void {\n const offset = 0;\n this.view.setBigInt64(offset, value, true); /* little-endian */\n }\n\n get mantissa(): bigint {\n return this.get_mantissa();\n }\n\n set mantissa(value: bigint) {\n this.set_mantissa(value);\n }\n\n get_scale(): number {\n const offset = 8;\n return this.view.getUint8(offset);\n }\n\n set_scale(value: number): void {\n const offset = 8;\n this.view.setUint8(offset, value);\n }\n\n get scale(): number {\n return this.get_scale();\n }\n\n set scale(value: number) {\n this.set_scale(value);\n }\n\n private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n return __tnEvalFootprint(__tn_ir_FixedPoint.root, { params: __tnParams });\n }\n\n private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n return __tnValidateIrTree(__tn_ir_FixedPoint, buffer, __tnParams);\n }\n\n static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n return this.__tnFootprintInternal(__tnParams);\n }\n\n static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n return this.__tnValidateInternal(buffer, __tnParams);\n }\n\n static footprintIr(): bigint {\n return this.__tnFootprintInternal(Object.create(null));\n }\n\n static footprint(): number {\n const irResult = this.footprintIr();\n const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n if (__tnBigIntGreaterThan(irResult, maxSafe)) {\n throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for FixedPoint');\n }\n return __tnBigIntToNumber(irResult, 'FixedPoint::footprint');\n }\n\n static validate(buffer: Uint8Array, _opts?: { params?: never }): { ok: boolean; code?: string; consumed?: number } {\n if (buffer.length < 9) return { ok: false, code: \"tn.buffer_too_small\", consumed: 9 };\n return { ok: true, consumed: 9 };\n }\n\n static new(mantissa: bigint, scale: number): FixedPoint {\n const buffer = new Uint8Array(9);\n const view = new DataView(buffer.buffer);\n\n let offset = 0;\n view.setBigInt64(0, mantissa, true); /* mantissa (little-endian) */\n view.setUint8(8, scale); /* scale */\n\n return new FixedPoint(buffer);\n }\n\n static from_array(buffer: Uint8Array): FixedPoint | null {\n if (!buffer || buffer.length === undefined) {\n return null;\n }\n const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n const validation = this.validate(buffer);\n if (!validation.ok) {\n return null;\n }\n return new FixedPoint(buffer);\n }\n\n}\n\nexport class FixedPointBuilder {\n private buffer: Uint8Array;\n private view: DataView;\n\n constructor() {\n this.buffer = new Uint8Array(9);\n this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n }\n\n set_mantissa(value: bigint): this {\n const cast = __tnToBigInt(value);\n this.view.setBigInt64(0, cast, true);\n return this;\n }\n\n set_scale(value: number): this {\n this.view.setUint8(8, value);\n return this;\n }\n\n build(): Uint8Array {\n return this.buffer.slice();\n }\n\n buildInto(target: Uint8Array, offset = 0): Uint8Array {\n if (target.length - offset < this.buffer.length) throw new Error(\"target buffer too small\");\n target.set(this.buffer, offset);\n return target;\n }\n\n finish(): FixedPoint {\n const view = FixedPoint.from_array(this.buffer.slice());\n if (!view) throw new Error(\"failed to build FixedPoint\");\n return view;\n }\n}\n\n__tnRegisterFootprint(\"FixedPoint\", (params) => FixedPoint.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"FixedPoint\", (buffer, params) => FixedPoint.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"FixedPoint\", (buffer) => { const result = FixedPoint.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n\n/* ----- TYPE DEFINITION FOR Hash ----- */\n\nconst __tn_ir_Hash = {\n typeName: \"Hash\",\n root: { op: \"const\", value: 32n }\n} as const;\n\nexport class Hash {\n private view: DataView;\n\n private constructor(private buffer: Uint8Array) {\n this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n }\n\n static __tnCreateView(buffer: Uint8Array, opts?: { fieldContext?: Record<string, number | bigint> }): Hash {\n if (!buffer || buffer.length === undefined) throw new Error(\"Hash.__tnCreateView requires a Uint8Array\");\n return new Hash(new Uint8Array(buffer));\n }\n\n static builder(): HashBuilder {\n return new HashBuilder();\n }\n\n static fromBuilder(builder: HashBuilder): Hash | null {\n const buffer = builder.build();\n return Hash.from_array(buffer);\n }\n\n get_bytes(): number[] {\n const offset = 0;\n const result: number[] = [];\n for (let i = 0; i < 32; i++) {\n result.push(this.view.getUint8((offset + i * 1)));\n }\n return result;\n }\n\n set_bytes(value: number[]): void {\n const offset = 0;\n if (value.length !== 32) {\n throw new Error('Array length must be 32');\n }\n for (let i = 0; i < 32; i++) {\n this.view.setUint8((offset + i * 1), value[i]);\n }\n }\n\n get bytes(): number[] {\n return this.get_bytes();\n }\n\n set bytes(value: number[]) {\n this.set_bytes(value);\n }\n\n private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n return __tnEvalFootprint(__tn_ir_Hash.root, { params: __tnParams });\n }\n\n private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n return __tnValidateIrTree(__tn_ir_Hash, buffer, __tnParams);\n }\n\n static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n return this.__tnFootprintInternal(__tnParams);\n }\n\n static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n return this.__tnValidateInternal(buffer, __tnParams);\n }\n\n static footprintIr(): bigint {\n return this.__tnFootprintInternal(Object.create(null));\n }\n\n static footprint(): number {\n const irResult = this.footprintIr();\n const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n if (__tnBigIntGreaterThan(irResult, maxSafe)) {\n throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for Hash');\n }\n return __tnBigIntToNumber(irResult, 'Hash::footprint');\n }\n\n static validate(buffer: Uint8Array, _opts?: { params?: never }): { ok: boolean; code?: string; consumed?: number } {\n if (buffer.length < 32) return { ok: false, code: \"tn.buffer_too_small\", consumed: 32 };\n return { ok: true, consumed: 32 };\n }\n\n static from_array(buffer: Uint8Array): Hash | null {\n if (!buffer || buffer.length === undefined) {\n return null;\n }\n const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n const validation = this.validate(buffer);\n if (!validation.ok) {\n return null;\n }\n return new Hash(buffer);\n }\n\n}\n\nexport class HashBuilder {\n private buffer: Uint8Array;\n private view: DataView;\n\n constructor() {\n this.buffer = new Uint8Array(32);\n this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n }\n\n set_bytes(values: number[]): this {\n if (values.length !== 32) throw new Error(\"bytes expects 32 elements\");\n for (let i = 0; i < values.length; i++) {\n const byteOffset = 0 + i * 1;\n this.view.setUint8(byteOffset, values[i]);\n }\n return this;\n }\n\n build(): Uint8Array {\n return this.buffer.slice();\n }\n\n buildInto(target: Uint8Array, offset = 0): Uint8Array {\n if (target.length - offset < this.buffer.length) throw new Error(\"target buffer too small\");\n target.set(this.buffer, offset);\n return target;\n }\n\n finish(): Hash {\n const view = Hash.from_array(this.buffer.slice());\n if (!view) throw new Error(\"failed to build Hash\");\n return view;\n }\n}\n\n__tnRegisterFootprint(\"Hash\", (params) => Hash.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"Hash\", (buffer, params) => Hash.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"Hash\", (buffer) => { const result = Hash.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n\n/* ----- TYPE DEFINITION FOR InstructionData ----- */\n\nconst __tn_ir_InstructionData = {\n typeName: \"InstructionData\",\n root: { op: \"align\", alignment: 1, node: { op: \"add\", left: { op: \"add\", left: { op: \"align\", alignment: 2, node: { op: \"const\", value: 2n } }, right: { op: \"align\", alignment: 8, node: { op: \"const\", value: 8n } } }, right: { op: \"align\", alignment: 1, node: { op: \"mul\", left: { op: \"field\", param: \"data.data_size\" }, right: { op: \"const\", value: 1n } } } } }\n} as const;\n\nexport class InstructionData {\n private view: DataView;\n private __tnFieldContext: Record<string, number | bigint> | null = null;\n private __tnParams: InstructionData.Params;\n\n private constructor(private buffer: Uint8Array, params?: InstructionData.Params, fieldContext?: Record<string, number | bigint>) {\n this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n this.__tnFieldContext = fieldContext ?? null;\n if (params) {\n this.__tnParams = params;\n } else {\n const derived = InstructionData.__tnExtractParams(this.view, buffer);\n if (!derived) {\n throw new Error(\"InstructionData: failed to derive dynamic parameters\");\n }\n this.__tnParams = derived.params;\n }\n }\n\n static __tnCreateView(buffer: Uint8Array, opts?: { params?: InstructionData.Params, fieldContext?: Record<string, number | bigint> }): InstructionData {\n if (!buffer || buffer.length === undefined) throw new Error(\"InstructionData.__tnCreateView requires a Uint8Array\");\n let params = opts?.params ?? null;\n if (!params) {\n const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n const derived = InstructionData.__tnExtractParams(view, buffer);\n if (!derived) throw new Error(\"InstructionData.__tnCreateView: failed to derive params\");\n params = derived.params;\n }\n const instance = new InstructionData(new Uint8Array(buffer), params, opts?.fieldContext);\n return instance;\n }\n\n dynamicParams(): InstructionData.Params {\n return this.__tnParams;\n }\n\n withFieldContext(context: Record<string, number | bigint>): this {\n this.__tnFieldContext = context;\n return this;\n }\n\n private __tnResolveFieldRef(path: string): number {\n const getterName = `get_${path.replace(/[.]/g, '_')}`;\n const getter = (this as any)[getterName];\n if (typeof getter === \"function\") {\n const value = getter.call(this);\n return typeof value === \"bigint\" ? __tnBigIntToNumber(value, \"InstructionData::__tnResolveFieldRef\") : value;\n }\n if (this.__tnFieldContext && Object.prototype.hasOwnProperty.call(this.__tnFieldContext, path)) {\n const contextValue = this.__tnFieldContext[path];\n return typeof contextValue === \"bigint\" ? __tnBigIntToNumber(contextValue, \"InstructionData::__tnResolveFieldRef\") : contextValue;\n }\n throw new Error(\"InstructionData: field reference '\" + path + \"' is not available; provide fieldContext when creating this view\");\n }\n\n static builder(): InstructionDataBuilder {\n return new InstructionDataBuilder();\n }\n\n static fromBuilder(builder: InstructionDataBuilder): InstructionData | null {\n const buffer = builder.build();\n const params = builder.dynamicParams();\n return InstructionData.from_array(buffer, { params });\n }\n\n static readonly flexibleArrayWriters = Object.freeze([\n { field: \"data\", method: \"data\", sizeField: \"data_size\", paramKey: \"data_size\", elementSize: 1 },\n ] as const);\n\n private static __tnExtractParams(view: DataView, buffer: Uint8Array): { params: InstructionData.Params; derived: Record<string, bigint> | null } | null {\n if (buffer.length < 10) {\n return null;\n }\n const __tnParam_data_data_size = __tnToBigInt(view.getBigUint64(2, true));\n const __tnExtractedParams = InstructionData.Params.fromValues({\n data_data_size: __tnParam_data_data_size,\n });\n return { params: __tnExtractedParams, derived: null };\n }\n\n get_program_idx(): number {\n const offset = 0;\n return this.view.getUint16(offset, true); /* little-endian */\n }\n\n set_program_idx(value: number): void {\n const offset = 0;\n this.view.setUint16(offset, value, true); /* little-endian */\n }\n\n get program_idx(): number {\n return this.get_program_idx();\n }\n\n set program_idx(value: number) {\n this.set_program_idx(value);\n }\n\n get_data_size(): bigint {\n const offset = 2;\n return this.view.getBigUint64(offset, true); /* little-endian */\n }\n\n set_data_size(value: bigint): void {\n const offset = 2;\n this.view.setBigUint64(offset, value, true); /* little-endian */\n }\n\n get data_size(): bigint {\n return this.get_data_size();\n }\n\n set data_size(value: bigint) {\n this.set_data_size(value);\n }\n\n get_data_length(): number {\n return this.__tnResolveFieldRef(\"data_size\");\n }\n\n get_data_at(index: number): number {\n const offset = 10;\n return this.view.getUint8(offset + index * 1);\n }\n\n get_data(): number[] {\n const len = this.get_data_length();\n const result: number[] = [];\n for (let i = 0; i < len; i++) {\n result.push(this.get_data_at(i));\n }\n return result;\n }\n\n set_data_at(index: number, value: number): void {\n const offset = 10;\n this.view.setUint8((offset + index * 1), value);\n }\n\n set_data(value: number[]): void {\n const len = Math.min(this.get_data_length(), value.length);\n for (let i = 0; i < len; i++) {\n this.set_data_at(i, value[i]);\n }\n }\n\n get data(): number[] {\n return this.get_data();\n }\n\n set data(value: number[]) {\n this.set_data(value);\n }\n private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n return __tnEvalFootprint(__tn_ir_InstructionData.root, { params: __tnParams });\n }\n\n private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n return __tnValidateIrTree(__tn_ir_InstructionData, buffer, __tnParams);\n }\n\n static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n return this.__tnFootprintInternal(__tnParams);\n }\n\n static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n return this.__tnValidateInternal(buffer, __tnParams);\n }\n\n static footprintIr(data_data_size: number | bigint): bigint {\n const params = InstructionData.Params.fromValues({\n data_data_size: data_data_size,\n });\n return this.footprintIrFromParams(params);\n }\n\n private static __tnPackParams(params: InstructionData.Params): Record<string, bigint> {\n const record: Record<string, bigint> = Object.create(null);\n record[\"data.data_size\"] = params.data_data_size;\n return record;\n }\n\n static footprintIrFromParams(params: InstructionData.Params): bigint {\n const __tnParams = this.__tnPackParams(params);\n return this.__tnFootprintInternal(__tnParams);\n }\n\n static footprintFromParams(params: InstructionData.Params): number {\n const irResult = this.footprintIrFromParams(params);\n const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n if (__tnBigIntGreaterThan(irResult, maxSafe)) throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for InstructionData');\n return __tnBigIntToNumber(irResult, 'InstructionData::footprintFromParams');\n }\n\n static footprintFromValues(input: { data_data_size: number | bigint }): number {\n const params = InstructionData.params(input);\n return this.footprintFromParams(params);\n }\n\n static footprint(params: InstructionData.Params): number {\n return this.footprintFromParams(params);\n }\n\n static validate(buffer: Uint8Array, opts?: { params?: InstructionData.Params }): { ok: boolean; code?: string; consumed?: number; params?: InstructionData.Params } {\n if (!buffer || buffer.length === undefined) {\n return { ok: false, code: \"tn.invalid_buffer\" };\n }\n const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n let params = opts?.params ?? null;\n if (!params) {\n const extracted = this.__tnExtractParams(view, buffer);\n if (!extracted) return { ok: false, code: \"tn.param_extraction_failed\" };\n params = extracted.params;\n }\n const __tnParamsRec = this.__tnPackParams(params);\n const irResult = this.__tnValidateInternal(buffer, __tnParamsRec);\n if (!irResult.ok) {\n return { ok: false, code: irResult.code, consumed: irResult.consumed ? __tnBigIntToNumber(irResult.consumed, 'InstructionData::validate') : undefined, params };\n }\n const consumed = irResult.consumed ? __tnBigIntToNumber(irResult.consumed, 'InstructionData::validate') : undefined;\n return { ok: true, consumed, params };\n }\n\n static from_array(buffer: Uint8Array, opts?: { params?: InstructionData.Params }): InstructionData | null {\n if (!buffer || buffer.length === undefined) {\n return null;\n }\n const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n let params = opts?.params ?? null;\n if (!params) {\n const derived = this.__tnExtractParams(view, buffer);\n if (!derived) return null;\n params = derived.params;\n }\n const validation = this.validate(buffer, { params });\n if (!validation.ok) {\n return null;\n }\n const cached = validation.params ?? params;\n const state = new InstructionData(buffer, cached);\n return state;\n }\n\n\n}\n\nexport namespace InstructionData {\n export type Params = {\n /** ABI path: data.data_size */\n readonly data_data_size: bigint;\n };\n\n export const ParamKeys = Object.freeze({\n data_data_size: \"data.data_size\",\n } as const);\n\n export const Params = {\n fromValues(input: { data_data_size: number | bigint }): Params {\n return {\n data_data_size: __tnToBigInt(input.data_data_size),\n };\n },\n fromBuilder(source: { dynamicParams(): Params } | { params: Params } | Params): Params {\n if ((source as { dynamicParams?: () => Params }).dynamicParams) {\n return (source as { dynamicParams(): Params }).dynamicParams();\n }\n if ((source as { params?: Params }).params) {\n return (source as { params: Params }).params;\n }\n return source as Params;\n }\n };\n\n export function params(input: { data_data_size: number | bigint }): Params {\n return Params.fromValues(input);\n }\n}\n\nexport class InstructionDataBuilder {\n private buffer: Uint8Array;\n private view: DataView;\n private __tnCachedParams: InstructionData.Params | null = null;\n private __tnLastBuffer: Uint8Array | null = null;\n private __tnLastParams: InstructionData.Params | null = null;\n private __tnFam_data: Uint8Array | null = null;\n private __tnFam_dataCount: number | null = null;\n private __tnFamWriter_data?: __TnFamWriterResult<InstructionDataBuilder>;\n\n constructor() {\n this.buffer = new Uint8Array(10);\n this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n }\n\n private __tnInvalidate(): void {\n this.__tnCachedParams = null;\n this.__tnLastBuffer = null;\n this.__tnLastParams = null;\n }\n\n set_program_idx(value: number): this {\n this.view.setUint16(0, value, true);\n this.__tnInvalidate();\n return this;\n }\n\n set_data_size(value: bigint): this {\n const cast = __tnToBigInt(value);\n this.view.setBigUint64(2, cast, true);\n this.__tnInvalidate();\n return this;\n }\n\n data(): __TnFamWriterResult<InstructionDataBuilder> {\n if (!this.__tnFamWriter_data) {\n this.__tnFamWriter_data = __tnCreateFamWriter(this, \"data\", (payload) => {\n const bytes = new Uint8Array(payload);\n const elementCount = bytes.length;\n this.__tnFam_data = bytes;\n this.__tnFam_dataCount = elementCount;\n this.set_data_size(__tnToBigInt(elementCount));\n this.__tnInvalidate();\n });\n }\n return this.__tnFamWriter_data!;\n }\n\n build(): Uint8Array {\n const params = this.__tnComputeParams();\n const size = InstructionData.footprintFromParams(params);\n const buffer = new Uint8Array(size);\n this.__tnWriteInto(buffer);\n this.__tnValidateOrThrow(buffer, params);\n return buffer;\n }\n\n buildInto(target: Uint8Array, offset = 0): Uint8Array {\n const params = this.__tnComputeParams();\n const size = InstructionData.footprintFromParams(params);\n if (target.length - offset < size) throw new Error(\"InstructionDataBuilder: target buffer too small\");\n const slice = target.subarray(offset, offset + size);\n this.__tnWriteInto(slice);\n this.__tnValidateOrThrow(slice, params);\n return target;\n }\n\n finish(): InstructionData {\n const buffer = this.build();\n const params = this.__tnLastParams ?? this.__tnComputeParams();\n const view = InstructionData.from_array(buffer, { params });\n if (!view) throw new Error(\"InstructionDataBuilder: failed to finalize view\");\n return view;\n }\n\n finishView(): InstructionData {\n return this.finish();\n }\n\n dynamicParams(): InstructionData.Params {\n return this.__tnComputeParams();\n }\n\n private __tnComputeParams(): InstructionData.Params {\n if (this.__tnCachedParams) return this.__tnCachedParams;\n const params = InstructionData.Params.fromValues({\n data_data_size: (() => { if (this.__tnFam_dataCount === null) throw new Error(\"InstructionDataBuilder: field 'data' must be written before computing params\"); return __tnToBigInt(this.__tnFam_dataCount); })(),\n });\n this.__tnCachedParams = params;\n return params;\n }\n\n private __tnWriteInto(target: Uint8Array): void {\n target.set(this.buffer, 0);\n let cursor = this.buffer.length;\n const __tnLocal_data_bytes = this.__tnFam_data;\n if (!__tnLocal_data_bytes) throw new Error(\"InstructionDataBuilder: field 'data' must be written before build\");\n target.set(__tnLocal_data_bytes, cursor);\n cursor += __tnLocal_data_bytes.length;\n }\n\n private __tnValidateOrThrow(buffer: Uint8Array, params: InstructionData.Params): void {\n const result = InstructionData.validate(buffer, { params });\n if (!result.ok) {\n throw new Error(`${ InstructionData }Builder: builder produced invalid buffer (code=${result.code ?? \"unknown\"})`);\n }\n this.__tnLastParams = result.params ?? params;\n this.__tnLastBuffer = buffer;\n }\n}\n\n__tnRegisterFootprint(\"InstructionData\", (params) => InstructionData.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"InstructionData\", (buffer, params) => InstructionData.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"InstructionData\", (buffer) => { const result = InstructionData.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n\n/* ----- TYPE DEFINITION FOR Pubkey ----- */\n\nconst __tn_ir_Pubkey = {\n typeName: \"Pubkey\",\n root: { op: \"const\", value: 32n }\n} as const;\n\nexport class Pubkey {\n private view: DataView;\n\n private constructor(private buffer: Uint8Array) {\n this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n }\n\n static __tnCreateView(buffer: Uint8Array, opts?: { fieldContext?: Record<string, number | bigint> }): Pubkey {\n if (!buffer || buffer.length === undefined) throw new Error(\"Pubkey.__tnCreateView requires a Uint8Array\");\n return new Pubkey(new Uint8Array(buffer));\n }\n\n static builder(): PubkeyBuilder {\n return new PubkeyBuilder();\n }\n\n static fromBuilder(builder: PubkeyBuilder): Pubkey | null {\n const buffer = builder.build();\n return Pubkey.from_array(buffer);\n }\n\n get_bytes(): number[] {\n const offset = 0;\n const result: number[] = [];\n for (let i = 0; i < 32; i++) {\n result.push(this.view.getUint8((offset + i * 1)));\n }\n return result;\n }\n\n set_bytes(value: number[]): void {\n const offset = 0;\n if (value.length !== 32) {\n throw new Error('Array length must be 32');\n }\n for (let i = 0; i < 32; i++) {\n this.view.setUint8((offset + i * 1), value[i]);\n }\n }\n\n get bytes(): number[] {\n return this.get_bytes();\n }\n\n set bytes(value: number[]) {\n this.set_bytes(value);\n }\n\n private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n return __tnEvalFootprint(__tn_ir_Pubkey.root, { params: __tnParams });\n }\n\n private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n return __tnValidateIrTree(__tn_ir_Pubkey, buffer, __tnParams);\n }\n\n static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n return this.__tnFootprintInternal(__tnParams);\n }\n\n static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n return this.__tnValidateInternal(buffer, __tnParams);\n }\n\n static footprintIr(): bigint {\n return this.__tnFootprintInternal(Object.create(null));\n }\n\n static footprint(): number {\n const irResult = this.footprintIr();\n const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n if (__tnBigIntGreaterThan(irResult, maxSafe)) {\n throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for Pubkey');\n }\n return __tnBigIntToNumber(irResult, 'Pubkey::footprint');\n }\n\n static validate(buffer: Uint8Array, _opts?: { params?: never }): { ok: boolean; code?: string; consumed?: number } {\n if (buffer.length < 32) return { ok: false, code: \"tn.buffer_too_small\", consumed: 32 };\n return { ok: true, consumed: 32 };\n }\n\n static from_array(buffer: Uint8Array): Pubkey | null {\n if (!buffer || buffer.length === undefined) {\n return null;\n }\n const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n const validation = this.validate(buffer);\n if (!validation.ok) {\n return null;\n }\n return new Pubkey(buffer);\n }\n\n}\n\nexport class PubkeyBuilder {\n private buffer: Uint8Array;\n private view: DataView;\n\n constructor() {\n this.buffer = new Uint8Array(32);\n this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n }\n\n set_bytes(values: number[]): this {\n if (values.length !== 32) throw new Error(\"bytes expects 32 elements\");\n for (let i = 0; i < values.length; i++) {\n const byteOffset = 0 + i * 1;\n this.view.setUint8(byteOffset, values[i]);\n }\n return this;\n }\n\n build(): Uint8Array {\n return this.buffer.slice();\n }\n\n buildInto(target: Uint8Array, offset = 0): Uint8Array {\n if (target.length - offset < this.buffer.length) throw new Error(\"target buffer too small\");\n target.set(this.buffer, offset);\n return target;\n }\n\n finish(): Pubkey {\n const view = Pubkey.from_array(this.buffer.slice());\n if (!view) throw new Error(\"failed to build Pubkey\");\n return view;\n }\n}\n\n__tnRegisterFootprint(\"Pubkey\", (params) => Pubkey.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"Pubkey\", (buffer, params) => Pubkey.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"Pubkey\", (buffer) => { const result = Pubkey.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n\n/* ----- TYPE DEFINITION FOR Signature ----- */\n\nconst __tn_ir_Signature = {\n typeName: \"Signature\",\n root: { op: \"const\", value: 64n }\n} as const;\n\nexport class Signature {\n private view: DataView;\n\n private constructor(private buffer: Uint8Array) {\n this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n }\n\n static __tnCreateView(buffer: Uint8Array, opts?: { fieldContext?: Record<string, number | bigint> }): Signature {\n if (!buffer || buffer.length === undefined) throw new Error(\"Signature.__tnCreateView requires a Uint8Array\");\n return new Signature(new Uint8Array(buffer));\n }\n\n static builder(): SignatureBuilder {\n return new SignatureBuilder();\n }\n\n static fromBuilder(builder: SignatureBuilder): Signature | null {\n const buffer = builder.build();\n return Signature.from_array(buffer);\n }\n\n get_bytes(): number[] {\n const offset = 0;\n const result: number[] = [];\n for (let i = 0; i < 64; i++) {\n result.push(this.view.getUint8((offset + i * 1)));\n }\n return result;\n }\n\n set_bytes(value: number[]): void {\n const offset = 0;\n if (value.length !== 64) {\n throw new Error('Array length must be 64');\n }\n for (let i = 0; i < 64; i++) {\n this.view.setUint8((offset + i * 1), value[i]);\n }\n }\n\n get bytes(): number[] {\n return this.get_bytes();\n }\n\n set bytes(value: number[]) {\n this.set_bytes(value);\n }\n\n private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n return __tnEvalFootprint(__tn_ir_Signature.root, { params: __tnParams });\n }\n\n private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n return __tnValidateIrTree(__tn_ir_Signature, buffer, __tnParams);\n }\n\n static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n return this.__tnFootprintInternal(__tnParams);\n }\n\n static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n return this.__tnValidateInternal(buffer, __tnParams);\n }\n\n static footprintIr(): bigint {\n return this.__tnFootprintInternal(Object.create(null));\n }\n\n static footprint(): number {\n const irResult = this.footprintIr();\n const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n if (__tnBigIntGreaterThan(irResult, maxSafe)) {\n throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for Signature');\n }\n return __tnBigIntToNumber(irResult, 'Signature::footprint');\n }\n\n static validate(buffer: Uint8Array, _opts?: { params?: never }): { ok: boolean; code?: string; consumed?: number } {\n if (buffer.length < 64) return { ok: false, code: \"tn.buffer_too_small\", consumed: 64 };\n return { ok: true, consumed: 64 };\n }\n\n static from_array(buffer: Uint8Array): Signature | null {\n if (!buffer || buffer.length === undefined) {\n return null;\n }\n const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n const validation = this.validate(buffer);\n if (!validation.ok) {\n return null;\n }\n return new Signature(buffer);\n }\n\n}\n\nexport class SignatureBuilder {\n private buffer: Uint8Array;\n private view: DataView;\n\n constructor() {\n this.buffer = new Uint8Array(64);\n this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n }\n\n set_bytes(values: number[]): this {\n if (values.length !== 64) throw new Error(\"bytes expects 64 elements\");\n for (let i = 0; i < values.length; i++) {\n const byteOffset = 0 + i * 1;\n this.view.setUint8(byteOffset, values[i]);\n }\n return this;\n }\n\n build(): Uint8Array {\n return this.buffer.slice();\n }\n\n buildInto(target: Uint8Array, offset = 0): Uint8Array {\n if (target.length - offset < this.buffer.length) throw new Error(\"target buffer too small\");\n target.set(this.buffer, offset);\n return target;\n }\n\n finish(): Signature {\n const view = Signature.from_array(this.buffer.slice());\n if (!view) throw new Error(\"failed to build Signature\");\n return view;\n }\n}\n\n__tnRegisterFootprint(\"Signature\", (params) => Signature.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"Signature\", (buffer, params) => Signature.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"Signature\", (buffer) => { const result = Signature.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n\n/* ----- TYPE DEFINITION FOR Timestamp ----- */\n\nconst __tn_ir_Timestamp = {\n typeName: \"Timestamp\",\n root: { op: \"const\", value: 8n }\n} as const;\n\nexport class Timestamp {\n private view: DataView;\n\n private constructor(private buffer: Uint8Array) {\n this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n }\n\n static __tnCreateView(buffer: Uint8Array, opts?: { fieldContext?: Record<string, number | bigint> }): Timestamp {\n if (!buffer || buffer.length === undefined) throw new Error(\"Timestamp.__tnCreateView requires a Uint8Array\");\n return new Timestamp(new Uint8Array(buffer));\n }\n\n static builder(): TimestampBuilder {\n return new TimestampBuilder();\n }\n\n static fromBuilder(builder: TimestampBuilder): Timestamp | null {\n const buffer = builder.build();\n return Timestamp.from_array(buffer);\n }\n\n get_seconds(): bigint {\n const offset = 0;\n return this.view.getBigInt64(offset, true); /* little-endian */\n }\n\n set_seconds(value: bigint): void {\n const offset = 0;\n this.view.setBigInt64(offset, value, true); /* little-endian */\n }\n\n get seconds(): bigint {\n return this.get_seconds();\n }\n\n set seconds(value: bigint) {\n this.set_seconds(value);\n }\n\n private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n return __tnEvalFootprint(__tn_ir_Timestamp.root, { params: __tnParams });\n }\n\n private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n return __tnValidateIrTree(__tn_ir_Timestamp, buffer, __tnParams);\n }\n\n static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n return this.__tnFootprintInternal(__tnParams);\n }\n\n static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n return this.__tnValidateInternal(buffer, __tnParams);\n }\n\n static footprintIr(): bigint {\n return this.__tnFootprintInternal(Object.create(null));\n }\n\n static footprint(): number {\n const irResult = this.footprintIr();\n const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n if (__tnBigIntGreaterThan(irResult, maxSafe)) {\n throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for Timestamp');\n }\n return __tnBigIntToNumber(irResult, 'Timestamp::footprint');\n }\n\n static validate(buffer: Uint8Array, _opts?: { params?: never }): { ok: boolean; code?: string; consumed?: number } {\n if (buffer.length < 8) return { ok: false, code: \"tn.buffer_too_small\", consumed: 8 };\n return { ok: true, consumed: 8 };\n }\n\n static new(seconds: bigint): Timestamp {\n const buffer = new Uint8Array(8);\n const view = new DataView(buffer.buffer);\n\n let offset = 0;\n view.setBigInt64(0, seconds, true); /* seconds (little-endian) */\n\n return new Timestamp(buffer);\n }\n\n static from_array(buffer: Uint8Array): Timestamp | null {\n if (!buffer || buffer.length === undefined) {\n return null;\n }\n const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n const validation = this.validate(buffer);\n if (!validation.ok) {\n return null;\n }\n return new Timestamp(buffer);\n }\n\n}\n\nexport class TimestampBuilder {\n private buffer: Uint8Array;\n private view: DataView;\n\n constructor() {\n this.buffer = new Uint8Array(8);\n this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n }\n\n set_seconds(value: bigint): this {\n const cast = __tnToBigInt(value);\n this.view.setBigInt64(0, cast, true);\n return this;\n }\n\n build(): Uint8Array {\n return this.buffer.slice();\n }\n\n buildInto(target: Uint8Array, offset = 0): Uint8Array {\n if (target.length - offset < this.buffer.length) throw new Error(\"target buffer too small\");\n target.set(this.buffer, offset);\n return target;\n }\n\n finish(): Timestamp {\n const view = Timestamp.from_array(this.buffer.slice());\n if (!view) throw new Error(\"failed to build Timestamp\");\n return view;\n }\n}\n\n__tnRegisterFootprint(\"Timestamp\", (params) => Timestamp.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"Timestamp\", (buffer, params) => Timestamp.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"Timestamp\", (buffer) => { const result = Timestamp.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n\n","/* Auto-generated TypeScript code */\n/* WARNING: Do not modify this file directly. It is generated from ABI definitions. */\n\nimport { Hash, Pubkey } from \"../../common/primitives/types\";\n\ntype __TnIrNode =\n | { readonly op: \"zero\" }\n | { readonly op: \"const\"; readonly value: bigint }\n | { readonly op: \"field\"; readonly param: string }\n | {\n readonly op: \"add\";\n readonly left: __TnIrNode;\n readonly right: __TnIrNode;\n }\n | {\n readonly op: \"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(\"Hash\", (params) => Hash.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"Hash\", (buffer, params) => Hash.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"Hash\", (buffer) => { const result = Hash.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n\n__tnRegisterFootprint(\"Pubkey\", (params) => Pubkey.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"Pubkey\", (buffer, params) => Pubkey.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"Pubkey\", (buffer) => { const result = Pubkey.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n\n/* ----- TYPE DEFINITION FOR StateProofHeader ----- */\n\nconst __tn_ir_StateProofHeader = {\n typeName: \"StateProofHeader\",\n root: { op: \"const\", value: 40n }\n} as const;\n\nexport class StateProofHeader {\n private view: DataView;\n\n private constructor(private buffer: Uint8Array) {\n this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n }\n\n static __tnCreateView(buffer: Uint8Array, opts?: { fieldContext?: Record<string, number | bigint> }): StateProofHeader {\n if (!buffer || buffer.length === undefined) throw new Error(\"StateProofHeader.__tnCreateView requires a Uint8Array\");\n return new StateProofHeader(new Uint8Array(buffer));\n }\n\n static builder(): StateProofHeaderBuilder {\n return new StateProofHeaderBuilder();\n }\n\n static fromBuilder(builder: StateProofHeaderBuilder): StateProofHeader | null {\n const buffer = builder.build();\n return StateProofHeader.from_array(buffer);\n }\n\n get_type_slot(): bigint {\n const offset = 0;\n return this.view.getBigUint64(offset, true); /* little-endian */\n }\n\n set_type_slot(value: bigint): void {\n const offset = 0;\n this.view.setBigUint64(offset, value, true); /* little-endian */\n }\n\n get type_slot(): bigint {\n return this.get_type_slot();\n }\n\n set type_slot(value: bigint) {\n this.set_type_slot(value);\n }\n\n get_path_bitset(): Hash {\n const offset = 8;\n const slice = this.buffer.subarray(offset, offset + 32);\n return Hash.from_array(slice)!;\n }\n\n set_path_bitset(value: Hash): void {\n /* Copy bytes from source struct to this field */\n const sourceBytes = (value as any).buffer as Uint8Array;\n const offset = 8;\n this.buffer.set(sourceBytes, offset);\n }\n\n get path_bitset(): Hash {\n return this.get_path_bitset();\n }\n\n set path_bitset(value: Hash) {\n this.set_path_bitset(value);\n }\n\n private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n return __tnEvalFootprint(__tn_ir_StateProofHeader.root, { params: __tnParams });\n }\n\n private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n return __tnValidateIrTree(__tn_ir_StateProofHeader, buffer, __tnParams);\n }\n\n static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n return this.__tnFootprintInternal(__tnParams);\n }\n\n static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n return this.__tnValidateInternal(buffer, __tnParams);\n }\n\n static footprintIr(): bigint {\n return this.__tnFootprintInternal(Object.create(null));\n }\n\n static footprint(): number {\n const irResult = this.footprintIr();\n const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n if (__tnBigIntGreaterThan(irResult, maxSafe)) {\n throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for StateProofHeader');\n }\n return __tnBigIntToNumber(irResult, 'StateProofHeader::footprint');\n }\n\n static validate(buffer: Uint8Array, _opts?: { params?: never }): { ok: boolean; code?: string; consumed?: number } {\n if (buffer.length < 40) return { ok: false, code: \"tn.buffer_too_small\", consumed: 40 };\n return { ok: true, consumed: 40 };\n }\n\n static from_array(buffer: Uint8Array): StateProofHeader | null {\n if (!buffer || buffer.length === undefined) {\n return null;\n }\n const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n const validation = this.validate(buffer);\n if (!validation.ok) {\n return null;\n }\n return new StateProofHeader(buffer);\n }\n\n}\n\nexport class StateProofHeaderBuilder {\n private buffer: Uint8Array;\n private view: DataView;\n\n constructor() {\n this.buffer = new Uint8Array(40);\n this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n }\n\n set_type_slot(value: bigint): this {\n const cast = __tnToBigInt(value);\n this.view.setBigUint64(0, cast, true);\n return this;\n }\n\n set_path_bitset(value: Uint8Array): this {\n if (value.length !== 32) throw new Error(\"path_bitset expects 32 bytes\");\n this.buffer.set(value, 8);\n return this;\n }\n\n build(): Uint8Array {\n return this.buffer.slice();\n }\n\n buildInto(target: Uint8Array, offset = 0): Uint8Array {\n if (target.length - offset < this.buffer.length) throw new Error(\"target buffer too small\");\n target.set(this.buffer, offset);\n return target;\n }\n\n finish(): StateProofHeader {\n const view = StateProofHeader.from_array(this.buffer.slice());\n if (!view) throw new Error(\"failed to build StateProofHeader\");\n return view;\n }\n}\n\n__tnRegisterFootprint(\"StateProofHeader\", (params) => StateProofHeader.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"StateProofHeader\", (buffer, params) => StateProofHeader.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"StateProofHeader\", (buffer) => { const result = StateProofHeader.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n\n/* ----- TYPE DEFINITION FOR StateProof ----- */\n\nconst __tn_ir_StateProof = {\n typeName: \"StateProof\",\n root: { op: \"align\", alignment: 1, node: { op: \"add\", left: { op: \"align\", alignment: 1, node: { op: \"const\", value: 40n } }, right: { op: \"align\", alignment: 1, node: { op: \"field\", param: \"proof_body.payload_size\" } } } }\n} as const;\n\nexport class StateProof_proof_body_existing_Inner {\n private view: DataView;\n private __tnFieldContext: Record<string, number | bigint> | null = null;\n\n private constructor(private buffer: Uint8Array, fieldContext?: Record<string, number | bigint>) {\n this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n this.__tnFieldContext = fieldContext ?? null;\n }\n\n static __tnCreateView(buffer: Uint8Array, opts?: { fieldContext?: Record<string, number | bigint> }): StateProof_proof_body_existing_Inner {\n if (!buffer || buffer.length === undefined) throw new Error(\"StateProof_proof_body_existing_Inner.__tnCreateView requires a Uint8Array\");\n return new StateProof_proof_body_existing_Inner(new Uint8Array(buffer), opts?.fieldContext);\n }\n\n withFieldContext(context: Record<string, number | bigint>): this {\n this.__tnFieldContext = context;\n return this;\n }\n\n private __tnResolveFieldRef(path: string): number {\n const getterName = `get_${path.replace(/[.]/g, '_')}`;\n const getter = (this as any)[getterName];\n if (typeof getter === \"function\") {\n const value = getter.call(this);\n return typeof value === \"bigint\" ? __tnBigIntToNumber(value, \"StateProof_proof_body_existing_Inner::__tnResolveFieldRef\") : value;\n }\n if (this.__tnFieldContext && Object.prototype.hasOwnProperty.call(this.__tnFieldContext, path)) {\n const contextValue = this.__tnFieldContext[path];\n return typeof contextValue === \"bigint\" ? __tnBigIntToNumber(contextValue, \"StateProof_proof_body_existing_Inner::__tnResolveFieldRef\") : contextValue;\n }\n throw new Error(\"StateProof_proof_body_existing_Inner: field reference '\" + path + \"' is not available; provide fieldContext when creating this view\");\n }\n\n get_sibling_hashes_length(): number {\n return ((__tnPopcount(this.__tnResolveFieldRef(\"hdr.path_bitset.bytes.0\")) + __tnPopcount(this.__tnResolveFieldRef(\"hdr.path_bitset.bytes.1\"))) + (__tnPopcount(this.__tnResolveFieldRef(\"hdr.path_bitset.bytes.2\")) + __tnPopcount(this.__tnResolveFieldRef(\"hdr.path_bitset.bytes.3\"))));\n }\n\n get_sibling_hashes_at(index: number): Hash {\n const offset = 0;\n const slice = this.buffer.subarray((offset + index * 32), (offset + (index + 1) * 32));\n return Hash.from_array(slice)!;\n }\n\n get_sibling_hashes(): Hash[] {\n const len = this.get_sibling_hashes_length();\n const result: Hash[] = [];\n for (let i = 0; i < len; i++) {\n result.push(this.get_sibling_hashes_at(i));\n }\n return result;\n }\n\n set_sibling_hashes_at(index: number, value: Hash): void {\n const offset = 0;\n const slice = this.buffer.subarray(offset + index * 32, offset + (index + 1) * 32);\n slice.set(value['buffer']);\n }\n\n set_sibling_hashes(value: Hash[]): void {\n const len = Math.min(this.get_sibling_hashes_length(), value.length);\n for (let i = 0; i < len; i++) {\n this.set_sibling_hashes_at(i, value[i]);\n }\n }\n\n get sibling_hashes(): Hash[] {\n return this.get_sibling_hashes();\n }\n\n set sibling_hashes(value: Hash[]) {\n this.set_sibling_hashes(value);\n }\n\n}\n\nexport class StateProof_proof_body_updating_Inner {\n private view: DataView;\n private __tnFieldContext: Record<string, number | bigint> | null = null;\n\n private constructor(private buffer: Uint8Array, fieldContext?: Record<string, number | bigint>) {\n this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n this.__tnFieldContext = fieldContext ?? null;\n }\n\n static __tnCreateView(buffer: Uint8Array, opts?: { fieldContext?: Record<string, number | bigint> }): StateProof_proof_body_updating_Inner {\n if (!buffer || buffer.length === undefined) throw new Error(\"StateProof_proof_body_updating_Inner.__tnCreateView requires a Uint8Array\");\n return new StateProof_proof_body_updating_Inner(new Uint8Array(buffer), opts?.fieldContext);\n }\n\n withFieldContext(context: Record<string, number | bigint>): this {\n this.__tnFieldContext = context;\n return this;\n }\n\n private __tnResolveFieldRef(path: string): number {\n const getterName = `get_${path.replace(/[.]/g, '_')}`;\n const getter = (this as any)[getterName];\n if (typeof getter === \"function\") {\n const value = getter.call(this);\n return typeof value === \"bigint\" ? __tnBigIntToNumber(value, \"StateProof_proof_body_updating_Inner::__tnResolveFieldRef\") : value;\n }\n if (this.__tnFieldContext && Object.prototype.hasOwnProperty.call(this.__tnFieldContext, path)) {\n const contextValue = this.__tnFieldContext[path];\n return typeof contextValue === \"bigint\" ? __tnBigIntToNumber(contextValue, \"StateProof_proof_body_updating_Inner::__tnResolveFieldRef\") : contextValue;\n }\n throw new Error(\"StateProof_proof_body_updating_Inner: field reference '\" + path + \"' is not available; provide fieldContext when creating this view\");\n }\n\n get_existing_leaf_hash(): Hash {\n const offset = 0;\n const slice = this.buffer.subarray(offset, offset + 32);\n return Hash.from_array(slice)!;\n }\n\n set_existing_leaf_hash(value: Hash): void {\n /* Copy bytes from source struct to this field */\n const sourceBytes = (value as any).buffer as Uint8Array;\n const offset = 0;\n this.buffer.set(sourceBytes, offset);\n }\n\n get existing_leaf_hash(): Hash {\n return this.get_existing_leaf_hash();\n }\n\n set existing_leaf_hash(value: Hash) {\n this.set_existing_leaf_hash(value);\n }\n\n get_sibling_hashes_length(): number {\n return ((__tnPopcount(this.__tnResolveFieldRef(\"hdr.path_bitset.bytes.0\")) + __tnPopcount(this.__tnResolveFieldRef(\"hdr.path_bitset.bytes.1\"))) + (__tnPopcount(this.__tnResolveFieldRef(\"hdr.path_bitset.bytes.2\")) + __tnPopcount(this.__tnResolveFieldRef(\"hdr.path_bitset.bytes.3\"))));\n }\n\n get_sibling_hashes_at(index: number): Hash {\n const offset = 32;\n const slice = this.buffer.subarray((offset + index * 32), (offset + (index + 1) * 32));\n return Hash.from_array(slice)!;\n }\n\n get_sibling_hashes(): Hash[] {\n const len = this.get_sibling_hashes_length();\n const result: Hash[] = [];\n for (let i = 0; i < len; i++) {\n result.push(this.get_sibling_hashes_at(i));\n }\n return result;\n }\n\n set_sibling_hashes_at(index: number, value: Hash): void {\n const offset = 32;\n const slice = this.buffer.subarray(offset + index * 32, offset + (index + 1) * 32);\n slice.set(value['buffer']);\n }\n\n set_sibling_hashes(value: Hash[]): void {\n const len = Math.min(this.get_sibling_hashes_length(), value.length);\n for (let i = 0; i < len; i++) {\n this.set_sibling_hashes_at(i, value[i]);\n }\n }\n\n get sibling_hashes(): Hash[] {\n return this.get_sibling_hashes();\n }\n\n set sibling_hashes(value: Hash[]) {\n this.set_sibling_hashes(value);\n }\n\n}\n\nexport class StateProof_proof_body_creation_Inner {\n private view: DataView;\n private __tnFieldContext: Record<string, number | bigint> | null = null;\n\n private constructor(private buffer: Uint8Array, fieldContext?: Record<string, number | bigint>) {\n this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n this.__tnFieldContext = fieldContext ?? null;\n }\n\n static __tnCreateView(buffer: Uint8Array, opts?: { fieldContext?: Record<string, number | bigint> }): StateProof_proof_body_creation_Inner {\n if (!buffer || buffer.length === undefined) throw new Error(\"StateProof_proof_body_creation_Inner.__tnCreateView requires a Uint8Array\");\n return new StateProof_proof_body_creation_Inner(new Uint8Array(buffer), opts?.fieldContext);\n }\n\n withFieldContext(context: Record<string, number | bigint>): this {\n this.__tnFieldContext = context;\n return this;\n }\n\n private __tnResolveFieldRef(path: string): number {\n const getterName = `get_${path.replace(/[.]/g, '_')}`;\n const getter = (this as any)[getterName];\n if (typeof getter === \"function\") {\n const value = getter.call(this);\n return typeof value === \"bigint\" ? __tnBigIntToNumber(value, \"StateProof_proof_body_creation_Inner::__tnResolveFieldRef\") : value;\n }\n if (this.__tnFieldContext && Object.prototype.hasOwnProperty.call(this.__tnFieldContext, path)) {\n const contextValue = this.__tnFieldContext[path];\n return typeof contextValue === \"bigint\" ? __tnBigIntToNumber(contextValue, \"StateProof_proof_body_creation_Inner::__tnResolveFieldRef\") : contextValue;\n }\n throw new Error(\"StateProof_proof_body_creation_Inner: field reference '\" + path + \"' is not available; provide fieldContext when creating this view\");\n }\n\n get_existing_leaf_pubkey(): Pubkey {\n const offset = 0;\n const slice = this.buffer.subarray(offset, offset + 32);\n return Pubkey.from_array(slice)!;\n }\n\n set_existing_leaf_pubkey(value: Pubkey): void {\n /* Copy bytes from source struct to this field */\n const sourceBytes = (value as any).buffer as Uint8Array;\n const offset = 0;\n this.buffer.set(sourceBytes, offset);\n }\n\n get existing_leaf_pubkey(): Pubkey {\n return this.get_existing_leaf_pubkey();\n }\n\n set existing_leaf_pubkey(value: Pubkey) {\n this.set_existing_leaf_pubkey(value);\n }\n\n get_existing_leaf_hash(): Hash {\n const offset = 32;\n const slice = this.buffer.subarray(offset, offset + 32);\n return Hash.from_array(slice)!;\n }\n\n set_existing_leaf_hash(value: Hash): void {\n /* Copy bytes from source struct to this field */\n const sourceBytes = (value as any).buffer as Uint8Array;\n const offset = 32;\n this.buffer.set(sourceBytes, offset);\n }\n\n get existing_leaf_hash(): Hash {\n return this.get_existing_leaf_hash();\n }\n\n set existing_leaf_hash(value: Hash) {\n this.set_existing_leaf_hash(value);\n }\n\n get_sibling_hashes_length(): number {\n return ((__tnPopcount(this.__tnResolveFieldRef(\"hdr.path_bitset.bytes.0\")) + __tnPopcount(this.__tnResolveFieldRef(\"hdr.path_bitset.bytes.1\"))) + (__tnPopcount(this.__tnResolveFieldRef(\"hdr.path_bitset.bytes.2\")) + __tnPopcount(this.__tnResolveFieldRef(\"hdr.path_bitset.bytes.3\"))));\n }\n\n get_sibling_hashes_at(index: number): Hash {\n const offset = 64;\n const slice = this.buffer.subarray((offset + index * 32), (offset + (index + 1) * 32));\n return Hash.from_array(slice)!;\n }\n\n get_sibling_hashes(): Hash[] {\n const len = this.get_sibling_hashes_length();\n const result: Hash[] = [];\n for (let i = 0; i < len; i++) {\n result.push(this.get_sibling_hashes_at(i));\n }\n return result;\n }\n\n set_sibling_hashes_at(index: number, value: Hash): void {\n const offset = 64;\n const slice = this.buffer.subarray(offset + index * 32, offset + (index + 1) * 32);\n slice.set(value['buffer']);\n }\n\n set_sibling_hashes(value: Hash[]): void {\n const len = Math.min(this.get_sibling_hashes_length(), value.length);\n for (let i = 0; i < len; i++) {\n this.set_sibling_hashes_at(i, value[i]);\n }\n }\n\n get sibling_hashes(): Hash[] {\n return this.get_sibling_hashes();\n }\n\n set sibling_hashes(value: Hash[]) {\n this.set_sibling_hashes(value);\n }\n\n}\n\nexport class StateProof_proof_body_Inner {\n private view: DataView;\n private __tnFieldContext: Record<string, number | bigint> | null = null;\n private constructor(private buffer: Uint8Array, private descriptor: __TnVariantDescriptor | null, fieldContext?: Record<string, number | bigint>) {\n this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n this.__tnFieldContext = fieldContext ?? null;\n }\n\n static __tnCreate(payload: Uint8Array, descriptor: __TnVariantDescriptor | null, fieldContext?: Record<string, number | bigint>): StateProof_proof_body_Inner {\n return new StateProof_proof_body_Inner(new Uint8Array(payload), descriptor, fieldContext);\n }\n\n bytes(): Uint8Array {\n return new Uint8Array(this.buffer);\n }\n\n variant(): __TnVariantDescriptor | null {\n return this.descriptor;\n }\n\n asExisting(): StateProof_proof_body_existing_Inner | null {\n if (!this.descriptor || this.descriptor.tag !== 0) return null;\n return StateProof_proof_body_existing_Inner.__tnCreateView(new Uint8Array(this.buffer), { fieldContext: this.__tnFieldContext ?? undefined });\n }\n\n asUpdating(): StateProof_proof_body_updating_Inner | null {\n if (!this.descriptor || this.descriptor.tag !== 1) return null;\n return StateProof_proof_body_updating_Inner.__tnCreateView(new Uint8Array(this.buffer), { fieldContext: this.__tnFieldContext ?? undefined });\n }\n\n asCreation(): StateProof_proof_body_creation_Inner | null {\n if (!this.descriptor || this.descriptor.tag !== 2) return null;\n return StateProof_proof_body_creation_Inner.__tnCreateView(new Uint8Array(this.buffer), { fieldContext: this.__tnFieldContext ?? undefined });\n }\n\n}\n\nexport class StateProof {\n private view: DataView;\n private __tnFieldContext: Record<string, number | bigint> | null = null;\n private static readonly __tnFieldOffset_proof_body = 40;\n private __tnParams: StateProof.Params;\n private __tnDerivedParams: Record<string, bigint> | null = null;\n\n private constructor(private buffer: Uint8Array, params?: StateProof.Params, fieldContext?: Record<string, number | bigint>) {\n this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n this.__tnFieldContext = fieldContext ?? null;\n if (params) {\n this.__tnParams = params;\n } else {\n const derived = StateProof.__tnExtractParams(this.view, buffer);\n if (!derived) {\n throw new Error(\"StateProof: failed to derive dynamic parameters\");\n }\n this.__tnParams = derived.params;\n this.__tnDerivedParams = derived.derived;\n }\n }\n\n static __tnCreateView(buffer: Uint8Array, opts?: { params?: StateProof.Params, fieldContext?: Record<string, number | bigint> }): StateProof {\n if (!buffer || buffer.length === undefined) throw new Error(\"StateProof.__tnCreateView requires a Uint8Array\");\n let params = opts?.params ?? null;\n let derivedRecord: Record<string, bigint> | null = null;\n if (!params) {\n const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n const derived = StateProof.__tnExtractParams(view, buffer);\n if (!derived) throw new Error(\"StateProof.__tnCreateView: failed to derive params\");\n params = derived.params;\n derivedRecord = derived.derived;\n }\n const instance = new StateProof(new Uint8Array(buffer), params, opts?.fieldContext);\n if (derivedRecord) instance.__tnDerivedParams = derivedRecord;\n return instance;\n }\n\n dynamicParams(): StateProof.Params {\n return this.__tnParams;\n }\n\n withFieldContext(context: Record<string, number | bigint>): this {\n this.__tnFieldContext = context;\n return this;\n }\n\n private __tnResolveFieldRef(path: string): number {\n const getterName = `get_${path.replace(/[.]/g, '_')}`;\n const getter = (this as any)[getterName];\n if (typeof getter === \"function\") {\n const value = getter.call(this);\n return typeof value === \"bigint\" ? __tnBigIntToNumber(value, \"StateProof::__tnResolveFieldRef\") : value;\n }\n if (this.__tnFieldContext && Object.prototype.hasOwnProperty.call(this.__tnFieldContext, path)) {\n const contextValue = this.__tnFieldContext[path];\n return typeof contextValue === \"bigint\" ? __tnBigIntToNumber(contextValue, \"StateProof::__tnResolveFieldRef\") : contextValue;\n }\n throw new Error(\"StateProof: field reference '\" + path + \"' is not available; provide fieldContext when creating this view\");\n }\n\n static builder(): StateProofBuilder {\n return new StateProofBuilder();\n }\n\n static fromBuilder(builder: StateProofBuilder): StateProof | null {\n const buffer = builder.build();\n const params = builder.dynamicParams();\n return StateProof.from_array(buffer, { params });\n }\n\n static readonly proof_bodyVariantDescriptors = Object.freeze([\n {\n name: \"existing\",\n tag: 0,\n payloadSize: null,\n payloadType: \"StateProof::proof_body::existing\",\n createPayloadBuilder: () => null,\n },\n {\n name: \"updating\",\n tag: 1,\n payloadSize: null,\n payloadType: \"StateProof::proof_body::updating\",\n createPayloadBuilder: () => null,\n },\n {\n name: \"creation\",\n tag: 2,\n payloadSize: null,\n payloadType: \"StateProof::proof_body::creation\",\n createPayloadBuilder: () => null,\n },\n ] as const);\n\n static __tnComputeSequentialLayout(view: DataView, buffer: Uint8Array): { params: Record<string, bigint> | null; offsets: Record<string, number> | null; derived: Record<string, bigint> | null } | null {\n const derived: Record<string, bigint> = Object.create(null);\n const __tnLength = buffer.length;\n let __tnParamSeq_proof_body_payload_size: bigint | null = null;\n let __tnCursorMutable = 0;\n if (__tnLength < 8) return null;\n const __tnRef_hdr_type_slot = view.getBigUint64(0, true);\n if (__tnCursorMutable + 40 > __tnLength) return null;\n __tnCursorMutable += 40;\n const __tnEnumTagValue_proof_body = Math.trunc(Number(((__tnRef_hdr_type_slot >> 62n) & 3n)));\n if (!Number.isFinite(__tnEnumTagValue_proof_body)) return null;\n let __tnEnumSize_proof_body = 0;\n switch (Number(__tnEnumTagValue_proof_body)) {\n case 0: break;\n case 1: break;\n case 2: break;\n default: return null;\n }\n if (__tnCursorMutable > __tnLength) return null;\n __tnEnumSize_proof_body = __tnLength - __tnCursorMutable;\n __tnCursorMutable = __tnLength;\n derived[\"StateProof__proof_body_computed_tag\"] = __tnToBigInt(__tnEnumTagValue_proof_body);\n __tnParamSeq_proof_body_payload_size = __tnToBigInt(__tnEnumSize_proof_body);\n const params: Record<string, bigint> = Object.create(null);\n if (__tnParamSeq_proof_body_payload_size === null) return null;\n params[\"proof_body_payload_size\"] = __tnParamSeq_proof_body_payload_size as bigint;\n return { params, offsets: null, derived: derived };\n }\n\n private static __tnExtractParams(view: DataView, buffer: Uint8Array): { params: StateProof.Params; derived: Record<string, bigint> | null } | null {\n if (buffer.length < 8) {\n return null;\n }\n const __tnParam_proof_body_hdr_type_slot = __tnToBigInt(view.getBigUint64(0, true));\n const __tnLayout = StateProof.__tnComputeSequentialLayout(view, buffer);\n if (!__tnLayout || !__tnLayout.params) return null;\n const __tnSeqParams = __tnLayout.params;\n const __tnParamSeq_proof_body_payload_size = __tnSeqParams[\"proof_body_payload_size\"];\n if (__tnParamSeq_proof_body_payload_size === undefined) return null;\n const __tnExtractedParams = StateProof.Params.fromValues({\n proof_body_hdr_type_slot: __tnParam_proof_body_hdr_type_slot,\n proof_body_payload_size: __tnParamSeq_proof_body_payload_size as bigint,\n });\n return { params: __tnExtractedParams, derived: (__tnLayout && __tnLayout.derived ? __tnLayout.derived : null) };\n }\n\n private __tnEnsureDerivedParams(): Record<string, bigint> | null {\n if (this.__tnDerivedParams) return this.__tnDerivedParams;\n const layout = StateProof.__tnComputeSequentialLayout(this.view, this.buffer);\n if (!layout || !layout.derived) return null;\n this.__tnDerivedParams = layout.derived;\n return this.__tnDerivedParams;\n }\n\n private __tnReadDerivedParam(key: string): number | null {\n const params = this.__tnEnsureDerivedParams();\n if (!params) return null;\n const value = params[key];\n if (value === undefined) return null;\n return __tnBigIntToNumber(value, \"StateProof::__tnReadDerivedParam\");\n }\n\n get_hdr(): StateProofHeader {\n const offset = 0;\n const slice = this.buffer.subarray(offset, offset + 40);\n return StateProofHeader.from_array(slice)!;\n }\n\n set_hdr(value: StateProofHeader): void {\n /* Copy bytes from source struct to this field */\n const sourceBytes = (value as any).buffer as Uint8Array;\n const offset = 0;\n this.buffer.set(sourceBytes, offset);\n }\n\n get hdr(): StateProofHeader {\n return this.get_hdr();\n }\n\n set hdr(value: StateProofHeader) {\n this.set_hdr(value);\n }\n\n get_proof_body_computed_tag(): number {\n let tag = this.__tnReadDerivedParam(\"StateProof__proof_body_computed_tag\");\n if (tag === null) {\n tag = (((this.__tnResolveFieldRef(\"hdr.type_slot\") >> 62) & 3));\n }\n return tag;\n }\n\n proofBodyVariant(): typeof StateProof.proof_bodyVariantDescriptors[number] | null {\n const tag = this.get_proof_body_computed_tag();\n return StateProof.proof_bodyVariantDescriptors.find((variant) => variant.tag === tag) ?? null;\n }\n\n proof_body(): StateProof_proof_body_Inner {\n const descriptor = this.proofBodyVariant();\n if (!descriptor) throw new Error(\"StateProof: unknown proof_body variant\");\n const offset = StateProof.__tnFieldOffset_proof_body;\n const remaining = this.buffer.length - offset;\n const payloadLength = descriptor.payloadSize ?? remaining;\n if (payloadLength < 0 || offset + payloadLength > this.buffer.length) throw new Error(\"StateProof: payload exceeds buffer bounds\");\n const slice = this.buffer.subarray(offset, offset + payloadLength);\n const __tnAutoContext: Record<string, number | bigint> = {\n \"hdr.path_bitset.bytes.0\": this.view.getUint8(8),\n \"hdr.path_bitset.bytes.1\": this.view.getUint8(9),\n \"hdr.path_bitset.bytes.2\": this.view.getUint8(10),\n \"hdr.path_bitset.bytes.3\": this.view.getUint8(11),\n };\n const __tnMergedContext = this.__tnFieldContext ? { ...__tnAutoContext, ...this.__tnFieldContext } : __tnAutoContext;\n return StateProof_proof_body_Inner.__tnCreate(slice, descriptor, __tnMergedContext);\n }\n private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n return __tnEvalFootprint(__tn_ir_StateProof.root, { params: __tnParams });\n }\n\n private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n return __tnValidateIrTree(__tn_ir_StateProof, buffer, __tnParams);\n }\n\n static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n return this.__tnFootprintInternal(__tnParams);\n }\n\n static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n return this.__tnValidateInternal(buffer, __tnParams);\n }\n\n static footprintIr(proof_body_hdr_type_slot: number | bigint, proof_body_payload_size: number | bigint): bigint {\n const params = StateProof.Params.fromValues({\n proof_body_hdr_type_slot: proof_body_hdr_type_slot,\n proof_body_payload_size: proof_body_payload_size,\n });\n return this.footprintIrFromParams(params);\n }\n\n private static __tnPackParams(params: StateProof.Params): Record<string, bigint> {\n const record: Record<string, bigint> = Object.create(null);\n record[\"proof_body.hdr.type_slot\"] = params.proof_body_hdr_type_slot;\n record[\"proof_body.payload_size\"] = params.proof_body_payload_size;\n return record;\n }\n\n static footprintIrFromParams(params: StateProof.Params): bigint {\n const __tnParams = this.__tnPackParams(params);\n return this.__tnFootprintInternal(__tnParams);\n }\n\n static footprintFromParams(params: StateProof.Params): number {\n const irResult = this.footprintIrFromParams(params);\n const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n if (__tnBigIntGreaterThan(irResult, maxSafe)) throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for StateProof');\n return __tnBigIntToNumber(irResult, 'StateProof::footprintFromParams');\n }\n\n static footprintFromValues(input: { proof_body_hdr_type_slot: number | bigint, proof_body_payload_size: number | bigint }): number {\n const params = StateProof.params(input);\n return this.footprintFromParams(params);\n }\n\n static footprint(params: StateProof.Params): number {\n return this.footprintFromParams(params);\n }\n\n static validate(buffer: Uint8Array, opts?: { params?: StateProof.Params }): { ok: boolean; code?: string; consumed?: number; params?: StateProof.Params } {\n if (!buffer || buffer.length === undefined) {\n return { ok: false, code: \"tn.invalid_buffer\" };\n }\n const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n let params = opts?.params ?? null;\n if (!params) {\n const extracted = this.__tnExtractParams(view, buffer);\n if (!extracted) return { ok: false, code: \"tn.param_extraction_failed\" };\n params = extracted.params;\n }\n const __tnParamsRec = this.__tnPackParams(params);\n const irResult = this.__tnValidateInternal(buffer, __tnParamsRec);\n if (!irResult.ok) {\n return { ok: false, code: irResult.code, consumed: irResult.consumed ? __tnBigIntToNumber(irResult.consumed, 'StateProof::validate') : undefined, params };\n }\n const consumed = irResult.consumed ? __tnBigIntToNumber(irResult.consumed, 'StateProof::validate') : undefined;\n return { ok: true, consumed, params };\n }\n\n static from_array(buffer: Uint8Array, opts?: { params?: StateProof.Params }): StateProof | null {\n if (!buffer || buffer.length === undefined) {\n return null;\n }\n const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n let params = opts?.params ?? null;\n let derivedRecord: Record<string, bigint> | null = null;\n if (!params) {\n const derived = this.__tnExtractParams(view, buffer);\n if (!derived) return null;\n params = derived.params;\n derivedRecord = derived.derived;\n }\n const validation = this.validate(buffer, { params });\n if (!validation.ok) {\n return null;\n }\n const cached = validation.params ?? params;\n const state = new StateProof(buffer, cached);\n if (derivedRecord) state.__tnDerivedParams = derivedRecord;\n return state;\n }\n\n\n}\n\nexport namespace StateProof {\n export type Params = {\n /** ABI path: proof_body.hdr.type_slot */\n readonly proof_body_hdr_type_slot: bigint;\n /** ABI path: proof_body.payload_size */\n readonly proof_body_payload_size: bigint;\n };\n\n export const ParamKeys = Object.freeze({\n proof_body_hdr_type_slot: \"proof_body.hdr.type_slot\",\n proof_body_payload_size: \"proof_body.payload_size\",\n } as const);\n\n export const Params = {\n fromValues(input: { proof_body_hdr_type_slot: number | bigint, proof_body_payload_size: number | bigint }): Params {\n return {\n proof_body_hdr_type_slot: __tnToBigInt(input.proof_body_hdr_type_slot),\n proof_body_payload_size: __tnToBigInt(input.proof_body_payload_size),\n };\n },\n fromBuilder(source: { dynamicParams(): Params } | { params: Params } | Params): Params {\n if ((source as { dynamicParams?: () => Params }).dynamicParams) {\n return (source as { dynamicParams(): Params }).dynamicParams();\n }\n if ((source as { params?: Params }).params) {\n return (source as { params: Params }).params;\n }\n return source as Params;\n }\n };\n\n export function params(input: { proof_body_hdr_type_slot: number | bigint, proof_body_payload_size: number | bigint }): Params {\n return Params.fromValues(input);\n }\n}\n\nexport class StateProofBuilder {\n private __tnPrefixBuffer: Uint8Array;\n private __tnPrefixView: DataView;\n private __tnPayload_proof_body: { descriptor: typeof StateProof.proof_bodyVariantDescriptors[number]; bytes: Uint8Array } | null = null;\n private __tnCachedParams: StateProof.Params | null = null;\n private __tnLastBuffer: Uint8Array | null = null;\n private __tnLastParams: StateProof.Params | null = null;\n private __tnVariantSelector_proof_body?: __TnVariantSelectorResult<StateProofBuilder>;\n\n constructor() {\n this.__tnPrefixBuffer = new Uint8Array(40);\n this.__tnPrefixView = new DataView(this.__tnPrefixBuffer.buffer, this.__tnPrefixBuffer.byteOffset, this.__tnPrefixBuffer.byteLength);\n }\n\n set_hdr(value: Uint8Array): this {\n if (value.length !== 40) throw new Error(\"hdr expects 40 bytes\");\n this.__tnPrefixBuffer.set(value, 0);\n this.__tnInvalidate();\n return this;\n }\n\n private __tnInvalidate(): void {\n this.__tnCachedParams = null;\n this.__tnLastBuffer = null;\n this.__tnLastParams = null;\n }\n\n proof_body(): __TnVariantSelectorResult<StateProofBuilder> {\n if (!this.__tnVariantSelector_proof_body) {\n this.__tnVariantSelector_proof_body = __tnCreateVariantSelector(this, StateProof.proof_bodyVariantDescriptors, (descriptor, payload) => {\n this.__tnPayload_proof_body = { descriptor, bytes: new Uint8Array(payload) };\n this.__tnInvalidate();\n });\n }\n return this.__tnVariantSelector_proof_body!;\n }\n\n build(): Uint8Array {\n const params = this.__tnComputeParams();\n if (!this.__tnPayload_proof_body) throw new Error(\"StateProofBuilder: payload variant not selected\");\n const payloadLength = this.__tnPayload_proof_body.bytes.length;\n const requiredSize = 40 + payloadLength;\n const footprintSize = StateProof.footprintFromParams(params);\n const size = Math.max(requiredSize, footprintSize);\n const buffer = new Uint8Array(size);\n this.__tnWriteInto(buffer);\n this.__tnValidateOrThrow(buffer, params);\n return buffer;\n }\n\n buildInto(target: Uint8Array, offset = 0): Uint8Array {\n const params = this.__tnComputeParams();\n if (!this.__tnPayload_proof_body) throw new Error(\"StateProofBuilder: payload variant not selected\");\n const payloadLength = this.__tnPayload_proof_body.bytes.length;\n const requiredSize = 40 + payloadLength;\n const footprintSize = StateProof.footprintFromParams(params);\n const size = Math.max(requiredSize, footprintSize);\n if (target.length - offset < size) throw new Error(\"StateProofBuilder: target buffer too small\");\n const slice = target.subarray(offset, offset + size);\n this.__tnWriteInto(slice);\n this.__tnValidateOrThrow(slice, params);\n return target;\n }\n\n finish(): StateProof {\n const buffer = this.build();\n const params = this.__tnLastParams ?? this.__tnComputeParams();\n const view = StateProof.from_array(buffer, { params });\n if (!view) throw new Error(\"StateProofBuilder: failed to finalize view\");\n return view;\n }\n\n finishView(): StateProof {\n return this.finish();\n }\n\n dynamicParams(): StateProof.Params {\n return this.__tnComputeParams();\n }\n\n private __tnComputeParams(): StateProof.Params {\n if (this.__tnCachedParams) return this.__tnCachedParams;\n const params = StateProof.Params.fromValues({\n proof_body_hdr_type_slot: (() => { const slice = this.__tnPrefixBuffer.subarray(0, 40); const header = StateProofHeader.from_array(slice); if (!header) throw new Error(\"StateProofBuilder: field 'hdr' must be set before build\"); return __tnToBigInt(header.get_type_slot()); })(),\n proof_body_payload_size: (() => { if (!this.__tnPayload_proof_body) throw new Error(\"StateProofBuilder: payload 'proof_body' must be selected before build\"); return __tnToBigInt(this.__tnPayload_proof_body.bytes.length); })(),\n });\n this.__tnCachedParams = params;\n return params;\n }\n\n private __tnWriteInto(target: Uint8Array): void {\n if (!this.__tnPayload_proof_body) throw new Error(\"StateProofBuilder: payload variant not selected\");\n const view = new DataView(target.buffer, target.byteOffset, target.byteLength);\n target.set(this.__tnPrefixBuffer, 0);\n target.set(this.__tnPayload_proof_body.bytes, 40);\n const __tnLayout = StateProof.__tnComputeSequentialLayout(view, target);\n if (!__tnLayout || !__tnLayout.derived) throw new Error(\"StateProofBuilder: failed to derive enum tag\");\n const __tnDerivedTagValue = __tnLayout.derived[\"StateProof__proof_body_computed_tag\"];\n if (__tnDerivedTagValue === undefined) throw new Error(\"StateProofBuilder: computed enum tag missing\");\n const __tnDerivedTag = __tnBigIntToNumber(__tnDerivedTagValue, \"StateProofBuilder::__tnWriteInto\");\n const __tnExpectedTag = this.__tnPayload_proof_body!.descriptor.tag;\n if (__tnDerivedTag !== __tnExpectedTag) throw new Error(\"StateProofBuilder: computed enum tag does not match selected variant\");\n }\n\n private __tnValidateOrThrow(buffer: Uint8Array, params: StateProof.Params): void {\n const result = StateProof.validate(buffer, { params });\n if (!result.ok) {\n throw new Error(`${ StateProof }Builder: builder produced invalid buffer (code=${result.code ?? \"unknown\"})`);\n }\n this.__tnLastParams = result.params ?? params;\n this.__tnLastBuffer = buffer;\n }\n}\n\n__tnRegisterFootprint(\"StateProof\", (params) => StateProof.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"StateProof\", (buffer, params) => StateProof.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"StateProof\", (buffer) => { const result = StateProof.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n\n","/* Auto-generated TypeScript code */\n/* WARNING: Do not modify this file directly. It is generated from ABI definitions. */\n\nimport { StateProof } from \"../../blockchain/state_proof/types\";\nimport { InstructionData, Pubkey } from \"../../common/primitives/types\";\n\ntype __TnIrNode =\n | { readonly op: \"zero\" }\n | { readonly op: \"const\"; readonly value: bigint }\n | { readonly op: \"field\"; readonly param: string }\n | {\n readonly op: \"add\";\n readonly left: __TnIrNode;\n readonly right: __TnIrNode;\n }\n | {\n readonly op: \"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__tnRegisterFootprint(\"Pubkey\", (params) => Pubkey.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"Pubkey\", (buffer, params) => Pubkey.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"Pubkey\", (buffer) => { const result = Pubkey.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n\n__tnRegisterFootprint(\"StateProof\", (params) => StateProof.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"StateProof\", (buffer, params) => StateProof.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"StateProof\", (buffer) => { const result = StateProof.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n\n/* ----- TYPE DEFINITION FOR Authority ----- */\n\nconst __tn_ir_Authority = {\n typeName: \"Authority\",\n root: { op: \"const\", value: 65n }\n} as const;\n\nexport class Authority {\n private view: DataView;\n\n private constructor(private buffer: Uint8Array) {\n this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n }\n\n static __tnCreateView(buffer: Uint8Array, opts?: { fieldContext?: Record<string, number | bigint> }): Authority {\n if (!buffer || buffer.length === undefined) throw new Error(\"Authority.__tnCreateView requires a Uint8Array\");\n return new Authority(new Uint8Array(buffer));\n }\n\n static builder(): AuthorityBuilder {\n return new AuthorityBuilder();\n }\n\n static fromBuilder(builder: AuthorityBuilder): Authority | null {\n const buffer = builder.build();\n return Authority.from_array(buffer);\n }\n\n get_tag(): number {\n const offset = 0;\n return this.view.getUint8(offset);\n }\n\n set_tag(value: number): void {\n const offset = 0;\n this.view.setUint8(offset, value);\n }\n\n get tag(): number {\n return this.get_tag();\n }\n\n set tag(value: number) {\n this.set_tag(value);\n }\n\n get_data(): number[] {\n const offset = 1;\n const result: number[] = [];\n for (let i = 0; i < 64; i++) {\n result.push(this.view.getUint8((offset + i * 1)));\n }\n return result;\n }\n\n set_data(value: number[]): void {\n const offset = 1;\n if (value.length !== 64) {\n throw new Error('Array length must be 64');\n }\n for (let i = 0; i < 64; i++) {\n this.view.setUint8((offset + i * 1), value[i]);\n }\n }\n\n get data(): number[] {\n return this.get_data();\n }\n\n set data(value: number[]) {\n this.set_data(value);\n }\n\n private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n return __tnEvalFootprint(__tn_ir_Authority.root, { params: __tnParams });\n }\n\n private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n return __tnValidateIrTree(__tn_ir_Authority, buffer, __tnParams);\n }\n\n static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n return this.__tnFootprintInternal(__tnParams);\n }\n\n static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n return this.__tnValidateInternal(buffer, __tnParams);\n }\n\n static footprintIr(): bigint {\n return this.__tnFootprintInternal(Object.create(null));\n }\n\n static footprint(): number {\n const irResult = this.footprintIr();\n const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n if (__tnBigIntGreaterThan(irResult, maxSafe)) {\n throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for Authority');\n }\n return __tnBigIntToNumber(irResult, 'Authority::footprint');\n }\n\n static validate(buffer: Uint8Array, _opts?: { params?: never }): { ok: boolean; code?: string; consumed?: number } {\n if (buffer.length < 65) return { ok: false, code: \"tn.buffer_too_small\", consumed: 65 };\n return { ok: true, consumed: 65 };\n }\n\n static from_array(buffer: Uint8Array): Authority | null {\n if (!buffer || buffer.length === undefined) {\n return null;\n }\n const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n const validation = this.validate(buffer);\n if (!validation.ok) {\n return null;\n }\n return new Authority(buffer);\n }\n\n}\n\nexport class AuthorityBuilder {\n private buffer: Uint8Array;\n private view: DataView;\n\n constructor() {\n this.buffer = new Uint8Array(65);\n this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n }\n\n set_tag(value: number): this {\n this.view.setUint8(0, value);\n return this;\n }\n\n set_data(values: number[]): this {\n if (values.length !== 64) throw new Error(\"data expects 64 elements\");\n for (let i = 0; i < values.length; i++) {\n const byteOffset = 1 + i * 1;\n this.view.setUint8(byteOffset, values[i]);\n }\n return this;\n }\n\n build(): Uint8Array {\n return this.buffer.slice();\n }\n\n buildInto(target: Uint8Array, offset = 0): Uint8Array {\n if (target.length - offset < this.buffer.length) throw new Error(\"target buffer too small\");\n target.set(this.buffer, offset);\n return target;\n }\n\n finish(): Authority {\n const view = Authority.from_array(this.buffer.slice());\n if (!view) throw new Error(\"failed to build Authority\");\n return view;\n }\n}\n\n__tnRegisterFootprint(\"Authority\", (params) => Authority.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"Authority\", (buffer, params) => Authority.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"Authority\", (buffer) => { const result = Authority.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n\n/* ----- TYPE DEFINITION FOR AuthorityRecord ----- */\n\nconst __tn_ir_AuthorityRecord = {\n typeName: \"AuthorityRecord\",\n root: { op: \"const\", value: 73n }\n} as const;\n\nexport class AuthorityRecord {\n private view: DataView;\n\n private constructor(private buffer: Uint8Array) {\n this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n }\n\n static __tnCreateView(buffer: Uint8Array, opts?: { fieldContext?: Record<string, number | bigint> }): AuthorityRecord {\n if (!buffer || buffer.length === undefined) throw new Error(\"AuthorityRecord.__tnCreateView requires a Uint8Array\");\n return new AuthorityRecord(new Uint8Array(buffer));\n }\n\n static builder(): AuthorityRecordBuilder {\n return new AuthorityRecordBuilder();\n }\n\n static fromBuilder(builder: AuthorityRecordBuilder): AuthorityRecord | null {\n const buffer = builder.build();\n return AuthorityRecord.from_array(buffer);\n }\n\n get_authority(): Authority {\n const offset = 0;\n const slice = this.buffer.subarray(offset, offset + 65);\n return Authority.from_array(slice)!;\n }\n\n set_authority(value: Authority): void {\n /* Copy bytes from source struct to this field */\n const sourceBytes = (value as any).buffer as Uint8Array;\n const offset = 0;\n this.buffer.set(sourceBytes, offset);\n }\n\n get authority(): Authority {\n return this.get_authority();\n }\n\n set authority(value: Authority) {\n this.set_authority(value);\n }\n\n get_expires_at_block_time_seconds(): bigint {\n const offset = 65;\n return this.view.getBigUint64(offset, true); /* little-endian */\n }\n\n set_expires_at_block_time_seconds(value: bigint): void {\n const offset = 65;\n this.view.setBigUint64(offset, value, true); /* little-endian */\n }\n\n get expires_at_block_time_seconds(): bigint {\n return this.get_expires_at_block_time_seconds();\n }\n\n set expires_at_block_time_seconds(value: bigint) {\n this.set_expires_at_block_time_seconds(value);\n }\n\n private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n return __tnEvalFootprint(__tn_ir_AuthorityRecord.root, { params: __tnParams });\n }\n\n private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n return __tnValidateIrTree(__tn_ir_AuthorityRecord, buffer, __tnParams);\n }\n\n static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n return this.__tnFootprintInternal(__tnParams);\n }\n\n static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n return this.__tnValidateInternal(buffer, __tnParams);\n }\n\n static footprintIr(): bigint {\n return this.__tnFootprintInternal(Object.create(null));\n }\n\n static footprint(): number {\n const irResult = this.footprintIr();\n const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n if (__tnBigIntGreaterThan(irResult, maxSafe)) {\n throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for AuthorityRecord');\n }\n return __tnBigIntToNumber(irResult, 'AuthorityRecord::footprint');\n }\n\n static validate(buffer: Uint8Array, _opts?: { params?: never }): { ok: boolean; code?: string; consumed?: number } {\n if (buffer.length < 73) return { ok: false, code: \"tn.buffer_too_small\", consumed: 73 };\n return { ok: true, consumed: 73 };\n }\n\n static from_array(buffer: Uint8Array): AuthorityRecord | null {\n if (!buffer || buffer.length === undefined) {\n return null;\n }\n const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n const validation = this.validate(buffer);\n if (!validation.ok) {\n return null;\n }\n return new AuthorityRecord(buffer);\n }\n\n}\n\nexport class AuthorityRecordBuilder {\n private buffer: Uint8Array;\n private view: DataView;\n\n constructor() {\n this.buffer = new Uint8Array(73);\n this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n }\n\n set_authority(value: Uint8Array): this {\n if (value.length !== 65) throw new Error(\"authority expects 65 bytes\");\n this.buffer.set(value, 0);\n return this;\n }\n\n set_expires_at_block_time_seconds(value: bigint): this {\n const cast = __tnToBigInt(value);\n this.view.setBigUint64(65, cast, true);\n return this;\n }\n\n build(): Uint8Array {\n return this.buffer.slice();\n }\n\n buildInto(target: Uint8Array, offset = 0): Uint8Array {\n if (target.length - offset < this.buffer.length) throw new Error(\"target buffer too small\");\n target.set(this.buffer, offset);\n return target;\n }\n\n finish(): AuthorityRecord {\n const view = AuthorityRecord.from_array(this.buffer.slice());\n if (!view) throw new Error(\"failed to build AuthorityRecord\");\n return view;\n }\n}\n\n__tnRegisterFootprint(\"AuthorityRecord\", (params) => AuthorityRecord.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"AuthorityRecord\", (buffer, params) => AuthorityRecord.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"AuthorityRecord\", (buffer) => { const result = AuthorityRecord.validate(buffer); return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed) }; });\n\n/* ----- TYPE DEFINITION FOR P256Point ----- */\n\nconst __tn_ir_P256Point = {\n typeName: \"P256Point\",\n root: { op: \"const\", value: 32n }\n} as const;\n\nexport class P256Point {\n private view: DataView;\n private constructor(private buffer: Uint8Array) {\n this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n }\n\n private static readonly __tnElementSize = 1;\n private static readonly __tnElementCount: number | null = 32;\n\n get length(): number {\n const explicit = P256Point.__tnElementCount;\n if (explicit !== null) {\n return explicit;\n }\n const stride = P256Point.__tnElementSize;\n if (stride > 0) {\n return Math.floor(this.buffer.length / stride);\n }\n return this.buffer.length;\n }\n\n getElementBytes(index: number): Uint8Array {\n if (!Number.isInteger(index) || index < 0) {\n throw new RangeError('P256Point::getElementBytes index must be a non-negative integer');\n }\n const stride = P256Point.__tnElementSize;\n if (stride <= 0) {\n throw new Error('P256Point::getElementBytes requires constant element size');\n }\n const start = index * stride;\n const end = start + stride;\n if (end > this.buffer.length) {\n throw new RangeError('P256Point::getElementBytes out of bounds');\n }\n return this.buffer.subarray(start, end);\n }\n\n static from_array(buffer: Uint8Array): P256Point | null {\n if (!buffer || buffer.length === undefined) {\n return null;\n }\n const validation = P256Point.validate(buffer);\n if (!validation.ok) {\n return null;\n }\n return new P256Point(buffer);\n }\n\n asUint8Array(): Uint8Array {\n return new Uint8Array(this.buffer);\n }\n\n private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n return __tnEvalFootprint(__tn_ir_P256Point.root, { params: __tnParams });\n }\n\n private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n return __tnValidateIrTree(__tn_ir_P256Point, buffer, __tnParams);\n }\n\n static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n return this.__tnFootprintInternal(__tnParams);\n }\n\n static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n return this.__tnValidateInternal(buffer, __tnParams);\n }\n\n static footprintIr(): bigint {\n return this.__tnFootprintInternal(Object.create(null));\n }\n\n static footprint(): number {\n const irResult = this.footprintIr();\n const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n if (__tnBigIntGreaterThan(irResult, maxSafe)) {\n throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for P256Point');\n }\n return __tnBigIntToNumber(irResult, 'P256Point::footprint');\n }\n\n static validate(buffer: Uint8Array, _opts?: { params?: never }): { ok: boolean; code?: string; consumed?: number } {\n if (buffer.length < 32) return { ok: false, code: \"tn.buffer_too_small\", consumed: 32 };\n return { ok: true, consumed: 32 };\n }\n\n}\n\n__tnRegisterFootprint(\"P256Point\", (params) => P256Point.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"P256Point\", (buffer, params) => P256Point.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"P256Point\", (buffer) => { const result = P256Point.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n\n/* ----- TYPE DEFINITION FOR RemoveAuthorityArgs ----- */\n\nconst __tn_ir_RemoveAuthorityArgs = {\n typeName: \"RemoveAuthorityArgs\",\n root: { op: \"const\", value: 3n }\n} as const;\n\nexport class RemoveAuthorityArgs {\n private view: DataView;\n\n private constructor(private buffer: Uint8Array) {\n this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n }\n\n static __tnCreateView(buffer: Uint8Array, opts?: { fieldContext?: Record<string, number | bigint> }): RemoveAuthorityArgs {\n if (!buffer || buffer.length === undefined) throw new Error(\"RemoveAuthorityArgs.__tnCreateView requires a Uint8Array\");\n return new RemoveAuthorityArgs(new Uint8Array(buffer));\n }\n\n static builder(): RemoveAuthorityArgsBuilder {\n return new RemoveAuthorityArgsBuilder();\n }\n\n static fromBuilder(builder: RemoveAuthorityArgsBuilder): RemoveAuthorityArgs | null {\n const buffer = builder.build();\n return RemoveAuthorityArgs.from_array(buffer);\n }\n\n get_wallet_account_idx(): number {\n const offset = 0;\n return this.view.getUint16(offset, true); /* little-endian */\n }\n\n set_wallet_account_idx(value: number): void {\n const offset = 0;\n this.view.setUint16(offset, value, true); /* little-endian */\n }\n\n get wallet_account_idx(): number {\n return this.get_wallet_account_idx();\n }\n\n set wallet_account_idx(value: number) {\n this.set_wallet_account_idx(value);\n }\n\n get_auth_idx(): number {\n const offset = 2;\n return this.view.getUint8(offset);\n }\n\n set_auth_idx(value: number): void {\n const offset = 2;\n this.view.setUint8(offset, value);\n }\n\n get auth_idx(): number {\n return this.get_auth_idx();\n }\n\n set auth_idx(value: number) {\n this.set_auth_idx(value);\n }\n\n private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n return __tnEvalFootprint(__tn_ir_RemoveAuthorityArgs.root, { params: __tnParams });\n }\n\n private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n return __tnValidateIrTree(__tn_ir_RemoveAuthorityArgs, buffer, __tnParams);\n }\n\n static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n return this.__tnFootprintInternal(__tnParams);\n }\n\n static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n return this.__tnValidateInternal(buffer, __tnParams);\n }\n\n static footprintIr(): bigint {\n return this.__tnFootprintInternal(Object.create(null));\n }\n\n static footprint(): number {\n const irResult = this.footprintIr();\n const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n if (__tnBigIntGreaterThan(irResult, maxSafe)) {\n throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for RemoveAuthorityArgs');\n }\n return __tnBigIntToNumber(irResult, 'RemoveAuthorityArgs::footprint');\n }\n\n static validate(buffer: Uint8Array, _opts?: { params?: never }): { ok: boolean; code?: string; consumed?: number } {\n if (buffer.length < 3) return { ok: false, code: \"tn.buffer_too_small\", consumed: 3 };\n return { ok: true, consumed: 3 };\n }\n\n static new(wallet_account_idx: number, auth_idx: number): RemoveAuthorityArgs {\n const buffer = new Uint8Array(3);\n const view = new DataView(buffer.buffer);\n\n let offset = 0;\n view.setUint16(0, wallet_account_idx, true); /* wallet_account_idx (little-endian) */\n view.setUint8(2, auth_idx); /* auth_idx */\n\n return new RemoveAuthorityArgs(buffer);\n }\n\n static from_array(buffer: Uint8Array): RemoveAuthorityArgs | null {\n if (!buffer || buffer.length === undefined) {\n return null;\n }\n const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n const validation = this.validate(buffer);\n if (!validation.ok) {\n return null;\n }\n return new RemoveAuthorityArgs(buffer);\n }\n\n}\n\nexport class RemoveAuthorityArgsBuilder {\n private buffer: Uint8Array;\n private view: DataView;\n\n constructor() {\n this.buffer = new Uint8Array(3);\n this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n }\n\n set_wallet_account_idx(value: number): this {\n this.view.setUint16(0, value, true);\n return this;\n }\n\n set_auth_idx(value: number): this {\n this.view.setUint8(2, value);\n return this;\n }\n\n build(): Uint8Array {\n return this.buffer.slice();\n }\n\n buildInto(target: Uint8Array, offset = 0): Uint8Array {\n if (target.length - offset < this.buffer.length) throw new Error(\"target buffer too small\");\n target.set(this.buffer, offset);\n return target;\n }\n\n finish(): RemoveAuthorityArgs {\n const view = RemoveAuthorityArgs.from_array(this.buffer.slice());\n if (!view) throw new Error(\"failed to build RemoveAuthorityArgs\");\n return view;\n }\n}\n\n__tnRegisterFootprint(\"RemoveAuthorityArgs\", (params) => RemoveAuthorityArgs.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"RemoveAuthorityArgs\", (buffer, params) => RemoveAuthorityArgs.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"RemoveAuthorityArgs\", (buffer) => { const result = RemoveAuthorityArgs.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n\n/* ----- TYPE DEFINITION FOR Seed32 ----- */\n\nconst __tn_ir_Seed32 = {\n typeName: \"Seed32\",\n root: { op: \"const\", value: 32n }\n} as const;\n\nexport class Seed32 {\n private view: DataView;\n private constructor(private buffer: Uint8Array) {\n this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n }\n\n private static readonly __tnElementSize = 1;\n private static readonly __tnElementCount: number | null = 32;\n\n get length(): number {\n const explicit = Seed32.__tnElementCount;\n if (explicit !== null) {\n return explicit;\n }\n const stride = Seed32.__tnElementSize;\n if (stride > 0) {\n return Math.floor(this.buffer.length / stride);\n }\n return this.buffer.length;\n }\n\n getElementBytes(index: number): Uint8Array {\n if (!Number.isInteger(index) || index < 0) {\n throw new RangeError('Seed32::getElementBytes index must be a non-negative integer');\n }\n const stride = Seed32.__tnElementSize;\n if (stride <= 0) {\n throw new Error('Seed32::getElementBytes requires constant element size');\n }\n const start = index * stride;\n const end = start + stride;\n if (end > this.buffer.length) {\n throw new RangeError('Seed32::getElementBytes out of bounds');\n }\n return this.buffer.subarray(start, end);\n }\n\n static from_array(buffer: Uint8Array): Seed32 | null {\n if (!buffer || buffer.length === undefined) {\n return null;\n }\n const validation = Seed32.validate(buffer);\n if (!validation.ok) {\n return null;\n }\n return new Seed32(buffer);\n }\n\n asUint8Array(): Uint8Array {\n return new Uint8Array(this.buffer);\n }\n\n private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n return __tnEvalFootprint(__tn_ir_Seed32.root, { params: __tnParams });\n }\n\n private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n return __tnValidateIrTree(__tn_ir_Seed32, buffer, __tnParams);\n }\n\n static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n return this.__tnFootprintInternal(__tnParams);\n }\n\n static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n return this.__tnValidateInternal(buffer, __tnParams);\n }\n\n static footprintIr(): bigint {\n return this.__tnFootprintInternal(Object.create(null));\n }\n\n static footprint(): number {\n const irResult = this.footprintIr();\n const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n if (__tnBigIntGreaterThan(irResult, maxSafe)) {\n throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for Seed32');\n }\n return __tnBigIntToNumber(irResult, 'Seed32::footprint');\n }\n\n static validate(buffer: Uint8Array, _opts?: { params?: never }): { ok: boolean; code?: string; consumed?: number } {\n if (buffer.length < 32) return { ok: false, code: \"tn.buffer_too_small\", consumed: 32 };\n return { ok: true, consumed: 32 };\n }\n\n}\n\n__tnRegisterFootprint(\"Seed32\", (params) => Seed32.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"Seed32\", (buffer, params) => Seed32.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"Seed32\", (buffer) => { const result = Seed32.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n\n/* ----- TYPE DEFINITION FOR TransferArgs ----- */\n\nconst __tn_ir_TransferArgs = {\n typeName: \"TransferArgs\",\n root: { op: \"const\", value: 12n }\n} as const;\n\nexport class TransferArgs {\n private view: DataView;\n\n private constructor(private buffer: Uint8Array) {\n this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n }\n\n static __tnCreateView(buffer: Uint8Array, opts?: { fieldContext?: Record<string, number | bigint> }): TransferArgs {\n if (!buffer || buffer.length === undefined) throw new Error(\"TransferArgs.__tnCreateView requires a Uint8Array\");\n return new TransferArgs(new Uint8Array(buffer));\n }\n\n static builder(): TransferArgsBuilder {\n return new TransferArgsBuilder();\n }\n\n static fromBuilder(builder: TransferArgsBuilder): TransferArgs | null {\n const buffer = builder.build();\n return TransferArgs.from_array(buffer);\n }\n\n get_wallet_account_idx(): number {\n const offset = 0;\n return this.view.getUint16(offset, true); /* little-endian */\n }\n\n set_wallet_account_idx(value: number): void {\n const offset = 0;\n this.view.setUint16(offset, value, true); /* little-endian */\n }\n\n get wallet_account_idx(): number {\n return this.get_wallet_account_idx();\n }\n\n set wallet_account_idx(value: number) {\n this.set_wallet_account_idx(value);\n }\n\n get_to_account_idx(): number {\n const offset = 2;\n return this.view.getUint16(offset, true); /* little-endian */\n }\n\n set_to_account_idx(value: number): void {\n const offset = 2;\n this.view.setUint16(offset, value, true); /* little-endian */\n }\n\n get to_account_idx(): number {\n return this.get_to_account_idx();\n }\n\n set to_account_idx(value: number) {\n this.set_to_account_idx(value);\n }\n\n get_amount(): bigint {\n const offset = 4;\n return this.view.getBigUint64(offset, true); /* little-endian */\n }\n\n set_amount(value: bigint): void {\n const offset = 4;\n this.view.setBigUint64(offset, value, true); /* little-endian */\n }\n\n get amount(): bigint {\n return this.get_amount();\n }\n\n set amount(value: bigint) {\n this.set_amount(value);\n }\n\n private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n return __tnEvalFootprint(__tn_ir_TransferArgs.root, { params: __tnParams });\n }\n\n private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n return __tnValidateIrTree(__tn_ir_TransferArgs, buffer, __tnParams);\n }\n\n static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n return this.__tnFootprintInternal(__tnParams);\n }\n\n static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n return this.__tnValidateInternal(buffer, __tnParams);\n }\n\n static footprintIr(): bigint {\n return this.__tnFootprintInternal(Object.create(null));\n }\n\n static footprint(): number {\n const irResult = this.footprintIr();\n const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n if (__tnBigIntGreaterThan(irResult, maxSafe)) {\n throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for TransferArgs');\n }\n return __tnBigIntToNumber(irResult, 'TransferArgs::footprint');\n }\n\n static validate(buffer: Uint8Array, _opts?: { params?: never }): { ok: boolean; code?: string; consumed?: number } {\n if (buffer.length < 12) return { ok: false, code: \"tn.buffer_too_small\", consumed: 12 };\n return { ok: true, consumed: 12 };\n }\n\n static new(wallet_account_idx: number, to_account_idx: number, amount: bigint): TransferArgs {\n const buffer = new Uint8Array(12);\n const view = new DataView(buffer.buffer);\n\n let offset = 0;\n view.setUint16(0, wallet_account_idx, true); /* wallet_account_idx (little-endian) */\n view.setUint16(2, to_account_idx, true); /* to_account_idx (little-endian) */\n view.setBigUint64(4, amount, true); /* amount (little-endian) */\n\n return new TransferArgs(buffer);\n }\n\n static from_array(buffer: Uint8Array): TransferArgs | null {\n if (!buffer || buffer.length === undefined) {\n return null;\n }\n const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n const validation = this.validate(buffer);\n if (!validation.ok) {\n return null;\n }\n return new TransferArgs(buffer);\n }\n\n}\n\nexport class TransferArgsBuilder {\n private buffer: Uint8Array;\n private view: DataView;\n\n constructor() {\n this.buffer = new Uint8Array(12);\n this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n }\n\n set_wallet_account_idx(value: number): this {\n this.view.setUint16(0, value, true);\n return this;\n }\n\n set_to_account_idx(value: number): this {\n this.view.setUint16(2, value, true);\n return this;\n }\n\n set_amount(value: bigint): this {\n const cast = __tnToBigInt(value);\n this.view.setBigUint64(4, cast, true);\n return this;\n }\n\n build(): Uint8Array {\n return this.buffer.slice();\n }\n\n buildInto(target: Uint8Array, offset = 0): Uint8Array {\n if (target.length - offset < this.buffer.length) throw new Error(\"target buffer too small\");\n target.set(this.buffer, offset);\n return target;\n }\n\n finish(): TransferArgs {\n const view = TransferArgs.from_array(this.buffer.slice());\n if (!view) throw new Error(\"failed to build TransferArgs\");\n return view;\n }\n}\n\n__tnRegisterFootprint(\"TransferArgs\", (params) => TransferArgs.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"TransferArgs\", (buffer, params) => TransferArgs.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"TransferArgs\", (buffer) => { const result = TransferArgs.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n\n/* ----- TYPE DEFINITION FOR ValidateArgs ----- */\n\nconst __tn_ir_ValidateArgs = {\n typeName: \"ValidateArgs\",\n root: { op: \"align\", alignment: 1, node: { op: \"add\", left: { op: \"add\", left: { op: \"add\", left: { op: \"add\", left: { op: \"add\", left: { op: \"add\", left: { op: \"add\", left: { op: \"add\", left: { op: \"align\", alignment: 2, node: { op: \"const\", value: 2n } }, right: { op: \"align\", alignment: 1, node: { op: \"const\", value: 1n } } }, right: { op: \"align\", alignment: 1, node: { op: \"const\", value: 32n } } }, right: { op: \"align\", alignment: 1, node: { op: \"const\", value: 32n } } }, right: { op: \"align\", alignment: 2, node: { op: \"const\", value: 2n } } }, right: { op: \"align\", alignment: 2, node: { op: \"const\", value: 2n } } }, right: { op: \"align\", alignment: 1, node: { op: \"mul\", left: { op: \"field\", param: \"authenticator_data.authenticator_data_len\" }, right: { op: \"const\", value: 1n } } } }, right: { op: \"align\", alignment: 1, node: { op: \"mul\", left: { op: \"field\", param: \"client_data.client_data_len\" }, right: { op: \"const\", value: 1n } } } }, right: { op: \"align\", alignment: 1, node: { op: \"call\", typeName: \"InstructionData\", args: [{ name: \"data.data_size\", source: \"data.data_size\" }] } } } }\n} as const;\n\nexport class ValidateArgs {\n private view: DataView;\n private __tnFieldContext: Record<string, number | bigint> | null = null;\n private __tnParams: ValidateArgs.Params;\n\n private constructor(private buffer: Uint8Array, params?: ValidateArgs.Params, fieldContext?: Record<string, number | bigint>) {\n this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n this.__tnFieldContext = fieldContext ?? null;\n if (params) {\n this.__tnParams = params;\n } else {\n const derived = ValidateArgs.__tnExtractParams(this.view, buffer);\n if (!derived) {\n throw new Error(\"ValidateArgs: failed to derive dynamic parameters\");\n }\n this.__tnParams = derived.params;\n }\n }\n\n static __tnCreateView(buffer: Uint8Array, opts?: { params?: ValidateArgs.Params, fieldContext?: Record<string, number | bigint> }): ValidateArgs {\n if (!buffer || buffer.length === undefined) throw new Error(\"ValidateArgs.__tnCreateView requires a Uint8Array\");\n let params = opts?.params ?? null;\n if (!params) {\n const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n const derived = ValidateArgs.__tnExtractParams(view, buffer);\n if (!derived) throw new Error(\"ValidateArgs.__tnCreateView: failed to derive params\");\n params = derived.params;\n }\n const instance = new ValidateArgs(new Uint8Array(buffer), params, opts?.fieldContext);\n return instance;\n }\n\n dynamicParams(): ValidateArgs.Params {\n return this.__tnParams;\n }\n\n withFieldContext(context: Record<string, number | bigint>): this {\n this.__tnFieldContext = context;\n return this;\n }\n\n private __tnResolveFieldRef(path: string): number {\n const getterName = `get_${path.replace(/[.]/g, '_')}`;\n const getter = (this as any)[getterName];\n if (typeof getter === \"function\") {\n const value = getter.call(this);\n return typeof value === \"bigint\" ? __tnBigIntToNumber(value, \"ValidateArgs::__tnResolveFieldRef\") : value;\n }\n if (this.__tnFieldContext && Object.prototype.hasOwnProperty.call(this.__tnFieldContext, path)) {\n const contextValue = this.__tnFieldContext[path];\n return typeof contextValue === \"bigint\" ? __tnBigIntToNumber(contextValue, \"ValidateArgs::__tnResolveFieldRef\") : contextValue;\n }\n throw new Error(\"ValidateArgs: field reference '\" + path + \"' is not available; provide fieldContext when creating this view\");\n }\n\n static builder(): ValidateArgsBuilder {\n return new ValidateArgsBuilder();\n }\n\n static fromBuilder(builder: ValidateArgsBuilder): ValidateArgs | null {\n const buffer = builder.build();\n const params = builder.dynamicParams();\n return ValidateArgs.from_array(buffer, { params });\n }\n\n static readonly flexibleArrayWriters = Object.freeze([\n { field: \"authenticator_data\", method: \"authenticator_data\", sizeField: \"authenticator_data_len\", paramKey: \"authenticator_data_len\", elementSize: 1 },\n { field: \"client_data\", method: \"client_data\", sizeField: \"client_data_len\", paramKey: \"client_data_len\", elementSize: 1 },\n ] as const);\n\n static __tnComputeSequentialLayout(view: DataView, buffer: Uint8Array): { params: Record<string, bigint> | null; offsets: Record<string, number> | null; derived: Record<string, bigint> | null } | null {\n const offsets: Record<string, number> = Object.create(null);\n const __tnLength = buffer.length;\n let __tnParamSeq_data_data_size: bigint | null = null;\n let __tnFieldValue_wallet_account_idx: number | null = null;\n let __tnFieldValue_auth_idx: number | null = null;\n let __tnFieldValue_authenticator_data_len: number | null = null;\n let __tnFieldValue_client_data_len: number | null = null;\n let __tnCursorMutable = 0;\n if (__tnCursorMutable + 2 > __tnLength) return null;\n const __tnRead_wallet_account_idx = view.getUint16(__tnCursorMutable, true);\n __tnFieldValue_wallet_account_idx = __tnRead_wallet_account_idx;\n __tnCursorMutable += 2;\n if (__tnCursorMutable + 1 > __tnLength) return null;\n const __tnRead_auth_idx = view.getUint8(__tnCursorMutable);\n __tnFieldValue_auth_idx = __tnRead_auth_idx;\n __tnCursorMutable += 1;\n if (__tnCursorMutable + 32 > __tnLength) return null;\n __tnCursorMutable += 32;\n if (__tnCursorMutable + 32 > __tnLength) return null;\n __tnCursorMutable += 32;\n if (__tnCursorMutable + 2 > __tnLength) return null;\n const __tnRead_authenticator_data_len = view.getUint16(__tnCursorMutable, true);\n __tnFieldValue_authenticator_data_len = __tnRead_authenticator_data_len;\n __tnCursorMutable += 2;\n if (__tnCursorMutable + 2 > __tnLength) return null;\n const __tnRead_client_data_len = view.getUint16(__tnCursorMutable, true);\n __tnFieldValue_client_data_len = __tnRead_client_data_len;\n __tnCursorMutable += 2;\n if (__tnFieldValue_authenticator_data_len === null) return null;\n const __tnArrayCount_authenticator_data = Math.trunc(Number(__tnFieldValue_authenticator_data_len));\n if (!Number.isFinite(__tnArrayCount_authenticator_data) || __tnArrayCount_authenticator_data < 0) return null;\n const __tnArrayBytes_authenticator_data = __tnArrayCount_authenticator_data * 1;\n if (__tnCursorMutable + __tnArrayBytes_authenticator_data > __tnLength) return null;\n __tnCursorMutable += __tnArrayBytes_authenticator_data;\n if (__tnFieldValue_client_data_len === null) return null;\n const __tnArrayCount_client_data = Math.trunc(Number(__tnFieldValue_client_data_len));\n if (!Number.isFinite(__tnArrayCount_client_data) || __tnArrayCount_client_data < 0) return null;\n const __tnArrayBytes_client_data = __tnArrayCount_client_data * 1;\n offsets[\"client_data\"] = __tnCursorMutable;\n if (__tnCursorMutable + __tnArrayBytes_client_data > __tnLength) return null;\n __tnCursorMutable += __tnArrayBytes_client_data;\n offsets[\"target_instruction\"] = __tnCursorMutable;\n const __tnTyperefResult_target_instruction = __tnInvokeDynamicValidate(\"InstructionData\", buffer.subarray(__tnCursorMutable));\n if (!__tnTyperefResult_target_instruction.ok || __tnTyperefResult_target_instruction.consumed === undefined) return null;\n const __tnTyperefParams_target_instruction = __tnTyperefResult_target_instruction.params ?? null;\n if (!__tnTyperefParams_target_instruction || __tnTyperefParams_target_instruction[\"data_data_size\"] === undefined) return null;\n __tnParamSeq_data_data_size = __tnTyperefParams_target_instruction[\"data_data_size\"];\n __tnCursorMutable += __tnBigIntToNumber(__tnTyperefResult_target_instruction.consumed, \"ValidateArgs::target_instruction\");\n const params: Record<string, bigint> = Object.create(null);\n if (__tnParamSeq_data_data_size === null) return null;\n params[\"data_data_size\"] = __tnParamSeq_data_data_size as bigint;\n return { params, offsets: offsets, derived: null };\n }\n\n private static __tnExtractParams(view: DataView, buffer: Uint8Array): { params: ValidateArgs.Params; derived: Record<string, bigint> | null } | null {\n if (buffer.length < 69) {\n return null;\n }\n const __tnParam_authenticator_data_authenticator_data_len = __tnToBigInt(view.getUint16(67, true));\n if (buffer.length < 71) {\n return null;\n }\n const __tnParam_client_data_client_data_len = __tnToBigInt(view.getUint16(69, true));\n const __tnLayout = ValidateArgs.__tnComputeSequentialLayout(view, buffer);\n if (!__tnLayout || !__tnLayout.params) return null;\n const __tnSeqParams = __tnLayout.params;\n const __tnParamSeq_data_data_size = __tnSeqParams[\"data_data_size\"];\n if (__tnParamSeq_data_data_size === undefined) return null;\n const __tnExtractedParams = ValidateArgs.Params.fromValues({\n authenticator_data_authenticator_data_len: __tnParam_authenticator_data_authenticator_data_len,\n client_data_client_data_len: __tnParam_client_data_client_data_len,\n data_data_size: __tnParamSeq_data_data_size as bigint,\n });\n return { params: __tnExtractedParams, derived: null };\n }\n\n /* Dynamic offsets are derived once per view; mutating length fields later does not invalidate this cache. */\n private __tnDynamicOffsetCache: Record<string, number> | null = null;\n private __tnGetDynamicOffset(field: string): number {\n if (!this.__tnDynamicOffsetCache) {\n this.__tnDynamicOffsetCache = this.__tnComputeDynamicOffsets();\n }\n const offset = this.__tnDynamicOffsetCache[field];\n if (offset === undefined) {\n throw new Error(\"ValidateArgs: field '\" + field + \"' does not have a dynamic offset\");\n }\n return offset;\n }\n\n private __tnComputeDynamicOffsets(): Record<string, number> {\n const layout = ValidateArgs.__tnComputeSequentialLayout(this.view, this.buffer);\n if (!layout || !layout.offsets) {\n throw new Error(\"ValidateArgs: failed to compute dynamic offsets\");\n }\n return layout.offsets;\n }\n\n get_wallet_account_idx(): number {\n const offset = 0;\n return this.view.getUint16(offset, true); /* little-endian */\n }\n\n set_wallet_account_idx(value: number): void {\n const offset = 0;\n this.view.setUint16(offset, value, true); /* little-endian */\n }\n\n get wallet_account_idx(): number {\n return this.get_wallet_account_idx();\n }\n\n set wallet_account_idx(value: number) {\n this.set_wallet_account_idx(value);\n }\n\n get_auth_idx(): number {\n const offset = 2;\n return this.view.getUint8(offset);\n }\n\n set_auth_idx(value: number): void {\n const offset = 2;\n this.view.setUint8(offset, value);\n }\n\n get auth_idx(): number {\n return this.get_auth_idx();\n }\n\n set auth_idx(value: number) {\n this.set_auth_idx(value);\n }\n\n get_signature_r(): P256Point {\n const offset = 3;\n const slice = this.buffer.subarray(offset, offset + 32);\n return P256Point.from_array(slice)!;\n }\n\n set_signature_r(value: P256Point): void {\n /* Copy bytes from source struct to this field */\n const sourceBytes = (value as any).buffer as Uint8Array;\n const offset = 3;\n this.buffer.set(sourceBytes, offset);\n }\n\n get signature_r(): P256Point {\n return this.get_signature_r();\n }\n\n set signature_r(value: P256Point) {\n this.set_signature_r(value);\n }\n\n get_signature_s(): P256Point {\n const offset = 35;\n const slice = this.buffer.subarray(offset, offset + 32);\n return P256Point.from_array(slice)!;\n }\n\n set_signature_s(value: P256Point): void {\n /* Copy bytes from source struct to this field */\n const sourceBytes = (value as any).buffer as Uint8Array;\n const offset = 35;\n this.buffer.set(sourceBytes, offset);\n }\n\n get signature_s(): P256Point {\n return this.get_signature_s();\n }\n\n set signature_s(value: P256Point) {\n this.set_signature_s(value);\n }\n\n get_authenticator_data_len(): number {\n const offset = 67;\n return this.view.getUint16(offset, true); /* little-endian */\n }\n\n set_authenticator_data_len(value: number): void {\n const offset = 67;\n this.view.setUint16(offset, value, true); /* little-endian */\n }\n\n get authenticator_data_len(): number {\n return this.get_authenticator_data_len();\n }\n\n set authenticator_data_len(value: number) {\n this.set_authenticator_data_len(value);\n }\n\n get_client_data_len(): number {\n const offset = 69;\n return this.view.getUint16(offset, true); /* little-endian */\n }\n\n set_client_data_len(value: number): void {\n const offset = 69;\n this.view.setUint16(offset, value, true); /* little-endian */\n }\n\n get client_data_len(): number {\n return this.get_client_data_len();\n }\n\n set client_data_len(value: number) {\n this.set_client_data_len(value);\n }\n\n get_authenticator_data_length(): number {\n return this.__tnResolveFieldRef(\"authenticator_data_len\");\n }\n\n get_authenticator_data_at(index: number): number {\n const offset = 71;\n return this.view.getUint8(offset + index * 1);\n }\n\n get_authenticator_data(): number[] {\n const len = this.get_authenticator_data_length();\n const result: number[] = [];\n for (let i = 0; i < len; i++) {\n result.push(this.get_authenticator_data_at(i));\n }\n return result;\n }\n\n set_authenticator_data_at(index: number, value: number): void {\n const offset = 71;\n this.view.setUint8((offset + index * 1), value);\n }\n\n set_authenticator_data(value: number[]): void {\n const len = Math.min(this.get_authenticator_data_length(), value.length);\n for (let i = 0; i < len; i++) {\n this.set_authenticator_data_at(i, value[i]);\n }\n }\n\n get authenticator_data(): number[] {\n return this.get_authenticator_data();\n }\n\n set authenticator_data(value: number[]) {\n this.set_authenticator_data(value);\n }\n\n get_client_data_length(): number {\n return this.__tnResolveFieldRef(\"client_data_len\");\n }\n\n get_client_data_at(index: number): number {\n const offset = this.__tnGetDynamicOffset(\"client_data\");\n return this.view.getUint8(offset + index * 1);\n }\n\n get_client_data(): number[] {\n const len = this.get_client_data_length();\n const result: number[] = [];\n for (let i = 0; i < len; i++) {\n result.push(this.get_client_data_at(i));\n }\n return result;\n }\n\n set_client_data_at(index: number, value: number): void {\n const offset = this.__tnGetDynamicOffset(\"client_data\");\n this.view.setUint8((offset + index * 1), value);\n }\n\n set_client_data(value: number[]): void {\n const len = Math.min(this.get_client_data_length(), value.length);\n for (let i = 0; i < len; i++) {\n this.set_client_data_at(i, value[i]);\n }\n }\n\n get client_data(): number[] {\n return this.get_client_data();\n }\n\n set client_data(value: number[]) {\n this.set_client_data(value);\n }\n\n get_target_instruction(): InstructionData {\n const offset = this.__tnGetDynamicOffset(\"target_instruction\");\n const tail = this.buffer.subarray(offset);\n const validation = InstructionData.validate(tail);\n if (!validation.ok || validation.consumed === undefined) {\n throw new Error(\"ValidateArgs: failed to read field 'target_instruction' (invalid nested payload)\");\n }\n const length = validation.consumed;\n const slice = tail.subarray(0, length);\n const opts = validation.params ? { params: validation.params } : undefined;\n return InstructionData.from_array(slice, opts)!;\n }\n\n set_target_instruction(value: InstructionData): void {\n /* Copy bytes from source struct to this field */\n const sourceBytes = (value as any).buffer as Uint8Array;\n const offset = this.__tnGetDynamicOffset(\"target_instruction\");\n this.buffer.set(sourceBytes, offset);\n }\n\n get target_instruction(): InstructionData {\n return this.get_target_instruction();\n }\n\n set target_instruction(value: InstructionData) {\n this.set_target_instruction(value);\n }\n private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n return __tnEvalFootprint(__tn_ir_ValidateArgs.root, { params: __tnParams });\n }\n\n private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n return __tnValidateIrTree(__tn_ir_ValidateArgs, buffer, __tnParams);\n }\n\n static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n return this.__tnFootprintInternal(__tnParams);\n }\n\n static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n return this.__tnValidateInternal(buffer, __tnParams);\n }\n\n static footprintIr(authenticator_data_authenticator_data_len: number | bigint, client_data_client_data_len: number | bigint, data_data_size: number | bigint): bigint {\n const params = ValidateArgs.Params.fromValues({\n authenticator_data_authenticator_data_len: authenticator_data_authenticator_data_len,\n client_data_client_data_len: client_data_client_data_len,\n data_data_size: data_data_size,\n });\n return this.footprintIrFromParams(params);\n }\n\n private static __tnPackParams(params: ValidateArgs.Params): Record<string, bigint> {\n const record: Record<string, bigint> = Object.create(null);\n record[\"authenticator_data.authenticator_data_len\"] = params.authenticator_data_authenticator_data_len;\n record[\"client_data.client_data_len\"] = params.client_data_client_data_len;\n record[\"data.data_size\"] = params.data_data_size;\n return record;\n }\n\n static footprintIrFromParams(params: ValidateArgs.Params): bigint {\n const __tnParams = this.__tnPackParams(params);\n return this.__tnFootprintInternal(__tnParams);\n }\n\n static footprintFromParams(params: ValidateArgs.Params): number {\n const irResult = this.footprintIrFromParams(params);\n const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n if (__tnBigIntGreaterThan(irResult, maxSafe)) throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for ValidateArgs');\n return __tnBigIntToNumber(irResult, 'ValidateArgs::footprintFromParams');\n }\n\n static footprintFromValues(input: { authenticator_data_authenticator_data_len: number | bigint, client_data_client_data_len: number | bigint, data_data_size: number | bigint }): number {\n const params = ValidateArgs.params(input);\n return this.footprintFromParams(params);\n }\n\n static footprint(params: ValidateArgs.Params): number {\n return this.footprintFromParams(params);\n }\n\n static validate(buffer: Uint8Array, opts?: { params?: ValidateArgs.Params }): { ok: boolean; code?: string; consumed?: number; params?: ValidateArgs.Params } {\n if (!buffer || buffer.length === undefined) {\n return { ok: false, code: \"tn.invalid_buffer\" };\n }\n const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n let params = opts?.params ?? null;\n if (!params) {\n const extracted = this.__tnExtractParams(view, buffer);\n if (!extracted) return { ok: false, code: \"tn.param_extraction_failed\" };\n params = extracted.params;\n }\n const __tnParamsRec = this.__tnPackParams(params);\n const irResult = this.__tnValidateInternal(buffer, __tnParamsRec);\n if (!irResult.ok) {\n return { ok: false, code: irResult.code, consumed: irResult.consumed ? __tnBigIntToNumber(irResult.consumed, 'ValidateArgs::validate') : undefined, params };\n }\n const consumed = irResult.consumed ? __tnBigIntToNumber(irResult.consumed, 'ValidateArgs::validate') : undefined;\n return { ok: true, consumed, params };\n }\n\n static from_array(buffer: Uint8Array, opts?: { params?: ValidateArgs.Params }): ValidateArgs | null {\n if (!buffer || buffer.length === undefined) {\n return null;\n }\n const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n let params = opts?.params ?? null;\n if (!params) {\n const derived = this.__tnExtractParams(view, buffer);\n if (!derived) return null;\n params = derived.params;\n }\n const validation = this.validate(buffer, { params });\n if (!validation.ok) {\n return null;\n }\n const cached = validation.params ?? params;\n const state = new ValidateArgs(buffer, cached);\n return state;\n }\n\n\n}\n\nexport namespace ValidateArgs {\n export type Params = {\n /** ABI path: authenticator_data.authenticator_data_len */\n readonly authenticator_data_authenticator_data_len: bigint;\n /** ABI path: client_data.client_data_len */\n readonly client_data_client_data_len: bigint;\n /** ABI path: data.data_size */\n readonly data_data_size: bigint;\n };\n\n export const ParamKeys = Object.freeze({\n authenticator_data_authenticator_data_len: \"authenticator_data.authenticator_data_len\",\n client_data_client_data_len: \"client_data.client_data_len\",\n data_data_size: \"data.data_size\",\n } as const);\n\n export const Params = {\n fromValues(input: { authenticator_data_authenticator_data_len: number | bigint, client_data_client_data_len: number | bigint, data_data_size: number | bigint }): Params {\n return {\n authenticator_data_authenticator_data_len: __tnToBigInt(input.authenticator_data_authenticator_data_len),\n client_data_client_data_len: __tnToBigInt(input.client_data_client_data_len),\n data_data_size: __tnToBigInt(input.data_data_size),\n };\n },\n fromBuilder(source: { dynamicParams(): Params } | { params: Params } | Params): Params {\n if ((source as { dynamicParams?: () => Params }).dynamicParams) {\n return (source as { dynamicParams(): Params }).dynamicParams();\n }\n if ((source as { params?: Params }).params) {\n return (source as { params: Params }).params;\n }\n return source as Params;\n }\n };\n\n export function params(input: { authenticator_data_authenticator_data_len: number | bigint, client_data_client_data_len: number | bigint, data_data_size: number | bigint }): Params {\n return Params.fromValues(input);\n }\n}\n\nexport class ValidateArgsBuilder {\n private buffer: Uint8Array;\n private view: DataView;\n private __tnCachedParams: ValidateArgs.Params | null = null;\n private __tnLastBuffer: Uint8Array | null = null;\n private __tnLastParams: ValidateArgs.Params | null = null;\n private __tnFam_authenticator_data: Uint8Array | null = null;\n private __tnFam_authenticator_dataCount: number | null = null;\n private __tnFamWriter_authenticator_data?: __TnFamWriterResult<ValidateArgsBuilder>;\n private __tnFam_client_data: Uint8Array | null = null;\n private __tnFam_client_dataCount: number | null = null;\n private __tnFamWriter_client_data?: __TnFamWriterResult<ValidateArgsBuilder>;\n private __tnTail_target_instruction: Uint8Array | null = null;\n private __tnTailParams_target_instruction: Record<string, bigint> | null = null;\n\n constructor() {\n this.buffer = new Uint8Array(71);\n this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n }\n\n private __tnInvalidate(): void {\n this.__tnCachedParams = null;\n this.__tnLastBuffer = null;\n this.__tnLastParams = null;\n }\n\n set_wallet_account_idx(value: number): this {\n this.view.setUint16(0, value, true);\n this.__tnInvalidate();\n return this;\n }\n\n set_auth_idx(value: number): this {\n this.view.setUint8(2, value);\n this.__tnInvalidate();\n return this;\n }\n\n set_signature_r(value: Uint8Array): this {\n if (value.length !== 32) throw new Error(\"signature_r expects 32 bytes\");\n this.buffer.set(value, 3);\n this.__tnInvalidate();\n return this;\n }\n\n set_signature_s(value: Uint8Array): this {\n if (value.length !== 32) throw new Error(\"signature_s expects 32 bytes\");\n this.buffer.set(value, 35);\n this.__tnInvalidate();\n return this;\n }\n\n set_authenticator_data_len(value: number): this {\n this.view.setUint16(67, value, true);\n this.__tnInvalidate();\n return this;\n }\n\n set_client_data_len(value: number): this {\n this.view.setUint16(69, value, true);\n this.__tnInvalidate();\n return this;\n }\n\n authenticator_data(): __TnFamWriterResult<ValidateArgsBuilder> {\n if (!this.__tnFamWriter_authenticator_data) {\n this.__tnFamWriter_authenticator_data = __tnCreateFamWriter(this, \"authenticator_data\", (payload) => {\n const bytes = new Uint8Array(payload);\n const elementCount = bytes.length;\n this.__tnFam_authenticator_data = bytes;\n this.__tnFam_authenticator_dataCount = elementCount;\n this.set_authenticator_data_len(elementCount);\n this.__tnInvalidate();\n });\n }\n return this.__tnFamWriter_authenticator_data!;\n }\n\n client_data(): __TnFamWriterResult<ValidateArgsBuilder> {\n if (!this.__tnFamWriter_client_data) {\n this.__tnFamWriter_client_data = __tnCreateFamWriter(this, \"client_data\", (payload) => {\n const bytes = new Uint8Array(payload);\n const elementCount = bytes.length;\n this.__tnFam_client_data = bytes;\n this.__tnFam_client_dataCount = elementCount;\n this.set_client_data_len(elementCount);\n this.__tnInvalidate();\n });\n }\n return this.__tnFamWriter_client_data!;\n }\n\n set_target_instruction(value: InstructionData | __TnStructFieldInput): this {\n const bytes = __tnResolveStructFieldInput(value as __TnStructFieldInput, \"ValidateArgsBuilder::target_instruction\");\n const validation = __tnInvokeDynamicValidate(\"InstructionData\", bytes);\n if (!validation.ok || validation.consumed === undefined) throw new Error(\"ValidateArgsBuilder: field 'target_instruction' failed validation\");\n if (__tnBigIntToNumber(validation.consumed, \"ValidateArgsBuilder::target_instruction\") !== bytes.length) throw new Error(\"ValidateArgsBuilder: field 'target_instruction' validation did not consume the full buffer\");\n this.__tnTail_target_instruction = bytes;\n this.__tnTailParams_target_instruction = validation.params ?? null;\n this.__tnInvalidate();\n return this;\n }\n\n build(): Uint8Array {\n const params = this.__tnComputeParams();\n const size = ValidateArgs.footprintFromParams(params);\n const buffer = new Uint8Array(size);\n this.__tnWriteInto(buffer);\n this.__tnValidateOrThrow(buffer, params);\n return buffer;\n }\n\n buildInto(target: Uint8Array, offset = 0): Uint8Array {\n const params = this.__tnComputeParams();\n const size = ValidateArgs.footprintFromParams(params);\n if (target.length - offset < size) throw new Error(\"ValidateArgsBuilder: target buffer too small\");\n const slice = target.subarray(offset, offset + size);\n this.__tnWriteInto(slice);\n this.__tnValidateOrThrow(slice, params);\n return target;\n }\n\n finish(): ValidateArgs {\n const buffer = this.build();\n const params = this.__tnLastParams ?? this.__tnComputeParams();\n const view = ValidateArgs.from_array(buffer, { params });\n if (!view) throw new Error(\"ValidateArgsBuilder: failed to finalize view\");\n return view;\n }\n\n finishView(): ValidateArgs {\n return this.finish();\n }\n\n dynamicParams(): ValidateArgs.Params {\n return this.__tnComputeParams();\n }\n\n private __tnComputeParams(): ValidateArgs.Params {\n if (this.__tnCachedParams) return this.__tnCachedParams;\n const params = ValidateArgs.Params.fromValues({\n authenticator_data_authenticator_data_len: (() => { if (this.__tnFam_authenticator_dataCount === null) throw new Error(\"ValidateArgsBuilder: field 'authenticator_data' must be written before computing params\"); return __tnToBigInt(this.__tnFam_authenticator_dataCount); })(),\n client_data_client_data_len: (() => { if (this.__tnFam_client_dataCount === null) throw new Error(\"ValidateArgsBuilder: field 'client_data' must be written before computing params\"); return __tnToBigInt(this.__tnFam_client_dataCount); })(),\n data_data_size: (() => { const params = this.__tnTailParams_target_instruction; if (!params || params[\"data_data_size\"] === undefined) throw new Error(\"ValidateArgsBuilder: field 'target_instruction' must be written before computing params\"); return params[\"data_data_size\"]; })(),\n });\n this.__tnCachedParams = params;\n return params;\n }\n\n private __tnWriteInto(target: Uint8Array): void {\n target.set(this.buffer, 0);\n let cursor = this.buffer.length;\n const __tnLocal_authenticator_data_bytes = this.__tnFam_authenticator_data;\n if (!__tnLocal_authenticator_data_bytes) throw new Error(\"ValidateArgsBuilder: field 'authenticator_data' must be written before build\");\n target.set(__tnLocal_authenticator_data_bytes, cursor);\n cursor += __tnLocal_authenticator_data_bytes.length;\n const __tnLocal_client_data_bytes = this.__tnFam_client_data;\n if (!__tnLocal_client_data_bytes) throw new Error(\"ValidateArgsBuilder: field 'client_data' must be written before build\");\n target.set(__tnLocal_client_data_bytes, cursor);\n cursor += __tnLocal_client_data_bytes.length;\n const __tnLocal_target_instruction_bytes = this.__tnTail_target_instruction;\n if (!__tnLocal_target_instruction_bytes) throw new Error(\"ValidateArgsBuilder: field 'target_instruction' must be written before build\");\n target.set(__tnLocal_target_instruction_bytes, cursor);\n cursor += __tnLocal_target_instruction_bytes.length;\n }\n\n private __tnValidateOrThrow(buffer: Uint8Array, params: ValidateArgs.Params): void {\n const result = ValidateArgs.validate(buffer, { params });\n if (!result.ok) {\n throw new Error(`${ ValidateArgs }Builder: builder produced invalid buffer (code=${result.code ?? \"unknown\"})`);\n }\n this.__tnLastParams = result.params ?? params;\n this.__tnLastBuffer = buffer;\n }\n}\n\n__tnRegisterFootprint(\"ValidateArgs\", (params) => ValidateArgs.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"ValidateArgs\", (buffer, params) => ValidateArgs.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"ValidateArgs\", (buffer) => { const result = ValidateArgs.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n\n/* ----- TYPE DEFINITION FOR WalletAccount ----- */\n\nconst __tn_ir_WalletAccount = {\n typeName: \"WalletAccount\",\n root: { op: \"align\", alignment: 1, node: { op: \"add\", left: { op: \"add\", left: { op: \"align\", alignment: 1, node: { op: \"const\", value: 1n } }, right: { op: \"align\", alignment: 8, node: { op: \"const\", value: 8n } } }, right: { op: \"align\", alignment: 1, node: { op: \"mul\", left: { op: \"add\", left: { op: \"field\", param: \"authorities.num_auth\" }, right: { op: \"const\", value: 1n } }, right: { op: \"const\", value: 73n } } } } }\n} as const;\n\nexport class WalletAccount {\n private view: DataView;\n private __tnFieldContext: Record<string, number | bigint> | null = null;\n private __tnParams: WalletAccount.Params;\n\n private constructor(private buffer: Uint8Array, params?: WalletAccount.Params, fieldContext?: Record<string, number | bigint>) {\n this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n this.__tnFieldContext = fieldContext ?? null;\n if (params) {\n this.__tnParams = params;\n } else {\n const derived = WalletAccount.__tnExtractParams(this.view, buffer);\n if (!derived) {\n throw new Error(\"WalletAccount: failed to derive dynamic parameters\");\n }\n this.__tnParams = derived.params;\n }\n }\n\n static __tnCreateView(buffer: Uint8Array, opts?: { params?: WalletAccount.Params, fieldContext?: Record<string, number | bigint> }): WalletAccount {\n if (!buffer || buffer.length === undefined) throw new Error(\"WalletAccount.__tnCreateView requires a Uint8Array\");\n let params = opts?.params ?? null;\n if (!params) {\n const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n const derived = WalletAccount.__tnExtractParams(view, buffer);\n if (!derived) throw new Error(\"WalletAccount.__tnCreateView: failed to derive params\");\n params = derived.params;\n }\n const instance = new WalletAccount(new Uint8Array(buffer), params, opts?.fieldContext);\n return instance;\n }\n\n dynamicParams(): WalletAccount.Params {\n return this.__tnParams;\n }\n\n withFieldContext(context: Record<string, number | bigint>): this {\n this.__tnFieldContext = context;\n return this;\n }\n\n private __tnResolveFieldRef(path: string): number {\n const getterName = `get_${path.replace(/[.]/g, '_')}`;\n const getter = (this as any)[getterName];\n if (typeof getter === \"function\") {\n const value = getter.call(this);\n return typeof value === \"bigint\" ? __tnBigIntToNumber(value, \"WalletAccount::__tnResolveFieldRef\") : value;\n }\n if (this.__tnFieldContext && Object.prototype.hasOwnProperty.call(this.__tnFieldContext, path)) {\n const contextValue = this.__tnFieldContext[path];\n return typeof contextValue === \"bigint\" ? __tnBigIntToNumber(contextValue, \"WalletAccount::__tnResolveFieldRef\") : contextValue;\n }\n throw new Error(\"WalletAccount: field reference '\" + path + \"' is not available; provide fieldContext when creating this view\");\n }\n\n private static __tnExtractParams(view: DataView, buffer: Uint8Array): { params: WalletAccount.Params; derived: Record<string, bigint> | null } | null {\n if (buffer.length < 1) {\n return null;\n }\n const __tnParam_authorities_num_auth = __tnToBigInt(view.getUint8(0));\n const __tnExtractedParams = WalletAccount.Params.fromValues({\n authorities_num_auth: __tnParam_authorities_num_auth,\n });\n return { params: __tnExtractedParams, derived: null };\n }\n\n get_num_auth(): number {\n const offset = 0;\n return this.view.getUint8(offset);\n }\n\n set_num_auth(value: number): void {\n const offset = 0;\n this.view.setUint8(offset, value);\n }\n\n get num_auth(): number {\n return this.get_num_auth();\n }\n\n set num_auth(value: number) {\n this.set_num_auth(value);\n }\n\n get_nonce(): bigint {\n const offset = 1;\n return this.view.getBigUint64(offset, true); /* little-endian */\n }\n\n set_nonce(value: bigint): void {\n const offset = 1;\n this.view.setBigUint64(offset, value, true); /* little-endian */\n }\n\n get nonce(): bigint {\n return this.get_nonce();\n }\n\n set nonce(value: bigint) {\n this.set_nonce(value);\n }\n\n get_authorities_length(): number {\n return (this.__tnResolveFieldRef(\"num_auth\") + 1);\n }\n\n get_authorities_at(index: number): AuthorityRecord {\n const offset = 9;\n const slice = this.buffer.subarray((offset + index * 73), (offset + (index + 1) * 73));\n return AuthorityRecord.from_array(slice)!;\n }\n\n get_authorities(): AuthorityRecord[] {\n const len = this.get_authorities_length();\n const result: AuthorityRecord[] = [];\n for (let i = 0; i < len; i++) {\n result.push(this.get_authorities_at(i));\n }\n return result;\n }\n\n set_authorities_at(index: number, value: AuthorityRecord): void {\n const offset = 9;\n const slice = this.buffer.subarray(offset + index * 73, offset + (index + 1) * 73);\n slice.set(value['buffer']);\n }\n\n set_authorities(value: AuthorityRecord[]): void {\n const len = Math.min(this.get_authorities_length(), value.length);\n for (let i = 0; i < len; i++) {\n this.set_authorities_at(i, value[i]);\n }\n }\n\n get authorities(): AuthorityRecord[] {\n return this.get_authorities();\n }\n\n set authorities(value: AuthorityRecord[]) {\n this.set_authorities(value);\n }\n private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n return __tnEvalFootprint(__tn_ir_WalletAccount.root, { params: __tnParams });\n }\n\n private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n return __tnValidateIrTree(__tn_ir_WalletAccount, buffer, __tnParams);\n }\n\n static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n return this.__tnFootprintInternal(__tnParams);\n }\n\n static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n return this.__tnValidateInternal(buffer, __tnParams);\n }\n\n static footprintIr(authorities_num_auth: number | bigint): bigint {\n const params = WalletAccount.Params.fromValues({\n authorities_num_auth: authorities_num_auth,\n });\n return this.footprintIrFromParams(params);\n }\n\n private static __tnPackParams(params: WalletAccount.Params): Record<string, bigint> {\n const record: Record<string, bigint> = Object.create(null);\n record[\"authorities.num_auth\"] = params.authorities_num_auth;\n return record;\n }\n\n static footprintIrFromParams(params: WalletAccount.Params): bigint {\n const __tnParams = this.__tnPackParams(params);\n return this.__tnFootprintInternal(__tnParams);\n }\n\n static footprintFromParams(params: WalletAccount.Params): number {\n const irResult = this.footprintIrFromParams(params);\n const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n if (__tnBigIntGreaterThan(irResult, maxSafe)) throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for WalletAccount');\n return __tnBigIntToNumber(irResult, 'WalletAccount::footprintFromParams');\n }\n\n static footprintFromValues(input: { authorities_num_auth: number | bigint }): number {\n const params = WalletAccount.params(input);\n return this.footprintFromParams(params);\n }\n\n static footprint(params: WalletAccount.Params): number {\n return this.footprintFromParams(params);\n }\n\n static validate(buffer: Uint8Array, opts?: { params?: WalletAccount.Params }): { ok: boolean; code?: string; consumed?: number; params?: WalletAccount.Params } {\n if (!buffer || buffer.length === undefined) {\n return { ok: false, code: \"tn.invalid_buffer\" };\n }\n const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n let params = opts?.params ?? null;\n if (!params) {\n const extracted = this.__tnExtractParams(view, buffer);\n if (!extracted) return { ok: false, code: \"tn.param_extraction_failed\" };\n params = extracted.params;\n }\n const __tnParamsRec = this.__tnPackParams(params);\n const irResult = this.__tnValidateInternal(buffer, __tnParamsRec);\n if (!irResult.ok) {\n return { ok: false, code: irResult.code, consumed: irResult.consumed ? __tnBigIntToNumber(irResult.consumed, 'WalletAccount::validate') : undefined, params };\n }\n const consumed = irResult.consumed ? __tnBigIntToNumber(irResult.consumed, 'WalletAccount::validate') : undefined;\n return { ok: true, consumed, params };\n }\n\n static from_array(buffer: Uint8Array, opts?: { params?: WalletAccount.Params }): WalletAccount | null {\n if (!buffer || buffer.length === undefined) {\n return null;\n }\n const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n let params = opts?.params ?? null;\n if (!params) {\n const derived = this.__tnExtractParams(view, buffer);\n if (!derived) return null;\n params = derived.params;\n }\n const validation = this.validate(buffer, { params });\n if (!validation.ok) {\n return null;\n }\n const cached = validation.params ?? params;\n const state = new WalletAccount(buffer, cached);\n return state;\n }\n\n\n}\n\nexport namespace WalletAccount {\n export type Params = {\n /** ABI path: authorities.num_auth */\n readonly authorities_num_auth: bigint;\n };\n\n export const ParamKeys = Object.freeze({\n authorities_num_auth: \"authorities.num_auth\",\n } as const);\n\n export const Params = {\n fromValues(input: { authorities_num_auth: number | bigint }): Params {\n return {\n authorities_num_auth: __tnToBigInt(input.authorities_num_auth),\n };\n },\n fromBuilder(source: { dynamicParams(): Params } | { params: Params } | Params): Params {\n if ((source as { dynamicParams?: () => Params }).dynamicParams) {\n return (source as { dynamicParams(): Params }).dynamicParams();\n }\n if ((source as { params?: Params }).params) {\n return (source as { params: Params }).params;\n }\n return source as Params;\n }\n };\n\n export function params(input: { authorities_num_auth: number | bigint }): Params {\n return Params.fromValues(input);\n }\n}\n\n__tnRegisterFootprint(\"WalletAccount\", (params) => WalletAccount.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"WalletAccount\", (buffer, params) => WalletAccount.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"WalletAccount\", (buffer) => { const result = WalletAccount.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n\n/* ----- TYPE DEFINITION FOR WalletCreatedEventData ----- */\n\nconst __tn_ir_WalletCreatedEventData = {\n typeName: \"WalletCreatedEventData\",\n root: { op: \"const\", value: 97n }\n} as const;\n\nexport class WalletCreatedEventData {\n private view: DataView;\n\n private constructor(private buffer: Uint8Array) {\n this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n }\n\n static __tnCreateView(buffer: Uint8Array, opts?: { fieldContext?: Record<string, number | bigint> }): WalletCreatedEventData {\n if (!buffer || buffer.length === undefined) throw new Error(\"WalletCreatedEventData.__tnCreateView requires a Uint8Array\");\n return new WalletCreatedEventData(new Uint8Array(buffer));\n }\n\n static builder(): WalletCreatedEventDataBuilder {\n return new WalletCreatedEventDataBuilder();\n }\n\n static fromBuilder(builder: WalletCreatedEventDataBuilder): WalletCreatedEventData | null {\n const buffer = builder.build();\n return WalletCreatedEventData.from_array(buffer);\n }\n\n get_wallet(): Pubkey {\n const offset = 0;\n const slice = this.buffer.subarray(offset, offset + 32);\n return Pubkey.from_array(slice)!;\n }\n\n set_wallet(value: Pubkey): void {\n /* Copy bytes from source struct to this field */\n const sourceBytes = (value as any).buffer as Uint8Array;\n const offset = 0;\n this.buffer.set(sourceBytes, offset);\n }\n\n get wallet(): Pubkey {\n return this.get_wallet();\n }\n\n set wallet(value: Pubkey) {\n this.set_wallet(value);\n }\n\n get_authority(): Authority {\n const offset = 32;\n const slice = this.buffer.subarray(offset, offset + 65);\n return Authority.from_array(slice)!;\n }\n\n set_authority(value: Authority): void {\n /* Copy bytes from source struct to this field */\n const sourceBytes = (value as any).buffer as Uint8Array;\n const offset = 32;\n this.buffer.set(sourceBytes, offset);\n }\n\n get authority(): Authority {\n return this.get_authority();\n }\n\n set authority(value: Authority) {\n this.set_authority(value);\n }\n\n private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n return __tnEvalFootprint(__tn_ir_WalletCreatedEventData.root, { params: __tnParams });\n }\n\n private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n return __tnValidateIrTree(__tn_ir_WalletCreatedEventData, buffer, __tnParams);\n }\n\n static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n return this.__tnFootprintInternal(__tnParams);\n }\n\n static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n return this.__tnValidateInternal(buffer, __tnParams);\n }\n\n static footprintIr(): bigint {\n return this.__tnFootprintInternal(Object.create(null));\n }\n\n static footprint(): number {\n const irResult = this.footprintIr();\n const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n if (__tnBigIntGreaterThan(irResult, maxSafe)) {\n throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for WalletCreatedEventData');\n }\n return __tnBigIntToNumber(irResult, 'WalletCreatedEventData::footprint');\n }\n\n static validate(buffer: Uint8Array, _opts?: { params?: never }): { ok: boolean; code?: string; consumed?: number } {\n if (buffer.length < 97) return { ok: false, code: \"tn.buffer_too_small\", consumed: 97 };\n return { ok: true, consumed: 97 };\n }\n\n static from_array(buffer: Uint8Array): WalletCreatedEventData | null {\n if (!buffer || buffer.length === undefined) {\n return null;\n }\n const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n const validation = this.validate(buffer);\n if (!validation.ok) {\n return null;\n }\n return new WalletCreatedEventData(buffer);\n }\n\n}\n\nexport class WalletCreatedEventDataBuilder {\n private buffer: Uint8Array;\n private view: DataView;\n\n constructor() {\n this.buffer = new Uint8Array(97);\n this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n }\n\n set_wallet(value: Uint8Array): this {\n if (value.length !== 32) throw new Error(\"wallet expects 32 bytes\");\n this.buffer.set(value, 0);\n return this;\n }\n\n set_authority(value: Uint8Array): this {\n if (value.length !== 65) throw new Error(\"authority expects 65 bytes\");\n this.buffer.set(value, 32);\n return this;\n }\n\n build(): Uint8Array {\n return this.buffer.slice();\n }\n\n buildInto(target: Uint8Array, offset = 0): Uint8Array {\n if (target.length - offset < this.buffer.length) throw new Error(\"target buffer too small\");\n target.set(this.buffer, offset);\n return target;\n }\n\n finish(): WalletCreatedEventData {\n const view = WalletCreatedEventData.from_array(this.buffer.slice());\n if (!view) throw new Error(\"failed to build WalletCreatedEventData\");\n return view;\n }\n}\n\n__tnRegisterFootprint(\"WalletCreatedEventData\", (params) => WalletCreatedEventData.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"WalletCreatedEventData\", (buffer, params) => WalletCreatedEventData.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"WalletCreatedEventData\", (buffer) => { const result = WalletCreatedEventData.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n\n/* ----- TYPE DEFINITION FOR WalletTransferEventData ----- */\n\nconst __tn_ir_WalletTransferEventData = {\n typeName: \"WalletTransferEventData\",\n root: { op: \"const\", value: 72n }\n} as const;\n\nexport class WalletTransferEventData {\n private view: DataView;\n\n private constructor(private buffer: Uint8Array) {\n this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n }\n\n static __tnCreateView(buffer: Uint8Array, opts?: { fieldContext?: Record<string, number | bigint> }): WalletTransferEventData {\n if (!buffer || buffer.length === undefined) throw new Error(\"WalletTransferEventData.__tnCreateView requires a Uint8Array\");\n return new WalletTransferEventData(new Uint8Array(buffer));\n }\n\n static builder(): WalletTransferEventDataBuilder {\n return new WalletTransferEventDataBuilder();\n }\n\n static fromBuilder(builder: WalletTransferEventDataBuilder): WalletTransferEventData | null {\n const buffer = builder.build();\n return WalletTransferEventData.from_array(buffer);\n }\n\n get_wallet(): Pubkey {\n const offset = 0;\n const slice = this.buffer.subarray(offset, offset + 32);\n return Pubkey.from_array(slice)!;\n }\n\n set_wallet(value: Pubkey): void {\n /* Copy bytes from source struct to this field */\n const sourceBytes = (value as any).buffer as Uint8Array;\n const offset = 0;\n this.buffer.set(sourceBytes, offset);\n }\n\n get wallet(): Pubkey {\n return this.get_wallet();\n }\n\n set wallet(value: Pubkey) {\n this.set_wallet(value);\n }\n\n get_to(): Pubkey {\n const offset = 32;\n const slice = this.buffer.subarray(offset, offset + 32);\n return Pubkey.from_array(slice)!;\n }\n\n set_to(value: Pubkey): void {\n /* Copy bytes from source struct to this field */\n const sourceBytes = (value as any).buffer as Uint8Array;\n const offset = 32;\n this.buffer.set(sourceBytes, offset);\n }\n\n get to(): Pubkey {\n return this.get_to();\n }\n\n set to(value: Pubkey) {\n this.set_to(value);\n }\n\n get_amount(): bigint {\n const offset = 64;\n return this.view.getBigUint64(offset, true); /* little-endian */\n }\n\n set_amount(value: bigint): void {\n const offset = 64;\n this.view.setBigUint64(offset, value, true); /* little-endian */\n }\n\n get amount(): bigint {\n return this.get_amount();\n }\n\n set amount(value: bigint) {\n this.set_amount(value);\n }\n\n private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n return __tnEvalFootprint(__tn_ir_WalletTransferEventData.root, { params: __tnParams });\n }\n\n private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n return __tnValidateIrTree(__tn_ir_WalletTransferEventData, buffer, __tnParams);\n }\n\n static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n return this.__tnFootprintInternal(__tnParams);\n }\n\n static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n return this.__tnValidateInternal(buffer, __tnParams);\n }\n\n static footprintIr(): bigint {\n return this.__tnFootprintInternal(Object.create(null));\n }\n\n static footprint(): number {\n const irResult = this.footprintIr();\n const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n if (__tnBigIntGreaterThan(irResult, maxSafe)) {\n throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for WalletTransferEventData');\n }\n return __tnBigIntToNumber(irResult, 'WalletTransferEventData::footprint');\n }\n\n static validate(buffer: Uint8Array, _opts?: { params?: never }): { ok: boolean; code?: string; consumed?: number } {\n if (buffer.length < 72) return { ok: false, code: \"tn.buffer_too_small\", consumed: 72 };\n return { ok: true, consumed: 72 };\n }\n\n static from_array(buffer: Uint8Array): WalletTransferEventData | null {\n if (!buffer || buffer.length === undefined) {\n return null;\n }\n const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n const validation = this.validate(buffer);\n if (!validation.ok) {\n return null;\n }\n return new WalletTransferEventData(buffer);\n }\n\n}\n\nexport class WalletTransferEventDataBuilder {\n private buffer: Uint8Array;\n private view: DataView;\n\n constructor() {\n this.buffer = new Uint8Array(72);\n this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n }\n\n set_wallet(value: Uint8Array): this {\n if (value.length !== 32) throw new Error(\"wallet expects 32 bytes\");\n this.buffer.set(value, 0);\n return this;\n }\n\n set_to(value: Uint8Array): this {\n if (value.length !== 32) throw new Error(\"to expects 32 bytes\");\n this.buffer.set(value, 32);\n return this;\n }\n\n set_amount(value: bigint): this {\n const cast = __tnToBigInt(value);\n this.view.setBigUint64(64, cast, true);\n return this;\n }\n\n build(): Uint8Array {\n return this.buffer.slice();\n }\n\n buildInto(target: Uint8Array, offset = 0): Uint8Array {\n if (target.length - offset < this.buffer.length) throw new Error(\"target buffer too small\");\n target.set(this.buffer, offset);\n return target;\n }\n\n finish(): WalletTransferEventData {\n const view = WalletTransferEventData.from_array(this.buffer.slice());\n if (!view) throw new Error(\"failed to build WalletTransferEventData\");\n return view;\n }\n}\n\n__tnRegisterFootprint(\"WalletTransferEventData\", (params) => WalletTransferEventData.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"WalletTransferEventData\", (buffer, params) => WalletTransferEventData.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"WalletTransferEventData\", (buffer) => { const result = WalletTransferEventData.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n\n/* ----- TYPE DEFINITION FOR WalletValidatedEventData ----- */\n\nconst __tn_ir_WalletValidatedEventData = {\n typeName: \"WalletValidatedEventData\",\n root: { op: \"const\", value: 40n }\n} as const;\n\nexport class WalletValidatedEventData {\n private view: DataView;\n\n private constructor(private buffer: Uint8Array) {\n this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n }\n\n static __tnCreateView(buffer: Uint8Array, opts?: { fieldContext?: Record<string, number | bigint> }): WalletValidatedEventData {\n if (!buffer || buffer.length === undefined) throw new Error(\"WalletValidatedEventData.__tnCreateView requires a Uint8Array\");\n return new WalletValidatedEventData(new Uint8Array(buffer));\n }\n\n static builder(): WalletValidatedEventDataBuilder {\n return new WalletValidatedEventDataBuilder();\n }\n\n static fromBuilder(builder: WalletValidatedEventDataBuilder): WalletValidatedEventData | null {\n const buffer = builder.build();\n return WalletValidatedEventData.from_array(buffer);\n }\n\n get_wallet(): Pubkey {\n const offset = 0;\n const slice = this.buffer.subarray(offset, offset + 32);\n return Pubkey.from_array(slice)!;\n }\n\n set_wallet(value: Pubkey): void {\n /* Copy bytes from source struct to this field */\n const sourceBytes = (value as any).buffer as Uint8Array;\n const offset = 0;\n this.buffer.set(sourceBytes, offset);\n }\n\n get wallet(): Pubkey {\n return this.get_wallet();\n }\n\n set wallet(value: Pubkey) {\n this.set_wallet(value);\n }\n\n get_new_nonce(): bigint {\n const offset = 32;\n return this.view.getBigUint64(offset, true); /* little-endian */\n }\n\n set_new_nonce(value: bigint): void {\n const offset = 32;\n this.view.setBigUint64(offset, value, true); /* little-endian */\n }\n\n get new_nonce(): bigint {\n return this.get_new_nonce();\n }\n\n set new_nonce(value: bigint) {\n this.set_new_nonce(value);\n }\n\n private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n return __tnEvalFootprint(__tn_ir_WalletValidatedEventData.root, { params: __tnParams });\n }\n\n private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n return __tnValidateIrTree(__tn_ir_WalletValidatedEventData, buffer, __tnParams);\n }\n\n static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n return this.__tnFootprintInternal(__tnParams);\n }\n\n static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n return this.__tnValidateInternal(buffer, __tnParams);\n }\n\n static footprintIr(): bigint {\n return this.__tnFootprintInternal(Object.create(null));\n }\n\n static footprint(): number {\n const irResult = this.footprintIr();\n const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n if (__tnBigIntGreaterThan(irResult, maxSafe)) {\n throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for WalletValidatedEventData');\n }\n return __tnBigIntToNumber(irResult, 'WalletValidatedEventData::footprint');\n }\n\n static validate(buffer: Uint8Array, _opts?: { params?: never }): { ok: boolean; code?: string; consumed?: number } {\n if (buffer.length < 40) return { ok: false, code: \"tn.buffer_too_small\", consumed: 40 };\n return { ok: true, consumed: 40 };\n }\n\n static from_array(buffer: Uint8Array): WalletValidatedEventData | null {\n if (!buffer || buffer.length === undefined) {\n return null;\n }\n const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n const validation = this.validate(buffer);\n if (!validation.ok) {\n return null;\n }\n return new WalletValidatedEventData(buffer);\n }\n\n}\n\nexport class WalletValidatedEventDataBuilder {\n private buffer: Uint8Array;\n private view: DataView;\n\n constructor() {\n this.buffer = new Uint8Array(40);\n this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n }\n\n set_wallet(value: Uint8Array): this {\n if (value.length !== 32) throw new Error(\"wallet expects 32 bytes\");\n this.buffer.set(value, 0);\n return this;\n }\n\n set_new_nonce(value: bigint): this {\n const cast = __tnToBigInt(value);\n this.view.setBigUint64(32, cast, true);\n return this;\n }\n\n build(): Uint8Array {\n return this.buffer.slice();\n }\n\n buildInto(target: Uint8Array, offset = 0): Uint8Array {\n if (target.length - offset < this.buffer.length) throw new Error(\"target buffer too small\");\n target.set(this.buffer, offset);\n return target;\n }\n\n finish(): WalletValidatedEventData {\n const view = WalletValidatedEventData.from_array(this.buffer.slice());\n if (!view) throw new Error(\"failed to build WalletValidatedEventData\");\n return view;\n }\n}\n\n__tnRegisterFootprint(\"WalletValidatedEventData\", (params) => WalletValidatedEventData.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"WalletValidatedEventData\", (buffer, params) => WalletValidatedEventData.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"WalletValidatedEventData\", (buffer) => { const result = WalletValidatedEventData.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n\n/* ----- TYPE DEFINITION FOR AddAuthorityArgs ----- */\n\nconst __tn_ir_AddAuthorityArgs = {\n typeName: \"AddAuthorityArgs\",\n root: { op: \"const\", value: 75n }\n} as const;\n\nexport class AddAuthorityArgs {\n private view: DataView;\n\n private constructor(private buffer: Uint8Array) {\n this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n }\n\n static __tnCreateView(buffer: Uint8Array, opts?: { fieldContext?: Record<string, number | bigint> }): AddAuthorityArgs {\n if (!buffer || buffer.length === undefined) throw new Error(\"AddAuthorityArgs.__tnCreateView requires a Uint8Array\");\n return new AddAuthorityArgs(new Uint8Array(buffer));\n }\n\n static builder(): AddAuthorityArgsBuilder {\n return new AddAuthorityArgsBuilder();\n }\n\n static fromBuilder(builder: AddAuthorityArgsBuilder): AddAuthorityArgs | null {\n const buffer = builder.build();\n return AddAuthorityArgs.from_array(buffer);\n }\n\n get_wallet_account_idx(): number {\n const offset = 0;\n return this.view.getUint16(offset, true); /* little-endian */\n }\n\n set_wallet_account_idx(value: number): void {\n const offset = 0;\n this.view.setUint16(offset, value, true); /* little-endian */\n }\n\n get wallet_account_idx(): number {\n return this.get_wallet_account_idx();\n }\n\n set wallet_account_idx(value: number) {\n this.set_wallet_account_idx(value);\n }\n\n get_authority_record(): AuthorityRecord {\n const offset = 2;\n const slice = this.buffer.subarray(offset, offset + 73);\n return AuthorityRecord.from_array(slice)!;\n }\n\n set_authority_record(value: AuthorityRecord): void {\n /* Copy bytes from source struct to this field */\n const sourceBytes = (value as any).buffer as Uint8Array;\n const offset = 2;\n this.buffer.set(sourceBytes, offset);\n }\n\n get authority_record(): AuthorityRecord {\n return this.get_authority_record();\n }\n\n set authority_record(value: AuthorityRecord) {\n this.set_authority_record(value);\n }\n\n private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n return __tnEvalFootprint(__tn_ir_AddAuthorityArgs.root, { params: __tnParams });\n }\n\n private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n return __tnValidateIrTree(__tn_ir_AddAuthorityArgs, buffer, __tnParams);\n }\n\n static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n return this.__tnFootprintInternal(__tnParams);\n }\n\n static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n return this.__tnValidateInternal(buffer, __tnParams);\n }\n\n static footprintIr(): bigint {\n return this.__tnFootprintInternal(Object.create(null));\n }\n\n static footprint(): number {\n const irResult = this.footprintIr();\n const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n if (__tnBigIntGreaterThan(irResult, maxSafe)) {\n throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for AddAuthorityArgs');\n }\n return __tnBigIntToNumber(irResult, 'AddAuthorityArgs::footprint');\n }\n\n static validate(buffer: Uint8Array, _opts?: { params?: never }): { ok: boolean; code?: string; consumed?: number } {\n if (buffer.length < 75) return { ok: false, code: \"tn.buffer_too_small\", consumed: 75 };\n return { ok: true, consumed: 75 };\n }\n\n static from_array(buffer: Uint8Array): AddAuthorityArgs | null {\n if (!buffer || buffer.length === undefined) {\n return null;\n }\n const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n const validation = this.validate(buffer);\n if (!validation.ok) {\n return null;\n }\n return new AddAuthorityArgs(buffer);\n }\n\n}\n\nexport class AddAuthorityArgsBuilder {\n private buffer: Uint8Array;\n private view: DataView;\n\n constructor() {\n this.buffer = new Uint8Array(75);\n this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n }\n\n set_wallet_account_idx(value: number): this {\n this.view.setUint16(0, value, true);\n return this;\n }\n\n set_authority_record(value: Uint8Array): this {\n if (value.length !== 73) throw new Error(\"authority_record expects 73 bytes\");\n this.buffer.set(value, 2);\n return this;\n }\n\n build(): Uint8Array {\n return this.buffer.slice();\n }\n\n buildInto(target: Uint8Array, offset = 0): Uint8Array {\n if (target.length - offset < this.buffer.length) throw new Error(\"target buffer too small\");\n target.set(this.buffer, offset);\n return target;\n }\n\n finish(): AddAuthorityArgs {\n const view = AddAuthorityArgs.from_array(this.buffer.slice());\n if (!view) throw new Error(\"failed to build AddAuthorityArgs\");\n return view;\n }\n}\n\n__tnRegisterFootprint(\"AddAuthorityArgs\", (params) => AddAuthorityArgs.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"AddAuthorityArgs\", (buffer, params) => AddAuthorityArgs.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"AddAuthorityArgs\", (buffer) => { const result = AddAuthorityArgs.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n\n/* ----- TYPE DEFINITION FOR CredentialLookup ----- */\n\nconst __tn_ir_CredentialLookup = {\n typeName: \"CredentialLookup\",\n root: { op: \"const\", value: 32n }\n} as const;\n\nexport class CredentialLookup {\n private view: DataView;\n\n private constructor(private buffer: Uint8Array) {\n this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n }\n\n static __tnCreateView(buffer: Uint8Array, opts?: { fieldContext?: Record<string, number | bigint> }): CredentialLookup {\n if (!buffer || buffer.length === undefined) throw new Error(\"CredentialLookup.__tnCreateView requires a Uint8Array\");\n return new CredentialLookup(new Uint8Array(buffer));\n }\n\n static builder(): CredentialLookupBuilder {\n return new CredentialLookupBuilder();\n }\n\n static fromBuilder(builder: CredentialLookupBuilder): CredentialLookup | null {\n const buffer = builder.build();\n return CredentialLookup.from_array(buffer);\n }\n\n get_wallet(): Pubkey {\n const offset = 0;\n const slice = this.buffer.subarray(offset, offset + 32);\n return Pubkey.from_array(slice)!;\n }\n\n set_wallet(value: Pubkey): void {\n /* Copy bytes from source struct to this field */\n const sourceBytes = (value as any).buffer as Uint8Array;\n const offset = 0;\n this.buffer.set(sourceBytes, offset);\n }\n\n get wallet(): Pubkey {\n return this.get_wallet();\n }\n\n set wallet(value: Pubkey) {\n this.set_wallet(value);\n }\n\n private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n return __tnEvalFootprint(__tn_ir_CredentialLookup.root, { params: __tnParams });\n }\n\n private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n return __tnValidateIrTree(__tn_ir_CredentialLookup, buffer, __tnParams);\n }\n\n static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n return this.__tnFootprintInternal(__tnParams);\n }\n\n static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n return this.__tnValidateInternal(buffer, __tnParams);\n }\n\n static footprintIr(): bigint {\n return this.__tnFootprintInternal(Object.create(null));\n }\n\n static footprint(): number {\n const irResult = this.footprintIr();\n const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n if (__tnBigIntGreaterThan(irResult, maxSafe)) {\n throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for CredentialLookup');\n }\n return __tnBigIntToNumber(irResult, 'CredentialLookup::footprint');\n }\n\n static validate(buffer: Uint8Array, _opts?: { params?: never }): { ok: boolean; code?: string; consumed?: number } {\n if (buffer.length < 32) return { ok: false, code: \"tn.buffer_too_small\", consumed: 32 };\n return { ok: true, consumed: 32 };\n }\n\n static from_array(buffer: Uint8Array): CredentialLookup | null {\n if (!buffer || buffer.length === undefined) {\n return null;\n }\n const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n const validation = this.validate(buffer);\n if (!validation.ok) {\n return null;\n }\n return new CredentialLookup(buffer);\n }\n\n}\n\nexport class CredentialLookupBuilder {\n private buffer: Uint8Array;\n private view: DataView;\n\n constructor() {\n this.buffer = new Uint8Array(32);\n this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n }\n\n set_wallet(value: Uint8Array): this {\n if (value.length !== 32) throw new Error(\"wallet expects 32 bytes\");\n this.buffer.set(value, 0);\n return this;\n }\n\n build(): Uint8Array {\n return this.buffer.slice();\n }\n\n buildInto(target: Uint8Array, offset = 0): Uint8Array {\n if (target.length - offset < this.buffer.length) throw new Error(\"target buffer too small\");\n target.set(this.buffer, offset);\n return target;\n }\n\n finish(): CredentialLookup {\n const view = CredentialLookup.from_array(this.buffer.slice());\n if (!view) throw new Error(\"failed to build CredentialLookup\");\n return view;\n }\n}\n\n__tnRegisterFootprint(\"CredentialLookup\", (params) => CredentialLookup.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"CredentialLookup\", (buffer, params) => CredentialLookup.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"CredentialLookup\", (buffer) => { const result = CredentialLookup.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n\n/* ----- TYPE DEFINITION FOR CredentialRegisteredEventData ----- */\n\nconst __tn_ir_CredentialRegisteredEventData = {\n typeName: \"CredentialRegisteredEventData\",\n root: { op: \"const\", value: 64n }\n} as const;\n\nexport class CredentialRegisteredEventData {\n private view: DataView;\n\n private constructor(private buffer: Uint8Array) {\n this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n }\n\n static __tnCreateView(buffer: Uint8Array, opts?: { fieldContext?: Record<string, number | bigint> }): CredentialRegisteredEventData {\n if (!buffer || buffer.length === undefined) throw new Error(\"CredentialRegisteredEventData.__tnCreateView requires a Uint8Array\");\n return new CredentialRegisteredEventData(new Uint8Array(buffer));\n }\n\n static builder(): CredentialRegisteredEventDataBuilder {\n return new CredentialRegisteredEventDataBuilder();\n }\n\n static fromBuilder(builder: CredentialRegisteredEventDataBuilder): CredentialRegisteredEventData | null {\n const buffer = builder.build();\n return CredentialRegisteredEventData.from_array(buffer);\n }\n\n get_wallet(): Pubkey {\n const offset = 0;\n const slice = this.buffer.subarray(offset, offset + 32);\n return Pubkey.from_array(slice)!;\n }\n\n set_wallet(value: Pubkey): void {\n /* Copy bytes from source struct to this field */\n const sourceBytes = (value as any).buffer as Uint8Array;\n const offset = 0;\n this.buffer.set(sourceBytes, offset);\n }\n\n get wallet(): Pubkey {\n return this.get_wallet();\n }\n\n set wallet(value: Pubkey) {\n this.set_wallet(value);\n }\n\n get_lookup(): Pubkey {\n const offset = 32;\n const slice = this.buffer.subarray(offset, offset + 32);\n return Pubkey.from_array(slice)!;\n }\n\n set_lookup(value: Pubkey): void {\n /* Copy bytes from source struct to this field */\n const sourceBytes = (value as any).buffer as Uint8Array;\n const offset = 32;\n this.buffer.set(sourceBytes, offset);\n }\n\n get lookup(): Pubkey {\n return this.get_lookup();\n }\n\n set lookup(value: Pubkey) {\n this.set_lookup(value);\n }\n\n private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n return __tnEvalFootprint(__tn_ir_CredentialRegisteredEventData.root, { params: __tnParams });\n }\n\n private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n return __tnValidateIrTree(__tn_ir_CredentialRegisteredEventData, buffer, __tnParams);\n }\n\n static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n return this.__tnFootprintInternal(__tnParams);\n }\n\n static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n return this.__tnValidateInternal(buffer, __tnParams);\n }\n\n static footprintIr(): bigint {\n return this.__tnFootprintInternal(Object.create(null));\n }\n\n static footprint(): number {\n const irResult = this.footprintIr();\n const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n if (__tnBigIntGreaterThan(irResult, maxSafe)) {\n throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for CredentialRegisteredEventData');\n }\n return __tnBigIntToNumber(irResult, 'CredentialRegisteredEventData::footprint');\n }\n\n static validate(buffer: Uint8Array, _opts?: { params?: never }): { ok: boolean; code?: string; consumed?: number } {\n if (buffer.length < 64) return { ok: false, code: \"tn.buffer_too_small\", consumed: 64 };\n return { ok: true, consumed: 64 };\n }\n\n static from_array(buffer: Uint8Array): CredentialRegisteredEventData | null {\n if (!buffer || buffer.length === undefined) {\n return null;\n }\n const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n const validation = this.validate(buffer);\n if (!validation.ok) {\n return null;\n }\n return new CredentialRegisteredEventData(buffer);\n }\n\n}\n\nexport class CredentialRegisteredEventDataBuilder {\n private buffer: Uint8Array;\n private view: DataView;\n\n constructor() {\n this.buffer = new Uint8Array(64);\n this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n }\n\n set_wallet(value: Uint8Array): this {\n if (value.length !== 32) throw new Error(\"wallet expects 32 bytes\");\n this.buffer.set(value, 0);\n return this;\n }\n\n set_lookup(value: Uint8Array): this {\n if (value.length !== 32) throw new Error(\"lookup expects 32 bytes\");\n this.buffer.set(value, 32);\n return this;\n }\n\n build(): Uint8Array {\n return this.buffer.slice();\n }\n\n buildInto(target: Uint8Array, offset = 0): Uint8Array {\n if (target.length - offset < this.buffer.length) throw new Error(\"target buffer too small\");\n target.set(this.buffer, offset);\n return target;\n }\n\n finish(): CredentialRegisteredEventData {\n const view = CredentialRegisteredEventData.from_array(this.buffer.slice());\n if (!view) throw new Error(\"failed to build CredentialRegisteredEventData\");\n return view;\n }\n}\n\n__tnRegisterFootprint(\"CredentialRegisteredEventData\", (params) => CredentialRegisteredEventData.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"CredentialRegisteredEventData\", (buffer, params) => CredentialRegisteredEventData.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"CredentialRegisteredEventData\", (buffer) => { const result = CredentialRegisteredEventData.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n\n/* ----- TYPE DEFINITION FOR PasskeyEvent ----- */\n\nconst __tn_ir_PasskeyEvent = {\n typeName: \"PasskeyEvent\",\n root: { op: \"align\", alignment: 1, node: { op: \"add\", left: { op: \"align\", alignment: 1, node: { op: \"const\", value: 1n } }, right: { op: \"align\", alignment: 1, node: { op: \"switch\", tag: \"PasskeyEvent::payload.event_type\", cases: [{ value: 0, node: { op: \"align\", alignment: 1, node: { op: \"const\", value: 97n } } }, { value: 1, node: { op: \"align\", alignment: 1, node: { op: \"const\", value: 40n } } }, { value: 2, node: { op: \"align\", alignment: 1, node: { op: \"const\", value: 72n } } }, { value: 3, node: { op: \"align\", alignment: 1, node: { op: \"const\", value: 64n } } }] } } } }\n} as const;\n\nexport class PasskeyEvent_payload_Inner {\n private view: DataView;\n private __tnFieldContext: Record<string, number | bigint> | null = null;\n private constructor(private buffer: Uint8Array, private descriptor: __TnVariantDescriptor | null, fieldContext?: Record<string, number | bigint>) {\n this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n this.__tnFieldContext = fieldContext ?? null;\n }\n\n static __tnCreate(payload: Uint8Array, descriptor: __TnVariantDescriptor | null, fieldContext?: Record<string, number | bigint>): PasskeyEvent_payload_Inner {\n return new PasskeyEvent_payload_Inner(new Uint8Array(payload), descriptor, fieldContext);\n }\n\n bytes(): Uint8Array {\n return new Uint8Array(this.buffer);\n }\n\n variant(): __TnVariantDescriptor | null {\n return this.descriptor;\n }\n\n asWalletCreated(): WalletCreatedEventData | null {\n if (!this.descriptor || this.descriptor.tag !== 0) return null;\n return WalletCreatedEventData.__tnCreateView(new Uint8Array(this.buffer), { fieldContext: this.__tnFieldContext ?? undefined });\n }\n\n asWalletValidated(): WalletValidatedEventData | null {\n if (!this.descriptor || this.descriptor.tag !== 1) return null;\n return WalletValidatedEventData.__tnCreateView(new Uint8Array(this.buffer), { fieldContext: this.__tnFieldContext ?? undefined });\n }\n\n asWalletTransfer(): WalletTransferEventData | null {\n if (!this.descriptor || this.descriptor.tag !== 2) return null;\n return WalletTransferEventData.__tnCreateView(new Uint8Array(this.buffer), { fieldContext: this.__tnFieldContext ?? undefined });\n }\n\n asCredentialRegistered(): CredentialRegisteredEventData | null {\n if (!this.descriptor || this.descriptor.tag !== 3) return null;\n return CredentialRegisteredEventData.__tnCreateView(new Uint8Array(this.buffer), { fieldContext: this.__tnFieldContext ?? undefined });\n }\n\n}\n\nexport class PasskeyEvent {\n private view: DataView;\n private static readonly __tnFieldOffset_payload = 1;\n private __tnParams: PasskeyEvent.Params;\n\n private constructor(private buffer: Uint8Array, params?: PasskeyEvent.Params) {\n this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n if (params) {\n this.__tnParams = params;\n } else {\n const derived = PasskeyEvent.__tnExtractParams(this.view, buffer);\n if (!derived) {\n throw new Error(\"PasskeyEvent: failed to derive dynamic parameters\");\n }\n this.__tnParams = derived.params;\n }\n }\n\n static __tnCreateView(buffer: Uint8Array, opts?: { params?: PasskeyEvent.Params, fieldContext?: Record<string, number | bigint> }): PasskeyEvent {\n if (!buffer || buffer.length === undefined) throw new Error(\"PasskeyEvent.__tnCreateView requires a Uint8Array\");\n let params = opts?.params ?? null;\n if (!params) {\n const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n const derived = PasskeyEvent.__tnExtractParams(view, buffer);\n if (!derived) throw new Error(\"PasskeyEvent.__tnCreateView: failed to derive params\");\n params = derived.params;\n }\n const instance = new PasskeyEvent(new Uint8Array(buffer), params);\n return instance;\n }\n\n dynamicParams(): PasskeyEvent.Params {\n return this.__tnParams;\n }\n\n static builder(): PasskeyEventBuilder {\n return new PasskeyEventBuilder();\n }\n\n static fromBuilder(builder: PasskeyEventBuilder): PasskeyEvent | null {\n const buffer = builder.build();\n const params = builder.dynamicParams();\n return PasskeyEvent.from_array(buffer, { params });\n }\n\n static readonly payloadVariantDescriptors = Object.freeze([\n {\n name: \"wallet_created\",\n tag: 0,\n payloadSize: 97,\n payloadType: \"PasskeyEvent::payload::wallet_created\",\n createPayloadBuilder: () => __tnMaybeCallBuilder(WalletCreatedEventData),\n },\n {\n name: \"wallet_validated\",\n tag: 1,\n payloadSize: 40,\n payloadType: \"PasskeyEvent::payload::wallet_validated\",\n createPayloadBuilder: () => __tnMaybeCallBuilder(WalletValidatedEventData),\n },\n {\n name: \"wallet_transfer\",\n tag: 2,\n payloadSize: 72,\n payloadType: \"PasskeyEvent::payload::wallet_transfer\",\n createPayloadBuilder: () => __tnMaybeCallBuilder(WalletTransferEventData),\n },\n {\n name: \"credential_registered\",\n tag: 3,\n payloadSize: 64,\n payloadType: \"PasskeyEvent::payload::credential_registered\",\n createPayloadBuilder: () => __tnMaybeCallBuilder(CredentialRegisteredEventData),\n },\n ] as const);\n\n private static __tnExtractParams(view: DataView, buffer: Uint8Array): { params: PasskeyEvent.Params; derived: Record<string, bigint> | null } | null {\n if (buffer.length < 1) {\n return null;\n }\n const __tnParam_payload_event_type = __tnToBigInt(view.getUint8(0));\n const __tnExtractedParams = PasskeyEvent.Params.fromValues({\n payload_event_type: __tnParam_payload_event_type,\n });\n return { params: __tnExtractedParams, derived: null };\n }\n\n get_event_type(): number {\n const offset = 0;\n return this.view.getUint8(offset);\n }\n\n set_event_type(value: number): void {\n const offset = 0;\n this.view.setUint8(offset, value);\n }\n\n get event_type(): number {\n return this.get_event_type();\n }\n\n set event_type(value: number) {\n this.set_event_type(value);\n }\n\n payloadVariant(): typeof PasskeyEvent.payloadVariantDescriptors[number] | null {\n const tag = this.view.getUint8(0);\n return PasskeyEvent.payloadVariantDescriptors.find((variant) => variant.tag === tag) ?? null;\n }\n\n payload(): PasskeyEvent_payload_Inner {\n const descriptor = this.payloadVariant();\n if (!descriptor) throw new Error(\"PasskeyEvent: unknown payload variant\");\n const offset = PasskeyEvent.__tnFieldOffset_payload;\n const remaining = this.buffer.length - offset;\n const payloadLength = descriptor.payloadSize ?? remaining;\n if (payloadLength < 0 || offset + payloadLength > this.buffer.length) throw new Error(\"PasskeyEvent: payload exceeds buffer bounds\");\n const slice = this.buffer.subarray(offset, offset + payloadLength);\n return PasskeyEvent_payload_Inner.__tnCreate(slice, descriptor, undefined);\n }\n private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n return __tnEvalFootprint(__tn_ir_PasskeyEvent.root, { params: __tnParams });\n }\n\n private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n return __tnValidateIrTree(__tn_ir_PasskeyEvent, buffer, __tnParams);\n }\n\n static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n return this.__tnFootprintInternal(__tnParams);\n }\n\n static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n return this.__tnValidateInternal(buffer, __tnParams);\n }\n\n static footprintIr(payload_event_type: number | bigint): bigint {\n const params = PasskeyEvent.Params.fromValues({\n payload_event_type: payload_event_type,\n });\n return this.footprintIrFromParams(params);\n }\n\n private static __tnPackParams(params: PasskeyEvent.Params): Record<string, bigint> {\n const record: Record<string, bigint> = Object.create(null);\n record[\"payload.event_type\"] = params.payload_event_type;\n record[\"PasskeyEvent::payload.event_type\"] = params.payload_event_type;\n return record;\n }\n\n static footprintIrFromParams(params: PasskeyEvent.Params): bigint {\n const __tnParams = this.__tnPackParams(params);\n return this.__tnFootprintInternal(__tnParams);\n }\n\n static footprintFromParams(params: PasskeyEvent.Params): number {\n const irResult = this.footprintIrFromParams(params);\n const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n if (__tnBigIntGreaterThan(irResult, maxSafe)) throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for PasskeyEvent');\n return __tnBigIntToNumber(irResult, 'PasskeyEvent::footprintFromParams');\n }\n\n static footprintFromValues(input: { payload_event_type: number | bigint }): number {\n const params = PasskeyEvent.params(input);\n return this.footprintFromParams(params);\n }\n\n static footprint(params: PasskeyEvent.Params): number {\n return this.footprintFromParams(params);\n }\n\n static validate(buffer: Uint8Array, opts?: { params?: PasskeyEvent.Params }): { ok: boolean; code?: string; consumed?: number; params?: PasskeyEvent.Params } {\n if (!buffer || buffer.length === undefined) {\n return { ok: false, code: \"tn.invalid_buffer\" };\n }\n const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n let params = opts?.params ?? null;\n if (!params) {\n const extracted = this.__tnExtractParams(view, buffer);\n if (!extracted) return { ok: false, code: \"tn.param_extraction_failed\" };\n params = extracted.params;\n }\n const __tnParamsRec = this.__tnPackParams(params);\n const irResult = this.__tnValidateInternal(buffer, __tnParamsRec);\n if (!irResult.ok) {\n return { ok: false, code: irResult.code, consumed: irResult.consumed ? __tnBigIntToNumber(irResult.consumed, 'PasskeyEvent::validate') : undefined, params };\n }\n const consumed = irResult.consumed ? __tnBigIntToNumber(irResult.consumed, 'PasskeyEvent::validate') : undefined;\n return { ok: true, consumed, params };\n }\n\n static from_array(buffer: Uint8Array, opts?: { params?: PasskeyEvent.Params }): PasskeyEvent | null {\n if (!buffer || buffer.length === undefined) {\n return null;\n }\n const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n let params = opts?.params ?? null;\n if (!params) {\n const derived = this.__tnExtractParams(view, buffer);\n if (!derived) return null;\n params = derived.params;\n }\n const validation = this.validate(buffer, { params });\n if (!validation.ok) {\n return null;\n }\n const cached = validation.params ?? params;\n const state = new PasskeyEvent(buffer, cached);\n return state;\n }\n\n\n}\n\nexport namespace PasskeyEvent {\n export type Params = {\n /** ABI path: payload.event_type */\n readonly payload_event_type: bigint;\n };\n\n export const ParamKeys = Object.freeze({\n payload_event_type: \"payload.event_type\",\n } as const);\n\n export const Params = {\n fromValues(input: { payload_event_type: number | bigint }): Params {\n return {\n payload_event_type: __tnToBigInt(input.payload_event_type),\n };\n },\n fromBuilder(source: { dynamicParams(): Params } | { params: Params } | Params): Params {\n if ((source as { dynamicParams?: () => Params }).dynamicParams) {\n return (source as { dynamicParams(): Params }).dynamicParams();\n }\n if ((source as { params?: Params }).params) {\n return (source as { params: Params }).params;\n }\n return source as Params;\n }\n };\n\n export function params(input: { payload_event_type: number | bigint }): Params {\n return Params.fromValues(input);\n }\n}\n\nexport class PasskeyEventBuilder {\n private __tnPrefixBuffer: Uint8Array;\n private __tnPrefixView: DataView;\n private __tnField_event_type: number | null = null;\n private __tnPayload_payload: { descriptor: typeof PasskeyEvent.payloadVariantDescriptors[number]; bytes: Uint8Array } | null = null;\n private __tnCachedParams: PasskeyEvent.Params | null = null;\n private __tnLastBuffer: Uint8Array | null = null;\n private __tnLastParams: PasskeyEvent.Params | null = null;\n private __tnVariantSelector_payload?: __TnVariantSelectorResult<PasskeyEventBuilder>;\n\n constructor() {\n this.__tnPrefixBuffer = new Uint8Array(1);\n this.__tnPrefixView = new DataView(this.__tnPrefixBuffer.buffer, this.__tnPrefixBuffer.byteOffset, this.__tnPrefixBuffer.byteLength);\n }\n\n private __tnInvalidate(): void {\n this.__tnCachedParams = null;\n this.__tnLastBuffer = null;\n this.__tnLastParams = null;\n }\n\n private __tnAssign_event_type(value: number): void {\n this.__tnField_event_type = value & 0xff;\n this.__tnInvalidate();\n }\n\n set_event_type(value: number): this {\n this.__tnAssign_event_type(value);\n return this;\n }\n\n payload(): __TnVariantSelectorResult<PasskeyEventBuilder> {\n if (!this.__tnVariantSelector_payload) {\n this.__tnVariantSelector_payload = __tnCreateVariantSelector(this, PasskeyEvent.payloadVariantDescriptors, (descriptor, payload) => {\n this.__tnPayload_payload = { descriptor, bytes: new Uint8Array(payload) };\n this.__tnAssign_event_type(descriptor.tag);\n });\n }\n return this.__tnVariantSelector_payload!;\n }\n\n build(): Uint8Array {\n const params = this.__tnComputeParams();\n if (this.__tnField_event_type === null) throw new Error(\"PasskeyEventBuilder: field 'event_type' must be set before build\");\n if (!this.__tnPayload_payload) throw new Error(\"PasskeyEventBuilder: payload variant not selected\");\n const payloadLength = this.__tnPayload_payload.bytes.length;\n const requiredSize = 1 + payloadLength;\n const footprintSize = PasskeyEvent.footprintFromParams(params);\n const size = Math.max(requiredSize, footprintSize);\n const buffer = new Uint8Array(size);\n this.__tnWriteInto(buffer);\n this.__tnValidateOrThrow(buffer, params);\n return buffer;\n }\n\n buildInto(target: Uint8Array, offset = 0): Uint8Array {\n const params = this.__tnComputeParams();\n if (this.__tnField_event_type === null) throw new Error(\"PasskeyEventBuilder: field 'event_type' must be set before build\");\n if (!this.__tnPayload_payload) throw new Error(\"PasskeyEventBuilder: payload variant not selected\");\n const payloadLength = this.__tnPayload_payload.bytes.length;\n const requiredSize = 1 + payloadLength;\n const footprintSize = PasskeyEvent.footprintFromParams(params);\n const size = Math.max(requiredSize, footprintSize);\n if (target.length - offset < size) throw new Error(\"PasskeyEventBuilder: target buffer too small\");\n const slice = target.subarray(offset, offset + size);\n this.__tnWriteInto(slice);\n this.__tnValidateOrThrow(slice, params);\n return target;\n }\n\n finish(): PasskeyEvent {\n const buffer = this.build();\n const params = this.__tnLastParams ?? this.__tnComputeParams();\n const view = PasskeyEvent.from_array(buffer, { params });\n if (!view) throw new Error(\"PasskeyEventBuilder: failed to finalize view\");\n return view;\n }\n\n finishView(): PasskeyEvent {\n return this.finish();\n }\n\n dynamicParams(): PasskeyEvent.Params {\n return this.__tnComputeParams();\n }\n\n private __tnComputeParams(): PasskeyEvent.Params {\n if (this.__tnCachedParams) return this.__tnCachedParams;\n const params = PasskeyEvent.Params.fromValues({\n payload_event_type: (() => { return __tnToBigInt(this.__tnPrefixView.getUint8(0)); })(),\n });\n this.__tnCachedParams = params;\n return params;\n }\n\n private __tnWriteInto(target: Uint8Array): void {\n if (this.__tnField_event_type === null) throw new Error(\"PasskeyEventBuilder: field 'event_type' must be set before build\");\n if (!this.__tnPayload_payload) throw new Error(\"PasskeyEventBuilder: payload variant not selected\");\n const view = new DataView(target.buffer, target.byteOffset, target.byteLength);\n target.set(this.__tnPrefixBuffer, 0);\n view.setUint8(0, this.__tnField_event_type);\n target.set(this.__tnPayload_payload.bytes, 1);\n }\n\n private __tnValidateOrThrow(buffer: Uint8Array, params: PasskeyEvent.Params): void {\n const result = PasskeyEvent.validate(buffer, { params });\n if (!result.ok) {\n throw new Error(`${ PasskeyEvent }Builder: builder produced invalid buffer (code=${result.code ?? \"unknown\"})`);\n }\n this.__tnLastParams = result.params ?? params;\n this.__tnLastBuffer = buffer;\n }\n}\n\n__tnRegisterFootprint(\"PasskeyEvent\", (params) => PasskeyEvent.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"PasskeyEvent\", (buffer, params) => PasskeyEvent.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"PasskeyEvent\", (buffer) => { const result = PasskeyEvent.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n\n/* ----- TYPE DEFINITION FOR CreateArgs ----- */\n\nconst __tn_ir_CreateArgs = {\n typeName: \"CreateArgs\",\n root: { op: \"align\", alignment: 1, node: { op: \"add\", left: { op: \"add\", left: { op: \"add\", left: { op: \"align\", alignment: 2, node: { op: \"const\", value: 2n } }, right: { op: \"align\", alignment: 1, node: { op: \"const\", value: 73n } } }, right: { op: \"align\", alignment: 1, node: { op: \"const\", value: 32n } } }, right: { op: \"align\", alignment: 1, node: { op: \"call\", typeName: \"StateProof\", args: [{ name: \"proof_body.hdr.type_slot\", source: \"proof_body.hdr.type_slot\" }, { name: \"proof_body.payload_size\", source: \"proof_body.payload_size\" }] } } } }\n} as const;\n\nexport class CreateArgs {\n private view: DataView;\n private __tnParams: CreateArgs.Params;\n\n private constructor(private buffer: Uint8Array, params?: CreateArgs.Params) {\n this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n if (params) {\n this.__tnParams = params;\n } else {\n const derived = CreateArgs.__tnExtractParams(this.view, buffer);\n if (!derived) {\n throw new Error(\"CreateArgs: failed to derive dynamic parameters\");\n }\n this.__tnParams = derived.params;\n }\n }\n\n static __tnCreateView(buffer: Uint8Array, opts?: { params?: CreateArgs.Params, fieldContext?: Record<string, number | bigint> }): CreateArgs {\n if (!buffer || buffer.length === undefined) throw new Error(\"CreateArgs.__tnCreateView requires a Uint8Array\");\n let params = opts?.params ?? null;\n if (!params) {\n const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n const derived = CreateArgs.__tnExtractParams(view, buffer);\n if (!derived) throw new Error(\"CreateArgs.__tnCreateView: failed to derive params\");\n params = derived.params;\n }\n const instance = new CreateArgs(new Uint8Array(buffer), params);\n return instance;\n }\n\n dynamicParams(): CreateArgs.Params {\n return this.__tnParams;\n }\n\n static builder(): CreateArgsBuilder {\n return new CreateArgsBuilder();\n }\n\n static fromBuilder(builder: CreateArgsBuilder): CreateArgs | null {\n const buffer = builder.build();\n const params = builder.dynamicParams();\n return CreateArgs.from_array(buffer, { params });\n }\n\n static __tnComputeSequentialLayout(view: DataView, buffer: Uint8Array): { params: Record<string, bigint> | null; offsets: Record<string, number> | null; derived: Record<string, bigint> | null } | null {\n const __tnLength = buffer.length;\n let __tnParamSeq_proof_body_hdr_type_slot: bigint | null = null;\n let __tnParamSeq_proof_body_payload_size: bigint | null = null;\n let __tnFieldValue_wallet_account_idx: number | null = null;\n let __tnCursorMutable = 0;\n if (__tnCursorMutable + 2 > __tnLength) return null;\n const __tnRead_wallet_account_idx = view.getUint16(__tnCursorMutable, true);\n __tnFieldValue_wallet_account_idx = __tnRead_wallet_account_idx;\n __tnCursorMutable += 2;\n if (__tnCursorMutable + 65 > __tnLength) return null;\n __tnCursorMutable += 65;\n if (__tnCursorMutable + 32 > __tnLength) return null;\n __tnCursorMutable += 32;\n const __tnTyperefResult_state_proof = __tnInvokeDynamicValidate(\"StateProof\", buffer.subarray(__tnCursorMutable));\n if (!__tnTyperefResult_state_proof.ok || __tnTyperefResult_state_proof.consumed === undefined) return null;\n const __tnTyperefParams_state_proof = __tnTyperefResult_state_proof.params ?? null;\n if (!__tnTyperefParams_state_proof || __tnTyperefParams_state_proof[\"proof_body_hdr_type_slot\"] === undefined) return null;\n __tnParamSeq_proof_body_hdr_type_slot = __tnTyperefParams_state_proof[\"proof_body_hdr_type_slot\"];\n if (!__tnTyperefParams_state_proof || __tnTyperefParams_state_proof[\"proof_body_payload_size\"] === undefined) return null;\n __tnParamSeq_proof_body_payload_size = __tnTyperefParams_state_proof[\"proof_body_payload_size\"];\n __tnCursorMutable += __tnBigIntToNumber(__tnTyperefResult_state_proof.consumed, \"CreateArgs::state_proof\");\n const params: Record<string, bigint> = Object.create(null);\n if (__tnParamSeq_proof_body_hdr_type_slot === null) return null;\n params[\"proof_body_hdr_type_slot\"] = __tnParamSeq_proof_body_hdr_type_slot as bigint;\n if (__tnParamSeq_proof_body_payload_size === null) return null;\n params[\"proof_body_payload_size\"] = __tnParamSeq_proof_body_payload_size as bigint;\n return { params, offsets: null, derived: null };\n }\n\n private static __tnExtractParams(view: DataView, buffer: Uint8Array): { params: CreateArgs.Params; derived: Record<string, bigint> | null } | null {\n const __tnLayout = CreateArgs.__tnComputeSequentialLayout(view, buffer);\n if (!__tnLayout || !__tnLayout.params) return null;\n const __tnSeqParams = __tnLayout.params;\n const __tnParamSeq_proof_body_hdr_type_slot = __tnSeqParams[\"proof_body_hdr_type_slot\"];\n if (__tnParamSeq_proof_body_hdr_type_slot === undefined) return null;\n const __tnParamSeq_proof_body_payload_size = __tnSeqParams[\"proof_body_payload_size\"];\n if (__tnParamSeq_proof_body_payload_size === undefined) return null;\n const __tnExtractedParams = CreateArgs.Params.fromValues({\n proof_body_hdr_type_slot: __tnParamSeq_proof_body_hdr_type_slot as bigint,\n proof_body_payload_size: __tnParamSeq_proof_body_payload_size as bigint,\n });\n return { params: __tnExtractedParams, derived: null };\n }\n\n get_wallet_account_idx(): number {\n const offset = 0;\n return this.view.getUint16(offset, true); /* little-endian */\n }\n\n set_wallet_account_idx(value: number): void {\n const offset = 0;\n this.view.setUint16(offset, value, true); /* little-endian */\n }\n\n get wallet_account_idx(): number {\n return this.get_wallet_account_idx();\n }\n\n set wallet_account_idx(value: number) {\n this.set_wallet_account_idx(value);\n }\n\n get_authority_record(): AuthorityRecord {\n const offset = 2;\n const slice = this.buffer.subarray(offset, offset + 73);\n return AuthorityRecord.from_array(slice)!;\n }\n\n set_authority_record(value: AuthorityRecord): void {\n /* Copy bytes from source struct to this field */\n const sourceBytes = (value as any).buffer as Uint8Array;\n const offset = 2;\n this.buffer.set(sourceBytes, offset);\n }\n\n get authority_record(): AuthorityRecord {\n return this.get_authority_record();\n }\n\n set authority_record(value: AuthorityRecord) {\n this.set_authority_record(value);\n }\n\n get_seed(): Seed32 {\n const offset = 75;\n const slice = this.buffer.subarray(offset, offset + 32);\n return Seed32.from_array(slice)!;\n }\n\n set_seed(value: Seed32): void {\n /* Copy bytes from source struct to this field */\n const sourceBytes = (value as any).buffer as Uint8Array;\n const offset = 75;\n this.buffer.set(sourceBytes, offset);\n }\n\n get seed(): Seed32 {\n return this.get_seed();\n }\n\n set seed(value: Seed32) {\n this.set_seed(value);\n }\n\n get_state_proof(): StateProof {\n const offset = 107;\n const tail = this.buffer.subarray(offset);\n const validation = StateProof.validate(tail);\n if (!validation.ok || validation.consumed === undefined) {\n throw new Error(\"CreateArgs: failed to read field 'state_proof' (invalid nested payload)\");\n }\n const length = validation.consumed;\n const slice = tail.subarray(0, length);\n const opts = validation.params ? { params: validation.params } : undefined;\n return StateProof.from_array(slice, opts)!;\n }\n\n set_state_proof(value: StateProof): void {\n /* Copy bytes from source struct to this field */\n const sourceBytes = (value as any).buffer as Uint8Array;\n const offset = 107;\n this.buffer.set(sourceBytes, offset);\n }\n\n get state_proof(): StateProof {\n return this.get_state_proof();\n }\n\n set state_proof(value: StateProof) {\n this.set_state_proof(value);\n }\n private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n return __tnEvalFootprint(__tn_ir_CreateArgs.root, { params: __tnParams });\n }\n\n private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n return __tnValidateIrTree(__tn_ir_CreateArgs, buffer, __tnParams);\n }\n\n static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n return this.__tnFootprintInternal(__tnParams);\n }\n\n static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n return this.__tnValidateInternal(buffer, __tnParams);\n }\n\n static footprintIr(proof_body_hdr_type_slot: number | bigint, proof_body_payload_size: number | bigint): bigint {\n const params = CreateArgs.Params.fromValues({\n proof_body_hdr_type_slot: proof_body_hdr_type_slot,\n proof_body_payload_size: proof_body_payload_size,\n });\n return this.footprintIrFromParams(params);\n }\n\n private static __tnPackParams(params: CreateArgs.Params): Record<string, bigint> {\n const record: Record<string, bigint> = Object.create(null);\n record[\"proof_body.hdr.type_slot\"] = params.proof_body_hdr_type_slot;\n record[\"proof_body.payload_size\"] = params.proof_body_payload_size;\n return record;\n }\n\n static footprintIrFromParams(params: CreateArgs.Params): bigint {\n const __tnParams = this.__tnPackParams(params);\n return this.__tnFootprintInternal(__tnParams);\n }\n\n static footprintFromParams(params: CreateArgs.Params): number {\n const irResult = this.footprintIrFromParams(params);\n const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n if (__tnBigIntGreaterThan(irResult, maxSafe)) throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for CreateArgs');\n return __tnBigIntToNumber(irResult, 'CreateArgs::footprintFromParams');\n }\n\n static footprintFromValues(input: { proof_body_hdr_type_slot: number | bigint, proof_body_payload_size: number | bigint }): number {\n const params = CreateArgs.params(input);\n return this.footprintFromParams(params);\n }\n\n static footprint(params: CreateArgs.Params): number {\n return this.footprintFromParams(params);\n }\n\n static validate(buffer: Uint8Array, opts?: { params?: CreateArgs.Params }): { ok: boolean; code?: string; consumed?: number; params?: CreateArgs.Params } {\n if (!buffer || buffer.length === undefined) {\n return { ok: false, code: \"tn.invalid_buffer\" };\n }\n const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n let params = opts?.params ?? null;\n if (!params) {\n return { ok: false, code: \"tn.param_extraction_failed\" };\n }\n const __tnParamsRec = this.__tnPackParams(params);\n const irResult = this.__tnValidateInternal(buffer, __tnParamsRec);\n if (!irResult.ok) {\n return { ok: false, code: irResult.code, consumed: irResult.consumed ? __tnBigIntToNumber(irResult.consumed, 'CreateArgs::validate') : undefined, params };\n }\n const consumed = irResult.consumed ? __tnBigIntToNumber(irResult.consumed, 'CreateArgs::validate') : undefined;\n return { ok: true, consumed, params };\n }\n\n static from_array(buffer: Uint8Array, opts?: { params?: CreateArgs.Params }): CreateArgs | null {\n if (!buffer || buffer.length === undefined) {\n return null;\n }\n const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n let params = opts?.params ?? null;\n if (!params) {\n __tnLogWarn('CreateArgs::from_array requires params when IR extraction is unavailable');\n return null;\n }\n const validation = this.validate(buffer, { params });\n if (!validation.ok) {\n return null;\n }\n const cached = validation.params ?? params;\n const state = new CreateArgs(buffer, cached);\n return state;\n }\n\n\n}\n\nexport namespace CreateArgs {\n export type Params = {\n /** ABI path: proof_body.hdr.type_slot */\n readonly proof_body_hdr_type_slot: bigint;\n /** ABI path: proof_body.payload_size */\n readonly proof_body_payload_size: bigint;\n };\n\n export const ParamKeys = Object.freeze({\n proof_body_hdr_type_slot: \"proof_body.hdr.type_slot\",\n proof_body_payload_size: \"proof_body.payload_size\",\n } as const);\n\n export const Params = {\n fromValues(input: { proof_body_hdr_type_slot: number | bigint, proof_body_payload_size: number | bigint }): Params {\n return {\n proof_body_hdr_type_slot: __tnToBigInt(input.proof_body_hdr_type_slot),\n proof_body_payload_size: __tnToBigInt(input.proof_body_payload_size),\n };\n },\n fromBuilder(source: { dynamicParams(): Params } | { params: Params } | Params): Params {\n if ((source as { dynamicParams?: () => Params }).dynamicParams) {\n return (source as { dynamicParams(): Params }).dynamicParams();\n }\n if ((source as { params?: Params }).params) {\n return (source as { params: Params }).params;\n }\n return source as Params;\n }\n };\n\n export function params(input: { proof_body_hdr_type_slot: number | bigint, proof_body_payload_size: number | bigint }): Params {\n return Params.fromValues(input);\n }\n}\n\nexport class CreateArgsBuilder {\n private buffer: Uint8Array;\n private view: DataView;\n private __tnCachedParams: CreateArgs.Params | null = null;\n private __tnLastBuffer: Uint8Array | null = null;\n private __tnLastParams: CreateArgs.Params | null = null;\n private __tnTail_state_proof: Uint8Array | null = null;\n private __tnTailParams_state_proof: Record<string, bigint> | null = null;\n\n constructor() {\n this.buffer = new Uint8Array(107);\n this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n }\n\n private __tnInvalidate(): void {\n this.__tnCachedParams = null;\n this.__tnLastBuffer = null;\n this.__tnLastParams = null;\n }\n\n set_wallet_account_idx(value: number): this {\n this.view.setUint16(0, value, true);\n this.__tnInvalidate();\n return this;\n }\n\n set_authority_record(value: Uint8Array): this {\n if (value.length !== 73) throw new Error(\"authority_record expects 73 bytes\");\n this.buffer.set(value, 2);\n this.__tnInvalidate();\n return this;\n }\n\n set_seed(value: Uint8Array): this {\n if (value.length !== 32) throw new Error(\"seed expects 32 bytes\");\n this.buffer.set(value, 75);\n this.__tnInvalidate();\n return this;\n }\n\n set_state_proof(value: StateProof | __TnStructFieldInput): this {\n const bytes = __tnResolveStructFieldInput(value as __TnStructFieldInput, \"CreateArgsBuilder::state_proof\");\n const validation = __tnInvokeDynamicValidate(\"StateProof\", bytes);\n if (!validation.ok || validation.consumed === undefined) throw new Error(\"CreateArgsBuilder: field 'state_proof' failed validation\");\n if (__tnBigIntToNumber(validation.consumed, \"CreateArgsBuilder::state_proof\") !== bytes.length) throw new Error(\"CreateArgsBuilder: field 'state_proof' validation did not consume the full buffer\");\n this.__tnTail_state_proof = bytes;\n this.__tnTailParams_state_proof = validation.params ?? null;\n this.__tnInvalidate();\n return this;\n }\n\n build(): Uint8Array {\n const params = this.__tnComputeParams();\n const size = CreateArgs.footprintFromParams(params);\n const buffer = new Uint8Array(size);\n this.__tnWriteInto(buffer);\n this.__tnValidateOrThrow(buffer, params);\n return buffer;\n }\n\n buildInto(target: Uint8Array, offset = 0): Uint8Array {\n const params = this.__tnComputeParams();\n const size = CreateArgs.footprintFromParams(params);\n if (target.length - offset < size) throw new Error(\"CreateArgsBuilder: target buffer too small\");\n const slice = target.subarray(offset, offset + size);\n this.__tnWriteInto(slice);\n this.__tnValidateOrThrow(slice, params);\n return target;\n }\n\n finish(): CreateArgs {\n const buffer = this.build();\n const params = this.__tnLastParams ?? this.__tnComputeParams();\n const view = CreateArgs.from_array(buffer, { params });\n if (!view) throw new Error(\"CreateArgsBuilder: failed to finalize view\");\n return view;\n }\n\n finishView(): CreateArgs {\n return this.finish();\n }\n\n dynamicParams(): CreateArgs.Params {\n return this.__tnComputeParams();\n }\n\n private __tnComputeParams(): CreateArgs.Params {\n if (this.__tnCachedParams) return this.__tnCachedParams;\n const params = CreateArgs.Params.fromValues({\n proof_body_hdr_type_slot: (() => { const params = this.__tnTailParams_state_proof; if (!params || params[\"proof_body_hdr_type_slot\"] === undefined) throw new Error(\"CreateArgsBuilder: field 'state_proof' must be written before computing params\"); return params[\"proof_body_hdr_type_slot\"]; })(),\n proof_body_payload_size: (() => { const params = this.__tnTailParams_state_proof; if (!params || params[\"proof_body_payload_size\"] === undefined) throw new Error(\"CreateArgsBuilder: field 'state_proof' must be written before computing params\"); return params[\"proof_body_payload_size\"]; })(),\n });\n this.__tnCachedParams = params;\n return params;\n }\n\n private __tnWriteInto(target: Uint8Array): void {\n target.set(this.buffer, 0);\n let cursor = this.buffer.length;\n const __tnLocal_state_proof_bytes = this.__tnTail_state_proof;\n if (!__tnLocal_state_proof_bytes) throw new Error(\"CreateArgsBuilder: field 'state_proof' must be written before build\");\n target.set(__tnLocal_state_proof_bytes, cursor);\n cursor += __tnLocal_state_proof_bytes.length;\n }\n\n private __tnValidateOrThrow(buffer: Uint8Array, params: CreateArgs.Params): void {\n const result = CreateArgs.validate(buffer, { params });\n if (!result.ok) {\n throw new Error(`${ CreateArgs }Builder: builder produced invalid buffer (code=${result.code ?? \"unknown\"})`);\n }\n this.__tnLastParams = result.params ?? params;\n this.__tnLastBuffer = buffer;\n }\n}\n\n__tnRegisterFootprint(\"CreateArgs\", (params) => CreateArgs.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"CreateArgs\", (buffer, params) => CreateArgs.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"CreateArgs\", (buffer) => { const result = CreateArgs.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n\n/* ----- TYPE DEFINITION FOR RegisterCredentialArgs ----- */\n\nconst __tn_ir_RegisterCredentialArgs = {\n typeName: \"RegisterCredentialArgs\",\n root: { op: \"align\", alignment: 1, node: { op: \"add\", left: { op: \"add\", left: { op: \"add\", left: { op: \"align\", alignment: 2, node: { op: \"const\", value: 2n } }, right: { op: \"align\", alignment: 2, node: { op: \"const\", value: 2n } } }, right: { op: \"align\", alignment: 1, node: { op: \"const\", value: 32n } } }, right: { op: \"align\", alignment: 1, node: { op: \"call\", typeName: \"StateProof\", args: [{ name: \"proof_body.hdr.type_slot\", source: \"proof_body.hdr.type_slot\" }, { name: \"proof_body.payload_size\", source: \"proof_body.payload_size\" }] } } } }\n} as const;\n\nexport class RegisterCredentialArgs {\n private view: DataView;\n private __tnParams: RegisterCredentialArgs.Params;\n\n private constructor(private buffer: Uint8Array, params?: RegisterCredentialArgs.Params) {\n this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n if (params) {\n this.__tnParams = params;\n } else {\n const derived = RegisterCredentialArgs.__tnExtractParams(this.view, buffer);\n if (!derived) {\n throw new Error(\"RegisterCredentialArgs: failed to derive dynamic parameters\");\n }\n this.__tnParams = derived.params;\n }\n }\n\n static __tnCreateView(buffer: Uint8Array, opts?: { params?: RegisterCredentialArgs.Params, fieldContext?: Record<string, number | bigint> }): RegisterCredentialArgs {\n if (!buffer || buffer.length === undefined) throw new Error(\"RegisterCredentialArgs.__tnCreateView requires a Uint8Array\");\n let params = opts?.params ?? null;\n if (!params) {\n const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n const derived = RegisterCredentialArgs.__tnExtractParams(view, buffer);\n if (!derived) throw new Error(\"RegisterCredentialArgs.__tnCreateView: failed to derive params\");\n params = derived.params;\n }\n const instance = new RegisterCredentialArgs(new Uint8Array(buffer), params);\n return instance;\n }\n\n dynamicParams(): RegisterCredentialArgs.Params {\n return this.__tnParams;\n }\n\n static builder(): RegisterCredentialArgsBuilder {\n return new RegisterCredentialArgsBuilder();\n }\n\n static fromBuilder(builder: RegisterCredentialArgsBuilder): RegisterCredentialArgs | null {\n const buffer = builder.build();\n const params = builder.dynamicParams();\n return RegisterCredentialArgs.from_array(buffer, { params });\n }\n\n static __tnComputeSequentialLayout(view: DataView, buffer: Uint8Array): { params: Record<string, bigint> | null; offsets: Record<string, number> | null; derived: Record<string, bigint> | null } | null {\n const __tnLength = buffer.length;\n let __tnParamSeq_proof_body_hdr_type_slot: bigint | null = null;\n let __tnParamSeq_proof_body_payload_size: bigint | null = null;\n let __tnFieldValue_wallet_account_idx: number | null = null;\n let __tnFieldValue_lookup_account_idx: number | null = null;\n let __tnCursorMutable = 0;\n if (__tnCursorMutable + 2 > __tnLength) return null;\n const __tnRead_wallet_account_idx = view.getUint16(__tnCursorMutable, true);\n __tnFieldValue_wallet_account_idx = __tnRead_wallet_account_idx;\n __tnCursorMutable += 2;\n if (__tnCursorMutable + 2 > __tnLength) return null;\n const __tnRead_lookup_account_idx = view.getUint16(__tnCursorMutable, true);\n __tnFieldValue_lookup_account_idx = __tnRead_lookup_account_idx;\n __tnCursorMutable += 2;\n if (__tnCursorMutable + 32 > __tnLength) return null;\n __tnCursorMutable += 32;\n const __tnTyperefResult_state_proof = __tnInvokeDynamicValidate(\"StateProof\", buffer.subarray(__tnCursorMutable));\n if (!__tnTyperefResult_state_proof.ok || __tnTyperefResult_state_proof.consumed === undefined) return null;\n const __tnTyperefParams_state_proof = __tnTyperefResult_state_proof.params ?? null;\n if (!__tnTyperefParams_state_proof || __tnTyperefParams_state_proof[\"proof_body_hdr_type_slot\"] === undefined) return null;\n __tnParamSeq_proof_body_hdr_type_slot = __tnTyperefParams_state_proof[\"proof_body_hdr_type_slot\"];\n if (!__tnTyperefParams_state_proof || __tnTyperefParams_state_proof[\"proof_body_payload_size\"] === undefined) return null;\n __tnParamSeq_proof_body_payload_size = __tnTyperefParams_state_proof[\"proof_body_payload_size\"];\n __tnCursorMutable += __tnBigIntToNumber(__tnTyperefResult_state_proof.consumed, \"RegisterCredentialArgs::state_proof\");\n const params: Record<string, bigint> = Object.create(null);\n if (__tnParamSeq_proof_body_hdr_type_slot === null) return null;\n params[\"proof_body_hdr_type_slot\"] = __tnParamSeq_proof_body_hdr_type_slot as bigint;\n if (__tnParamSeq_proof_body_payload_size === null) return null;\n params[\"proof_body_payload_size\"] = __tnParamSeq_proof_body_payload_size as bigint;\n return { params, offsets: null, derived: null };\n }\n\n private static __tnExtractParams(view: DataView, buffer: Uint8Array): { params: RegisterCredentialArgs.Params; derived: Record<string, bigint> | null } | null {\n const __tnLayout = RegisterCredentialArgs.__tnComputeSequentialLayout(view, buffer);\n if (!__tnLayout || !__tnLayout.params) return null;\n const __tnSeqParams = __tnLayout.params;\n const __tnParamSeq_proof_body_hdr_type_slot = __tnSeqParams[\"proof_body_hdr_type_slot\"];\n if (__tnParamSeq_proof_body_hdr_type_slot === undefined) return null;\n const __tnParamSeq_proof_body_payload_size = __tnSeqParams[\"proof_body_payload_size\"];\n if (__tnParamSeq_proof_body_payload_size === undefined) return null;\n const __tnExtractedParams = RegisterCredentialArgs.Params.fromValues({\n proof_body_hdr_type_slot: __tnParamSeq_proof_body_hdr_type_slot as bigint,\n proof_body_payload_size: __tnParamSeq_proof_body_payload_size as bigint,\n });\n return { params: __tnExtractedParams, derived: null };\n }\n\n get_wallet_account_idx(): number {\n const offset = 0;\n return this.view.getUint16(offset, true); /* little-endian */\n }\n\n set_wallet_account_idx(value: number): void {\n const offset = 0;\n this.view.setUint16(offset, value, true); /* little-endian */\n }\n\n get wallet_account_idx(): number {\n return this.get_wallet_account_idx();\n }\n\n set wallet_account_idx(value: number) {\n this.set_wallet_account_idx(value);\n }\n\n get_lookup_account_idx(): number {\n const offset = 2;\n return this.view.getUint16(offset, true); /* little-endian */\n }\n\n set_lookup_account_idx(value: number): void {\n const offset = 2;\n this.view.setUint16(offset, value, true); /* little-endian */\n }\n\n get lookup_account_idx(): number {\n return this.get_lookup_account_idx();\n }\n\n set lookup_account_idx(value: number) {\n this.set_lookup_account_idx(value);\n }\n\n get_seed(): Seed32 {\n const offset = 4;\n const slice = this.buffer.subarray(offset, offset + 32);\n return Seed32.from_array(slice)!;\n }\n\n set_seed(value: Seed32): void {\n /* Copy bytes from source struct to this field */\n const sourceBytes = (value as any).buffer as Uint8Array;\n const offset = 4;\n this.buffer.set(sourceBytes, offset);\n }\n\n get seed(): Seed32 {\n return this.get_seed();\n }\n\n set seed(value: Seed32) {\n this.set_seed(value);\n }\n\n get_state_proof(): StateProof {\n const offset = 36;\n const tail = this.buffer.subarray(offset);\n const validation = StateProof.validate(tail);\n if (!validation.ok || validation.consumed === undefined) {\n throw new Error(\"RegisterCredentialArgs: failed to read field 'state_proof' (invalid nested payload)\");\n }\n const length = validation.consumed;\n const slice = tail.subarray(0, length);\n const opts = validation.params ? { params: validation.params } : undefined;\n return StateProof.from_array(slice, opts)!;\n }\n\n set_state_proof(value: StateProof): void {\n /* Copy bytes from source struct to this field */\n const sourceBytes = (value as any).buffer as Uint8Array;\n const offset = 36;\n this.buffer.set(sourceBytes, offset);\n }\n\n get state_proof(): StateProof {\n return this.get_state_proof();\n }\n\n set state_proof(value: StateProof) {\n this.set_state_proof(value);\n }\n private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n return __tnEvalFootprint(__tn_ir_RegisterCredentialArgs.root, { params: __tnParams });\n }\n\n private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n return __tnValidateIrTree(__tn_ir_RegisterCredentialArgs, buffer, __tnParams);\n }\n\n static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n return this.__tnFootprintInternal(__tnParams);\n }\n\n static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n return this.__tnValidateInternal(buffer, __tnParams);\n }\n\n static footprintIr(proof_body_hdr_type_slot: number | bigint, proof_body_payload_size: number | bigint): bigint {\n const params = RegisterCredentialArgs.Params.fromValues({\n proof_body_hdr_type_slot: proof_body_hdr_type_slot,\n proof_body_payload_size: proof_body_payload_size,\n });\n return this.footprintIrFromParams(params);\n }\n\n private static __tnPackParams(params: RegisterCredentialArgs.Params): Record<string, bigint> {\n const record: Record<string, bigint> = Object.create(null);\n record[\"proof_body.hdr.type_slot\"] = params.proof_body_hdr_type_slot;\n record[\"proof_body.payload_size\"] = params.proof_body_payload_size;\n return record;\n }\n\n static footprintIrFromParams(params: RegisterCredentialArgs.Params): bigint {\n const __tnParams = this.__tnPackParams(params);\n return this.__tnFootprintInternal(__tnParams);\n }\n\n static footprintFromParams(params: RegisterCredentialArgs.Params): number {\n const irResult = this.footprintIrFromParams(params);\n const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n if (__tnBigIntGreaterThan(irResult, maxSafe)) throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for RegisterCredentialArgs');\n return __tnBigIntToNumber(irResult, 'RegisterCredentialArgs::footprintFromParams');\n }\n\n static footprintFromValues(input: { proof_body_hdr_type_slot: number | bigint, proof_body_payload_size: number | bigint }): number {\n const params = RegisterCredentialArgs.params(input);\n return this.footprintFromParams(params);\n }\n\n static footprint(params: RegisterCredentialArgs.Params): number {\n return this.footprintFromParams(params);\n }\n\n static validate(buffer: Uint8Array, opts?: { params?: RegisterCredentialArgs.Params }): { ok: boolean; code?: string; consumed?: number; params?: RegisterCredentialArgs.Params } {\n if (!buffer || buffer.length === undefined) {\n return { ok: false, code: \"tn.invalid_buffer\" };\n }\n const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n let params = opts?.params ?? null;\n if (!params) {\n return { ok: false, code: \"tn.param_extraction_failed\" };\n }\n const __tnParamsRec = this.__tnPackParams(params);\n const irResult = this.__tnValidateInternal(buffer, __tnParamsRec);\n if (!irResult.ok) {\n return { ok: false, code: irResult.code, consumed: irResult.consumed ? __tnBigIntToNumber(irResult.consumed, 'RegisterCredentialArgs::validate') : undefined, params };\n }\n const consumed = irResult.consumed ? __tnBigIntToNumber(irResult.consumed, 'RegisterCredentialArgs::validate') : undefined;\n return { ok: true, consumed, params };\n }\n\n static from_array(buffer: Uint8Array, opts?: { params?: RegisterCredentialArgs.Params }): RegisterCredentialArgs | null {\n if (!buffer || buffer.length === undefined) {\n return null;\n }\n const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n let params = opts?.params ?? null;\n if (!params) {\n __tnLogWarn('RegisterCredentialArgs::from_array requires params when IR extraction is unavailable');\n return null;\n }\n const validation = this.validate(buffer, { params });\n if (!validation.ok) {\n return null;\n }\n const cached = validation.params ?? params;\n const state = new RegisterCredentialArgs(buffer, cached);\n return state;\n }\n\n\n}\n\nexport namespace RegisterCredentialArgs {\n export type Params = {\n /** ABI path: proof_body.hdr.type_slot */\n readonly proof_body_hdr_type_slot: bigint;\n /** ABI path: proof_body.payload_size */\n readonly proof_body_payload_size: bigint;\n };\n\n export const ParamKeys = Object.freeze({\n proof_body_hdr_type_slot: \"proof_body.hdr.type_slot\",\n proof_body_payload_size: \"proof_body.payload_size\",\n } as const);\n\n export const Params = {\n fromValues(input: { proof_body_hdr_type_slot: number | bigint, proof_body_payload_size: number | bigint }): Params {\n return {\n proof_body_hdr_type_slot: __tnToBigInt(input.proof_body_hdr_type_slot),\n proof_body_payload_size: __tnToBigInt(input.proof_body_payload_size),\n };\n },\n fromBuilder(source: { dynamicParams(): Params } | { params: Params } | Params): Params {\n if ((source as { dynamicParams?: () => Params }).dynamicParams) {\n return (source as { dynamicParams(): Params }).dynamicParams();\n }\n if ((source as { params?: Params }).params) {\n return (source as { params: Params }).params;\n }\n return source as Params;\n }\n };\n\n export function params(input: { proof_body_hdr_type_slot: number | bigint, proof_body_payload_size: number | bigint }): Params {\n return Params.fromValues(input);\n }\n}\n\nexport class RegisterCredentialArgsBuilder {\n private buffer: Uint8Array;\n private view: DataView;\n private __tnCachedParams: RegisterCredentialArgs.Params | null = null;\n private __tnLastBuffer: Uint8Array | null = null;\n private __tnLastParams: RegisterCredentialArgs.Params | null = null;\n private __tnTail_state_proof: Uint8Array | null = null;\n private __tnTailParams_state_proof: Record<string, bigint> | null = null;\n\n constructor() {\n this.buffer = new Uint8Array(36);\n this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n }\n\n private __tnInvalidate(): void {\n this.__tnCachedParams = null;\n this.__tnLastBuffer = null;\n this.__tnLastParams = null;\n }\n\n set_wallet_account_idx(value: number): this {\n this.view.setUint16(0, value, true);\n this.__tnInvalidate();\n return this;\n }\n\n set_lookup_account_idx(value: number): this {\n this.view.setUint16(2, value, true);\n this.__tnInvalidate();\n return this;\n }\n\n set_seed(value: Uint8Array): this {\n if (value.length !== 32) throw new Error(\"seed expects 32 bytes\");\n this.buffer.set(value, 4);\n this.__tnInvalidate();\n return this;\n }\n\n set_state_proof(value: StateProof | __TnStructFieldInput): this {\n const bytes = __tnResolveStructFieldInput(value as __TnStructFieldInput, \"RegisterCredentialArgsBuilder::state_proof\");\n const validation = __tnInvokeDynamicValidate(\"StateProof\", bytes);\n if (!validation.ok || validation.consumed === undefined) throw new Error(\"RegisterCredentialArgsBuilder: field 'state_proof' failed validation\");\n if (__tnBigIntToNumber(validation.consumed, \"RegisterCredentialArgsBuilder::state_proof\") !== bytes.length) throw new Error(\"RegisterCredentialArgsBuilder: field 'state_proof' validation did not consume the full buffer\");\n this.__tnTail_state_proof = bytes;\n this.__tnTailParams_state_proof = validation.params ?? null;\n this.__tnInvalidate();\n return this;\n }\n\n build(): Uint8Array {\n const params = this.__tnComputeParams();\n const size = RegisterCredentialArgs.footprintFromParams(params);\n const buffer = new Uint8Array(size);\n this.__tnWriteInto(buffer);\n this.__tnValidateOrThrow(buffer, params);\n return buffer;\n }\n\n buildInto(target: Uint8Array, offset = 0): Uint8Array {\n const params = this.__tnComputeParams();\n const size = RegisterCredentialArgs.footprintFromParams(params);\n if (target.length - offset < size) throw new Error(\"RegisterCredentialArgsBuilder: target buffer too small\");\n const slice = target.subarray(offset, offset + size);\n this.__tnWriteInto(slice);\n this.__tnValidateOrThrow(slice, params);\n return target;\n }\n\n finish(): RegisterCredentialArgs {\n const buffer = this.build();\n const params = this.__tnLastParams ?? this.__tnComputeParams();\n const view = RegisterCredentialArgs.from_array(buffer, { params });\n if (!view) throw new Error(\"RegisterCredentialArgsBuilder: failed to finalize view\");\n return view;\n }\n\n finishView(): RegisterCredentialArgs {\n return this.finish();\n }\n\n dynamicParams(): RegisterCredentialArgs.Params {\n return this.__tnComputeParams();\n }\n\n private __tnComputeParams(): RegisterCredentialArgs.Params {\n if (this.__tnCachedParams) return this.__tnCachedParams;\n const params = RegisterCredentialArgs.Params.fromValues({\n proof_body_hdr_type_slot: (() => { const params = this.__tnTailParams_state_proof; if (!params || params[\"proof_body_hdr_type_slot\"] === undefined) throw new Error(\"RegisterCredentialArgsBuilder: field 'state_proof' must be written before computing params\"); return params[\"proof_body_hdr_type_slot\"]; })(),\n proof_body_payload_size: (() => { const params = this.__tnTailParams_state_proof; if (!params || params[\"proof_body_payload_size\"] === undefined) throw new Error(\"RegisterCredentialArgsBuilder: field 'state_proof' must be written before computing params\"); return params[\"proof_body_payload_size\"]; })(),\n });\n this.__tnCachedParams = params;\n return params;\n }\n\n private __tnWriteInto(target: Uint8Array): void {\n target.set(this.buffer, 0);\n let cursor = this.buffer.length;\n const __tnLocal_state_proof_bytes = this.__tnTail_state_proof;\n if (!__tnLocal_state_proof_bytes) throw new Error(\"RegisterCredentialArgsBuilder: field 'state_proof' must be written before build\");\n target.set(__tnLocal_state_proof_bytes, cursor);\n cursor += __tnLocal_state_proof_bytes.length;\n }\n\n private __tnValidateOrThrow(buffer: Uint8Array, params: RegisterCredentialArgs.Params): void {\n const result = RegisterCredentialArgs.validate(buffer, { params });\n if (!result.ok) {\n throw new Error(`${ RegisterCredentialArgs }Builder: builder produced invalid buffer (code=${result.code ?? \"unknown\"})`);\n }\n this.__tnLastParams = result.params ?? params;\n this.__tnLastBuffer = buffer;\n }\n}\n\n__tnRegisterFootprint(\"RegisterCredentialArgs\", (params) => RegisterCredentialArgs.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"RegisterCredentialArgs\", (buffer, params) => RegisterCredentialArgs.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"RegisterCredentialArgs\", (buffer) => { const result = RegisterCredentialArgs.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n\n/* ----- TYPE DEFINITION FOR PasskeyInstruction ----- */\n\nconst __tn_ir_PasskeyInstruction = {\n typeName: \"PasskeyInstruction\",\n root: { op: \"align\", alignment: 1, node: { op: \"add\", left: { op: \"align\", alignment: 1, node: { op: \"const\", value: 1n } }, right: { op: \"align\", alignment: 1, node: { op: \"field\", param: \"payload.payload_size\" } } } }\n} as const;\n\nexport class PasskeyInstruction_payload_Inner {\n private view: DataView;\n private __tnFieldContext: Record<string, number | bigint> | null = null;\n private constructor(private buffer: Uint8Array, private descriptor: __TnVariantDescriptor | null, fieldContext?: Record<string, number | bigint>) {\n this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n this.__tnFieldContext = fieldContext ?? null;\n }\n\n static __tnCreate(payload: Uint8Array, descriptor: __TnVariantDescriptor | null, fieldContext?: Record<string, number | bigint>): PasskeyInstruction_payload_Inner {\n return new PasskeyInstruction_payload_Inner(new Uint8Array(payload), descriptor, fieldContext);\n }\n\n bytes(): Uint8Array {\n return new Uint8Array(this.buffer);\n }\n\n variant(): __TnVariantDescriptor | null {\n return this.descriptor;\n }\n\n asCreate(): CreateArgs | null {\n if (!this.descriptor || this.descriptor.tag !== 0) return null;\n return CreateArgs.__tnCreateView(new Uint8Array(this.buffer), { fieldContext: this.__tnFieldContext ?? undefined });\n }\n\n asValidate(): ValidateArgs | null {\n if (!this.descriptor || this.descriptor.tag !== 1) return null;\n return ValidateArgs.__tnCreateView(new Uint8Array(this.buffer), { fieldContext: this.__tnFieldContext ?? undefined });\n }\n\n asTransfer(): TransferArgs | null {\n if (!this.descriptor || this.descriptor.tag !== 2) return null;\n return TransferArgs.__tnCreateView(new Uint8Array(this.buffer), { fieldContext: this.__tnFieldContext ?? undefined });\n }\n\n asAddAuthority(): AddAuthorityArgs | null {\n if (!this.descriptor || this.descriptor.tag !== 4) return null;\n return AddAuthorityArgs.__tnCreateView(new Uint8Array(this.buffer), { fieldContext: this.__tnFieldContext ?? undefined });\n }\n\n asRemoveAuthority(): RemoveAuthorityArgs | null {\n if (!this.descriptor || this.descriptor.tag !== 5) return null;\n return RemoveAuthorityArgs.__tnCreateView(new Uint8Array(this.buffer), { fieldContext: this.__tnFieldContext ?? undefined });\n }\n\n asRegisterCredential(): RegisterCredentialArgs | null {\n if (!this.descriptor || this.descriptor.tag !== 6) return null;\n return RegisterCredentialArgs.__tnCreateView(new Uint8Array(this.buffer), { fieldContext: this.__tnFieldContext ?? undefined });\n }\n\n}\n\nexport class PasskeyInstruction {\n private view: DataView;\n private static readonly __tnFieldOffset_payload = 1;\n private __tnParams: PasskeyInstruction.Params;\n\n private constructor(private buffer: Uint8Array, params?: PasskeyInstruction.Params) {\n this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n if (params) {\n this.__tnParams = params;\n } else {\n const derived = PasskeyInstruction.__tnExtractParams(this.view, buffer);\n if (!derived) {\n throw new Error(\"PasskeyInstruction: failed to derive dynamic parameters\");\n }\n this.__tnParams = derived.params;\n }\n }\n\n static __tnCreateView(buffer: Uint8Array, opts?: { params?: PasskeyInstruction.Params, fieldContext?: Record<string, number | bigint> }): PasskeyInstruction {\n if (!buffer || buffer.length === undefined) throw new Error(\"PasskeyInstruction.__tnCreateView requires a Uint8Array\");\n let params = opts?.params ?? null;\n if (!params) {\n const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n const derived = PasskeyInstruction.__tnExtractParams(view, buffer);\n if (!derived) throw new Error(\"PasskeyInstruction.__tnCreateView: failed to derive params\");\n params = derived.params;\n }\n const instance = new PasskeyInstruction(new Uint8Array(buffer), params);\n return instance;\n }\n\n dynamicParams(): PasskeyInstruction.Params {\n return this.__tnParams;\n }\n\n static builder(): PasskeyInstructionBuilder {\n return new PasskeyInstructionBuilder();\n }\n\n static fromBuilder(builder: PasskeyInstructionBuilder): PasskeyInstruction | null {\n const buffer = builder.build();\n const params = builder.dynamicParams();\n return PasskeyInstruction.from_array(buffer, { params });\n }\n\n static readonly payloadVariantDescriptors = Object.freeze([\n {\n name: \"create\",\n tag: 0,\n payloadSize: null,\n payloadType: \"PasskeyInstruction::payload::create\",\n createPayloadBuilder: () => __tnMaybeCallBuilder(CreateArgs),\n },\n {\n name: \"validate\",\n tag: 1,\n payloadSize: null,\n payloadType: \"PasskeyInstruction::payload::validate\",\n createPayloadBuilder: () => __tnMaybeCallBuilder(ValidateArgs),\n },\n {\n name: \"transfer\",\n tag: 2,\n payloadSize: 12,\n payloadType: \"PasskeyInstruction::payload::transfer\",\n createPayloadBuilder: () => __tnMaybeCallBuilder(TransferArgs),\n },\n {\n name: \"add_authority\",\n tag: 4,\n payloadSize: 75,\n payloadType: \"PasskeyInstruction::payload::add_authority\",\n createPayloadBuilder: () => __tnMaybeCallBuilder(AddAuthorityArgs),\n },\n {\n name: \"remove_authority\",\n tag: 5,\n payloadSize: 3,\n payloadType: \"PasskeyInstruction::payload::remove_authority\",\n createPayloadBuilder: () => __tnMaybeCallBuilder(RemoveAuthorityArgs),\n },\n {\n name: \"register_credential\",\n tag: 6,\n payloadSize: null,\n payloadType: \"PasskeyInstruction::payload::register_credential\",\n createPayloadBuilder: () => __tnMaybeCallBuilder(RegisterCredentialArgs),\n },\n ] as const);\n\n static __tnComputeSequentialLayout(view: DataView, buffer: Uint8Array): { params: Record<string, bigint> | null; offsets: Record<string, number> | null; derived: Record<string, bigint> | null } | null {\n const __tnLength = buffer.length;\n let __tnParamSeq_payload_payload_size: bigint | null = null;\n let __tnFieldValue_tag: number | null = null;\n let __tnCursorMutable = 0;\n if (__tnCursorMutable + 1 > __tnLength) return null;\n const __tnRead_tag = view.getUint8(__tnCursorMutable);\n __tnFieldValue_tag = __tnRead_tag;\n __tnCursorMutable += 1;\n const __tnEnumTagValue_payload = __tnFieldValue_tag;\n if (__tnEnumTagValue_payload === null) return null;\n let __tnEnumSize_payload = 0;\n switch (Number(__tnEnumTagValue_payload)) {\n case 0: break;\n case 1: break;\n case 2: break;\n case 4: break;\n case 5: break;\n case 6: break;\n default: return null;\n }\n if (__tnCursorMutable > __tnLength) return null;\n __tnEnumSize_payload = __tnLength - __tnCursorMutable;\n __tnCursorMutable = __tnLength;\n __tnParamSeq_payload_payload_size = __tnToBigInt(__tnEnumSize_payload);\n const params: Record<string, bigint> = Object.create(null);\n if (__tnParamSeq_payload_payload_size === null) return null;\n params[\"payload_payload_size\"] = __tnParamSeq_payload_payload_size as bigint;\n return { params, offsets: null, derived: null };\n }\n\n private static __tnExtractParams(view: DataView, buffer: Uint8Array): { params: PasskeyInstruction.Params; derived: Record<string, bigint> | null } | null {\n if (buffer.length < 1) {\n return null;\n }\n const __tnParam_payload_tag = __tnToBigInt(view.getUint8(0));\n const __tnLayout = PasskeyInstruction.__tnComputeSequentialLayout(view, buffer);\n if (!__tnLayout || !__tnLayout.params) return null;\n const __tnSeqParams = __tnLayout.params;\n const __tnParamSeq_payload_payload_size = __tnSeqParams[\"payload_payload_size\"];\n if (__tnParamSeq_payload_payload_size === undefined) return null;\n const __tnExtractedParams = PasskeyInstruction.Params.fromValues({\n payload_payload_size: __tnParamSeq_payload_payload_size as bigint,\n payload_tag: __tnParam_payload_tag,\n });\n return { params: __tnExtractedParams, derived: null };\n }\n\n get_tag(): number {\n const offset = 0;\n return this.view.getUint8(offset);\n }\n\n set_tag(value: number): void {\n const offset = 0;\n this.view.setUint8(offset, value);\n }\n\n get tag(): number {\n return this.get_tag();\n }\n\n set tag(value: number) {\n this.set_tag(value);\n }\n\n payloadVariant(): typeof PasskeyInstruction.payloadVariantDescriptors[number] | null {\n const tag = this.view.getUint8(0);\n return PasskeyInstruction.payloadVariantDescriptors.find((variant) => variant.tag === tag) ?? null;\n }\n\n payload(): PasskeyInstruction_payload_Inner {\n const descriptor = this.payloadVariant();\n if (!descriptor) throw new Error(\"PasskeyInstruction: unknown payload variant\");\n const offset = PasskeyInstruction.__tnFieldOffset_payload;\n const remaining = this.buffer.length - offset;\n const payloadLength = descriptor.payloadSize ?? remaining;\n if (payloadLength < 0 || offset + payloadLength > this.buffer.length) throw new Error(\"PasskeyInstruction: payload exceeds buffer bounds\");\n const slice = this.buffer.subarray(offset, offset + payloadLength);\n return PasskeyInstruction_payload_Inner.__tnCreate(slice, descriptor, undefined);\n }\n private static __tnFootprintInternal(__tnParams: Record<string, bigint>): bigint {\n return __tnEvalFootprint(__tn_ir_PasskeyInstruction.root, { params: __tnParams });\n }\n\n private static __tnValidateInternal(buffer: Uint8Array, __tnParams: Record<string, bigint>): { ok: boolean; code?: string; consumed?: bigint } {\n return __tnValidateIrTree(__tn_ir_PasskeyInstruction, buffer, __tnParams);\n }\n\n static __tnInvokeFootprint(__tnParams: Record<string, bigint>): bigint {\n return this.__tnFootprintInternal(__tnParams);\n }\n\n static __tnInvokeValidate(buffer: Uint8Array, __tnParams: Record<string, bigint>): __TnValidateResult {\n return this.__tnValidateInternal(buffer, __tnParams);\n }\n\n static footprintIr(payload_payload_size: number | bigint, payload_tag: number | bigint): bigint {\n const params = PasskeyInstruction.Params.fromValues({\n payload_payload_size: payload_payload_size,\n payload_tag: payload_tag,\n });\n return this.footprintIrFromParams(params);\n }\n\n private static __tnPackParams(params: PasskeyInstruction.Params): Record<string, bigint> {\n const record: Record<string, bigint> = Object.create(null);\n record[\"payload.payload_size\"] = params.payload_payload_size;\n record[\"payload.tag\"] = params.payload_tag;\n return record;\n }\n\n static footprintIrFromParams(params: PasskeyInstruction.Params): bigint {\n const __tnParams = this.__tnPackParams(params);\n return this.__tnFootprintInternal(__tnParams);\n }\n\n static footprintFromParams(params: PasskeyInstruction.Params): number {\n const irResult = this.footprintIrFromParams(params);\n const maxSafe = __tnToBigInt(Number.MAX_SAFE_INTEGER);\n if (__tnBigIntGreaterThan(irResult, maxSafe)) throw new Error('footprint exceeds Number.MAX_SAFE_INTEGER for PasskeyInstruction');\n return __tnBigIntToNumber(irResult, 'PasskeyInstruction::footprintFromParams');\n }\n\n static footprintFromValues(input: { payload_payload_size: number | bigint, payload_tag: number | bigint }): number {\n const params = PasskeyInstruction.params(input);\n return this.footprintFromParams(params);\n }\n\n static footprint(params: PasskeyInstruction.Params): number {\n return this.footprintFromParams(params);\n }\n\n static validate(buffer: Uint8Array, opts?: { params?: PasskeyInstruction.Params }): { ok: boolean; code?: string; consumed?: number; params?: PasskeyInstruction.Params } {\n if (!buffer || buffer.length === undefined) {\n return { ok: false, code: \"tn.invalid_buffer\" };\n }\n const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n let params = opts?.params ?? null;\n if (!params) {\n const extracted = this.__tnExtractParams(view, buffer);\n if (!extracted) return { ok: false, code: \"tn.param_extraction_failed\" };\n params = extracted.params;\n }\n const __tnParamsRec = this.__tnPackParams(params);\n const irResult = this.__tnValidateInternal(buffer, __tnParamsRec);\n if (!irResult.ok) {\n return { ok: false, code: irResult.code, consumed: irResult.consumed ? __tnBigIntToNumber(irResult.consumed, 'PasskeyInstruction::validate') : undefined, params };\n }\n const consumed = irResult.consumed ? __tnBigIntToNumber(irResult.consumed, 'PasskeyInstruction::validate') : undefined;\n return { ok: true, consumed, params };\n }\n\n static from_array(buffer: Uint8Array, opts?: { params?: PasskeyInstruction.Params }): PasskeyInstruction | null {\n if (!buffer || buffer.length === undefined) {\n return null;\n }\n const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n let params = opts?.params ?? null;\n if (!params) {\n const derived = this.__tnExtractParams(view, buffer);\n if (!derived) return null;\n params = derived.params;\n }\n const validation = this.validate(buffer, { params });\n if (!validation.ok) {\n return null;\n }\n const cached = validation.params ?? params;\n const state = new PasskeyInstruction(buffer, cached);\n return state;\n }\n\n\n}\n\nexport namespace PasskeyInstruction {\n export type Params = {\n /** ABI path: payload.payload_size */\n readonly payload_payload_size: bigint;\n /** ABI path: payload.tag */\n readonly payload_tag: bigint;\n };\n\n export const ParamKeys = Object.freeze({\n payload_payload_size: \"payload.payload_size\",\n payload_tag: \"payload.tag\",\n } as const);\n\n export const Params = {\n fromValues(input: { payload_payload_size: number | bigint, payload_tag: number | bigint }): Params {\n return {\n payload_payload_size: __tnToBigInt(input.payload_payload_size),\n payload_tag: __tnToBigInt(input.payload_tag),\n };\n },\n fromBuilder(source: { dynamicParams(): Params } | { params: Params } | Params): Params {\n if ((source as { dynamicParams?: () => Params }).dynamicParams) {\n return (source as { dynamicParams(): Params }).dynamicParams();\n }\n if ((source as { params?: Params }).params) {\n return (source as { params: Params }).params;\n }\n return source as Params;\n }\n };\n\n export function params(input: { payload_payload_size: number | bigint, payload_tag: number | bigint }): Params {\n return Params.fromValues(input);\n }\n}\n\nexport class PasskeyInstructionBuilder {\n private __tnPrefixBuffer: Uint8Array;\n private __tnPrefixView: DataView;\n private __tnField_tag: number | null = null;\n private __tnPayload_payload: { descriptor: typeof PasskeyInstruction.payloadVariantDescriptors[number]; bytes: Uint8Array } | null = null;\n private __tnCachedParams: PasskeyInstruction.Params | null = null;\n private __tnLastBuffer: Uint8Array | null = null;\n private __tnLastParams: PasskeyInstruction.Params | null = null;\n private __tnVariantSelector_payload?: __TnVariantSelectorResult<PasskeyInstructionBuilder>;\n\n constructor() {\n this.__tnPrefixBuffer = new Uint8Array(1);\n this.__tnPrefixView = new DataView(this.__tnPrefixBuffer.buffer, this.__tnPrefixBuffer.byteOffset, this.__tnPrefixBuffer.byteLength);\n }\n\n private __tnInvalidate(): void {\n this.__tnCachedParams = null;\n this.__tnLastBuffer = null;\n this.__tnLastParams = null;\n }\n\n private __tnAssign_tag(value: number): void {\n this.__tnField_tag = value & 0xff;\n this.__tnInvalidate();\n }\n\n set_tag(value: number): this {\n this.__tnAssign_tag(value);\n return this;\n }\n\n payload(): __TnVariantSelectorResult<PasskeyInstructionBuilder> {\n if (!this.__tnVariantSelector_payload) {\n this.__tnVariantSelector_payload = __tnCreateVariantSelector(this, PasskeyInstruction.payloadVariantDescriptors, (descriptor, payload) => {\n this.__tnPayload_payload = { descriptor, bytes: new Uint8Array(payload) };\n this.__tnAssign_tag(descriptor.tag);\n });\n }\n return this.__tnVariantSelector_payload!;\n }\n\n build(): Uint8Array {\n const params = this.__tnComputeParams();\n if (this.__tnField_tag === null) throw new Error(\"PasskeyInstructionBuilder: field 'tag' must be set before build\");\n if (!this.__tnPayload_payload) throw new Error(\"PasskeyInstructionBuilder: payload variant not selected\");\n const payloadLength = this.__tnPayload_payload.bytes.length;\n const requiredSize = 1 + payloadLength;\n const footprintSize = PasskeyInstruction.footprintFromParams(params);\n const size = Math.max(requiredSize, footprintSize);\n const buffer = new Uint8Array(size);\n this.__tnWriteInto(buffer);\n this.__tnValidateOrThrow(buffer, params);\n return buffer;\n }\n\n buildInto(target: Uint8Array, offset = 0): Uint8Array {\n const params = this.__tnComputeParams();\n if (this.__tnField_tag === null) throw new Error(\"PasskeyInstructionBuilder: field 'tag' must be set before build\");\n if (!this.__tnPayload_payload) throw new Error(\"PasskeyInstructionBuilder: payload variant not selected\");\n const payloadLength = this.__tnPayload_payload.bytes.length;\n const requiredSize = 1 + payloadLength;\n const footprintSize = PasskeyInstruction.footprintFromParams(params);\n const size = Math.max(requiredSize, footprintSize);\n if (target.length - offset < size) throw new Error(\"PasskeyInstructionBuilder: target buffer too small\");\n const slice = target.subarray(offset, offset + size);\n this.__tnWriteInto(slice);\n this.__tnValidateOrThrow(slice, params);\n return target;\n }\n\n finish(): PasskeyInstruction {\n const buffer = this.build();\n const params = this.__tnLastParams ?? this.__tnComputeParams();\n const view = PasskeyInstruction.from_array(buffer, { params });\n if (!view) throw new Error(\"PasskeyInstructionBuilder: failed to finalize view\");\n return view;\n }\n\n finishView(): PasskeyInstruction {\n return this.finish();\n }\n\n dynamicParams(): PasskeyInstruction.Params {\n return this.__tnComputeParams();\n }\n\n private __tnComputeParams(): PasskeyInstruction.Params {\n if (this.__tnCachedParams) return this.__tnCachedParams;\n const params = PasskeyInstruction.Params.fromValues({\n payload_payload_size: (() => { if (!this.__tnPayload_payload) throw new Error(\"PasskeyInstructionBuilder: payload 'payload' must be selected before build\"); return __tnToBigInt(this.__tnPayload_payload.bytes.length); })(),\n payload_tag: (() => { if (this.__tnField_tag === null) throw new Error(\"PasskeyInstructionBuilder: missing enum tag\"); return __tnToBigInt(this.__tnField_tag); })(),\n });\n this.__tnCachedParams = params;\n return params;\n }\n\n private __tnWriteInto(target: Uint8Array): void {\n if (this.__tnField_tag === null) throw new Error(\"PasskeyInstructionBuilder: field 'tag' must be set before build\");\n if (!this.__tnPayload_payload) throw new Error(\"PasskeyInstructionBuilder: payload variant not selected\");\n const view = new DataView(target.buffer, target.byteOffset, target.byteLength);\n target.set(this.__tnPrefixBuffer, 0);\n view.setUint8(0, this.__tnField_tag);\n target.set(this.__tnPayload_payload.bytes, 1);\n }\n\n private __tnValidateOrThrow(buffer: Uint8Array, params: PasskeyInstruction.Params): void {\n const result = PasskeyInstruction.validate(buffer, { params });\n if (!result.ok) {\n throw new Error(`${ PasskeyInstruction }Builder: builder produced invalid buffer (code=${result.code ?? \"unknown\"})`);\n }\n this.__tnLastParams = result.params ?? params;\n this.__tnLastBuffer = buffer;\n }\n}\n\n__tnRegisterFootprint(\"PasskeyInstruction\", (params) => PasskeyInstruction.__tnInvokeFootprint(params));\n__tnRegisterValidate(\"PasskeyInstruction\", (buffer, params) => PasskeyInstruction.__tnInvokeValidate(buffer, params));\n__tnRegisterDynamicValidate(\"PasskeyInstruction\", (buffer) => { const result = PasskeyInstruction.validate(buffer); const params = (result as { params?: Record<string, bigint> }).params; return { ok: result.ok, code: result.code, consumed: result.consumed === undefined ? undefined : __tnToBigInt(result.consumed), params }; });\n\n","import {\n Authority,\n AuthorityRecord,\n} from './abi/thru/program/passkey_manager/types';\n\nexport const PASSKEY_MANAGER_PROGRAM_ADDRESS =\n 'tabsq39mzj3DZlutXOGG6VtfMj8fUvI0HIOXfZm7TLLY6N';\n\n// Instruction discriminants\nexport const INSTRUCTION_CREATE = 0x00;\nexport const INSTRUCTION_VALIDATE = 0x01;\nexport const INSTRUCTION_TRANSFER = 0x02;\nexport const INSTRUCTION_ADD_AUTHORITY = 0x04;\nexport const INSTRUCTION_REMOVE_AUTHORITY = 0x05;\nexport const INSTRUCTION_REGISTER_CREDENTIAL = 0x06;\n\n// Authority tags\nexport const AUTHORITY_TAG_PASSKEY = 1;\nexport const AUTHORITY_TAG_PUBKEY = 2;\n\nexport const AUTHORITY_BYTES = Authority.footprint();\nexport const AUTHORITY_RECORD_BYTES = AuthorityRecord.footprint();\nexport const LONG_LIVED_AUTHORITY_EXPIRY_SECONDS = 0xffffffffffffffffn;\n","import {\n AUTHORITY_BYTES,\n AUTHORITY_RECORD_BYTES,\n LONG_LIVED_AUTHORITY_EXPIRY_SECONDS,\n INSTRUCTION_CREATE,\n} from '../constants';\nimport type { Authority, AuthorityRecord, CreateInstructionParams } from '../types';\nimport {\n Authority as AuthorityView,\n AuthorityBuilder,\n AuthorityRecord as AuthorityRecordView,\n CreateArgsBuilder,\n PasskeyInstructionBuilder,\n} from '../abi/thru/program/passkey_manager/types';\n\nconst AUTHORITY_DATA_BYTES = AUTHORITY_BYTES - 1;\nconst PUBKEY_BYTES = AUTHORITY_DATA_BYTES / 2;\nconst U64_MAX = 0xffffffffffffffffn;\n\nfunction buildAuthority(authority: Authority): Uint8Array {\n const data = new Array<number>(AUTHORITY_DATA_BYTES).fill(0);\n\n if (authority.tag === 1) {\n if (authority.pubkeyX.length !== PUBKEY_BYTES) throw new Error('pubkeyX must be 32 bytes');\n if (authority.pubkeyY.length !== PUBKEY_BYTES) throw new Error('pubkeyY must be 32 bytes');\n for (let i = 0; i < PUBKEY_BYTES; i++) data[i] = authority.pubkeyX[i];\n for (let i = 0; i < PUBKEY_BYTES; i++) data[PUBKEY_BYTES + i] = authority.pubkeyY[i];\n } else if (authority.tag === 2) {\n if (authority.pubkey.length !== PUBKEY_BYTES) throw new Error('pubkey must be 32 bytes');\n for (let i = 0; i < PUBKEY_BYTES; i++) data[i] = authority.pubkey[i];\n } else {\n throw new Error('Invalid authority tag');\n }\n\n return new AuthorityBuilder()\n .set_tag(authority.tag)\n .set_data(data)\n .build();\n}\n\nexport { buildAuthority };\n\nfunction copyGeneratedBuffer(view: unknown, label: string): Uint8Array {\n const buffer = (view as { buffer?: Uint8Array }).buffer;\n if (!buffer) {\n throw new Error(`${label} did not expose a generated buffer`);\n }\n return buffer.slice();\n}\n\nfunction assertU64(value: bigint, label: string): void {\n if (value < 0n || value > U64_MAX) {\n throw new Error(`${label} must fit in u64`);\n }\n}\n\nexport function createAuthorityRecord(\n authority: Authority,\n expiresAtBlockTimeSeconds = LONG_LIVED_AUTHORITY_EXPIRY_SECONDS\n): AuthorityRecord {\n return { authority, expiresAtBlockTimeSeconds };\n}\n\nexport function createSessionAuthorityRecord(\n params: {\n pubkey: Uint8Array;\n expiresAtBlockTimeSeconds: bigint;\n }\n): AuthorityRecord {\n return createAuthorityRecord(\n { tag: 2, pubkey: params.pubkey },\n params.expiresAtBlockTimeSeconds\n );\n}\n\nexport function buildAuthorityRecord(record: AuthorityRecord): Uint8Array {\n assertU64(record.expiresAtBlockTimeSeconds, 'expiresAtBlockTimeSeconds');\n\n const authority = AuthorityView.from_array(buildAuthority(record.authority));\n if (!authority) {\n throw new Error('Failed to build authority');\n }\n\n const authorityRecord = AuthorityRecordView.__tnCreateView(\n new Uint8Array(AUTHORITY_RECORD_BYTES)\n );\n authorityRecord.set_authority(authority);\n authorityRecord.set_expires_at_block_time_seconds(\n record.expiresAtBlockTimeSeconds\n );\n return copyGeneratedBuffer(authorityRecord, 'AuthorityRecord');\n}\n\nexport function encodeCreateInstruction(params: CreateInstructionParams): Uint8Array {\n const { walletAccountIdx, authorityRecord, seed, stateProof } = params;\n\n if (seed.length !== 32) throw new Error('seed must be 32 bytes');\n if (walletAccountIdx < 0 || walletAccountIdx > 0xffff) {\n throw new Error('walletAccountIdx must be 0-65535');\n }\n\n const authorityRecordBytes = buildAuthorityRecord(authorityRecord);\n\n const argsPayload = new CreateArgsBuilder()\n .set_wallet_account_idx(walletAccountIdx)\n .set_authority_record(authorityRecordBytes)\n .set_seed(seed)\n .set_state_proof(stateProof)\n .build();\n\n return new PasskeyInstructionBuilder()\n .payload()\n .select('create')\n .writePayload(argsPayload)\n .finish()\n .build();\n}\n\nfunction writeU16LE(target: Uint8Array, offset: number, value: number): void {\n target[offset] = value & 0xff;\n target[offset + 1] = (value >> 8) & 0xff;\n}\n\n/**\n * Encode CREATE for the currently deployed legacy passkey-manager program.\n *\n * Legacy CREATE stores the initial bare Authority directly:\n * tag || wallet_account_idx || Authority || seed || StateProof\n *\n * Newer program builds should use encodeCreateInstruction, which carries a\n * full AuthorityRecord with an expiry timestamp.\n */\nexport function encodeLegacyCreateInstruction(params: CreateInstructionParams): Uint8Array {\n const { walletAccountIdx, authorityRecord, seed, stateProof } = params;\n\n if (seed.length !== 32) throw new Error('seed must be 32 bytes');\n if (walletAccountIdx < 0 || walletAccountIdx > 0xffff) {\n throw new Error('walletAccountIdx must be 0-65535');\n }\n\n const authorityBytes = buildAuthority(authorityRecord.authority);\n const output = new Uint8Array(1 + 2 + authorityBytes.length + seed.length + stateProof.length);\n output[0] = INSTRUCTION_CREATE;\n writeU16LE(output, 1, walletAccountIdx);\n output.set(authorityBytes, 3);\n output.set(seed, 3 + authorityBytes.length);\n output.set(stateProof, 3 + authorityBytes.length + seed.length);\n return output;\n}\n","import {\n InstructionData,\n InstructionDataBuilder,\n} from './abi/thru/common/primitives/types';\nimport type { TargetInstructionParams } from './types';\n\nexport function buildTargetInstructionBytes({\n programIdx,\n instructionData,\n}: TargetInstructionParams): Uint8Array {\n if (!Number.isInteger(programIdx) || programIdx < 0 || programIdx > 0xffff) {\n throw new Error('programIdx must be 0-65535');\n }\n if (!(instructionData instanceof Uint8Array)) {\n throw new Error('instructionData must be a Uint8Array');\n }\n\n const builder = new InstructionDataBuilder();\n builder.set_program_idx(programIdx);\n builder.data().write(instructionData).finish();\n\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\n return buffer;\n}\n","import type { ValidateInstructionParams } from '../types';\nimport {\n PasskeyInstructionBuilder,\n ValidateArgsBuilder,\n} from '../abi/thru/program/passkey_manager/types';\nimport { buildTargetInstructionBytes } from '../target-instruction';\n\nexport function encodeValidateInstruction(params: ValidateInstructionParams): Uint8Array {\n const {\n walletAccountIdx,\n authIdx,\n targetInstruction,\n signatureR,\n signatureS,\n authenticatorData,\n clientDataJSON,\n } = params;\n\n if (walletAccountIdx < 0 || walletAccountIdx > 0xffff) {\n throw new Error('walletAccountIdx must be 0-65535');\n }\n if (authIdx < 0 || authIdx > 0xff) throw new Error('authIdx must be 0-255');\n if (signatureR.length !== 32) throw new Error('signatureR must be 32 bytes');\n if (signatureS.length !== 32) throw new Error('signatureS must be 32 bytes');\n if (authenticatorData.length > 0xffff) {\n throw new Error('authenticatorData length must be 0-65535');\n }\n if (clientDataJSON.length > 0xffff) {\n throw new Error('clientDataJSON length must be 0-65535');\n }\n\n const targetInstructionBytes = buildTargetInstructionBytes(targetInstruction);\n\n const argsBuilder = new ValidateArgsBuilder()\n .set_wallet_account_idx(walletAccountIdx)\n .set_auth_idx(authIdx)\n .set_signature_r(signatureR)\n .set_signature_s(signatureS)\n .set_target_instruction(targetInstructionBytes);\n argsBuilder.authenticator_data().write(authenticatorData).finish();\n argsBuilder.client_data().write(clientDataJSON).finish();\n\n return new PasskeyInstructionBuilder()\n .payload()\n .select('validate')\n .writePayload(argsBuilder)\n .finish()\n .build();\n}\n","import type { TransferInstructionParams } from '../types';\nimport {\n TransferArgsBuilder,\n PasskeyInstructionBuilder,\n} from '../abi/thru/program/passkey_manager/types';\n\nexport function encodeTransferInstruction(params: TransferInstructionParams): Uint8Array {\n const { walletAccountIdx, toAccountIdx, amount } = params;\n\n if (walletAccountIdx < 0 || walletAccountIdx > 0xffff) {\n throw new Error('walletAccountIdx must be 0-65535');\n }\n if (toAccountIdx < 0 || toAccountIdx > 0xffff) {\n throw new Error('toAccountIdx must be 0-65535');\n }\n if (amount < 0n) throw new Error('amount must be non-negative');\n\n const argsPayload = new TransferArgsBuilder()\n .set_wallet_account_idx(walletAccountIdx)\n .set_to_account_idx(toAccountIdx)\n .set_amount(amount)\n .build();\n\n return new PasskeyInstructionBuilder()\n .payload()\n .select('transfer')\n .writePayload(argsPayload)\n .finish()\n .build();\n}\n","export function encodeInvokeInstruction(\n _programPubkey: Uint8Array,\n _instruction: Uint8Array,\n): Uint8Array {\n throw new Error(\n 'encodeInvokeInstruction is from the legacy passkey-manager ABI. ' +\n 'Migrate this flow to encodeValidateInstruction({ targetInstruction }) against the upgraded passkey manager.',\n );\n}\n","import type { AddAuthorityInstructionParams } from '../types';\nimport { INSTRUCTION_ADD_AUTHORITY } from '../constants';\nimport {\n AddAuthorityArgsBuilder,\n PasskeyInstructionBuilder,\n} from '../abi/thru/program/passkey_manager/types';\nimport { buildAuthority, buildAuthorityRecord } from './create';\n\nexport function encodeAddAuthorityInstruction(params: AddAuthorityInstructionParams): Uint8Array {\n const { walletAccountIdx } = params;\n if (walletAccountIdx < 0 || walletAccountIdx > 0xffff) {\n throw new Error('walletAccountIdx must be 0-65535');\n }\n\n const authorityRecordBytes = buildAuthorityRecord(params.authorityRecord);\n\n const argsPayload = new AddAuthorityArgsBuilder()\n .set_wallet_account_idx(walletAccountIdx)\n .set_authority_record(authorityRecordBytes)\n .build();\n\n return new PasskeyInstructionBuilder()\n .payload()\n .select('add_authority')\n .writePayload(argsPayload)\n .finish()\n .build();\n}\n\nfunction writeU16LE(target: Uint8Array, offset: number, value: number): void {\n target[offset] = value & 0xff;\n target[offset + 1] = (value >> 8) & 0xff;\n}\n\n/**\n * Encode ADD_AUTHORITY for the currently deployed legacy passkey-manager.\n *\n * Legacy ADD_AUTHORITY appends a bare 65-byte Authority. Expiry remains a\n * local wallet/session policy until the AuthorityRecord program is deployed.\n */\nexport function encodeLegacyAddAuthorityInstruction(\n params: AddAuthorityInstructionParams\n): Uint8Array {\n const { walletAccountIdx } = params;\n if (walletAccountIdx < 0 || walletAccountIdx > 0xffff) {\n throw new Error('walletAccountIdx must be 0-65535');\n }\n\n const authorityBytes = buildAuthority(params.authorityRecord.authority);\n const output = new Uint8Array(1 + 2 + authorityBytes.length);\n output[0] = INSTRUCTION_ADD_AUTHORITY;\n writeU16LE(output, 1, walletAccountIdx);\n output.set(authorityBytes, 3);\n return output;\n}\n","import {\n RemoveAuthorityArgsBuilder,\n PasskeyInstructionBuilder,\n} from '../abi/thru/program/passkey_manager/types';\nimport type { RemoveAuthorityInstructionParams } from '../types';\n\nexport function encodeRemoveAuthorityInstruction(\n params: RemoveAuthorityInstructionParams\n): Uint8Array {\n const { walletAccountIdx, authIdx } = params;\n if (walletAccountIdx < 0 || walletAccountIdx > 0xffff) {\n throw new Error('walletAccountIdx must be 0-65535');\n }\n if (authIdx < 0 || authIdx > 0xff) throw new Error('authIdx must be 0-255');\n\n const argsPayload = new RemoveAuthorityArgsBuilder()\n .set_wallet_account_idx(walletAccountIdx)\n .set_auth_idx(authIdx)\n .build();\n\n return new PasskeyInstructionBuilder()\n .payload()\n .select('remove_authority')\n .writePayload(argsPayload)\n .finish()\n .build();\n}\n","import type { RegisterCredentialInstructionParams } from '../types';\nimport {\n RegisterCredentialArgsBuilder,\n PasskeyInstructionBuilder,\n} from '../abi/thru/program/passkey_manager/types';\n\nexport function encodeRegisterCredentialInstruction(\n params: RegisterCredentialInstructionParams\n): Uint8Array {\n const { walletAccountIdx, lookupAccountIdx, seed, stateProof } = params;\n\n if (seed.length !== 32) throw new Error('seed must be 32 bytes');\n if (walletAccountIdx < 0 || walletAccountIdx > 0xffff) {\n throw new Error('walletAccountIdx must be 0-65535');\n }\n if (lookupAccountIdx < 0 || lookupAccountIdx > 0xffff) {\n throw new Error('lookupAccountIdx must be 0-65535');\n }\n\n const argsPayload = new RegisterCredentialArgsBuilder()\n .set_wallet_account_idx(walletAccountIdx)\n .set_lookup_account_idx(lookupAccountIdx)\n .set_seed(seed)\n .set_state_proof(stateProof)\n .build();\n\n return new PasskeyInstructionBuilder()\n .payload()\n .select('register_credential')\n .writePayload(argsPayload)\n .finish()\n .build();\n}\n","export function concatenateInstructions(instructions: Uint8Array[]): Uint8Array {\n const totalLength = instructions.reduce(\n (sum, instruction) => sum + instruction.length,\n 0,\n );\n const result = new Uint8Array(totalLength);\n\n let offset = 0;\n for (const instruction of instructions) {\n result.set(instruction, offset);\n offset += instruction.length;\n }\n\n return result;\n}\n","import type { TargetInstructionParams } from './types';\nimport { buildTargetInstructionBytes } from './target-instruction';\n\n/**\n * Create challenge for VALIDATE instruction.\n * SHA256(domain || nonce || wallet_account_idx || auth_idx || account_count ||\n * account_0 || account_1 || ... || target_instruction)\n */\nexport const VALIDATE_CHALLENGE_DOMAIN = 'thru.passkey.validate';\n\nfunction writeU64LE(target: Uint8Array, offset: number, value: bigint): void {\n let remaining = value;\n for (let i = 0; i < 8; i++) {\n target[offset + i] = Number(remaining & 0xffn);\n remaining >>= 8n;\n }\n}\n\nexport async function createValidateChallenge(\n nonce: bigint,\n accountAddresses: string[],\n walletAccountIdx: number,\n authIdx: number,\n targetInstruction: TargetInstructionParams\n): Promise<Uint8Array> {\n const targetInstructionBytes = buildTargetInstructionBytes(targetInstruction);\n const encoder = new TextEncoder();\n const domainBytes = encoder.encode(VALIDATE_CHALLENGE_DOMAIN);\n const accountBytes = accountAddresses.map((address) => {\n const bytes = encoder.encode(address);\n if (bytes.length !== 46) {\n throw new Error('accountAddresses must contain ta addresses');\n }\n return bytes;\n });\n if (walletAccountIdx < 0 || walletAccountIdx > 0xffff) {\n throw new Error('walletAccountIdx must be 0-65535');\n }\n if (authIdx < 0 || authIdx > 0xff) throw new Error('authIdx must be 0-255');\n if (accountBytes.length > 0xffff) throw new Error('accountAddresses length must be 0-65535');\n\n const totalSize =\n domainBytes.length +\n 8 +\n 2 +\n 1 +\n 2 +\n accountBytes.reduce((sum, bytes) => sum + bytes.length, 0) +\n targetInstructionBytes.length;\n const challengeData = new Uint8Array(totalSize);\n\n let offset = 0;\n challengeData.set(domainBytes, offset);\n offset += domainBytes.length;\n\n writeU64LE(challengeData, offset, nonce);\n offset += 8;\n\n challengeData[offset] = walletAccountIdx & 0xff;\n challengeData[offset + 1] = (walletAccountIdx >> 8) & 0xff;\n offset += 2;\n\n challengeData[offset] = authIdx & 0xff;\n offset += 1;\n\n challengeData[offset] = accountBytes.length & 0xff;\n challengeData[offset + 1] = (accountBytes.length >> 8) & 0xff;\n offset += 2;\n\n for (const bytes of accountBytes) {\n challengeData.set(bytes, offset);\n offset += bytes.length;\n }\n\n challengeData.set(targetInstructionBytes, offset);\n\n const hashBuffer = await crypto.subtle.digest('SHA-256', challengeData);\n return new Uint8Array(hashBuffer);\n}\n","import { decodeAddress } from '@thru/sdk/helpers';\n\n/**\n * Create a 32-byte seed from wallet name and passkey coordinates.\n * SHA-256(walletName || pubkey_x || pubkey_y)\n */\nexport async function createWalletSeed(\n walletName: string,\n pubkeyX: Uint8Array,\n pubkeyY: Uint8Array,\n): Promise<Uint8Array> {\n if (pubkeyX.length !== 32) throw new Error(\"pubkeyX must be 32 bytes\");\n if (pubkeyY.length !== 32) throw new Error(\"pubkeyY must be 32 bytes\");\n\n const nameBytes = new TextEncoder().encode(walletName);\n const data = new Uint8Array(nameBytes.length + 32 + 32);\n data.set(nameBytes, 0);\n data.set(pubkeyX, nameBytes.length);\n data.set(pubkeyY, nameBytes.length + 32);\n\n const hashBuffer = await crypto.subtle.digest(\"SHA-256\", data);\n return new Uint8Array(hashBuffer);\n}\n\n/**\n * Derive wallet account address from seed using proper PDA derivation.\n * SHA256(program_address || is_ephemeral || seed)\n */\nexport async function deriveWalletAddress(\n seed: Uint8Array,\n programAddress: string,\n): Promise<Uint8Array> {\n if (seed.length !== 32) {\n throw new Error(\"seed must be 32 bytes\");\n }\n\n const programBytes = decodeAddress(programAddress);\n const isEphemeral = new Uint8Array([0]);\n\n const preimage = new Uint8Array(32 + 1 + 32);\n preimage.set(programBytes, 0);\n preimage.set(isEphemeral, 32);\n preimage.set(seed, 33);\n\n const hashBuffer = await crypto.subtle.digest(\"SHA-256\", preimage);\n return new Uint8Array(hashBuffer);\n}\n\n/**\n * Create a 32-byte seed for a credential lookup PDA.\n * SHA-256(credentialId)\n */\nexport async function createCredentialLookupSeed(\n credentialId: Uint8Array,\n): Promise<Uint8Array> {\n const data = new Uint8Array(credentialId.length);\n data.set(credentialId);\n\n const hashBuffer = await crypto.subtle.digest(\"SHA-256\", data);\n return new Uint8Array(hashBuffer);\n}\n\n/**\n * Derive credential lookup PDA address from a credential ID.\n * Convenience wrapper: deriveWalletAddress(SHA-256(credentialId), programAddress)\n */\nexport async function deriveCredentialLookupAddress(\n credentialId: Uint8Array,\n programAddress: string,\n): Promise<Uint8Array> {\n const seed = await createCredentialLookupSeed(credentialId);\n return deriveWalletAddress(seed, programAddress);\n}\n","import { hexToBytes as sharedHexToBytes } from '@thru/sdk/helpers';\n\nexport function arrayBufferToBase64Url(buffer: ArrayBuffer | SharedArrayBuffer): string {\n const bytes = new Uint8Array(buffer);\n let base64 = '';\n for (let i = 0; i < bytes.length; i++) {\n base64 += String.fromCharCode(bytes[i]);\n }\n return btoa(base64).replace(/\\+/g, '-').replace(/\\//g, '_').replace(/=+$/, '');\n}\n\nexport function base64UrlToArrayBuffer(base64Url: string): ArrayBuffer {\n const base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');\n const padded = base64.padEnd(base64.length + ((4 - (base64.length % 4)) % 4), '=');\n const binary = atob(padded);\n const bytes = new Uint8Array(binary.length);\n for (let i = 0; i < binary.length; i++) {\n bytes[i] = binary.charCodeAt(i);\n }\n return bytes.buffer;\n}\n\nexport function bytesToBase64Url(bytes: Uint8Array): string {\n const slice = bytes.buffer.slice(bytes.byteOffset, bytes.byteOffset + bytes.byteLength);\n return arrayBufferToBase64Url(slice);\n}\n\nexport function bytesToBase64(bytes: Uint8Array): string {\n type BufferLike = {\n from(value: Uint8Array): { toString(encoding: 'base64'): string };\n };\n const globalBuffer =\n typeof globalThis !== 'undefined' ? (globalThis as { Buffer?: BufferLike }).Buffer : undefined;\n if (globalBuffer) {\n return globalBuffer.from(bytes).toString('base64');\n }\n\n if (typeof btoa === 'function') {\n let binary = '';\n for (let i = 0; i < bytes.length; i++) {\n binary += String.fromCharCode(bytes[i]);\n }\n return btoa(binary);\n }\n\n throw new Error('Base64 encoding is not supported in this environment');\n}\n\nexport function base64UrlToBytes(base64Url: string): Uint8Array {\n return new Uint8Array(base64UrlToArrayBuffer(base64Url));\n}\n\nexport function bytesToHex(bytes: Uint8Array): string {\n return Array.from(bytes, (b) => b.toString(16).padStart(2, '0')).join('');\n}\n\nexport function hexToBytes(hex: string): Uint8Array {\n return sharedHexToBytes(hex);\n}\n\nexport function bytesEqual(a: Uint8Array, b: Uint8Array): boolean {\n if (a.length !== b.length) return false;\n for (let i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) return false;\n }\n return true;\n}\n\nexport function compareBytes(a: Uint8Array, b: Uint8Array): number {\n const len = Math.min(a.length, b.length);\n for (let i = 0; i < len; i++) {\n if (a[i] !== b[i]) return a[i] - b[i];\n }\n return a.length - b.length;\n}\n\nexport function uniqueAccounts(accounts: Uint8Array[]): Uint8Array[] {\n const unique: Uint8Array[] = [];\n for (const account of accounts) {\n if (!unique.some((candidate) => bytesEqual(candidate, account))) {\n unique.push(account);\n }\n }\n return unique;\n}\n","import { encodeAddress, decodeAddress } from '@thru/sdk/helpers';\nimport { bytesEqual, compareBytes, uniqueAccounts } from './encoding';\nimport { PASSKEY_MANAGER_PROGRAM_ADDRESS } from './constants';\nimport type { AccountContext } from './types';\n\n/**\n * Default fee payer address (manager profile).\n */\nexport const FEE_PAYER_ADDRESS =\n 'taVcZv3wB2m-euBpMHm2rF9fQRY_fO_g7WdOjs70CxDh_S';\n\n/**\n * Build account context for passkey manager transactions.\n * Handles account deduplication, sorting, and index lookup.\n */\nexport function buildAccountContext(params: {\n walletAddress: string;\n readWriteAccounts: Uint8Array[];\n readOnlyAccounts: Uint8Array[];\n feePayerAddress?: string;\n programAddress?: string;\n}): AccountContext {\n const feePayerBytes = decodeAddress(params.feePayerAddress ?? FEE_PAYER_ADDRESS);\n const programBytes = decodeAddress(params.programAddress ?? PASSKEY_MANAGER_PROGRAM_ADDRESS);\n const walletBytes = decodeAddress(params.walletAddress);\n\n const readWriteBytes = uniqueAccounts([walletBytes, ...params.readWriteAccounts])\n .filter(\n (addr) => !bytesEqual(addr, feePayerBytes) && !bytesEqual(addr, programBytes)\n )\n .sort(compareBytes);\n\n const readOnlyBytes = uniqueAccounts(params.readOnlyAccounts)\n .filter(\n (addr) =>\n !bytesEqual(addr, feePayerBytes) &&\n !bytesEqual(addr, programBytes) &&\n !readWriteBytes.some((candidate) => bytesEqual(candidate, addr))\n )\n .sort(compareBytes);\n\n const readWriteAddresses = readWriteBytes.map(encodeAddress);\n const readOnlyAddresses = readOnlyBytes.map(encodeAddress);\n\n const accountAddresses = [\n encodeAddress(feePayerBytes),\n encodeAddress(programBytes),\n ...readWriteAddresses,\n ...readOnlyAddresses,\n ];\n\n const findIndex = (target: Uint8Array): number => {\n if (bytesEqual(target, feePayerBytes)) return 0;\n if (bytesEqual(target, programBytes)) return 1;\n\n const rwIndex = readWriteBytes.findIndex((candidate) => bytesEqual(candidate, target));\n if (rwIndex >= 0) return rwIndex + 2;\n\n const roIndex = readOnlyBytes.findIndex((candidate) => bytesEqual(candidate, target));\n if (roIndex >= 0) return roIndex + 2 + readWriteBytes.length;\n\n return -1;\n };\n\n const walletAccountIdx = findIndex(walletBytes);\n if (walletAccountIdx < 2) {\n throw new Error('Wallet account must be a non-fee-payer account');\n }\n\n return {\n readWriteAddresses,\n readOnlyAddresses,\n accountAddresses,\n walletAccountIdx,\n getAccountIndex: (pubkey: Uint8Array) => {\n const idx = findIndex(pubkey);\n if (idx < 0) {\n throw new Error('Account not found in transaction accounts');\n }\n return idx;\n },\n };\n}\n\n/**\n * Build read-write accounts list for passkey manager transactions (simpler wallet-only version).\n */\nexport function buildPasskeyReadWriteAccounts(\n userAccounts: Uint8Array[],\n feePayerPublicKey: Uint8Array,\n programAddress: Uint8Array\n): {\n readWriteAddresses: string[];\n findAccountIndex: (target: Uint8Array) => number;\n} {\n const sortedUserAccounts = uniqueAccounts(userAccounts).sort(compareBytes);\n const filteredUserAccounts = sortedUserAccounts.filter(\n (addr) => !bytesEqual(addr, feePayerPublicKey) && !bytesEqual(addr, programAddress)\n );\n const readWriteAddresses = filteredUserAccounts.map((addr) => encodeAddress(addr));\n\n const findAccountIndex = (target: Uint8Array): number => {\n if (bytesEqual(target, feePayerPublicKey)) return 0;\n if (bytesEqual(target, programAddress)) return 1;\n for (let i = 0; i < filteredUserAccounts.length; i++) {\n if (bytesEqual(filteredUserAccounts[i], target)) return i + 2;\n }\n return -1;\n };\n\n return { readWriteAddresses, findAccountIndex };\n}\n","import { encodeAddress } from '@thru/sdk/helpers';\nimport { LONG_LIVED_AUTHORITY_EXPIRY_SECONDS } from './constants';\nimport {\n CredentialLookup,\n WalletAccount,\n} from './abi/thru/program/passkey_manager/types';\n\nconst LEGACY_WALLET_HEADER_BYTES = 9;\nconst LEGACY_AUTHORITY_BYTES = 65;\nconst AUTHORITY_DATA_BYTES = 64;\n\n/**\n * Parse wallet account data to extract nonce.\n */\nexport function parseWalletNonce(data: Uint8Array): bigint {\n const account = WalletAccount.from_array(data);\n if (!account) return parseLegacyWalletNonce(data) ?? 0n;\n return account.get_nonce();\n}\n\n/**\n * Fetch wallet nonce from the chain.\n * Takes an SDK-like object with accounts.get() method.\n */\nexport async function fetchWalletNonce(\n sdk: { accounts: { get: (address: string) => Promise<{ data?: { data?: Uint8Array } }> } },\n walletAddress: string\n): Promise<bigint> {\n const account = await sdk.accounts.get(walletAddress);\n const data = account.data?.data;\n if (!data) return 0n;\n return parseWalletNonce(data);\n}\n\n/* ------------------------------------------------------------------ */\n/* Authority list parsing */\n/* ------------------------------------------------------------------ */\n\nexport type ParsedAuthority =\n | {\n idx: number;\n expiresAtBlockTimeSeconds: bigint;\n kind: 'passkey';\n x: Uint8Array;\n y: Uint8Array;\n }\n | {\n idx: number;\n expiresAtBlockTimeSeconds: bigint;\n kind: 'pubkey';\n pubkey: Uint8Array;\n }\n | {\n idx: number;\n expiresAtBlockTimeSeconds: bigint;\n kind: 'unknown';\n tag: number;\n data: Uint8Array;\n };\n\nexport interface WalletAuthorities {\n nonce: bigint;\n authorities: ParsedAuthority[];\n layout: 'authorityRecord' | 'legacyAuthority';\n}\n\n/**\n * Parse the on-chain WalletAccount data buffer into its nonce and full\n * authority list using the generated ABI view.\n */\nexport function parseWalletAuthorities(data: Uint8Array): WalletAuthorities {\n const account = WalletAccount.from_array(data);\n if (!account) {\n const legacy = parseLegacyWalletAuthorities(data);\n if (legacy) return legacy;\n throw new Error('Wallet data truncated');\n }\n\n const authorities: ParsedAuthority[] = [];\n account.get_authorities().forEach((record, idx) => {\n const authority = record.get_authority();\n const tag = authority.get_tag();\n const payload = Uint8Array.from(authority.get_data());\n const expiresAtBlockTimeSeconds =\n record.get_expires_at_block_time_seconds();\n\n if (tag === 1) {\n authorities.push({\n idx,\n expiresAtBlockTimeSeconds,\n kind: 'passkey',\n x: payload.slice(0, 32),\n y: payload.slice(32, 64),\n });\n return;\n }\n\n if (tag === 2) {\n authorities.push({\n idx,\n expiresAtBlockTimeSeconds,\n kind: 'pubkey',\n pubkey: payload.slice(0, 32),\n });\n return;\n }\n\n authorities.push({ idx, expiresAtBlockTimeSeconds, kind: 'unknown', tag, data: payload });\n });\n\n return { nonce: account.get_nonce(), authorities, layout: 'authorityRecord' };\n}\n\nfunction parseLegacyWalletNonce(data: Uint8Array): bigint | null {\n if (data.length < LEGACY_WALLET_HEADER_BYTES) return null;\n const view = new DataView(data.buffer, data.byteOffset, data.byteLength);\n return view.getBigUint64(1, true);\n}\n\nfunction parseLegacyWalletAuthorities(data: Uint8Array): WalletAuthorities | null {\n if (data.length < LEGACY_WALLET_HEADER_BYTES) return null;\n\n const numAuth = data[0];\n const authorityCount = numAuth + 1;\n const requiredLength = LEGACY_WALLET_HEADER_BYTES + authorityCount * LEGACY_AUTHORITY_BYTES;\n if (data.length < requiredLength) return null;\n\n const nonce = parseLegacyWalletNonce(data);\n if (nonce === null) return null;\n\n const authorities: ParsedAuthority[] = [];\n for (let idx = 0; idx < authorityCount; idx += 1) {\n const offset = LEGACY_WALLET_HEADER_BYTES + idx * LEGACY_AUTHORITY_BYTES;\n const tag = data[offset];\n const payload = data.slice(offset + 1, offset + 1 + AUTHORITY_DATA_BYTES);\n const expiresAtBlockTimeSeconds = LONG_LIVED_AUTHORITY_EXPIRY_SECONDS;\n\n if (tag === 1) {\n authorities.push({\n idx,\n expiresAtBlockTimeSeconds,\n kind: 'passkey',\n x: payload.slice(0, 32),\n y: payload.slice(32, 64),\n });\n continue;\n }\n\n if (tag === 2) {\n authorities.push({\n idx,\n expiresAtBlockTimeSeconds,\n kind: 'pubkey',\n pubkey: payload.slice(0, 32),\n });\n continue;\n }\n\n authorities.push({ idx, expiresAtBlockTimeSeconds, kind: 'unknown', tag, data: payload });\n }\n\n return { nonce, authorities, layout: 'legacyAuthority' };\n}\n\n/**\n * Encode a 32-byte pubkey to its base58 wallet address representation.\n */\nexport function formatAuthorityPubkey(pubkey: Uint8Array): string {\n return encodeAddress(pubkey);\n}\n\n/**\n * Parse a CredentialLookup account and return the wallet account pubkey\n * stored inside it.\n */\nexport function parseCredentialLookupWallet(data: Uint8Array): Uint8Array | null {\n const lookup = CredentialLookup.from_array(data);\n if (!lookup) return null;\n const wallet = lookup.get_wallet() as unknown as { buffer?: Uint8Array };\n return wallet.buffer ? wallet.buffer.slice() : null;\n}\n","import { parseWalletAuthorities, type ParsedAuthority } from './accounts';\nimport { bytesToHex } from './encoding';\n\nconst DEFAULT_AUTHORITY_TARGET_CONCURRENCY = 8;\n\nexport interface PasskeyAuthorityIdentity {\n publicKeyX?: string | null;\n publicKeyY?: string | null;\n}\n\nexport interface CheckablePasskeyAuthorityIdentity {\n publicKeyX: string;\n publicKeyY: string;\n}\n\ninterface AccountLike {\n data?: {\n data?: Uint8Array;\n };\n}\n\ninterface ThruAccountClient {\n accounts: {\n get(address: string): Promise<AccountLike>;\n };\n}\n\nexport interface PasskeyAuthorityTarget<T> {\n account: T;\n walletAddress: string;\n authIdx: number;\n authorities: ParsedAuthority[];\n}\n\nexport interface PreparePasskeyAuthorityTargetsOptions<T> {\n accounts: T[];\n passkey?: PasskeyAuthorityIdentity | null;\n thru: ThruAccountClient;\n getWalletAddress: (account: T) => string;\n concurrency?: number;\n}\n\nfunction getAccountData(account: AccountLike | null | undefined): Uint8Array | null {\n return account?.data?.data ?? null;\n}\n\nexport function isPasskeyAuthorityCheckable(\n passkey: PasskeyAuthorityIdentity | null | undefined\n): passkey is CheckablePasskeyAuthorityIdentity {\n return Boolean(passkey?.publicKeyX && passkey.publicKeyY);\n}\n\nexport function findPasskeyAuthorityIndexForIdentity(\n authorities: ParsedAuthority[],\n passkey: PasskeyAuthorityIdentity | null | undefined\n): number | null {\n if (!isPasskeyAuthorityCheckable(passkey)) return null;\n\n const expectedX = passkey.publicKeyX.toLowerCase();\n const expectedY = passkey.publicKeyY.toLowerCase();\n const authority = authorities.find(\n (item) =>\n item.kind === 'passkey' &&\n bytesToHex(item.x).toLowerCase() === expectedX &&\n bytesToHex(item.y).toLowerCase() === expectedY\n );\n return authority?.idx ?? null;\n}\n\nexport function findPasskeyAuthorityIndexInWalletData(\n walletData: Uint8Array,\n passkey: PasskeyAuthorityIdentity | null | undefined\n): { authIdx: number; authorities: ParsedAuthority[] } | null {\n const parsed = parseWalletAuthorities(walletData);\n const authIdx = findPasskeyAuthorityIndexForIdentity(parsed.authorities, passkey);\n return authIdx === null ? null : { authIdx, authorities: parsed.authorities };\n}\n\nexport async function resolvePasskeyAuthorityIndex(params: {\n thru: ThruAccountClient;\n walletAddress: string;\n passkey?: PasskeyAuthorityIdentity | null;\n}): Promise<number | null> {\n const walletAccount = await params.thru.accounts.get(params.walletAddress);\n const walletData = getAccountData(walletAccount);\n if (!walletData) return null;\n\n return findPasskeyAuthorityIndexInWalletData(walletData, params.passkey)?.authIdx ?? null;\n}\n\nasync function mapWithConcurrency<T, R>(\n items: T[],\n concurrency: number,\n mapper: (item: T) => Promise<R>\n): Promise<R[]> {\n const results = new Array<R>(items.length);\n let nextIndex = 0;\n const workerCount = Math.max(1, Math.min(Math.floor(concurrency), items.length));\n\n await Promise.all(\n Array.from({ length: workerCount }, async () => {\n while (nextIndex < items.length) {\n const currentIndex = nextIndex;\n nextIndex += 1;\n results[currentIndex] = await mapper(items[currentIndex]);\n }\n })\n );\n\n return results;\n}\n\nexport async function preparePasskeyAuthorityTargets<T>({\n accounts,\n passkey,\n thru,\n getWalletAddress,\n concurrency = DEFAULT_AUTHORITY_TARGET_CONCURRENCY,\n}: PreparePasskeyAuthorityTargetsOptions<T>): Promise<PasskeyAuthorityTarget<T>[]> {\n if (!isPasskeyAuthorityCheckable(passkey) || accounts.length === 0) {\n return [];\n }\n\n const targets = await mapWithConcurrency(accounts, concurrency, async (account) => {\n const walletAddress = getWalletAddress(account);\n try {\n const walletAccount = await thru.accounts.get(walletAddress);\n const walletData = getAccountData(walletAccount);\n if (!walletData) return null;\n\n const target = findPasskeyAuthorityIndexInWalletData(walletData, passkey);\n if (!target) return null;\n\n return {\n account,\n walletAddress,\n authIdx: target.authIdx,\n authorities: target.authorities,\n };\n } catch {\n return null;\n }\n });\n\n return targets.filter(\n (target): target is PasskeyAuthorityTarget<T> => target !== null\n );\n}\n","/**\n * P-256 curve order and half-order for low-S normalization.\n */\nexport const P256_N =\n 0xffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551n;\nexport const P256_HALF_N = P256_N >> 1n;\n\n/**\n * Parse DER-encoded ECDSA signature to get r and s components.\n */\nexport function parseDerSignature(der: Uint8Array): { r: Uint8Array; s: Uint8Array } {\n if (der[0] !== 0x30) throw new Error('Invalid DER signature');\n\n let offset = 2;\n\n if (der[offset] !== 0x02) throw new Error('Invalid DER signature');\n offset++;\n\n const rLen = der[offset++];\n let r: Uint8Array = der.slice(offset, offset + rLen);\n offset += rLen;\n\n if (der[offset] !== 0x02) throw new Error('Invalid DER signature');\n offset++;\n\n const sLen = der[offset++];\n let s: Uint8Array = der.slice(offset, offset + sLen);\n\n r = normalizeSignatureComponent(r);\n s = normalizeSignatureComponent(s);\n\n return { r, s };\n}\n\n/**\n * Ensure S is in the lower half of the curve order (BIP-62 / SEC1 compliance).\n */\nexport function normalizeLowS(s: Uint8Array): Uint8Array {\n const sValue = bytesToBigIntBE(s);\n if (sValue > P256_HALF_N) {\n return bigIntToBytesBE(P256_N - sValue, 32);\n }\n return s;\n}\n\n/**\n * Normalize signature component to exactly 32 bytes.\n */\nexport function normalizeSignatureComponent(component: Uint8Array): Uint8Array {\n if (component.length === 32) return component;\n\n if (component.length > 32) {\n if (component[0] === 0x00 && component.length === 33) {\n return component.slice(1);\n }\n throw new Error('Invalid signature component length');\n }\n\n const normalized = new Uint8Array(32);\n normalized.set(component, 32 - component.length);\n return normalized;\n}\n\nexport function bytesToBigIntBE(bytes: Uint8Array): bigint {\n let value = 0n;\n for (const byte of bytes) {\n value = (value << 8n) | BigInt(byte);\n }\n return value;\n}\n\nexport function bigIntToBytesBE(value: bigint, length: number): Uint8Array {\n const out = new Uint8Array(length);\n let v = value;\n for (let i = length - 1; i >= 0; i--) {\n out[i] = Number(v & 0xffn);\n v >>= 8n;\n }\n return out;\n}\n"]}
|