@thru/programs 0.2.22 → 0.2.23

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.
Files changed (32) hide show
  1. package/dist/multicall/index.cjs +2579 -0
  2. package/dist/multicall/index.cjs.map +1 -0
  3. package/dist/multicall/index.d.cts +253 -0
  4. package/dist/multicall/index.d.ts +253 -0
  5. package/dist/multicall/index.js +2573 -0
  6. package/dist/multicall/index.js.map +1 -0
  7. package/dist/passkey-manager/index.cjs +582 -706
  8. package/dist/passkey-manager/index.cjs.map +1 -1
  9. package/dist/passkey-manager/index.d.cts +20 -14
  10. package/dist/passkey-manager/index.d.ts +20 -14
  11. package/dist/passkey-manager/index.js +551 -673
  12. package/dist/passkey-manager/index.js.map +1 -1
  13. package/package.json +7 -2
  14. package/src/multicall/abi/thru/common/primitives/types.ts +2265 -0
  15. package/src/multicall/abi/thru/program/multicall/types.ts +1232 -0
  16. package/src/multicall/index.test.ts +46 -0
  17. package/src/multicall/index.ts +81 -0
  18. package/src/passkey-manager/abi/thru/blockchain/state_proof/types.ts +95 -19
  19. package/src/passkey-manager/abi/thru/common/primitives/types.ts +111 -37
  20. package/src/passkey-manager/abi/thru/program/passkey_manager/types.ts +248 -660
  21. package/src/passkey-manager/challenge.ts +52 -12
  22. package/src/passkey-manager/constants.ts +0 -1
  23. package/src/passkey-manager/index.ts +4 -4
  24. package/src/passkey-manager/instructions/add-authority.ts +8 -2
  25. package/src/passkey-manager/instructions/remove-authority.ts +9 -2
  26. package/src/passkey-manager/instructions/validate.ts +60 -14
  27. package/src/passkey-manager/target-instruction.ts +29 -0
  28. package/src/passkey-manager/types.ts +16 -0
  29. package/src/passkey-manager/validate.test.ts +173 -0
  30. package/tsup.config.ts +1 -0
  31. package/src/passkey-manager/instructions/invoke.ts +0 -25
  32. package/src/passkey-manager/instructions/shared.ts +0 -12
@@ -7,7 +7,6 @@ var PASSKEY_MANAGER_PROGRAM_ADDRESS = "taUDdQyFxvM5i0HFRkEK3W45kWLyblAHSnMg4zplg
7
7
  var INSTRUCTION_CREATE = 0;
8
8
  var INSTRUCTION_VALIDATE = 1;
9
9
  var INSTRUCTION_TRANSFER = 2;
10
- var INSTRUCTION_INVOKE = 3;
11
10
  var INSTRUCTION_ADD_AUTHORITY = 4;
12
11
  var INSTRUCTION_REMOVE_AUTHORITY = 5;
13
12
  var INSTRUCTION_REGISTER_CREDENTIAL = 6;
@@ -294,12 +293,16 @@ if (typeof DataView !== "undefined" && !__tnHasBigIntDataView) {
294
293
  }
295
294
  var __tnFootprintRegistry = {};
296
295
  var __tnValidateRegistry = {};
296
+ var __tnDynamicValidateRegistry = {};
297
297
  function __tnRegisterFootprint(typeName, fn) {
298
298
  __tnFootprintRegistry[typeName] = fn;
299
299
  }
300
300
  function __tnRegisterValidate(typeName, fn) {
301
301
  __tnValidateRegistry[typeName] = fn;
302
302
  }
