@unlink-xyz/core 0.1.3 → 0.1.4

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 (369) 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 +56221 -0
  11. package/dist/browser/index.js.map +1 -0
  12. package/dist/browser/wallet/index.js +55942 -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 +30 -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 -7
  42. package/dist/index.d.ts.map +1 -1
  43. package/dist/index.js +6721 -19
  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 +6462 -0
  166. package/dist/wallet/index.js.map +1 -0
  167. package/dist/wallet/sdk.d.ts +48 -0
  168. package/dist/wallet/sdk.d.ts.map +1 -0
  169. package/dist/wallet/types.d.ts +457 -0
  170. package/dist/wallet/types.d.ts.map +1 -0
  171. package/dist/wallet/unlink-wallet.d.ts +187 -0
  172. package/dist/wallet/unlink-wallet.d.ts.map +1 -0
  173. package/package.json +38 -15
  174. package/.eslintrc.json +0 -4
  175. package/account/zkAccount.test.ts +0 -316
  176. package/account/zkAccount.ts +0 -222
  177. package/circuits.json +0 -26
  178. package/clients/broadcaster.ts +0 -67
  179. package/clients/http.ts +0 -94
  180. package/clients/indexer.ts +0 -150
  181. package/config.ts +0 -39
  182. package/core.ts +0 -17
  183. package/dist/account/railgun-imports-prototype.d.ts +0 -12
  184. package/dist/account/railgun-imports-prototype.d.ts.map +0 -1
  185. package/dist/account/railgun-imports-prototype.js +0 -30
  186. package/dist/account/zkAccount.d.ts.map +0 -1
  187. package/dist/account/zkAccount.js +0 -128
  188. package/dist/circuits.json +0 -26
  189. package/dist/clients/broadcaster.js +0 -23
  190. package/dist/clients/http.js +0 -57
  191. package/dist/clients/indexer.js +0 -67
  192. package/dist/config.js +0 -29
  193. package/dist/core.js +0 -12
  194. package/dist/errors.js +0 -18
  195. package/dist/key-derivation/babyjubjub.d.ts +0 -9
  196. package/dist/key-derivation/babyjubjub.d.ts.map +0 -1
  197. package/dist/key-derivation/babyjubjub.js +0 -9
  198. package/dist/key-derivation/bech32.d.ts +0 -22
  199. package/dist/key-derivation/bech32.d.ts.map +0 -1
  200. package/dist/key-derivation/bech32.js +0 -86
  201. package/dist/key-derivation/bip32.d.ts +0 -17
  202. package/dist/key-derivation/bip32.d.ts.map +0 -1
  203. package/dist/key-derivation/bip32.js +0 -41
  204. package/dist/key-derivation/bip39.d.ts +0 -22
  205. package/dist/key-derivation/bip39.d.ts.map +0 -1
  206. package/dist/key-derivation/bip39.js +0 -56
  207. package/dist/key-derivation/bytes.d.ts +0 -19
  208. package/dist/key-derivation/bytes.d.ts.map +0 -1
  209. package/dist/key-derivation/bytes.js +0 -92
  210. package/dist/key-derivation/hash.d.ts +0 -3
  211. package/dist/key-derivation/hash.d.ts.map +0 -1
  212. package/dist/key-derivation/hash.js +0 -10
  213. package/dist/key-derivation/index.d.ts +0 -8
  214. package/dist/key-derivation/index.d.ts.map +0 -1
  215. package/dist/key-derivation/index.js +0 -7
  216. package/dist/key-derivation/wallet-node.d.ts +0 -45
  217. package/dist/key-derivation/wallet-node.d.ts.map +0 -1
  218. package/dist/key-derivation/wallet-node.js +0 -109
  219. package/dist/keys.js +0 -41
  220. package/dist/prover/config.js +0 -80
  221. package/dist/prover/index.js +0 -1
  222. package/dist/prover/prover.js +0 -274
  223. package/dist/prover/registry.js +0 -57
  224. package/dist/schema.js +0 -14
  225. package/dist/state/ciphertext-store.d.ts +0 -12
  226. package/dist/state/ciphertext-store.d.ts.map +0 -1
  227. package/dist/state/ciphertext-store.js +0 -25
  228. package/dist/state/hydrator.d.ts +0 -16
  229. package/dist/state/hydrator.d.ts.map +0 -1
  230. package/dist/state/hydrator.js +0 -18
  231. package/dist/state/index.js +0 -2
  232. package/dist/state/job-store.d.ts +0 -12
  233. package/dist/state/job-store.d.ts.map +0 -1
  234. package/dist/state/job-store.js +0 -118
  235. package/dist/state/jobs.d.ts +0 -50
  236. package/dist/state/jobs.d.ts.map +0 -1
  237. package/dist/state/jobs.js +0 -1
  238. package/dist/state/leaf-store.d.ts +0 -17
  239. package/dist/state/leaf-store.d.ts.map +0 -1
  240. package/dist/state/leaf-store.js +0 -35
  241. package/dist/state/merkle/hydrator.js +0 -36
  242. package/dist/state/merkle/index.js +0 -2
  243. package/dist/state/merkle/merkle-tree.js +0 -104
  244. package/dist/state/merkle-tree.d.ts +0 -34
  245. package/dist/state/merkle-tree.d.ts.map +0 -1
  246. package/dist/state/merkle-tree.js +0 -104
  247. package/dist/state/note-store.d.ts +0 -37
  248. package/dist/state/note-store.d.ts.map +0 -1
  249. package/dist/state/note-store.js +0 -133
  250. package/dist/state/nullifier-store.d.ts +0 -13
  251. package/dist/state/nullifier-store.d.ts.map +0 -1
  252. package/dist/state/nullifier-store.js +0 -21
  253. package/dist/state/records.d.ts +0 -57
  254. package/dist/state/records.d.ts.map +0 -1
  255. package/dist/state/records.js +0 -1
  256. package/dist/state/root-store.d.ts +0 -13
  257. package/dist/state/root-store.d.ts.map +0 -1
  258. package/dist/state/root-store.js +0 -30
  259. package/dist/state/store/ciphertext-store.js +0 -25
  260. package/dist/state/store/index.js +0 -8
  261. package/dist/state/store/job-store.js +0 -118
  262. package/dist/state/store/jobs.js +0 -1
  263. package/dist/state/store/leaf-store.js +0 -35
  264. package/dist/state/store/note-store.js +0 -142
  265. package/dist/state/store/nullifier-store.js +0 -30
  266. package/dist/state/store/records.js +0 -1
  267. package/dist/state/store/root-store.js +0 -30
  268. package/dist/state/store/store.js +0 -22
  269. package/dist/state/store.d.ts +0 -26
  270. package/dist/state/store.d.ts.map +0 -1
  271. package/dist/state/store.js +0 -19
  272. package/dist/state.d.ts +0 -83
  273. package/dist/state.d.ts.map +0 -1
  274. package/dist/state.js +0 -171
  275. package/dist/storage/index.js +0 -2
  276. package/dist/storage/indexeddb.js +0 -205
  277. package/dist/storage/memory.js +0 -87
  278. package/dist/transactions/deposit.js +0 -169
  279. package/dist/transactions/index.js +0 -4
  280. package/dist/transactions/note-sync.js +0 -320
  281. package/dist/transactions/reconcile.js +0 -39
  282. package/dist/transactions/shield.d.ts +0 -5
  283. package/dist/transactions/shield.d.ts.map +0 -1
  284. package/dist/transactions/shield.js +0 -93
  285. package/dist/transactions/transact.js +0 -561
  286. package/dist/transactions/types.d.ts +0 -114
  287. package/dist/transactions/types.d.ts.map +0 -1
  288. package/dist/transactions/types.js +0 -1
  289. package/dist/transactions/utils.d.ts +0 -10
  290. package/dist/transactions/utils.d.ts.map +0 -1
  291. package/dist/transactions/utils.js +0 -17
  292. package/dist/types.js +0 -1
  293. package/dist/utils/bigint.js +0 -29
  294. package/dist/utils/crypto.d.ts +0 -12
  295. package/dist/utils/crypto.d.ts.map +0 -1
  296. package/dist/utils/crypto.js +0 -39
  297. package/dist/utils/json-codec.js +0 -25
  298. package/dist/utils/polling.js +0 -6
  299. package/dist/utils/signature.js +0 -12
  300. package/dist/utils/time.d.ts +0 -2
  301. package/dist/utils/time.d.ts.map +0 -1
  302. package/dist/utils/time.js +0 -3
  303. package/dist/utils/validators.js +0 -70
  304. package/dist/utils/witness.d.ts +0 -11
  305. package/dist/utils/witness.d.ts.map +0 -1
  306. package/dist/utils/witness.js +0 -19
  307. package/errors.ts +0 -20
  308. package/index.ts +0 -21
  309. package/key-derivation/babyjubjub.ts +0 -11
  310. package/key-derivation/bech32.test.ts +0 -90
  311. package/key-derivation/bech32.ts +0 -124
  312. package/key-derivation/bip32.ts +0 -56
  313. package/key-derivation/bip39.ts +0 -76
  314. package/key-derivation/bytes.ts +0 -118
  315. package/key-derivation/hash.ts +0 -13
  316. package/key-derivation/index.ts +0 -7
  317. package/key-derivation/wallet-node.ts +0 -155
  318. package/keys.ts +0 -47
  319. package/prover/config.ts +0 -104
  320. package/prover/index.ts +0 -1
  321. package/prover/prover.integration.test.ts +0 -162
  322. package/prover/prover.test.ts +0 -309
  323. package/prover/prover.ts +0 -405
  324. package/prover/registry.test.ts +0 -90
  325. package/prover/registry.ts +0 -82
  326. package/schema.ts +0 -17
  327. package/setup-artifacts.sh +0 -57
  328. package/state/index.ts +0 -2
  329. package/state/merkle/hydrator.ts +0 -69
  330. package/state/merkle/index.ts +0 -12
  331. package/state/merkle/merkle-tree.test.ts +0 -50
  332. package/state/merkle/merkle-tree.ts +0 -163
  333. package/state/store/ciphertext-store.ts +0 -28
  334. package/state/store/index.ts +0 -24
  335. package/state/store/job-store.ts +0 -162
  336. package/state/store/jobs.ts +0 -64
  337. package/state/store/leaf-store.ts +0 -39
  338. package/state/store/note-store.ts +0 -177
  339. package/state/store/nullifier-store.ts +0 -39
  340. package/state/store/records.ts +0 -61
  341. package/state/store/root-store.ts +0 -34
  342. package/state/store/store.ts +0 -25
  343. package/state.test.ts +0 -235
  344. package/storage/index.ts +0 -3
  345. package/storage/indexeddb.test.ts +0 -99
  346. package/storage/indexeddb.ts +0 -235
  347. package/storage/memory.test.ts +0 -59
  348. package/storage/memory.ts +0 -93
  349. package/transactions/deposit.test.ts +0 -160
  350. package/transactions/deposit.ts +0 -227
  351. package/transactions/index.ts +0 -20
  352. package/transactions/note-sync.test.ts +0 -155
  353. package/transactions/note-sync.ts +0 -452
  354. package/transactions/reconcile.ts +0 -73
  355. package/transactions/transact.test.ts +0 -451
  356. package/transactions/transact.ts +0 -811
  357. package/transactions/types.ts +0 -141
  358. package/tsconfig.json +0 -15
  359. package/types/global.d.ts +0 -15
  360. package/types.ts +0 -24
  361. package/utils/async.ts +0 -15
  362. package/utils/bigint.ts +0 -34
  363. package/utils/crypto.test.ts +0 -69
  364. package/utils/crypto.ts +0 -58
  365. package/utils/json-codec.ts +0 -38
  366. package/utils/polling.ts +0 -6
  367. package/utils/signature.ts +0 -16
  368. package/utils/validators.test.ts +0 -64
  369. package/utils/validators.ts +0 -86
