@arkade-os/sdk 0.4.40 → 0.4.42

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 (78) hide show
  1. package/README.md +24 -0
  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/{ark-BaZ6da8C.d.cts → ark-CKDWpuGL.d.cts} +95 -1
  9. package/dist/{ark-BaZ6da8C.d.ts → ark-CKDWpuGL.d.ts} +95 -1
  10. package/dist/{asyncStorageTaskQueue-CvV50MjV.d.ts → asyncStorageTaskQueue-BB2MffwG.d.ts} +2 -2
  11. package/dist/{asyncStorageTaskQueue-trKcQM7q.d.cts → asyncStorageTaskQueue-BpN8RRHR.d.cts} +2 -2
  12. package/dist/{chunk-SWJBV4UB.js → chunk-2V3BU2X6.js} +4 -4
  13. package/dist/{chunk-SWJBV4UB.js.map → chunk-2V3BU2X6.js.map} +1 -1
  14. package/dist/{chunk-GUTKJMSF.cjs → chunk-32YKLQPS.cjs} +29 -29
  15. package/dist/{chunk-GUTKJMSF.cjs.map → chunk-32YKLQPS.cjs.map} +1 -1
  16. package/dist/{chunk-GF6NPAOJ.js → chunk-5X5YMZHB.js} +4 -4
  17. package/dist/{chunk-GF6NPAOJ.js.map → chunk-5X5YMZHB.js.map} +1 -1
  18. package/dist/{chunk-OUVTG72A.js → chunk-BE5MUB7T.js} +5 -3
  19. package/dist/chunk-BE5MUB7T.js.map +1 -0
  20. package/dist/{chunk-I4Z6KKUH.cjs → chunk-ED7JDFX4.cjs} +366 -209
  21. package/dist/chunk-ED7JDFX4.cjs.map +1 -0
  22. package/dist/{chunk-5TSUGRHP.js → chunk-FLPPSRYH.js} +3 -3
  23. package/dist/{chunk-5TSUGRHP.js.map → chunk-FLPPSRYH.js.map} +1 -1
  24. package/dist/{chunk-TSG74BHI.cjs → chunk-HHPUCCB3.cjs} +7 -7
  25. package/dist/{chunk-TSG74BHI.cjs.map → chunk-HHPUCCB3.cjs.map} +1 -1
  26. package/dist/{chunk-CMPJR3HS.cjs → chunk-HXDZ2QTW.cjs} +5 -3
  27. package/dist/chunk-HXDZ2QTW.cjs.map +1 -0
  28. package/dist/{chunk-GWISMFO5.cjs → chunk-T2ACJD22.cjs} +14 -14
  29. package/dist/{chunk-GWISMFO5.cjs.map → chunk-T2ACJD22.cjs.map} +1 -1
  30. package/dist/{chunk-I2O4Q2EL.js → chunk-V3FCNVJE.js} +185 -31
  31. package/dist/chunk-V3FCNVJE.js.map +1 -0
  32. package/dist/{chunk-6EZY43WE.cjs → chunk-YEF5FL6E.cjs} +9 -9
  33. package/dist/{chunk-6EZY43WE.cjs.map → chunk-YEF5FL6E.cjs.map} +1 -1
  34. package/dist/{chunk-CUSABEUQ.js → chunk-YNEDJTX2.js} +3 -3
  35. package/dist/{chunk-CUSABEUQ.js.map → chunk-YNEDJTX2.js.map} +1 -1
  36. package/dist/contracts/handlers/index.cjs +7 -7
  37. package/dist/contracts/handlers/index.d.cts +3 -3
  38. package/dist/contracts/handlers/index.d.ts +3 -3
  39. package/dist/contracts/handlers/index.js +2 -2
  40. package/dist/{delegate-ClaZWxlA.d.ts → delegate-DllAQ3Eu.d.ts} +1 -1
  41. package/dist/{delegate-Bt5H1gbW.d.cts → delegate-yjhcR9n4.d.cts} +1 -1
  42. package/dist/{index-D6kIRfBy.d.cts → index-D1te-ZR6.d.cts} +2 -2
  43. package/dist/{index-ByYBDr1g.d.ts → index-DVdCGyyH.d.ts} +2 -2
  44. package/dist/index.cjs +157 -141
  45. package/dist/index.d.cts +11 -8
  46. package/dist/index.d.ts +11 -8
  47. package/dist/index.js +4 -4
  48. package/dist/repositories/realm/index.cjs +13 -13
  49. package/dist/repositories/realm/index.d.cts +1 -1
  50. package/dist/repositories/realm/index.d.ts +1 -1
  51. package/dist/repositories/realm/index.js +4 -4
  52. package/dist/repositories/sqlite/index.cjs +13 -13
  53. package/dist/repositories/sqlite/index.d.cts +1 -1
  54. package/dist/repositories/sqlite/index.d.ts +1 -1
  55. package/dist/repositories/sqlite/index.js +4 -4
  56. package/dist/{taskRunner-Bwss4MUW.d.ts → taskRunner-BdiRy4iI.d.ts} +2 -2
  57. package/dist/{taskRunner-D7SuOTOa.d.cts → taskRunner-CuTk8RYg.d.cts} +2 -2
  58. package/dist/wallet/expo/background.cjs +14 -14
  59. package/dist/wallet/expo/background.d.cts +3 -3
  60. package/dist/wallet/expo/background.d.ts +3 -3
  61. package/dist/wallet/expo/background.js +6 -6
  62. package/dist/wallet/expo/index.cjs +44 -14
  63. package/dist/wallet/expo/index.cjs.map +1 -1
  64. package/dist/wallet/expo/index.d.cts +14 -4
  65. package/dist/wallet/expo/index.d.ts +14 -4
  66. package/dist/wallet/expo/index.js +36 -6
  67. package/dist/wallet/expo/index.js.map +1 -1
  68. package/dist/{wallet-l-2dKXVh.d.ts → wallet-CrIVUQMb.d.ts} +15 -2
  69. package/dist/{wallet-V5C4Nlhz.d.cts → wallet-CyPOQ0oM.d.cts} +15 -2
  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 +1 -1
  75. package/dist/chunk-CMPJR3HS.cjs.map +0 -1
  76. package/dist/chunk-I2O4Q2EL.js.map +0 -1
  77. package/dist/chunk-I4Z6KKUH.cjs.map +0 -1
  78. package/dist/chunk-OUVTG72A.js.map +0 -1
