@arkade-os/sdk 0.4.68 → 0.5.0-rc.0

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-DaZlVTbM.d.ts → asyncStorageTaskQueue-BCzN3Y45.d.ts} +1 -1
  9. package/dist/{asyncStorageTaskQueue-B2CcXIHU.d.cts → asyncStorageTaskQueue-CdF_ELX8.d.cts} +1 -1
  10. package/dist/{chunk-WCJVKFAP.cjs → chunk-5MJHZHG7.cjs} +726 -468
  11. package/dist/chunk-5MJHZHG7.cjs.map +1 -0
  12. package/dist/{chunk-EJOFL5WH.cjs → chunk-6AFUNKK7.cjs} +19 -7
  13. package/dist/chunk-6AFUNKK7.cjs.map +1 -0
  14. package/dist/{chunk-VBHXBI7F.js → chunk-6F2Q32KA.js} +298 -41
  15. package/dist/chunk-6F2Q32KA.js.map +1 -0
  16. package/dist/{chunk-GQ4NMQGR.js → chunk-ABJPM4JF.js} +4 -4
  17. package/dist/{chunk-GQ4NMQGR.js.map → chunk-ABJPM4JF.js.map} +1 -1
  18. package/dist/{chunk-PJR63FTK.cjs → chunk-CZ32XADN.cjs} +17 -17
  19. package/dist/{chunk-PJR63FTK.cjs.map → chunk-CZ32XADN.cjs.map} +1 -1
  20. package/dist/{chunk-33Q2RFET.js → chunk-FVTJJQNM.js} +3 -3
  21. package/dist/{chunk-33Q2RFET.js.map → chunk-FVTJJQNM.js.map} +1 -1
  22. package/dist/{chunk-6YUACVX4.cjs → chunk-HL7EC2Z5.cjs} +52 -53
  23. package/dist/chunk-HL7EC2Z5.cjs.map +1 -0
  24. package/dist/{chunk-G4I6PU5H.js → chunk-JYP7YXT2.js} +4 -4
  25. package/dist/{chunk-G4I6PU5H.js.map → chunk-JYP7YXT2.js.map} +1 -1
  26. package/dist/{chunk-45FKMOJH.js → chunk-KTU44AEH.js} +6 -7
  27. package/dist/chunk-KTU44AEH.js.map +1 -0
  28. package/dist/{chunk-4KCVS4ZN.cjs → chunk-PB5KJI4U.cjs} +10 -10
  29. package/dist/{chunk-4KCVS4ZN.cjs.map → chunk-PB5KJI4U.cjs.map} +1 -1
  30. package/dist/{chunk-4CMXV5SF.js → chunk-PPG6W34P.js} +18 -8
  31. package/dist/chunk-PPG6W34P.js.map +1 -0
  32. package/dist/{chunk-JGMSZIE4.cjs → chunk-RXWKCEZP.cjs} +17 -17
  33. package/dist/{chunk-JGMSZIE4.cjs.map → chunk-RXWKCEZP.cjs.map} +1 -1
  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-Bffc5f54.d.cts → delegate-DLIOBQ5x.d.cts} +1 -1
  39. package/dist/{delegate-AomVWxO_.d.ts → delegate-Dyn5L80J.d.ts} +1 -1
  40. package/dist/{hdWalletCapable-B5nRs3RH.d.cts → hdWalletCapable-D9tooZ6F.d.ts} +102 -27
  41. package/dist/{hdWalletCapable-DZdIVa23.d.ts → hdWalletCapable-Dt3MUiGE.d.cts} +102 -27
  42. package/dist/{index-jouvy8FD.d.ts → index-D3hmsuKs.d.cts} +6 -6
  43. package/dist/{index-nfyQM33h.d.cts → index-D9tXd-tN.d.ts} +6 -6
  44. package/dist/{index-C7RZCfoY.d.cts → index-Udm5V2xW.d.cts} +168 -19
  45. package/dist/{index-C7RZCfoY.d.ts → index-Udm5V2xW.d.ts} +168 -19
  46. package/dist/index.cjs +306 -290
  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-D2vnpPBT.d.cts → taskRunner-DxZciNaa.d.cts} +1 -1
  59. package/dist/{taskRunner-DuwK9t8O.d.ts → taskRunner-ZdS16Ypm.d.ts} +1 -1
  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-45FKMOJH.js.map +0 -1
  76. package/dist/chunk-4CMXV5SF.js.map +0 -1
  77. package/dist/chunk-6YUACVX4.cjs.map +0 -1
  78. package/dist/chunk-EJOFL5WH.cjs.map +0 -1
  79. package/dist/chunk-VBHXBI7F.js.map +0 -1
  80. package/dist/chunk-WCJVKFAP.cjs.map +0 -1
