@arkade-os/sdk 0.4.15 → 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 (197) hide show
  1. package/README.md +102 -96
  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 +1 -1
  12. package/dist/cjs/extension/asset/assetGroup.js +92 -5
  13. package/dist/cjs/extension/asset/assetId.js +67 -3
  14. package/dist/cjs/extension/asset/assetInput.js +18 -0
  15. package/dist/cjs/extension/asset/assetOutput.js +15 -0
  16. package/dist/cjs/extension/asset/assetRef.js +66 -0
  17. package/dist/cjs/extension/asset/metadata.js +15 -0
  18. package/dist/cjs/extension/asset/packet.js +4 -1
  19. package/dist/cjs/extension/index.js +1 -1
  20. package/dist/cjs/forfeit.js +14 -0
  21. package/dist/cjs/identity/seedIdentity.js +2 -2
  22. package/dist/cjs/identity/singleKey.js +4 -0
  23. package/dist/cjs/intent/index.js +28 -12
  24. package/dist/cjs/providers/ark.js +3 -2
  25. package/dist/cjs/providers/delegator.js +20 -1
  26. package/dist/cjs/providers/expoArk.js +2 -2
  27. package/dist/cjs/providers/indexer.js +2 -2
  28. package/dist/cjs/providers/onchain.js +2 -1
  29. package/dist/cjs/repositories/realm/schemas.js +2 -2
  30. package/dist/cjs/repositories/realm/types.js +1 -1
  31. package/dist/cjs/script/address.js +37 -6
  32. package/dist/cjs/script/base.js +70 -1
  33. package/dist/cjs/script/default.js +3 -0
  34. package/dist/cjs/script/delegate.js +4 -0
  35. package/dist/cjs/script/tapscript.js +17 -2
  36. package/dist/cjs/script/vhtlc.js +35 -27
  37. package/dist/cjs/storage/fileSystem.js +1 -1
  38. package/dist/cjs/storage/inMemory.js +1 -1
  39. package/dist/cjs/storage/indexedDB.js +1 -1
  40. package/dist/cjs/storage/localStorage.js +1 -1
  41. package/dist/cjs/tree/validation.js +1 -1
  42. package/dist/cjs/utils/arkTransaction.js +5 -5
  43. package/dist/cjs/utils/bip21.js +16 -3
  44. package/dist/cjs/utils/syncCursors.js +4 -4
  45. package/dist/cjs/utils/transaction.js +1 -1
  46. package/dist/cjs/utils/transactionHistory.js +11 -11
  47. package/dist/cjs/utils/unknownFields.js +3 -3
  48. package/dist/cjs/wallet/asset-manager.js +4 -4
  49. package/dist/cjs/wallet/batch.js +5 -5
  50. package/dist/cjs/wallet/delegator.js +9 -8
  51. package/dist/cjs/wallet/expo/background.js +3 -3
  52. package/dist/cjs/wallet/expo/wallet.js +7 -7
  53. package/dist/cjs/wallet/index.js +43 -0
  54. package/dist/cjs/wallet/onchain.js +43 -5
  55. package/dist/cjs/wallet/ramps.js +44 -14
  56. package/dist/cjs/wallet/serviceWorker/wallet-message-handler.js +22 -22
  57. package/dist/cjs/wallet/serviceWorker/wallet.js +28 -24
  58. package/dist/cjs/wallet/unroll.js +12 -8
  59. package/dist/cjs/wallet/utils.js +1 -1
  60. package/dist/cjs/wallet/vtxo-manager.js +122 -82
  61. package/dist/cjs/wallet/wallet.js +125 -67
  62. package/dist/cjs/worker/expo/asyncStorageTaskQueue.js +1 -1
  63. package/dist/cjs/worker/expo/processors/contractPollProcessor.js +2 -2
  64. package/dist/cjs/worker/expo/taskRunner.js +3 -3
  65. package/dist/cjs/worker/messageBus.js +3 -0
  66. package/dist/esm/arkfee/estimator.js +1 -1
  67. package/dist/esm/arkfee/types.js +2 -1
  68. package/dist/esm/arknote/index.js +43 -4
  69. package/dist/esm/bip322/index.js +1 -1
  70. package/dist/esm/contracts/arkcontract.js +1 -1
  71. package/dist/esm/contracts/contractManager.js +40 -24
  72. package/dist/esm/contracts/contractWatcher.js +29 -22
  73. package/dist/esm/contracts/handlers/default.js +1 -1
  74. package/dist/esm/contracts/handlers/delegate.js +1 -1
  75. package/dist/esm/contracts/handlers/helpers.js +1 -1
  76. package/dist/esm/extension/asset/assetGroup.js +92 -5
  77. package/dist/esm/extension/asset/assetId.js +67 -3
  78. package/dist/esm/extension/asset/assetInput.js +18 -0
  79. package/dist/esm/extension/asset/assetOutput.js +15 -0
  80. package/dist/esm/extension/asset/assetRef.js +66 -0
  81. package/dist/esm/extension/asset/metadata.js +15 -0
  82. package/dist/esm/extension/asset/packet.js +4 -1
  83. package/dist/esm/extension/index.js +1 -1
  84. package/dist/esm/forfeit.js +14 -0
  85. package/dist/esm/identity/seedIdentity.js +2 -2
  86. package/dist/esm/identity/singleKey.js +4 -0
  87. package/dist/esm/index.js +1 -1
  88. package/dist/esm/intent/index.js +28 -12
  89. package/dist/esm/providers/ark.js +3 -2
  90. package/dist/esm/providers/delegator.js +20 -1
  91. package/dist/esm/providers/expoArk.js +2 -2
  92. package/dist/esm/providers/indexer.js +2 -2
  93. package/dist/esm/providers/onchain.js +2 -1
  94. package/dist/esm/repositories/realm/schemas.js +2 -2
  95. package/dist/esm/repositories/realm/types.js +1 -1
  96. package/dist/esm/script/address.js +37 -6
  97. package/dist/esm/script/base.js +70 -1
  98. package/dist/esm/script/default.js +3 -0
  99. package/dist/esm/script/delegate.js +4 -0
  100. package/dist/esm/script/tapscript.js +17 -2
  101. package/dist/esm/script/vhtlc.js +35 -27
  102. package/dist/esm/storage/fileSystem.js +1 -1
  103. package/dist/esm/storage/inMemory.js +1 -1
  104. package/dist/esm/storage/indexedDB.js +1 -1
  105. package/dist/esm/storage/localStorage.js +1 -1
  106. package/dist/esm/tree/validation.js +1 -1
  107. package/dist/esm/utils/arkTransaction.js +5 -5
  108. package/dist/esm/utils/bip21.js +16 -3
  109. package/dist/esm/utils/syncCursors.js +4 -4
  110. package/dist/esm/utils/transaction.js +1 -1
  111. package/dist/esm/utils/transactionHistory.js +11 -11
  112. package/dist/esm/utils/unknownFields.js +3 -3
  113. package/dist/esm/wallet/asset-manager.js +4 -4
  114. package/dist/esm/wallet/batch.js +5 -5
  115. package/dist/esm/wallet/delegator.js +9 -8
  116. package/dist/esm/wallet/expo/background.js +3 -3
  117. package/dist/esm/wallet/expo/wallet.js +7 -7
  118. package/dist/esm/wallet/index.js +43 -0
  119. package/dist/esm/wallet/onchain.js +43 -5
  120. package/dist/esm/wallet/ramps.js +44 -14
  121. package/dist/esm/wallet/serviceWorker/wallet-message-handler.js +22 -22
  122. package/dist/esm/wallet/serviceWorker/wallet.js +28 -24
  123. package/dist/esm/wallet/unroll.js +12 -8
  124. package/dist/esm/wallet/utils.js +1 -1
  125. package/dist/esm/wallet/vtxo-manager.js +121 -81
  126. package/dist/esm/wallet/wallet.js +125 -67
  127. package/dist/esm/worker/expo/asyncStorageTaskQueue.js +1 -1
  128. package/dist/esm/worker/expo/processors/contractPollProcessor.js +2 -2
  129. package/dist/esm/worker/expo/taskRunner.js +3 -3
  130. package/dist/esm/worker/messageBus.js +3 -0
  131. package/dist/types/arkfee/estimator.d.ts +1 -1
  132. package/dist/types/arkfee/types.d.ts +2 -1
  133. package/dist/types/arknote/index.d.ts +44 -4
  134. package/dist/types/bip322/index.d.ts +1 -1
  135. package/dist/types/contracts/arkcontract.d.ts +1 -1
  136. package/dist/types/contracts/contractManager.d.ts +40 -63
  137. package/dist/types/contracts/contractWatcher.d.ts +39 -18
  138. package/dist/types/contracts/handlers/default.d.ts +1 -1
  139. package/dist/types/contracts/handlers/delegate.d.ts +1 -1
  140. package/dist/types/contracts/handlers/helpers.d.ts +1 -1
  141. package/dist/types/contracts/types.d.ts +36 -26
  142. package/dist/types/extension/asset/assetGroup.d.ts +92 -1
  143. package/dist/types/extension/asset/assetId.d.ts +67 -3
  144. package/dist/types/extension/asset/assetInput.d.ts +18 -0
  145. package/dist/types/extension/asset/assetOutput.d.ts +15 -0
  146. package/dist/types/extension/asset/assetRef.d.ts +66 -0
  147. package/dist/types/extension/asset/metadata.d.ts +15 -0
  148. package/dist/types/extension/asset/packet.d.ts +4 -1
  149. package/dist/types/extension/index.d.ts +1 -1
  150. package/dist/types/forfeit.d.ts +14 -0
  151. package/dist/types/identity/index.d.ts +16 -0
  152. package/dist/types/identity/seedIdentity.d.ts +8 -6
  153. package/dist/types/identity/singleKey.d.ts +4 -0
  154. package/dist/types/intent/index.d.ts +19 -6
  155. package/dist/types/providers/ark.d.ts +40 -2
  156. package/dist/types/providers/delegator.d.ts +54 -1
  157. package/dist/types/providers/expoArk.d.ts +2 -2
  158. package/dist/types/providers/indexer.d.ts +105 -2
  159. package/dist/types/providers/onchain.d.ts +62 -1
  160. package/dist/types/repositories/realm/schemas.d.ts +2 -2
  161. package/dist/types/repositories/realm/types.d.ts +2 -2
  162. package/dist/types/repositories/walletRepository.d.ts +16 -0
  163. package/dist/types/script/address.d.ts +35 -2
  164. package/dist/types/script/base.d.ts +66 -1
  165. package/dist/types/script/default.d.ts +3 -0
  166. package/dist/types/script/delegate.d.ts +4 -0
  167. package/dist/types/script/tapscript.d.ts +17 -2
  168. package/dist/types/script/vhtlc.d.ts +35 -27
  169. package/dist/types/storage/fileSystem.d.ts +1 -1
  170. package/dist/types/storage/inMemory.d.ts +1 -1
  171. package/dist/types/storage/index.d.ts +1 -1
  172. package/dist/types/storage/indexedDB.d.ts +1 -1
  173. package/dist/types/storage/localStorage.d.ts +1 -1
  174. package/dist/types/utils/arkTransaction.d.ts +3 -3
  175. package/dist/types/utils/bip21.d.ts +17 -0
  176. package/dist/types/utils/syncCursors.d.ts +4 -4
  177. package/dist/types/utils/transaction.d.ts +1 -1
  178. package/dist/types/utils/transactionHistory.d.ts +3 -3
  179. package/dist/types/utils/unknownFields.d.ts +5 -5
  180. package/dist/types/wallet/asset-manager.d.ts +3 -3
  181. package/dist/types/wallet/batch.d.ts +27 -7
  182. package/dist/types/wallet/delegator.d.ts +10 -0
  183. package/dist/types/wallet/expo/background.d.ts +4 -4
  184. package/dist/types/wallet/expo/wallet.d.ts +10 -10
  185. package/dist/types/wallet/index.d.ts +457 -25
  186. package/dist/types/wallet/onchain.d.ts +42 -4
  187. package/dist/types/wallet/ramps.d.ts +40 -10
  188. package/dist/types/wallet/serviceWorker/wallet-message-handler.d.ts +4 -4
  189. package/dist/types/wallet/serviceWorker/wallet.d.ts +71 -33
  190. package/dist/types/wallet/unroll.d.ts +8 -6
  191. package/dist/types/wallet/vtxo-manager.d.ts +146 -93
  192. package/dist/types/wallet/wallet.d.ts +91 -33
  193. package/dist/types/worker/expo/asyncStorageTaskQueue.d.ts +1 -1
  194. package/dist/types/worker/expo/processors/contractPollProcessor.d.ts +1 -1
  195. package/dist/types/worker/expo/taskRunner.d.ts +6 -6
  196. package/dist/types/worker/messageBus.d.ts +5 -3
  197. package/package.json +1 -1
