zeldwallet 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (133) hide show
  1. package/README.md +305 -0
  2. package/dist/index.d.ts +6 -0
  3. package/dist/src/ZeldWallet.d.ts +254 -0
  4. package/dist/src/ZeldWallet.d.ts.map +1 -0
  5. package/dist/src/component/ZeldWalletUI.d.ts +56 -0
  6. package/dist/src/component/ZeldWalletUI.d.ts.map +1 -0
  7. package/dist/src/component/balance.d.ts +41 -0
  8. package/dist/src/component/balance.d.ts.map +1 -0
  9. package/dist/src/component/bindings.d.ts +76 -0
  10. package/dist/src/component/bindings.d.ts.map +1 -0
  11. package/dist/src/component/constants.d.ts +15 -0
  12. package/dist/src/component/constants.d.ts.map +1 -0
  13. package/dist/src/component/controller.d.ts +224 -0
  14. package/dist/src/component/controller.d.ts.map +1 -0
  15. package/dist/src/component/errors.d.ts +5 -0
  16. package/dist/src/component/errors.d.ts.map +1 -0
  17. package/dist/src/component/i18n.d.ts +156 -0
  18. package/dist/src/component/i18n.d.ts.map +1 -0
  19. package/dist/src/component/messages/ar.d.ts +3 -0
  20. package/dist/src/component/messages/ar.d.ts.map +1 -0
  21. package/dist/src/component/messages/bn.d.ts +3 -0
  22. package/dist/src/component/messages/bn.d.ts.map +1 -0
  23. package/dist/src/component/messages/cs.d.ts +3 -0
  24. package/dist/src/component/messages/cs.d.ts.map +1 -0
  25. package/dist/src/component/messages/de.d.ts +3 -0
  26. package/dist/src/component/messages/de.d.ts.map +1 -0
  27. package/dist/src/component/messages/el.d.ts +3 -0
  28. package/dist/src/component/messages/el.d.ts.map +1 -0
  29. package/dist/src/component/messages/en.d.ts +3 -0
  30. package/dist/src/component/messages/en.d.ts.map +1 -0
  31. package/dist/src/component/messages/es.d.ts +3 -0
  32. package/dist/src/component/messages/es.d.ts.map +1 -0
  33. package/dist/src/component/messages/fa.d.ts +3 -0
  34. package/dist/src/component/messages/fa.d.ts.map +1 -0
  35. package/dist/src/component/messages/fr.d.ts +3 -0
  36. package/dist/src/component/messages/fr.d.ts.map +1 -0
  37. package/dist/src/component/messages/he.d.ts +3 -0
  38. package/dist/src/component/messages/he.d.ts.map +1 -0
  39. package/dist/src/component/messages/hi.d.ts +3 -0
  40. package/dist/src/component/messages/hi.d.ts.map +1 -0
  41. package/dist/src/component/messages/id.d.ts +3 -0
  42. package/dist/src/component/messages/id.d.ts.map +1 -0
  43. package/dist/src/component/messages/index.d.ts +31 -0
  44. package/dist/src/component/messages/index.d.ts.map +1 -0
  45. package/dist/src/component/messages/it.d.ts +3 -0
  46. package/dist/src/component/messages/it.d.ts.map +1 -0
  47. package/dist/src/component/messages/ja.d.ts +3 -0
  48. package/dist/src/component/messages/ja.d.ts.map +1 -0
  49. package/dist/src/component/messages/ko.d.ts +3 -0
  50. package/dist/src/component/messages/ko.d.ts.map +1 -0
  51. package/dist/src/component/messages/ms.d.ts +3 -0
  52. package/dist/src/component/messages/ms.d.ts.map +1 -0
  53. package/dist/src/component/messages/nl.d.ts +3 -0
  54. package/dist/src/component/messages/nl.d.ts.map +1 -0
  55. package/dist/src/component/messages/pl.d.ts +3 -0
  56. package/dist/src/component/messages/pl.d.ts.map +1 -0
  57. package/dist/src/component/messages/pt.d.ts +3 -0
  58. package/dist/src/component/messages/pt.d.ts.map +1 -0
  59. package/dist/src/component/messages/ro.d.ts +3 -0
  60. package/dist/src/component/messages/ro.d.ts.map +1 -0
  61. package/dist/src/component/messages/ru.d.ts +3 -0
  62. package/dist/src/component/messages/ru.d.ts.map +1 -0
  63. package/dist/src/component/messages/sw.d.ts +3 -0
  64. package/dist/src/component/messages/sw.d.ts.map +1 -0
  65. package/dist/src/component/messages/th.d.ts +3 -0
  66. package/dist/src/component/messages/th.d.ts.map +1 -0
  67. package/dist/src/component/messages/tl.d.ts +3 -0
  68. package/dist/src/component/messages/tl.d.ts.map +1 -0
  69. package/dist/src/component/messages/tr.d.ts +3 -0
  70. package/dist/src/component/messages/tr.d.ts.map +1 -0
  71. package/dist/src/component/messages/uk.d.ts +3 -0
  72. package/dist/src/component/messages/uk.d.ts.map +1 -0
  73. package/dist/src/component/messages/ur.d.ts +3 -0
  74. package/dist/src/component/messages/ur.d.ts.map +1 -0
  75. package/dist/src/component/messages/vi.d.ts +3 -0
  76. package/dist/src/component/messages/vi.d.ts.map +1 -0
  77. package/dist/src/component/messages/zh-CN.d.ts +3 -0
  78. package/dist/src/component/messages/zh-CN.d.ts.map +1 -0
  79. package/dist/src/component/messages/zh-TW.d.ts +3 -0
  80. package/dist/src/component/messages/zh-TW.d.ts.map +1 -0
  81. package/dist/src/component/miner.d.ts +108 -0
  82. package/dist/src/component/miner.d.ts.map +1 -0
  83. package/dist/src/component/render.d.ts +11 -0
  84. package/dist/src/component/render.d.ts.map +1 -0
  85. package/dist/src/component/state.d.ts +142 -0
  86. package/dist/src/component/state.d.ts.map +1 -0
  87. package/dist/src/component/styles.d.ts +2 -0
  88. package/dist/src/component/styles.d.ts.map +1 -0
  89. package/dist/src/component/viewModel.d.ts +281 -0
  90. package/dist/src/component/viewModel.d.ts.map +1 -0
  91. package/dist/src/component/wallets.d.ts +40 -0
  92. package/dist/src/component/wallets.d.ts.map +1 -0
  93. package/dist/src/index.d.ts +18 -0
  94. package/dist/src/index.d.ts.map +1 -0
  95. package/dist/src/keys/KeyManager.d.ts +132 -0
  96. package/dist/src/keys/KeyManager.d.ts.map +1 -0
  97. package/dist/src/keys/derivation.d.ts +58 -0
  98. package/dist/src/keys/derivation.d.ts.map +1 -0
  99. package/dist/src/keys/signing.d.ts +44 -0
  100. package/dist/src/keys/signing.d.ts.map +1 -0
  101. package/dist/src/provider/WBIPProvider.d.ts +74 -0
  102. package/dist/src/provider/WBIPProvider.d.ts.map +1 -0
  103. package/dist/src/react/ZeldWalletCard.d.ts +29 -0
  104. package/dist/src/react/ZeldWalletCard.d.ts.map +1 -0
  105. package/dist/src/react/index.d.ts +3 -0
  106. package/dist/src/react/index.d.ts.map +1 -0
  107. package/dist/src/react/useZeldWalletController.d.ts +28 -0
  108. package/dist/src/react/useZeldWalletController.d.ts.map +1 -0
  109. package/dist/src/storage/SecureStorage.d.ts +183 -0
  110. package/dist/src/storage/SecureStorage.d.ts.map +1 -0
  111. package/dist/src/storage/constants.d.ts +59 -0
  112. package/dist/src/storage/constants.d.ts.map +1 -0
  113. package/dist/src/types/index.d.ts +245 -0
  114. package/dist/src/types/index.d.ts.map +1 -0
  115. package/dist/src/ui/Modal.d.ts +19 -0
  116. package/dist/src/ui/Modal.d.ts.map +1 -0
  117. package/dist/src/unifiedWallet.d.ts +29 -0
  118. package/dist/src/unifiedWallet.d.ts.map +1 -0
  119. package/dist/src/utils/crypto.d.ts +36 -0
  120. package/dist/src/utils/crypto.d.ts.map +1 -0
  121. package/dist/src/utils/encoding.d.ts +46 -0
  122. package/dist/src/utils/encoding.d.ts.map +1 -0
  123. package/dist/src/utils/validation.d.ts +42 -0
  124. package/dist/src/utils/validation.d.ts.map +1 -0
  125. package/dist/wasm/package.json +31 -0
  126. package/dist/wasm/zeldhash_miner_wasm.d.ts +82 -0
  127. package/dist/wasm/zeldhash_miner_wasm.js +1404 -0
  128. package/dist/wasm/zeldhash_miner_wasm_bg.wasm +0 -0
  129. package/dist/wasm/zeldhash_miner_wasm_bg.wasm.d.ts +27 -0
  130. package/dist/worker.js +338 -0
  131. package/dist/zeldwallet.es.js +36558 -0
  132. package/dist/zeldwallet.es.js.map +1 -0
  133. package/package.json +99 -0
