@unlink-xyz/core 0.1.2 → 0.1.3-canary.01ac52d

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 (367) hide show
  1. package/README.md +9 -0
  2. package/dist/account/{zkAccount.d.ts → account.d.ts} +36 -5
  3. package/dist/account/account.d.ts.map +1 -0
  4. package/dist/account/accounts.d.ts +42 -0
  5. package/dist/account/accounts.d.ts.map +1 -0
  6. package/dist/account/seed.d.ts +45 -0
  7. package/dist/account/seed.d.ts.map +1 -0
  8. package/dist/account/serialization.d.ts +6 -0
  9. package/dist/account/serialization.d.ts.map +1 -0
  10. package/dist/browser/index.js +56253 -0
  11. package/dist/browser/index.js.map +1 -0
  12. package/dist/browser/wallet/index.js +55974 -0
  13. package/dist/browser/wallet/index.js.map +1 -0
  14. package/dist/clients/broadcaster.d.ts +8 -2
  15. package/dist/clients/broadcaster.d.ts.map +1 -1
  16. package/dist/clients/http.d.ts +6 -0
  17. package/dist/clients/http.d.ts.map +1 -1
  18. package/dist/clients/indexer.d.ts +16 -0
  19. package/dist/clients/indexer.d.ts.map +1 -1
  20. package/dist/config.d.ts +35 -9
  21. package/dist/config.d.ts.map +1 -1
  22. package/dist/constants.d.ts +6 -0
  23. package/dist/constants.d.ts.map +1 -0
  24. package/dist/core.d.ts.map +1 -1
  25. package/dist/crypto/adapters/index.d.ts +17 -0
  26. package/dist/crypto/adapters/index.d.ts.map +1 -0
  27. package/dist/crypto/adapters/polyfills.d.ts +5 -0
  28. package/dist/crypto/adapters/polyfills.d.ts.map +1 -0
  29. package/dist/crypto/encrypt.d.ts +33 -0
  30. package/dist/crypto/encrypt.d.ts.map +1 -0
  31. package/dist/crypto/secure-memory.d.ts +25 -0
  32. package/dist/crypto/secure-memory.d.ts.map +1 -0
  33. package/dist/errors.d.ts +17 -0
  34. package/dist/errors.d.ts.map +1 -1
  35. package/dist/history/index.d.ts +3 -0
  36. package/dist/history/index.d.ts.map +1 -0
  37. package/dist/history/service.d.ts +46 -0
  38. package/dist/history/service.d.ts.map +1 -0
  39. package/dist/history/types.d.ts +21 -0
  40. package/dist/history/types.d.ts.map +1 -0
  41. package/dist/index.d.ts +16 -5
  42. package/dist/index.d.ts.map +1 -1
  43. package/dist/index.js +9969 -16
  44. package/dist/index.js.map +1 -0
  45. package/dist/keys/address.d.ts +13 -0
  46. package/dist/keys/address.d.ts.map +1 -0
  47. package/dist/keys/derive.d.ts +37 -0
  48. package/dist/keys/derive.d.ts.map +1 -0
  49. package/dist/keys/hex.d.ts +14 -0
  50. package/dist/keys/hex.d.ts.map +1 -0
  51. package/dist/keys/index.d.ts +5 -0
  52. package/dist/keys/index.d.ts.map +1 -0
  53. package/dist/keys/mnemonic.d.ts +6 -0
  54. package/dist/keys/mnemonic.d.ts.map +1 -0
  55. package/dist/keys.d.ts +5 -1
  56. package/dist/keys.d.ts.map +1 -1
  57. package/dist/prover/config.d.ts +53 -22
  58. package/dist/prover/config.d.ts.map +1 -1
  59. package/dist/prover/integrity.d.ts +20 -0
  60. package/dist/prover/integrity.d.ts.map +1 -0
  61. package/dist/prover/prover.d.ts +16 -20
  62. package/dist/prover/prover.d.ts.map +1 -1
  63. package/dist/prover/registry.d.ts +3 -30
  64. package/dist/prover/registry.d.ts.map +1 -1
  65. package/dist/state/merkle/hydrator.d.ts +21 -19
  66. package/dist/state/merkle/hydrator.d.ts.map +1 -1
  67. package/dist/state/merkle/index.d.ts +2 -2
  68. package/dist/state/merkle/index.d.ts.map +1 -1
  69. package/dist/state/merkle/merkle-tree.d.ts +8 -0
  70. package/dist/state/merkle/merkle-tree.d.ts.map +1 -1
  71. package/dist/state/store/ciphertext-store.d.ts +11 -0
  72. package/dist/state/store/ciphertext-store.d.ts.map +1 -1
  73. package/dist/state/store/history-store.d.ts +24 -0
  74. package/dist/state/store/history-store.d.ts.map +1 -0
  75. package/dist/state/store/index.d.ts +3 -2
  76. package/dist/state/store/index.d.ts.map +1 -1
  77. package/dist/state/store/job-store.d.ts +7 -7
  78. package/dist/state/store/job-store.d.ts.map +1 -1
  79. package/dist/state/store/jobs.d.ts +70 -25
  80. package/dist/state/store/jobs.d.ts.map +1 -1
  81. package/dist/state/store/leaf-store.d.ts +4 -0
  82. package/dist/state/store/leaf-store.d.ts.map +1 -1
  83. package/dist/state/store/note-store.d.ts +7 -7
  84. package/dist/state/store/note-store.d.ts.map +1 -1
  85. package/dist/state/store/nullifier-store.d.ts +9 -0
  86. package/dist/state/store/nullifier-store.d.ts.map +1 -1
  87. package/dist/state/store/records.d.ts +39 -2
  88. package/dist/state/store/records.d.ts.map +1 -1
  89. package/dist/state/store/root-store.d.ts.map +1 -1
  90. package/dist/state/store/store.d.ts +79 -27
  91. package/dist/state/store/store.d.ts.map +1 -1
  92. package/dist/storage/indexeddb.d.ts.map +1 -1
  93. package/dist/storage/memory.d.ts.map +1 -1
  94. package/dist/transactions/adapter.d.ts +31 -0
  95. package/dist/transactions/adapter.d.ts.map +1 -0
  96. package/dist/transactions/deposit.d.ts +12 -15
  97. package/dist/transactions/deposit.d.ts.map +1 -1
  98. package/dist/transactions/index.d.ts +9 -4
  99. package/dist/transactions/index.d.ts.map +1 -1
  100. package/dist/transactions/note-selection.d.ts +17 -0
  101. package/dist/transactions/note-selection.d.ts.map +1 -0
  102. package/dist/transactions/note-sync.d.ts +5 -33
  103. package/dist/transactions/note-sync.d.ts.map +1 -1
  104. package/dist/transactions/reconcile.d.ts +9 -11
  105. package/dist/transactions/reconcile.d.ts.map +1 -1
  106. package/dist/transactions/transact.d.ts +30 -22
  107. package/dist/transactions/transact.d.ts.map +1 -1
  108. package/dist/transactions/transaction-planner.d.ts +34 -0
  109. package/dist/transactions/transaction-planner.d.ts.map +1 -0
  110. package/dist/transactions/transfer-planner.d.ts +37 -0
  111. package/dist/transactions/transfer-planner.d.ts.map +1 -0
  112. package/dist/transactions/types/deposit.d.ts +67 -0
  113. package/dist/transactions/types/deposit.d.ts.map +1 -0
  114. package/dist/transactions/types/domain.d.ts +70 -0
  115. package/dist/transactions/types/domain.d.ts.map +1 -0
  116. package/dist/transactions/types/index.d.ts +18 -0
  117. package/dist/transactions/types/index.d.ts.map +1 -0
  118. package/dist/transactions/types/options.d.ts +54 -0
  119. package/dist/transactions/types/options.d.ts.map +1 -0
  120. package/dist/transactions/types/planning.d.ts +82 -0
  121. package/dist/transactions/types/planning.d.ts.map +1 -0
  122. package/dist/transactions/types/state-stores.d.ts +151 -0
  123. package/dist/transactions/types/state-stores.d.ts.map +1 -0
  124. package/dist/transactions/types/transact.d.ts +83 -0
  125. package/dist/transactions/types/transact.d.ts.map +1 -0
  126. package/dist/transactions/withdrawal-planner.d.ts +58 -0
  127. package/dist/transactions/withdrawal-planner.d.ts.map +1 -0
  128. package/dist/tsconfig.tsbuildinfo +1 -1
  129. package/dist/tsup.browser.config.d.ts +7 -0
  130. package/dist/tsup.browser.config.d.ts.map +1 -0
  131. package/dist/tsup.config.d.ts +8 -0
  132. package/dist/tsup.config.d.ts.map +1 -0
  133. package/dist/types.d.ts +1 -0
  134. package/dist/types.d.ts.map +1 -1
  135. package/dist/utils/amounts.d.ts +26 -0
  136. package/dist/utils/amounts.d.ts.map +1 -0
  137. package/dist/utils/async.d.ts +9 -0
  138. package/dist/utils/async.d.ts.map +1 -1
  139. package/dist/utils/async.js +38 -11
  140. package/dist/utils/async.js.map +1 -0
  141. package/dist/utils/bigint.d.ts +0 -2
  142. package/dist/utils/bigint.d.ts.map +1 -1
  143. package/dist/utils/format.d.ts +25 -0
  144. package/dist/utils/format.d.ts.map +1 -0
  145. package/dist/utils/notes.d.ts +15 -0
  146. package/dist/utils/notes.d.ts.map +1 -0
  147. package/dist/utils/polling.d.ts +5 -0
  148. package/dist/utils/polling.d.ts.map +1 -1
  149. package/dist/utils/random.d.ts +18 -0
  150. package/dist/utils/random.d.ts.map +1 -0
  151. package/dist/utils/signature.d.ts +6 -0
  152. package/dist/utils/signature.d.ts.map +1 -1
  153. package/dist/utils/validators.d.ts +21 -10
  154. package/dist/utils/validators.d.ts.map +1 -1
  155. package/dist/vitest.config.d.ts +3 -0
  156. package/dist/vitest.config.d.ts.map +1 -0
  157. package/dist/wallet/adapter.d.ts +21 -0
  158. package/dist/wallet/adapter.d.ts.map +1 -0
  159. package/dist/wallet/burner/service.d.ts +32 -0
  160. package/dist/wallet/burner/service.d.ts.map +1 -0
  161. package/dist/wallet/burner/types.d.ts +47 -0
  162. package/dist/wallet/burner/types.d.ts.map +1 -0
  163. package/dist/wallet/index.d.ts +20 -0
  164. package/dist/wallet/index.d.ts.map +1 -0
  165. package/dist/wallet/index.js +9712 -0
  166. package/dist/wallet/index.js.map +1 -0
  167. package/dist/wallet/sdk.d.ts +47 -0
  168. package/dist/wallet/sdk.d.ts.map +1 -0
  169. package/dist/wallet/types.d.ts +455 -0
  170. package/dist/wallet/types.d.ts.map +1 -0
  171. package/dist/wallet/unlink-wallet.d.ts +186 -0
  172. package/dist/wallet/unlink-wallet.d.ts.map +1 -0
  173. package/package.json +39 -12
  174. package/.eslintrc.json +0 -4
  175. package/account/zkAccount.test.ts +0 -316
  176. package/account/zkAccount.ts +0 -222
  177. package/clients/broadcaster.ts +0 -67
  178. package/clients/http.ts +0 -94
  179. package/clients/indexer.ts +0 -150
  180. package/config.ts +0 -39
  181. package/core.ts +0 -17
  182. package/dist/account/railgun-imports-prototype.d.ts +0 -12
  183. package/dist/account/railgun-imports-prototype.d.ts.map +0 -1
  184. package/dist/account/railgun-imports-prototype.js +0 -30
  185. package/dist/account/zkAccount.d.ts.map +0 -1
  186. package/dist/account/zkAccount.js +0 -128
  187. package/dist/clients/broadcaster.js +0 -23
  188. package/dist/clients/http.js +0 -57
  189. package/dist/clients/indexer.js +0 -67
  190. package/dist/config.js +0 -29
  191. package/dist/core.js +0 -12
  192. package/dist/errors.js +0 -18
  193. package/dist/key-derivation/babyjubjub.d.ts +0 -9
  194. package/dist/key-derivation/babyjubjub.d.ts.map +0 -1
  195. package/dist/key-derivation/babyjubjub.js +0 -9
  196. package/dist/key-derivation/bech32.d.ts +0 -22
  197. package/dist/key-derivation/bech32.d.ts.map +0 -1
  198. package/dist/key-derivation/bech32.js +0 -86
  199. package/dist/key-derivation/bip32.d.ts +0 -17
  200. package/dist/key-derivation/bip32.d.ts.map +0 -1
  201. package/dist/key-derivation/bip32.js +0 -41
  202. package/dist/key-derivation/bip39.d.ts +0 -22
  203. package/dist/key-derivation/bip39.d.ts.map +0 -1
  204. package/dist/key-derivation/bip39.js +0 -56
  205. package/dist/key-derivation/bytes.d.ts +0 -19
  206. package/dist/key-derivation/bytes.d.ts.map +0 -1
  207. package/dist/key-derivation/bytes.js +0 -92
  208. package/dist/key-derivation/hash.d.ts +0 -3
  209. package/dist/key-derivation/hash.d.ts.map +0 -1
  210. package/dist/key-derivation/hash.js +0 -10
  211. package/dist/key-derivation/index.d.ts +0 -8
  212. package/dist/key-derivation/index.d.ts.map +0 -1
  213. package/dist/key-derivation/index.js +0 -7
  214. package/dist/key-derivation/wallet-node.d.ts +0 -45
  215. package/dist/key-derivation/wallet-node.d.ts.map +0 -1
  216. package/dist/key-derivation/wallet-node.js +0 -109
  217. package/dist/keys.js +0 -41
  218. package/dist/prover/config.js +0 -80
  219. package/dist/prover/index.js +0 -1
  220. package/dist/prover/prover.js +0 -274
  221. package/dist/prover/registry.js +0 -57
  222. package/dist/schema.js +0 -14
  223. package/dist/state/ciphertext-store.d.ts +0 -12
  224. package/dist/state/ciphertext-store.d.ts.map +0 -1
  225. package/dist/state/ciphertext-store.js +0 -25
  226. package/dist/state/hydrator.d.ts +0 -16
  227. package/dist/state/hydrator.d.ts.map +0 -1
  228. package/dist/state/hydrator.js +0 -18
  229. package/dist/state/index.js +0 -2
  230. package/dist/state/job-store.d.ts +0 -12
  231. package/dist/state/job-store.d.ts.map +0 -1
  232. package/dist/state/job-store.js +0 -118
  233. package/dist/state/jobs.d.ts +0 -50
  234. package/dist/state/jobs.d.ts.map +0 -1
  235. package/dist/state/jobs.js +0 -1
  236. package/dist/state/leaf-store.d.ts +0 -17
  237. package/dist/state/leaf-store.d.ts.map +0 -1
  238. package/dist/state/leaf-store.js +0 -35
  239. package/dist/state/merkle/hydrator.js +0 -36
  240. package/dist/state/merkle/index.js +0 -2
  241. package/dist/state/merkle/merkle-tree.js +0 -104
  242. package/dist/state/merkle-tree.d.ts +0 -34
  243. package/dist/state/merkle-tree.d.ts.map +0 -1
  244. package/dist/state/merkle-tree.js +0 -104
  245. package/dist/state/note-store.d.ts +0 -37
  246. package/dist/state/note-store.d.ts.map +0 -1
  247. package/dist/state/note-store.js +0 -133
  248. package/dist/state/nullifier-store.d.ts +0 -13
  249. package/dist/state/nullifier-store.d.ts.map +0 -1
  250. package/dist/state/nullifier-store.js +0 -21
  251. package/dist/state/records.d.ts +0 -57
  252. package/dist/state/records.d.ts.map +0 -1
  253. package/dist/state/records.js +0 -1
  254. package/dist/state/root-store.d.ts +0 -13
  255. package/dist/state/root-store.d.ts.map +0 -1
  256. package/dist/state/root-store.js +0 -30
  257. package/dist/state/store/ciphertext-store.js +0 -25
  258. package/dist/state/store/index.js +0 -8
  259. package/dist/state/store/job-store.js +0 -118
  260. package/dist/state/store/jobs.js +0 -1
  261. package/dist/state/store/leaf-store.js +0 -35
  262. package/dist/state/store/note-store.js +0 -142
  263. package/dist/state/store/nullifier-store.js +0 -30
  264. package/dist/state/store/records.js +0 -1
  265. package/dist/state/store/root-store.js +0 -30
  266. package/dist/state/store/store.js +0 -22
  267. package/dist/state/store.d.ts +0 -26
  268. package/dist/state/store.d.ts.map +0 -1
  269. package/dist/state/store.js +0 -19
  270. package/dist/state.d.ts +0 -83
  271. package/dist/state.d.ts.map +0 -1
  272. package/dist/state.js +0 -171
  273. package/dist/storage/index.js +0 -2
  274. package/dist/storage/indexeddb.js +0 -205
  275. package/dist/storage/memory.js +0 -87
  276. package/dist/transactions/deposit.js +0 -169
  277. package/dist/transactions/index.js +0 -4
  278. package/dist/transactions/note-sync.js +0 -320
  279. package/dist/transactions/reconcile.js +0 -39
  280. package/dist/transactions/shield.d.ts +0 -5
  281. package/dist/transactions/shield.d.ts.map +0 -1
  282. package/dist/transactions/shield.js +0 -93
  283. package/dist/transactions/transact.js +0 -561
  284. package/dist/transactions/types.d.ts +0 -114
  285. package/dist/transactions/types.d.ts.map +0 -1
  286. package/dist/transactions/types.js +0 -1
  287. package/dist/transactions/utils.d.ts +0 -10
  288. package/dist/transactions/utils.d.ts.map +0 -1
  289. package/dist/transactions/utils.js +0 -17
  290. package/dist/types.js +0 -1
  291. package/dist/utils/bigint.js +0 -29
  292. package/dist/utils/crypto.d.ts +0 -12
  293. package/dist/utils/crypto.d.ts.map +0 -1
  294. package/dist/utils/crypto.js +0 -39
  295. package/dist/utils/json-codec.js +0 -25
  296. package/dist/utils/polling.js +0 -6
  297. package/dist/utils/signature.js +0 -12
  298. package/dist/utils/time.d.ts +0 -2
  299. package/dist/utils/time.d.ts.map +0 -1
  300. package/dist/utils/time.js +0 -3
  301. package/dist/utils/validators.js +0 -70
  302. package/dist/utils/witness.d.ts +0 -11
  303. package/dist/utils/witness.d.ts.map +0 -1
  304. package/dist/utils/witness.js +0 -19
  305. package/errors.ts +0 -20
  306. package/index.ts +0 -17
  307. package/key-derivation/babyjubjub.ts +0 -11
  308. package/key-derivation/bech32.test.ts +0 -90
  309. package/key-derivation/bech32.ts +0 -124
  310. package/key-derivation/bip32.ts +0 -56
  311. package/key-derivation/bip39.ts +0 -76
  312. package/key-derivation/bytes.ts +0 -118
  313. package/key-derivation/hash.ts +0 -13
  314. package/key-derivation/index.ts +0 -7
  315. package/key-derivation/wallet-node.ts +0 -155
  316. package/keys.ts +0 -47
  317. package/prover/config.ts +0 -104
  318. package/prover/index.ts +0 -1
  319. package/prover/prover.integration.test.ts +0 -162
  320. package/prover/prover.test.ts +0 -309
  321. package/prover/prover.ts +0 -405
  322. package/prover/registry.test.ts +0 -90
  323. package/prover/registry.ts +0 -82
  324. package/schema.ts +0 -17
  325. package/setup-artifacts.sh +0 -57
  326. package/state/index.ts +0 -2
  327. package/state/merkle/hydrator.ts +0 -69
  328. package/state/merkle/index.ts +0 -12
  329. package/state/merkle/merkle-tree.test.ts +0 -50
  330. package/state/merkle/merkle-tree.ts +0 -163
  331. package/state/store/ciphertext-store.ts +0 -28
  332. package/state/store/index.ts +0 -24
  333. package/state/store/job-store.ts +0 -162
  334. package/state/store/jobs.ts +0 -64
  335. package/state/store/leaf-store.ts +0 -39
  336. package/state/store/note-store.ts +0 -177
  337. package/state/store/nullifier-store.ts +0 -39
  338. package/state/store/records.ts +0 -61
  339. package/state/store/root-store.ts +0 -34
  340. package/state/store/store.ts +0 -25
  341. package/state.test.ts +0 -235
  342. package/storage/index.ts +0 -3
  343. package/storage/indexeddb.test.ts +0 -99
  344. package/storage/indexeddb.ts +0 -235
  345. package/storage/memory.test.ts +0 -59
  346. package/storage/memory.ts +0 -93
  347. package/transactions/deposit.test.ts +0 -160
  348. package/transactions/deposit.ts +0 -227
  349. package/transactions/index.ts +0 -20
  350. package/transactions/note-sync.test.ts +0 -155
  351. package/transactions/note-sync.ts +0 -452
  352. package/transactions/reconcile.ts +0 -73
  353. package/transactions/transact.test.ts +0 -451
  354. package/transactions/transact.ts +0 -811
  355. package/transactions/types.ts +0 -141
  356. package/tsconfig.json +0 -14
  357. package/types/global.d.ts +0 -15
  358. package/types.ts +0 -24
  359. package/utils/async.ts +0 -15
  360. package/utils/bigint.ts +0 -34
  361. package/utils/crypto.test.ts +0 -69
  362. package/utils/crypto.ts +0 -58
  363. package/utils/json-codec.ts +0 -38
  364. package/utils/polling.ts +0 -6
  365. package/utils/signature.ts +0 -16
  366. package/utils/validators.test.ts +0 -64
  367. package/utils/validators.ts +0 -86