@@ -65,6 +65,12 @@ export declare class ReadonlyWallet implements IReadonlyWallet {
65
65
  info: import("../providers/ark").ArkInfo;
66
66
  delegatorProvider: DelegatorProvider | undefined;
67
67
  }>;
68
+ /**
69
+ * Create a readonly wallet for querying balances, addresses, and history.
70
+ *
71
+ * @param config - Readonly wallet configuration
72
+ * @returns A readonly wallet instance
73
+ */
68
74
  static create(config: ReadonlyWalletConfig): Promise<ReadonlyWallet>;
69
75
  get arkAddress(): ArkAddress;
70
76
  /**
@@ -72,13 +78,26 @@ export declare class ReadonlyWallet implements IReadonlyWallet {
72
78
  * This is the pkScript hex, used to identify the wallet in ContractManager.
73
79
  */
74
80
  get defaultContractScript(): string;
81
+ /** Returns the wallet's Arkade address. */
75
82
  getAddress(): Promise<string>;
83
+ /** Returns the onchain boarding address used to move funds into Arkade. */
76
84
  getBoardingAddress(): Promise<string>;
85
+ /**
86
+ * Return the wallet's combined onchain and offchain balances.
87
+ */
77
88
  getBalance(): Promise<WalletBalance>;
89
+ /**
90
+ * Return virtual outputs tracked by the wallet.
91
+ *
92
+ * @param filter - Optional flags controlling whether recoverable or unrolled VTXOs are included
93
+ */
78
94
  getVtxos(filter?: GetVtxosFilter): Promise<ExtendedVirtualCoin[]>;
