@arkade-os/sdk 0.0.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 (103) hide show
  1. package/README.md +312 -0
  2. package/dist/cjs/arknote/index.js +86 -0
  3. package/dist/cjs/forfeit.js +38 -0
  4. package/dist/cjs/identity/inMemoryKey.js +40 -0
  5. package/dist/cjs/identity/index.js +2 -0
  6. package/dist/cjs/index.js +48 -0
  7. package/dist/cjs/musig2/index.js +10 -0
  8. package/dist/cjs/musig2/keys.js +57 -0
  9. package/dist/cjs/musig2/nonces.js +44 -0
  10. package/dist/cjs/musig2/sign.js +102 -0
  11. package/dist/cjs/networks.js +26 -0
  12. package/dist/cjs/package.json +3 -0
  13. package/dist/cjs/providers/ark.js +530 -0
  14. package/dist/cjs/providers/onchain.js +61 -0
  15. package/dist/cjs/script/address.js +45 -0
  16. package/dist/cjs/script/base.js +51 -0
  17. package/dist/cjs/script/default.js +40 -0
  18. package/dist/cjs/script/tapscript.js +528 -0
  19. package/dist/cjs/script/vhtlc.js +84 -0
  20. package/dist/cjs/tree/signingSession.js +238 -0
  21. package/dist/cjs/tree/validation.js +184 -0
  22. package/dist/cjs/tree/vtxoTree.js +197 -0
  23. package/dist/cjs/utils/bip21.js +114 -0
  24. package/dist/cjs/utils/coinselect.js +73 -0
  25. package/dist/cjs/utils/psbt.js +124 -0
  26. package/dist/cjs/utils/transactionHistory.js +148 -0
  27. package/dist/cjs/utils/txSizeEstimator.js +95 -0
  28. package/dist/cjs/wallet/index.js +8 -0
  29. package/dist/cjs/wallet/serviceWorker/db/vtxo/idb.js +153 -0
  30. package/dist/cjs/wallet/serviceWorker/db/vtxo/index.js +2 -0
  31. package/dist/cjs/wallet/serviceWorker/request.js +75 -0
  32. package/dist/cjs/wallet/serviceWorker/response.js +187 -0
  33. package/dist/cjs/wallet/serviceWorker/wallet.js +332 -0
  34. package/dist/cjs/wallet/serviceWorker/worker.js +452 -0
  35. package/dist/cjs/wallet/wallet.js +720 -0
  36. package/dist/esm/arknote/index.js +81 -0
  37. package/dist/esm/forfeit.js +35 -0
  38. package/dist/esm/identity/inMemoryKey.js +36 -0
  39. package/dist/esm/identity/index.js +1 -0
  40. package/dist/esm/index.js +39 -0
  41. package/dist/esm/musig2/index.js +3 -0
  42. package/dist/esm/musig2/keys.js +21 -0
  43. package/dist/esm/musig2/nonces.js +8 -0
  44. package/dist/esm/musig2/sign.js +63 -0
  45. package/dist/esm/networks.js +22 -0
  46. package/dist/esm/package.json +3 -0
  47. package/dist/esm/providers/ark.js +526 -0
  48. package/dist/esm/providers/onchain.js +57 -0
  49. package/dist/esm/script/address.js +41 -0
  50. package/dist/esm/script/base.js +46 -0
  51. package/dist/esm/script/default.js +37 -0
  52. package/dist/esm/script/tapscript.js +491 -0
  53. package/dist/esm/script/vhtlc.js +81 -0
  54. package/dist/esm/tree/signingSession.js +200 -0
  55. package/dist/esm/tree/validation.js +179 -0
  56. package/dist/esm/tree/vtxoTree.js +157 -0
  57. package/dist/esm/utils/bip21.js +110 -0
  58. package/dist/esm/utils/coinselect.js +69 -0
  59. package/dist/esm/utils/psbt.js +118 -0
  60. package/dist/esm/utils/transactionHistory.js +145 -0
  61. package/dist/esm/utils/txSizeEstimator.js +91 -0
  62. package/dist/esm/wallet/index.js +5 -0
  63. package/dist/esm/wallet/serviceWorker/db/vtxo/idb.js +149 -0
  64. package/dist/esm/wallet/serviceWorker/db/vtxo/index.js +1 -0
  65. package/dist/esm/wallet/serviceWorker/request.js +72 -0
  66. package/dist/esm/wallet/serviceWorker/response.js +184 -0
  67. package/dist/esm/wallet/serviceWorker/wallet.js +328 -0
  68. package/dist/esm/wallet/serviceWorker/worker.js +448 -0
  69. package/dist/esm/wallet/wallet.js +716 -0
  70. package/dist/types/arknote/index.d.ts +17 -0
  71. package/dist/types/forfeit.d.ts +15 -0
  72. package/dist/types/identity/inMemoryKey.d.ts +12 -0
  73. package/dist/types/identity/index.d.ts +7 -0
  74. package/dist/types/index.d.ts +22 -0
  75. package/dist/types/musig2/index.d.ts +4 -0
  76. package/dist/types/musig2/keys.d.ts +9 -0
  77. package/dist/types/musig2/nonces.d.ts +13 -0
  78. package/dist/types/musig2/sign.d.ts +27 -0
  79. package/dist/types/networks.d.ts +16 -0
  80. package/dist/types/providers/ark.d.ts +126 -0
  81. package/dist/types/providers/onchain.d.ts +36 -0
  82. package/dist/types/script/address.d.ts +10 -0
  83. package/dist/types/script/base.d.ts +26 -0
  84. package/dist/types/script/default.d.ts +19 -0
  85. package/dist/types/script/tapscript.d.ts +94 -0
  86. package/dist/types/script/vhtlc.d.ts +31 -0
  87. package/dist/types/tree/signingSession.d.ts +32 -0
  88. package/dist/types/tree/validation.d.ts +22 -0
  89. package/dist/types/tree/vtxoTree.d.ts +32 -0
  90. package/dist/types/utils/bip21.d.ts +21 -0
  91. package/dist/types/utils/coinselect.d.ts +21 -0
  92. package/dist/types/utils/psbt.d.ts +11 -0
  93. package/dist/types/utils/transactionHistory.d.ts +2 -0
  94. package/dist/types/utils/txSizeEstimator.d.ts +27 -0
  95. package/dist/types/wallet/index.d.ts +122 -0
  96. package/dist/types/wallet/serviceWorker/db/vtxo/idb.d.ts +18 -0
  97. package/dist/types/wallet/serviceWorker/db/vtxo/index.d.ts +12 -0
  98. package/dist/types/wallet/serviceWorker/request.d.ts +68 -0
  99. package/dist/types/wallet/serviceWorker/response.d.ts +107 -0
  100. package/dist/types/wallet/serviceWorker/wallet.d.ts +23 -0
  101. package/dist/types/wallet/serviceWorker/worker.d.ts +26 -0
  102. package/dist/types/wallet/wallet.d.ts +42 -0
  103. package/package.json +88 -0