@@ -1,92 +0,0 @@
1
- export var ByteLength;
2
- (function (ByteLength) {
3
- ByteLength[ByteLength["UINT_256"] = 32] = "UINT_256";
4
- ByteLength[ByteLength["UINT_512"] = 64] = "UINT_512";
5
- })(ByteLength || (ByteLength = {}));
6
- const HEX_REGEX = /^[0-9a-f]*$/i;
7
- const isPrefixed = (value) => value.startsWith("0x");
8
- const assertEvenLength = (hex) => {
9
- if (hex.length % 2 !== 0) {
10
- throw new Error("Hex string must have an even length");
11
- }
12
- };
13
- const assertHex = (hex) => {
14
- if (!HEX_REGEX.test(hex)) {
15
- throw new Error("Invalid hex string");
16
- }
17
- };
18
- export class ByteUtils {
19
- static prefix0x(value) {
20
- return isPrefixed(value) ? value : `0x${value}`;
21
- }
22
- static strip0x(value) {
23
- return isPrefixed(value) ? value.slice(2) : value;
24
- }
25
- static hexlify(data) {
26
- if (typeof data === "string") {
27
- return ByteUtils.strip0x(data).toLowerCase();
28
- }
29
- if (typeof data === "number" || typeof data === "bigint") {
30
- if (data < 0)
31
- throw new Error("Cannot hexlify negative values");
32
- const hex = data.toString(16);
33
- return hex.length % 2 === 0 ? hex : `0${hex}`;
34
- }
35
- const view = data instanceof Uint8Array ? data : Uint8Array.from(data);
36
- return ByteUtils.bytesToHex(view);
37
- }
38
- static bytesToHex(bytes) {
39
- let hex = "";
40
- for (const byte of bytes) {
41
- hex += byte.toString(16).padStart(2, "0");
42
- }
43
- return hex;
44
- }
45
- static hexStringToBytes(hex) {
46
- const normalized = ByteUtils.strip0x(hex).toLowerCase();
47
- assertEvenLength(normalized);
48
- assertHex(normalized);
49
- const byteLength = normalized.length / 2;
50
- return Uint8Array.from({ length: byteLength }, (_, index) => parseInt(normalized.slice(index * 2, index * 2 + 2), 16));
51
- }
52
- static arrayify(data) {
53
- if (data instanceof Uint8Array) {
54
- return new Uint8Array(data);
55
- }
56
- if (typeof data === "string") {
57
- return ByteUtils.hexStringToBytes(data);
58
- }
59
- if (typeof data === "number" || typeof data === "bigint") {
60
- return ByteUtils.hexStringToBytes(ByteUtils.hexlify(data));
61
- }
62
- return Uint8Array.from(data);
63
- }
64
- static hexToBigInt(hex) {
65
- return BigInt(`0x${ByteUtils.strip0x(hex)}`);
66
- }
67
- static padToLength(data, length, side = "left") {
68
- const hex = ByteUtils.hexlify(data);
69
- const targetLength = length * 2;
70
- if (hex.length > targetLength) {
71
- throw new Error("Cannot pad data that exceeds target length");
72
- }
73
- return side === "left"
74
- ? hex.padStart(targetLength, "0")
75
- : hex.padEnd(targetLength, "0");
76
- }
77
- static formatToByteLength(data, length) {
78
- const hex = ByteUtils.hexlify(data);
79
- if (hex.length > length * 2) {
80
- return hex.slice(0, length * 2);
81
- }
82
- return hex.padStart(length * 2, "0");
83
- }
84
- static nToHex(value, length, prefix = false) {
85
- const hex = value.toString(16).padStart(length * 2, "0");
86
- return prefix ? `0x${hex}` : hex;
87
- }
88
- }
89
- export function fromUTF8String(value) {
90
- const encoder = new TextEncoder();
91
- return ByteUtils.hexlify(encoder.encode(value));
92
- }
@@ -1,3 +0,0 @@
1
- import { BytesData } from "./bytes.js";
2
- export declare function sha512HMAC(key: BytesData, data: BytesData): string;
3
- //# sourceMappingURL=hash.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"hash.d.ts","sourceRoot":"","sources":["../../key-derivation/hash.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAa,MAAM,YAAY,CAAC;AAMlD,wBAAgB,UAAU,CAAC,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,GAAG,MAAM,CAGlE"}
@@ -1,10 +0,0 @@
1
- import { hmac } from "@noble/hashes/hmac";
2
- import { sha512 } from "@noble/hashes/sha2";
3
- import { ByteUtils } from "./bytes.js";
4
- const toBytes = (data) => {
5
- return ByteUtils.arrayify(data);
6
- };
7
- export function sha512HMAC(key, data) {
8
- const mac = hmac(sha512, toBytes(key), toBytes(data));
9
- return ByteUtils.bytesToHex(mac);
10
- }
@@ -1,8 +0,0 @@
1
- export * from "./babyjubjub.js";
2
- export * from "./bip32.js";
3
- export * from "./bip39.js";
4
- export * from "./bech32.js";
5
- export * from "./bytes.js";
6
- export * from "./hash.js";
7
- export * from "./wallet-node.js";
8
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../key-derivation/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,kBAAkB,CAAC"}
@@ -1,7 +0,0 @@
1
- export * from "./babyjubjub.js";
2
- export * from "./bip32.js";
3
- export * from "./bip39.js";
4
- export * from "./bech32.js";
5
- export * from "./bytes.js";
6
- export * from "./hash.js";
7
- export * from "./wallet-node.js";
@@ -1,45 +0,0 @@
1
- import { KeyNode } from "./bip32.js";
2
- export type SpendingPublicKey = [bigint, bigint];
3
- export type SpendingKeyPair = {
4
- privateKey: Uint8Array;
5
- pubkey: SpendingPublicKey;
6
- };
7
- export type ViewingKeyPair = {
8
- privateKey: Uint8Array;
9
- pubkey: Uint8Array;
10
- };
11
- export type WalletNodes = {
12
- spending: WalletNode;
13
- viewing: WalletNode;
14
- };
15
- export declare const deriveNodes: (mnemonic: string, index?: number) => WalletNodes;
16
- export declare const deriveNodesFromSeed: (seed: Uint8Array, index?: number) => WalletNodes;
17
- export declare class WalletNode {
18
- private readonly chainKey;
19
- private readonly chainCode;
20
- constructor(node: KeyNode);
21
- static fromMnemonic(mnemonic: string): WalletNode;
22
- /**
23
- * Convenience constructor for callers that already hold a seed or mnemonic-derived hex.
24
- */
25
- static fromSeed(seed: Uint8Array | string): WalletNode;
26
- /**
27
- * Traverse a derivation path, returning the resulting hardened node.
28
- */
29
- derive(path: string): WalletNode;
30
- /**
31
- * Derive the BabyJubJub spending key pair (private scalar + affine point).
32
- */
33
- getSpendingKeyPair(): SpendingKeyPair;
34
- static getMasterPublicKey(spendingPublicKey: SpendingPublicKey, nullifyingKey: bigint): bigint;
35
- static getNullifyingKey(viewingPrivateKey: Uint8Array): bigint;
36
- /**
37
- * Derive the Ed25519 viewing key pair for encrypted note retrieval.
38
- */
39
- getViewingKeyPair(): Promise<ViewingKeyPair>;
40
- /**
41
- * Compute the Poseidon-based nullifying key used in note nullifier generation.
42
- */
43
- getNullifyingKey(): Promise<bigint>;
44
- }
45
- //# sourceMappingURL=wallet-node.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"wallet-node.d.ts","sourceRoot":"","sources":["../../key-derivation/wallet-node.ts"],"names":[],"mappings":"AAKA,OAAO,EAIL,OAAO,EACR,MAAM,YAAY,CAAC;AASpB,MAAM,MAAM,iBAAiB,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AACjD,MAAM,MAAM,eAAe,GAAG;IAC5B,UAAU,EAAE,UAAU,CAAC;IACvB,MAAM,EAAE,iBAAiB,CAAC;CAC3B,CAAC;AACF,MAAM,MAAM,cAAc,GAAG;IAAE,UAAU,EAAE,UAAU,CAAC;IAAC,MAAM,EAAE,UAAU,CAAA;CAAE,CAAC;AAgB5E,MAAM,MAAM,WAAW,GAAG;IAAE,QAAQ,EAAE,UAAU,CAAC;IAAC,OAAO,EAAE,UAAU,CAAA;CAAE,CAAC;AAExE,eAAO,MAAM,WAAW,GACtB,UAAU,MAAM,EAChB,QAAO,MAAU,KAChB,WAOF,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAC9B,MAAM,UAAU,EAChB,QAAO,MAAU,KAChB,WAOF,CAAC;AAEF,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAElC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;gBAEvB,IAAI,EAAE,OAAO;IAKzB,MAAM,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU;IAKjD;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,GAAG,UAAU;IAQtD;;OAEG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU;IAUhC;;OAEG;IACH,kBAAkB,IAAI,eAAe;IASrC,MAAM,CAAC,kBAAkB,CACvB,iBAAiB,EAAE,iBAAiB,EACpC,aAAa,EAAE,MAAM,GACpB,MAAM;IAIT,MAAM,CAAC,gBAAgB,CAAC,iBAAiB,EAAE,UAAU,GAAG,MAAM;IAW9D;;OAEG;IACG,iBAAiB,IAAI,OAAO,CAAC,cAAc,CAAC;IASlD;;OAEG;IACG,gBAAgB,IAAI,OAAO,CAAC,MAAM,CAAC;CAI1C"}
@@ -1,109 +0,0 @@
1
- import { Buffer } from "buffer";
2
- import { getPublicKey, hashes } from "@noble/ed25519";
3
- import { sha512 } from "@noble/hashes/sha2";
4
- import { eddsa, poseidon } from "@railgun-community/circomlibjs";
5
- import { childKeyDerivationHardened, getMasterKeyFromSeed, getPathSegments, } from "./bip32.js";
6
- import { Mnemonic } from "./bip39.js";
7
- import { ByteUtils } from "./bytes.js";
8
- hashes.sha512 = sha512;
9
- hashes.sha512Async = async (message) => sha512(message);
10
- const HARDENED_OFFSET = 0x80000000;
11
- /**
12
- * Hardened base paths for spending/viewing keys. The final path becomes
13
- * m/.../{index}' for each account slot.
14
- */
15
- const DERIVATION_PATH_PREFIXES = {
16
- SPENDING: "m/44'/1984'/0'/0'/",
17
- VIEWING: "m/420'/1984'/0'/0'/",
18
- };
19
- const derivePathsForIndex = (index = 0) => ({
20
- spending: `${DERIVATION_PATH_PREFIXES.SPENDING}${index}'`,
21
- viewing: `${DERIVATION_PATH_PREFIXES.VIEWING}${index}'`,
22
- });
23
- export const deriveNodes = (mnemonic, index = 0) => {
24
- const paths = derivePathsForIndex(index);
25
- const root = WalletNode.fromMnemonic(mnemonic);
26
- return {
27
- spending: root.derive(paths.spending),
28
- viewing: root.derive(paths.viewing),
29
- };
30
- };
31
- export const deriveNodesFromSeed = (seed, index = 0) => {
32
- const paths = derivePathsForIndex(index);
33
- const root = WalletNode.fromSeed(seed);
34
- return {
35
- spending: root.derive(paths.spending),
36
- viewing: root.derive(paths.viewing),
37
- };
38
- };
39
- export class WalletNode {
40
- chainKey;
41
- chainCode;
42
- constructor(node) {
43
- this.chainKey = node.chainKey;
44
- this.chainCode = node.chainCode;
45
- }
46
- static fromMnemonic(mnemonic) {
47
- const seedHex = Mnemonic.toSeed(mnemonic);
48
- return new WalletNode(getMasterKeyFromSeed(seedHex));
49
- }
50
- /**
51
- * Convenience constructor for callers that already hold a seed or mnemonic-derived hex.
52
- */
53
- static fromSeed(seed) {
54
- const seedHex = typeof seed === "string"
55
- ? ByteUtils.hexlify(seed)
56
- : ByteUtils.bytesToHex(seed);
57
- return new WalletNode(getMasterKeyFromSeed(seedHex));
58
- }
59
- /**
60
- * Traverse a derivation path, returning the resulting hardened node.
61
- */
62
- derive(path) {
63
- const segments = getPathSegments(path);
64
- const derived = segments.reduce((parent, segment) => childKeyDerivationHardened(parent, segment, HARDENED_OFFSET), { chainKey: this.chainKey, chainCode: this.chainCode });
65
- return new WalletNode(derived);
66
- }
67
- /**
68
- * Derive the BabyJubJub spending key pair (private scalar + affine point).
69
- */
70
- getSpendingKeyPair() {
71
- const privateKey = ByteUtils.hexStringToBytes(this.chainKey);
72
- if (privateKey.length !== 32) {
73
- throw new Error("Spending private key must be 32 bytes");
74
- }
75
- const pubkey = eddsa.prv2pub(Buffer.from(privateKey));
76
- return { privateKey, pubkey };
77
- }
78
- static getMasterPublicKey(spendingPublicKey, nullifyingKey) {
79
- return poseidon([...spendingPublicKey, nullifyingKey]);
80
- }
81
- static getNullifyingKey(viewingPrivateKey) {
82
- if (!(viewingPrivateKey instanceof Uint8Array)) {
83
- throw new Error("Viewing private key must be a Uint8Array");
84
- }
85
- if (viewingPrivateKey.length !== 32) {
86
- throw new Error("Viewing private key must be 32 bytes");
87
- }
88
- const privateKeyHex = ByteUtils.bytesToHex(viewingPrivateKey);
89
- return poseidon([ByteUtils.hexToBigInt(privateKeyHex)]);
90
- }
91
- /**
92
- * Derive the Ed25519 viewing key pair for encrypted note retrieval.
93
- */
94
- async getViewingKeyPair() {
95
- const privateKey = ByteUtils.hexStringToBytes(this.chainKey);
96
- if (privateKey.length !== 32) {
97
- throw new Error("Viewing private key must be 32 bytes");
98
- }
99
- const pubkey = await getPublicKey(privateKey);
100
- return { privateKey, pubkey };
101
- }
102
- /**
103
- * Compute the Poseidon-based nullifying key used in note nullifier generation.
104
- */
105
- async getNullifyingKey() {
106
- const { privateKey } = await this.getViewingKeyPair();
107
- return WalletNode.getNullifyingKey(privateKey);
108
- }
109
- }
package/dist/keys.js DELETED
@@ -1,41 +0,0 @@
1
- import { KeyValidationError } from "./errors.js";
2
- export const RESERVED_PREFIXES = [
3
- "meta:",
4
- "notes:",
5
- "leaves:",
6
- "roots:",
7
- "nullifiers:",
8
- "ciphertexts:",
9
- "jobs:",
10
- "proof_cache:",
11
- "cfg:",
12
- "idx:",
13
- "locks:",
14
- ];
15
- /** Canonical builders for storage key namespaces used across core */
16
- export const keys = {
17
- note: (c, i) => `notes:${c}:${i}`,
18
- leaf: (c, i) => `leaves:${c}:${i}`,
19
- ciphertext: (c, i) => `ciphertexts:${c}:${i}`,
20
- /** Track note indices that remain unspent for a given master public key (mpk acts as the account identifier). */
21
- unspent: (c, mpk, i) => `idx:notes:unspent:${c}:${mpk}:${i}`,
22
- unspentPrefix: (c, mpk) => `idx:notes:unspent:${c}:${mpk}:`,
23
- nullifierObs: (c, n) => `nullifiers:${c}:${n}`,
24
- nullToIndex: (c, n) => `idx:nullifier:${c}:${n}`,
25
- nullifier: (c, n) => `nullifiers:${c}:${n}`,
26
- root: (c, value) => `roots:${c}:${value}`,
27
- latestRoot: (c) => `roots:latest:${c}`,
28
- rootCursor: (c) => `meta:roots:cursor:${c}`,
29
- cursor: (c) => `meta:sync:cursors:${c}`,
30
- aggregate: (c, a) => `idx:notes:agg:${c}:${a}`,
31
- job: (relayId) => `jobs:${relayId}`,
32
- };
33
- export const MAX_KEY_LEN = 512;
34
- export function validateKey(key) {
35
- if (!key)
36
- throw new KeyValidationError("key must not be empty");
37
- if (key.length > MAX_KEY_LEN)
38
- throw new KeyValidationError(`key exceeds ${MAX_KEY_LEN}`);
39
- if (!RESERVED_PREFIXES.some((p) => key.startsWith(p)))
40
- throw new KeyValidationError("key must start with a reserved namespace prefix");
41
- }
@@ -1,80 +0,0 @@
1
- /**
2
- * Configuration for the prover system
3
- * Handles artifact loading from local files or remote artifact server
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
- /**
16
- * Artifact file types
17
- */
18
- export var ArtifactType;
19
- (function (ArtifactType) {
20
- ArtifactType["WASM"] = "joinsplit.wasm";
21
- ArtifactType["ZKEY"] = "joinsplit.zkey";
22
- ArtifactType["VKEY"] = "joinsplit.vkey.json";
23
- })(ArtifactType || (ArtifactType = {}));
24
- /**
25
- * Build artifact URL for a given circuit and artifact type
26
- * @param circuitName Full circuit name (e.g., "joinsplit_2x3_16")
27
- * @param artifactType Type of artifact to fetch
28
- * @param baseUrl Base URL of the artifact server
29
- * @returns Full URL to the artifact
30
- */
31
- export function buildArtifactUrl(circuitName, artifactType, baseUrl = DEFAULT_CONFIG.rpcUrl) {
32
- // Remove trailing slash from baseUrl
33
- const cleanBaseUrl = baseUrl.replace(/\/$/, "");
34
- return `${cleanBaseUrl}/artifacts/${circuitName}/${artifactType}`;
35
- }
36
- /**
37
- * Get relative path for local artifact loading
38
- * Used in Node.js environment when artifacts are bundled
39
- * @param circuitName Full circuit name (e.g., "joinsplit_2x3_16")
40
- * @param artifactType Type of artifact
41
- * @returns Relative path to artifact
42
- */
43
- export function getLocalArtifactPath(circuitName, artifactType) {
44
- // Return multiple candidate paths for different build scenarios
45
- return [
46
- // When compiled: dist/prover/ -> ../../artifacts/circuits/{circuit}/
47
- `../../artifacts/circuits/${circuitName}/${artifactType}`,
48
- // When in source: prover/ -> ../artifacts/circuits/{circuit}/
49
- `../artifacts/circuits/${circuitName}/${artifactType}`,
50
- ];
51
- }
52
- /**
53
- * Runtime detection utilities
54
- */
55
- export const Runtime = {
56
- /**
57
- * Check if running in browser environment
58
- */
59
- isBrowser() {
60
- return typeof window !== "undefined" && typeof document !== "undefined";
61
- },
62
- /**
63
- * Check if running in Node.js environment
64
- */
65
- isNode() {
66
- return (typeof process !== "undefined" &&
67
- process.versions != null &&
68
- process.versions.node != null);
69
- },
70
- /**
71
- * Get environment description for debugging
72
- */
73
- getEnvironment() {
74
- if (this.isBrowser())
75
- return "browser";
76
- if (this.isNode())
77
- return "node";
78
- return "unknown";
79
- },
80
- };
@@ -1 +0,0 @@
1
- export * from "./prover.js";