303
+ function __tnRegisterDynamicValidate(typeName, fn) {
304
+ __tnDynamicValidateRegistry[typeName] = fn;
305
+ }
303
306
  function __tnInvokeFootprint(typeName, params) {
304
307
  const fn = __tnFootprintRegistry[typeName];
305
308
  if (!fn) throw new Error(`IR runtime missing footprint for ${typeName}`);
@@ -310,12 +313,17 @@ function __tnInvokeValidate(typeName, buffer, params) {
310
313
  if (!fn) throw new Error(`IR runtime missing validate helper for ${typeName}`);
311
314
  return fn(buffer, params);
312
315
  }
316
+ function __tnInvokeDynamicValidate(typeName, buffer) {
317
+ const fn = __tnDynamicValidateRegistry[typeName];
318
+ if (!fn) throw new Error(`IR runtime missing dynamic validate helper for ${typeName}`);
319
+ return fn(buffer);
320
+ }
313
321
  function __tnEvalFootprint(node, ctx) {
314
- return __tnEvalIrNode(node, ctx);
322
+ return __tnEvalIrNode(node, ctx, __tnToBigInt(0));
315
323
  }
316
324
  function __tnTryEvalIr(node, ctx) {
317
325
  try {
318
- return { ok: true, value: __tnEvalIrNode(node, ctx) };
326
+ return { ok: true, value: __tnEvalIrNode(node, ctx, __tnToBigInt(0)) };
319
327
  } catch (err) {
320
328
  return { ok: false, code: __tnNormalizeIrError(err) };
321
329
  }
@@ -339,7 +347,7 @@ function __tnValidateIrTree(ir, buffer, params) {
339
347
  }
340
348
  return { ok: true, consumed: required };
341
349
  }
342
- function __tnEvalIrNode(node, ctx) {
350
+ function __tnEvalIrNode(node, ctx, baseOffset) {
343
351
  switch (node.op) {
344
352
  case "zero":
345
353
  return __tnToBigInt(0);
@@ -356,18 +364,22 @@ function __tnEvalIrNode(node, ctx) {
356
364
  }
357
365
  return val;
358
366
  }
359
- case "add":
360
- return __tnCheckedAdd(
361
- __tnEvalIrNode(node.left, ctx),
362
- __tnEvalIrNode(node.right, ctx)
367
+ case "add": {
368
+ const left = __tnEvalIrNode(node.left, ctx, baseOffset);
369
+ const right = __tnEvalIrNode(
370
+ node.right,
371
+ ctx,
372
+ __tnCheckedAdd(baseOffset, left)
363
373
  );
374
+ return __tnCheckedAdd(left, right);
375
+ }
364
376
  case "mul":
365
377
  return __tnCheckedMul(
366
- __tnEvalIrNode(node.left, ctx),
367
- __tnEvalIrNode(node.right, ctx)
378
+ __tnEvalIrNode(node.left, ctx, baseOffset),
379
+ __tnEvalIrNode(node.right, ctx, baseOffset)
368
380
  );
369
381
  case "align":
370
- return __tnAlign(__tnEvalIrNode(node.node, ctx), node.alignment);
382
+ return __tnAlign(__tnEvalIrNode(node.node, ctx, baseOffset), node.alignment);
371
383
  case "switch": {
372
384
  const tagVal = ctx.params[node.tag];
373
385
  if (tagVal === void 0) {
@@ -380,10 +392,10 @@ function __tnEvalIrNode(node, ctx) {
380
392
  const tagNumber = Number(tagVal);
381
393
  for (const caseNode of node.cases) {
382
394
  if (caseNode.value === tagNumber) {
383
- return __tnEvalIrNode(caseNode.node, ctx);
395
+ return __tnEvalIrNode(caseNode.node, ctx, baseOffset);
384
396
  }
385
397
  }
386
- if (node.default) return __tnEvalIrNode(node.default, ctx);
398
+ if (node.default) return __tnEvalIrNode(node.default, ctx, baseOffset);
387
399
  __tnRaiseIrError(
388
400
  "tn.ir.invalid_tag",
389
401
  `Unhandled IR switch value ${tagNumber} for '${node.tag}'`
@@ -403,9 +415,10 @@ function __tnEvalIrNode(node, ctx) {
403
415
  nestedParams[arg.name] = val;
404
416
  }
405
417
  if (ctx.buffer) {
418
+ const nestedOffset = __tnBigIntToNumber(baseOffset, "IR nested offset");
406
419
  const nestedResult = __tnInvokeValidate(
407
420
  node.typeName,
408
- ctx.buffer,
421
+ ctx.buffer.subarray(nestedOffset),
409
422
  nestedParams
410
423
  );
411
424
  if (!nestedResult.ok) {
@@ -422,6 +435,36 @@ function __tnEvalIrNode(node, ctx) {
422
435
  }
423
436
  return __tnInvokeFootprint(node.typeName, nestedParams);
424
437
  }
438
+ case "sumOverArray": {
439
+ if (!ctx.buffer) {
440
+ __tnRaiseIrError(
441
+ "tn.ir.missing_buffer",
442
+ `Jagged array '${node.fieldName}' requires buffer-backed validation`
443
+ );
444
+ }
445
+ const count = __tnBigIntToNumber(
446
+ __tnEvalIrNode(node.count, ctx, baseOffset),
447
+ `Jagged array '${node.fieldName}' count`
448
+ );
449
+ let cursor = __tnBigIntToNumber(baseOffset, "IR jagged array offset");
450
+ let total = __tnToBigInt(0);
451
+ for (let i = 0; i < count; i++) {
452
+ const result = __tnInvokeDynamicValidate(
453
+ node.elementTypeName,
454
+ ctx.buffer.subarray(cursor)
455
+ );
456
+ if (!result.ok || result.consumed === void 0) {
457
+ const code = result.code ?? "tn.ir.runtime_error";
458
+ __tnRaiseIrError(
459
+ code,
460
+ `Jagged array '${node.fieldName}' element ${i} failed validation`
461
+ );
462
+ }
463
+ cursor += __tnBigIntToNumber(result.consumed, "IR jagged element size");
464
+ total = __tnCheckedAdd(total, result.consumed);
465
+ }
466
+ return total;
467
+ }
425
468
  default:
426
469
  __tnRaiseIrError(
427
470
  "tn.ir.runtime_error",
@@ -554,8 +597,6 @@ var Date = class _Date {
554
597
  return new _Date(buffer);
555
598
  }
556
599
  };
557
- __tnRegisterFootprint("Date", (params) => Date.__tnInvokeFootprint(params));
558
- __tnRegisterValidate("Date", (buffer, params) => Date.__tnInvokeValidate(buffer, params));
559
600
  var DateBuilder = class {
560
601
  constructor() {
561
602
  this.buffer = new Uint8Array(6);
@@ -587,6 +628,12 @@ var DateBuilder = class {
587
628
  return view;
588
629
  }
589
630
  };
631
+ __tnRegisterFootprint("Date", (params) => Date.__tnInvokeFootprint(params));
632
+ __tnRegisterValidate("Date", (buffer, params) => Date.__tnInvokeValidate(buffer, params));
633
+ __tnRegisterDynamicValidate("Date", (buffer) => {
634
+ const result = Date.validate(buffer);
635
+ return { ok: result.ok, code: result.code, consumed: result.consumed === void 0 ? void 0 : __tnToBigInt(result.consumed) };
636
+ });
590
637
  var __tn_ir_Duration = {
591
638
  typeName: "Duration",
592
639
  root: { op: "const", value: 12n }
@@ -681,8 +728,6 @@ var Duration = class _Duration {
681
728
  return new _Duration(buffer);
682
729
  }
683
730
  };
684
- __tnRegisterFootprint("Duration", (params) => Duration.__tnInvokeFootprint(params));
685
- __tnRegisterValidate("Duration", (buffer, params) => Duration.__tnInvokeValidate(buffer, params));
686
731
  var DurationBuilder = class {
687
732
  constructor() {
688
733
  this.buffer = new Uint8Array(12);
@@ -711,6 +756,12 @@ var DurationBuilder = class {
711
756
  return view;
712
757
  }
713
758
  };
759
+ __tnRegisterFootprint("Duration", (params) => Duration.__tnInvokeFootprint(params));
760
+ __tnRegisterValidate("Duration", (buffer, params) => Duration.__tnInvokeValidate(buffer, params));
761
+ __tnRegisterDynamicValidate("Duration", (buffer) => {
762
+ const result = Duration.validate(buffer);
763
+ return { ok: result.ok, code: result.code, consumed: result.consumed === void 0 ? void 0 : __tnToBigInt(result.consumed) };
764
+ });
714
765
  var __tn_ir_FixedPoint = {
715
766
  typeName: "FixedPoint",
716
767
  root: { op: "const", value: 9n }
@@ -805,8 +856,6 @@ var FixedPoint = class _FixedPoint {
805
856
  return new _FixedPoint(buffer);
806
857
  }
807
858
  };
808
- __tnRegisterFootprint("FixedPoint", (params) => FixedPoint.__tnInvokeFootprint(params));
809
- __tnRegisterValidate("FixedPoint", (buffer, params) => FixedPoint.__tnInvokeValidate(buffer, params));
810
859
  var FixedPointBuilder = class {
811
860
  constructor() {
812
861
  this.buffer = new Uint8Array(9);
@@ -835,6 +884,12 @@ var FixedPointBuilder = class {
835
884
  return view;
836
885
  }
837
886
  };
887
+ __tnRegisterFootprint("FixedPoint", (params) => FixedPoint.__tnInvokeFootprint(params));
888
+ __tnRegisterValidate("FixedPoint", (buffer, params) => FixedPoint.__tnInvokeValidate(buffer, params));
889
+ __tnRegisterDynamicValidate("FixedPoint", (buffer) => {
890
+ const result = FixedPoint.validate(buffer);
891
+ return { ok: result.ok, code: result.code, consumed: result.consumed === void 0 ? void 0 : __tnToBigInt(result.consumed) };
892
+ });
838
893
  var __tn_ir_Hash = {
839
894
  typeName: "Hash",
840
895
  root: { op: "const", value: 32n }
@@ -917,8 +972,6 @@ var Hash = class _Hash {
917
972
  return new _Hash(buffer);
918
973
  }
919
974
  };
920
- __tnRegisterFootprint("Hash", (params) => Hash.__tnInvokeFootprint(params));
921
- __tnRegisterValidate("Hash", (buffer, params) => Hash.__tnInvokeValidate(buffer, params));
922
975
  var HashBuilder = class {
923
976
  constructor() {
924
977
  this.buffer = new Uint8Array(32);
@@ -946,6 +999,12 @@ var HashBuilder = class {
946
999
  return view;
947
1000
  }
948
1001
  };
1002
+ __tnRegisterFootprint("Hash", (params) => Hash.__tnInvokeFootprint(params));
1003
+ __tnRegisterValidate("Hash", (buffer, params) => Hash.__tnInvokeValidate(buffer, params));
1004
+ __tnRegisterDynamicValidate("Hash", (buffer) => {
1005
+ const result = Hash.validate(buffer);
1006
+ return { ok: result.ok, code: result.code, consumed: result.consumed === void 0 ? void 0 : __tnToBigInt(result.consumed) };
1007
+ });
949
1008
  var __tn_ir_InstructionData = {
950
1009
  typeName: "InstructionData",
951
1010
  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 } } } } }
@@ -1183,8 +1242,6 @@ var InstructionData = _InstructionData;
1183
1242
  }
1184
1243
  InstructionData2.params = params;
1185
1244
  })(InstructionData || (InstructionData = {}));
1186
- __tnRegisterFootprint("InstructionData", (params) => InstructionData.__tnInvokeFootprint(params));
1187
- __tnRegisterValidate("InstructionData", (buffer, params) => InstructionData.__tnInvokeValidate(buffer, params));
1188
1245
  var InstructionDataBuilder = class {
1189
1246
  constructor() {
1190
1247
  this.__tnCachedParams = null;
@@ -1282,6 +1339,12 @@ var InstructionDataBuilder = class {
1282
1339
  this.__tnLastBuffer = buffer;
1283
1340
  }
1284
1341
  };
1342
+ __tnRegisterFootprint("InstructionData", (params) => InstructionData.__tnInvokeFootprint(params));
1343
+ __tnRegisterValidate("InstructionData", (buffer, params) => InstructionData.__tnInvokeValidate(buffer, params));
1344
+ __tnRegisterDynamicValidate("InstructionData", (buffer) => {
1345
+ const result = InstructionData.validate(buffer);
1346
+ return { ok: result.ok, code: result.code, consumed: result.consumed === void 0 ? void 0 : __tnToBigInt(result.consumed) };
1347
+ });
1285
1348
  var __tn_ir_Pubkey = {
1286
1349
  typeName: "Pubkey",
1287
1350
  root: { op: "const", value: 32n }
@@ -1364,8 +1427,6 @@ var Pubkey = class _Pubkey {
1364
1427
  return new _Pubkey(buffer);
1365
1428
  }
1366
1429
  };
1367
- __tnRegisterFootprint("Pubkey", (params) => Pubkey.__tnInvokeFootprint(params));
1368
- __tnRegisterValidate("Pubkey", (buffer, params) => Pubkey.__tnInvokeValidate(buffer, params));
1369
1430
  var PubkeyBuilder = class {
1370
1431
  constructor() {
1371
1432
  this.buffer = new Uint8Array(32);
@@ -1393,6 +1454,12 @@ var PubkeyBuilder = class {
1393
1454
  return view;
1394
1455
  }
1395
1456
  };
1457
+ __tnRegisterFootprint("Pubkey", (params) => Pubkey.__tnInvokeFootprint(params));
1458
+ __tnRegisterValidate("Pubkey", (buffer, params) => Pubkey.__tnInvokeValidate(buffer, params));
1459
+ __tnRegisterDynamicValidate("Pubkey", (buffer) => {
1460
+ const result = Pubkey.validate(buffer);
1461
+ return { ok: result.ok, code: result.code, consumed: result.consumed === void 0 ? void 0 : __tnToBigInt(result.consumed) };
1462
+ });
1396
1463
  var __tn_ir_Signature = {
1397
1464
  typeName: "Signature",
1398
1465
  root: { op: "const", value: 64n }
@@ -1475,8 +1542,6 @@ var Signature = class _Signature {
1475
1542
  return new _Signature(buffer);
1476
1543
  }
1477
1544
  };
1478
- __tnRegisterFootprint("Signature", (params) => Signature.__tnInvokeFootprint(params));
1479
- __tnRegisterValidate("Signature", (buffer, params) => Signature.__tnInvokeValidate(buffer, params));
1480
1545
  var SignatureBuilder = class {
1481
1546
  constructor() {
1482
1547
  this.buffer = new Uint8Array(64);
@@ -1504,6 +1569,12 @@ var SignatureBuilder = class {
1504
1569
  return view;
1505
1570
  }
1506
1571
  };
1572
+ __tnRegisterFootprint("Signature", (params) => Signature.__tnInvokeFootprint(params));
1573
+ __tnRegisterValidate("Signature", (buffer, params) => Signature.__tnInvokeValidate(buffer, params));
1574
+ __tnRegisterDynamicValidate("Signature", (buffer) => {
1575
+ const result = Signature.validate(buffer);
1576
+ return { ok: result.ok, code: result.code, consumed: result.consumed === void 0 ? void 0 : __tnToBigInt(result.consumed) };
1577
+ });
1507
1578
  var __tn_ir_Timestamp = {
1508
1579
  typeName: "Timestamp",
1509
1580
  root: { op: "const", value: 8n }
@@ -1583,8 +1654,6 @@ var Timestamp = class _Timestamp {
1583
1654
  return new _Timestamp(buffer);
1584
1655
  }
1585
1656
  };
1586
- __tnRegisterFootprint("Timestamp", (params) => Timestamp.__tnInvokeFootprint(params));
1587
- __tnRegisterValidate("Timestamp", (buffer, params) => Timestamp.__tnInvokeValidate(buffer, params));
1588
1657
  var TimestampBuilder = class {
1589
1658
  constructor() {
1590
1659
  this.buffer = new Uint8Array(8);
@@ -1609,6 +1678,12 @@ var TimestampBuilder = class {
1609
1678
  return view;
1610
1679
  }
1611
1680
  };
1681
+ __tnRegisterFootprint("Timestamp", (params) => Timestamp.__tnInvokeFootprint(params));
1682
+ __tnRegisterValidate("Timestamp", (buffer, params) => Timestamp.__tnInvokeValidate(buffer, params));
1683
+ __tnRegisterDynamicValidate("Timestamp", (buffer) => {
1684
+ const result = Timestamp.validate(buffer);
1685
+ return { ok: result.ok, code: result.code, consumed: result.consumed === void 0 ? void 0 : __tnToBigInt(result.consumed) };
1686
+ });
1612
1687
 
1613
1688
  // src/passkey-manager/abi/thru/blockchain/state_proof/types.ts
1614
1689
  var __tnWarnings2 = /* @__PURE__ */ new Set();
@@ -1901,12 +1976,16 @@ if (typeof DataView !== "undefined" && !__tnHasBigIntDataView2) {
1901
1976
  }
1902
1977
  var __tnFootprintRegistry2 = {};
1903
1978
  var __tnValidateRegistry2 = {};
1979
+ var __tnDynamicValidateRegistry2 = {};
1904
1980
  function __tnRegisterFootprint2(typeName, fn) {
1905
1981
  __tnFootprintRegistry2[typeName] = fn;
1906
1982
  }
1907
1983
  function __tnRegisterValidate2(typeName, fn) {
1908
1984
  __tnValidateRegistry2[typeName] = fn;
1909
1985
  }
1986
+ function __tnRegisterDynamicValidate2(typeName, fn) {
1987
+ __tnDynamicValidateRegistry2[typeName] = fn;
1988
+ }
1910
1989
  function __tnInvokeFootprint2(typeName, params) {
1911
1990
  const fn = __tnFootprintRegistry2[typeName];
1912
1991
  if (!fn) throw new Error(`IR runtime missing footprint for ${typeName}`);
@@ -1917,12 +1996,17 @@ function __tnInvokeValidate2(typeName, buffer, params) {
1917
1996
  if (!fn) throw new Error(`IR runtime missing validate helper for ${typeName}`);
1918
1997
  return fn(buffer, params);
1919
1998
  }
1999
+ function __tnInvokeDynamicValidate2(typeName, buffer) {
2000
+ const fn = __tnDynamicValidateRegistry2[typeName];
2001
+ if (!fn) throw new Error(`IR runtime missing dynamic validate helper for ${typeName}`);
2002
+ return fn(buffer);
2003
+ }
1920
2004
  function __tnEvalFootprint2(node, ctx) {
1921
- return __tnEvalIrNode2(node, ctx);
2005
+ return __tnEvalIrNode2(node, ctx, __tnToBigInt2(0));
1922
2006
  }
1923
2007
  function __tnTryEvalIr2(node, ctx) {
1924
2008
  try {
1925
- return { ok: true, value: __tnEvalIrNode2(node, ctx) };
2009
+ return { ok: true, value: __tnEvalIrNode2(node, ctx, __tnToBigInt2(0)) };
1926
2010
  } catch (err) {
1927
2011
  return { ok: false, code: __tnNormalizeIrError2(err) };
1928
2012
  }
@@ -1946,7 +2030,7 @@ function __tnValidateIrTree2(ir, buffer, params) {
1946
2030
  }
1947
2031
  return { ok: true, consumed: required };
1948
2032
  }
1949
- function __tnEvalIrNode2(node, ctx) {
2033
+ function __tnEvalIrNode2(node, ctx, baseOffset) {
1950
2034
  switch (node.op) {
1951
2035
  case "zero":
1952
2036
  return __tnToBigInt2(0);
@@ -1963,18 +2047,22 @@ function __tnEvalIrNode2(node, ctx) {
1963
2047
  }
1964
2048
  return val;
1965
2049
  }
1966
- case "add":
1967
- return __tnCheckedAdd2(
1968
- __tnEvalIrNode2(node.left, ctx),
1969
- __tnEvalIrNode2(node.right, ctx)
2050
+ case "add": {
2051
+ const left = __tnEvalIrNode2(node.left, ctx, baseOffset);
2052
+ const right = __tnEvalIrNode2(
2053
+ node.right,
2054
+ ctx,
2055
+ __tnCheckedAdd2(baseOffset, left)
1970
2056
  );
2057
+ return __tnCheckedAdd2(left, right);
2058
+ }
1971
2059
  case "mul":
1972
2060
  return __tnCheckedMul2(
1973
- __tnEvalIrNode2(node.left, ctx),
1974
- __tnEvalIrNode2(node.right, ctx)
2061
+ __tnEvalIrNode2(node.left, ctx, baseOffset),
2062
+ __tnEvalIrNode2(node.right, ctx, baseOffset)
1975
2063
  );
1976
2064
  case "align":
1977
- return __tnAlign2(__tnEvalIrNode2(node.node, ctx), node.alignment);
2065
+ return __tnAlign2(__tnEvalIrNode2(node.node, ctx, baseOffset), node.alignment);
1978
2066
  case "switch": {
1979
2067
  const tagVal = ctx.params[node.tag];
1980
2068
  if (tagVal === void 0) {
@@ -1987,10 +2075,10 @@ function __tnEvalIrNode2(node, ctx) {
1987
2075
  const tagNumber = Number(tagVal);
1988
2076
  for (const caseNode of node.cases) {
1989
2077
  if (caseNode.value === tagNumber) {
1990
- return __tnEvalIrNode2(caseNode.node, ctx);
2078
+ return __tnEvalIrNode2(caseNode.node, ctx, baseOffset);
1991
2079
  }
1992
2080
  }
1993
- if (node.default) return __tnEvalIrNode2(node.default, ctx);
2081
+ if (node.default) return __tnEvalIrNode2(node.default, ctx, baseOffset);
1994
2082
  __tnRaiseIrError2(
1995
2083
  "tn.ir.invalid_tag",
1996
2084
  `Unhandled IR switch value ${tagNumber} for '${node.tag}'`
@@ -2010,9 +2098,10 @@ function __tnEvalIrNode2(node, ctx) {
2010
2098
  nestedParams[arg.name] = val;
2011
2099
  }
2012
2100
  if (ctx.buffer) {
2101
+ const nestedOffset = __tnBigIntToNumber2(baseOffset, "IR nested offset");
2013
2102
  const nestedResult = __tnInvokeValidate2(
2014
2103
  node.typeName,
2015
- ctx.buffer,
2104
+ ctx.buffer.subarray(nestedOffset),
2016
2105
  nestedParams
2017
2106
  );
2018
2107
  if (!nestedResult.ok) {
@@ -2029,6 +2118,36 @@ function __tnEvalIrNode2(node, ctx) {
2029
2118
  }
2030
2119
  return __tnInvokeFootprint2(node.typeName, nestedParams);
2031
2120
  }
2121
+ case "sumOverArray": {
2122
+ if (!ctx.buffer) {
2123
+ __tnRaiseIrError2(
2124
+ "tn.ir.missing_buffer",
2125
+ `Jagged array '${node.fieldName}' requires buffer-backed validation`
2126
+ );
2127
+ }
2128
+ const count = __tnBigIntToNumber2(
2129
+ __tnEvalIrNode2(node.count, ctx, baseOffset),
2130
+ `Jagged array '${node.fieldName}' count`
2131
+ );
2132
+ let cursor = __tnBigIntToNumber2(baseOffset, "IR jagged array offset");
2133
+ let total = __tnToBigInt2(0);
2134
+ for (let i = 0; i < count; i++) {
2135
+ const result = __tnInvokeDynamicValidate2(
2136
+ node.elementTypeName,
2137
+ ctx.buffer.subarray(cursor)
2138
+ );
2139
+ if (!result.ok || result.consumed === void 0) {
2140
+ const code = result.code ?? "tn.ir.runtime_error";
2141
+ __tnRaiseIrError2(
2142
+ code,
2143
+ `Jagged array '${node.fieldName}' element ${i} failed validation`
2144
+ );
2145
+ }
2146
+ cursor += __tnBigIntToNumber2(result.consumed, "IR jagged element size");
2147
+ total = __tnCheckedAdd2(total, result.consumed);
2148
+ }
2149
+ return total;
2150
+ }
2032
2151
  default:
2033
2152
  __tnRaiseIrError2(
2034
2153
  "tn.ir.runtime_error",
@@ -2052,6 +2171,18 @@ function __tnNormalizeIrError2(err) {
2052
2171
  if (message.length > 0) return `tn.ir.runtime_error: ${message}`;
2053
2172
  return "tn.ir.runtime_error";
2054
2173
  }
2174
+ __tnRegisterFootprint2("Hash", (params) => Hash.__tnInvokeFootprint(params));
2175
+ __tnRegisterValidate2("Hash", (buffer, params) => Hash.__tnInvokeValidate(buffer, params));
2176
+ __tnRegisterDynamicValidate2("Hash", (buffer) => {
2177
+ const result = Hash.validate(buffer);
2178
+ return { ok: result.ok, code: result.code, consumed: result.consumed === void 0 ? void 0 : __tnToBigInt2(result.consumed) };
2179
+ });
2180
+ __tnRegisterFootprint2("Pubkey", (params) => Pubkey.__tnInvokeFootprint(params));
2181
+ __tnRegisterValidate2("Pubkey", (buffer, params) => Pubkey.__tnInvokeValidate(buffer, params));
2182
+ __tnRegisterDynamicValidate2("Pubkey", (buffer) => {
2183
+ const result = Pubkey.validate(buffer);
2184
+ return { ok: result.ok, code: result.code, consumed: result.consumed === void 0 ? void 0 : __tnToBigInt2(result.consumed) };
2185
+ });
2055
2186
  var __tn_ir_StateProofHeader = {
2056
2187
  typeName: "StateProofHeader",
2057
2188
  root: { op: "const", value: 40n }
@@ -2141,8 +2272,6 @@ var StateProofHeader = class _StateProofHeader {
2141
2272
  return new _StateProofHeader(buffer);
2142
2273
  }
2143
2274
  };
2144
- __tnRegisterFootprint2("StateProofHeader", (params) => StateProofHeader.__tnInvokeFootprint(params));
2145
- __tnRegisterValidate2("StateProofHeader", (buffer, params) => StateProofHeader.__tnInvokeValidate(buffer, params));
2146
2275
  var StateProofHeaderBuilder = class {
2147
2276
  constructor() {
2148
2277
  this.buffer = new Uint8Array(40);
@@ -2172,6 +2301,12 @@ var StateProofHeaderBuilder = class {
2172
2301
  return view;
2173
2302
  }
2174
2303
  };
2304
+ __tnRegisterFootprint2("StateProofHeader", (params) => StateProofHeader.__tnInvokeFootprint(params));
2305
+ __tnRegisterValidate2("StateProofHeader", (buffer, params) => StateProofHeader.__tnInvokeValidate(buffer, params));
2306
+ __tnRegisterDynamicValidate2("StateProofHeader", (buffer) => {
2307
+ const result = StateProofHeader.validate(buffer);
2308
+ return { ok: result.ok, code: result.code, consumed: result.consumed === void 0 ? void 0 : __tnToBigInt2(result.consumed) };
2309
+ });
2175
2310
  var __tn_ir_StateProof = {
2176
2311
  typeName: "StateProof",
2177
2312
  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" } } } }
@@ -2743,8 +2878,6 @@ var StateProof = _StateProof;
2743
2878
  }
2744
2879
  StateProof2.params = params;
2745
2880
  })(StateProof || (StateProof = {}));
2746
- __tnRegisterFootprint2("StateProof", (params) => StateProof.__tnInvokeFootprint(params));
2747
- __tnRegisterValidate2("StateProof", (buffer, params) => StateProof.__tnInvokeValidate(buffer, params));
2748
2881
  var StateProofBuilder = class {
2749
2882
  constructor() {
2750
2883
  this.__tnPayload_proof_body = null;
@@ -2851,6 +2984,12 @@ var StateProofBuilder = class {
2851
2984
  this.__tnLastBuffer = buffer;
2852
2985
  }
2853
2986
  };
2987
+ __tnRegisterFootprint2("StateProof", (params) => StateProof.__tnInvokeFootprint(params));
2988
+ __tnRegisterValidate2("StateProof", (buffer, params) => StateProof.__tnInvokeValidate(buffer, params));
2989
+ __tnRegisterDynamicValidate2("StateProof", (buffer) => {
2990
+ const result = StateProof.validate(buffer);
2991
+ return { ok: result.ok, code: result.code, consumed: result.consumed === void 0 ? void 0 : __tnToBigInt2(result.consumed) };
2992
+ });
2854
2993
 
2855
2994
  // src/passkey-manager/abi/thru/program/passkey_manager/types.ts
2856
2995
  var __tnWarnings3 = /* @__PURE__ */ new Set();
@@ -2937,33 +3076,6 @@ function __tnCreateVariantSelector2(parent, descriptors, assign) {
2937
3076
  }
2938
3077
  };
2939
3078
  }
2940
- function __tnCreateFamWriter2(parent, fieldName, assign) {
2941
- let hasWritten = false;
2942
- return {
2943
- write(payload) {
2944
- const bytes = __tnResolveBuilderInput3(
2945
- payload,
2946
- `flexible array '${fieldName}'`
2947
- );
2948
- const copy = new Uint8Array(bytes);
2949
- assign(copy);
2950
- hasWritten = true;
2951
- return {
2952
- finish() {
2953
- return parent;
2954
- }
2955
- };
2956
- },
2957
- finish() {
2958
- if (!hasWritten) {
2959
- throw new Error(
2960
- `flexible array '${fieldName}' requires write() before finish()`
2961
- );
2962
- }
2963
- return parent;
2964
- }
2965
- };
2966
- }
2967
3079
  var __tnMask323 = __tnHasNativeBigInt3 ? (BigInt(1) << BigInt(32)) - BigInt(1) : 4294967295;
2968
3080
  var __tnSignBit323 = __tnHasNativeBigInt3 ? BigInt(1) << BigInt(31) : 2147483648;
2969
3081
  function __tnToBigInt3(value) {
@@ -3188,12 +3300,16 @@ if (typeof DataView !== "undefined" && !__tnHasBigIntDataView3) {
3188
3300
  }
3189
3301
  var __tnFootprintRegistry3 = {};
3190
3302
  var __tnValidateRegistry3 = {};
3303
+ var __tnDynamicValidateRegistry3 = {};
3191
3304
  function __tnRegisterFootprint3(typeName, fn) {
3192
3305
  __tnFootprintRegistry3[typeName] = fn;
3193
3306
  }
3194
3307
  function __tnRegisterValidate3(typeName, fn) {
3195
3308
  __tnValidateRegistry3[typeName] = fn;
3196
3309
  }
3310
+ function __tnRegisterDynamicValidate3(typeName, fn) {
3311
+ __tnDynamicValidateRegistry3[typeName] = fn;
3312
+ }
3197
3313
  function __tnInvokeFootprint3(typeName, params) {
3198
3314
  const fn = __tnFootprintRegistry3[typeName];
3199
3315
  if (!fn) throw new Error(`IR runtime missing footprint for ${typeName}`);
@@ -3204,12 +3320,17 @@ function __tnInvokeValidate3(typeName, buffer, params) {
3204
3320
  if (!fn) throw new Error(`IR runtime missing validate helper for ${typeName}`);
3205
3321
  return fn(buffer, params);
3206
3322
  }
3323
+ function __tnInvokeDynamicValidate3(typeName, buffer) {
3324
+ const fn = __tnDynamicValidateRegistry3[typeName];
3325
+ if (!fn) throw new Error(`IR runtime missing dynamic validate helper for ${typeName}`);
3326
+ return fn(buffer);
3327
+ }
3207
3328
  function __tnEvalFootprint3(node, ctx) {
3208
- return __tnEvalIrNode3(node, ctx);
3329
+ return __tnEvalIrNode3(node, ctx, __tnToBigInt3(0));
3209
3330
  }
3210
3331
  function __tnTryEvalIr3(node, ctx) {
3211
3332
  try {
3212
- return { ok: true, value: __tnEvalIrNode3(node, ctx) };
3333
+ return { ok: true, value: __tnEvalIrNode3(node, ctx, __tnToBigInt3(0)) };
3213
3334
  } catch (err) {
3214
3335
  return { ok: false, code: __tnNormalizeIrError3(err) };
3215
3336
  }
@@ -3233,7 +3354,7 @@ function __tnValidateIrTree3(ir, buffer, params) {
3233
3354
  }
3234
3355
  return { ok: true, consumed: required };
3235
3356
  }
3236
- function __tnEvalIrNode3(node, ctx) {
3357
+ function __tnEvalIrNode3(node, ctx, baseOffset) {
3237
3358
  switch (node.op) {
3238
3359
  case "zero":
3239
3360
  return __tnToBigInt3(0);
@@ -3250,18 +3371,22 @@ function __tnEvalIrNode3(node, ctx) {
3250
3371
  }
3251
3372
  return val;
3252
3373
  }
3253
- case "add":
3254
- return __tnCheckedAdd3(
3255
- __tnEvalIrNode3(node.left, ctx),
3256
- __tnEvalIrNode3(node.right, ctx)
3374
+ case "add": {
3375
+ const left = __tnEvalIrNode3(node.left, ctx, baseOffset);
3376
+ const right = __tnEvalIrNode3(
3377
+ node.right,
3378
+ ctx,
3379
+ __tnCheckedAdd3(baseOffset, left)
3257
3380
  );
3381
+ return __tnCheckedAdd3(left, right);
3382
+ }
3258
3383
  case "mul":
3259
3384
  return __tnCheckedMul3(
3260
- __tnEvalIrNode3(node.left, ctx),
3261
- __tnEvalIrNode3(node.right, ctx)
3385
+ __tnEvalIrNode3(node.left, ctx, baseOffset),
3386
+ __tnEvalIrNode3(node.right, ctx, baseOffset)
3262
3387
  );
3263
3388
  case "align":
3264
- return __tnAlign3(__tnEvalIrNode3(node.node, ctx), node.alignment);
3389
+ return __tnAlign3(__tnEvalIrNode3(node.node, ctx, baseOffset), node.alignment);
3265
3390
  case "switch": {
3266
3391
  const tagVal = ctx.params[node.tag];
3267
3392
  if (tagVal === void 0) {
@@ -3274,10 +3399,10 @@ function __tnEvalIrNode3(node, ctx) {
3274
3399
  const tagNumber = Number(tagVal);
3275
3400
  for (const caseNode of node.cases) {
3276
3401
  if (caseNode.value === tagNumber) {
3277
- return __tnEvalIrNode3(caseNode.node, ctx);
3402
+ return __tnEvalIrNode3(caseNode.node, ctx, baseOffset);
3278
3403
  }
3279
3404
  }
3280
- if (node.default) return __tnEvalIrNode3(node.default, ctx);
3405
+ if (node.default) return __tnEvalIrNode3(node.default, ctx, baseOffset);
3281
3406
  __tnRaiseIrError3(
3282
3407
  "tn.ir.invalid_tag",
3283
3408
  `Unhandled IR switch value ${tagNumber} for '${node.tag}'`
@@ -3297,9 +3422,10 @@ function __tnEvalIrNode3(node, ctx) {
3297
3422
  nestedParams[arg.name] = val;
3298
3423
  }
3299
3424
  if (ctx.buffer) {
3425
+ const nestedOffset = __tnBigIntToNumber3(baseOffset, "IR nested offset");
3300
3426
  const nestedResult = __tnInvokeValidate3(
3301
3427
  node.typeName,
3302
- ctx.buffer,
3428
+ ctx.buffer.subarray(nestedOffset),
3303
3429
  nestedParams
3304
3430
  );
3305
3431
  if (!nestedResult.ok) {
@@ -3316,6 +3442,36 @@ function __tnEvalIrNode3(node, ctx) {
3316
3442
  }
3317
3443
  return __tnInvokeFootprint3(node.typeName, nestedParams);
3318
3444
  }
3445
+ case "sumOverArray": {
3446
+ if (!ctx.buffer) {
3447
+ __tnRaiseIrError3(
3448
+ "tn.ir.missing_buffer",
3449
+ `Jagged array '${node.fieldName}' requires buffer-backed validation`
3450
+ );
3451
+ }
3452
+ const count = __tnBigIntToNumber3(
3453
+ __tnEvalIrNode3(node.count, ctx, baseOffset),
3454
+ `Jagged array '${node.fieldName}' count`
3455
+ );
3456
+ let cursor = __tnBigIntToNumber3(baseOffset, "IR jagged array offset");
3457
+ let total = __tnToBigInt3(0);
3458
+ for (let i = 0; i < count; i++) {
3459
+ const result = __tnInvokeDynamicValidate3(
3460
+ node.elementTypeName,
3461
+ ctx.buffer.subarray(cursor)
3462
+ );
3463
+ if (!result.ok || result.consumed === void 0) {
3464
+ const code = result.code ?? "tn.ir.runtime_error";
3465
+ __tnRaiseIrError3(
3466
+ code,
3467
+ `Jagged array '${node.fieldName}' element ${i} failed validation`
3468
+ );
3469
+ }
3470
+ cursor += __tnBigIntToNumber3(result.consumed, "IR jagged element size");
3471
+ total = __tnCheckedAdd3(total, result.consumed);
3472
+ }
3473
+ return total;
3474
+ }
3319
3475
  default:
3320
3476
  __tnRaiseIrError3(
3321
3477
  "tn.ir.runtime_error",
@@ -3339,6 +3495,24 @@ function __tnNormalizeIrError3(err) {
3339
3495
  if (message.length > 0) return `tn.ir.runtime_error: ${message}`;
3340
3496
  return "tn.ir.runtime_error";
3341
3497
  }
3498
+ __tnRegisterFootprint3("InstructionData", (params) => InstructionData.__tnInvokeFootprint(params));
3499
+ __tnRegisterValidate3("InstructionData", (buffer, params) => InstructionData.__tnInvokeValidate(buffer, params));
3500
+ __tnRegisterDynamicValidate3("InstructionData", (buffer) => {
3501
+ const result = InstructionData.validate(buffer);
3502
+ return { ok: result.ok, code: result.code, consumed: result.consumed === void 0 ? void 0 : __tnToBigInt3(result.consumed) };
3503
+ });
3504
+ __tnRegisterFootprint3("Pubkey", (params) => Pubkey.__tnInvokeFootprint(params));
3505
+ __tnRegisterValidate3("Pubkey", (buffer, params) => Pubkey.__tnInvokeValidate(buffer, params));
3506
+ __tnRegisterDynamicValidate3("Pubkey", (buffer) => {
3507
+ const result = Pubkey.validate(buffer);
3508
+ return { ok: result.ok, code: result.code, consumed: result.consumed === void 0 ? void 0 : __tnToBigInt3(result.consumed) };
3509
+ });
3510
+ __tnRegisterFootprint3("StateProof", (params) => StateProof.__tnInvokeFootprint(params));
3511
+ __tnRegisterValidate3("StateProof", (buffer, params) => StateProof.__tnInvokeValidate(buffer, params));
3512
+ __tnRegisterDynamicValidate3("StateProof", (buffer) => {
3513
+ const result = StateProof.validate(buffer);
3514
+ return { ok: result.ok, code: result.code, consumed: result.consumed === void 0 ? void 0 : __tnToBigInt3(result.consumed) };
3515
+ });
3342
3516
  var __tn_ir_Authority = {
3343
3517
  typeName: "Authority",
3344
3518
  root: { op: "const", value: 65n }
@@ -3435,8 +3609,6 @@ var Authority = class _Authority {
3435
3609
  return new _Authority(buffer);
3436
3610
  }
3437
3611
  };
3438
- __tnRegisterFootprint3("Authority", (params) => Authority.__tnInvokeFootprint(params));
3439
- __tnRegisterValidate3("Authority", (buffer, params) => Authority.__tnInvokeValidate(buffer, params));
3440
3612
  var AuthorityBuilder = class {
3441
3613
  constructor() {
3442
3614
  this.buffer = new Uint8Array(65);
@@ -3468,6 +3640,12 @@ var AuthorityBuilder = class {
3468
3640
  return view;
3469
3641
  }
3470
3642
  };
3643
+ __tnRegisterFootprint3("Authority", (params) => Authority.__tnInvokeFootprint(params));
3644
+ __tnRegisterValidate3("Authority", (buffer, params) => Authority.__tnInvokeValidate(buffer, params));
3645
+ __tnRegisterDynamicValidate3("Authority", (buffer) => {
3646
+ const result = Authority.validate(buffer);
3647
+ return { ok: result.ok, code: result.code, consumed: result.consumed === void 0 ? void 0 : __tnToBigInt3(result.consumed) };
3648
+ });
3471
3649
  var __tn_ir_P256Point = {
3472
3650
  typeName: "P256Point",
3473
3651
  root: { op: "const", value: 32n }
@@ -3549,9 +3727,13 @@ _P256Point.__tnElementCount = 32;
3549
3727
  var P256Point = _P256Point;
3550
3728
  __tnRegisterFootprint3("P256Point", (params) => P256Point.__tnInvokeFootprint(params));
3551
3729
  __tnRegisterValidate3("P256Point", (buffer, params) => P256Point.__tnInvokeValidate(buffer, params));
3730
+ __tnRegisterDynamicValidate3("P256Point", (buffer) => {
3731
+ const result = P256Point.validate(buffer);
3732
+ return { ok: result.ok, code: result.code, consumed: result.consumed === void 0 ? void 0 : __tnToBigInt3(result.consumed) };
3733
+ });
3552
3734
  var __tn_ir_RemoveAuthorityArgs = {
3553
3735
  typeName: "RemoveAuthorityArgs",
3554
- root: { op: "const", value: 1n }
3736
+ root: { op: "const", value: 3n }
3555
3737
  };
3556
3738
  var RemoveAuthorityArgs = class _RemoveAuthorityArgs {
3557
3739
  constructor(buffer) {
@@ -3569,12 +3751,26 @@ var RemoveAuthorityArgs = class _RemoveAuthorityArgs {
3569
3751
  const buffer = builder.build();
3570
3752
  return _RemoveAuthorityArgs.from_array(buffer);
3571
3753
  }
3572
- get_auth_idx() {
3754
+ get_wallet_account_idx() {
3755
+ const offset = 0;
3756
+ return this.view.getUint16(offset, true);
3757
+ }
3758
+ set_wallet_account_idx(value) {
3573
3759
  const offset = 0;
3760
+ this.view.setUint16(offset, value, true);
3761
+ }
3762
+ get wallet_account_idx() {
3763
+ return this.get_wallet_account_idx();
3764
+ }
3765
+ set wallet_account_idx(value) {
3766
+ this.set_wallet_account_idx(value);
3767
+ }
3768
+ get_auth_idx() {
3769
+ const offset = 2;
3574
3770
  return this.view.getUint8(offset);
3575
3771
  }
3576
3772
  set_auth_idx(value) {
3577
- const offset = 0;
3773
+ const offset = 2;
3578
3774
  this.view.setUint8(offset, value);
3579
3775
  }
3580
3776
  get auth_idx() {
@@ -3607,13 +3803,14 @@ var RemoveAuthorityArgs = class _RemoveAuthorityArgs {
3607
3803
  return __tnBigIntToNumber3(irResult, "RemoveAuthorityArgs::footprint");
3608
3804
  }
3609
3805
  static validate(buffer, _opts) {
3610
- if (buffer.length < 1) return { ok: false, code: "tn.buffer_too_small", consumed: 1 };
3611
- return { ok: true, consumed: 1 };
3806
+ if (buffer.length < 3) return { ok: false, code: "tn.buffer_too_small", consumed: 3 };
3807
+ return { ok: true, consumed: 3 };
3612
3808
  }
3613
- static new(auth_idx) {
3614
- const buffer = new Uint8Array(1);
3809
+ static new(wallet_account_idx, auth_idx) {
3810
+ const buffer = new Uint8Array(3);
3615
3811
  const view = new DataView(buffer.buffer);
3616
- view.setUint8(0, auth_idx);
3812
+ view.setUint16(0, wallet_account_idx, true);
3813
+ view.setUint8(2, auth_idx);
3617
3814
  return new _RemoveAuthorityArgs(buffer);
3618
3815
  }
3619
3816
  static from_array(buffer) {
@@ -3628,15 +3825,17 @@ var RemoveAuthorityArgs = class _RemoveAuthorityArgs {
3628
3825
  return new _RemoveAuthorityArgs(buffer);
3629
3826
  }
3630
3827
  };
3631
- __tnRegisterFootprint3("RemoveAuthorityArgs", (params) => RemoveAuthorityArgs.__tnInvokeFootprint(params));
3632
- __tnRegisterValidate3("RemoveAuthorityArgs", (buffer, params) => RemoveAuthorityArgs.__tnInvokeValidate(buffer, params));
3633
3828
  var RemoveAuthorityArgsBuilder = class {
3634
3829
  constructor() {
3635
- this.buffer = new Uint8Array(1);
3830
+ this.buffer = new Uint8Array(3);
3636
3831
  this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);
3637
3832
  }
3833
+ set_wallet_account_idx(value) {
3834
+ this.view.setUint16(0, value, true);
3835
+ return this;
3836
+ }
3638
3837
  set_auth_idx(value) {
3639
- this.view.setUint8(0, value);
3838
+ this.view.setUint8(2, value);
3640
3839
  return this;
3641
3840
  }
3642
3841
  build() {
@@ -3653,6 +3852,12 @@ var RemoveAuthorityArgsBuilder = class {
3653
3852
  return view;
3654
3853
  }
3655
3854
  };
3855
+ __tnRegisterFootprint3("RemoveAuthorityArgs", (params) => RemoveAuthorityArgs.__tnInvokeFootprint(params));
3856
+ __tnRegisterValidate3("RemoveAuthorityArgs", (buffer, params) => RemoveAuthorityArgs.__tnInvokeValidate(buffer, params));
3857
+ __tnRegisterDynamicValidate3("RemoveAuthorityArgs", (buffer) => {
3858
+ const result = RemoveAuthorityArgs.validate(buffer);
3859
+ return { ok: result.ok, code: result.code, consumed: result.consumed === void 0 ? void 0 : __tnToBigInt3(result.consumed) };
3860
+ });
3656
3861
  var __tn_ir_Seed32 = {
3657
3862
  typeName: "Seed32",
3658
3863
  root: { op: "const", value: 32n }
@@ -3734,6 +3939,10 @@ _Seed32.__tnElementCount = 32;
3734
3939
  var Seed32 = _Seed32;
3735
3940
  __tnRegisterFootprint3("Seed32", (params) => Seed32.__tnInvokeFootprint(params));
3736
3941
  __tnRegisterValidate3("Seed32", (buffer, params) => Seed32.__tnInvokeValidate(buffer, params));
3942
+ __tnRegisterDynamicValidate3("Seed32", (buffer) => {
3943
+ const result = Seed32.validate(buffer);
3944
+ return { ok: result.ok, code: result.code, consumed: result.consumed === void 0 ? void 0 : __tnToBigInt3(result.consumed) };
3945
+ });
3737
3946
  var __tn_ir_TransferArgs = {
3738
3947
  typeName: "TransferArgs",
3739
3948
  root: { op: "const", value: 12n }
@@ -3843,8 +4052,6 @@ var TransferArgs = class _TransferArgs {
3843
4052
  return new _TransferArgs(buffer);
3844
4053
  }
3845
4054
  };
3846
- __tnRegisterFootprint3("TransferArgs", (params) => TransferArgs.__tnInvokeFootprint(params));
3847
- __tnRegisterValidate3("TransferArgs", (buffer, params) => TransferArgs.__tnInvokeValidate(buffer, params));
3848
4055
  var TransferArgsBuilder = class {
3849
4056
  constructor() {
3850
4057
  this.buffer = new Uint8Array(12);
@@ -3877,9 +4084,15 @@ var TransferArgsBuilder = class {
3877
4084
  return view;
3878
4085
  }
3879
4086
  };
4087
+ __tnRegisterFootprint3("TransferArgs", (params) => TransferArgs.__tnInvokeFootprint(params));
4088
+ __tnRegisterValidate3("TransferArgs", (buffer, params) => TransferArgs.__tnInvokeValidate(buffer, params));
4089
+ __tnRegisterDynamicValidate3("TransferArgs", (buffer) => {
4090
+ const result = TransferArgs.validate(buffer);
4091
+ return { ok: result.ok, code: result.code, consumed: result.consumed === void 0 ? void 0 : __tnToBigInt3(result.consumed) };
4092
+ });
3880
4093
  var __tn_ir_ValidateArgs = {
3881
4094
  typeName: "ValidateArgs",
3882
- 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: "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 } } } } }
4095
+ 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" }] } } } }
3883
4096
  };
3884
4097
  var _ValidateArgs = class _ValidateArgs {
3885
4098
  constructor(buffer, params, fieldContext) {
@@ -3931,14 +4144,6 @@ var _ValidateArgs = class _ValidateArgs {
3931
4144
  }
3932
4145
  throw new Error("ValidateArgs: field reference '" + path + "' is not available; provide fieldContext when creating this view");
3933
4146
  }
3934
- static builder() {
3935
- return new ValidateArgsBuilder();
3936
- }
3937
- static fromBuilder(builder) {
3938
- const buffer = builder.build();
3939
- const params = builder.dynamicParams();
3940
- return _ValidateArgs.from_array(buffer, { params });
3941
- }
3942
4147
  static __tnComputeSequentialLayout(view, buffer) {
3943
4148
  const offsets = /* @__PURE__ */ Object.create(null);
3944
4149
  const __tnLength = buffer.length;
@@ -3976,7 +4181,7 @@ var _ValidateArgs = class _ValidateArgs {
3976
4181
  offsets["client_data"] = __tnCursorMutable;
3977
4182
  if (__tnCursorMutable + __tnArrayBytes_client_data > __tnLength) return null;
3978
4183
  __tnCursorMutable += __tnArrayBytes_client_data;
3979
- return { params: null, offsets, derived: null };
4184
+ return null;
3980
4185
  }
3981
4186
  static __tnExtractParams(view, buffer) {
3982
4187
  if (buffer.length < 69) {
@@ -4160,6 +4365,29 @@ var _ValidateArgs = class _ValidateArgs {
4160
4365
  set client_data(value) {
4161
4366
  this.set_client_data(value);
4162
4367
  }
4368
+ get_target_instruction() {
4369
+ const offset = this.__tnGetDynamicOffset("target_instruction");
4370
+ const tail = this.buffer.subarray(offset);
4371
+ const validation = InstructionData.validate(tail);
4372
+ if (!validation.ok || validation.consumed === void 0) {
4373
+ throw new Error("ValidateArgs: failed to read field 'target_instruction' (invalid nested payload)");
4374
+ }
4375
+ const length = validation.consumed;
4376
+ const slice = tail.subarray(0, length);
4377
+ const opts = validation.params ? { params: validation.params } : void 0;
4378
+ return InstructionData.from_array(slice, opts);
4379
+ }
4380
+ set_target_instruction(value) {
4381
+ const sourceBytes = value.buffer;
4382
+ const offset = this.__tnGetDynamicOffset("target_instruction");
4383
+ this.buffer.set(sourceBytes, offset);
4384
+ }
4385
+ get target_instruction() {
4386
+ return this.get_target_instruction();
4387
+ }
4388
+ set target_instruction(value) {
4389
+ this.set_target_instruction(value);
4390
+ }
4163
4391
  static __tnFootprintInternal(__tnParams) {
4164
4392
  return __tnEvalFootprint3(__tn_ir_ValidateArgs.root, { params: __tnParams });
4165
4393
  }
@@ -4275,188 +4503,51 @@ var ValidateArgs = _ValidateArgs;
4275
4503
  })(ValidateArgs || (ValidateArgs = {}));
4276
4504
  __tnRegisterFootprint3("ValidateArgs", (params) => ValidateArgs.__tnInvokeFootprint(params));
4277
4505
  __tnRegisterValidate3("ValidateArgs", (buffer, params) => ValidateArgs.__tnInvokeValidate(buffer, params));
4278
- var ValidateArgsBuilder = class {
4279
- constructor() {
4280
- this.__tnCachedParams = null;
4281
- this.__tnLastBuffer = null;
4282
- this.__tnLastParams = null;
4283
- this.__tnFam_authenticator_data = null;
4284
- this.__tnFam_authenticator_dataCount = null;
4285
- this.__tnFam_client_data = null;
4286
- this.__tnFam_client_dataCount = null;
4287
- this.buffer = new Uint8Array(71);
4288
- this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);
4506
+ __tnRegisterDynamicValidate3("ValidateArgs", (buffer) => {
4507
+ const result = ValidateArgs.validate(buffer);
4508
+ return { ok: result.ok, code: result.code, consumed: result.consumed === void 0 ? void 0 : __tnToBigInt3(result.consumed) };
4509
+ });
4510
+ var __tn_ir_WalletAccount = {
4511
+ typeName: "WalletAccount",
4512
+ root: { op: "const", value: 9n }
4513
+ };
4514
+ var WalletAccount = class _WalletAccount {
4515
+ constructor(buffer) {
4516
+ this.buffer = buffer;
4517
+ this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);
4289
4518
  }
4290
- __tnInvalidate() {
4291
- this.__tnCachedParams = null;
4292
- this.__tnLastBuffer = null;
4293
- this.__tnLastParams = null;
4519
+ static __tnCreateView(buffer, opts) {
4520
+ if (!buffer || buffer.length === void 0) throw new Error("WalletAccount.__tnCreateView requires a Uint8Array");
4521
+ return new _WalletAccount(new Uint8Array(buffer));
4294
4522
  }
4295
- set_wallet_account_idx(value) {
4296
- this.view.setUint16(0, value, true);
4297
- this.__tnInvalidate();
4298
- return this;
4523
+ static builder() {
4524
+ return new WalletAccountBuilder();
4299
4525
  }
4300
- set_auth_idx(value) {
4301
- this.view.setUint8(2, value);
4302
- this.__tnInvalidate();
4303
- return this;
4526
+ static fromBuilder(builder) {
4527
+ const buffer = builder.build();
4528
+ return _WalletAccount.from_array(buffer);
4304
4529
  }
4305
- set_signature_r(value) {
4306
- if (value.length !== 32) throw new Error("signature_r expects 32 bytes");
4307
- this.buffer.set(value, 3);
4308
- this.__tnInvalidate();
4309
- return this;
4530
+ get_num_auth() {
4531
+ const offset = 0;
4532
+ return this.view.getUint8(offset);
4310
4533
  }
4311
- set_signature_s(value) {
4312
- if (value.length !== 32) throw new Error("signature_s expects 32 bytes");
4313
- this.buffer.set(value, 35);
4314
- this.__tnInvalidate();
4315
- return this;
4534
+ set_num_auth(value) {
4535
+ const offset = 0;
4536
+ this.view.setUint8(offset, value);
4316
4537
  }
4317
- set_authenticator_data_len(value) {
4318
- this.view.setUint16(67, value, true);
4319
- this.__tnInvalidate();
4320
- return this;
4538
+ get num_auth() {
4539
+ return this.get_num_auth();
4321
4540
  }
4322
- set_client_data_len(value) {
4323
- this.view.setUint16(69, value, true);
4324
- this.__tnInvalidate();
4325
- return this;
4541
+ set num_auth(value) {
4542
+ this.set_num_auth(value);
4326
4543
  }
4327
- authenticator_data() {
4328
- if (!this.__tnFamWriter_authenticator_data) {
4329
- this.__tnFamWriter_authenticator_data = __tnCreateFamWriter2(this, "authenticator_data", (payload) => {
4330
- const bytes = new Uint8Array(payload);
4331
- const elementCount = bytes.length;
4332
- this.__tnFam_authenticator_data = bytes;
4333
- this.__tnFam_authenticator_dataCount = elementCount;
4334
- this.set_authenticator_data_len(elementCount);
4335
- this.__tnInvalidate();
4336
- });
4337
- }
4338
- return this.__tnFamWriter_authenticator_data;
4544
+ get_nonce() {
4545
+ const offset = 1;
4546
+ return this.view.getBigUint64(offset, true);
4339
4547
  }
4340
- client_data() {
4341
- if (!this.__tnFamWriter_client_data) {
4342
- this.__tnFamWriter_client_data = __tnCreateFamWriter2(this, "client_data", (payload) => {
4343
- const bytes = new Uint8Array(payload);
4344
- const elementCount = bytes.length;
4345
- this.__tnFam_client_data = bytes;
4346
- this.__tnFam_client_dataCount = elementCount;
4347
- this.set_client_data_len(elementCount);
4348
- this.__tnInvalidate();
4349
- });
4350
- }
4351
- return this.__tnFamWriter_client_data;
4352
- }
4353
- build() {
4354
- const params = this.__tnComputeParams();
4355
- const size = ValidateArgs.footprintFromParams(params);
4356
- const buffer = new Uint8Array(size);
4357
- this.__tnWriteInto(buffer);
4358
- this.__tnValidateOrThrow(buffer, params);
4359
- return buffer;
4360
- }
4361
- buildInto(target, offset = 0) {
4362
- const params = this.__tnComputeParams();
4363
- const size = ValidateArgs.footprintFromParams(params);
4364
- if (target.length - offset < size) throw new Error("ValidateArgsBuilder: target buffer too small");
4365
- const slice = target.subarray(offset, offset + size);
4366
- this.__tnWriteInto(slice);
4367
- this.__tnValidateOrThrow(slice, params);
4368
- return target;
4369
- }
4370
- finish() {
4371
- const buffer = this.build();
4372
- const params = this.__tnLastParams ?? this.__tnComputeParams();
4373
- const view = ValidateArgs.from_array(buffer, { params });
4374
- if (!view) throw new Error("ValidateArgsBuilder: failed to finalize view");
4375
- return view;
4376
- }
4377
- finishView() {
4378
- return this.finish();
4379
- }
4380
- dynamicParams() {
4381
- return this.__tnComputeParams();
4382
- }
4383
- __tnComputeParams() {
4384
- if (this.__tnCachedParams) return this.__tnCachedParams;
4385
- const params = ValidateArgs.Params.fromValues({
4386
- authenticator_data_authenticator_data_len: (() => {
4387
- if (this.__tnFam_authenticator_dataCount === null) throw new Error("ValidateArgsBuilder: field 'authenticator_data' must be written before computing params");
4388
- return __tnToBigInt3(this.__tnFam_authenticator_dataCount);
4389
- })(),
4390
- client_data_client_data_len: (() => {
4391
- if (this.__tnFam_client_dataCount === null) throw new Error("ValidateArgsBuilder: field 'client_data' must be written before computing params");
4392
- return __tnToBigInt3(this.__tnFam_client_dataCount);
4393
- })()
4394
- });
4395
- this.__tnCachedParams = params;
4396
- return params;
4397
- }
4398
- __tnWriteInto(target) {
4399
- target.set(this.buffer, 0);
4400
- let cursor = this.buffer.length;
4401
- const __tnLocal_authenticator_data_bytes = this.__tnFam_authenticator_data;
4402
- if (!__tnLocal_authenticator_data_bytes) throw new Error("ValidateArgsBuilder: field 'authenticator_data' must be written before build");
4403
- target.set(__tnLocal_authenticator_data_bytes, cursor);
4404
- cursor += __tnLocal_authenticator_data_bytes.length;
4405
- const __tnLocal_client_data_bytes = this.__tnFam_client_data;
4406
- if (!__tnLocal_client_data_bytes) throw new Error("ValidateArgsBuilder: field 'client_data' must be written before build");
4407
- target.set(__tnLocal_client_data_bytes, cursor);
4408
- cursor += __tnLocal_client_data_bytes.length;
4409
- }
4410
- __tnValidateOrThrow(buffer, params) {
4411
- const result = ValidateArgs.validate(buffer, { params });
4412
- if (!result.ok) {
4413
- throw new Error(`${ValidateArgs}Builder: builder produced invalid buffer (code=${result.code ?? "unknown"})`);
4414
- }
4415
- this.__tnLastParams = result.params ?? params;
4416
- this.__tnLastBuffer = buffer;
4417
- }
4418
- };
4419
- var __tn_ir_WalletAccount = {
4420
- typeName: "WalletAccount",
4421
- root: { op: "const", value: 9n }
4422
- };
4423
- var WalletAccount = class _WalletAccount {
4424
- constructor(buffer) {
4425
- this.buffer = buffer;
4426
- this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);
4427
- }
4428
- static __tnCreateView(buffer, opts) {
4429
- if (!buffer || buffer.length === void 0) throw new Error("WalletAccount.__tnCreateView requires a Uint8Array");
4430
- return new _WalletAccount(new Uint8Array(buffer));
4431
- }
4432
- static builder() {
4433
- return new WalletAccountBuilder();
4434
- }
4435
- static fromBuilder(builder) {
4436
- const buffer = builder.build();
4437
- return _WalletAccount.from_array(buffer);
4438
- }
4439
- get_num_auth() {
4440
- const offset = 0;
4441
- return this.view.getUint8(offset);
4442
- }
4443
- set_num_auth(value) {
4444
- const offset = 0;
4445
- this.view.setUint8(offset, value);
4446
- }
4447
- get num_auth() {
4448
- return this.get_num_auth();
4449
- }
4450
- set num_auth(value) {
4451
- this.set_num_auth(value);
4452
- }
4453
- get_nonce() {
4454
- const offset = 1;
4455
- return this.view.getBigUint64(offset, true);
4456
- }
4457
- set_nonce(value) {
4458
- const offset = 1;
4459
- this.view.setBigUint64(offset, value, true);
4548
+ set_nonce(value) {
4549
+ const offset = 1;
4550
+ this.view.setBigUint64(offset, value, true);
4460
4551
  }
4461
4552
  get nonce() {
4462
4553
  return this.get_nonce();
@@ -4510,8 +4601,6 @@ var WalletAccount = class _WalletAccount {
4510
4601
  return new _WalletAccount(buffer);
4511
4602
  }
4512
4603
  };
4513
- __tnRegisterFootprint3("WalletAccount", (params) => WalletAccount.__tnInvokeFootprint(params));
4514
- __tnRegisterValidate3("WalletAccount", (buffer, params) => WalletAccount.__tnInvokeValidate(buffer, params));
4515
4604
  var WalletAccountBuilder = class {
4516
4605
  constructor() {
4517
4606
  this.buffer = new Uint8Array(9);
@@ -4540,6 +4629,12 @@ var WalletAccountBuilder = class {
4540
4629
  return view;
4541
4630
  }
4542
4631
  };
4632
+ __tnRegisterFootprint3("WalletAccount", (params) => WalletAccount.__tnInvokeFootprint(params));
4633
+ __tnRegisterValidate3("WalletAccount", (buffer, params) => WalletAccount.__tnInvokeValidate(buffer, params));
4634
+ __tnRegisterDynamicValidate3("WalletAccount", (buffer) => {
4635
+ const result = WalletAccount.validate(buffer);
4636
+ return { ok: result.ok, code: result.code, consumed: result.consumed === void 0 ? void 0 : __tnToBigInt3(result.consumed) };
4637
+ });
4543
4638
  var __tn_ir_WalletCreatedEventData = {
4544
4639
  typeName: "WalletCreatedEventData",
4545
4640
  root: { op: "const", value: 97n }
@@ -4631,8 +4726,6 @@ var WalletCreatedEventData = class _WalletCreatedEventData {
4631
4726
  return new _WalletCreatedEventData(buffer);
4632
4727
  }
4633
4728
  };
4634
- __tnRegisterFootprint3("WalletCreatedEventData", (params) => WalletCreatedEventData.__tnInvokeFootprint(params));
4635
- __tnRegisterValidate3("WalletCreatedEventData", (buffer, params) => WalletCreatedEventData.__tnInvokeValidate(buffer, params));
4636
4729
  var WalletCreatedEventDataBuilder = class {
4637
4730
  constructor() {
4638
4731
  this.buffer = new Uint8Array(97);
@@ -4662,6 +4755,12 @@ var WalletCreatedEventDataBuilder = class {
4662
4755
  return view;
4663
4756
  }
4664
4757
  };
4758
+ __tnRegisterFootprint3("WalletCreatedEventData", (params) => WalletCreatedEventData.__tnInvokeFootprint(params));
4759
+ __tnRegisterValidate3("WalletCreatedEventData", (buffer, params) => WalletCreatedEventData.__tnInvokeValidate(buffer, params));
4760
+ __tnRegisterDynamicValidate3("WalletCreatedEventData", (buffer) => {
4761
+ const result = WalletCreatedEventData.validate(buffer);
4762
+ return { ok: result.ok, code: result.code, consumed: result.consumed === void 0 ? void 0 : __tnToBigInt3(result.consumed) };
4763
+ });
4665
4764
  var __tn_ir_WalletTransferEventData = {
4666
4765
  typeName: "WalletTransferEventData",
4667
4766
  root: { op: "const", value: 72n }
@@ -4767,8 +4866,6 @@ var WalletTransferEventData = class _WalletTransferEventData {
4767
4866
  return new _WalletTransferEventData(buffer);
4768
4867
  }
4769
4868
  };
4770
- __tnRegisterFootprint3("WalletTransferEventData", (params) => WalletTransferEventData.__tnInvokeFootprint(params));
4771
- __tnRegisterValidate3("WalletTransferEventData", (buffer, params) => WalletTransferEventData.__tnInvokeValidate(buffer, params));
4772
4869
  var WalletTransferEventDataBuilder = class {
4773
4870
  constructor() {
4774
4871
  this.buffer = new Uint8Array(72);
@@ -4803,6 +4900,12 @@ var WalletTransferEventDataBuilder = class {
4803
4900
  return view;
4804
4901
  }
4805
4902
  };
4903
+ __tnRegisterFootprint3("WalletTransferEventData", (params) => WalletTransferEventData.__tnInvokeFootprint(params));
4904
+ __tnRegisterValidate3("WalletTransferEventData", (buffer, params) => WalletTransferEventData.__tnInvokeValidate(buffer, params));
4905
+ __tnRegisterDynamicValidate3("WalletTransferEventData", (buffer) => {
4906
+ const result = WalletTransferEventData.validate(buffer);
4907
+ return { ok: result.ok, code: result.code, consumed: result.consumed === void 0 ? void 0 : __tnToBigInt3(result.consumed) };
4908
+ });
4806
4909
  var __tn_ir_WalletValidatedEventData = {
4807
4910
  typeName: "WalletValidatedEventData",
4808
4911
  root: { op: "const", value: 40n }
@@ -4892,8 +4995,6 @@ var WalletValidatedEventData = class _WalletValidatedEventData {
4892
4995
  return new _WalletValidatedEventData(buffer);
4893
4996
  }
4894
4997
  };
4895
- __tnRegisterFootprint3("WalletValidatedEventData", (params) => WalletValidatedEventData.__tnInvokeFootprint(params));
4896
- __tnRegisterValidate3("WalletValidatedEventData", (buffer, params) => WalletValidatedEventData.__tnInvokeValidate(buffer, params));
4897
4998
  var WalletValidatedEventDataBuilder = class {
4898
4999
  constructor() {
4899
5000
  this.buffer = new Uint8Array(40);
@@ -4923,9 +5024,15 @@ var WalletValidatedEventDataBuilder = class {
4923
5024
  return view;
4924
5025
  }
4925
5026
  };
5027
+ __tnRegisterFootprint3("WalletValidatedEventData", (params) => WalletValidatedEventData.__tnInvokeFootprint(params));
5028
+ __tnRegisterValidate3("WalletValidatedEventData", (buffer, params) => WalletValidatedEventData.__tnInvokeValidate(buffer, params));
5029
+ __tnRegisterDynamicValidate3("WalletValidatedEventData", (buffer) => {
5030
+ const result = WalletValidatedEventData.validate(buffer);
5031
+ return { ok: result.ok, code: result.code, consumed: result.consumed === void 0 ? void 0 : __tnToBigInt3(result.consumed) };
5032
+ });
4926
5033
  var __tn_ir_AddAuthorityArgs = {
4927
5034
  typeName: "AddAuthorityArgs",
4928
- root: { op: "const", value: 65n }
5035
+ root: { op: "const", value: 67n }
4929
5036
  };
4930
5037
  var AddAuthorityArgs = class _AddAuthorityArgs {
4931
5038
  constructor(buffer) {
@@ -4943,14 +5050,28 @@ var AddAuthorityArgs = class _AddAuthorityArgs {
4943
5050
  const buffer = builder.build();
4944
5051
  return _AddAuthorityArgs.from_array(buffer);
4945
5052
  }
4946
- get_authority() {
5053
+ get_wallet_account_idx() {
4947
5054
  const offset = 0;
5055
+ return this.view.getUint16(offset, true);
5056
+ }
5057
+ set_wallet_account_idx(value) {
5058
+ const offset = 0;
5059
+ this.view.setUint16(offset, value, true);
5060
+ }
5061
+ get wallet_account_idx() {
5062
+ return this.get_wallet_account_idx();
5063
+ }
5064
+ set wallet_account_idx(value) {
5065
+ this.set_wallet_account_idx(value);
5066
+ }
5067
+ get_authority() {
5068
+ const offset = 2;
4948
5069
  const slice = this.buffer.subarray(offset, offset + 65);
4949
5070
  return Authority.from_array(slice);
4950
5071
  }
4951
5072
  set_authority(value) {
4952
5073
  const sourceBytes = value.buffer;
4953
- const offset = 0;
5074
+ const offset = 2;
4954
5075
  this.buffer.set(sourceBytes, offset);
4955
5076
  }
4956
5077
  get authority() {
@@ -4983,8 +5104,8 @@ var AddAuthorityArgs = class _AddAuthorityArgs {
4983
5104
  return __tnBigIntToNumber3(irResult, "AddAuthorityArgs::footprint");
4984
5105
  }
4985
5106
  static validate(buffer, _opts) {
4986
- if (buffer.length < 65) return { ok: false, code: "tn.buffer_too_small", consumed: 65 };
4987
- return { ok: true, consumed: 65 };
5107
+ if (buffer.length < 67) return { ok: false, code: "tn.buffer_too_small", consumed: 67 };
5108
+ return { ok: true, consumed: 67 };
4988
5109
  }
4989
5110
  static from_array(buffer) {
4990
5111
  if (!buffer || buffer.length === void 0) {
@@ -4998,16 +5119,18 @@ var AddAuthorityArgs = class _AddAuthorityArgs {
4998
5119
  return new _AddAuthorityArgs(buffer);
4999
5120
  }
5000
5121
  };
5001
- __tnRegisterFootprint3("AddAuthorityArgs", (params) => AddAuthorityArgs.__tnInvokeFootprint(params));
5002
- __tnRegisterValidate3("AddAuthorityArgs", (buffer, params) => AddAuthorityArgs.__tnInvokeValidate(buffer, params));
5003
5122
  var AddAuthorityArgsBuilder = class {
5004
5123
  constructor() {
5005
- this.buffer = new Uint8Array(65);
5124
+ this.buffer = new Uint8Array(67);
5006
5125
  this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);
5007
5126
  }
5127
+ set_wallet_account_idx(value) {
5128
+ this.view.setUint16(0, value, true);
5129
+ return this;
5130
+ }
5008
5131
  set_authority(value) {
5009
5132
  if (value.length !== 65) throw new Error("authority expects 65 bytes");
5010
- this.buffer.set(value, 0);
5133
+ this.buffer.set(value, 2);
5011
5134
  return this;
5012
5135
  }
5013
5136
  build() {
@@ -5024,6 +5147,12 @@ var AddAuthorityArgsBuilder = class {
5024
5147
  return view;
5025
5148
  }
5026
5149
  };
5150
+ __tnRegisterFootprint3("AddAuthorityArgs", (params) => AddAuthorityArgs.__tnInvokeFootprint(params));
5151
+ __tnRegisterValidate3("AddAuthorityArgs", (buffer, params) => AddAuthorityArgs.__tnInvokeValidate(buffer, params));
5152
+ __tnRegisterDynamicValidate3("AddAuthorityArgs", (buffer) => {
5153
+ const result = AddAuthorityArgs.validate(buffer);
5154
+ return { ok: result.ok, code: result.code, consumed: result.consumed === void 0 ? void 0 : __tnToBigInt3(result.consumed) };
5155
+ });
5027
5156
  var __tn_ir_CredentialLookup = {
5028
5157
  typeName: "CredentialLookup",
5029
5158
  root: { op: "const", value: 32n }
@@ -5099,8 +5228,6 @@ var CredentialLookup = class _CredentialLookup {
5099
5228
  return new _CredentialLookup(buffer);
5100
5229
  }
5101
5230
  };
5102
- __tnRegisterFootprint3("CredentialLookup", (params) => CredentialLookup.__tnInvokeFootprint(params));
5103
- __tnRegisterValidate3("CredentialLookup", (buffer, params) => CredentialLookup.__tnInvokeValidate(buffer, params));
5104
5231
  var CredentialLookupBuilder = class {
5105
5232
  constructor() {
5106
5233
  this.buffer = new Uint8Array(32);
@@ -5125,6 +5252,12 @@ var CredentialLookupBuilder = class {
5125
5252
  return view;
5126
5253
  }
5127
5254
  };
5255
+ __tnRegisterFootprint3("CredentialLookup", (params) => CredentialLookup.__tnInvokeFootprint(params));
5256
+ __tnRegisterValidate3("CredentialLookup", (buffer, params) => CredentialLookup.__tnInvokeValidate(buffer, params));
5257
+ __tnRegisterDynamicValidate3("CredentialLookup", (buffer) => {
5258
+ const result = CredentialLookup.validate(buffer);
5259
+ return { ok: result.ok, code: result.code, consumed: result.consumed === void 0 ? void 0 : __tnToBigInt3(result.consumed) };
5260
+ });
5128
5261
  var __tn_ir_CredentialRegisteredEventData = {
5129
5262
  typeName: "CredentialRegisteredEventData",
5130
5263
  root: { op: "const", value: 64n }
@@ -5216,8 +5349,6 @@ var CredentialRegisteredEventData = class _CredentialRegisteredEventData {
5216
5349
  return new _CredentialRegisteredEventData(buffer);
5217
5350
  }
5218
5351
  };
5219
- __tnRegisterFootprint3("CredentialRegisteredEventData", (params) => CredentialRegisteredEventData.__tnInvokeFootprint(params));
5220
- __tnRegisterValidate3("CredentialRegisteredEventData", (buffer, params) => CredentialRegisteredEventData.__tnInvokeValidate(buffer, params));
5221
5352
  var CredentialRegisteredEventDataBuilder = class {
5222
5353
  constructor() {
5223
5354
  this.buffer = new Uint8Array(64);
@@ -5247,344 +5378,12 @@ var CredentialRegisteredEventDataBuilder = class {
5247
5378
  return view;
5248
5379
  }
5249
5380
  };
5250
- var __tn_ir_InvokeArgs = {
5251
- typeName: "InvokeArgs",
5252
- root: { op: "align", alignment: 1, node: { op: "add", left: { op: "add", left: { op: "align", alignment: 1, node: { op: "const", value: 32n } }, right: { op: "align", alignment: 2, node: { op: "const", value: 2n } } }, right: { op: "align", alignment: 1, node: { op: "mul", left: { op: "field", param: "instr.instr_len" }, right: { op: "const", value: 1n } } } } }
5253
- };
5254
- var _InvokeArgs = class _InvokeArgs {
5255
- constructor(buffer, params, fieldContext) {
5256
- this.buffer = buffer;
5257
- this.__tnFieldContext = null;
5258
- this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);
5259
- this.__tnFieldContext = fieldContext ?? null;
5260
- if (params) {
5261
- this.__tnParams = params;
5262
- } else {
5263
- const derived = _InvokeArgs.__tnExtractParams(this.view, buffer);
5264
- if (!derived) {
5265
- throw new Error("InvokeArgs: failed to derive dynamic parameters");
5266
- }
5267
- this.__tnParams = derived.params;
5268
- }
5269
- }
5270
- static __tnCreateView(buffer, opts) {
5271
- if (!buffer || buffer.length === void 0) throw new Error("InvokeArgs.__tnCreateView requires a Uint8Array");
5272
- let params = opts?.params ?? null;
5273
- if (!params) {
5274
- const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);
5275
- const derived = _InvokeArgs.__tnExtractParams(view, buffer);
5276
- if (!derived) throw new Error("InvokeArgs.__tnCreateView: failed to derive params");
5277
- params = derived.params;
5278
- }
5279
- const instance = new _InvokeArgs(new Uint8Array(buffer), params, opts?.fieldContext);
5280
- return instance;
5281
- }
5282
- dynamicParams() {
5283
- return this.__tnParams;
5284
- }
5285
- withFieldContext(context) {
5286
- this.__tnFieldContext = context;
5287
- return this;
5288
- }
5289
- __tnResolveFieldRef(path) {
5290
- const getterName = `get_${path.replace(/[.]/g, "_")}`;
5291
- const getter = this[getterName];
5292
- if (typeof getter === "function") {
5293
- const value = getter.call(this);
5294
- return typeof value === "bigint" ? __tnBigIntToNumber3(value, "InvokeArgs::__tnResolveFieldRef") : value;
5295
- }
5296
- if (this.__tnFieldContext && Object.prototype.hasOwnProperty.call(this.__tnFieldContext, path)) {
5297
- const contextValue = this.__tnFieldContext[path];
5298
- return typeof contextValue === "bigint" ? __tnBigIntToNumber3(contextValue, "InvokeArgs::__tnResolveFieldRef") : contextValue;
5299
- }
5300
- throw new Error("InvokeArgs: field reference '" + path + "' is not available; provide fieldContext when creating this view");
5301
- }
5302
- static builder() {
5303
- return new InvokeArgsBuilder();
5304
- }
5305
- static fromBuilder(builder) {
5306
- const buffer = builder.build();
5307
- const params = builder.dynamicParams();
5308
- return _InvokeArgs.from_array(buffer, { params });
5309
- }
5310
- static __tnExtractParams(view, buffer) {
5311
- if (buffer.length < 34) {
5312
- return null;
5313
- }
5314
- const __tnParam_instr_instr_len = __tnToBigInt3(view.getUint16(32, true));
5315
- const __tnExtractedParams = _InvokeArgs.Params.fromValues({
5316
- instr_instr_len: __tnParam_instr_instr_len
5317
- });
5318
- return { params: __tnExtractedParams, derived: null };
5319
- }
5320
- get_program_pubkey() {
5321
- const offset = 0;
5322
- const slice = this.buffer.subarray(offset, offset + 32);
5323
- return Pubkey.from_array(slice);
5324
- }
5325
- set_program_pubkey(value) {
5326
- const sourceBytes = value.buffer;
5327
- const offset = 0;
5328
- this.buffer.set(sourceBytes, offset);
5329
- }
5330
- get program_pubkey() {
5331
- return this.get_program_pubkey();
5332
- }
5333
- set program_pubkey(value) {
5334
- this.set_program_pubkey(value);
5335
- }
5336
- get_instr_len() {
5337
- const offset = 32;
5338
- return this.view.getUint16(offset, true);
5339
- }
5340
- set_instr_len(value) {
5341
- const offset = 32;
5342
- this.view.setUint16(offset, value, true);
5343
- }
5344
- get instr_len() {
5345
- return this.get_instr_len();
5346
- }
5347
- set instr_len(value) {
5348
- this.set_instr_len(value);
5349
- }
5350
- get_instr_length() {
5351
- return this.__tnResolveFieldRef("instr_len");
5352
- }
5353
- get_instr_at(index) {
5354
- const offset = 34;
5355
- return this.view.getUint8(offset + index * 1);
5356
- }
5357
- get_instr() {
5358
- const len = this.get_instr_length();
5359
- const result = [];
5360
- for (let i = 0; i < len; i++) {
5361
- result.push(this.get_instr_at(i));
5362
- }
5363
- return result;
5364
- }
5365
- set_instr_at(index, value) {
5366
- const offset = 34;
5367
- this.view.setUint8(offset + index * 1, value);
5368
- }
5369
- set_instr(value) {
5370
- const len = Math.min(this.get_instr_length(), value.length);
5371
- for (let i = 0; i < len; i++) {
5372
- this.set_instr_at(i, value[i]);
5373
- }
5374
- }
5375
- get instr() {
5376
- return this.get_instr();
5377
- }
5378
- set instr(value) {
5379
- this.set_instr(value);
5380
- }
5381
- static __tnFootprintInternal(__tnParams) {
5382
- return __tnEvalFootprint3(__tn_ir_InvokeArgs.root, { params: __tnParams });
5383
- }
5384
- static __tnValidateInternal(buffer, __tnParams) {
5385
- return __tnValidateIrTree3(__tn_ir_InvokeArgs, buffer, __tnParams);
5386
- }
5387
- static __tnInvokeFootprint(__tnParams) {
5388
- return this.__tnFootprintInternal(__tnParams);
5389
- }
5390
- static __tnInvokeValidate(buffer, __tnParams) {
5391
- return this.__tnValidateInternal(buffer, __tnParams);
5392
- }
5393
- static footprintIr(instr_instr_len) {
5394
- const params = _InvokeArgs.Params.fromValues({
5395
- instr_instr_len
5396
- });
5397
- return this.footprintIrFromParams(params);
5398
- }
5399
- static __tnPackParams(params) {
5400
- const record = /* @__PURE__ */ Object.create(null);
5401
- record["instr.instr_len"] = params.instr_instr_len;
5402
- return record;
5403
- }
5404
- static footprintIrFromParams(params) {
5405
- const __tnParams = this.__tnPackParams(params);
5406
- return this.__tnFootprintInternal(__tnParams);
5407
- }
5408
- static footprintFromParams(params) {
5409
- const irResult = this.footprintIrFromParams(params);
5410
- const maxSafe = __tnToBigInt3(Number.MAX_SAFE_INTEGER);
5411
- if (__tnBigIntGreaterThan3(irResult, maxSafe)) throw new Error("footprint exceeds Number.MAX_SAFE_INTEGER for InvokeArgs");
5412
- return __tnBigIntToNumber3(irResult, "InvokeArgs::footprintFromParams");
5413
- }
5414
- static footprintFromValues(input) {
5415
- const params = _InvokeArgs.params(input);
5416
- return this.footprintFromParams(params);
5417
- }
5418
- static footprint(params) {
5419
- return this.footprintFromParams(params);
5420
- }
5421
- static validate(buffer, opts) {
5422
- if (!buffer || buffer.length === void 0) {
5423
- return { ok: false, code: "tn.invalid_buffer" };
5424
- }
5425
- const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);
5426
- let params = opts?.params ?? null;
5427
- if (!params) {
5428
- const extracted = this.__tnExtractParams(view, buffer);
5429
- if (!extracted) return { ok: false, code: "tn.param_extraction_failed" };
5430
- params = extracted.params;
5431
- }
5432
- const __tnParamsRec = this.__tnPackParams(params);
5433
- const irResult = this.__tnValidateInternal(buffer, __tnParamsRec);
5434
- if (!irResult.ok) {
5435
- return { ok: false, code: irResult.code, consumed: irResult.consumed ? __tnBigIntToNumber3(irResult.consumed, "InvokeArgs::validate") : void 0, params };
5436
- }
5437
- const consumed = irResult.consumed ? __tnBigIntToNumber3(irResult.consumed, "InvokeArgs::validate") : void 0;
5438
- return { ok: true, consumed, params };
5439
- }
5440
- static from_array(buffer, opts) {
5441
- if (!buffer || buffer.length === void 0) {
5442
- return null;
5443
- }
5444
- const view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);
5445
- let params = opts?.params ?? null;
5446
- if (!params) {
5447
- const derived = this.__tnExtractParams(view, buffer);
5448
- if (!derived) return null;
5449
- params = derived.params;
5450
- }
5451
- const validation = this.validate(buffer, { params });
5452
- if (!validation.ok) {
5453
- return null;
5454
- }
5455
- const cached = validation.params ?? params;
5456
- const state = new _InvokeArgs(buffer, cached);
5457
- return state;
5458
- }
5459
- };
5460
- _InvokeArgs.flexibleArrayWriters = Object.freeze([
5461
- { field: "instr", method: "instr", sizeField: "instr_len", paramKey: "instr_len", elementSize: 1 }
5462
- ]);
5463
- var InvokeArgs = _InvokeArgs;
5464
- ((InvokeArgs2) => {
5465
- InvokeArgs2.ParamKeys = Object.freeze({
5466
- instr_instr_len: "instr.instr_len"
5467
- });
5468
- InvokeArgs2.Params = {
5469
- fromValues(input) {
5470
- return {
5471
- instr_instr_len: __tnToBigInt3(input.instr_instr_len)
5472
- };
5473
- },
5474
- fromBuilder(source) {
5475
- if (source.dynamicParams) {
5476
- return source.dynamicParams();
5477
- }
5478
- if (source.params) {
5479
- return source.params;
5480
- }
5481
- return source;
5482
- }
5483
- };
5484
- function params(input) {
5485
- return InvokeArgs2.Params.fromValues(input);
5486
- }
5487
- InvokeArgs2.params = params;
5488
- })(InvokeArgs || (InvokeArgs = {}));
5489
- __tnRegisterFootprint3("InvokeArgs", (params) => InvokeArgs.__tnInvokeFootprint(params));
5490
- __tnRegisterValidate3("InvokeArgs", (buffer, params) => InvokeArgs.__tnInvokeValidate(buffer, params));
5491
- var InvokeArgsBuilder = class {
5492
- constructor() {
5493
- this.__tnCachedParams = null;
5494
- this.__tnLastBuffer = null;
5495
- this.__tnLastParams = null;
5496
- this.__tnFam_instr = null;
5497
- this.__tnFam_instrCount = null;
5498
- this.buffer = new Uint8Array(34);
5499
- this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);
5500
- }
5501
- __tnInvalidate() {
5502
- this.__tnCachedParams = null;
5503
- this.__tnLastBuffer = null;
5504
- this.__tnLastParams = null;
5505
- }
5506
- set_program_pubkey(value) {
5507
- if (value.length !== 32) throw new Error("program_pubkey expects 32 bytes");
5508
- this.buffer.set(value, 0);
5509
- this.__tnInvalidate();
5510
- return this;
5511
- }
5512
- set_instr_len(value) {
5513
- this.view.setUint16(32, value, true);
5514
- this.__tnInvalidate();
5515
- return this;
5516
- }
5517
- instr() {
5518
- if (!this.__tnFamWriter_instr) {
5519
- this.__tnFamWriter_instr = __tnCreateFamWriter2(this, "instr", (payload) => {
5520
- const bytes = new Uint8Array(payload);
5521
- const elementCount = bytes.length;
5522
- this.__tnFam_instr = bytes;
5523
- this.__tnFam_instrCount = elementCount;
5524
- this.set_instr_len(elementCount);
5525
- this.__tnInvalidate();
5526
- });
5527
- }
5528
- return this.__tnFamWriter_instr;
5529
- }
5530
- build() {
5531
- const params = this.__tnComputeParams();
5532
- const size = InvokeArgs.footprintFromParams(params);
5533
- const buffer = new Uint8Array(size);
5534
- this.__tnWriteInto(buffer);
5535
- this.__tnValidateOrThrow(buffer, params);
5536
- return buffer;
5537
- }
5538
- buildInto(target, offset = 0) {
5539
- const params = this.__tnComputeParams();
5540
- const size = InvokeArgs.footprintFromParams(params);
5541
- if (target.length - offset < size) throw new Error("InvokeArgsBuilder: target buffer too small");
5542
- const slice = target.subarray(offset, offset + size);
5543
- this.__tnWriteInto(slice);
5544
- this.__tnValidateOrThrow(slice, params);
5545
- return target;
5546
- }
5547
- finish() {
5548
- const buffer = this.build();
5549
- const params = this.__tnLastParams ?? this.__tnComputeParams();
5550
- const view = InvokeArgs.from_array(buffer, { params });
5551
- if (!view) throw new Error("InvokeArgsBuilder: failed to finalize view");
5552
- return view;
5553
- }
5554
- finishView() {
5555
- return this.finish();
5556
- }
5557
- dynamicParams() {
5558
- return this.__tnComputeParams();
5559
- }
5560
- __tnComputeParams() {
5561
- if (this.__tnCachedParams) return this.__tnCachedParams;
5562
- const params = InvokeArgs.Params.fromValues({
5563
- instr_instr_len: (() => {
5564
- if (this.__tnFam_instrCount === null) throw new Error("InvokeArgsBuilder: field 'instr' must be written before computing params");
5565
- return __tnToBigInt3(this.__tnFam_instrCount);
5566
- })()
5567
- });
5568
- this.__tnCachedParams = params;
5569
- return params;
5570
- }
5571
- __tnWriteInto(target) {
5572
- target.set(this.buffer, 0);
5573
- let cursor = this.buffer.length;
5574
- const __tnLocal_instr_bytes = this.__tnFam_instr;
5575
- if (!__tnLocal_instr_bytes) throw new Error("InvokeArgsBuilder: field 'instr' must be written before build");
5576
- target.set(__tnLocal_instr_bytes, cursor);
5577
- cursor += __tnLocal_instr_bytes.length;
5578
- }
5579
- __tnValidateOrThrow(buffer, params) {
5580
- const result = InvokeArgs.validate(buffer, { params });
5581
- if (!result.ok) {
5582
- throw new Error(`${InvokeArgs}Builder: builder produced invalid buffer (code=${result.code ?? "unknown"})`);
5583
- }
5584
- this.__tnLastParams = result.params ?? params;
5585
- this.__tnLastBuffer = buffer;
5586
- }
5587
- };
5381
+ __tnRegisterFootprint3("CredentialRegisteredEventData", (params) => CredentialRegisteredEventData.__tnInvokeFootprint(params));
5382
+ __tnRegisterValidate3("CredentialRegisteredEventData", (buffer, params) => CredentialRegisteredEventData.__tnInvokeValidate(buffer, params));
5383
+ __tnRegisterDynamicValidate3("CredentialRegisteredEventData", (buffer) => {
5384
+ const result = CredentialRegisteredEventData.validate(buffer);
5385
+ return { ok: result.ok, code: result.code, consumed: result.consumed === void 0 ? void 0 : __tnToBigInt3(result.consumed) };
5386
+ });
5588
5387
  var __tn_ir_PasskeyEvent = {
5589
5388
  typeName: "PasskeyEvent",
5590
5389
  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 } } }] } } } }
@@ -5835,8 +5634,6 @@ var PasskeyEvent = _PasskeyEvent;
5835
5634
  }
5836
5635
  PasskeyEvent2.params = params;
5837
5636
  })(PasskeyEvent || (PasskeyEvent = {}));
5838
- __tnRegisterFootprint3("PasskeyEvent", (params) => PasskeyEvent.__tnInvokeFootprint(params));
5839
- __tnRegisterValidate3("PasskeyEvent", (buffer, params) => PasskeyEvent.__tnInvokeValidate(buffer, params));
5840
5637
  var PasskeyEventBuilder = class {
5841
5638
  constructor() {
5842
5639
  this.__tnField_event_type = null;
@@ -5936,6 +5733,12 @@ var PasskeyEventBuilder = class {
5936
5733
  this.__tnLastBuffer = buffer;
5937
5734
  }
5938
5735
  };
5736
+ __tnRegisterFootprint3("PasskeyEvent", (params) => PasskeyEvent.__tnInvokeFootprint(params));
5737
+ __tnRegisterValidate3("PasskeyEvent", (buffer, params) => PasskeyEvent.__tnInvokeValidate(buffer, params));
5738
+ __tnRegisterDynamicValidate3("PasskeyEvent", (buffer) => {
5739
+ const result = PasskeyEvent.validate(buffer);
5740
+ return { ok: result.ok, code: result.code, consumed: result.consumed === void 0 ? void 0 : __tnToBigInt3(result.consumed) };
5741
+ });
5939
5742
  var __tn_ir_CreateArgs = {
5940
5743
  typeName: "CreateArgs",
5941
5744
  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" }] } } } }
@@ -6064,8 +5867,6 @@ var CreateArgs = class _CreateArgs {
6064
5867
  return new _CreateArgs(buffer);
6065
5868
  }
6066
5869
  };
6067
- __tnRegisterFootprint3("CreateArgs", (params) => CreateArgs.__tnInvokeFootprint(params));
6068
- __tnRegisterValidate3("CreateArgs", (buffer, params) => CreateArgs.__tnInvokeValidate(buffer, params));
6069
5870
  var CreateArgsBuilder = class {
6070
5871
  constructor() {
6071
5872
  this.__tnTail_state_proof = null;
@@ -6154,6 +5955,12 @@ var CreateArgsBuilder = class {
6154
5955
  }
6155
5956
  }
6156
5957
  };
5958
+ __tnRegisterFootprint3("CreateArgs", (params) => CreateArgs.__tnInvokeFootprint(params));
5959
+ __tnRegisterValidate3("CreateArgs", (buffer, params) => CreateArgs.__tnInvokeValidate(buffer, params));
5960
+ __tnRegisterDynamicValidate3("CreateArgs", (buffer) => {
5961
+ const result = CreateArgs.validate(buffer);
5962
+ return { ok: result.ok, code: result.code, consumed: result.consumed === void 0 ? void 0 : __tnToBigInt3(result.consumed) };
5963
+ });
6157
5964
  var __tn_ir_RegisterCredentialArgs = {
6158
5965
  typeName: "RegisterCredentialArgs",
6159
5966
  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" }] } } } }
@@ -6280,8 +6087,6 @@ var RegisterCredentialArgs = class _RegisterCredentialArgs {
6280
6087
  return new _RegisterCredentialArgs(buffer);
6281
6088
  }
6282
6089
  };
6283
- __tnRegisterFootprint3("RegisterCredentialArgs", (params) => RegisterCredentialArgs.__tnInvokeFootprint(params));
6284
- __tnRegisterValidate3("RegisterCredentialArgs", (buffer, params) => RegisterCredentialArgs.__tnInvokeValidate(buffer, params));
6285
6090
  var RegisterCredentialArgsBuilder = class {
6286
6091
  constructor() {
6287
6092
  this.__tnTail_state_proof = null;
@@ -6369,6 +6174,12 @@ var RegisterCredentialArgsBuilder = class {
6369
6174
  }
6370
6175
  }
6371
6176
  };
6177
+ __tnRegisterFootprint3("RegisterCredentialArgs", (params) => RegisterCredentialArgs.__tnInvokeFootprint(params));
6178
+ __tnRegisterValidate3("RegisterCredentialArgs", (buffer, params) => RegisterCredentialArgs.__tnInvokeValidate(buffer, params));
6179
+ __tnRegisterDynamicValidate3("RegisterCredentialArgs", (buffer) => {
6180
+ const result = RegisterCredentialArgs.validate(buffer);
6181
+ return { ok: result.ok, code: result.code, consumed: result.consumed === void 0 ? void 0 : __tnToBigInt3(result.consumed) };
6182
+ });
6372
6183
  var __tn_ir_PasskeyInstruction = {
6373
6184
  typeName: "PasskeyInstruction",
6374
6185
  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" } } } }
@@ -6402,10 +6213,6 @@ var PasskeyInstruction_payload_Inner = class _PasskeyInstruction_payload_Inner {
6402
6213
  if (!this.descriptor || this.descriptor.tag !== 2) return null;
6403
6214
  return TransferArgs.__tnCreateView(new Uint8Array(this.buffer), { fieldContext: this.__tnFieldContext ?? void 0 });
6404
6215
  }
6405
- asInvoke() {
6406
- if (!this.descriptor || this.descriptor.tag !== 3) return null;
6407
- return InvokeArgs.__tnCreateView(new Uint8Array(this.buffer), { fieldContext: this.__tnFieldContext ?? void 0 });
6408
- }
6409
6216
  asAddAuthority() {
6410
6217
  if (!this.descriptor || this.descriptor.tag !== 4) return null;
6411
6218
  return AddAuthorityArgs.__tnCreateView(new Uint8Array(this.buffer), { fieldContext: this.__tnFieldContext ?? void 0 });
@@ -6475,8 +6282,6 @@ var _PasskeyInstruction = class _PasskeyInstruction {
6475
6282
  break;
6476
6283
  case 2:
6477
6284
  break;
6478
- case 3:
6479
- break;
6480
6285
  case 4:
6481
6286
  break;
6482
6287
  case 5:
@@ -6634,7 +6439,7 @@ _PasskeyInstruction.payloadVariantDescriptors = Object.freeze([
6634
6439
  tag: 1,
6635
6440
  payloadSize: null,
6636
6441
  payloadType: "PasskeyInstruction::payload::validate",
6637
- createPayloadBuilder: () => __tnMaybeCallBuilder(ValidateArgs)
6442
+ createPayloadBuilder: () => null
6638
6443
  },
6639
6444
  {
6640
6445
  name: "transfer",
@@ -6643,24 +6448,17 @@ _PasskeyInstruction.payloadVariantDescriptors = Object.freeze([
6643
6448
  payloadType: "PasskeyInstruction::payload::transfer",
6644
6449
  createPayloadBuilder: () => __tnMaybeCallBuilder(TransferArgs)
6645
6450
  },
6646
- {
6647
- name: "invoke",
6648
- tag: 3,
6649
- payloadSize: null,
6650
- payloadType: "PasskeyInstruction::payload::invoke",
6651
- createPayloadBuilder: () => __tnMaybeCallBuilder(InvokeArgs)
6652
- },
6653
6451
  {
6654
6452
  name: "add_authority",
6655
6453
  tag: 4,
6656
- payloadSize: 65,
6454
+ payloadSize: 67,
6657
6455
  payloadType: "PasskeyInstruction::payload::add_authority",
6658
6456
  createPayloadBuilder: () => __tnMaybeCallBuilder(AddAuthorityArgs)
6659
6457
  },
6660
6458
  {
6661
6459
  name: "remove_authority",
6662
6460
  tag: 5,
6663
- payloadSize: 1,
6461
+ payloadSize: 3,
6664
6462
  payloadType: "PasskeyInstruction::payload::remove_authority",
6665
6463
  createPayloadBuilder: () => __tnMaybeCallBuilder(RemoveAuthorityArgs)
6666
6464
  },
@@ -6700,8 +6498,6 @@ var PasskeyInstruction = _PasskeyInstruction;
6700
6498
  }
6701
6499
  PasskeyInstruction2.params = params;
6702
6500
  })(PasskeyInstruction || (PasskeyInstruction = {}));
6703
- __tnRegisterFootprint3("PasskeyInstruction", (params) => PasskeyInstruction.__tnInvokeFootprint(params));
6704
- __tnRegisterValidate3("PasskeyInstruction", (buffer, params) => PasskeyInstruction.__tnInvokeValidate(buffer, params));
6705
6501
  var PasskeyInstructionBuilder = class {
6706
6502
  constructor() {
6707
6503
  this.__tnField_tag = null;
@@ -6806,6 +6602,12 @@ var PasskeyInstructionBuilder = class {
6806
6602
  this.__tnLastBuffer = buffer;
6807
6603
  }
6808
6604
  };
6605
+ __tnRegisterFootprint3("PasskeyInstruction", (params) => PasskeyInstruction.__tnInvokeFootprint(params));
6606
+ __tnRegisterValidate3("PasskeyInstruction", (buffer, params) => PasskeyInstruction.__tnInvokeValidate(buffer, params));
6607
+ __tnRegisterDynamicValidate3("PasskeyInstruction", (buffer) => {
6608
+ const result = PasskeyInstruction.validate(buffer);
6609
+ return { ok: result.ok, code: result.code, consumed: result.consumed === void 0 ? void 0 : __tnToBigInt3(result.consumed) };
6610
+ });
6809
6611
 
6810
6612
  // src/passkey-manager/instructions/create.ts
6811
6613
  function buildAuthority(authority) {
@@ -6834,16 +6636,81 @@ function encodeCreateInstruction(params) {
6834
6636
  return new PasskeyInstructionBuilder().payload().select("create").writePayload(argsPayload).finish().build();
6835
6637
  }
6836
6638
 
6639
+ // src/passkey-manager/target-instruction.ts
6640
+ function buildTargetInstructionBytes({
6641
+ programIdx,
6642
+ instructionData
6643
+ }) {
6644
+ if (!Number.isInteger(programIdx) || programIdx < 0 || programIdx > 65535) {
6645
+ throw new Error("programIdx must be 0-65535");
6646
+ }
6647
+ if (!(instructionData instanceof Uint8Array)) {
6648
+ throw new Error("instructionData must be a Uint8Array");
6649
+ }
6650
+ const builder = new InstructionDataBuilder();
6651
+ builder.set_program_idx(programIdx);
6652
+ builder.data().write(instructionData).finish();
6653
+ const buffer = builder.build();
6654
+ const view = InstructionData.from_array(buffer);
6655
+ if (!view) {
6656
+ throw new Error("generated InstructionData failed validation");
6657
+ }
6658
+ return buffer;
6659
+ }
6660
+
6837
6661
  // src/passkey-manager/instructions/validate.ts
6662
+ var U8_SIZE = Uint8Array.BYTES_PER_ELEMENT;
6663
+ var U16_SIZE = Uint16Array.BYTES_PER_ELEMENT;
6664
+ var P256_COORDINATE_SIZE = 32;
6665
+ var VALIDATE_FIXED_PREFIX_SIZE = U16_SIZE + U8_SIZE + P256_COORDINATE_SIZE + P256_COORDINATE_SIZE + U16_SIZE + U16_SIZE;
6666
+ function writeU16LE(target, offset, value) {
6667
+ target[offset] = value & 255;
6668
+ target[offset + 1] = value >> 8 & 255;
6669
+ }
6838
6670
  function encodeValidateInstruction(params) {
6839
- const { walletAccountIdx, authIdx, signatureR, signatureS, authenticatorData, clientDataJSON } = params;
6671
+ const {
6672
+ walletAccountIdx,
6673
+ authIdx,
6674
+ targetInstruction,
6675
+ signatureR,
6676
+ signatureS,
6677
+ authenticatorData,
6678
+ clientDataJSON
6679
+ } = params;
6840
6680
  if (walletAccountIdx < 0 || walletAccountIdx > 65535) {
6841
6681
  throw new Error("walletAccountIdx must be 0-65535");
6842
6682
  }
6843
6683
  if (authIdx < 0 || authIdx > 255) throw new Error("authIdx must be 0-255");
6844
6684
  if (signatureR.length !== 32) throw new Error("signatureR must be 32 bytes");
6845
6685
  if (signatureS.length !== 32) throw new Error("signatureS must be 32 bytes");
6846
- const argsPayload = new ValidateArgsBuilder().set_wallet_account_idx(walletAccountIdx).set_auth_idx(authIdx).set_signature_r(signatureR).set_signature_s(signatureS).authenticator_data().write(authenticatorData).finish().client_data().write(clientDataJSON).finish().build();
6686
+ if (authenticatorData.length > 65535) {
6687
+ throw new Error("authenticatorData length must be 0-65535");
6688
+ }
6689
+ if (clientDataJSON.length > 65535) {
6690
+ throw new Error("clientDataJSON length must be 0-65535");
6691
+ }
6692
+ const targetInstructionBytes = buildTargetInstructionBytes(targetInstruction);
6693
+ const argsPayload = new Uint8Array(
6694
+ VALIDATE_FIXED_PREFIX_SIZE + authenticatorData.length + clientDataJSON.length + targetInstructionBytes.length
6695
+ );
6696
+ let offset = 0;
6697
+ writeU16LE(argsPayload, offset, walletAccountIdx);
6698
+ offset += 2;
6699
+ argsPayload[offset] = authIdx;
6700
+ offset += 1;
6701
+ argsPayload.set(signatureR, offset);
6702
+ offset += signatureR.length;
6703
+ argsPayload.set(signatureS, offset);
6704
+ offset += signatureS.length;
6705
+ writeU16LE(argsPayload, offset, authenticatorData.length);
6706
+ offset += 2;
6707
+ writeU16LE(argsPayload, offset, clientDataJSON.length);
6708
+ offset += 2;
6709
+ argsPayload.set(authenticatorData, offset);
6710
+ offset += authenticatorData.length;
6711
+ argsPayload.set(clientDataJSON, offset);
6712
+ offset += clientDataJSON.length;
6713
+ argsPayload.set(targetInstructionBytes, offset);
6847
6714
  return new PasskeyInstructionBuilder().payload().select("validate").writePayload(argsPayload).finish().build();
6848
6715
  }
6849
6716
 
@@ -6861,27 +6728,25 @@ function encodeTransferInstruction(params) {
6861
6728
  return new PasskeyInstructionBuilder().payload().select("transfer").writePayload(argsPayload).finish().build();
6862
6729
  }
6863
6730
 
6864
- // src/passkey-manager/instructions/invoke.ts
6865
- function encodeInvokeInstruction(programPubkey, instruction) {
6866
- if (programPubkey.length !== 32) {
6867
- throw new Error("Program pubkey must be 32 bytes");
6868
- }
6869
- const argsPayload = new InvokeArgsBuilder().set_program_pubkey(programPubkey).instr().write(instruction).finish().build();
6870
- return new PasskeyInstructionBuilder().payload().select("invoke").writePayload(argsPayload).finish().build();
6871
- }
6872
-
6873
6731
  // src/passkey-manager/instructions/add-authority.ts
6874
6732
  function encodeAddAuthorityInstruction(params) {
6733
+ const { walletAccountIdx } = params;
6734
+ if (walletAccountIdx < 0 || walletAccountIdx > 65535) {
6735
+ throw new Error("walletAccountIdx must be 0-65535");
6736
+ }
6875
6737
  const authorityBytes = buildAuthority(params.authority);
6876
- const argsPayload = new AddAuthorityArgsBuilder().set_authority(authorityBytes).build();
6738
+ const argsPayload = new AddAuthorityArgsBuilder().set_wallet_account_idx(walletAccountIdx).set_authority(authorityBytes).build();
6877
6739
  return new PasskeyInstructionBuilder().payload().select("add_authority").writePayload(argsPayload).finish().build();
6878
6740
  }
6879
6741
 
6880
6742
  // src/passkey-manager/instructions/remove-authority.ts
6881
6743
  function encodeRemoveAuthorityInstruction(params) {
6882
- const { authIdx } = params;
6744
+ const { walletAccountIdx, authIdx } = params;
6745
+ if (walletAccountIdx < 0 || walletAccountIdx > 65535) {
6746
+ throw new Error("walletAccountIdx must be 0-65535");
6747
+ }
6883
6748
  if (authIdx < 0 || authIdx > 255) throw new Error("authIdx must be 0-255");
6884
- const argsPayload = new RemoveAuthorityArgsBuilder().set_auth_idx(authIdx).build();
6749
+ const argsPayload = new RemoveAuthorityArgsBuilder().set_wallet_account_idx(walletAccountIdx).set_auth_idx(authIdx).build();
6885
6750
  return new PasskeyInstructionBuilder().payload().select("remove_authority").writePayload(argsPayload).finish().build();
6886
6751
  }
6887
6752
 
@@ -6899,38 +6764,51 @@ function encodeRegisterCredentialInstruction(params) {
6899
6764
  return new PasskeyInstructionBuilder().payload().select("register_credential").writePayload(argsPayload).finish().build();
6900
6765
  }
6901
6766
 
6902
- // src/passkey-manager/instructions/shared.ts
6903
- function concatenateInstructions(instructions) {
6904
- const totalLength = instructions.reduce((sum, instr) => sum + instr.length, 0);
6905
- const result = new Uint8Array(totalLength);
6906
- let offset = 0;
6907
- for (const instr of instructions) {
6908
- result.set(instr, offset);
6909
- offset += instr.length;
6767
+ // src/passkey-manager/challenge.ts
6768
+ var VALIDATE_CHALLENGE_DOMAIN = "thru.passkey.validate";
6769
+ function writeU64LE(target, offset, value) {
6770
+ let remaining = value;
6771
+ for (let i = 0; i < 8; i++) {
6772
+ target[offset + i] = Number(remaining & 0xffn);
6773
+ remaining >>= 8n;
6910
6774
  }
6911
- return result;
6912
6775
  }
6913
-
6914
- // src/passkey-manager/challenge.ts
6915
- async function createValidateChallenge(nonce, accountAddresses, trailingInstructionData) {
6776
+ async function createValidateChallenge(nonce, accountAddresses, walletAccountIdx, authIdx, targetInstruction) {
6777
+ const targetInstructionBytes = buildTargetInstructionBytes(targetInstruction);
6916
6778
  const encoder = new TextEncoder();
6779
+ const domainBytes = encoder.encode(VALIDATE_CHALLENGE_DOMAIN);
6917
6780
  const accountBytes = accountAddresses.map((address) => {
6918
- return encoder.encode(address);
6781
+ const bytes = encoder.encode(address);
6782
+ if (bytes.length !== 46) {
6783
+ throw new Error("accountAddresses must contain ta addresses");
6784
+ }
6785
+ return bytes;
6919
6786
  });
6920
- const totalSize = accountBytes.reduce((sum, bytes) => sum + bytes.length, 8) + trailingInstructionData.length;
6787
+ if (walletAccountIdx < 0 || walletAccountIdx > 65535) {
6788
+ throw new Error("walletAccountIdx must be 0-65535");
6789
+ }
6790
+ if (authIdx < 0 || authIdx > 255) throw new Error("authIdx must be 0-255");
6791
+ if (accountBytes.length > 65535) throw new Error("accountAddresses length must be 0-65535");
6792
+ const totalSize = domainBytes.length + 8 + 2 + 1 + 2 + accountBytes.reduce((sum, bytes) => sum + bytes.length, 0) + targetInstructionBytes.length;
6921
6793
  const challengeData = new Uint8Array(totalSize);
6922
6794
  let offset = 0;
6923
- let v = nonce;
6924
- for (let i = 0; i < 8; i++) {
6925
- challengeData[offset + i] = Number(v & 0xffn);
6926
- v >>= 8n;
6927
- }
6795
+ challengeData.set(domainBytes, offset);
6796
+ offset += domainBytes.length;
6797
+ writeU64LE(challengeData, offset, nonce);
6928
6798
  offset += 8;
6799
+ challengeData[offset] = walletAccountIdx & 255;
6800
+ challengeData[offset + 1] = walletAccountIdx >> 8 & 255;
6801
+ offset += 2;
6802
+ challengeData[offset] = authIdx & 255;
6803
+ offset += 1;
6804
+ challengeData[offset] = accountBytes.length & 255;
6805
+ challengeData[offset + 1] = accountBytes.length >> 8 & 255;
6806
+ offset += 2;
6929
6807
  for (const bytes of accountBytes) {
6930
6808
  challengeData.set(bytes, offset);
6931
6809
  offset += bytes.length;
6932
6810
  }
6933
- challengeData.set(trailingInstructionData, offset);
6811
+ challengeData.set(targetInstructionBytes, offset);
6934
6812
  const hashBuffer = await crypto.subtle.digest("SHA-256", challengeData);
6935
6813
  return new Uint8Array(hashBuffer);
6936
6814
  }
@@ -7312,7 +7190,6 @@ exports.AUTHORITY_TAG_PUBKEY = AUTHORITY_TAG_PUBKEY;
7312
7190
  exports.FEE_PAYER_ADDRESS = FEE_PAYER_ADDRESS;
7313
7191
  exports.INSTRUCTION_ADD_AUTHORITY = INSTRUCTION_ADD_AUTHORITY;
7314
7192
  exports.INSTRUCTION_CREATE = INSTRUCTION_CREATE;
7315
- exports.INSTRUCTION_INVOKE = INSTRUCTION_INVOKE;
7316
7193
  exports.INSTRUCTION_REGISTER_CREDENTIAL = INSTRUCTION_REGISTER_CREDENTIAL;
7317
7194
  exports.INSTRUCTION_REMOVE_AUTHORITY = INSTRUCTION_REMOVE_AUTHORITY;
7318
7195
  exports.INSTRUCTION_TRANSFER = INSTRUCTION_TRANSFER;
@@ -7320,6 +7197,7 @@ exports.INSTRUCTION_VALIDATE = INSTRUCTION_VALIDATE;
7320
7197
  exports.P256_HALF_N = P256_HALF_N;
7321
7198
  exports.P256_N = P256_N;
7322
7199
  exports.PASSKEY_MANAGER_PROGRAM_ADDRESS = PASSKEY_MANAGER_PROGRAM_ADDRESS;
7200
+ exports.VALIDATE_CHALLENGE_DOMAIN = VALIDATE_CHALLENGE_DOMAIN;
7323
7201
  exports.arrayBufferToBase64Url = arrayBufferToBase64Url;
7324
7202
  exports.base64UrlToArrayBuffer = base64UrlToArrayBuffer;
7325
7203
  exports.base64UrlToBytes = base64UrlToBytes;
@@ -7332,7 +7210,6 @@ exports.bytesToBase64Url = bytesToBase64Url;
7332
7210
  exports.bytesToBigIntBE = bytesToBigIntBE;
7333
7211
  exports.bytesToHex = bytesToHex;
7334
7212
  exports.compareBytes = compareBytes;
7335
- exports.concatenateInstructions = concatenateInstructions;
7336
7213
  exports.createCredentialLookupSeed = createCredentialLookupSeed;
7337
7214
  exports.createValidateChallenge = createValidateChallenge;
7338
7215
  exports.createWalletSeed = createWalletSeed;
@@ -7340,7 +7217,6 @@ exports.deriveCredentialLookupAddress = deriveCredentialLookupAddress;
7340
7217
  exports.deriveWalletAddress = deriveWalletAddress;
7341
7218
  exports.encodeAddAuthorityInstruction = encodeAddAuthorityInstruction;
7342
7219
  exports.encodeCreateInstruction = encodeCreateInstruction;
7343
- exports.encodeInvokeInstruction = encodeInvokeInstruction;
7344
7220
  exports.encodeRegisterCredentialInstruction = encodeRegisterCredentialInstruction;
7345
7221
  exports.encodeRemoveAuthorityInstruction = encodeRemoveAuthorityInstruction;
7346
7222
  exports.encodeTransferInstruction = encodeTransferInstruction;