@unlink-xyz/core 0.1.0 → 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 (269) 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 -17
  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 -27
  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 +40 -14
  174. package/dist/account/zkAccount.d.ts.map +0 -1
  175. package/dist/account/zkAccount.js +0 -128
  176. package/dist/clients/broadcaster.js +0 -23
  177. package/dist/clients/http.js +0 -57
  178. package/dist/clients/indexer.js +0 -67
  179. package/dist/config.js +0 -29
  180. package/dist/core.js +0 -12
  181. package/dist/errors.js +0 -18
  182. package/dist/key-derivation/babyjubjub.d.ts +0 -9
  183. package/dist/key-derivation/babyjubjub.d.ts.map +0 -1
  184. package/dist/key-derivation/babyjubjub.js +0 -9
  185. package/dist/key-derivation/bech32.d.ts +0 -22
  186. package/dist/key-derivation/bech32.d.ts.map +0 -1
  187. package/dist/key-derivation/bech32.js +0 -86
  188. package/dist/key-derivation/bip32.d.ts +0 -17
  189. package/dist/key-derivation/bip32.d.ts.map +0 -1
  190. package/dist/key-derivation/bip32.js +0 -41
  191. package/dist/key-derivation/bip39.d.ts +0 -22
  192. package/dist/key-derivation/bip39.d.ts.map +0 -1
  193. package/dist/key-derivation/bip39.js +0 -56
  194. package/dist/key-derivation/bytes.d.ts +0 -19
  195. package/dist/key-derivation/bytes.d.ts.map +0 -1
  196. package/dist/key-derivation/bytes.js +0 -92
  197. package/dist/key-derivation/hash.d.ts +0 -3
  198. package/dist/key-derivation/hash.d.ts.map +0 -1
  199. package/dist/key-derivation/hash.js +0 -10
  200. package/dist/key-derivation/index.d.ts +0 -8
  201. package/dist/key-derivation/index.d.ts.map +0 -1
  202. package/dist/key-derivation/index.js +0 -7
  203. package/dist/key-derivation/wallet-node.d.ts +0 -45
  204. package/dist/key-derivation/wallet-node.d.ts.map +0 -1
  205. package/dist/key-derivation/wallet-node.js +0 -109
  206. package/dist/keys.js +0 -41
  207. package/dist/prover/config.js +0 -80
  208. package/dist/prover/index.js +0 -1
  209. package/dist/prover/prover.js +0 -274
  210. package/dist/prover/registry.js +0 -57
  211. package/dist/schema.js +0 -14
  212. package/dist/state/ciphertext-store.d.ts +0 -12
  213. package/dist/state/ciphertext-store.d.ts.map +0 -1
  214. package/dist/state/ciphertext-store.js +0 -25
  215. package/dist/state/index.js +0 -2
  216. package/dist/state/leaf-store.d.ts +0 -17
  217. package/dist/state/leaf-store.d.ts.map +0 -1
  218. package/dist/state/leaf-store.js +0 -35
  219. package/dist/state/merkle/hydrator.js +0 -36
  220. package/dist/state/merkle/index.js +0 -2
  221. package/dist/state/merkle/merkle-tree.js +0 -104
  222. package/dist/state/merkle-tree.d.ts +0 -34
  223. package/dist/state/merkle-tree.d.ts.map +0 -1
  224. package/dist/state/merkle-tree.js +0 -104
  225. package/dist/state/note-store.d.ts +0 -37
  226. package/dist/state/note-store.d.ts.map +0 -1
  227. package/dist/state/note-store.js +0 -133
  228. package/dist/state/nullifier-store.d.ts +0 -13
  229. package/dist/state/nullifier-store.d.ts.map +0 -1
  230. package/dist/state/nullifier-store.js +0 -21
  231. package/dist/state/records.d.ts +0 -57
  232. package/dist/state/records.d.ts.map +0 -1
  233. package/dist/state/records.js +0 -1
  234. package/dist/state/root-store.d.ts +0 -13
  235. package/dist/state/root-store.d.ts.map +0 -1
  236. package/dist/state/root-store.js +0 -30
  237. package/dist/state/store/ciphertext-store.js +0 -25
  238. package/dist/state/store/index.js +0 -8
  239. package/dist/state/store/job-store.js +0 -118
  240. package/dist/state/store/jobs.js +0 -1
  241. package/dist/state/store/leaf-store.js +0 -35
  242. package/dist/state/store/note-store.js +0 -142
  243. package/dist/state/store/nullifier-store.js +0 -30
  244. package/dist/state/store/records.js +0 -1
  245. package/dist/state/store/root-store.js +0 -30
  246. package/dist/state/store/store.js +0 -22
  247. package/dist/state/store.d.ts +0 -26
  248. package/dist/state/store.d.ts.map +0 -1
  249. package/dist/state/store.js +0 -19
  250. package/dist/storage/index.js +0 -2
  251. package/dist/storage/indexeddb.js +0 -205
  252. package/dist/storage/memory.js +0 -87
  253. package/dist/transactions/deposit.js +0 -173
  254. package/dist/transactions/index.js +0 -4
  255. package/dist/transactions/note-sync.js +0 -320
  256. package/dist/transactions/reconcile.js +0 -39
  257. package/dist/transactions/transact.js +0 -561
  258. package/dist/transactions/types.d.ts +0 -114
  259. package/dist/transactions/types.d.ts.map +0 -1
  260. package/dist/transactions/types.js +0 -1
  261. package/dist/types.js +0 -1
  262. package/dist/utils/bigint.js +0 -29
  263. package/dist/utils/crypto.d.ts +0 -12
  264. package/dist/utils/crypto.d.ts.map +0 -1
  265. package/dist/utils/crypto.js +0 -39
  266. package/dist/utils/json-codec.js +0 -25
  267. package/dist/utils/polling.js +0 -6
  268. package/dist/utils/signature.js +0 -12
  269. package/dist/utils/validators.js +0 -70