@@ -1,20 +1,18 @@
1
- import type { JobStatus, PendingJobKind } from "../state/index.js";
2
- import type { BaseStateStore, DepositSyncResult, TransactSyncResult } from "./types.js";
3
- type DepositClient = {
4
- syncPendingDeposit(relayId: string): Promise<DepositSyncResult>;
5
- };
6
- type TransactService = {
7
- syncPendingTransact(relayId: string): Promise<TransactSyncResult>;
8
- };
1
+ import type { JobKind, JobStatus } from "../state/index.js";
2
+ import type { BaseStateStore, DepositSyncResult, TransactSyncResult } from "./types/index.js";
9
3
  type ReconcilerDeps = {
10
4
  stateStore: BaseStateStore;
11
- depositClient: DepositClient;
12
- transactService: TransactService;
5
+ depositClient: {
6
+ syncPendingDeposit: (relayId: string) => Promise<DepositSyncResult>;
7
+ };
8
+ transactService: {
9
+ syncPendingTransact: (relayId: string) => Promise<TransactSyncResult>;
10
+ };
13
11
  };
14
12
  export declare function createJobReconciler(deps: ReconcilerDeps): {
15
13
  reconcileRelay: (relayId: string) => Promise<DepositSyncResult | TransactSyncResult>;
16
14
  reconcileAll: (filter?: {
17
- kind?: PendingJobKind;
15
+ kind?: JobKind;
18
16
  statuses?: JobStatus[];
19
17
  }) => Promise<unknown[]>;
20
18
  };
