@arkade-os/sdk 0.4.14 → 0.4.16

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 (203) hide show
  1. package/README.md +287 -215
  2. package/dist/cjs/arkfee/estimator.js +1 -1
  3. package/dist/cjs/arkfee/types.js +2 -1
  4. package/dist/cjs/arknote/index.js +43 -4
  5. package/dist/cjs/bip322/index.js +1 -1
  6. package/dist/cjs/contracts/arkcontract.js +1 -1
  7. package/dist/cjs/contracts/contractManager.js +40 -24
  8. package/dist/cjs/contracts/contractWatcher.js +29 -22
  9. package/dist/cjs/contracts/handlers/default.js +1 -1
  10. package/dist/cjs/contracts/handlers/delegate.js +1 -1
  11. package/dist/cjs/contracts/handlers/helpers.js +25 -1
  12. package/dist/cjs/contracts/handlers/vhtlc.js +2 -4
  13. package/dist/cjs/extension/asset/assetGroup.js +92 -5
  14. package/dist/cjs/extension/asset/assetId.js +67 -3
  15. package/dist/cjs/extension/asset/assetInput.js +18 -0
  16. package/dist/cjs/extension/asset/assetOutput.js +15 -0
  17. package/dist/cjs/extension/asset/assetRef.js +66 -0
  18. package/dist/cjs/extension/asset/metadata.js +15 -0
  19. package/dist/cjs/extension/asset/packet.js +4 -1
  20. package/dist/cjs/extension/index.js +1 -1
  21. package/dist/cjs/forfeit.js +14 -0
  22. package/dist/cjs/identity/index.js +6 -0
  23. package/dist/cjs/identity/seedIdentity.js +5 -5
  24. package/dist/cjs/identity/singleKey.js +4 -0
  25. package/dist/cjs/index.js +5 -3
  26. package/dist/cjs/intent/index.js +28 -12
  27. package/dist/cjs/providers/ark.js +3 -2
  28. package/dist/cjs/providers/delegator.js +20 -1
  29. package/dist/cjs/providers/expoArk.js +2 -2
  30. package/dist/cjs/providers/indexer.js +2 -2
  31. package/dist/cjs/providers/onchain.js +2 -1
  32. package/dist/cjs/repositories/realm/schemas.js +2 -2
  33. package/dist/cjs/repositories/realm/types.js +1 -1
  34. package/dist/cjs/script/address.js +37 -6
  35. package/dist/cjs/script/base.js +70 -1
  36. package/dist/cjs/script/default.js +3 -0
  37. package/dist/cjs/script/delegate.js +4 -0
  38. package/dist/cjs/script/tapscript.js +25 -4
  39. package/dist/cjs/script/vhtlc.js +35 -27
  40. package/dist/cjs/storage/fileSystem.js +1 -1
  41. package/dist/cjs/storage/inMemory.js +1 -1
  42. package/dist/cjs/storage/indexedDB.js +1 -1
  43. package/dist/cjs/storage/localStorage.js +1 -1
  44. package/dist/cjs/tree/validation.js +1 -1
  45. package/dist/cjs/utils/arkTransaction.js +5 -5
  46. package/dist/cjs/utils/bip21.js +16 -3
  47. package/dist/cjs/utils/syncCursors.js +4 -4
  48. package/dist/cjs/utils/transaction.js +1 -1
  49. package/dist/cjs/utils/transactionHistory.js +11 -11
  50. package/dist/cjs/utils/unknownFields.js +3 -3
  51. package/dist/cjs/wallet/asset-manager.js +4 -4
  52. package/dist/cjs/wallet/batch.js +5 -5
  53. package/dist/cjs/wallet/delegator.js +9 -8
  54. package/dist/cjs/wallet/expo/background.js +3 -3
  55. package/dist/cjs/wallet/expo/wallet.js +7 -7
  56. package/dist/cjs/wallet/index.js +43 -0
  57. package/dist/cjs/wallet/onchain.js +43 -5
  58. package/dist/cjs/wallet/ramps.js +44 -14
  59. package/dist/cjs/wallet/serviceWorker/wallet-message-handler.js +22 -22
  60. package/dist/cjs/wallet/serviceWorker/wallet.js +28 -24
  61. package/dist/cjs/wallet/unroll.js +12 -8
  62. package/dist/cjs/wallet/utils.js +1 -1
  63. package/dist/cjs/wallet/vtxo-manager.js +123 -82
  64. package/dist/cjs/wallet/wallet.js +231 -98
  65. package/dist/cjs/worker/expo/asyncStorageTaskQueue.js +1 -1
  66. package/dist/cjs/worker/expo/processors/contractPollProcessor.js +2 -2
  67. package/dist/cjs/worker/expo/taskRunner.js +3 -3
  68. package/dist/cjs/worker/messageBus.js +3 -0
  69. package/dist/esm/arkfee/estimator.js +1 -1
  70. package/dist/esm/arkfee/types.js +2 -1
  71. package/dist/esm/arknote/index.js +43 -4
  72. package/dist/esm/bip322/index.js +1 -1
  73. package/dist/esm/contracts/arkcontract.js +1 -1
  74. package/dist/esm/contracts/contractManager.js +40 -24
  75. package/dist/esm/contracts/contractWatcher.js +29 -22
  76. package/dist/esm/contracts/handlers/default.js +1 -1
  77. package/dist/esm/contracts/handlers/delegate.js +1 -1
  78. package/dist/esm/contracts/handlers/helpers.js +24 -1
  79. package/dist/esm/contracts/handlers/vhtlc.js +3 -5
  80. package/dist/esm/extension/asset/assetGroup.js +92 -5
  81. package/dist/esm/extension/asset/assetId.js +67 -3
  82. package/dist/esm/extension/asset/assetInput.js +18 -0
  83. package/dist/esm/extension/asset/assetOutput.js +15 -0
  84. package/dist/esm/extension/asset/assetRef.js +66 -0
  85. package/dist/esm/extension/asset/metadata.js +15 -0
  86. package/dist/esm/extension/asset/packet.js +4 -1
  87. package/dist/esm/extension/index.js +1 -1
  88. package/dist/esm/forfeit.js +14 -0
  89. package/dist/esm/identity/index.js +5 -0
  90. package/dist/esm/identity/seedIdentity.js +5 -5
  91. package/dist/esm/identity/singleKey.js +4 -0
  92. package/dist/esm/index.js +3 -2
  93. package/dist/esm/intent/index.js +28 -12
  94. package/dist/esm/providers/ark.js +3 -2
  95. package/dist/esm/providers/delegator.js +20 -1
  96. package/dist/esm/providers/expoArk.js +2 -2
  97. package/dist/esm/providers/indexer.js +2 -2
  98. package/dist/esm/providers/onchain.js +2 -1
  99. package/dist/esm/repositories/realm/schemas.js +2 -2
  100. package/dist/esm/repositories/realm/types.js +1 -1
  101. package/dist/esm/script/address.js +37 -6
  102. package/dist/esm/script/base.js +70 -1
  103. package/dist/esm/script/default.js +3 -0
  104. package/dist/esm/script/delegate.js +4 -0
  105. package/dist/esm/script/tapscript.js +25 -4
  106. package/dist/esm/script/vhtlc.js +35 -27
  107. package/dist/esm/storage/fileSystem.js +1 -1
  108. package/dist/esm/storage/inMemory.js +1 -1
  109. package/dist/esm/storage/indexedDB.js +1 -1
  110. package/dist/esm/storage/localStorage.js +1 -1
  111. package/dist/esm/tree/validation.js +1 -1
  112. package/dist/esm/utils/arkTransaction.js +5 -5
  113. package/dist/esm/utils/bip21.js +16 -3
  114. package/dist/esm/utils/syncCursors.js +4 -4
  115. package/dist/esm/utils/transaction.js +1 -1
  116. package/dist/esm/utils/transactionHistory.js +11 -11
  117. package/dist/esm/utils/unknownFields.js +3 -3
  118. package/dist/esm/wallet/asset-manager.js +4 -4
  119. package/dist/esm/wallet/batch.js +5 -5
  120. package/dist/esm/wallet/delegator.js +9 -8
  121. package/dist/esm/wallet/expo/background.js +3 -3
  122. package/dist/esm/wallet/expo/wallet.js +7 -7
  123. package/dist/esm/wallet/index.js +43 -0
  124. package/dist/esm/wallet/onchain.js +43 -5
  125. package/dist/esm/wallet/ramps.js +44 -14
  126. package/dist/esm/wallet/serviceWorker/wallet-message-handler.js +22 -22
  127. package/dist/esm/wallet/serviceWorker/wallet.js +28 -24
  128. package/dist/esm/wallet/unroll.js +12 -8
  129. package/dist/esm/wallet/utils.js +1 -1
  130. package/dist/esm/wallet/vtxo-manager.js +122 -81
  131. package/dist/esm/wallet/wallet.js +232 -99
  132. package/dist/esm/worker/expo/asyncStorageTaskQueue.js +1 -1
  133. package/dist/esm/worker/expo/processors/contractPollProcessor.js +2 -2
  134. package/dist/esm/worker/expo/taskRunner.js +3 -3
  135. package/dist/esm/worker/messageBus.js +3 -0
  136. package/dist/types/arkfee/estimator.d.ts +1 -1
  137. package/dist/types/arkfee/types.d.ts +2 -1
  138. package/dist/types/arknote/index.d.ts +44 -4
  139. package/dist/types/bip322/index.d.ts +1 -1
  140. package/dist/types/contracts/arkcontract.d.ts +1 -1
  141. package/dist/types/contracts/contractManager.d.ts +40 -63
  142. package/dist/types/contracts/contractWatcher.d.ts +39 -18
  143. package/dist/types/contracts/handlers/default.d.ts +1 -1
  144. package/dist/types/contracts/handlers/delegate.d.ts +1 -1
  145. package/dist/types/contracts/handlers/helpers.d.ts +11 -1
  146. package/dist/types/contracts/types.d.ts +36 -26
  147. package/dist/types/extension/asset/assetGroup.d.ts +92 -1
  148. package/dist/types/extension/asset/assetId.d.ts +67 -3
  149. package/dist/types/extension/asset/assetInput.d.ts +18 -0
  150. package/dist/types/extension/asset/assetOutput.d.ts +15 -0
  151. package/dist/types/extension/asset/assetRef.d.ts +66 -0
  152. package/dist/types/extension/asset/metadata.d.ts +15 -0
  153. package/dist/types/extension/asset/packet.d.ts +4 -1
  154. package/dist/types/extension/index.d.ts +1 -1
  155. package/dist/types/forfeit.d.ts +14 -0
  156. package/dist/types/identity/index.d.ts +36 -0
  157. package/dist/types/identity/seedIdentity.d.ts +10 -8
  158. package/dist/types/identity/singleKey.d.ts +4 -0
  159. package/dist/types/index.d.ts +3 -3
  160. package/dist/types/intent/index.d.ts +19 -6
  161. package/dist/types/providers/ark.d.ts +40 -2
  162. package/dist/types/providers/delegator.d.ts +54 -1
  163. package/dist/types/providers/expoArk.d.ts +2 -2
  164. package/dist/types/providers/indexer.d.ts +105 -2
  165. package/dist/types/providers/onchain.d.ts +62 -1
  166. package/dist/types/repositories/realm/schemas.d.ts +2 -2
  167. package/dist/types/repositories/realm/types.d.ts +2 -2
  168. package/dist/types/repositories/walletRepository.d.ts +16 -0
  169. package/dist/types/script/address.d.ts +35 -2
  170. package/dist/types/script/base.d.ts +66 -1
  171. package/dist/types/script/default.d.ts +3 -0
  172. package/dist/types/script/delegate.d.ts +4 -0
  173. package/dist/types/script/tapscript.d.ts +17 -2
  174. package/dist/types/script/vhtlc.d.ts +35 -27
  175. package/dist/types/storage/fileSystem.d.ts +1 -1
  176. package/dist/types/storage/inMemory.d.ts +1 -1
  177. package/dist/types/storage/index.d.ts +1 -1
  178. package/dist/types/storage/indexedDB.d.ts +1 -1
  179. package/dist/types/storage/localStorage.d.ts +1 -1
  180. package/dist/types/utils/arkTransaction.d.ts +3 -3
  181. package/dist/types/utils/bip21.d.ts +17 -0
  182. package/dist/types/utils/syncCursors.d.ts +4 -4
  183. package/dist/types/utils/transaction.d.ts +1 -1
  184. package/dist/types/utils/transactionHistory.d.ts +3 -3
  185. package/dist/types/utils/unknownFields.d.ts +5 -5
  186. package/dist/types/wallet/asset-manager.d.ts +3 -3
  187. package/dist/types/wallet/batch.d.ts +27 -7
  188. package/dist/types/wallet/delegator.d.ts +10 -0
  189. package/dist/types/wallet/expo/background.d.ts +4 -4
  190. package/dist/types/wallet/expo/wallet.d.ts +10 -10
  191. package/dist/types/wallet/index.d.ts +457 -25
  192. package/dist/types/wallet/onchain.d.ts +42 -4
  193. package/dist/types/wallet/ramps.d.ts +40 -10
  194. package/dist/types/wallet/serviceWorker/wallet-message-handler.d.ts +4 -4
  195. package/dist/types/wallet/serviceWorker/wallet.d.ts +71 -33
  196. package/dist/types/wallet/unroll.d.ts +8 -6
  197. package/dist/types/wallet/vtxo-manager.d.ts +146 -93
  198. package/dist/types/wallet/wallet.d.ts +91 -33
  199. package/dist/types/worker/expo/asyncStorageTaskQueue.d.ts +1 -1
  200. package/dist/types/worker/expo/processors/contractPollProcessor.d.ts +1 -1
  201. package/dist/types/worker/expo/taskRunner.d.ts +6 -6
  202. package/dist/types/worker/messageBus.d.ts +5 -3
  203. package/package.json +18 -10