@@ -0,0 +1,27 @@
1
+ /* tslint:disable */
2
+ /* eslint-disable */
3
+ export const memory: WebAssembly.Memory;
4
+ export const mine_batch_wasm: (a: number, b: number, c: number, d: number, e: bigint, f: number, g: number, h: number) => any;
5
+ export const mine_range_wasm: (a: any, b: any, c: number, d: number, e: bigint, f: any, g: number, h: any) => any;
6
+ export const validate_address: (a: number, b: number, c: number, d: number) => any;
7
+ export const build_psbt: (a: any, b: any, c: number, d: number, e: bigint, f: bigint, g: any) => [number, number, number, number];
8
+ export const build_mining_template: (a: any, b: any, c: number, d: number, e: bigint, f: bigint, g: number, h: any) => [number, number, number];
9
+ export const compute_txid: (a: number, b: number) => [number, number];
10
+ export const init_gpu: () => any;
11
+ export const mine_batch_gpu: (a: number, b: number, c: number, d: number, e: bigint, f: number, g: number, h: number) => any;
12
+ export const mine_range_gpu: (a: any, b: any, c: number, d: number, e: bigint, f: any, g: number, h: any) => any;
13
+ export const calibrate_batch_size: () => any;
14
+ export const init_panic_hook: () => void;
15
+ export const wasm_bindgen__convert__closures_____invoke__h4173f797cb68abd1: (a: number, b: number, c: any) => void;
16
+ export const wasm_bindgen__closure__destroy__h08603745582b4e0f: (a: number, b: number) => void;
17
+ export const wasm_bindgen__convert__closures_____invoke__h1a38164a3a667135: (a: number, b: number, c: any) => void;
18
+ export const wasm_bindgen__closure__destroy__h16b8b0f00158f31c: (a: number, b: number) => void;
19
+ export const wasm_bindgen__convert__closures_____invoke__h2845bf56d21a7dac: (a: number, b: number, c: any, d: any) => void;
20
+ export const __wbindgen_exn_store: (a: number) => void;
21
+ export const __externref_table_alloc: () => number;
22
+ export const __wbindgen_externrefs: WebAssembly.Table;
23
+ export const __wbindgen_malloc: (a: number, b: number) => number;
24
+ export const __wbindgen_realloc: (a: number, b: number, c: number, d: number) => number;
25
+ export const __wbindgen_free: (a: number, b: number, c: number) => void;
26
+ export const __externref_table_dealloc: (a: number) => void;
27
+ export const __wbindgen_start: () => void;
package/dist/worker.js ADDED
@@ -0,0 +1,338 @@
1
+ var u = /* @__PURE__ */ ((t) => (t.INVALID_ADDRESS = "INVALID_ADDRESS", t.UNSUPPORTED_ADDRESS_TYPE = "UNSUPPORTED_ADDRESS_TYPE", t.INSUFFICIENT_FUNDS = "INSUFFICIENT_FUNDS", t.NO_CHANGE_OUTPUT = "NO_CHANGE_OUTPUT", t.MULTIPLE_CHANGE_OUTPUTS = "MULTIPLE_CHANGE_OUTPUTS", t.INVALID_INPUT = "INVALID_INPUT", t.WEBGPU_NOT_AVAILABLE = "WEBGPU_NOT_AVAILABLE", t.WORKER_ERROR = "WORKER_ERROR", t.MINING_ABORTED = "MINING_ABORTED", t.DUST_OUTPUT = "DUST_OUTPUT", t))(u || {});
2
+ const R = (1n << 64n) - 1n, K = (t) => {
3
+ if (t < 0n)
4
+ throw new Error("nonce must be non-negative");
5
+ if (t === 0n) return 1;
6
+ let e = 0, n = t;
7
+ for (; n > 0n; )
8
+ e += 1, n >>= 8n;
9
+ return e;
10
+ }, H = (t) => {
11
+ if (t < 0n)
12
+ throw new Error("nonce must be non-negative");
13
+ if (t <= 23n) return 1;
14
+ if (t <= 0xffn) return 2;
15
+ if (t <= 0xffffn) return 3;
16
+ if (t <= 0xffffffffn) return 5;
17
+ if (t <= R) return 9;
18
+ throw new Error("nonce range exceeds u64");
19
+ }, X = (t) => {
20
+ if (!Number.isInteger(t) || t <= 0 || t > 8)
21
+ throw new Error("nonceLength must be between 1 and 8");
22
+ return (1n << BigInt(t * 8)) - 1n;
23
+ }, j = (t) => {
24
+ switch (t) {
25
+ case 1:
26
+ return 23n;
27
+ case 2:
28
+ return 0xffn;
29
+ case 3:
30
+ return 0xffffn;
31
+ case 5:
32
+ return 0xffffffffn;
33
+ case 9:
34
+ return R;
35
+ default:
36
+ throw new Error("cbor nonceLength must be one of 1, 2, 3, 5, 9");
37
+ }
38
+ }, Y = (t, e) => {
39
+ if (t < 0n)
40
+ throw new Error("startNonce must be non-negative");
41
+ if (!Number.isInteger(e) || e <= 0)
42
+ throw new Error("batchSize must be a positive integer");
43
+ const n = t + BigInt(e - 1);
44
+ if (n > R)
45
+ throw new Error("nonce range exceeds u64");
46
+ const r = [];
47
+ let i = t;
48
+ for (; i <= n; ) {
49
+ const o = K(i), s = X(o), c = n < s ? n : s, f = c - i + 1n;
50
+ if (f > BigInt(Number.MAX_SAFE_INTEGER))
51
+ throw new Error("segment size exceeds safe integer range");
52
+ if (r.push({
53
+ start: i,
54
+ size: Number(f),
55
+ nonceLength: o
56
+ }), c === n)
57
+ break;
58
+ i = c + 1n;
59
+ }
60
+ return r;
61
+ }, J = (t, e) => {
62
+ if (t < 0n)
63
+ throw new Error("startNonce must be non-negative");
64
+ if (!Number.isInteger(e) || e <= 0)
65
+ throw new Error("batchSize must be a positive integer");
66
+ const n = t + BigInt(e - 1);
67
+ if (n > R)
68
+ throw new Error("nonce range exceeds u64");
69
+ const r = [];
70
+ let i = t;
71
+ for (; i <= n; ) {
72
+ const o = H(i), s = j(o), c = n < s ? n : s, f = c - i + 1n;
73
+ if (f > BigInt(Number.MAX_SAFE_INTEGER))
74
+ throw new Error("segment size exceeds safe integer range");
75
+ if (r.push({
76
+ start: i,
77
+ size: Number(f),
78
+ nonceLength: o
79
+ }), c === n)
80
+ break;
81
+ i = c + 1n;
82
+ }
83
+ return r;
84
+ }, Q = {};
85
+ let U = null, d = null, x = !1;
86
+ const Z = () => {
87
+ if (x) return;
88
+ x = !0;
89
+ const t = globalThis.GPUAdapter?.prototype, e = t?.requestDevice;
90
+ !t || typeof e != "function" || (t.requestDevice = function(r) {
91
+ if (r?.requiredLimits && typeof this.limits == "object") {
92
+ const i = r.requiredLimits, o = this.limits;
93
+ for (const s of Object.keys(i))
94
+ (!(s in o) || o[s] === void 0) && delete i[s];
95
+ }
96
+ return e.call(this, r);
97
+ });
98
+ }, y = (t) => t.endsWith("/") ? t : `${t}/`, I = (t) => {
99
+ const e = t.trim();
100
+ return e && (typeof window < "u" && typeof window.location?.origin == "string" ? y(new URL(e, window.location.origin).href) : y(new URL(e, import.meta.url).href));
101
+ }, tt = () => {
102
+ const t = globalThis.__ZELDMINER_WASM_BASE__;
103
+ if (typeof t == "string" && t.trim())
104
+ return I(t);
105
+ const e = Q?.VITE_ZELDMINER_WASM_BASE;
106
+ if (typeof e == "string" && e.trim())
107
+ return I(e);
108
+ const n = "/";
109
+ return n.trim() ? I(`${y(n.trim())}wasm/`) : I("/wasm/");
110
+ }, M = tt(), W = `${M}zeldhash_miner_wasm.js`, et = `${M}zeldhash_miner_wasm_bg.wasm`, z = (t) => t instanceof Error ? t.message : String(t), nt = async () => {
111
+ Z();
112
+ let t;
113
+ try {
114
+ t = await import(
115
+ /* @vite-ignore */
116
+ W
117
+ );
118
+ } catch (r) {
119
+ throw new Error(
120
+ `Failed to import WASM bundle (${W}). Did you run ./scripts/build-wasm.sh? (${z(r)})`
121
+ );
122
+ }
123
+ const e = t.default;
124
+ if (typeof e != "function")
125
+ throw new Error("WASM init function is missing from the bundle.");
126
+ try {
127
+ const r = new URL(et, import.meta.url);
128
+ await e({ module_or_path: r });
129
+ } catch (r) {
130
+ throw new Error(
131
+ `Failed to initialize WASM bundle: ${z(r)}`
132
+ );
133
+ }
134
+ const n = t;
135
+ try {
136
+ n.init_panic_hook?.();
137
+ } catch {
138
+ }
139
+ return n;
140
+ }, rt = async () => U || (d || (d = nt().then((t) => (U = t, t)).catch((t) => {
141
+ throw d = null, t;
142
+ })), d), B = self, it = B.name ?? void 0, N = (t) => t instanceof Error ? t.message : String(t);
143
+ let A = "cpu", w = null;
144
+ const E = (t) => {
145
+ B.postMessage({ ...t, workerId: it });
146
+ }, m = (t, e = u.WORKER_ERROR, n) => {
147
+ E({ type: "error", message: t, code: e, details: n });
148
+ }, st = (t) => typeof t == "object" && t !== null && "ok" in t, ot = (t) => typeof t == "object" && t !== null && "nonce" in t && "txid" in t, ct = (t) => {
149
+ const e = BigInt(Number.MAX_SAFE_INTEGER);
150
+ return t > e ? Number.MAX_SAFE_INTEGER : t < -e ? -Number.MAX_SAFE_INTEGER : Number(t);
151
+ }, at = (t) => ({
152
+ nonceLength: t.nonceLength,
153
+ prefix: new Uint8Array(t.prefix),
154
+ suffix: new Uint8Array(t.suffix),
155
+ useCborNonce: t.useCborNonce
156
+ }), F = (t, e) => {
157
+ t.set(e.nonceLength, at(e));
158
+ }, ut = async (t, e, n, r, i) => {
159
+ const o = t.get(r.nonceLength);
160
+ if (o)
161
+ return o;
162
+ const s = e.build_mining_template(
163
+ n.inputs,
164
+ n.outputs,
165
+ i,
166
+ BigInt(n.satsPerVbyte),
167
+ r.start,
168
+ r.size,
169
+ n.distribution ?? null
170
+ ), c = {
171
+ ...s,
172
+ nonceLength: r.nonceLength,
173
+ useCborNonce: s.useCborNonce ?? n.useCborNonce
174
+ };
175
+ return F(t, c), c;
176
+ }, ft = async (t, e, n, r, i, o, s, c) => {
177
+ if (e === "gpu") {
178
+ if (!t.mine_batch_gpu)
179
+ throw new Error("GPU mining requested but mine_batch_gpu is unavailable");
180
+ return t.mine_batch_gpu(
181
+ n,
182
+ r,
183
+ i,
184
+ o,
185
+ s,
186
+ c
187
+ );
188
+ }
189
+ return t.mine_batch_wasm(
190
+ n,
191
+ r,
192
+ i,
193
+ o,
194
+ s,
195
+ c
196
+ );
197
+ }, lt = async (t, e) => {
198
+ let n;
199
+ try {
200
+ if (n = await rt(), A === "gpu") {
201
+ if (!n.mine_batch_gpu) {
202
+ m(
203
+ "GPU mining requested but mine_batch_gpu is unavailable",
204
+ u.WEBGPU_NOT_AVAILABLE
205
+ );
206
+ return;
207
+ }
208
+ n.init_gpu && await n.init_gpu();
209
+ }
210
+ } catch (g) {
211
+ const _ = N(g), b = A === "gpu" ? u.WEBGPU_NOT_AVAILABLE : u.WORKER_ERROR;
212
+ m(`Failed to initialize WASM: ${_}`, b);
213
+ return;
214
+ }
215
+ const r = /* @__PURE__ */ new Map(), i = t.template.useCborNonce ?? !!(t.distribution && t.distribution.length > 0);
216
+ F(r, { ...t.template, useCborNonce: i });
217
+ const o = t.nonceStep ?? BigInt(t.batchSize), s = t.network === "signet" ? "testnet" : t.network;
218
+ let c = t.startNonce, f = 0n;
219
+ const G = performance.now();
220
+ for (; !e.signal.aborted; ) {
221
+ const g = c;
222
+ let _ = t.batchSize, b = 0n;
223
+ for (; _ > 0 && !e.signal.aborted; ) {
224
+ const P = g + b;
225
+ let a;
226
+ try {
227
+ a = (i ? J(P, _) : Y(P, _))[0];
228
+ } catch (h) {
229
+ m(
230
+ `Invalid nonce range: ${N(h)}`,
231
+ u.INVALID_INPUT
232
+ ), e.abort();
233
+ return;
234
+ }
235
+ let S;
236
+ try {
237
+ S = await ut(
238
+ r,
239
+ n,
240
+ {
241
+ inputs: t.inputs,
242
+ outputs: t.outputs,
243
+ satsPerVbyte: t.satsPerVbyte,
244
+ distribution: t.distribution,
245
+ useCborNonce: i
246
+ },
247
+ a,
248
+ s
249
+ );
250
+ } catch (h) {
251
+ m(
252
+ `Failed to build mining template: ${N(h)}`,
253
+ u.WORKER_ERROR
254
+ ), e.abort();
255
+ return;
256
+ }
257
+ let l;
258
+ const k = performance.now();
259
+ try {
260
+ l = await ft(
261
+ n,
262
+ A,
263
+ S.prefix,
264
+ S.suffix,
265
+ a.start,
266
+ a.size,
267
+ t.targetZeros,
268
+ i
269
+ );
270
+ } catch (h) {
271
+ const p = N(h);
272
+ m(
273
+ `Batch mining failed: ${p}`,
274
+ u.WORKER_ERROR
275
+ ), e.abort();
276
+ return;
277
+ }
278
+ const O = performance.now() - k;
279
+ if (st(l)) {
280
+ if (!l.ok) {
281
+ m(
282
+ l.error ?? "Validation failed",
283
+ u.INVALID_INPUT
284
+ ), e.abort();
285
+ return;
286
+ }
287
+ } else if (ot(l)) {
288
+ const h = f + b, p = BigInt(l.nonce) - a.start + 1n, T = h + p, L = performance.now() - G, D = L > 0 ? ct(T) / (L / 1e3) : 0, q = a.start + p - 1n, C = {
289
+ psbt: "",
290
+ txid: l.txid,
291
+ nonce: BigInt(l.nonce),
292
+ attempts: T,
293
+ duration: L,
294
+ hashRate: D
295
+ };
296
+ E({
297
+ type: "found",
298
+ result: C,
299
+ hashesProcessed: T,
300
+ hashRate: D,
301
+ lastNonce: q
302
+ }), e.abort();
303
+ return;
304
+ }
305
+ f += BigInt(a.size), b += BigInt(a.size), _ -= a.size;
306
+ const v = O > 0 ? a.size / (O / 1e3) : a.size, $ = a.start + BigInt(a.size) - 1n;
307
+ E({ type: "progress", hashesProcessed: f, hashRate: v, lastNonce: $ });
308
+ }
309
+ if (e.signal.aborted)
310
+ break;
311
+ const V = g + BigInt(t.batchSize) - 1n;
312
+ E({ type: "batch_complete", lastNonce: V }), c = g + o;
313
+ }
314
+ }, ht = (t) => {
315
+ const e = new AbortController();
316
+ w?.abort(), w = e, lt(t, e).finally(() => {
317
+ w === e && (w = null);
318
+ });
319
+ };
320
+ B.addEventListener("message", (t) => {
321
+ const e = t.data;
322
+ switch (e.type) {
323
+ case "init":
324
+ A = e.mode, E({ type: "ready" });
325
+ break;
326
+ case "mine":
327
+ ht(e);
328
+ break;
329
+ case "stop":
330
+ w?.abort();
331
+ break;
332
+ default:
333
+ m(
334
+ `Unknown message type: ${e.type}`,
335
+ u.WORKER_ERROR
336
+ );
337
+ }
338
+ });