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