95
+ /**
96
+ * Return wallet transaction history derived from Arkade state and boarding transactions.
97
+ */
79
98
  getTransactionHistory(): Promise<ArkTransaction[]>;
80
99
  /**
81
- * Delta-sync wallet VTXOs: fetch only changed VTXOs since the last
100
+ * Delta-sync wallet virtual outputs: fetch only changed virtual outputs since the last
82
101
  * cursor, or do a full bootstrap when no cursor exists. Upserts
83
102
  * the result into the cache and advances the sync cursors.
84
103
  *
@@ -89,16 +108,29 @@ export declare class ReadonlyWallet implements IReadonlyWallet {
89
108
  private syncVtxos;
90
109
  private doSyncVtxos;
91
110
  /**
92
- * Clear all VTXO sync cursors, forcing a full re-bootstrap on next sync.
111
+ * Clear all virtual output sync cursors, forcing a full re-bootstrap on next sync.
93
112
  * Useful for recovery after indexer reprocessing or debugging.
94
113
  */
95
114
  clearSyncCursors(): Promise<void>;
115
+ /**
116
+ * Build a transaction history view for the wallet's boarding address.
117
+ */
96
118
  getBoardingTxs(): Promise<{
97
119
  boardingTxs: ArkTransaction[];
98
120
  commitmentsToIgnore: Set<string>;
99
121
  }>;
