@arkade-os/sdk 0.4.69 → 0.5.0-rc.1

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 (80) hide show
  1. package/README.md +35 -5
  2. package/dist/adapters/expo.cjs +5 -5
  3. package/dist/adapters/expo.d.cts +2 -2
  4. package/dist/adapters/expo.d.ts +2 -2
  5. package/dist/adapters/expo.js +3 -3
  6. package/dist/adapters/indexedDB.cjs +5 -5
  7. package/dist/adapters/indexedDB.js +4 -4
  8. package/dist/{asyncStorageTaskQueue-BgUJN-3X.d.ts → asyncStorageTaskQueue-DAs_n1xr.d.ts} +2 -2
  9. package/dist/{asyncStorageTaskQueue-Cstx6hS7.d.cts → asyncStorageTaskQueue-DqGRG66E.d.cts} +2 -2
  10. package/dist/{chunk-L5SCQYHF.js → chunk-6COJWPBO.js} +19 -9
  11. package/dist/chunk-6COJWPBO.js.map +1 -0
  12. package/dist/{chunk-XQPN5YP2.cjs → chunk-KB7OP3FG.cjs} +17 -17
  13. package/dist/{chunk-XQPN5YP2.cjs.map → chunk-KB7OP3FG.cjs.map} +1 -1
  14. package/dist/{chunk-XLWDX7QZ.js → chunk-LPK4UBNJ.js} +4 -4
  15. package/dist/{chunk-XLWDX7QZ.js.map → chunk-LPK4UBNJ.js.map} +1 -1
  16. package/dist/{chunk-MNMPGEK2.js → chunk-MEJSBJVH.js} +4 -4
  17. package/dist/{chunk-MNMPGEK2.js.map → chunk-MEJSBJVH.js.map} +1 -1
  18. package/dist/{chunk-HQ4DMGA4.cjs → chunk-MXY23OPP.cjs} +10 -10
  19. package/dist/{chunk-HQ4DMGA4.cjs.map → chunk-MXY23OPP.cjs.map} +1 -1
  20. package/dist/{chunk-WIFL5QYZ.cjs → chunk-Q5WQ4Y2I.cjs} +53 -54
  21. package/dist/chunk-Q5WQ4Y2I.cjs.map +1 -0
  22. package/dist/{chunk-5MLC2HU3.cjs → chunk-RZ2NGS6A.cjs} +19 -7
  23. package/dist/chunk-RZ2NGS6A.cjs.map +1 -0
  24. package/dist/{chunk-YG7T6LI3.js → chunk-SG4XYCS7.js} +3 -3
  25. package/dist/{chunk-YG7T6LI3.js.map → chunk-SG4XYCS7.js.map} +1 -1
  26. package/dist/{chunk-TA7XLEP2.js → chunk-VTE3NYVD.js} +298 -41
  27. package/dist/chunk-VTE3NYVD.js.map +1 -0
  28. package/dist/{chunk-GVHUHTRH.cjs → chunk-WQIWUTYS.cjs} +17 -17
  29. package/dist/{chunk-GVHUHTRH.cjs.map → chunk-WQIWUTYS.cjs.map} +1 -1
  30. package/dist/{chunk-EBYCTLET.cjs → chunk-YEUXBECG.cjs} +727 -469
  31. package/dist/chunk-YEUXBECG.cjs.map +1 -0
  32. package/dist/{chunk-2PPL3O7Z.js → chunk-ZPSUBAWQ.js} +7 -8
  33. package/dist/chunk-ZPSUBAWQ.js.map +1 -0
  34. package/dist/contracts/handlers/index.cjs +9 -9
  35. package/dist/contracts/handlers/index.d.cts +3 -3
  36. package/dist/contracts/handlers/index.d.ts +3 -3
  37. package/dist/contracts/handlers/index.js +2 -2
  38. package/dist/{delegate-BPdzTbwN.d.ts → delegate-B9Bmrns7.d.ts} +1 -1
  39. package/dist/{delegate-DrwIar11.d.cts → delegate-CZzIduW4.d.cts} +1 -1
  40. package/dist/{hdWalletCapable-D4WH35z0.d.cts → hdWalletCapable-BIl3yLVM.d.cts} +103 -28
  41. package/dist/{hdWalletCapable-DyxCiNVE.d.ts → hdWalletCapable-Cr5nGpK5.d.ts} +103 -28
  42. package/dist/{index-TZJvbIaA.d.ts → index-Ci5MmNnK.d.cts} +7 -7
  43. package/dist/{index-BqhpAqqj.d.cts → index-DQ1Hb2w_.d.ts} +7 -7
  44. package/dist/{index-dWRqYSdS.d.ts → index-DnNIOqHS.d.cts} +168 -19
  45. package/dist/{index-dWRqYSdS.d.cts → index-DnNIOqHS.d.ts} +168 -19
  46. package/dist/index.cjs +307 -291
  47. package/dist/index.d.cts +121 -29
  48. package/dist/index.d.ts +121 -29
  49. package/dist/index.js +4 -4
  50. package/dist/repositories/realm/index.cjs +19 -19
  51. package/dist/repositories/realm/index.d.cts +2 -2
  52. package/dist/repositories/realm/index.d.ts +2 -2
  53. package/dist/repositories/realm/index.js +5 -5
  54. package/dist/repositories/sqlite/index.cjs +18 -18
  55. package/dist/repositories/sqlite/index.d.cts +2 -2
  56. package/dist/repositories/sqlite/index.d.ts +2 -2
  57. package/dist/repositories/sqlite/index.js +5 -5
  58. package/dist/{taskRunner-CzYKyJ9c.d.cts → taskRunner-BDb5Ee2J.d.cts} +2 -2
  59. package/dist/{taskRunner-D2fnbqYw.d.ts → taskRunner-F7wNJcF3.d.ts} +2 -2
  60. package/dist/wallet/expo/background.cjs +14 -14
  61. package/dist/wallet/expo/background.d.cts +3 -3
  62. package/dist/wallet/expo/background.d.ts +3 -3
  63. package/dist/wallet/expo/background.js +6 -6
  64. package/dist/wallet/expo/index.cjs +23 -14
  65. package/dist/wallet/expo/index.cjs.map +1 -1
  66. package/dist/wallet/expo/index.d.cts +7 -4
  67. package/dist/wallet/expo/index.d.ts +7 -4
  68. package/dist/wallet/expo/index.js +14 -5
  69. package/dist/wallet/expo/index.js.map +1 -1
  70. package/dist/worker/expo/index.cjs +9 -9
  71. package/dist/worker/expo/index.d.cts +4 -4
  72. package/dist/worker/expo/index.d.ts +4 -4
  73. package/dist/worker/expo/index.js +5 -5
  74. package/package.json +3 -2
  75. package/dist/chunk-2PPL3O7Z.js.map +0 -1
  76. package/dist/chunk-5MLC2HU3.cjs.map +0 -1
  77. package/dist/chunk-EBYCTLET.cjs.map +0 -1
  78. package/dist/chunk-L5SCQYHF.js.map +0 -1
  79. package/dist/chunk-TA7XLEP2.js.map +0 -1
  80. package/dist/chunk-WIFL5QYZ.cjs.map +0 -1