@@ -182,6 +182,13 @@ class ServiceWorkerReadonlyWallet {
182
182
  getTimeoutForRequest(request) {
183
183
  return this.messageTimeouts[request.type] ?? 30000;
184
184
  }
185
+ /**
186
+ * Create a readonly service-worker wallet bound to an already-registered worker.
187
+ *
188
+ * @param options - Service worker, identity, and backend configuration
189
+ * @returns Initialized readonly service-worker wallet
190
+ * @throws Error if service-worker initialization fails
191
+ */
185
192
  static async create(options) {
186
193
  const walletRepository = options.storage?.walletRepository ??
187
194
  new repositories_1.IndexedDBWalletRepository();
@@ -242,23 +249,17 @@ class ServiceWorkerReadonlyWallet {
242
249
  return wallet;
243
250
  }
244
251
  /**
245
- * Simplified setup method that handles service worker registration,
246
- * identity creation, and wallet initialization automatically.
252
+ * Simplified setup method that handles service worker registration
253
+ * and wallet initialization automatically.
254
+ *
255
+ * @see ServiceWorkerReadonlyWallet.create
247
256
  *
248
257
  * @example
249
258
  * ```typescript
250
- * // One-liner setup - handles everything automatically!
251
259
  * const wallet = await ServiceWorkerReadonlyWallet.setup({
252
260
  * serviceWorkerPath: '/service-worker.js',
253
- * arkServerUrl: 'https://mutinynet.arkade.sh'
254
- * });
255
- *
256
- * // With custom readonly identity
257
- * const identity = ReadonlySingleKey.fromPublicKey('your_public_key_hex');
258
- * const wallet = await ServiceWorkerReadonlyWallet.setup({
259
- * serviceWorkerPath: '/service-worker.js',
260
- * arkServerUrl: 'https://mutinynet.arkade.sh',
261
- * identity
261
+ * arkServerUrl: 'https://arkade.computer',
262
+ * identity: ReadonlySingleKey.fromPublicKey('your_public_key_hex')
262
263
  * });
263
264
  * ```
264
265
  */
@@ -460,6 +461,7 @@ class ServiceWorkerReadonlyWallet {
460
461
  });
461
462
  return this.reinitPromise;
462
463
  }
