@arkade-os/sdk 0.4.77 → 0.4.79

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 (76) hide show
  1. package/README.md +1 -1
  2. package/dist/adapters/expo.cjs +5 -5
  3. package/dist/adapters/expo.d.cts +3 -3
  4. package/dist/adapters/expo.d.ts +3 -3
  5. package/dist/adapters/expo.js +3 -3
  6. package/dist/{asyncStorageTaskQueue-DTl0WM7E.d.ts → asyncStorageTaskQueue-C5yQLJhm.d.ts} +2 -2
  7. package/dist/{asyncStorageTaskQueue-MmJyAnu-.d.cts → asyncStorageTaskQueue-Shsih-1l.d.cts} +2 -2
  8. package/dist/{chunk-ACPANSOX.js → chunk-4MXW2NDN.js} +10 -515
  9. package/dist/chunk-4MXW2NDN.js.map +1 -0
  10. package/dist/{chunk-Y4YK44IM.cjs → chunk-54FXLZ3T.cjs} +10 -10
  11. package/dist/{chunk-Y4YK44IM.cjs.map → chunk-54FXLZ3T.cjs.map} +1 -1
  12. package/dist/{chunk-CJN4CUEU.cjs → chunk-DAYCCIRO.cjs} +377 -198
  13. package/dist/chunk-DAYCCIRO.cjs.map +1 -0
  14. package/dist/{chunk-LUWSY2QO.cjs → chunk-FUW3OM5X.cjs} +76 -561
  15. package/dist/chunk-FUW3OM5X.cjs.map +1 -0
  16. package/dist/{chunk-YJEWWLOQ.cjs → chunk-HAM3SHBV.cjs} +650 -548
  17. package/dist/chunk-HAM3SHBV.cjs.map +1 -0
  18. package/dist/{chunk-52OA3UIC.js → chunk-JCPVP7TJ.js} +377 -201
  19. package/dist/chunk-JCPVP7TJ.js.map +1 -0
  20. package/dist/{chunk-4LP6XOMW.cjs → chunk-LASRYLMQ.cjs} +17 -17
  21. package/dist/{chunk-4LP6XOMW.cjs.map → chunk-LASRYLMQ.cjs.map} +1 -1
  22. package/dist/{chunk-HKOFYHZP.js → chunk-QDXOTONI.js} +3 -3
  23. package/dist/{chunk-HKOFYHZP.js.map → chunk-QDXOTONI.js.map} +1 -1
  24. package/dist/{chunk-H62OOAS4.cjs → chunk-SJPPBR2V.cjs} +17 -17
  25. package/dist/{chunk-H62OOAS4.cjs.map → chunk-SJPPBR2V.cjs.map} +1 -1
  26. package/dist/{chunk-T6MGH4V4.js → chunk-SK4OZRMB.js} +4 -4
  27. package/dist/{chunk-T6MGH4V4.js.map → chunk-SK4OZRMB.js.map} +1 -1
  28. package/dist/{chunk-YKNTUOUG.js → chunk-VAFNWP3I.js} +4 -4
  29. package/dist/{chunk-YKNTUOUG.js.map → chunk-VAFNWP3I.js.map} +1 -1
  30. package/dist/{chunk-MLOZHTBN.js → chunk-YPQ37P3H.js} +210 -108
  31. package/dist/chunk-YPQ37P3H.js.map +1 -0
  32. package/dist/contracts/handlers/index.cjs +9 -9
  33. package/dist/contracts/handlers/index.d.cts +4 -4
  34. package/dist/contracts/handlers/index.d.ts +4 -4
  35. package/dist/contracts/handlers/index.js +2 -2
  36. package/dist/{delegate-QPCGaD_z.d.cts → delegate-B4bKASut.d.cts} +1 -1
  37. package/dist/{delegate-CjcysR7s.d.ts → delegate-C9lpdrb0.d.ts} +1 -1
  38. package/dist/{hdWalletCapable--pMncWbC.d.ts → hdWalletCapable-CUJDKRKO.d.cts} +2 -3
  39. package/dist/{hdWalletCapable-Bp_p0WLj.d.cts → hdWalletCapable-DJClhYMC.d.ts} +2 -3
  40. package/dist/{index-Ie_ak2zY.d.ts → index-Ctul0N3Y.d.cts} +28 -6
  41. package/dist/{index-Ie_ak2zY.d.cts → index-Ctul0N3Y.d.ts} +28 -6
  42. package/dist/{index-m-EM-e8D.d.ts → index-D0qe2qVY.d.ts} +2 -2
  43. package/dist/{index-BMY272ns.d.cts → index-YBFmScVS.d.cts} +2 -2
  44. package/dist/index.cjs +304 -304
  45. package/dist/index.d.cts +123 -123
  46. package/dist/index.d.ts +123 -123
  47. package/dist/index.js +4 -4
  48. package/dist/repositories/realm/index.cjs +20 -20
  49. package/dist/repositories/realm/index.d.cts +3 -3
  50. package/dist/repositories/realm/index.d.ts +3 -3
  51. package/dist/repositories/realm/index.js +5 -5
  52. package/dist/repositories/sqlite/index.cjs +19 -19
  53. package/dist/repositories/sqlite/index.d.cts +3 -3
  54. package/dist/repositories/sqlite/index.d.ts +3 -3
  55. package/dist/repositories/sqlite/index.js +5 -5
  56. package/dist/{taskRunner-CqrlrJEt.d.ts → taskRunner-C08egG5a.d.ts} +2 -2
  57. package/dist/{taskRunner-BgRowCqB.d.cts → taskRunner-DB17db5n.d.cts} +2 -2
  58. package/dist/wallet/expo/background.cjs +14 -14
  59. package/dist/wallet/expo/background.d.cts +4 -4
  60. package/dist/wallet/expo/background.d.ts +4 -4
  61. package/dist/wallet/expo/background.js +6 -6
  62. package/dist/wallet/expo/index.cjs +14 -14
  63. package/dist/wallet/expo/index.d.cts +5 -5
  64. package/dist/wallet/expo/index.d.ts +5 -5
  65. package/dist/wallet/expo/index.js +5 -5
  66. package/dist/worker/expo/index.cjs +9 -9
  67. package/dist/worker/expo/index.d.cts +5 -5
  68. package/dist/worker/expo/index.d.ts +5 -5
  69. package/dist/worker/expo/index.js +5 -5
  70. package/package.json +6 -5
  71. package/dist/chunk-52OA3UIC.js.map +0 -1
  72. package/dist/chunk-ACPANSOX.js.map +0 -1
  73. package/dist/chunk-CJN4CUEU.cjs.map +0 -1
  74. package/dist/chunk-LUWSY2QO.cjs.map +0 -1
  75. package/dist/chunk-MLOZHTBN.js.map +0 -1
  76. package/dist/chunk-YJEWWLOQ.cjs.map +0 -1
@@ -1,8 +1,8 @@
1
1
  'use strict';
2
2
 
3
- var chunkH62OOAS4_cjs = require('./chunk-H62OOAS4.cjs');
4
- var chunkLUWSY2QO_cjs = require('./chunk-LUWSY2QO.cjs');
5
- var chunkCJN4CUEU_cjs = require('./chunk-CJN4CUEU.cjs');
3
+ var chunkSJPPBR2V_cjs = require('./chunk-SJPPBR2V.cjs');
4
+ var chunkFUW3OM5X_cjs = require('./chunk-FUW3OM5X.cjs');
5
+ var chunkDAYCCIRO_cjs = require('./chunk-DAYCCIRO.cjs');
6
6
  var chunk5BLDMQED_cjs = require('./chunk-5BLDMQED.cjs');
7
7
  var utils_js = require('@scure/btc-signer/utils.js');
8
8
  var btcSigner = require('@scure/btc-signer');