@@ -1,6 +1,6 @@
1
- import { craftToSpendTx, Transaction, OP_RETURN_EMPTY_PKSCRIPT, baseFetch, Intent, getArkPsbtFields, CosignerPublicKey, setArkPsbtField, VtxoTaprootTree, maybeArkError, AssetRef, AssetId, AssetOutput, AssetGroup, AssetInput, Packet, Metadata, isEventSourceError, RestArkProvider, RestIndexerProvider, ArkError, BufferReader } from './chunk-GF6NPAOJ.js';
2
- import { isMainnetDescriptor, descriptorIsOurs, contractHandlers, DEFAULT_PAGE_SIZE, DelegateVtxo, WALLET_RECEIVE_SOURCE, deriveDescriptorLeafPubKey, DefaultVtxo, BoardingContractHandler } from './chunk-CUSABEUQ.js';
3
- import { VtxoScript, timelockToSequence, DEFAULT_NETWORK, DEFAULT_NETWORK_NAME, decodeTapscript, scriptFromTapLeafScript, CLTVMultisigTapscript, ArkAddress, CSVMultisigTapscript, getSequence, getNetwork, MultisigTapscript, networks as networks$1, DEFAULT_ARKADE_SERVER_URL } from './chunk-OUVTG72A.js';
1
+ import { craftToSpendTx, Transaction, OP_RETURN_EMPTY_PKSCRIPT, baseFetch, Intent, getArkPsbtFields, CosignerPublicKey, setArkPsbtField, VtxoTaprootTree, maybeArkError, AssetRef, AssetId, AssetOutput, AssetGroup, AssetInput, Packet, Metadata, isEventSourceError, RestArkProvider, RestIndexerProvider, ArkError, BufferReader } from './chunk-5X5YMZHB.js';
2
+ import { isMainnetDescriptor, descriptorIsOurs, contractHandlers, DEFAULT_PAGE_SIZE, DelegateVtxo, WALLET_RECEIVE_SOURCE, deriveDescriptorLeafPubKey, DefaultVtxo, BoardingContractHandler } from './chunk-YNEDJTX2.js';
3
+ import { VtxoScript, timelockToSequence, DEFAULT_NETWORK, DEFAULT_NETWORK_NAME, decodeTapscript, scriptFromTapLeafScript, CLTVMultisigTapscript, ArkAddress, CSVMultisigTapscript, getSequence, getNetwork, MultisigTapscript, networks as networks$1, DEFAULT_ARKADE_SERVER_URL } from './chunk-BE5MUB7T.js';
4
4
  import { sha256, hash160, sha256x2, concatBytes, randomPrivateKeyBytes, pubECDSA, pubSchnorr, equalBytes as equalBytes$1 } from '@scure/btc-signer/utils.js';
