@unlink-xyz/core 0.1.2 → 0.1.3-canary.0877bfe

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 (350) hide show
  1. package/dist/account/{zkAccount.d.ts → account.d.ts} +7 -5
  2. package/dist/account/account.d.ts.map +1 -0
  3. package/dist/account/{zkAccount.js → account.js} +57 -43
  4. package/dist/browser/index.js +108202 -0
  5. package/dist/browser/index.js.map +1 -0
  6. package/dist/circuits.json +74 -0
  7. package/dist/clients/broadcaster.d.ts +7 -2
  8. package/dist/clients/broadcaster.d.ts.map +1 -1
  9. package/dist/clients/broadcaster.js +9 -1
  10. package/dist/clients/http.d.ts +6 -0
  11. package/dist/clients/http.d.ts.map +1 -1
  12. package/dist/clients/http.js +24 -9
  13. package/dist/clients/indexer.d.ts +11 -0
  14. package/dist/clients/indexer.d.ts.map +1 -1
  15. package/dist/clients/indexer.js +40 -11
  16. package/dist/config.d.ts +28 -9
  17. package/dist/config.d.ts.map +1 -1
  18. package/dist/config.js +33 -26
  19. package/dist/constants.d.ts +6 -0
  20. package/dist/constants.d.ts.map +1 -0
  21. package/dist/constants.js +5 -0
  22. package/dist/core.d.ts.map +1 -1
  23. package/dist/core.js +5 -2
  24. package/dist/crypto-adapters/auto-init.d.ts +2 -0
  25. package/dist/crypto-adapters/auto-init.d.ts.map +1 -0
  26. package/dist/crypto-adapters/auto-init.js +7 -0
  27. package/dist/crypto-adapters/index.d.ts +22 -0
  28. package/dist/crypto-adapters/index.d.ts.map +1 -0
  29. package/dist/crypto-adapters/index.js +47 -0
  30. package/dist/crypto-adapters/polyfills.d.ts +5 -0
  31. package/dist/crypto-adapters/polyfills.d.ts.map +1 -0
  32. package/dist/crypto-adapters/polyfills.js +8 -0
  33. package/dist/errors.d.ts +9 -0
  34. package/dist/errors.d.ts.map +1 -1
  35. package/dist/errors.js +18 -0
  36. package/dist/history/index.d.ts +3 -0
  37. package/dist/history/index.d.ts.map +1 -0
  38. package/dist/history/index.js +2 -0
  39. package/dist/history/service.d.ts +46 -0
  40. package/dist/history/service.d.ts.map +1 -0
  41. package/dist/history/service.js +354 -0
  42. package/dist/history/types.d.ts +21 -0
  43. package/dist/history/types.d.ts.map +1 -0
  44. package/dist/index.d.ts +12 -5
  45. package/dist/index.d.ts.map +1 -1
  46. package/dist/index.js +11 -4
  47. package/dist/keys/address.d.ts +13 -0
  48. package/dist/keys/address.d.ts.map +1 -0
  49. package/dist/keys/address.js +55 -0
  50. package/dist/keys/derive.d.ts +37 -0
  51. package/dist/keys/derive.d.ts.map +1 -0
  52. package/dist/keys/derive.js +112 -0
  53. package/dist/keys/hex.d.ts +17 -0
  54. package/dist/keys/hex.d.ts.map +1 -0
  55. package/dist/keys/hex.js +66 -0
  56. package/dist/keys/index.d.ts +5 -0
  57. package/dist/keys/index.d.ts.map +1 -0
  58. package/dist/keys/index.js +4 -0
  59. package/dist/keys/mnemonic.d.ts +8 -0
  60. package/dist/keys/mnemonic.d.ts.map +1 -0
  61. package/dist/keys/mnemonic.js +23 -0
  62. package/dist/keys.d.ts +4 -1
  63. package/dist/keys.d.ts.map +1 -1
  64. package/dist/keys.js +4 -0
  65. package/dist/prover/config.d.ts +1 -15
  66. package/dist/prover/config.d.ts.map +1 -1
  67. package/dist/prover/config.js +1 -11
  68. package/dist/prover/prover.d.ts +15 -4
  69. package/dist/prover/prover.d.ts.map +1 -1
  70. package/dist/prover/prover.js +115 -98
  71. package/dist/prover/registry.d.ts +3 -30
  72. package/dist/prover/registry.d.ts.map +1 -1
  73. package/dist/prover/registry.js +12 -51
  74. package/dist/state/merkle/hydrator.d.ts.map +1 -1
  75. package/dist/state/merkle/hydrator.js +3 -2
  76. package/dist/state/merkle/index.d.ts +1 -1
  77. package/dist/state/merkle/index.d.ts.map +1 -1
  78. package/dist/state/merkle/index.js +1 -1
  79. package/dist/state/merkle/merkle-tree.d.ts +8 -0
  80. package/dist/state/merkle/merkle-tree.d.ts.map +1 -1
  81. package/dist/state/merkle/merkle-tree.js +16 -7
  82. package/dist/state/store/ciphertext-store.d.ts +4 -0
  83. package/dist/state/store/ciphertext-store.d.ts.map +1 -1
  84. package/dist/state/store/ciphertext-store.js +12 -0
  85. package/dist/state/store/history-store.d.ts +24 -0
  86. package/dist/state/store/history-store.d.ts.map +1 -0
  87. package/dist/state/store/history-store.js +53 -0
  88. package/dist/state/store/index.d.ts +3 -2
  89. package/dist/state/store/index.d.ts.map +1 -1
  90. package/dist/state/store/index.js +1 -0
  91. package/dist/state/store/job-store.d.ts +7 -7
  92. package/dist/state/store/job-store.d.ts.map +1 -1
  93. package/dist/state/store/job-store.js +65 -39
  94. package/dist/state/store/jobs.d.ts +65 -18
  95. package/dist/state/store/jobs.d.ts.map +1 -1
  96. package/dist/state/store/leaf-store.d.ts.map +1 -1
  97. package/dist/state/store/leaf-store.js +0 -3
  98. package/dist/state/store/note-store.d.ts +7 -7
  99. package/dist/state/store/note-store.d.ts.map +1 -1
  100. package/dist/state/store/note-store.js +38 -34
  101. package/dist/state/store/nullifier-store.d.ts +9 -0
  102. package/dist/state/store/nullifier-store.d.ts.map +1 -1
  103. package/dist/state/store/nullifier-store.js +32 -2
  104. package/dist/state/store/records.d.ts +31 -2
  105. package/dist/state/store/records.d.ts.map +1 -1
  106. package/dist/state/store/root-store.d.ts.map +1 -1
  107. package/dist/state/store/root-store.js +0 -4
  108. package/dist/state/store/store.d.ts +61 -27
  109. package/dist/state/store/store.d.ts.map +1 -1
  110. package/dist/state/store/store.js +92 -1
  111. package/dist/storage/indexeddb.js +1 -1
  112. package/dist/storage/memory.d.ts.map +1 -1
  113. package/dist/storage/memory.js +5 -1
  114. package/dist/transactions/deposit.d.ts +12 -15
  115. package/dist/transactions/deposit.d.ts.map +1 -1
  116. package/dist/transactions/deposit.js +203 -152
  117. package/dist/transactions/index.d.ts +7 -4
  118. package/dist/transactions/index.d.ts.map +1 -1
  119. package/dist/transactions/index.js +7 -2
  120. package/dist/transactions/note-selection.d.ts +17 -0
  121. package/dist/transactions/note-selection.d.ts.map +1 -0
  122. package/dist/transactions/note-selection.js +201 -0
  123. package/dist/transactions/note-sync.d.ts +5 -33
  124. package/dist/transactions/note-sync.d.ts.map +1 -1
  125. package/dist/transactions/note-sync.js +320 -155
  126. package/dist/transactions/reconcile.d.ts +10 -12
  127. package/dist/transactions/reconcile.d.ts.map +1 -1
  128. package/dist/transactions/reconcile.js +53 -7
  129. package/dist/transactions/transact.d.ts +13 -24
  130. package/dist/transactions/transact.d.ts.map +1 -1
  131. package/dist/transactions/transact.js +393 -507
  132. package/dist/transactions/transaction-planner.d.ts +34 -0
  133. package/dist/transactions/transaction-planner.d.ts.map +1 -0
  134. package/dist/transactions/transaction-planner.js +116 -0
  135. package/dist/transactions/transfer-planner.d.ts +36 -0
  136. package/dist/transactions/transfer-planner.d.ts.map +1 -0
  137. package/dist/transactions/transfer-planner.js +85 -0
  138. package/dist/transactions/types/deposit.d.ts +67 -0
  139. package/dist/transactions/types/deposit.d.ts.map +1 -0
  140. package/dist/transactions/types/domain.d.ts +67 -0
  141. package/dist/transactions/types/domain.d.ts.map +1 -0
  142. package/dist/transactions/types/domain.js +4 -0
  143. package/dist/transactions/types/index.d.ts +18 -0
  144. package/dist/transactions/types/index.d.ts.map +1 -0
  145. package/dist/transactions/types/index.js +17 -0
  146. package/dist/transactions/types/options.d.ts +45 -0
  147. package/dist/transactions/types/options.d.ts.map +1 -0
  148. package/dist/transactions/types/options.js +1 -0
  149. package/dist/transactions/types/planning.d.ts +80 -0
  150. package/dist/transactions/types/planning.d.ts.map +1 -0
  151. package/dist/transactions/types/planning.js +1 -0
  152. package/dist/transactions/types/state-stores.d.ts +103 -0
  153. package/dist/transactions/types/state-stores.d.ts.map +1 -0
  154. package/dist/transactions/types/state-stores.js +1 -0
  155. package/dist/transactions/types/transact.d.ts +76 -0
  156. package/dist/transactions/types/transact.d.ts.map +1 -0
  157. package/dist/transactions/types/transact.js +1 -0
  158. package/dist/transactions/withdrawal-planner.d.ts +58 -0
  159. package/dist/transactions/withdrawal-planner.d.ts.map +1 -0
  160. package/dist/transactions/withdrawal-planner.js +128 -0
  161. package/dist/tsconfig.tsbuildinfo +1 -1
  162. package/dist/tsup.browser.config.d.ts +7 -0
  163. package/dist/tsup.browser.config.d.ts.map +1 -0
  164. package/dist/tsup.browser.config.js +34 -0
  165. package/dist/utils/amounts.d.ts +39 -0
  166. package/dist/utils/amounts.d.ts.map +1 -0
  167. package/dist/utils/amounts.js +89 -0
  168. package/dist/utils/async.d.ts +9 -0
  169. package/dist/utils/async.d.ts.map +1 -1
  170. package/dist/utils/async.js +24 -0
  171. package/dist/utils/bigint.js +7 -7
  172. package/dist/utils/crypto.d.ts +11 -5
  173. package/dist/utils/crypto.d.ts.map +1 -1
  174. package/dist/utils/crypto.js +12 -6
  175. package/dist/utils/format.d.ts +25 -0
  176. package/dist/utils/format.d.ts.map +1 -0
  177. package/dist/utils/format.js +33 -0
  178. package/dist/utils/json-codec.js +1 -1
  179. package/dist/utils/notes.d.ts +15 -0
  180. package/dist/utils/notes.d.ts.map +1 -0
  181. package/dist/utils/notes.js +14 -0
  182. package/dist/utils/polling.d.ts +5 -0
  183. package/dist/utils/polling.d.ts.map +1 -1
  184. package/dist/utils/polling.js +5 -0
  185. package/dist/utils/random.d.ts +13 -0
  186. package/dist/utils/random.d.ts.map +1 -0
  187. package/dist/utils/random.js +27 -0
  188. package/dist/utils/secure-memory.d.ts +25 -0
  189. package/dist/utils/secure-memory.d.ts.map +1 -0
  190. package/dist/utils/secure-memory.js +28 -0
  191. package/dist/utils/signature.d.ts +6 -0
  192. package/dist/utils/signature.d.ts.map +1 -1
  193. package/dist/utils/signature.js +8 -6
  194. package/dist/utils/validators.d.ts +21 -10
  195. package/dist/utils/validators.d.ts.map +1 -1
  196. package/dist/utils/validators.js +37 -11
  197. package/dist/vitest.config.d.ts +3 -0
  198. package/dist/vitest.config.d.ts.map +1 -0
  199. package/dist/vitest.config.js +13 -0
  200. package/package.json +28 -11
  201. package/.eslintrc.json +0 -4
  202. package/account/zkAccount.test.ts +0 -316
  203. package/account/zkAccount.ts +0 -222
  204. package/clients/broadcaster.ts +0 -67
  205. package/clients/http.ts +0 -94
  206. package/clients/indexer.ts +0 -150
  207. package/config.ts +0 -39
  208. package/core.ts +0 -17
  209. package/dist/account/railgun-imports-prototype.d.ts +0 -12
  210. package/dist/account/railgun-imports-prototype.d.ts.map +0 -1
  211. package/dist/account/railgun-imports-prototype.js +0 -30
  212. package/dist/account/zkAccount.d.ts.map +0 -1
  213. package/dist/key-derivation/babyjubjub.d.ts +0 -9
  214. package/dist/key-derivation/babyjubjub.d.ts.map +0 -1
  215. package/dist/key-derivation/babyjubjub.js +0 -9
  216. package/dist/key-derivation/bech32.d.ts +0 -22
  217. package/dist/key-derivation/bech32.d.ts.map +0 -1
  218. package/dist/key-derivation/bech32.js +0 -86
  219. package/dist/key-derivation/bip32.d.ts +0 -17
  220. package/dist/key-derivation/bip32.d.ts.map +0 -1
  221. package/dist/key-derivation/bip32.js +0 -41
  222. package/dist/key-derivation/bip39.d.ts +0 -22
  223. package/dist/key-derivation/bip39.d.ts.map +0 -1
  224. package/dist/key-derivation/bip39.js +0 -56
  225. package/dist/key-derivation/bytes.d.ts +0 -19
  226. package/dist/key-derivation/bytes.d.ts.map +0 -1
  227. package/dist/key-derivation/bytes.js +0 -92
  228. package/dist/key-derivation/hash.d.ts +0 -3
  229. package/dist/key-derivation/hash.d.ts.map +0 -1
  230. package/dist/key-derivation/hash.js +0 -10
  231. package/dist/key-derivation/index.d.ts +0 -8
  232. package/dist/key-derivation/index.d.ts.map +0 -1
  233. package/dist/key-derivation/index.js +0 -7
  234. package/dist/key-derivation/wallet-node.d.ts +0 -45
  235. package/dist/key-derivation/wallet-node.d.ts.map +0 -1
  236. package/dist/key-derivation/wallet-node.js +0 -109
  237. package/dist/state/ciphertext-store.d.ts +0 -12
  238. package/dist/state/ciphertext-store.d.ts.map +0 -1
  239. package/dist/state/ciphertext-store.js +0 -25
  240. package/dist/state/hydrator.d.ts +0 -16
  241. package/dist/state/hydrator.d.ts.map +0 -1
  242. package/dist/state/hydrator.js +0 -18
  243. package/dist/state/job-store.d.ts +0 -12
  244. package/dist/state/job-store.d.ts.map +0 -1
  245. package/dist/state/job-store.js +0 -118
  246. package/dist/state/jobs.d.ts +0 -50
  247. package/dist/state/jobs.d.ts.map +0 -1
  248. package/dist/state/jobs.js +0 -1
  249. package/dist/state/leaf-store.d.ts +0 -17
  250. package/dist/state/leaf-store.d.ts.map +0 -1
  251. package/dist/state/leaf-store.js +0 -35
  252. package/dist/state/merkle-tree.d.ts +0 -34
  253. package/dist/state/merkle-tree.d.ts.map +0 -1
  254. package/dist/state/merkle-tree.js +0 -104
  255. package/dist/state/note-store.d.ts +0 -37
  256. package/dist/state/note-store.d.ts.map +0 -1
  257. package/dist/state/note-store.js +0 -133
  258. package/dist/state/nullifier-store.d.ts +0 -13
  259. package/dist/state/nullifier-store.d.ts.map +0 -1
  260. package/dist/state/nullifier-store.js +0 -21
  261. package/dist/state/records.d.ts +0 -57
  262. package/dist/state/records.d.ts.map +0 -1
  263. package/dist/state/root-store.d.ts +0 -13
  264. package/dist/state/root-store.d.ts.map +0 -1
  265. package/dist/state/root-store.js +0 -30
  266. package/dist/state/store.d.ts +0 -26
  267. package/dist/state/store.d.ts.map +0 -1
  268. package/dist/state/store.js +0 -19
  269. package/dist/state.d.ts +0 -83
  270. package/dist/state.d.ts.map +0 -1
  271. package/dist/state.js +0 -171
  272. package/dist/transactions/shield.d.ts +0 -5
  273. package/dist/transactions/shield.d.ts.map +0 -1
  274. package/dist/transactions/shield.js +0 -93
  275. package/dist/transactions/types.d.ts +0 -114
  276. package/dist/transactions/types.d.ts.map +0 -1
  277. package/dist/transactions/utils.d.ts +0 -10
  278. package/dist/transactions/utils.d.ts.map +0 -1
  279. package/dist/transactions/utils.js +0 -17
  280. package/dist/utils/time.d.ts +0 -2
  281. package/dist/utils/time.d.ts.map +0 -1
  282. package/dist/utils/time.js +0 -3
  283. package/dist/utils/witness.d.ts +0 -11
  284. package/dist/utils/witness.d.ts.map +0 -1
  285. package/dist/utils/witness.js +0 -19
  286. package/errors.ts +0 -20
  287. package/index.ts +0 -17
  288. package/key-derivation/babyjubjub.ts +0 -11
  289. package/key-derivation/bech32.test.ts +0 -90
  290. package/key-derivation/bech32.ts +0 -124
  291. package/key-derivation/bip32.ts +0 -56
  292. package/key-derivation/bip39.ts +0 -76
  293. package/key-derivation/bytes.ts +0 -118
  294. package/key-derivation/hash.ts +0 -13
  295. package/key-derivation/index.ts +0 -7
  296. package/key-derivation/wallet-node.ts +0 -155
  297. package/keys.ts +0 -47
  298. package/prover/config.ts +0 -104
  299. package/prover/index.ts +0 -1
  300. package/prover/prover.integration.test.ts +0 -162
  301. package/prover/prover.test.ts +0 -309
  302. package/prover/prover.ts +0 -405
  303. package/prover/registry.test.ts +0 -90
  304. package/prover/registry.ts +0 -82
  305. package/schema.ts +0 -17
  306. package/setup-artifacts.sh +0 -57
  307. package/state/index.ts +0 -2
  308. package/state/merkle/hydrator.ts +0 -69
  309. package/state/merkle/index.ts +0 -12
  310. package/state/merkle/merkle-tree.test.ts +0 -50
  311. package/state/merkle/merkle-tree.ts +0 -163
  312. package/state/store/ciphertext-store.ts +0 -28
  313. package/state/store/index.ts +0 -24
  314. package/state/store/job-store.ts +0 -162
  315. package/state/store/jobs.ts +0 -64
  316. package/state/store/leaf-store.ts +0 -39
  317. package/state/store/note-store.ts +0 -177
  318. package/state/store/nullifier-store.ts +0 -39
  319. package/state/store/records.ts +0 -61
  320. package/state/store/root-store.ts +0 -34
  321. package/state/store/store.ts +0 -25
  322. package/state.test.ts +0 -235
  323. package/storage/index.ts +0 -3
  324. package/storage/indexeddb.test.ts +0 -99
  325. package/storage/indexeddb.ts +0 -235
  326. package/storage/memory.test.ts +0 -59
  327. package/storage/memory.ts +0 -93
  328. package/transactions/deposit.test.ts +0 -160
  329. package/transactions/deposit.ts +0 -227
  330. package/transactions/index.ts +0 -20
  331. package/transactions/note-sync.test.ts +0 -155
  332. package/transactions/note-sync.ts +0 -452
  333. package/transactions/reconcile.ts +0 -73
  334. package/transactions/transact.test.ts +0 -451
  335. package/transactions/transact.ts +0 -811
  336. package/transactions/types.ts +0 -141
  337. package/tsconfig.json +0 -14
  338. package/types/global.d.ts +0 -15
  339. package/types.ts +0 -24
  340. package/utils/async.ts +0 -15
  341. package/utils/bigint.ts +0 -34
  342. package/utils/crypto.test.ts +0 -69
  343. package/utils/crypto.ts +0 -58
  344. package/utils/json-codec.ts +0 -38
  345. package/utils/polling.ts +0 -6
  346. package/utils/signature.ts +0 -16
  347. package/utils/validators.test.ts +0 -64
  348. package/utils/validators.ts +0 -86
  349. /package/dist/{transactions → history}/types.js +0 -0
  350. /package/dist/{state/records.js → transactions/types/deposit.js} +0 -0
