@thru/programs 0.2.27 → 0.2.28

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (30) hide show
  1. package/dist/multicall/index.cjs +166 -24
  2. package/dist/multicall/index.cjs.map +1 -1
  3. package/dist/multicall/index.d.cts +39 -3
  4. package/dist/multicall/index.d.ts +39 -3
  5. package/dist/multicall/index.js +166 -25
  6. package/dist/multicall/index.js.map +1 -1
  7. package/dist/passkey-manager/index.cjs +1235 -345
  8. package/dist/passkey-manager/index.cjs.map +1 -1
  9. package/dist/passkey-manager/index.d.cts +45 -11
  10. package/dist/passkey-manager/index.d.ts +45 -11
  11. package/dist/passkey-manager/index.js +1225 -346
  12. package/dist/passkey-manager/index.js.map +1 -1
  13. package/package.json +2 -2
  14. package/src/multicall/abi/thru/common/primitives/types.ts +14 -9
  15. package/src/multicall/abi/thru/program/multicall/types.ts +136 -4
  16. package/src/multicall/index.ts +6 -17
  17. package/src/passkey-manager/abi/thru/blockchain/state_proof/types.ts +11 -6
  18. package/src/passkey-manager/abi/thru/common/primitives/types.ts +19 -14
  19. package/src/passkey-manager/abi/thru/program/passkey_manager/types.ts +1069 -271
  20. package/src/passkey-manager/accounts.ts +79 -40
  21. package/src/passkey-manager/constants.ts +10 -1
  22. package/src/passkey-manager/index.ts +18 -2
  23. package/src/passkey-manager/instructions/add-authority.ts +31 -3
  24. package/src/passkey-manager/instructions/create.ts +106 -11
  25. package/src/passkey-manager/instructions/invoke.ts +9 -0
  26. package/src/passkey-manager/instructions/shared.ts +15 -0
  27. package/src/passkey-manager/instructions/transfer.ts +1 -1
  28. package/src/passkey-manager/instructions/validate.ts +13 -43
  29. package/src/passkey-manager/types.ts +7 -2
  30. package/src/passkey-manager/validate.test.ts +71 -3
@@ -623,7 +623,8 @@ __tnRegisterFootprint("Date", (params) => Date.__tnInvokeFootprint(params));
623
623
  __tnRegisterValidate("Date", (buffer, params) => Date.__tnInvokeValidate(buffer, params));
624
624
  __tnRegisterDynamicValidate("Date", (buffer) => {
625
625
  const result = Date.validate(buffer);
626
- return { ok: result.ok, code: result.code, consumed: result.consumed === void 0 ? void 0 : __tnToBigInt(result.consumed) };
626
+ const params = result.params;
627
+ return { ok: result.ok, code: result.code, consumed: result.consumed === void 0 ? void 0 : __tnToBigInt(result.consumed), params };
627
628
  });