@@ -1,6 +1,6 @@
1
- import { AssetId, AssetGroup, AssetInput, AssetOutput, Metadata, Packet, BufferReader, BufferWriter, AssetRef, RestIndexerProvider } from './chunk-YG7T6LI3.js';
2
- import { witnessRefToBytes, validateProgram, toASM, stringifyArtifact, serializeArkadeContractParams, resolveAsm, parseArtifact, getOpcodeValue, getOpcodeName, fromASM, deserializeArkadeContractParams, computeArkadeScriptPublicKey, bytesToASM, asmToBytes, arkadeWitnessHash, arkadeScriptHash, SUPPORTED_PROGRAM_VERSION, OPCODE_VALUES, OPCODE_NAMES, bignum_exports, ArkadeScript, ArkadeProgramScript, ARKADE_OPS, ARKADE_OPCODE_VALUES, ARKADE_OPCODE_NAMES, ARKADE_OPCODES, ARKADE_OP, toXOnly, inputName, contractHandlers, isMainnetDescriptor, descriptorIsOurs, deriveDescriptorLeafPubKey, deriveDescriptorLeafCompressedPubKey, parseHDDescriptor, identityDescriptor, DefaultVtxo, speculativeReceiveMetadata, DelegateVtxo, WALLET_RECEIVE_SOURCE, BoardingContractHandler } from './chunk-2PPL3O7Z.js';
3
- import { VtxoScript, Transaction, isRecoverable, CSVMultisigTapscript, DEFAULT_NETWORK, resolveEmulatorPubkey, hasTerminalSpend, getNormalizedVtxos, setArkPsbtField, PrevArkTxField, ConditionWitness, craftToSpendTx, ArkAddress, isVirtualCoin, getArkPsbtFields, CosignerPublicKey, ServerResponseMismatchError, OP_RETURN_EMPTY_PKSCRIPT, canSweepOnchain, sequenceToTimelock, decodeTapscript, scriptFromTapLeafScript, CLTVMultisigTapscript, VtxoTaprootTree, timelockToSequence, assertAllowedSighashTypes, baseFetch, Intent, rateGate, DEFAULT_NETWORK_NAME, formatSighash, normalizeVtxo, getSequence, toBatchExpiry, maybeArkError, isArkError, ArkErrorName, toOffchainInputFeeParams, canRecoverOnchain, getNetwork, MultisigTapscript, isEventSourceError, isEventSourceUnavailableError, isRetryableProviderError, getAllNormalizedVtxos, DEFAULT_PAGE_SIZE, RestArkProvider, toVirtualStatus, ArkError, TapTreeCoder, resolveTimeHeight, canSpendOffchain, parseLegacyExpiry, isExpired, PrevoutTxField, DEFAULT_ARKADE_SERVER_URL, ProviderUnavailableError, networks as networks$1, isPastExpiry, fetchVtxoCreatedAtByTxid } from './chunk-L5SCQYHF.js';
1
+ import { AssetId, AssetGroup, AssetInput, AssetOutput, Metadata, Packet, BufferReader, BufferWriter, AssetRef, RestIndexerProvider } from './chunk-SG4XYCS7.js';
2
+ import { witnessRefToBytes, validateProgram, toASM, stringifyArtifact, serializeArkadeContractParams, resolveAsm, parseArtifact, getOpcodeValue, getOpcodeName, fromASM, deserializeArkadeContractParams, computeArkadeScriptPublicKey, bytesToASM, asmToBytes, arkadeWitnessHash, arkadeScriptHash, SUPPORTED_PROGRAM_VERSION, OPCODE_VALUES, OPCODE_NAMES, bignum_exports, ArkadeScript, ArkadeProgramScript, ARKADE_OPS, ARKADE_OPCODE_VALUES, ARKADE_OPCODE_NAMES, ARKADE_OPCODES, ARKADE_OP, toXOnly, inputName, contractHandlers, isMainnetDescriptor, descriptorIsOurs, deriveDescriptorLeafPubKey, deriveDescriptorLeafCompressedPubKey, parseHDDescriptor, identityDescriptor, DefaultVtxo, speculativeReceiveMetadata, DelegateVtxo, WALLET_RECEIVE_SOURCE, BoardingContractHandler } from './chunk-ZPSUBAWQ.js';
3
+ import { VtxoScript, Transaction, isVirtualCoin, isRecoverable, CSVMultisigTapscript, DEFAULT_NETWORK, resolveEmulatorPubkey, hasTerminalSpend, getNormalizedVtxos, setArkPsbtField, PrevArkTxField, ConditionWitness, craftToSpendTx, ArkAddress, ServerResponseMismatchError, getArkPsbtFields, CosignerPublicKey, OP_RETURN_EMPTY_PKSCRIPT, canSweepOnchain, sequenceToTimelock, decodeTapscript, scriptFromTapLeafScript, CLTVMultisigTapscript, VtxoTaprootTree, timelockToSequence, normalizeVtxo, assertAllowedSighashTypes, baseFetch, Intent, rateGate, DEFAULT_NETWORK_NAME, formatSighash, getSequence, toBatchExpiry, maybeArkError, isArkError, ArkErrorName, toOffchainInputFeeParams, canRecoverOnchain, getNetwork, MultisigTapscript, isEventSourceError, isEventSourceUnavailableError, isRetryableProviderError, getAllNormalizedVtxos, DEFAULT_PAGE_SIZE, DEFAULT_ARKADE_SERVER_URL, RestArkProvider, networkFromArkadeInfo, toVirtualStatus, ArkError, TapTreeCoder, resolveTimeHeight, canSpendOffchain, parseLegacyExpiry, isExpired, INFO_FETCH_TIMEOUT_MS, PrevoutTxField, ProviderUnavailableError, networks as networks$1, isPastExpiry, fetchVtxoCreatedAtByTxid } from './chunk-6COJWPBO.js';
4
4
  import { __export } from './chunk-NSBPE2FW.js';
5
5
  import { sha256 as sha256$1, equalBytes, hash160, sha256x2, concatBytes, randomPrivateKeyBytes, pubECDSA, pubSchnorr } from '@scure/btc-signer/utils.js';
6
6
  import { SigHash, Script, OP, OutScript, Address, RawWitness, p2tr, p2wpkh, TaprootControlBlock, DEFAULT_SEQUENCE, Transaction as Transaction$2 } from '@scure/btc-signer';
@@ -3878,7 +3878,7 @@ function isValidArkAddress2(address) {
3878
3878
  return false;
3879
3879
  }
3880
3880
  }
