@arkade-os/sdk 0.4.69 → 0.4.70

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 (47) hide show
  1. package/dist/adapters/expo.cjs +5 -5
  2. package/dist/adapters/expo.js +3 -3
  3. package/dist/adapters/indexedDB.cjs +5 -5
  4. package/dist/adapters/indexedDB.js +4 -4
  5. package/dist/{chunk-GVHUHTRH.cjs → chunk-3KW4TWP2.cjs} +17 -17
  6. package/dist/{chunk-GVHUHTRH.cjs.map → chunk-3KW4TWP2.cjs.map} +1 -1
  7. package/dist/{chunk-WIFL5QYZ.cjs → chunk-3OKEUDHU.cjs} +49 -49
  8. package/dist/{chunk-WIFL5QYZ.cjs.map → chunk-3OKEUDHU.cjs.map} +1 -1
  9. package/dist/{chunk-5MLC2HU3.cjs → chunk-57636V35.cjs} +3 -3
  10. package/dist/{chunk-5MLC2HU3.cjs.map → chunk-57636V35.cjs.map} +1 -1
  11. package/dist/{chunk-2PPL3O7Z.js → chunk-6UM55KPZ.js} +3 -3
  12. package/dist/{chunk-2PPL3O7Z.js.map → chunk-6UM55KPZ.js.map} +1 -1
  13. package/dist/{chunk-HQ4DMGA4.cjs → chunk-B73Q75IL.cjs} +10 -10
  14. package/dist/{chunk-HQ4DMGA4.cjs.map → chunk-B73Q75IL.cjs.map} +1 -1
  15. package/dist/{chunk-YG7T6LI3.js → chunk-F5E7LI6G.js} +3 -3
  16. package/dist/{chunk-YG7T6LI3.js.map → chunk-F5E7LI6G.js.map} +1 -1
  17. package/dist/{chunk-XLWDX7QZ.js → chunk-IUFTICRY.js} +4 -4
  18. package/dist/{chunk-XLWDX7QZ.js.map → chunk-IUFTICRY.js.map} +1 -1
  19. package/dist/{chunk-XQPN5YP2.cjs → chunk-JJ7AXR4O.cjs} +17 -17
  20. package/dist/{chunk-XQPN5YP2.cjs.map → chunk-JJ7AXR4O.cjs.map} +1 -1
  21. package/dist/{chunk-TA7XLEP2.js → chunk-JVHO6XHG.js} +84 -11
  22. package/dist/chunk-JVHO6XHG.js.map +1 -0
  23. package/dist/{chunk-L5SCQYHF.js → chunk-TXSF2DKX.js} +3 -3
  24. package/dist/{chunk-L5SCQYHF.js.map → chunk-TXSF2DKX.js.map} +1 -1
  25. package/dist/{chunk-MNMPGEK2.js → chunk-UG3EZDLF.js} +4 -4
  26. package/dist/{chunk-MNMPGEK2.js.map → chunk-UG3EZDLF.js.map} +1 -1
  27. package/dist/{chunk-EBYCTLET.cjs → chunk-XTCOSZ34.cjs} +519 -440
  28. package/dist/chunk-XTCOSZ34.cjs.map +1 -0
  29. package/dist/contracts/handlers/index.cjs +9 -9
  30. package/dist/contracts/handlers/index.js +2 -2
  31. package/dist/index.cjs +315 -291
  32. package/dist/index.d.cts +72 -13
  33. package/dist/index.d.ts +72 -13
  34. package/dist/index.js +4 -4
  35. package/dist/repositories/realm/index.cjs +19 -19
  36. package/dist/repositories/realm/index.js +5 -5
  37. package/dist/repositories/sqlite/index.cjs +18 -18
  38. package/dist/repositories/sqlite/index.js +5 -5
  39. package/dist/wallet/expo/background.cjs +14 -14
  40. package/dist/wallet/expo/background.js +6 -6
  41. package/dist/wallet/expo/index.cjs +14 -14
  42. package/dist/wallet/expo/index.js +5 -5
  43. package/dist/worker/expo/index.cjs +9 -9
  44. package/dist/worker/expo/index.js +5 -5
  45. package/package.json +2 -1
  46. package/dist/chunk-EBYCTLET.cjs.map +0 -1
  47. package/dist/chunk-TA7XLEP2.js.map +0 -1
@@ -1,8 +1,8 @@
1
1
  'use strict';
2
2
 
