saito-wasm 0.0.2

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 (50) hide show
  1. package/Cargo.toml +30 -0
  2. package/dist/browser/index.d.ts +428 -0
  3. package/dist/browser/index.js +220 -0
  4. package/dist/server/113b3ee1c6c31ca8f96e.module.wasm +0 -0
  5. package/dist/server/index.d.ts +300 -0
  6. package/dist/server/index.js +283 -0
  7. package/dist/server/pkg_node_index_js.index.js +55 -0
  8. package/dist/server/vendors-node_modules_text-encoding_index_js.index.js +44 -0
  9. package/dist/types/dist/browser/index.d.ts +3 -0
  10. package/dist/types/dist/browser/index.d.ts.map +1 -0
  11. package/dist/types/dist/server/index.d.ts +3 -0
  12. package/dist/types/dist/server/index.d.ts.map +1 -0
  13. package/dist/types/dist/server/pkg_node_index_js.index.d.ts +9 -0
  14. package/dist/types/dist/server/pkg_node_index_js.index.d.ts.map +1 -0
  15. package/dist/types/dist/server/vendors-node_modules_text-encoding_index_js.index.d.ts +8 -0
  16. package/dist/types/dist/server/vendors-node_modules_text-encoding_index_js.index.d.ts.map +1 -0
  17. package/dist/types/index.node.d.ts +34 -0
  18. package/dist/types/index.node.d.ts.map +1 -0
  19. package/dist/types/index.web.d.ts +3 -0
  20. package/dist/types/index.web.d.ts.map +1 -0
  21. package/dist/types/js/msg_handler.d.ts +17 -0
  22. package/dist/types/js/msg_handler.d.ts.map +1 -0
  23. package/dist/types/pkg/node/index.d.ts +2 -0
  24. package/dist/types/pkg/node/index.d.ts.map +1 -0
  25. package/dist/types/pkg/node/index_bg.d.ts +476 -0
  26. package/dist/types/pkg/node/index_bg.d.ts.map +1 -0
  27. package/dist/types/pkg/node/snippets/saito-wasm-10de7e358f6ef4db/js/msg_handler.d.ts +17 -0
  28. package/dist/types/pkg/node/snippets/saito-wasm-10de7e358f6ef4db/js/msg_handler.d.ts.map +1 -0
  29. package/dist/types/pkg/web/index.d.ts +406 -0
  30. package/dist/types/pkg/web/index.d.ts.map +1 -0
  31. package/dist/types/pkg/web/snippets/saito-wasm-10de7e358f6ef4db/js/msg_handler.d.ts +17 -0
  32. package/dist/types/pkg/web/snippets/saito-wasm-10de7e358f6ef4db/js/msg_handler.d.ts.map +1 -0
  33. package/dist/types/webpack.config.d.ts +14 -0
  34. package/dist/types/webpack.config.d.ts.map +1 -0
  35. package/index.node.ts +5 -0
  36. package/index.web.ts +8 -0
  37. package/js/msg_handler.js +60 -0
  38. package/package.json +39 -0
  39. package/src/lib.rs +18 -0
  40. package/src/saitowasm.rs +718 -0
  41. package/src/wasm_block.rs +97 -0
  42. package/src/wasm_configuration.rs +94 -0
  43. package/src/wasm_io_handler.rs +258 -0
  44. package/src/wasm_peer.rs +80 -0
  45. package/src/wasm_slip.rs +101 -0
  46. package/src/wasm_task_runner.rs +12 -0
  47. package/src/wasm_time_keeper.rs +12 -0
  48. package/src/wasm_transaction.rs +177 -0
  49. package/tsconfig.json +116 -0
  50. package/webpack.config.js +171 -0