122
+ /**
123
+ * Fetch and cache onchain inputs (UTXOs) received at the boarding address.
124
+ */
100
125
  getBoardingUtxos(): Promise<ExtendedCoin[]>;
126
+ /**
127
+ * Subscribe to onchain and offchain notifications for newly received funds.
128
+ *
129
+ * @param eventCallback - Callback invoked when matching funds are detected
130
+ * @returns A function that stops the subscriptions
131
+ */
101
132
  notifyIncomingFunds(eventCallback: (coins: IncomingFunds) => void): Promise<() => void>;
133
+ /** Fetch Arkade transaction ids that are still pending final settlement. */
102
134
  fetchPendingTxs(): Promise<string[]>;
103
135
  /**
104
136
  * Get all pkScript hex strings for the wallet's own addresses
@@ -108,7 +140,7 @@ export declare class ReadonlyWallet implements IReadonlyWallet {
108
140
  getWalletScripts(): Promise<string[]>;
109
141
  /**
110
142
  * Build a map of scriptHex → VtxoScript for all wallet contracts,
111
- * so VTXOs can be extended with the correct tapscript per contract.
143
+ * so virtual outputs can be extended with the correct tapscript per contract.
112
144
  */
113
145
  getScriptMap(): Promise<Map<string, DefaultVtxo.Script | DelegateVtxo.Script>>;