@@ -1 +1 @@
1
- {"version":3,"file":"reconcile.d.ts","sourceRoot":"","sources":["../../transactions/reconcile.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,SAAS,EACT,cAAc,EAEf,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EACV,cAAc,EACd,iBAAiB,EACjB,kBAAkB,EACnB,MAAM,YAAY,CAAC;AAEpB,KAAK,aAAa,GAAG;IACnB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;CACjE,CAAC;AAEF,KAAK,eAAe,GAAG;IACrB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;CACnE,CAAC;AAEF,KAAK,cAAc,GAAG;IACpB,UAAU,EAAE,cAAc,CAAC;IAC3B,aAAa,EAAE,aAAa,CAAC;IAC7B,eAAe,EAAE,eAAe,CAAC;CAClC,CAAC;AAIF,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,cAAc;8BAUf,MAAM;4BASnC;QACN,IAAI,CAAC,EAAE,cAAc,CAAC;QACtB,QAAQ,CAAC,EAAE,SAAS,EAAE,CAAC;KACxB;EAuBJ"}
1
+ {"version":3,"file":"reconcile.d.ts","sourceRoot":"","sources":["../../transactions/reconcile.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAa,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACvE,OAAO,KAAK,EACV,cAAc,EACd,iBAAiB,EACjB,kBAAkB,EACnB,MAAM,kBAAkB,CAAC;AAE1B,KAAK,cAAc,GAAG;IACpB,UAAU,EAAE,cAAc,CAAC;IAC3B,aAAa,EAAE;QACb,kBAAkB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,iBAAiB,CAAC,CAAC;KACrE,CAAC;IACF,eAAe,EAAE;QACf,mBAAmB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,kBAAkB,CAAC,CAAC;KACvE,CAAC;CACH,CAAC;AAIF,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,cAAc;8BAmEf,MAAM;4BAgBnC;QACN,IAAI,CAAC,EAAE,OAAO,CAAC;QACf,QAAQ,CAAC,EAAE,SAAS,EAAE,CAAC;KACxB;EAyBJ"}
@@ -1,29 +1,37 @@
1
1
  import { IMTMerkleProof } from "@zk-kit/imt";
2
- import { FetchLike } from "../clients/http.js";
3
- import { LocalMerkleTrees } from "../state/index.js";
4
- import { TransactRelayResult, TransactRequest, TransactStateStore, TransactSyncResult } from "./types.js";
5
- export declare const TRANSACT_ABI = "function transact(((uint256[2] pA, uint256[2][2] pB, uint256[2] pC) proof, uint256 merkleRoot, uint256[] nullifierHashes, uint256[] newCommitments, (uint64 chainID, address poolAddress) context, (uint256 npk, uint256 amount, address token) withdrawal, (uint256[3] data)[] ciphertexts)[] _transactions)";
6
- type TransactServiceOptions = {
7
- merkleTrees?: LocalMerkleTrees;
8
- fetch?: FetchLike;
9
- pollIntervalMs?: number;
10
- pollTimeoutMs?: number;
2
+ import { SerializedWitness, ServiceOptions, TransactParams, TransactRelayResult, TransactStateStore, TransactSyncResult } from "./types/index.js";
3
+ export declare const TRANSACT_ABI = "function transact(((uint256[2] pA, uint256[2][2] pB, uint256[2] pC) proof, uint256 merkleRoot, uint256[] nullifierHashes, uint256[] newCommitments, (uint64 chainId, address poolAddress, uint256 adapterDataHash) context, (uint256 npk, uint256 amount, address token) withdrawal, (uint256 ephemeralKey, uint256[3] data)[] ciphertexts)[] _transactions)";
4
+ /** Default timeout for proof generation in milliseconds (60 seconds) */
5
+ export declare const DEFAULT_PROOF_TIMEOUT_MS = 60000;
6
+ export declare function computeBoundParamsHash(chainId: number, poolAddress: string, adapterDataHash?: bigint): bigint;
7
+ export type AdapterExecutionCall = {
8
+ to: string;
9
+ data: string;
10
+ value: bigint;
11
11
  };
12
- export type SerializedWitness = {
13
- root: string;
14
- leaf: string;
15
- pathElements: string[][];
16
- pathIndices: number[];
17
- leafIndex: number;
12
+ export type AdapterExecutionReshield = {
13
+ npk: bigint;
14
+ random: bigint;
15
+ token: string;
16
+ minAmount: bigint;
18
17
  };
18
+ export declare function computeAdapterDataHash(params: {
19
+ calls: AdapterExecutionCall[];
20
+ reshields: AdapterExecutionReshield[];
21
+ inputTokens: string[];
22
+ nonce: bigint;
23
+ deadline: bigint;
24
+ chainId: number;
25
+ }): bigint;
19
26
  export declare function serializeWitness(proof: IMTMerkleProof, index: number): SerializedWitness;
20
- export declare function deserializeWitness(serialized: SerializedWitness): IMTMerkleProof;
27
+ export declare function deserializeWitness(s: SerializedWitness): IMTMerkleProof;
21
28
  /**
22
- * Simulates the transact pipeline: builds Merkle witnesses, derives nullifiers, and updates local state.
29
+ * Execute private transaction(s): build ZK proofs (in parallel), encrypt outputs, and broadcast.
30
+ * Accepts 1 or more transactions - single tx just passes [{...}].
23
31
  */
24
- export declare function createTransactService(stateStore: TransactStateStore, options?: TransactServiceOptions): {
25
- transact(request: TransactRequest): Promise<TransactRelayResult>;
26
- syncPendingTransact(relayId: string): Promise<TransactSyncResult>;
27
- };
28
- export {};
32
+ export declare function transact(store: TransactStateStore, req: TransactParams, opts: ServiceOptions): Promise<TransactRelayResult>;
33
+ /**
34
+ * Wait for a pending transaction to be indexed and update local state.
35
+ */
36
+ export declare function syncTransact(store: TransactStateStore, relayId: string, opts: ServiceOptions): Promise<TransactSyncResult>;
29
37
  //# sourceMappingURL=transact.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"transact.d.ts","sourceRoot":"","sources":["../../transactions/transact.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAI7C,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAK/C,OAAO,EAGL,gBAAgB,EAGjB,MAAM,mBAAmB,CAAC;AAqB3B,OAAO,EAGL,mBAAmB,EACnB,eAAe,EACf,kBAAkB,EAClB,kBAAkB,EACnB,MAAM,YAAY,CAAC;AAEpB,eAAO,MAAM,YAAY,kTACwR,CAAC;AA8ClT,KAAK,sBAAsB,GAAG;IAC5B,WAAW,CAAC,EAAE,gBAAgB,CAAC;IAC/B,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAmDF,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,CAChC,UAAU,EAAE,iBAAiB,GAC5B,cAAc,CAUhB;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,kBAAkB,EAC9B,OAAO,GAAE,sBAA2B;sBAwVV,eAAe,GAAG,OAAO,CAAC,mBAAmB,CAAC;iCA+LnC,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;EAoF1E"}
1
+ {"version":3,"file":"transact.d.ts","sourceRoot":"","sources":["../../transactions/transact.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAiC7C,OAAO,EAEL,iBAAiB,EACjB,cAAc,EAGd,cAAc,EACd,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,EACnB,MAAM,kBAAkB,CAAC;AAE1B,eAAO,MAAM,YAAY,iWACuU,CAAC;AAEjW,wEAAwE;AACxE,eAAO,MAAM,wBAAwB,QAAS,CAAC;AAS/C,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,EACnB,eAAe,GAAE,MAAW,GAC3B,MAAM,CAOR;AAED,MAAM,MAAM,oBAAoB,GAAG;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACrC,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,wBAAgB,sBAAsB,CAAC,MAAM,EAAE;IAC7C,KAAK,EAAE,oBAAoB,EAAE,CAAC;IAC9B,SAAS,EAAE,wBAAwB,EAAE,CAAC;IACtC,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB,GAAG,MAAM,CAqBT;AAED,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,cAAc,EACrB,KAAK,EAAE,MAAM,GACZ,iBAAiB,CAUnB;AAED,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,iBAAiB,GAAG,cAAc,CAQvE;AA6MD;;;GAGG;AACH,wBAAsB,QAAQ,CAC5B,KAAK,EAAE,kBAAkB,EACzB,GAAG,EAAE,cAAc,EACnB,IAAI,EAAE,cAAc,GACnB,OAAO,CAAC,mBAAmB,CAAC,CAoN9B;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,KAAK,EAAE,kBAAkB,EACzB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,cAAc,GACnB,OAAO,CAAC,kBAAkB,CAAC,CAkI7B"}
@@ -0,0 +1,34 @@
1
+ import type { Recipient, SelectableNote, TransactionPlan } from "./types/index.js";
2
+ /**
3
+ * Plan a transaction: select notes, choose circuit, generate outputs.
4
+ *
5
+ * This function handles:
6
+ * 1. Note selection using consolidation-first algorithm
7
+ * 2. Circuit selection (smallest that fits)
8
+ * 3. Output generation with cryptographic derivations
9
+ *
10
+ * @param notes - Available unspent notes (pre-filtered by token/chain by caller)
11
+ * @param recipients - List of recipients with their amounts
12
+ * @param senderMpk - Sender's master public key (for change output)
13
+ * @param token - Token address being transferred
14
+ * @returns Complete transaction plan ready for building TransactRequest
15
+ * @throws ValidationError if insufficient balance, no valid circuit, or other constraints fail
16
+ *
17
+ * @example
18
+ * ```typescript
19
+ * const plan = planTransaction(
20
+ * spendableNotes,
21
+ * [{ mpk: recipientMpk, amount: 100n }],
22
+ * senderMpk,
23
+ * "0x...",
24
+ * );
25
+ * // plan.inputs - selected notes to spend
26
+ * // plan.outputs - generated outputs (recipient + change)
27
+ * // plan.circuit - circuit to use for proof
28
+ * ```
29
+ */
30
+ export declare function planTransaction<T extends {
31
+ index: number;
32
+ value: bigint | string;
33
+ }>(notes: SelectableNote<T>[], recipients: Recipient[], senderMpk: bigint, token: string, senderViewingPubKey: Uint8Array): TransactionPlan<T>;
34
+ //# sourceMappingURL=transaction-planner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transaction-planner.d.ts","sourceRoot":"","sources":["../../transactions/transaction-planner.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAGV,SAAS,EACT,cAAc,EACd,eAAe,EAChB,MAAM,kBAAkB,CAAC;AAuD1B;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,eAAe,CAC7B,CAAC,SAAS;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,EAEnD,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,EAAE,EAC1B,UAAU,EAAE,SAAS,EAAE,EACvB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,EACb,mBAAmB,EAAE,UAAU,GAC9B,eAAe,CAAC,CAAC,CAAC,CA2EpB"}
@@ -0,0 +1,37 @@
1
+ import type { SelectableNote, TransactionPlan } from "./types/index.js";
2
+ /**
3
+ * Input for a single transfer in a batch.
4
+ */
5
+ export type TransferInput = {
6
+ token: string;
7
+ amount: bigint;
8
+ recipientMpk: bigint;
9
+ recipientViewingPubKey: Uint8Array;
10
+ };
11
+ /**
12
+ * Plan transfer transaction(s).
13
+ * Accepts 1 or more transfers. When multiple transfers use the same token,
14
+ * notes are tracked across transfers to avoid double-spending.
15
+ *
16
+ * @param notes - Available unspent notes (all tokens)
17
+ * @param transfers - Transfers to plan (each with token, amount, recipientMpk)
18
+ * @param senderMpk - Sender's master public key (for change outputs)
19
+ * @returns Array of transaction plans, one per transfer input
20
+ *
21
+ * @example
22
+ * ```typescript
23
+ * // Single transfer
24
+ * const [plan] = planTransfers(notes, [{ token, amount: 100n, recipientMpk }], senderMpk);
25
+ *
26
+ * // Multiple transfers (possibly same token)
27
+ * const plans = planTransfers(notes, [
28
+ * { token: ETH, amount: 100n, recipientMpk: recipient1Mpk },
29
+ * { token: USDC, amount: 50n, recipientMpk: recipient2Mpk },
30
+ * ], senderMpk);
31
+ * ```
32
+ */
33
+ export declare function planTransfers<T extends {
34
+ index: number;
35
+ value: bigint | string;
36
+ }>(notes: SelectableNote<T>[], transfers: TransferInput[], senderMpk: bigint, senderViewingPubKey: Uint8Array): TransactionPlan<T>[];
37
+ //# sourceMappingURL=transfer-planner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transfer-planner.d.ts","sourceRoot":"","sources":["../../transactions/transfer-planner.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAExE;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,sBAAsB,EAAE,UAAU,CAAC;CACpC,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,aAAa,CAC3B,CAAC,SAAS;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,EAEnD,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,EAAE,EAC1B,SAAS,EAAE,aAAa,EAAE,EAC1B,SAAS,EAAE,MAAM,EACjB,mBAAmB,EAAE,UAAU,GAC9B,eAAe,CAAC,CAAC,CAAC,EAAE,CA4FtB"}
@@ -0,0 +1,67 @@
1
+ /**
2
+ * Types for deposit operations.
3
+ */
4
+ import type { AccountView } from "../../account/account.js";
5
+ import type { NoteInput } from "./domain.js";
6
+ /**
7
+ * Parameters required to execute a deposit.
8
+ * Always accepts an array of notes - single deposits just pass [note].
9
+ */
10
+ export type DepositParams = {
11
+ /** Account identity (viewing key + mpk); spending key not needed for deposit */
12
+ account: AccountView;
13
+ /** Chain ID for the target blockchain */
14
+ chainId: number;
15
+ /** Pool contract address */
16
+ poolAddress: string;
17
+ /** Depositor address (on-chain account) */
18
+ depositor: string;
19
+ /** Notes to deposit (can be different tokens) */
20
+ notes: NoteInput[];
21
+ };
22
+ /**
23
+ * Individual commitment info in a deposit result.
24
+ */
25
+ export type DepositCommitmentInfo = {
26
+ /** Commitment hex string */
27
+ commitment: string;
28
+ /** Token address */
29
+ token: string;
30
+ /** Amount deposited */
31
+ amount: bigint;
32
+ };
33
+ /**
34
+ * Result of a deposit request.
35
+ * The user must submit this transaction on-chain using their EOA.
36
+ */
37
+ export type DepositRelayResult = {
38
+ /** Relay ID for tracking */
39
+ relayId: string;
40
+ /** Pool contract address to submit transaction to */
41
+ to: string;
42
+ /** Calldata to submit on-chain */
43
+ calldata: string;
44
+ /** msg.value to attach: sum of ETH note amounts, or 0n for pure ERC20 */
45
+ value: bigint;
46
+ /** Individual commitment results */
47
+ commitments: DepositCommitmentInfo[];
48
+ };
49
+ /**
50
+ * Result of syncing a pending deposit.
51
+ */
52
+ export type DepositSyncResult = {
53
+ /** Chain ID */
54
+ chainId: number;
55
+ /** Individual commitment sync results */
56
+ commitments: Array<{
57
+ /** Index of the commitment in the tree */
58
+ index: number;
59
+ /** Commitment hex string */
60
+ commitment: string;
61
+ /** Merkle root after insertion */
62
+ root: string;
63
+ }>;
64
+ /** Final merkle root after all insertions */
65
+ finalRoot: string;
66
+ };
67
+ //# sourceMappingURL=deposit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deposit.d.ts","sourceRoot":"","sources":["../../../transactions/types/deposit.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C;;;GAGG;AACH,MAAM,MAAM,aAAa,GAAG;IAC1B,gFAAgF;IAChF,OAAO,EAAE,WAAW,CAAC;IACrB,yCAAyC;IACzC,OAAO,EAAE,MAAM,CAAC;IAChB,4BAA4B;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,2CAA2C;IAC3C,SAAS,EAAE,MAAM,CAAC;IAClB,iDAAiD;IACjD,KAAK,EAAE,SAAS,EAAE,CAAC;CACpB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG;IAClC,4BAA4B;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,oBAAoB;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,uBAAuB;IACvB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC/B,4BAA4B;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,qDAAqD;IACrD,EAAE,EAAE,MAAM,CAAC;IACX,kCAAkC;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,yEAAyE;IACzE,KAAK,EAAE,MAAM,CAAC;IACd,oCAAoC;IACpC,WAAW,EAAE,qBAAqB,EAAE,CAAC;CACtC,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,eAAe;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,yCAAyC;IACzC,WAAW,EAAE,KAAK,CAAC;QACjB,0CAA0C;QAC1C,KAAK,EAAE,MAAM,CAAC;QACd,4BAA4B;QAC5B,UAAU,EAAE,MAAM,CAAC;QACnB,kCAAkC;QAClC,IAAI,EAAE,MAAM,CAAC;KACd,CAAC,CAAC;IACH,6CAA6C;IAC7C,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC"}
@@ -0,0 +1,70 @@
1
+ /**
2
+ * Core domain types for cryptographic operations.
3
+ */
4
+ /**
5
+ * Placeholder proof structure matching the pool interface.
6
+ */
7
+ export type Proof = {
8
+ pA: [bigint, bigint];
9
+ pB: [[bigint, bigint], [bigint, bigint]];
10
+ pC: [bigint, bigint];
11
+ pubSignals: bigint[];
12
+ };
13
+ /**
14
+ * Encrypted note ciphertext.
15
+ */
16
+ export type Ciphertext = {
17
+ ephemeralKey: bigint;
18
+ data: [bigint, bigint, bigint];
19
+ };
20
+ /**
21
+ * Generic note input for deposits and transaction outputs.
22
+ */
23
+ export type NoteInput = {
24
+ /** Master public key */
25
+ mpk: bigint;
26
+ /** Random nonce */
27
+ random: bigint;
28
+ /** Token address */
29
+ token: string;
30
+ /** Amount */
31
+ amount: bigint;
32
+ /** Whether this output goes to a recipient or back to sender as change */
33
+ owner?: "recipient" | "self";
34
+ /** Ed25519 viewing public key of the note owner (for ECDH encryption) */
35
+ viewingPublicKey: Uint8Array;
36
+ };
37
+ /**
38
+ * Withdrawal note input for extracting funds from the pool.
39
+ */
40
+ export type WithdrawalNoteInput = {
41
+ /** Note public key (derived) */
42
+ npk: bigint;
43
+ /** Amount to withdraw */
44
+ amount: bigint;
45
+ /** Token address */
46
+ token: string;
47
+ };
48
+ /**
49
+ * Minimal reference to an input note.
50
+ */
51
+ export type SpendNoteReference = {
52
+ /** Index of the note in the commitment tree */
53
+ index: number;
54
+ };
55
+ /**
56
+ * Serialized witness for merkle proof.
57
+ */
58
+ export type SerializedWitness = {
59
+ /** Merkle root as hex string */
60
+ root: string;
61
+ /** Leaf value as hex string */
62
+ leaf: string;
63
+ /** Path elements (siblings) as hex strings */
64
+ pathElements: string[][];
65
+ /** Path indices for merkle proof */
66
+ pathIndices: number[];
67
+ /** Leaf index in the tree */
68
+ leafIndex: number;
69
+ };
70
+ //# sourceMappingURL=domain.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"domain.d.ts","sourceRoot":"","sources":["../../../transactions/types/domain.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,MAAM,KAAK,GAAG;IAClB,EAAE,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrB,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACzC,EAAE,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrB,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;CAChC,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG;IACtB,wBAAwB;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,mBAAmB;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,oBAAoB;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,aAAa;IACb,MAAM,EAAE,MAAM,CAAC;IACf,0EAA0E;IAC1E,KAAK,CAAC,EAAE,WAAW,GAAG,MAAM,CAAC;IAC7B,yEAAyE;IACzE,gBAAgB,EAAE,UAAU,CAAC;CAC9B,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAChC,gCAAgC;IAChC,GAAG,EAAE,MAAM,CAAC;IACZ,yBAAyB;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,oBAAoB;IACpB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC/B,+CAA+C;IAC/C,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,gCAAgC;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,+BAA+B;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,8CAA8C;IAC9C,YAAY,EAAE,MAAM,EAAE,EAAE,CAAC;IACzB,oCAAoC;IACpC,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,6BAA6B;IAC7B,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Transaction type definitions.
3
+ *
4
+ * Organized by concern:
5
+ * - state-stores: Database/storage interfaces
6
+ * - options: Configuration for services
7
+ * - domain: Core cryptographic types
8
+ * - deposit: Deposit-specific types
9
+ * - transact: Transaction-specific types
10
+ * - planning: Transaction planning types
11
+ */
12
+ export * from "./state-stores.js";
13
+ export * from "./options.js";
14
+ export * from "./domain.js";
15
+ export * from "./deposit.js";
16
+ export * from "./transact.js";
17
+ export * from "./planning.js";
18
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../transactions/types/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC"}
@@ -0,0 +1,54 @@
1
+ /**
2
+ * Configuration options for transaction services.
3
+ */
4
+ import type { FetchLike } from "../../clients/http.js";
5
+ import type { ProverOptions } from "../../prover/prover.js";
6
+ import type { LocalMerkleTrees } from "../../state/index.js";
7
+ /**
8
+ * Polling configuration for async operations.
9
+ */
10
+ export type PollingOptions = {
11
+ /** Polling interval in milliseconds */
12
+ pollIntervalMs?: number;
13
+ /** Polling timeout in milliseconds */
14
+ pollTimeoutMs?: number;
15
+ /** Initial delay before first poll (reduces 404s for fresh operations). Set to 0 in tests. */
16
+ initialPollDelayMs?: number;
17
+ };
18
+ /**
19
+ * Common options for transaction services (deposit, transact).
20
+ */
21
+ export type ServiceOptions = PollingOptions & {
22
+ /** Gateway URL for the Unlink backend services */
23
+ gatewayUrl: string;
24
+ /** Optional prover/artifact source overrides */
25
+ prover?: ProverOptions;
26
+ /** Fetch implementation for HTTP requests */
27
+ fetch?: FetchLike;
28
+ /** Merkle tree instances for local state */
29
+ merkleTrees?: LocalMerkleTrees;
30
+ /** Timeout for proof generation in milliseconds (default: 60000) */
31
+ proofTimeoutMs?: number;
32
+ /**
33
+ * Skip broadcaster submission (for swap adapter wrapping).
34
+ */
35
+ skipBroadcast?: boolean;
36
+ /** Skip local job persistence (adapter manages its own job record). */
37
+ persistJob?: boolean;
38
+ };
39
+ /**
40
+ * Options for note synchronization operations.
41
+ */
42
+ export type NoteSyncOptions = {
43
+ /** Gateway URL for the Unlink backend services (required if indexerClient not provided) */
44
+ gatewayUrl?: string;
45
+ /** Merkle tree instances for local state */
46
+ merkleTrees?: LocalMerkleTrees;
47
+ /** Indexer client instance (if provided, gatewayUrl is not needed) */
48
+ indexerClient?: ReturnType<any>;
49
+ /** Fetch implementation for HTTP requests */
50
+ fetch?: FetchLike;
51
+ /** Batch size for fetching commitments */
52
+ limit?: number;
53
+ };
54
+ //# sourceMappingURL=options.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../../transactions/types/options.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAE7D;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B,uCAAuC;IACvC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,sCAAsC;IACtC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,8FAA8F;IAC9F,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,cAAc,GAAG;IAC5C,kDAAkD;IAClD,UAAU,EAAE,MAAM,CAAC;IACnB,gDAAgD;IAChD,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,6CAA6C;IAC7C,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,4CAA4C;IAC5C,WAAW,CAAC,EAAE,gBAAgB,CAAC;IAC/B,oEAAoE;IACpE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;OAEG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,uEAAuE;IACvE,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B,2FAA2F;IAC3F,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,4CAA4C;IAC5C,WAAW,CAAC,EAAE,gBAAgB,CAAC;IAC/B,sEAAsE;IAEtE,aAAa,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC;IAChC,6CAA6C;IAC7C,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,0CAA0C;IAC1C,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC"}
@@ -0,0 +1,82 @@
1
+ /**
2
+ * Types for transaction planning and note selection.
3
+ */
4
+ import type { NoteInput } from "./domain.js";
5
+ /**
6
+ * A recipient of funds in a transaction.
7
+ */
8
+ export type Recipient = {
9
+ /** Recipient's master public key */
10
+ mpk: bigint;
11
+ /** Amount to send */
12
+ amount: bigint;
13
+ /** Recipient's Ed25519 viewing public key (for ECDH encryption) */
14
+ viewingPublicKey: Uint8Array;
15
+ };
16
+ /**
17
+ * A planned output note with derived cryptographic values.
18
+ */
19
+ export type PlannedOutput = NoteInput & {
20
+ /** Whether this output goes to a recipient or back to sender as change */
21
+ owner: "recipient" | "self";
22
+ /** Derived note public key: poseidon([mpk, random]) */
23
+ npk: bigint;
24
+ /** Derived commitment: poseidon([npk, tokenScalar, amount]) */
25
+ commitment: bigint;
26
+ };
27
+ /**
28
+ * Complete transaction plan with selected inputs, planned outputs, and circuit.
29
+ */
30
+ export type TransactionPlan<T> = {
31
+ /** Selected input notes */
32
+ inputs: SelectableNote<T>[];
33
+ /** Planned output notes (recipients + change) */
34
+ outputs: PlannedOutput[];
35
+ /** Output notes formatted for TransactParams (without derived fields) */
36
+ outputNotes: NoteInput[];
37
+ /** Selected circuit configuration */
38
+ circuit: any;
39
+ /** Total input amount from selected notes */
40
+ totalInput: bigint;
41
+ /** Total amount sent to recipients */
42
+ totalSent: bigint;
43
+ /** Change amount returned to sender */
44
+ change: bigint;
45
+ /** Token address */
46
+ token: string;
47
+ };
48
+ /**
49
+ * Minimal note representation for selection algorithm.
50
+ * Generic over T to allow passing through additional note fields.
51
+ */
52
+ export type SelectableNote<T = unknown> = T & {
53
+ /** Note index in the commitment tree */
54
+ index: number;
55
+ /** Note value */
56
+ value: bigint | string;
57
+ };
58
+ /**
59
+ * Options for note selection algorithm.
60
+ */
61
+ export type SelectionOptions = {
62
+ /** Maximum input notes to select (circuit constraint). Default: 8 */
63
+ maxInputs?: number;
64
+ /** Maximum output notes (circuit constraint). Default: 4 */
65
+ maxOutputs?: number;
66
+ /** Number of recipients (outputs excluding change). Default: 1 */
67
+ recipientCount?: number;
68
+ };
69
+ /**
70
+ * Result of note selection algorithm.
71
+ */
72
+ export type SelectionResult<T> = {
73
+ /** Selected notes, sorted by value ascending */
74
+ selected: SelectableNote<T>[];
75
+ /** Sum of selected note values */
76
+ totalInput: bigint;
77
+ /** Amount needed for transaction */
78
+ totalNeeded: bigint;
79
+ /** Change amount (totalInput - totalNeeded) */
80
+ change: bigint;
81
+ };
82
+ //# sourceMappingURL=planning.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"planning.d.ts","sourceRoot":"","sources":["../../../transactions/types/planning.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG;IACtB,oCAAoC;IACpC,GAAG,EAAE,MAAM,CAAC;IACZ,qBAAqB;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,mEAAmE;IACnE,gBAAgB,EAAE,UAAU,CAAC;CAC9B,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG;IACtC,0EAA0E;IAC1E,KAAK,EAAE,WAAW,GAAG,MAAM,CAAC;IAC5B,uDAAuD;IACvD,GAAG,EAAE,MAAM,CAAC;IACZ,+DAA+D;IAC/D,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,eAAe,CAAC,CAAC,IAAI;IAC/B,2BAA2B;IAC3B,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5B,iDAAiD;IACjD,OAAO,EAAE,aAAa,EAAE,CAAC;IACzB,yEAAyE;IACzE,WAAW,EAAE,SAAS,EAAE,CAAC;IACzB,qCAAqC;IAErC,OAAO,EAAE,GAAG,CAAC;IACb,6CAA6C;IAC7C,UAAU,EAAE,MAAM,CAAC;IACnB,sCAAsC;IACtC,SAAS,EAAE,MAAM,CAAC;IAClB,uCAAuC;IACvC,MAAM,EAAE,MAAM,CAAC;IACf,oBAAoB;IACpB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,cAAc,CAAC,CAAC,GAAG,OAAO,IAAI,CAAC,GAAG;IAC5C,wCAAwC;IACxC,KAAK,EAAE,MAAM,CAAC;IACd,iBAAiB;IACjB,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;CACxB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,qEAAqE;IACrE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,4DAA4D;IAC5D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,kEAAkE;IAClE,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,eAAe,CAAC,CAAC,IAAI;IAC/B,gDAAgD;IAChD,QAAQ,EAAE,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9B,kCAAkC;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,oCAAoC;IACpC,WAAW,EAAE,MAAM,CAAC;IACpB,+CAA+C;IAC/C,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC"}
@@ -0,0 +1,151 @@
1
+ /**
2
+ * State store interfaces for transaction operations.
3
+ */
4
+ import type { JobKind, JobRecord, JobStatus, LeafRecord, NoteRecord, NullifierRecord, 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
+ listLeaves(chainId: number): Promise<LeafRecord[]>;
12
+ clearLeaves(chainId: number): Promise<void>;
13
+ putRoot(record: RootRecord): Promise<void>;
14
+ putJob(job: JobRecord): Promise<void>;
15
+ getJob(relayId: string): Promise<JobRecord | null>;
16
+ listJobs(filter?: {
17
+ kind?: JobKind;
18
+ statuses?: JobStatus[];
19
+ }): Promise<JobRecord[]>;
20
+ deleteJob(relayId: string): Promise<void>;
21
+ };
22
+ /**
23
+ * State store interface for transaction operations.
24
+ */
25
+ export type TransactStateStore = BaseStateStore & {
26
+ getNote(chainId: number, index: number): Promise<NoteRecord | null>;
27
+ markNoteSpent(chainId: number, index: number, spentAt?: number, spentTxHash?: string): Promise<NoteRecord>;
28
+ putNullifier(record: NullifierRecord): Promise<void>;
29
+ listNotes(options?: {
30
+ chainId?: number;
31
+ mpk?: string;
32
+ token?: string;
33
+ includeSpent?: boolean;
34
+ }): Promise<NoteRecord[]>;
35
+ };
36
+ /**
37
+ * State store interface for note synchronization operations.
38
+ * Extends BaseStateStore with note-specific methods.
39
+ */
40
+ export type NoteSyncStateStore = BaseStateStore & {
41
+ putNote(record: NoteRecord): Promise<void>;
42
+ getNote(chainId: number, index: number): Promise<NoteRecord | null>;
43
+ clearNotes(chainId: number): Promise<void>;
44
+ listNotes(options?: {
45
+ chainId?: number;
46
+ mpk?: string;
47
+ token?: string;
48
+ includeSpent?: boolean;
49
+ }): Promise<NoteRecord[]>;
50
+ markNoteSpent(chainId: number, index: number, spentAt?: number, spentTxHash?: string): Promise<NoteRecord>;
51
+ putCiphertext(chainId: number, index: number, payload: Uint8Array): Promise<void>;
52
+ getCiphertext(chainId: number, index: number): Promise<Uint8Array | null>;
53
+ listCiphertexts(chainId: number): Promise<{
54
+ index: number;
55
+ payload: Uint8Array;
56
+ }[]>;
57
+ clearCiphertexts(chainId: number): Promise<void>;
58
+ countNullifiers(chainId: number): Promise<number>;
59
+ clearNullifiers(chainId: number): Promise<void>;
60
+ clearNullifiersFromIndex(chainId: number, fromIndex: number): Promise<void>;
61
+ putNullifier(record: NullifierRecord): Promise<void>;
62
+ /**
63
+ * Atomically store a commitment's leaf, ciphertext, root, and optionally note.
64
+ * Uses storage.batch() for all-or-nothing semantics.
65
+ */
66
+ syncCommitment(params: {
67
+ leaf: {
68
+ chainId: number;
69
+ index: number;
70
+ commitment: string;
71
+ txHash?: string;
72
+ eventType?: string;
73
+ adapterNpk?: string;
74
+ adapterToken?: string;
75
+ adapterAmount?: string;
76
+ adapterRandom?: string;
77
+ insertedAt?: number;
78
+ };
79
+ ciphertext: {
80
+ chainId: number;
81
+ index: number;
82
+ payload: Uint8Array;
83
+ };
84
+ root: {
85
+ chainId: number;
86
+ root: string;
87
+ };
88
+ note?: {
89
+ chainId: number;
90
+ index: number;
91
+ token: string;
92
+ value: string;
93
+ commitment: string;
94
+ npk: string;
95
+ mpk: string;
96
+ random: string;
97
+ nullifier: string;
98
+ createdTxHash?: string;
99
+ createdEventType?: string;
100
+ createdAt?: number;
101
+ spentAt?: number;
102
+ spentTxHash?: string;
103
+ };
104
+ }): Promise<void>;
105
+ /** Atomically store multiple commitments in a single batch write. */
106
+ syncCommitmentBatch(items: Array<{
107
+ leaf: {
108
+ chainId: number;
109
+ index: number;
110
+ commitment: string;
111
+ txHash?: string;
112
+ eventType?: string;
113
+ adapterNpk?: string;
114
+ adapterToken?: string;
115
+ adapterAmount?: string;
116
+ adapterRandom?: string;
117
+ insertedAt?: number;
118
+ };
119
+ ciphertext: {
120
+ chainId: number;
121
+ index: number;
122
+ payload: Uint8Array;
123
+ };
124
+ root: {
125
+ chainId: number;
126
+ root: string;
127
+ };
128
+ note?: {
129
+ chainId: number;
130
+ index: number;
131
+ token: string;
132
+ value: string;
133
+ commitment: string;
134
+ npk: string;
135
+ mpk: string;
136
+ random: string;
137
+ nullifier: string;
138
+ createdTxHash?: string;
139
+ createdEventType?: string;
140
+ createdAt?: number;
141
+ spentAt?: number;
142
+ spentTxHash?: string;
143
+ };
144
+ }>): Promise<void>;
145
+ getRescanCursor(chainId: number, mpk: string): Promise<number | null>;
146
+ setRescanCursor(chainId: number, mpk: string, value: number): Promise<void>;
147
+ clearRescanCursors(chainId: number): Promise<void>;
148
+ /** Clear notes, leaves, ciphertexts, and unspent indices for indices >= fromIndex. */
149
+ clearChainDataFromIndex(chainId: number, fromIndex: number): Promise<void>;
150
+ };
151
+ //# sourceMappingURL=state-stores.d.ts.map