@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
@@ -0,0 +1,112 @@
1
+ /**
2
+ * Key derivation for Unlink wallets using SLIP-10.
3
+ *
4
+ * SLIP-10 is a standard for BIP-32-style HD key derivation on non-secp256k1 curves.
5
+ * We use "babyjubjub seed" as the curve identifier (standard convention: "<curve> seed").
6
+ *
7
+ * Derivation paths (BIP-44 style):
8
+ * - Spending: m/44'/1984'/0'/0'/{index}'
9
+ * - Viewing: m/420'/1984'/0'/0'/{index}'
10
+ *
11
+ * @see https://github.com/satoshilabs/slips/blob/master/slip-0010.md
12
+ */
13
+ import { getPublicKey, hashes } from "@noble/ed25519";
14
+ import { hmac } from "@noble/hashes/hmac.js";
15
+ import { sha512 } from "@noble/hashes/sha2.js";
16
+ import { deriveSpendingPublicKey, poseidon } from "../crypto-adapters/index.js";
17
+ import { ValidationError } from "../errors.js";
18
+ import { Hex } from "./hex.js";
19
+ // Configure ed25519 to use sha512
20
+ hashes.sha512 = sha512;
21
+ hashes.sha512Async = async (m) => sha512(m);
22
+ // SLIP-10 curve identifier (convention: "<curve> seed")
23
+ const CURVE_SEED = new TextEncoder().encode("babyjubjub seed");
24
+ // BIP-44 paths: m/purpose'/coin_type'/account'/change'/{index}'
25
+ // 1984 = coin type for Unlink
26
+ const SPENDING_PATH = [44, 1984, 0, 0]; // + index
27
+ const VIEWING_PATH = [420, 1984, 0, 0]; // + index
28
+ /**
29
+ * SLIP-10 master key derivation from seed.
30
+ * I = HMAC-SHA512(Key = curve_seed, Data = seed)
31
+ * Returns left 32 bytes as key, right 32 bytes as chain code.
32
+ */
33
+ function deriveMasterKey(seed) {
34
+ const I = hmac(sha512, CURVE_SEED, seed);
35
+ return {
36
+ key: I.slice(0, 32),
37
+ chainCode: I.slice(32, 64),
38
+ };
39
+ }
40
+ /**
41
+ * SLIP-10 hardened child key derivation.
42
+ * For hardened keys (index >= 0x80000000), we use:
43
+ * I = HMAC-SHA512(Key = chainCode, Data = 0x00 || key || index)
44
+ */
45
+ function deriveHardenedChild(key, chainCode, index) {
46
+ // Data = 0x00 || key (32 bytes) || index (4 bytes, big-endian)
47
+ const data = new Uint8Array(37);
48
+ data[0] = 0x00;
49
+ data.set(key, 1);
50
+ // Hardened index: original index + 0x80000000
51
+ const view = new DataView(data.buffer, data.byteOffset, data.byteLength);
52
+ view.setUint32(33, 0x80000000 + index, false); // big-endian
53
+ const I = hmac(sha512, chainCode, data);
54
+ return {
55
+ key: I.slice(0, 32),
56
+ chainCode: I.slice(32, 64),
57
+ };
58
+ }
59
+ /**
60
+ * Derive a key by traversing a BIP-32 path (all hardened).
61
+ */
62
+ function deriveKeyFromPath(seed, path) {
63
+ let { key, chainCode } = deriveMasterKey(seed);
64
+ for (const index of path) {
65
+ ({ key, chainCode } = deriveHardenedChild(key, chainCode, index));
66
+ }
67
+ return key;
68
+ }
69
+ /**
70
+ * Derive spending key pair (BabyJubJub) for an account.
71
+ */
72
+ export function deriveSpendingKeyPair(seed, index) {
73
+ const path = [...SPENDING_PATH, index];
74
+ const privateKey = deriveKeyFromPath(seed, path);
75
+ const pubkey = deriveSpendingPublicKey(privateKey);
76
+ return { privateKey, pubkey };
77
+ }
78
+ /**
79
+ * Derive viewing key pair (Ed25519) for an account.
80
+ */
81
+ export async function deriveViewingKeyPair(seed, index) {
82
+ const path = [...VIEWING_PATH, index];
83
+ const privateKey = deriveKeyFromPath(seed, path);
84
+ const pubkey = await getPublicKey(privateKey);
85
+ return { privateKey, pubkey };
86
+ }
87
+ /**
88
+ * Compute nullifying key from viewing private key using Poseidon hash.
89
+ */
90
+ export function computeNullifyingKey(viewingPrivateKey) {
91
+ if (viewingPrivateKey.length !== 32) {
92
+ throw new ValidationError("Viewing private key must be 32 bytes");
93
+ }
94
+ return poseidon([Hex.toBigInt(Hex.fromBytes(viewingPrivateKey))]);
95
+ }
96
+ /**
97
+ * Compute master public key from spending public key and nullifying key.
98
+ * MPK = Poseidon(spendingPubkey[0], spendingPubkey[1], nullifyingKey)
99
+ */
100
+ export function computeMasterPublicKey(spendingPubkey, nullifyingKey) {
101
+ return poseidon([...spendingPubkey, nullifyingKey]);
102
+ }
103
+ /**
104
+ * Derive all account keys from a seed.
105
+ */
106
+ export async function deriveAccountKeys(seed, index) {
107
+ const spending = deriveSpendingKeyPair(seed, index);
108
+ const viewing = await deriveViewingKeyPair(seed, index);
109
+ const nullifyingKey = computeNullifyingKey(viewing.privateKey);
110
+ const masterPublicKey = computeMasterPublicKey(spending.pubkey, nullifyingKey);
111
+ return { spending, viewing, nullifyingKey, masterPublicKey };
112
+ }
@@ -0,0 +1,17 @@
1
+ export declare enum FieldSize {
2
+ SCALAR = 32,
3
+ SEED = 64
4
+ }
5
+ export type HexInput = string | number | bigint | Uint8Array | ArrayLike<number>;
6
+ export declare class Hex {
7
+ static strip(value: string): string;
8
+ static encode(data: HexInput): string;
9
+ static fromBytes(bytes: Uint8Array): string;
10
+ static toBytes(hex: string): Uint8Array;
11
+ static decode(data: HexInput): Uint8Array;
12
+ static toBigInt(hex: string): bigint;
13
+ static pad(data: HexInput, bytes: number, side?: "left" | "right"): string;
14
+ static padToSize(data: HexInput, size: FieldSize): string;
15
+ static fromBigInt(value: bigint, size: FieldSize, prefix?: boolean): string;
16
+ }
17
+ //# sourceMappingURL=hex.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hex.d.ts","sourceRoot":"","sources":["../../keys/hex.ts"],"names":[],"mappings":"AAEA,oBAAY,SAAS;IACnB,MAAM,KAAK;IACX,IAAI,KAAK;CACV;AAED,MAAM,MAAM,QAAQ,GAChB,MAAM,GACN,MAAM,GACN,MAAM,GACN,UAAU,GACV,SAAS,CAAC,MAAM,CAAC,CAAC;AAItB,qBAAa,GAAG;IACd,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAInC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM;IAYrC,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM;IAI3C,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU;IAUvC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,GAAG,UAAU;IAQzC,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAIpC,MAAM,CAAC,GAAG,CACR,IAAI,EAAE,QAAQ,EACd,KAAK,EAAE,MAAM,EACb,IAAI,GAAE,MAAM,GAAG,OAAgB,GAC9B,MAAM;IAUT,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,GAAG,MAAM;IAQzD,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,UAAQ,GAAG,MAAM;CAI1E"}
@@ -0,0 +1,66 @@
1
+ import { ValidationError } from "../errors.js";
2
+ export var FieldSize;
3
+ (function (FieldSize) {
4
+ FieldSize[FieldSize["SCALAR"] = 32] = "SCALAR";
5
+ FieldSize[FieldSize["SEED"] = 64] = "SEED";
6
+ })(FieldSize || (FieldSize = {}));
7
+ const HEX_REGEX = /^[0-9a-f]*$/i;
8
+ export class Hex {
9
+ static strip(value) {
10
+ return value.startsWith("0x") ? value.slice(2) : value;
11
+ }
12
+ static encode(data) {
13
+ if (typeof data === "string")
14
+ return Hex.strip(data).toLowerCase();
15
+ if (typeof data === "number" || typeof data === "bigint") {
16
+ if (data < 0)
17
+ throw new ValidationError("Cannot hexlify negative values");
18
+ const hex = data.toString(16);
19
+ return hex.length % 2 === 0 ? hex : `0${hex}`;
20
+ }
21
+ return Hex.fromBytes(data instanceof Uint8Array ? data : Uint8Array.from(data));
22
+ }
23
+ static fromBytes(bytes) {
24
+ return Array.from(bytes, (b) => b.toString(16).padStart(2, "0")).join("");
25
+ }
26
+ static toBytes(hex) {
27
+ const h = Hex.strip(hex).toLowerCase();
28
+ if (h.length % 2 !== 0)
29
+ throw new ValidationError("Hex string must have an even length");
30
+ if (!HEX_REGEX.test(h))
31
+ throw new ValidationError("Invalid hex string");
32
+ return Uint8Array.from({ length: h.length / 2 }, (_, i) => parseInt(h.slice(i * 2, i * 2 + 2), 16));
33
+ }
34
+ static decode(data) {
35
+ if (data instanceof Uint8Array)
36
+ return new Uint8Array(data);
37
+ if (typeof data === "string")
38
+ return Hex.toBytes(data);
39
+ if (typeof data === "number" || typeof data === "bigint")
40
+ return Hex.toBytes(Hex.encode(data));
41
+ return Uint8Array.from(data);
42
+ }
43
+ static toBigInt(hex) {
44
+ return BigInt(`0x${Hex.strip(hex)}`);
45
+ }
46
+ static pad(data, bytes, side = "left") {
47
+ const hex = Hex.encode(data);
48
+ const target = bytes * 2;
49
+ if (hex.length > target)
50
+ throw new ValidationError("Cannot pad data that exceeds target length");
51
+ return side === "left"
52
+ ? hex.padStart(target, "0")
53
+ : hex.padEnd(target, "0");
54
+ }
55
+ static padToSize(data, size) {
56
+ const hex = Hex.encode(data);
57
+ const target = size * 2;
58
+ return hex.length > target
59
+ ? hex.slice(0, target)
60
+ : hex.padStart(target, "0");
61
+ }
62
+ static fromBigInt(value, size, prefix = false) {
63
+ const hex = value.toString(16).padStart(size * 2, "0");
64
+ return prefix ? `0x${hex}` : hex;
65
+ }
66
+ }
@@ -0,0 +1,5 @@
1
+ export { Mnemonic } from "./mnemonic.js";
2
+ export { deriveAccountKeys, deriveSpendingKeyPair, deriveViewingKeyPair, computeNullifyingKey, computeMasterPublicKey, type AccountKeys, type SpendingKeyPair, type ViewingKeyPair, type SpendingPublicKey, } from "./derive.js";
3
+ export { encodeAddress, decodeAddress, type AddressData, type Chain, } from "./address.js";
4
+ export { Hex, FieldSize, type HexInput } from "./hex.js";
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../keys/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,oBAAoB,EACpB,oBAAoB,EACpB,sBAAsB,EACtB,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,iBAAiB,GACvB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,aAAa,EACb,aAAa,EACb,KAAK,WAAW,EAChB,KAAK,KAAK,GACX,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,QAAQ,EAAE,MAAM,UAAU,CAAC"}
@@ -0,0 +1,4 @@
1
+ export { Mnemonic } from "./mnemonic.js";
2
+ export { deriveAccountKeys, deriveSpendingKeyPair, deriveViewingKeyPair, computeNullifyingKey, computeMasterPublicKey, } from "./derive.js";
3
+ export { encodeAddress, decodeAddress, } from "./address.js";
4
+ export { Hex, FieldSize } from "./hex.js";
@@ -0,0 +1,8 @@
1
+ export declare class Mnemonic {
2
+ static generate(strength?: 128 | 192 | 256): string;
3
+ static validate(mnemonic: string): boolean;
4
+ static toSeed(mnemonic: string, password?: string): string;
5
+ static toEntropy(mnemonic: string): string;
6
+ static fromEntropy(entropyHex: string): string;
7
+ }
8
+ //# sourceMappingURL=mnemonic.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mnemonic.d.ts","sourceRoot":"","sources":["../../keys/mnemonic.ts"],"names":[],"mappings":"AAWA,qBAAa,QAAQ;IACnB,MAAM,CAAC,QAAQ,CAAC,QAAQ,GAAE,GAAG,GAAG,GAAG,GAAG,GAAS,GAAG,MAAM;IAIxD,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAI1C,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAW,GAAG,MAAM;IAK9D,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAK1C,MAAM,CAAC,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM;CAI/C"}
@@ -0,0 +1,23 @@
1
+ import { entropyToMnemonic, generateMnemonic, mnemonicToEntropy, mnemonicToSeedSync, validateMnemonic, } from "@scure/bip39";
2
+ import { wordlist } from "@scure/bip39/wordlists/english.js";
3
+ import { Hex } from "./hex.js";
4
+ export class Mnemonic {
5
+ static generate(strength = 128) {
6
+ return generateMnemonic(wordlist, strength);
7
+ }
8
+ static validate(mnemonic) {
9
+ return validateMnemonic(mnemonic, wordlist);
10
+ }
11
+ static toSeed(mnemonic, password = "") {
12
+ const seed = mnemonicToSeedSync(mnemonic, password);
13
+ return Hex.fromBytes(seed);
14
+ }
15
+ static toEntropy(mnemonic) {
16
+ const entropy = mnemonicToEntropy(mnemonic, wordlist);
17
+ return Hex.fromBytes(entropy);
18
+ }
19
+ static fromEntropy(entropyHex) {
20
+ const entropy = Hex.toBytes(entropyHex);
21
+ return entropyToMnemonic(entropy, wordlist);
22
+ }
23
+ }
package/dist/keys.d.ts CHANGED
@@ -1,7 +1,10 @@
1
- export declare const RESERVED_PREFIXES: readonly ["meta:", "notes:", "leaves:", "roots:", "nullifiers:", "ciphertexts:", "jobs:", "proof_cache:", "cfg:", "idx:", "locks:"];
1
+ export declare const RESERVED_PREFIXES: readonly ["meta:", "history:", "notes:", "leaves:", "roots:", "nullifiers:", "ciphertexts:", "jobs:", "proof_cache:", "cfg:", "idx:", "locks:"];
2
2
  /** Canonical builders for storage key namespaces used across core */