114
146
  /**
@@ -140,28 +172,30 @@ export declare class ReadonlyWallet implements IReadonlyWallet {
140
172
  */
141
173
  getContractManager(): Promise<ContractManager>;
142
174
  private initializeContractManager;
175
+ /** Dispose wallet-owned managers and release background resources. */
143
176
  dispose(): Promise<void>;
177
+ /** Async-dispose hook that forwards to `dispose()`. */
144
178
  [Symbol.asyncDispose](): Promise<void>;
145
179
  }
146
180
  /**
147
- * Main wallet implementation for Bitcoin transactions with Ark protocol support.
148
- * The wallet does not store any data locally and relies on Ark and onchain
149
- * providers to fetch UTXOs and VTXOs.
181
+ * Main wallet implementation for Bitcoin transactions with Arkade protocol support.
182
+ * The wallet does not store any data locally and relies on Arkade and onchain
183
+ * providers to fetch onchain and virtual outputs.
150
184
  *
151
185
  * @example
152
186
  * ```typescript
153
187
  * // Create a wallet with URL configuration
154
188
  * const wallet = await Wallet.create({
155
- * identity: SingleKey.fromHex('your_private_key'),
156
- * arkServerUrl: 'https://ark.example.com',
189
+ * identity: MnemonicIdentity.fromMnemonic('abandon abandon...'),
190
+ * arkServerUrl: 'https://arkade.computer',
157
191
  * esploraUrl: 'https://mempool.space/api'
158
192
  * });
159
193
  *
160
194
  * // Or with custom provider instances (e.g., for Expo/React Native)
161
195
  * const wallet = await Wallet.create({
162
- * identity: SingleKey.fromHex('your_private_key'),
163
- * arkProvider: new ExpoArkProvider('https://ark.example.com'),
164
- * indexerProvider: new ExpoIndexerProvider('https://ark.example.com'),
196
+ * identity: MnemonicIdentity.fromMnemonic('abandon abandon...'),
197
+ * arkProvider: new ExpoArkProvider('https://arkade.computer'),
198
+ * indexerProvider: new ExpoIndexerProvider('https://arkade.computer'),
165
199
  * esploraUrl: 'https://mempool.space/api'
166
200
  * });
167
201
  *
@@ -170,9 +204,9 @@ export declare class ReadonlyWallet implements IReadonlyWallet {
170
204
  * const boardingAddress = await wallet.getBoardingAddress();
171
205
  *
172
206
  * // Send bitcoin
173
- * const txid = await wallet.sendBitcoin({
174
- * address: 'tb1...',
175
- * amount: 50000
207
+ * const txid = await wallet.send({
208
+ * address: 'ark1q...',
209
+ * amount: 50000,
176
210
  * });
177
211
  * ```
178
212
  */