@@ -0,0 +1,452 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Worker = void 0;
4
+ /// <reference lib="webworker" />
5
+ const inMemoryKey_1 = require("../../identity/inMemoryKey");
6
+ const wallet_1 = require("../wallet");
7
+ const request_1 = require("./request");
8
+ const response_1 = require("./response");
9
+ const ark_1 = require("../../providers/ark");
10
+ const default_1 = require("../../script/default");
11
+ const idb_1 = require("./db/vtxo/idb");
12
+ const transactionHistory_1 = require("../../utils/transactionHistory");
13
+ // Worker is a class letting to interact with ServiceWorkerWallet from the client
14
+ // it aims to be run in a service worker context
15
+ class Worker {
16
+ constructor(vtxoRepository = new idb_1.IndexedDBVtxoRepository(), messageCallback = () => { }) {
17
+ this.vtxoRepository = vtxoRepository;
18
+ this.messageCallback = messageCallback;
19
+ }
20
+ async start() {
21
+ self.addEventListener("message", async (event) => {
22
+ await this.handleMessage(event);
23
+ });
24
+ }
25
+ async clear() {
26
+ if (this.vtxoSubscription) {
27
+ this.vtxoSubscription.abort();
28
+ }
29
+ await this.vtxoRepository.close();
30
+ this.wallet = undefined;
31
+ this.arkProvider = undefined;
32
+ this.vtxoSubscription = undefined;
33
+ }
34
+ async onWalletInitialized() {
35
+ if (!this.wallet ||
36
+ !this.arkProvider ||
37
+ !this.wallet.offchainTapscript ||
38
+ !this.wallet.boardingTapscript) {
39
+ return;
40
+ }
41
+ // subscribe to address updates
42
+ const addressInfo = await this.wallet.getAddressInfo();
43
+ if (!addressInfo.offchain) {
44
+ return;
45
+ }
46
+ await this.vtxoRepository.open();
47
+ // set the initial vtxos state
48
+ const { spendableVtxos, spentVtxos } = await this.arkProvider.getVirtualCoins(addressInfo.offchain.address);
49
+ const encodedOffchainTapscript = this.wallet.offchainTapscript.encode();
50
+ const forfeit = this.wallet.offchainTapscript.forfeit();
51
+ const vtxos = [...spendableVtxos, ...spentVtxos].map((vtxo) => ({
52
+ ...vtxo,
53
+ tapLeafScript: forfeit,
54
+ scripts: encodedOffchainTapscript,
55
+ }));
56
+ await this.vtxoRepository.addOrUpdate(vtxos);
57
+ this.processVtxoSubscription(addressInfo.offchain);
58
+ }
59
+ async processVtxoSubscription({ address, scripts, }) {
60
+ try {
61
+ const addressScripts = [...scripts.exit, ...scripts.forfeit];
62
+ const vtxoScript = default_1.DefaultVtxo.Script.decode(addressScripts);
63
+ const tapLeafScript = vtxoScript.findLeaf(scripts.forfeit[0]);
64
+ const abortController = new AbortController();
65
+ const subscription = this.arkProvider.subscribeForAddress(address, abortController.signal);
66
+ this.vtxoSubscription = abortController;
67
+ for await (const update of subscription) {
68
+ const vtxos = [...update.newVtxos, ...update.spentVtxos];
69
+ if (vtxos.length === 0) {
70
+ continue;
71
+ }
72
+ const extendedVtxos = vtxos.map((vtxo) => ({
73
+ ...vtxo,
74
+ tapLeafScript,
75
+ scripts: addressScripts,
76
+ }));
77
+ await this.vtxoRepository.addOrUpdate(extendedVtxos);
78
+ }
79
+ }
80
+ catch (error) {
81
+ console.error("Error processing address updates:", error);
82
+ }
83
+ }
84
+ async handleClear(event) {
85
+ this.clear();
86
+ if (request_1.Request.isBase(event.data)) {
87
+ event.source?.postMessage(response_1.Response.clearResponse(event.data.id, true));
88
+ }
89
+ }
90
+ async handleInitWallet(event) {
91
+ const message = event.data;
92
+ if (!request_1.Request.isInitWallet(message)) {
93
+ console.error("Invalid INIT_WALLET message format", message);
94
+ event.source?.postMessage(response_1.Response.error(message.id, "Invalid INIT_WALLET message format"));
95
+ return;
96
+ }
97
+ try {
98
+ this.arkProvider = new ark_1.RestArkProvider(message.arkServerUrl);
99
+ this.wallet = await wallet_1.Wallet.create({
100
+ network: message.network,
101
+ identity: inMemoryKey_1.InMemoryKey.fromHex(message.privateKey),
102
+ arkServerUrl: message.arkServerUrl,
103
+ arkServerPublicKey: message.arkServerPublicKey,
104
+ });
105
+ event.source?.postMessage(response_1.Response.walletInitialized(message.id));
106
+ await this.onWalletInitialized();
107
+ }
108
+ catch (error) {
109
+ console.error("Error initializing wallet:", error);
110
+ const errorMessage = error instanceof Error
111
+ ? error.message
112
+ : "Unknown error occurred";
113
+ event.source?.postMessage(response_1.Response.error(message.id, errorMessage));
114
+ }
115
+ }
116
+ async handleSettle(event) {
117
+ const message = event.data;
118
+ if (!request_1.Request.isSettle(message)) {
119
+ console.error("Invalid SETTLE message format", message);
120
+ event.source?.postMessage(response_1.Response.error(message.id, "Invalid SETTLE message format"));
121
+ return;
122
+ }
123
+ try {
124
+ if (!this.wallet) {
125
+ console.error("Wallet not initialized");
126
+ event.source?.postMessage(response_1.Response.error(message.id, "Wallet not initialized"));
127
+ return;
128
+ }
129
+ const txid = await this.wallet.settle(message.params, (e) => {
130
+ event.source?.postMessage(response_1.Response.settleEvent(message.id, e));
131
+ });
132
+ event.source?.postMessage(response_1.Response.settleSuccess(message.id, txid));
133
+ }
134
+ catch (error) {
135
+ console.error("Error settling:", error);
136
+ const errorMessage = error instanceof Error
137
+ ? error.message
138
+ : "Unknown error occurred";
139
+ event.source?.postMessage(response_1.Response.error(message.id, errorMessage));
140
+ }
141
+ }
142
+ async handleSendBitcoin(event) {
143
+ const message = event.data;
144
+ if (!request_1.Request.isSendBitcoin(message)) {
145
+ console.error("Invalid SEND_BITCOIN message format", message);
146
+ event.source?.postMessage(response_1.Response.error(message.id, "Invalid SEND_BITCOIN message format"));
147
+ return;
148
+ }
149
+ if (!this.wallet) {
150
+ console.error("Wallet not initialized");
151
+ event.source?.postMessage(response_1.Response.error(message.id, "Wallet not initialized"));
152
+ return;
153
+ }
154
+ try {
155
+ const txid = await this.wallet.sendBitcoin(message.params, message.zeroFee);
156
+ event.source?.postMessage(response_1.Response.sendBitcoinSuccess(message.id, txid));
157
+ }
158
+ catch (error) {
159
+ console.error("Error sending bitcoin:", error);
160
+ const errorMessage = error instanceof Error
161
+ ? error.message
162
+ : "Unknown error occurred";
163
+ event.source?.postMessage(response_1.Response.error(message.id, errorMessage));
164
+ }
165
+ }
166
+ async handleGetAddress(event) {
167
+ const message = event.data;
168
+ if (!request_1.Request.isGetAddress(message)) {
169
+ console.error("Invalid GET_ADDRESS message format", message);
170
+ event.source?.postMessage(response_1.Response.error(message.id, "Invalid GET_ADDRESS message format"));
171
+ return;
172
+ }
173
+ if (!this.wallet) {
174
+ console.error("Wallet not initialized");
175
+ event.source?.postMessage(response_1.Response.error(message.id, "Wallet not initialized"));
176
+ return;
177
+ }
178
+ try {
179
+ const addresses = await this.wallet.getAddress();
180
+ event.source?.postMessage(response_1.Response.addresses(message.id, addresses));
181
+ }
182
+ catch (error) {
183
+ console.error("Error getting address:", error);
184
+ const errorMessage = error instanceof Error
185
+ ? error.message
186
+ : "Unknown error occurred";
187
+ event.source?.postMessage(response_1.Response.error(message.id, errorMessage));
188
+ }
189
+ }
190
+ async handleGetAddressInfo(event) {
191
+ const message = event.data;
192
+ if (!request_1.Request.isGetAddressInfo(message)) {
193
+ console.error("Invalid GET_ADDRESS_INFO message format", message);
194
+ event.source?.postMessage(response_1.Response.error(message.id, "Invalid GET_ADDRESS_INFO message format"));
195
+ return;
196
+ }
197
+ if (!this.wallet) {
198
+ console.error("Wallet not initialized");
199
+ event.source?.postMessage(response_1.Response.error(message.id, "Wallet not initialized"));
200
+ return;
201
+ }
202
+ try {
203
+ const addressInfo = await this.wallet.getAddressInfo();
204
+ event.source?.postMessage(response_1.Response.addressInfo(message.id, addressInfo));
205
+ }
206
+ catch (error) {
207
+ console.error("Error getting address info:", error);
208
+ const errorMessage = error instanceof Error
209
+ ? error.message
210
+ : "Unknown error occurred";
211
+ event.source?.postMessage(response_1.Response.error(message.id, errorMessage));
212
+ }
213
+ }
214
+ async handleGetBalance(event) {
215
+ const message = event.data;
216
+ if (!request_1.Request.isGetBalance(message)) {
217
+ console.error("Invalid GET_BALANCE message format", message);
218
+ event.source?.postMessage(response_1.Response.error(message.id, "Invalid GET_BALANCE message format"));
219
+ return;
220
+ }
221
+ if (!this.wallet) {
222
+ console.error("Wallet not initialized");
223
+ event.source?.postMessage(response_1.Response.error(message.id, "Wallet not initialized"));
224
+ return;
225
+ }
226
+ try {
227
+ const coins = await this.wallet.getCoins();
228
+ const onchainConfirmed = coins
229
+ .filter((coin) => coin.status.confirmed)
230
+ .reduce((sum, coin) => sum + coin.value, 0);
231
+ const onchainUnconfirmed = coins
232
+ .filter((coin) => !coin.status.confirmed)
233
+ .reduce((sum, coin) => sum + coin.value, 0);
234
+ const onchainTotal = onchainConfirmed + onchainUnconfirmed;
235
+ const spendableVtxos = await this.vtxoRepository.getSpendableVtxos();
236
+ const offchainSettledBalance = spendableVtxos.reduce((sum, vtxo) => vtxo.virtualStatus.state === "settled"
237
+ ? sum + vtxo.value
238
+ : sum, 0);
239
+ const offchainPendingBalance = spendableVtxos.reduce((sum, vtxo) => vtxo.virtualStatus.state === "pending"
240
+ ? sum + vtxo.value
241
+ : sum, 0);
242
+ const offchainSweptBalance = spendableVtxos.reduce((sum, vtxo) => vtxo.virtualStatus.state === "swept"
243
+ ? sum + vtxo.value
244
+ : sum, 0);
245
+ const offchainTotal = offchainSettledBalance +
246
+ offchainPendingBalance +
247
+ offchainSweptBalance;
248
+ event.source?.postMessage(response_1.Response.balance(message.id, {
249
+ onchain: {
250
+ confirmed: onchainConfirmed,
251
+ unconfirmed: onchainUnconfirmed,
252
+ total: onchainTotal,
253
+ },
254
+ offchain: {
255
+ swept: offchainSweptBalance,
256
+ settled: offchainSettledBalance,
257
+ pending: offchainPendingBalance,
258
+ total: offchainTotal,
259
+ },
260
+ total: onchainTotal + offchainTotal,
261
+ }));
262
+ }
263
+ catch (error) {
264
+ console.error("Error getting balance:", error);
265
+ const errorMessage = error instanceof Error
266
+ ? error.message
267
+ : "Unknown error occurred";
268
+ event.source?.postMessage(response_1.Response.error(message.id, errorMessage));
269
+ }
270
+ }
271
+ async handleGetCoins(event) {
272
+ const message = event.data;
273
+ if (!request_1.Request.isGetCoins(message)) {
274
+ console.error("Invalid GET_COINS message format", message);
275
+ event.source?.postMessage(response_1.Response.error(message.id, "Invalid GET_COINS message format"));
276
+ return;
277
+ }
278
+ if (!this.wallet) {
279
+ console.error("Wallet not initialized");
280
+ event.source?.postMessage(response_1.Response.error(message.id, "Wallet not initialized"));
281
+ return;
282
+ }
283
+ try {
284
+ const coins = await this.wallet.getCoins();
285
+ event.source?.postMessage(response_1.Response.coins(message.id, coins));
286
+ }
287
+ catch (error) {
288
+ console.error("Error getting coins:", error);
289
+ const errorMessage = error instanceof Error
290
+ ? error.message
291
+ : "Unknown error occurred";
292
+ event.source?.postMessage(response_1.Response.error(message.id, errorMessage));
293
+ }
294
+ }
295
+ async handleGetVtxos(event) {
296
+ const message = event.data;
297
+ if (!request_1.Request.isGetVtxos(message)) {
298
+ console.error("Invalid GET_VTXOS message format", message);
299
+ event.source?.postMessage(response_1.Response.error(message.id, "Invalid GET_VTXOS message format"));
300
+ return;
301
+ }
302
+ if (!this.wallet) {
303
+ console.error("Wallet not initialized");
304
+ event.source?.postMessage(response_1.Response.error(message.id, "Wallet not initialized"));
305
+ return;
306
+ }
307
+ try {
308
+ const vtxos = await this.vtxoRepository.getSpendableVtxos();
309
+ event.source?.postMessage(response_1.Response.vtxos(message.id, vtxos));
310
+ }
311
+ catch (error) {
312
+ console.error("Error getting vtxos:", error);
313
+ const errorMessage = error instanceof Error
314
+ ? error.message
315
+ : "Unknown error occurred";
316
+ event.source?.postMessage(response_1.Response.error(message.id, errorMessage));
317
+ }
318
+ }
319
+ async handleGetBoardingUtxos(event) {
320
+ const message = event.data;
321
+ if (!request_1.Request.isGetBoardingUtxos(message)) {
322
+ console.error("Invalid GET_BOARDING_UTXOS message format", message);
323
+ event.source?.postMessage(response_1.Response.error(message.id, "Invalid GET_BOARDING_UTXOS message format"));
324
+ return;
325
+ }
326
+ if (!this.wallet) {
327
+ console.error("Wallet not initialized");
328
+ event.source?.postMessage(response_1.Response.error(message.id, "Wallet not initialized"));
329
+ return;
330
+ }
331
+ try {
332
+ const boardingUtxos = await this.wallet.getBoardingUtxos();
333
+ event.source?.postMessage(response_1.Response.boardingUtxos(message.id, boardingUtxos));
334
+ }
335
+ catch (error) {
336
+ console.error("Error getting boarding utxos:", error);
337
+ const errorMessage = error instanceof Error
338
+ ? error.message
339
+ : "Unknown error occurred";
340
+ event.source?.postMessage(response_1.Response.error(message.id, errorMessage));
341
+ }
342
+ }
343
+ async handleGetTransactionHistory(event) {
344
+ const message = event.data;
345
+ if (!request_1.Request.isGetTransactionHistory(message)) {
346
+ console.error("Invalid GET_TRANSACTION_HISTORY message format", message);
347
+ event.source?.postMessage(response_1.Response.error(message.id, "Invalid GET_TRANSACTION_HISTORY message format"));
348
+ return;
349
+ }
350
+ if (!this.wallet) {
351
+ console.error("Wallet not initialized");
352
+ event.source?.postMessage(response_1.Response.error(message.id, "Wallet not initialized"));
353
+ return;
354
+ }
355
+ try {
356
+ const { boardingTxs, roundsToIgnore } = await this.wallet.getBoardingTxs();
357
+ const { spendable, spent } = await this.vtxoRepository.getAllVtxos();
358
+ // convert VTXOs to offchain transactions
359
+ const offchainTxs = (0, transactionHistory_1.vtxosToTxs)(spendable, spent, roundsToIgnore);
360
+ const txs = [...boardingTxs, ...offchainTxs];
361
+ // sort transactions by creation time in descending order (newest first)
362
+ txs.sort(
363
+ // place createdAt = 0 (unconfirmed txs) first, then descending
364
+ (a, b) => {
365
+ if (a.createdAt === 0)
366
+ return -1;
367
+ if (b.createdAt === 0)
368
+ return 1;
369
+ return b.createdAt - a.createdAt;
370
+ });
371
+ event.source?.postMessage(response_1.Response.transactionHistory(message.id, txs));
372
+ }
373
+ catch (error) {
374
+ console.error("Error getting transaction history:", error);
375
+ const errorMessage = error instanceof Error
376
+ ? error.message
377
+ : "Unknown error occurred";
378
+ event.source?.postMessage(response_1.Response.error(message.id, errorMessage));
379
+ }
380
+ }
381
+ async handleGetStatus(event) {
382
+ const message = event.data;
383
+ if (!request_1.Request.isGetStatus(message)) {
384
+ console.error("Invalid GET_STATUS message format", message);
385
+ event.source?.postMessage(response_1.Response.error(message.id, "Invalid GET_STATUS message format"));
386
+ return;
387
+ }
388
+ event.source?.postMessage(response_1.Response.walletStatus(message.id, this.wallet !== undefined));
389
+ }
390
+ async handleMessage(event) {
391
+ this.messageCallback(event);
392
+ const message = event.data;
393
+ if (!request_1.Request.isBase(message)) {
394
+ console.warn("Invalid message format", JSON.stringify(message));
395
+ // ignore invalid messages
396
+ return;
397
+ }
398
+ switch (message.type) {
399
+ case "INIT_WALLET": {
400
+ await this.handleInitWallet(event);
401
+ break;
402
+ }
403
+ case "SETTLE": {
404
+ await this.handleSettle(event);
405
+ break;
406
+ }
407
+ case "SEND_BITCOIN": {
408
+ await this.handleSendBitcoin(event);
409
+ break;
410
+ }
411
+ case "GET_ADDRESS": {
412
+ await this.handleGetAddress(event);
413
+ break;
414
+ }
415
+ case "GET_ADDRESS_INFO": {
416
+ await this.handleGetAddressInfo(event);
417
+ break;
418
+ }
419
+ case "GET_BALANCE": {
420
+ await this.handleGetBalance(event);
421
+ break;
422
+ }
423
+ case "GET_COINS": {
424
+ await this.handleGetCoins(event);
425
+ break;
426
+ }
427
+ case "GET_VTXOS": {
428
+ await this.handleGetVtxos(event);
429
+ break;
430
+ }
431
+ case "GET_BOARDING_UTXOS": {
432
+ await this.handleGetBoardingUtxos(event);
433
+ break;
434
+ }
435
+ case "GET_TRANSACTION_HISTORY": {
436
+ await this.handleGetTransactionHistory(event);
437
+ break;
438
+ }
439
+ case "GET_STATUS": {
440
+ await this.handleGetStatus(event);
441
+ break;
442
+ }
443
+ case "CLEAR": {
444
+ await this.handleClear(event);
445
+ break;
446
+ }
447
+ default:
448
+ event.source?.postMessage(response_1.Response.error(message.id, "Unknown message type"));
449
+ }
450
+ }
451
+ }
452
+ exports.Worker = Worker;