@@ -1,30 +0,0 @@
1
- import { CoreError } from "../errors.js";
2
- import { keys, validateKey } from "../keys.js";
3
- import { getJson, putJson } from "../utils/json-codec.js";
4
- import { ensureChainId } from "../utils/validators.js";
5
- export function createRootStore(storage) {
6
- return {
7
- /**
8
- * Persist a historical root snapshot for proof generation.
9
- */
10
- async putRoot(root) {
11
- ensureChainId(root.chainId);
12
- if (typeof root.root !== "string" || root.root.length === 0) {
13
- throw new CoreError("root value must be a non-empty string");
14
- }
15
- const key = keys.root(root.chainId, root.root);
16
- validateKey(key);
17
- await putJson(storage, key, root);
18
- },
19
- /**
20
- * Retrieve a root snapshot by Merkle root value.
21
- */
22
- async getRoot(chainId, value) {
23
- ensureChainId(chainId);
24
- if (typeof value !== "string" || value.length === 0) {
25
- throw new CoreError("root value must be a non-empty string");
26
- }
27
- return getJson(storage, keys.root(chainId, value));
28
- },
29
- };
30
- }
@@ -1,26 +0,0 @@
1
- import type { Storage } from "../types.js";
2
- export declare function createStateStore(storage: Storage): {
3
- putCiphertext(chainId: number, index: number, payload: Uint8Array): Promise<void>;
4
- getCiphertext(chainId: number, index: number): Promise<Uint8Array<ArrayBuffer> | null>;
5
- putRoot(root: import("./records.js").RootRecord): Promise<void>;
6
- getRoot(chainId: number, value: string): Promise<import("./records.js").RootRecord | null>;
7
- putLeaf(leaf: import("./records.js").LeafRecord): Promise<void>;
8
- getLeaf(chainId: number, index: number): Promise<import("./records.js").LeafRecord | null>;
9
- clearLeaves(chainId: number): Promise<void>;
10
- putNullifier(nullifier: import("./records.js").NullifierRecord): Promise<void>;
11
- getNullifier(chainId: number, value: string): Promise<import("./records.js").NullifierRecord | null>;
12
- putNote(note: import("./records.js").NoteInsert): Promise<void>;
13
- getNote(chainId: number, index: number): Promise<import("./records.js").NoteRecord | null>;
14
- listNotes(options?: {
15
- chainId?: number;
16
- mpk?: string;
17
- token?: string;
18
- includeSpent?: boolean;
19
- }): Promise<import("./records.js").NoteRecord[]>;
20
- markNoteSpent(chainId: number, index: number, spentAt?: number): Promise<import("./records.js").NoteRecord>;
21
- markNoteUnspent(chainId: number, index: number): Promise<import("./records.js").NoteRecord>;
22
- getZkBalances(mpk: string, options?: {
23
- chainId?: number;
24
- }): Promise<Record<string, bigint>>;
25
- };
26
- //# sourceMappingURL=store.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../state/store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAO3C,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO;;;;;;;;;;;;;eAe6/C,CAAC;WAAqB,CAAC;aAAuB,CAAC;oBAA8B,CAAC;;;;;eAA+qE,CAAC;;EAD3yH"}
@@ -1,19 +0,0 @@
1
- import { createCiphertextStore } from "./ciphertext-store.js";
2
- import { createLeafStore } from "./leaf-store.js";
3
- import { createNoteStore } from "./note-store.js";
4
- import { createNullifierStore } from "./nullifier-store.js";
5
- import { createRootStore } from "./root-store.js";
6
- export function createStateStore(storage) {
7
- const notes = createNoteStore(storage);
8
- const nullifiers = createNullifierStore(storage);
9
- const leaves = createLeafStore(storage);
10
- const roots = createRootStore(storage);
11
- const ciphertexts = createCiphertextStore(storage);
12
- return {
13
- ...notes,
14
- ...nullifiers,
15
- ...leaves,
16
- ...roots,
17
- ...ciphertexts,
18
- };
19
- }
package/dist/state.d.ts DELETED
@@ -1,83 +0,0 @@
1
- import type { Storage } from './types.js';
2
- export declare function ensurePositiveInt(label: string, value: number): void;
3
- export declare function ensureChainId(chainId: number): void;
4
- /**
5
- * Locally cached metadata for a shielded note we consider owned.
6
- */
7
- export type NoteRecord = {
8
- chainId: number;
9
- /** Leaf index within the on-chain tree (zero-based, monotonic). */
10
- index: number;
11
- /** Canonical asset identifier, typically the ERC-20 address lowercased. */
12
- token: string;
13
- /** Amount expressed as an unsigned BigInt serialized to a base-10 string. */
14
- value: string;
15
- /** Commitment stored on-chain (Poseidon(note)). */
16
- commitment: string;
17
- /** Nullifier public key derived from the account's master keys. */
18
- npk: string;
19
- /**
20
- * Master public key for the account (Poseidon(spendingPk.public, nullifyingKey)).
21
- * Acts as the stable account identifier when grouping notes locally.
22
- */
23
- mpk: string;
24
- /** Randomizer used when committing the note. */
25
- random: string;
26
- /** Nullifier that will be revealed when the note is spent. */
27
- nullifier: string;
28
- /** Optional timestamp when the note was marked as spent. */
29
- spentAt?: number;
30
- };
31
- /**
32
- * Details about a nullifier observed on-chain, whether or not we own the note.
33
- */
34
- export type NullifierRecord = {
35
- chainId: number;
36
- /** Nullifier value (expected to match NoteRecord.nullifier). */
37
- nullifier: string;
38
- /** Leaf index of the corresponding note when known. */
39
- noteIndex?: number;
40
- };
41
- /**
42
- * Public information about a leaf commitment inserted into the pool's tree.
43
- */
44
- export type LeafRecord = {
45
- chainId: number;
46
- /** Leaf index inside the tree (zero-based). */
47
- index: number;
48
- /** Commitment value stored in the tree. */
49
- commitment: string;
50
- };
51
- /**
52
- * Historical merkle root snapshot used for proof construction.
53
- */
54
- export type RootRecord = {
55
- chainId: number;
56
- /** Sequence number emitted by the pool contract; increments every time the root updates. */
57
- sequence: number;
58
- /** Merkle root value committed on-chain. */
59
- root: string;
60
- };
61
- export declare function createStateStore(storage: Storage): {
62
- putNote(note: NoteRecord): Promise<void>;
63
- getNote(chainId: number, index: number): Promise<NoteRecord | null>;
64
- listNotes(options?: {
65
- chainId?: number;
66
- mpk?: string;
67
- includeSpent?: boolean;
68
- }): Promise<NoteRecord[]>;
69
- markNoteSpent(chainId: number, index: number, spentAt?: number): Promise<NoteRecord>;
70
- markNoteUnspent(chainId: number, index: number): Promise<NoteRecord>;
71
- getShieldedBalance(mpk: string, options?: {
72
- chainId?: number;
73
- }): Promise<Record<string, bigint>>;
74
- putNullifier(nullifier: NullifierRecord): Promise<void>;
75
- getNullifier(chainId: number, value: string): Promise<NullifierRecord | null>;
76
- putLeaf(leaf: LeafRecord): Promise<void>;
77
- getLeaf(chainId: number, index: number): Promise<LeafRecord | null>;
78
- putRoot(root: RootRecord): Promise<void>;
79
- getRoot(chainId: number, sequence: number): Promise<RootRecord | null>;
80
- putCiphertext(chainId: number, index: number, payload: Uint8Array): Promise<void>;
81
- getCiphertext(chainId: number, index: number): Promise<Uint8Array<ArrayBuffer> | null>;
82
- };
83
- //# sourceMappingURL=state.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../state.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAW,OAAO,EAAE,MAAM,YAAY,CAAC;AASnD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAI7D;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,QAI5C;AAkBD;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,mEAAmE;IACnE,KAAK,EAAE,MAAM,CAAC;IACd,2EAA2E;IAC3E,KAAK,EAAE,MAAM,CAAC;IACd,6EAA6E;IAC7E,KAAK,EAAE,MAAM,CAAC;IACd,mDAAmD;IACnD,UAAU,EAAE,MAAM,CAAC;IACnB,mEAAmE;IACnE,GAAG,EAAE,MAAM,CAAC;IACZ;;;OAGG;IACH,GAAG,EAAE,MAAM,CAAC;IACZ,gDAAgD;IAChD,MAAM,EAAE,MAAM,CAAC;IACf,8DAA8D;IAC9D,SAAS,EAAE,MAAM,CAAC;IAElB,4DAA4D;IAC5D,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,gEAAgE;IAChE,SAAS,EAAE,MAAM,CAAC;IAClB,uDAAuD;IACvD,SAAS,CAAC,EAAE,MAAM,CAAC;CAIpB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,+CAA+C;IAC/C,KAAK,EAAE,MAAM,CAAC;IACd,2CAA2C;IAC3C,UAAU,EAAE,MAAM,CAAC;CAIpB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,4FAA4F;IAC5F,QAAQ,EAAE,MAAM,CAAC;IACjB,4CAA4C;IAC5C,IAAI,EAAE,MAAM,CAAC;CAGd,CAAC;AAEF,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO;kBAEzB,UAAU;qBAsCP,MAAM,SAAS,MAAM;wBAOjC;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,OAAO,CAAA;KAAE;2BAuB1D,MAAM,SACR,MAAM;6BAkBgB,MAAM,SAAS,MAAM;4BAiB7C,MAAM,YACF;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE;4BAgBD,eAAe;0BASjB,MAAM,SAAS,MAAM;kBAK7B,UAAU;qBAMP,MAAM,SAAS,MAAM;kBAMxB,UAAU;qBAMP,MAAM,YAAY,MAAM;2BAMlB,MAAM,SAAS,MAAM,WAAW,UAAU;2BAQ1C,MAAM,SAAS,MAAM;EASrD"}
package/dist/state.js DELETED
@@ -1,171 +0,0 @@
1
- import { CoreError } from './errors.js';
2
- import { keys, validateKey } from './keys.js';
3
- import { decodeJson, encodeJson, getJson, putJson, } from './utils/json-codec.js';
4
- export function ensurePositiveInt(label, value) {
5
- if (!Number.isInteger(value) || value < 0) {
6
- throw new CoreError(`${label} must be a non-negative integer`);
7
- }
8
- }
9
- export function ensureChainId(chainId) {
10
- if (!Number.isInteger(chainId) || chainId <= 0) {
11
- throw new CoreError('chainId must be a positive integer');
12
- }
13
- }
14
- function ensureMpk(mpk) {
15
- if (typeof mpk !== 'string' || mpk.length === 0) {
16
- throw new CoreError('note mpk must be a non-empty string');
17
- }
18
- }
19
- function ensureBigIntString(label, value) {
20
- try {
21
- BigInt(value);
22
- }
23
- catch {
24
- throw new CoreError(`${label} must be a base-10 bigint string`);
25
- }
26
- }
27
- const emptyBytes = () => new Uint8Array(0);
28
- export function createStateStore(storage) {
29
- const store = {
30
- async putNote(note) {
31
- ensureChainId(note.chainId);
32
- ensurePositiveInt('note index', note.index);
33
- ensureMpk(note.mpk);
34
- ensureBigIntString('note value', note.value);
35
- if (note.spentAt !== undefined) {
36
- ensurePositiveInt('note spentAt', note.spentAt);
37
- }
38
- const noteKey = keys.note(note.chainId, note.index);
39
- const previous = await getJson(storage, noteKey);
40
- const ops = [
41
- { put: [noteKey, encodeJson(note)] },
42
- ];
43
- if (previous && previous.spentAt === undefined) {
44
- ops.push({
45
- del: keys.unspent(previous.chainId, previous.mpk, previous.index),
46
- });
47
- }
48
- if (note.spentAt === undefined) {
49
- ops.push({
50
- put: [
51
- keys.unspent(note.chainId, note.mpk, note.index),
52
- emptyBytes(),
53
- ],
54
- });
55
- }
56
- else {
57
- ops.push({
58
- del: keys.unspent(note.chainId, note.mpk, note.index),
59
- });
60
- }
61
- await storage.batch(ops);
62
- },
63
- async getNote(chainId, index) {
64
- ensureChainId(chainId);
65
- ensurePositiveInt('note index', index);
66
- return getJson(storage, keys.note(chainId, index));
67
- },
68
- async listNotes(options = {}) {
69
- const { chainId, mpk, includeSpent = true } = options;
70
- if (chainId !== undefined) {
71
- ensureChainId(chainId);
72
- }
73
- if (mpk !== undefined) {
74
- ensureMpk(mpk);
75
- }
76
- const prefix = chainId !== undefined ? `notes:${chainId}:` : 'notes:';
77
- const entries = await storage.iter({ prefix });
78
- return entries
79
- .map(({ value }) => decodeJson(value))
80
- .filter((note) => (chainId === undefined || note.chainId === chainId) &&
81
- (mpk === undefined || note.mpk === mpk) &&
82
- (includeSpent || note.spentAt === undefined));
83
- },
84
- async markNoteSpent(chainId, index, spentAt = Date.now()) {
85
- ensureChainId(chainId);
86
- ensurePositiveInt('note index', index);
87
- ensurePositiveInt('note spentAt', spentAt);
88
- const existing = await store.getNote(chainId, index);
89
- if (!existing) {
90
- throw new CoreError('note not found');
91
- }
92
- if (existing.spentAt === spentAt) {
93
- return existing;
94
- }
95
- const updated = { ...existing, spentAt };
96
- await store.putNote(updated);
97
- return updated;
98
- },
99
- async markNoteUnspent(chainId, index) {
100
- ensureChainId(chainId);
101
- ensurePositiveInt('note index', index);
102
- const existing = await store.getNote(chainId, index);
103
- if (!existing) {
104
- throw new CoreError('note not found');
105
- }
106
- if (existing.spentAt === undefined) {
107
- return existing;
108
- }
109
- const updated = { ...existing };
110
- delete updated.spentAt;
111
- await store.putNote(updated);
112
- return updated;
113
- },
114
- async getShieldedBalance(mpk, options = {}) {
115
- ensureMpk(mpk);
116
- const notes = await store.listNotes({
117
- chainId: options.chainId,
118
- mpk,
119
- includeSpent: false,
120
- });
121
- const totals = {};
122
- for (const note of notes) {
123
- const amount = BigInt(note.value);
124
- totals[note.token] = (totals[note.token] ?? 0n) + amount;
125
- }
126
- return totals;
127
- },
128
- async putNullifier(nullifier) {
129
- ensureChainId(nullifier.chainId);
130
- await putJson(storage, keys.nullifier(nullifier.chainId, nullifier.nullifier), nullifier);
131
- },
132
- async getNullifier(chainId, value) {
133
- ensureChainId(chainId);
134
- return getJson(storage, keys.nullifier(chainId, value));
135
- },
136
- async putLeaf(leaf) {
137
- ensureChainId(leaf.chainId);
138
- ensurePositiveInt('leaf index', leaf.index);
139
- await putJson(storage, keys.leaf(leaf.chainId, leaf.index), leaf);
140
- },
141
- async getLeaf(chainId, index) {
142
- ensureChainId(chainId);
143
- ensurePositiveInt('leaf index', index);
144
- return getJson(storage, keys.leaf(chainId, index));
145
- },
146
- async putRoot(root) {
147
- ensureChainId(root.chainId);
148
- ensurePositiveInt('root sequence', root.sequence);
149
- await putJson(storage, keys.root(root.chainId, root.sequence), root);
150
- },
151
- async getRoot(chainId, sequence) {
152
- ensureChainId(chainId);
153
- ensurePositiveInt('root sequence', sequence);
154
- return getJson(storage, keys.root(chainId, sequence));
155
- },
156
- async putCiphertext(chainId, index, payload) {
157
- ensureChainId(chainId);
158
- ensurePositiveInt('ciphertext index', index);
159
- const key = keys.ciphertext(chainId, index);
160
- validateKey(key);
161
- await storage.put(key, new Uint8Array(payload));
162
- },
163
- async getCiphertext(chainId, index) {
164
- ensureChainId(chainId);
165
- ensurePositiveInt('ciphertext index', index);
166
- const data = await storage.get(keys.ciphertext(chainId, index));
167
- return data ? new Uint8Array(data) : null;
168
- },
169
- };
170
- return store;
171
- }
@@ -1,5 +0,0 @@
1
- import type { ShieldResult, ShieldStateStore, ShieldSubmission } from './types.js';
2
- export declare function createShieldService(stateStore: ShieldStateStore): {
3
- submit(submission: ShieldSubmission): Promise<ShieldResult>;
4
- };
5
- //# sourceMappingURL=shield.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"shield.d.ts","sourceRoot":"","sources":["../../transactions/shield.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,YAAY,EACZ,gBAAgB,EAChB,gBAAgB,EACjB,MAAM,YAAY,CAAC;AAQpB,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,gBAAgB;uBA8DnC,gBAAgB,GAAG,OAAO,CAAC,YAAY,CAAC;EA+BpE"}
@@ -1,93 +0,0 @@
1
- import { Interface } from 'ethers';
2
- import { poseidon } from '@railgun-community/circomlibjs'; // TODO: replace with zk-kit
3
- import { createLocalMerkleTree } from '../state/merkle-tree.js';
4
- import { ensureAddress, ensureChainId } from '../utils/validators.js';
5
- const HEX_PAD = 64;
6
- const DEPOSIT_ABI = [
7
- 'function deposit(address _depositor, (uint256 key, uint256 amount, address token)[] notes)',
8
- ];
9
- const depositInterface = new Interface(DEPOSIT_ABI);
10
- export function createShieldService(stateStore) {
11
- if (!stateStore) {
12
- throw new Error('stateStore dependency is required');
13
- }
14
- const trees = new Map();
15
- function getTree(chainId) {
16
- ensureChainId(chainId);
17
- let tree = trees.get(chainId);
18
- if (!tree) {
19
- tree = createLocalMerkleTree();
20
- trees.set(chainId, tree);
21
- }
22
- return tree;
23
- }
24
- function buildCalldata(submission, npk) {
25
- ensureChainId(submission.chainId);
26
- ensureAddress('pool address', submission.poolAddress);
27
- ensureAddress('depositor', submission.depositor);
28
- ensureAddress('token', submission.note.token);
29
- return depositInterface.encodeFunctionData('deposit', [
30
- submission.depositor,
31
- [
32
- {
33
- key: npk,
34
- amount: submission.note.amount,
35
- token: submission.note.token,
36
- },
37
- ],
38
- ]);
39
- }
40
- function deriveNpk(submission) {
41
- if (submission.note.mpk < 0n) {
42
- throw new Error('mpk must be non-negative');
43
- }
44
- if (submission.note.random < 0n) {
45
- throw new Error('random must be non-negative');
46
- }
47
- return poseidon([submission.note.mpk, submission.note.random]);
48
- }
49
- function computeCommitment(submission, npk) {
50
- if (submission.note.amount < 0n) {
51
- throw new Error('amount must be non-negative');
52
- }
53
- const tokenScalar = BigInt(submission.note.token);
54
- if (tokenScalar < 0n) {
55
- throw new Error('token must map to non-negative scalar');
56
- }
57
- return poseidon([npk, tokenScalar, submission.note.amount]);
58
- }
59
- async function relayToBroadcaster(chainId, commitment) {
60
- const tree = getTree(chainId);
61
- return tree.addLeaf(commitment);
62
- }
63
- return {
64
- async submit(submission) {
65
- const npk = deriveNpk(submission);
66
- const calldata = buildCalldata(submission, npk);
67
- const commitment = computeCommitment(submission, npk);
68
- const { index, root } = await relayToBroadcaster(submission.chainId, commitment);
69
- const commitmentHex = toHex(commitment);
70
- await Promise.all([
71
- stateStore.putLeaf({
72
- chainId: submission.chainId,
73
- index,
74
- commitment: commitmentHex,
75
- }),
76
- stateStore.putRoot({
77
- chainId: submission.chainId,
78
- root,
79
- }),
80
- ]);
81
- return {
82
- chainId: submission.chainId,
83
- index,
84
- commitment: commitmentHex,
85
- root,
86
- calldata,
87
- };
88
- },
89
- };
90
- }
91
- function toHex(value) {
92
- return `0x${value.toString(16).padStart(HEX_PAD, '0')}`;
93
- }
@@ -1,114 +0,0 @@
1
- import { IMTMerkleProof } from "@zk-kit/imt";
2
- import type { ZkAccount } from "../account/zkAccount.js";
3
- import type { CommitmentRecord } from "../clients/indexer.js";
4
- import type { JobStatus, LeafRecord, NoteRecord, NullifierRecord, PendingJobKind, PendingJobRecord, RootRecord } from "../state/index.js";
5
- /**
6
- * Base state store interface with common methods shared across services.
7
- */
8
- export type BaseStateStore = {
9
- putLeaf(record: LeafRecord): Promise<void>;
10
- getLeaf(chainId: number, index: number): Promise<LeafRecord | null>;
11
- clearLeaves(chainId: number): Promise<void>;
12
- putRoot(record: RootRecord): Promise<void>;
13
- putPendingJob(job: PendingJobRecord): Promise<void>;
14
- getPendingJob(relayId: string): Promise<PendingJobRecord | null>;
15
- listPendingJobs(filter?: {
16
- kind?: PendingJobKind;
17
- statuses?: JobStatus[];
18
- }): Promise<PendingJobRecord[]>;
19
- deletePendingJob(relayId: string): Promise<void>;
20
- };
21
- export type DepositStateStore = BaseStateStore;
22
- export type TransactStateStore = BaseStateStore & {
23
- getNote(chainId: number, index: number): Promise<NoteRecord | null>;
24
- markNoteSpent(chainId: number, index: number, spentAt?: number): Promise<NoteRecord>;
25
- putNullifier(record: NullifierRecord): Promise<void>;
26
- };
27
- export type DepositNoteInput = {
28
- mpk: bigint;
29
- random: bigint;
30
- token: string;
31
- amount: bigint;
32
- };
33
- export type DepositRequest = {
34
- zkAccount: ZkAccount;
35
- chainId: number;
36
- poolAddress: string;
37
- depositor: string;
38
- note: DepositNoteInput;
39
- };
40
- export type DepositRelayResult = {
41
- relayId: string;
42
- calldata: string;
43
- commitment: string;
44
- };
45
- export type DepositSyncResult = {
46
- chainId: number;
47
- index: number;
48
- commitment: string;
49
- root: string;
50
- };
51
- /**
52
- * Minimal reference to an input note; index resolves the canonical note state.
53
- */
54
- export type SpendNoteReference = {
55
- index: number;
56
- };
57
- export type WithdrawalNoteInput = {
58
- npk: bigint;
59
- amount: bigint;
60
- token: string;
61
- };
62
- /**
63
- * Private output note to append back into the pool after spending.
64
- */
65
- export type OutputNoteInput = {
66
- mpk: bigint;
67
- random: bigint;
68
- token: string;
69
- amount: bigint;
70
- };
71
- /**
72
- * Placeholder proof structure matching the pool interface; pubSignals remain meaningful.
73
- */
74
- export type Proof = {
75
- pA: [bigint, bigint];
76
- pB: [[bigint, bigint], [bigint, bigint]];
77
- pC: [bigint, bigint];
78
- pubSignals: bigint[];
79
- };
80
- /**
81
- * Parameters required to a mock transact call against the local state.
82
- */
83
- export type TransactRequest = {
84
- zkAccount: ZkAccount;
85
- chainId: number;
86
- poolAddress: string;
87
- token: string;
88
- inputs: SpendNoteReference[];
89
- withdrawal: WithdrawalNoteInput;
90
- outputs: OutputNoteInput[];
91
- };
92
- /**
93
- * Result of the mock transact flow, including calldata and state deltas.
94
- */
95
- export type TransactRelayResult = {
96
- relayId: string;
97
- calldata: string;
98
- proof: Proof;
99
- witnesses: IMTMerkleProof[];
100
- nullifiers: string[];
101
- predictedCommitments: string[];
102
- };
103
- export type TransactSyncResult = {
104
- chainId: number;
105
- root: string;
106
- nullifiers: string[];
107
- newCommitments: string[];
108
- txHash?: string;
109
- indexedCommitments?: CommitmentRecord[];
110
- };
111
- export type Ciphertext = {
112
- data: [bigint, bigint, bigint];
113
- };
114
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../transactions/types.ts"],"names":[],"mappings":"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"}
@@ -1,10 +0,0 @@
1
- /**
2
- * Computes the bound parameters hash from chain ID, pool address, and withdrawal parameters.
3
- * This hash binds the transaction to specific chain and withdrawal context.
4
- */
5
- export declare function computeBoundParamsHash(chainId: number, poolAddress: string, withdrawal: {
6
- npk: bigint;
7
- amount: bigint;
8
- token: string;
9
- }): bigint;
10
- //# sourceMappingURL=utils.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../transactions/utils.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACzD,MAAM,CAYR"}
@@ -1,17 +0,0 @@
1
- import { poseidon } from "@railgun-community/circomlibjs"; // TODO: replace with zk-kit
2
- /**
3
- * Computes the bound parameters hash from chain ID, pool address, and withdrawal parameters.
4
- * This hash binds the transaction to specific chain and withdrawal context.
5
- */
6
- export function computeBoundParamsHash(chainId, poolAddress, withdrawal) {
7
- const chainIdBigInt = BigInt(chainId);
8
- const poolAddressBigInt = BigInt(poolAddress);
9
- const tokenBigInt = BigInt(withdrawal.token);
10
- return poseidon([
11
- chainIdBigInt,
12
- poolAddressBigInt,
13
- withdrawal.npk,
14
- withdrawal.amount,
15
- tokenBigInt,
16
- ]);
17
- }
@@ -1,2 +0,0 @@
1
- export declare function sleep(ms: number): Promise<unknown>;
2
- //# sourceMappingURL=time.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"time.d.ts","sourceRoot":"","sources":["../../utils/time.ts"],"names":[],"mappings":"AAAA,wBAAgB,KAAK,CAAC,EAAE,EAAE,MAAM,oBAE/B"}
@@ -1,3 +0,0 @@
1
- export function sleep(ms) {
2
- return new Promise((resolve) => setTimeout(resolve, ms));
3
- }
@@ -1,11 +0,0 @@
1
- import { IMTMerkleProof } from "@zk-kit/imt";
2
- export type SerializedWitness = {
3
- root: string;
4
- leaf: string;
5
- pathElements: string[][];
6
- pathIndices: number[];
7
- leafIndex: number;
8
- };
9
- export declare function serializeWitness(proof: IMTMerkleProof, index: number): SerializedWitness;
10
- export declare function deserializeWitness(serialized: SerializedWitness): IMTMerkleProof;
11
- //# sourceMappingURL=witness.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"witness.d.ts","sourceRoot":"","sources":["../../utils/witness.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAG7C,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,EAAE,EAAE,CAAC;IACzB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,cAAc,EACrB,KAAK,EAAE,MAAM,GACZ,iBAAiB,CAUnB;AAED,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,iBAAiB,GAAG,cAAc,CAUhF"}
@@ -1,19 +0,0 @@
1
- import { formatUint256, parseHexToBigInt } from "./bigint.js";
2
- export function serializeWitness(proof, index) {
3
- return {
4
- root: formatUint256(BigInt(proof.root)),
5
- leaf: formatUint256(BigInt(proof.leaf)),
6
- pathElements: proof.siblings.map((level) => level.map((node) => formatUint256(BigInt(node)))),
7
- pathIndices: proof.pathIndices ?? [],
8
- leafIndex: index,
9
- };
10
- }
11
- export function deserializeWitness(serialized) {
12
- return {
13
- root: parseHexToBigInt(serialized.root),
14
- leaf: parseHexToBigInt(serialized.leaf),
15
- siblings: serialized.pathElements.map((level) => level.map((node) => parseHexToBigInt(node))),
16
- pathIndices: serialized.pathIndices,
17
- leafIndex: serialized.leafIndex,
18
- };
19
- }