@@ -188,7 +188,7 @@ var TreeSignerSession = class _TreeSignerSession {
188
188
  noncesByPubkey.set(base.hex.encode(myPublicKey.subarray(1)), myNonce);
189
189
  const tx = this.graph.find(txid);
190
190
  if (!tx) throw new Error(`missing tx for txid ${txid}`);
191
- const cosigners = chunkCJN4CUEU_cjs.getArkPsbtFields(tx.root, 0, chunkCJN4CUEU_cjs.CosignerPublicKey).map(
191
+ const cosigners = chunkDAYCCIRO_cjs.getArkPsbtFields(tx.root, 0, chunkDAYCCIRO_cjs.CosignerPublicKey).map(
192
192
  (c) => base.hex.encode(c.key.subarray(1))
193
193
  // xonly pubkey
194
194
  );
@@ -240,7 +240,7 @@ var TreeSignerSession = class _TreeSignerSession {
240
240
  if (!aggNonce) throw new Error("missing aggregate nonce");
241
241
  const prevoutAmounts = [];
242
242
  const prevoutScripts = [];
243
- const cosigners = chunkCJN4CUEU_cjs.getArkPsbtFields(g.root, 0, chunkCJN4CUEU_cjs.CosignerPublicKey).map((c) => c.key);
243
+ const cosigners = chunkDAYCCIRO_cjs.getArkPsbtFields(g.root, 0, chunkDAYCCIRO_cjs.CosignerPublicKey).map((c) => c.key);
244
244
  const { finalKey } = aggregateKeys(cosigners, true, {
245
245
  taprootTweak: this.scriptRoot
246
246
  });
@@ -323,7 +323,7 @@ var SingleKey = class _SingleKey {
323
323
  async sign(tx, inputIndexes) {
324
324
  const txCpy = tx.clone();
325
325
  if (!inputIndexes) {
326
- chunkCJN4CUEU_cjs.assertAllowedSighashTypes(txCpy, ALLOWED_SIGHASH);
326
+ chunkDAYCCIRO_cjs.assertAllowedSighashTypes(txCpy, ALLOWED_SIGHASH);
327
327
  try {
328
328
  if (!txCpy.sign(this.key, ALLOWED_SIGHASH)) {
329
329
  throw new Error("Failed to sign transaction");
@@ -432,7 +432,7 @@ var SeedIdentity = class _SeedIdentity {
432
432
  let network;
433
433
  if ("descriptor" in opts && typeof opts.descriptor === "string") {
434
434
  descriptor = opts.descriptor;
435
- network = chunkLUWSY2QO_cjs.isMainnetDescriptor(descriptor) ? descriptorsScure.networks.bitcoin : descriptorsScure.networks.testnet;
435
+ network = chunkFUW3OM5X_cjs.isMainnetDescriptor(descriptor) ? descriptorsScure.networks.bitcoin : descriptorsScure.networks.testnet;
436
436
  } else {
437
437
  network = opts.isMainnet ?? true ? descriptorsScure.networks.bitcoin : descriptorsScure.networks.testnet;
438
438
  descriptor = descriptorsScure.scriptExpressions.trBIP32({
@@ -530,7 +530,7 @@ var SeedIdentity = class _SeedIdentity {
530
530
  * `StaticDescriptorProvider` for legacy single-key wallets.
531
531
  */
532
532
  isOurs(descriptor) {
533
- return chunkLUWSY2QO_cjs.descriptorIsOurs(descriptor, this.descriptor, utils_js.pubSchnorr(this.derivedKey));
533
+ return chunkFUW3OM5X_cjs.descriptorIsOurs(descriptor, this.descriptor, utils_js.pubSchnorr(this.derivedKey));
534
534
  }
535
535
  /**
536
536
  * Signs each request with the key derived from its descriptor.
@@ -579,7 +579,7 @@ var SeedIdentity = class _SeedIdentity {
579
579
  }
580
580
  // ── internal helpers ─────────────────────────────────────────────
581
581
  derivePrivateKeyForDescriptor(descriptor) {
582
- const network = chunkLUWSY2QO_cjs.isMainnetDescriptor(descriptor) ? descriptorsScure.networks.bitcoin : descriptorsScure.networks.testnet;
582
+ const network = chunkFUW3OM5X_cjs.isMainnetDescriptor(descriptor) ? descriptorsScure.networks.bitcoin : descriptorsScure.networks.testnet;
583
583
  const expansion = descriptorsScure.expand({ descriptor, network });
584
584
  if (expansion.isRanged) {
585
585
  throw new Error(
@@ -604,7 +604,7 @@ var SeedIdentity = class _SeedIdentity {
604
604
  signTxWithKey(tx, key, inputIndexes) {
605
605
  const txCpy = tx.clone();
606
606
  if (!inputIndexes) {
607
- chunkCJN4CUEU_cjs.assertAllowedSighashTypes(txCpy, ALLOWED_SIGHASH2);
607
+ chunkDAYCCIRO_cjs.assertAllowedSighashTypes(txCpy, ALLOWED_SIGHASH2);
608
608
  try {
609
609
  if (!txCpy.sign(key, ALLOWED_SIGHASH2)) {
610
610
  throw new Error("Failed to sign transaction");
@@ -666,7 +666,7 @@ var ReadonlyDescriptorIdentity = class _ReadonlyDescriptorIdentity {
666
666
  */
667
667
  descriptor;
668
668
  constructor(descriptor) {
669
- const network = chunkLUWSY2QO_cjs.isMainnetDescriptor(descriptor) ? descriptorsScure.networks.bitcoin : descriptorsScure.networks.testnet;
669
+ const network = chunkFUW3OM5X_cjs.isMainnetDescriptor(descriptor) ? descriptorsScure.networks.bitcoin : descriptorsScure.networks.testnet;
670
670
  let expansion;
671
671
  try {
672
672
  expansion = descriptorsScure.expand({ descriptor, network, index: 0 });
@@ -716,7 +716,7 @@ var ReadonlyDescriptorIdentity = class _ReadonlyDescriptorIdentity {
716
716
  * `StaticDescriptorProvider` for legacy single-key wallets.
717
717
  */
718
718
  isOurs(descriptor) {
719
- return chunkLUWSY2QO_cjs.descriptorIsOurs(descriptor, this.descriptor, this.indexZero.pubkey);
719
+ return chunkFUW3OM5X_cjs.descriptorIsOurs(descriptor, this.descriptor, this.indexZero.pubkey);
720
720
  }
721
721
  };
722
722
  function serializeSeedOwnedSigningIdentity(identity) {
@@ -878,10 +878,10 @@ var DescriptorIdentity = class {
878
878
  this.base = base;
879
879
  }
880
880
  async xOnlyPublicKey() {
881
- return chunkLUWSY2QO_cjs.deriveDescriptorLeafPubKey(this.descriptor);
881
+ return chunkFUW3OM5X_cjs.deriveDescriptorLeafPubKey(this.descriptor);
882
882
  }
883
883
  async compressedPublicKey() {
884
- return chunkLUWSY2QO_cjs.deriveDescriptorLeafCompressedPubKey(this.descriptor);
884
+ return chunkFUW3OM5X_cjs.deriveDescriptorLeafCompressedPubKey(this.descriptor);
885
885
  }
886
886
  async sign(tx, inputIndexes) {
887
887
  const [signed] = await this.signer.signWithDescriptor([
@@ -949,12 +949,12 @@ var WalletCannotAllocateAddressError = class extends Error {
949
949
  };
950
950
  async function resolveDescriptorSigner(descriptor, identity, provider) {
951
951
  const owner = provider?.isOurs(descriptor) ? provider : isHDCapableIdentity(identity) && identity.isOurs(descriptor) ? identity : void 0;
952
- if (owner && chunkLUWSY2QO_cjs.parseHDDescriptor(descriptor)) {
952
+ if (owner && chunkFUW3OM5X_cjs.parseHDDescriptor(descriptor)) {
953
953
  return new DescriptorIdentity({ descriptor, signer: owner, base: identity });
954
954
  }
955
955
  let key;
956
956
  try {
957
- key = chunkLUWSY2QO_cjs.deriveDescriptorLeafPubKey(descriptor);
957
+ key = chunkFUW3OM5X_cjs.deriveDescriptorLeafPubKey(descriptor);
958
958
  } catch {
959
959
  throw new ForeignDescriptorError(descriptor);
960
960
  }
@@ -976,33 +976,62 @@ function isAddressAllocationCapable(value) {
976
976
  return typeof value.getNewAddresses === "function";
977
977
  }
978
978
 
979
+ // ../../node_modules/@noble/hashes/_u64.js
980
+ var fromNumH = (n) => n / 2 ** 32 | 0;
981
+ var fromNumL = (n) => n >>> 0;
982
+ function setU64FromNum(view, byteOffset, n, isLE) {
983
+ const h = fromNumH(n);
984
+ const l = fromNumL(n);
985
+ view.setUint32(byteOffset, isLE ? l : h, isLE);
986
+ view.setUint32(byteOffset + 4, isLE ? h : l, isLE);
987
+ }
988
+
979
989
  // ../../node_modules/@noble/hashes/utils.js
980
990
  function isBytes(a) {
981
- return a instanceof Uint8Array || ArrayBuffer.isView(a) && a.constructor.name === "Uint8Array";
991
+ return a instanceof Uint8Array || ArrayBuffer.isView(a) && a.constructor.name === "Uint8Array" && "BYTES_PER_ELEMENT" in a && a.BYTES_PER_ELEMENT === 1;
992
+ }
993
+ var atitle = (title) => title ? `"${title}" ` : "";
994
+ function anumber(n, title = "") {
995
+ if (typeof n !== "number")
996
+ throw new TypeError(atitle(title) + "expected number, got " + typeof n);
997
+ if (!Number.isSafeInteger(n) || n < 0)
998
+ throw new RangeError(atitle(title) + "expected integer >= 0, got " + n);
999
+ return n;
982
1000
  }
983
1001
  function abytes(value, length, title = "") {
1002
+ if (isBytes(value) && (length === void 0))
1003
+ return value;
984
1004
  const bytes = isBytes(value);
985
- const len = value?.length;
986
- const needsLen = length !== void 0;
987
- if (!bytes || needsLen) {
988
- const prefix = title && `"${title}" `;
989
- const ofLen = "";
990
- const got = bytes ? `length=${len}` : `type=${typeof value}`;
991
- throw new Error(prefix + "expected Uint8Array" + ofLen + ", got " + got);
992
- }
993
- return value;
994
- }
1005
+ const ofLen = "";
1006
+ const got = bytes ? `length=${value.length}` : `type=${typeof value}`;
1007
+ const message = atitle(title) + "expected Uint8Array" + ofLen + ", got " + got;
1008
+ if (!bytes)
1009
+ throw new TypeError(message);
1010
+ throw new RangeError(message);
1011
+ }
1012
+ var aobject = (value, label) => {
1013
+ if (value === null || typeof value !== "object" || Array.isArray(value))
1014
+ throw new TypeError((label === "object" ? "" : `"${label}" `) + "expected object, got type=" + typeof value);
1015
+ };
1016
+ var aopts = (value, label) => {
1017
+ aobject(value, label);
1018
+ const proto = Object.getPrototypeOf(value);
1019
+ if (proto !== Object.prototype && proto !== null)
1020
+ throw new TypeError(`"${label}" expected plain object`);
1021
+ if (Object.hasOwn(value, "__proto__"))
1022
+ throw new TypeError(`"${label}.__proto__" is not allowed`);
1023
+ };
995
1024
  function aexists(instance, checkFinished = true) {
996
1025
  if (instance.destroyed)
997
- throw new Error("Hash instance has been destroyed");
1026
+ throw new Error("hash was destroyed");
998
1027
  if (checkFinished && instance.finished)
999
- throw new Error("Hash#digest() has already been called");
1028
+ throw new Error("digest() was already called");
1000
1029
  }
1001
1030
  function aoutput(out, instance) {
1002
- abytes(out, void 0, "digestInto() output");
1031
+ abytes(out, void 0, "output");
1003
1032
  const min = instance.outputLen;
1004
- if (out.length < min) {
1005
- throw new Error('"digestInto() output" expected to be of length >=' + min);
1033
+ if (!(out.length >= min)) {
1034
+ throw new RangeError('"output" expected length >= ' + min);
1006
1035
  }
1007
1036
  }
1008
1037
  function clean(...arrays) {
@@ -1016,22 +1045,38 @@ function createView(arr) {
1016
1045
  function rotr(word, shift) {
1017
1046
  return word << 32 - shift | word >>> shift;
1018
1047
  }
1048
+ function checkOpts(defaults, opts, title = "opts") {
1049
+ aopts(defaults, "defaults");
1050
+ if (opts !== void 0)
1051
+ aopts(opts, title);
1052
+ const merged = Object.assign(/* @__PURE__ */ Object.create(null), defaults, opts);
1053
+ return merged;
1054
+ }
1019
1055
  function createHasher(hashCons, info = {}) {
1056
+ if (typeof hashCons !== "function")
1057
+ throw new TypeError('"hashCons" expected function, got type=' + typeof hashCons);
1058
+ info = checkOpts({}, info, "info");
1020
1059
  const hashC = (msg, opts) => hashCons(opts).update(msg).digest();
1021
1060
  const tmp = hashCons(void 0);
1022
1061
  hashC.outputLen = tmp.outputLen;
1023
1062
  hashC.blockLen = tmp.blockLen;
1063
+ hashC.canXOF = tmp.canXOF;
1024
1064
  hashC.create = (opts) => hashCons(opts);
1025
1065
  Object.assign(hashC, info);
1026
1066
  return Object.freeze(hashC);
1027
1067
  }
1028
1068
  function randomBytes(bytesLength = 32) {
1069
+ anumber(bytesLength, "bytesLength");
1029
1070
  const cr = typeof globalThis === "object" ? globalThis.crypto : null;
1030
1071
  if (typeof cr?.getRandomValues !== "function")
1031
1072
  throw new Error("crypto.getRandomValues must be defined");
1073
+ if (bytesLength > 65536)
1074
+ throw new RangeError(`"bytesLength" expected <= 65536, got ${bytesLength}`);
1032
1075
  return cr.getRandomValues(new Uint8Array(bytesLength));
1033
1076
  }
1034
1077
  var oidNist = (suffix) => ({
1078
+ // Current NIST hashAlgs suffixes used here fit in one DER subidentifier octet.
1079
+ // Larger suffix values would need base-128 OID encoding and a different length byte.
1035
1080
  oid: Uint8Array.from([6, 9, 96, 134, 72, 1, 101, 3, 4, 2, suffix])
1036
1081
  });
1037
1082
 
@@ -1045,6 +1090,7 @@ function Maj(a, b, c) {
1045
1090
  var HashMD = class {
1046
1091
  blockLen;
1047
1092
  outputLen;
1093
+ canXOF = false;
1048
1094
  padOffset;
1049
1095
  isLE;
1050
1096
  // For partial updates less than block size
@@ -1067,24 +1113,28 @@ var HashMD = class {
1067
1113
  abytes(data);
1068
1114
  const { view, buffer, blockLen } = this;
1069
1115
  const len = data.length;
1116
+ let processed = false;
1070
1117
  for (let pos = 0; pos < len; ) {
1071
1118
  const take = Math.min(blockLen - this.pos, len - pos);
1072
1119
  if (take === blockLen) {
1073
1120
  const dataView = createView(data);
1074
1121
  for (; blockLen <= len - pos; pos += blockLen)
1075
1122
  this.process(dataView, pos);
1123
+ processed = true;
1076
1124
  continue;
1077
1125
  }
1078
- buffer.set(data.subarray(pos, pos + take), this.pos);
1126
+ buffer.set(pos === 0 && take === len ? data : data.subarray(pos, pos + take), this.pos);
1079
1127
  this.pos += take;
1080
1128
  pos += take;
1081
1129
  if (this.pos === blockLen) {
1082
1130
  this.process(view, 0);
1083
1131
  this.pos = 0;
1132
+ processed = true;
1084
1133
  }
1085
1134
  }
1086
1135
  this.length += data.length;
1087
- this.roundClean();
1136
+ if (processed)
1137
+ this.roundClean();
1088
1138
  return this;
1089
1139
  }
1090
1140
  digestInto(out) {
@@ -1094,23 +1144,20 @@ var HashMD = class {
1094
1144
  const { buffer, view, blockLen, isLE } = this;
1095
1145
  let { pos } = this;
1096
1146
  buffer[pos++] = 128;
1097
- clean(this.buffer.subarray(pos));
1147
+ buffer.fill(0, pos);
1098
1148
  if (this.padOffset > blockLen - pos) {
1099
1149
  this.process(view, 0);
1100
- pos = 0;
1150
+ buffer.fill(0);
1101
1151
  }
1102
- for (let i = pos; i < blockLen; i++)
1103
- buffer[i] = 0;
1104
- view.setBigUint64(blockLen - 8, BigInt(this.length * 8), isLE);
1152
+ setU64FromNum(view, blockLen - 8, this.length * 8, isLE);
1105
1153
  this.process(view, 0);
1106
- const oview = createView(out);
1154
+ this.roundClean();
1155
+ const oview = out === buffer ? view : createView(out);
1107
1156
  const len = this.outputLen;
1108
- if (len % 4)
1109
- throw new Error("_sha2: outputLen must be aligned to 32bit");
1110
1157
  const outLen = len / 4;
1111
1158
  const state = this.get();
1112
- if (outLen > state.length)
1113
- throw new Error("_sha2: outputLen bigger than state");
1159
+ if (len % 4 || outLen > state.length)
1160
+ throw new Error("invalid outputLen");
1114
1161
  for (let i = 0; i < outLen; i++)
1115
1162
  oview.setUint32(4 * i, state[i], isLE);
1116
1163
  }
@@ -1121,15 +1168,13 @@ var HashMD = class {
1121
1168
  this.destroy();
1122
1169
  return res;
1123
1170
  }
1124
- _cloneInto(to) {
1125
- to ||= new this.constructor();
1126
- to.set(...this.get());
1127
- const { blockLen, buffer, length, finished, destroyed, pos } = this;
1171
+ _cloneIntoMeta(to) {
1172
+ const { buffer, length, finished, destroyed, pos } = this;
1128
1173
  to.destroyed = destroyed;
1129
1174
  to.finished = finished;
1130
1175
  to.length = length;
1131
1176
  to.pos = pos;
1132
- if (length % blockLen)
1177
+ if (pos)
1133
1178
  to.buffer.set(buffer);
1134
1179
  return to;
1135
1180
  }
@@ -1217,8 +1262,28 @@ var SHA256_K = /* @__PURE__ */ Uint32Array.from([
1217
1262
  ]);
1218
1263
  var SHA256_W = /* @__PURE__ */ new Uint32Array(64);
1219
1264
  var SHA2_32B = class extends HashMD {
1220
- constructor(outputLen) {
1265
+ // We cannot use array here since array allows indexing by variable
1266
+ // which means optimizer/compiler cannot use registers.
1267
+ // Numeric initializers matter: starting the fields as `undefined` changes
1268
+ // V8's field representation and makes sha256 3x slower (measured).
1269
+ A = 0;
1270
+ B = 0;
1271
+ C = 0;
1272
+ D = 0;
1273
+ E = 0;
1274
+ F = 0;
1275
+ G = 0;
1276
+ H = 0;
1277
+ constructor(outputLen, IV) {
1221
1278
  super(64, outputLen, 8, false);
1279
+ this.A = IV[0] | 0;
1280
+ this.B = IV[1] | 0;
1281
+ this.C = IV[2] | 0;
1282
+ this.D = IV[3] | 0;
1283
+ this.E = IV[4] | 0;
1284
+ this.F = IV[5] | 0;
1285
+ this.G = IV[6] | 0;
1286
+ this.H = IV[7] | 0;
1222
1287
  }
1223
1288
  get() {
1224
1289
  const { A, B, C, D, E, F, G, H } = this;
@@ -1235,6 +1300,10 @@ var SHA2_32B = class extends HashMD {
1235
1300
  this.G = G | 0;
1236
1301
  this.H = H | 0;
1237
1302
  }
1303
+ _cloneInto(to) {
1304
+ (to ||= new this.constructor()).set(...this.get());
1305
+ return this._cloneIntoMeta(to);
1306
+ }
1238
1307
  process(view, offset) {
1239
1308
  for (let i = 0; i < 16; i++, offset += 4)
1240
1309
  SHA256_W[i] = view.getUint32(offset, false);
@@ -1274,23 +1343,14 @@ var SHA2_32B = class extends HashMD {
1274
1343
  clean(SHA256_W);
1275
1344
  }
1276
1345
  destroy() {
1346
+ this.destroyed = true;
1277
1347
  this.set(0, 0, 0, 0, 0, 0, 0, 0);
1278
1348
  clean(this.buffer);
1279
1349
  }
1280
1350
  };
1281
1351
  var _SHA256 = class extends SHA2_32B {
1282
- // We cannot use array here since array allows indexing by variable
1283
- // which means optimizer/compiler cannot use registers.
1284
- A = SHA256_IV[0] | 0;
1285
- B = SHA256_IV[1] | 0;
1286
- C = SHA256_IV[2] | 0;
1287
- D = SHA256_IV[3] | 0;
1288
- E = SHA256_IV[4] | 0;
1289
- F = SHA256_IV[5] | 0;
1290
- G = SHA256_IV[6] | 0;
1291
- H = SHA256_IV[7] | 0;
1292
1352
  constructor() {
1293
- super(32);
1353
+ super(32, SHA256_IV);
1294
1354
  }
1295
1355
  };
1296
1356
  var sha256 = /* @__PURE__ */ createHasher(
@@ -1329,14 +1389,14 @@ function buildSaltedPreimageMessage(xonly, salt) {
1329
1389
  }
1330
1390
  var PREIMAGE_INDEX = 0;
1331
1391
  function isPerArtifactDescriptor(descriptor) {
1332
- return chunkLUWSY2QO_cjs.parseHDDescriptor(descriptor) !== null;
1392
+ return chunkFUW3OM5X_cjs.parseHDDescriptor(descriptor) !== null;
1333
1393
  }
1334
1394
  async function provisionDescriptor(wallet) {
1335
1395
  const allocated = isHDAllocationCapable(wallet) ? await wallet.getNextSigningDescriptor() : void 0;
1336
- return allocated ?? await chunkLUWSY2QO_cjs.identityDescriptor(wallet.identity);
1396
+ return allocated ?? await chunkFUW3OM5X_cjs.identityDescriptor(wallet.identity);
1337
1397
  }
1338
1398
  async function provisionRefundKey(wallet) {
1339
- const descriptor = await chunkLUWSY2QO_cjs.identityDescriptor(wallet.identity);
1399
+ const descriptor = await chunkFUW3OM5X_cjs.identityDescriptor(wallet.identity);
1340
1400
  const signer = await contractSigner(wallet, descriptor);
1341
1401
  const pubkey = await signer.xOnlyPublicKey();
1342
1402
  const identityPubkey = await wallet.identity.xOnlyPublicKey();
@@ -1346,7 +1406,7 @@ async function provisionRefundKey(wallet) {
1346
1406
  );
1347
1407
  }
1348
1408
  const address = await wallet.getAddress();
1349
- const { pkScript } = chunkCJN4CUEU_cjs.ArkAddress.decode(address);
1409
+ const { pkScript } = chunkDAYCCIRO_cjs.ArkAddress.decode(address);
1350
1410
  return { descriptor, pubkey, pkScript, address };
1351
1411
  }
1352
1412
  async function provisionClaimSecret(wallet, opts = {}) {
@@ -1392,7 +1452,7 @@ async function contractSigner(wallet, descriptor) {
1392
1452
  const signer = isHDWalletCapable(wallet) ? await wallet.signerForDescriptor(descriptor) : wallet.identity;
1393
1453
  let expected;
1394
1454
  try {
1395
- expected = chunkLUWSY2QO_cjs.deriveDescriptorLeafPubKey(descriptor);
1455
+ expected = chunkFUW3OM5X_cjs.deriveDescriptorLeafPubKey(descriptor);
1396
1456
  } catch (cause) {
1397
1457
  throw new ForeignDescriptorError(descriptor, { cause });
1398
1458
  }
@@ -1611,14 +1671,14 @@ var RestDelegateProvider = class {
1611
1671
  */
1612
1672
  async delegate(intent, forfeitTxs, options) {
1613
1673
  const url = `${this.url}/v1/delegate`;
1614
- const response = await chunkCJN4CUEU_cjs.baseFetch(url, {
1674
+ const response = await chunkDAYCCIRO_cjs.baseFetch(url, {
1615
1675
  method: "POST",
1616
1676
  headers: {
1617
1677
  "Content-Type": "application/json"
1618
1678
  },
1619
1679
  body: JSON.stringify({
1620
1680
  intent: {
1621
- message: chunkCJN4CUEU_cjs.Intent.encodeMessage(intent.message),
1681
+ message: chunkDAYCCIRO_cjs.Intent.encodeMessage(intent.message),
1622
1682
  proof: intent.proof
1623
1683
  },
1624
1684
  forfeit_txs: forfeitTxs,
@@ -1638,7 +1698,7 @@ var RestDelegateProvider = class {
1638
1698
  */
1639
1699
  async getDelegateInfo() {
1640
1700
  const url = `${this.url}/v1/delegator/info`;
1641
- const response = await chunkCJN4CUEU_cjs.rateGate.runHttp(url, () => chunkCJN4CUEU_cjs.baseFetch(url));
1701
+ const response = await chunkDAYCCIRO_cjs.rateGate.runHttp(url, () => chunkDAYCCIRO_cjs.baseFetch(url));
1642
1702
  if (!response.ok) {
1643
1703
  const errorText2 = await response.text();
1644
1704
  throw new Error(`Failed to get delegate info: ${errorText2}`);
@@ -1663,7 +1723,7 @@ var ESPLORA_URL = {
1663
1723
  regtest: "http://localhost:3000/api"
1664
1724
  };
1665
1725
  var EsploraProvider = class {
1666
- constructor(baseUrl = ESPLORA_URL[chunkCJN4CUEU_cjs.DEFAULT_NETWORK_NAME], opts) {
1726
+ constructor(baseUrl = ESPLORA_URL[chunkDAYCCIRO_cjs.DEFAULT_NETWORK_NAME], opts) {
1667
1727
  this.baseUrl = baseUrl;
1668
1728
  this.pollingInterval = opts?.pollingInterval ?? 15e3;
1669
1729
  this.forcePolling = opts?.forcePolling ?? false;
@@ -1682,14 +1742,14 @@ var EsploraProvider = class {
1682
1742
  */
1683
1743
  addressWatches = /* @__PURE__ */ new Map();
1684
1744
  async getCoins(address) {
1685
- const response = await chunkCJN4CUEU_cjs.baseFetch(`${this.baseUrl}/address/${address}/utxo`);
1745
+ const response = await chunkDAYCCIRO_cjs.baseFetch(`${this.baseUrl}/address/${address}/utxo`);
1686
1746
  if (!response.ok) {
1687
1747
  throw new Error(`Failed to fetch UTXOs: ${response.statusText}`);
1688
1748
  }
1689
1749
  return response.json();
1690
1750
  }
1691
1751
  async getFeeRate() {
1692
- const response = await chunkCJN4CUEU_cjs.baseFetch(`${this.baseUrl}/fee-estimates`);
1752
+ const response = await chunkDAYCCIRO_cjs.baseFetch(`${this.baseUrl}/fee-estimates`);
1693
1753
  if (response.status === 404) {
1694
1754
  return void 0;
1695
1755
  }
@@ -1710,7 +1770,7 @@ var EsploraProvider = class {
1710
1770
  }
1711
1771
  }
1712
1772
  async getTxOutspends(txid) {
1713
- const response = await chunkCJN4CUEU_cjs.baseFetch(`${this.baseUrl}/tx/${txid}/outspends`);
1773
+ const response = await chunkDAYCCIRO_cjs.baseFetch(`${this.baseUrl}/tx/${txid}/outspends`);
1714
1774
  if (!response.ok) {
1715
1775
  const error = await response.text();
1716
1776
  throw new Error(`Failed to get transaction outspends: ${error}`);
@@ -1718,7 +1778,7 @@ var EsploraProvider = class {
1718
1778
  return response.json();
1719
1779
  }
1720
1780
  async getTransactions(address) {
1721
- const response = await chunkCJN4CUEU_cjs.baseFetch(`${this.baseUrl}/address/${address}/txs`);
1781
+ const response = await chunkDAYCCIRO_cjs.baseFetch(`${this.baseUrl}/address/${address}/txs`);
1722
1782
  if (!response.ok) {
1723
1783
  const error = await response.text();
1724
1784
  throw new Error(`Failed to get transactions: ${error}`);
@@ -1731,14 +1791,14 @@ var EsploraProvider = class {
1731
1791
  * usable as a change probe for the polling fallback.
1732
1792
  */
1733
1793
  async getAddressStats(address) {
1734
- const response = await chunkCJN4CUEU_cjs.baseFetch(`${this.baseUrl}/address/${address}`);
1794
+ const response = await chunkDAYCCIRO_cjs.baseFetch(`${this.baseUrl}/address/${address}`);
1735
1795
  if (!response.ok) {
1736
1796
  throw new Error(`Failed to get address stats: ${response.statusText}`);
1737
1797
  }
1738
1798
  return response.json();
1739
1799
  }
1740
1800
  async getRawTransaction(txid) {
1741
- const response = await chunkCJN4CUEU_cjs.baseFetch(`${this.baseUrl}/tx/${txid}/hex`);
1801
+ const response = await chunkDAYCCIRO_cjs.baseFetch(`${this.baseUrl}/tx/${txid}/hex`);
1742
1802
  if (!response.ok) {
1743
1803
  const error = await response.text();
1744
1804
  throw new Error(`Failed to get raw transaction ${txid}: ${error}`);
@@ -1746,7 +1806,7 @@ var EsploraProvider = class {
1746
1806
  return base.hex.decode((await response.text()).trim());
1747
1807
  }
1748
1808
  async getTxStatus(txid) {
1749
- const txresponse = await chunkCJN4CUEU_cjs.baseFetch(`${this.baseUrl}/tx/${txid}`);
1809
+ const txresponse = await chunkDAYCCIRO_cjs.baseFetch(`${this.baseUrl}/tx/${txid}`);
1750
1810
  if (!txresponse.ok) {
1751
1811
  throw new Error(txresponse.statusText);
1752
1812
  }
@@ -1754,7 +1814,7 @@ var EsploraProvider = class {
1754
1814
  if (!tx.status.confirmed) {
1755
1815
  return { confirmed: false };
1756
1816
  }
1757
- const response = await chunkCJN4CUEU_cjs.baseFetch(`${this.baseUrl}/tx/${txid}/status`);
1817
+ const response = await chunkDAYCCIRO_cjs.baseFetch(`${this.baseUrl}/tx/${txid}/status`);
1758
1818
  if (!response.ok) {
1759
1819
  throw new Error(`Failed to get transaction status: ${response.statusText}`);
1760
1820
  }
@@ -2038,9 +2098,9 @@ var EsploraProvider = class {
2038
2098
  return { subscribers, teardown, started };
2039
2099
  }
2040
2100
  async getChainTip() {
2041
- let tipBlocks = await chunkCJN4CUEU_cjs.baseFetch(`${this.baseUrl}/blocks`);
2101
+ let tipBlocks = await chunkDAYCCIRO_cjs.baseFetch(`${this.baseUrl}/blocks`);
2042
2102
  if (tipBlocks.status === 404) {
2043
- tipBlocks = await chunkCJN4CUEU_cjs.baseFetch(`${this.baseUrl}/v1/blocks`);
2103
+ tipBlocks = await chunkDAYCCIRO_cjs.baseFetch(`${this.baseUrl}/v1/blocks`);
2044
2104
  }
2045
2105
  if (!tipBlocks.ok) {
2046
2106
  throw new Error(`Failed to get chain tip: ${tipBlocks.statusText}`);
@@ -2062,7 +2122,7 @@ var EsploraProvider = class {
2062
2122
  };
2063
2123
  }
2064
2124
  async broadcastPackage(parent, child) {
2065
- const response = await chunkCJN4CUEU_cjs.baseFetch(`${this.baseUrl}/txs/package`, {
2125
+ const response = await chunkDAYCCIRO_cjs.baseFetch(`${this.baseUrl}/txs/package`, {
2066
2126
  method: "POST",
2067
2127
  headers: {
2068
2128
  "Content-Type": "application/json"
@@ -2078,7 +2138,7 @@ var EsploraProvider = class {
2078
2138
  return result;
2079
2139
  }
2080
2140
  async broadcastTx(tx) {
2081
- const response = await chunkCJN4CUEU_cjs.baseFetch(`${this.baseUrl}/tx`, {
2141
+ const response = await chunkDAYCCIRO_cjs.baseFetch(`${this.baseUrl}/tx`, {
2082
2142
  method: "POST",
2083
2143
  headers: {
2084
2144
  "Content-Type": "text/plain"
@@ -2261,7 +2321,7 @@ function findP2AOutput(tx) {
2261
2321
  var CHILD_DUST_AMOUNT = 546;
2262
2322
  function buildAnchorChild(params) {
2263
2323
  const { parent, feeRate, fundingCoins, changeAddress, tapInternalKey, network } = params;
2264
- const child = new chunkCJN4CUEU_cjs.Transaction({ version: 3, allowLegacyWitnessUtxo: true });
2324
+ const child = new chunkDAYCCIRO_cjs.Transaction({ version: 3, allowLegacyWitnessUtxo: true });
2265
2325
  child.addInput(findP2AOutput(parent));
2266
2326
  const estimator = TxWeightEstimator.create().addP2AInput();
2267
2327
  for (const _ of fundingCoins) {
@@ -2309,7 +2369,7 @@ function buildForfeitTx(inputs, forfeitPkScript, txLocktime) {
2309
2369
  );
2310
2370
  }
2311
2371
  function buildForfeitTxWithOutput(inputs, output, txLocktime) {
2312
- const tx = new chunkCJN4CUEU_cjs.Transaction({
2372
+ const tx = new chunkDAYCCIRO_cjs.Transaction({
2313
2373
  version: 3,
2314
2374
  lockTime: txLocktime
2315
2375
  });
@@ -2336,7 +2396,7 @@ function validateConnectorsTxGraph(settlementTxB64, connectorsGraph) {
2336
2396
  connectorsGraph.validate();
2337
2397
  if (connectorsGraph.root.inputsLength !== 1) throw ErrNumberOfInputs;
2338
2398
  const rootInput = connectorsGraph.root.getInput(0);
2339
- const settlementTx = transaction_js.Transaction.fromPSBT(base.base64.decode(settlementTxB64));
2399
+ const settlementTx = chunkDAYCCIRO_cjs.Transaction.fromPSBT(base.base64.decode(settlementTxB64));
2340
2400
  if (settlementTx.outputsLength <= BATCH_OUTPUT_CONNECTORS_INDEX)
2341
2401
  throw ErrInvalidSettlementTxOutputs;
2342
2402
  const expectedRootTxid = settlementTx.id;
@@ -2385,7 +2445,7 @@ function validateVtxoTxGraph(graph, roundTransaction, sweepTapTreeRoot) {
2385
2445
  if (previousScriptKey.length !== 32) {
2386
2446
  throw new Error(`parent output ${childIndex} has invalid script`);
2387
2447
  }
2388
- const cosigners = chunkCJN4CUEU_cjs.getArkPsbtFields(child.root, 0, chunkCJN4CUEU_cjs.CosignerPublicKey);
2448
+ const cosigners = chunkDAYCCIRO_cjs.getArkPsbtFields(child.root, 0, chunkDAYCCIRO_cjs.CosignerPublicKey);
2389
2449
  if (cosigners.length === 0) {
2390
2450
  throw ErrMissingCosignersPublicKeys;
2391
2451
  }
@@ -2443,7 +2503,7 @@ var EmulatorPacket = class _EmulatorPacket {
2443
2503
  return new _EmulatorPacket(entries);
2444
2504
  }
2445
2505
  static fromBytes(data) {
2446
- const reader = new chunkH62OOAS4_cjs.BufferReader(data);
2506
+ const reader = new chunkSJPPBR2V_cjs.BufferReader(data);
2447
2507
  const entryCount = reader.readCompactSize();
2448
2508
  const entries = [];
2449
2509
  for (let i = 0; i < entryCount; i++) {
@@ -2461,7 +2521,7 @@ var EmulatorPacket = class _EmulatorPacket {
2461
2521
  return _EmulatorPacket.PACKET_TYPE;
2462
2522
  }
2463
2523
  serialize() {
2464
- const writer = new chunkH62OOAS4_cjs.BufferWriter();
2524
+ const writer = new chunkSJPPBR2V_cjs.BufferWriter();
2465
2525
  writer.writeCompactSize(this.entries.length);
2466
2526
  for (const entry of this.entries) {
2467
2527
  writer.writeUint16LE(entry.vin);
@@ -2548,7 +2608,7 @@ var Extension = class _Extension {
2548
2608
  `expected magic prefix ${base.hex.encode(ARKADE_MAGIC)}, got ${base.hex.encode(payload.slice(0, Math.min(payload.length, ARKADE_MAGIC.length)))}`
2549
2609
  );
2550
2610
  }
2551
- const reader = new chunkH62OOAS4_cjs.BufferReader(payload.slice(ARKADE_MAGIC.length));
2611
+ const reader = new chunkSJPPBR2V_cjs.BufferReader(payload.slice(ARKADE_MAGIC.length));
2552
2612
  const packets = [];
2553
2613
  while (reader.remaining() > 0) {
2554
2614
  const packetType = reader.readByte();
@@ -2622,7 +2682,7 @@ var Extension = class _Extension {
2622
2682
  */
2623
2683
  getAssetPacket() {
2624
2684
  for (const p of this.packets) {
2625
- if (p instanceof chunkH62OOAS4_cjs.Packet) {
2685
+ if (p instanceof chunkSJPPBR2V_cjs.Packet) {
2626
2686
  return p;
2627
2687
  }
2628
2688
  }
@@ -2660,8 +2720,8 @@ var Extension = class _Extension {
2660
2720
  };
2661
2721
  function parsePacket(packetType, data) {
2662
2722
  switch (packetType) {
2663
- case chunkH62OOAS4_cjs.Packet.PACKET_TYPE:
2664
- return chunkH62OOAS4_cjs.Packet.fromBytes(data);
2723
+ case chunkSJPPBR2V_cjs.Packet.PACKET_TYPE:
2724
+ return chunkSJPPBR2V_cjs.Packet.fromBytes(data);
2665
2725
  case EmulatorPacket.PACKET_TYPE:
2666
2726
  return EmulatorPacket.fromBytes(data);
2667
2727
  default:
@@ -2708,22 +2768,22 @@ function buildOpReturnScript(data) {
2708
2768
  }
2709
2769
  return script;
2710
2770
  }
2711
- var ErrOffchainOutputNotFound = (address) => new chunkCJN4CUEU_cjs.ServerResponseMismatchError(`offchain send output not found: ${address}`);
2712
- var ErrInvalidAssetOutputAmount = (got, want, assetId) => new chunkCJN4CUEU_cjs.ServerResponseMismatchError(
2771
+ var ErrOffchainOutputNotFound = (address) => new chunkDAYCCIRO_cjs.ServerResponseMismatchError(`offchain send output not found: ${address}`);
2772
+ var ErrInvalidAssetOutputAmount = (got, want, assetId) => new chunkDAYCCIRO_cjs.ServerResponseMismatchError(
2713
2773
  `invalid asset output amount for ${assetId}: got ${got}, want ${want}`
2714
2774
  );
2715
- var ErrAssetGroupNotFound = (assetId) => new chunkCJN4CUEU_cjs.ServerResponseMismatchError(`asset group not found in batch leaf: ${assetId}`);
2716
- var ErrAssetOutputNotFound = (assetId, outputIndex) => new chunkCJN4CUEU_cjs.ServerResponseMismatchError(
2775
+ var ErrAssetGroupNotFound = (assetId) => new chunkDAYCCIRO_cjs.ServerResponseMismatchError(`asset group not found in batch leaf: ${assetId}`);
2776
+ var ErrAssetOutputNotFound = (assetId, outputIndex) => new chunkDAYCCIRO_cjs.ServerResponseMismatchError(
2717
2777
  `asset output not found in asset group ${assetId} at index ${outputIndex}`
2718
2778
  );
2719
- var ErrOnchainOutputNotFound = (address) => new chunkCJN4CUEU_cjs.ServerResponseMismatchError(`onchain output not found: ${address}`);
2720
- var ErrUnvalidatedOffchainOutput = (address) => new chunkCJN4CUEU_cjs.ServerResponseMismatchError(
2779
+ var ErrOnchainOutputNotFound = (address) => new chunkDAYCCIRO_cjs.ServerResponseMismatchError(`onchain output not found: ${address}`);
2780
+ var ErrUnvalidatedOffchainOutput = (address) => new chunkDAYCCIRO_cjs.ServerResponseMismatchError(
2721
2781
  `offchain output ${address} cannot be validated: virtual output tree signing did not run`
2722
2782
  );
2723
- var ErrIntentOutputNotFound = (index, kind) => new chunkCJN4CUEU_cjs.ServerResponseMismatchError(
2783
+ var ErrIntentOutputNotFound = (index, kind) => new chunkDAYCCIRO_cjs.ServerResponseMismatchError(
2724
2784
  `${kind} output ${index} of the intent proof is not present in what the server built`
2725
2785
  );
2726
- var ErrUnvalidatedIntentOutput = (index) => new chunkCJN4CUEU_cjs.ServerResponseMismatchError(
2786
+ var ErrUnvalidatedIntentOutput = (index) => new chunkDAYCCIRO_cjs.ServerResponseMismatchError(
2727
2787
  `offchain output ${index} of the intent proof cannot be validated: virtual output tree signing did not run`
2728
2788
  );
2729
2789
  var ErrInvalidOnchainOutputAmount = (address) => new Error(`invalid onchain output amount: ${address}`);
@@ -2732,7 +2792,7 @@ var ErrInvalidOffchainOutputAmount = (address) => new Error(`invalid offchain ou
2732
2792
  function assertFinalCommitmentMatchesValidated(finalCommitmentTx, validatedCommitmentTxid, context) {
2733
2793
  if (!validatedCommitmentTxid) return;
2734
2794
  if (finalCommitmentTx.id === validatedCommitmentTxid) return;
2735
- throw new chunkCJN4CUEU_cjs.ServerResponseMismatchError(
2795
+ throw new chunkDAYCCIRO_cjs.ServerResponseMismatchError(
2736
2796
  `${context}: finalization commitment tx ${finalCommitmentTx.id} differs from the validated commitment tx ${validatedCommitmentTxid}`
2737
2797
  );
2738
2798
  }
@@ -2742,7 +2802,7 @@ function validateBatchRecipients(commitmentTx, vtxoTreeLeaves, recipients, netwo
2742
2802
  for (const recipient of recipients) {
2743
2803
  let arkAddress;
2744
2804
  try {
2745
- arkAddress = chunkCJN4CUEU_cjs.ArkAddress.decode(recipient.address);
2805
+ arkAddress = chunkDAYCCIRO_cjs.ArkAddress.decode(recipient.address);
2746
2806
  } catch {
2747
2807
  validateOnchainRecipient(commitmentTx, recipient, network, usedOnchainOutputs);
2748
2808
  continue;
@@ -2754,7 +2814,7 @@ function validateBatchRecipientsWithoutTree(commitmentTx, recipients, network) {
2754
2814
  const usedOnchainOutputs = /* @__PURE__ */ new Set();
2755
2815
  for (const recipient of recipients) {
2756
2816
  try {
2757
- chunkCJN4CUEU_cjs.ArkAddress.decode(recipient.address);
2817
+ chunkDAYCCIRO_cjs.ArkAddress.decode(recipient.address);
2758
2818
  } catch {
2759
2819
  validateOnchainRecipient(commitmentTx, recipient, network, usedOnchainOutputs);
2760
2820
  continue;
@@ -2763,7 +2823,7 @@ function validateBatchRecipientsWithoutTree(commitmentTx, recipients, network) {
2763
2823
  }
2764
2824
  }
2765
2825
  function declaredIntentOutputs(signedProof, onchainOutputIndexes) {
2766
- const proof = chunkCJN4CUEU_cjs.Transaction.fromPSBT(base.base64.decode(signedProof));
2826
+ const proof = chunkDAYCCIRO_cjs.Transaction.fromPSBT(base.base64.decode(signedProof));
2767
2827
  const onchain = new Set(onchainOutputIndexes);
2768
2828
  const declared = [];
2769
2829
  for (let i = 0; i < proof.outputsLength; i++) {
@@ -3055,7 +3115,7 @@ function assetMintResolver() {
3055
3115
  if (!tx.assets?.length || !tx.key.arkTxid) return void 0;
3056
3116
  const minted = tx.assets.filter((a) => {
3057
3117
  try {
3058
- return base.hex.encode(chunkH62OOAS4_cjs.AssetId.fromString(a.assetId).txid) === tx.key.arkTxid;
3118
+ return base.hex.encode(chunkSJPPBR2V_cjs.AssetId.fromString(a.assetId).txid) === tx.key.arkTxid;
3059
3119
  } catch {
3060
3120
  return false;
3061
3121
  }
@@ -3131,7 +3191,7 @@ function createAssetPacket(assetInputs, receivers, changeReceiver) {
3131
3191
  const existing = inputsByAssetId.get(asset.assetId);
3132
3192
  inputsByAssetId.set(asset.assetId, [
3133
3193
  ...existing ?? [],
3134
- chunkH62OOAS4_cjs.AssetInput.create(inputIndex, asset.amount)
3194
+ chunkSJPPBR2V_cjs.AssetInput.create(inputIndex, asset.amount)
3135
3195
  ]);
3136
3196
  }
3137
3197
  }
@@ -3143,7 +3203,7 @@ function createAssetPacket(assetInputs, receivers, changeReceiver) {
3143
3203
  const existing = outputsByAssetId.get(asset.assetId);
3144
3204
  outputsByAssetId.set(asset.assetId, [
3145
3205
  ...existing ?? [],
3146
- chunkH62OOAS4_cjs.AssetOutput.create(outputIndex, asset.amount)
3206
+ chunkSJPPBR2V_cjs.AssetOutput.create(outputIndex, asset.amount)
3147
3207
  ]);
3148
3208
  }
3149
3209
  }
@@ -3154,7 +3214,7 @@ function createAssetPacket(assetInputs, receivers, changeReceiver) {
3154
3214
  const existing = outputsByAssetId.get(asset.assetId);
3155
3215
  outputsByAssetId.set(asset.assetId, [
3156
3216
  ...existing ?? [],
3157
- chunkH62OOAS4_cjs.AssetOutput.create(outputIndex, asset.amount)
3217
+ chunkSJPPBR2V_cjs.AssetOutput.create(outputIndex, asset.amount)
3158
3218
  ]);
3159
3219
  }
3160
3220
  }
@@ -3163,11 +3223,11 @@ function createAssetPacket(assetInputs, receivers, changeReceiver) {
3163
3223
  for (const assetIdStr of allAssetIds) {
3164
3224
  const inputs = inputsByAssetId.get(assetIdStr);
3165
3225
  const outputs = outputsByAssetId.get(assetIdStr);
3166
- const assetId = chunkH62OOAS4_cjs.AssetId.fromString(assetIdStr);
3167
- const group = chunkH62OOAS4_cjs.AssetGroup.create(assetId, null, inputs ?? [], outputs ?? [], []);
3226
+ const assetId = chunkSJPPBR2V_cjs.AssetId.fromString(assetIdStr);
3227
+ const group = chunkSJPPBR2V_cjs.AssetGroup.create(assetId, null, inputs ?? [], outputs ?? [], []);
3168
3228
  groups.push(group);
3169
3229
  }
3170
- return chunkH62OOAS4_cjs.Packet.create(groups);
3230
+ return chunkSJPPBR2V_cjs.Packet.create(groups);
3171
3231
  }
3172
3232
  function selectCoinsWithAsset(coins, assetId, requiredAmount) {
3173
3233
  const coinsWithAsset = coins.filter((coin) => coin.assets?.some((a) => a.assetId === assetId));
@@ -3204,7 +3264,7 @@ function selectedCoinsToAssetInputs(selectedCoins) {
3204
3264
  }
3205
3265
  function toXOnlySignerHex(pubkeyHex) {
3206
3266
  const bytes = base.hex.decode(pubkeyHex);
3207
- if (bytes.length === 32 || bytes.length === 33) return base.hex.encode(chunkLUWSY2QO_cjs.toXOnly(bytes, "signer key"));
3267
+ if (bytes.length === 32 || bytes.length === 33) return base.hex.encode(chunkFUW3OM5X_cjs.toXOnly(bytes, "signer key"));
3208
3268
  throw new Error(`invalid signer pubkey length: expected 32 or 33 bytes, got ${bytes.length}`);
3209
3269
  }
3210
3270
  function signerSetFromInfo(info) {
@@ -3251,13 +3311,13 @@ var toTimelock = (value) => ({
3251
3311
  var toSeconds = (t) => t.type === "seconds" ? t.value : t.value * NOMINAL_BLOCK_SECONDS;
3252
3312
  function assertTimelockInPolicy(timelock, policy, label, overrideOption) {
3253
3313
  if (policy.requireSeconds && timelock.type === "blocks") {
3254
- throw new chunkCJN4CUEU_cjs.ServerResponseMismatchError(
3314
+ throw new chunkDAYCCIRO_cjs.ServerResponseMismatchError(
3255
3315
  `${label} rejected: block-typed timelocks are not accepted (got ${timelock.value})`
3256
3316
  );
3257
3317
  }
3258
3318
  const seconds = toSeconds(timelock);
3259
3319
  if (seconds < policy.minSeconds) {
3260
- throw new chunkCJN4CUEU_cjs.ServerResponseMismatchError(
3320
+ throw new chunkDAYCCIRO_cjs.ServerResponseMismatchError(
3261
3321
  `${label} rejected: ${timelock.value} ${timelock.type} is below the ${policy.minSeconds}s floor; pass ${overrideOption}: ${seconds}n to Wallet.create to lower it`
3262
3322
  );
3263
3323
  }
@@ -3278,7 +3338,7 @@ function resolveBatchExpiryPolicy(network, overrides) {
3278
3338
  }
3279
3339
  function assertValidBatchExpiry(batchExpiry, policy) {
3280
3340
  if (policy.advertisedVtxoTreeExpiry !== void 0 && batchExpiry !== policy.advertisedVtxoTreeExpiry) {
3281
- throw new chunkCJN4CUEU_cjs.ServerResponseMismatchError(
3341
+ throw new chunkDAYCCIRO_cjs.ServerResponseMismatchError(
3282
3342
  `batch expiry rejected: ${batchExpiry} does not match the advertised vtxoTreeExpiry ${policy.advertisedVtxoTreeExpiry}`
3283
3343
  );
3284
3344
  }
@@ -3308,21 +3368,21 @@ function resolveCheckpointExitDelayPolicy(network, overrides) {
3308
3368
  function assertValidServerUnrollScript(checkpointTapscript, policy) {
3309
3369
  let script;
3310
3370
  try {
3311
- script = chunkCJN4CUEU_cjs.CSVMultisigTapscript.decode(base.hex.decode(checkpointTapscript));
3371
+ script = chunkDAYCCIRO_cjs.CSVMultisigTapscript.decode(base.hex.decode(checkpointTapscript));
3312
3372
  } catch (e) {
3313
- throw new chunkCJN4CUEU_cjs.ServerResponseMismatchError(
3373
+ throw new chunkDAYCCIRO_cjs.ServerResponseMismatchError(
3314
3374
  `checkpoint exit delay rejected: invalid checkpointTapscript from server (${e instanceof Error ? e.message : String(e)})`
3315
3375
  );
3316
3376
  }
3317
3377
  if (policy.advertisedForfeitPubkey !== void 0) {
3318
3378
  const { pubkeys } = script.params;
3319
3379
  if (pubkeys.length !== 1) {
3320
- throw new chunkCJN4CUEU_cjs.ServerResponseMismatchError(
3380
+ throw new chunkDAYCCIRO_cjs.ServerResponseMismatchError(
3321
3381
  `checkpoint exit delay rejected: checkpointTapscript must commit to exactly one pubkey, got ${pubkeys.length} [${pubkeys.map(base.hex.encode).join(", ")}]`
3322
3382
  );
3323
3383
  }
3324
3384
  if (!utils_js.equalBytes(pubkeys[0], policy.advertisedForfeitPubkey)) {
3325
- throw new chunkCJN4CUEU_cjs.ServerResponseMismatchError(
3385
+ throw new chunkDAYCCIRO_cjs.ServerResponseMismatchError(
3326
3386
  `checkpoint exit delay rejected: checkpointTapscript pubkey ${base.hex.encode(pubkeys[0])} does not match the advertised forfeitPubkey ${base.hex.encode(policy.advertisedForfeitPubkey)}`
3327
3387
  );
3328
3388
  }
@@ -3366,8 +3426,8 @@ function buildOffchainTx(inputs, outputs, serverUnrollScript) {
3366
3426
  function buildVirtualTx(inputs, outputs) {
3367
3427
  let lockTime = 0n;
3368
3428
  for (const input of inputs) {
3369
- const tapscript = chunkCJN4CUEU_cjs.decodeTapscript(chunkCJN4CUEU_cjs.scriptFromTapLeafScript(input.tapLeafScript));
3370
- if (chunkCJN4CUEU_cjs.CLTVMultisigTapscript.is(tapscript)) {
3429
+ const tapscript = chunkDAYCCIRO_cjs.decodeTapscript(chunkDAYCCIRO_cjs.scriptFromTapLeafScript(input.tapLeafScript));
3430
+ if (chunkDAYCCIRO_cjs.CLTVMultisigTapscript.is(tapscript)) {
3371
3431
  if (lockTime !== 0n) {
3372
3432
  if (isSeconds(lockTime) !== isSeconds(tapscript.params.absoluteTimelock)) {
3373
3433
  throw new Error("cannot mix seconds and blocks locktime");
@@ -3378,7 +3438,7 @@ function buildVirtualTx(inputs, outputs) {
3378
3438
  }
3379
3439
  }
3380
3440
  }
3381
- const tx = new chunkCJN4CUEU_cjs.Transaction({
3441
+ const tx = new chunkDAYCCIRO_cjs.Transaction({
3382
3442
  version: 3,
3383
3443
  lockTime: Number(lockTime)
3384
3444
  });
@@ -3388,12 +3448,12 @@ function buildVirtualTx(inputs, outputs) {
3388
3448
  index: input.vout,
3389
3449
  sequence: lockTime ? btcSigner.DEFAULT_SEQUENCE - 1 : void 0,
3390
3450
  witnessUtxo: {
3391
- script: chunkCJN4CUEU_cjs.VtxoScript.decode(input.tapTree).pkScript,
3451
+ script: chunkDAYCCIRO_cjs.VtxoScript.decode(input.tapTree).pkScript,
3392
3452
  amount: BigInt(input.value)
3393
3453
  },
3394
3454
  tapLeafScript: [input.tapLeafScript]
3395
3455
  });
3396
- chunkCJN4CUEU_cjs.setArkPsbtField(tx, i, chunkCJN4CUEU_cjs.VtxoTaprootTree, input.tapTree);
3456
+ chunkDAYCCIRO_cjs.setArkPsbtField(tx, i, chunkDAYCCIRO_cjs.VtxoTaprootTree, input.tapTree);
3397
3457
  }
3398
3458
  for (const output of outputs) {
3399
3459
  tx.addOutput(output);
@@ -3402,8 +3462,8 @@ function buildVirtualTx(inputs, outputs) {
3402
3462
  return tx;
3403
3463
  }
3404
3464
  function buildCheckpointTx(vtxo, serverUnrollScript) {
3405
- const collaborativeClosure = chunkCJN4CUEU_cjs.decodeTapscript(chunkCJN4CUEU_cjs.scriptFromTapLeafScript(vtxo.tapLeafScript));
3406
- const checkpointVtxoScript = new chunkCJN4CUEU_cjs.VtxoScript([
3465
+ const collaborativeClosure = chunkDAYCCIRO_cjs.decodeTapscript(chunkDAYCCIRO_cjs.scriptFromTapLeafScript(vtxo.tapLeafScript));
3466
+ const checkpointVtxoScript = new chunkDAYCCIRO_cjs.VtxoScript([
3407
3467
  serverUnrollScript.script,
3408
3468
  collaborativeClosure.script
3409
3469
  ]);
@@ -3479,7 +3539,7 @@ function verifyTapscriptSignatures(tx, inputIndex, requiredSigners, excludePubke
3479
3539
  const sighashType = signature.length === 65 ? signature[64] : btcSigner.SigHash.DEFAULT;
3480
3540
  const sig = signature.subarray(0, 64);
3481
3541
  if (!allowedSighashTypes.includes(sighashType)) {
3482
- const sighashName = chunkCJN4CUEU_cjs.formatSighash(sighashType);
3542
+ const sighashName = chunkDAYCCIRO_cjs.formatSighash(sighashType);
3483
3543
  throw new Error(
3484
3544
  `Unallowed sighash type ${sighashName} for input ${inputIndex}, pubkey ${pubKeyHex}.`
3485
3545
  );
@@ -3553,7 +3613,7 @@ function combineTapscriptSigs(signedTx, originalTx) {
3553
3613
  }
3554
3614
  function isValidArkAddress(address) {
3555
3615
  try {
3556
- chunkCJN4CUEU_cjs.ArkAddress.decode(address);
3616
+ chunkDAYCCIRO_cjs.ArkAddress.decode(address);
3557
3617
  return true;
3558
3618
  } catch (e) {
3559
3619
  return false;
@@ -3561,16 +3621,16 @@ function isValidArkAddress(address) {
3561
3621
  }
3562
3622
  function matchServerCheckpoints(serverCheckpointTxs, expectedCheckpoints, context) {
3563
3623
  if (serverCheckpointTxs.length !== expectedCheckpoints.length) {
3564
- throw new chunkCJN4CUEU_cjs.ServerResponseMismatchError(
3624
+ throw new chunkDAYCCIRO_cjs.ServerResponseMismatchError(
3565
3625
  `${context} returned ${serverCheckpointTxs.length} checkpoints, expected ${expectedCheckpoints.length}`
3566
3626
  );
3567
3627
  }
3568
3628
  const byTxid = new Map(expectedCheckpoints.map((c) => [c.id, c]));
3569
3629
  return serverCheckpointTxs.map((encoded, index) => {
3570
- const server = chunkCJN4CUEU_cjs.Transaction.fromPSBT(base.base64.decode(encoded));
3630
+ const server = chunkDAYCCIRO_cjs.Transaction.fromPSBT(base.base64.decode(encoded));
3571
3631
  const local = byTxid.get(server.id);
3572
3632
  if (!local) {
3573
- throw new chunkCJN4CUEU_cjs.ServerResponseMismatchError(
3633
+ throw new chunkDAYCCIRO_cjs.ServerResponseMismatchError(
3574
3634
  `${context} checkpoint ${index} txid ${server.id} does not match any submitted checkpoint`
3575
3635
  );
3576
3636
  }
@@ -3580,14 +3640,14 @@ function matchServerCheckpoints(serverCheckpointTxs, expectedCheckpoints, contex
3580
3640
  }
3581
3641
  function assertSubmittedArkTxid(response, signedArkTx, context) {
3582
3642
  if (response.arkTxid !== signedArkTx.id) {
3583
- throw new chunkCJN4CUEU_cjs.ServerResponseMismatchError(
3643
+ throw new chunkDAYCCIRO_cjs.ServerResponseMismatchError(
3584
3644
  `${context} returned ark txid ${response.arkTxid}, expected ${signedArkTx.id}`
3585
3645
  );
3586
3646
  }
3587
3647
  if (response.finalArkTx === void 0) return;
3588
- const finalTxid = chunkCJN4CUEU_cjs.Transaction.fromPSBT(base.base64.decode(response.finalArkTx)).id;
3648
+ const finalTxid = chunkDAYCCIRO_cjs.Transaction.fromPSBT(base.base64.decode(response.finalArkTx)).id;
3589
3649
  if (finalTxid !== signedArkTx.id) {
3590
- throw new chunkCJN4CUEU_cjs.ServerResponseMismatchError(
3650
+ throw new chunkDAYCCIRO_cjs.ServerResponseMismatchError(
3591
3651
  `${context} returned final ark tx ${finalTxid}, expected ${signedArkTx.id}`
3592
3652
  );
3593
3653
  }
@@ -3599,20 +3659,20 @@ function assertServerSignedLeaf(serverTx, localTx, inputIndex, serverPubkeys, co
3599
3659
  `${context}: input ${inputIndex} carries no spend leaf to verify the server signature against`
3600
3660
  );
3601
3661
  }
3602
- const script = chunkCJN4CUEU_cjs.scriptFromTapLeafScript(leaf);
3662
+ const script = chunkDAYCCIRO_cjs.scriptFromTapLeafScript(leaf);
3603
3663
  let leafPubkeys;
3604
3664
  try {
3605
- leafPubkeys = chunkCJN4CUEU_cjs.decodeTapscript(script).params.pubkeys.map(
3606
- (key) => base.hex.encode(chunkLUWSY2QO_cjs.toXOnly(key, "leaf key"))
3665
+ leafPubkeys = chunkDAYCCIRO_cjs.decodeTapscript(script).params.pubkeys.map(
3666
+ (key) => base.hex.encode(chunkFUW3OM5X_cjs.toXOnly(key, "leaf key"))
3607
3667
  );
3608
3668
  } catch (error) {
3609
- throw new chunkCJN4CUEU_cjs.ServerResponseMismatchError(
3669
+ throw new chunkDAYCCIRO_cjs.ServerResponseMismatchError(
3610
3670
  `${context}: input ${inputIndex} spend leaf cannot be decoded (${error instanceof Error ? error.message : String(error)})`
3611
3671
  );
3612
3672
  }
3613
3673
  const signer = leafPubkeys.find((key) => serverPubkeys.has(key));
3614
3674
  if (!signer) {
3615
- throw new chunkCJN4CUEU_cjs.ServerResponseMismatchError(
3675
+ throw new chunkDAYCCIRO_cjs.ServerResponseMismatchError(
3616
3676
  `${context}: input ${inputIndex} spend leaf names no signer key the server advertises`
3617
3677
  );
3618
3678
  }
@@ -3626,7 +3686,7 @@ function assertServerSignedLeaf(serverTx, localTx, inputIndex, serverPubkeys, co
3626
3686
  payment_js.tapLeafHash(script)
3627
3687
  );
3628
3688
  } catch (error) {
3629
- throw new chunkCJN4CUEU_cjs.ServerResponseMismatchError(
3689
+ throw new chunkDAYCCIRO_cjs.ServerResponseMismatchError(
3630
3690
  `${context}: input ${inputIndex} is not signed by the server on the leaf being spent (${error instanceof Error ? error.message : String(error)})`
3631
3691
  );
3632
3692
  }
@@ -3635,20 +3695,20 @@ function assertCheckpointsMatchInputs(checkpoints, inputs, unrollCandidates, con
3635
3695
  const byOutpoint = new Map(inputs.map((input) => [`${input.txid}:${input.vout}`, input]));
3636
3696
  for (const [index, checkpoint] of checkpoints.entries()) {
3637
3697
  if (checkpoint.inputsLength !== 1) {
3638
- throw new chunkCJN4CUEU_cjs.ServerResponseMismatchError(
3698
+ throw new chunkDAYCCIRO_cjs.ServerResponseMismatchError(
3639
3699
  `${context}: checkpoint ${index} spends ${checkpoint.inputsLength} inputs, expected 1`
3640
3700
  );
3641
3701
  }
3642
3702
  const spent = checkpoint.getInput(0);
3643
3703
  if (!spent.txid || spent.index === void 0) {
3644
- throw new chunkCJN4CUEU_cjs.ServerResponseMismatchError(
3704
+ throw new chunkDAYCCIRO_cjs.ServerResponseMismatchError(
3645
3705
  `${context}: checkpoint ${index} has no input outpoint`
3646
3706
  );
3647
3707
  }
3648
3708
  const outpoint = `${base.hex.encode(spent.txid)}:${spent.index}`;
3649
3709
  const input = byOutpoint.get(outpoint);
3650
3710
  if (!input) {
3651
- throw new chunkCJN4CUEU_cjs.ServerResponseMismatchError(
3711
+ throw new chunkDAYCCIRO_cjs.ServerResponseMismatchError(
3652
3712
  `${context}: checkpoint ${index} spends ${outpoint}, which is not one of the requested virtual outputs`
3653
3713
  );
3654
3714
  }
@@ -3656,7 +3716,7 @@ function assertCheckpointsMatchInputs(checkpoints, inputs, unrollCandidates, con
3656
3716
  (unroll) => buildCheckpointTx(input, unroll).tx.id === checkpoint.id
3657
3717
  );
3658
3718
  if (!rebuilt) {
3659
- throw new chunkCJN4CUEU_cjs.ServerResponseMismatchError(
3719
+ throw new chunkDAYCCIRO_cjs.ServerResponseMismatchError(
3660
3720
  `${context}: checkpoint ${index} txid ${checkpoint.id} differs from the checkpoint built locally for ${outpoint}`
3661
3721
  );
3662
3722
  }
@@ -3682,9 +3742,9 @@ async function submitOffchainTx(provider, offchainTx, signer, hooks, options) {
3682
3742
  const matched = matchServerCheckpoints(signedCheckpointTxs, offchainTx.checkpoints, "submitTx");
3683
3743
  matched.forEach(({ server }, index) => {
3684
3744
  try {
3685
- chunkCJN4CUEU_cjs.assertAllowedSighashTypes(server);
3745
+ chunkDAYCCIRO_cjs.assertAllowedSighashTypes(server);
3686
3746
  } catch (error) {
3687
- throw new chunkCJN4CUEU_cjs.ServerResponseMismatchError(
3747
+ throw new chunkDAYCCIRO_cjs.ServerResponseMismatchError(
3688
3748
  `submitTx checkpoint ${index}: ${error instanceof Error ? error.message : String(error)}`
3689
3749
  );
3690
3750
  }
@@ -3692,14 +3752,14 @@ async function submitOffchainTx(provider, offchainTx, signer, hooks, options) {
3692
3752
  const verify = options?.verifyServerSignatures;
3693
3753
  if (verify) {
3694
3754
  if (response.finalArkTx === void 0) {
3695
- throw new chunkCJN4CUEU_cjs.ServerResponseMismatchError(
3755
+ throw new chunkDAYCCIRO_cjs.ServerResponseMismatchError(
3696
3756
  "submitTx: server returned no final ark tx to verify its signatures against"
3697
3757
  );
3698
3758
  }
3699
- const finalArkTx = chunkCJN4CUEU_cjs.Transaction.fromPSBT(base.base64.decode(response.finalArkTx));
3759
+ const finalArkTx = chunkDAYCCIRO_cjs.Transaction.fromPSBT(base.base64.decode(response.finalArkTx));
3700
3760
  const serverPubkeys = new Set(
3701
3761
  [verify.serverPubkey, ...verify.deprecatedServerPubkeys ?? []].map(
3702
- (key) => base.hex.encode(chunkLUWSY2QO_cjs.toXOnly(key, "server key"))
3762
+ (key) => base.hex.encode(chunkFUW3OM5X_cjs.toXOnly(key, "server key"))
3703
3763
  )
3704
3764
  );
3705
3765
  for (let i = 0; i < offchainTx.arkTx.inputsLength; i++) {
@@ -3751,12 +3811,12 @@ function claimWithPreimageIdentity(identity, preimage) {
3751
3811
  return {
3752
3812
  ...identity,
3753
3813
  sign: async (tx, inputIndexes) => {
3754
- const signed = chunkCJN4CUEU_cjs.Transaction.fromPSBT(
3814
+ const signed = chunkDAYCCIRO_cjs.Transaction.fromPSBT(
3755
3815
  (await identity.sign(tx.clone(), inputIndexes)).toPSBT()
3756
3816
  );
3757
3817
  const indexes = inputIndexes ?? Array.from({ length: signed.inputsLength }, (_, i) => i);
3758
3818
  for (const index of indexes) {
3759
- chunkCJN4CUEU_cjs.setArkPsbtField(signed, index, chunkCJN4CUEU_cjs.ConditionWitness, [preimage]);
3819
+ chunkDAYCCIRO_cjs.setArkPsbtField(signed, index, chunkDAYCCIRO_cjs.ConditionWitness, [preimage]);
3760
3820
  }
3761
3821
  return signed;
3762
3822
  }
@@ -3951,7 +4011,7 @@ function extendCoinWithTapscript(boardingTapscript, utxo) {
3951
4011
  };
3952
4012
  }
3953
4013
  function deriveContractTapscripts(contract) {
3954
- const handler = chunkLUWSY2QO_cjs.contractHandlers.get(contract.type);
4014
+ const handler = chunkFUW3OM5X_cjs.contractHandlers.get(contract.type);
3955
4015
  if (!handler) {
3956
4016
  throw new Error(`No handler for contract type '${contract.type}'`);
3957
4017
  }
@@ -4022,7 +4082,7 @@ function getRandomId() {
4022
4082
  }
4023
4083
  function isValidArkAddress2(address) {
4024
4084
  try {
4025
- chunkCJN4CUEU_cjs.ArkAddress.decode(address);
4085
+ chunkDAYCCIRO_cjs.ArkAddress.decode(address);
4026
4086
  return true;
4027
4087
  } catch (e) {
4028
4088
  return false;
@@ -4050,7 +4110,7 @@ function assertRecipientArkAddress(encoded, address, context) {
4050
4110
  function assertTapTreeDerivesAddress(encoded, tapTree, address) {
4051
4111
  let derived;
4052
4112
  try {
4053
- derived = chunkCJN4CUEU_cjs.VtxoScript.decode(tapTree).pkScript;
4113
+ derived = chunkDAYCCIRO_cjs.VtxoScript.decode(tapTree).pkScript;
4054
4114
  } catch (e) {
4055
4115
  throw new Error(
4056
4116
  `Invalid tapTree for ${encoded}: ${e instanceof Error ? e.message : String(e)}`
@@ -4067,7 +4127,7 @@ function validateRecipients(recipients, dustAmount, context) {
4067
4127
  for (const recipient of recipients) {
4068
4128
  let address;
4069
4129
  try {
4070
- address = chunkCJN4CUEU_cjs.ArkAddress.decode(recipient.address);
4130
+ address = chunkDAYCCIRO_cjs.ArkAddress.decode(recipient.address);
4071
4131
  } catch (e) {
4072
4132
  throw new Error(`Invalid Arkade address: ${recipient.address}`);
4073
4133
  }
@@ -4092,7 +4152,7 @@ function validateRecipients(recipients, dustAmount, context) {
4092
4152
 
4093
4153
  // src/contracts/spendability.ts
4094
4154
  function isContractGenericallySpendable(contract) {
4095
- return chunkLUWSY2QO_cjs.contractHandlers.get(contract.type)?.isGenericallySpendable?.(contract) === true;
4155
+ return chunkFUW3OM5X_cjs.contractHandlers.get(contract.type)?.isGenericallySpendable?.(contract) === true;
4096
4156
  }
4097
4157
  function gatedContracts(contracts) {
4098
4158
  const gated = /* @__PURE__ */ new Map();
@@ -4114,7 +4174,7 @@ function gateExclusion(gated) {
4114
4174
  return (vtxo) => {
4115
4175
  const type = gatedTypeOf(vtxo, gated);
4116
4176
  if (type === void 0) return void 0;
4117
- if (!chunkLUWSY2QO_cjs.contractHandlers.has(type)) {
4177
+ if (!chunkFUW3OM5X_cjs.contractHandlers.has(type)) {
4118
4178
  return `at ${vtxo.script} (contract type '${type}') has no handler registered in this build`;
4119
4179
  }
4120
4180
  return `at ${vtxo.script} (contract type '${type}') is not generically spendable`;
@@ -4150,7 +4210,7 @@ function selectPendingRecoveryOutpoints(contractsWithVtxos, signerSet, nowSecond
4150
4210
  continue;
4151
4211
  }
4152
4212
  for (const v of vtxos) {
4153
- if (!chunkCJN4CUEU_cjs.isVtxoSpent(v) && !v.isSwept && !v.isUnrolled) {
4213
+ if (!chunkDAYCCIRO_cjs.isVtxoSpent(v) && !v.isSwept && !v.isUnrolled) {
4154
4214
  out.add(`${v.txid}:${v.vout}`);
4155
4215
  }
4156
4216
  }
@@ -4185,10 +4245,10 @@ function byValueDescending(vtxos) {
4185
4245
  return [...vtxos].sort((a, b) => b.value - a.value);
4186
4246
  }
4187
4247
  async function fetchTimeHeight(wallet) {
4188
- return chunkCJN4CUEU_cjs.resolveTimeHeight(wallet.onchainProvider);
4248
+ return chunkDAYCCIRO_cjs.resolveTimeHeight(wallet.onchainProvider);
4189
4249
  }
4190
4250
  function canMigrateBySend(vtxo, now) {
4191
- if (!chunkCJN4CUEU_cjs.canSpendOffchain(vtxo, now)) return false;
4251
+ if (!chunkDAYCCIRO_cjs.canSpendOffchain(vtxo, now)) return false;
4192
4252
  return vtxo.expiresAt !== void 0 || vtxo.expiresAtHeight !== void 0;
4193
4253
  }
4194
4254
  function byExpiryAscending(vtxos, now) {
@@ -4196,7 +4256,7 @@ function byExpiryAscending(vtxos, now) {
4196
4256
  if (vtxo.isSwept) return -Infinity;
4197
4257
  if (vtxo.expiresAt !== void 0) return vtxo.expiresAt.getTime();
4198
4258
  if (vtxo.expiresAtHeight !== void 0) {
4199
- return chunkCJN4CUEU_cjs.isPastExpiry(vtxo, now) ? -Infinity : Infinity;
4259
+ return chunkDAYCCIRO_cjs.isPastExpiry(vtxo, now) ? -Infinity : Infinity;
4200
4260
  }
4201
4261
  return Infinity;
4202
4262
  };
@@ -4223,7 +4283,7 @@ function priceSettlementInputs(vtxos, estimator) {
4223
4283
  const payable = [];
4224
4284
  const net = /* @__PURE__ */ new Map();
4225
4285
  for (const vtxo of vtxos) {
4226
- const inputFee = estimator.evalOffchainInput(chunkCJN4CUEU_cjs.toOffchainInputFeeParams(vtxo));
4286
+ const inputFee = estimator.evalOffchainInput(chunkDAYCCIRO_cjs.toOffchainInputFeeParams(vtxo));
4227
4287
  if (inputFee.satoshis >= vtxo.value) {
4228
4288
  continue;
4229
4289
  }
@@ -4249,7 +4309,7 @@ function deductOffchainOutputFee(subtotal, estimator, arkAddress) {
4249
4309
  }
4250
4310
  const outputFee = estimator.evalOffchainOutput({
4251
4311
  amount: subtotal,
4252
- script: base.hex.encode(chunkCJN4CUEU_cjs.ArkAddress.decode(arkAddress).pkScript)
4312
+ script: base.hex.encode(chunkDAYCCIRO_cjs.ArkAddress.decode(arkAddress).pkScript)
4253
4313
  });
4254
4314
  return subtotal - BigInt(outputFee.satoshis);
4255
4315
  }
@@ -4267,10 +4327,10 @@ var DEFAULT_SETTLEMENT_CONFIG = {
4267
4327
  };
4268
4328
  function getRecoverableVtxos(vtxos, dustAmount, now) {
4269
4329
  return vtxos.filter((vtxo) => {
4270
- if (chunkCJN4CUEU_cjs.canRecoverOnchain(vtxo, now)) {
4330
+ if (chunkDAYCCIRO_cjs.canRecoverOnchain(vtxo, now)) {
4271
4331
  return true;
4272
4332
  }
4273
- if (chunkCJN4CUEU_cjs.canSpendOffchain(vtxo, now) && vtxo.isPreconfirmed && isSubdust(vtxo, dustAmount)) {
4333
+ if (chunkDAYCCIRO_cjs.canSpendOffchain(vtxo, now) && vtxo.isPreconfirmed && isSubdust(vtxo, dustAmount)) {
4274
4334
  return true;
4275
4335
  }
4276
4336
  return false;
@@ -4302,7 +4362,7 @@ function getRecoverableWithSubdust(vtxos, dustAmount, now) {
4302
4362
  function isVtxoExpiringSoon(vtxo, thresholdMs) {
4303
4363
  if (vtxo.isUnrolled) return false;
4304
4364
  const realThresholdMs = thresholdMs <= 100 ? DEFAULT_THRESHOLD_MS : thresholdMs;
4305
- const expiresAt = chunkCJN4CUEU_cjs.normalizeVtxo(vtxo).expiresAt;
4365
+ const expiresAt = chunkDAYCCIRO_cjs.normalizeVtxo(vtxo).expiresAt;
4306
4366
  if (expiresAt === void 0) return false;
4307
4367
  const now = Date.now();
4308
4368
  const batchExpiry = expiresAt.getTime();
@@ -4313,7 +4373,7 @@ function getExpiringAndRecoverableVtxos(vtxos, thresholdMs, dustAmount, now) {
4313
4373
  return vtxos.filter(
4314
4374
  // The leading exclusion covers the `isSubdust` arm too, which is a value
4315
4375
  // property and would otherwise re-admit an exited coin on its own.
4316
- (vtxo) => !vtxo.isUnrolled && (isVtxoExpiringSoon(vtxo, thresholdMs) || chunkCJN4CUEU_cjs.canRecoverOnchain(vtxo, now) || isSubdust(vtxo, dustAmount))
4376
+ (vtxo) => !vtxo.isUnrolled && (isVtxoExpiringSoon(vtxo, thresholdMs) || chunkDAYCCIRO_cjs.canRecoverOnchain(vtxo, now) || isSubdust(vtxo, dustAmount))
4317
4377
  );
4318
4378
  }
4319
4379
  function isMigrationCapable(wallet) {
@@ -4915,11 +4975,11 @@ var VtxoManager = class _VtxoManager {
4915
4975
  `Sweep not economical: output ${outputAmount} sats after ${fee} sats fee is below dust (${dustAmount} sats)`
4916
4976
  );
4917
4977
  }
4918
- const tx = new chunkCJN4CUEU_cjs.Transaction();
4978
+ const tx = new chunkDAYCCIRO_cjs.Transaction();
4919
4979
  for (const utxo of expiredUtxos) {
4920
- const utxoScript = chunkCJN4CUEU_cjs.VtxoScript.decode(utxo.tapTree);
4980
+ const utxoScript = chunkDAYCCIRO_cjs.VtxoScript.decode(utxo.tapTree);
4921
4981
  const utxoExitLeaf = utxoScript.leaves.find(
4922
- (leaf) => chunkCJN4CUEU_cjs.CSVMultisigTapscript.isScriptValid(chunkCJN4CUEU_cjs.scriptFromTapLeafScript(leaf)) === true
4982
+ (leaf) => chunkDAYCCIRO_cjs.CSVMultisigTapscript.isScriptValid(chunkDAYCCIRO_cjs.scriptFromTapLeafScript(leaf)) === true
4923
4983
  );
4924
4984
  if (!utxoExitLeaf) {
4925
4985
  throw new Error(
@@ -4934,7 +4994,7 @@ var VtxoManager = class _VtxoManager {
4934
4994
  amount: BigInt(utxo.value)
4935
4995
  },
4936
4996
  tapLeafScript: [utxoExitLeaf],
4937
- sequence: chunkCJN4CUEU_cjs.getSequence(utxoExitLeaf)
4997
+ sequence: chunkDAYCCIRO_cjs.getSequence(utxoExitLeaf)
4938
4998
  });
4939
4999
  }
4940
5000
  tx.addOutputAddress(boardingAddress, outputAmount, this.getNetwork());
@@ -5177,8 +5237,8 @@ var VtxoManager = class _VtxoManager {
5177
5237
  const cls = classifyAgainstSignerSet(serverPubKey, signerSet, nowSeconds);
5178
5238
  if (cls.status === "CURRENT") continue;
5179
5239
  const live = vtxos.filter((v) => !v.isUnrolled);
5180
- const recoverable = live.filter((v) => v.isSwept && !chunkCJN4CUEU_cjs.isVtxoSpent(v));
5181
- const spendable = live.filter((v) => !chunkCJN4CUEU_cjs.isVtxoSpent(v) && !v.isSwept);
5240
+ const recoverable = live.filter((v) => v.isSwept && !chunkDAYCCIRO_cjs.isVtxoSpent(v));
5241
+ const spendable = live.filter((v) => !chunkDAYCCIRO_cjs.isVtxoSpent(v) && !v.isSwept);
5182
5242
  const value = spendable.reduce((sum, v) => sum + v.value, 0);
5183
5243
  let recoverableCount = 0;
5184
5244
  let recoverableValue = 0;
@@ -5191,7 +5251,7 @@ var VtxoManager = class _VtxoManager {
5191
5251
  awaitingSweepCount = spendable.length;
5192
5252
  awaitingSweepValue = value;
5193
5253
  for (const v of spendable) {
5194
- const exp = chunkCJN4CUEU_cjs.toBatchExpiry(v);
5254
+ const exp = chunkDAYCCIRO_cjs.toBatchExpiry(v);
5195
5255
  if (exp !== void 0 && (nextSweepEta === void 0 || exp < nextSweepEta)) {
5196
5256
  nextSweepEta = exp;
5197
5257
  }
@@ -5452,7 +5512,7 @@ var VtxoManager = class _VtxoManager {
5452
5512
  /** Decodes the boarding tapscript exit path to extract the CSV timelock. */
5453
5513
  getBoardingTimelock() {
5454
5514
  const wallet = this.getSweepWallet();
5455
- const exitScript = chunkCJN4CUEU_cjs.CSVMultisigTapscript.decode(
5515
+ const exitScript = chunkDAYCCIRO_cjs.CSVMultisigTapscript.decode(
5456
5516
  base.hex.decode(wallet.boardingTapscript.exitScript)
5457
5517
  );
5458
5518
  return exitScript.params.timelock;
@@ -5583,8 +5643,8 @@ var VtxoManager = class _VtxoManager {
5583
5643
  * or doesn't carry the metadata.
5584
5644
  */
5585
5645
  extractSpentOutpoint(error) {
5586
- const ark = chunkCJN4CUEU_cjs.maybeArkError(error);
5587
- if (!chunkCJN4CUEU_cjs.isArkError(ark, chunkCJN4CUEU_cjs.ArkErrorName.VTXO_ALREADY_SPENT)) return void 0;
5646
+ const ark = chunkDAYCCIRO_cjs.maybeArkError(error);
5647
+ if (!chunkDAYCCIRO_cjs.isArkError(ark, chunkDAYCCIRO_cjs.ArkErrorName.VTXO_ALREADY_SPENT)) return void 0;
5588
5648
  const raw = ark.metadata?.vtxo_outpoint;
5589
5649
  if (typeof raw !== "string") return void 0;
5590
5650
  const [txid, voutStr] = raw.split(":");
@@ -5774,7 +5834,7 @@ var VtxoManager = class _VtxoManager {
5774
5834
  if (filteredVtxos.length >= MAX_VTXOS_PER_SETTLEMENT) {
5775
5835
  break;
5776
5836
  }
5777
- const inputFee = estimator.evalOffchainInput(chunkCJN4CUEU_cjs.toOffchainInputFeeParams(v));
5837
+ const inputFee = estimator.evalOffchainInput(chunkDAYCCIRO_cjs.toOffchainInputFeeParams(v));
5778
5838
  if (inputFee.satoshis >= v.value) {
5779
5839
  continue;
5780
5840
  }
@@ -5794,7 +5854,7 @@ var VtxoManager = class _VtxoManager {
5794
5854
  const arkAddress = await this.wallet.getAddress();
5795
5855
  const outputFee = estimator.evalOffchainOutput({
5796
5856
  amount: totalAmount,
5797
- script: base.hex.encode(chunkCJN4CUEU_cjs.ArkAddress.decode(arkAddress).pkScript)
5857
+ script: base.hex.encode(chunkDAYCCIRO_cjs.ArkAddress.decode(arkAddress).pkScript)
5798
5858
  });
5799
5859
  totalAmount -= BigInt(outputFee.satoshis);
5800
5860
  if (totalAmount < dustAmount) return;
@@ -5874,7 +5934,7 @@ var ArkNote = class _ArkNote {
5874
5934
  this.value = value;
5875
5935
  this.HRP = HRP;
5876
5936
  const preimageHash = utils_js.sha256(this.preimage);
5877
- this.vtxoScript = new chunkCJN4CUEU_cjs.VtxoScript([noteTapscript(preimageHash)]);
5937
+ this.vtxoScript = new chunkDAYCCIRO_cjs.VtxoScript([noteTapscript(preimageHash)]);
5878
5938
  const leaf = this.vtxoScript.leaves[0];
5879
5939
  this.txid = base.hex.encode(new Uint8Array(preimageHash).reverse());
5880
5940
  this.tapTree = this.vtxoScript.encode();
@@ -5979,8 +6039,8 @@ function noteTapscript(preimageHash) {
5979
6039
  return btcSigner.Script.encode(["SHA256", preimageHash, "EQUAL"]);
5980
6040
  }
5981
6041
  var ArkadeCash = class _ArkadeCash {
5982
- constructor(privateKey, serverPubKey, csvTimelock, hrp = _ArkadeCash.DefaultHRP) {
5983
- this.csvTimelock = csvTimelock;
6042
+ constructor(privateKey, serverPubKey, csvTimelock2, hrp = _ArkadeCash.DefaultHRP) {
6043
+ this.csvTimelock = csvTimelock2;
5984
6044
  this.hrp = hrp;
5985
6045
  if (privateKey.length !== 32) {
5986
6046
  throw new Error(
@@ -6020,8 +6080,8 @@ var ArkadeCash = class _ArkadeCash {
6020
6080
  get publicKey() {
6021
6081
  return this._publicKey.slice();
6022
6082
  }
6023
- static generate(serverPubKey, csvTimelock, hrp) {
6024
- return new _ArkadeCash(utils_js.randomPrivateKeyBytes(), serverPubKey, csvTimelock, hrp);
6083
+ static generate(serverPubKey, csvTimelock2, hrp) {
6084
+ return new _ArkadeCash(utils_js.randomPrivateKeyBytes(), serverPubKey, csvTimelock2, hrp);
6025
6085
  }
6026
6086
  static fromString(encoded) {
6027
6087
  const decoded = base.bech32m.decodeUnsafe(encoded.trim().toLowerCase(), 1023);
@@ -6041,15 +6101,15 @@ var ArkadeCash = class _ArkadeCash {
6041
6101
  const privateKey = data.slice(1, 33);
6042
6102
  const serverPubKey = data.slice(33, 65);
6043
6103
  const sequence = new DataView(data.buffer, data.byteOffset + 65, 4).getUint32(0, false);
6044
- const csvTimelock = chunkCJN4CUEU_cjs.sequenceToTimelock(sequence);
6045
- return new _ArkadeCash(privateKey, serverPubKey, csvTimelock, decoded.prefix);
6104
+ const csvTimelock2 = chunkDAYCCIRO_cjs.sequenceToTimelock(sequence);
6105
+ return new _ArkadeCash(privateKey, serverPubKey, csvTimelock2, decoded.prefix);
6046
6106
  }
6047
6107
  toString() {
6048
6108
  const data = new Uint8Array(_ArkadeCash.PayloadLength);
6049
6109
  data[0] = _ArkadeCash.Version;
6050
6110
  data.set(this._privateKey, 1);
6051
6111
  data.set(this._serverPubKey, 33);
6052
- const sequence = chunkCJN4CUEU_cjs.timelockToSequence(this.csvTimelock);
6112
+ const sequence = chunkDAYCCIRO_cjs.timelockToSequence(this.csvTimelock);
6053
6113
  new DataView(data.buffer, data.byteOffset + 65, 4).setUint32(0, sequence, false);
6054
6114
  const words = base.bech32m.toWords(data);
6055
6115
  return base.bech32m.encode(this.hrp, words, 1023);
@@ -6058,7 +6118,7 @@ var ArkadeCash = class _ArkadeCash {
6058
6118
  return SingleKey.fromPrivateKey(this._privateKey);
6059
6119
  }
6060
6120
  get vtxoScript() {
6061
- return new chunkLUWSY2QO_cjs.DefaultVtxo.Script({
6121
+ return new chunkFUW3OM5X_cjs.DefaultVtxo.Script({
6062
6122
  pubKey: this._publicKey,
6063
6123
  serverPubKey: this._serverPubKey,
6064
6124
  csvTimelock: this.csvTimelock
@@ -6319,7 +6379,7 @@ async function captureExitBranch(params) {
6319
6379
  const nonCommitment = ordered.filter((c) => chainTxTypeToChainedExit(c.type) !== 1 /* Commitment */).map((c) => c.txid);
6320
6380
  if (nonCommitment.length > 0) {
6321
6381
  for (const psbt of await resolver.getVirtualTxs(nonCommitment)) {
6322
- psbtByTxid.set(chunkCJN4CUEU_cjs.Transaction.fromPSBT(base.base64.decode(psbt)).id, psbt);
6382
+ psbtByTxid.set(chunkDAYCCIRO_cjs.Transaction.fromPSBT(base.base64.decode(psbt)).id, psbt);
6323
6383
  }
6324
6384
  }
6325
6385
  }
@@ -6362,10 +6422,10 @@ var IndexerExitDataSource = class {
6362
6422
  while (hasMore) {
6363
6423
  const { chain: page, page: meta } = await this.indexer.getVtxoChain(
6364
6424
  { txid: vtxo.txid, vout: vtxo.vout },
6365
- { pageIndex, pageSize: chunkCJN4CUEU_cjs.DEFAULT_PAGE_SIZE }
6425
+ { pageIndex, pageSize: chunkDAYCCIRO_cjs.DEFAULT_PAGE_SIZE }
6366
6426
  );
6367
6427
  chain.push(...page);
6368
- hasMore = meta ? page.length === chunkCJN4CUEU_cjs.DEFAULT_PAGE_SIZE : false;
6428
+ hasMore = meta ? page.length === chunkDAYCCIRO_cjs.DEFAULT_PAGE_SIZE : false;
6369
6429
  pageIndex++;
6370
6430
  }
6371
6431
  return chain;
@@ -6377,12 +6437,12 @@ var IndexerExitDataSource = class {
6377
6437
  while (hasMore) {
6378
6438
  const { txs, page } = await this.indexer.getVirtualTxs(txids, {
6379
6439
  pageIndex,
6380
- pageSize: chunkCJN4CUEU_cjs.DEFAULT_PAGE_SIZE
6440
+ pageSize: chunkDAYCCIRO_cjs.DEFAULT_PAGE_SIZE
6381
6441
  });
6382
6442
  for (const psbt of txs) {
6383
- out.set(chunkCJN4CUEU_cjs.Transaction.fromPSBT(base.base64.decode(psbt)).id, psbt);
6443
+ out.set(chunkDAYCCIRO_cjs.Transaction.fromPSBT(base.base64.decode(psbt)).id, psbt);
6384
6444
  }
6385
- hasMore = page ? txs.length === chunkCJN4CUEU_cjs.DEFAULT_PAGE_SIZE : false;
6445
+ hasMore = page ? txs.length === chunkDAYCCIRO_cjs.DEFAULT_PAGE_SIZE : false;
6386
6446
  pageIndex++;
6387
6447
  }
6388
6448
  return out;
@@ -6403,7 +6463,7 @@ function chainedTxTypeToChainTxType(t) {
6403
6463
  }
6404
6464
  }
6405
6465
  function psbtInputTxids(psbtBase64) {
6406
- const tx = chunkCJN4CUEU_cjs.Transaction.fromPSBT(base.base64.decode(psbtBase64));
6466
+ const tx = chunkDAYCCIRO_cjs.Transaction.fromPSBT(base.base64.decode(psbtBase64));
6407
6467
  const ids = [];
6408
6468
  for (let i = 0; i < tx.inputsLength; i++) {
6409
6469
  const txid = tx.getInput(i).txid;
@@ -6762,10 +6822,10 @@ async function resolveArkInfo(arkProvider, walletRepository) {
6762
6822
  try {
6763
6823
  info = await arkProvider.getInfo();
6764
6824
  } catch (err) {
6765
- if (!chunkCJN4CUEU_cjs.isRetryableProviderError(err)) throw err;
6825
+ if (!chunkDAYCCIRO_cjs.isRetryableProviderError(err)) throw err;
6766
6826
  const snapshot = await loadArkInfoSnapshot(walletRepository);
6767
6827
  if (!snapshot) {
6768
- throw new chunkCJN4CUEU_cjs.ProviderUnavailableError(
6828
+ throw new chunkDAYCCIRO_cjs.ProviderUnavailableError(
6769
6829
  "Arkade server info is unavailable and no cached snapshot exists",
6770
6830
  { cause: err }
6771
6831
  );
@@ -6957,7 +7017,7 @@ function buildGraph(rootTxid, chunksByTxid) {
6957
7017
  return new TxTree(rootTx, children);
6958
7018
  }
6959
7019
  function decodeNode(chunk) {
6960
- const tx = transaction_js.Transaction.fromPSBT(base.base64.decode(chunk.tx));
7020
+ const tx = chunkDAYCCIRO_cjs.Transaction.fromPSBT(base.base64.decode(chunk.tx));
6961
7021
  return { tx, children: chunk.children };
6962
7022
  }
6963
7023
  exports.Batch = void 0;
@@ -7172,7 +7232,7 @@ function collectArkTxidsNeedingCreatedAt(vtxos, localCreatedAt) {
7172
7232
  return [...txids];
7173
7233
  }
7174
7234
  async function buildTransactionHistory(vtxos, allBoardingTxs, commitmentsToIgnore, resolveTxCreatedAt, gatedScripts = /* @__PURE__ */ new Map()) {
7175
- const normalized = vtxos.map(chunkCJN4CUEU_cjs.normalizeVtxo).sort((a, b) => a.createdAt.getTime() - b.createdAt.getTime());
7235
+ const normalized = vtxos.map(chunkDAYCCIRO_cjs.normalizeVtxo).sort((a, b) => a.createdAt.getTime() - b.createdAt.getTime());
7176
7236
  const localCreatedAt = localCreatedAtByTxid(normalized);
7177
7237
  const gatedVtxos = normalized.filter((vtxo) => isGatedVtxo(vtxo, gatedScripts));
7178
7238
  const ownVtxos = normalized.filter((vtxo) => !isGatedVtxo(vtxo, gatedScripts));
@@ -7347,7 +7407,7 @@ var AssetManager = class extends ReadonlyAssetManager {
7347
7407
  withRecoverable: false,
7348
7408
  genericallySpendableOnly: true
7349
7409
  });
7350
- const controlAssetRef = params.controlAssetId ? chunkH62OOAS4_cjs.AssetRef.fromId(chunkH62OOAS4_cjs.AssetId.fromString(params.controlAssetId)) : null;
7410
+ const controlAssetRef = params.controlAssetId ? chunkSJPPBR2V_cjs.AssetRef.fromId(chunkSJPPBR2V_cjs.AssetId.fromString(params.controlAssetId)) : null;
7351
7411
  const coinSelection = selectVirtualCoins(virtualCoins, Number(this.wallet.dustAmount));
7352
7412
  let totalBtcSelected = 0n;
7353
7413
  const assetChanges = /* @__PURE__ */ new Map();
@@ -7360,8 +7420,8 @@ var AssetManager = class extends ReadonlyAssetManager {
7360
7420
  }
7361
7421
  }
7362
7422
  const groups = [];
7363
- const issuedAssetOutput = chunkH62OOAS4_cjs.AssetOutput.create(0, params.amount);
7364
- const issuedAssetGroup = chunkH62OOAS4_cjs.AssetGroup.create(
7423
+ const issuedAssetOutput = chunkSJPPBR2V_cjs.AssetOutput.create(0, params.amount);
7424
+ const issuedAssetGroup = chunkSJPPBR2V_cjs.AssetGroup.create(
7365
7425
  null,
7366
7426
  controlAssetRef,
7367
7427
  [],
@@ -7376,28 +7436,28 @@ var AssetManager = class extends ReadonlyAssetManager {
7376
7436
  for (const [inputIndex, assets] of assetInputs) {
7377
7437
  for (const asset of assets) {
7378
7438
  if (asset.assetId !== assetId) continue;
7379
- changeInputs.push(chunkH62OOAS4_cjs.AssetInput.create(inputIndex, asset.amount));
7439
+ changeInputs.push(chunkSJPPBR2V_cjs.AssetInput.create(inputIndex, asset.amount));
7380
7440
  }
7381
7441
  }
7382
7442
  groups.push(
7383
- chunkH62OOAS4_cjs.AssetGroup.create(
7384
- chunkH62OOAS4_cjs.AssetId.fromString(assetId),
7443
+ chunkSJPPBR2V_cjs.AssetGroup.create(
7444
+ chunkSJPPBR2V_cjs.AssetId.fromString(assetId),
7385
7445
  null,
7386
7446
  changeInputs,
7387
- [chunkH62OOAS4_cjs.AssetOutput.create(0, amount)],
7447
+ [chunkSJPPBR2V_cjs.AssetOutput.create(0, amount)],
7388
7448
  []
7389
7449
  )
7390
7450
  );
7391
7451
  }
7392
7452
  }
7393
7453
  const address = await this.wallet.getAddress();
7394
- const outputAddress = chunkCJN4CUEU_cjs.ArkAddress.decode(address);
7454
+ const outputAddress = chunkDAYCCIRO_cjs.ArkAddress.decode(address);
7395
7455
  const outputs = [
7396
7456
  {
7397
7457
  script: outputAddress.pkScript,
7398
7458
  amount: BigInt(totalBtcSelected)
7399
7459
  },
7400
- Extension.create([chunkH62OOAS4_cjs.Packet.create(groups)]).txOut()
7460
+ Extension.create([chunkSJPPBR2V_cjs.Packet.create(groups)]).txOut()
7401
7461
  ];
7402
7462
  const { arkTxid } = await this.wallet.buildAndSubmitOffchainTx(
7403
7463
  coinSelection.inputs,
@@ -7405,7 +7465,7 @@ var AssetManager = class extends ReadonlyAssetManager {
7405
7465
  );
7406
7466
  return {
7407
7467
  arkTxId: arkTxid,
7408
- assetId: chunkH62OOAS4_cjs.AssetId.create(arkTxid, 0).toString()
7468
+ assetId: chunkSJPPBR2V_cjs.AssetId.create(arkTxid, 0).toString()
7409
7469
  };
7410
7470
  }
7411
7471
  /**
@@ -7478,16 +7538,16 @@ var AssetManager = class extends ReadonlyAssetManager {
7478
7538
  for (const [inputIndex, assets] of assetInputs) {
7479
7539
  for (const asset of assets) {
7480
7540
  if (asset.assetId !== params.assetId) continue;
7481
- reissueInputs.push(chunkH62OOAS4_cjs.AssetInput.create(inputIndex, asset.amount));
7541
+ reissueInputs.push(chunkSJPPBR2V_cjs.AssetInput.create(inputIndex, asset.amount));
7482
7542
  }
7483
7543
  }
7484
7544
  const totalAssetAmount = assetToReissueAmount + params.amount;
7485
- const reissueAssetIdObj = chunkH62OOAS4_cjs.AssetId.fromString(params.assetId);
7486
- const reissueAssetGroup = chunkH62OOAS4_cjs.AssetGroup.create(
7545
+ const reissueAssetIdObj = chunkSJPPBR2V_cjs.AssetId.fromString(params.assetId);
7546
+ const reissueAssetGroup = chunkSJPPBR2V_cjs.AssetGroup.create(
7487
7547
  reissueAssetIdObj,
7488
7548
  null,
7489
7549
  reissueInputs,
7490
- [chunkH62OOAS4_cjs.AssetOutput.create(0, totalAssetAmount)],
7550
+ [chunkSJPPBR2V_cjs.AssetOutput.create(0, totalAssetAmount)],
7491
7551
  []
7492
7552
  );
7493
7553
  const groups = [reissueAssetGroup];
@@ -7496,27 +7556,27 @@ var AssetManager = class extends ReadonlyAssetManager {
7496
7556
  for (const [inputIndex, assets] of assetInputs) {
7497
7557
  for (const asset of assets) {
7498
7558
  if (asset.assetId !== assetId) continue;
7499
- changeInputs.push(chunkH62OOAS4_cjs.AssetInput.create(inputIndex, asset.amount));
7559
+ changeInputs.push(chunkSJPPBR2V_cjs.AssetInput.create(inputIndex, asset.amount));
7500
7560
  }
7501
7561
  }
7502
7562
  groups.push(
7503
- chunkH62OOAS4_cjs.AssetGroup.create(
7504
- chunkH62OOAS4_cjs.AssetId.fromString(assetId),
7563
+ chunkSJPPBR2V_cjs.AssetGroup.create(
7564
+ chunkSJPPBR2V_cjs.AssetId.fromString(assetId),
7505
7565
  null,
7506
7566
  changeInputs,
7507
- [chunkH62OOAS4_cjs.AssetOutput.create(0, amount)],
7567
+ [chunkSJPPBR2V_cjs.AssetOutput.create(0, amount)],
7508
7568
  []
7509
7569
  )
7510
7570
  );
7511
7571
  }
7512
7572
  const address = await this.wallet.getAddress();
7513
- const outputAddress = chunkCJN4CUEU_cjs.ArkAddress.decode(address);
7573
+ const outputAddress = chunkDAYCCIRO_cjs.ArkAddress.decode(address);
7514
7574
  const outputs = [
7515
7575
  {
7516
7576
  script: outputAddress.pkScript,
7517
7577
  amount: BigInt(totalBtcSelected)
7518
7578
  },
7519
- Extension.create([chunkH62OOAS4_cjs.Packet.create(groups)]).txOut()
7579
+ Extension.create([chunkSJPPBR2V_cjs.Packet.create(groups)]).txOut()
7520
7580
  ];
7521
7581
  const { arkTxid } = await this.wallet.buildAndSubmitOffchainTx(selectedCoins, outputs);
7522
7582
  return arkTxid;
@@ -7584,27 +7644,27 @@ var AssetManager = class extends ReadonlyAssetManager {
7584
7644
  for (const [inputIndex, assets] of assetInputs) {
7585
7645
  for (const asset of assets) {
7586
7646
  if (asset.assetId !== assetId) continue;
7587
- changeInputs.push(chunkH62OOAS4_cjs.AssetInput.create(inputIndex, asset.amount));
7647
+ changeInputs.push(chunkSJPPBR2V_cjs.AssetInput.create(inputIndex, asset.amount));
7588
7648
  }
7589
7649
  }
7590
7650
  groups.push(
7591
- chunkH62OOAS4_cjs.AssetGroup.create(
7592
- chunkH62OOAS4_cjs.AssetId.fromString(assetId),
7651
+ chunkSJPPBR2V_cjs.AssetGroup.create(
7652
+ chunkSJPPBR2V_cjs.AssetId.fromString(assetId),
7593
7653
  null,
7594
7654
  changeInputs,
7595
- amount > 0n ? [chunkH62OOAS4_cjs.AssetOutput.create(0, amount)] : [],
7655
+ amount > 0n ? [chunkSJPPBR2V_cjs.AssetOutput.create(0, amount)] : [],
7596
7656
  []
7597
7657
  )
7598
7658
  );
7599
7659
  }
7600
7660
  const address = await this.wallet.getAddress();
7601
- const outputAddress = chunkCJN4CUEU_cjs.ArkAddress.decode(address);
7661
+ const outputAddress = chunkDAYCCIRO_cjs.ArkAddress.decode(address);
7602
7662
  const outputs = [
7603
7663
  {
7604
7664
  script: outputAddress.pkScript,
7605
7665
  amount: BigInt(totalBtcSelected)
7606
7666
  },
7607
- Extension.create([chunkH62OOAS4_cjs.Packet.create(groups)]).txOut()
7667
+ Extension.create([chunkSJPPBR2V_cjs.Packet.create(groups)]).txOut()
7608
7668
  ];
7609
7669
  const { arkTxid } = await this.wallet.buildAndSubmitOffchainTx(selectedCoins, outputs);
7610
7670
  return arkTxid;
@@ -7629,7 +7689,7 @@ function castMetadata(metadata) {
7629
7689
  } else {
7630
7690
  throw new Error("Invalid metadata value type");
7631
7691
  }
7632
- md.push(chunkH62OOAS4_cjs.Metadata.create(textEncoder.encode(key), valueBytes));
7692
+ md.push(chunkSJPPBR2V_cjs.Metadata.create(textEncoder.encode(key), valueBytes));
7633
7693
  }
7634
7694
  return md;
7635
7695
  }
@@ -7650,10 +7710,10 @@ var DelegateManagerImpl = class {
7650
7710
  if (vtxos.length === 0) {
7651
7711
  return { delegated: [], failed: [] };
7652
7712
  }
7653
- const destinationScript = chunkCJN4CUEU_cjs.ArkAddress.decode(destination).pkScript;
7713
+ const destinationScript = chunkDAYCCIRO_cjs.ArkAddress.decode(destination).pkScript;
7654
7714
  const arkInfo = await this.arkInfoProvider.getInfo();
7655
7715
  const delegateInfo = await this.delegateProvider.getDelegateInfo();
7656
- const eligible = vtxos.map(chunkCJN4CUEU_cjs.normalizeVtxo).filter(
7716
+ const eligible = vtxos.map(chunkDAYCCIRO_cjs.normalizeVtxo).filter(
7657
7717
  (v) => isAnnotated(v) && findDelegateTapLeaf(v, delegateInfo.pubkey) !== void 0
7658
7718
  );
7659
7719
  if (eligible.length === 0) {
@@ -7682,11 +7742,11 @@ var DelegateManagerImpl = class {
7682
7742
  const groupByExpiry = /* @__PURE__ */ new Map();
7683
7743
  let recoverableVtxos = [];
7684
7744
  for (const vtxo of eligible) {
7685
- if (chunkCJN4CUEU_cjs.canRecoverOnchain(vtxo, now)) {
7745
+ if (chunkDAYCCIRO_cjs.canRecoverOnchain(vtxo, now)) {
7686
7746
  recoverableVtxos.push(vtxo);
7687
7747
  continue;
7688
7748
  }
7689
- const expiry = chunkCJN4CUEU_cjs.toBatchExpiry(vtxo);
7749
+ const expiry = chunkDAYCCIRO_cjs.toBatchExpiry(vtxo);
7690
7750
  if (!expiry) continue;
7691
7751
  const dayKey = getDayTimestamp(expiry);
7692
7752
  groupByExpiry.set(dayKey, [...groupByExpiry.get(dayKey) ?? [], vtxo]);
@@ -7751,7 +7811,7 @@ async function delegate(identity, delegateProvider, arkInfo, delegateInfo, vtxos
7751
7811
  }
7752
7812
  if (!delegateAt) {
7753
7813
  const now = { timestamp: /* @__PURE__ */ new Date() };
7754
- const expiryTimestamp = vtxos.filter((coin) => !chunkCJN4CUEU_cjs.canRecoverOnchain(coin, now) && chunkCJN4CUEU_cjs.toBatchExpiry(coin)).reduce((min, coin) => Math.min(min, chunkCJN4CUEU_cjs.toBatchExpiry(coin)), Number.MAX_SAFE_INTEGER);
7814
+ const expiryTimestamp = vtxos.filter((coin) => !chunkDAYCCIRO_cjs.canRecoverOnchain(coin, now) && chunkDAYCCIRO_cjs.toBatchExpiry(coin)).reduce((min, coin) => Math.min(min, chunkDAYCCIRO_cjs.toBatchExpiry(coin)), Number.MAX_SAFE_INTEGER);
7755
7815
  if (!expiryTimestamp || expiryTimestamp === Number.MAX_SAFE_INTEGER) {
7756
7816
  delegateAt = new Date(Date.now() + 1 * 60 * 1e3);
7757
7817
  } else {
@@ -7775,7 +7835,7 @@ async function delegate(identity, delegateProvider, arkInfo, delegateInfo, vtxos
7775
7835
  let amount = 0n;
7776
7836
  for (const coin of vtxos) {
7777
7837
  const inputFee = estimator.evalOffchainInput({
7778
- ...chunkCJN4CUEU_cjs.toOffchainInputFeeParams(coin),
7838
+ ...chunkDAYCCIRO_cjs.toOffchainInputFeeParams(coin),
7779
7839
  type: "vtxo"
7780
7840
  });
7781
7841
  if (inputFee.value >= coin.value) {
@@ -7789,7 +7849,7 @@ async function delegate(identity, delegateProvider, arkInfo, delegateInfo, vtxos
7789
7849
  const delegateFee = BigInt(Number(fee));
7790
7850
  if (delegateFee > 0n) {
7791
7851
  outputs.push({
7792
- script: chunkCJN4CUEU_cjs.ArkAddress.decode(delegateAddress).pkScript,
7852
+ script: chunkDAYCCIRO_cjs.ArkAddress.decode(delegateAddress).pkScript,
7793
7853
  amount: delegateFee
7794
7854
  });
7795
7855
  }
@@ -7822,10 +7882,10 @@ async function delegate(identity, delegateProvider, arkInfo, delegateInfo, vtxos
7822
7882
  destinationScript
7823
7883
  );
7824
7884
  const forfeitOutputScript = btcSigner.OutScript.encode(
7825
- btcSigner.Address(chunkCJN4CUEU_cjs.getNetwork(network)).decode(forfeitAddress)
7885
+ btcSigner.Address(chunkDAYCCIRO_cjs.getNetwork(network)).decode(forfeitAddress)
7826
7886
  );
7827
7887
  const forfeits = await Promise.all(
7828
- vtxos.filter((v) => !chunkCJN4CUEU_cjs.canRecoverOnchain(v, { timestamp: /* @__PURE__ */ new Date() })).map(async (coin) => {
7888
+ vtxos.filter((v) => chunkDAYCCIRO_cjs.requiresForfeit(v)).map(async (coin) => {
7829
7889
  const forfeit = await makeDelegateForfeitTx(
7830
7890
  coin,
7831
7891
  dust,
@@ -7850,7 +7910,7 @@ async function makeDelegateForfeitTx(input, connectorAmount, delegatePubkey, for
7850
7910
  index: input.vout,
7851
7911
  witnessUtxo: {
7852
7912
  amount: BigInt(input.value),
7853
- script: chunkCJN4CUEU_cjs.VtxoScript.decode(input.tapTree).pkScript
7913
+ script: chunkDAYCCIRO_cjs.VtxoScript.decode(input.tapTree).pkScript
7854
7914
  },
7855
7915
  sighashType: btcSigner.SigHash.ALL_ANYONECANPAY,
7856
7916
  tapLeafScript: [delegateTapLeaf]
@@ -7908,7 +7968,7 @@ async function makeSignedDelegateIntent(identity, coins, outputs, onchainOutputs
7908
7968
  expire_at: 0,
7909
7969
  cosigners_public_keys: cosignerPubKeys
7910
7970
  };
7911
- const proof = chunkCJN4CUEU_cjs.Intent.create(message, coins, outputs);
7971
+ const proof = chunkDAYCCIRO_cjs.Intent.create(message, coins, outputs);
7912
7972
  const signedProof = await identity.sign(proof);
7913
7973
  return {
7914
7974
  proof: base.base64.encode(signedProof.toPSBT()),
@@ -7934,10 +7994,10 @@ function getDayTimestamp(timestamp) {
7934
7994
  function findDelegateTapLeaf(vtxo, delegatePubkey) {
7935
7995
  if (!vtxo.tapTree) return void 0;
7936
7996
  const pk = delegatePubkey.length === 66 ? delegatePubkey.slice(2) : delegatePubkey;
7937
- const vtxoScript = chunkCJN4CUEU_cjs.VtxoScript.decode(vtxo.tapTree);
7997
+ const vtxoScript = chunkDAYCCIRO_cjs.VtxoScript.decode(vtxo.tapTree);
7938
7998
  return vtxoScript.leaves.find((tapLeaf) => {
7939
- const arkTapscript = chunkCJN4CUEU_cjs.decodeTapscript(chunkCJN4CUEU_cjs.scriptFromTapLeafScript(tapLeaf));
7940
- if (!chunkCJN4CUEU_cjs.MultisigTapscript.is(arkTapscript)) return false;
7999
+ const arkTapscript = chunkDAYCCIRO_cjs.decodeTapscript(chunkDAYCCIRO_cjs.scriptFromTapLeafScript(tapLeaf));
8000
+ if (!chunkDAYCCIRO_cjs.MultisigTapscript.is(arkTapscript)) return false;
7941
8001
  return arkTapscript.params.pubkeys.map(base.hex.encode).includes(pk);
7942
8002
  });
7943
8003
  }
@@ -8218,7 +8278,7 @@ function createManagedConnection(dbName, version, initDatabase2) {
8218
8278
  };
8219
8279
  }
8220
8280
  function scriptFromArkAddress(address) {
8221
- return base.hex.encode(chunkCJN4CUEU_cjs.ArkAddress.decode(address).pkScript);
8281
+ return base.hex.encode(chunkDAYCCIRO_cjs.ArkAddress.decode(address).pkScript);
8222
8282
  }
8223
8283
 
8224
8284
  // src/repositories/indexedDB/schema.ts
@@ -8388,7 +8448,7 @@ function initDatabase(db, oldVersion, transaction) {
8388
8448
  backfillVtxoIndexFields(transaction);
8389
8449
  }
8390
8450
  }
8391
- var unspentFlag = (vtxo) => chunkCJN4CUEU_cjs.isVtxoSpent(vtxo) ? {} : { unspent: 1 };
8451
+ var unspentFlag = (vtxo) => chunkDAYCCIRO_cjs.isVtxoSpent(vtxo) ? {} : { unspent: 1 };
8392
8452
  function initDatabaseWithIntents(db, oldVersion, transaction) {
8393
8453
  initDatabase(db, oldVersion, transaction);
8394
8454
  if (!db.objectStoreNames.contains(STORE_INTENTS)) {
@@ -8725,9 +8785,10 @@ function validateVtxosForScript(vtxos, script, context) {
8725
8785
  `${context}: refusing to persist ${mismatches.length} VTXO(s) whose script does not match ${script}: ${detail}`
8726
8786
  );
8727
8787
  }
8728
- async function getVtxosForContract(repo, contract) {
8729
- const vtxos = repo.getVtxosForScript ? await repo.getVtxosForScript(contract.script) : filterVtxosForScript(await repo.getVtxos(contract.address), contract.script);
8730
- return vtxos.map(chunkCJN4CUEU_cjs.normalizeVtxo);
8788
+ async function getVtxosForContract(repo, contract, options) {
8789
+ const vtxos = options?.unspentOnly && repo.getVtxosForScripts ? await repo.getVtxosForScripts([contract.script], options) : repo.getVtxosForScript ? await repo.getVtxosForScript(contract.script) : filterVtxosForScript(await repo.getVtxos(contract.address), contract.script);
8790
+ const normalized = vtxos.map(chunkDAYCCIRO_cjs.normalizeVtxo);
8791
+ return options?.unspentOnly ? normalized.filter((vtxo) => !chunkDAYCCIRO_cjs.isVtxoSpent(vtxo)) : normalized;
8731
8792
  }
8732
8793
  function hasRecordedSpend(vtxo) {
8733
8794
  return vtxo.isSpent === true && (!!vtxo.spentBy || !!vtxo.arkTxId || !!vtxo.settledBy);
@@ -8832,7 +8893,7 @@ var InMemoryWalletRepository = class {
8832
8893
  }
8833
8894
  }
8834
8895
  const rows = [...byOutpoint.values()];
8835
- return options?.unspentOnly ? rows.filter((vtxo) => !chunkCJN4CUEU_cjs.isVtxoSpent(vtxo)) : rows;
8896
+ return options?.unspentOnly ? rows.filter((vtxo) => !chunkDAYCCIRO_cjs.isVtxoSpent(vtxo)) : rows;
8836
8897
  }
8837
8898
  async saveVtxosForScript(key, vtxos) {
8838
8899
  if (!key.address) {
@@ -8934,7 +8995,7 @@ function decodeArkContract(encoded) {
8934
8995
  }
8935
8996
  function contractFromArkContract(encoded, options = {}) {
8936
8997
  const parsed = decodeArkContract(encoded);
8937
- const handler = chunkLUWSY2QO_cjs.contractHandlers.get(parsed.type);
8998
+ const handler = chunkFUW3OM5X_cjs.contractHandlers.get(parsed.type);
8938
8999
  if (!handler) {
8939
9000
  throw new Error(`No handler registered for contract type '${parsed.type}'`);
8940
9001
  }
@@ -8948,9 +9009,9 @@ function contractFromArkContract(encoded, options = {}) {
8948
9009
  metadata: options.metadata
8949
9010
  };
8950
9011
  }
8951
- function contractFromArkContractWithAddress(encoded, serverPubKey, addressPrefix = chunkCJN4CUEU_cjs.DEFAULT_NETWORK.hrp, options = {}) {
9012
+ function contractFromArkContractWithAddress(encoded, serverPubKey, addressPrefix = chunkDAYCCIRO_cjs.DEFAULT_NETWORK.hrp, options = {}) {
8952
9013
  const parsed = decodeArkContract(encoded);
8953
- const handler = chunkLUWSY2QO_cjs.contractHandlers.getOrThrow(parsed.type);
9014
+ const handler = chunkFUW3OM5X_cjs.contractHandlers.getOrThrow(parsed.type);
8954
9015
  const params = parsed.data;
8955
9016
  const vtxoScript = handler.createScript(params);
8956
9017
  return {
@@ -9256,9 +9317,9 @@ var ContractWatcher = class {
9256
9317
  this.connectionState = "connected";
9257
9318
  this.reconnectAttempts = 0;
9258
9319
  this.listenLoop().catch((e) => {
9259
- if (chunkCJN4CUEU_cjs.isEventSourceError(e)) {
9320
+ if (chunkDAYCCIRO_cjs.isEventSourceError(e)) {
9260
9321
  console.debug("ContractWatcher subscription disconnected; reconnecting");
9261
- } else if (!chunkCJN4CUEU_cjs.isEventSourceUnavailableError(e)) {
9322
+ } else if (!chunkDAYCCIRO_cjs.isEventSourceUnavailableError(e)) {
9262
9323
  console.error(e);
9263
9324
  }
9264
9325
  this.connectionState = "disconnected";
@@ -9270,7 +9331,7 @@ var ContractWatcher = class {
9270
9331
  this.scheduleReconnect();
9271
9332
  });
9272
9333
  } catch (error) {
9273
- if (!chunkCJN4CUEU_cjs.isEventSourceUnavailableError(error)) {
9334
+ if (!chunkDAYCCIRO_cjs.isEventSourceUnavailableError(error)) {
9274
9335
  console.error("ContractWatcher connection failed:", error);
9275
9336
  }
9276
9337
  this.connectionState = "disconnected";
@@ -9296,7 +9357,7 @@ var ContractWatcher = class {
9296
9357
  * slower; what it loses is push latency.
9297
9358
  */
9298
9359
  reportEventSourceUnavailable(error) {
9299
- if (!chunkCJN4CUEU_cjs.isEventSourceUnavailableError(error)) return false;
9360
+ if (!chunkDAYCCIRO_cjs.isEventSourceUnavailableError(error)) return false;
9300
9361
  if (!this.eventSourceReported) {
9301
9362
  this.eventSourceReported = true;
9302
9363
  console.warn(
@@ -9368,7 +9429,7 @@ var ContractWatcher = class {
9368
9429
  const now = Date.now();
9369
9430
  let current;
9370
9431
  try {
9371
- current = await chunkCJN4CUEU_cjs.getAllNormalizedVtxos(this.config.indexerProvider, scripts, {
9432
+ current = await chunkDAYCCIRO_cjs.getAllNormalizedVtxos(this.config.indexerProvider, scripts, {
9372
9433
  spendableOnly: true
9373
9434
  });
9374
9435
  } catch (error) {
@@ -9577,14 +9638,14 @@ var ContractWatcher = class {
9577
9638
  const timestamp = Date.now();
9578
9639
  if (update.newVtxos?.length) {
9579
9640
  this.processSubscriptionVtxos(
9580
- update.newVtxos.map(chunkCJN4CUEU_cjs.normalizeVtxo),
9641
+ update.newVtxos.map(chunkDAYCCIRO_cjs.normalizeVtxo),
9581
9642
  "vtxo_received",
9582
9643
  timestamp
9583
9644
  );
9584
9645
  }
9585
9646
  if (update.spentVtxos?.length) {
9586
9647
  this.processSubscriptionVtxos(
9587
- update.spentVtxos.map(chunkCJN4CUEU_cjs.normalizeVtxo),
9648
+ update.spentVtxos.map(chunkDAYCCIRO_cjs.normalizeVtxo),
9588
9649
  "vtxo_spent",
9589
9650
  timestamp
9590
9651
  );
@@ -9612,8 +9673,8 @@ var ContractWatcher = class {
9612
9673
  continue;
9613
9674
  }
9614
9675
  if (target === byWatchedScript && eventType === "vtxo_received") {
9615
- const n = chunkCJN4CUEU_cjs.normalizeVtxo(vtxo);
9616
- if (chunkCJN4CUEU_cjs.isVtxoSpent(n) || n.isSwept || chunkCJN4CUEU_cjs.isPastExpiry(n, now)) continue;
9676
+ const n = chunkDAYCCIRO_cjs.normalizeVtxo(vtxo);
9677
+ if (chunkDAYCCIRO_cjs.isVtxoSpent(n) || n.isSwept || chunkDAYCCIRO_cjs.isPastExpiry(n, now)) continue;
9617
9678
  }
9618
9679
  let bucket = target.get(vtxo.script);
9619
9680
  if (!bucket) {
@@ -9712,7 +9773,7 @@ var NON_TERMINAL_INTENT_STATES = ALL_INTENT_STATES.filter(
9712
9773
  (s) => !isTerminalIntentState(s)
9713
9774
  );
9714
9775
  function isConsumed(vtxo) {
9715
- return vtxo !== void 0 && chunkCJN4CUEU_cjs.isVtxoSpent(vtxo);
9776
+ return vtxo !== void 0 && chunkDAYCCIRO_cjs.isVtxoSpent(vtxo);
9716
9777
  }
9717
9778
  async function classifyIntent(intent, vtxosByOutpoint, now) {
9718
9779
  if (isTerminalIntentState(intent.state)) return void 0;
@@ -9755,7 +9816,7 @@ async function reconcileIntents(deps) {
9755
9816
  let vtxosByOutpoint = /* @__PURE__ */ new Map();
9756
9817
  if (outpoints.length > 0) {
9757
9818
  try {
9758
- const { vtxos } = await chunkCJN4CUEU_cjs.getNormalizedVtxos(deps.indexerProvider, { outpoints });
9819
+ const { vtxos } = await chunkDAYCCIRO_cjs.getNormalizedVtxos(deps.indexerProvider, { outpoints });
9759
9820
  vtxosByOutpoint = new Map(vtxos.map((v) => [outpointKey(v), v]));
9760
9821
  } catch (e) {
9761
9822
  console.error("reconcileIntents: failed to fetch input VTXO state", e);
@@ -9812,7 +9873,7 @@ function annotatableIn(scriptToContract, vtxos, memo) {
9812
9873
  if (!contract) continue;
9813
9874
  try {
9814
9875
  const key = `${contract.type}\0${script}\0${JSON.stringify(contract.params)}`;
9815
- const handler = chunkLUWSY2QO_cjs.contractHandlers.get(contract.type);
9876
+ const handler = chunkFUW3OM5X_cjs.contractHandlers.get(contract.type);
9816
9877
  const hit = memo?.get(script);
9817
9878
  let tapscripts;
9818
9879
  if (hit && hit.key === key && hit.handler === handler) {
@@ -9967,7 +10028,7 @@ var ContractManager = class _ContractManager {
9967
10028
  try {
9968
10029
  await this.scheduleLookAheadDrain();
9969
10030
  } catch (err) {
9970
- if (!chunkCJN4CUEU_cjs.isRetryableProviderError(err)) throw err;
10031
+ if (!chunkDAYCCIRO_cjs.isRetryableProviderError(err)) throw err;
9971
10032
  this.lookAheadRefillOwed = true;
9972
10033
  this.markSyncDegraded(err);
9973
10034
  }
@@ -9975,7 +10036,7 @@ var ContractManager = class _ContractManager {
9975
10036
  await this.reconcileWatched();
9976
10037
  this.markSyncOnline();
9977
10038
  } catch (err) {
9978
- if (!chunkCJN4CUEU_cjs.isRetryableProviderError(err)) throw err;
10039
+ if (!chunkDAYCCIRO_cjs.isRetryableProviderError(err)) throw err;
9979
10040
  this.markSyncDegraded(err);
9980
10041
  }
9981
10042
  this.initialized = true;
@@ -10107,7 +10168,7 @@ var ContractManager = class _ContractManager {
10107
10168
  const from = Math.max(0, watermark - lookAhead.size);
10108
10169
  const to = watermark + lookAhead.size;
10109
10170
  const deps = lookAhead.candidateDeps();
10110
- const handlers = chunkLUWSY2QO_cjs.contractHandlers.getRegisteredTypes().map((t) => chunkLUWSY2QO_cjs.contractHandlers.get(t)).filter(hasCandidates);
10171
+ const handlers = chunkFUW3OM5X_cjs.contractHandlers.getRegisteredTypes().map((t) => chunkFUW3OM5X_cjs.contractHandlers.get(t)).filter(hasCandidates);
10111
10172
  const band = /* @__PURE__ */ new Map();
10112
10173
  for (let index = from; index <= to; index++) {
10113
10174
  const descriptor = lookAhead.materialize(index);
@@ -10118,7 +10179,7 @@ var ContractManager = class _ContractManager {
10118
10179
  index,
10119
10180
  params: {
10120
10181
  ...candidate,
10121
- ...chunkLUWSY2QO_cjs.speculativeReceiveMetadata(descriptor)
10182
+ ...chunkFUW3OM5X_cjs.speculativeReceiveMetadata(descriptor)
10122
10183
  }
10123
10184
  });
10124
10185
  }
@@ -10180,7 +10241,7 @@ var ContractManager = class _ContractManager {
10180
10241
  });
10181
10242
  for (const entry of pending) entry.catchUpPending = false;
10182
10243
  } catch (err) {
10183
- if (!chunkCJN4CUEU_cjs.isRetryableProviderError(err)) throw err;
10244
+ if (!chunkDAYCCIRO_cjs.isRetryableProviderError(err)) throw err;
10184
10245
  this.markSyncDegraded(err);
10185
10246
  }
10186
10247
  }
@@ -10230,7 +10291,7 @@ var ContractManager = class _ContractManager {
10230
10291
  await this.fetchContractVxosFromIndexer([contract]);
10231
10292
  this.markSyncOnline();
10232
10293
  } catch (err) {
10233
- if (!chunkCJN4CUEU_cjs.isRetryableProviderError(err)) throw err;
10294
+ if (!chunkDAYCCIRO_cjs.isRetryableProviderError(err)) throw err;
10234
10295
  this.markSyncDegraded(err);
10235
10296
  }
10236
10297
  await this.watcher.addContract(contract);
@@ -10264,7 +10325,7 @@ var ContractManager = class _ContractManager {
10264
10325
  await this.fetchContractVxosFromIndexer(fresh);
10265
10326
  this.markSyncOnline();
10266
10327
  } catch (err) {
10267
- if (!chunkCJN4CUEU_cjs.isRetryableProviderError(err)) throw err;
10328
+ if (!chunkDAYCCIRO_cjs.isRetryableProviderError(err)) throw err;
10268
10329
  this.markSyncDegraded(err);
10269
10330
  }
10270
10331
  for (const contract of fresh) await this.watcher.addContract(contract);
@@ -10302,7 +10363,7 @@ var ContractManager = class _ContractManager {
10302
10363
  return result;
10303
10364
  }
10304
10365
  async upsertContractRow(params) {
10305
- const handler = chunkLUWSY2QO_cjs.contractHandlers.get(params.type);
10366
+ const handler = chunkFUW3OM5X_cjs.contractHandlers.get(params.type);
10306
10367
  if (!handler) {
10307
10368
  throw new Error(`No handler registered for contract type '${params.type}'`);
10308
10369
  }
@@ -10402,7 +10463,7 @@ var ContractManager = class _ContractManager {
10402
10463
  `scanContracts: batchSize must be a positive integer (got ${String(opts.batchSize)})`
10403
10464
  );
10404
10465
  }
10405
- const registered = chunkLUWSY2QO_cjs.contractHandlers.getRegisteredTypes().map((t) => chunkLUWSY2QO_cjs.contractHandlers.get(t)).filter(isDiscoverable);
10466
+ const registered = chunkFUW3OM5X_cjs.contractHandlers.getRegisteredTypes().map((t) => chunkFUW3OM5X_cjs.contractHandlers.get(t)).filter(isDiscoverable);
10406
10467
  const discoverables = [
10407
10468
  ...registered.filter((h) => h.type === "boarding"),
10408
10469
  ...registered.filter((h) => h.type !== "boarding")
@@ -10546,7 +10607,7 @@ var ContractManager = class _ContractManager {
10546
10607
  await this.syncContracts({ contracts, pageSize });
10547
10608
  this.markSyncOnline();
10548
10609
  } catch (err) {
10549
- if (!chunkCJN4CUEU_cjs.isRetryableProviderError(err)) throw err;
10610
+ if (!chunkDAYCCIRO_cjs.isRetryableProviderError(err)) throw err;
10550
10611
  this.markSyncDegraded(err);
10551
10612
  if (options?.requireSynced) {
10552
10613
  throw new Error("Spendable VTXO read requires an online contract sync", {
@@ -10579,7 +10640,7 @@ var ContractManager = class _ContractManager {
10579
10640
  }
10580
10641
  const tapscriptCache = tapscripts ?? /* @__PURE__ */ new Map();
10581
10642
  return vtxos.map(
10582
- (vtxo) => extendVirtualCoinForContract(chunkCJN4CUEU_cjs.normalizeVtxo(vtxo), byScript, tapscriptCache)
10643
+ (vtxo) => extendVirtualCoinForContract(chunkDAYCCIRO_cjs.normalizeVtxo(vtxo), byScript, tapscriptCache)
10583
10644
  );
10584
10645
  }
10585
10646
  /** @inheritdoc */
@@ -10624,14 +10685,14 @@ var ContractManager = class _ContractManager {
10624
10685
  const byScript = new Map(contracts.map((contract) => [contract.script, contract]));
10625
10686
  const asking = vtxos.filter((vtxo) => {
10626
10687
  const contract = byScript.get(vtxo.script);
10627
- return contract !== void 0 && chunkLUWSY2QO_cjs.contractHandlers.get(contract.type)?.assertSpendableNow !== void 0;
10688
+ return contract !== void 0 && chunkFUW3OM5X_cjs.contractHandlers.get(contract.type)?.assertSpendableNow !== void 0;
10628
10689
  });
10629
10690
  if (asking.length === 0) return refused;
10630
10691
  const tip = await this.currentChainTip();
10631
10692
  const walletKey = await walletPubKey?.();
10632
10693
  for (const vtxo of asking) {
10633
10694
  const contract = byScript.get(vtxo.script);
10634
- const handler = chunkLUWSY2QO_cjs.contractHandlers.get(contract.type);
10695
+ const handler = chunkFUW3OM5X_cjs.contractHandlers.get(contract.type);
10635
10696
  if (!handler?.assertSpendableNow) continue;
10636
10697
  const context = {
10637
10698
  collaborative: true,
@@ -10646,7 +10707,7 @@ var ContractManager = class _ContractManager {
10646
10707
  // the next handler to answer a CSV question would meet a
10647
10708
  // TypeError instead of a `false`. Carry the coin only when it
10648
10709
  // really is one.
10649
- vtxo: chunkCJN4CUEU_cjs.isVirtualCoin(vtxo) && "status" in vtxo ? vtxo : void 0
10710
+ vtxo: chunkDAYCCIRO_cjs.isVirtualCoin(vtxo) && "status" in vtxo ? vtxo : void 0
10650
10711
  };
10651
10712
  try {
10652
10713
  await handler.assertSpendableNow(
@@ -10803,7 +10864,7 @@ var ContractManager = class _ContractManager {
10803
10864
  const { contractScript, collaborative = true, walletPubKey, vtxo } = options;
10804
10865
  const [contract] = await this.getContracts({ script: contractScript });
10805
10866
  if (!contract) return [];
10806
- const handler = chunkLUWSY2QO_cjs.contractHandlers.get(contract.type);
10867
+ const handler = chunkFUW3OM5X_cjs.contractHandlers.get(contract.type);
10807
10868
  if (!handler) return [];
10808
10869
  const script = handler.createScript(contract.params);
10809
10870
  const tip = await this.currentChainTip();
@@ -10831,7 +10892,7 @@ var ContractManager = class _ContractManager {
10831
10892
  const { contractScript, collaborative = true, walletPubKey } = options;
10832
10893
  const [contract] = await this.getContracts({ script: contractScript });
10833
10894
  if (!contract) return [];
10834
- const handler = chunkLUWSY2QO_cjs.contractHandlers.get(contract.type);
10895
+ const handler = chunkFUW3OM5X_cjs.contractHandlers.get(contract.type);
10835
10896
  if (!handler) return [];
10836
10897
  const script = handler.createScript(contract.params);
10837
10898
  const context = {
@@ -10887,7 +10948,7 @@ var ContractManager = class _ContractManager {
10887
10948
  }
10888
10949
  async refreshOutpoints(outpoints) {
10889
10950
  if (outpoints.length === 0) return;
10890
- const { vtxos } = await chunkCJN4CUEU_cjs.getNormalizedVtxos(this.config.indexerProvider, {
10951
+ const { vtxos } = await chunkDAYCCIRO_cjs.getNormalizedVtxos(this.config.indexerProvider, {
10891
10952
  outpoints
10892
10953
  });
10893
10954
  if (vtxos.length === 0) return;
@@ -10989,7 +11050,7 @@ var ContractManager = class _ContractManager {
10989
11050
  break;
10990
11051
  }
10991
11052
  } catch (err) {
10992
- if (!chunkCJN4CUEU_cjs.isRetryableProviderError(err)) throw err;
11053
+ if (!chunkDAYCCIRO_cjs.isRetryableProviderError(err)) throw err;
10993
11054
  this.markSyncDegraded(err);
10994
11055
  }
10995
11056
  this.emitEvent(event);
@@ -10999,7 +11060,7 @@ var ContractManager = class _ContractManager {
10999
11060
  let rows;
11000
11061
  if (this.config.walletRepository.getVtxosForScripts) {
11001
11062
  const byScript = new Set(contracts.map((contract) => contract.script));
11002
- rows = (await this.config.walletRepository.getVtxosForScripts([...byScript], options)).filter((vtxo) => vtxo.script !== void 0 && byScript.has(vtxo.script)).map((vtxo) => ({ ...chunkCJN4CUEU_cjs.normalizeVtxo(vtxo), contractScript: vtxo.script }));
11063
+ rows = (await this.config.walletRepository.getVtxosForScripts([...byScript], options)).filter((vtxo) => vtxo.script !== void 0 && byScript.has(vtxo.script)).map((vtxo) => ({ ...chunkDAYCCIRO_cjs.normalizeVtxo(vtxo), contractScript: vtxo.script }));
11003
11064
  } else {
11004
11065
  const res = await Promise.all(
11005
11066
  contracts.map(
@@ -11015,7 +11076,7 @@ var ContractManager = class _ContractManager {
11015
11076
  );
11016
11077
  rows = res.flat();
11017
11078
  }
11018
- return options?.unspentOnly ? rows.filter((vtxo) => !chunkCJN4CUEU_cjs.isVtxoSpent(vtxo)) : rows;
11079
+ return options?.unspentOnly ? rows.filter((vtxo) => !chunkDAYCCIRO_cjs.isVtxoSpent(vtxo)) : rows;
11019
11080
  }
11020
11081
  /**
11021
11082
  * Sync virtual outputs for the given contracts against the indexer.
@@ -11088,7 +11149,7 @@ var ContractManager = class _ContractManager {
11088
11149
  */
11089
11150
  async reconcilePendingFrontier(contracts) {
11090
11151
  const scriptToContract = new Map(contracts.map((c) => [c.script, c]));
11091
- const vtxos = await chunkCJN4CUEU_cjs.getAllNormalizedVtxos(
11152
+ const vtxos = await chunkDAYCCIRO_cjs.getAllNormalizedVtxos(
11092
11153
  this.config.indexerProvider,
11093
11154
  contracts.map((c) => c.script),
11094
11155
  { pendingOnly: true }
@@ -11175,7 +11236,7 @@ var ContractManager = class _ContractManager {
11175
11236
  }
11176
11237
  return result;
11177
11238
  }
11178
- async fetchContractVtxosBulk(contracts, pageSize = chunkCJN4CUEU_cjs.DEFAULT_PAGE_SIZE, syncWindow) {
11239
+ async fetchContractVtxosBulk(contracts, pageSize = chunkDAYCCIRO_cjs.DEFAULT_PAGE_SIZE, syncWindow) {
11179
11240
  if (contracts.length === 0) {
11180
11241
  return { vtxosByScript: /* @__PURE__ */ new Map(), promoted: /* @__PURE__ */ new Map() };
11181
11242
  }
@@ -11191,7 +11252,7 @@ var ContractManager = class _ContractManager {
11191
11252
  before: syncWindow.before
11192
11253
  }
11193
11254
  } : {};
11194
- const vtxos = await chunkCJN4CUEU_cjs.getAllNormalizedVtxos(
11255
+ const vtxos = await chunkDAYCCIRO_cjs.getAllNormalizedVtxos(
11195
11256
  this.config.indexerProvider,
11196
11257
  contracts.map((c) => c.script),
11197
11258
  { ...windowOpts, pageSize }
@@ -11340,7 +11401,7 @@ var deserializeTapLeaf = (t) => {
11340
11401
  const s = base.hex.decode(t.s);
11341
11402
  return [cb, s];
11342
11403
  };
11343
- var deserializeVtxo = (o) => chunkCJN4CUEU_cjs.normalizeVtxo({
11404
+ var deserializeVtxo = (o) => chunkDAYCCIRO_cjs.normalizeVtxo({
11344
11405
  ...o,
11345
11406
  createdAt: new Date(o.createdAt),
11346
11407
  tapTree: base.hex.decode(o.tapTree),
@@ -11571,7 +11632,7 @@ var IndexedDBWalletRepository = class {
11571
11632
  continue;
11572
11633
  }
11573
11634
  const vtxo = deserializeVtxoWithBackfill(row);
11574
- if (!options?.unspentOnly || !chunkCJN4CUEU_cjs.isVtxoSpent(vtxo)) result.push(vtxo);
11635
+ if (!options?.unspentOnly || !chunkDAYCCIRO_cjs.isVtxoSpent(vtxo)) result.push(vtxo);
11575
11636
  }
11576
11637
  return result;
11577
11638
  } catch (error) {
@@ -12184,7 +12245,7 @@ var HDDescriptorProvider = class _HDDescriptorProvider {
12184
12245
  */
12185
12246
  materializeDescriptorAt(index) {
12186
12247
  const descriptor = this.identity.descriptor;
12187
- const network = chunkLUWSY2QO_cjs.isMainnetDescriptor(descriptor) ? descriptorsScure.networks.bitcoin : descriptorsScure.networks.testnet;
12248
+ const network = chunkFUW3OM5X_cjs.isMainnetDescriptor(descriptor) ? descriptorsScure.networks.bitcoin : descriptorsScure.networks.testnet;
12188
12249
  const expansion = descriptorsScure.expand({ descriptor, network, index });
12189
12250
  const keyInfo = expansion.expansionMap?.["@0"];
12190
12251
  if (!keyInfo?.keyExpression) {
@@ -12332,7 +12393,7 @@ var WalletReceiveRotator = class _WalletReceiveRotator {
12332
12393
  const provider = await resolveDescriptorProvider(config, setup.walletRepository);
12333
12394
  if (!provider) return void 0;
12334
12395
  const allowSilentFallback = (config.walletMode ?? "auto") === "auto";
12335
- const expectedContractType = setup.offchainTapscript instanceof chunkLUWSY2QO_cjs.DelegateVtxo.Script ? "delegate" : "default";
12396
+ const expectedContractType = setup.offchainTapscript instanceof chunkFUW3OM5X_cjs.DelegateVtxo.Script ? "delegate" : "default";
12336
12397
  const factoryOpts = {
12337
12398
  walletRepository: setup.walletRepository,
12338
12399
  contractRepository: setup.contractRepository,
@@ -12533,7 +12594,7 @@ var WalletReceiveRotator = class _WalletReceiveRotator {
12533
12594
  };
12534
12595
  function deriveLeafPubkey(descriptor) {
12535
12596
  try {
12536
- return chunkLUWSY2QO_cjs.deriveDescriptorLeafPubKey(descriptor);
12597
+ return chunkFUW3OM5X_cjs.deriveDescriptorLeafPubKey(descriptor);
12537
12598
  } catch (e) {
12538
12599
  throw new NonRangeableDescriptorError(
12539
12600
  "Cannot derive leaf pubkey: descriptor is not a materialized, parsable tr(...) shape.",
@@ -12545,7 +12606,7 @@ function buildReceiveContract(current, descriptor, hrp, tagSource) {
12545
12606
  const pubKey = deriveLeafPubkey(descriptor);
12546
12607
  const tapscript = rebuildTapscript(current, pubKey);
12547
12608
  const serverPubKey = tapscript.options.serverPubKey;
12548
- const csvTimelock = chunkCJN4CUEU_cjs.timelockToSequence(tapscript.options.csvTimelock).toString();
12609
+ const csvTimelock2 = chunkDAYCCIRO_cjs.timelockToSequence(tapscript.options.csvTimelock).toString();
12549
12610
  const base$1 = {
12550
12611
  script: base.hex.encode(tapscript.pkScript),
12551
12612
  address: tapscript.address(hrp, serverPubKey).encode(),
@@ -12556,18 +12617,18 @@ function buildReceiveContract(current, descriptor, hrp, tagSource) {
12556
12617
  // index-0 key. Without it, spends produce unsigned PSBTs that the
12557
12618
  // server rejects with `INVALID_PSBT_INPUT (5): missing tapscript spend sig`.
12558
12619
  metadata: {
12559
- ...tagSource && { source: chunkLUWSY2QO_cjs.WALLET_RECEIVE_SOURCE },
12620
+ ...tagSource && { source: chunkFUW3OM5X_cjs.WALLET_RECEIVE_SOURCE },
12560
12621
  signingDescriptor: descriptor
12561
12622
  }
12562
12623
  };
12563
- const params = tapscript instanceof chunkLUWSY2QO_cjs.DelegateVtxo.Script ? {
12624
+ const params = tapscript instanceof chunkFUW3OM5X_cjs.DelegateVtxo.Script ? {
12564
12625
  ...base$1,
12565
12626
  type: "delegate",
12566
12627
  params: {
12567
12628
  pubKey: base.hex.encode(pubKey),
12568
12629
  serverPubKey: base.hex.encode(serverPubKey),
12569
12630
  delegatePubKey: base.hex.encode(tapscript.options.delegatePubKey),
12570
- csvTimelock
12631
+ csvTimelock: csvTimelock2
12571
12632
  }
12572
12633
  } : {
12573
12634
  ...base$1,
@@ -12575,16 +12636,16 @@ function buildReceiveContract(current, descriptor, hrp, tagSource) {
12575
12636
  params: {
12576
12637
  pubKey: base.hex.encode(pubKey),
12577
12638
  serverPubKey: base.hex.encode(serverPubKey),
12578
- csvTimelock
12639
+ csvTimelock: csvTimelock2
12579
12640
  }
12580
12641
  };
12581
12642
  return { tapscript, params };
12582
12643
  }
12583
12644
  function rebuildTapscript(current, pubKey) {
12584
- if (current instanceof chunkLUWSY2QO_cjs.DelegateVtxo.Script) {
12585
- return new chunkLUWSY2QO_cjs.DelegateVtxo.Script({ ...current.options, pubKey });
12645
+ if (current instanceof chunkFUW3OM5X_cjs.DelegateVtxo.Script) {
12646
+ return new chunkFUW3OM5X_cjs.DelegateVtxo.Script({ ...current.options, pubKey });
12586
12647
  }
12587
- return new chunkLUWSY2QO_cjs.DefaultVtxo.Script({ ...current.options, pubKey });
12648
+ return new chunkFUW3OM5X_cjs.DefaultVtxo.Script({ ...current.options, pubKey });
12588
12649
  }
12589
12650
  async function pickActiveReceive(contractRepository, serverPubKey, expectedType) {
12590
12651
  const candidates = await contractRepository.getContracts({
@@ -12593,7 +12654,7 @@ async function pickActiveReceive(contractRepository, serverPubKey, expectedType)
12593
12654
  });
12594
12655
  const serverPubKeyHex = base.hex.encode(serverPubKey);
12595
12656
  const matching = candidates.filter(
12596
- (c) => c.params.serverPubKey === serverPubKeyHex && c.metadata?.source === chunkLUWSY2QO_cjs.WALLET_RECEIVE_SOURCE
12657
+ (c) => c.params.serverPubKey === serverPubKeyHex && c.metadata?.source === chunkFUW3OM5X_cjs.WALLET_RECEIVE_SOURCE
12597
12658
  ).sort((a, b) => {
12598
12659
  if (b.createdAt !== a.createdAt) return b.createdAt - a.createdAt;
12599
12660
  return signingDescriptorIndex(b.metadata?.signingDescriptor) - signingDescriptorIndex(a.metadata?.signingDescriptor);
@@ -12649,7 +12710,7 @@ function computeOffchainBalance(vtxos, caps) {
12649
12710
  }
12650
12711
  };
12651
12712
  for (const vtxo of vtxos) {
12652
- if (chunkCJN4CUEU_cjs.isVtxoSpent(vtxo)) continue;
12713
+ if (chunkDAYCCIRO_cjs.isVtxoSpent(vtxo)) continue;
12653
12714
  addAssets(owned, vtxo);
12654
12715
  if (vtxo.isUnrolled) {
12655
12716
  unrolled += vtxo.value;
@@ -12659,11 +12720,11 @@ function computeOffchainBalance(vtxos, caps) {
12659
12720
  pendingRecovery += vtxo.value;
12660
12721
  continue;
12661
12722
  }
12662
- if (chunkCJN4CUEU_cjs.canRecoverOnchain(vtxo, now)) {
12723
+ if (chunkDAYCCIRO_cjs.canRecoverOnchain(vtxo, now)) {
12663
12724
  recoverable += vtxo.value;
12664
12725
  continue;
12665
12726
  }
12666
- if (!chunkCJN4CUEU_cjs.canSpendOffchain(vtxo, now)) continue;
12727
+ if (!chunkDAYCCIRO_cjs.canSpendOffchain(vtxo, now)) continue;
12667
12728
  if (vtxo.isPreconfirmed) {
12668
12729
  preconfirmed += vtxo.value;
12669
12730
  } else {
@@ -12840,12 +12901,12 @@ var InputSignerRouter = class {
12840
12901
  };
12841
12902
 
12842
12903
  // src/wallet/wallet.ts
12843
- var getArkadeServerUrl = ({ arkServerUrl }) => arkServerUrl || chunkCJN4CUEU_cjs.DEFAULT_ARKADE_SERVER_URL;
12904
+ var getArkadeServerUrl = ({ arkServerUrl }) => arkServerUrl || chunkDAYCCIRO_cjs.DEFAULT_ARKADE_SERVER_URL;
12844
12905
  function intentProofJobs(coins) {
12845
12906
  if (coins.length === 0) return [];
12846
12907
  const coinJobs = coins.map((coin, i) => ({
12847
12908
  index: i + 1,
12848
- lookupScript: chunkCJN4CUEU_cjs.VtxoScript.decode(coin.tapTree).pkScript
12909
+ lookupScript: chunkDAYCCIRO_cjs.VtxoScript.decode(coin.tapTree).pkScript
12849
12910
  }));
12850
12911
  return [{ index: 0, lookupScript: coinJobs[0].lookupScript }, ...coinJobs];
12851
12912
  }
@@ -12877,7 +12938,7 @@ function dedupeTimelocks(timelocks) {
12877
12938
  const seen = /* @__PURE__ */ new Set();
12878
12939
  const deduped = [];
12879
12940
  for (const timelock of timelocks) {
12880
- const sequence = chunkCJN4CUEU_cjs.timelockToSequence(timelock).toString();
12941
+ const sequence = chunkDAYCCIRO_cjs.timelockToSequence(timelock).toString();
12881
12942
  if (seen.has(sequence)) continue;
12882
12943
  seen.add(sequence);
12883
12944
  deduped.push(timelock);
@@ -12894,7 +12955,7 @@ async function resolveBoardingBootTapscript(contractRepository, serverPubKey, ba
12894
12955
  state: "active"
12895
12956
  });
12896
12957
  const newest = candidates.filter(
12897
- (c) => c.params.serverPubKey === serverPubKeyHex && c.metadata?.source === chunkLUWSY2QO_cjs.WALLET_RECEIVE_SOURCE
12958
+ (c) => c.params.serverPubKey === serverPubKeyHex && c.metadata?.source === chunkFUW3OM5X_cjs.WALLET_RECEIVE_SOURCE
12898
12959
  ).sort((a, b) => {
12899
12960
  if (b.createdAt !== a.createdAt) return b.createdAt - a.createdAt;
12900
12961
  return signingDescriptorIndex(b.metadata?.signingDescriptor) - signingDescriptorIndex(a.metadata?.signingDescriptor);
@@ -12902,7 +12963,7 @@ async function resolveBoardingBootTapscript(contractRepository, serverPubKey, ba
12902
12963
  if (!newest?.params.pubKey) return baseline;
12903
12964
  try {
12904
12965
  const pubKey = base.hex.decode(newest.params.pubKey);
12905
- return new chunkLUWSY2QO_cjs.DefaultVtxo.Script({ ...baseline.options, pubKey });
12966
+ return new chunkFUW3OM5X_cjs.DefaultVtxo.Script({ ...baseline.options, pubKey });
12906
12967
  } catch (e) {
12907
12968
  console.warn("Skipping malformed boarding contract at boot", newest.script, e);
12908
12969
  return baseline;
@@ -12921,15 +12982,43 @@ function filterSnapshotVtxos(snapshot, filter, pendingSpendOutpoints) {
12921
12982
  if (vtxo.isUnrolled) {
12922
12983
  return !!f.withUnrolled;
12923
12984
  }
12924
- if (chunkCJN4CUEU_cjs.isVtxoSpent(vtxo)) {
12985
+ if (chunkDAYCCIRO_cjs.isVtxoSpent(vtxo)) {
12925
12986
  return false;
12926
12987
  }
12927
- if (!f.withRecoverable && chunkCJN4CUEU_cjs.canRecoverOnchain(vtxo, now)) {
12988
+ if (!f.withRecoverable && chunkDAYCCIRO_cjs.canRecoverOnchain(vtxo, now)) {
12928
12989
  return false;
12929
12990
  }
12930
12991
  return true;
12931
12992
  });
12932
12993
  }
12994
+ async function refreshSweptStateOfExpiredInputs(wallet, inputs) {
12995
+ const candidates = inputs.filter(chunkDAYCCIRO_cjs.isVirtualCoin).map(chunkDAYCCIRO_cjs.normalizeVtxo).filter((v) => !v.isSwept);
12996
+ if (candidates.length === 0) return inputs;
12997
+ const now = candidates.some((v) => v.expiresAtHeight !== void 0) ? await chunkDAYCCIRO_cjs.resolveTimeHeight(wallet.onchainProvider) : { timestamp: /* @__PURE__ */ new Date() };
12998
+ const suspects = candidates.filter(
12999
+ (v) => chunkDAYCCIRO_cjs.isPastExpiry(v, now) || v.expiresAtHeight !== void 0 && now.height === void 0
13000
+ );
13001
+ if (suspects.length === 0) return inputs;
13002
+ let sweptNow;
13003
+ try {
13004
+ const manager = await wallet.getContractManager();
13005
+ await manager.refreshOutpoints(suspects.map(({ txid, vout }) => ({ txid, vout })));
13006
+ const suspectKeys = new Set(suspects.map((v) => `${v.txid}:${v.vout}`));
13007
+ const fresh = await wallet.getVtxos({ withRecoverable: true });
13008
+ sweptNow = new Set(
13009
+ fresh.filter((v) => v.isSwept && suspectKeys.has(`${v.txid}:${v.vout}`)).map((v) => `${v.txid}:${v.vout}`)
13010
+ );
13011
+ } catch (e) {
13012
+ const message = "could not confirm the swept state of expired settlement inputs; retry the settlement";
13013
+ throw chunkDAYCCIRO_cjs.isRetryableProviderError(e) ? new chunkDAYCCIRO_cjs.ProviderUnavailableError(message, { cause: e }) : new Error(message, { cause: e });
13014
+ }
13015
+ if (sweptNow.size === 0) return inputs;
13016
+ return inputs.map((input) => {
13017
+ if (!chunkDAYCCIRO_cjs.isVirtualCoin(input) || !sweptNow.has(`${input.txid}:${input.vout}`)) return input;
13018
+ const swept = { ...chunkDAYCCIRO_cjs.normalizeVtxo(input), isSwept: true };
13019
+ return { ...swept, virtualStatus: chunkDAYCCIRO_cjs.toVirtualStatus(swept) };
13020
+ });
13021
+ }
12933
13022
  var PENDING_RECOVERY_REASON = "is past its operator signer's rotation cutoff \u2014 the operator will not co-sign it until it recovers";
12934
13023
  var UNROLLED_REASON = "was unilaterally exited and lives onchain \u2014 `Unroll.completeUnroll` is the only spend that reaches it";
12935
13024
  function omittedOutpoints(before, after) {
@@ -13264,7 +13353,7 @@ var ReadonlyWallet = class _ReadonlyWallet {
13264
13353
  */
13265
13354
  static async setupWalletConfig(config, pubKey) {
13266
13355
  const arkadeServerUrl = getArkadeServerUrl(config);
13267
- const arkProvider = config.arkProvider || new chunkCJN4CUEU_cjs.RestArkProvider(arkadeServerUrl);
13356
+ const arkProvider = config.arkProvider || new chunkDAYCCIRO_cjs.RestArkProvider(arkadeServerUrl);
13268
13357
  let indexerProvider = config.indexerProvider;
13269
13358
  if (!indexerProvider) {
13270
13359
  let indexerUrl = config.indexerUrl;
@@ -13281,7 +13370,7 @@ var ReadonlyWallet = class _ReadonlyWallet {
13281
13370
  indexerUrl = arkadeServerUrl;
13282
13371
  }
13283
13372
  }
13284
- indexerProvider = new chunkH62OOAS4_cjs.RestIndexerProvider(indexerUrl);
13373
+ indexerProvider = new chunkSJPPBR2V_cjs.RestIndexerProvider(indexerUrl);
13285
13374
  }
13286
13375
  const walletRepository = config.storage?.walletRepository ?? new IndexedDBWalletRepository();
13287
13376
  const contractRepository = config.storage?.contractRepository ?? new IndexedDBContractRepository();
@@ -13290,7 +13379,7 @@ var ReadonlyWallet = class _ReadonlyWallet {
13290
13379
  source: serverInfoSource,
13291
13380
  lastOnlineAt: serverInfoLastOnlineAt
13292
13381
  } = await resolveArkInfo(arkProvider, walletRepository);
13293
- const network = chunkCJN4CUEU_cjs.getNetwork(info.network);
13382
+ const network = chunkDAYCCIRO_cjs.getNetwork(info.network);
13294
13383
  if ("descriptor" in config.identity) {
13295
13384
  const descriptor = config.identity.descriptor;
13296
13385
  const identityIsMainnet = !descriptor.includes("tpub");
@@ -13330,18 +13419,18 @@ var ReadonlyWallet = class _ReadonlyWallet {
13330
13419
  value: info.boardingExitDelay,
13331
13420
  type: info.boardingExitDelay < 512n ? "blocks" : "seconds"
13332
13421
  };
13333
- const serverPubKey = chunkLUWSY2QO_cjs.toXOnly(base.hex.decode(info.signerPubkey), "ark signer key");
13334
- const delegatePubKey = config.delegateProvider ? await config.delegateProvider.getDelegateInfo().then((info2) => chunkLUWSY2QO_cjs.toXOnly(base.hex.decode(info2.pubkey), "delegate key")).catch(() => void 0) : config.delegatorProvider ? await config.delegatorProvider.getDelegateInfo().then((info2) => chunkLUWSY2QO_cjs.toXOnly(base.hex.decode(info2.pubkey), "delegate key")).catch(() => void 0) : void 0;
13422
+ const serverPubKey = chunkFUW3OM5X_cjs.toXOnly(base.hex.decode(info.signerPubkey), "ark signer key");
13423
+ const delegatePubKey = config.delegateProvider ? await config.delegateProvider.getDelegateInfo().then((info2) => chunkFUW3OM5X_cjs.toXOnly(base.hex.decode(info2.pubkey), "delegate key")).catch(() => void 0) : config.delegatorProvider ? await config.delegatorProvider.getDelegateInfo().then((info2) => chunkFUW3OM5X_cjs.toXOnly(base.hex.decode(info2.pubkey), "delegate key")).catch(() => void 0) : void 0;
13335
13424
  const offchainOptions = {
13336
13425
  pubKey,
13337
13426
  serverPubKey,
13338
13427
  csvTimelock: exitTimelock
13339
13428
  };
13340
- const offchainTapscript = !delegatePubKey ? new chunkLUWSY2QO_cjs.DefaultVtxo.Script(offchainOptions) : new chunkLUWSY2QO_cjs.DelegateVtxo.Script({ ...offchainOptions, delegatePubKey });
13341
- const boardingTapscript = chunkLUWSY2QO_cjs.BoardingContractHandler.createScript({
13429
+ const offchainTapscript = !delegatePubKey ? new chunkFUW3OM5X_cjs.DefaultVtxo.Script(offchainOptions) : new chunkFUW3OM5X_cjs.DelegateVtxo.Script({ ...offchainOptions, delegatePubKey });
13430
+ const boardingTapscript = chunkFUW3OM5X_cjs.BoardingContractHandler.createScript({
13342
13431
  pubKey: base.hex.encode(pubKey),
13343
13432
  serverPubKey: base.hex.encode(serverPubKey),
13344
- csvTimelock: chunkCJN4CUEU_cjs.timelockToSequence(boardingTimelock).toString()
13433
+ csvTimelock: chunkDAYCCIRO_cjs.timelockToSequence(boardingTimelock).toString()
13345
13434
  });
13346
13435
  return {
13347
13436
  arkProvider,
@@ -13429,7 +13518,8 @@ var ReadonlyWallet = class _ReadonlyWallet {
13429
13518
  async getBalance() {
13430
13519
  const [boardingUtxos, snapshot] = await Promise.all([
13431
13520
  this.getBoardingUtxos(),
13432
- this.contractSnapshot()
13521
+ // The bucketer drops every spent coin and the gate reads contracts only.
13522
+ this.contractSnapshot(void 0, { unspentOnly: true })
13433
13523
  ]);
13434
13524
  const vtxos = filterSnapshotVtxos(
13435
13525
  snapshot,
@@ -13482,7 +13572,8 @@ var ReadonlyWallet = class _ReadonlyWallet {
13482
13572
  */
13483
13573
  async getVtxos(filter) {
13484
13574
  return filterSnapshotVtxos(
13485
- await this.contractSnapshot(),
13575
+ // Only an unrolled coin is returned spent, so no other read needs spent rows.
13576
+ await this.contractSnapshot(void 0, { unspentOnly: !filter?.withUnrolled }),
13486
13577
  filter,
13487
13578
  this._pendingSpendOutpoints
13488
13579
  );
@@ -13509,7 +13600,7 @@ var ReadonlyWallet = class _ReadonlyWallet {
13509
13600
  if (!filter?.withUnrolled) {
13510
13601
  logExcludedVtxos(
13511
13602
  "getSpendableVtxos",
13512
- snapshot.flatMap((contract) => contract.vtxos).filter((vtxo) => vtxo.isUnrolled && !chunkCJN4CUEU_cjs.isVtxoSpent(vtxo)),
13603
+ snapshot.flatMap((contract) => contract.vtxos).filter((vtxo) => vtxo.isUnrolled && !chunkDAYCCIRO_cjs.isVtxoSpent(vtxo)),
13513
13604
  [() => UNROLLED_REASON]
13514
13605
  );
13515
13606
  }
@@ -13670,7 +13761,7 @@ var ReadonlyWallet = class _ReadonlyWallet {
13670
13761
  this.getBoardingTxs()
13671
13762
  ]);
13672
13763
  const allVtxos = snapshot.flatMap((_) => _.vtxos);
13673
- const resolveTxCreatedAt = (txids) => chunkCJN4CUEU_cjs.fetchVtxoCreatedAtByTxid(this.indexerProvider, txids);
13764
+ const resolveTxCreatedAt = (txids) => chunkDAYCCIRO_cjs.fetchVtxoCreatedAtByTxid(this.indexerProvider, txids);
13674
13765
  return buildTransactionHistory(
13675
13766
  allVtxos,
13676
13767
  boardingTxs,
@@ -13765,7 +13856,7 @@ var ReadonlyWallet = class _ReadonlyWallet {
13765
13856
  },
13766
13857
  isUnrolled: true,
13767
13858
  ...boardingFacts,
13768
- virtualStatus: chunkCJN4CUEU_cjs.toVirtualStatus(boardingFacts),
13859
+ virtualStatus: chunkDAYCCIRO_cjs.toVirtualStatus(boardingFacts),
13769
13860
  spentBy: "",
13770
13861
  createdAt: tx.status.confirmed ? new Date(tx.status.block_time * 1e3) : /* @__PURE__ */ new Date(0),
13771
13862
  script: scriptHex
@@ -13821,9 +13912,9 @@ var ReadonlyWallet = class _ReadonlyWallet {
13821
13912
  async getBoardingTapscripts(allowedSigners) {
13822
13913
  const byScript = /* @__PURE__ */ new Map();
13823
13914
  const add = (s) => byScript.set(base.hex.encode(s.pkScript), s);
13824
- const boardingCsv = this.boardingTapscript.options.csvTimelock ?? chunkLUWSY2QO_cjs.DefaultVtxo.Script.DEFAULT_TIMELOCK;
13915
+ const boardingCsv = this.boardingTapscript.options.csvTimelock ?? chunkFUW3OM5X_cjs.DefaultVtxo.Script.DEFAULT_TIMELOCK;
13825
13916
  add(
13826
- new chunkLUWSY2QO_cjs.DefaultVtxo.Script({
13917
+ new chunkFUW3OM5X_cjs.DefaultVtxo.Script({
13827
13918
  pubKey: await this.identity.xOnlyPublicKey(),
13828
13919
  serverPubKey: this.boardingTapscript.options.serverPubKey,
13829
13920
  csvTimelock: boardingCsv
@@ -13838,7 +13929,7 @@ var ReadonlyWallet = class _ReadonlyWallet {
13838
13929
  for (const c of boardingContracts) {
13839
13930
  if (!allowed.has(toXOnlySignerHex(c.params.serverPubKey))) continue;
13840
13931
  try {
13841
- add(chunkLUWSY2QO_cjs.BoardingContractHandler.createScript(c.params));
13932
+ add(chunkFUW3OM5X_cjs.BoardingContractHandler.createScript(c.params));
13842
13933
  } catch (e) {
13843
13934
  console.warn("Skipping malformed boarding contract", c.script, e);
13844
13935
  }
@@ -13875,7 +13966,7 @@ var ReadonlyWallet = class _ReadonlyWallet {
13875
13966
  // Per-row CSV delay decoded from THIS tapscript's exit leaf —
13876
13967
  // not the wallet's current boarding timelock, which a signer
13877
13968
  // rotation may have changed.
13878
- csvTimelock: chunkCJN4CUEU_cjs.CSVMultisigTapscript.decode(base.hex.decode(tapscript.exitScript)).params.timelock,
13969
+ csvTimelock: chunkDAYCCIRO_cjs.CSVMultisigTapscript.decode(base.hex.decode(tapscript.exitScript)).params.timelock,
13879
13970
  coins: utxos
13880
13971
  };
13881
13972
  })
@@ -14012,7 +14103,7 @@ var ReadonlyWallet = class _ReadonlyWallet {
14012
14103
  /** Fetch Arkade transaction ids that are still pending final settlement. */
14013
14104
  async fetchPendingTxs() {
14014
14105
  const scripts = await this.getWalletScripts();
14015
- const vtxos = await chunkCJN4CUEU_cjs.getAllNormalizedVtxos(this.indexerProvider, scripts);
14106
+ const vtxos = await chunkDAYCCIRO_cjs.getAllNormalizedVtxos(this.indexerProvider, scripts);
14016
14107
  return vtxos.filter(
14017
14108
  (vtxo) => (vtxo.isSpent || vtxo.isPreconfirmed && !vtxo.isSwept) && vtxo.arkTxId !== void 0
14018
14109
  ).map((_) => _.arkTxId);
@@ -14043,7 +14134,7 @@ var ReadonlyWallet = class _ReadonlyWallet {
14043
14134
  });
14044
14135
  for (const contract of contracts) {
14045
14136
  if (map.has(contract.script)) continue;
14046
- const handler = chunkLUWSY2QO_cjs.contractHandlers.get(contract.type);
14137
+ const handler = chunkFUW3OM5X_cjs.contractHandlers.get(contract.type);
14047
14138
  if (handler) {
14048
14139
  const script = handler.createScript(contract.params);
14049
14140
  map.set(contract.script, script);
@@ -14155,19 +14246,19 @@ var ReadonlyWallet = class _ReadonlyWallet {
14155
14246
  }
14156
14247
  });
14157
14248
  const baselinePubkey = await this.identity.xOnlyPublicKey();
14158
- const delegatePubKey = this.offchainTapscript instanceof chunkLUWSY2QO_cjs.DelegateVtxo.Script ? this.offchainTapscript.options.delegatePubKey : void 0;
14249
+ const delegatePubKey = this.offchainTapscript instanceof chunkFUW3OM5X_cjs.DelegateVtxo.Script ? this.offchainTapscript.options.delegatePubKey : void 0;
14159
14250
  const baselineSigners = [
14160
14251
  this.offchainTapscript.options.serverPubKey,
14161
14252
  ...[...this._deprecatedSigners.keys()].map((h) => base.hex.decode(h))
14162
14253
  ];
14163
14254
  const seenBaselineScripts = /* @__PURE__ */ new Set();
14164
14255
  for (const serverPubKey of baselineSigners) {
14165
- for (const csvTimelock of this.walletContractTimelocks) {
14166
- const csvTimelockStr = chunkCJN4CUEU_cjs.timelockToSequence(csvTimelock).toString();
14167
- const defaultScript = new chunkLUWSY2QO_cjs.DefaultVtxo.Script({
14256
+ for (const csvTimelock2 of this.walletContractTimelocks) {
14257
+ const csvTimelockStr = chunkDAYCCIRO_cjs.timelockToSequence(csvTimelock2).toString();
14258
+ const defaultScript = new chunkFUW3OM5X_cjs.DefaultVtxo.Script({
14168
14259
  pubKey: baselinePubkey,
14169
14260
  serverPubKey,
14170
- csvTimelock
14261
+ csvTimelock: csvTimelock2
14171
14262
  });
14172
14263
  const defaultScriptHex = base.hex.encode(defaultScript.pkScript);
14173
14264
  if (!seenBaselineScripts.has(defaultScriptHex)) {
@@ -14185,11 +14276,11 @@ var ReadonlyWallet = class _ReadonlyWallet {
14185
14276
  });
14186
14277
  }
14187
14278
  if (delegatePubKey) {
14188
- const delegateScript = new chunkLUWSY2QO_cjs.DelegateVtxo.Script({
14279
+ const delegateScript = new chunkFUW3OM5X_cjs.DelegateVtxo.Script({
14189
14280
  pubKey: baselinePubkey,
14190
14281
  serverPubKey,
14191
14282
  delegatePubKey,
14192
- csvTimelock
14283
+ csvTimelock: csvTimelock2
14193
14284
  });
14194
14285
  const delegateScriptHex = base.hex.encode(delegateScript.pkScript);
14195
14286
  if (seenBaselineScripts.has(delegateScriptHex)) continue;
@@ -14209,9 +14300,9 @@ var ReadonlyWallet = class _ReadonlyWallet {
14209
14300
  }
14210
14301
  }
14211
14302
  }
14212
- const boardingCsvTimelock = this.boardingTapscript.options.csvTimelock ?? chunkLUWSY2QO_cjs.DefaultVtxo.Script.DEFAULT_TIMELOCK;
14303
+ const boardingCsvTimelock = this.boardingTapscript.options.csvTimelock ?? chunkFUW3OM5X_cjs.DefaultVtxo.Script.DEFAULT_TIMELOCK;
14213
14304
  for (const serverPubKey of baselineSigners) {
14214
- const baselineBoarding = new chunkLUWSY2QO_cjs.DefaultVtxo.Script({
14305
+ const baselineBoarding = new chunkFUW3OM5X_cjs.DefaultVtxo.Script({
14215
14306
  pubKey: baselinePubkey,
14216
14307
  serverPubKey,
14217
14308
  csvTimelock: boardingCsvTimelock
@@ -14224,7 +14315,7 @@ var ReadonlyWallet = class _ReadonlyWallet {
14224
14315
  params: {
14225
14316
  pubKey: base.hex.encode(baselineBoarding.options.pubKey),
14226
14317
  serverPubKey: base.hex.encode(serverPubKey),
14227
- csvTimelock: chunkCJN4CUEU_cjs.timelockToSequence(boardingCsvTimelock).toString()
14318
+ csvTimelock: chunkDAYCCIRO_cjs.timelockToSequence(boardingCsvTimelock).toString()
14228
14319
  },
14229
14320
  script: boardingScriptHex,
14230
14321
  address: baselineBoarding.address(this.network.hrp, serverPubKey).encode(),
@@ -14424,7 +14515,7 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
14424
14515
  serverPubKey: this.offchainTapscript.options.serverPubKey,
14425
14516
  deprecatedSignerPubKeys: [...this._deprecatedSigners.keys()].map((h) => base.hex.decode(h)),
14426
14517
  csvTimelocks: this.walletContractTimelocks,
14427
- delegatePubKey: this.offchainTapscript instanceof chunkLUWSY2QO_cjs.DelegateVtxo.Script ? this.offchainTapscript.options.delegatePubKey : void 0
14518
+ delegatePubKey: this.offchainTapscript instanceof chunkFUW3OM5X_cjs.DelegateVtxo.Script ? this.offchainTapscript.options.delegatePubKey : void 0
14428
14519
  };
14429
14520
  }
14430
14521
  _signerRouter;
@@ -14669,7 +14760,7 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
14669
14760
  const [row] = await manager.getContracts({ script: base.hex.encode(display.pkScript) });
14670
14761
  const persisted = row?.metadata?.signingDescriptor;
14671
14762
  if (typeof persisted === "string") return persisted;
14672
- return chunkLUWSY2QO_cjs.identityDescriptor(this.identity);
14763
+ return chunkFUW3OM5X_cjs.identityDescriptor(this.identity);
14673
14764
  }
14674
14765
  /**
14675
14766
  * Build, persist and shape one address of `type` owned by `descriptor` —
@@ -14685,7 +14776,7 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
14685
14776
  async mintAddress(manager, type, descriptor, tagSource, allocated) {
14686
14777
  if (type === "boarding") {
14687
14778
  const built2 = this.buildBoardingContract(
14688
- chunkLUWSY2QO_cjs.deriveDescriptorLeafPubKey(descriptor),
14779
+ chunkFUW3OM5X_cjs.deriveDescriptorLeafPubKey(descriptor),
14689
14780
  descriptor,
14690
14781
  tagSource
14691
14782
  );
@@ -14730,11 +14821,11 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
14730
14821
  * {@link buildReceiveContract}.
14731
14822
  */
14732
14823
  buildBoardingContract(pubKey, descriptor, tagSource) {
14733
- const tapscript = new chunkLUWSY2QO_cjs.DefaultVtxo.Script({
14824
+ const tapscript = new chunkFUW3OM5X_cjs.DefaultVtxo.Script({
14734
14825
  ...this._boardingTapscript.options,
14735
14826
  pubKey
14736
14827
  });
14737
- const csvTimelock = tapscript.options.csvTimelock ?? chunkLUWSY2QO_cjs.DefaultVtxo.Script.DEFAULT_TIMELOCK;
14828
+ const csvTimelock2 = tapscript.options.csvTimelock ?? chunkFUW3OM5X_cjs.DefaultVtxo.Script.DEFAULT_TIMELOCK;
14738
14829
  return {
14739
14830
  tapscript,
14740
14831
  params: {
@@ -14742,13 +14833,13 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
14742
14833
  params: {
14743
14834
  pubKey: base.hex.encode(pubKey),
14744
14835
  serverPubKey: base.hex.encode(tapscript.options.serverPubKey),
14745
- csvTimelock: chunkCJN4CUEU_cjs.timelockToSequence(csvTimelock).toString()
14836
+ csvTimelock: chunkDAYCCIRO_cjs.timelockToSequence(csvTimelock2).toString()
14746
14837
  },
14747
14838
  script: base.hex.encode(tapscript.pkScript),
14748
14839
  address: tapscript.address(this.network.hrp, this.arkServerPublicKey).encode(),
14749
14840
  state: "active",
14750
14841
  metadata: {
14751
- ...tagSource && { source: chunkLUWSY2QO_cjs.WALLET_RECEIVE_SOURCE },
14842
+ ...tagSource && { source: chunkFUW3OM5X_cjs.WALLET_RECEIVE_SOURCE },
14752
14843
  signingDescriptor: descriptor
14753
14844
  }
14754
14845
  }
@@ -14777,7 +14868,7 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
14777
14868
  if (this._descriptorProvider instanceof HDDescriptorProvider) {
14778
14869
  return (await this.getContractManager()).getNextSigningDescriptor();
14779
14870
  }
14780
- return chunkLUWSY2QO_cjs.identityDescriptor(this.identity);
14871
+ return chunkFUW3OM5X_cjs.identityDescriptor(this.identity);
14781
14872
  }
14782
14873
  /**
14783
14874
  * @see HDAllocationCapable.advanceSigningDescriptorWatermark
@@ -14873,7 +14964,7 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
14873
14964
  * the stable public API.
14874
14965
  */
14875
14966
  async rotateServerSigner(newServerPubKey, checkpointTapscript) {
14876
- const xonly = chunkLUWSY2QO_cjs.toXOnly(newServerPubKey, "ark signer key");
14967
+ const xonly = chunkFUW3OM5X_cjs.toXOnly(newServerPubKey, "ark signer key");
14877
14968
  const newServerUnrollScript = assertValidServerUnrollScript(
14878
14969
  checkpointTapscript,
14879
14970
  resolveCheckpointExitDelayPolicy(this.network, this.checkpointExitDelayPolicy)
@@ -14902,21 +14993,21 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
14902
14993
  const [currentBoardingRow] = await manager.getContracts({
14903
14994
  script: currentBoardingScript
14904
14995
  });
14905
- const newOffchain = this.offchainTapscript instanceof chunkLUWSY2QO_cjs.DelegateVtxo.Script ? new chunkLUWSY2QO_cjs.DelegateVtxo.Script({
14996
+ const newOffchain = this.offchainTapscript instanceof chunkFUW3OM5X_cjs.DelegateVtxo.Script ? new chunkFUW3OM5X_cjs.DelegateVtxo.Script({
14906
14997
  ...this.offchainTapscript.options,
14907
14998
  serverPubKey: xonly
14908
- }) : new chunkLUWSY2QO_cjs.DefaultVtxo.Script({
14999
+ }) : new chunkFUW3OM5X_cjs.DefaultVtxo.Script({
14909
15000
  ...this.offchainTapscript.options,
14910
15001
  serverPubKey: xonly
14911
15002
  });
14912
- const newBoarding = new chunkLUWSY2QO_cjs.DefaultVtxo.Script({
15003
+ const newBoarding = new chunkFUW3OM5X_cjs.DefaultVtxo.Script({
14913
15004
  ...this._boardingTapscript.options,
14914
15005
  serverPubKey: xonly
14915
15006
  });
14916
- const offchainCsv = chunkCJN4CUEU_cjs.timelockToSequence(newOffchain.options.csvTimelock).toString();
15007
+ const offchainCsv = chunkDAYCCIRO_cjs.timelockToSequence(newOffchain.options.csvTimelock).toString();
14917
15008
  const newOffchainScript = base.hex.encode(newOffchain.pkScript);
14918
15009
  const newOffchainAddress = newOffchain.address(this.network.hrp, xonly).encode();
14919
- if (newOffchain instanceof chunkLUWSY2QO_cjs.DelegateVtxo.Script) {
15010
+ if (newOffchain instanceof chunkFUW3OM5X_cjs.DelegateVtxo.Script) {
14920
15011
  await manager.createContract({
14921
15012
  type: "delegate",
14922
15013
  params: {
@@ -14944,13 +15035,13 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
14944
15035
  metadata: currentOffchainRow?.metadata
14945
15036
  });
14946
15037
  }
14947
- const boardingCsv = newBoarding.options.csvTimelock ?? chunkLUWSY2QO_cjs.DefaultVtxo.Script.DEFAULT_TIMELOCK;
15038
+ const boardingCsv = newBoarding.options.csvTimelock ?? chunkFUW3OM5X_cjs.DefaultVtxo.Script.DEFAULT_TIMELOCK;
14948
15039
  await manager.createContract({
14949
15040
  type: "boarding",
14950
15041
  params: {
14951
15042
  pubKey: base.hex.encode(newBoarding.options.pubKey),
14952
15043
  serverPubKey: base.hex.encode(xonly),
14953
- csvTimelock: chunkCJN4CUEU_cjs.timelockToSequence(boardingCsv).toString()
15044
+ csvTimelock: chunkDAYCCIRO_cjs.timelockToSequence(boardingCsv).toString()
14954
15045
  },
14955
15046
  script: base.hex.encode(newBoarding.pkScript),
14956
15047
  address: newBoarding.address(this.network.hrp, xonly).encode(),
@@ -14983,14 +15074,14 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
14983
15074
  _restoreInFlight;
14984
15075
  _addPendingSpends(inputs) {
14985
15076
  for (const input of inputs) {
14986
- if (chunkCJN4CUEU_cjs.isVirtualCoin(input)) {
15077
+ if (chunkDAYCCIRO_cjs.isVirtualCoin(input)) {
14987
15078
  this._pendingSpendOutpoints.add(`${input.txid}:${input.vout}`);
14988
15079
  }
14989
15080
  }
14990
15081
  }
14991
15082
  _removePendingSpends(inputs) {
14992
15083
  for (const input of inputs) {
14993
- if (chunkCJN4CUEU_cjs.isVirtualCoin(input)) {
15084
+ if (chunkDAYCCIRO_cjs.isVirtualCoin(input)) {
14994
15085
  this._pendingSpendOutpoints.delete(`${input.txid}:${input.vout}`);
14995
15086
  }
14996
15087
  }
@@ -15051,13 +15142,13 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
15051
15142
  const manager = await this.getContractManager();
15052
15143
  const provider = this._descriptorProvider;
15053
15144
  const hd = provider instanceof HDDescriptorProvider;
15054
- const staticDescriptor = hd ? void 0 : await chunkLUWSY2QO_cjs.identityDescriptor(this.identity);
15145
+ const staticDescriptor = hd ? void 0 : await chunkFUW3OM5X_cjs.identityDescriptor(this.identity);
15055
15146
  const materialize = (index) => hd ? provider.materializeDescriptorAt(index) : staticDescriptor;
15056
- const delegatePubKey = this.offchainTapscript instanceof chunkLUWSY2QO_cjs.DelegateVtxo.Script ? this.offchainTapscript.options.delegatePubKey : void 0;
15147
+ const delegatePubKey = this.offchainTapscript instanceof chunkFUW3OM5X_cjs.DelegateVtxo.Script ? this.offchainTapscript.options.delegatePubKey : void 0;
15057
15148
  const arkInfo = await this.arkProvider.getInfo();
15058
- const currentSignerPubKey = chunkLUWSY2QO_cjs.toXOnly(base.hex.decode(arkInfo.signerPubkey), "ark signer key");
15149
+ const currentSignerPubKey = chunkFUW3OM5X_cjs.toXOnly(base.hex.decode(arkInfo.signerPubkey), "ark signer key");
15059
15150
  const deprecatedSignerPubKeys = arkInfo.deprecatedSigners.map(
15060
- (s) => chunkLUWSY2QO_cjs.toXOnly(base.hex.decode(s.pubkey), "deprecated signer key")
15151
+ (s) => chunkFUW3OM5X_cjs.toXOnly(base.hex.decode(s.pubkey), "deprecated signer key")
15061
15152
  );
15062
15153
  const deps = {
15063
15154
  indexerProvider: this.indexerProvider,
@@ -15072,7 +15163,7 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
15072
15163
  csvTimelocks: this.walletContractTimelocks,
15073
15164
  // Boarding-exit CSV so the boarding handler can build its
15074
15165
  // candidate script (distinct from the unilateral-exit matrix).
15075
- boardingTimelock: this.boardingTapscript.options.csvTimelock ?? chunkLUWSY2QO_cjs.DefaultVtxo.Script.DEFAULT_TIMELOCK,
15166
+ boardingTimelock: this.boardingTapscript.options.csvTimelock ?? chunkFUW3OM5X_cjs.DefaultVtxo.Script.DEFAULT_TIMELOCK,
15076
15167
  delegatePubKey
15077
15168
  };
15078
15169
  const result = await manager.scanContracts({
@@ -15186,7 +15277,7 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
15186
15277
  throw new Error("Invalid configured public key");
15187
15278
  }
15188
15279
  const setup = await ReadonlyWallet.setupWalletConfig(config, pubkey);
15189
- const forfeitPubkey = chunkLUWSY2QO_cjs.toXOnly(base.hex.decode(setup.info.forfeitPubkey), "forfeit key");
15280
+ const forfeitPubkey = chunkFUW3OM5X_cjs.toXOnly(base.hex.decode(setup.info.forfeitPubkey), "forfeit key");
15190
15281
  const forfeitAddress = btcSigner.Address(setup.network).decode(setup.info.forfeitAddress);
15191
15282
  const forfeitOutputScript = btcSigner.OutScript.encode(forfeitAddress);
15192
15283
  const checkpointExitDelayOverrides = {
@@ -15335,7 +15426,7 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
15335
15426
  inputs: params.selectedVtxos,
15336
15427
  changeAmount: BigInt(changeAmount)
15337
15428
  };
15338
- const outputAddress = chunkCJN4CUEU_cjs.ArkAddress.decode(params.address);
15429
+ const outputAddress = chunkDAYCCIRO_cjs.ArkAddress.decode(params.address);
15339
15430
  assertRecipientArkAddress(
15340
15431
  params.address,
15341
15432
  outputAddress,
@@ -15401,13 +15492,13 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
15401
15492
  void this.logUngatedInputs("settle({ inputs })", params.inputs);
15402
15493
  }
15403
15494
  const offchainAddress = await this.getAddress();
15404
- const offchainPkScript = chunkCJN4CUEU_cjs.ArkAddress.decode(offchainAddress).pkScript;
15495
+ const offchainPkScript = chunkDAYCCIRO_cjs.ArkAddress.decode(offchainAddress).pkScript;
15405
15496
  const offchainOutputScript = base.hex.encode(offchainPkScript);
15406
15497
  if (!params) {
15407
15498
  const { fees, vtxoMaxAmount } = await this.arkProvider.getInfo();
15408
15499
  const estimator = new Estimator(fees.intentFee);
15409
15500
  let amount = 0;
15410
- const exitScript = chunkCJN4CUEU_cjs.CSVMultisigTapscript.decode(
15501
+ const exitScript = chunkDAYCCIRO_cjs.CSVMultisigTapscript.decode(
15411
15502
  base.hex.decode(this.boardingTapscript.exitScript)
15412
15503
  );
15413
15504
  const boardingTimelock = exitScript.params.timelock;
@@ -15439,7 +15530,7 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
15439
15530
  if (filteredVtxos.length >= MAX_VTXOS_PER_SETTLEMENT) {
15440
15531
  break;
15441
15532
  }
15442
- const inputFee = estimator.evalOffchainInput(chunkCJN4CUEU_cjs.toOffchainInputFeeParams(vtxo));
15533
+ const inputFee = estimator.evalOffchainInput(chunkDAYCCIRO_cjs.toOffchainInputFeeParams(vtxo));
15443
15534
  if (inputFee.satoshis >= vtxo.value) {
15444
15535
  continue;
15445
15536
  }
@@ -15478,6 +15569,10 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
15478
15569
  outputs: [output]
15479
15570
  };
15480
15571
  }
15572
+ params = {
15573
+ ...params,
15574
+ inputs: await refreshSweptStateOfExpiredInputs(this, params.inputs)
15575
+ };
15481
15576
  const onchainOutputIndexes = [];
15482
15577
  const outputs = [];
15483
15578
  let hasOffchainOutputs = false;
@@ -15486,7 +15581,7 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
15486
15581
  let script;
15487
15582
  let arkAddress;
15488
15583
  try {
15489
- arkAddress = chunkCJN4CUEU_cjs.ArkAddress.decode(output.address);
15584
+ arkAddress = chunkDAYCCIRO_cjs.ArkAddress.decode(output.address);
15490
15585
  } catch {
15491
15586
  arkAddress = void 0;
15492
15587
  }
@@ -15558,7 +15653,7 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
15558
15653
  ]);
15559
15654
  let intentTxId;
15560
15655
  try {
15561
- intentTxId = btcSigner.Transaction.fromPSBT(base.base64.decode(intent.proof)).id;
15656
+ intentTxId = chunkDAYCCIRO_cjs.Transaction.fromPSBT(base.base64.decode(intent.proof)).id;
15562
15657
  } catch {
15563
15658
  intentTxId = params.inputs.map((i) => `${i.txid}:${i.vout}`).sort().join("|");
15564
15659
  }
@@ -15576,7 +15671,7 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
15576
15671
  const abortController = new AbortController();
15577
15672
  let stream;
15578
15673
  let committedTxid;
15579
- const settleInputVtxos = params.inputs.filter(chunkCJN4CUEU_cjs.isVirtualCoin);
15674
+ const settleInputVtxos = params.inputs.filter(chunkDAYCCIRO_cjs.isVirtualCoin);
15580
15675
  const contractManager = await this.getContractManager();
15581
15676
  await contractManager.assertAnnotatable(settleInputVtxos);
15582
15677
  await contractManager.assertSpendableNow?.(
@@ -15688,7 +15783,7 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
15688
15783
  async maybeRotateBoardingAfterBoard(inputs) {
15689
15784
  if (!this._descriptorProvider) return;
15690
15785
  const consumedBoarding = inputs.some(
15691
- (input) => typeof input !== "string" && !chunkCJN4CUEU_cjs.isVirtualCoin(input)
15786
+ (input) => typeof input !== "string" && !chunkDAYCCIRO_cjs.isVirtualCoin(input)
15692
15787
  );
15693
15788
  if (!consumedBoarding) return;
15694
15789
  try {
@@ -15699,7 +15794,7 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
15699
15794
  }
15700
15795
  async handleSettlementFinalizationEvent(event, inputs, forfeitOutputScript, expectedRecipients, connectorsGraph, validatedCommitmentTxid) {
15701
15796
  const signedForfeits = [];
15702
- let settlementPsbt = btcSigner.Transaction.fromPSBT(base.base64.decode(event.commitmentTx));
15797
+ let settlementPsbt = chunkDAYCCIRO_cjs.Transaction.fromPSBT(base.base64.decode(event.commitmentTx));
15703
15798
  assertFinalCommitmentMatchesValidated(
15704
15799
  settlementPsbt,
15705
15800
  validatedCommitmentTxid,
@@ -15712,7 +15807,7 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
15712
15807
  let connectorIndex = 0;
15713
15808
  const connectorsLeaves = connectorsGraph?.leaves() || [];
15714
15809
  for (const input of inputs) {
15715
- if (!chunkCJN4CUEU_cjs.isVirtualCoin(input)) {
15810
+ if (!chunkDAYCCIRO_cjs.isVirtualCoin(input)) {
15716
15811
  let matched = false;
15717
15812
  for (let i = 0; i < settlementPsbt.inputsLength; i++) {
15718
15813
  const settlementInput = settlementPsbt.getInput(i);
@@ -15750,7 +15845,7 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
15750
15845
  }
15751
15846
  continue;
15752
15847
  }
15753
- if (chunkCJN4CUEU_cjs.canRecoverOnchain(input, { timestamp: /* @__PURE__ */ new Date() }) || isSubdust({ value: input.value }, this.dustAmount)) {
15848
+ if (!chunkDAYCCIRO_cjs.requiresForfeit(input) || isSubdust({ value: input.value }, this.dustAmount)) {
15754
15849
  continue;
15755
15850
  }
15756
15851
  if (connectorsLeaves.length === 0) {
@@ -15778,7 +15873,7 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
15778
15873
  index: input.vout,
15779
15874
  witnessUtxo: {
15780
15875
  amount: BigInt(input.value),
15781
- script: chunkCJN4CUEU_cjs.VtxoScript.decode(input.tapTree).pkScript
15876
+ script: chunkDAYCCIRO_cjs.VtxoScript.decode(input.tapTree).pkScript
15782
15877
  },
15783
15878
  sighashType: btcSigner.SigHash.DEFAULT,
15784
15879
  tapLeafScript: [input.forfeitTapLeafScript]
@@ -15797,7 +15892,7 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
15797
15892
  forfeitTx = await this._signerRouter.sign(forfeitTx, [
15798
15893
  {
15799
15894
  index: 0,
15800
- lookupScript: chunkCJN4CUEU_cjs.VtxoScript.decode(input.tapTree).pkScript
15895
+ lookupScript: chunkDAYCCIRO_cjs.VtxoScript.decode(input.tapTree).pkScript
15801
15896
  }
15802
15897
  ]);
15803
15898
  signedForfeits.push(base.base64.encode(forfeitTx.toPSBT()));
@@ -15855,7 +15950,7 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
15855
15950
  resolveBatchExpiryPolicy(this.network, this.batchExpiryPolicy)
15856
15951
  );
15857
15952
  await this.arkProvider.confirmRegistration(intentId);
15858
- const sweepTapscript = chunkCJN4CUEU_cjs.CSVMultisigTapscript.encode({
15953
+ const sweepTapscript = chunkDAYCCIRO_cjs.CSVMultisigTapscript.encode({
15859
15954
  timelock,
15860
15955
  pubkeys: [this.forfeitPubkey]
15861
15956
  }).script;
@@ -15870,14 +15965,14 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
15870
15965
  throw new Error("Sweep tap tree root not set");
15871
15966
  }
15872
15967
  const xOnlyPublicKeys = event.cosignersPublicKeys.map(
15873
- (k) => base.hex.encode(chunkLUWSY2QO_cjs.toXOnly(base.hex.decode(k), "cosigner key"))
15968
+ (k) => base.hex.encode(chunkFUW3OM5X_cjs.toXOnly(base.hex.decode(k), "cosigner key"))
15874
15969
  );
15875
15970
  const signerPublicKey = await session.getPublicKey();
15876
- const xonlySignerPublicKey = chunkLUWSY2QO_cjs.toXOnly(signerPublicKey, "signer key");
15971
+ const xonlySignerPublicKey = chunkFUW3OM5X_cjs.toXOnly(signerPublicKey, "signer key");
15877
15972
  if (!xOnlyPublicKeys.includes(base.hex.encode(xonlySignerPublicKey))) {
15878
15973
  return { skip: true };
15879
15974
  }
15880
- const commitmentTx = btcSigner.Transaction.fromPSBT(
15975
+ const commitmentTx = chunkDAYCCIRO_cjs.Transaction.fromPSBT(
15881
15976
  base.base64.decode(event.unsignedCommitmentTx)
15882
15977
  );
15883
15978
  validateVtxoTxGraph(vtxoTree, commitmentTx, sweepTapTreeRoot);
@@ -15963,9 +16058,9 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
15963
16058
  ...existing ?? {},
15964
16059
  intentTxId,
15965
16060
  registerProof: intent.proof,
15966
- registerProofMessage: chunkCJN4CUEU_cjs.Intent.encodeMessage(intent.message),
16061
+ registerProofMessage: chunkDAYCCIRO_cjs.Intent.encodeMessage(intent.message),
15967
16062
  deleteProof: deleteIntent.proof,
15968
- deleteProofMessage: chunkCJN4CUEU_cjs.Intent.encodeMessage(deleteIntent.message),
16063
+ deleteProofMessage: chunkDAYCCIRO_cjs.Intent.encodeMessage(deleteIntent.message),
15969
16064
  intentVtxos: inputs.map((i) => ({
15970
16065
  txid: i.txid,
15971
16066
  vout: i.vout
@@ -15998,7 +16093,7 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
15998
16093
  try {
15999
16094
  return await this.arkProvider.registerIntent(intent);
16000
16095
  } catch (error) {
16001
- if (error instanceof chunkCJN4CUEU_cjs.ArkError && error.code === 0 && error.message.includes("duplicated input")) {
16096
+ if (error instanceof chunkDAYCCIRO_cjs.ArkError && error.code === 0 && error.message.includes("duplicated input")) {
16002
16097
  const deleteIntent = await this.makeDeleteIntentSignature(inputs);
16003
16098
  await this.arkProvider.deleteIntent(deleteIntent);
16004
16099
  return this.arkProvider.registerIntent(intent);
@@ -16014,7 +16109,7 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
16014
16109
  expire_at: 0,
16015
16110
  cosigners_public_keys: cosignerPubKeys
16016
16111
  };
16017
- const proof = chunkCJN4CUEU_cjs.Intent.create(message, coins, outputs);
16112
+ const proof = chunkDAYCCIRO_cjs.Intent.create(message, coins, outputs);
16018
16113
  const signedProof = await this._signerRouter.sign(proof, intentProofJobs(coins));
16019
16114
  return {
16020
16115
  proof: base.base64.encode(signedProof.toPSBT()),
@@ -16026,7 +16121,7 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
16026
16121
  type: "delete",
16027
16122
  expire_at: 0
16028
16123
  };
16029
- const proof = chunkCJN4CUEU_cjs.Intent.create(message, coins, []);
16124
+ const proof = chunkDAYCCIRO_cjs.Intent.create(message, coins, []);
16030
16125
  const signedProof = await this._signerRouter.sign(proof, intentProofJobs(coins));
16031
16126
  return {
16032
16127
  proof: base.base64.encode(signedProof.toPSBT()),
@@ -16038,7 +16133,7 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
16038
16133
  type: "get-pending-tx",
16039
16134
  expire_at: 0
16040
16135
  };
16041
- const proof = chunkCJN4CUEU_cjs.Intent.create(message, coins, []);
16136
+ const proof = chunkDAYCCIRO_cjs.Intent.create(message, coins, []);
16042
16137
  const signedProof = await this._signerRouter.sign(proof, intentProofJobs(coins));
16043
16138
  return {
16044
16139
  proof: base.base64.encode(signedProof.toPSBT()),
@@ -16059,7 +16154,7 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
16059
16154
  if (!vtxos || vtxos.length === 0) {
16060
16155
  const scriptMap = await this.getScriptMap();
16061
16156
  const allExtended = [];
16062
- const fetchedVtxos = await chunkCJN4CUEU_cjs.getAllNormalizedVtxos(this.indexerProvider, [
16157
+ const fetchedVtxos = await chunkDAYCCIRO_cjs.getAllNormalizedVtxos(this.indexerProvider, [
16063
16158
  ...scriptMap.keys()
16064
16159
  ]);
16065
16160
  for (const vtxo of fetchedVtxos) {
@@ -16102,8 +16197,8 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
16102
16197
  batchPending.push(pendingTx.arkTxid);
16103
16198
  try {
16104
16199
  const checkpointTxs = pendingTx.signedCheckpointTxs.map((c) => {
16105
- const tx = btcSigner.Transaction.fromPSBT(base.base64.decode(c));
16106
- chunkCJN4CUEU_cjs.assertAllowedSighashTypes(tx);
16200
+ const tx = chunkDAYCCIRO_cjs.Transaction.fromPSBT(base.base64.decode(c));
16201
+ chunkDAYCCIRO_cjs.assertAllowedSighashTypes(tx);
16107
16202
  return tx;
16108
16203
  });
16109
16204
  assertCheckpointsMatchInputs(
@@ -16175,11 +16270,11 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
16175
16270
  * against the current key alone would leave it pending forever.
16176
16271
  */
16177
16272
  checkpointUnrollCandidates(info) {
16178
- const current = chunkCJN4CUEU_cjs.CSVMultisigTapscript.decode(base.hex.decode(info.checkpointTapscript));
16273
+ const current = chunkDAYCCIRO_cjs.CSVMultisigTapscript.decode(base.hex.decode(info.checkpointTapscript));
16179
16274
  const candidates = [this._serverUnrollScript, current];
16180
16275
  for (const deprecated of signerSetFromInfo(info).deprecated.keys()) {
16181
16276
  candidates.push(
16182
- chunkCJN4CUEU_cjs.CSVMultisigTapscript.encode({
16277
+ chunkDAYCCIRO_cjs.CSVMultisigTapscript.encode({
16183
16278
  ...current.params,
16184
16279
  pubkeys: [base.hex.decode(deprecated)]
16185
16280
  })
@@ -16270,7 +16365,7 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
16270
16365
  if (vtxos.length === 0) {
16271
16366
  throw new Error("No VTXOs found for this arkadeCash");
16272
16367
  }
16273
- const myPkScript = chunkCJN4CUEU_cjs.ArkAddress.decode(await this.getAddress()).pkScript;
16368
+ const myPkScript = chunkDAYCCIRO_cjs.ArkAddress.decode(await this.getAddress()).pkScript;
16274
16369
  let { spendable, unclaimed } = this.classifyCashVtxos(vtxos);
16275
16370
  let swept = 0;
16276
16371
  const drainable = vtxos.filter(
@@ -16346,7 +16441,7 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
16346
16441
  const spendable = [];
16347
16442
  const unclaimed = [];
16348
16443
  for (const vtxo of vtxos) {
16349
- if (chunkCJN4CUEU_cjs.isVtxoSpent(vtxo)) {
16444
+ if (chunkDAYCCIRO_cjs.isVtxoSpent(vtxo)) {
16350
16445
  unclaimed.push(cashReport(vtxo, "already-spent"));
16351
16446
  } else if (vtxo.isUnrolled) {
16352
16447
  unclaimed.push(cashReport(vtxo, "exited"));
@@ -16368,7 +16463,7 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
16368
16463
  const all = [];
16369
16464
  const seen = /* @__PURE__ */ new Set();
16370
16465
  for (let pageIndex = 0; ; pageIndex++) {
16371
- const { vtxos, page } = await chunkCJN4CUEU_cjs.getNormalizedVtxos(this.indexerProvider, {
16466
+ const { vtxos, page } = await chunkDAYCCIRO_cjs.getNormalizedVtxos(this.indexerProvider, {
16372
16467
  scripts,
16373
16468
  pageIndex,
16374
16469
  pageSize
@@ -16415,7 +16510,7 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
16415
16510
  for (let i = 0; i < inputs.length; i += MAX_INPUTS_PER_INTENT) {
16416
16511
  const batch = inputs.slice(i, i + MAX_INPUTS_PER_INTENT);
16417
16512
  const message = { type: "get-pending-tx", expire_at: 0 };
16418
- const proof = chunkCJN4CUEU_cjs.Intent.create(message, batch, []);
16513
+ const proof = chunkDAYCCIRO_cjs.Intent.create(message, batch, []);
16419
16514
  const signedProof = await identity.sign(
16420
16515
  proof,
16421
16516
  Array.from({ length: batch.length + 1 }, (_, j) => j)
@@ -16436,8 +16531,8 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
16436
16531
  for (const pendingTx of pendingTxs) {
16437
16532
  try {
16438
16533
  const checkpointTxs = pendingTx.signedCheckpointTxs.map((checkpoint) => {
16439
- const tx = btcSigner.Transaction.fromPSBT(base.base64.decode(checkpoint));
16440
- chunkCJN4CUEU_cjs.assertAllowedSighashTypes(tx);
16534
+ const tx = chunkDAYCCIRO_cjs.Transaction.fromPSBT(base.base64.decode(checkpoint));
16535
+ chunkDAYCCIRO_cjs.assertAllowedSighashTypes(tx);
16441
16536
  return tx;
16442
16537
  });
16443
16538
  assertCheckpointsMatchInputs(
@@ -16477,7 +16572,7 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
16477
16572
  }
16478
16573
  /** Sum the outputs of an ark tx PSBT that pay the given scriptPubKey. */
16479
16574
  arkTxAmountPaidTo(arkTxPsbt, pkScriptHex) {
16480
- const arkTx = btcSigner.Transaction.fromPSBT(base.base64.decode(arkTxPsbt));
16575
+ const arkTx = chunkDAYCCIRO_cjs.Transaction.fromPSBT(base.base64.decode(arkTxPsbt));
16481
16576
  let total = 0;
16482
16577
  for (let i = 0; i < arkTx.outputsLength; i++) {
16483
16578
  const output = arkTx.getOutput(i);
@@ -16648,7 +16743,7 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
16648
16743
  script: recipient.script,
16649
16744
  amount: BigInt(recipient.amount),
16650
16745
  // Already checked against the recipient address in `validateRecipients`.
16651
- ...recipient.tapTree ? { tapTree: chunkCJN4CUEU_cjs.TapTreeCoder.decode(recipient.tapTree) } : {}
16746
+ ...recipient.tapTree ? { tapTree: chunkDAYCCIRO_cjs.toBIP371TapTree(recipient.tapTree) } : {}
16652
16747
  }));
16653
16748
  const totalBtcOutput = outputs.reduce((sum, o) => sum + Number(o.amount), 0);
16654
16749
  let changeAmount = totalBtcSelected - totalBtcOutput;
@@ -16832,10 +16927,10 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
16832
16927
  const serverPubKey = this.arkServerPublicKey;
16833
16928
  const serverUnrollScript = this.serverUnrollScript;
16834
16929
  const arkAddress = offchainTapscript.address(this.network.hrp, serverPubKey);
16835
- const normalizedInputs = inputs.map(chunkCJN4CUEU_cjs.normalizeVtxo);
16836
- const at = now ?? await chunkCJN4CUEU_cjs.resolveTimeHeight(this.onchainProvider);
16930
+ const normalizedInputs = inputs.map(chunkDAYCCIRO_cjs.normalizeVtxo);
16931
+ const at = now ?? await chunkDAYCCIRO_cjs.resolveTimeHeight(this.onchainProvider);
16837
16932
  for (const input of normalizedInputs) {
16838
- if (!chunkCJN4CUEU_cjs.canSpendOffchain(input, at)) {
16933
+ if (!chunkDAYCCIRO_cjs.canSpendOffchain(input, at)) {
16839
16934
  throw new Error(
16840
16935
  `sendSelectedVtxosToSelf: input ${input.txid}:${input.vout} is not cooperatively spendable`
16841
16936
  );
@@ -16905,7 +17000,7 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
16905
17000
  );
16906
17001
  const arkTxJobs = inputs.map((input, index) => ({
16907
17002
  index,
16908
- lookupScript: chunkCJN4CUEU_cjs.VtxoScript.decode(input.tapTree).pkScript
17003
+ lookupScript: chunkDAYCCIRO_cjs.VtxoScript.decode(input.tapTree).pkScript
16909
17004
  }));
16910
17005
  const identity = this.identity;
16911
17006
  const signer = {
@@ -16989,7 +17084,7 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
16989
17084
  }
16990
17085
  const checkpointIdByOutpoint = /* @__PURE__ */ new Map();
16991
17086
  for (const encoded of signedCheckpointTxs) {
16992
- const checkpoint = btcSigner.Transaction.fromPSBT(base.base64.decode(encoded));
17087
+ const checkpoint = chunkDAYCCIRO_cjs.Transaction.fromPSBT(base.base64.decode(encoded));
16993
17088
  for (let i = 0; i < checkpoint.inputsLength; i++) {
16994
17089
  const input = checkpoint.getInput(i);
16995
17090
  if (!input.txid) continue;
@@ -17006,14 +17101,14 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
17006
17101
  const spentBy = checkpointIdByOutpoint.get(`${vtxo.txid}:${vtxo.vout}`);
17007
17102
  spentVtxos.push({
17008
17103
  ...spentFacts,
17009
- virtualStatus: chunkCJN4CUEU_cjs.toVirtualStatus(spentFacts),
17104
+ virtualStatus: chunkDAYCCIRO_cjs.toVirtualStatus(spentFacts),
17010
17105
  ...spentBy ? { spentBy } : {},
17011
17106
  arkTxId: arkTxid
17012
17107
  });
17013
17108
  for (const id of vtxo.commitmentTxIds) {
17014
17109
  commitmentTxIds.add(id);
17015
17110
  }
17016
- const vtxoExpiry = chunkCJN4CUEU_cjs.toBatchExpiry(vtxo);
17111
+ const vtxoExpiry = chunkDAYCCIRO_cjs.toBatchExpiry(vtxo);
17017
17112
  if (vtxoExpiry) {
17018
17113
  batchExpiry = Math.min(batchExpiry, vtxoExpiry);
17019
17114
  }
@@ -17026,7 +17121,7 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
17026
17121
  isSwept: false,
17027
17122
  isPreconfirmed: true,
17028
17123
  commitmentTxIds: Array.from(commitmentTxIds),
17029
- ...chunkCJN4CUEU_cjs.parseLegacyExpiry(batchExpiry)
17124
+ ...chunkDAYCCIRO_cjs.parseLegacyExpiry(batchExpiry)
17030
17125
  };
17031
17126
  changeVtxo = {
17032
17127
  txid: arkTxid,
@@ -17038,7 +17133,7 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
17038
17133
  tapTree: offchainTapscript.encode(),
17039
17134
  value: Number(changeAmount),
17040
17135
  ...changeFacts,
17041
- virtualStatus: chunkCJN4CUEU_cjs.toVirtualStatus(changeFacts),
17136
+ virtualStatus: chunkDAYCCIRO_cjs.toVirtualStatus(changeFacts),
17042
17137
  spentBy: "",
17043
17138
  status: {
17044
17139
  confirmed: false
@@ -17107,12 +17202,12 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
17107
17202
  const spentVtxos = [];
17108
17203
  const inputArkTxIds = /* @__PURE__ */ new Set();
17109
17204
  const boardingRemovalsByAddress = /* @__PURE__ */ new Map();
17110
- const vtxoInputs = inputs.filter(chunkCJN4CUEU_cjs.isVirtualCoin);
17205
+ const vtxoInputs = inputs.filter(chunkDAYCCIRO_cjs.isVirtualCoin);
17111
17206
  const cm = await this.getContractManager();
17112
17207
  const annotatedVtxos = await cm.annotateVtxos(vtxoInputs);
17113
17208
  const annotatedByKey = new Map(annotatedVtxos.map((v) => [`${v.txid}:${v.vout}`, v]));
17114
17209
  for (const input of inputs) {
17115
- if (chunkCJN4CUEU_cjs.isVirtualCoin(input)) {
17210
+ if (chunkDAYCCIRO_cjs.isVirtualCoin(input)) {
17116
17211
  const outpoint = `${input.txid}:${input.vout}`;
17117
17212
  const vtxo = annotatedByKey.get(outpoint);
17118
17213
  if (!vtxo) {
@@ -17124,13 +17219,13 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
17124
17219
  const settledFacts = { ...vtxo, isSpent: true };
17125
17220
  spentVtxos.push({
17126
17221
  ...settledFacts,
17127
- virtualStatus: chunkCJN4CUEU_cjs.toVirtualStatus(settledFacts),
17222
+ virtualStatus: chunkDAYCCIRO_cjs.toVirtualStatus(settledFacts),
17128
17223
  settledBy: commitmentTxid
17129
17224
  });
17130
17225
  } else {
17131
17226
  let sourceAddress;
17132
17227
  try {
17133
- sourceAddress = chunkCJN4CUEU_cjs.VtxoScript.decode(input.tapTree).onchainAddress(
17228
+ sourceAddress = chunkDAYCCIRO_cjs.VtxoScript.decode(input.tapTree).onchainAddress(
17134
17229
  this.network
17135
17230
  );
17136
17231
  } catch {
@@ -17188,9 +17283,9 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
17188
17283
  }
17189
17284
  };
17190
17285
  function selectVirtualCoins(coins, targetAmount) {
17191
- const sortedCoins = coins.map(chunkCJN4CUEU_cjs.normalizeVtxo).sort((a, b) => {
17192
- const expiryA = chunkCJN4CUEU_cjs.toBatchExpiry(a) || Number.MAX_SAFE_INTEGER;
17193
- const expiryB = chunkCJN4CUEU_cjs.toBatchExpiry(b) || Number.MAX_SAFE_INTEGER;
17286
+ const sortedCoins = coins.map(chunkDAYCCIRO_cjs.normalizeVtxo).sort((a, b) => {
17287
+ const expiryA = chunkDAYCCIRO_cjs.toBatchExpiry(a) || Number.MAX_SAFE_INTEGER;
17288
+ const expiryB = chunkDAYCCIRO_cjs.toBatchExpiry(b) || Number.MAX_SAFE_INTEGER;
17194
17289
  if (expiryA !== expiryB) {
17195
17290
  return expiryA - expiryB;
17196
17291
  }
@@ -17559,7 +17654,7 @@ var MessageBus = class {
17559
17654
  this.initialized = true;
17560
17655
  }
17561
17656
  async buildServices(config) {
17562
- const arkProvider = new chunkCJN4CUEU_cjs.RestArkProvider(config.arkServer.url);
17657
+ const arkProvider = new chunkDAYCCIRO_cjs.RestArkProvider(config.arkServer.url);
17563
17658
  const storage = {
17564
17659
  walletRepository: this.walletRepository,
17565
17660
  contractRepository: this.contractRepository,
@@ -17913,7 +18008,7 @@ var offboardNetworkNames = [
17913
18008
  function offboardDestinationScript(destinationAddress) {
17914
18009
  for (const networkName of offboardNetworkNames) {
17915
18010
  try {
17916
- const network = chunkCJN4CUEU_cjs.networks[networkName];
18011
+ const network = chunkDAYCCIRO_cjs.networks[networkName];
17917
18012
  const addr = btcSigner.Address(network).decode(destinationAddress);
17918
18013
  return btcSigner.OutScript.encode(addr);
17919
18014
  } catch {
@@ -17949,7 +18044,7 @@ function filterOffboardInputs(vtxos, feeInfo, named) {
17949
18044
  const inputs = [];
17950
18045
  let subtotal = 0n;
17951
18046
  for (const vtxo of vtxos) {
17952
- const inputFee = estimator.evalOffchainInput(chunkCJN4CUEU_cjs.toOffchainInputFeeParams(vtxo));
18047
+ const inputFee = estimator.evalOffchainInput(chunkDAYCCIRO_cjs.toOffchainInputFeeParams(vtxo));
17953
18048
  if (inputFee.satoshis >= vtxo.value) {
17954
18049
  if (named) {
17955
18050
  throw new Error(
@@ -18046,7 +18141,7 @@ var Ramps = class {
18046
18141
  }
18047
18142
  amount = amount ?? totalAmount;
18048
18143
  const offchainAddress = await this.wallet.getAddress();
18049
- const offchainAddr = chunkCJN4CUEU_cjs.ArkAddress.decode(offchainAddress);
18144
+ const offchainAddr = chunkDAYCCIRO_cjs.ArkAddress.decode(offchainAddress);
18050
18145
  const offchainScript = base.hex.encode(offchainAddr.pkScript);
18051
18146
  const outputFee = estimator.evalOffchainOutput({
18052
18147
  amount,
@@ -18175,7 +18270,7 @@ var Ramps = class {
18175
18270
  async fundChange(left, estimator) {
18176
18271
  if (left <= 0n) return { change: 0n };
18177
18272
  const changeAddress = await this.wallet.getAddress();
18178
- const changeScript = base.hex.encode(chunkCJN4CUEU_cjs.ArkAddress.decode(changeAddress).pkScript);
18273
+ const changeScript = base.hex.encode(chunkDAYCCIRO_cjs.ArkAddress.decode(changeAddress).pkScript);
18179
18274
  const { change } = changeAfterOutputFee(
18180
18275
  left,
18181
18276
  (amount) => BigInt(estimator.evalOffchainOutput({ amount, script: changeScript }).satoshis)
@@ -19008,7 +19103,7 @@ var WalletMessageHandler = class {
19008
19103
  // Wallet methods
19009
19104
  async handleInitWallet({ payload }) {
19010
19105
  const { arkServerUrl } = payload;
19011
- this.indexerProvider = new chunkH62OOAS4_cjs.RestIndexerProvider(arkServerUrl);
19106
+ this.indexerProvider = new chunkSJPPBR2V_cjs.RestIndexerProvider(arkServerUrl);
19012
19107
  await this.onWalletInitialized();
19013
19108
  }
19014
19109
  /**
@@ -19022,7 +19117,8 @@ var WalletMessageHandler = class {
19022
19117
  async handleGetBalance() {
19023
19118
  const [boardingUtxos, { snapshot, vtxos: allVtxos }] = await Promise.all([
19024
19119
  this.getAllBoardingUtxos(),
19025
- this.repoSnapshot()
19120
+ // The bucketer drops every spent coin and the gate reads contracts only.
19121
+ this.repoSnapshot({ unspentOnly: true })
19026
19122
  ]);
19027
19123
  const pendingOutpoints = this.readonlyWallet?.pendingRecoveryOutpointsIn(snapshot) ?? /* @__PURE__ */ new Set();
19028
19124
  let confirmed = 0;
@@ -19289,15 +19385,15 @@ var WalletMessageHandler = class {
19289
19385
  if (!this.readonlyWallet) {
19290
19386
  throw new WalletNotInitializedError();
19291
19387
  }
19292
- const allVtxos = await this.getVtxosFromRepo();
19293
- const dustAmount = this.readonlyWallet.dustAmount;
19294
19388
  const withUnrolled = message.payload.filter?.withUnrolled ?? false;
19389
+ const allVtxos = await this.getVtxosFromRepo({ unspentOnly: !withUnrolled });
19390
+ const dustAmount = this.readonlyWallet.dustAmount;
19295
19391
  const includeRecoverable = message.payload.filter?.withRecoverable ?? false;
19296
19392
  return allVtxos.filter((v) => {
19297
19393
  if (v.isUnrolled) {
19298
19394
  return withUnrolled;
19299
19395
  }
19300
- if (chunkCJN4CUEU_cjs.isVtxoSpent(v)) {
19396
+ if (chunkDAYCCIRO_cjs.isVtxoSpent(v)) {
19301
19397
  return false;
19302
19398
  }
19303
19399
  if (includeRecoverable) {
@@ -19306,10 +19402,10 @@ var WalletMessageHandler = class {
19306
19402
  if (dustAmount != null && isSubdust(v, dustAmount)) {
19307
19403
  return false;
19308
19404
  }
19309
- if (chunkCJN4CUEU_cjs.isRecoverable(v)) {
19405
+ if (chunkDAYCCIRO_cjs.isRecoverable(v)) {
19310
19406
  return false;
19311
19407
  }
19312
- if (chunkCJN4CUEU_cjs.isExpired(v)) {
19408
+ if (chunkDAYCCIRO_cjs.isExpired(v)) {
19313
19409
  return false;
19314
19410
  }
19315
19411
  return true;
@@ -19341,8 +19437,8 @@ var WalletMessageHandler = class {
19341
19437
  * Read all virtual outputs from the repository, aggregated across all contract
19342
19438
  * addresses and the wallet's primary address, with deduplication.
19343
19439
  */
19344
- async getVtxosFromRepo() {
19345
- return (await this.repoSnapshot()).vtxos;
19440
+ async getVtxosFromRepo(options) {
19441
+ return (await this.repoSnapshot(options)).vtxos;
19346
19442
  }
19347
19443
  /**
19348
19444
  * The worker's equivalent of `ReadonlyWallet.contractSnapshot`: contracts
@@ -19357,7 +19453,7 @@ var WalletMessageHandler = class {
19357
19453
  * what it knows is closed — so the coins of a just-registered escrowed
19358
19454
  * contract would count as available until the next poll.
19359
19455
  */
19360
- async repoSnapshot() {
19456
+ async repoSnapshot(options) {
19361
19457
  if (!this.walletRepository || !this.readonlyWallet) return { snapshot: [], vtxos: [] };
19362
19458
  const seen = /* @__PURE__ */ new Set();
19363
19459
  const allVtxos = [];
@@ -19379,7 +19475,9 @@ var WalletMessageHandler = class {
19379
19475
  for (const contract of contracts) {
19380
19476
  snapshot.push({
19381
19477
  contract,
19382
- vtxos: addVtxos(await getVtxosForContract(this.walletRepository, contract))
19478
+ vtxos: addVtxos(
19479
+ await getVtxosForContract(this.walletRepository, contract, options)
19480
+ )
19383
19481
  });
19384
19482
  }
19385
19483
  const walletAddress = await this.readonlyWallet.getAddress();
@@ -19392,10 +19490,11 @@ var WalletMessageHandler = class {
19392
19490
  );
19393
19491
  }
19394
19492
  addVtxos(
19395
- await getVtxosForContract(this.walletRepository, {
19396
- script: walletScript,
19397
- address: walletAddress
19398
- })
19493
+ await getVtxosForContract(
19494
+ this.walletRepository,
19495
+ { script: walletScript, address: walletAddress },
19496
+ options
19497
+ )
19399
19498
  );
19400
19499
  return { snapshot, vtxos: allVtxos };
19401
19500
  }
@@ -19417,7 +19516,7 @@ var WalletMessageHandler = class {
19417
19516
  this.readonlyWallet.getBoardingTxs()
19418
19517
  ]);
19419
19518
  const indexerProvider = this.indexerProvider;
19420
- const resolveTxCreatedAt = indexerProvider ? (txids) => chunkCJN4CUEU_cjs.fetchVtxoCreatedAtByTxid(indexerProvider, txids) : void 0;
19519
+ const resolveTxCreatedAt = indexerProvider ? (txids) => chunkDAYCCIRO_cjs.fetchVtxoCreatedAtByTxid(indexerProvider, txids) : void 0;
19421
19520
  return buildTransactionHistory(
19422
19521
  vtxos,
19423
19522
  boardingTxs,
@@ -20125,7 +20224,7 @@ var ServiceWorkerReadonlyWallet = class _ServiceWorkerReadonlyWallet {
20125
20224
  };
20126
20225
  try {
20127
20226
  const response = await this.sendMessage(message);
20128
- return response.payload.vtxos.map(chunkCJN4CUEU_cjs.normalizeVtxo);
20227
+ return response.payload.vtxos.map(chunkDAYCCIRO_cjs.normalizeVtxo);
20129
20228
  } catch (error) {
20130
20229
  throw new Error(`Failed to get vtxos: ${error}`);
20131
20230
  }
@@ -20156,7 +20255,7 @@ var ServiceWorkerReadonlyWallet = class _ServiceWorkerReadonlyWallet {
20156
20255
  "Service worker does not support the requested contract scope or freshness check"
20157
20256
  );
20158
20257
  }
20159
- return payload.vtxos.map(chunkCJN4CUEU_cjs.normalizeVtxo);
20258
+ return payload.vtxos.map(chunkDAYCCIRO_cjs.normalizeVtxo);
20160
20259
  } catch (error) {
20161
20260
  throw new Error(`Failed to get spendable vtxos: ${error}`);
20162
20261
  }
@@ -20332,7 +20431,7 @@ var ServiceWorkerReadonlyWallet = class _ServiceWorkerReadonlyWallet {
20332
20431
  };
20333
20432
  try {
20334
20433
  const response = await sendContractMessage(message);
20335
- return response.payload.vtxos.map(chunkCJN4CUEU_cjs.normalizeVtxo);
20434
+ return response.payload.vtxos.map(chunkDAYCCIRO_cjs.normalizeVtxo);
20336
20435
  } catch (e) {
20337
20436
  throw new Error("Failed to annotate vtxos");
20338
20437
  }
@@ -20944,7 +21043,7 @@ var ServiceWorkerWallet = class _ServiceWorkerWallet extends ServiceWorkerReadon
20944
21043
  };
20945
21044
  try {
20946
21045
  const response = await wallet.sendMessage(message);
20947
- return response.payload.vtxos.map(chunkCJN4CUEU_cjs.normalizeVtxo);
21046
+ return response.payload.vtxos.map(chunkDAYCCIRO_cjs.normalizeVtxo);
20948
21047
  } catch (e) {
20949
21048
  throw new Error(`Failed to get expiring vtxos: ${e}`);
20950
21049
  }
@@ -21056,12 +21155,12 @@ var OnchainWallet = class _OnchainWallet {
21056
21155
  * @returns Configured onchain wallet
21057
21156
  * @throws Error if the configured identity cannot produce a valid x-only public key
21058
21157
  */
21059
- static async create(identity, networkName = chunkCJN4CUEU_cjs.DEFAULT_NETWORK_NAME, provider) {
21158
+ static async create(identity, networkName = chunkDAYCCIRO_cjs.DEFAULT_NETWORK_NAME, provider) {
21060
21159
  const pubkey = await identity.xOnlyPublicKey();
21061
21160
  if (!pubkey) {
21062
21161
  throw new Error("Invalid configured public key");
21063
21162
  }
21064
- const network = chunkCJN4CUEU_cjs.getNetwork(networkName);
21163
+ const network = chunkDAYCCIRO_cjs.getNetwork(networkName);
21065
21164
  const onchainProvider = provider || new EsploraProvider(ESPLORA_URL[networkName]);
21066
21165
  const onchainP2TR = btcSigner.p2tr(pubkey, void 0, network);
21067
21166
  return new _OnchainWallet(identity, network, onchainP2TR, onchainProvider);
@@ -21167,7 +21266,7 @@ var OnchainWallet = class _OnchainWallet {
21167
21266
  if (!inputs) {
21168
21267
  throw new Error("Fee estimation failed");
21169
21268
  }
21170
- let tx = new chunkCJN4CUEU_cjs.Transaction();
21269
+ let tx = new chunkDAYCCIRO_cjs.Transaction();
21171
21270
  for (const input of inputs) {
21172
21271
  tx.addInput({
21173
21272
  txid: input.txid,
@@ -21225,7 +21324,7 @@ var OnchainWallet = class _OnchainWallet {
21225
21324
  * @throws If the parent has no anchor, or funding cannot be selected/signed
21226
21325
  */
21227
21326
  async bumpAnchor(parentHex, feeRate) {
21228
- const parent = chunkCJN4CUEU_cjs.Transaction.fromRaw(base.hex.decode(parentHex));
21327
+ const parent = chunkDAYCCIRO_cjs.Transaction.fromRaw(base.hex.decode(parentHex));
21229
21328
  const coins = (await this.getCoins()).filter((c) => c.status.confirmed);
21230
21329
  const child = await this.buildBumpPackage(parent, feeRate, coins);
21231
21330
  return [parent.hex, child.hex];
@@ -22132,7 +22231,7 @@ async function resolvePrevTxs(txids, source, onchain) {
22132
22231
  try {
22133
22232
  const { txs } = await source.getVirtualTxs(wanted);
22134
22233
  for (const psbt of txs) {
22135
- const tx = chunkCJN4CUEU_cjs.Transaction.fromPSBT(base.base64.decode(psbt));
22234
+ const tx = chunkDAYCCIRO_cjs.Transaction.fromPSBT(base.base64.decode(psbt));
22136
22235
  resolved.set(tx.id, tx.toBytes());
22137
22236
  }
22138
22237
  } catch (err) {
@@ -22165,7 +22264,7 @@ async function resolvePrevTxs(txids, source, onchain) {
22165
22264
  async function attachPrevArkTxs(tx, txids, source, onchain) {
22166
22265
  const pending = [];
22167
22266
  for (let i = 0; i < tx.inputsLength; i++) {
22168
- if (chunkCJN4CUEU_cjs.getArkPsbtFields(tx, i, chunkCJN4CUEU_cjs.PrevArkTxField).length === 0) pending.push(i);
22267
+ if (chunkDAYCCIRO_cjs.getArkPsbtFields(tx, i, chunkDAYCCIRO_cjs.PrevArkTxField).length === 0) pending.push(i);
22169
22268
  }
22170
22269
  if (pending.length === 0) return;
22171
22270
  const resolved = await resolvePrevTxs(
@@ -22174,13 +22273,13 @@ async function attachPrevArkTxs(tx, txids, source, onchain) {
22174
22273
  onchain
22175
22274
  );
22176
22275
  for (const i of pending) {
22177
- chunkCJN4CUEU_cjs.setArkPsbtField(tx, i, chunkCJN4CUEU_cjs.PrevArkTxField, resolved.get(txidAt(txids, i)));
22276
+ chunkDAYCCIRO_cjs.setArkPsbtField(tx, i, chunkDAYCCIRO_cjs.PrevArkTxField, resolved.get(txidAt(txids, i)));
22178
22277
  }
22179
22278
  }
22180
22279
  async function attachPrevoutTxs(tx, source) {
22181
22280
  const pending = [];
22182
22281
  for (let i = 0; i < tx.inputsLength; i++) {
22183
- if (chunkCJN4CUEU_cjs.getArkPsbtFields(tx, i, chunkCJN4CUEU_cjs.PrevoutTxField).length > 0) continue;
22282
+ if (chunkDAYCCIRO_cjs.getArkPsbtFields(tx, i, chunkDAYCCIRO_cjs.PrevoutTxField).length > 0) continue;
22184
22283
  const input = tx.getInput(i);
22185
22284
  if (!input?.txid) throw new PrevTxUnavailableError(`input ${i} has no outpoint`);
22186
22285
  pending.push({ index: i, txid: base.hex.encode(input.txid) });
@@ -22191,7 +22290,7 @@ async function attachPrevoutTxs(tx, source) {
22191
22290
  resolved.set(txid, await source.getRawTransaction(txid));
22192
22291
  }
22193
22292
  for (const { index, txid } of pending) {
22194
- chunkCJN4CUEU_cjs.setArkPsbtField(tx, index, chunkCJN4CUEU_cjs.PrevoutTxField, resolved.get(txid));
22293
+ chunkDAYCCIRO_cjs.setArkPsbtField(tx, index, chunkDAYCCIRO_cjs.PrevoutTxField, resolved.get(txid));
22195
22294
  }
22196
22295
  }
22197
22296
  async function withPrevTxs(coins, source, onchain) {
@@ -22217,7 +22316,7 @@ exports.BIP322 = void 0;
22217
22316
  async function sign2(message, identity, network) {
22218
22317
  const xOnlyPubKey = await identity.xOnlyPublicKey();
22219
22318
  const payment = btcSigner.p2tr(xOnlyPubKey, void 0, network);
22220
- const toSpend = chunkCJN4CUEU_cjs.craftToSpendTx(message, payment.script, TAG_BIP322);
22319
+ const toSpend = chunkDAYCCIRO_cjs.craftToSpendTx(message, payment.script, TAG_BIP322);
22221
22320
  const toSign = craftBIP322ToSignP2TR(toSpend, payment.script, xOnlyPubKey);
22222
22321
  const signed = await identity.sign(toSign, [0]);
22223
22322
  signed.finalizeIdx(0);
@@ -22275,8 +22374,8 @@ function verifyP2TR(message, witnessItems, pkScript, pubkey) {
22275
22374
  if (sighashType !== btcSigner.SigHash.DEFAULT && sighashType !== btcSigner.SigHash.ALL) {
22276
22375
  return false;
22277
22376
  }
22278
- const toSpend = chunkCJN4CUEU_cjs.craftToSpendTx(message, pkScript, TAG_BIP322);
22279
- const toSign = craftBIP322ToSignP2TR(toSpend, pkScript, pubkey);
22377
+ const toSpend = chunkDAYCCIRO_cjs.craftToSpendTx(message, pkScript, TAG_BIP322);
22378
+ const toSign = craftBIP322ToSignP2TR(toSpend, pkScript);
22280
22379
  const sighash = toSign.preimageWitnessV1(0, [pkScript], sighashType, [0n]);
22281
22380
  const rawSig = sig.length === 65 ? sig.subarray(0, 64) : sig;
22282
22381
  return secp256k1_js.schnorr.verify(rawSig, sighash, pubkey);
@@ -22296,7 +22395,7 @@ function verifyP2WPKH(message, witnessItems, pkScript, addressHash) {
22296
22395
  }
22297
22396
  const sighashType = sigWithHash[sigWithHash.length - 1];
22298
22397
  const derSig = sigWithHash.subarray(0, sigWithHash.length - 1);
22299
- const toSpend = chunkCJN4CUEU_cjs.craftToSpendTx(message, pkScript, TAG_BIP322);
22398
+ const toSpend = chunkDAYCCIRO_cjs.craftToSpendTx(message, pkScript, TAG_BIP322);
22300
22399
  const toSign = craftBIP322ToSignSimple(toSpend, pkScript);
22301
22400
  const scriptCode = btcSigner.OutScript.encode({ type: "pkh", hash: addressHash });
22302
22401
  const sighash = toSign.preimageWitnessV0(0, scriptCode, sighashType, 0n);
@@ -22349,7 +22448,7 @@ function encodeCompactSize(n) {
22349
22448
  return buf;
22350
22449
  }
22351
22450
  function craftBIP322ToSignP2TR(toSpend, pkScript, tapInternalKey) {
22352
- const tx = new chunkCJN4CUEU_cjs.Transaction({ version: 0 });
22451
+ const tx = new chunkDAYCCIRO_cjs.Transaction({ version: 0 });
22353
22452
  tx.addInput({
22354
22453
  txid: toSpend.id,
22355
22454
  index: 0,
@@ -22363,12 +22462,12 @@ function craftBIP322ToSignP2TR(toSpend, pkScript, tapInternalKey) {
22363
22462
  });
22364
22463
  tx.addOutput({
22365
22464
  amount: 0n,
22366
- script: chunkCJN4CUEU_cjs.OP_RETURN_EMPTY_PKSCRIPT
22465
+ script: chunkDAYCCIRO_cjs.OP_RETURN_EMPTY_PKSCRIPT
22367
22466
  });
22368
22467
  return tx;
22369
22468
  }
22370
22469
  function craftBIP322ToSignSimple(toSpend, pkScript) {
22371
- const tx = new chunkCJN4CUEU_cjs.Transaction({ version: 0 });
22470
+ const tx = new chunkDAYCCIRO_cjs.Transaction({ version: 0 });
22372
22471
  tx.addInput({
22373
22472
  txid: toSpend.id,
22374
22473
  index: 0,
@@ -22380,7 +22479,7 @@ function craftBIP322ToSignSimple(toSpend, pkScript) {
22380
22479
  });
22381
22480
  tx.addOutput({
22382
22481
  amount: 0n,
22383
- script: chunkCJN4CUEU_cjs.OP_RETURN_EMPTY_PKSCRIPT
22482
+ script: chunkDAYCCIRO_cjs.OP_RETURN_EMPTY_PKSCRIPT
22384
22483
  });
22385
22484
  return tx;
22386
22485
  }
@@ -22393,7 +22492,7 @@ var RestEmulatorProvider = class {
22393
22492
  serverUrl;
22394
22493
  async getInfo() {
22395
22494
  const url = `${this.serverUrl}/v1/info`;
22396
- const response = await chunkCJN4CUEU_cjs.baseFetch(url);
22495
+ const response = await chunkDAYCCIRO_cjs.baseFetch(url);
22397
22496
  if (!response.ok) {
22398
22497
  const errorText2 = await response.text();
22399
22498
  throw new Error(`Failed to get emulator info: ${errorText2}`);
@@ -22511,7 +22610,7 @@ var RestEmulatorProvider = class {
22511
22610
  }
22512
22611
  };
22513
22612
  function finalizeVirtualTx(type, psbtBase64) {
22514
- const tx = chunkCJN4CUEU_cjs.Transaction.fromPSBT(base.base64.decode(psbtBase64));
22613
+ const tx = chunkDAYCCIRO_cjs.Transaction.fromPSBT(base.base64.decode(psbtBase64));
22515
22614
  if (type === "INDEXER_CHAINED_TX_TYPE_TREE" /* TREE */) {
22516
22615
  const input = tx.getInput(0);
22517
22616
  if (!input) {
@@ -22538,14 +22637,14 @@ var ExitPathError = class extends Error {
22538
22637
  reason;
22539
22638
  };
22540
22639
  function delayWeight(sequence) {
22541
- const t = chunkCJN4CUEU_cjs.sequenceToTimelock(sequence);
22640
+ const t = chunkDAYCCIRO_cjs.sequenceToTimelock(sequence);
22542
22641
  return t.type === "blocks" ? Number(t.value) : Number(t.value) / 600;
22543
22642
  }
22544
22643
  async function resolveUnilateralPath(params) {
22545
22644
  const { vtxo, scriptHex, contractRepository } = params;
22546
22645
  const contract = contractRepository ? (await contractRepository.getContracts({ script: scriptHex }))[0] : void 0;
22547
22646
  if (contract) {
22548
- const handler = chunkLUWSY2QO_cjs.contractHandlers.get(contract.type);
22647
+ const handler = chunkFUW3OM5X_cjs.contractHandlers.get(contract.type);
22549
22648
  if (!handler) {
22550
22649
  throw new ExitPathError(
22551
22650
  "no-handler",
@@ -22568,12 +22667,12 @@ async function resolveUnilateralPath(params) {
22568
22667
  paths.sort((a, b) => delayWeight(a.sequence) - delayWeight(b.sequence));
22569
22668
  return { selection: paths[0], label: `${contract.type}:unilateral` };
22570
22669
  }
22571
- const decoded = chunkCJN4CUEU_cjs.VtxoScript.decode(vtxo.tapTree);
22670
+ const decoded = chunkDAYCCIRO_cjs.VtxoScript.decode(vtxo.tapTree);
22572
22671
  let best;
22573
22672
  for (const exit of decoded.exitPaths()) {
22574
22673
  const leaf = decoded.findLeaf(base.hex.encode(exit.script));
22575
22674
  if (!leaf) continue;
22576
- const sequence = chunkCJN4CUEU_cjs.timelockToSequence(exit.params.timelock);
22675
+ const sequence = chunkDAYCCIRO_cjs.timelockToSequence(exit.params.timelock);
22577
22676
  const weight = delayWeight(sequence);
22578
22677
  if (!best || weight < best.weight) {
22579
22678
  best = { selection: { leaf, sequence }, weight };
@@ -22793,7 +22892,7 @@ async function prepareUnrollTransaction(wallet, vtxoTxIds, outputAddress) {
22793
22892
  let totalAmount = 0n;
22794
22893
  const txWeightEstimator = TxWeightEstimator.create();
22795
22894
  for (const vtxo of vtxos) {
22796
- if (!chunkCJN4CUEU_cjs.canSweepOnchain(vtxo)) {
22895
+ if (!chunkDAYCCIRO_cjs.canSweepOnchain(vtxo)) {
22797
22896
  throw new Error(
22798
22897
  `Vtxo ${vtxo.txid}:${vtxo.vout} cannot be swept onchain: it is not fully unrolled (use unroll first), or its exit output was already spent`
22799
22898
  );
@@ -22804,14 +22903,14 @@ async function prepareUnrollTransaction(wallet, vtxoTxIds, outputAddress) {
22804
22903
  }
22805
22904
  const resolved = await resolveUnilateralPath({
22806
22905
  vtxo,
22807
- scriptHex: base.hex.encode(chunkCJN4CUEU_cjs.VtxoScript.decode(vtxo.tapTree).pkScript),
22906
+ scriptHex: base.hex.encode(chunkDAYCCIRO_cjs.VtxoScript.decode(vtxo.tapTree).pkScript),
22808
22907
  contractRepository: wallet.contractRepository,
22809
22908
  walletPubKeyHex: base.hex.encode(await wallet.identity.xOnlyPublicKey()),
22810
22909
  currentTime: Date.now()
22811
22910
  });
22812
22911
  const spendingLeaf = resolved.selection.leaf;
22813
22912
  const sequence = resolved.selection.sequence;
22814
- const timelock = chunkCJN4CUEU_cjs.sequenceToTimelock(sequence);
22913
+ const timelock = chunkDAYCCIRO_cjs.sequenceToTimelock(sequence);
22815
22914
  const elapsed = timelock.type === "blocks" ? chainTip.height >= txStatus.blockHeight + Number(timelock.value) : chainTip.time >= txStatus.blockTime + Number(timelock.value);
22816
22915
  if (!elapsed) {
22817
22916
  throw new Error(`no available exit path found for vtxo ${vtxo.txid}:${vtxo.vout}`);
@@ -22824,7 +22923,7 @@ async function prepareUnrollTransaction(wallet, vtxoTxIds, outputAddress) {
22824
22923
  sequence,
22825
22924
  witnessUtxo: {
22826
22925
  amount: BigInt(vtxo.value),
22827
- script: chunkCJN4CUEU_cjs.VtxoScript.decode(vtxo.tapTree).pkScript
22926
+ script: chunkDAYCCIRO_cjs.VtxoScript.decode(vtxo.tapTree).pkScript
22828
22927
  },
22829
22928
  sighashType: btcSigner.SigHash.DEFAULT
22830
22929
  });
@@ -22834,7 +22933,7 @@ async function prepareUnrollTransaction(wallet, vtxoTxIds, outputAddress) {
22834
22933
  btcSigner.TaprootControlBlock.encode(spendingLeaf[0]).length
22835
22934
  );
22836
22935
  }
22837
- const tx = new chunkCJN4CUEU_cjs.Transaction({ version: 2 });
22936
+ const tx = new chunkDAYCCIRO_cjs.Transaction({ version: 2 });
22838
22937
  for (const input of inputs) {
22839
22938
  tx.addInput(input);
22840
22939
  }
@@ -22917,7 +23016,7 @@ async function buildSignedSweep(params) {
22917
23016
  `uneconomic vtxo ${vtxo.txid}:${vtxo.vout}: value ${vtxo.value} - fee ${fee} < dust`
22918
23017
  );
22919
23018
  }
22920
- const tx = new chunkCJN4CUEU_cjs.Transaction({ version: 2 });
23019
+ const tx = new chunkDAYCCIRO_cjs.Transaction({ version: 2 });
22921
23020
  tx.addInput({
22922
23021
  txid: vtxo.txid,
22923
23022
  index: vtxo.vout,
@@ -22942,7 +23041,7 @@ async function buildSignedSweep(params) {
22942
23041
  finalScriptWitness: [
22943
23042
  tapScriptSig[0][1],
22944
23043
  ...path.extraWitness,
22945
- chunkCJN4CUEU_cjs.scriptFromTapLeafScript(path.leaf),
23044
+ chunkDAYCCIRO_cjs.scriptFromTapLeafScript(path.leaf),
22946
23045
  btcSigner.TaprootControlBlock.encode(controlBlock)
22947
23046
  ]
22948
23047
  });
@@ -22972,7 +23071,7 @@ async function resolveFeeRate(opts) {
22972
23071
  }
22973
23072
  async function selectExitVtxos(opts) {
22974
23073
  if (!opts.vtxos) return opts.wallet.getVtxos();
22975
- const res = await chunkCJN4CUEU_cjs.getNormalizedVtxos(opts.wallet.indexerProvider, { outpoints: opts.vtxos });
23074
+ const res = await chunkDAYCCIRO_cjs.getNormalizedVtxos(opts.wallet.indexerProvider, { outpoints: opts.vtxos });
22976
23075
  const tapTrees = /* @__PURE__ */ new Map();
22977
23076
  const out = [];
22978
23077
  for (const vtxo of res.vtxos) {
@@ -22987,7 +23086,7 @@ async function selectExitVtxos(opts) {
22987
23086
  `no contract registered for vtxo script ${vtxo.script} \u2014 register the contract before exiting`
22988
23087
  );
22989
23088
  }
22990
- const handler = chunkLUWSY2QO_cjs.contractHandlers.get(contract.type);
23089
+ const handler = chunkFUW3OM5X_cjs.contractHandlers.get(contract.type);
22991
23090
  if (!handler) {
22992
23091
  throw new Error(`no contract handler registered for type '${contract.type}'`);
22993
23092
  }
@@ -23017,7 +23116,7 @@ async function computeExitLayout(opts, feeRate) {
23017
23116
  if (pendingNodes.length > 0) {
23018
23117
  const txs = await resolver.getVirtualTxs(pendingNodes.map((n) => n.txid));
23019
23118
  for (const psbt of txs) {
23020
- psbts.set(chunkCJN4CUEU_cjs.Transaction.fromPSBT(base.base64.decode(psbt)).id, psbt);
23119
+ psbts.set(chunkDAYCCIRO_cjs.Transaction.fromPSBT(base.base64.decode(psbt)).id, psbt);
23021
23120
  }
23022
23121
  }
23023
23122
  const childVsize = Number(
@@ -23053,7 +23152,7 @@ async function computeExitLayout(opts, feeRate) {
23053
23152
  try {
23054
23153
  const resolved = await resolveUnilateralPath({
23055
23154
  vtxo,
23056
- scriptHex: base.hex.encode(chunkCJN4CUEU_cjs.VtxoScript.decode(vtxo.tapTree).pkScript),
23155
+ scriptHex: base.hex.encode(chunkDAYCCIRO_cjs.VtxoScript.decode(vtxo.tapTree).pkScript),
23057
23156
  contractRepository: wallet.contractRepository,
23058
23157
  walletPubKeyHex,
23059
23158
  currentTime: Date.now()
@@ -23072,7 +23171,7 @@ async function computeExitLayout(opts, feeRate) {
23072
23171
  });
23073
23172
  continue;
23074
23173
  }
23075
- const t = chunkCJN4CUEU_cjs.sequenceToTimelock(resolved.selection.sequence);
23174
+ const t = chunkDAYCCIRO_cjs.sequenceToTimelock(resolved.selection.sequence);
23076
23175
  const delay = { type: t.type, value: Number(t.value) };
23077
23176
  infos.push({ outpoint, value: vtxo.value, sweepFee, path: resolved.label, delay });
23078
23177
  sweeps.push({ vtxo, resolved, sweepFee, delay });
@@ -23473,7 +23572,7 @@ async function prepare(opts) {
23473
23572
  txid: sweep.vtxo.txid,
23474
23573
  vout: sweep.vtxo.vout,
23475
23574
  value: sweep.vtxo.value,
23476
- pkScript: chunkCJN4CUEU_cjs.VtxoScript.decode(sweep.vtxo.tapTree).pkScript
23575
+ pkScript: chunkDAYCCIRO_cjs.VtxoScript.decode(sweep.vtxo.tapTree).pkScript
23477
23576
  },
23478
23577
  path: sweep.resolved.selection,
23479
23578
  outputAddress: opts.sweepAddress,
@@ -23562,7 +23661,7 @@ async function prepare(opts) {
23562
23661
  if (newFee <= splitterFee) break;
23563
23662
  splitterFee = newFee;
23564
23663
  }
23565
- const splitter = new chunkCJN4CUEU_cjs.Transaction({ version: 2 });
23664
+ const splitter = new chunkDAYCCIRO_cjs.Transaction({ version: 2 });
23566
23665
  for (const coin of selected.inputs) {
23567
23666
  splitter.addInput({
23568
23667
  txid: coin.txid,
@@ -23706,43 +23805,43 @@ var UnilateralExit = {
23706
23805
  // src/arkade/index.ts
23707
23806
  var arkade_exports = {};
23708
23807
  chunk5BLDMQED_cjs.__export(arkade_exports, {
23709
- ARKADE_OP: () => chunkLUWSY2QO_cjs.ARKADE_OP,
23710
- ARKADE_OPCODES: () => chunkLUWSY2QO_cjs.ARKADE_OPCODES,
23711
- ARKADE_OPCODE_NAMES: () => chunkLUWSY2QO_cjs.ARKADE_OPCODE_NAMES,
23712
- ARKADE_OPCODE_VALUES: () => chunkLUWSY2QO_cjs.ARKADE_OPCODE_VALUES,
23713
- ARKADE_OPS: () => chunkLUWSY2QO_cjs.ARKADE_OPS,
23808
+ ARKADE_OP: () => chunkFUW3OM5X_cjs.ARKADE_OP,
23809
+ ARKADE_OPCODES: () => chunkFUW3OM5X_cjs.ARKADE_OPCODES,
23810
+ ARKADE_OPCODE_NAMES: () => chunkFUW3OM5X_cjs.ARKADE_OPCODE_NAMES,
23811
+ ARKADE_OPCODE_VALUES: () => chunkFUW3OM5X_cjs.ARKADE_OPCODE_VALUES,
23812
+ ARKADE_OPS: () => chunkFUW3OM5X_cjs.ARKADE_OPS,
23714
23813
  Arkade: () => Arkade,
23715
23814
  ArkadeContract: () => ArkadeContract,
23716
- ArkadeProgramScript: () => chunkLUWSY2QO_cjs.ArkadeProgramScript,
23717
- ArkadeScript: () => chunkLUWSY2QO_cjs.ArkadeScript,
23815
+ ArkadeProgramScript: () => chunkFUW3OM5X_cjs.ArkadeProgramScript,
23816
+ ArkadeScript: () => chunkFUW3OM5X_cjs.ArkadeScript,
23718
23817
  ArkadeTransactionBuilder: () => ArkadeTransactionBuilder,
23719
- BigNum: () => chunkLUWSY2QO_cjs.bignum_exports,
23818
+ BigNum: () => chunkFUW3OM5X_cjs.bignum_exports,
23720
23819
  OP: () => btcSigner.OP,
23721
- OPCODE_NAMES: () => chunkLUWSY2QO_cjs.OPCODE_NAMES,
23722
- OPCODE_VALUES: () => chunkLUWSY2QO_cjs.OPCODE_VALUES,
23723
- SUPPORTED_PROGRAM_VERSION: () => chunkLUWSY2QO_cjs.SUPPORTED_PROGRAM_VERSION,
23820
+ OPCODE_NAMES: () => chunkFUW3OM5X_cjs.OPCODE_NAMES,
23821
+ OPCODE_VALUES: () => chunkFUW3OM5X_cjs.OPCODE_VALUES,
23822
+ SUPPORTED_PROGRAM_VERSION: () => chunkFUW3OM5X_cjs.SUPPORTED_PROGRAM_VERSION,
23724
23823
  Script: () => btcSigner.Script,
23725
- arkadeScriptHash: () => chunkLUWSY2QO_cjs.arkadeScriptHash,
23726
- arkadeWitnessHash: () => chunkLUWSY2QO_cjs.arkadeWitnessHash,
23727
- asmToBytes: () => chunkLUWSY2QO_cjs.asmToBytes,
23728
- bytesToASM: () => chunkLUWSY2QO_cjs.bytesToASM,
23729
- computeArkadeScriptPublicKey: () => chunkLUWSY2QO_cjs.computeArkadeScriptPublicKey,
23824
+ arkadeScriptHash: () => chunkFUW3OM5X_cjs.arkadeScriptHash,
23825
+ arkadeWitnessHash: () => chunkFUW3OM5X_cjs.arkadeWitnessHash,
23826
+ asmToBytes: () => chunkFUW3OM5X_cjs.asmToBytes,
23827
+ bytesToASM: () => chunkFUW3OM5X_cjs.bytesToASM,
23828
+ computeArkadeScriptPublicKey: () => chunkFUW3OM5X_cjs.computeArkadeScriptPublicKey,
23730
23829
  createArkadeBatchHandler: () => createArkadeBatchHandler,
23731
- deserializeArkadeContractParams: () => chunkLUWSY2QO_cjs.deserializeArkadeContractParams,
23732
- fromASM: () => chunkLUWSY2QO_cjs.fromASM,
23733
- getOpcodeName: () => chunkLUWSY2QO_cjs.getOpcodeName,
23734
- getOpcodeValue: () => chunkLUWSY2QO_cjs.getOpcodeValue,
23830
+ deserializeArkadeContractParams: () => chunkFUW3OM5X_cjs.deserializeArkadeContractParams,
23831
+ fromASM: () => chunkFUW3OM5X_cjs.fromASM,
23832
+ getOpcodeName: () => chunkFUW3OM5X_cjs.getOpcodeName,
23833
+ getOpcodeValue: () => chunkFUW3OM5X_cjs.getOpcodeValue,
23735
23834
  isContractArtifact: () => isContractArtifact,
23736
- parseArtifact: () => chunkLUWSY2QO_cjs.parseArtifact,
23835
+ parseArtifact: () => chunkFUW3OM5X_cjs.parseArtifact,
23737
23836
  programFromArtifact: () => programFromArtifact,
23738
- resolveAsm: () => chunkLUWSY2QO_cjs.resolveAsm,
23739
- serializeArkadeContractParams: () => chunkLUWSY2QO_cjs.serializeArkadeContractParams,
23740
- stringifyArtifact: () => chunkLUWSY2QO_cjs.stringifyArtifact,
23741
- toASM: () => chunkLUWSY2QO_cjs.toASM,
23742
- validateProgram: () => chunkLUWSY2QO_cjs.validateProgram,
23743
- witnessRefToBytes: () => chunkLUWSY2QO_cjs.witnessRefToBytes
23837
+ resolveAsm: () => chunkFUW3OM5X_cjs.resolveAsm,
23838
+ serializeArkadeContractParams: () => chunkFUW3OM5X_cjs.serializeArkadeContractParams,
23839
+ stringifyArtifact: () => chunkFUW3OM5X_cjs.stringifyArtifact,
23840
+ toASM: () => chunkFUW3OM5X_cjs.toASM,
23841
+ validateProgram: () => chunkFUW3OM5X_cjs.validateProgram,
23842
+ witnessRefToBytes: () => chunkFUW3OM5X_cjs.witnessRefToBytes
23744
23843
  });
23745
- var isVtxoCoin = (input) => chunkCJN4CUEU_cjs.isVirtualCoin(input);
23844
+ var isVtxoCoin = (input) => chunkDAYCCIRO_cjs.isVirtualCoin(input);
23746
23845
  function createArkadeBatchHandler(intentId, inputs, signer, signedProof, message, session, arkProvider, emulator, network, recipients, batchExpiryPolicy) {
23747
23846
  let batchId;
23748
23847
  let sweepTapTreeRoot;
@@ -23763,23 +23862,23 @@ function createArkadeBatchHandler(intentId, inputs, signer, signedProof, message
23763
23862
  );
23764
23863
  await arkProvider.confirmRegistration(intentId);
23765
23864
  batchId = event.id;
23766
- const sweepTapscript = chunkCJN4CUEU_cjs.CSVMultisigTapscript.encode({
23865
+ const sweepTapscript = chunkDAYCCIRO_cjs.CSVMultisigTapscript.encode({
23767
23866
  timelock,
23768
- pubkeys: [chunkLUWSY2QO_cjs.toXOnly(base.hex.decode(info.forfeitPubkey), "forfeit key")]
23867
+ pubkeys: [chunkFUW3OM5X_cjs.toXOnly(base.hex.decode(info.forfeitPubkey), "forfeit key")]
23769
23868
  }).script;
23770
23869
  sweepTapTreeRoot = payment_js.tapLeafHash(sweepTapscript);
23771
23870
  return { skip: false };
23772
23871
  },
23773
23872
  onTreeSigningStarted: async (event, vtxoTree) => {
23774
23873
  const signerPubKey = await session.getPublicKey();
23775
- const xonlySignerPubKey = chunkLUWSY2QO_cjs.toXOnly(signerPubKey, "signer key");
23874
+ const xonlySignerPubKey = chunkFUW3OM5X_cjs.toXOnly(signerPubKey, "signer key");
23776
23875
  const xOnlyPubkeys = event.cosignersPublicKeys.map(
23777
- (k) => base.hex.encode(chunkLUWSY2QO_cjs.toXOnly(base.hex.decode(k), "cosigner key"))
23876
+ (k) => base.hex.encode(chunkFUW3OM5X_cjs.toXOnly(base.hex.decode(k), "cosigner key"))
23778
23877
  );
23779
23878
  if (!xOnlyPubkeys.includes(base.hex.encode(xonlySignerPubKey))) {
23780
23879
  return { skip: true };
23781
23880
  }
23782
- const commitmentTx = chunkCJN4CUEU_cjs.Transaction.fromPSBT(base.base64.decode(event.unsignedCommitmentTx));
23881
+ const commitmentTx = chunkDAYCCIRO_cjs.Transaction.fromPSBT(base.base64.decode(event.unsignedCommitmentTx));
23783
23882
  validateVtxoTxGraph(vtxoTree, commitmentTx, sweepTapTreeRoot);
23784
23883
  if (recipients && recipients.length > 0) {
23785
23884
  validateBatchRecipients(commitmentTx, vtxoTree.leaves(), recipients, network);
@@ -23817,7 +23916,7 @@ function createArkadeBatchHandler(intentId, inputs, signer, signedProof, message
23817
23916
  if (connectorTree) {
23818
23917
  validateConnectorsTxGraph(event.commitmentTx, connectorTree);
23819
23918
  }
23820
- let commitmentPsbt = chunkCJN4CUEU_cjs.Transaction.fromPSBT(base.base64.decode(event.commitmentTx));
23919
+ let commitmentPsbt = chunkDAYCCIRO_cjs.Transaction.fromPSBT(base.base64.decode(event.commitmentTx));
23821
23920
  assertFinalCommitmentMatchesValidated(
23822
23921
  commitmentPsbt,
23823
23922
  validatedCommitmentTxid,
@@ -23859,7 +23958,7 @@ function createArkadeBatchHandler(intentId, inputs, signer, signedProof, message
23859
23958
  boardingIndices.push(boardingIdx);
23860
23959
  continue;
23861
23960
  }
23862
- if (chunkCJN4CUEU_cjs.isRecoverable(input) || isSubdust(input, info.dust)) {
23961
+ if (!chunkDAYCCIRO_cjs.requiresForfeit(input) || isSubdust(input, info.dust)) {
23863
23962
  continue;
23864
23963
  }
23865
23964
  if (connectorIndex >= connectorLeaves.length) {
@@ -23880,7 +23979,7 @@ function createArkadeBatchHandler(intentId, inputs, signer, signedProof, message
23880
23979
  index: input.vout,
23881
23980
  witnessUtxo: {
23882
23981
  amount: BigInt(input.value),
23883
- script: chunkCJN4CUEU_cjs.VtxoScript.decode(input.tapTree).pkScript
23982
+ script: chunkDAYCCIRO_cjs.VtxoScript.decode(input.tapTree).pkScript
23884
23983
  },
23885
23984
  sighashType: btcSigner.SigHash.DEFAULT,
23886
23985
  tapLeafScript: [input.forfeitTapLeafScript]
@@ -24025,7 +24124,7 @@ function flatten(param, structs, stack = []) {
24025
24124
  function opcodeToken(token) {
24026
24125
  const base = token.slice(3);
24027
24126
  const name = base === "0" || /^([1-9]|1[0-6])$/.test(base) ? token : base;
24028
- if (!Object.hasOwn(chunkLUWSY2QO_cjs.ARKADE_OPS, name)) {
24127
+ if (!Object.hasOwn(chunkFUW3OM5X_cjs.ARKADE_OPS, name)) {
24029
24128
  fail(`opcode '${token}' is not in this SDK's table`);
24030
24129
  }
24031
24130
  return name;
@@ -24070,6 +24169,14 @@ function providedWitness(witness) {
24070
24169
  return !item.injected && item.type !== "signature";
24071
24170
  });
24072
24171
  }
24172
+ function csvTimelock(leafName, operand) {
24173
+ if (typeof operand === "string") return { type: "blocks", value: operand };
24174
+ const timelock = operand >= 0n && operand < 0x80000000n ? chunkDAYCCIRO_cjs.sequenceToTimelock(Number(operand)) : void 0;
24175
+ if (!timelock || BigInt(chunkDAYCCIRO_cjs.timelockToSequence(timelock)) !== operand) {
24176
+ fail(`leaf '${leafName}': CSV literal ${operand} is not a canonical BIP68 sequence`);
24177
+ }
24178
+ return timelock;
24179
+ }
24073
24180
  function parseLeaf(leaf, hasCovenant, instantiations, extras) {
24074
24181
  const asm = leaf.asm;
24075
24182
  let index = 0;
@@ -24084,7 +24191,7 @@ function parseLeaf(leaf, hasCovenant, instantiations, extras) {
24084
24191
  let cltv;
24085
24192
  if (asm.length >= index + 3 && asm[index + 2] === "OP_DROP") {
24086
24193
  const operand = asm[index].startsWith("<") && asm[index].endsWith(">") ? `$${asm[index].slice(1, -1)}` : BigInt(asm[index]);
24087
- if (asm[index + 1] === "OP_CHECKSEQUENCEVERIFY") csv = { type: "blocks", value: operand };
24194
+ if (asm[index + 1] === "OP_CHECKSEQUENCEVERIFY") csv = csvTimelock(leaf.name, operand);
24088
24195
  else if (asm[index + 1] === "OP_CHECKLOCKTIMEVERIFY") cltv = operand;
24089
24196
  else fail(`leaf '${leaf.name}': unexpected timelock opcode ${asm[index + 1]}`);
24090
24197
  index += 3;
@@ -24183,7 +24290,7 @@ function programFromArtifact(artifact) {
24183
24290
  const paramNames = /* @__PURE__ */ new Set();
24184
24291
  for (const param of params) claim(paramNames, param.name, "program parameter");
24185
24292
  return {
24186
- version: chunkLUWSY2QO_cjs.SUPPORTED_PROGRAM_VERSION,
24293
+ version: chunkFUW3OM5X_cjs.SUPPORTED_PROGRAM_VERSION,
24187
24294
  name: artifact.contractName,
24188
24295
  params,
24189
24296
  functions
@@ -24228,16 +24335,16 @@ var Arkade = class _Arkade {
24228
24335
  /** Connect and resolve the server key, checkpoint closure and (if present) the co-signer key. */
24229
24336
  static async connect(opts) {
24230
24337
  const info = await opts.arkade.getInfo();
24231
- const serverKey = chunkLUWSY2QO_cjs.toXOnly(base.hex.decode(info.signerPubkey), "ark signer key");
24232
- const checkpoint = chunkCJN4CUEU_cjs.CSVMultisigTapscript.decode(base.hex.decode(info.checkpointTapscript));
24233
- const network = opts.network ?? (Object.hasOwn(chunkCJN4CUEU_cjs.networks, info.network) ? chunkCJN4CUEU_cjs.getNetwork(info.network) : chunkCJN4CUEU_cjs.DEFAULT_NETWORK);
24338
+ const serverKey = chunkFUW3OM5X_cjs.toXOnly(base.hex.decode(info.signerPubkey), "ark signer key");
24339
+ const checkpoint = chunkDAYCCIRO_cjs.CSVMultisigTapscript.decode(base.hex.decode(info.checkpointTapscript));
24340
+ const network = opts.network ?? (Object.hasOwn(chunkDAYCCIRO_cjs.networks, info.network) ? chunkDAYCCIRO_cjs.getNetwork(info.network) : chunkDAYCCIRO_cjs.DEFAULT_NETWORK);
24234
24341
  let emulatorKey;
24235
24342
  if (opts.emulator) {
24236
- emulatorKey = base.hex.decode(chunkCJN4CUEU_cjs.resolveEmulatorPubkey(network, opts.emulatorPubkey));
24343
+ emulatorKey = base.hex.decode(chunkDAYCCIRO_cjs.resolveEmulatorPubkey(network, opts.emulatorPubkey));
24237
24344
  }
24238
24345
  let userKey;
24239
24346
  if (opts.identity) {
24240
- userKey = chunkLUWSY2QO_cjs.toXOnly(await opts.identity.xOnlyPublicKey(), "identity key");
24347
+ userKey = chunkFUW3OM5X_cjs.toXOnly(await opts.identity.xOnlyPublicKey(), "identity key");
24241
24348
  }
24242
24349
  return new _Arkade({
24243
24350
  arkProvider: opts.arkade,
@@ -24263,7 +24370,7 @@ var Arkade = class _Arkade {
24263
24370
  * key respectively; explicit args always win.
24264
24371
  */
24265
24372
  contract(program, args = {}) {
24266
- const declared = (program.params ?? []).map(chunkLUWSY2QO_cjs.inputName);
24373
+ const declared = (program.params ?? []).map(chunkFUW3OM5X_cjs.inputName);
24267
24374
  if (declared.includes("server") && args.server === void 0) {
24268
24375
  args = { ...args, server: this.serverKey };
24269
24376
  }
@@ -24283,7 +24390,7 @@ var ArkadeContract = class _ArkadeContract {
24283
24390
  userKey: client.userKey,
24284
24391
  emulatorKey: client.emulatorKey
24285
24392
  };
24286
- this.vtxoScript = new chunkLUWSY2QO_cjs.ArkadeProgramScript(program, args, this.keys);
24393
+ this.vtxoScript = new chunkFUW3OM5X_cjs.ArkadeProgramScript(program, args, this.keys);
24287
24394
  this.tapTree = this.vtxoScript.encode();
24288
24395
  this.compiled = this.vtxoScript.compiled;
24289
24396
  }
@@ -24311,7 +24418,7 @@ var ArkadeContract = class _ArkadeContract {
24311
24418
  `ArkadeContract.fromContract: expected contract type 'arkade', got '${contract.type}'`
24312
24419
  );
24313
24420
  }
24314
- const typed = chunkLUWSY2QO_cjs.deserializeArkadeContractParams(contract.params);
24421
+ const typed = chunkFUW3OM5X_cjs.deserializeArkadeContractParams(contract.params);
24315
24422
  return new _ArkadeContract(client, typed.program, typed.args, {
24316
24423
  serverKey: typed.serverKey,
24317
24424
  userKey: typed.userKey,
@@ -24352,7 +24459,7 @@ var ArkadeContract = class _ArkadeContract {
24352
24459
  toContractParams() {
24353
24460
  return {
24354
24461
  type: "arkade",
24355
- params: chunkLUWSY2QO_cjs.serializeArkadeContractParams({
24462
+ params: chunkFUW3OM5X_cjs.serializeArkadeContractParams({
24356
24463
  program: this.program,
24357
24464
  args: this.args,
24358
24465
  serverKey: this.keys.serverKey,
@@ -24401,17 +24508,17 @@ var ArkadeContract = class _ArkadeContract {
24401
24508
  const [registered] = await manager.getContracts({ script: scriptHex });
24402
24509
  if (registered) {
24403
24510
  const [withVtxos] = await manager.getContractsWithVtxos({ script: scriptHex });
24404
- return (withVtxos?.vtxos ?? []).filter((v) => !chunkCJN4CUEU_cjs.isVtxoSpent(v) && !v.isUnrolled);
24511
+ return (withVtxos?.vtxos ?? []).filter((v) => !chunkDAYCCIRO_cjs.isVtxoSpent(v) && !v.isUnrolled);
24405
24512
  }
24406
24513
  }
24407
24514
  if (!this.client.indexer) {
24408
24515
  throw new Error("ArkadeContract.getUtxos: an indexer is required");
24409
24516
  }
24410
- const { vtxos } = await chunkCJN4CUEU_cjs.getNormalizedVtxos(this.client.indexer, {
24517
+ const { vtxos } = await chunkDAYCCIRO_cjs.getNormalizedVtxos(this.client.indexer, {
24411
24518
  scripts: [scriptHex],
24412
24519
  spendableOnly: true
24413
24520
  });
24414
- return vtxos.filter((v) => !chunkCJN4CUEU_cjs.isVtxoSpent(v) && !v.isUnrolled);
24521
+ return vtxos.filter((v) => !chunkDAYCCIRO_cjs.isVtxoSpent(v) && !v.isUnrolled);
24415
24522
  }
24416
24523
  /** Total spendable balance (requires an indexer). */
24417
24524
  async getBalance() {
@@ -24509,7 +24616,7 @@ var ArkadeTransactionBuilder = class {
24509
24616
  this.contract.client.checkpoint
24510
24617
  );
24511
24618
  if (coin.sourceTx) {
24512
- chunkCJN4CUEU_cjs.setArkPsbtField(arkTx, 0, chunkCJN4CUEU_cjs.PrevArkTxField, coin.sourceTx);
24619
+ chunkDAYCCIRO_cjs.setArkPsbtField(arkTx, 0, chunkDAYCCIRO_cjs.PrevArkTxField, coin.sourceTx);
24513
24620
  }
24514
24621
  if (this.fn.arkadeScript) {
24515
24622
  const indexer = this.contract.client.indexer;
@@ -24526,8 +24633,8 @@ var ArkadeTransactionBuilder = class {
24526
24633
  }
24527
24634
  const condition = (def.tapscript.witness ?? []).map((w) => this.witnessBytes(w));
24528
24635
  if (condition.length > 0) {
24529
- chunkCJN4CUEU_cjs.setArkPsbtField(arkTx, 0, chunkCJN4CUEU_cjs.ConditionWitness, condition);
24530
- chunkCJN4CUEU_cjs.setArkPsbtField(checkpoints[0], 0, chunkCJN4CUEU_cjs.ConditionWitness, condition);
24636
+ chunkDAYCCIRO_cjs.setArkPsbtField(arkTx, 0, chunkDAYCCIRO_cjs.ConditionWitness, condition);
24637
+ chunkDAYCCIRO_cjs.setArkPsbtField(checkpoints[0], 0, chunkDAYCCIRO_cjs.ConditionWitness, condition);
24531
24638
  }
24532
24639
  const packets = [];
24533
24640
  if (this.assetSpecs.length > 0) {
@@ -24566,7 +24673,7 @@ var ArkadeTransactionBuilder = class {
24566
24673
  base.base64.encode(signedArk2.toPSBT()),
24567
24674
  signedCps.map((c) => base.base64.encode(c.toPSBT()))
24568
24675
  );
24569
- const txid = chunkCJN4CUEU_cjs.Transaction.fromPSBT(base.base64.decode(res2.signedArkTx)).id;
24676
+ const txid = chunkDAYCCIRO_cjs.Transaction.fromPSBT(base.base64.decode(res2.signedArkTx)).id;
24570
24677
  return {
24571
24678
  txid,
24572
24679
  signedArkTx: res2.signedArkTx,
@@ -24625,23 +24732,23 @@ var ArkadeTransactionBuilder = class {
24625
24732
  }
24626
24733
  buildAssetPacket() {
24627
24734
  const groups = this.assetSpecs.map((s) => {
24628
- const id = typeof s.assetId === "string" ? chunkH62OOAS4_cjs.AssetId.fromString(s.assetId) : chunkH62OOAS4_cjs.AssetId.fromBytes(s.assetId);
24629
- return chunkH62OOAS4_cjs.AssetGroup.create(
24735
+ const id = typeof s.assetId === "string" ? chunkSJPPBR2V_cjs.AssetId.fromString(s.assetId) : chunkSJPPBR2V_cjs.AssetId.fromBytes(s.assetId);
24736
+ return chunkSJPPBR2V_cjs.AssetGroup.create(
24630
24737
  id,
24631
24738
  null,
24632
- s.inputs.map((i) => chunkH62OOAS4_cjs.AssetInput.create(i.vin, i.amount)),
24633
- s.outputs.map((o) => chunkH62OOAS4_cjs.AssetOutput.create(o.vout, o.amount)),
24634
- (s.metadata ?? []).map((m) => chunkH62OOAS4_cjs.Metadata.create(m.key, m.value))
24739
+ s.inputs.map((i) => chunkSJPPBR2V_cjs.AssetInput.create(i.vin, i.amount)),
24740
+ s.outputs.map((o) => chunkSJPPBR2V_cjs.AssetOutput.create(o.vout, o.amount)),
24741
+ (s.metadata ?? []).map((m) => chunkSJPPBR2V_cjs.Metadata.create(m.key, m.value))
24635
24742
  );
24636
24743
  });
24637
- return chunkH62OOAS4_cjs.Packet.create(groups);
24744
+ return chunkSJPPBR2V_cjs.Packet.create(groups);
24638
24745
  }
24639
24746
  witnessBytes(ref) {
24640
- return chunkLUWSY2QO_cjs.witnessRefToBytes(ref, this.args, this.contract.args);
24747
+ return chunkFUW3OM5X_cjs.witnessRefToBytes(ref, this.args, this.contract.args);
24641
24748
  }
24642
24749
  };
24643
24750
  function bindInputs(fn, callArgs) {
24644
- const names = (fn.def.inputs ?? []).map(chunkLUWSY2QO_cjs.inputName);
24751
+ const names = (fn.def.inputs ?? []).map(chunkFUW3OM5X_cjs.inputName);
24645
24752
  if (callArgs.length !== names.length) {
24646
24753
  throw new Error(`${fn.name}: expected ${names.length} argument(s), got ${callArgs.length}`);
24647
24754
  }
@@ -25054,17 +25161,17 @@ var walletFeeSource = (wallet) => async () => (await wallet.arkProvider.getInfo(
25054
25161
  function offchainInputFees(vtxos, fees) {
25055
25162
  const estimator = new Estimator(fees?.intentFee ?? {});
25056
25163
  return vtxos.reduce(
25057
- (total, vtxo) => total + estimator.evalOffchainInput(chunkCJN4CUEU_cjs.toOffchainInputFeeParams(vtxo)).satoshis,
25164
+ (total, vtxo) => total + estimator.evalOffchainInput(chunkDAYCCIRO_cjs.toOffchainInputFeeParams(vtxo)).satoshis,
25058
25165
  0
25059
25166
  );
25060
25167
  }
25061
25168
  async function changeOutputFee(wallet, inputs, needed, fees) {
25062
25169
  const estimator = new Estimator(fees?.intentFee ?? {});
25063
25170
  const net = inputs.reduce(
25064
- (total, vtxo) => total + BigInt(vtxo.value) - BigInt(estimator.evalOffchainInput(chunkCJN4CUEU_cjs.toOffchainInputFeeParams(vtxo)).satoshis),
25171
+ (total, vtxo) => total + BigInt(vtxo.value) - BigInt(estimator.evalOffchainInput(chunkDAYCCIRO_cjs.toOffchainInputFeeParams(vtxo)).satoshis),
25065
25172
  0n
25066
25173
  );
25067
- const script = base.hex.encode(chunkCJN4CUEU_cjs.ArkAddress.decode(await wallet.getAddress()).pkScript);
25174
+ const script = base.hex.encode(chunkDAYCCIRO_cjs.ArkAddress.decode(await wallet.getAddress()).pkScript);
25068
25175
  return changeAfterOutputFee(
25069
25176
  net - needed,
25070
25177
  (amount) => BigInt(estimator.evalOffchainOutput({ amount, script }).satoshis)
@@ -25129,11 +25236,6 @@ function createDefaultPaymentRouter(wallet) {
25129
25236
  prefs: { priority: ["ark", "ark-asset", "lightning", "onchain"] }
25130
25237
  }).use(arkRail()).use(arkAssetRail()).use(onchainRail({ feeInfo: walletFeeSource(wallet) }));
25131
25238
  }
25132
- /*! Bundled license information:
25133
-
25134
- @noble/hashes/utils.js:
25135
- (*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) *)
25136
- */
25137
25239
 
25138
25240
  exports.ARKADE_MAGIC = ARKADE_MAGIC;
25139
25241
  exports.ARKADE_SALTED_PREIMAGE_TAG = ARKADE_SALTED_PREIMAGE_TAG;
@@ -25363,5 +25465,5 @@ exports.waitForIncomingFunds = waitForIncomingFunds;
25363
25465
  exports.walletFeeSource = walletFeeSource;
25364
25466
  exports.warnAndFilterVtxosForScript = warnAndFilterVtxosForScript;
25365
25467
  exports.withPrevTxs = withPrevTxs;
25366
- //# sourceMappingURL=chunk-YJEWWLOQ.cjs.map
25367
- //# sourceMappingURL=chunk-YJEWWLOQ.cjs.map
25468
+ //# sourceMappingURL=chunk-HAM3SHBV.cjs.map
25469
+ //# sourceMappingURL=chunk-HAM3SHBV.cjs.map