3
- var chunkGVHUHTRH_cjs = require('./chunk-GVHUHTRH.cjs');
4
- var chunkWIFL5QYZ_cjs = require('./chunk-WIFL5QYZ.cjs');
5
- var chunk5MLC2HU3_cjs = require('./chunk-5MLC2HU3.cjs');
3
+ var chunk3KW4TWP2_cjs = require('./chunk-3KW4TWP2.cjs');
4
+ var chunk3OKEUDHU_cjs = require('./chunk-3OKEUDHU.cjs');
5
+ var chunk57636V35_cjs = require('./chunk-57636V35.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 = chunk5MLC2HU3_cjs.getArkPsbtFields(tx.root, 0, chunk5MLC2HU3_cjs.CosignerPublicKey).map(
191
+ const cosigners = chunk57636V35_cjs.getArkPsbtFields(tx.root, 0, chunk57636V35_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 = chunk5MLC2HU3_cjs.getArkPsbtFields(g.root, 0, chunk5MLC2HU3_cjs.CosignerPublicKey).map((c) => c.key);
243
+ const cosigners = chunk57636V35_cjs.getArkPsbtFields(g.root, 0, chunk57636V35_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
- chunk5MLC2HU3_cjs.assertAllowedSighashTypes(txCpy, ALLOWED_SIGHASH);
326
+ chunk57636V35_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 = chunkWIFL5QYZ_cjs.isMainnetDescriptor(descriptor) ? descriptorsScure.networks.bitcoin : descriptorsScure.networks.testnet;
435
+ network = chunk3OKEUDHU_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 chunkWIFL5QYZ_cjs.descriptorIsOurs(descriptor, this.descriptor, utils_js.pubSchnorr(this.derivedKey));
533
+ return chunk3OKEUDHU_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 = chunkWIFL5QYZ_cjs.isMainnetDescriptor(descriptor) ? descriptorsScure.networks.bitcoin : descriptorsScure.networks.testnet;
582
+ const network = chunk3OKEUDHU_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
- chunk5MLC2HU3_cjs.assertAllowedSighashTypes(txCpy, ALLOWED_SIGHASH2);
607
+ chunk57636V35_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 = chunkWIFL5QYZ_cjs.isMainnetDescriptor(descriptor) ? descriptorsScure.networks.bitcoin : descriptorsScure.networks.testnet;
669
+ const network = chunk3OKEUDHU_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 chunkWIFL5QYZ_cjs.descriptorIsOurs(descriptor, this.descriptor, this.indexZero.pubkey);
719
+ return chunk3OKEUDHU_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 chunkWIFL5QYZ_cjs.deriveDescriptorLeafPubKey(this.descriptor);
881
+ return chunk3OKEUDHU_cjs.deriveDescriptorLeafPubKey(this.descriptor);
882
882
  }
883
883
  async compressedPublicKey() {
884
- return chunkWIFL5QYZ_cjs.deriveDescriptorLeafCompressedPubKey(this.descriptor);
884
+ return chunk3OKEUDHU_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 && chunkWIFL5QYZ_cjs.parseHDDescriptor(descriptor)) {
952
+ if (owner && chunk3OKEUDHU_cjs.parseHDDescriptor(descriptor)) {
953
953
  return new DescriptorIdentity({ descriptor, signer: owner, base: identity });
954
954
  }
955
955
  let key;
956
956
  try {
957
- key = chunkWIFL5QYZ_cjs.deriveDescriptorLeafPubKey(descriptor);
957
+ key = chunk3OKEUDHU_cjs.deriveDescriptorLeafPubKey(descriptor);
958
958
  } catch {
959
959
  throw new ForeignDescriptorError(descriptor);
960
960
  }
@@ -1329,14 +1329,14 @@ function buildSaltedPreimageMessage(xonly, salt) {
1329
1329
  }
1330
1330
  var PREIMAGE_INDEX = 0;
1331
1331
  function isPerArtifactDescriptor(descriptor) {
1332
- return chunkWIFL5QYZ_cjs.parseHDDescriptor(descriptor) !== null;
1332
+ return chunk3OKEUDHU_cjs.parseHDDescriptor(descriptor) !== null;
1333
1333
  }
1334
1334
  async function provisionDescriptor(wallet) {
1335
1335
  const allocated = isHDAllocationCapable(wallet) ? await wallet.getNextSigningDescriptor() : void 0;
1336
- return allocated ?? await chunkWIFL5QYZ_cjs.identityDescriptor(wallet.identity);
1336
+ return allocated ?? await chunk3OKEUDHU_cjs.identityDescriptor(wallet.identity);
1337
1337
  }
1338
1338
  async function provisionRefundKey(wallet) {
1339
- const descriptor = await chunkWIFL5QYZ_cjs.identityDescriptor(wallet.identity);
1339
+ const descriptor = await chunk3OKEUDHU_cjs.identityDescriptor(wallet.identity);
1340
1340
  const signer = await contractSigner(wallet, descriptor);
1341
1341
  const pubkey = await signer.xOnlyPublicKey();
1342
1342
  const identityPubkey = await wallet.identity.xOnlyPublicKey();
@@ -1346,7 +1346,7 @@ async function provisionRefundKey(wallet) {
1346
1346
  );
1347
1347
  }
1348
1348
  const address = await wallet.getAddress();
1349
- const { pkScript } = chunk5MLC2HU3_cjs.ArkAddress.decode(address);
1349
+ const { pkScript } = chunk57636V35_cjs.ArkAddress.decode(address);
1350
1350
  return { descriptor, pubkey, pkScript, address };
1351
1351
  }
1352
1352
  async function provisionClaimSecret(wallet, opts = {}) {
@@ -1392,7 +1392,7 @@ async function contractSigner(wallet, descriptor) {
1392
1392
  const signer = isHDWalletCapable(wallet) ? await wallet.signerForDescriptor(descriptor) : wallet.identity;
1393
1393
  let expected;
1394
1394
  try {
1395
- expected = chunkWIFL5QYZ_cjs.deriveDescriptorLeafPubKey(descriptor);
1395
+ expected = chunk3OKEUDHU_cjs.deriveDescriptorLeafPubKey(descriptor);
1396
1396
  } catch (cause) {
1397
1397
  throw new ForeignDescriptorError(descriptor, { cause });
1398
1398
  }
@@ -1611,14 +1611,14 @@ var RestDelegateProvider = class {
1611
1611
  */
1612
1612
  async delegate(intent, forfeitTxs, options) {
1613
1613
  const url = `${this.url}/v1/delegate`;
1614
- const response = await chunk5MLC2HU3_cjs.baseFetch(url, {
1614
+ const response = await chunk57636V35_cjs.baseFetch(url, {
1615
1615
  method: "POST",
1616
1616
  headers: {
1617
1617
  "Content-Type": "application/json"
1618
1618
  },
1619
1619
  body: JSON.stringify({
1620
1620
  intent: {
1621
- message: chunk5MLC2HU3_cjs.Intent.encodeMessage(intent.message),
1621
+ message: chunk57636V35_cjs.Intent.encodeMessage(intent.message),
1622
1622
  proof: intent.proof
1623
1623
  },
1624
1624
  forfeit_txs: forfeitTxs,
@@ -1638,7 +1638,7 @@ var RestDelegateProvider = class {
1638
1638
  */
1639
1639
  async getDelegateInfo() {
1640
1640
  const url = `${this.url}/v1/delegator/info`;
1641
- const response = await chunk5MLC2HU3_cjs.rateGate.runHttp(url, () => chunk5MLC2HU3_cjs.baseFetch(url));
1641
+ const response = await chunk57636V35_cjs.rateGate.runHttp(url, () => chunk57636V35_cjs.baseFetch(url));
1642
1642
  if (!response.ok) {
1643
1643
  const errorText2 = await response.text();
1644
1644
  throw new Error(`Failed to get delegate info: ${errorText2}`);
@@ -1663,7 +1663,7 @@ var ESPLORA_URL = {
1663
1663
  regtest: "http://localhost:3000/api"
1664
1664
  };
1665
1665
  var EsploraProvider = class {
1666
- constructor(baseUrl = ESPLORA_URL[chunk5MLC2HU3_cjs.DEFAULT_NETWORK_NAME], opts) {
1666
+ constructor(baseUrl = ESPLORA_URL[chunk57636V35_cjs.DEFAULT_NETWORK_NAME], opts) {
1667
1667
  this.baseUrl = baseUrl;
1668
1668
  this.pollingInterval = opts?.pollingInterval ?? 15e3;
1669
1669
  this.forcePolling = opts?.forcePolling ?? false;
@@ -1682,14 +1682,14 @@ var EsploraProvider = class {
1682
1682
  */
1683
1683
  addressWatches = /* @__PURE__ */ new Map();
1684
1684
  async getCoins(address) {
1685
- const response = await chunk5MLC2HU3_cjs.baseFetch(`${this.baseUrl}/address/${address}/utxo`);
1685
+ const response = await chunk57636V35_cjs.baseFetch(`${this.baseUrl}/address/${address}/utxo`);
1686
1686
  if (!response.ok) {
1687
1687
  throw new Error(`Failed to fetch UTXOs: ${response.statusText}`);
1688
1688
  }
1689
1689
  return response.json();
1690
1690
  }
1691
1691
  async getFeeRate() {
1692
- const response = await chunk5MLC2HU3_cjs.baseFetch(`${this.baseUrl}/fee-estimates`);
1692
+ const response = await chunk57636V35_cjs.baseFetch(`${this.baseUrl}/fee-estimates`);
1693
1693
  if (response.status === 404) {
1694
1694
  return void 0;
1695
1695
  }
@@ -1710,7 +1710,7 @@ var EsploraProvider = class {
1710
1710
  }
1711
1711
  }
1712
1712
  async getTxOutspends(txid) {
1713
- const response = await chunk5MLC2HU3_cjs.baseFetch(`${this.baseUrl}/tx/${txid}/outspends`);
1713
+ const response = await chunk57636V35_cjs.baseFetch(`${this.baseUrl}/tx/${txid}/outspends`);
1714
1714
  if (!response.ok) {
1715
1715
  const error = await response.text();
1716
1716
  throw new Error(`Failed to get transaction outspends: ${error}`);
@@ -1718,7 +1718,7 @@ var EsploraProvider = class {
1718
1718
  return response.json();
1719
1719
  }
1720
1720
  async getTransactions(address) {
1721
- const response = await chunk5MLC2HU3_cjs.baseFetch(`${this.baseUrl}/address/${address}/txs`);
1721
+ const response = await chunk57636V35_cjs.baseFetch(`${this.baseUrl}/address/${address}/txs`);
1722
1722
  if (!response.ok) {
1723
1723
  const error = await response.text();
1724
1724
  throw new Error(`Failed to get transactions: ${error}`);
@@ -1731,14 +1731,14 @@ var EsploraProvider = class {
1731
1731
  * usable as a change probe for the polling fallback.
1732
1732
  */
1733
1733
  async getAddressStats(address) {
1734
- const response = await chunk5MLC2HU3_cjs.baseFetch(`${this.baseUrl}/address/${address}`);
1734
+ const response = await chunk57636V35_cjs.baseFetch(`${this.baseUrl}/address/${address}`);
1735
1735
  if (!response.ok) {
1736
1736
  throw new Error(`Failed to get address stats: ${response.statusText}`);
1737
1737
  }
1738
1738
  return response.json();
1739
1739
  }
1740
1740
  async getRawTransaction(txid) {
1741
- const response = await chunk5MLC2HU3_cjs.baseFetch(`${this.baseUrl}/tx/${txid}/hex`);
1741
+ const response = await chunk57636V35_cjs.baseFetch(`${this.baseUrl}/tx/${txid}/hex`);
1742
1742
  if (!response.ok) {
1743
1743
  const error = await response.text();
1744
1744
  throw new Error(`Failed to get raw transaction ${txid}: ${error}`);
@@ -1746,7 +1746,7 @@ var EsploraProvider = class {
1746
1746
  return base.hex.decode((await response.text()).trim());
1747
1747
  }
1748
1748
  async getTxStatus(txid) {
1749
- const txresponse = await chunk5MLC2HU3_cjs.baseFetch(`${this.baseUrl}/tx/${txid}`);
1749
+ const txresponse = await chunk57636V35_cjs.baseFetch(`${this.baseUrl}/tx/${txid}`);
1750
1750
  if (!txresponse.ok) {
1751
1751
  throw new Error(txresponse.statusText);
1752
1752
  }
@@ -1754,7 +1754,7 @@ var EsploraProvider = class {
1754
1754
  if (!tx.status.confirmed) {
1755
1755
  return { confirmed: false };
1756
1756
  }
1757
- const response = await chunk5MLC2HU3_cjs.baseFetch(`${this.baseUrl}/tx/${txid}/status`);
1757
+ const response = await chunk57636V35_cjs.baseFetch(`${this.baseUrl}/tx/${txid}/status`);
1758
1758
  if (!response.ok) {
1759
1759
  throw new Error(`Failed to get transaction status: ${response.statusText}`);
1760
1760
  }
@@ -2038,7 +2038,10 @@ var EsploraProvider = class {
2038
2038
  return { subscribers, teardown, started };
2039
2039
  }
2040
2040
  async getChainTip() {
2041
- const tipBlocks = await chunk5MLC2HU3_cjs.baseFetch(`${this.baseUrl}/blocks`);
2041
+ let tipBlocks = await chunk57636V35_cjs.baseFetch(`${this.baseUrl}/blocks`);
2042
+ if (tipBlocks.status === 404) {
2043
+ tipBlocks = await chunk57636V35_cjs.baseFetch(`${this.baseUrl}/v1/blocks`);
2044
+ }
2042
2045
  if (!tipBlocks.ok) {
2043
2046
  throw new Error(`Failed to get chain tip: ${tipBlocks.statusText}`);
2044
2047
  }
@@ -2059,7 +2062,7 @@ var EsploraProvider = class {
2059
2062
  };
2060
2063
  }
2061
2064
  async broadcastPackage(parent, child) {
2062
- const response = await chunk5MLC2HU3_cjs.baseFetch(`${this.baseUrl}/txs/package`, {
2065
+ const response = await chunk57636V35_cjs.baseFetch(`${this.baseUrl}/txs/package`, {
2063
2066
  method: "POST",
2064
2067
  headers: {
2065
2068
  "Content-Type": "application/json"
@@ -2075,7 +2078,7 @@ var EsploraProvider = class {
2075
2078
  return result;
2076
2079
  }
2077
2080
  async broadcastTx(tx) {
2078
- const response = await chunk5MLC2HU3_cjs.baseFetch(`${this.baseUrl}/tx`, {
2081
+ const response = await chunk57636V35_cjs.baseFetch(`${this.baseUrl}/tx`, {
2079
2082
  method: "POST",
2080
2083
  headers: {
2081
2084
  "Content-Type": "text/plain"
@@ -2258,7 +2261,7 @@ function findP2AOutput(tx) {
2258
2261
  var CHILD_DUST_AMOUNT = 546;
2259
2262
  function buildAnchorChild(params) {
2260
2263
  const { parent, feeRate, fundingCoins, changeAddress, tapInternalKey, network } = params;
2261
- const child = new chunk5MLC2HU3_cjs.Transaction({ version: 3, allowLegacyWitnessUtxo: true });
2264
+ const child = new chunk57636V35_cjs.Transaction({ version: 3, allowLegacyWitnessUtxo: true });
2262
2265
  child.addInput(findP2AOutput(parent));
2263
2266
  const estimator = TxWeightEstimator.create().addP2AInput();
2264
2267
  for (const _ of fundingCoins) {
@@ -2306,7 +2309,7 @@ function buildForfeitTx(inputs, forfeitPkScript, txLocktime) {
2306
2309
  );
2307
2310
  }
2308
2311
  function buildForfeitTxWithOutput(inputs, output, txLocktime) {
2309
- const tx = new chunk5MLC2HU3_cjs.Transaction({
2312
+ const tx = new chunk57636V35_cjs.Transaction({
2310
2313
  version: 3,
2311
2314
  lockTime: txLocktime
2312
2315
  });
@@ -2382,7 +2385,7 @@ function validateVtxoTxGraph(graph, roundTransaction, sweepTapTreeRoot) {
2382
2385
  if (previousScriptKey.length !== 32) {
2383
2386
  throw new Error(`parent output ${childIndex} has invalid script`);
2384
2387
  }
2385
- const cosigners = chunk5MLC2HU3_cjs.getArkPsbtFields(child.root, 0, chunk5MLC2HU3_cjs.CosignerPublicKey);
2388
+ const cosigners = chunk57636V35_cjs.getArkPsbtFields(child.root, 0, chunk57636V35_cjs.CosignerPublicKey);
2386
2389
  if (cosigners.length === 0) {
2387
2390
  throw ErrMissingCosignersPublicKeys;
2388
2391
  }
@@ -2440,7 +2443,7 @@ var EmulatorPacket = class _EmulatorPacket {
2440
2443
  return new _EmulatorPacket(entries);
2441
2444
  }
2442
2445
  static fromBytes(data) {
2443
- const reader = new chunkGVHUHTRH_cjs.BufferReader(data);
2446
+ const reader = new chunk3KW4TWP2_cjs.BufferReader(data);
2444
2447
  const entryCount = reader.readCompactSize();
2445
2448
  const entries = [];
2446
2449
  for (let i = 0; i < entryCount; i++) {
@@ -2458,7 +2461,7 @@ var EmulatorPacket = class _EmulatorPacket {
2458
2461
  return _EmulatorPacket.PACKET_TYPE;
2459
2462
  }
2460
2463
  serialize() {
2461
- const writer = new chunkGVHUHTRH_cjs.BufferWriter();
2464
+ const writer = new chunk3KW4TWP2_cjs.BufferWriter();
2462
2465
  writer.writeCompactSize(this.entries.length);
2463
2466
  for (const entry of this.entries) {
2464
2467
  writer.writeUint16LE(entry.vin);
@@ -2545,7 +2548,7 @@ var Extension = class _Extension {
2545
2548
  `expected magic prefix ${base.hex.encode(ARKADE_MAGIC)}, got ${base.hex.encode(payload.slice(0, Math.min(payload.length, ARKADE_MAGIC.length)))}`
2546
2549
  );
2547
2550
  }
2548
- const reader = new chunkGVHUHTRH_cjs.BufferReader(payload.slice(ARKADE_MAGIC.length));
2551
+ const reader = new chunk3KW4TWP2_cjs.BufferReader(payload.slice(ARKADE_MAGIC.length));
2549
2552
  const packets = [];
2550
2553
  while (reader.remaining() > 0) {
2551
2554
  const packetType = reader.readByte();
@@ -2619,7 +2622,7 @@ var Extension = class _Extension {
2619
2622
  */
2620
2623
  getAssetPacket() {
2621
2624
  for (const p of this.packets) {
2622
- if (p instanceof chunkGVHUHTRH_cjs.Packet) {
2625
+ if (p instanceof chunk3KW4TWP2_cjs.Packet) {
2623
2626
  return p;
2624
2627
  }
2625
2628
  }
@@ -2657,8 +2660,8 @@ var Extension = class _Extension {
2657
2660
  };
2658
2661
  function parsePacket(packetType, data) {
2659
2662
  switch (packetType) {
2660
- case chunkGVHUHTRH_cjs.Packet.PACKET_TYPE:
2661
- return chunkGVHUHTRH_cjs.Packet.fromBytes(data);
2663
+ case chunk3KW4TWP2_cjs.Packet.PACKET_TYPE:
2664
+ return chunk3KW4TWP2_cjs.Packet.fromBytes(data);
2662
2665
  case EmulatorPacket.PACKET_TYPE:
2663
2666
  return EmulatorPacket.fromBytes(data);
2664
2667
  default:
@@ -2705,16 +2708,16 @@ function buildOpReturnScript(data) {
2705
2708
  }
2706
2709
  return script;
2707
2710
  }
2708
- var ErrOffchainOutputNotFound = (address) => new chunk5MLC2HU3_cjs.ServerResponseMismatchError(`offchain send output not found: ${address}`);
2709
- var ErrInvalidAssetOutputAmount = (got, want, assetId) => new chunk5MLC2HU3_cjs.ServerResponseMismatchError(
2711
+ var ErrOffchainOutputNotFound = (address) => new chunk57636V35_cjs.ServerResponseMismatchError(`offchain send output not found: ${address}`);
2712
+ var ErrInvalidAssetOutputAmount = (got, want, assetId) => new chunk57636V35_cjs.ServerResponseMismatchError(
2710
2713
  `invalid asset output amount for ${assetId}: got ${got}, want ${want}`
2711
2714
  );
2712
- var ErrAssetGroupNotFound = (assetId) => new chunk5MLC2HU3_cjs.ServerResponseMismatchError(`asset group not found in batch leaf: ${assetId}`);
2713
- var ErrAssetOutputNotFound = (assetId, outputIndex) => new chunk5MLC2HU3_cjs.ServerResponseMismatchError(
2715
+ var ErrAssetGroupNotFound = (assetId) => new chunk57636V35_cjs.ServerResponseMismatchError(`asset group not found in batch leaf: ${assetId}`);
2716
+ var ErrAssetOutputNotFound = (assetId, outputIndex) => new chunk57636V35_cjs.ServerResponseMismatchError(
2714
2717
  `asset output not found in asset group ${assetId} at index ${outputIndex}`
2715
2718
  );
2716
- var ErrOnchainOutputNotFound = (address) => new chunk5MLC2HU3_cjs.ServerResponseMismatchError(`onchain output not found: ${address}`);
2717
- var ErrUnvalidatedOffchainOutput = (address) => new chunk5MLC2HU3_cjs.ServerResponseMismatchError(
2719
+ var ErrOnchainOutputNotFound = (address) => new chunk57636V35_cjs.ServerResponseMismatchError(`onchain output not found: ${address}`);
2720
+ var ErrUnvalidatedOffchainOutput = (address) => new chunk57636V35_cjs.ServerResponseMismatchError(
2718
2721
  `offchain output ${address} cannot be validated: virtual output tree signing did not run`
2719
2722
  );
2720
2723
  var ErrInvalidOnchainOutputAmount = (address) => new Error(`invalid onchain output amount: ${address}`);
@@ -2723,7 +2726,7 @@ var ErrInvalidOffchainOutputAmount = (address) => new Error(`invalid offchain ou
2723
2726
  function assertFinalCommitmentMatchesValidated(finalCommitmentTx, validatedCommitmentTxid, context) {
2724
2727
  if (!validatedCommitmentTxid) return;
2725
2728
  if (finalCommitmentTx.id === validatedCommitmentTxid) return;
2726
- throw new chunk5MLC2HU3_cjs.ServerResponseMismatchError(
2729
+ throw new chunk57636V35_cjs.ServerResponseMismatchError(
2727
2730
  `${context}: finalization commitment tx ${finalCommitmentTx.id} differs from the validated commitment tx ${validatedCommitmentTxid}`
2728
2731
  );
2729
2732
  }
@@ -2733,7 +2736,7 @@ function validateBatchRecipients(commitmentTx, vtxoTreeLeaves, recipients, netwo
2733
2736
  for (const recipient of recipients) {
2734
2737
  let arkAddress;
2735
2738
  try {
2736
- arkAddress = chunk5MLC2HU3_cjs.ArkAddress.decode(recipient.address);
2739
+ arkAddress = chunk57636V35_cjs.ArkAddress.decode(recipient.address);
2737
2740
  } catch {
2738
2741
  validateOnchainRecipient(commitmentTx, recipient, network, usedOnchainOutputs);
2739
2742
  continue;
@@ -2745,7 +2748,7 @@ function validateBatchRecipientsWithoutTree(commitmentTx, recipients, network) {
2745
2748
  const usedOnchainOutputs = /* @__PURE__ */ new Set();
2746
2749
  for (const recipient of recipients) {
2747
2750
  try {
2748
- chunk5MLC2HU3_cjs.ArkAddress.decode(recipient.address);
2751
+ chunk57636V35_cjs.ArkAddress.decode(recipient.address);
2749
2752
  } catch {
2750
2753
  validateOnchainRecipient(commitmentTx, recipient, network, usedOnchainOutputs);
2751
2754
  continue;
@@ -2978,7 +2981,7 @@ function assetMintResolver() {
2978
2981
  if (!tx.assets?.length || !tx.key.arkTxid) return void 0;
2979
2982
  const minted = tx.assets.filter((a) => {
2980
2983
  try {
2981
- return base.hex.encode(chunkGVHUHTRH_cjs.AssetId.fromString(a.assetId).txid) === tx.key.arkTxid;
2984
+ return base.hex.encode(chunk3KW4TWP2_cjs.AssetId.fromString(a.assetId).txid) === tx.key.arkTxid;
2982
2985
  } catch {
2983
2986
  return false;
2984
2987
  }
@@ -3021,7 +3024,7 @@ function createAssetPacket(assetInputs, receivers, changeReceiver) {
3021
3024
  const existing = inputsByAssetId.get(asset.assetId);
3022
3025
  inputsByAssetId.set(asset.assetId, [
3023
3026
  ...existing ?? [],
3024
- chunkGVHUHTRH_cjs.AssetInput.create(inputIndex, asset.amount)
3027
+ chunk3KW4TWP2_cjs.AssetInput.create(inputIndex, asset.amount)
3025
3028
  ]);
3026
3029
  }
3027
3030
  }
@@ -3033,7 +3036,7 @@ function createAssetPacket(assetInputs, receivers, changeReceiver) {
3033
3036
  const existing = outputsByAssetId.get(asset.assetId);
3034
3037
  outputsByAssetId.set(asset.assetId, [
3035
3038
  ...existing ?? [],
3036
- chunkGVHUHTRH_cjs.AssetOutput.create(outputIndex, asset.amount)
3039
+ chunk3KW4TWP2_cjs.AssetOutput.create(outputIndex, asset.amount)
3037
3040
  ]);
3038
3041
  }
3039
3042
  }
@@ -3044,7 +3047,7 @@ function createAssetPacket(assetInputs, receivers, changeReceiver) {
3044
3047
  const existing = outputsByAssetId.get(asset.assetId);
3045
3048
  outputsByAssetId.set(asset.assetId, [
3046
3049
  ...existing ?? [],
3047
- chunkGVHUHTRH_cjs.AssetOutput.create(outputIndex, asset.amount)
3050
+ chunk3KW4TWP2_cjs.AssetOutput.create(outputIndex, asset.amount)
3048
3051
  ]);
3049
3052
  }
3050
3053
  }
@@ -3053,11 +3056,11 @@ function createAssetPacket(assetInputs, receivers, changeReceiver) {
3053
3056
  for (const assetIdStr of allAssetIds) {
3054
3057
  const inputs = inputsByAssetId.get(assetIdStr);
3055
3058
  const outputs = outputsByAssetId.get(assetIdStr);
3056
- const assetId = chunkGVHUHTRH_cjs.AssetId.fromString(assetIdStr);
3057
- const group = chunkGVHUHTRH_cjs.AssetGroup.create(assetId, null, inputs ?? [], outputs ?? [], []);
3059
+ const assetId = chunk3KW4TWP2_cjs.AssetId.fromString(assetIdStr);
3060
+ const group = chunk3KW4TWP2_cjs.AssetGroup.create(assetId, null, inputs ?? [], outputs ?? [], []);
3058
3061
  groups.push(group);
3059
3062
  }
3060
- return chunkGVHUHTRH_cjs.Packet.create(groups);
3063
+ return chunk3KW4TWP2_cjs.Packet.create(groups);
3061
3064
  }
3062
3065
  function selectCoinsWithAsset(coins, assetId, requiredAmount) {
3063
3066
  const coinsWithAsset = coins.filter((coin) => coin.assets?.some((a) => a.assetId === assetId));
@@ -3094,7 +3097,7 @@ function selectedCoinsToAssetInputs(selectedCoins) {
3094
3097
  }
3095
3098
  function toXOnlySignerHex(pubkeyHex) {
3096
3099
  const bytes = base.hex.decode(pubkeyHex);
3097
- if (bytes.length === 32 || bytes.length === 33) return base.hex.encode(chunkWIFL5QYZ_cjs.toXOnly(bytes, "signer key"));
3100
+ if (bytes.length === 32 || bytes.length === 33) return base.hex.encode(chunk3OKEUDHU_cjs.toXOnly(bytes, "signer key"));
3098
3101
  throw new Error(`invalid signer pubkey length: expected 32 or 33 bytes, got ${bytes.length}`);
3099
3102
  }
3100
3103
  function signerSetFromInfo(info) {
@@ -3141,13 +3144,13 @@ var toTimelock = (value) => ({
3141
3144
  var toSeconds = (t) => t.type === "seconds" ? t.value : t.value * NOMINAL_BLOCK_SECONDS;
3142
3145
  function assertTimelockInPolicy(timelock, policy, label, overrideOption) {
3143
3146
  if (policy.requireSeconds && timelock.type === "blocks") {
3144
- throw new chunk5MLC2HU3_cjs.ServerResponseMismatchError(
3147
+ throw new chunk57636V35_cjs.ServerResponseMismatchError(
3145
3148
  `${label} rejected: block-typed timelocks are not accepted (got ${timelock.value})`
3146
3149
  );
3147
3150
  }
3148
3151
  const seconds = toSeconds(timelock);
3149
3152
  if (seconds < policy.minSeconds) {
3150
- throw new chunk5MLC2HU3_cjs.ServerResponseMismatchError(
3153
+ throw new chunk57636V35_cjs.ServerResponseMismatchError(
3151
3154
  `${label} rejected: ${timelock.value} ${timelock.type} is below the ${policy.minSeconds}s floor; pass ${overrideOption}: ${seconds}n to Wallet.create to lower it`
3152
3155
  );
3153
3156
  }
@@ -3168,7 +3171,7 @@ function resolveBatchExpiryPolicy(network, overrides) {
3168
3171
  }
3169
3172
  function assertValidBatchExpiry(batchExpiry, policy) {
3170
3173
  if (policy.advertisedVtxoTreeExpiry !== void 0 && batchExpiry !== policy.advertisedVtxoTreeExpiry) {
3171
- throw new chunk5MLC2HU3_cjs.ServerResponseMismatchError(
3174
+ throw new chunk57636V35_cjs.ServerResponseMismatchError(
3172
3175
  `batch expiry rejected: ${batchExpiry} does not match the advertised vtxoTreeExpiry ${policy.advertisedVtxoTreeExpiry}`
3173
3176
  );
3174
3177
  }
@@ -3198,21 +3201,21 @@ function resolveCheckpointExitDelayPolicy(network, overrides) {
3198
3201
  function assertValidServerUnrollScript(checkpointTapscript, policy) {
3199
3202
  let script;
3200
3203
  try {
3201
- script = chunk5MLC2HU3_cjs.CSVMultisigTapscript.decode(base.hex.decode(checkpointTapscript));
3204
+ script = chunk57636V35_cjs.CSVMultisigTapscript.decode(base.hex.decode(checkpointTapscript));
3202
3205
  } catch (e) {
3203
- throw new chunk5MLC2HU3_cjs.ServerResponseMismatchError(
3206
+ throw new chunk57636V35_cjs.ServerResponseMismatchError(
3204
3207
  `checkpoint exit delay rejected: invalid checkpointTapscript from server (${e instanceof Error ? e.message : String(e)})`
3205
3208
  );
3206
3209
  }
3207
3210
  if (policy.advertisedForfeitPubkey !== void 0) {
3208
3211
  const { pubkeys } = script.params;
3209
3212
  if (pubkeys.length !== 1) {
3210
- throw new chunk5MLC2HU3_cjs.ServerResponseMismatchError(
3213
+ throw new chunk57636V35_cjs.ServerResponseMismatchError(
3211
3214
  `checkpoint exit delay rejected: checkpointTapscript must commit to exactly one pubkey, got ${pubkeys.length} [${pubkeys.map(base.hex.encode).join(", ")}]`
3212
3215
  );
3213
3216
  }
3214
3217
  if (!utils_js.equalBytes(pubkeys[0], policy.advertisedForfeitPubkey)) {
3215
- throw new chunk5MLC2HU3_cjs.ServerResponseMismatchError(
3218
+ throw new chunk57636V35_cjs.ServerResponseMismatchError(
3216
3219
  `checkpoint exit delay rejected: checkpointTapscript pubkey ${base.hex.encode(pubkeys[0])} does not match the advertised forfeitPubkey ${base.hex.encode(policy.advertisedForfeitPubkey)}`
3217
3220
  );
3218
3221
  }
@@ -3256,8 +3259,8 @@ function buildOffchainTx(inputs, outputs, serverUnrollScript) {
3256
3259
  function buildVirtualTx(inputs, outputs) {
3257
3260
  let lockTime = 0n;
3258
3261
  for (const input of inputs) {
3259
- const tapscript = chunk5MLC2HU3_cjs.decodeTapscript(chunk5MLC2HU3_cjs.scriptFromTapLeafScript(input.tapLeafScript));
3260
- if (chunk5MLC2HU3_cjs.CLTVMultisigTapscript.is(tapscript)) {
3262
+ const tapscript = chunk57636V35_cjs.decodeTapscript(chunk57636V35_cjs.scriptFromTapLeafScript(input.tapLeafScript));
3263
+ if (chunk57636V35_cjs.CLTVMultisigTapscript.is(tapscript)) {
3261
3264
  if (lockTime !== 0n) {
3262
3265
  if (isSeconds(lockTime) !== isSeconds(tapscript.params.absoluteTimelock)) {
3263
3266
  throw new Error("cannot mix seconds and blocks locktime");
@@ -3268,7 +3271,7 @@ function buildVirtualTx(inputs, outputs) {
3268
3271
  }
3269
3272
  }
3270
3273
  }
3271
- const tx = new chunk5MLC2HU3_cjs.Transaction({
3274
+ const tx = new chunk57636V35_cjs.Transaction({
3272
3275
  version: 3,
3273
3276
  lockTime: Number(lockTime)
3274
3277
  });
@@ -3278,12 +3281,12 @@ function buildVirtualTx(inputs, outputs) {
3278
3281
  index: input.vout,
3279
3282
  sequence: lockTime ? btcSigner.DEFAULT_SEQUENCE - 1 : void 0,
3280
3283
  witnessUtxo: {
3281
- script: chunk5MLC2HU3_cjs.VtxoScript.decode(input.tapTree).pkScript,
3284
+ script: chunk57636V35_cjs.VtxoScript.decode(input.tapTree).pkScript,
3282
3285
  amount: BigInt(input.value)
3283
3286
  },
3284
3287
  tapLeafScript: [input.tapLeafScript]
3285
3288
  });
3286
- chunk5MLC2HU3_cjs.setArkPsbtField(tx, i, chunk5MLC2HU3_cjs.VtxoTaprootTree, input.tapTree);
3289
+ chunk57636V35_cjs.setArkPsbtField(tx, i, chunk57636V35_cjs.VtxoTaprootTree, input.tapTree);
3287
3290
  }
3288
3291
  for (const output of outputs) {
3289
3292
  tx.addOutput(output);
@@ -3292,8 +3295,8 @@ function buildVirtualTx(inputs, outputs) {
3292
3295
  return tx;
3293
3296
  }
3294
3297
  function buildCheckpointTx(vtxo, serverUnrollScript) {
3295
- const collaborativeClosure = chunk5MLC2HU3_cjs.decodeTapscript(chunk5MLC2HU3_cjs.scriptFromTapLeafScript(vtxo.tapLeafScript));
3296
- const checkpointVtxoScript = new chunk5MLC2HU3_cjs.VtxoScript([
3298
+ const collaborativeClosure = chunk57636V35_cjs.decodeTapscript(chunk57636V35_cjs.scriptFromTapLeafScript(vtxo.tapLeafScript));
3299
+ const checkpointVtxoScript = new chunk57636V35_cjs.VtxoScript([
3297
3300
  serverUnrollScript.script,
3298
3301
  collaborativeClosure.script
3299
3302
  ]);
@@ -3369,7 +3372,7 @@ function verifyTapscriptSignatures(tx, inputIndex, requiredSigners, excludePubke
3369
3372
  const sighashType = signature.length === 65 ? signature[64] : btcSigner.SigHash.DEFAULT;
3370
3373
  const sig = signature.subarray(0, 64);
3371
3374
  if (!allowedSighashTypes.includes(sighashType)) {
3372
- const sighashName = chunk5MLC2HU3_cjs.formatSighash(sighashType);
3375
+ const sighashName = chunk57636V35_cjs.formatSighash(sighashType);
3373
3376
  throw new Error(
3374
3377
  `Unallowed sighash type ${sighashName} for input ${inputIndex}, pubkey ${pubKeyHex}.`
3375
3378
  );
@@ -3443,7 +3446,7 @@ function combineTapscriptSigs(signedTx, originalTx) {
3443
3446
  }
3444
3447
  function isValidArkAddress(address) {
3445
3448
  try {
3446
- chunk5MLC2HU3_cjs.ArkAddress.decode(address);
3449
+ chunk57636V35_cjs.ArkAddress.decode(address);
3447
3450
  return true;
3448
3451
  } catch (e) {
3449
3452
  return false;
@@ -3451,16 +3454,16 @@ function isValidArkAddress(address) {
3451
3454
  }
3452
3455
  function matchServerCheckpoints(serverCheckpointTxs, expectedCheckpoints, context) {
3453
3456
  if (serverCheckpointTxs.length !== expectedCheckpoints.length) {
3454
- throw new chunk5MLC2HU3_cjs.ServerResponseMismatchError(
3457
+ throw new chunk57636V35_cjs.ServerResponseMismatchError(
3455
3458
  `${context} returned ${serverCheckpointTxs.length} checkpoints, expected ${expectedCheckpoints.length}`
3456
3459
  );
3457
3460
  }
3458
3461
  const byTxid = new Map(expectedCheckpoints.map((c) => [c.id, c]));
3459
3462
  return serverCheckpointTxs.map((encoded, index) => {
3460
- const server = chunk5MLC2HU3_cjs.Transaction.fromPSBT(base.base64.decode(encoded));
3463
+ const server = chunk57636V35_cjs.Transaction.fromPSBT(base.base64.decode(encoded));
3461
3464
  const local = byTxid.get(server.id);
3462
3465
  if (!local) {
3463
- throw new chunk5MLC2HU3_cjs.ServerResponseMismatchError(
3466
+ throw new chunk57636V35_cjs.ServerResponseMismatchError(
3464
3467
  `${context} checkpoint ${index} txid ${server.id} does not match any submitted checkpoint`
3465
3468
  );
3466
3469
  }
@@ -3470,14 +3473,14 @@ function matchServerCheckpoints(serverCheckpointTxs, expectedCheckpoints, contex
3470
3473
  }
3471
3474
  function assertSubmittedArkTxid(response, signedArkTx, context) {
3472
3475
  if (response.arkTxid !== signedArkTx.id) {
3473
- throw new chunk5MLC2HU3_cjs.ServerResponseMismatchError(
3476
+ throw new chunk57636V35_cjs.ServerResponseMismatchError(
3474
3477
  `${context} returned ark txid ${response.arkTxid}, expected ${signedArkTx.id}`
3475
3478
  );
3476
3479
  }
3477
3480
  if (response.finalArkTx === void 0) return;
3478
- const finalTxid = chunk5MLC2HU3_cjs.Transaction.fromPSBT(base.base64.decode(response.finalArkTx)).id;
3481
+ const finalTxid = chunk57636V35_cjs.Transaction.fromPSBT(base.base64.decode(response.finalArkTx)).id;
3479
3482
  if (finalTxid !== signedArkTx.id) {
3480
- throw new chunk5MLC2HU3_cjs.ServerResponseMismatchError(
3483
+ throw new chunk57636V35_cjs.ServerResponseMismatchError(
3481
3484
  `${context} returned final ark tx ${finalTxid}, expected ${signedArkTx.id}`
3482
3485
  );
3483
3486
  }
@@ -3496,10 +3499,10 @@ function assertServerSignedLeaf(serverTx, localTx, inputIndex, serverPubkeyHex,
3496
3499
  [serverPubkeyHex],
3497
3500
  void 0,
3498
3501
  void 0,
3499
- payment_js.tapLeafHash(chunk5MLC2HU3_cjs.scriptFromTapLeafScript(leaf))
3502
+ payment_js.tapLeafHash(chunk57636V35_cjs.scriptFromTapLeafScript(leaf))
3500
3503
  );
3501
3504
  } catch (error) {
3502
- throw new chunk5MLC2HU3_cjs.ServerResponseMismatchError(
3505
+ throw new chunk57636V35_cjs.ServerResponseMismatchError(
3503
3506
  `${context}: input ${inputIndex} is not signed by the server on the leaf being spent (${error instanceof Error ? error.message : String(error)})`
3504
3507
  );
3505
3508
  }
@@ -3508,20 +3511,20 @@ function assertCheckpointsMatchInputs(checkpoints, inputs, unrollCandidates, con
3508
3511
  const byOutpoint = new Map(inputs.map((input) => [`${input.txid}:${input.vout}`, input]));
3509
3512
  for (const [index, checkpoint] of checkpoints.entries()) {
3510
3513
  if (checkpoint.inputsLength !== 1) {
3511
- throw new chunk5MLC2HU3_cjs.ServerResponseMismatchError(
3514
+ throw new chunk57636V35_cjs.ServerResponseMismatchError(
3512
3515
  `${context}: checkpoint ${index} spends ${checkpoint.inputsLength} inputs, expected 1`
3513
3516
  );
3514
3517
  }
3515
3518
  const spent = checkpoint.getInput(0);
3516
3519
  if (!spent.txid || spent.index === void 0) {
3517
- throw new chunk5MLC2HU3_cjs.ServerResponseMismatchError(
3520
+ throw new chunk57636V35_cjs.ServerResponseMismatchError(
3518
3521
  `${context}: checkpoint ${index} has no input outpoint`
3519
3522
  );
3520
3523
  }
3521
3524
  const outpoint = `${base.hex.encode(spent.txid)}:${spent.index}`;
3522
3525
  const input = byOutpoint.get(outpoint);
3523
3526
  if (!input) {
3524
- throw new chunk5MLC2HU3_cjs.ServerResponseMismatchError(
3527
+ throw new chunk57636V35_cjs.ServerResponseMismatchError(
3525
3528
  `${context}: checkpoint ${index} spends ${outpoint}, which is not one of the requested virtual outputs`
3526
3529
  );
3527
3530
  }
@@ -3529,7 +3532,7 @@ function assertCheckpointsMatchInputs(checkpoints, inputs, unrollCandidates, con
3529
3532
  (unroll) => buildCheckpointTx(input, unroll).tx.id === checkpoint.id
3530
3533
  );
3531
3534
  if (!rebuilt) {
3532
- throw new chunk5MLC2HU3_cjs.ServerResponseMismatchError(
3535
+ throw new chunk57636V35_cjs.ServerResponseMismatchError(
3533
3536
  `${context}: checkpoint ${index} txid ${checkpoint.id} differs from the checkpoint built locally for ${outpoint}`
3534
3537
  );
3535
3538
  }
@@ -3555,9 +3558,9 @@ async function submitOffchainTx(provider, offchainTx, signer, hooks, options) {
3555
3558
  const matched = matchServerCheckpoints(signedCheckpointTxs, offchainTx.checkpoints, "submitTx");
3556
3559
  matched.forEach(({ server }, index) => {
3557
3560
  try {
3558
- chunk5MLC2HU3_cjs.assertAllowedSighashTypes(server);
3561
+ chunk57636V35_cjs.assertAllowedSighashTypes(server);
3559
3562
  } catch (error) {
3560
- throw new chunk5MLC2HU3_cjs.ServerResponseMismatchError(
3563
+ throw new chunk57636V35_cjs.ServerResponseMismatchError(
3561
3564
  `submitTx checkpoint ${index}: ${error instanceof Error ? error.message : String(error)}`
3562
3565
  );
3563
3566
  }
@@ -3565,12 +3568,12 @@ async function submitOffchainTx(provider, offchainTx, signer, hooks, options) {
3565
3568
  const verify = options?.verifyServerSignatures;
3566
3569
  if (verify) {
3567
3570
  if (response.finalArkTx === void 0) {
3568
- throw new chunk5MLC2HU3_cjs.ServerResponseMismatchError(
3571
+ throw new chunk57636V35_cjs.ServerResponseMismatchError(
3569
3572
  "submitTx: server returned no final ark tx to verify its signatures against"
3570
3573
  );
3571
3574
  }
3572
- const finalArkTx = chunk5MLC2HU3_cjs.Transaction.fromPSBT(base.base64.decode(response.finalArkTx));
3573
- const serverPubkeyHex = base.hex.encode(chunkWIFL5QYZ_cjs.toXOnly(verify.serverPubkey, "server key"));
3575
+ const finalArkTx = chunk57636V35_cjs.Transaction.fromPSBT(base.base64.decode(response.finalArkTx));
3576
+ const serverPubkeyHex = base.hex.encode(chunk3OKEUDHU_cjs.toXOnly(verify.serverPubkey, "server key"));
3574
3577
  for (let i = 0; i < offchainTx.arkTx.inputsLength; i++) {
3575
3578
  assertServerSignedLeaf(
3576
3579
  finalArkTx,
@@ -3626,12 +3629,12 @@ function claimWithPreimageIdentity(identity, preimage) {
3626
3629
  return {
3627
3630
  ...identity,
3628
3631
  sign: async (tx, inputIndexes) => {
3629
- const signed = chunk5MLC2HU3_cjs.Transaction.fromPSBT(
3632
+ const signed = chunk57636V35_cjs.Transaction.fromPSBT(
3630
3633
  (await identity.sign(tx.clone(), inputIndexes)).toPSBT()
3631
3634
  );
3632
3635
  const indexes = inputIndexes ?? Array.from({ length: signed.inputsLength }, (_, i) => i);
3633
3636
  for (const index of indexes) {
3634
- chunk5MLC2HU3_cjs.setArkPsbtField(signed, index, chunk5MLC2HU3_cjs.ConditionWitness, [preimage]);
3637
+ chunk57636V35_cjs.setArkPsbtField(signed, index, chunk57636V35_cjs.ConditionWitness, [preimage]);
3635
3638
  }
3636
3639
  return signed;
3637
3640
  }
@@ -3823,7 +3826,7 @@ function extendCoinWithTapscript(boardingTapscript, utxo) {
3823
3826
  };
3824
3827
  }
3825
3828
  function deriveContractTapscripts(contract) {
3826
- const handler = chunkWIFL5QYZ_cjs.contractHandlers.get(contract.type);
3829
+ const handler = chunk3OKEUDHU_cjs.contractHandlers.get(contract.type);
3827
3830
  if (!handler) {
3828
3831
  throw new Error(`No handler for contract type '${contract.type}'`);
3829
3832
  }
@@ -3894,7 +3897,7 @@ function getRandomId() {
3894
3897
  }
3895
3898
  function isValidArkAddress2(address) {
3896
3899
  try {
3897
- chunk5MLC2HU3_cjs.ArkAddress.decode(address);
3900
+ chunk57636V35_cjs.ArkAddress.decode(address);
3898
3901
  return true;
3899
3902
  } catch (e) {
3900
3903
  return false;
@@ -3922,7 +3925,7 @@ function assertRecipientArkAddress(encoded, address, context) {
3922
3925
  function assertTapTreeDerivesAddress(encoded, tapTree, address) {
3923
3926
  let derived;
3924
3927
  try {
3925
- derived = chunk5MLC2HU3_cjs.VtxoScript.decode(tapTree).pkScript;
3928
+ derived = chunk57636V35_cjs.VtxoScript.decode(tapTree).pkScript;
3926
3929
  } catch (e) {
3927
3930
  throw new Error(
3928
3931
  `Invalid tapTree for ${encoded}: ${e instanceof Error ? e.message : String(e)}`
@@ -3939,7 +3942,7 @@ function validateRecipients(recipients, dustAmount, context) {
3939
3942
  for (const recipient of recipients) {
3940
3943
  let address;
3941
3944
  try {
3942
- address = chunk5MLC2HU3_cjs.ArkAddress.decode(recipient.address);
3945
+ address = chunk57636V35_cjs.ArkAddress.decode(recipient.address);
3943
3946
  } catch (e) {
3944
3947
  throw new Error(`Invalid Arkade address: ${recipient.address}`);
3945
3948
  }
@@ -3964,7 +3967,7 @@ function validateRecipients(recipients, dustAmount, context) {
3964
3967
 
3965
3968
  // src/contracts/spendability.ts
3966
3969
  function isContractGenericallySpendable(contract) {
3967
- return chunkWIFL5QYZ_cjs.contractHandlers.get(contract.type)?.isGenericallySpendable?.(contract) === true;
3970
+ return chunk3OKEUDHU_cjs.contractHandlers.get(contract.type)?.isGenericallySpendable?.(contract) === true;
3968
3971
  }
3969
3972
  function gatedContracts(contracts) {
3970
3973
  const gated = /* @__PURE__ */ new Map();
@@ -3977,7 +3980,7 @@ function gateExclusion(gated) {
3977
3980
  return (vtxo) => {
3978
3981
  const type = vtxo.script === void 0 ? void 0 : gated.get(vtxo.script);
3979
3982
  if (type === void 0) return void 0;
3980
- if (!chunkWIFL5QYZ_cjs.contractHandlers.has(type)) {
3983
+ if (!chunk3OKEUDHU_cjs.contractHandlers.has(type)) {
3981
3984
  return `at ${vtxo.script} (contract type '${type}') has no handler registered in this build`;
3982
3985
  }
3983
3986
  return `at ${vtxo.script} (contract type '${type}') is not generically spendable`;
@@ -4013,7 +4016,7 @@ function selectPendingRecoveryOutpoints(contractsWithVtxos, signerSet, nowSecond
4013
4016
  continue;
4014
4017
  }
4015
4018
  for (const v of vtxos) {
4016
- if (!chunk5MLC2HU3_cjs.hasTerminalSpend(v) && !v.isSwept && !v.isUnrolled) {
4019
+ if (!chunk57636V35_cjs.hasTerminalSpend(v) && !v.isSwept && !v.isUnrolled) {
4017
4020
  out.add(`${v.txid}:${v.vout}`);
4018
4021
  }
4019
4022
  }
@@ -4048,10 +4051,10 @@ function byValueDescending(vtxos) {
4048
4051
  return [...vtxos].sort((a, b) => b.value - a.value);
4049
4052
  }
4050
4053
  async function fetchTimeHeight(wallet) {
4051
- return chunk5MLC2HU3_cjs.resolveTimeHeight(wallet.onchainProvider);
4054
+ return chunk57636V35_cjs.resolveTimeHeight(wallet.onchainProvider);
4052
4055
  }
4053
4056
  function canMigrateBySend(vtxo, now) {
4054
- if (!chunk5MLC2HU3_cjs.canSpendOffchain(vtxo, now)) return false;
4057
+ if (!chunk57636V35_cjs.canSpendOffchain(vtxo, now)) return false;
4055
4058
  return vtxo.expiresAt !== void 0 || vtxo.expiresAtHeight !== void 0;
4056
4059
  }
4057
4060
  function byExpiryAscending(vtxos, now) {
@@ -4059,7 +4062,7 @@ function byExpiryAscending(vtxos, now) {
4059
4062
  if (vtxo.isSwept) return -Infinity;
4060
4063
  if (vtxo.expiresAt !== void 0) return vtxo.expiresAt.getTime();
4061
4064
  if (vtxo.expiresAtHeight !== void 0) {
4062
- return chunk5MLC2HU3_cjs.isPastExpiry(vtxo, now) ? -Infinity : Infinity;
4065
+ return chunk57636V35_cjs.isPastExpiry(vtxo, now) ? -Infinity : Infinity;
4063
4066
  }
4064
4067
  return Infinity;
4065
4068
  };
@@ -4086,7 +4089,7 @@ function priceSettlementInputs(vtxos, estimator) {
4086
4089
  const payable = [];
4087
4090
  const net = /* @__PURE__ */ new Map();
4088
4091
  for (const vtxo of vtxos) {
4089
- const inputFee = estimator.evalOffchainInput(chunk5MLC2HU3_cjs.toOffchainInputFeeParams(vtxo));
4092
+ const inputFee = estimator.evalOffchainInput(chunk57636V35_cjs.toOffchainInputFeeParams(vtxo));
4090
4093
  if (inputFee.satoshis >= vtxo.value) {
4091
4094
  continue;
4092
4095
  }
@@ -4112,7 +4115,7 @@ function deductOffchainOutputFee(subtotal, estimator, arkAddress) {
4112
4115
  }
4113
4116
  const outputFee = estimator.evalOffchainOutput({
4114
4117
  amount: subtotal,
4115
- script: base.hex.encode(chunk5MLC2HU3_cjs.ArkAddress.decode(arkAddress).pkScript)
4118
+ script: base.hex.encode(chunk57636V35_cjs.ArkAddress.decode(arkAddress).pkScript)
4116
4119
  });
4117
4120
  return subtotal - BigInt(outputFee.satoshis);
4118
4121
  }
@@ -4130,10 +4133,10 @@ var DEFAULT_SETTLEMENT_CONFIG = {
4130
4133
  };
4131
4134
  function getRecoverableVtxos(vtxos, dustAmount, now) {
4132
4135
  return vtxos.filter((vtxo) => {
4133
- if (chunk5MLC2HU3_cjs.canRecoverOnchain(vtxo, now)) {
4136
+ if (chunk57636V35_cjs.canRecoverOnchain(vtxo, now)) {
4134
4137
  return true;
4135
4138
  }
4136
- if (chunk5MLC2HU3_cjs.canSpendOffchain(vtxo, now) && vtxo.isPreconfirmed && isSubdust(vtxo, dustAmount)) {
4139
+ if (chunk57636V35_cjs.canSpendOffchain(vtxo, now) && vtxo.isPreconfirmed && isSubdust(vtxo, dustAmount)) {
4137
4140
  return true;
4138
4141
  }
4139
4142
  return false;
@@ -4165,7 +4168,7 @@ function getRecoverableWithSubdust(vtxos, dustAmount, now) {
4165
4168
  function isVtxoExpiringSoon(vtxo, thresholdMs) {
4166
4169
  if (vtxo.isUnrolled) return false;
4167
4170
  const realThresholdMs = thresholdMs <= 100 ? DEFAULT_THRESHOLD_MS : thresholdMs;
4168
- const expiresAt = chunk5MLC2HU3_cjs.normalizeVtxo(vtxo).expiresAt;
4171
+ const expiresAt = chunk57636V35_cjs.normalizeVtxo(vtxo).expiresAt;
4169
4172
  if (expiresAt === void 0) return false;
4170
4173
  const now = Date.now();
4171
4174
  const batchExpiry = expiresAt.getTime();
@@ -4176,7 +4179,7 @@ function getExpiringAndRecoverableVtxos(vtxos, thresholdMs, dustAmount, now) {
4176
4179
  return vtxos.filter(
4177
4180
  // The leading exclusion covers the `isSubdust` arm too, which is a value
4178
4181
  // property and would otherwise re-admit an exited coin on its own.
4179
- (vtxo) => !vtxo.isUnrolled && (isVtxoExpiringSoon(vtxo, thresholdMs) || chunk5MLC2HU3_cjs.canRecoverOnchain(vtxo, now) || isSubdust(vtxo, dustAmount))
4182
+ (vtxo) => !vtxo.isUnrolled && (isVtxoExpiringSoon(vtxo, thresholdMs) || chunk57636V35_cjs.canRecoverOnchain(vtxo, now) || isSubdust(vtxo, dustAmount))
4180
4183
  );
4181
4184
  }
4182
4185
  function isMigrationCapable(wallet) {
@@ -4775,11 +4778,11 @@ var VtxoManager = class _VtxoManager {
4775
4778
  `Sweep not economical: output ${outputAmount} sats after ${fee} sats fee is below dust (${dustAmount} sats)`
4776
4779
  );
4777
4780
  }
4778
- const tx = new chunk5MLC2HU3_cjs.Transaction();
4781
+ const tx = new chunk57636V35_cjs.Transaction();
4779
4782
  for (const utxo of expiredUtxos) {
4780
- const utxoScript = chunk5MLC2HU3_cjs.VtxoScript.decode(utxo.tapTree);
4783
+ const utxoScript = chunk57636V35_cjs.VtxoScript.decode(utxo.tapTree);
4781
4784
  const utxoExitLeaf = utxoScript.leaves.find(
4782
- (leaf) => chunk5MLC2HU3_cjs.CSVMultisigTapscript.isScriptValid(chunk5MLC2HU3_cjs.scriptFromTapLeafScript(leaf)) === true
4785
+ (leaf) => chunk57636V35_cjs.CSVMultisigTapscript.isScriptValid(chunk57636V35_cjs.scriptFromTapLeafScript(leaf)) === true
4783
4786
  );
4784
4787
  if (!utxoExitLeaf) {
4785
4788
  throw new Error(
@@ -4794,7 +4797,7 @@ var VtxoManager = class _VtxoManager {
4794
4797
  amount: BigInt(utxo.value)
4795
4798
  },
4796
4799
  tapLeafScript: [utxoExitLeaf],
4797
- sequence: chunk5MLC2HU3_cjs.getSequence(utxoExitLeaf)
4800
+ sequence: chunk57636V35_cjs.getSequence(utxoExitLeaf)
4798
4801
  });
4799
4802
  }
4800
4803
  tx.addOutputAddress(boardingAddress, outputAmount, this.getNetwork());
@@ -5037,8 +5040,8 @@ var VtxoManager = class _VtxoManager {
5037
5040
  const cls = classifyAgainstSignerSet(serverPubKey, signerSet, nowSeconds);
5038
5041
  if (cls.status === "CURRENT") continue;
5039
5042
  const live = vtxos.filter((v) => !v.isUnrolled);
5040
- const recoverable = live.filter((v) => v.isSwept && !chunk5MLC2HU3_cjs.hasTerminalSpend(v));
5041
- const spendable = live.filter((v) => !chunk5MLC2HU3_cjs.hasTerminalSpend(v) && !v.isSwept);
5043
+ const recoverable = live.filter((v) => v.isSwept && !chunk57636V35_cjs.hasTerminalSpend(v));
5044
+ const spendable = live.filter((v) => !chunk57636V35_cjs.hasTerminalSpend(v) && !v.isSwept);
5042
5045
  const value = spendable.reduce((sum, v) => sum + v.value, 0);
5043
5046
  let recoverableCount = 0;
5044
5047
  let recoverableValue = 0;
@@ -5051,7 +5054,7 @@ var VtxoManager = class _VtxoManager {
5051
5054
  awaitingSweepCount = spendable.length;
5052
5055
  awaitingSweepValue = value;
5053
5056
  for (const v of spendable) {
5054
- const exp = chunk5MLC2HU3_cjs.toBatchExpiry(v);
5057
+ const exp = chunk57636V35_cjs.toBatchExpiry(v);
5055
5058
  if (exp !== void 0 && (nextSweepEta === void 0 || exp < nextSweepEta)) {
5056
5059
  nextSweepEta = exp;
5057
5060
  }
@@ -5312,7 +5315,7 @@ var VtxoManager = class _VtxoManager {
5312
5315
  /** Decodes the boarding tapscript exit path to extract the CSV timelock. */
5313
5316
  getBoardingTimelock() {
5314
5317
  const wallet = this.getSweepWallet();
5315
- const exitScript = chunk5MLC2HU3_cjs.CSVMultisigTapscript.decode(
5318
+ const exitScript = chunk57636V35_cjs.CSVMultisigTapscript.decode(
5316
5319
  base.hex.decode(wallet.boardingTapscript.exitScript)
5317
5320
  );
5318
5321
  return exitScript.params.timelock;
@@ -5443,8 +5446,8 @@ var VtxoManager = class _VtxoManager {
5443
5446
  * or doesn't carry the metadata.
5444
5447
  */
5445
5448
  extractSpentOutpoint(error) {
5446
- const ark = chunk5MLC2HU3_cjs.maybeArkError(error);
5447
- if (!chunk5MLC2HU3_cjs.isArkError(ark, chunk5MLC2HU3_cjs.ArkErrorName.VTXO_ALREADY_SPENT)) return void 0;
5449
+ const ark = chunk57636V35_cjs.maybeArkError(error);
5450
+ if (!chunk57636V35_cjs.isArkError(ark, chunk57636V35_cjs.ArkErrorName.VTXO_ALREADY_SPENT)) return void 0;
5448
5451
  const raw = ark.metadata?.vtxo_outpoint;
5449
5452
  if (typeof raw !== "string") return void 0;
5450
5453
  const [txid, voutStr] = raw.split(":");
@@ -5634,7 +5637,7 @@ var VtxoManager = class _VtxoManager {
5634
5637
  if (filteredVtxos.length >= MAX_VTXOS_PER_SETTLEMENT) {
5635
5638
  break;
5636
5639
  }
5637
- const inputFee = estimator.evalOffchainInput(chunk5MLC2HU3_cjs.toOffchainInputFeeParams(v));
5640
+ const inputFee = estimator.evalOffchainInput(chunk57636V35_cjs.toOffchainInputFeeParams(v));
5638
5641
  if (inputFee.satoshis >= v.value) {
5639
5642
  continue;
5640
5643
  }
@@ -5654,7 +5657,7 @@ var VtxoManager = class _VtxoManager {
5654
5657
  const arkAddress = await this.wallet.getAddress();
5655
5658
  const outputFee = estimator.evalOffchainOutput({
5656
5659
  amount: totalAmount,
5657
- script: base.hex.encode(chunk5MLC2HU3_cjs.ArkAddress.decode(arkAddress).pkScript)
5660
+ script: base.hex.encode(chunk57636V35_cjs.ArkAddress.decode(arkAddress).pkScript)
5658
5661
  });
5659
5662
  totalAmount -= BigInt(outputFee.satoshis);
5660
5663
  if (totalAmount < dustAmount) return;
@@ -5734,7 +5737,7 @@ var ArkNote = class _ArkNote {
5734
5737
  this.value = value;
5735
5738
  this.HRP = HRP;
5736
5739
  const preimageHash = utils_js.sha256(this.preimage);
5737
- this.vtxoScript = new chunk5MLC2HU3_cjs.VtxoScript([noteTapscript(preimageHash)]);
5740
+ this.vtxoScript = new chunk57636V35_cjs.VtxoScript([noteTapscript(preimageHash)]);
5738
5741
  const leaf = this.vtxoScript.leaves[0];
5739
5742
  this.txid = base.hex.encode(new Uint8Array(preimageHash).reverse());
5740
5743
  this.tapTree = this.vtxoScript.encode();
@@ -5901,7 +5904,7 @@ var ArkadeCash = class _ArkadeCash {
5901
5904
  const privateKey = data.slice(1, 33);
5902
5905
  const serverPubKey = data.slice(33, 65);
5903
5906
  const sequence = new DataView(data.buffer, data.byteOffset + 65, 4).getUint32(0, false);
5904
- const csvTimelock = chunk5MLC2HU3_cjs.sequenceToTimelock(sequence);
5907
+ const csvTimelock = chunk57636V35_cjs.sequenceToTimelock(sequence);
5905
5908
  return new _ArkadeCash(privateKey, serverPubKey, csvTimelock, decoded.prefix);
5906
5909
  }
5907
5910
  toString() {
@@ -5909,7 +5912,7 @@ var ArkadeCash = class _ArkadeCash {
5909
5912
  data[0] = _ArkadeCash.Version;
5910
5913
  data.set(this._privateKey, 1);
5911
5914
  data.set(this._serverPubKey, 33);
5912
- const sequence = chunk5MLC2HU3_cjs.timelockToSequence(this.csvTimelock);
5915
+ const sequence = chunk57636V35_cjs.timelockToSequence(this.csvTimelock);
5913
5916
  new DataView(data.buffer, data.byteOffset + 65, 4).setUint32(0, sequence, false);
5914
5917
  const words = base.bech32m.toWords(data);
5915
5918
  return base.bech32m.encode(this.hrp, words, 1023);
@@ -5918,7 +5921,7 @@ var ArkadeCash = class _ArkadeCash {
5918
5921
  return SingleKey.fromPrivateKey(this._privateKey);
5919
5922
  }
5920
5923
  get vtxoScript() {
5921
- return new chunkWIFL5QYZ_cjs.DefaultVtxo.Script({
5924
+ return new chunk3OKEUDHU_cjs.DefaultVtxo.Script({
5922
5925
  pubKey: this._publicKey,
5923
5926
  serverPubKey: this._serverPubKey,
5924
5927
  csvTimelock: this.csvTimelock
@@ -6179,7 +6182,7 @@ async function captureExitBranch(params) {
6179
6182
  const nonCommitment = ordered.filter((c) => chainTxTypeToChainedExit(c.type) !== 1 /* Commitment */).map((c) => c.txid);
6180
6183
  if (nonCommitment.length > 0) {
6181
6184
  for (const psbt of await resolver.getVirtualTxs(nonCommitment)) {
6182
- psbtByTxid.set(chunk5MLC2HU3_cjs.Transaction.fromPSBT(base.base64.decode(psbt)).id, psbt);
6185
+ psbtByTxid.set(chunk57636V35_cjs.Transaction.fromPSBT(base.base64.decode(psbt)).id, psbt);
6183
6186
  }
6184
6187
  }
6185
6188
  }
@@ -6222,10 +6225,10 @@ var IndexerExitDataSource = class {
6222
6225
  while (hasMore) {
6223
6226
  const { chain: page, page: meta } = await this.indexer.getVtxoChain(
6224
6227
  { txid: vtxo.txid, vout: vtxo.vout },
6225
- { pageIndex, pageSize: chunk5MLC2HU3_cjs.DEFAULT_PAGE_SIZE }
6228
+ { pageIndex, pageSize: chunk57636V35_cjs.DEFAULT_PAGE_SIZE }
6226
6229
  );
6227
6230
  chain.push(...page);
6228
- hasMore = meta ? page.length === chunk5MLC2HU3_cjs.DEFAULT_PAGE_SIZE : false;
6231
+ hasMore = meta ? page.length === chunk57636V35_cjs.DEFAULT_PAGE_SIZE : false;
6229
6232
  pageIndex++;
6230
6233
  }
6231
6234
  return chain;
@@ -6237,12 +6240,12 @@ var IndexerExitDataSource = class {
6237
6240
  while (hasMore) {
6238
6241
  const { txs, page } = await this.indexer.getVirtualTxs(txids, {
6239
6242
  pageIndex,
6240
- pageSize: chunk5MLC2HU3_cjs.DEFAULT_PAGE_SIZE
6243
+ pageSize: chunk57636V35_cjs.DEFAULT_PAGE_SIZE
6241
6244
  });
6242
6245
  for (const psbt of txs) {
6243
- out.set(chunk5MLC2HU3_cjs.Transaction.fromPSBT(base.base64.decode(psbt)).id, psbt);
6246
+ out.set(chunk57636V35_cjs.Transaction.fromPSBT(base.base64.decode(psbt)).id, psbt);
6244
6247
  }
6245
- hasMore = page ? txs.length === chunk5MLC2HU3_cjs.DEFAULT_PAGE_SIZE : false;
6248
+ hasMore = page ? txs.length === chunk57636V35_cjs.DEFAULT_PAGE_SIZE : false;
6246
6249
  pageIndex++;
6247
6250
  }
6248
6251
  return out;
@@ -6263,7 +6266,7 @@ function chainedTxTypeToChainTxType(t) {
6263
6266
  }
6264
6267
  }
6265
6268
  function psbtInputTxids(psbtBase64) {
6266
- const tx = chunk5MLC2HU3_cjs.Transaction.fromPSBT(base.base64.decode(psbtBase64));
6269
+ const tx = chunk57636V35_cjs.Transaction.fromPSBT(base.base64.decode(psbtBase64));
6267
6270
  const ids = [];
6268
6271
  for (let i = 0; i < tx.inputsLength; i++) {
6269
6272
  const txid = tx.getInput(i).txid;
@@ -6622,10 +6625,10 @@ async function resolveArkInfo(arkProvider, walletRepository) {
6622
6625
  try {
6623
6626
  info = await arkProvider.getInfo();
6624
6627
  } catch (err) {
6625
- if (!chunk5MLC2HU3_cjs.isRetryableProviderError(err)) throw err;
6628
+ if (!chunk57636V35_cjs.isRetryableProviderError(err)) throw err;
6626
6629
  const snapshot = await loadArkInfoSnapshot(walletRepository);
6627
6630
  if (!snapshot) {
6628
- throw new chunk5MLC2HU3_cjs.ProviderUnavailableError(
6631
+ throw new chunk57636V35_cjs.ProviderUnavailableError(
6629
6632
  "Arkade server info is unavailable and no cached snapshot exists",
6630
6633
  { cause: err }
6631
6634
  );
@@ -7015,7 +7018,7 @@ function collectArkTxidsNeedingCreatedAt(vtxos) {
7015
7018
  return [...txids];
7016
7019
  }
7017
7020
  async function buildTransactionHistory(vtxos, allBoardingTxs, commitmentsToIgnore, resolveTxCreatedAt) {
7018
- const fromOldestVtxo = vtxos.map(chunk5MLC2HU3_cjs.normalizeVtxo).sort((a, b) => a.createdAt.getTime() - b.createdAt.getTime());
7021
+ const fromOldestVtxo = vtxos.map(chunk57636V35_cjs.normalizeVtxo).sort((a, b) => a.createdAt.getTime() - b.createdAt.getTime());
7019
7022
  const txidsNeedingCreatedAt = resolveTxCreatedAt ? collectArkTxidsNeedingCreatedAt(fromOldestVtxo) : [];
7020
7023
  const resolvedCreatedAt = resolveTxCreatedAt && txidsNeedingCreatedAt.length > 0 ? await resolveTxCreatedAt(txidsNeedingCreatedAt) : /* @__PURE__ */ new Map();
7021
7024
  const unmatchedSettledBoardingTxs = allBoardingTxs.filter(isSettledBoardingReceive).sort((a, b) => a.createdAt - b.createdAt);
@@ -7179,7 +7182,7 @@ var AssetManager = class extends ReadonlyAssetManager {
7179
7182
  const virtualCoins = await this.wallet.getSpendableVtxos({
7180
7183
  withRecoverable: false
7181
7184
  });
7182
- const controlAssetRef = params.controlAssetId ? chunkGVHUHTRH_cjs.AssetRef.fromId(chunkGVHUHTRH_cjs.AssetId.fromString(params.controlAssetId)) : null;
7185
+ const controlAssetRef = params.controlAssetId ? chunk3KW4TWP2_cjs.AssetRef.fromId(chunk3KW4TWP2_cjs.AssetId.fromString(params.controlAssetId)) : null;
7183
7186
  const coinSelection = selectVirtualCoins(virtualCoins, Number(this.wallet.dustAmount));
7184
7187
  let totalBtcSelected = 0n;
7185
7188
  const assetChanges = /* @__PURE__ */ new Map();
@@ -7192,8 +7195,8 @@ var AssetManager = class extends ReadonlyAssetManager {
7192
7195
  }
7193
7196
  }
7194
7197
  const groups = [];
7195
- const issuedAssetOutput = chunkGVHUHTRH_cjs.AssetOutput.create(0, params.amount);
7196
- const issuedAssetGroup = chunkGVHUHTRH_cjs.AssetGroup.create(
7198
+ const issuedAssetOutput = chunk3KW4TWP2_cjs.AssetOutput.create(0, params.amount);
7199
+ const issuedAssetGroup = chunk3KW4TWP2_cjs.AssetGroup.create(
7197
7200
  null,
7198
7201
  controlAssetRef,
7199
7202
  [],
@@ -7208,28 +7211,28 @@ var AssetManager = class extends ReadonlyAssetManager {
7208
7211
  for (const [inputIndex, assets] of assetInputs) {
7209
7212
  for (const asset of assets) {
7210
7213
  if (asset.assetId !== assetId) continue;
7211
- changeInputs.push(chunkGVHUHTRH_cjs.AssetInput.create(inputIndex, asset.amount));
7214
+ changeInputs.push(chunk3KW4TWP2_cjs.AssetInput.create(inputIndex, asset.amount));
7212
7215
  }
7213
7216
  }
7214
7217
  groups.push(
7215
- chunkGVHUHTRH_cjs.AssetGroup.create(
7216
- chunkGVHUHTRH_cjs.AssetId.fromString(assetId),
7218
+ chunk3KW4TWP2_cjs.AssetGroup.create(
7219
+ chunk3KW4TWP2_cjs.AssetId.fromString(assetId),
7217
7220
  null,
7218
7221
  changeInputs,
7219
- [chunkGVHUHTRH_cjs.AssetOutput.create(0, amount)],
7222
+ [chunk3KW4TWP2_cjs.AssetOutput.create(0, amount)],
7220
7223
  []
7221
7224
  )
7222
7225
  );
7223
7226
  }
7224
7227
  }
7225
7228
  const address = await this.wallet.getAddress();
7226
- const outputAddress = chunk5MLC2HU3_cjs.ArkAddress.decode(address);
7229
+ const outputAddress = chunk57636V35_cjs.ArkAddress.decode(address);
7227
7230
  const outputs = [
7228
7231
  {
7229
7232
  script: outputAddress.pkScript,
7230
7233
  amount: BigInt(totalBtcSelected)
7231
7234
  },
7232
- Extension.create([chunkGVHUHTRH_cjs.Packet.create(groups)]).txOut()
7235
+ Extension.create([chunk3KW4TWP2_cjs.Packet.create(groups)]).txOut()
7233
7236
  ];
7234
7237
  const { arkTxid } = await this.wallet.buildAndSubmitOffchainTx(
7235
7238
  coinSelection.inputs,
@@ -7237,7 +7240,7 @@ var AssetManager = class extends ReadonlyAssetManager {
7237
7240
  );
7238
7241
  return {
7239
7242
  arkTxId: arkTxid,
7240
- assetId: chunkGVHUHTRH_cjs.AssetId.create(arkTxid, 0).toString()
7243
+ assetId: chunk3KW4TWP2_cjs.AssetId.create(arkTxid, 0).toString()
7241
7244
  };
7242
7245
  }
7243
7246
  /**
@@ -7309,16 +7312,16 @@ var AssetManager = class extends ReadonlyAssetManager {
7309
7312
  for (const [inputIndex, assets] of assetInputs) {
7310
7313
  for (const asset of assets) {
7311
7314
  if (asset.assetId !== params.assetId) continue;
7312
- reissueInputs.push(chunkGVHUHTRH_cjs.AssetInput.create(inputIndex, asset.amount));
7315
+ reissueInputs.push(chunk3KW4TWP2_cjs.AssetInput.create(inputIndex, asset.amount));
7313
7316
  }
7314
7317
  }
7315
7318
  const totalAssetAmount = assetToReissueAmount + params.amount;
7316
- const reissueAssetIdObj = chunkGVHUHTRH_cjs.AssetId.fromString(params.assetId);
7317
- const reissueAssetGroup = chunkGVHUHTRH_cjs.AssetGroup.create(
7319
+ const reissueAssetIdObj = chunk3KW4TWP2_cjs.AssetId.fromString(params.assetId);
7320
+ const reissueAssetGroup = chunk3KW4TWP2_cjs.AssetGroup.create(
7318
7321
  reissueAssetIdObj,
7319
7322
  null,
7320
7323
  reissueInputs,
7321
- [chunkGVHUHTRH_cjs.AssetOutput.create(0, totalAssetAmount)],
7324
+ [chunk3KW4TWP2_cjs.AssetOutput.create(0, totalAssetAmount)],
7322
7325
  []
7323
7326
  );
7324
7327
  const groups = [reissueAssetGroup];
@@ -7327,27 +7330,27 @@ var AssetManager = class extends ReadonlyAssetManager {
7327
7330
  for (const [inputIndex, assets] of assetInputs) {
7328
7331
  for (const asset of assets) {
7329
7332
  if (asset.assetId !== assetId) continue;
7330
- changeInputs.push(chunkGVHUHTRH_cjs.AssetInput.create(inputIndex, asset.amount));
7333
+ changeInputs.push(chunk3KW4TWP2_cjs.AssetInput.create(inputIndex, asset.amount));
7331
7334
  }
7332
7335
  }
7333
7336
  groups.push(
7334
- chunkGVHUHTRH_cjs.AssetGroup.create(
7335
- chunkGVHUHTRH_cjs.AssetId.fromString(assetId),
7337
+ chunk3KW4TWP2_cjs.AssetGroup.create(
7338
+ chunk3KW4TWP2_cjs.AssetId.fromString(assetId),
7336
7339
  null,
7337
7340
  changeInputs,
7338
- [chunkGVHUHTRH_cjs.AssetOutput.create(0, amount)],
7341
+ [chunk3KW4TWP2_cjs.AssetOutput.create(0, amount)],
7339
7342
  []
7340
7343
  )
7341
7344
  );
7342
7345
  }
7343
7346
  const address = await this.wallet.getAddress();
7344
- const outputAddress = chunk5MLC2HU3_cjs.ArkAddress.decode(address);
7347
+ const outputAddress = chunk57636V35_cjs.ArkAddress.decode(address);
7345
7348
  const outputs = [
7346
7349
  {
7347
7350
  script: outputAddress.pkScript,
7348
7351
  amount: BigInt(totalBtcSelected)
7349
7352
  },
7350
- Extension.create([chunkGVHUHTRH_cjs.Packet.create(groups)]).txOut()
7353
+ Extension.create([chunk3KW4TWP2_cjs.Packet.create(groups)]).txOut()
7351
7354
  ];
7352
7355
  const { arkTxid } = await this.wallet.buildAndSubmitOffchainTx(selectedCoins, outputs);
7353
7356
  return arkTxid;
@@ -7414,27 +7417,27 @@ var AssetManager = class extends ReadonlyAssetManager {
7414
7417
  for (const [inputIndex, assets] of assetInputs) {
7415
7418
  for (const asset of assets) {
7416
7419
  if (asset.assetId !== assetId) continue;
7417
- changeInputs.push(chunkGVHUHTRH_cjs.AssetInput.create(inputIndex, asset.amount));
7420
+ changeInputs.push(chunk3KW4TWP2_cjs.AssetInput.create(inputIndex, asset.amount));
7418
7421
  }
7419
7422
  }
7420
7423
  groups.push(
7421
- chunkGVHUHTRH_cjs.AssetGroup.create(
7422
- chunkGVHUHTRH_cjs.AssetId.fromString(assetId),
7424
+ chunk3KW4TWP2_cjs.AssetGroup.create(
7425
+ chunk3KW4TWP2_cjs.AssetId.fromString(assetId),
7423
7426
  null,
7424
7427
  changeInputs,
7425
- amount > 0n ? [chunkGVHUHTRH_cjs.AssetOutput.create(0, amount)] : [],
7428
+ amount > 0n ? [chunk3KW4TWP2_cjs.AssetOutput.create(0, amount)] : [],
7426
7429
  []
7427
7430
  )
7428
7431
  );
7429
7432
  }
7430
7433
  const address = await this.wallet.getAddress();
7431
- const outputAddress = chunk5MLC2HU3_cjs.ArkAddress.decode(address);
7434
+ const outputAddress = chunk57636V35_cjs.ArkAddress.decode(address);
7432
7435
  const outputs = [
7433
7436
  {
7434
7437
  script: outputAddress.pkScript,
7435
7438
  amount: BigInt(totalBtcSelected)
7436
7439
  },
7437
- Extension.create([chunkGVHUHTRH_cjs.Packet.create(groups)]).txOut()
7440
+ Extension.create([chunk3KW4TWP2_cjs.Packet.create(groups)]).txOut()
7438
7441
  ];
7439
7442
  const { arkTxid } = await this.wallet.buildAndSubmitOffchainTx(selectedCoins, outputs);
7440
7443
  return arkTxid;
@@ -7459,7 +7462,7 @@ function castMetadata(metadata) {
7459
7462
  } else {
7460
7463
  throw new Error("Invalid metadata value type");
7461
7464
  }
7462
- md.push(chunkGVHUHTRH_cjs.Metadata.create(textEncoder.encode(key), valueBytes));
7465
+ md.push(chunk3KW4TWP2_cjs.Metadata.create(textEncoder.encode(key), valueBytes));
7463
7466
  }
7464
7467
  return md;
7465
7468
  }
@@ -7480,10 +7483,10 @@ var DelegateManagerImpl = class {
7480
7483
  if (vtxos.length === 0) {
7481
7484
  return { delegated: [], failed: [] };
7482
7485
  }
7483
- const destinationScript = chunk5MLC2HU3_cjs.ArkAddress.decode(destination).pkScript;
7486
+ const destinationScript = chunk57636V35_cjs.ArkAddress.decode(destination).pkScript;
7484
7487
  const arkInfo = await this.arkInfoProvider.getInfo();
7485
7488
  const delegateInfo = await this.delegateProvider.getDelegateInfo();
7486
- const eligible = vtxos.map(chunk5MLC2HU3_cjs.normalizeVtxo).filter(
7489
+ const eligible = vtxos.map(chunk57636V35_cjs.normalizeVtxo).filter(
7487
7490
  (v) => isAnnotated(v) && findDelegateTapLeaf(v, delegateInfo.pubkey) !== void 0
7488
7491
  );
7489
7492
  if (eligible.length === 0) {
@@ -7512,11 +7515,11 @@ var DelegateManagerImpl = class {
7512
7515
  const groupByExpiry = /* @__PURE__ */ new Map();
7513
7516
  let recoverableVtxos = [];
7514
7517
  for (const vtxo of eligible) {
7515
- if (chunk5MLC2HU3_cjs.canRecoverOnchain(vtxo, now)) {
7518
+ if (chunk57636V35_cjs.canRecoverOnchain(vtxo, now)) {
7516
7519
  recoverableVtxos.push(vtxo);
7517
7520
  continue;
7518
7521
  }
7519
- const expiry = chunk5MLC2HU3_cjs.toBatchExpiry(vtxo);
7522
+ const expiry = chunk57636V35_cjs.toBatchExpiry(vtxo);
7520
7523
  if (!expiry) continue;
7521
7524
  const dayKey = getDayTimestamp(expiry);
7522
7525
  groupByExpiry.set(dayKey, [...groupByExpiry.get(dayKey) ?? [], vtxo]);
@@ -7581,7 +7584,7 @@ async function delegate(identity, delegateProvider, arkInfo, delegateInfo, vtxos
7581
7584
  }
7582
7585
  if (!delegateAt) {
7583
7586
  const now = { timestamp: /* @__PURE__ */ new Date() };
7584
- const expiryTimestamp = vtxos.filter((coin) => !chunk5MLC2HU3_cjs.canRecoverOnchain(coin, now) && chunk5MLC2HU3_cjs.toBatchExpiry(coin)).reduce((min, coin) => Math.min(min, chunk5MLC2HU3_cjs.toBatchExpiry(coin)), Number.MAX_SAFE_INTEGER);
7587
+ const expiryTimestamp = vtxos.filter((coin) => !chunk57636V35_cjs.canRecoverOnchain(coin, now) && chunk57636V35_cjs.toBatchExpiry(coin)).reduce((min, coin) => Math.min(min, chunk57636V35_cjs.toBatchExpiry(coin)), Number.MAX_SAFE_INTEGER);
7585
7588
  if (!expiryTimestamp || expiryTimestamp === Number.MAX_SAFE_INTEGER) {
7586
7589
  delegateAt = new Date(Date.now() + 1 * 60 * 1e3);
7587
7590
  } else {
@@ -7610,7 +7613,7 @@ async function delegate(identity, delegateProvider, arkInfo, delegateInfo, vtxos
7610
7613
  let amount = 0n;
7611
7614
  for (const coin of vtxos) {
7612
7615
  const inputFee = estimator.evalOffchainInput({
7613
- ...chunk5MLC2HU3_cjs.toOffchainInputFeeParams(coin),
7616
+ ...chunk57636V35_cjs.toOffchainInputFeeParams(coin),
7614
7617
  type: "vtxo"
7615
7618
  });
7616
7619
  if (inputFee.value >= coin.value) {
@@ -7624,7 +7627,7 @@ async function delegate(identity, delegateProvider, arkInfo, delegateInfo, vtxos
7624
7627
  const delegateFee = BigInt(Number(fee));
7625
7628
  if (delegateFee > 0n) {
7626
7629
  outputs.push({
7627
- script: chunk5MLC2HU3_cjs.ArkAddress.decode(delegateAddress).pkScript,
7630
+ script: chunk57636V35_cjs.ArkAddress.decode(delegateAddress).pkScript,
7628
7631
  amount: delegateFee
7629
7632
  });
7630
7633
  }
@@ -7657,10 +7660,10 @@ async function delegate(identity, delegateProvider, arkInfo, delegateInfo, vtxos
7657
7660
  destinationScript
7658
7661
  );
7659
7662
  const forfeitOutputScript = btcSigner.OutScript.encode(
7660
- btcSigner.Address(chunk5MLC2HU3_cjs.getNetwork(network)).decode(forfeitAddress)
7663
+ btcSigner.Address(chunk57636V35_cjs.getNetwork(network)).decode(forfeitAddress)
7661
7664
  );
7662
7665
  const forfeits = await Promise.all(
7663
- vtxos.filter((v) => !chunk5MLC2HU3_cjs.canRecoverOnchain(v, { timestamp: /* @__PURE__ */ new Date() })).map(async (coin) => {
7666
+ vtxos.filter((v) => !chunk57636V35_cjs.canRecoverOnchain(v, { timestamp: /* @__PURE__ */ new Date() })).map(async (coin) => {
7664
7667
  const forfeit = await makeDelegateForfeitTx(
7665
7668
  coin,
7666
7669
  dust,
@@ -7685,7 +7688,7 @@ async function makeDelegateForfeitTx(input, connectorAmount, delegatePubkey, for
7685
7688
  index: input.vout,
7686
7689
  witnessUtxo: {
7687
7690
  amount: BigInt(input.value),
7688
- script: chunk5MLC2HU3_cjs.VtxoScript.decode(input.tapTree).pkScript
7691
+ script: chunk57636V35_cjs.VtxoScript.decode(input.tapTree).pkScript
7689
7692
  },
7690
7693
  sighashType: btcSigner.SigHash.ALL_ANYONECANPAY,
7691
7694
  tapLeafScript: [delegateTapLeaf]
@@ -7743,7 +7746,7 @@ async function makeSignedDelegateIntent(identity, coins, outputs, onchainOutputs
7743
7746
  expire_at: 0,
7744
7747
  cosigners_public_keys: cosignerPubKeys
7745
7748
  };
7746
- const proof = chunk5MLC2HU3_cjs.Intent.create(message, coins, outputs);
7749
+ const proof = chunk57636V35_cjs.Intent.create(message, coins, outputs);
7747
7750
  const signedProof = await identity.sign(proof);
7748
7751
  return {
7749
7752
  proof: base.base64.encode(signedProof.toPSBT()),
@@ -7761,10 +7764,10 @@ function getDayTimestamp(timestamp) {
7761
7764
  function findDelegateTapLeaf(vtxo, delegatePubkey) {
7762
7765
  if (!vtxo.tapTree) return void 0;
7763
7766
  const pk = delegatePubkey.length === 66 ? delegatePubkey.slice(2) : delegatePubkey;
7764
- const vtxoScript = chunk5MLC2HU3_cjs.VtxoScript.decode(vtxo.tapTree);
7767
+ const vtxoScript = chunk57636V35_cjs.VtxoScript.decode(vtxo.tapTree);
7765
7768
  return vtxoScript.leaves.find((tapLeaf) => {
7766
- const arkTapscript = chunk5MLC2HU3_cjs.decodeTapscript(chunk5MLC2HU3_cjs.scriptFromTapLeafScript(tapLeaf));
7767
- if (!chunk5MLC2HU3_cjs.MultisigTapscript.is(arkTapscript)) return false;
7769
+ const arkTapscript = chunk57636V35_cjs.decodeTapscript(chunk57636V35_cjs.scriptFromTapLeafScript(tapLeaf));
7770
+ if (!chunk57636V35_cjs.MultisigTapscript.is(arkTapscript)) return false;
7768
7771
  return arkTapscript.params.pubkeys.map(base.hex.encode).includes(pk);
7769
7772
  });
7770
7773
  }
@@ -8045,7 +8048,7 @@ function createManagedConnection(dbName, version, initDatabase2) {
8045
8048
  };
8046
8049
  }
8047
8050
  function scriptFromArkAddress(address) {
8048
- return base.hex.encode(chunk5MLC2HU3_cjs.ArkAddress.decode(address).pkScript);
8051
+ return base.hex.encode(chunk57636V35_cjs.ArkAddress.decode(address).pkScript);
8049
8052
  }
8050
8053
 
8051
8054
  // src/repositories/indexedDB/schema.ts
@@ -8540,7 +8543,7 @@ function validateVtxosForScript(vtxos, script, context) {
8540
8543
  }
8541
8544
  async function getVtxosForContract(repo, contract) {
8542
8545
  const vtxos = repo.getVtxosForScript ? await repo.getVtxosForScript(contract.script) : filterVtxosForScript(await repo.getVtxos(contract.address), contract.script);
8543
- return vtxos.map(chunk5MLC2HU3_cjs.normalizeVtxo);
8546
+ return vtxos.map(chunk57636V35_cjs.normalizeVtxo);
8544
8547
  }
8545
8548
  async function saveVtxosForContract(repo, contract, vtxos) {
8546
8549
  if (repo.saveVtxosForScript) {
@@ -8682,7 +8685,7 @@ function decodeArkContract(encoded) {
8682
8685
  }
8683
8686
  function contractFromArkContract(encoded, options = {}) {
8684
8687
  const parsed = decodeArkContract(encoded);
8685
- const handler = chunkWIFL5QYZ_cjs.contractHandlers.get(parsed.type);
8688
+ const handler = chunk3OKEUDHU_cjs.contractHandlers.get(parsed.type);
8686
8689
  if (!handler) {
8687
8690
  throw new Error(`No handler registered for contract type '${parsed.type}'`);
8688
8691
  }
@@ -8696,9 +8699,9 @@ function contractFromArkContract(encoded, options = {}) {
8696
8699
  metadata: options.metadata
8697
8700
  };
8698
8701
  }
8699
- function contractFromArkContractWithAddress(encoded, serverPubKey, addressPrefix = chunk5MLC2HU3_cjs.DEFAULT_NETWORK.hrp, options = {}) {
8702
+ function contractFromArkContractWithAddress(encoded, serverPubKey, addressPrefix = chunk57636V35_cjs.DEFAULT_NETWORK.hrp, options = {}) {
8700
8703
  const parsed = decodeArkContract(encoded);
8701
- const handler = chunkWIFL5QYZ_cjs.contractHandlers.getOrThrow(parsed.type);
8704
+ const handler = chunk3OKEUDHU_cjs.contractHandlers.getOrThrow(parsed.type);
8702
8705
  const params = parsed.data;
8703
8706
  const vtxoScript = handler.createScript(params);
8704
8707
  return {
@@ -8952,9 +8955,9 @@ var ContractWatcher = class {
8952
8955
  this.connectionState = "connected";
8953
8956
  this.reconnectAttempts = 0;
8954
8957
  this.listenLoop().catch((e) => {
8955
- if (chunk5MLC2HU3_cjs.isEventSourceError(e)) {
8958
+ if (chunk57636V35_cjs.isEventSourceError(e)) {
8956
8959
  console.debug("ContractWatcher subscription disconnected; reconnecting");
8957
- } else if (!chunk5MLC2HU3_cjs.isEventSourceUnavailableError(e)) {
8960
+ } else if (!chunk57636V35_cjs.isEventSourceUnavailableError(e)) {
8958
8961
  console.error(e);
8959
8962
  }
8960
8963
  this.connectionState = "disconnected";
@@ -8966,7 +8969,7 @@ var ContractWatcher = class {
8966
8969
  this.scheduleReconnect();
8967
8970
  });
8968
8971
  } catch (error) {
8969
- if (!chunk5MLC2HU3_cjs.isEventSourceUnavailableError(error)) {
8972
+ if (!chunk57636V35_cjs.isEventSourceUnavailableError(error)) {
8970
8973
  console.error("ContractWatcher connection failed:", error);
8971
8974
  }
8972
8975
  this.connectionState = "disconnected";
@@ -8992,7 +8995,7 @@ var ContractWatcher = class {
8992
8995
  * slower; what it loses is push latency.
8993
8996
  */
8994
8997
  reportEventSourceUnavailable(error) {
8995
- if (!chunk5MLC2HU3_cjs.isEventSourceUnavailableError(error)) return false;
8998
+ if (!chunk57636V35_cjs.isEventSourceUnavailableError(error)) return false;
8996
8999
  if (!this.eventSourceReported) {
8997
9000
  this.eventSourceReported = true;
8998
9001
  console.warn(
@@ -9208,14 +9211,14 @@ var ContractWatcher = class {
9208
9211
  const timestamp = Date.now();
9209
9212
  if (update.newVtxos?.length) {
9210
9213
  this.processSubscriptionVtxos(
9211
- update.newVtxos.map(chunk5MLC2HU3_cjs.normalizeVtxo),
9214
+ update.newVtxos.map(chunk57636V35_cjs.normalizeVtxo),
9212
9215
  "vtxo_received",
9213
9216
  timestamp
9214
9217
  );
9215
9218
  }
9216
9219
  if (update.spentVtxos?.length) {
9217
9220
  this.processSubscriptionVtxos(
9218
- update.spentVtxos.map(chunk5MLC2HU3_cjs.normalizeVtxo),
9221
+ update.spentVtxos.map(chunk57636V35_cjs.normalizeVtxo),
9219
9222
  "vtxo_spent",
9220
9223
  timestamp
9221
9224
  );
@@ -9310,7 +9313,7 @@ var NON_TERMINAL_INTENT_STATES = ALL_INTENT_STATES.filter(
9310
9313
  (s) => !isTerminalIntentState(s)
9311
9314
  );
9312
9315
  function isConsumed(vtxo) {
9313
- return vtxo !== void 0 && chunk5MLC2HU3_cjs.hasTerminalSpend(vtxo);
9316
+ return vtxo !== void 0 && chunk57636V35_cjs.hasTerminalSpend(vtxo);
9314
9317
  }
9315
9318
  async function classifyIntent(intent, vtxosByOutpoint, now) {
9316
9319
  if (isTerminalIntentState(intent.state)) return void 0;
@@ -9353,7 +9356,7 @@ async function reconcileIntents(deps) {
9353
9356
  let vtxosByOutpoint = /* @__PURE__ */ new Map();
9354
9357
  if (outpoints.length > 0) {
9355
9358
  try {
9356
- const { vtxos } = await chunk5MLC2HU3_cjs.getNormalizedVtxos(deps.indexerProvider, { outpoints });
9359
+ const { vtxos } = await chunk57636V35_cjs.getNormalizedVtxos(deps.indexerProvider, { outpoints });
9357
9360
  vtxosByOutpoint = new Map(vtxos.map((v) => [outpointKey(v), v]));
9358
9361
  } catch (e) {
9359
9362
  console.error("reconcileIntents: failed to fetch input VTXO state", e);
@@ -9527,7 +9530,7 @@ var ContractManager = class _ContractManager {
9527
9530
  await this.reconcileWatched();
9528
9531
  this.markSyncOnline();
9529
9532
  } catch (err) {
9530
- if (!chunk5MLC2HU3_cjs.isRetryableProviderError(err)) throw err;
9533
+ if (!chunk57636V35_cjs.isRetryableProviderError(err)) throw err;
9531
9534
  this.markSyncDegraded(err);
9532
9535
  }
9533
9536
  this.initialized = true;
@@ -9659,7 +9662,7 @@ var ContractManager = class _ContractManager {
9659
9662
  const from = Math.max(0, watermark - lookAhead.size);
9660
9663
  const to = watermark + lookAhead.size;
9661
9664
  const deps = lookAhead.candidateDeps();
9662
- const handlers = chunkWIFL5QYZ_cjs.contractHandlers.getRegisteredTypes().map((t) => chunkWIFL5QYZ_cjs.contractHandlers.get(t)).filter(hasCandidates);
9665
+ const handlers = chunk3OKEUDHU_cjs.contractHandlers.getRegisteredTypes().map((t) => chunk3OKEUDHU_cjs.contractHandlers.get(t)).filter(hasCandidates);
9663
9666
  const band = /* @__PURE__ */ new Map();
9664
9667
  for (let index = from; index <= to; index++) {
9665
9668
  const descriptor = lookAhead.materialize(index);
@@ -9670,7 +9673,7 @@ var ContractManager = class _ContractManager {
9670
9673
  index,
9671
9674
  params: {
9672
9675
  ...candidate,
9673
- ...chunkWIFL5QYZ_cjs.speculativeReceiveMetadata(descriptor)
9676
+ ...chunk3OKEUDHU_cjs.speculativeReceiveMetadata(descriptor)
9674
9677
  }
9675
9678
  });
9676
9679
  }
@@ -9732,7 +9735,7 @@ var ContractManager = class _ContractManager {
9732
9735
  });
9733
9736
  for (const entry of pending) entry.catchUpPending = false;
9734
9737
  } catch (err) {
9735
- if (!chunk5MLC2HU3_cjs.isRetryableProviderError(err)) throw err;
9738
+ if (!chunk57636V35_cjs.isRetryableProviderError(err)) throw err;
9736
9739
  this.markSyncDegraded(err);
9737
9740
  }
9738
9741
  }
@@ -9782,7 +9785,7 @@ var ContractManager = class _ContractManager {
9782
9785
  await this.fetchContractVxosFromIndexer([contract]);
9783
9786
  this.markSyncOnline();
9784
9787
  } catch (err) {
9785
- if (!chunk5MLC2HU3_cjs.isRetryableProviderError(err)) throw err;
9788
+ if (!chunk57636V35_cjs.isRetryableProviderError(err)) throw err;
9786
9789
  this.markSyncDegraded(err);
9787
9790
  }
9788
9791
  await this.watcher.addContract(contract);
@@ -9819,7 +9822,7 @@ var ContractManager = class _ContractManager {
9819
9822
  return result;
9820
9823
  }
9821
9824
  async upsertContractRow(params) {
9822
- const handler = chunkWIFL5QYZ_cjs.contractHandlers.get(params.type);
9825
+ const handler = chunk3OKEUDHU_cjs.contractHandlers.get(params.type);
9823
9826
  if (!handler) {
9824
9827
  throw new Error(`No handler registered for contract type '${params.type}'`);
9825
9828
  }
@@ -9919,7 +9922,7 @@ var ContractManager = class _ContractManager {
9919
9922
  `scanContracts: batchSize must be a positive integer (got ${String(opts.batchSize)})`
9920
9923
  );
9921
9924
  }
9922
- const registered = chunkWIFL5QYZ_cjs.contractHandlers.getRegisteredTypes().map((t) => chunkWIFL5QYZ_cjs.contractHandlers.get(t)).filter(isDiscoverable);
9925
+ const registered = chunk3OKEUDHU_cjs.contractHandlers.getRegisteredTypes().map((t) => chunk3OKEUDHU_cjs.contractHandlers.get(t)).filter(isDiscoverable);
9923
9926
  const discoverables = [
9924
9927
  ...registered.filter((h) => h.type === "boarding"),
9925
9928
  ...registered.filter((h) => h.type !== "boarding")
@@ -10054,7 +10057,7 @@ var ContractManager = class _ContractManager {
10054
10057
  await this.syncContracts({ contracts, pageSize });
10055
10058
  this.markSyncOnline();
10056
10059
  } catch (err) {
10057
- if (!chunk5MLC2HU3_cjs.isRetryableProviderError(err)) throw err;
10060
+ if (!chunk57636V35_cjs.isRetryableProviderError(err)) throw err;
10058
10061
  this.markSyncDegraded(err);
10059
10062
  }
10060
10063
  const vtxos = await this.getVtxosForContracts(contracts);
@@ -10075,7 +10078,7 @@ var ContractManager = class _ContractManager {
10075
10078
  }
10076
10079
  const tapscriptCache = tapscripts ?? /* @__PURE__ */ new Map();
10077
10080
  return vtxos.map(
10078
- (vtxo) => extendVirtualCoinForContract(chunk5MLC2HU3_cjs.normalizeVtxo(vtxo), byScript, tapscriptCache)
10081
+ (vtxo) => extendVirtualCoinForContract(chunk57636V35_cjs.normalizeVtxo(vtxo), byScript, tapscriptCache)
10079
10082
  );
10080
10083
  }
10081
10084
  /** @inheritdoc */
@@ -10119,14 +10122,14 @@ var ContractManager = class _ContractManager {
10119
10122
  const byScript = new Map(contracts.map((contract) => [contract.script, contract]));
10120
10123
  const asking = vtxos.filter((vtxo) => {
10121
10124
  const contract = byScript.get(vtxo.script);
10122
- return contract !== void 0 && chunkWIFL5QYZ_cjs.contractHandlers.get(contract.type)?.assertSpendableNow !== void 0;
10125
+ return contract !== void 0 && chunk3OKEUDHU_cjs.contractHandlers.get(contract.type)?.assertSpendableNow !== void 0;
10123
10126
  });
10124
10127
  if (asking.length === 0) return refused;
10125
10128
  const tip = await this.currentChainTip();
10126
10129
  const walletKey = await walletPubKey?.();
10127
10130
  for (const vtxo of asking) {
10128
10131
  const contract = byScript.get(vtxo.script);
10129
- const handler = chunkWIFL5QYZ_cjs.contractHandlers.get(contract.type);
10132
+ const handler = chunk3OKEUDHU_cjs.contractHandlers.get(contract.type);
10130
10133
  if (!handler?.assertSpendableNow) continue;
10131
10134
  const context = {
10132
10135
  collaborative: true,
@@ -10141,7 +10144,7 @@ var ContractManager = class _ContractManager {
10141
10144
  // the next handler to answer a CSV question would meet a
10142
10145
  // TypeError instead of a `false`. Carry the coin only when it
10143
10146
  // really is one.
10144
- vtxo: chunk5MLC2HU3_cjs.isVirtualCoin(vtxo) && "status" in vtxo ? vtxo : void 0
10147
+ vtxo: chunk57636V35_cjs.isVirtualCoin(vtxo) && "status" in vtxo ? vtxo : void 0
10145
10148
  };
10146
10149
  try {
10147
10150
  await handler.assertSpendableNow(
@@ -10297,7 +10300,7 @@ var ContractManager = class _ContractManager {
10297
10300
  const { contractScript, collaborative = true, walletPubKey, vtxo } = options;
10298
10301
  const [contract] = await this.getContracts({ script: contractScript });
10299
10302
  if (!contract) return [];
10300
- const handler = chunkWIFL5QYZ_cjs.contractHandlers.get(contract.type);
10303
+ const handler = chunk3OKEUDHU_cjs.contractHandlers.get(contract.type);
10301
10304
  if (!handler) return [];
10302
10305
  const script = handler.createScript(contract.params);
10303
10306
  const tip = await this.currentChainTip();
@@ -10325,7 +10328,7 @@ var ContractManager = class _ContractManager {
10325
10328
  const { contractScript, collaborative = true, walletPubKey } = options;
10326
10329
  const [contract] = await this.getContracts({ script: contractScript });
10327
10330
  if (!contract) return [];
10328
- const handler = chunkWIFL5QYZ_cjs.contractHandlers.get(contract.type);
10331
+ const handler = chunk3OKEUDHU_cjs.contractHandlers.get(contract.type);
10329
10332
  if (!handler) return [];
10330
10333
  const script = handler.createScript(contract.params);
10331
10334
  const context = {
@@ -10381,7 +10384,7 @@ var ContractManager = class _ContractManager {
10381
10384
  }
10382
10385
  async refreshOutpoints(outpoints) {
10383
10386
  if (outpoints.length === 0) return;
10384
- const { vtxos } = await chunk5MLC2HU3_cjs.getNormalizedVtxos(this.config.indexerProvider, {
10387
+ const { vtxos } = await chunk57636V35_cjs.getNormalizedVtxos(this.config.indexerProvider, {
10385
10388
  outpoints
10386
10389
  });
10387
10390
  if (vtxos.length === 0) return;
@@ -10460,7 +10463,7 @@ var ContractManager = class _ContractManager {
10460
10463
  break;
10461
10464
  }
10462
10465
  } catch (err) {
10463
- if (!chunk5MLC2HU3_cjs.isRetryableProviderError(err)) throw err;
10466
+ if (!chunk57636V35_cjs.isRetryableProviderError(err)) throw err;
10464
10467
  this.markSyncDegraded(err);
10465
10468
  }
10466
10469
  this.emitEvent(event);
@@ -10539,7 +10542,7 @@ var ContractManager = class _ContractManager {
10539
10542
  */
10540
10543
  async reconcilePendingFrontier(contracts) {
10541
10544
  const scriptToContract = new Map(contracts.map((c) => [c.script, c]));
10542
- const vtxos = await chunk5MLC2HU3_cjs.getAllNormalizedVtxos(
10545
+ const vtxos = await chunk57636V35_cjs.getAllNormalizedVtxos(
10543
10546
  this.config.indexerProvider,
10544
10547
  contracts.map((c) => c.script),
10545
10548
  { pendingOnly: true }
@@ -10622,7 +10625,7 @@ var ContractManager = class _ContractManager {
10622
10625
  }
10623
10626
  return result;
10624
10627
  }
10625
- async fetchContractVtxosBulk(contracts, pageSize = chunk5MLC2HU3_cjs.DEFAULT_PAGE_SIZE, syncWindow) {
10628
+ async fetchContractVtxosBulk(contracts, pageSize = chunk57636V35_cjs.DEFAULT_PAGE_SIZE, syncWindow) {
10626
10629
  if (contracts.length === 0) {
10627
10630
  return { vtxosByScript: /* @__PURE__ */ new Map(), promoted: /* @__PURE__ */ new Map() };
10628
10631
  }
@@ -10638,7 +10641,7 @@ var ContractManager = class _ContractManager {
10638
10641
  before: syncWindow.before
10639
10642
  }
10640
10643
  } : {};
10641
- const vtxos = await chunk5MLC2HU3_cjs.getAllNormalizedVtxos(
10644
+ const vtxos = await chunk57636V35_cjs.getAllNormalizedVtxos(
10642
10645
  this.config.indexerProvider,
10643
10646
  contracts.map((c) => c.script),
10644
10647
  { ...windowOpts, pageSize }
@@ -10783,7 +10786,7 @@ var deserializeTapLeaf = (t) => {
10783
10786
  const s = base.hex.decode(t.s);
10784
10787
  return [cb, s];
10785
10788
  };
10786
- var deserializeVtxo = (o) => chunk5MLC2HU3_cjs.normalizeVtxo({
10789
+ var deserializeVtxo = (o) => chunk57636V35_cjs.normalizeVtxo({
10787
10790
  ...o,
10788
10791
  createdAt: new Date(o.createdAt),
10789
10792
  tapTree: base.hex.decode(o.tapTree),
@@ -11606,7 +11609,7 @@ var HDDescriptorProvider = class _HDDescriptorProvider {
11606
11609
  */
11607
11610
  materializeDescriptorAt(index) {
11608
11611
  const descriptor = this.identity.descriptor;
11609
- const network = chunkWIFL5QYZ_cjs.isMainnetDescriptor(descriptor) ? descriptorsScure.networks.bitcoin : descriptorsScure.networks.testnet;
11612
+ const network = chunk3OKEUDHU_cjs.isMainnetDescriptor(descriptor) ? descriptorsScure.networks.bitcoin : descriptorsScure.networks.testnet;
11610
11613
  const expansion = descriptorsScure.expand({ descriptor, network, index });
11611
11614
  const keyInfo = expansion.expansionMap?.["@0"];
11612
11615
  if (!keyInfo?.keyExpression) {
@@ -11754,7 +11757,7 @@ var WalletReceiveRotator = class _WalletReceiveRotator {
11754
11757
  const provider = await resolveDescriptorProvider(config, setup.walletRepository);
11755
11758
  if (!provider) return void 0;
11756
11759
  const allowSilentFallback = (config.walletMode ?? "auto") === "auto";
11757
- const expectedContractType = setup.offchainTapscript instanceof chunkWIFL5QYZ_cjs.DelegateVtxo.Script ? "delegate" : "default";
11760
+ const expectedContractType = setup.offchainTapscript instanceof chunk3OKEUDHU_cjs.DelegateVtxo.Script ? "delegate" : "default";
11758
11761
  const factoryOpts = {
11759
11762
  walletRepository: setup.walletRepository,
11760
11763
  contractRepository: setup.contractRepository,
@@ -11955,7 +11958,7 @@ var WalletReceiveRotator = class _WalletReceiveRotator {
11955
11958
  };
11956
11959
  function deriveLeafPubkey(descriptor) {
11957
11960
  try {
11958
- return chunkWIFL5QYZ_cjs.deriveDescriptorLeafPubKey(descriptor);
11961
+ return chunk3OKEUDHU_cjs.deriveDescriptorLeafPubKey(descriptor);
11959
11962
  } catch (e) {
11960
11963
  throw new NonRangeableDescriptorError(
11961
11964
  "Cannot derive leaf pubkey: descriptor is not a materialized, parsable tr(...) shape.",
@@ -11967,7 +11970,7 @@ function buildReceiveContract(current, descriptor, hrp, tagSource) {
11967
11970
  const pubKey = deriveLeafPubkey(descriptor);
11968
11971
  const tapscript = rebuildTapscript(current, pubKey);
11969
11972
  const serverPubKey = tapscript.options.serverPubKey;
11970
- const csvTimelock = chunk5MLC2HU3_cjs.timelockToSequence(tapscript.options.csvTimelock).toString();
11973
+ const csvTimelock = chunk57636V35_cjs.timelockToSequence(tapscript.options.csvTimelock).toString();
11971
11974
  const base$1 = {
11972
11975
  script: base.hex.encode(tapscript.pkScript),
11973
11976
  address: tapscript.address(hrp, serverPubKey).encode(),
@@ -11978,11 +11981,11 @@ function buildReceiveContract(current, descriptor, hrp, tagSource) {
11978
11981
  // index-0 key. Without it, spends produce unsigned PSBTs that the
11979
11982
  // server rejects with `INVALID_PSBT_INPUT (5): missing tapscript spend sig`.
11980
11983
  metadata: {
11981
- ...tagSource && { source: chunkWIFL5QYZ_cjs.WALLET_RECEIVE_SOURCE },
11984
+ ...tagSource && { source: chunk3OKEUDHU_cjs.WALLET_RECEIVE_SOURCE },
11982
11985
  signingDescriptor: descriptor
11983
11986
  }
11984
11987
  };
11985
- const params = tapscript instanceof chunkWIFL5QYZ_cjs.DelegateVtxo.Script ? {
11988
+ const params = tapscript instanceof chunk3OKEUDHU_cjs.DelegateVtxo.Script ? {
11986
11989
  ...base$1,
11987
11990
  type: "delegate",
11988
11991
  params: {
@@ -12003,10 +12006,10 @@ function buildReceiveContract(current, descriptor, hrp, tagSource) {
12003
12006
  return { tapscript, params };
12004
12007
  }
12005
12008
  function rebuildTapscript(current, pubKey) {
12006
- if (current instanceof chunkWIFL5QYZ_cjs.DelegateVtxo.Script) {
12007
- return new chunkWIFL5QYZ_cjs.DelegateVtxo.Script({ ...current.options, pubKey });
12009
+ if (current instanceof chunk3OKEUDHU_cjs.DelegateVtxo.Script) {
12010
+ return new chunk3OKEUDHU_cjs.DelegateVtxo.Script({ ...current.options, pubKey });
12008
12011
  }
12009
- return new chunkWIFL5QYZ_cjs.DefaultVtxo.Script({ ...current.options, pubKey });
12012
+ return new chunk3OKEUDHU_cjs.DefaultVtxo.Script({ ...current.options, pubKey });
12010
12013
  }
12011
12014
  async function pickActiveReceive(contractRepository, serverPubKey, expectedType) {
12012
12015
  const candidates = await contractRepository.getContracts({
@@ -12015,7 +12018,7 @@ async function pickActiveReceive(contractRepository, serverPubKey, expectedType)
12015
12018
  });
12016
12019
  const serverPubKeyHex = base.hex.encode(serverPubKey);
12017
12020
  const matching = candidates.filter(
12018
- (c) => c.params.serverPubKey === serverPubKeyHex && c.metadata?.source === chunkWIFL5QYZ_cjs.WALLET_RECEIVE_SOURCE
12021
+ (c) => c.params.serverPubKey === serverPubKeyHex && c.metadata?.source === chunk3OKEUDHU_cjs.WALLET_RECEIVE_SOURCE
12019
12022
  ).sort((a, b) => {
12020
12023
  if (b.createdAt !== a.createdAt) return b.createdAt - a.createdAt;
12021
12024
  return signingDescriptorIndex(b.metadata?.signingDescriptor) - signingDescriptorIndex(a.metadata?.signingDescriptor);
@@ -12071,7 +12074,7 @@ function computeOffchainBalance(vtxos, caps) {
12071
12074
  }
12072
12075
  };
12073
12076
  for (const vtxo of vtxos) {
12074
- if (chunk5MLC2HU3_cjs.hasTerminalSpend(vtxo)) continue;
12077
+ if (chunk57636V35_cjs.hasTerminalSpend(vtxo)) continue;
12075
12078
  addAssets(owned, vtxo);
12076
12079
  if (vtxo.isUnrolled) {
12077
12080
  unrolled += vtxo.value;
@@ -12081,11 +12084,11 @@ function computeOffchainBalance(vtxos, caps) {
12081
12084
  pendingRecovery += vtxo.value;
12082
12085
  continue;
12083
12086
  }
12084
- if (chunk5MLC2HU3_cjs.canRecoverOnchain(vtxo, now)) {
12087
+ if (chunk57636V35_cjs.canRecoverOnchain(vtxo, now)) {
12085
12088
  recoverable += vtxo.value;
12086
12089
  continue;
12087
12090
  }
12088
- if (!chunk5MLC2HU3_cjs.canSpendOffchain(vtxo, now)) continue;
12091
+ if (!chunk57636V35_cjs.canSpendOffchain(vtxo, now)) continue;
12089
12092
  if (vtxo.isPreconfirmed) {
12090
12093
  preconfirmed += vtxo.value;
12091
12094
  } else {
@@ -12255,12 +12258,12 @@ var InputSignerRouter = class {
12255
12258
  };
12256
12259
 
12257
12260
  // src/wallet/wallet.ts
12258
- var getArkadeServerUrl = ({ arkServerUrl }) => arkServerUrl || chunk5MLC2HU3_cjs.DEFAULT_ARKADE_SERVER_URL;
12261
+ var getArkadeServerUrl = ({ arkServerUrl }) => arkServerUrl || chunk57636V35_cjs.DEFAULT_ARKADE_SERVER_URL;
12259
12262
  function intentProofJobs(coins) {
12260
12263
  if (coins.length === 0) return [];
12261
12264
  const coinJobs = coins.map((coin, i) => ({
12262
12265
  index: i + 1,
12263
- lookupScript: chunk5MLC2HU3_cjs.VtxoScript.decode(coin.tapTree).pkScript
12266
+ lookupScript: chunk57636V35_cjs.VtxoScript.decode(coin.tapTree).pkScript
12264
12267
  }));
12265
12268
  return [{ index: 0, lookupScript: coinJobs[0].lookupScript }, ...coinJobs];
12266
12269
  }
@@ -12292,7 +12295,7 @@ function dedupeTimelocks(timelocks) {
12292
12295
  const seen = /* @__PURE__ */ new Set();
12293
12296
  const deduped = [];
12294
12297
  for (const timelock of timelocks) {
12295
- const sequence = chunk5MLC2HU3_cjs.timelockToSequence(timelock).toString();
12298
+ const sequence = chunk57636V35_cjs.timelockToSequence(timelock).toString();
12296
12299
  if (seen.has(sequence)) continue;
12297
12300
  seen.add(sequence);
12298
12301
  deduped.push(timelock);
@@ -12309,7 +12312,7 @@ async function resolveBoardingBootTapscript(contractRepository, serverPubKey, ba
12309
12312
  state: "active"
12310
12313
  });
12311
12314
  const newest = candidates.filter(
12312
- (c) => c.params.serverPubKey === serverPubKeyHex && c.metadata?.source === chunkWIFL5QYZ_cjs.WALLET_RECEIVE_SOURCE
12315
+ (c) => c.params.serverPubKey === serverPubKeyHex && c.metadata?.source === chunk3OKEUDHU_cjs.WALLET_RECEIVE_SOURCE
12313
12316
  ).sort((a, b) => {
12314
12317
  if (b.createdAt !== a.createdAt) return b.createdAt - a.createdAt;
12315
12318
  return signingDescriptorIndex(b.metadata?.signingDescriptor) - signingDescriptorIndex(a.metadata?.signingDescriptor);
@@ -12317,7 +12320,7 @@ async function resolveBoardingBootTapscript(contractRepository, serverPubKey, ba
12317
12320
  if (!newest?.params.pubKey) return baseline;
12318
12321
  try {
12319
12322
  const pubKey = base.hex.decode(newest.params.pubKey);
12320
- return new chunkWIFL5QYZ_cjs.DefaultVtxo.Script({ ...baseline.options, pubKey });
12323
+ return new chunk3OKEUDHU_cjs.DefaultVtxo.Script({ ...baseline.options, pubKey });
12321
12324
  } catch (e) {
12322
12325
  console.warn("Skipping malformed boarding contract at boot", newest.script, e);
12323
12326
  return baseline;
@@ -12336,10 +12339,10 @@ function filterSnapshotVtxos(snapshot, filter, pendingSpendOutpoints) {
12336
12339
  if (vtxo.isUnrolled) {
12337
12340
  return !!f.withUnrolled;
12338
12341
  }
12339
- if (chunk5MLC2HU3_cjs.hasTerminalSpend(vtxo)) {
12342
+ if (chunk57636V35_cjs.hasTerminalSpend(vtxo)) {
12340
12343
  return false;
12341
12344
  }
12342
- if (!f.withRecoverable && chunk5MLC2HU3_cjs.canRecoverOnchain(vtxo, now)) {
12345
+ if (!f.withRecoverable && chunk57636V35_cjs.canRecoverOnchain(vtxo, now)) {
12343
12346
  return false;
12344
12347
  }
12345
12348
  return true;
@@ -12679,7 +12682,7 @@ var ReadonlyWallet = class _ReadonlyWallet {
12679
12682
  */
12680
12683
  static async setupWalletConfig(config, pubKey) {
12681
12684
  const arkadeServerUrl = getArkadeServerUrl(config);
12682
- const arkProvider = config.arkProvider || new chunk5MLC2HU3_cjs.RestArkProvider(arkadeServerUrl);
12685
+ const arkProvider = config.arkProvider || new chunk57636V35_cjs.RestArkProvider(arkadeServerUrl);
12683
12686
  let indexerProvider = config.indexerProvider;
12684
12687
  if (!indexerProvider) {
12685
12688
  let indexerUrl = config.indexerUrl;
@@ -12696,7 +12699,7 @@ var ReadonlyWallet = class _ReadonlyWallet {
12696
12699
  indexerUrl = arkadeServerUrl;
12697
12700
  }
12698
12701
  }
12699
- indexerProvider = new chunkGVHUHTRH_cjs.RestIndexerProvider(indexerUrl);
12702
+ indexerProvider = new chunk3KW4TWP2_cjs.RestIndexerProvider(indexerUrl);
12700
12703
  }
12701
12704
  const walletRepository = config.storage?.walletRepository ?? new IndexedDBWalletRepository();
12702
12705
  const contractRepository = config.storage?.contractRepository ?? new IndexedDBContractRepository();
@@ -12705,7 +12708,7 @@ var ReadonlyWallet = class _ReadonlyWallet {
12705
12708
  source: serverInfoSource,
12706
12709
  lastOnlineAt: serverInfoLastOnlineAt
12707
12710
  } = await resolveArkInfo(arkProvider, walletRepository);
12708
- const network = chunk5MLC2HU3_cjs.getNetwork(info.network);
12711
+ const network = chunk57636V35_cjs.getNetwork(info.network);
12709
12712
  if ("descriptor" in config.identity) {
12710
12713
  const descriptor = config.identity.descriptor;
12711
12714
  const identityIsMainnet = !descriptor.includes("tpub");
@@ -12745,18 +12748,18 @@ var ReadonlyWallet = class _ReadonlyWallet {
12745
12748
  value: info.boardingExitDelay,
12746
12749
  type: info.boardingExitDelay < 512n ? "blocks" : "seconds"
12747
12750
  };
12748
- const serverPubKey = chunkWIFL5QYZ_cjs.toXOnly(base.hex.decode(info.signerPubkey), "ark signer key");
12749
- const delegatePubKey = config.delegateProvider ? await config.delegateProvider.getDelegateInfo().then((info2) => chunkWIFL5QYZ_cjs.toXOnly(base.hex.decode(info2.pubkey), "delegate key")).catch(() => void 0) : config.delegatorProvider ? await config.delegatorProvider.getDelegateInfo().then((info2) => chunkWIFL5QYZ_cjs.toXOnly(base.hex.decode(info2.pubkey), "delegate key")).catch(() => void 0) : void 0;
12751
+ const serverPubKey = chunk3OKEUDHU_cjs.toXOnly(base.hex.decode(info.signerPubkey), "ark signer key");
12752
+ const delegatePubKey = config.delegateProvider ? await config.delegateProvider.getDelegateInfo().then((info2) => chunk3OKEUDHU_cjs.toXOnly(base.hex.decode(info2.pubkey), "delegate key")).catch(() => void 0) : config.delegatorProvider ? await config.delegatorProvider.getDelegateInfo().then((info2) => chunk3OKEUDHU_cjs.toXOnly(base.hex.decode(info2.pubkey), "delegate key")).catch(() => void 0) : void 0;
12750
12753
  const offchainOptions = {
12751
12754
  pubKey,
12752
12755
  serverPubKey,
12753
12756
  csvTimelock: exitTimelock
12754
12757
  };
12755
- const offchainTapscript = !delegatePubKey ? new chunkWIFL5QYZ_cjs.DefaultVtxo.Script(offchainOptions) : new chunkWIFL5QYZ_cjs.DelegateVtxo.Script({ ...offchainOptions, delegatePubKey });
12756
- const boardingTapscript = chunkWIFL5QYZ_cjs.BoardingContractHandler.createScript({
12758
+ const offchainTapscript = !delegatePubKey ? new chunk3OKEUDHU_cjs.DefaultVtxo.Script(offchainOptions) : new chunk3OKEUDHU_cjs.DelegateVtxo.Script({ ...offchainOptions, delegatePubKey });
12759
+ const boardingTapscript = chunk3OKEUDHU_cjs.BoardingContractHandler.createScript({
12757
12760
  pubKey: base.hex.encode(pubKey),
12758
12761
  serverPubKey: base.hex.encode(serverPubKey),
12759
- csvTimelock: chunk5MLC2HU3_cjs.timelockToSequence(boardingTimelock).toString()
12762
+ csvTimelock: chunk57636V35_cjs.timelockToSequence(boardingTimelock).toString()
12760
12763
  });
12761
12764
  return {
12762
12765
  arkProvider,
@@ -12922,7 +12925,7 @@ var ReadonlyWallet = class _ReadonlyWallet {
12922
12925
  if (!filter?.withUnrolled) {
12923
12926
  logExcludedVtxos(
12924
12927
  "getSpendableVtxos",
12925
- snapshot.flatMap((contract) => contract.vtxos).filter((vtxo) => vtxo.isUnrolled && !chunk5MLC2HU3_cjs.hasTerminalSpend(vtxo)),
12928
+ snapshot.flatMap((contract) => contract.vtxos).filter((vtxo) => vtxo.isUnrolled && !chunk57636V35_cjs.hasTerminalSpend(vtxo)),
12926
12929
  [() => UNROLLED_REASON]
12927
12930
  );
12928
12931
  }
@@ -13065,7 +13068,7 @@ var ReadonlyWallet = class _ReadonlyWallet {
13065
13068
  const response = await contractManager.getContractsWithVtxos();
13066
13069
  const allVtxos = response.flatMap((_) => _.vtxos);
13067
13070
  const { boardingTxs, commitmentsToIgnore } = await this.getBoardingTxs();
13068
- const resolveTxCreatedAt = (txids) => chunk5MLC2HU3_cjs.fetchVtxoCreatedAtByTxid(this.indexerProvider, txids);
13071
+ const resolveTxCreatedAt = (txids) => chunk57636V35_cjs.fetchVtxoCreatedAtByTxid(this.indexerProvider, txids);
13069
13072
  return buildTransactionHistory(
13070
13073
  allVtxos,
13071
13074
  boardingTxs,
@@ -13159,7 +13162,7 @@ var ReadonlyWallet = class _ReadonlyWallet {
13159
13162
  },
13160
13163
  isUnrolled: true,
13161
13164
  ...boardingFacts,
13162
- virtualStatus: chunk5MLC2HU3_cjs.toVirtualStatus(boardingFacts),
13165
+ virtualStatus: chunk57636V35_cjs.toVirtualStatus(boardingFacts),
13163
13166
  spentBy: "",
13164
13167
  createdAt: tx.status.confirmed ? new Date(tx.status.block_time * 1e3) : /* @__PURE__ */ new Date(0),
13165
13168
  script: scriptHex
@@ -13215,9 +13218,9 @@ var ReadonlyWallet = class _ReadonlyWallet {
13215
13218
  async getBoardingTapscripts(allowedSigners) {
13216
13219
  const byScript = /* @__PURE__ */ new Map();
13217
13220
  const add = (s) => byScript.set(base.hex.encode(s.pkScript), s);
13218
- const boardingCsv = this.boardingTapscript.options.csvTimelock ?? chunkWIFL5QYZ_cjs.DefaultVtxo.Script.DEFAULT_TIMELOCK;
13221
+ const boardingCsv = this.boardingTapscript.options.csvTimelock ?? chunk3OKEUDHU_cjs.DefaultVtxo.Script.DEFAULT_TIMELOCK;
13219
13222
  add(
13220
- new chunkWIFL5QYZ_cjs.DefaultVtxo.Script({
13223
+ new chunk3OKEUDHU_cjs.DefaultVtxo.Script({
13221
13224
  pubKey: await this.identity.xOnlyPublicKey(),
13222
13225
  serverPubKey: this.boardingTapscript.options.serverPubKey,
13223
13226
  csvTimelock: boardingCsv
@@ -13232,7 +13235,7 @@ var ReadonlyWallet = class _ReadonlyWallet {
13232
13235
  for (const c of boardingContracts) {
13233
13236
  if (!allowed.has(toXOnlySignerHex(c.params.serverPubKey))) continue;
13234
13237
  try {
13235
- add(chunkWIFL5QYZ_cjs.BoardingContractHandler.createScript(c.params));
13238
+ add(chunk3OKEUDHU_cjs.BoardingContractHandler.createScript(c.params));
13236
13239
  } catch (e) {
13237
13240
  console.warn("Skipping malformed boarding contract", c.script, e);
13238
13241
  }
@@ -13270,7 +13273,7 @@ var ReadonlyWallet = class _ReadonlyWallet {
13270
13273
  // Per-row CSV delay decoded from THIS tapscript's exit leaf —
13271
13274
  // not the wallet's current boarding timelock, which a signer
13272
13275
  // rotation may have changed.
13273
- csvTimelock: chunk5MLC2HU3_cjs.CSVMultisigTapscript.decode(base.hex.decode(tapscript.exitScript)).params.timelock,
13276
+ csvTimelock: chunk57636V35_cjs.CSVMultisigTapscript.decode(base.hex.decode(tapscript.exitScript)).params.timelock,
13274
13277
  coins: utxos
13275
13278
  });
13276
13279
  }
@@ -13403,7 +13406,7 @@ var ReadonlyWallet = class _ReadonlyWallet {
13403
13406
  /** Fetch Arkade transaction ids that are still pending final settlement. */
13404
13407
  async fetchPendingTxs() {
13405
13408
  const scripts = await this.getWalletScripts();
13406
- const vtxos = await chunk5MLC2HU3_cjs.getAllNormalizedVtxos(this.indexerProvider, scripts);
13409
+ const vtxos = await chunk57636V35_cjs.getAllNormalizedVtxos(this.indexerProvider, scripts);
13407
13410
  return vtxos.filter(
13408
13411
  (vtxo) => (vtxo.isSpent || vtxo.isPreconfirmed && !vtxo.isSwept) && vtxo.arkTxId !== void 0
13409
13412
  ).map((_) => _.arkTxId);
@@ -13434,7 +13437,7 @@ var ReadonlyWallet = class _ReadonlyWallet {
13434
13437
  });
13435
13438
  for (const contract of contracts) {
13436
13439
  if (map.has(contract.script)) continue;
13437
- const handler = chunkWIFL5QYZ_cjs.contractHandlers.get(contract.type);
13440
+ const handler = chunk3OKEUDHU_cjs.contractHandlers.get(contract.type);
13438
13441
  if (handler) {
13439
13442
  const script = handler.createScript(contract.params);
13440
13443
  map.set(contract.script, script);
@@ -13546,7 +13549,7 @@ var ReadonlyWallet = class _ReadonlyWallet {
13546
13549
  }
13547
13550
  });
13548
13551
  const baselinePubkey = await this.identity.xOnlyPublicKey();
13549
- const delegatePubKey = this.offchainTapscript instanceof chunkWIFL5QYZ_cjs.DelegateVtxo.Script ? this.offchainTapscript.options.delegatePubKey : void 0;
13552
+ const delegatePubKey = this.offchainTapscript instanceof chunk3OKEUDHU_cjs.DelegateVtxo.Script ? this.offchainTapscript.options.delegatePubKey : void 0;
13550
13553
  const baselineSigners = [
13551
13554
  this.offchainTapscript.options.serverPubKey,
13552
13555
  ...[...this._deprecatedSigners.keys()].map((h) => base.hex.decode(h))
@@ -13554,8 +13557,8 @@ var ReadonlyWallet = class _ReadonlyWallet {
13554
13557
  const seenBaselineScripts = /* @__PURE__ */ new Set();
13555
13558
  for (const serverPubKey of baselineSigners) {
13556
13559
  for (const csvTimelock of this.walletContractTimelocks) {
13557
- const csvTimelockStr = chunk5MLC2HU3_cjs.timelockToSequence(csvTimelock).toString();
13558
- const defaultScript = new chunkWIFL5QYZ_cjs.DefaultVtxo.Script({
13560
+ const csvTimelockStr = chunk57636V35_cjs.timelockToSequence(csvTimelock).toString();
13561
+ const defaultScript = new chunk3OKEUDHU_cjs.DefaultVtxo.Script({
13559
13562
  pubKey: baselinePubkey,
13560
13563
  serverPubKey,
13561
13564
  csvTimelock
@@ -13576,7 +13579,7 @@ var ReadonlyWallet = class _ReadonlyWallet {
13576
13579
  });
13577
13580
  }
13578
13581
  if (delegatePubKey) {
13579
- const delegateScript = new chunkWIFL5QYZ_cjs.DelegateVtxo.Script({
13582
+ const delegateScript = new chunk3OKEUDHU_cjs.DelegateVtxo.Script({
13580
13583
  pubKey: baselinePubkey,
13581
13584
  serverPubKey,
13582
13585
  delegatePubKey,
@@ -13600,9 +13603,9 @@ var ReadonlyWallet = class _ReadonlyWallet {
13600
13603
  }
13601
13604
  }
13602
13605
  }
13603
- const boardingCsvTimelock = this.boardingTapscript.options.csvTimelock ?? chunkWIFL5QYZ_cjs.DefaultVtxo.Script.DEFAULT_TIMELOCK;
13606
+ const boardingCsvTimelock = this.boardingTapscript.options.csvTimelock ?? chunk3OKEUDHU_cjs.DefaultVtxo.Script.DEFAULT_TIMELOCK;
13604
13607
  for (const serverPubKey of baselineSigners) {
13605
- const baselineBoarding = new chunkWIFL5QYZ_cjs.DefaultVtxo.Script({
13608
+ const baselineBoarding = new chunk3OKEUDHU_cjs.DefaultVtxo.Script({
13606
13609
  pubKey: baselinePubkey,
13607
13610
  serverPubKey,
13608
13611
  csvTimelock: boardingCsvTimelock
@@ -13615,7 +13618,7 @@ var ReadonlyWallet = class _ReadonlyWallet {
13615
13618
  params: {
13616
13619
  pubKey: base.hex.encode(baselineBoarding.options.pubKey),
13617
13620
  serverPubKey: base.hex.encode(serverPubKey),
13618
- csvTimelock: chunk5MLC2HU3_cjs.timelockToSequence(boardingCsvTimelock).toString()
13621
+ csvTimelock: chunk57636V35_cjs.timelockToSequence(boardingCsvTimelock).toString()
13619
13622
  },
13620
13623
  script: boardingScriptHex,
13621
13624
  address: baselineBoarding.address(this.network.hrp, serverPubKey).encode(),
@@ -13815,7 +13818,7 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
13815
13818
  serverPubKey: this.offchainTapscript.options.serverPubKey,
13816
13819
  deprecatedSignerPubKeys: [...this._deprecatedSigners.keys()].map((h) => base.hex.decode(h)),
13817
13820
  csvTimelocks: this.walletContractTimelocks,
13818
- delegatePubKey: this.offchainTapscript instanceof chunkWIFL5QYZ_cjs.DelegateVtxo.Script ? this.offchainTapscript.options.delegatePubKey : void 0
13821
+ delegatePubKey: this.offchainTapscript instanceof chunk3OKEUDHU_cjs.DelegateVtxo.Script ? this.offchainTapscript.options.delegatePubKey : void 0
13819
13822
  };
13820
13823
  }
13821
13824
  _signerRouter;
@@ -14060,7 +14063,7 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
14060
14063
  const [row] = await manager.getContracts({ script: base.hex.encode(display.pkScript) });
14061
14064
  const persisted = row?.metadata?.signingDescriptor;
14062
14065
  if (typeof persisted === "string") return persisted;
14063
- return chunkWIFL5QYZ_cjs.identityDescriptor(this.identity);
14066
+ return chunk3OKEUDHU_cjs.identityDescriptor(this.identity);
14064
14067
  }
14065
14068
  /**
14066
14069
  * Build, persist and shape one address of `type` owned by `descriptor` —
@@ -14076,7 +14079,7 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
14076
14079
  async mintAddress(manager, type, descriptor, tagSource, allocated) {
14077
14080
  if (type === "boarding") {
14078
14081
  const built2 = this.buildBoardingContract(
14079
- chunkWIFL5QYZ_cjs.deriveDescriptorLeafPubKey(descriptor),
14082
+ chunk3OKEUDHU_cjs.deriveDescriptorLeafPubKey(descriptor),
14080
14083
  descriptor,
14081
14084
  tagSource
14082
14085
  );
@@ -14121,11 +14124,11 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
14121
14124
  * {@link buildReceiveContract}.
14122
14125
  */
14123
14126
  buildBoardingContract(pubKey, descriptor, tagSource) {
14124
- const tapscript = new chunkWIFL5QYZ_cjs.DefaultVtxo.Script({
14127
+ const tapscript = new chunk3OKEUDHU_cjs.DefaultVtxo.Script({
14125
14128
  ...this._boardingTapscript.options,
14126
14129
  pubKey
14127
14130
  });
14128
- const csvTimelock = tapscript.options.csvTimelock ?? chunkWIFL5QYZ_cjs.DefaultVtxo.Script.DEFAULT_TIMELOCK;
14131
+ const csvTimelock = tapscript.options.csvTimelock ?? chunk3OKEUDHU_cjs.DefaultVtxo.Script.DEFAULT_TIMELOCK;
14129
14132
  return {
14130
14133
  tapscript,
14131
14134
  params: {
@@ -14133,13 +14136,13 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
14133
14136
  params: {
14134
14137
  pubKey: base.hex.encode(pubKey),
14135
14138
  serverPubKey: base.hex.encode(tapscript.options.serverPubKey),
14136
- csvTimelock: chunk5MLC2HU3_cjs.timelockToSequence(csvTimelock).toString()
14139
+ csvTimelock: chunk57636V35_cjs.timelockToSequence(csvTimelock).toString()
14137
14140
  },
14138
14141
  script: base.hex.encode(tapscript.pkScript),
14139
14142
  address: tapscript.address(this.network.hrp, this.arkServerPublicKey).encode(),
14140
14143
  state: "active",
14141
14144
  metadata: {
14142
- ...tagSource && { source: chunkWIFL5QYZ_cjs.WALLET_RECEIVE_SOURCE },
14145
+ ...tagSource && { source: chunk3OKEUDHU_cjs.WALLET_RECEIVE_SOURCE },
14143
14146
  signingDescriptor: descriptor
14144
14147
  }
14145
14148
  }
@@ -14168,7 +14171,7 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
14168
14171
  if (this._descriptorProvider instanceof HDDescriptorProvider) {
14169
14172
  return (await this.getContractManager()).getNextSigningDescriptor();
14170
14173
  }
14171
- return chunkWIFL5QYZ_cjs.identityDescriptor(this.identity);
14174
+ return chunk3OKEUDHU_cjs.identityDescriptor(this.identity);
14172
14175
  }
14173
14176
  /**
14174
14177
  * @see HDAllocationCapable.advanceSigningDescriptorWatermark
@@ -14264,7 +14267,7 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
14264
14267
  * the stable public API.
14265
14268
  */
14266
14269
  async rotateServerSigner(newServerPubKey, checkpointTapscript) {
14267
- const xonly = chunkWIFL5QYZ_cjs.toXOnly(newServerPubKey, "ark signer key");
14270
+ const xonly = chunk3OKEUDHU_cjs.toXOnly(newServerPubKey, "ark signer key");
14268
14271
  const newServerUnrollScript = assertValidServerUnrollScript(
14269
14272
  checkpointTapscript,
14270
14273
  resolveCheckpointExitDelayPolicy(this.network, this.checkpointExitDelayPolicy)
@@ -14293,21 +14296,21 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
14293
14296
  const [currentBoardingRow] = await manager.getContracts({
14294
14297
  script: currentBoardingScript
14295
14298
  });
14296
- const newOffchain = this.offchainTapscript instanceof chunkWIFL5QYZ_cjs.DelegateVtxo.Script ? new chunkWIFL5QYZ_cjs.DelegateVtxo.Script({
14299
+ const newOffchain = this.offchainTapscript instanceof chunk3OKEUDHU_cjs.DelegateVtxo.Script ? new chunk3OKEUDHU_cjs.DelegateVtxo.Script({
14297
14300
  ...this.offchainTapscript.options,
14298
14301
  serverPubKey: xonly
14299
- }) : new chunkWIFL5QYZ_cjs.DefaultVtxo.Script({
14302
+ }) : new chunk3OKEUDHU_cjs.DefaultVtxo.Script({
14300
14303
  ...this.offchainTapscript.options,
14301
14304
  serverPubKey: xonly
14302
14305
  });
14303
- const newBoarding = new chunkWIFL5QYZ_cjs.DefaultVtxo.Script({
14306
+ const newBoarding = new chunk3OKEUDHU_cjs.DefaultVtxo.Script({
14304
14307
  ...this._boardingTapscript.options,
14305
14308
  serverPubKey: xonly
14306
14309
  });
14307
- const offchainCsv = chunk5MLC2HU3_cjs.timelockToSequence(newOffchain.options.csvTimelock).toString();
14310
+ const offchainCsv = chunk57636V35_cjs.timelockToSequence(newOffchain.options.csvTimelock).toString();
14308
14311
  const newOffchainScript = base.hex.encode(newOffchain.pkScript);
14309
14312
  const newOffchainAddress = newOffchain.address(this.network.hrp, xonly).encode();
14310
- if (newOffchain instanceof chunkWIFL5QYZ_cjs.DelegateVtxo.Script) {
14313
+ if (newOffchain instanceof chunk3OKEUDHU_cjs.DelegateVtxo.Script) {
14311
14314
  await manager.createContract({
14312
14315
  type: "delegate",
14313
14316
  params: {
@@ -14335,13 +14338,13 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
14335
14338
  metadata: currentOffchainRow?.metadata
14336
14339
  });
14337
14340
  }
14338
- const boardingCsv = newBoarding.options.csvTimelock ?? chunkWIFL5QYZ_cjs.DefaultVtxo.Script.DEFAULT_TIMELOCK;
14341
+ const boardingCsv = newBoarding.options.csvTimelock ?? chunk3OKEUDHU_cjs.DefaultVtxo.Script.DEFAULT_TIMELOCK;
14339
14342
  await manager.createContract({
14340
14343
  type: "boarding",
14341
14344
  params: {
14342
14345
  pubKey: base.hex.encode(newBoarding.options.pubKey),
14343
14346
  serverPubKey: base.hex.encode(xonly),
14344
- csvTimelock: chunk5MLC2HU3_cjs.timelockToSequence(boardingCsv).toString()
14347
+ csvTimelock: chunk57636V35_cjs.timelockToSequence(boardingCsv).toString()
14345
14348
  },
14346
14349
  script: base.hex.encode(newBoarding.pkScript),
14347
14350
  address: newBoarding.address(this.network.hrp, xonly).encode(),
@@ -14374,14 +14377,14 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
14374
14377
  _restoreInFlight;
14375
14378
  _addPendingSpends(inputs) {
14376
14379
  for (const input of inputs) {
14377
- if (chunk5MLC2HU3_cjs.isVirtualCoin(input)) {
14380
+ if (chunk57636V35_cjs.isVirtualCoin(input)) {
14378
14381
  this._pendingSpendOutpoints.add(`${input.txid}:${input.vout}`);
14379
14382
  }
14380
14383
  }
14381
14384
  }
14382
14385
  _removePendingSpends(inputs) {
14383
14386
  for (const input of inputs) {
14384
- if (chunk5MLC2HU3_cjs.isVirtualCoin(input)) {
14387
+ if (chunk57636V35_cjs.isVirtualCoin(input)) {
14385
14388
  this._pendingSpendOutpoints.delete(`${input.txid}:${input.vout}`);
14386
14389
  }
14387
14390
  }
@@ -14439,13 +14442,13 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
14439
14442
  const manager = await this.getContractManager();
14440
14443
  const provider = this._descriptorProvider;
14441
14444
  const hd = provider instanceof HDDescriptorProvider;
14442
- const staticDescriptor = hd ? void 0 : await chunkWIFL5QYZ_cjs.identityDescriptor(this.identity);
14445
+ const staticDescriptor = hd ? void 0 : await chunk3OKEUDHU_cjs.identityDescriptor(this.identity);
14443
14446
  const materialize = (index) => hd ? provider.materializeDescriptorAt(index) : staticDescriptor;
14444
- const delegatePubKey = this.offchainTapscript instanceof chunkWIFL5QYZ_cjs.DelegateVtxo.Script ? this.offchainTapscript.options.delegatePubKey : void 0;
14447
+ const delegatePubKey = this.offchainTapscript instanceof chunk3OKEUDHU_cjs.DelegateVtxo.Script ? this.offchainTapscript.options.delegatePubKey : void 0;
14445
14448
  const arkInfo = await this.arkProvider.getInfo();
14446
- const currentSignerPubKey = chunkWIFL5QYZ_cjs.toXOnly(base.hex.decode(arkInfo.signerPubkey), "ark signer key");
14449
+ const currentSignerPubKey = chunk3OKEUDHU_cjs.toXOnly(base.hex.decode(arkInfo.signerPubkey), "ark signer key");
14447
14450
  const deprecatedSignerPubKeys = arkInfo.deprecatedSigners.map(
14448
- (s) => chunkWIFL5QYZ_cjs.toXOnly(base.hex.decode(s.pubkey), "deprecated signer key")
14451
+ (s) => chunk3OKEUDHU_cjs.toXOnly(base.hex.decode(s.pubkey), "deprecated signer key")
14449
14452
  );
14450
14453
  const deps = {
14451
14454
  indexerProvider: this.indexerProvider,
@@ -14460,7 +14463,7 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
14460
14463
  csvTimelocks: this.walletContractTimelocks,
14461
14464
  // Boarding-exit CSV so the boarding handler can build its
14462
14465
  // candidate script (distinct from the unilateral-exit matrix).
14463
- boardingTimelock: this.boardingTapscript.options.csvTimelock ?? chunkWIFL5QYZ_cjs.DefaultVtxo.Script.DEFAULT_TIMELOCK,
14466
+ boardingTimelock: this.boardingTapscript.options.csvTimelock ?? chunk3OKEUDHU_cjs.DefaultVtxo.Script.DEFAULT_TIMELOCK,
14464
14467
  delegatePubKey
14465
14468
  };
14466
14469
  const result = await manager.scanContracts({
@@ -14574,7 +14577,7 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
14574
14577
  throw new Error("Invalid configured public key");
14575
14578
  }
14576
14579
  const setup = await ReadonlyWallet.setupWalletConfig(config, pubkey);
14577
- const forfeitPubkey = chunkWIFL5QYZ_cjs.toXOnly(base.hex.decode(setup.info.forfeitPubkey), "forfeit key");
14580
+ const forfeitPubkey = chunk3OKEUDHU_cjs.toXOnly(base.hex.decode(setup.info.forfeitPubkey), "forfeit key");
14578
14581
  const forfeitAddress = btcSigner.Address(setup.network).decode(setup.info.forfeitAddress);
14579
14582
  const forfeitOutputScript = btcSigner.OutScript.encode(forfeitAddress);
14580
14583
  const checkpointExitDelayOverrides = {
@@ -14723,7 +14726,7 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
14723
14726
  inputs: params.selectedVtxos,
14724
14727
  changeAmount: BigInt(changeAmount)
14725
14728
  };
14726
- const outputAddress = chunk5MLC2HU3_cjs.ArkAddress.decode(params.address);
14729
+ const outputAddress = chunk57636V35_cjs.ArkAddress.decode(params.address);
14727
14730
  assertRecipientArkAddress(
14728
14731
  params.address,
14729
14732
  outputAddress,
@@ -14789,13 +14792,13 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
14789
14792
  void this.logUngatedInputs("settle({ inputs })", params.inputs);
14790
14793
  }
14791
14794
  const offchainAddress = await this.getAddress();
14792
- const offchainPkScript = chunk5MLC2HU3_cjs.ArkAddress.decode(offchainAddress).pkScript;
14795
+ const offchainPkScript = chunk57636V35_cjs.ArkAddress.decode(offchainAddress).pkScript;
14793
14796
  const offchainOutputScript = base.hex.encode(offchainPkScript);
14794
14797
  if (!params) {
14795
14798
  const { fees, vtxoMaxAmount } = await this.arkProvider.getInfo();
14796
14799
  const estimator = new Estimator(fees.intentFee);
14797
14800
  let amount = 0;
14798
- const exitScript = chunk5MLC2HU3_cjs.CSVMultisigTapscript.decode(
14801
+ const exitScript = chunk57636V35_cjs.CSVMultisigTapscript.decode(
14799
14802
  base.hex.decode(this.boardingTapscript.exitScript)
14800
14803
  );
14801
14804
  const boardingTimelock = exitScript.params.timelock;
@@ -14824,7 +14827,7 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
14824
14827
  if (filteredVtxos.length >= MAX_VTXOS_PER_SETTLEMENT) {
14825
14828
  break;
14826
14829
  }
14827
- const inputFee = estimator.evalOffchainInput(chunk5MLC2HU3_cjs.toOffchainInputFeeParams(vtxo));
14830
+ const inputFee = estimator.evalOffchainInput(chunk57636V35_cjs.toOffchainInputFeeParams(vtxo));
14828
14831
  if (inputFee.satoshis >= vtxo.value) {
14829
14832
  continue;
14830
14833
  }
@@ -14871,7 +14874,7 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
14871
14874
  let script;
14872
14875
  let arkAddress;
14873
14876
  try {
14874
- arkAddress = chunk5MLC2HU3_cjs.ArkAddress.decode(output.address);
14877
+ arkAddress = chunk57636V35_cjs.ArkAddress.decode(output.address);
14875
14878
  } catch {
14876
14879
  arkAddress = void 0;
14877
14880
  }
@@ -14961,7 +14964,7 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
14961
14964
  const abortController = new AbortController();
14962
14965
  let stream;
14963
14966
  let committedTxid;
14964
- const settleInputVtxos = params.inputs.filter(chunk5MLC2HU3_cjs.isVirtualCoin);
14967
+ const settleInputVtxos = params.inputs.filter(chunk57636V35_cjs.isVirtualCoin);
14965
14968
  const contractManager = await this.getContractManager();
14966
14969
  await contractManager.assertAnnotatable(settleInputVtxos);
14967
14970
  await contractManager.assertSpendableNow?.(
@@ -15073,7 +15076,7 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
15073
15076
  async maybeRotateBoardingAfterBoard(inputs) {
15074
15077
  if (!this._descriptorProvider) return;
15075
15078
  const consumedBoarding = inputs.some(
15076
- (input) => typeof input !== "string" && !chunk5MLC2HU3_cjs.isVirtualCoin(input)
15079
+ (input) => typeof input !== "string" && !chunk57636V35_cjs.isVirtualCoin(input)
15077
15080
  );
15078
15081
  if (!consumedBoarding) return;
15079
15082
  try {
@@ -15097,7 +15100,7 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
15097
15100
  let connectorIndex = 0;
15098
15101
  const connectorsLeaves = connectorsGraph?.leaves() || [];
15099
15102
  for (const input of inputs) {
15100
- if (!chunk5MLC2HU3_cjs.isVirtualCoin(input)) {
15103
+ if (!chunk57636V35_cjs.isVirtualCoin(input)) {
15101
15104
  for (let i = 0; i < settlementPsbt.inputsLength; i++) {
15102
15105
  const settlementInput = settlementPsbt.getInput(i);
15103
15106
  if (!settlementInput.txid || settlementInput.index === void 0) {
@@ -15128,7 +15131,7 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
15128
15131
  }
15129
15132
  continue;
15130
15133
  }
15131
- if (chunk5MLC2HU3_cjs.canRecoverOnchain(input, { timestamp: /* @__PURE__ */ new Date() }) || isSubdust({ value: input.value }, this.dustAmount)) {
15134
+ if (chunk57636V35_cjs.canRecoverOnchain(input, { timestamp: /* @__PURE__ */ new Date() }) || isSubdust({ value: input.value }, this.dustAmount)) {
15132
15135
  continue;
15133
15136
  }
15134
15137
  if (connectorsLeaves.length === 0) {
@@ -15156,7 +15159,7 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
15156
15159
  index: input.vout,
15157
15160
  witnessUtxo: {
15158
15161
  amount: BigInt(input.value),
15159
- script: chunk5MLC2HU3_cjs.VtxoScript.decode(input.tapTree).pkScript
15162
+ script: chunk57636V35_cjs.VtxoScript.decode(input.tapTree).pkScript
15160
15163
  },
15161
15164
  sighashType: btcSigner.SigHash.DEFAULT,
15162
15165
  tapLeafScript: [input.forfeitTapLeafScript]
@@ -15175,7 +15178,7 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
15175
15178
  forfeitTx = await this._signerRouter.sign(forfeitTx, [
15176
15179
  {
15177
15180
  index: 0,
15178
- lookupScript: chunk5MLC2HU3_cjs.VtxoScript.decode(input.tapTree).pkScript
15181
+ lookupScript: chunk57636V35_cjs.VtxoScript.decode(input.tapTree).pkScript
15179
15182
  }
15180
15183
  ]);
15181
15184
  signedForfeits.push(base.base64.encode(forfeitTx.toPSBT()));
@@ -15233,7 +15236,7 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
15233
15236
  resolveBatchExpiryPolicy(this.network, this.batchExpiryPolicy)
15234
15237
  );
15235
15238
  await this.arkProvider.confirmRegistration(intentId);
15236
- const sweepTapscript = chunk5MLC2HU3_cjs.CSVMultisigTapscript.encode({
15239
+ const sweepTapscript = chunk57636V35_cjs.CSVMultisigTapscript.encode({
15237
15240
  timelock,
15238
15241
  pubkeys: [this.forfeitPubkey]
15239
15242
  }).script;
@@ -15248,10 +15251,10 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
15248
15251
  throw new Error("Sweep tap tree root not set");
15249
15252
  }
15250
15253
  const xOnlyPublicKeys = event.cosignersPublicKeys.map(
15251
- (k) => base.hex.encode(chunkWIFL5QYZ_cjs.toXOnly(base.hex.decode(k), "cosigner key"))
15254
+ (k) => base.hex.encode(chunk3OKEUDHU_cjs.toXOnly(base.hex.decode(k), "cosigner key"))
15252
15255
  );
15253
15256
  const signerPublicKey = await session.getPublicKey();
15254
- const xonlySignerPublicKey = chunkWIFL5QYZ_cjs.toXOnly(signerPublicKey, "signer key");
15257
+ const xonlySignerPublicKey = chunk3OKEUDHU_cjs.toXOnly(signerPublicKey, "signer key");
15255
15258
  if (!xOnlyPublicKeys.includes(base.hex.encode(xonlySignerPublicKey))) {
15256
15259
  return { skip: true };
15257
15260
  }
@@ -15341,9 +15344,9 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
15341
15344
  ...existing ?? {},
15342
15345
  intentTxId,
15343
15346
  registerProof: intent.proof,
15344
- registerProofMessage: chunk5MLC2HU3_cjs.Intent.encodeMessage(intent.message),
15347
+ registerProofMessage: chunk57636V35_cjs.Intent.encodeMessage(intent.message),
15345
15348
  deleteProof: deleteIntent.proof,
15346
- deleteProofMessage: chunk5MLC2HU3_cjs.Intent.encodeMessage(deleteIntent.message),
15349
+ deleteProofMessage: chunk57636V35_cjs.Intent.encodeMessage(deleteIntent.message),
15347
15350
  intentVtxos: inputs.map((i) => ({
15348
15351
  txid: i.txid,
15349
15352
  vout: i.vout
@@ -15375,7 +15378,7 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
15375
15378
  try {
15376
15379
  return await this.arkProvider.registerIntent(intent);
15377
15380
  } catch (error) {
15378
- if (error instanceof chunk5MLC2HU3_cjs.ArkError && error.code === 0 && error.message.includes("duplicated input")) {
15381
+ if (error instanceof chunk57636V35_cjs.ArkError && error.code === 0 && error.message.includes("duplicated input")) {
15379
15382
  const deleteIntent = await this.makeDeleteIntentSignature(inputs);
15380
15383
  await this.arkProvider.deleteIntent(deleteIntent);
15381
15384
  return this.arkProvider.registerIntent(intent);
@@ -15391,7 +15394,7 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
15391
15394
  expire_at: 0,
15392
15395
  cosigners_public_keys: cosignerPubKeys
15393
15396
  };
15394
- const proof = chunk5MLC2HU3_cjs.Intent.create(message, coins, outputs);
15397
+ const proof = chunk57636V35_cjs.Intent.create(message, coins, outputs);
15395
15398
  const signedProof = await this._signerRouter.sign(proof, intentProofJobs(coins));
15396
15399
  return {
15397
15400
  proof: base.base64.encode(signedProof.toPSBT()),
@@ -15403,7 +15406,7 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
15403
15406
  type: "delete",
15404
15407
  expire_at: 0
15405
15408
  };
15406
- const proof = chunk5MLC2HU3_cjs.Intent.create(message, coins, []);
15409
+ const proof = chunk57636V35_cjs.Intent.create(message, coins, []);
15407
15410
  const signedProof = await this._signerRouter.sign(proof, intentProofJobs(coins));
15408
15411
  return {
15409
15412
  proof: base.base64.encode(signedProof.toPSBT()),
@@ -15415,7 +15418,7 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
15415
15418
  type: "get-pending-tx",
15416
15419
  expire_at: 0
15417
15420
  };
15418
- const proof = chunk5MLC2HU3_cjs.Intent.create(message, coins, []);
15421
+ const proof = chunk57636V35_cjs.Intent.create(message, coins, []);
15419
15422
  const signedProof = await this._signerRouter.sign(proof, intentProofJobs(coins));
15420
15423
  return {
15421
15424
  proof: base.base64.encode(signedProof.toPSBT()),
@@ -15436,7 +15439,7 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
15436
15439
  if (!vtxos || vtxos.length === 0) {
15437
15440
  const scriptMap = await this.getScriptMap();
15438
15441
  const allExtended = [];
15439
- const fetchedVtxos = await chunk5MLC2HU3_cjs.getAllNormalizedVtxos(this.indexerProvider, [
15442
+ const fetchedVtxos = await chunk57636V35_cjs.getAllNormalizedVtxos(this.indexerProvider, [
15440
15443
  ...scriptMap.keys()
15441
15444
  ]);
15442
15445
  for (const vtxo of fetchedVtxos) {
@@ -15480,7 +15483,7 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
15480
15483
  try {
15481
15484
  const checkpointTxs = pendingTx.signedCheckpointTxs.map((c) => {
15482
15485
  const tx = btcSigner.Transaction.fromPSBT(base.base64.decode(c));
15483
- chunk5MLC2HU3_cjs.assertAllowedSighashTypes(tx);
15486
+ chunk57636V35_cjs.assertAllowedSighashTypes(tx);
15484
15487
  return tx;
15485
15488
  });
15486
15489
  assertCheckpointsMatchInputs(
@@ -15552,11 +15555,11 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
15552
15555
  * against the current key alone would leave it pending forever.
15553
15556
  */
15554
15557
  checkpointUnrollCandidates(info) {
15555
- const current = chunk5MLC2HU3_cjs.CSVMultisigTapscript.decode(base.hex.decode(info.checkpointTapscript));
15558
+ const current = chunk57636V35_cjs.CSVMultisigTapscript.decode(base.hex.decode(info.checkpointTapscript));
15556
15559
  const candidates = [this._serverUnrollScript, current];
15557
15560
  for (const deprecated of signerSetFromInfo(info).deprecated.keys()) {
15558
15561
  candidates.push(
15559
- chunk5MLC2HU3_cjs.CSVMultisigTapscript.encode({
15562
+ chunk57636V35_cjs.CSVMultisigTapscript.encode({
15560
15563
  ...current.params,
15561
15564
  pubkeys: [base.hex.decode(deprecated)]
15562
15565
  })
@@ -15647,7 +15650,7 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
15647
15650
  if (vtxos.length === 0) {
15648
15651
  throw new Error("No VTXOs found for this arkadeCash");
15649
15652
  }
15650
- const myPkScript = chunk5MLC2HU3_cjs.ArkAddress.decode(await this.getAddress()).pkScript;
15653
+ const myPkScript = chunk57636V35_cjs.ArkAddress.decode(await this.getAddress()).pkScript;
15651
15654
  let { spendable, unclaimed } = this.classifyCashVtxos(vtxos);
15652
15655
  let swept = 0;
15653
15656
  const drainable = vtxos.filter(
@@ -15723,7 +15726,7 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
15723
15726
  const spendable = [];
15724
15727
  const unclaimed = [];
15725
15728
  for (const vtxo of vtxos) {
15726
- if (chunk5MLC2HU3_cjs.hasTerminalSpend(vtxo)) {
15729
+ if (chunk57636V35_cjs.hasTerminalSpend(vtxo)) {
15727
15730
  unclaimed.push(cashReport(vtxo, "already-spent"));
15728
15731
  } else if (vtxo.isUnrolled) {
15729
15732
  unclaimed.push(cashReport(vtxo, "exited"));
@@ -15745,7 +15748,7 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
15745
15748
  const all = [];
15746
15749
  const seen = /* @__PURE__ */ new Set();
15747
15750
  for (let pageIndex = 0; ; pageIndex++) {
15748
- const { vtxos, page } = await chunk5MLC2HU3_cjs.getNormalizedVtxos(this.indexerProvider, {
15751
+ const { vtxos, page } = await chunk57636V35_cjs.getNormalizedVtxos(this.indexerProvider, {
15749
15752
  scripts,
15750
15753
  pageIndex,
15751
15754
  pageSize
@@ -15792,7 +15795,7 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
15792
15795
  for (let i = 0; i < inputs.length; i += MAX_INPUTS_PER_INTENT) {
15793
15796
  const batch = inputs.slice(i, i + MAX_INPUTS_PER_INTENT);
15794
15797
  const message = { type: "get-pending-tx", expire_at: 0 };
15795
- const proof = chunk5MLC2HU3_cjs.Intent.create(message, batch, []);
15798
+ const proof = chunk57636V35_cjs.Intent.create(message, batch, []);
15796
15799
  const signedProof = await identity.sign(
15797
15800
  proof,
15798
15801
  Array.from({ length: batch.length + 1 }, (_, j) => j)
@@ -15814,7 +15817,7 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
15814
15817
  try {
15815
15818
  const checkpointTxs = pendingTx.signedCheckpointTxs.map((checkpoint) => {
15816
15819
  const tx = btcSigner.Transaction.fromPSBT(base.base64.decode(checkpoint));
15817
- chunk5MLC2HU3_cjs.assertAllowedSighashTypes(tx);
15820
+ chunk57636V35_cjs.assertAllowedSighashTypes(tx);
15818
15821
  return tx;
15819
15822
  });
15820
15823
  assertCheckpointsMatchInputs(
@@ -16013,7 +16016,7 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
16013
16016
  script: recipient.script,
16014
16017
  amount: BigInt(recipient.amount),
16015
16018
  // Already checked against the recipient address in `validateRecipients`.
16016
- ...recipient.tapTree ? { tapTree: chunk5MLC2HU3_cjs.TapTreeCoder.decode(recipient.tapTree) } : {}
16019
+ ...recipient.tapTree ? { tapTree: chunk57636V35_cjs.TapTreeCoder.decode(recipient.tapTree) } : {}
16017
16020
  }));
16018
16021
  const totalBtcOutput = outputs.reduce((sum, o) => sum + Number(o.amount), 0);
16019
16022
  let changeAmount = totalBtcSelected - totalBtcOutput;
@@ -16157,10 +16160,10 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
16157
16160
  const serverPubKey = this.arkServerPublicKey;
16158
16161
  const serverUnrollScript = this.serverUnrollScript;
16159
16162
  const arkAddress = offchainTapscript.address(this.network.hrp, serverPubKey);
16160
- const normalizedInputs = inputs.map(chunk5MLC2HU3_cjs.normalizeVtxo);
16161
- const at = now ?? await chunk5MLC2HU3_cjs.resolveTimeHeight(this.onchainProvider);
16163
+ const normalizedInputs = inputs.map(chunk57636V35_cjs.normalizeVtxo);
16164
+ const at = now ?? await chunk57636V35_cjs.resolveTimeHeight(this.onchainProvider);
16162
16165
  for (const input of normalizedInputs) {
16163
- if (!chunk5MLC2HU3_cjs.canSpendOffchain(input, at)) {
16166
+ if (!chunk57636V35_cjs.canSpendOffchain(input, at)) {
16164
16167
  throw new Error(
16165
16168
  `sendSelectedVtxosToSelf: input ${input.txid}:${input.vout} is not cooperatively spendable`
16166
16169
  );
@@ -16230,7 +16233,7 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
16230
16233
  );
16231
16234
  const arkTxJobs = inputs.map((input, index) => ({
16232
16235
  index,
16233
- lookupScript: chunk5MLC2HU3_cjs.VtxoScript.decode(input.tapTree).pkScript
16236
+ lookupScript: chunk57636V35_cjs.VtxoScript.decode(input.tapTree).pkScript
16234
16237
  }));
16235
16238
  const identity = this.identity;
16236
16239
  const signer = {
@@ -16316,14 +16319,14 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
16316
16319
  const spentBy = checkpointIdByOutpoint.get(`${vtxo.txid}:${vtxo.vout}`);
16317
16320
  spentVtxos.push({
16318
16321
  ...spentFacts,
16319
- virtualStatus: chunk5MLC2HU3_cjs.toVirtualStatus(spentFacts),
16322
+ virtualStatus: chunk57636V35_cjs.toVirtualStatus(spentFacts),
16320
16323
  ...spentBy ? { spentBy } : {},
16321
16324
  arkTxId: arkTxid
16322
16325
  });
16323
16326
  for (const id of vtxo.commitmentTxIds) {
16324
16327
  commitmentTxIds.add(id);
16325
16328
  }
16326
- const vtxoExpiry = chunk5MLC2HU3_cjs.toBatchExpiry(vtxo);
16329
+ const vtxoExpiry = chunk57636V35_cjs.toBatchExpiry(vtxo);
16327
16330
  if (vtxoExpiry) {
16328
16331
  batchExpiry = Math.min(batchExpiry, vtxoExpiry);
16329
16332
  }
@@ -16336,7 +16339,7 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
16336
16339
  isSwept: false,
16337
16340
  isPreconfirmed: true,
16338
16341
  commitmentTxIds: Array.from(commitmentTxIds),
16339
- ...chunk5MLC2HU3_cjs.parseLegacyExpiry(batchExpiry)
16342
+ ...chunk57636V35_cjs.parseLegacyExpiry(batchExpiry)
16340
16343
  };
16341
16344
  changeVtxo = {
16342
16345
  txid: arkTxid,
@@ -16348,7 +16351,7 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
16348
16351
  tapTree: offchainTapscript.encode(),
16349
16352
  value: Number(changeAmount),
16350
16353
  ...changeFacts,
16351
- virtualStatus: chunk5MLC2HU3_cjs.toVirtualStatus(changeFacts),
16354
+ virtualStatus: chunk57636V35_cjs.toVirtualStatus(changeFacts),
16352
16355
  spentBy: "",
16353
16356
  status: {
16354
16357
  confirmed: false
@@ -16417,12 +16420,12 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
16417
16420
  const spentVtxos = [];
16418
16421
  const inputArkTxIds = /* @__PURE__ */ new Set();
16419
16422
  const boardingRemovalsByAddress = /* @__PURE__ */ new Map();
16420
- const vtxoInputs = inputs.filter(chunk5MLC2HU3_cjs.isVirtualCoin);
16423
+ const vtxoInputs = inputs.filter(chunk57636V35_cjs.isVirtualCoin);
16421
16424
  const cm = await this.getContractManager();
16422
16425
  const annotatedVtxos = await cm.annotateVtxos(vtxoInputs);
16423
16426
  const annotatedByKey = new Map(annotatedVtxos.map((v) => [`${v.txid}:${v.vout}`, v]));
16424
16427
  for (const input of inputs) {
16425
- if (chunk5MLC2HU3_cjs.isVirtualCoin(input)) {
16428
+ if (chunk57636V35_cjs.isVirtualCoin(input)) {
16426
16429
  const outpoint = `${input.txid}:${input.vout}`;
16427
16430
  const vtxo = annotatedByKey.get(outpoint);
16428
16431
  if (!vtxo) {
@@ -16434,13 +16437,13 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
16434
16437
  const settledFacts = { ...vtxo, isSpent: true };
16435
16438
  spentVtxos.push({
16436
16439
  ...settledFacts,
16437
- virtualStatus: chunk5MLC2HU3_cjs.toVirtualStatus(settledFacts),
16440
+ virtualStatus: chunk57636V35_cjs.toVirtualStatus(settledFacts),
16438
16441
  settledBy: commitmentTxid
16439
16442
  });
16440
16443
  } else {
16441
16444
  let sourceAddress;
16442
16445
  try {
16443
- sourceAddress = chunk5MLC2HU3_cjs.VtxoScript.decode(input.tapTree).onchainAddress(
16446
+ sourceAddress = chunk57636V35_cjs.VtxoScript.decode(input.tapTree).onchainAddress(
16444
16447
  this.network
16445
16448
  );
16446
16449
  } catch {
@@ -16498,9 +16501,9 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
16498
16501
  }
16499
16502
  };
16500
16503
  function selectVirtualCoins(coins, targetAmount) {
16501
- const sortedCoins = coins.map(chunk5MLC2HU3_cjs.normalizeVtxo).sort((a, b) => {
16502
- const expiryA = chunk5MLC2HU3_cjs.toBatchExpiry(a) || Number.MAX_SAFE_INTEGER;
16503
- const expiryB = chunk5MLC2HU3_cjs.toBatchExpiry(b) || Number.MAX_SAFE_INTEGER;
16504
+ const sortedCoins = coins.map(chunk57636V35_cjs.normalizeVtxo).sort((a, b) => {
16505
+ const expiryA = chunk57636V35_cjs.toBatchExpiry(a) || Number.MAX_SAFE_INTEGER;
16506
+ const expiryB = chunk57636V35_cjs.toBatchExpiry(b) || Number.MAX_SAFE_INTEGER;
16504
16507
  if (expiryA !== expiryB) {
16505
16508
  return expiryA - expiryB;
16506
16509
  }
@@ -16869,7 +16872,7 @@ var MessageBus = class {
16869
16872
  this.initialized = true;
16870
16873
  }
16871
16874
  async buildServices(config) {
16872
- const arkProvider = new chunk5MLC2HU3_cjs.RestArkProvider(config.arkServer.url);
16875
+ const arkProvider = new chunk57636V35_cjs.RestArkProvider(config.arkServer.url);
16873
16876
  const storage = {
16874
16877
  walletRepository: this.walletRepository,
16875
16878
  contractRepository: this.contractRepository,
@@ -17211,7 +17214,7 @@ var offboardNetworkNames = [
17211
17214
  function offboardDestinationScript(destinationAddress) {
17212
17215
  for (const networkName of offboardNetworkNames) {
17213
17216
  try {
17214
- const network = chunk5MLC2HU3_cjs.networks[networkName];
17217
+ const network = chunk57636V35_cjs.networks[networkName];
17215
17218
  const addr = btcSigner.Address(network).decode(destinationAddress);
17216
17219
  return btcSigner.OutScript.encode(addr);
17217
17220
  } catch {
@@ -17275,7 +17278,7 @@ var Ramps = class {
17275
17278
  }
17276
17279
  amount = amount ?? totalAmount;
17277
17280
  const offchainAddress = await this.wallet.getAddress();
17278
- const offchainAddr = chunk5MLC2HU3_cjs.ArkAddress.decode(offchainAddress);
17281
+ const offchainAddr = chunk57636V35_cjs.ArkAddress.decode(offchainAddress);
17279
17282
  const offchainScript = base.hex.encode(offchainAddr.pkScript);
17280
17283
  const outputFee = estimator.evalOffchainOutput({
17281
17284
  amount,
@@ -17335,7 +17338,7 @@ var Ramps = class {
17335
17338
  const filteredVtxos = [];
17336
17339
  let totalAmount = 0n;
17337
17340
  for (const vtxo of vtxos) {
17338
- const inputFee = estimator.evalOffchainInput(chunk5MLC2HU3_cjs.toOffchainInputFeeParams(vtxo));
17341
+ const inputFee = estimator.evalOffchainInput(chunk57636V35_cjs.toOffchainInputFeeParams(vtxo));
17339
17342
  if (inputFee.satoshis >= vtxo.value) {
17340
17343
  continue;
17341
17344
  }
@@ -18171,7 +18174,7 @@ var WalletMessageHandler = class {
18171
18174
  // Wallet methods
18172
18175
  async handleInitWallet({ payload }) {
18173
18176
  const { arkServerUrl } = payload;
18174
- this.indexerProvider = new chunkGVHUHTRH_cjs.RestIndexerProvider(arkServerUrl);
18177
+ this.indexerProvider = new chunk3KW4TWP2_cjs.RestIndexerProvider(arkServerUrl);
18175
18178
  await this.onWalletInitialized();
18176
18179
  }
18177
18180
  /**
@@ -18460,7 +18463,7 @@ var WalletMessageHandler = class {
18460
18463
  if (v.isUnrolled) {
18461
18464
  return withUnrolled;
18462
18465
  }
18463
- if (chunk5MLC2HU3_cjs.hasTerminalSpend(v)) {
18466
+ if (chunk57636V35_cjs.hasTerminalSpend(v)) {
18464
18467
  return false;
18465
18468
  }
18466
18469
  if (includeRecoverable) {
@@ -18469,10 +18472,10 @@ var WalletMessageHandler = class {
18469
18472
  if (dustAmount != null && isSubdust(v, dustAmount)) {
18470
18473
  return false;
18471
18474
  }
18472
- if (chunk5MLC2HU3_cjs.isRecoverable(v)) {
18475
+ if (chunk57636V35_cjs.isRecoverable(v)) {
18473
18476
  return false;
18474
18477
  }
18475
- if (chunk5MLC2HU3_cjs.isExpired(v)) {
18478
+ if (chunk57636V35_cjs.isExpired(v)) {
18476
18479
  return false;
18477
18480
  }
18478
18481
  return true;
@@ -18570,7 +18573,7 @@ var WalletMessageHandler = class {
18570
18573
  if (!this.readonlyWallet) return null;
18571
18574
  const { boardingTxs, commitmentsToIgnore } = await this.readonlyWallet.getBoardingTxs();
18572
18575
  const indexerProvider = this.indexerProvider;
18573
- const resolveTxCreatedAt = indexerProvider ? (txids) => chunk5MLC2HU3_cjs.fetchVtxoCreatedAtByTxid(indexerProvider, txids) : void 0;
18576
+ const resolveTxCreatedAt = indexerProvider ? (txids) => chunk57636V35_cjs.fetchVtxoCreatedAtByTxid(indexerProvider, txids) : void 0;
18574
18577
  return buildTransactionHistory(vtxos, boardingTxs, commitmentsToIgnore, resolveTxCreatedAt);
18575
18578
  }
18576
18579
  async ensureContractEventBroadcasting() {
@@ -19266,7 +19269,7 @@ var ServiceWorkerReadonlyWallet = class _ServiceWorkerReadonlyWallet {
19266
19269
  };
19267
19270
  try {
19268
19271
  const response = await this.sendMessage(message);
19269
- return response.payload.vtxos.map(chunk5MLC2HU3_cjs.normalizeVtxo);
19272
+ return response.payload.vtxos.map(chunk57636V35_cjs.normalizeVtxo);
19270
19273
  } catch (error) {
19271
19274
  throw new Error(`Failed to get vtxos: ${error}`);
19272
19275
  }
@@ -19291,7 +19294,7 @@ var ServiceWorkerReadonlyWallet = class _ServiceWorkerReadonlyWallet {
19291
19294
  };
19292
19295
  try {
19293
19296
  const response = await this.sendMessage(message);
19294
- return response.payload.vtxos.map(chunk5MLC2HU3_cjs.normalizeVtxo);
19297
+ return response.payload.vtxos.map(chunk57636V35_cjs.normalizeVtxo);
19295
19298
  } catch (error) {
19296
19299
  throw new Error(`Failed to get spendable vtxos: ${error}`);
19297
19300
  }
@@ -19422,7 +19425,7 @@ var ServiceWorkerReadonlyWallet = class _ServiceWorkerReadonlyWallet {
19422
19425
  };
19423
19426
  try {
19424
19427
  const response = await sendContractMessage(message);
19425
- return response.payload.vtxos.map(chunk5MLC2HU3_cjs.normalizeVtxo);
19428
+ return response.payload.vtxos.map(chunk57636V35_cjs.normalizeVtxo);
19426
19429
  } catch (e) {
19427
19430
  throw new Error("Failed to annotate vtxos");
19428
19431
  }
@@ -20023,7 +20026,7 @@ var ServiceWorkerWallet = class _ServiceWorkerWallet extends ServiceWorkerReadon
20023
20026
  };
20024
20027
  try {
20025
20028
  const response = await wallet.sendMessage(message);
20026
- return response.payload.vtxos.map(chunk5MLC2HU3_cjs.normalizeVtxo);
20029
+ return response.payload.vtxos.map(chunk57636V35_cjs.normalizeVtxo);
20027
20030
  } catch (e) {
20028
20031
  throw new Error(`Failed to get expiring vtxos: ${e}`);
20029
20032
  }
@@ -20135,12 +20138,12 @@ var OnchainWallet = class _OnchainWallet {
20135
20138
  * @returns Configured onchain wallet
20136
20139
  * @throws Error if the configured identity cannot produce a valid x-only public key
20137
20140
  */
20138
- static async create(identity, networkName = chunk5MLC2HU3_cjs.DEFAULT_NETWORK_NAME, provider) {
20141
+ static async create(identity, networkName = chunk57636V35_cjs.DEFAULT_NETWORK_NAME, provider) {
20139
20142
  const pubkey = await identity.xOnlyPublicKey();
20140
20143
  if (!pubkey) {
20141
20144
  throw new Error("Invalid configured public key");
20142
20145
  }
20143
- const network = chunk5MLC2HU3_cjs.getNetwork(networkName);
20146
+ const network = chunk57636V35_cjs.getNetwork(networkName);
20144
20147
  const onchainProvider = provider || new EsploraProvider(ESPLORA_URL[networkName]);
20145
20148
  const onchainP2TR = btcSigner.p2tr(pubkey, void 0, network);
20146
20149
  return new _OnchainWallet(identity, network, onchainP2TR, onchainProvider);
@@ -20246,7 +20249,7 @@ var OnchainWallet = class _OnchainWallet {
20246
20249
  if (!inputs) {
20247
20250
  throw new Error("Fee estimation failed");
20248
20251
  }
20249
- let tx = new chunk5MLC2HU3_cjs.Transaction();
20252
+ let tx = new chunk57636V35_cjs.Transaction();
20250
20253
  for (const input of inputs) {
20251
20254
  tx.addInput({
20252
20255
  txid: input.txid,
@@ -20304,7 +20307,7 @@ var OnchainWallet = class _OnchainWallet {
20304
20307
  * @throws If the parent has no anchor, or funding cannot be selected/signed
20305
20308
  */
20306
20309
  async bumpAnchor(parentHex, feeRate) {
20307
- const parent = chunk5MLC2HU3_cjs.Transaction.fromRaw(base.hex.decode(parentHex));
20310
+ const parent = chunk57636V35_cjs.Transaction.fromRaw(base.hex.decode(parentHex));
20308
20311
  const coins = (await this.getCoins()).filter((c) => c.status.confirmed);
20309
20312
  const child = await this.buildBumpPackage(parent, feeRate, coins);
20310
20313
  return [parent.hex, child.hex];
@@ -21211,7 +21214,7 @@ async function resolvePrevTxs(txids, source, onchain) {
21211
21214
  try {
21212
21215
  const { txs } = await source.getVirtualTxs(wanted);
21213
21216
  for (const psbt of txs) {
21214
- const tx = chunk5MLC2HU3_cjs.Transaction.fromPSBT(base.base64.decode(psbt));
21217
+ const tx = chunk57636V35_cjs.Transaction.fromPSBT(base.base64.decode(psbt));
21215
21218
  resolved.set(tx.id, tx.toBytes());
21216
21219
  }
21217
21220
  } catch (err) {
@@ -21244,7 +21247,7 @@ async function resolvePrevTxs(txids, source, onchain) {
21244
21247
  async function attachPrevArkTxs(tx, txids, source, onchain) {
21245
21248
  const pending = [];
21246
21249
  for (let i = 0; i < tx.inputsLength; i++) {
21247
- if (chunk5MLC2HU3_cjs.getArkPsbtFields(tx, i, chunk5MLC2HU3_cjs.PrevArkTxField).length === 0) pending.push(i);
21250
+ if (chunk57636V35_cjs.getArkPsbtFields(tx, i, chunk57636V35_cjs.PrevArkTxField).length === 0) pending.push(i);
21248
21251
  }
21249
21252
  if (pending.length === 0) return;
21250
21253
  const resolved = await resolvePrevTxs(
@@ -21253,13 +21256,13 @@ async function attachPrevArkTxs(tx, txids, source, onchain) {
21253
21256
  onchain
21254
21257
  );
21255
21258
  for (const i of pending) {
21256
- chunk5MLC2HU3_cjs.setArkPsbtField(tx, i, chunk5MLC2HU3_cjs.PrevArkTxField, resolved.get(txidAt(txids, i)));
21259
+ chunk57636V35_cjs.setArkPsbtField(tx, i, chunk57636V35_cjs.PrevArkTxField, resolved.get(txidAt(txids, i)));
21257
21260
  }
21258
21261
  }
21259
21262
  async function attachPrevoutTxs(tx, source) {
21260
21263
  const pending = [];
21261
21264
  for (let i = 0; i < tx.inputsLength; i++) {
21262
- if (chunk5MLC2HU3_cjs.getArkPsbtFields(tx, i, chunk5MLC2HU3_cjs.PrevoutTxField).length > 0) continue;
21265
+ if (chunk57636V35_cjs.getArkPsbtFields(tx, i, chunk57636V35_cjs.PrevoutTxField).length > 0) continue;
21263
21266
  const input = tx.getInput(i);
21264
21267
  if (!input?.txid) throw new PrevTxUnavailableError(`input ${i} has no outpoint`);
21265
21268
  pending.push({ index: i, txid: base.hex.encode(input.txid) });
@@ -21270,7 +21273,7 @@ async function attachPrevoutTxs(tx, source) {
21270
21273
  resolved.set(txid, await source.getRawTransaction(txid));
21271
21274
  }
21272
21275
  for (const { index, txid } of pending) {
21273
- chunk5MLC2HU3_cjs.setArkPsbtField(tx, index, chunk5MLC2HU3_cjs.PrevoutTxField, resolved.get(txid));
21276
+ chunk57636V35_cjs.setArkPsbtField(tx, index, chunk57636V35_cjs.PrevoutTxField, resolved.get(txid));
21274
21277
  }
21275
21278
  }
21276
21279
  async function withPrevTxs(coins, source, onchain) {
@@ -21296,7 +21299,7 @@ exports.BIP322 = void 0;
21296
21299
  async function sign2(message, identity, network) {
21297
21300
  const xOnlyPubKey = await identity.xOnlyPublicKey();
21298
21301
  const payment = btcSigner.p2tr(xOnlyPubKey, void 0, network);
21299
- const toSpend = chunk5MLC2HU3_cjs.craftToSpendTx(message, payment.script, TAG_BIP322);
21302
+ const toSpend = chunk57636V35_cjs.craftToSpendTx(message, payment.script, TAG_BIP322);
21300
21303
  const toSign = craftBIP322ToSignP2TR(toSpend, payment.script, xOnlyPubKey);
21301
21304
  const signed = await identity.sign(toSign, [0]);
21302
21305
  signed.finalizeIdx(0);
@@ -21354,7 +21357,7 @@ function verifyP2TR(message, witnessItems, pkScript, pubkey) {
21354
21357
  if (sighashType !== btcSigner.SigHash.DEFAULT && sighashType !== btcSigner.SigHash.ALL) {
21355
21358
  return false;
21356
21359
  }
21357
- const toSpend = chunk5MLC2HU3_cjs.craftToSpendTx(message, pkScript, TAG_BIP322);
21360
+ const toSpend = chunk57636V35_cjs.craftToSpendTx(message, pkScript, TAG_BIP322);
21358
21361
  const toSign = craftBIP322ToSignP2TR(toSpend, pkScript, pubkey);
21359
21362
  const sighash = toSign.preimageWitnessV1(0, [pkScript], sighashType, [0n]);
21360
21363
  const rawSig = sig.length === 65 ? sig.subarray(0, 64) : sig;
@@ -21375,7 +21378,7 @@ function verifyP2WPKH(message, witnessItems, pkScript, addressHash) {
21375
21378
  }
21376
21379
  const sighashType = sigWithHash[sigWithHash.length - 1];
21377
21380
  const derSig = sigWithHash.subarray(0, sigWithHash.length - 1);
21378
- const toSpend = chunk5MLC2HU3_cjs.craftToSpendTx(message, pkScript, TAG_BIP322);
21381
+ const toSpend = chunk57636V35_cjs.craftToSpendTx(message, pkScript, TAG_BIP322);
21379
21382
  const toSign = craftBIP322ToSignSimple(toSpend, pkScript);
21380
21383
  const scriptCode = btcSigner.OutScript.encode({ type: "pkh", hash: addressHash });
21381
21384
  const sighash = toSign.preimageWitnessV0(0, scriptCode, sighashType, 0n);
@@ -21428,7 +21431,7 @@ function encodeCompactSize(n) {
21428
21431
  return buf;
21429
21432
  }
21430
21433
  function craftBIP322ToSignP2TR(toSpend, pkScript, tapInternalKey) {
21431
- const tx = new chunk5MLC2HU3_cjs.Transaction({ version: 0 });
21434
+ const tx = new chunk57636V35_cjs.Transaction({ version: 0 });
21432
21435
  tx.addInput({
21433
21436
  txid: toSpend.id,
21434
21437
  index: 0,
@@ -21442,12 +21445,12 @@ function craftBIP322ToSignP2TR(toSpend, pkScript, tapInternalKey) {
21442
21445
  });
21443
21446
  tx.addOutput({
21444
21447
  amount: 0n,
21445
- script: chunk5MLC2HU3_cjs.OP_RETURN_EMPTY_PKSCRIPT
21448
+ script: chunk57636V35_cjs.OP_RETURN_EMPTY_PKSCRIPT
21446
21449
  });
21447
21450
  return tx;
21448
21451
  }
21449
21452
  function craftBIP322ToSignSimple(toSpend, pkScript) {
21450
- const tx = new chunk5MLC2HU3_cjs.Transaction({ version: 0 });
21453
+ const tx = new chunk57636V35_cjs.Transaction({ version: 0 });
21451
21454
  tx.addInput({
21452
21455
  txid: toSpend.id,
21453
21456
  index: 0,
@@ -21459,7 +21462,7 @@ function craftBIP322ToSignSimple(toSpend, pkScript) {
21459
21462
  });
21460
21463
  tx.addOutput({
21461
21464
  amount: 0n,
21462
- script: chunk5MLC2HU3_cjs.OP_RETURN_EMPTY_PKSCRIPT
21465
+ script: chunk57636V35_cjs.OP_RETURN_EMPTY_PKSCRIPT
21463
21466
  });
21464
21467
  return tx;
21465
21468
  }
@@ -21590,7 +21593,7 @@ var RestEmulatorProvider = class {
21590
21593
  }
21591
21594
  };
21592
21595
  function finalizeVirtualTx(type, psbtBase64) {
21593
- const tx = chunk5MLC2HU3_cjs.Transaction.fromPSBT(base.base64.decode(psbtBase64));
21596
+ const tx = chunk57636V35_cjs.Transaction.fromPSBT(base.base64.decode(psbtBase64));
21594
21597
  if (type === "INDEXER_CHAINED_TX_TYPE_TREE" /* TREE */) {
21595
21598
  const input = tx.getInput(0);
21596
21599
  if (!input) {
@@ -21617,14 +21620,14 @@ var ExitPathError = class extends Error {
21617
21620
  reason;
21618
21621
  };
21619
21622
  function delayWeight(sequence) {
21620
- const t = chunk5MLC2HU3_cjs.sequenceToTimelock(sequence);
21623
+ const t = chunk57636V35_cjs.sequenceToTimelock(sequence);
21621
21624
  return t.type === "blocks" ? Number(t.value) : Number(t.value) / 600;
21622
21625
  }
21623
21626
  async function resolveUnilateralPath(params) {
21624
21627
  const { vtxo, scriptHex, contractRepository } = params;
21625
21628
  const contract = contractRepository ? (await contractRepository.getContracts({ script: scriptHex }))[0] : void 0;
21626
21629
  if (contract) {
21627
- const handler = chunkWIFL5QYZ_cjs.contractHandlers.get(contract.type);
21630
+ const handler = chunk3OKEUDHU_cjs.contractHandlers.get(contract.type);
21628
21631
  if (!handler) {
21629
21632
  throw new ExitPathError(
21630
21633
  "no-handler",
@@ -21647,12 +21650,12 @@ async function resolveUnilateralPath(params) {
21647
21650
  paths.sort((a, b) => delayWeight(a.sequence) - delayWeight(b.sequence));
21648
21651
  return { selection: paths[0], label: `${contract.type}:unilateral` };
21649
21652
  }
21650
- const decoded = chunk5MLC2HU3_cjs.VtxoScript.decode(vtxo.tapTree);
21653
+ const decoded = chunk57636V35_cjs.VtxoScript.decode(vtxo.tapTree);
21651
21654
  let best;
21652
21655
  for (const exit of decoded.exitPaths()) {
21653
21656
  const leaf = decoded.findLeaf(base.hex.encode(exit.script));
21654
21657
  if (!leaf) continue;
21655
- const sequence = chunk5MLC2HU3_cjs.timelockToSequence(exit.params.timelock);
21658
+ const sequence = chunk57636V35_cjs.timelockToSequence(exit.params.timelock);
21656
21659
  const weight = delayWeight(sequence);
21657
21660
  if (!best || weight < best.weight) {
21658
21661
  best = { selection: { leaf, sequence }, weight };
@@ -21872,7 +21875,7 @@ async function prepareUnrollTransaction(wallet, vtxoTxIds, outputAddress) {
21872
21875
  let totalAmount = 0n;
21873
21876
  const txWeightEstimator = TxWeightEstimator.create();
21874
21877
  for (const vtxo of vtxos) {
21875
- if (!chunk5MLC2HU3_cjs.canSweepOnchain(vtxo)) {
21878
+ if (!chunk57636V35_cjs.canSweepOnchain(vtxo)) {
21876
21879
  throw new Error(
21877
21880
  `Vtxo ${vtxo.txid}:${vtxo.vout} cannot be swept onchain: it is not fully unrolled (use unroll first), or its exit output was already spent`
21878
21881
  );
@@ -21883,14 +21886,14 @@ async function prepareUnrollTransaction(wallet, vtxoTxIds, outputAddress) {
21883
21886
  }
21884
21887
  const resolved = await resolveUnilateralPath({
21885
21888
  vtxo,
21886
- scriptHex: base.hex.encode(chunk5MLC2HU3_cjs.VtxoScript.decode(vtxo.tapTree).pkScript),
21889
+ scriptHex: base.hex.encode(chunk57636V35_cjs.VtxoScript.decode(vtxo.tapTree).pkScript),
21887
21890
  contractRepository: wallet.contractRepository,
21888
21891
  walletPubKeyHex: base.hex.encode(await wallet.identity.xOnlyPublicKey()),
21889
21892
  currentTime: Date.now()
21890
21893
  });
21891
21894
  const spendingLeaf = resolved.selection.leaf;
21892
21895
  const sequence = resolved.selection.sequence;
21893
- const timelock = chunk5MLC2HU3_cjs.sequenceToTimelock(sequence);
21896
+ const timelock = chunk57636V35_cjs.sequenceToTimelock(sequence);
21894
21897
  const elapsed = timelock.type === "blocks" ? chainTip.height >= txStatus.blockHeight + Number(timelock.value) : chainTip.time >= txStatus.blockTime + Number(timelock.value);
21895
21898
  if (!elapsed) {
21896
21899
  throw new Error(`no available exit path found for vtxo ${vtxo.txid}:${vtxo.vout}`);
@@ -21903,7 +21906,7 @@ async function prepareUnrollTransaction(wallet, vtxoTxIds, outputAddress) {
21903
21906
  sequence,
21904
21907
  witnessUtxo: {
21905
21908
  amount: BigInt(vtxo.value),
21906
- script: chunk5MLC2HU3_cjs.VtxoScript.decode(vtxo.tapTree).pkScript
21909
+ script: chunk57636V35_cjs.VtxoScript.decode(vtxo.tapTree).pkScript
21907
21910
  },
21908
21911
  sighashType: btcSigner.SigHash.DEFAULT
21909
21912
  });
@@ -21913,7 +21916,7 @@ async function prepareUnrollTransaction(wallet, vtxoTxIds, outputAddress) {
21913
21916
  btcSigner.TaprootControlBlock.encode(spendingLeaf[0]).length
21914
21917
  );
21915
21918
  }
21916
- const tx = new chunk5MLC2HU3_cjs.Transaction({ version: 2 });
21919
+ const tx = new chunk57636V35_cjs.Transaction({ version: 2 });
21917
21920
  for (const input of inputs) {
21918
21921
  tx.addInput(input);
21919
21922
  }
@@ -21996,7 +21999,7 @@ async function buildSignedSweep(params) {
21996
21999
  `uneconomic vtxo ${vtxo.txid}:${vtxo.vout}: value ${vtxo.value} - fee ${fee} < dust`
21997
22000
  );
21998
22001
  }
21999
- const tx = new chunk5MLC2HU3_cjs.Transaction({ version: 2 });
22002
+ const tx = new chunk57636V35_cjs.Transaction({ version: 2 });
22000
22003
  tx.addInput({
22001
22004
  txid: vtxo.txid,
22002
22005
  index: vtxo.vout,
@@ -22021,7 +22024,7 @@ async function buildSignedSweep(params) {
22021
22024
  finalScriptWitness: [
22022
22025
  tapScriptSig[0][1],
22023
22026
  ...path.extraWitness,
22024
- chunk5MLC2HU3_cjs.scriptFromTapLeafScript(path.leaf),
22027
+ chunk57636V35_cjs.scriptFromTapLeafScript(path.leaf),
22025
22028
  btcSigner.TaprootControlBlock.encode(controlBlock)
22026
22029
  ]
22027
22030
  });
@@ -22051,7 +22054,7 @@ async function resolveFeeRate(opts) {
22051
22054
  }
22052
22055
  async function selectExitVtxos(opts) {
22053
22056
  if (!opts.vtxos) return opts.wallet.getVtxos();
22054
- const res = await chunk5MLC2HU3_cjs.getNormalizedVtxos(opts.wallet.indexerProvider, { outpoints: opts.vtxos });
22057
+ const res = await chunk57636V35_cjs.getNormalizedVtxos(opts.wallet.indexerProvider, { outpoints: opts.vtxos });
22055
22058
  const tapTrees = /* @__PURE__ */ new Map();
22056
22059
  const out = [];
22057
22060
  for (const vtxo of res.vtxos) {
@@ -22066,7 +22069,7 @@ async function selectExitVtxos(opts) {
22066
22069
  `no contract registered for vtxo script ${vtxo.script} \u2014 register the contract before exiting`
22067
22070
  );
22068
22071
  }
22069
- const handler = chunkWIFL5QYZ_cjs.contractHandlers.get(contract.type);
22072
+ const handler = chunk3OKEUDHU_cjs.contractHandlers.get(contract.type);
22070
22073
  if (!handler) {
22071
22074
  throw new Error(`no contract handler registered for type '${contract.type}'`);
22072
22075
  }
@@ -22096,7 +22099,7 @@ async function computeExitLayout(opts, feeRate) {
22096
22099
  if (pendingNodes.length > 0) {
22097
22100
  const txs = await resolver.getVirtualTxs(pendingNodes.map((n) => n.txid));
22098
22101
  for (const psbt of txs) {
22099
- psbts.set(chunk5MLC2HU3_cjs.Transaction.fromPSBT(base.base64.decode(psbt)).id, psbt);
22102
+ psbts.set(chunk57636V35_cjs.Transaction.fromPSBT(base.base64.decode(psbt)).id, psbt);
22100
22103
  }
22101
22104
  }
22102
22105
  const childVsize = Number(
@@ -22132,7 +22135,7 @@ async function computeExitLayout(opts, feeRate) {
22132
22135
  try {
22133
22136
  const resolved = await resolveUnilateralPath({
22134
22137
  vtxo,
22135
- scriptHex: base.hex.encode(chunk5MLC2HU3_cjs.VtxoScript.decode(vtxo.tapTree).pkScript),
22138
+ scriptHex: base.hex.encode(chunk57636V35_cjs.VtxoScript.decode(vtxo.tapTree).pkScript),
22136
22139
  contractRepository: wallet.contractRepository,
22137
22140
  walletPubKeyHex,
22138
22141
  currentTime: Date.now()
@@ -22151,7 +22154,7 @@ async function computeExitLayout(opts, feeRate) {
22151
22154
  });
22152
22155
  continue;
22153
22156
  }
22154
- const t = chunk5MLC2HU3_cjs.sequenceToTimelock(resolved.selection.sequence);
22157
+ const t = chunk57636V35_cjs.sequenceToTimelock(resolved.selection.sequence);
22155
22158
  const delay = { type: t.type, value: Number(t.value) };
22156
22159
  infos.push({ outpoint, value: vtxo.value, sweepFee, path: resolved.label, delay });
22157
22160
  sweeps.push({ vtxo, resolved, sweepFee, delay });
@@ -22552,7 +22555,7 @@ async function prepare(opts) {
22552
22555
  txid: sweep.vtxo.txid,
22553
22556
  vout: sweep.vtxo.vout,
22554
22557
  value: sweep.vtxo.value,
22555
- pkScript: chunk5MLC2HU3_cjs.VtxoScript.decode(sweep.vtxo.tapTree).pkScript
22558
+ pkScript: chunk57636V35_cjs.VtxoScript.decode(sweep.vtxo.tapTree).pkScript
22556
22559
  },
22557
22560
  path: sweep.resolved.selection,
22558
22561
  outputAddress: opts.sweepAddress,
@@ -22640,7 +22643,7 @@ async function prepare(opts) {
22640
22643
  if (newFee <= splitterFee) break;
22641
22644
  splitterFee = newFee;
22642
22645
  }
22643
- const splitter = new chunk5MLC2HU3_cjs.Transaction({ version: 2 });
22646
+ const splitter = new chunk57636V35_cjs.Transaction({ version: 2 });
22644
22647
  for (const coin of selected.inputs) {
22645
22648
  splitter.addInput({
22646
22649
  txid: coin.txid,
@@ -22784,41 +22787,41 @@ var UnilateralExit = {
22784
22787
  // src/arkade/index.ts
22785
22788
  var arkade_exports = {};
22786
22789
  chunk5BLDMQED_cjs.__export(arkade_exports, {
22787
- ARKADE_OP: () => chunkWIFL5QYZ_cjs.ARKADE_OP,
22788
- ARKADE_OPCODES: () => chunkWIFL5QYZ_cjs.ARKADE_OPCODES,
22789
- ARKADE_OPCODE_NAMES: () => chunkWIFL5QYZ_cjs.ARKADE_OPCODE_NAMES,
22790
- ARKADE_OPCODE_VALUES: () => chunkWIFL5QYZ_cjs.ARKADE_OPCODE_VALUES,
22791
- ARKADE_OPS: () => chunkWIFL5QYZ_cjs.ARKADE_OPS,
22790
+ ARKADE_OP: () => chunk3OKEUDHU_cjs.ARKADE_OP,
22791
+ ARKADE_OPCODES: () => chunk3OKEUDHU_cjs.ARKADE_OPCODES,
22792
+ ARKADE_OPCODE_NAMES: () => chunk3OKEUDHU_cjs.ARKADE_OPCODE_NAMES,
22793
+ ARKADE_OPCODE_VALUES: () => chunk3OKEUDHU_cjs.ARKADE_OPCODE_VALUES,
22794
+ ARKADE_OPS: () => chunk3OKEUDHU_cjs.ARKADE_OPS,
22792
22795
  Arkade: () => Arkade,
22793
22796
  ArkadeContract: () => ArkadeContract,
22794
- ArkadeProgramScript: () => chunkWIFL5QYZ_cjs.ArkadeProgramScript,
22795
- ArkadeScript: () => chunkWIFL5QYZ_cjs.ArkadeScript,
22797
+ ArkadeProgramScript: () => chunk3OKEUDHU_cjs.ArkadeProgramScript,
22798
+ ArkadeScript: () => chunk3OKEUDHU_cjs.ArkadeScript,
22796
22799
  ArkadeTransactionBuilder: () => ArkadeTransactionBuilder,
22797
- BigNum: () => chunkWIFL5QYZ_cjs.bignum_exports,
22800
+ BigNum: () => chunk3OKEUDHU_cjs.bignum_exports,
22798
22801
  OP: () => btcSigner.OP,
22799
- OPCODE_NAMES: () => chunkWIFL5QYZ_cjs.OPCODE_NAMES,
22800
- OPCODE_VALUES: () => chunkWIFL5QYZ_cjs.OPCODE_VALUES,
22801
- SUPPORTED_PROGRAM_VERSION: () => chunkWIFL5QYZ_cjs.SUPPORTED_PROGRAM_VERSION,
22802
+ OPCODE_NAMES: () => chunk3OKEUDHU_cjs.OPCODE_NAMES,
22803
+ OPCODE_VALUES: () => chunk3OKEUDHU_cjs.OPCODE_VALUES,
22804
+ SUPPORTED_PROGRAM_VERSION: () => chunk3OKEUDHU_cjs.SUPPORTED_PROGRAM_VERSION,
22802
22805
  Script: () => btcSigner.Script,
22803
- arkadeScriptHash: () => chunkWIFL5QYZ_cjs.arkadeScriptHash,
22804
- arkadeWitnessHash: () => chunkWIFL5QYZ_cjs.arkadeWitnessHash,
22805
- asmToBytes: () => chunkWIFL5QYZ_cjs.asmToBytes,
22806
- bytesToASM: () => chunkWIFL5QYZ_cjs.bytesToASM,
22807
- computeArkadeScriptPublicKey: () => chunkWIFL5QYZ_cjs.computeArkadeScriptPublicKey,
22806
+ arkadeScriptHash: () => chunk3OKEUDHU_cjs.arkadeScriptHash,
22807
+ arkadeWitnessHash: () => chunk3OKEUDHU_cjs.arkadeWitnessHash,
22808
+ asmToBytes: () => chunk3OKEUDHU_cjs.asmToBytes,
22809
+ bytesToASM: () => chunk3OKEUDHU_cjs.bytesToASM,
22810
+ computeArkadeScriptPublicKey: () => chunk3OKEUDHU_cjs.computeArkadeScriptPublicKey,
22808
22811
  createArkadeBatchHandler: () => createArkadeBatchHandler,
22809
- deserializeArkadeContractParams: () => chunkWIFL5QYZ_cjs.deserializeArkadeContractParams,
22810
- fromASM: () => chunkWIFL5QYZ_cjs.fromASM,
22811
- getOpcodeName: () => chunkWIFL5QYZ_cjs.getOpcodeName,
22812
- getOpcodeValue: () => chunkWIFL5QYZ_cjs.getOpcodeValue,
22813
- parseArtifact: () => chunkWIFL5QYZ_cjs.parseArtifact,
22814
- resolveAsm: () => chunkWIFL5QYZ_cjs.resolveAsm,
22815
- serializeArkadeContractParams: () => chunkWIFL5QYZ_cjs.serializeArkadeContractParams,
22816
- stringifyArtifact: () => chunkWIFL5QYZ_cjs.stringifyArtifact,
22817
- toASM: () => chunkWIFL5QYZ_cjs.toASM,
22818
- validateProgram: () => chunkWIFL5QYZ_cjs.validateProgram,
22819
- witnessRefToBytes: () => chunkWIFL5QYZ_cjs.witnessRefToBytes
22812
+ deserializeArkadeContractParams: () => chunk3OKEUDHU_cjs.deserializeArkadeContractParams,
22813
+ fromASM: () => chunk3OKEUDHU_cjs.fromASM,
22814
+ getOpcodeName: () => chunk3OKEUDHU_cjs.getOpcodeName,
22815
+ getOpcodeValue: () => chunk3OKEUDHU_cjs.getOpcodeValue,
22816
+ parseArtifact: () => chunk3OKEUDHU_cjs.parseArtifact,
22817
+ resolveAsm: () => chunk3OKEUDHU_cjs.resolveAsm,
22818
+ serializeArkadeContractParams: () => chunk3OKEUDHU_cjs.serializeArkadeContractParams,
22819
+ stringifyArtifact: () => chunk3OKEUDHU_cjs.stringifyArtifact,
22820
+ toASM: () => chunk3OKEUDHU_cjs.toASM,
22821
+ validateProgram: () => chunk3OKEUDHU_cjs.validateProgram,
22822
+ witnessRefToBytes: () => chunk3OKEUDHU_cjs.witnessRefToBytes
22820
22823
  });
22821
- var isVtxoCoin = (input) => chunk5MLC2HU3_cjs.isVirtualCoin(input);
22824
+ var isVtxoCoin = (input) => chunk57636V35_cjs.isVirtualCoin(input);
22822
22825
  function createArkadeBatchHandler(intentId, inputs, signer, signedProof, message, session, arkProvider, emulator, network, recipients, batchExpiryPolicy) {
22823
22826
  let batchId;
22824
22827
  let sweepTapTreeRoot;
@@ -22839,23 +22842,23 @@ function createArkadeBatchHandler(intentId, inputs, signer, signedProof, message
22839
22842
  );
22840
22843
  await arkProvider.confirmRegistration(intentId);
22841
22844
  batchId = event.id;
22842
- const sweepTapscript = chunk5MLC2HU3_cjs.CSVMultisigTapscript.encode({
22845
+ const sweepTapscript = chunk57636V35_cjs.CSVMultisigTapscript.encode({
22843
22846
  timelock,
22844
- pubkeys: [chunkWIFL5QYZ_cjs.toXOnly(base.hex.decode(info.forfeitPubkey), "forfeit key")]
22847
+ pubkeys: [chunk3OKEUDHU_cjs.toXOnly(base.hex.decode(info.forfeitPubkey), "forfeit key")]
22845
22848
  }).script;
22846
22849
  sweepTapTreeRoot = payment_js.tapLeafHash(sweepTapscript);
22847
22850
  return { skip: false };
22848
22851
  },
22849
22852
  onTreeSigningStarted: async (event, vtxoTree) => {
22850
22853
  const signerPubKey = await session.getPublicKey();
22851
- const xonlySignerPubKey = chunkWIFL5QYZ_cjs.toXOnly(signerPubKey, "signer key");
22854
+ const xonlySignerPubKey = chunk3OKEUDHU_cjs.toXOnly(signerPubKey, "signer key");
22852
22855
  const xOnlyPubkeys = event.cosignersPublicKeys.map(
22853
- (k) => base.hex.encode(chunkWIFL5QYZ_cjs.toXOnly(base.hex.decode(k), "cosigner key"))
22856
+ (k) => base.hex.encode(chunk3OKEUDHU_cjs.toXOnly(base.hex.decode(k), "cosigner key"))
22854
22857
  );
22855
22858
  if (!xOnlyPubkeys.includes(base.hex.encode(xonlySignerPubKey))) {
22856
22859
  return { skip: true };
22857
22860
  }
22858
- const commitmentTx = chunk5MLC2HU3_cjs.Transaction.fromPSBT(base.base64.decode(event.unsignedCommitmentTx));
22861
+ const commitmentTx = chunk57636V35_cjs.Transaction.fromPSBT(base.base64.decode(event.unsignedCommitmentTx));
22859
22862
  validateVtxoTxGraph(vtxoTree, commitmentTx, sweepTapTreeRoot);
22860
22863
  if (recipients && recipients.length > 0) {
22861
22864
  validateBatchRecipients(commitmentTx, vtxoTree.leaves(), recipients, network);
@@ -22887,7 +22890,7 @@ function createArkadeBatchHandler(intentId, inputs, signer, signedProof, message
22887
22890
  if (connectorTree) {
22888
22891
  validateConnectorsTxGraph(event.commitmentTx, connectorTree);
22889
22892
  }
22890
- let commitmentPsbt = chunk5MLC2HU3_cjs.Transaction.fromPSBT(base.base64.decode(event.commitmentTx));
22893
+ let commitmentPsbt = chunk57636V35_cjs.Transaction.fromPSBT(base.base64.decode(event.commitmentTx));
22891
22894
  assertFinalCommitmentMatchesValidated(
22892
22895
  commitmentPsbt,
22893
22896
  validatedCommitmentTxid,
@@ -22922,7 +22925,7 @@ function createArkadeBatchHandler(intentId, inputs, signer, signedProof, message
22922
22925
  boardingIndices.push(boardingIdx);
22923
22926
  continue;
22924
22927
  }
22925
- if (chunk5MLC2HU3_cjs.isRecoverable(input) || isSubdust(input, info.dust)) {
22928
+ if (chunk57636V35_cjs.isRecoverable(input) || isSubdust(input, info.dust)) {
22926
22929
  continue;
22927
22930
  }
22928
22931
  if (connectorIndex >= connectorLeaves.length) {
@@ -22943,7 +22946,7 @@ function createArkadeBatchHandler(intentId, inputs, signer, signedProof, message
22943
22946
  index: input.vout,
22944
22947
  witnessUtxo: {
22945
22948
  amount: BigInt(input.value),
22946
- script: chunk5MLC2HU3_cjs.VtxoScript.decode(input.tapTree).pkScript
22949
+ script: chunk57636V35_cjs.VtxoScript.decode(input.tapTree).pkScript
22947
22950
  },
22948
22951
  sighashType: btcSigner.SigHash.DEFAULT,
22949
22952
  tapLeafScript: [input.forfeitTapLeafScript]
@@ -23034,16 +23037,16 @@ var Arkade = class _Arkade {
23034
23037
  /** Connect and resolve the server key, checkpoint closure and (if present) the co-signer key. */
23035
23038
  static async connect(opts) {
23036
23039
  const info = await opts.arkade.getInfo();
23037
- const serverKey = chunkWIFL5QYZ_cjs.toXOnly(base.hex.decode(info.signerPubkey), "ark signer key");
23038
- const checkpoint = chunk5MLC2HU3_cjs.CSVMultisigTapscript.decode(base.hex.decode(info.checkpointTapscript));
23039
- const network = opts.network ?? chunk5MLC2HU3_cjs.DEFAULT_NETWORK;
23040
+ const serverKey = chunk3OKEUDHU_cjs.toXOnly(base.hex.decode(info.signerPubkey), "ark signer key");
23041
+ const checkpoint = chunk57636V35_cjs.CSVMultisigTapscript.decode(base.hex.decode(info.checkpointTapscript));
23042
+ const network = opts.network ?? chunk57636V35_cjs.DEFAULT_NETWORK;
23040
23043
  let emulatorKey;
23041
23044
  if (opts.emulator) {
23042
- emulatorKey = base.hex.decode(chunk5MLC2HU3_cjs.resolveEmulatorPubkey(network, opts.emulatorPubkey));
23045
+ emulatorKey = base.hex.decode(chunk57636V35_cjs.resolveEmulatorPubkey(network, opts.emulatorPubkey));
23043
23046
  }
23044
23047
  let userKey;
23045
23048
  if (opts.identity) {
23046
- userKey = chunkWIFL5QYZ_cjs.toXOnly(await opts.identity.xOnlyPublicKey(), "identity key");
23049
+ userKey = chunk3OKEUDHU_cjs.toXOnly(await opts.identity.xOnlyPublicKey(), "identity key");
23047
23050
  }
23048
23051
  return new _Arkade({
23049
23052
  arkProvider: opts.arkade,
@@ -23069,7 +23072,7 @@ var Arkade = class _Arkade {
23069
23072
  * key respectively; explicit args always win.
23070
23073
  */
23071
23074
  contract(program, args = {}) {
23072
- const declared = (program.params ?? []).map(chunkWIFL5QYZ_cjs.inputName);
23075
+ const declared = (program.params ?? []).map(chunk3OKEUDHU_cjs.inputName);
23073
23076
  if (declared.includes("server") && args.server === void 0) {
23074
23077
  args = { ...args, server: this.serverKey };
23075
23078
  }
@@ -23089,7 +23092,7 @@ var ArkadeContract = class _ArkadeContract {
23089
23092
  userKey: client.userKey,
23090
23093
  emulatorKey: client.emulatorKey
23091
23094
  };
23092
- this.vtxoScript = new chunkWIFL5QYZ_cjs.ArkadeProgramScript(program, args, this.keys);
23095
+ this.vtxoScript = new chunk3OKEUDHU_cjs.ArkadeProgramScript(program, args, this.keys);
23093
23096
  this.tapTree = this.vtxoScript.encode();
23094
23097
  this.compiled = this.vtxoScript.compiled;
23095
23098
  }
@@ -23117,7 +23120,7 @@ var ArkadeContract = class _ArkadeContract {
23117
23120
  `ArkadeContract.fromContract: expected contract type 'arkade', got '${contract.type}'`
23118
23121
  );
23119
23122
  }
23120
- const typed = chunkWIFL5QYZ_cjs.deserializeArkadeContractParams(contract.params);
23123
+ const typed = chunk3OKEUDHU_cjs.deserializeArkadeContractParams(contract.params);
23121
23124
  return new _ArkadeContract(client, typed.program, typed.args, {
23122
23125
  serverKey: typed.serverKey,
23123
23126
  userKey: typed.userKey,
@@ -23158,7 +23161,7 @@ var ArkadeContract = class _ArkadeContract {
23158
23161
  toContractParams() {
23159
23162
  return {
23160
23163
  type: "arkade",
23161
- params: chunkWIFL5QYZ_cjs.serializeArkadeContractParams({
23164
+ params: chunk3OKEUDHU_cjs.serializeArkadeContractParams({
23162
23165
  program: this.program,
23163
23166
  args: this.args,
23164
23167
  serverKey: this.keys.serverKey,
@@ -23208,18 +23211,18 @@ var ArkadeContract = class _ArkadeContract {
23208
23211
  if (registered) {
23209
23212
  const [withVtxos] = await manager.getContractsWithVtxos({ script: scriptHex });
23210
23213
  return (withVtxos?.vtxos ?? []).filter(
23211
- (v) => !chunk5MLC2HU3_cjs.hasTerminalSpend(v) && !v.isUnrolled
23214
+ (v) => !chunk57636V35_cjs.hasTerminalSpend(v) && !v.isUnrolled
23212
23215
  );
23213
23216
  }
23214
23217
  }
23215
23218
  if (!this.client.indexer) {
23216
23219
  throw new Error("ArkadeContract.getUtxos: an indexer is required");
23217
23220
  }
23218
- const { vtxos } = await chunk5MLC2HU3_cjs.getNormalizedVtxos(this.client.indexer, {
23221
+ const { vtxos } = await chunk57636V35_cjs.getNormalizedVtxos(this.client.indexer, {
23219
23222
  scripts: [scriptHex],
23220
23223
  spendableOnly: true
23221
23224
  });
23222
- return vtxos.filter((v) => !chunk5MLC2HU3_cjs.hasTerminalSpend(v) && !v.isUnrolled);
23225
+ return vtxos.filter((v) => !chunk57636V35_cjs.hasTerminalSpend(v) && !v.isUnrolled);
23223
23226
  }
23224
23227
  /** Total spendable balance (requires an indexer). */
23225
23228
  async getBalance() {
@@ -23317,7 +23320,7 @@ var ArkadeTransactionBuilder = class {
23317
23320
  this.contract.client.checkpoint
23318
23321
  );
23319
23322
  if (coin.sourceTx) {
23320
- chunk5MLC2HU3_cjs.setArkPsbtField(arkTx, 0, chunk5MLC2HU3_cjs.PrevArkTxField, coin.sourceTx);
23323
+ chunk57636V35_cjs.setArkPsbtField(arkTx, 0, chunk57636V35_cjs.PrevArkTxField, coin.sourceTx);
23321
23324
  }
23322
23325
  if (this.fn.arkadeScript) {
23323
23326
  const indexer = this.contract.client.indexer;
@@ -23334,8 +23337,8 @@ var ArkadeTransactionBuilder = class {
23334
23337
  }
23335
23338
  const condition = (def.tapscript.witness ?? []).map((w) => this.witnessBytes(w));
23336
23339
  if (condition.length > 0) {
23337
- chunk5MLC2HU3_cjs.setArkPsbtField(arkTx, 0, chunk5MLC2HU3_cjs.ConditionWitness, condition);
23338
- chunk5MLC2HU3_cjs.setArkPsbtField(checkpoints[0], 0, chunk5MLC2HU3_cjs.ConditionWitness, condition);
23340
+ chunk57636V35_cjs.setArkPsbtField(arkTx, 0, chunk57636V35_cjs.ConditionWitness, condition);
23341
+ chunk57636V35_cjs.setArkPsbtField(checkpoints[0], 0, chunk57636V35_cjs.ConditionWitness, condition);
23339
23342
  }
23340
23343
  const packets = [];
23341
23344
  if (this.assetSpecs.length > 0) {
@@ -23374,7 +23377,7 @@ var ArkadeTransactionBuilder = class {
23374
23377
  base.base64.encode(signedArk2.toPSBT()),
23375
23378
  signedCps.map((c) => base.base64.encode(c.toPSBT()))
23376
23379
  );
23377
- const txid = chunk5MLC2HU3_cjs.Transaction.fromPSBT(base.base64.decode(res2.signedArkTx)).id;
23380
+ const txid = chunk57636V35_cjs.Transaction.fromPSBT(base.base64.decode(res2.signedArkTx)).id;
23378
23381
  return {
23379
23382
  txid,
23380
23383
  signedArkTx: res2.signedArkTx,
@@ -23433,23 +23436,23 @@ var ArkadeTransactionBuilder = class {
23433
23436
  }
23434
23437
  buildAssetPacket() {
23435
23438
  const groups = this.assetSpecs.map((s) => {
23436
- const id = typeof s.assetId === "string" ? chunkGVHUHTRH_cjs.AssetId.fromString(s.assetId) : chunkGVHUHTRH_cjs.AssetId.fromBytes(s.assetId);
23437
- return chunkGVHUHTRH_cjs.AssetGroup.create(
23439
+ const id = typeof s.assetId === "string" ? chunk3KW4TWP2_cjs.AssetId.fromString(s.assetId) : chunk3KW4TWP2_cjs.AssetId.fromBytes(s.assetId);
23440
+ return chunk3KW4TWP2_cjs.AssetGroup.create(
23438
23441
  id,
23439
23442
  null,
23440
- s.inputs.map((i) => chunkGVHUHTRH_cjs.AssetInput.create(i.vin, i.amount)),
23441
- s.outputs.map((o) => chunkGVHUHTRH_cjs.AssetOutput.create(o.vout, o.amount)),
23442
- (s.metadata ?? []).map((m) => chunkGVHUHTRH_cjs.Metadata.create(m.key, m.value))
23443
+ s.inputs.map((i) => chunk3KW4TWP2_cjs.AssetInput.create(i.vin, i.amount)),
23444
+ s.outputs.map((o) => chunk3KW4TWP2_cjs.AssetOutput.create(o.vout, o.amount)),
23445
+ (s.metadata ?? []).map((m) => chunk3KW4TWP2_cjs.Metadata.create(m.key, m.value))
23443
23446
  );
23444
23447
  });
23445
- return chunkGVHUHTRH_cjs.Packet.create(groups);
23448
+ return chunk3KW4TWP2_cjs.Packet.create(groups);
23446
23449
  }
23447
23450
  witnessBytes(ref) {
23448
- return chunkWIFL5QYZ_cjs.witnessRefToBytes(ref, this.args, this.contract.args);
23451
+ return chunk3OKEUDHU_cjs.witnessRefToBytes(ref, this.args, this.contract.args);
23449
23452
  }
23450
23453
  };
23451
23454
  function bindInputs(fn, callArgs) {
23452
- const names = (fn.def.inputs ?? []).map(chunkWIFL5QYZ_cjs.inputName);
23455
+ const names = (fn.def.inputs ?? []).map(chunk3OKEUDHU_cjs.inputName);
23453
23456
  if (callArgs.length !== names.length) {
23454
23457
  throw new Error(`${fn.name}: expected ${names.length} argument(s), got ${callArgs.length}`);
23455
23458
  }
@@ -23642,6 +23645,33 @@ function tryResolveSendAmount(raw, amount) {
23642
23645
  const amt = amount ?? BIP21.amountSats(raw);
23643
23646
  return amt !== void 0 && Number.isInteger(amt) && amt > 0 ? amt : void 0;
23644
23647
  }
23648
+ function assetsOf(req) {
23649
+ return req.assets ?? [];
23650
+ }
23651
+ function assertNoAssets(railId, req) {
23652
+ const assets = assetsOf(req);
23653
+ if (assets.length > 0) {
23654
+ throw new Error(
23655
+ `${railId}: cannot deliver ${assets.map((a) => a.assetId).join(", ")} \u2014 this rail moves BTC only`
23656
+ );
23657
+ }
23658
+ }
23659
+ function resolveAssetAmount(railId, req) {
23660
+ const assets = assetsOf(req);
23661
+ if (assets.length !== 1) {
23662
+ throw new Error(`${railId}: expected exactly one asset to pay, got ${assets.length}`);
23663
+ }
23664
+ const [asset] = assets;
23665
+ if (typeof asset.amount !== "bigint" || asset.amount <= 0n) {
23666
+ throw new Error(
23667
+ `${railId}: invalid amount ${String(asset.amount)} of ${asset.assetId} (expected a positive bigint of atomic units)`
23668
+ );
23669
+ }
23670
+ if (typeof asset.assetId !== "string" || asset.assetId.length === 0) {
23671
+ throw new Error(`${railId}: an asset amount must name an asset`);
23672
+ }
23673
+ return asset;
23674
+ }
23645
23675
 
23646
23676
  // src/payment/handle.ts
23647
23677
  function makeHandle(id, run) {
@@ -23764,8 +23794,10 @@ function arkRail() {
23764
23794
  return {
23765
23795
  id: "ark",
23766
23796
  match: (req) => arkTarget(req.raw) !== void 0,
23797
+ available: (req) => assetsOf(req).length === 0,
23767
23798
  quote: async (req, ctx) => {
23768
23799
  const address = arkTarget(req.raw);
23800
+ assertNoAssets("ark", req);
23769
23801
  const amt = resolveSendAmount("ark", req.raw, req.amount);
23770
23802
  return {
23771
23803
  railId: "ark",
@@ -23782,6 +23814,41 @@ function arkRail() {
23782
23814
  }
23783
23815
  };
23784
23816
  }
23817
+
23818
+ // src/payment/rails/arkAsset.ts
23819
+ var ASSET_CARRIER_SATS = 330;
23820
+ function arkAssetRail() {
23821
+ return {
23822
+ id: "ark-asset",
23823
+ match: (req) => arkTarget(req.raw) !== void 0,
23824
+ // A malformed asset is `quote()`'s to name, not this rail's to drop.
23825
+ available: (req) => assetsOf(req).length > 0,
23826
+ quote: async (req, ctx) => {
23827
+ const address = arkTarget(req.raw);
23828
+ const asset = resolveAssetAmount("ark-asset", req);
23829
+ if (req.amount !== void 0) assertSendableAmount("ark-asset", req.amount);
23830
+ const carrier = tryResolveSendAmount(req.raw, req.amount) ?? ASSET_CARRIER_SATS;
23831
+ return {
23832
+ railId: "ark-asset",
23833
+ amount: carrier,
23834
+ fee: 0,
23835
+ total: carrier,
23836
+ assets: { delivered: asset, spent: asset },
23837
+ send: async () => makeHandle("ark-asset", async (emit) => {
23838
+ const txid = await ctx.wallet.send({
23839
+ address,
23840
+ amount: carrier,
23841
+ assets: [asset]
23842
+ });
23843
+ const result = { railId: "ark-asset", txid };
23844
+ emit({ status: "settled", result });
23845
+ return result;
23846
+ })
23847
+ };
23848
+ }
23849
+ };
23850
+ }
23851
+ var walletFeeSource = (wallet) => async () => (await wallet.arkProvider.getInfo()).fees;
23785
23852
  var GROSS_UP_MAX_ROUNDS = 8;
23786
23853
  function grossUpOffboard(net, feeInfo, script) {
23787
23854
  const estimator = new Estimator(feeInfo?.intentFee ?? {});
@@ -23794,14 +23861,20 @@ function grossUpOffboard(net, feeInfo, script) {
23794
23861
  }
23795
23862
  return { gross, fee: gross - net };
23796
23863
  }
23797
- function onchainRail() {
23864
+ function onchainRail(deps) {
23865
+ if (typeof deps?.feeInfo !== "function") {
23866
+ throw new Error("onchain rail: a feeInfo source is required");
23867
+ }
23798
23868
  return {
23799
23869
  id: "onchain",
23800
23870
  match: (req) => btcTarget(req.raw) !== void 0,
23871
+ // BTC only: an Arkade asset has no L1 representation to offboard to.
23872
+ available: (req) => assetsOf(req).length === 0,
23801
23873
  quote: async (req, ctx) => {
23874
+ assertNoAssets("onchain", req);
23802
23875
  const address = btcTarget(req.raw);
23803
23876
  const amt = resolveSendAmount("onchain", req.raw, req.amount);
23804
- const { fees } = await ctx.wallet.arkProvider.getInfo();
23877
+ const fees = await deps.feeInfo();
23805
23878
  const script = base.hex.encode(offboardDestinationScript(address));
23806
23879
  const { gross, fee } = grossUpOffboard(amt, fees, script);
23807
23880
  return {
@@ -23828,8 +23901,8 @@ function onchainRail() {
23828
23901
  function createDefaultPaymentRouter(wallet) {
23829
23902
  return new PaymentRouter({
23830
23903
  wallet,
23831
- prefs: { priority: ["ark", "lightning", "onchain"] }
23832
- }).use(arkRail()).use(onchainRail());
23904
+ prefs: { priority: ["ark", "ark-asset", "lightning", "onchain"] }
23905
+ }).use(arkRail()).use(arkAssetRail()).use(onchainRail({ feeInfo: walletFeeSource(wallet) }));
23833
23906
  }
23834
23907
  /*! Bundled license information:
23835
23908
 
@@ -23840,6 +23913,7 @@ function createDefaultPaymentRouter(wallet) {
23840
23913
  exports.ARKADE_MAGIC = ARKADE_MAGIC;
23841
23914
  exports.ARKADE_SALTED_PREIMAGE_TAG = ARKADE_SALTED_PREIMAGE_TAG;
23842
23915
  exports.ARKADE_SWAP_PREIMAGE_TAG = ARKADE_SWAP_PREIMAGE_TAG;
23916
+ exports.ASSET_CARRIER_SATS = ASSET_CARRIER_SATS;
23843
23917
  exports.AbortError = AbortError;
23844
23918
  exports.ActivityRegistry = ActivityRegistry;
23845
23919
  exports.AmbiguousRouteError = AmbiguousRouteError;
@@ -23934,16 +24008,19 @@ exports.WalletNotInitializedError = WalletNotInitializedError;
23934
24008
  exports.WalletRepositoryImpl = WalletRepositoryImpl;
23935
24009
  exports.WsElectrumChainSource = WsElectrumChainSource;
23936
24010
  exports.adoptContractDescriptor = adoptContractDescriptor;
24011
+ exports.arkAssetRail = arkAssetRail;
23937
24012
  exports.arkRail = arkRail;
23938
24013
  exports.arkTarget = arkTarget;
23939
24014
  exports.arkade_exports = arkade_exports;
23940
24015
  exports.assertFinalCommitmentMatchesValidated = assertFinalCommitmentMatchesValidated;
23941
24016
  exports.assertIntentIdUnique = assertIntentIdUnique;
24017
+ exports.assertNoAssets = assertNoAssets;
23942
24018
  exports.assertSendableAmount = assertSendableAmount;
23943
24019
  exports.assertSubmittedArkTxid = assertSubmittedArkTxid;
23944
24020
  exports.assertValidBatchExpiry = assertValidBatchExpiry;
23945
24021
  exports.assertValidServerUnrollScript = assertValidServerUnrollScript;
23946
24022
  exports.assetMintResolver = assetMintResolver;
24023
+ exports.assetsOf = assetsOf;
23947
24024
  exports.attachPrevArkTxs = attachPrevArkTxs;
23948
24025
  exports.attachPrevoutTxs = attachPrevoutTxs;
23949
24026
  exports.awaitTransaction = awaitTransaction;
@@ -24027,6 +24104,7 @@ exports.promisifyRequest = promisifyRequest;
24027
24104
  exports.provisionClaimSecret = provisionClaimSecret;
24028
24105
  exports.provisionRefundKey = provisionRefundKey;
24029
24106
  exports.requiresMigration = requiresMigration;
24107
+ exports.resolveAssetAmount = resolveAssetAmount;
24030
24108
  exports.resolveBatchExpiryPolicy = resolveBatchExpiryPolicy;
24031
24109
  exports.resolveCheckpointExitDelayPolicy = resolveCheckpointExitDelayPolicy;
24032
24110
  exports.resolveDescriptorSigner = resolveDescriptorSigner;
@@ -24053,7 +24131,8 @@ exports.validateConnectorsTxGraph = validateConnectorsTxGraph;
24053
24131
  exports.validateVtxoTxGraph = validateVtxoTxGraph;
24054
24132
  exports.verifyTapscriptSignatures = verifyTapscriptSignatures;
24055
24133
  exports.waitForIncomingFunds = waitForIncomingFunds;
24134
+ exports.walletFeeSource = walletFeeSource;
24056
24135
  exports.warnAndFilterVtxosForScript = warnAndFilterVtxosForScript;
24057
24136
  exports.withPrevTxs = withPrevTxs;
24058
- //# sourceMappingURL=chunk-EBYCTLET.cjs.map
24059
- //# sourceMappingURL=chunk-EBYCTLET.cjs.map
24137
+ //# sourceMappingURL=chunk-XTCOSZ34.cjs.map
24138
+ //# sourceMappingURL=chunk-XTCOSZ34.cjs.map