3881
- function assertRecipientArkAddress(encoded, address, context) {
3881
+ function assertRecipientArkadeAddress(encoded, address, context) {
3882
3882
  if (address.hrp !== context.hrp) {
3883
3883
  throw new Error(
3884
3884
  `Invalid Arkade address ${encoded}: expected prefix "${context.hrp}", got "${address.hrp}"`
@@ -3921,7 +3921,7 @@ function validateRecipients(recipients, dustAmount, context) {
3921
3921
  } catch (e) {
3922
3922
  throw new Error(`Invalid Arkade address: ${recipient.address}`);
3923
3923
  }
3924
- assertRecipientArkAddress(recipient.address, address, context);
3924
+ assertRecipientArkadeAddress(recipient.address, address, context);
3925
3925
  const amount = recipient.amount || dustAmount;
3926
3926
  if (amount <= 0) {
3927
3927
  throw new Error("Amount must be positive");
@@ -4812,7 +4812,7 @@ var VtxoManager = class _VtxoManager {
4812
4812
  }
4813
4813
  /**
4814
4814
  * Core migration routine shared by the manual API and the automatic poll
4815
- * pass. Fetches a fresh {@link ArkInfo}, applies a mid-session signer
4815
+ * pass. Fetches a fresh {@link ArkadeInfo}, applies a mid-session signer
4816
4816
  * rotation when the wallet's own snapshot signer has been deprecated,
4817
4817
  * selects spendable VTXOs under deprecated-signer contracts (cutoff-first),
4818
4818
  * and settles them to the active-signer Ark address.
@@ -6595,12 +6595,12 @@ async function saveArkInfoSnapshot(repo, info, savedAt) {
6595
6595
  }
6596
6596
  }));
6597
6597
  }
6598
- async function resolveArkInfo(arkProvider, walletRepository) {
6598
+ async function resolveArkInfo(arkProvider, walletRepository, opts) {
6599
6599
  let info;
6600
6600
  try {
6601
6601
  info = await arkProvider.getInfo();
6602
6602
  } catch (err) {
6603
- if (!isRetryableProviderError(err)) throw err;
6603
+ if (opts?.requireLive || !isRetryableProviderError(err)) throw err;
6604
6604
  const snapshot = await loadArkInfoSnapshot(walletRepository);
6605
6605
  if (!snapshot) {
6606
6606
  throw new ProviderUnavailableError(
@@ -12367,10 +12367,11 @@ var ArkadeCashCreateError = class extends Error {
12367
12367
  cause;
12368
12368
  };
12369
12369
  var ReadonlyWallet = class _ReadonlyWallet {
12370
- constructor(identity, network, onchainProvider, indexerProvider, arkServerPublicKey, offchainTapscript, boardingTapscript, dustAmount, walletRepository, contractRepository, delegateProvider, watcherConfig, walletContractTimelocks) {
12370
+ constructor(identity, network, onchainProvider, arkProvider, indexerProvider, arkServerPublicKey, offchainTapscript, boardingTapscript, dustAmount, walletRepository, contractRepository, delegateProvider, watcherConfig, walletContractTimelocks) {
12371
12371
  this.identity = identity;
12372
12372
  this.network = network;
12373
12373
  this.onchainProvider = onchainProvider;
12374
+ this.arkProvider = arkProvider;
12374
12375
  this.indexerProvider = indexerProvider;
12375
12376
  this.dustAmount = dustAmount;
12376
12377
  this.walletRepository = walletRepository;
@@ -12396,6 +12397,7 @@ var ReadonlyWallet = class _ReadonlyWallet {
12396
12397
  identity;
12397
12398
  network;
12398
12399
  onchainProvider;
12400
+ arkProvider;
12399
12401
  indexerProvider;
12400
12402
  dustAmount;
12401
12403
  walletRepository;
@@ -12463,14 +12465,19 @@ var ReadonlyWallet = class _ReadonlyWallet {
12463
12465
  */
12464
12466
  _arkServerPublicKey;
12465
12467
  /**
12466
- * Whether this wallet was constructed from live operator server-info
12467
- * (`"live"`) or from a cached snapshot because the operator was unreachable
12468
- * (`"cache"`). Freshness signal for {@link getProviderConnectionState}.
12468
+ * Whether the LATEST server-info resolution answered live (`"live"`) or
12469
+ * from the cached snapshot because the operator was unreachable
12470
+ * (`"cache"`). Seeded at construction and updated by every
12471
+ * {@link getArkadeInfo} read, so a wallet that booted offline and
12472
+ * recovered stops reporting degraded — and one that just fell back stops
12473
+ * claiming online. Freshness signal for
12474
+ * {@link getProviderConnectionState}.
12469
12475
  */
12470
12476
  _serverInfoSource = "live";
12471
12477
  /**
12472
- * Epoch-ms of the last known live operator contact: construction time on the
12473
- * `live` boot path, the cached snapshot's `savedAt` on the `cache` path.
12478
+ * Epoch-ms of the last known live operator contact: the most recent live
12479
+ * resolution (construction or a later {@link getArkadeInfo}), or the
12480
+ * cached snapshot's `savedAt` when the latest resolution fell back.
12474
12481
  */
12475
12482
  _serverInfoLastOnlineAt;
12476
12483
  /** @see {@link _serverInfoSource} */
@@ -12478,13 +12485,15 @@ var ReadonlyWallet = class _ReadonlyWallet {
12478
12485
  return this._serverInfoSource;
12479
12486
  }
12480
12487
  /**
12481
- * Composed provider-connection freshness: the boot server-info source
12482
- * (Arkade) combined with the contract-manager's indexer-sync health, if the
12483
- * manager has been initialized. Reads no live provider state — it never
12484
- * forces a `ContractManager` to constructso it is safe for readonly
12485
- * callers that only use address/balance APIs.
12488
+ * Composed provider-connection freshness: the LATEST server-info
12489
+ * resolution (boot, or any later {@link getArkadeInfo} read) combined with
12490
+ * the contract-manager's indexer-sync health, if the manager has been
12491
+ * initialized. Reads no live provider state — it never forces a
12492
+ * `ContractManager` to construct so it is safe for readonly callers
12493
+ * that only use address/balance APIs.
12486
12494
  *
12487
- * - Boot fell back to a cached snapshot → degraded on `arkade` (`cache`).
12495
+ * - Latest resolution fell back to the cached snapshot → degraded on
12496
+ * `arkade` (`cache`).
12488
12497
  * - Otherwise, if the contract manager has degraded to repository data →
12489
12498
  * degraded on `indexer` (`repository`).
12490
12499
  * - Otherwise online.
@@ -12530,7 +12539,7 @@ var ReadonlyWallet = class _ReadonlyWallet {
12530
12539
  }
12531
12540
  /**
12532
12541
  * x-only hex of the operator's deprecated signer keys (from
12533
- * `ArkInfo.deprecatedSigners`), cached for the OFFLINE read/watch paths.
12542
+ * `ArkadeInfo.deprecatedSigners`), cached for the OFFLINE read/watch paths.
12534
12543
  * The boarding watch/history surfaces ({@link getBoardingAddresses},
12535
12544
  * {@link getBoardingTxs}) fan out over {current} ∪ this set so a deposit at
12536
12545
  * a boarding address minted under a now-rotated operator signer keeps being
@@ -12605,6 +12614,64 @@ var ReadonlyWallet = class _ReadonlyWallet {
12605
12614
  get arkServerPublicKey() {
12606
12615
  return this._arkServerPublicKey;
12607
12616
  }
12617
+ /**
12618
+ * Server info for the Arkade server this wallet is connected to, resolved
12619
+ * exactly as construction resolves it: live wins, a retryable failure
12620
+ * falls back to the snapshot persisted at boot, a terminal one propagates.
12621
+ *
12622
+ * Live rather than the pinned boot snapshot because the fields callers
12623
+ * come here for — `signerPubkey`, `checkpointTapscript`, `fees` — are the
12624
+ * ones a mid-session rotation moves, and a covenant built against a
12625
+ * superseded signer is unspendable.
12626
+ *
12627
+ * One rotation caveat: reading does NOT re-pin the wallet —
12628
+ * {@link arkServerPublicKey}, {@link dustAmount} and the tapscripts move
12629
+ * only through `handleServerInfoChanged`/`rotateServerSigner` — so inside
12630
+ * a rotation window this can report epoch N+1 while the wallet still
12631
+ * spends on N. The window closes on its own: a read that observes a moved
12632
+ * digest makes the provider emit `onServerInfoChanged`, which is what
12633
+ * drives that rotation. A caller about to bind the answer into a covenant
12634
+ * passes `{ requireLive: true }` and fails closed instead of receiving
12635
+ * the boot snapshot.
12636
+ *
12637
+ * @returns The Arkade server's info
12638
+ * @see ArkadeInfo
12639
+ */
12640
+ async getArkadeInfo(opts) {
12641
+ const { info, source, lastOnlineAt } = await resolveArkInfo(
12642
+ this.arkProvider,
12643
+ this.walletRepository,
12644
+ opts
12645
+ );
12646
+ this._serverInfoSource = source;
12647
+ if (source === "live") {
12648
+ this._serverInfoLastOnlineAt = Date.now();
12649
+ } else if (lastOnlineAt !== void 0) {
12650
+ this._serverInfoLastOnlineAt = lastOnlineAt;
12651
+ }
12652
+ return info;
12653
+ }
12654
+ /**
12655
+ * Chain reads against this wallet's server for scripts it does not own.
12656
+ *
12657
+ * Binds the wallet's own `indexerProvider` — which may be an Expo or
12658
+ * injected one that a caller's hand-built `RestIndexerProvider` would
12659
+ * silently bypass. `getVtxos` goes through
12660
+ * {@link getNormalizedVtxos}, which is what makes every VTXO leaving the
12661
+ * seam carry its canonical facts.
12662
+ *
12663
+ * A bound object rather than the provider itself, so an `IReadonlyWallet`
12664
+ * holder gets `getVtxos`/`getVirtualTxs` and nothing else at runtime.
12665
+ * (`indexerProvider` is still public on the concrete classes, unlike
12666
+ * `arkProvider`, so this narrows the interface rather than the field.)
12667
+ */
12668
+ async getArkadeReader() {
12669
+ const indexer = this.indexerProvider;
12670
+ return {
12671
+ getVtxos: (opts) => getNormalizedVtxos(indexer, opts),
12672
+ getVirtualTxs: (txids, opts) => indexer.getVirtualTxs(txids, opts)
12673
+ };
12674
+ }
12608
12675
  /**
12609
12676
  * The wallet's current boarding tapscript (the on-chain onboarding
12610
12677
  * target). Read-only from the outside; mutated only via
@@ -12683,7 +12750,7 @@ var ReadonlyWallet = class _ReadonlyWallet {
12683
12750
  source: serverInfoSource,
12684
12751
  lastOnlineAt: serverInfoLastOnlineAt
12685
12752
  } = await resolveArkInfo(arkProvider, walletRepository);
12686
- const network = getNetwork(info.network);
12753
+ const network = networkFromArkadeInfo(info);
12687
12754
  if ("descriptor" in config.identity) {
12688
12755
  const descriptor = config.identity.descriptor;
12689
12756
  const identityIsMainnet = !descriptor.includes("tpub");
@@ -12773,6 +12840,7 @@ var ReadonlyWallet = class _ReadonlyWallet {
12773
12840
  config.identity,
12774
12841
  setup.network,
12775
12842
  setup.onchainProvider,
12843
+ setup.arkProvider,
12776
12844
  setup.indexerProvider,
12777
12845
  setup.serverPubKey,
12778
12846
  setup.offchainTapscript,
@@ -13620,6 +13688,7 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
13620
13688
  identity,
13621
13689
  network,
13622
13690
  onchainProvider,
13691
+ arkProvider,
13623
13692
  indexerProvider,
13624
13693
  arkServerPublicKey,
13625
13694
  offchainTapscript,
@@ -13631,7 +13700,6 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
13631
13700
  watcherConfig,
13632
13701
  walletContractTimelocks
13633
13702
  );
13634
- this.arkProvider = arkProvider;
13635
13703
  this.forfeitOutputScript = forfeitOutputScript;
13636
13704
  this.forfeitPubkey = forfeitPubkey;
13637
13705
  this.batchExpiryPolicy = batchExpiryPolicy;
@@ -13665,7 +13733,6 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
13665
13733
  boardingPkScript: boardingTapscript.pkScript
13666
13734
  });
13667
13735
  }
13668
- arkProvider;
13669
13736
  forfeitOutputScript;
13670
13737
  forfeitPubkey;
13671
13738
  batchExpiryPolicy;
@@ -13828,7 +13895,7 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
13828
13895
  /**
13829
13896
  * Output script for checkpoint transactions, decoded from the server's
13830
13897
  * `checkpointTapscript`. Server-controlled state: pinned at construction
13831
- * and re-sourced from a fresh `ArkInfo` on server-signer rotation. Read it
13898
+ * and re-sourced from a fresh `ArkadeInfo` on server-signer rotation. Read it
13832
13899
  * through {@link serverUnrollScript}; write it only through
13833
13900
  * {@link setServerUnrollScriptForRotation}.
13834
13901
  */
@@ -13839,7 +13906,7 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
13839
13906
  /**
13840
13907
  * @internal Sole write path for `serverUnrollScript` after construction.
13841
13908
  * Called by {@link Wallet._doRotateServerSigner} with the checkpoint script
13842
- * sourced from the fresh `ArkInfo` that triggered the rotation, so the send
13909
+ * sourced from the fresh `ArkadeInfo` that triggered the rotation, so the send
13843
13910
  * path builds checkpoints against the new server epoch. External code must
13844
13911
  * treat `serverUnrollScript` as read-only.
13845
13912
  */
@@ -14471,6 +14538,21 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
14471
14538
  /** @deprecated Use settlementConfig instead */
14472
14539
  renewalConfig;
14473
14540
  settlementConfig;
14541
+ /**
14542
+ * Broadcast access bound to this wallet's server, so a plugin needs only
14543
+ * the wallet.
14544
+ *
14545
+ * Defined here and not on {@link ReadonlyWallet} for the same reason
14546
+ * `arkProvider` is protected there: a readonly wallet, and every
14547
+ * `toReadonly()` view, must not be able to submit.
14548
+ */
14549
+ async getArkadeBroadcaster() {
14550
+ const ark = this.arkProvider;
14551
+ return {
14552
+ submitTx: (signedArkTx, checkpointTxs) => ark.submitTx(signedArkTx, checkpointTxs),
14553
+ finalizeTx: (arkTxid, finalCheckpointTxs) => ark.finalizeTx(arkTxid, finalCheckpointTxs)
14554
+ };
14555
+ }
14474
14556
  get assetManager() {
14475
14557
  this._walletAssetManager ??= new AssetManager(this);
14476
14558
  return this._walletAssetManager;
@@ -14650,6 +14732,7 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
14650
14732
  readonlyIdentity,
14651
14733
  this.network,
14652
14734
  this.onchainProvider,
14735
+ this.arkProvider,
14653
14736
  this.indexerProvider,
14654
14737
  this.arkServerPublicKey,
14655
14738
  this.offchainTapscript,
@@ -14702,7 +14785,7 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
14702
14785
  changeAmount: BigInt(changeAmount)
14703
14786
  };
14704
14787
  const outputAddress = ArkAddress.decode(params.address);
14705
- assertRecipientArkAddress(
14788
+ assertRecipientArkadeAddress(
14706
14789
  params.address,
14707
14790
  outputAddress,
14708
14791
  this.recipientAddressContext(serverPubKey)
@@ -14855,7 +14938,7 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
14855
14938
  }
14856
14939
  if (arkAddress) {
14857
14940
  recipientContext ??= this.recipientAddressContext();
14858
- assertRecipientArkAddress(output.address, arkAddress, recipientContext);
14941
+ assertRecipientArkadeAddress(output.address, arkAddress, recipientContext);
14859
14942
  script = arkAddress.pkScript;
14860
14943
  hasOffchainOutputs = true;
14861
14944
  } else {
@@ -17093,6 +17176,9 @@ var MessageBus = class {
17093
17176
  });
17094
17177
  return;
17095
17178
  }
17179
+ if (response.error instanceof Error && !response.errorName) {
17180
+ response.errorName = response.error.name;
17181
+ }
17096
17182
  source.postMessage(response);
17097
17183
  }
17098
17184
  /**
@@ -17686,6 +17772,49 @@ var WalletMessageHandler = class {
17686
17772
  payload: { address }
17687
17773
  });
17688
17774
  }
17775
+ case "GET_ARKADE_INFO": {
17776
+ const { payload } = message;
17777
+ const info = await this.readonlyWallet.getArkadeInfo(payload);
17778
+ return this.tagged({
17779
+ id,
17780
+ type: "ARKADE_INFO",
17781
+ payload: { info }
17782
+ });
17783
+ }
17784
+ case "INDEXER_GET_VTXOS": {
17785
+ const { opts } = message.payload;
17786
+ const reader = await this.readonlyWallet.getArkadeReader();
17787
+ return this.tagged({
17788
+ id,
17789
+ type: "INDEXER_VTXOS",
17790
+ payload: await reader.getVtxos(opts)
17791
+ });
17792
+ }
17793
+ case "INDEXER_GET_VIRTUAL_TXS": {
17794
+ const { txids, opts } = message.payload;
17795
+ const reader = await this.readonlyWallet.getArkadeReader();
17796
+ return this.tagged({
17797
+ id,
17798
+ type: "INDEXER_VIRTUAL_TXS",
17799
+ payload: await reader.getVirtualTxs(txids, opts)
17800
+ });
17801
+ }
17802
+ case "SUBMIT_TX": {
17803
+ const { signedArkTx, checkpointTxs } = message.payload;
17804
+ const broadcaster = await this.requireWallet().getArkadeBroadcaster();
17805
+ const result = await broadcaster.submitTx(signedArkTx, checkpointTxs);
17806
+ return this.tagged({
17807
+ id,
17808
+ type: "SUBMIT_TX_SUCCESS",
17809
+ payload: result
17810
+ });
17811
+ }
17812
+ case "FINALIZE_TX": {
17813
+ const { arkTxid, finalCheckpointTxs } = message.payload;
17814
+ const broadcaster = await this.requireWallet().getArkadeBroadcaster();
17815
+ await broadcaster.finalizeTx(arkTxid, finalCheckpointTxs);
17816
+ return this.tagged({ id, type: "FINALIZE_TX_SUCCESS" });
17817
+ }
17689
17818
  case "GET_BALANCE": {
17690
17819
  const balance = await this.handleGetBalance();
17691
17820
  return this.tagged({
@@ -18577,6 +18706,13 @@ var WalletMessageHandler = class {
18577
18706
 
18578
18707
  // src/wallet/serviceWorker/wallet.ts
18579
18708
  var sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
18709
+ var restoreErrorName = (response) => {
18710
+ const error = response.error;
18711
+ if (response.errorName && error instanceof Error && error.name !== response.errorName) {
18712
+ error.name = response.errorName;
18713
+ }
18714
+ return error;
18715
+ };
18580
18716
  var INIT_WAIT_BACKOFF_CAP_MS = 2e3;
18581
18717
  var MAX_INIT_WAITS = 8;
18582
18718
  var initWaitBackoffMs = (attempt) => Math.min(100 * 2 ** attempt, INIT_WAIT_BACKOFF_CAP_MS);
@@ -18599,6 +18735,14 @@ var DEFAULT_MESSAGE_TIMEOUTS = {
18599
18735
  GET_USED_SIGNING_DESCRIPTORS: 2e4,
18600
18736
  ADVANCE_SIGNING_DESCRIPTOR_WATERMARK: 1e4,
18601
18737
  // Medium reads — may involve indexer queries
18738
+ // A live `/v1/info` fetch queued behind the same per-origin rate gate as
18739
+ // the indexer, not a repository read. Derived from the fetch's own abort
18740
+ // budget so the worker's snapshot fallback stays reachable before this
18741
+ // page deadline fires — lowering it below the budget would time the page
18742
+ // out while the worker is still seconds from answering from cache.
18743
+ GET_ARKADE_INFO: INFO_FETCH_TIMEOUT_MS + 8e3,
18744
+ INDEXER_GET_VTXOS: 2e4,
18745
+ INDEXER_GET_VIRTUAL_TXS: 2e4,
18602
18746
  GET_VTXOS: 2e4,
18603
18747
  GET_SPENDABLE_VTXOS: 2e4,
18604
18748
  GET_BOARDING_UTXOS: 2e4,
@@ -18621,6 +18765,10 @@ var DEFAULT_MESSAGE_TIMEOUTS = {
18621
18765
  SEND_BITCOIN: 5e4,
18622
18766
  SEND: 5e4,
18623
18767
  SETTLE: 5e4,
18768
+ // Broadcast: the server round-trip a spend ends in, so it belongs
18769
+ // with the writes rather than the reads above.
18770
+ SUBMIT_TX: 5e4,
18771
+ FINALIZE_TX: 5e4,
18624
18772
  ISSUE: 5e4,
18625
18773
  REISSUE: 5e4,
18626
18774
  BURN: 5e4,
@@ -18647,6 +18795,9 @@ var DEFAULT_MESSAGE_TIMEOUTS = {
18647
18795
  };
18648
18796
  var DEDUPABLE_REQUEST_TYPES = /* @__PURE__ */ new Set([
18649
18797
  "GET_ADDRESS",
18798
+ "GET_ARKADE_INFO",
18799
+ "INDEXER_GET_VTXOS",
18800
+ "INDEXER_GET_VIRTUAL_TXS",
18650
18801
  "GET_BALANCE",
18651
18802
  "GET_BOARDING_ADDRESS",
18652
18803
  "GET_BOARDING_UTXOS",
@@ -18738,7 +18889,7 @@ var initializeMessageBus = (serviceWorker, config, timeoutMs = 2e3) => {
18738
18889
  if (response?.id !== initCmd.id) return;
18739
18890
  cleanup();
18740
18891
  if (response.error) {
18741
- reject(response.error);
18892
+ reject(restoreErrorName(response));
18742
18893
  } else {
18743
18894
  resolve();
18744
18895
  }
@@ -18910,7 +19061,7 @@ var ServiceWorkerReadonlyWallet = class _ServiceWorkerReadonlyWallet {
18910
19061
  }
18911
19062
  cleanup();
18912
19063
  if (response.error) {
18913
- reject(response.error);
19064
+ reject(restoreErrorName(response));
18914
19065
  } else {
18915
19066
  resolve(response);
18916
19067
  }
@@ -18936,7 +19087,7 @@ var ServiceWorkerReadonlyWallet = class _ServiceWorkerReadonlyWallet {
18936
19087
  if (request.id !== response.id) return;
18937
19088
  if (response.error) {
18938
19089
  cleanup();
18939
- reject(response.error);
19090
+ reject(restoreErrorName(response));
18940
19091
  return;
18941
19092
  }
18942
19093
  if (isComplete(response)) {
@@ -19162,6 +19313,68 @@ var ServiceWorkerReadonlyWallet = class _ServiceWorkerReadonlyWallet {
19162
19313
  throw new Error(`Failed to get boarding address: ${error}`);
19163
19314
  }
19164
19315
  }
19316
+ /**
19317
+ * Delegated to the worker, which holds the wallet that owns the connection.
19318
+ * The payload crosses raw — see {@link ResponseGetArkadeInfo} for why.
19319
+ */
19320
+ async getArkadeInfo(opts) {
19321
+ const message = {
19322
+ id: getRandomId(),
19323
+ tag: this.messageTag,
19324
+ type: "GET_ARKADE_INFO",
19325
+ // omitted entirely for the default read: wire-shape hygiene
19326
+ // toward workers built before the option existed. (Dedup is
19327
+ // unaffected either way — the key is JSON.stringify, which drops
19328
+ // undefined-valued properties.)
19329
+ ...opts?.requireLive ? { payload: { requireLive: true } } : {}
19330
+ };
19331
+ try {
19332
+ const response = await this.sendMessage(message);
19333
+ return response.payload.info;
19334
+ } catch (error) {
19335
+ throw new Error(`Failed to get arkade info: ${error}`, { cause: error });
19336
+ }
19337
+ }
19338
+ /**
19339
+ * An {@link ArkadeReader} that speaks to the worker rather than to the
19340
+ * server. The page holds no provider, so a caller that built its own from a
19341
+ * URL would open a second connection outside the worker's rate gate and
19342
+ * caches — this proxy is what keeps chain reads in one place.
19343
+ */
19344
+ async getArkadeReader() {
19345
+ return {
19346
+ getVtxos: async (opts) => {
19347
+ const message = {
19348
+ id: getRandomId(),
19349
+ tag: this.messageTag,
19350
+ type: "INDEXER_GET_VTXOS",
19351
+ payload: { opts }
19352
+ };
19353
+ try {
19354
+ const response = await this.sendMessage(message);
19355
+ const { vtxos, page } = response.payload;
19356
+ return { vtxos: vtxos.map(normalizeVtxo), page: page && { ...page } };
19357
+ } catch (error) {
19358
+ throw new Error(`Failed to get vtxos: ${error}`, { cause: error });
19359
+ }
19360
+ },
19361
+ getVirtualTxs: async (txids, opts) => {
19362
+ const message = {
19363
+ id: getRandomId(),
19364
+ tag: this.messageTag,
19365
+ type: "INDEXER_GET_VIRTUAL_TXS",
19366
+ payload: { txids, opts }
19367
+ };
19368
+ try {
19369
+ const response = await this.sendMessage(message);
19370
+ const { txs, page } = response.payload;
19371
+ return { txs: [...txs], page: page && { ...page } };
19372
+ } catch (error) {
19373
+ throw new Error(`Failed to get virtual txs: ${error}`, { cause: error });
19374
+ }
19375
+ }
19376
+ };
19377
+ }
19165
19378
  async getBalance() {
19166
19379
  const message = {
19167
19380
  id: getRandomId(),
@@ -19818,6 +20031,43 @@ var ServiceWorkerWallet = class _ServiceWorkerWallet extends ServiceWorkerReadon
19818
20031
  async signerForDescriptor(descriptor) {
19819
20032
  return resolveDescriptorSigner(descriptor, this.identity);
19820
20033
  }
20034
+ /**
20035
+ * An {@link ArkadeBroadcaster} proxied to the worker, which holds the
20036
+ * provider. Only `ServiceWorkerWallet` offers one: a readonly worker
20037
+ * refuses `SUBMIT_TX`/`FINALIZE_TX` outright, so exposing it on the
20038
+ * readonly class would promise something the boundary rejects.
20039
+ */
20040
+ async getArkadeBroadcaster() {
20041
+ return {
20042
+ submitTx: async (signedArkTx, checkpointTxs) => {
20043
+ const message = {
20044
+ id: getRandomId(),
20045
+ tag: this.messageTag,
20046
+ type: "SUBMIT_TX",
20047
+ payload: { signedArkTx, checkpointTxs }
20048
+ };
20049
+ try {
20050
+ const response = await this.sendMessage(message);
20051
+ return response.payload;
20052
+ } catch (error) {
20053
+ throw new Error(`Failed to submit tx: ${error}`, { cause: error });
20054
+ }
20055
+ },
20056
+ finalizeTx: async (arkTxid, finalCheckpointTxs) => {
20057
+ const message = {
20058
+ id: getRandomId(),
20059
+ tag: this.messageTag,
20060
+ type: "FINALIZE_TX",
20061
+ payload: { arkTxid, finalCheckpointTxs }
20062
+ };
20063
+ try {
20064
+ await this.sendMessage(message);
20065
+ } catch (error) {
20066
+ throw new Error(`Failed to finalize tx: ${error}`, { cause: error });
20067
+ }
20068
+ }
20069
+ };
20070
+ }
19821
20071
  async sendBitcoin(params) {
19822
20072
  const message = {
19823
20073
  id: getRandomId(),
@@ -23362,8 +23612,14 @@ var ArkadeTransactionBuilder = class {
23362
23612
  if (!client.identity) {
23363
23613
  throw new Error("a signing identity is required for non-covenant spends");
23364
23614
  }
23615
+ const ark = client.arkProvider;
23616
+ if (!ark.submitTx || !ark.finalizeTx) {
23617
+ throw new Error(
23618
+ "broadcasting requires an `arkade` provider with `submitTx`/`finalizeTx` on the Arkade client"
23619
+ );
23620
+ }
23365
23621
  const signedArk = await this.signArk(arkTx, userInputs);
23366
- const res = await client.arkProvider.submitTx(
23622
+ const res = await ark.submitTx(
23367
23623
  base64.encode(signedArk.toPSBT()),
23368
23624
  checkpoints.map((c) => base64.encode(c.toPSBT()))
23369
23625
  );
@@ -23374,7 +23630,7 @@ var ArkadeTransactionBuilder = class {
23374
23630
  async ({ server }) => base64.encode((await client.identity.sign(server, [0])).toPSBT())
23375
23631
  )
23376
23632
  );
23377
- await client.arkProvider.finalizeTx(res.arkTxid, finalCps);
23633
+ await ark.finalizeTx(res.arkTxid, finalCps);
23378
23634
  return {
23379
23635
  txid: res.arkTxid,
23380
23636
  signedArkTx: res.finalArkTx,
@@ -23462,6 +23718,7 @@ var BIP21Error = /* @__PURE__ */ ((BIP21Error2) => {
23462
23718
  BIP21Error2["INVALID_ADDRESS"] = "Invalid address";
23463
23719
  return BIP21Error2;
23464
23720
  })(BIP21Error || {});
23721
+ var ARK_HRP = /^(?:t?ark|T?ARK)/;
23465
23722
  var BIP21 = class _BIP21 {
23466
23723
  /**
23467
23724
  * Create a BIP21 URI from the provided parameters.
@@ -23485,7 +23742,7 @@ var BIP21 = class _BIP21 {
23485
23742
  }
23486
23743
  queryParams[key] = value;
23487
23744
  } else if (key === "ark") {
23488
- if (typeof value === "string" && (value.startsWith("ark") || value.startsWith("tark"))) {
23745
+ if (typeof value === "string" && ARK_HRP.test(value)) {
23489
23746
  queryParams[key] = value;
23490
23747
  } else {
23491
23748
  console.warn("Invalid ARK address format");
@@ -23505,7 +23762,7 @@ var BIP21 = class _BIP21 {
23505
23762
  Object.entries(queryParams).map(([k, v]) => [k, String(v)])
23506
23763
  )
23507
23764
  ).toString() : "";
23508
- return `bitcoin:${address ? address.toLowerCase() : ""}${query}`;
23765
+ return `bitcoin:${address ?? ""}${query}`;
23509
23766
  }
23510
23767
  /**
23511
23768
  * Integer-sats amount encoded in a BIP21 URI (`amount=` is BTC), or
@@ -23538,7 +23795,7 @@ var BIP21 = class _BIP21 {
23538
23795
  const [address, query] = withoutPrefix.split("?");
23539
23796
  const params = {};
23540
23797
  if (address) {
23541
- params.address = address.toLowerCase();
23798
+ params.address = address;
23542
23799
  }
23543
23800
  if (query) {
23544
23801
  const queryParams = new URLSearchParams(query);
@@ -23554,7 +23811,7 @@ var BIP21 = class _BIP21 {
23554
23811
  }
23555
23812
  params[key] = amount;
23556
23813
  } else if (key === "ark") {
23557
- if (value.startsWith("ark") || value.startsWith("tark")) {
23814
+ if (ARK_HRP.test(value)) {
23558
23815
  params[key] = value;
23559
23816
  } else {
23560
23817
  console.warn("Invalid ARK address format");
@@ -23806,7 +24063,7 @@ function onchainRail() {
23806
24063
  function createDefaultPaymentRouter(wallet) {
23807
24064
  return new PaymentRouter({
23808
24065
  wallet,
23809
- prefs: { priority: ["ark", "lightning", "onchain"] }
24066
+ prefs: { priority: ["ark", "onchain"] }
23810
24067
  }).use(arkRail()).use(onchainRail());
23811
24068
  }
23812
24069
  /*! Bundled license information:
@@ -23815,6 +24072,6 @@ function createDefaultPaymentRouter(wallet) {
23815
24072
  (*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) *)
23816
24073
  */
23817
24074
 
23818
- export { ARKADE_MAGIC, ARKADE_SALTED_PREIMAGE_TAG, ARKADE_SWAP_PREIMAGE_TAG, AbortError, ActivityRegistry, AmbiguousRouteError, ArkNote, ArkadeCash, ArkadeCashCreateError, AssetManager, BIP21, BIP21Error, BIP322, BLOCKED_UPGRADE_TIMEOUT_MS, Batch, CachingArkProvider, ChainedTxType, ConnectionDisposedError, ContractManager, ContractRepositoryImpl, ContractWatcher, DB_VERSION, DEFAULT_MESSAGE_TIMEOUTS, DEFAULT_MIN_BATCH_EXPIRY_SECONDS, DEFAULT_MIN_CHECKPOINT_EXIT_DELAY_SECONDS, DatabaseUpgradeBlockedError, DelegateManagerImpl, DelegateNotConfiguredError, DelegatorManagerImpl, DelegatorNotConfiguredError, DescriptorIdentity, DescriptorSigningProviderMissingError, DustChangeError, ELECTRUM_TCP_HOST, ELECTRUM_WS_URL, ESPLORA_URL, ElectrumOnchainProvider, EmulatorPacket, EsploraProvider, Estimator, Extension, ExtensionNotFoundError, ForeignDescriptorError, HDDescriptorProvider, INTENT_TERMINAL_STATES, InMemoryContractRepository, InMemoryIntentRepository, InMemoryVirtualTxRepository, InMemoryWalletRepository, IndexedDBContractRepository, IndexedDBIntentRepository, IndexedDBVirtualTxRepository, IndexedDBWalletRepository, MAX_USED_SIGNING_DESCRIPTORS_LOOK_AHEAD, MESSAGE_BUS_INITIALIZING, MESSAGE_BUS_NOT_INITIALIZED, MIGRATION_KEY, MUTINYNET_MIN_CHECKPOINT_EXIT_DELAY_SECONDS, MessageBus, MessageBusInitializingError, MessageBusNotInitializedError, MissingSigningDescriptorError, MnemonicIdentity, OnchainWallet, P2A, PaymentRouter, PrevTxUnavailableError, REGTEST_MIN_BATCH_EXPIRY_SECONDS, REGTEST_MIN_CHECKPOINT_EXIT_DELAY_SECONDS, Ramps, ReadonlyAssetManager, ReadonlyDescriptorIdentity, ReadonlySingleKey, ReadonlyWallet, ReadonlyWalletError, RestDelegateProvider, RestDelegatorProvider, RestEmulatorProvider, SIGNET_MIN_CHECKPOINT_EXIT_DELAY_SECONDS, SeedIdentity, ServiceWorkerReadonlyWallet, ServiceWorkerTimeoutError, ServiceWorkerWallet, SingleKey, TxTree, TxType, TxWeightEstimator, UnannotatableInputError, UnilateralExit, UnknownPacket, Unroll, VtxoManager, Wallet2 as Wallet, WalletCannotAllocateAddressError, WalletCannotSignError, WalletMessageHandler, WalletNotInitializedError, WalletRepositoryImpl, WsElectrumChainSource, adoptContractDescriptor, arkRail, arkTarget, arkade_exports, assertFinalCommitmentMatchesValidated, assertIntentIdUnique, assertSendableAmount, assertSubmittedArkTxid, assertValidBatchExpiry, assertValidServerUnrollScript, assetMintResolver, attachPrevArkTxs, attachPrevoutTxs, awaitTransaction, boardingResolver, btcTarget, buildForfeitTx, buildOffchainTx, buildPreimageMessage, buildSaltedPreimageMessage, claimWithPreimageIdentity, classifyAgainstSignerSet, classifyContractSigner, closeDatabase, collabExitResolver, combineTapscriptSigs, contractFromArkContract, contractFromArkContractWithAddress, contractPreimage, contractSigner, createAssetPacket, createDefaultActivityRegistry, createDefaultPaymentRouter, createExitChainResolver, createManagedConnection, decodeArkContract, defaultBatchExpiryPolicy, defaultCheckpointExitDelayPolicy, deleteByIndex, deserializeAssets, deserializeExitPackage, deserializeUtxo, deserializeVtxo, encodeArkContract, exitObserverFor, extendVirtualCoinForContract, extractArkProviderUrl, gateExclusion, gatedContracts, getAllByIndexValues, getMigrationStatus, getRandomId, hasBoardingTxExpired, hasCandidates, intentMatchesFilter, intentPageBounds, invoiceTarget, isAddressAllocationCapable, isArkContract, isBatchSignable, isBtcAddress, isContractGenericallySpendable, isCooperativelyMigratable, isDeterministicSigner, isDiscoverable, isHDAllocationCapable, isHDDeterministicSignCapable, isHDWalletCapable, isLightningInvoice, isLnurl, isMessageBusInitializingError, isMessageBusNotInitializedError, isPerArtifactDescriptor, isSigningIdentity, isSubdust, isTerminalIntentState, isValidArkAddress, isVtxoExpiringSoon, isVtxoForScript, isWatchedContract, logExcludedVtxos, makeHandle, matchServerCheckpoints, mergeChainedTxType, migrateWalletRepository, notifyExitObserved, onchainRail, openDatabase, outpointExclusion, outpointReasons, promisifyRequest, provisionClaimSecret, provisionRefundKey, requiresMigration, resolveBatchExpiryPolicy, resolveCheckpointExitDelayPolicy, resolveDescriptorSigner, resolvePrevTxs, resolveSendAmount, rollbackMigration, saveVtxosForContract, scriptFromArkAddress, selectCoinsWithAsset, selectVirtualCoins, serializeAssets, serializeExitPackage, serializeUtxo, serializeVtxo, setupServiceWorker, signAndSubmitOffchainTx, signerSetFromInfo, signingDescriptorIndex, strictSigningDescriptorIndex, toXOnlySignerHex, tryResolveSendAmount, validateBatchRecipients, validateConnectorsTxGraph, validateVtxoTxGraph, verifyTapscriptSignatures, waitForIncomingFunds, warnAndFilterVtxosForScript, withPrevTxs };
23819
- //# sourceMappingURL=chunk-TA7XLEP2.js.map
23820
- //# sourceMappingURL=chunk-TA7XLEP2.js.map
24075
+ export { ARKADE_MAGIC, ARKADE_SALTED_PREIMAGE_TAG, ARKADE_SWAP_PREIMAGE_TAG, AbortError, ActivityRegistry, AmbiguousRouteError, ArkNote, ArkadeCash, ArkadeCashCreateError, AssetManager, BIP21, BIP21Error, BIP322, BLOCKED_UPGRADE_TIMEOUT_MS, Batch, CachingArkProvider, ChainedTxType, ConnectionDisposedError, ContractManager, ContractRepositoryImpl, ContractWatcher, DB_VERSION, DEFAULT_MESSAGE_TIMEOUTS, DEFAULT_MIN_BATCH_EXPIRY_SECONDS, DEFAULT_MIN_CHECKPOINT_EXIT_DELAY_SECONDS, DatabaseUpgradeBlockedError, DelegateManagerImpl, DelegateNotConfiguredError, DelegatorManagerImpl, DelegatorNotConfiguredError, DescriptorIdentity, DescriptorSigningProviderMissingError, DustChangeError, ELECTRUM_TCP_HOST, ELECTRUM_WS_URL, ESPLORA_URL, ElectrumOnchainProvider, EmulatorPacket, EsploraProvider, Estimator, Extension, ExtensionNotFoundError, ForeignDescriptorError, HDDescriptorProvider, INTENT_TERMINAL_STATES, InMemoryContractRepository, InMemoryIntentRepository, InMemoryVirtualTxRepository, InMemoryWalletRepository, IndexedDBContractRepository, IndexedDBIntentRepository, IndexedDBVirtualTxRepository, IndexedDBWalletRepository, MAX_USED_SIGNING_DESCRIPTORS_LOOK_AHEAD, MESSAGE_BUS_INITIALIZING, MESSAGE_BUS_NOT_INITIALIZED, MIGRATION_KEY, MUTINYNET_MIN_CHECKPOINT_EXIT_DELAY_SECONDS, MessageBus, MessageBusInitializingError, MessageBusNotInitializedError, MissingSigningDescriptorError, MnemonicIdentity, OnchainWallet, P2A, PaymentRouter, PrevTxUnavailableError, REGTEST_MIN_BATCH_EXPIRY_SECONDS, REGTEST_MIN_CHECKPOINT_EXIT_DELAY_SECONDS, Ramps, ReadonlyAssetManager, ReadonlyDescriptorIdentity, ReadonlySingleKey, ReadonlyWallet, ReadonlyWalletError, RestDelegateProvider, RestDelegatorProvider, RestEmulatorProvider, SIGNET_MIN_CHECKPOINT_EXIT_DELAY_SECONDS, SeedIdentity, ServiceWorkerReadonlyWallet, ServiceWorkerTimeoutError, ServiceWorkerWallet, SingleKey, TxTree, TxType, TxWeightEstimator, UnannotatableInputError, UnilateralExit, UnknownPacket, Unroll, VtxoManager, Wallet2 as Wallet, WalletCannotAllocateAddressError, WalletCannotSignError, WalletMessageHandler, WalletNotInitializedError, WalletRepositoryImpl, WsElectrumChainSource, adoptContractDescriptor, arkRail, arkTarget, arkade_exports, assertFinalCommitmentMatchesValidated, assertIntentIdUnique, assertRecipientArkadeAddress, assertSendableAmount, assertSubmittedArkTxid, assertValidBatchExpiry, assertValidServerUnrollScript, assetMintResolver, attachPrevArkTxs, attachPrevoutTxs, awaitTransaction, boardingResolver, btcTarget, buildForfeitTx, buildOffchainTx, buildPreimageMessage, buildSaltedPreimageMessage, claimWithPreimageIdentity, classifyAgainstSignerSet, classifyContractSigner, closeDatabase, collabExitResolver, combineTapscriptSigs, contractFromArkContract, contractFromArkContractWithAddress, contractPreimage, contractSigner, createAssetPacket, createDefaultActivityRegistry, createDefaultPaymentRouter, createExitChainResolver, createManagedConnection, decodeArkContract, defaultBatchExpiryPolicy, defaultCheckpointExitDelayPolicy, deleteByIndex, deserializeAssets, deserializeExitPackage, deserializeUtxo, deserializeVtxo, encodeArkContract, exitObserverFor, extendVirtualCoinForContract, extractArkProviderUrl, gateExclusion, gatedContracts, getAllByIndexValues, getMigrationStatus, getRandomId, hasBoardingTxExpired, hasCandidates, intentMatchesFilter, intentPageBounds, invoiceTarget, isAddressAllocationCapable, isArkContract, isBatchSignable, isBtcAddress, isContractGenericallySpendable, isCooperativelyMigratable, isDeterministicSigner, isDiscoverable, isHDAllocationCapable, isHDDeterministicSignCapable, isHDWalletCapable, isLightningInvoice, isLnurl, isMessageBusInitializingError, isMessageBusNotInitializedError, isPerArtifactDescriptor, isSigningIdentity, isSubdust, isTerminalIntentState, isValidArkAddress, isVtxoExpiringSoon, isVtxoForScript, isWatchedContract, logExcludedVtxos, makeHandle, matchServerCheckpoints, mergeChainedTxType, migrateWalletRepository, notifyExitObserved, onchainRail, openDatabase, outpointExclusion, outpointReasons, promisifyRequest, provisionClaimSecret, provisionRefundKey, requiresMigration, resolveBatchExpiryPolicy, resolveCheckpointExitDelayPolicy, resolveDescriptorSigner, resolvePrevTxs, resolveSendAmount, rollbackMigration, saveVtxosForContract, scriptFromArkAddress, selectCoinsWithAsset, selectVirtualCoins, serializeAssets, serializeExitPackage, serializeUtxo, serializeVtxo, setupServiceWorker, signAndSubmitOffchainTx, signerSetFromInfo, signingDescriptorIndex, strictSigningDescriptorIndex, toXOnlySignerHex, tryResolveSendAmount, validateBatchRecipients, validateConnectorsTxGraph, validateVtxoTxGraph, verifyTapscriptSignatures, waitForIncomingFunds, warnAndFilterVtxosForScript, withPrevTxs };
24076
+ //# sourceMappingURL=chunk-VTE3NYVD.js.map
24077
+ //# sourceMappingURL=chunk-VTE3NYVD.js.map