@@ -1,6 +1,6 @@
1
- import { AssetId, AssetGroup, AssetInput, AssetOutput, Metadata, Packet, BufferReader, BufferWriter, AssetRef, RestIndexerProvider } from './chunk-33Q2RFET.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-45FKMOJH.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-4CMXV5SF.js';
1
+ import { AssetId, AssetGroup, AssetInput, AssetOutput, Metadata, Packet, BufferReader, BufferWriter, AssetRef, RestIndexerProvider } from './chunk-FVTJJQNM.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-KTU44AEH.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, networkFromArkadeInfo, toVirtualStatus, ArkError, TapTreeCoder, resolveTimeHeight, canSpendOffchain, parseLegacyExpiry, isExpired, INFO_FETCH_TIMEOUT_MS, PrevoutTxField, ProviderUnavailableError, DEFAULT_ARKADE_SERVER_URL, networks as networks$1, isPastExpiry, fetchVtxoCreatedAtByTxid } from './chunk-PPG6W34P.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';
@@ -3651,7 +3651,7 @@ function isValidArkAddress2(address) {
3651
3651
  return false;
3652
3652
  }
3653
3653
  }
3654
- function assertRecipientArkAddress(encoded, address, context) {
3654
+ function assertRecipientArkadeAddress(encoded, address, context) {
3655
3655
  if (address.hrp !== context.hrp) {
3656
3656
  throw new Error(
3657
3657
  `Invalid Arkade address ${encoded}: expected prefix "${context.hrp}", got "${address.hrp}"`
@@ -3694,7 +3694,7 @@ function validateRecipients(recipients, dustAmount, context) {
3694
3694
  } catch (e) {
3695
3695
  throw new Error(`Invalid Arkade address: ${recipient.address}`);
3696
3696
  }
3697
- assertRecipientArkAddress(recipient.address, address, context);
3697
+ assertRecipientArkadeAddress(recipient.address, address, context);
3698
3698
  const amount = recipient.amount || dustAmount;
3699
3699
  if (amount <= 0) {
3700
3700
  throw new Error("Amount must be positive");
@@ -4585,7 +4585,7 @@ var VtxoManager = class _VtxoManager {
4585
4585
  }
4586
4586
  /**
4587
4587
  * Core migration routine shared by the manual API and the automatic poll
4588
- * pass. Fetches a fresh {@link ArkInfo}, applies a mid-session signer
4588
+ * pass. Fetches a fresh {@link ArkadeInfo}, applies a mid-session signer
4589
4589
  * rotation when the wallet's own snapshot signer has been deprecated,
4590
4590
  * selects spendable VTXOs under deprecated-signer contracts (cutoff-first),
4591
4591
  * and settles them to the active-signer Ark address.
@@ -6368,12 +6368,12 @@ async function saveArkInfoSnapshot(repo, info, savedAt) {
6368
6368
  }
6369
6369
  }));
6370
6370
  }
6371
- async function resolveArkInfo(arkProvider, walletRepository) {
6371
+ async function resolveArkInfo(arkProvider, walletRepository, opts) {
6372
6372
  let info;
6373
6373
  try {
6374
6374
  info = await arkProvider.getInfo();
6375
6375
  } catch (err) {
6376
- if (!isRetryableProviderError(err)) throw err;
6376
+ if (opts?.requireLive || !isRetryableProviderError(err)) throw err;
6377
6377
  const snapshot = await loadArkInfoSnapshot(walletRepository);
6378
6378
  if (!snapshot) {
6379
6379
  throw new ProviderUnavailableError(
@@ -12140,10 +12140,11 @@ var ArkadeCashCreateError = class extends Error {
12140
12140
  cause;
12141
12141
  };
12142
12142
  var ReadonlyWallet = class _ReadonlyWallet {
12143
- constructor(identity, network, onchainProvider, indexerProvider, arkServerPublicKey, offchainTapscript, boardingTapscript, dustAmount, walletRepository, contractRepository, delegateProvider, watcherConfig, walletContractTimelocks) {
12143
+ constructor(identity, network, onchainProvider, arkProvider, indexerProvider, arkServerPublicKey, offchainTapscript, boardingTapscript, dustAmount, walletRepository, contractRepository, delegateProvider, watcherConfig, walletContractTimelocks) {
12144
12144
  this.identity = identity;
12145
12145
  this.network = network;
12146
12146
  this.onchainProvider = onchainProvider;
12147
+ this.arkProvider = arkProvider;
12147
12148
  this.indexerProvider = indexerProvider;
12148
12149
  this.dustAmount = dustAmount;
12149
12150
  this.walletRepository = walletRepository;
@@ -12169,6 +12170,7 @@ var ReadonlyWallet = class _ReadonlyWallet {
12169
12170
  identity;
12170
12171
  network;
12171
12172
  onchainProvider;
12173
+ arkProvider;
12172
12174
  indexerProvider;
12173
12175
  dustAmount;
12174
12176
  walletRepository;
@@ -12236,14 +12238,19 @@ var ReadonlyWallet = class _ReadonlyWallet {
12236
12238
  */
12237
12239
  _arkServerPublicKey;
12238
12240
  /**
12239
- * Whether this wallet was constructed from live operator server-info
12240
- * (`"live"`) or from a cached snapshot because the operator was unreachable
12241
- * (`"cache"`). Freshness signal for {@link getProviderConnectionState}.
12241
+ * Whether the LATEST server-info resolution answered live (`"live"`) or
12242
+ * from the cached snapshot because the operator was unreachable
12243
+ * (`"cache"`). Seeded at construction and updated by every
12244
+ * {@link getArkadeInfo} read, so a wallet that booted offline and
12245
+ * recovered stops reporting degraded — and one that just fell back stops
12246
+ * claiming online. Freshness signal for
12247
+ * {@link getProviderConnectionState}.
12242
12248
  */
12243
12249
  _serverInfoSource = "live";
12244
12250
  /**
12245
- * Epoch-ms of the last known live operator contact: construction time on the
12246
- * `live` boot path, the cached snapshot's `savedAt` on the `cache` path.
12251
+ * Epoch-ms of the last known live operator contact: the most recent live
12252
+ * resolution (construction or a later {@link getArkadeInfo}), or the
12253
+ * cached snapshot's `savedAt` when the latest resolution fell back.
12247
12254
  */
12248
12255
  _serverInfoLastOnlineAt;
12249
12256
  /** @see {@link _serverInfoSource} */
@@ -12251,13 +12258,15 @@ var ReadonlyWallet = class _ReadonlyWallet {
12251
12258
  return this._serverInfoSource;
12252
12259
  }
12253
12260
  /**
12254
- * Composed provider-connection freshness: the boot server-info source
12255
- * (Arkade) combined with the contract-manager's indexer-sync health, if the
12256
- * manager has been initialized. Reads no live provider state — it never
12257
- * forces a `ContractManager` to constructso it is safe for readonly
12258
- * callers that only use address/balance APIs.
12261
+ * Composed provider-connection freshness: the LATEST server-info
12262
+ * resolution (boot, or any later {@link getArkadeInfo} read) combined with
12263
+ * the contract-manager's indexer-sync health, if the manager has been
12264
+ * initialized. Reads no live provider state — it never forces a
12265
+ * `ContractManager` to construct so it is safe for readonly callers
12266
+ * that only use address/balance APIs.
12259
12267
  *
12260
- * - Boot fell back to a cached snapshot → degraded on `arkade` (`cache`).
12268
+ * - Latest resolution fell back to the cached snapshot → degraded on
12269
+ * `arkade` (`cache`).
12261
12270
  * - Otherwise, if the contract manager has degraded to repository data →
12262
12271
  * degraded on `indexer` (`repository`).
12263
12272
  * - Otherwise online.
@@ -12303,7 +12312,7 @@ var ReadonlyWallet = class _ReadonlyWallet {
12303
12312
  }
12304
12313
  /**
12305
12314
  * x-only hex of the operator's deprecated signer keys (from
12306
- * `ArkInfo.deprecatedSigners`), cached for the OFFLINE read/watch paths.
12315
+ * `ArkadeInfo.deprecatedSigners`), cached for the OFFLINE read/watch paths.
12307
12316
  * The boarding watch/history surfaces ({@link getBoardingAddresses},
12308
12317
  * {@link getBoardingTxs}) fan out over {current} ∪ this set so a deposit at
12309
12318
  * a boarding address minted under a now-rotated operator signer keeps being
@@ -12378,6 +12387,64 @@ var ReadonlyWallet = class _ReadonlyWallet {
12378
12387
  get arkServerPublicKey() {
12379
12388
  return this._arkServerPublicKey;
12380
12389
  }
12390
+ /**
12391
+ * Server info for the Arkade server this wallet is connected to, resolved
12392
+ * exactly as construction resolves it: live wins, a retryable failure
12393
+ * falls back to the snapshot persisted at boot, a terminal one propagates.
12394
+ *
12395
+ * Live rather than the pinned boot snapshot because the fields callers
12396
+ * come here for — `signerPubkey`, `checkpointTapscript`, `fees` — are the
12397
+ * ones a mid-session rotation moves, and a covenant built against a
12398
+ * superseded signer is unspendable.
12399
+ *
12400
+ * One rotation caveat: reading does NOT re-pin the wallet —
12401
+ * {@link arkServerPublicKey}, {@link dustAmount} and the tapscripts move
12402
+ * only through `handleServerInfoChanged`/`rotateServerSigner` — so inside
12403
+ * a rotation window this can report epoch N+1 while the wallet still
12404
+ * spends on N. The window closes on its own: a read that observes a moved
12405
+ * digest makes the provider emit `onServerInfoChanged`, which is what
12406
+ * drives that rotation. A caller about to bind the answer into a covenant
12407
+ * passes `{ requireLive: true }` and fails closed instead of receiving
12408
+ * the boot snapshot.
12409
+ *
12410
+ * @returns The Arkade server's info
12411
+ * @see ArkadeInfo
12412
+ */
12413
+ async getArkadeInfo(opts) {
12414
+ const { info, source, lastOnlineAt } = await resolveArkInfo(
12415
+ this.arkProvider,
12416
+ this.walletRepository,
12417
+ opts
12418
+ );
12419
+ this._serverInfoSource = source;
12420
+ if (source === "live") {
12421
+ this._serverInfoLastOnlineAt = Date.now();
12422
+ } else if (lastOnlineAt !== void 0) {
12423
+ this._serverInfoLastOnlineAt = lastOnlineAt;
12424
+ }
12425
+ return info;
12426
+ }
12427
+ /**
12428
+ * Chain reads against this wallet's server for scripts it does not own.
12429
+ *
12430
+ * Binds the wallet's own `indexerProvider` — which may be an Expo or
12431
+ * injected one that a caller's hand-built `RestIndexerProvider` would
12432
+ * silently bypass. `getVtxos` goes through
12433
+ * {@link getNormalizedVtxos}, which is what makes every VTXO leaving the
12434
+ * seam carry its canonical facts.
12435
+ *
12436
+ * A bound object rather than the provider itself, so an `IReadonlyWallet`
12437
+ * holder gets `getVtxos`/`getVirtualTxs` and nothing else at runtime.
12438
+ * (`indexerProvider` is still public on the concrete classes, unlike
12439
+ * `arkProvider`, so this narrows the interface rather than the field.)
12440
+ */
12441
+ async getArkadeReader() {
12442
+ const indexer = this.indexerProvider;
12443
+ return {
12444
+ getVtxos: (opts) => getNormalizedVtxos(indexer, opts),
12445
+ getVirtualTxs: (txids, opts) => indexer.getVirtualTxs(txids, opts)
12446
+ };
12447
+ }
12381
12448
  /**
12382
12449
  * The wallet's current boarding tapscript (the on-chain onboarding
12383
12450
  * target). Read-only from the outside; mutated only via
@@ -12456,7 +12523,7 @@ var ReadonlyWallet = class _ReadonlyWallet {
12456
12523
  source: serverInfoSource,
12457
12524
  lastOnlineAt: serverInfoLastOnlineAt
12458
12525
  } = await resolveArkInfo(arkProvider, walletRepository);
12459
- const network = getNetwork(info.network);
12526
+ const network = networkFromArkadeInfo(info);
12460
12527
  if ("descriptor" in config.identity) {
12461
12528
  const descriptor = config.identity.descriptor;
12462
12529
  const identityIsMainnet = !descriptor.includes("tpub");
@@ -12546,6 +12613,7 @@ var ReadonlyWallet = class _ReadonlyWallet {
12546
12613
  config.identity,
12547
12614
  setup.network,
12548
12615
  setup.onchainProvider,
12616
+ setup.arkProvider,
12549
12617
  setup.indexerProvider,
12550
12618
  setup.serverPubKey,
12551
12619
  setup.offchainTapscript,
@@ -13393,6 +13461,7 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
13393
13461
  identity,
13394
13462
  network,
13395
13463
  onchainProvider,
13464
+ arkProvider,
13396
13465
  indexerProvider,
13397
13466
  arkServerPublicKey,
13398
13467
  offchainTapscript,
@@ -13404,7 +13473,6 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
13404
13473
  watcherConfig,
13405
13474
  walletContractTimelocks
13406
13475
  );
13407
- this.arkProvider = arkProvider;
13408
13476
  this.forfeitOutputScript = forfeitOutputScript;
13409
13477
  this.forfeitPubkey = forfeitPubkey;
13410
13478
  this.batchExpiryPolicy = batchExpiryPolicy;
@@ -13438,7 +13506,6 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
13438
13506
  boardingPkScript: boardingTapscript.pkScript
13439
13507
  });
13440
13508
  }
13441
- arkProvider;
13442
13509
  forfeitOutputScript;
13443
13510
  forfeitPubkey;
13444
13511
  batchExpiryPolicy;
@@ -13601,7 +13668,7 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
13601
13668
  /**
13602
13669
  * Output script for checkpoint transactions, decoded from the server's
13603
13670
  * `checkpointTapscript`. Server-controlled state: pinned at construction
13604
- * and re-sourced from a fresh `ArkInfo` on server-signer rotation. Read it
13671
+ * and re-sourced from a fresh `ArkadeInfo` on server-signer rotation. Read it
13605
13672
  * through {@link serverUnrollScript}; write it only through
13606
13673
  * {@link setServerUnrollScriptForRotation}.
13607
13674
  */
@@ -13612,7 +13679,7 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
13612
13679
  /**
13613
13680
  * @internal Sole write path for `serverUnrollScript` after construction.
13614
13681
  * Called by {@link Wallet._doRotateServerSigner} with the checkpoint script
13615
- * sourced from the fresh `ArkInfo` that triggered the rotation, so the send
13682
+ * sourced from the fresh `ArkadeInfo` that triggered the rotation, so the send
13616
13683
  * path builds checkpoints against the new server epoch. External code must
13617
13684
  * treat `serverUnrollScript` as read-only.
13618
13685
  */
@@ -14244,6 +14311,21 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
14244
14311
  /** @deprecated Use settlementConfig instead */
14245
14312
  renewalConfig;
14246
14313
  settlementConfig;
14314
+ /**
14315
+ * Broadcast access bound to this wallet's server, so a plugin needs only
14316
+ * the wallet.
14317
+ *
14318
+ * Defined here and not on {@link ReadonlyWallet} for the same reason
14319
+ * `arkProvider` is protected there: a readonly wallet, and every
14320
+ * `toReadonly()` view, must not be able to submit.
14321
+ */
14322
+ async getArkadeBroadcaster() {
14323
+ const ark = this.arkProvider;
14324
+ return {
14325
+ submitTx: (signedArkTx, checkpointTxs) => ark.submitTx(signedArkTx, checkpointTxs),
14326
+ finalizeTx: (arkTxid, finalCheckpointTxs) => ark.finalizeTx(arkTxid, finalCheckpointTxs)
14327
+ };
14328
+ }
14247
14329
  get assetManager() {
14248
14330
  this._walletAssetManager ??= new AssetManager(this);
14249
14331
  return this._walletAssetManager;
@@ -14423,6 +14505,7 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
14423
14505
  readonlyIdentity,
14424
14506
  this.network,
14425
14507
  this.onchainProvider,
14508
+ this.arkProvider,
14426
14509
  this.indexerProvider,
14427
14510
  this.arkServerPublicKey,
14428
14511
  this.offchainTapscript,
@@ -14475,7 +14558,7 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
14475
14558
  changeAmount: BigInt(changeAmount)
14476
14559
  };
14477
14560
  const outputAddress = ArkAddress.decode(params.address);
14478
- assertRecipientArkAddress(
14561
+ assertRecipientArkadeAddress(
14479
14562
  params.address,
14480
14563
  outputAddress,
14481
14564
  this.recipientAddressContext(serverPubKey)
@@ -14628,7 +14711,7 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
14628
14711
  }
14629
14712
  if (arkAddress) {
14630
14713
  recipientContext ??= this.recipientAddressContext();
14631
- assertRecipientArkAddress(output.address, arkAddress, recipientContext);
14714
+ assertRecipientArkadeAddress(output.address, arkAddress, recipientContext);
14632
14715
  script = arkAddress.pkScript;
14633
14716
  hasOffchainOutputs = true;
14634
14717
  } else {
@@ -16832,6 +16915,9 @@ var MessageBus = class {
16832
16915
  });
16833
16916
  return;
16834
16917
  }
16918
+ if (response.error instanceof Error && !response.errorName) {
16919
+ response.errorName = response.error.name;
16920
+ }
16835
16921
  source.postMessage(response);
16836
16922
  }
16837
16923
  /**
@@ -17425,6 +17511,49 @@ var WalletMessageHandler = class {
17425
17511
  payload: { address }
17426
17512
  });
17427
17513
  }
17514
+ case "GET_ARKADE_INFO": {
17515
+ const { payload } = message;
17516
+ const info = await this.readonlyWallet.getArkadeInfo(payload);
17517
+ return this.tagged({
17518
+ id,
17519
+ type: "ARKADE_INFO",
17520
+ payload: { info }
17521
+ });
17522
+ }
17523
+ case "INDEXER_GET_VTXOS": {
17524
+ const { opts } = message.payload;
17525
+ const reader = await this.readonlyWallet.getArkadeReader();
17526
+ return this.tagged({
17527
+ id,
17528
+ type: "INDEXER_VTXOS",
17529
+ payload: await reader.getVtxos(opts)
17530
+ });
17531
+ }
17532
+ case "INDEXER_GET_VIRTUAL_TXS": {
17533
+ const { txids, opts } = message.payload;
17534
+ const reader = await this.readonlyWallet.getArkadeReader();
17535
+ return this.tagged({
17536
+ id,
17537
+ type: "INDEXER_VIRTUAL_TXS",
17538
+ payload: await reader.getVirtualTxs(txids, opts)
17539
+ });
17540
+ }
17541
+ case "SUBMIT_TX": {
17542
+ const { signedArkTx, checkpointTxs } = message.payload;
17543
+ const broadcaster = await this.requireWallet().getArkadeBroadcaster();
17544
+ const result = await broadcaster.submitTx(signedArkTx, checkpointTxs);
17545
+ return this.tagged({
17546
+ id,
17547
+ type: "SUBMIT_TX_SUCCESS",
17548
+ payload: result
17549
+ });
17550
+ }
17551
+ case "FINALIZE_TX": {
17552
+ const { arkTxid, finalCheckpointTxs } = message.payload;
17553
+ const broadcaster = await this.requireWallet().getArkadeBroadcaster();
17554
+ await broadcaster.finalizeTx(arkTxid, finalCheckpointTxs);
17555
+ return this.tagged({ id, type: "FINALIZE_TX_SUCCESS" });
17556
+ }
17428
17557
  case "GET_BALANCE": {
17429
17558
  const balance = await this.handleGetBalance();
17430
17559
  return this.tagged({
@@ -18316,6 +18445,13 @@ var WalletMessageHandler = class {
18316
18445
 
18317
18446
  // src/wallet/serviceWorker/wallet.ts
18318
18447
  var sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
18448
+ var restoreErrorName = (response) => {
18449
+ const error = response.error;
18450
+ if (response.errorName && error instanceof Error && error.name !== response.errorName) {
18451
+ error.name = response.errorName;
18452
+ }
18453
+ return error;
18454
+ };
18319
18455
  var INIT_WAIT_BACKOFF_CAP_MS = 2e3;
18320
18456
  var MAX_INIT_WAITS = 8;
18321
18457
  var initWaitBackoffMs = (attempt) => Math.min(100 * 2 ** attempt, INIT_WAIT_BACKOFF_CAP_MS);
@@ -18338,6 +18474,14 @@ var DEFAULT_MESSAGE_TIMEOUTS = {
18338
18474
  GET_USED_SIGNING_DESCRIPTORS: 2e4,
18339
18475
  ADVANCE_SIGNING_DESCRIPTOR_WATERMARK: 1e4,
18340
18476
  // Medium reads — may involve indexer queries
18477
+ // A live `/v1/info` fetch queued behind the same per-origin rate gate as
18478
+ // the indexer, not a repository read. Derived from the fetch's own abort
18479
+ // budget so the worker's snapshot fallback stays reachable before this
18480
+ // page deadline fires — lowering it below the budget would time the page
18481
+ // out while the worker is still seconds from answering from cache.
18482
+ GET_ARKADE_INFO: INFO_FETCH_TIMEOUT_MS + 8e3,
18483
+ INDEXER_GET_VTXOS: 2e4,
18484
+ INDEXER_GET_VIRTUAL_TXS: 2e4,
18341
18485
  GET_VTXOS: 2e4,
18342
18486
  GET_SPENDABLE_VTXOS: 2e4,
18343
18487
  GET_BOARDING_UTXOS: 2e4,
@@ -18360,6 +18504,10 @@ var DEFAULT_MESSAGE_TIMEOUTS = {
18360
18504
  SEND_BITCOIN: 5e4,
18361
18505
  SEND: 5e4,
18362
18506
  SETTLE: 5e4,
18507
+ // Broadcast: the server round-trip a spend ends in, so it belongs
18508
+ // with the writes rather than the reads above.
18509
+ SUBMIT_TX: 5e4,
18510
+ FINALIZE_TX: 5e4,
18363
18511
  ISSUE: 5e4,
18364
18512
  REISSUE: 5e4,
18365
18513
  BURN: 5e4,
@@ -18386,6 +18534,9 @@ var DEFAULT_MESSAGE_TIMEOUTS = {
18386
18534
  };
18387
18535
  var DEDUPABLE_REQUEST_TYPES = /* @__PURE__ */ new Set([
18388
18536
  "GET_ADDRESS",
18537
+ "GET_ARKADE_INFO",
18538
+ "INDEXER_GET_VTXOS",
18539
+ "INDEXER_GET_VIRTUAL_TXS",
18389
18540
  "GET_BALANCE",
18390
18541
  "GET_BOARDING_ADDRESS",
18391
18542
  "GET_BOARDING_UTXOS",
@@ -18477,7 +18628,7 @@ var initializeMessageBus = (serviceWorker, config, timeoutMs = 2e3) => {
18477
18628
  if (response?.id !== initCmd.id) return;
18478
18629
  cleanup();
18479
18630
  if (response.error) {
18480
- reject(response.error);
18631
+ reject(restoreErrorName(response));
18481
18632
  } else {
18482
18633
  resolve();
18483
18634
  }
@@ -18649,7 +18800,7 @@ var ServiceWorkerReadonlyWallet = class _ServiceWorkerReadonlyWallet {
18649
18800
  }
18650
18801
  cleanup();
18651
18802
  if (response.error) {
18652
- reject(response.error);
18803
+ reject(restoreErrorName(response));
18653
18804
  } else {
18654
18805
  resolve(response);
18655
18806
  }
@@ -18675,7 +18826,7 @@ var ServiceWorkerReadonlyWallet = class _ServiceWorkerReadonlyWallet {
18675
18826
  if (request.id !== response.id) return;
18676
18827
  if (response.error) {
18677
18828
  cleanup();
18678
- reject(response.error);
18829
+ reject(restoreErrorName(response));
18679
18830
  return;
18680
18831
  }
18681
18832
  if (isComplete(response)) {
@@ -18901,6 +19052,68 @@ var ServiceWorkerReadonlyWallet = class _ServiceWorkerReadonlyWallet {
18901
19052
  throw new Error(`Failed to get boarding address: ${error}`);
18902
19053
  }
18903
19054
  }
19055
+ /**
19056
+ * Delegated to the worker, which holds the wallet that owns the connection.
19057
+ * The payload crosses raw — see {@link ResponseGetArkadeInfo} for why.
19058
+ */
19059
+ async getArkadeInfo(opts) {
19060
+ const message = {
19061
+ id: getRandomId(),
19062
+ tag: this.messageTag,
19063
+ type: "GET_ARKADE_INFO",
19064
+ // omitted entirely for the default read: wire-shape hygiene
19065
+ // toward workers built before the option existed. (Dedup is
19066
+ // unaffected either way — the key is JSON.stringify, which drops
19067
+ // undefined-valued properties.)
19068
+ ...opts?.requireLive ? { payload: { requireLive: true } } : {}
19069
+ };
19070
+ try {
19071
+ const response = await this.sendMessage(message);
19072
+ return response.payload.info;
19073
+ } catch (error) {
19074
+ throw new Error(`Failed to get arkade info: ${error}`, { cause: error });
19075
+ }
19076
+ }
19077
+ /**
19078
+ * An {@link ArkadeReader} that speaks to the worker rather than to the
19079
+ * server. The page holds no provider, so a caller that built its own from a
19080
+ * URL would open a second connection outside the worker's rate gate and
19081
+ * caches — this proxy is what keeps chain reads in one place.
19082
+ */
19083
+ async getArkadeReader() {
19084
+ return {
19085
+ getVtxos: async (opts) => {
19086
+ const message = {
19087
+ id: getRandomId(),
19088
+ tag: this.messageTag,
19089
+ type: "INDEXER_GET_VTXOS",
19090
+ payload: { opts }
19091
+ };
19092
+ try {
19093
+ const response = await this.sendMessage(message);
19094
+ const { vtxos, page } = response.payload;
19095
+ return { vtxos: vtxos.map(normalizeVtxo), page: page && { ...page } };
19096
+ } catch (error) {
19097
+ throw new Error(`Failed to get vtxos: ${error}`, { cause: error });
19098
+ }
19099
+ },
19100
+ getVirtualTxs: async (txids, opts) => {
19101
+ const message = {
19102
+ id: getRandomId(),
19103
+ tag: this.messageTag,
19104
+ type: "INDEXER_GET_VIRTUAL_TXS",
19105
+ payload: { txids, opts }
19106
+ };
19107
+ try {
19108
+ const response = await this.sendMessage(message);
19109
+ const { txs, page } = response.payload;
19110
+ return { txs: [...txs], page: page && { ...page } };
19111
+ } catch (error) {
19112
+ throw new Error(`Failed to get virtual txs: ${error}`, { cause: error });
19113
+ }
19114
+ }
19115
+ };
19116
+ }
18904
19117
  async getBalance() {
18905
19118
  const message = {
18906
19119
  id: getRandomId(),
@@ -19557,6 +19770,43 @@ var ServiceWorkerWallet = class _ServiceWorkerWallet extends ServiceWorkerReadon
19557
19770
  async signerForDescriptor(descriptor) {
19558
19771
  return resolveDescriptorSigner(descriptor, this.identity);
19559
19772
  }
19773
+ /**
19774
+ * An {@link ArkadeBroadcaster} proxied to the worker, which holds the
19775
+ * provider. Only `ServiceWorkerWallet` offers one: a readonly worker
19776
+ * refuses `SUBMIT_TX`/`FINALIZE_TX` outright, so exposing it on the
19777
+ * readonly class would promise something the boundary rejects.
19778
+ */
19779
+ async getArkadeBroadcaster() {
19780
+ return {
19781
+ submitTx: async (signedArkTx, checkpointTxs) => {
19782
+ const message = {
19783
+ id: getRandomId(),
19784
+ tag: this.messageTag,
19785
+ type: "SUBMIT_TX",
19786
+ payload: { signedArkTx, checkpointTxs }
19787
+ };
19788
+ try {
19789
+ const response = await this.sendMessage(message);
19790
+ return response.payload;
19791
+ } catch (error) {
19792
+ throw new Error(`Failed to submit tx: ${error}`, { cause: error });
19793
+ }
19794
+ },
19795
+ finalizeTx: async (arkTxid, finalCheckpointTxs) => {
19796
+ const message = {
19797
+ id: getRandomId(),
19798
+ tag: this.messageTag,
19799
+ type: "FINALIZE_TX",
19800
+ payload: { arkTxid, finalCheckpointTxs }
19801
+ };
19802
+ try {
19803
+ await this.sendMessage(message);
19804
+ } catch (error) {
19805
+ throw new Error(`Failed to finalize tx: ${error}`, { cause: error });
19806
+ }
19807
+ }
19808
+ };
19809
+ }
19560
19810
  async sendBitcoin(params) {
19561
19811
  const message = {
19562
19812
  id: getRandomId(),
@@ -23055,8 +23305,14 @@ var ArkadeTransactionBuilder = class {
23055
23305
  if (!client.identity) {
23056
23306
  throw new Error("a signing identity is required for non-covenant spends");
23057
23307
  }
23308
+ const ark = client.arkProvider;
23309
+ if (!ark.submitTx || !ark.finalizeTx) {
23310
+ throw new Error(
23311
+ "broadcasting requires an `arkade` provider with `submitTx`/`finalizeTx` on the Arkade client"
23312
+ );
23313
+ }
23058
23314
  const signedArk = await this.signArk(arkTx, userInputs);
23059
- const res = await client.arkProvider.submitTx(
23315
+ const res = await ark.submitTx(
23060
23316
  base64.encode(signedArk.toPSBT()),
23061
23317
  checkpoints.map((c) => base64.encode(c.toPSBT()))
23062
23318
  );
@@ -23067,7 +23323,7 @@ var ArkadeTransactionBuilder = class {
23067
23323
  async ({ server }) => base64.encode((await client.identity.sign(server, [0])).toPSBT())
23068
23324
  )
23069
23325
  );
23070
- await client.arkProvider.finalizeTx(res.arkTxid, finalCps);
23326
+ await ark.finalizeTx(res.arkTxid, finalCps);
23071
23327
  return {
23072
23328
  txid: res.arkTxid,
23073
23329
  signedArkTx: res.finalArkTx,
@@ -23155,6 +23411,7 @@ var BIP21Error = /* @__PURE__ */ ((BIP21Error2) => {
23155
23411
  BIP21Error2["INVALID_ADDRESS"] = "Invalid address";
23156
23412
  return BIP21Error2;
23157
23413
  })(BIP21Error || {});
23414
+ var ARK_HRP = /^(?:t?ark|T?ARK)/;
23158
23415
  var BIP21 = class _BIP21 {
23159
23416
  /**
23160
23417
  * Create a BIP21 URI from the provided parameters.
@@ -23178,7 +23435,7 @@ var BIP21 = class _BIP21 {
23178
23435
  }
23179
23436
  queryParams[key] = value;
23180
23437
  } else if (key === "ark") {
23181
- if (typeof value === "string" && (value.startsWith("ark") || value.startsWith("tark"))) {
23438
+ if (typeof value === "string" && ARK_HRP.test(value)) {
23182
23439
  queryParams[key] = value;
23183
23440
  } else {
23184
23441
  console.warn("Invalid ARK address format");
@@ -23198,7 +23455,7 @@ var BIP21 = class _BIP21 {
23198
23455
  Object.entries(queryParams).map(([k, v]) => [k, String(v)])
23199
23456
  )
23200
23457
  ).toString() : "";
23201
- return `bitcoin:${address ? address.toLowerCase() : ""}${query}`;
23458
+ return `bitcoin:${address ?? ""}${query}`;
23202
23459
  }
23203
23460
  /**
23204
23461
  * Integer-sats amount encoded in a BIP21 URI (`amount=` is BTC), or
@@ -23231,7 +23488,7 @@ var BIP21 = class _BIP21 {
23231
23488
  const [address, query] = withoutPrefix.split("?");
23232
23489
  const params = {};
23233
23490
  if (address) {
23234
- params.address = address.toLowerCase();
23491
+ params.address = address;
23235
23492
  }
23236
23493
  if (query) {
23237
23494
  const queryParams = new URLSearchParams(query);
@@ -23247,7 +23504,7 @@ var BIP21 = class _BIP21 {
23247
23504
  }
23248
23505
  params[key] = amount;
23249
23506
  } else if (key === "ark") {
23250
- if (value.startsWith("ark") || value.startsWith("tark")) {
23507
+ if (ARK_HRP.test(value)) {
23251
23508
  params[key] = value;
23252
23509
  } else {
23253
23510
  console.warn("Invalid ARK address format");
@@ -23499,7 +23756,7 @@ function onchainRail() {
23499
23756
  function createDefaultPaymentRouter(wallet) {
23500
23757
  return new PaymentRouter({
23501
23758
  wallet,
23502
- prefs: { priority: ["ark", "lightning", "onchain"] }
23759
+ prefs: { priority: ["ark", "onchain"] }
23503
23760
  }).use(arkRail()).use(onchainRail());
23504
23761
  }
23505
23762
  /*! Bundled license information:
@@ -23508,6 +23765,6 @@ function createDefaultPaymentRouter(wallet) {
23508
23765
  (*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) *)
23509
23766
  */
23510
23767
 
23511
- export { ARKADE_MAGIC, ARKADE_SALTED_PREIMAGE_TAG, ARKADE_SWAP_PREIMAGE_TAG, 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 };
23512
- //# sourceMappingURL=chunk-VBHXBI7F.js.map
23513
- //# sourceMappingURL=chunk-VBHXBI7F.js.map
23768
+ export { ARKADE_MAGIC, ARKADE_SALTED_PREIMAGE_TAG, ARKADE_SWAP_PREIMAGE_TAG, 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 };
23769
+ //# sourceMappingURL=chunk-6F2Q32KA.js.map
23770
+ //# sourceMappingURL=chunk-6F2Q32KA.js.map