package/Cargo.toml ADDED
@@ -0,0 +1,30 @@
1
+ [package]
2
+ name = "saito-wasm"
3
+ version = "0.1.0"
4
+ edition = "2021"
5
+
6
+ # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
7
+ [lib]
8
+ crate-type = ["cdylib"]
9
+
10
+ [dependencies]
11
+ saito-core = { path = "../saito-core" }
12
+ wasm-bindgen = { version = "0.2.83", features = ["serde-serialize"] }
13
+ wasm-bindgen-futures = "0.4.33"
14
+ serde = { version = "1.0.152", features = ["derive"] }
15
+ web-sys = "0.3.60"
16
+ async-trait = "0.1.61"
17
+ hex = "0.4.3"
18
+ tokio = "1.24.2"
19
+ js-sys = "0.3.60"
20
+ lazy_static = "1.4.0"
21
+ console_log = { version = "0.2.0", features = ["color"] }
22
+ log = "0.4.17"
23
+ getrandom = { version = "0.2.8", features = ["js", "std"] }
24
+ rand = { version = "0.8.5", features = ["getrandom"] }
25
+ secp256k1 = { version = "0.26.0", features = ["bitcoin_hashes", "global-context", "serde"] }
26
+ base58 = "0.2.0"
27
+ figment = { version = "0.10.8", features = ["json"] }
28
+ serde_json = "1.0.91"
29
+ num-derive = "0.3.3"
30
+ num-traits = "0.2.15"
@@ -0,0 +1,428 @@
1
+ /* tslint:disable */
2
+ /* eslint-disable */
3
+ /**
4
+ * @param {string} json
5
+ * @returns {Promise<any>}
6
+ */
7
+ export function initialize(json: string): Promise<any>;
8
+ /**
9
+ * @param {string} public_key
10
+ * @param {bigint} amount
11
+ * @param {bigint} fee
12
+ * @param {boolean} force_merge
13
+ * @returns {Promise<WasmTransaction>}
14
+ */
15
+ export function create_transaction(public_key: string, amount: bigint, fee: bigint, force_merge: boolean): Promise<WasmTransaction>;
16
+ /**
17
+ * @returns {Promise<string>}
18
+ */
19
+ export function get_latest_block_hash(): Promise<string>;
20
+ /**
21
+ * @param {bigint} index
22
+ * @param {any} peer_config
23
+ * @returns {Promise<void>}
24
+ */
25
+ export function process_new_peer(index: bigint, peer_config: any): Promise<void>;
26
+ /**
27
+ * @param {bigint} peer_index
28
+ * @returns {Promise<void>}
29
+ */
30
+ export function process_peer_disconnection(peer_index: bigint): Promise<void>;
31
+ /**
32
+ * @param {Uint8Array} buffer
33
+ * @param {bigint} peer_index
34
+ * @returns {Promise<void>}
35
+ */
36
+ export function process_msg_buffer_from_peer(buffer: Uint8Array, peer_index: bigint): Promise<void>;
37
+ /**
38
+ * @param {Uint8Array} buffer
39
+ * @param {Uint8Array} hash
40
+ * @param {bigint} peer_index
41
+ * @returns {Promise<void>}
42
+ */
43
+ export function process_fetched_block(buffer: Uint8Array, hash: Uint8Array, peer_index: bigint): Promise<void>;
44
+ /**
45
+ * @param {bigint} duration_in_ms
46
+ * @returns {Promise<void>}
47
+ */
48
+ export function process_timer_event(duration_in_ms: bigint): Promise<void>;
49
+ /**
50
+ * @param {Uint8Array} buffer
51
+ * @returns {string}
52
+ */
53
+ export function hash(buffer: Uint8Array): string;
54
+ /**
55
+ * @param {Uint8Array} buffer
56
+ * @param {string} private_key
57
+ * @returns {string}
58
+ */
59
+ export function sign_buffer(buffer: Uint8Array, private_key: string): string;
60
+ /**
61
+ * @param {Uint8Array} buffer
62
+ * @param {string} signature
63
+ * @param {string} public_key
64
+ * @returns {boolean}
65
+ */
66
+ export function verify_signature(buffer: Uint8Array, signature: string, public_key: string): boolean;
67
+ /**
68
+ * @returns {Promise<Array<any>>}
69
+ */
70
+ export function get_peers(): Promise<Array<any>>;
71
+ /**
72
+ * @param {bigint} peer_index
73
+ * @returns {Promise<WasmPeer | undefined>}
74
+ */
75
+ export function get_peer(peer_index: bigint): Promise<WasmPeer | undefined>;
76
+ /**
77
+ * @returns {Promise<string>}
78
+ */
79
+ export function get_public_key(): Promise<string>;
80
+ /**
81
+ * @returns {Promise<string>}
82
+ */
83
+ export function get_private_key(): Promise<string>;
84
+ /**
85
+ * @returns {Promise<Array<any>>}
86
+ */
87
+ export function get_pending_txs(): Promise<Array<any>>;
88
+ /**
89
+ * @param {string} _ticker
90
+ * @returns {Promise<bigint>}
91
+ */
92
+ export function get_balance(_ticker: string): Promise<bigint>;
93
+ /**
94
+ * @returns {string}
95
+ */
96
+ export function generate_private_key(): string;
97
+ /**
98
+ * @param {string} private_key
99
+ * @returns {string}
100
+ */
101
+ export function generate_public_key(private_key: string): string;
102
+ /**
103
+ * @param {WasmTransaction} tx
104
+ * @returns {Promise<void>}
105
+ */
106
+ export function propagate_transaction(tx: WasmTransaction): Promise<void>;
107
+ /**
108
+ * @param {Uint8Array} buffer
109
+ * @param {number} msg_index
110
+ * @param {bigint} peer_index
111
+ * @returns {Promise<void>}
112
+ */
113
+ export function send_api_call(buffer: Uint8Array, msg_index: number, peer_index: bigint): Promise<void>;
114
+ /**
115
+ * @param {Uint8Array} buffer
116
+ * @param {number} msg_index
117
+ * @param {bigint} peer_index
118
+ * @returns {Promise<void>}
119
+ */
120
+ export function send_api_success(buffer: Uint8Array, msg_index: number, peer_index: bigint): Promise<void>;
121
+ /**
122
+ * @param {Uint8Array} buffer
123
+ * @param {number} msg_index
124
+ * @param {bigint} peer_index
125
+ * @returns {Promise<void>}
126
+ */
127
+ export function send_api_error(buffer: Uint8Array, msg_index: number, peer_index: bigint): Promise<void>;
128
+ /**
129
+ * @param {bigint} peer_index
130
+ * @param {any} services
131
+ * @returns {Promise<void>}
132
+ */
133
+ export function propagate_services(peer_index: bigint, services: any): Promise<void>;
134
+ /**
135
+ */
136
+ export class SaitoWasm {
137
+ free(): void;
138
+ }
139
+ /**
140
+ */
141
+ export class WasmBlock {
142
+ free(): void;
143
+ /**
144
+ */
145
+ constructor();
146
+ /**
147
+ * @returns {Uint8Array}
148
+ */
149
+ serialize(): Uint8Array;
150
+ /**
151
+ */
152
+ creator: string;
153
+ /**
154
+ */
155
+ readonly hash: string;
156
+ /**
157
+ */
158
+ id: bigint;
159
+ /**
160
+ */
161
+ previous_block_hash: string;
162
+ /**
163
+ */
164
+ timestamp: bigint;
165
+ /**
166
+ */
167
+ readonly transactions: Array<any>;
168
+ /**
169
+ */
170
+ type: number;
171
+ }
172
+ /**
173
+ */
174
+ export class WasmPeer {
175
+ free(): void;
176
+ /**
177
+ * @param {bigint} peer_index
178
+ */
179
+ constructor(peer_index: bigint);
180
+ /**
181
+ * @param {string} service
182
+ * @returns {boolean}
183
+ */
184
+ has_service(service: string): boolean;
185
+ /**
186
+ * @returns {boolean}
187
+ */
188
+ is_main_peer(): boolean;
189
+ /**
190
+ */
191
+ readonly key_list: Array<any>;
192
+ /**
193
+ */
194
+ readonly peer_index: bigint;
195
+ /**
196
+ */
197
+ readonly public_key: string;
198
+ /**
199
+ */
200
+ services: any;
201
+ /**
202
+ */
203
+ readonly sync_type: string;
204
+ }
205
+ /**
206
+ */
207
+ export class WasmSlip {
208
+ free(): void;
209
+ /**
210
+ */
211
+ constructor();
212
+ /**
213
+ */
214
+ amount: bigint;
215
+ /**
216
+ */
217
+ block_id: bigint;
218
+ /**
219
+ */
220
+ public_key: string;
221
+ /**
222
+ */
223
+ slip_index: number;
224
+ /**
225
+ */
226
+ slip_type: number;
227
+ /**
228
+ */
229
+ tx_ordinal: bigint;
230
+ /**
231
+ */
232
+ utxo_key: string;
233
+ }
234
+ /**
235
+ */
236
+ export class WasmTransaction {
237
+ free(): void;
238
+ /**
239
+ */
240
+ constructor();
241
+ /**
242
+ * @param {WasmSlip} slip
243
+ */
244
+ add_to_slip(slip: WasmSlip): void;
245
+ /**
246
+ * @param {WasmSlip} slip
247
+ */
248
+ add_from_slip(slip: WasmSlip): void;
249
+ /**
250
+ * @param {string} key
251
+ * @returns {boolean}
252
+ */
253
+ is_from(key: string): boolean;
254
+ /**
255
+ * @param {string} key
256
+ * @returns {boolean}
257
+ */
258
+ is_to(key: string): boolean;
259
+ /**
260
+ * @returns {Promise<void>}
261
+ */
262
+ sign(): Promise<void>;
263
+ /**
264
+ * @returns {Promise<void>}
265
+ */
266
+ sign_and_encrypt(): Promise<void>;
267
+ /**
268
+ * @returns {Uint8Array}
269
+ */
270
+ serialize(): Uint8Array;
271
+ /**
272
+ * @param {Uint8Array} buffer
273
+ * @returns {WasmTransaction}
274
+ */
275
+ static deserialize(buffer: Uint8Array): WasmTransaction;
276
+ /**
277
+ */
278
+ data: Uint8Array;
279
+ /**
280
+ */
281
+ readonly from: Array<any>;
282
+ /**
283
+ */
284
+ signature: string;
285
+ /**
286
+ */
287
+ timestamp: bigint;
288
+ /**
289
+ */
290
+ readonly to: Array<any>;
291
+ /**
292
+ */
293
+ readonly total_fees: bigint;
294
+ /**
295
+ */
296
+ txs_replacements: number;
297
+ /**
298
+ */
299
+ type: number;
300
+ }
301
+
302
+ export type InitInput = RequestInfo | URL | Response | BufferSource | WebAssembly.Module;
303
+
304
+ export interface InitOutput {
305
+ readonly memory: WebAssembly.Memory;
306
+ readonly __wbg_wasmpeer_free: (a: number) => void;
307
+ readonly wasmpeer_get_public_key: (a: number) => number;
308
+ readonly wasmpeer_get_key_list: (a: number) => number;
309
+ readonly wasmpeer_get_peer_index: (a: number) => number;
310
+ readonly wasmpeer_new: (a: number) => number;
311
+ readonly wasmpeer_get_sync_type: (a: number) => number;
312
+ readonly wasmpeer_get_services: (a: number) => number;
313
+ readonly wasmpeer_set_services: (a: number, b: number) => void;
314
+ readonly wasmpeer_has_service: (a: number, b: number) => number;
315
+ readonly wasmpeer_is_main_peer: (a: number) => number;
316
+ readonly __wbg_saitowasm_free: (a: number) => void;
317
+ readonly initialize: (a: number) => number;
318
+ readonly create_transaction: (a: number, b: number, c: number, d: number) => number;
319
+ readonly get_latest_block_hash: () => number;
320
+ readonly process_new_peer: (a: number, b: number) => number;
321
+ readonly process_peer_disconnection: (a: number) => number;
322
+ readonly process_msg_buffer_from_peer: (a: number, b: number) => number;
323
+ readonly process_fetched_block: (a: number, b: number, c: number) => number;
324
+ readonly process_timer_event: (a: number) => number;
325
+ readonly hash: (a: number) => number;
326
+ readonly sign_buffer: (a: number, b: number) => number;
327
+ readonly verify_signature: (a: number, b: number, c: number) => number;
328
+ readonly get_peers: () => number;
329
+ readonly get_peer: (a: number) => number;
330
+ readonly get_public_key: () => number;
331
+ readonly get_private_key: () => number;
332
+ readonly get_pending_txs: () => number;
333
+ readonly get_balance: (a: number) => number;
334
+ readonly generate_private_key: () => number;
335
+ readonly generate_public_key: (a: number) => number;
336
+ readonly propagate_transaction: (a: number) => number;
337
+ readonly send_api_call: (a: number, b: number, c: number) => number;
338
+ readonly send_api_success: (a: number, b: number, c: number) => number;
339
+ readonly send_api_error: (a: number, b: number, c: number) => number;
340
+ readonly propagate_services: (a: number, b: number) => number;
341
+ readonly __wbg_wasmtransaction_free: (a: number) => void;
342
+ readonly wasmtransaction_new: () => number;
343
+ readonly wasmtransaction_signature: (a: number) => number;
344
+ readonly wasmtransaction_set_signature: (a: number, b: number) => void;
345
+ readonly wasmtransaction_add_to_slip: (a: number, b: number) => void;
346
+ readonly wasmtransaction_add_from_slip: (a: number, b: number) => void;
347
+ readonly wasmtransaction_get_txs_replacements: (a: number) => number;
348
+ readonly wasmtransaction_set_txs_replacements: (a: number, b: number) => void;
349
+ readonly wasmtransaction_to: (a: number) => number;
350
+ readonly wasmtransaction_from: (a: number) => number;
351
+ readonly wasmtransaction_is_from: (a: number, b: number) => number;
352
+ readonly wasmtransaction_is_to: (a: number, b: number) => number;
353
+ readonly wasmtransaction_get_data: (a: number) => number;
354
+ readonly wasmtransaction_set_data: (a: number, b: number) => void;
355
+ readonly wasmtransaction_get_timestamp: (a: number) => number;
356
+ readonly wasmtransaction_set_timestamp: (a: number, b: number) => void;
357
+ readonly wasmtransaction_sign: (a: number) => number;
358
+ readonly wasmtransaction_sign_and_encrypt: (a: number) => number;
359
+ readonly wasmtransaction_get_type: (a: number) => number;
360
+ readonly wasmtransaction_set_type: (a: number, b: number) => void;
361
+ readonly wasmtransaction_total_fees: (a: number) => number;
362
+ readonly wasmtransaction_serialize: (a: number) => number;
363
+ readonly wasmtransaction_deserialize: (a: number, b: number) => void;
364
+ readonly __wbg_wasmblock_free: (a: number) => void;
365
+ readonly wasmblock_new: () => number;
366
+ readonly wasmblock_get_transactions: (a: number) => number;
367
+ readonly wasmblock_get_id: (a: number) => number;
368
+ readonly wasmblock_set_id: (a: number, b: number) => void;
369
+ readonly wasmblock_get_timestamp: (a: number) => number;
370
+ readonly wasmblock_set_timestamp: (a: number, b: number) => void;
371
+ readonly wasmblock_get_previous_block_hash: (a: number) => number;
372
+ readonly wasmblock_set_previous_block_hash: (a: number, b: number) => void;
373
+ readonly wasmblock_set_creator: (a: number, b: number) => void;
374
+ readonly wasmblock_get_creator: (a: number) => number;
375
+ readonly wasmblock_get_type: (a: number) => number;
376
+ readonly wasmblock_set_type: (a: number, b: number) => void;
377
+ readonly wasmblock_get_hash: (a: number) => number;
378
+ readonly wasmblock_serialize: (a: number) => number;
379
+ readonly __wbg_wasmslip_free: (a: number) => void;
380
+ readonly wasmslip_amount: (a: number) => number;
381
+ readonly wasmslip_set_amount: (a: number, b: number) => void;
382
+ readonly wasmslip_slip_type: (a: number) => number;
383
+ readonly wasmslip_set_slip_type: (a: number, b: number) => void;
384
+ readonly wasmslip_public_key: (a: number) => number;
385
+ readonly wasmslip_set_public_key: (a: number, b: number) => void;
386
+ readonly wasmslip_slip_index: (a: number) => number;
387
+ readonly wasmslip_set_slip_index: (a: number, b: number) => void;
388
+ readonly wasmslip_block_id: (a: number) => number;
389
+ readonly wasmslip_set_block_id: (a: number, b: number) => void;
390
+ readonly wasmslip_tx_ordinal: (a: number) => number;
391
+ readonly wasmslip_set_tx_ordinal: (a: number, b: number) => void;
392
+ readonly wasmslip_set_utxo_key: (a: number, b: number) => void;
393
+ readonly wasmslip_utxo_key: (a: number) => number;
394
+ readonly wasmslip_new: () => number;
395
+ readonly rustsecp256k1_v0_8_0_context_create: (a: number) => number;
396
+ readonly rustsecp256k1_v0_8_0_context_destroy: (a: number) => void;
397
+ readonly rustsecp256k1_v0_8_0_default_illegal_callback_fn: (a: number, b: number) => void;
398
+ readonly rustsecp256k1_v0_8_0_default_error_callback_fn: (a: number, b: number) => void;
399
+ readonly __wbindgen_malloc: (a: number) => number;
400
+ readonly __wbindgen_realloc: (a: number, b: number, c: number) => number;
401
+ readonly __wbindgen_export_2: WebAssembly.Table;
402
+ readonly _dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h8076d666f1890939: (a: number, b: number, c: number) => void;
403
+ readonly __wbindgen_add_to_stack_pointer: (a: number) => number;
404
+ readonly __wbindgen_exn_store: (a: number) => void;
405
+ readonly __wbindgen_free: (a: number, b: number) => void;
406
+ readonly wasm_bindgen__convert__closures__invoke2_mut__hc395ea0890780f14: (a: number, b: number, c: number, d: number) => void;
407
+ }
408
+
409
+ export type SyncInitInput = BufferSource | WebAssembly.Module;
410
+ /**
411
+ * Instantiates the given `module`, which can either be bytes or
412
+ * a precompiled `WebAssembly.Module`.
413
+ *
414
+ * @param {SyncInitInput} module
415
+ *
416
+ * @returns {InitOutput}
417
+ */
418
+ export function initSync(module: SyncInitInput): InitOutput;
419
+
420
+ /**
421
+ * If `module_or_path` is {RequestInfo} or {URL}, makes a request and
422
+ * for everything else, calls `WebAssembly.instantiate` directly.
423
+ *
424
+ * @param {InitInput | Promise<InitInput>} module_or_path
425
+ *
426
+ * @returns {Promise<InitOutput>}
427
+ */
428
+ export default function init (module_or_path?: InitInput | Promise<InitInput>): Promise<InitOutput>;