@@ -189,7 +223,7 @@ export declare class Wallet extends ReadonlyWallet implements IWallet {
189
223
  private _vtxoManagerInitializing?;
190
224
  private _walletAssetManager?;
191
225
  /**
192
- * Async mutex that serializes all operations submitting VTXOs to the Ark
226
+ * Async mutex that serializes all operations submitting VTXOs to the Arkade
193
227
  * server (`settle`, `send`, `sendBitcoin`). This prevents VtxoManager's
194
228
  * background renewal from racing with user-initiated transactions for the
195
229
  * same VTXO inputs.
@@ -208,6 +242,19 @@ export declare class Wallet extends ReadonlyWallet implements IWallet {
208
242
  get assetManager(): IAssetManager;
209
243
  getVtxoManager(): Promise<VtxoManager>;
210
244
  dispose(): Promise<void>;
245
+ /**
246
+ * Create a full wallet and initialize its background managers.
247
+ *
248
+ * @param config - Wallet configuration
249
+ * @returns A wallet ready to query balances and send transactions
250
+ * @example
251
+ * ```typescript
252
+ * const wallet = await Wallet.create({
253
+ * identity,
254
+ * arkServerUrl: 'https://arkade.computer',
255
+ * });
256
+ * ```
257
+ */
211
258
  static create(config: WalletConfig): Promise<Wallet>;
212
259
  /**
213
260
  * Convert this wallet to a readonly wallet.
@@ -215,7 +262,7 @@ export declare class Wallet extends ReadonlyWallet implements IWallet {
215
262
  * @returns A readonly wallet with the same configuration but readonly identity
216
263
  * @example
217
264
  * ```typescript
218
- * const wallet = await Wallet.create({ identity: SingleKey.fromHex('...'), ... });
265
+ * const wallet = await Wallet.create({ identity: MnemonicIdentity.fromMnemonic('abandon abandon...'), ... });
219
266
  * const readonlyWallet = await wallet.toReadonly();
220
267
  *
221
268
  * // Can query balance and addresses
@@ -223,25 +270,36 @@ export declare class Wallet extends ReadonlyWallet implements IWallet {
223
270
  * const address = await readonlyWallet.getAddress();
224
271
  *
225
272
  * // But cannot send transactions (type error)
226
- * // readonlyWallet.sendBitcoin(...); // TypeScript error
273
+ * // readonlyWallet.send(...); // TypeScript error
227
274
  * ```
228
275
  */
229
276
  toReadonly(): Promise<ReadonlyWallet>;
277
+ /** Returns the delegator manager when delegation support is configured. */
230
278
  getDelegatorManager(): Promise<IDelegatorManager | undefined>;
231
279
  /**
232
- * @deprecated Use `send`
233
- * @param params
280
+ * Send bitcoin to an Arkade address.
281
+ *
282
+ * @deprecated Use `send`.
283
+ * @param params - Send parameters
234
284
  */
235
285
  sendBitcoin(params: SendBitcoinParams): Promise<string>;
286
+ /**
287
+ * Settle boarding inputs and/or virtual outputs into a finalized mainnet transaction.
288
+ *
289
+ * @param params - Optional settlement inputs and outputs. When omitted, the wallet settles all eligible funds.
290
+ * @param eventCallback - Optional callback invoked for settlement stream events.
291
+ * @returns The finalized Arkade transaction id
292
+ */
236
293
  settle(params?: SettleParams, eventCallback?: (event: SettlementEvent) => void): Promise<string>;
237
294
  private _settleImpl;
238
295
  private handleSettlementFinalizationEvent;
239
296
  /**
240
- * @implements Batch.Handler interface.
297
+ * Create a batch event handler for settlement flows.
298
+ *
241
299
  * @param intentId - The intent ID.
242
- * @param inputs - The inputs of the intent.
243
- * @param session - The musig2 signing session, if not provided, the signing will be skipped.
244
- * @param expectedRecipients - Expected recipients to validate in the vtxo tree.
300
+ * @param inputs - Inputs used by the intent.
301
+ * @param expectedRecipients - Expected recipients to validate in the virtual output tree.
302
+ * @param session - Optional musig2 signing session. When omitted, signing steps are skipped.
245
303
  */
246
304
  createBatchHandler(intentId: string, inputs: ExtendedCoin[], expectedRecipients: Recipient[], session?: SignerSession): Batch.Handler;
247
305
  safeRegisterIntent(intent: SignedIntent<Intent.RegisterMessage>): Promise<string>;
@@ -251,7 +309,7 @@ export declare class Wallet extends ReadonlyWallet implements IWallet {
251
309
  /**
252
310
  * Finalizes pending transactions by retrieving them from the server and finalizing each one.
253
311
  * Skips the server check entirely when no send was interrupted (no pending tx flag set).
254
- * @param vtxos - Optional list of VTXOs to use instead of retrieving them from the server
312
+ * @param vtxos - Optional list of virtual outputs to use instead of retrieving them from the server
255
313
  * @returns Array of transaction IDs that were finalized
256
314
  */
257
315
  finalizePendingTxs(vtxos?: ExtendedVirtualCoin[]): Promise<{
@@ -263,24 +321,24 @@ export declare class Wallet extends ReadonlyWallet implements IWallet {
263
321
  /**
264
322
  * Send BTC and/or assets to one or more recipients.
265
323
  *
266
- * @param recipients - Array of recipients with their addresses, BTC amounts, and assets
267
- * @returns Promise resolving to the ark transaction ID
324
+ * @param args - Recipients with their addresses, BTC amounts, and assets
325
+ * @returns Promise resolving to the Arkade transaction ID
268
326
  *
269
327
  * @example
270
328
  * ```typescript
271
329
  * const txid = await wallet.send({
272
- * address: 'ark1...',
330
+ * address: 'ark1q...',
273
331
  * amount: 1000, // (optional, default to dust) btc amount to send to the output
274
332
  * assets: [{ assetId: 'abc123...', amount: 50 }] // (optional) list of assets to send
275
333
  * });
276
334
  * ```
277
335
  */
278
- send(...args: Recipient[]): Promise<string>;
336
+ send(...args: [Recipient, ...Recipient[]]): Promise<string>;
279
337
  private _sendImpl;
280
338
  /**
281
339
  * Build an offchain transaction from the given inputs and outputs,
282
- * sign it, submit to the ark provider, and finalize.
283
- * @returns The ark transaction id and server-signed checkpoint PSBTs (for bookkeeping)
340
+ * sign it, submit to the Arkade provider, and finalize.
341
+ * @returns The Arkade transaction id and server-signed checkpoint PSBTs (for bookkeeping)
284
342
  */
285
343
  buildAndSubmitOffchainTx(inputs: ExtendedVirtualCoin[], outputs: TransactionOutput[]): Promise<{
286
344
  arkTxid: string;
@@ -290,10 +348,10 @@ export declare class Wallet extends ReadonlyWallet implements IWallet {
290
348
  private updateDbAfterSettle;
291
349
  }
292
350
  /**
293
- * Select virtual coins to reach a target amount, prioritizing those closer to expiry
294
- * @param coins List of virtual coins to select from
351
+ * Select virtual outputs to reach a target amount, prioritizing those closer to expiry
352
+ * @param coins List of virtual outputs to select from
295
353
  * @param targetAmount Target amount to reach in satoshis
296
- * @returns Selected coins and change amount
354
+ * @returns Selected virtual outputs and change amount
297
355
  */
298
356
  export declare function selectVirtualCoins(coins: ExtendedVirtualCoin[], targetAmount: number): {
299
357
  inputs: ExtendedVirtualCoin[];
@@ -32,7 +32,7 @@ export declare class AsyncStorageTaskQueue implements TaskQueue {
32
32
  acknowledgeResults(ids: string[]): Promise<void>;
33
33
  /**
34
34
  * Persist a config blob alongside the queue data.
35
- * Used by {@link ExpoWallet.setup} to store the wallet parameters
35
+ * Used by @see ExpoWallet.setup to store the wallet parameters
36
36
  * that the background handler needs to reconstruct providers.
37
37
  */
38
38
  persistConfig(config: Record<string, unknown> | object): Promise<void>;
@@ -4,7 +4,7 @@ export declare const CONTRACT_POLL_TASK_TYPE = "contract-poll";
4
4
  * Polls the indexer for the latest VTXO state of every contract and
5
5
  * persists the results to the wallet repository.
6
6
  *
7
- * Replicates the polling subset of {@link ContractManager.initialize}:
7
+ * Replicates the polling subset of @see ContractManager.initialize:
8
8
  * 1. Load all contracts from the contract repository.
9
9
  * 2. Mark expired active contracts as inactive.
10
10
  * 3. Paginated fetch of spendable VTXOs from the indexer.
@@ -20,9 +20,9 @@ export interface TaskDependencies {
20
20
  * A stateless unit that handles one type of task item.
21
21
  *
22
22
  * Processors must not keep in-memory state across invocations —
23
- * all coordination lives in the {@link TaskQueue} and repositories.
23
+ * all coordination lives in the @see TaskQueue and repositories.
24
24
  *
25
- * The `TDeps` parameter defaults to {@link TaskDependencies} but
25
+ * The `TDeps` parameter defaults to @see TaskDependencies but
26
26
  * can be overridden for domain-specific processors (e.g. swap processing).
27
27
  */
28
28
  export interface TaskProcessor<TDeps = TaskDependencies> {
@@ -34,7 +34,7 @@ export interface TaskProcessor<TDeps = TaskDependencies> {
34
34
  *
35
35
  * For each task in the inbox:
36
36
  * 1. Find the processor whose `taskType` matches `task.type`.
37
- * 2. Execute it, producing a {@link TaskResult}.
37
+ * 2. Execute it, producing a @see TaskResult.
38
38
  * 3. Push the result to the outbox and remove the task from the inbox.
39
39
  *
40
40
  * Tasks with no matching processor produce a `"noop"` result.
@@ -42,7 +42,7 @@ export interface TaskProcessor<TDeps = TaskDependencies> {
42
42
  */
43
43
  export declare function runTasks<TDeps = TaskDependencies>(queue: TaskQueue, processors: TaskProcessor<TDeps>[], deps: TDeps): Promise<TaskResult[]>;
44
44
  /**
45
- * Options for {@link createTaskDependencies}.
45
+ * Options for @see createTaskDependencies.
46
46
  */
47
47
  export interface CreateTaskDependenciesOptions {
48
48
  walletRepository: WalletRepository;
@@ -52,8 +52,8 @@ export interface CreateTaskDependenciesOptions {
52
52
  offchainTapscript: ReadonlyWallet["offchainTapscript"];
53
53
  }
54
54
  /**
55
- * Build the {@link TaskDependencies} needed by task processors
56
- * (e.g. {@link import("./processors").contractPollProcessor}).
55
+ * Build the @see TaskDependencies needed by task processors
56
+ * (e.g. `src/worker/expo/processors/contractPollProcessor.ts`)
57
57
  *
58
58
  * This is the same construction that `defineExpoBackgroundTask` does
59
59
  * internally, extracted so that consumers with custom schedulers
@@ -22,9 +22,8 @@ export interface MessageHandler<REQ extends RequestEnvelope = RequestEnvelope, R
22
22
  readonly messageTag: string;
23
23
  /**
24
24
  * Called once when the SW is starting up
25
- * @param opts.arkProvider
26
- * @param opts.wallet Wallet with signature cababilities
27
- * @param opts.readonlyWallet Read-only Wallet
25
+ * @param services - Providers and wallet instances available to the handler.
26
+ * @param repositories - Repositories available to the handler.
28
27
  **/
29
28
  start(services: {
30
29
  arkProvider: ArkProvider;
@@ -91,8 +90,11 @@ export declare class MessageBus {
91
90
  private initialized;
92
91
  private readonly buildServicesFn;
93
92
  private readonly boundOnMessage;
93
+ /** Create the service-worker message bus with repositories and handler configuration. */
94
94
  constructor(walletRepository: WalletRepository, contractRepository: ContractRepository, { messageHandlers, tickIntervalMs, messageTimeoutMs, debug, buildServices, }: Options);
95
+ /** Start the message bus and attach service-worker event listeners. */
95
96
  start(): Promise<void>;
97
+ /** Stop the message bus, cancel ticks, and stop all registered handlers. */
96
98
  stop(): Promise<void>;
97
99
  private scheduleNextTick;
98
100
  private runTick;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@arkade-os/sdk",
3
- "version": "0.4.15",
3
+ "version": "0.4.16",
4
4
  "description": "TypeScript SDK for building Bitcoin wallets using the Arkade protocol",
5
5
  "type": "module",
6
6
  "main": "./dist/cjs/index.js",