5
5
  import { SigHash, Script, p2tr, RawWitness, Address, OutScript, p2wpkh, TaprootControlBlock, DEFAULT_SEQUENCE, Transaction as Transaction$2 } from '@scure/btc-signer';
6
6
  import { hex, base58, base64 } from '@scure/base';
@@ -1678,6 +1678,122 @@ function validateAssetGroupOutput(packet, outputIndex, assetId, expectedAmount)
1678
1678
  }
1679
1679
  }
1680
1680
 
1681
+ // src/wallet/activity.ts
1682
+ async function buildActivities(txs, resolvers) {
1683
+ const preparedResolvers = (await Promise.all(
1684
+ resolvers.map(async (r) => {
1685
+ try {
1686
+ await r.prepare?.();
1687
+ return r;
1688
+ } catch {
1689
+ return void 0;
1690
+ }
1691
+ })
1692
+ )).filter((r) => r !== void 0);
1693
+ const keyOf = (tx) => tx.key.arkTxid || tx.key.commitmentTxid || tx.key.boardingTxid;
1694
+ const merge = (a, b) => ({
1695
+ groupId: a.groupId,
1696
+ label: a.label ?? b.label,
1697
+ kind: a.kind ?? b.kind,
1698
+ metadata: { ...b.metadata, ...a.metadata },
1699
+ amount: a.amount ?? b.amount
1700
+ });
1701
+ const isSent = (tx) => tx.type === "SENT" /* TxSent */;
1702
+ const signedAmount = (tx, amount = tx.amount) => {
1703
+ const magnitude = Math.abs(amount);
1704
+ return isSent(tx) ? -magnitude : magnitude;
1705
+ };
1706
+ const buckets = /* @__PURE__ */ new Map();
1707
+ for (const tx of txs) {
1708
+ const perGroup = /* @__PURE__ */ new Map();
1709
+ for (const r of preparedResolvers) {
1710
+ let ms;
1711
+ try {
1712
+ ms = r.resolve(tx);
1713
+ } catch {
1714
+ ms = void 0;
1715
+ }
1716
+ for (const m of ms ?? []) {
1717
+ if (!m.groupId) continue;
1718
+ if (m.amount !== void 0 && !Number.isFinite(m.amount)) continue;
1719
+ const existing = perGroup.get(m.groupId);
1720
+ perGroup.set(m.groupId, existing ? merge(existing, m) : { ...m });
1721
+ }
1722
+ }
1723
+ if (perGroup.size === 0) {
1724
+ const id = keyOf(tx);
1725
+ const b = buckets.get(id) ?? { members: [] };
1726
+ b.members.push({ tx, amount: signedAmount(tx) });
1727
+ buckets.set(id, b);
1728
+ continue;
1729
+ }
1730
+ for (const m of perGroup.values()) {
1731
+ const b = buckets.get(m.groupId) ?? { members: [] };
1732
+ b.intent = {
1733
+ label: b.intent?.label ?? m.label,
1734
+ kind: b.intent?.kind ?? m.kind,
1735
+ metadata: { ...m.metadata, ...b.intent?.metadata }
1736
+ };
1737
+ b.members.push({ tx, amount: signedAmount(tx, m.amount ?? tx.amount) });
1738
+ buckets.set(m.groupId, b);
1739
+ }
1740
+ }
1741
+ const netAmount = (members) => {
1742
+ const sentKeys = new Set(members.filter((x) => isSent(x.tx)).map((x) => keyOf(x.tx)));
1743
+ return members.reduce((s, x) => {
1744
+ if (!isSent(x.tx) && sentKeys.has(keyOf(x.tx))) return s;
1745
+ return s + x.amount;
1746
+ }, 0);
1747
+ };
1748
+ const latest = (a) => a.txs[a.txs.length - 1].createdAt;
1749
+ return [...buckets.entries()].map(([id, b]) => {
1750
+ const members = [...b.members].sort((x, y) => x.tx.createdAt - y.tx.createdAt);
1751
+ return {
1752
+ id,
1753
+ intent: b.intent,
1754
+ txs: members.map((x) => x.tx),
1755
+ amount: netAmount(members),
1756
+ createdAt: members[0].tx.createdAt,
1757
+ settled: members.every((x) => x.tx.settled)
1758
+ };
1759
+ }).sort((a, c) => latest(c) - latest(a));
1760
+ }
1761
+ var ActivityRegistry = class {
1762
+ resolvers = /* @__PURE__ */ new Map();
1763
+ /** Add a resolver, or override an existing one with the same id (kept in place). */
1764
+ use(resolver) {
1765
+ this.resolvers.set(resolver.id, resolver);
1766
+ }
1767
+ /** Remove a resolver (built-in or custom) by id. */
1768
+ remove(id) {
1769
+ this.resolvers.delete(id);
1770
+ }
1771
+ /** The registered resolver ids, in registration order. */
1772
+ list() {
1773
+ return [...this.resolvers.keys()];
1774
+ }
1775
+ /** All registered resolvers, in registration (priority) order. */
1776
+ all() {
1777
+ return [...this.resolvers.values()];
1778
+ }
1779
+ };
1780
+ function boardingResolver() {
1781
+ return {
1782
+ id: "boarding",
1783
+ resolve(tx) {
1784
+ if (!tx.key.boardingTxid) return void 0;
1785
+ return [
1786
+ { groupId: `boarding:${tx.key.boardingTxid}`, label: "Deposit", kind: "boarding" }
1787
+ ];
1788
+ }
1789
+ };
1790
+ }
1791
+ function createDefaultActivityRegistry() {
1792
+ const registry = new ActivityRegistry();
1793
+ registry.use(boardingResolver());
1794
+ return registry;
1795
+ }
1796
+
1681
1797
  // src/wallet/index.ts