464
+ /** Clear cached wallet state from both the page and service worker storage. */
463
465
  async clear() {
464
466
  const message = {
465
467
  id: (0, utils_2.getRandomId)(),
@@ -532,6 +534,11 @@ class ServiceWorkerReadonlyWallet {
532
534
  throw new Error(`Failed to get boarding UTXOs: ${error}`);
533
535
  }
534
536
  }
537
+ /**
538
+ * Return service-worker wallet status, including connectivity and sync state.
539
+ *
540
+ * @returns Current service-worker wallet status payload including `walletInitalized` and `xOnlyPublicKey`
541
+ */
535
542
  async getStatus() {
536
543
  const message = {
537
544
  id: (0, utils_2.getRandomId)(),
@@ -576,6 +583,11 @@ class ServiceWorkerReadonlyWallet {
576
583
  throw new Error(`Failed to get vtxos: ${error}`);
577
584
  }
578
585
  }
586
+ /**
587
+ * Trigger a wallet reload inside the service worker.
588
+ *
589
+ * @returns `true` when the wallet was reloaded
590
+ */
579
591
  async reload() {
580
592
  const message = {
581
593
  id: (0, utils_2.getRandomId)(),
@@ -855,23 +867,15 @@ class ServiceWorkerWallet extends ServiceWorkerReadonlyWallet {
855
867
  return wallet;
856
868
  }
857
869
  /**
858
- * Simplified setup method that handles service worker registration,
859
- * identity creation, and wallet initialization automatically.
870
+ * Simplified setup method that handles service worker registration
871
+ * and wallet initialization automatically.
860
872
  *
861
873
  * @example
862
874
  * ```typescript
863
- * // One-liner setup - handles everything automatically!
864
- * const wallet = await ServiceWorkerWallet.setup({
865
- * serviceWorkerPath: '/service-worker.js',
866
- * arkServerUrl: 'https://mutinynet.arkade.sh'
867
- * });
868
- *
869
- * // With custom identity
870
- * const identity = SingleKey.fromHex('your_private_key_hex');
871
875
  * const wallet = await ServiceWorkerWallet.setup({
872
876
  * serviceWorkerPath: '/service-worker.js',
873
- * arkServerUrl: 'https://mutinynet.arkade.sh',
874
- * identity
877
+ * arkServerUrl: 'https://arkade.computer',
878
+ * identity: MnemonicIdentity.fromMnemonic('abandon abandon...')
875
879
  * });
876
880
  * ```
877
881
  */
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Unroll = void 0;
4
4
  const base_1 = require("@scure/base");
5
5
  const btc_signer_1 = require("@scure/btc-signer");
6
+ const helpers_1 = require("../contracts/handlers/helpers");
6
7
  const indexer_1 = require("../providers/indexer");
7
8
  const base_2 = require("../script/base");
8
9
  const txSizeEstimator_1 = require("../utils/txSizeEstimator");
@@ -18,7 +19,7 @@ var Unroll;
18
19
  StepType[StepType["DONE"] = 2] = "DONE";
19
20
  })(StepType = Unroll.StepType || (Unroll.StepType = {}));
20
21
  /**
21
- * Manages the unrolling process of a VTXO back to the Bitcoin blockchain.
22
+ * Manages the unrolling process of a virtual output back to the Bitcoin blockchain.
22
23
  *
23
24
  * The Session class implements an async iterator that processes the unrolling steps:
24
25
  * 1. **WAIT**: Waits for a transaction to be confirmed onchain (if it's in mempool)
@@ -42,19 +43,21 @@ var Unroll;
42
43
  * console.log(`Broadcasting transaction ${doneStep.tx.id}`);
43
44
  * break;
44
45
  * case Unroll.StepType.DONE:
45
- * console.log(`Unrolling complete for VTXO ${doneStep.vtxoTxid}`);
46
+ * console.log(`Unrolling complete for virtual output ${doneStep.vtxoTxid}`);
46
47
  * break;
47
48
  * }
48
49
  * }
49
50
  * ```
50
51
  **/
51
52
  class Session {
53
+ /** Create an unroll session from a virtual output outpoint and its dependency chain. */
52
54
  constructor(toUnroll, bumper, explorer, indexer) {
53
55
  this.toUnroll = toUnroll;
54
56
  this.bumper = bumper;
55
57
  this.explorer = explorer;
56
58
  this.indexer = indexer;
57
59
  }
60
+ /** Create an unroll session by loading the virtual output chain from the indexer. */
58
61
  static async create(toUnroll, bumper, explorer, indexer) {
59
62
  const { chain } = await indexer.getVtxoChain(toUnroll);
60
63
  return new Session({ ...toUnroll, chain }, bumper, explorer, indexer);
@@ -123,7 +126,7 @@ var Unroll;
123
126
  });
124
127
  }
125
128
  else {
126
- // finalize ark transaction
129
+ // finalize Arkade transaction
127
130
  tx.finalize();
128
131
  }
129
132
  return {
@@ -153,11 +156,11 @@ var Unroll;
153
156
  }
154
157
  Unroll.Session = Session;
155
158
  /**
156
- * Complete the unroll of a VTXO by broadcasting the transaction that spends the CSV path.
157
- * @param wallet the wallet owning the VTXO(s)
158
- * @param vtxoTxids the txids of the VTXO(s) to complete unroll
159
+ * Complete the unroll of a virtual output by broadcasting the transaction that spends the CSV path.
160
+ * @param wallet the wallet owning the virtual output(s)
161
+ * @param vtxoTxids the txids of the virtual output(s) to complete unroll
159
162
  * @param outputAddress the address to send the unrolled funds to
160
- * @throws if the VTXO(s) are not fully unrolled, if the txids are not found, if the tx is not confirmed, if no exit path is found or not available
163
+ * @throws if the virtual output(s) are not fully unrolled, if the txids are not found, if the tx is not confirmed, if no exit path is found or not available
161
164
  * @returns the txid of the transaction spending the unrolled funds
162
165
  */
163
166
  async function completeUnroll(wallet, vtxoTxids, outputAddress) {
@@ -187,11 +190,12 @@ var Unroll;
187
190
  throw new Error(`spending leaf not found for vtxo ${vtxo.txid}:${vtxo.vout}`);
188
191
  }
189
192
  totalAmount += BigInt(vtxo.value);
193
+ const sequence = (0, helpers_1.timelockToSequence)(exit.params.timelock);
190
194
  inputs.push({
191
195
  txid: vtxo.txid,
192
196
  index: vtxo.vout,
193
197
  tapLeafScript: [spendingLeaf],
194
- sequence: 0xffffffff - 1,
198
+ sequence,
195
199
  witnessUtxo: {
196
200
  amount: BigInt(vtxo.value),
197
201
  script: base_2.VtxoScript.decode(vtxo.tapTree).pkScript,
@@ -61,7 +61,7 @@ function validateRecipients(recipients, dustAmount) {
61
61
  address = __1.ArkAddress.decode(recipient.address);
62
62
  }
63
63
  catch (e) {
64
- throw new Error(`Invalid Ark address: ${recipient.address}`);
64
+ throw new Error(`Invalid Arkade address: ${recipient.address}`);
65
65
  }
66
66
  const amount = recipient.amount || dustAmount;
67
67
  if (amount <= 0) {