@@ -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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state-stores.d.ts","sourceRoot":"","sources":["../../../transactions/types/state-stores.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,83 @@
1
+ /**
2
+ * Types for transaction operations.
3
+ */
4
+ import type { IMTMerkleProof } from "@zk-kit/imt";
5
+ import type { AccountView, Signer } from "../../account/account.js";
6
+ import type { CommitmentRecord } from "../../clients/indexer.js";
7
+ import type { NoteInput, Proof, SpendNoteReference, WithdrawalNoteInput } from "./domain.js";
8
+ /**
9
+ * A single transaction item (used in the transactions array).
10
+ */
11
+ export type TransactItem = {
12
+ /** Token address */
13
+ token: string;
14
+ /** Input notes to spend */
15
+ inputs: SpendNoteReference[];
16
+ /** Output notes to create */
17
+ outputs: NoteInput[];
18
+ /** Optional withdrawal output */
19
+ withdrawal?: WithdrawalNoteInput;
20
+ /**
21
+ * Optional adapter execution binding hash.
22
+ * When set, it is included in proof-bound context parameters.
23
+ */
24
+ adapterDataHash?: bigint;
25
+ };
26
+ /**
27
+ * Parameters required to execute private transaction(s).
28
+ * Always accepts an array of transactions - single tx just passes [item].
29
+ */
30
+ export type TransactParams = {
31
+ /** Account identity (viewing key, nullifying key, address) */
32
+ account: AccountView;
33
+ /** Signing capability (public key + sign function) */
34
+ signer: Signer;
35
+ /** Chain ID for the target blockchain */
36
+ chainId: number;
37
+ /** Pool contract address */
38
+ poolAddress: string;
39
+ /** Transactions to execute (proofs generated in parallel, bundled into one call) */
40
+ transactions: TransactItem[];
41
+ };
42
+ /**
43
+ * Result of a single transaction within the batch.
44
+ */
45
+ export type TransactItemResult = {
46
+ /** Generated proof */
47
+ proof: Proof;
48
+ /** Merkle witnesses for inputs */
49
+ witnesses: IMTMerkleProof[];
50
+ /** Nullifiers of spent notes */
51
+ nullifiers: string[];
52
+ /** Predicted commitment hex strings */
53
+ predictedCommitments: string[];
54
+ };
55
+ /**
56
+ * Result of the transact flow, including calldata and state deltas.
57
+ */
58
+ export type TransactRelayResult = {
59
+ /** Relay ID for tracking */
60
+ relayId: string;
61
+ /** Calldata to submit on-chain */
62
+ calldata: string;
63
+ /** Individual transaction results */
64
+ transactions: TransactItemResult[];
65
+ };
66
+ /**
67
+ * Result of syncing a pending transaction.
68
+ */
69
+ export type TransactSyncResult = {
70
+ /** Chain ID */
71
+ chainId: number;
72
+ /** Merkle root after transaction */
73
+ root: string;
74
+ /** Nullifiers of spent notes (all transactions combined) */
75
+ nullifiers: string[];
76
+ /** New commitment hex strings (all transactions combined) */
77
+ newCommitments: string[];
78
+ /** Transaction hash (if available) */
79
+ txHash?: string;
80
+ /** Indexed commitments */
81
+ indexedCommitments?: CommitmentRecord[];
82
+ };
83
+ //# sourceMappingURL=transact.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transact.d.ts","sourceRoot":"","sources":["../../../transactions/types/transact.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,KAAK,EACV,SAAS,EACT,KAAK,EACL,kBAAkB,EAClB,mBAAmB,EACpB,MAAM,aAAa,CAAC;AAErB;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB,oBAAoB;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,2BAA2B;IAC3B,MAAM,EAAE,kBAAkB,EAAE,CAAC;IAC7B,6BAA6B;IAC7B,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,iCAAiC;IACjC,UAAU,CAAC,EAAE,mBAAmB,CAAC;IACjC;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B,8DAA8D;IAC9D,OAAO,EAAE,WAAW,CAAC;IACrB,sDAAsD;IACtD,MAAM,EAAE,MAAM,CAAC;IACf,yCAAyC;IACzC,OAAO,EAAE,MAAM,CAAC;IAChB,4BAA4B;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,oFAAoF;IACpF,YAAY,EAAE,YAAY,EAAE,CAAC;CAC9B,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC/B,sBAAsB;IACtB,KAAK,EAAE,KAAK,CAAC;IACb,kCAAkC;IAClC,SAAS,EAAE,cAAc,EAAE,CAAC;IAC5B,gCAAgC;IAChC,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,uCAAuC;IACvC,oBAAoB,EAAE,MAAM,EAAE,CAAC;CAChC,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAChC,4BAA4B;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,kCAAkC;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,qCAAqC;IACrC,YAAY,EAAE,kBAAkB,EAAE,CAAC;CACpC,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC/B,eAAe;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,oCAAoC;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,4DAA4D;IAC5D,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,6DAA6D;IAC7D,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,sCAAsC;IACtC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,0BAA0B;IAC1B,kBAAkB,CAAC,EAAE,gBAAgB,EAAE,CAAC;CACzC,CAAC"}
@@ -0,0 +1,58 @@
1
+ import { type CircuitConfig } from "../prover/registry.js";
2
+ import type { NoteInput, SelectableNote, WithdrawalNoteInput } from "./types/index.js";
3
+ /**
4
+ * Result of planning a withdrawal transaction.
5
+ */
6
+ export type WithdrawalPlan<T> = {
7
+ /** Selected input notes to spend */
8
+ inputs: SelectableNote<T>[];
9
+ /** Output notes (change only, if any) */
10
+ outputNotes: NoteInput[];
11
+ /** Withdrawal specification */
12
+ withdrawal: WithdrawalNoteInput;
13
+ /** Selected circuit configuration */
14
+ circuit: CircuitConfig;
15
+ /** Total input amount from selected notes */
16
+ totalInput: bigint;
17
+ /** Amount being withdrawn */
18
+ withdrawAmount: bigint;
19
+ /** Change amount returned to sender */
20
+ change: bigint;
21
+ /** Token address */
22
+ token: string;
23
+ };
24
+ /**
25
+ * Input for a single withdrawal in a batch.
26
+ */
27
+ export type WithdrawalInput = {
28
+ token: string;
29
+ amount: bigint;
30
+ recipient: string;
31
+ };
32
+ /**
33
+ * Plan withdrawal transaction(s).
34
+ * Accepts 1 or more withdrawals. When multiple withdrawals use the same token,
35
+ * notes are tracked across withdrawals to avoid double-spending.
36
+ *
37
+ * @param notes - Available unspent notes (all tokens)
38
+ * @param withdrawals - Withdrawals to plan (each with token, amount, recipient)
39
+ * @param senderMpk - Sender's master public key (for change outputs)
40
+ * @returns Array of withdrawal plans, one per withdrawal input
41
+ *
42
+ * @example
43
+ * ```typescript
44
+ * // Single withdrawal
45
+ * const [plan] = planWithdrawals(notes, [{ token, amount: 100n, recipient: "0x..." }], mpk);
46
+ *
47
+ * // Multiple withdrawals (possibly same token)
48
+ * const plans = planWithdrawals(notes, [
49
+ * { token: ETH, amount: 100n, recipient: "0x..." },
50
+ * { token: USDC, amount: 50n, recipient: "0x..." },
51
+ * ], mpk);
52
+ * ```
53
+ */
54
+ export declare function planWithdrawals<T extends {
55
+ index: number;
56
+ value: bigint | string;
57
+ }>(notes: SelectableNote<T>[], withdrawals: WithdrawalInput[], senderMpk: bigint, senderViewingPubKey: Uint8Array): WithdrawalPlan<T>[];
58
+ //# sourceMappingURL=withdrawal-planner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"withdrawal-planner.d.ts","sourceRoot":"","sources":["../../transactions/withdrawal-planner.ts"],"names":[],"mappings":"AACA,OAAO,EAAoB,KAAK,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAG7E,OAAO,KAAK,EACV,SAAS,EACT,cAAc,EACd,mBAAmB,EACpB,MAAM,kBAAkB,CAAC;AAE1B;;GAEG;AACH,MAAM,MAAM,cAAc,CAAC,CAAC,IAAI;IAC9B,oCAAoC;IACpC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5B,yCAAyC;IACzC,WAAW,EAAE,SAAS,EAAE,CAAC;IACzB,+BAA+B;IAC/B,UAAU,EAAE,mBAAmB,CAAC;IAChC,qCAAqC;IACrC,OAAO,EAAE,aAAa,CAAC;IACvB,6CAA6C;IAC7C,UAAU,EAAE,MAAM,CAAC;IACnB,6BAA6B;IAC7B,cAAc,EAAE,MAAM,CAAC;IACvB,uCAAuC;IACvC,MAAM,EAAE,MAAM,CAAC;IACf,oBAAoB;IACpB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAqFF;;;;;;;;;;;;;;;;;;;;;GAqBG;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,WAAW,EAAE,eAAe,EAAE,EAC9B,SAAS,EAAE,MAAM,EACjB,mBAAmB,EAAE,UAAU,GAC9B,cAAc,CAAC,CAAC,CAAC,EAAE,CA2ErB"}