1682
1798
  var TxType = /* @__PURE__ */ ((TxType2) => {
1683
1799
  TxType2["TxSent"] = "SENT";
@@ -5605,7 +5721,13 @@ async function openDatabase(dbName, dbVersion, initDatabase2) {
5605
5721
  reject(request.error);
5606
5722
  };
5607
5723
  request.onsuccess = () => {
5608
- resolve(request.result);
5724
+ const db = request.result;
5725
+ db.onversionchange = () => {
5726
+ db.close();
5727
+ dbCache.delete(dbName);
5728
+ refCounts.delete(dbName);
5729
+ };
5730
+ resolve(db);
5609
5731
  };
5610
5732
  request.onupgradeneeded = (event) => {
5611
5733
  const db = request.result;
@@ -6994,7 +7116,7 @@ var ContractWatcher = class {
6994
7116
  this.subscriptionId
6995
7117
  );
6996
7118
  } catch (error) {
6997
- const isStale = error instanceof Error && /subscription\s+\S+\s+not\s+found/i.test(error.message);
7119
+ const isStale = error instanceof Error && /subscription\b.*\bnot\s+found/i.test(error.message);
6998
7120
  if (this.subscriptionId && isStale) {
6999
7121
  this.subscriptionId = void 0;
7000
7122
  this.subscriptionId = await this.config.indexerProvider.subscribeForScripts(scriptsToWatch);
@@ -8655,6 +8777,8 @@ var ReadonlyWallet = class _ReadonlyWallet {
8655
8777
  // already on their way out. The set is in-memory only: a process crash
8656
8778
  // clears it, and a stale entry only hides a VTXO (never spends one).
8657
8779
  _pendingSpendOutpoints = /* @__PURE__ */ new Set();
8780
+ /** Activity resolvers consumed by {@link getActivityHistory}. */
8781
+ activity = createDefaultActivityRegistry();
8658
8782
  get assetManager() {
8659
8783
  return this._assetManager;
8660
8784
  }
@@ -8860,7 +8984,7 @@ var ReadonlyWallet = class _ReadonlyWallet {
8860
8984
  type: info.boardingExitDelay < 512n ? "blocks" : "seconds"
8861
8985
  };
8862
8986
  const serverPubKey = hex.decode(info.signerPubkey).slice(1);
8863
- const delegatePubKey = config.delegateProvider ? await config.delegateProvider.getDelegateInfo().then((info2) => hex.decode(info2.pubkey).slice(1)) : config.delegatorProvider ? await config.delegatorProvider.getDelegateInfo().then((info2) => hex.decode(info2.pubkey).slice(1)) : void 0;
8987
+ const delegatePubKey = config.delegateProvider ? await config.delegateProvider.getDelegateInfo().then((info2) => hex.decode(info2.pubkey).slice(1)).catch(() => void 0) : config.delegatorProvider ? await config.delegatorProvider.getDelegateInfo().then((info2) => hex.decode(info2.pubkey).slice(1)).catch(() => void 0) : void 0;
8864
8988
  const offchainOptions = {
8865
8989
  pubKey,
8866
8990
  serverPubKey,
@@ -9051,6 +9175,13 @@ var ReadonlyWallet = class _ReadonlyWallet {
9051
9175
  const getTxCreatedAt = (txid) => this.indexerProvider.getVtxos({ outpoints: [{ txid, vout: 0 }] }).then((res) => res.vtxos[0]?.createdAt.getTime());
9052
9176
  return buildTransactionHistory(allVtxos, boardingTxs, commitmentsToIgnore, getTxCreatedAt);
9053
9177
  }
9178
+ /**
9179
+ * Wallet history grouped by registered activity resolvers. With no resolver match,
9180
+ * rows bucket by transaction key so send/change pairs stay together.
9181
+ */
9182
+ async getActivityHistory() {
9183
+ return buildActivities(await this.getTransactionHistory(), this.activity.all());
9184
+ }
9054
9185
  /**
9055
9186
  * Clear the global VTXO sync cursor, forcing a full re-bootstrap on next sync.
9056
9187
  * Useful for recovery after indexer reprocessing or debugging.
@@ -9058,6 +9189,17 @@ var ReadonlyWallet = class _ReadonlyWallet {
9058
9189
  async clearSyncCursor() {
9059
9190
  await clearSyncCursor(this.walletRepository);
9060
9191
  }
9192
+ /**
9193
+ * Wipe all locally persisted wallet data (VTXOs, UTXOs, history, sync
9194
+ * cursor, contracts). Create a fresh wallet instance afterward.
9195
+ */
9196
+ async clear() {
9197
+ try {
9198
+ await this.dispose();
9199
+ } finally {
9200
+ await Promise.all([this.walletRepository.clear(), this.contractRepository.clear()]);
9201
+ }
9202
+ }
9061
9203
  /**
9062
9204
  * The on-chain (P2TR) addresses of every boarding tapscript this wallet
9063
9205
  * uses — the current address plus any historical rotated boarding
@@ -10536,6 +10678,9 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
10536
10678
  settlementPsbt = await this._signerRouter.sign(settlementPsbt, [
10537
10679
  { index: i, lookupScript: script }
10538
10680
  ]);
10681
+ if (!settlementPsbt.getInput(i).tapScriptSig?.length) {
10682
+ throw new Error(await this.unsignableBoardingInputError(input, script));
10683
+ }
10539
10684
  hasBoardingUtxos = true;
10540
10685
  break;
10541
10686
  }
@@ -10600,6 +10745,24 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
10600
10745
  );
10601
10746
  }
10602
10747
  }
10748
+ // Best-effort: every enrichment is guarded so a secondary failure can't
10749
+ // mask the original signing error.
10750
+ async unsignableBoardingInputError(input, script) {
10751
+ const scriptHex = hex.encode(script);
10752
+ let unresolvedAddress = "<undecodable>";
10753
+ try {
10754
+ unresolvedAddress = Address(this.network).encode(OutScript.decode(script));
10755
+ } catch {
10756
+ }
10757
+ let recognized = "<unavailable>";
10758
+ try {
10759
+ const current = await this.getBoardingAddress();
10760
+ const all = await this.getBoardingAddresses();
10761
+ recognized = `current=${current}; all=[${all.join(", ")}]`;
10762
+ } catch {
10763
+ }
10764
+ return `failed to sign boarding input ${input.txid}:${input.vout}: signer did not recognize script ${scriptHex} (${unresolvedAddress}); would have reached arkd unsigned and been rejected as "not a wallet script". Recognized boarding addresses: ${recognized}. Likely a rotated boarding address with a missing contract row.`;
10765
+ }
10603
10766
  /**
10604
10767
  * Create a batch event handler for settlement flows.
10605
10768
  *
@@ -13188,26 +13351,19 @@ var WalletMessageHandler = class {
13188
13351
  });
13189
13352
  return filteredVtxos;
13190
13353
  }
13354
+ /** Tear down handler subscriptions, then delegate the full wipe to the wallet. */
13191
13355
  async clear() {
13192
- if (!this.readonlyWallet) return;
13193
- if (this.incomingFundsSubscription) this.incomingFundsSubscription();
13356
+ const wallet = this.wallet ?? this.readonlyWallet;
13357
+ if (!wallet) return;
13358
+ if (this.incomingFundsSubscription) {
13359
+ this.incomingFundsSubscription();
13360
+ this.incomingFundsSubscription = void 0;
13361
+ }
13194
13362
  if (this.contractEventsSubscription) {
13195
13363
  this.contractEventsSubscription();
13196
13364
  this.contractEventsSubscription = void 0;
13197
13365
  }
13198
- try {
13199
- if (this.wallet) {
13200
- await this.wallet.dispose();
13201
- } else {
13202
- await this.readonlyWallet.dispose();
13203
- }
13204
- } catch (_) {
13205
- }
13206
- try {
13207
- await this.walletRepository?.clear();
13208
- } catch (_) {
13209
- console.warn("Failed to clear vtxos from wallet repository");
13210
- }
13366
+ await wallet.clear();
13211
13367
  this.wallet = void 0;
13212
13368
  this.readonlyWallet = void 0;
13213
13369
  this.arkProvider = void 0;
@@ -13498,6 +13654,7 @@ var ServiceWorkerReadonlyWallet = class _ServiceWorkerReadonlyWallet {
13498
13654
  walletRepository;
13499
13655
  contractRepository;
13500
13656
  identity;
13657
+ activity = createDefaultActivityRegistry();
13501
13658
  _readonlyAssetManager;
13502
13659
  initConfig = null;
13503
13660
  initWalletPayload = null;
@@ -13856,19 +14013,13 @@ var ServiceWorkerReadonlyWallet = class _ServiceWorkerReadonlyWallet {
13856
14013
  );
13857
14014
  }
13858
14015
  }
13859
- /** Clear cached wallet state from both the page and service worker storage. */
14016
+ /** This tells the service worker to wipe all locally persisted wallet data. */
13860
14017
  async clear() {
13861
14018
  const message = {
13862
14019
  id: getRandomId(),
13863
14020
  tag: this.messageTag,
13864
14021
  type: "CLEAR"
13865
14022
  };
13866
- try {
13867
- const address = await this.getAddress();
13868
- await this.walletRepository.deleteVtxos(address);
13869
- } catch (_) {
13870
- console.warn("Failed to clear vtxos from wallet repository");
13871
- }
13872
14023
  await this.sendMessage(message);
13873
14024
  }
13874
14025
  async getAddress() {
@@ -13941,6 +14092,9 @@ var ServiceWorkerReadonlyWallet = class _ServiceWorkerReadonlyWallet {
13941
14092
  throw new Error(`Failed to get status: ${error}`);
13942
14093
  }
13943
14094
  }
14095
+ async getActivityHistory() {
14096
+ return buildActivities(await this.getTransactionHistory(), this.activity.all());
14097
+ }
13944
14098
  async getTransactionHistory() {
13945
14099
  const message = {
13946
14100
  id: getRandomId(),
@@ -15944,6 +16098,6 @@ function isArkContract(str) {
15944
16098
  return str.startsWith(ARKCONTRACT_PREFIX + "=");
15945
16099
  }
15946
16100
 
15947
- export { ArkNote, AssetManager, BIP322, Batch, ContractManager, ContractRepositoryImpl, ContractWatcher, DB_VERSION, DEFAULT_MESSAGE_TIMEOUTS, DelegateManagerImpl, DelegateNotConfiguredError, DelegatorManagerImpl, DelegatorNotConfiguredError, DescriptorSigningProviderMissingError, DustChangeError, ELECTRUM_TCP_HOST, ELECTRUM_WS_URL, ESPLORA_URL, ElectrumOnchainProvider, EsploraProvider, Estimator, HDDescriptorProvider, InMemoryContractRepository, InMemoryWalletRepository, IndexedDBContractRepository, IndexedDBWalletRepository, MESSAGE_BUS_INITIALIZING, MESSAGE_BUS_NOT_INITIALIZED, MIGRATION_KEY, MessageBus, MessageBusInitializingError, MessageBusNotInitializedError, MissingSigningDescriptorError, MnemonicIdentity, OnchainWallet, P2A, Ramps, ReadonlyAssetManager, ReadonlyDescriptorIdentity, ReadonlySingleKey, ReadonlyWallet, ReadonlyWalletError, RestDelegateProvider, RestDelegatorProvider, SeedIdentity, ServiceWorkerReadonlyWallet, ServiceWorkerTimeoutError, ServiceWorkerWallet, SingleKey, TxTree, TxType, TxWeightEstimator, Unroll, VtxoManager, Wallet2 as Wallet, WalletMessageHandler, WalletNotInitializedError, WalletRepositoryImpl, WsElectrumChainSource, buildForfeitTx, buildOffchainTx, classifyAgainstSignerSet, classifyContractSigner, closeDatabase, combineTapscriptSigs, contractFromArkContract, contractFromArkContractWithAddress, decodeArkContract, deserializeAssets, deserializeUtxo, deserializeVtxo, encodeArkContract, extendVirtualCoinForContract, getMigrationStatus, getRandomId, hasBoardingTxExpired, isArkContract, isBatchSignable, isCooperativelyMigratable, isDiscoverable, isExpired, isRecoverable, isSpendable, isSubdust, isValidArkAddress, isVtxoExpiringSoon, isVtxoForScript, migrateWalletRepository, openDatabase, requiresMigration, rollbackMigration, saveVtxosForContract, scriptFromArkAddress, serializeAssets, serializeUtxo, serializeVtxo, setupServiceWorker, signerSetFromInfo, toXOnlySignerHex, validateConnectorsTxGraph, validateVtxoTxGraph, verifyTapscriptSignatures, waitForIncomingFunds, warnAndFilterVtxosForScript };
15948
- //# sourceMappingURL=chunk-I2O4Q2EL.js.map
15949
- //# sourceMappingURL=chunk-I2O4Q2EL.js.map
16101
+ export { ActivityRegistry, ArkNote, AssetManager, BIP322, Batch, ContractManager, ContractRepositoryImpl, ContractWatcher, DB_VERSION, DEFAULT_MESSAGE_TIMEOUTS, DelegateManagerImpl, DelegateNotConfiguredError, DelegatorManagerImpl, DelegatorNotConfiguredError, DescriptorSigningProviderMissingError, DustChangeError, ELECTRUM_TCP_HOST, ELECTRUM_WS_URL, ESPLORA_URL, ElectrumOnchainProvider, EsploraProvider, Estimator, HDDescriptorProvider, InMemoryContractRepository, InMemoryWalletRepository, IndexedDBContractRepository, IndexedDBWalletRepository, MESSAGE_BUS_INITIALIZING, MESSAGE_BUS_NOT_INITIALIZED, MIGRATION_KEY, MessageBus, MessageBusInitializingError, MessageBusNotInitializedError, MissingSigningDescriptorError, MnemonicIdentity, OnchainWallet, P2A, Ramps, ReadonlyAssetManager, ReadonlyDescriptorIdentity, ReadonlySingleKey, ReadonlyWallet, ReadonlyWalletError, RestDelegateProvider, RestDelegatorProvider, SeedIdentity, ServiceWorkerReadonlyWallet, ServiceWorkerTimeoutError, ServiceWorkerWallet, SingleKey, TxTree, TxType, TxWeightEstimator, Unroll, VtxoManager, Wallet2 as Wallet, WalletMessageHandler, WalletNotInitializedError, WalletRepositoryImpl, WsElectrumChainSource, boardingResolver, buildForfeitTx, buildOffchainTx, classifyAgainstSignerSet, classifyContractSigner, closeDatabase, combineTapscriptSigs, contractFromArkContract, contractFromArkContractWithAddress, createDefaultActivityRegistry, decodeArkContract, deserializeAssets, deserializeUtxo, deserializeVtxo, encodeArkContract, extendVirtualCoinForContract, getMigrationStatus, getRandomId, hasBoardingTxExpired, isArkContract, isBatchSignable, isCooperativelyMigratable, isDiscoverable, isExpired, isRecoverable, isSpendable, isSubdust, isValidArkAddress, isVtxoExpiringSoon, isVtxoForScript, migrateWalletRepository, openDatabase, requiresMigration, rollbackMigration, saveVtxosForContract, scriptFromArkAddress, serializeAssets, serializeUtxo, serializeVtxo, setupServiceWorker, signerSetFromInfo, toXOnlySignerHex, validateConnectorsTxGraph, validateVtxoTxGraph, verifyTapscriptSignatures, waitForIncomingFunds, warnAndFilterVtxosForScript };
16102
+ //# sourceMappingURL=chunk-V3FCNVJE.js.map
16103
+ //# sourceMappingURL=chunk-V3FCNVJE.js.map