3
3
  export declare const keys: {
4
4
  note: (c: number, i: number) => string;
5
+ historyEntry: (id: string) => string;
6
+ historyPrefix: (chainId: number, mpk: string) => string;
7
+ historyMeta: (chainId: number, mpk: string) => string;
5
8
  leaf: (c: number, i: number) => string;
6
9
  ciphertext: (c: number, i: number) => string;
7
10
  /** Track note indices that remain unspent for a given master public key (mpk acts as the account identifier). */
@@ -1 +1 @@
1
- {"version":3,"file":"keys.d.ts","sourceRoot":"","sources":["../keys.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,iBAAiB,qIAYpB,CAAC;AAEX,qEAAqE;AACrE,eAAO,MAAM,IAAI;cACL,MAAM,KAAK,MAAM;cACjB,MAAM,KAAK,MAAM;oBACX,MAAM,KAAK,MAAM;IACjC,iHAAiH;iBACpG,MAAM,OAAO,MAAM,KAAK,MAAM;uBAExB,MAAM,OAAO,MAAM;sBACpB,MAAM,KAAK,MAAM;qBAClB,MAAM,KAAK,MAAM;mBACnB,MAAM,KAAK,MAAM;cACtB,MAAM,SAAS,MAAM;oBACf,MAAM;oBACN,MAAM;gBACV,MAAM;mBACH,MAAM,KAAK,MAAM;mBACjB,MAAM;CACtB,CAAC;AAEF,eAAO,MAAM,WAAW,MAAM,CAAC;AAE/B,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,QAQtC"}
1
+ {"version":3,"file":"keys.d.ts","sourceRoot":"","sources":["../keys.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,iBAAiB,iJAapB,CAAC;AAEX,qEAAqE;AACrE,eAAO,MAAM,IAAI;cACL,MAAM,KAAK,MAAM;uBACR,MAAM;6BACA,MAAM,OAAO,MAAM;2BACrB,MAAM,OAAO,MAAM;cAEhC,MAAM,KAAK,MAAM;oBACX,MAAM,KAAK,MAAM;IACjC,iHAAiH;iBACpG,MAAM,OAAO,MAAM,KAAK,MAAM;uBAExB,MAAM,OAAO,MAAM;sBACpB,MAAM,KAAK,MAAM;qBAClB,MAAM,KAAK,MAAM;mBACnB,MAAM,KAAK,MAAM;cACtB,MAAM,SAAS,MAAM;oBACf,MAAM;oBACN,MAAM;gBACV,MAAM;mBACH,MAAM,KAAK,MAAM;mBACjB,MAAM;CACtB,CAAC;AAEF,eAAO,MAAM,WAAW,MAAM,CAAC;AAE/B,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,QAQtC"}
package/dist/keys.js CHANGED
@@ -1,6 +1,7 @@
1
1
  import { KeyValidationError } from "./errors.js";
2
2
  export const RESERVED_PREFIXES = [
3
3
  "meta:",
4
+ "history:",
4
5
  "notes:",
5
6
  "leaves:",
6
7
  "roots:",
@@ -15,6 +16,9 @@ export const RESERVED_PREFIXES = [
15
16
  /** Canonical builders for storage key namespaces used across core */
16
17
  export const keys = {
17
18
  note: (c, i) => `notes:${c}:${i}`,
19
+ historyEntry: (id) => `history:${id}`,
20
+ historyPrefix: (chainId, mpk) => `history:${chainId}:${mpk}:`,
21
+ historyMeta: (chainId, mpk) => `history:${chainId}:${mpk}:__meta__`,
18
22
  leaf: (c, i) => `leaves:${c}:${i}`,
19
23
  ciphertext: (c, i) => `ciphertexts:${c}:${i}`,
20
24
  /** Track note indices that remain unspent for a given master public key (mpk acts as the account identifier). */
@@ -2,20 +2,6 @@
2
2
  * Configuration for the prover system
3
3
  * Handles artifact loading from local files or remote artifact server
4
4
  */
5
- /**
6
- * Environment-based configuration for artifact loading
7
- */
8
- export interface ProverConfig {
9
- /** Base URL for the artifact server (browser mode) */
10
- rpcUrl: string;
11
- /** Whether to enable artifact caching */
12
- enableCache: boolean;
13
- }
14
- /**
15
- * Default configuration
16
- * Can be overridden via environment variables
17
- */
18
- export declare const DEFAULT_CONFIG: ProverConfig;
19
5
  /**
20
6
  * Artifact file types
21
7
  */
@@ -31,7 +17,7 @@ export declare enum ArtifactType {
31
17
  * @param baseUrl Base URL of the artifact server
32
18
  * @returns Full URL to the artifact
33
19
  */
34
- export declare function buildArtifactUrl(circuitName: string, artifactType: ArtifactType, baseUrl?: string): string;
20
+ export declare function buildArtifactUrl(circuitName: string, artifactType: ArtifactType, baseUrl: string): string;
35
21
  /**
36
22
  * Get relative path for local artifact loading
37
23
  * Used in Node.js environment when artifacts are bundled
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../prover/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,sDAAsD;IACtD,MAAM,EAAE,MAAM,CAAC;IACf,yCAAyC;IACzC,WAAW,EAAE,OAAO,CAAC;CACtB;AAED;;;GAGG;AACH,eAAO,MAAM,cAAc,EAAE,YAM5B,CAAC;AAEF;;GAEG;AACH,oBAAY,YAAY;IACtB,IAAI,mBAAmB;IACvB,IAAI,mBAAmB;IACvB,IAAI,wBAAwB;CAC7B;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,YAAY,EAC1B,OAAO,GAAE,MAA8B,GACtC,MAAM,CAIR;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,YAAY,GACzB,MAAM,EAAE,CAQV;AAED;;GAEG;AACH,eAAO,MAAM,OAAO;IAClB;;OAEG;iBACU,OAAO;IAIpB;;OAEG;cACO,OAAO;IAQjB;;OAEG;sBACe,MAAM;CAKzB,CAAC"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../prover/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;GAEG;AACH,oBAAY,YAAY;IACtB,IAAI,mBAAmB;IACvB,IAAI,mBAAmB;IACvB,IAAI,wBAAwB;CAC7B;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,YAAY,EAC1B,OAAO,EAAE,MAAM,GACd,MAAM,CAIR;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,YAAY,GACzB,MAAM,EAAE,CAQV;AAED;;GAEG;AACH,eAAO,MAAM,OAAO;IAClB;;OAEG;iBACU,OAAO;IAIpB;;OAEG;cACO,OAAO;IAQjB;;OAEG;sBACe,MAAM;CAKzB,CAAC"}
@@ -2,16 +2,6 @@
2
2
  * Configuration for the prover system
3
3
  * Handles artifact loading from local files or remote artifact server
4
4
  */
5
- /**
6
- * Default configuration
7
- * Can be overridden via environment variables
8
- */
9
- export const DEFAULT_CONFIG = {
10
- rpcUrl: typeof process !== "undefined" && process.env?.UNLINK_RPC_URL
11
- ? process.env.UNLINK_RPC_URL
12
- : "http://localhost:3000",
13
- enableCache: true,
14
- };
15
5
  /**
16
6
  * Artifact file types
17
7
  */
@@ -28,7 +18,7 @@ export var ArtifactType;
28
18
  * @param baseUrl Base URL of the artifact server
29
19
  * @returns Full URL to the artifact
30
20
  */
31
- export function buildArtifactUrl(circuitName, artifactType, baseUrl = DEFAULT_CONFIG.rpcUrl) {
21
+ export function buildArtifactUrl(circuitName, artifactType, baseUrl) {
32
22
  // Remove trailing slash from baseUrl
33
23
  const cleanBaseUrl = baseUrl.replace(/\/$/, "");
34
24
  return `${cleanBaseUrl}/artifacts/${circuitName}/${artifactType}`;
@@ -30,22 +30,30 @@ export interface JoinsplitProofInput {
30
30
  readonly npkOut: bigint[];
31
31
  readonly valueOut: bigint[];
32
32
  }
33
- export declare function proveTransaction(input: JoinsplitProofInput): Promise<JoinsplitProof>;
33
+ export declare function proveTransaction(input: JoinsplitProofInput, options?: {
34
+ rpcUrl?: string;
35
+ }): Promise<JoinsplitProof>;
34
36
  /**
35
37
  * Get verification key for a specific circuit configuration
36
38
  * @param inputs Number of inputs (nullifiers)
37
39
  * @param outputs Number of outputs (commitments)
40
+ * @param options Configuration including rpcUrl
38
41
  * @returns Verification key for the circuit
39
42
  */
40
- export declare function getVerificationKey(inputs: number, outputs: number): Promise<VerificationKey>;
43
+ export declare function getVerificationKey(inputs: number, outputs: number, options?: {
44
+ rpcUrl?: string;
45
+ }): Promise<VerificationKey>;
41
46
  /**
42
47
  * Verify a proof with public signals
43
48
  * Auto-detects the circuit from the public signals structure
44
49
  * @param proof Groth16 proof
45
50
  * @param publicSignals Public signals array
51
+ * @param options Optional configuration including rpcUrl
46
52
  * @returns True if proof is valid
47
53
  */
48
- export declare function verifyProof(proof: Groth16Proof, publicSignals: PublicSignals): Promise<boolean>;
54
+ export declare function verifyProof(proof: Groth16Proof, publicSignals: PublicSignals, options?: {
55
+ rpcUrl?: string;
56
+ }): Promise<boolean>;
49
57
  /**
50
58
  * Verify a proof with explicit circuit specification
51
59
  * Preferred method when you know the circuit dimensions
@@ -53,7 +61,10 @@ export declare function verifyProof(proof: Groth16Proof, publicSignals: PublicSi
53
61
  * @param publicSignals Public signals array
54
62
  * @param inputs Number of inputs (nullifiers)
55
63
  * @param outputs Number of outputs (commitments)
64
+ * @param options Optional configuration including rpcUrl
56
65
  * @returns True if proof is valid
57
66
  */
58
- export declare function verifyProofWithCircuit(proof: Groth16Proof, publicSignals: PublicSignals, inputs: number, outputs: number): Promise<boolean>;
67
+ export declare function verifyProofWithCircuit(proof: Groth16Proof, publicSignals: PublicSignals, inputs: number, outputs: number, options?: {
68
+ rpcUrl?: string;
69
+ }): Promise<boolean>;
59
70
  //# sourceMappingURL=prover.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"prover.d.ts","sourceRoot":"","sources":["../../prover/prover.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AA4BtD,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;IAC7B,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC;CACvC;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC;IAC9B,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,CAAC;IAC/B,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,CAAC;IAChC,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,CAAC;IAChC,QAAQ,CAAC,eAAe,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;IACvC,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC;IAC9B,QAAQ,CAAC,cAAc,EAAE,MAAM,EAAE,CAAC;IAClC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC;IAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC;IAC3B,QAAQ,CAAC,YAAY,EAAE,MAAM,EAAE,EAAE,CAAC;IAClC,QAAQ,CAAC,aAAa,EAAE,MAAM,EAAE,CAAC;IACjC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;CAC7B;AAiND,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,mBAAmB,GACzB,OAAO,CAAC,cAAc,CAAC,CAmCzB;AAED;;;;;GAKG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,eAAe,CAAC,CAU1B;AAED;;;;;;GAMG;AACH,wBAAsB,WAAW,CAC/B,KAAK,EAAE,YAAY,EACnB,aAAa,EAAE,aAAa,GAC3B,OAAO,CAAC,OAAO,CAAC,CAuClB;AAED;;;;;;;;GAQG;AACH,wBAAsB,sBAAsB,CAC1C,KAAK,EAAE,YAAY,EACnB,aAAa,EAAE,aAAa,EAC5B,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,OAAO,CAAC,CAUlB"}
1
+ {"version":3,"file":"prover.d.ts","sourceRoot":"","sources":["../../prover/prover.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AA2BtD,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;IAC7B,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC;CACvC;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC;IAC9B,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,CAAC;IAC/B,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,CAAC;IAChC,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,CAAC;IAChC,QAAQ,CAAC,eAAe,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;IACvC,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC;IAC9B,QAAQ,CAAC,cAAc,EAAE,MAAM,EAAE,CAAC;IAClC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC;IAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC;IAC3B,QAAQ,CAAC,YAAY,EAAE,MAAM,EAAE,EAAE,CAAC;IAClC,QAAQ,CAAC,aAAa,EAAE,MAAM,EAAE,CAAC;IACjC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;CAC7B;AAiOD,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,mBAAmB,EAC1B,OAAO,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAC5B,OAAO,CAAC,cAAc,CAAC,CAwCzB;AAED;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAC5B,OAAO,CAAC,eAAe,CAAC,CAU1B;AAED;;;;;;;GAOG;AACH,wBAAsB,WAAW,CAC/B,KAAK,EAAE,YAAY,EACnB,aAAa,EAAE,aAAa,EAC5B,OAAO,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAC5B,OAAO,CAAC,OAAO,CAAC,CA0ClB;AAED;;;;;;;;;GASG;AACH,wBAAsB,sBAAsB,CAC1C,KAAK,EAAE,YAAY,EACnB,aAAa,EAAE,aAAa,EAC5B,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAC5B,OAAO,CAAC,OAAO,CAAC,CAUlB"}