628
629
  var __tn_ir_Duration = {
629
630
  typeName: "Duration",
@@ -751,7 +752,8 @@ __tnRegisterFootprint("Duration", (params) => Duration.__tnInvokeFootprint(param
751
752
  __tnRegisterValidate("Duration", (buffer, params) => Duration.__tnInvokeValidate(buffer, params));
752
753
  __tnRegisterDynamicValidate("Duration", (buffer) => {
753
754
  const result = Duration.validate(buffer);
754
- return { ok: result.ok, code: result.code, consumed: result.consumed === void 0 ? void 0 : __tnToBigInt(result.consumed) };
755
+ const params = result.params;
756
+ return { ok: result.ok, code: result.code, consumed: result.consumed === void 0 ? void 0 : __tnToBigInt(result.consumed), params };
755
757
  });
756
758
  var __tn_ir_FixedPoint = {
757
759
  typeName: "FixedPoint",
@@ -879,7 +881,8 @@ __tnRegisterFootprint("FixedPoint", (params) => FixedPoint.__tnInvokeFootprint(p
879
881
  __tnRegisterValidate("FixedPoint", (buffer, params) => FixedPoint.__tnInvokeValidate(buffer, params));
880
882
  __tnRegisterDynamicValidate("FixedPoint", (buffer) => {
881
883
  const result = FixedPoint.validate(buffer);
882
- return { ok: result.ok, code: result.code, consumed: result.consumed === void 0 ? void 0 : __tnToBigInt(result.consumed) };
884
+ const params = result.params;
885
+ return { ok: result.ok, code: result.code, consumed: result.consumed === void 0 ? void 0 : __tnToBigInt(result.consumed), params };
883
886
  });
884
887
  var __tn_ir_Hash = {
885
888
  typeName: "Hash",
@@ -994,7 +997,8 @@ __tnRegisterFootprint("Hash", (params) => Hash.__tnInvokeFootprint(params));
994
997
  __tnRegisterValidate("Hash", (buffer, params) => Hash.__tnInvokeValidate(buffer, params));
995
998
  __tnRegisterDynamicValidate("Hash", (buffer) => {
996
999
  const result = Hash.validate(buffer);
997
- return { ok: result.ok, code: result.code, consumed: result.consumed === void 0 ? void 0 : __tnToBigInt(result.consumed) };
1000
+ const params = result.params;
1001
+ return { ok: result.ok, code: result.code, consumed: result.consumed === void 0 ? void 0 : __tnToBigInt(result.consumed), params };
998
1002
  });
999
1003
  var __tn_ir_InstructionData = {
1000
1004
  typeName: "InstructionData",
@@ -1334,7 +1338,8 @@ __tnRegisterFootprint("InstructionData", (params) => exports.InstructionData.__t
1334
1338
  __tnRegisterValidate("InstructionData", (buffer, params) => exports.InstructionData.__tnInvokeValidate(buffer, params));
1335
1339
  __tnRegisterDynamicValidate("InstructionData", (buffer) => {
1336
1340
  const result = exports.InstructionData.validate(buffer);
1337
- return { ok: result.ok, code: result.code, consumed: result.consumed === void 0 ? void 0 : __tnToBigInt(result.consumed) };
1341
+ const params = result.params;
1342
+ return { ok: result.ok, code: result.code, consumed: result.consumed === void 0 ? void 0 : __tnToBigInt(result.consumed), params };
1338
1343
  });
1339
1344
  var __tn_ir_Pubkey = {
1340
1345
  typeName: "Pubkey",
@@ -1449,7 +1454,8 @@ __tnRegisterFootprint("Pubkey", (params) => Pubkey.__tnInvokeFootprint(params));
1449
1454
  __tnRegisterValidate("Pubkey", (buffer, params) => Pubkey.__tnInvokeValidate(buffer, params));
1450
1455
  __tnRegisterDynamicValidate("Pubkey", (buffer) => {
1451
1456
  const result = Pubkey.validate(buffer);
1452
- return { ok: result.ok, code: result.code, consumed: result.consumed === void 0 ? void 0 : __tnToBigInt(result.consumed) };
1457
+ const params = result.params;
1458
+ return { ok: result.ok, code: result.code, consumed: result.consumed === void 0 ? void 0 : __tnToBigInt(result.consumed), params };
1453
1459
  });
1454
1460
  var __tn_ir_Signature = {
1455
1461
  typeName: "Signature",
@@ -1564,7 +1570,8 @@ __tnRegisterFootprint("Signature", (params) => Signature.__tnInvokeFootprint(par
1564
1570
  __tnRegisterValidate("Signature", (buffer, params) => Signature.__tnInvokeValidate(buffer, params));
1565
1571
  __tnRegisterDynamicValidate("Signature", (buffer) => {
1566
1572
  const result = Signature.validate(buffer);
1567
- return { ok: result.ok, code: result.code, consumed: result.consumed === void 0 ? void 0 : __tnToBigInt(result.consumed) };
1573
+ const params = result.params;
1574
+ return { ok: result.ok, code: result.code, consumed: result.consumed === void 0 ? void 0 : __tnToBigInt(result.consumed), params };
1568
1575
  });
1569
1576
  var __tn_ir_Timestamp = {
1570
1577
  typeName: "Timestamp",
@@ -1673,7 +1680,8 @@ __tnRegisterFootprint("Timestamp", (params) => Timestamp.__tnInvokeFootprint(par
1673
1680
  __tnRegisterValidate("Timestamp", (buffer, params) => Timestamp.__tnInvokeValidate(buffer, params));
1674
1681
  __tnRegisterDynamicValidate("Timestamp", (buffer) => {
1675
1682
  const result = Timestamp.validate(buffer);
1676
- return { ok: result.ok, code: result.code, consumed: result.consumed === void 0 ? void 0 : __tnToBigInt(result.consumed) };
1683
+ const params = result.params;
1684
+ return { ok: result.ok, code: result.code, consumed: result.consumed === void 0 ? void 0 : __tnToBigInt(result.consumed), params };
1677
1685
  });
1678
1686
 
1679
1687
  // src/multicall/abi/thru/program/multicall/types.ts
@@ -1692,6 +1700,36 @@ function __tnWarnOnce2(message) {
1692
1700
  __tnLogWarn2(message);
1693
1701
  }
1694
1702
  }
1703
+ function __tnResolveBuilderInput2(input, context) {
1704
+ if (input instanceof Uint8Array) {
1705
+ return new Uint8Array(input);
1706
+ }
1707
+ if (input && typeof input.build === "function") {
1708
+ const built = input.build();
1709
+ if (!(built instanceof Uint8Array)) {
1710
+ throw new Error(`${context}: builder did not return Uint8Array`);
1711
+ }
1712
+ return new Uint8Array(built);
1713
+ }
1714
+ throw new Error(`${context}: expected Uint8Array or builder`);
1715
+ }
1716
+ function __tnResolveStructFieldInput(input, context) {
1717
+ if (input instanceof Uint8Array || input && typeof input.build === "function") {
1718
+ return __tnResolveBuilderInput2(input, context);
1719
+ }
1720
+ if (input && typeof input.asUint8Array === "function") {
1721
+ const bytes = input.asUint8Array();
1722
+ return new Uint8Array(bytes);
1723
+ }
1724
+ if (input && typeof input.bytes === "function") {
1725
+ const bytes = input.bytes();
1726
+ return new Uint8Array(bytes);
1727
+ }
1728
+ if (input && input.buffer instanceof Uint8Array) {
1729
+ return new Uint8Array(input.buffer);
1730
+ }
1731
+ throw new Error(`${context}: expected Uint8Array, builder, or view-like value`);
1732
+ }
1695
1733
  var __tnMask322 = __tnHasNativeBigInt2 ? (BigInt(1) << BigInt(32)) - BigInt(1) : 4294967295;
1696
1734
  var __tnSignBit322 = __tnHasNativeBigInt2 ? BigInt(1) << BigInt(31) : 2147483648;
1697
1735
  function __tnToBigInt2(value) {
@@ -2115,7 +2153,8 @@ __tnRegisterFootprint2("InstructionData", (params) => exports.InstructionData.__
2115
2153
  __tnRegisterValidate2("InstructionData", (buffer, params) => exports.InstructionData.__tnInvokeValidate(buffer, params));
2116
2154
  __tnRegisterDynamicValidate2("InstructionData", (buffer) => {
2117
2155
  const result = exports.InstructionData.validate(buffer);
2118
- return { ok: result.ok, code: result.code, consumed: result.consumed === void 0 ? void 0 : __tnToBigInt2(result.consumed) };
2156
+ const params = result.params;
2157
+ return { ok: result.ok, code: result.code, consumed: result.consumed === void 0 ? void 0 : __tnToBigInt2(result.consumed), params };
2119
2158
  });
2120
2159
  var __tn_ir_MulticallArgs = {
2121
2160
  typeName: "MulticallArgs",
@@ -2169,6 +2208,14 @@ exports.MulticallArgs = class _MulticallArgs {
2169
2208
  }
2170
2209
  throw new Error("MulticallArgs: field reference '" + path + "' is not available; provide fieldContext when creating this view");
2171
2210
  }
2211
+ static builder() {
2212
+ return new MulticallArgsBuilder();
2213
+ }
2214
+ static fromBuilder(builder) {
2215
+ const buffer = builder.build();
2216
+ const params = builder.dynamicParams();
2217
+ return _MulticallArgs.from_array(buffer, { params });
2218
+ }
2172
2219
  static __tnExtractParams(view, buffer) {
2173
2220
  if (buffer.length < 2) {
2174
2221
  return null;
@@ -2372,11 +2419,116 @@ exports.MulticallArgs = class _MulticallArgs {
2372
2419
  }
2373
2420
  MulticallArgs2.params = params;
2374
2421
  })(exports.MulticallArgs || (exports.MulticallArgs = {}));
2422
+ var MulticallArgsBuilder = class {
2423
+ constructor() {
2424
+ this.__tnJagged_calls = null;
2425
+ this.__tnCachedParams = null;
2426
+ this.__tnLastBuffer = null;
2427
+ this.__tnLastParams = null;
2428
+ this.buffer = new Uint8Array(2);
2429
+ this.view = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);
2430
+ }
2431
+ __tnInvalidate() {
2432
+ this.__tnCachedParams = null;
2433
+ this.__tnLastBuffer = null;
2434
+ this.__tnLastParams = null;
2435
+ }
2436
+ set_calls_count(value) {
2437
+ this.view.setUint16(0, value, true);
2438
+ this.__tnInvalidate();
2439
+ return this;
2440
+ }
2441
+ set_calls(values) {
2442
+ const fragments = [];
2443
+ for (let i = 0; i < values.length; i++) {
2444
+ const bytes = __tnResolveStructFieldInput(values[i], "MulticallArgsBuilder::calls[" + i + "]");
2445
+ const validation = __tnInvokeDynamicValidate2("InstructionData", bytes);
2446
+ if (!validation.ok || validation.consumed === void 0) throw new Error("MulticallArgsBuilder: field 'calls' element failed validation");
2447
+ if (__tnBigIntToNumber2(validation.consumed, "MulticallArgsBuilder::calls") !== bytes.length) throw new Error("MulticallArgsBuilder: field 'calls' element validation did not consume the full buffer");
2448
+ fragments.push(bytes);
2449
+ }
2450
+ this.__tnJagged_calls = fragments;
2451
+ this.set_calls_count(fragments.length);
2452
+ this.__tnInvalidate();
2453
+ return this;
2454
+ }
2455
+ build() {
2456
+ const params = this.__tnComputeParams();
2457
+ const fragments = this.__tnCollectFragments();
2458
+ const size = this.__tnComputeSize(fragments);
2459
+ const buffer = new Uint8Array(size);
2460
+ this.__tnWriteInto(buffer, fragments);
2461
+ this.__tnValidateOrThrow(buffer, params);
2462
+ return buffer;
2463
+ }
2464
+ buildInto(target, offset = 0) {
2465
+ const params = this.__tnComputeParams();
2466
+ const fragments = this.__tnCollectFragments();
2467
+ const size = this.__tnComputeSize(fragments);
2468
+ if (target.length - offset < size) throw new Error("MulticallArgsBuilder: target buffer too small");
2469
+ const slice = target.subarray(offset, offset + size);
2470
+ this.__tnWriteInto(slice, fragments);
2471
+ this.__tnValidateOrThrow(slice, params);
2472
+ return target;
2473
+ }
2474
+ finish() {
2475
+ const buffer = this.build();
2476
+ const params = this.__tnLastParams ?? this.__tnComputeParams();
2477
+ const view = exports.MulticallArgs.from_array(buffer, { params });
2478
+ if (!view) throw new Error("MulticallArgsBuilder: failed to finalize view");
2479
+ return view;
2480
+ }
2481
+ finishView() {
2482
+ return this.finish();
2483
+ }
2484
+ dynamicParams() {
2485
+ return this.__tnComputeParams();
2486
+ }
2487
+ __tnComputeParams() {
2488
+ if (this.__tnCachedParams) return this.__tnCachedParams;
2489
+ const params = exports.MulticallArgs.Params.fromValues({
2490
+ calls_calls_count: (() => {
2491
+ const fragments = this.__tnJagged_calls;
2492
+ if (!fragments) throw new Error("MulticallArgsBuilder: field 'calls' must be written before computing params");
2493
+ return __tnToBigInt2(fragments.length);
2494
+ })()
2495
+ });
2496
+ this.__tnCachedParams = params;
2497
+ return params;
2498
+ }
2499
+ __tnCollectFragments() {
2500
+ const fragments = this.__tnJagged_calls;
2501
+ if (!fragments) throw new Error("MulticallArgsBuilder: field 'calls' must be written before build");
2502
+ return fragments;
2503
+ }
2504
+ __tnComputeSize(fragments) {
2505
+ let total = this.buffer.length;
2506
+ for (const fragment of fragments) total += fragment.length;
2507
+ return total;
2508
+ }
2509
+ __tnWriteInto(target, fragments) {
2510
+ target.set(this.buffer, 0);
2511
+ let cursor = this.buffer.length;
2512
+ for (const fragment of fragments) {
2513
+ target.set(fragment, cursor);
2514
+ cursor += fragment.length;
2515
+ }
2516
+ }
2517
+ __tnValidateOrThrow(buffer, params) {
2518
+ const result = exports.MulticallArgs.validate(buffer, { params });
2519
+ if (!result.ok) {
2520
+ throw new Error(`${exports.MulticallArgs}Builder: builder produced invalid buffer (code=${result.code ?? "unknown"})`);
2521
+ }
2522
+ this.__tnLastParams = result.params ?? params;
2523
+ this.__tnLastBuffer = buffer;
2524
+ }
2525
+ };
2375
2526
  __tnRegisterFootprint2("MulticallArgs", (params) => exports.MulticallArgs.__tnInvokeFootprint(params));
2376
2527
  __tnRegisterValidate2("MulticallArgs", (buffer, params) => exports.MulticallArgs.__tnInvokeValidate(buffer, params));
2377
2528
  __tnRegisterDynamicValidate2("MulticallArgs", (buffer) => {
2378
2529
  const result = exports.MulticallArgs.validate(buffer);
2379
- return { ok: result.ok, code: result.code, consumed: result.consumed === void 0 ? void 0 : __tnToBigInt2(result.consumed) };
2530
+ const params = result.params;
2531
+ return { ok: result.ok, code: result.code, consumed: result.consumed === void 0 ? void 0 : __tnToBigInt2(result.consumed), params };
2380
2532
  });
2381
2533
  var __tn_ir_MulticallError = {
2382
2534
  typeName: "MulticallError",
@@ -2485,7 +2637,8 @@ __tnRegisterFootprint2("MulticallError", (params) => MulticallError.__tnInvokeFo
2485
2637
  __tnRegisterValidate2("MulticallError", (buffer, params) => MulticallError.__tnInvokeValidate(buffer, params));
2486
2638
  __tnRegisterDynamicValidate2("MulticallError", (buffer) => {
2487
2639
  const result = MulticallError.validate(buffer);
2488
- return { ok: result.ok, code: result.code, consumed: result.consumed === void 0 ? void 0 : __tnToBigInt2(result.consumed) };
2640
+ const params = result.params;
2641
+ return { ok: result.ok, code: result.code, consumed: result.consumed === void 0 ? void 0 : __tnToBigInt2(result.consumed), params };
2489
2642
  });
2490
2643
 
2491
2644
  // src/multicall/index.ts
@@ -2524,10 +2677,6 @@ var MULTICALL_PROGRAM_PUBKEY = new Uint8Array([
2524
2677
  9
2525
2678
  ]);
2526
2679
  var MULTICALL_PROGRAM_ADDRESS = helpers.encodeAddress(MULTICALL_PROGRAM_PUBKEY);
2527
- function writeU16LE(target, offset, value) {
2528
- target[offset] = value & 255;
2529
- target[offset + 1] = value >> 8 & 255;
2530
- }
2531
2680
  function assertProgramIdx(programIdx) {
2532
2681
  if (!Number.isInteger(programIdx) || programIdx < 0 || programIdx > 65535) {
2533
2682
  throw new Error("programIdx must be 0-65535");
@@ -2552,15 +2701,7 @@ function buildMulticallInstruction(calls) {
2552
2701
  if (!Array.isArray(calls)) throw new Error("calls must be an array");
2553
2702
  if (calls.length > 65535) throw new Error("calls length must be 0-65535");
2554
2703
  const encodedCalls = calls.map(buildInstructionData);
2555
- const totalLength = 2 + encodedCalls.reduce((sum, call) => sum + call.length, 0);
2556
- const output = new Uint8Array(totalLength);
2557
- let offset = 0;
2558
- writeU16LE(output, offset, calls.length);
2559
- offset += 2;
2560
- for (const call of encodedCalls) {
2561
- output.set(call, offset);
2562
- offset += call.length;
2563
- }
2704
+ const output = new MulticallArgsBuilder().set_calls(encodedCalls).build();
2564
2705
  const validation = exports.MulticallArgs.validate(output);
2565
2706
  if (!validation.ok || validation.consumed !== output.length) {
2566
2707
  throw new Error(
@@ -2573,6 +2714,7 @@ function buildMulticallInstruction(calls) {
2573
2714
  exports.InstructionDataBuilder = InstructionDataBuilder;
2574
2715
  exports.MULTICALL_PROGRAM_ADDRESS = MULTICALL_PROGRAM_ADDRESS;
2575
2716
  exports.MULTICALL_PROGRAM_PUBKEY = MULTICALL_PROGRAM_PUBKEY;
2717
+ exports.MulticallArgsBuilder = MulticallArgsBuilder;
2576
2718
  exports.MulticallError = MulticallError;
2577
2719
  exports.buildMulticallInstruction = buildMulticallInstruction;
2578
2720
  //# sourceMappingURL=index.cjs.map