@sip-protocol/sdk 0.7.2 → 0.7.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 (262) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +267 -0
  3. package/dist/{TransportWebUSB-TQ7WZ4LE.mjs → TransportWebUSB-YQMAGJAJ.mjs} +12 -9
  4. package/dist/browser.d.mts +10 -4
  5. package/dist/browser.d.ts +10 -4
  6. package/dist/browser.js +48874 -18336
  7. package/dist/browser.mjs +674 -48
  8. package/dist/chunk-4GRJ5MAW.mjs +152 -0
  9. package/dist/chunk-5D7A3L3W.mjs +717 -0
  10. package/dist/chunk-64AYA5F5.mjs +7834 -0
  11. package/dist/chunk-GMDGB22A.mjs +379 -0
  12. package/dist/chunk-I534WKN7.mjs +328 -0
  13. package/dist/chunk-IBZVA5Y7.mjs +1003 -0
  14. package/dist/chunk-PRRZAWJE.mjs +223 -0
  15. package/dist/{chunk-UJCSKKID.mjs → chunk-XGB3TDIC.mjs} +13 -1
  16. package/dist/chunk-YWGJ77A2.mjs +33806 -0
  17. package/dist/{chunk-6WGN57S2.mjs → chunk-Z3K7W5S3.mjs} +48 -0
  18. package/dist/constants-LHAAUC2T.mjs +51 -0
  19. package/dist/dist-2OGQ7FED.mjs +3957 -0
  20. package/dist/dist-IFHPYLDX.mjs +254 -0
  21. package/dist/fulfillment_proof-ANHVPKTB.mjs +21 -0
  22. package/dist/funding_proof-ICFZ5LHY.mjs +21 -0
  23. package/dist/index-DXh2IGkz.d.ts +24681 -0
  24. package/dist/index-DeE1ZzA4.d.mts +24681 -0
  25. package/dist/index.d.mts +9 -3
  26. package/dist/index.d.ts +9 -3
  27. package/dist/index.js +48676 -17318
  28. package/dist/index.mjs +583 -19
  29. package/dist/interface-Bf7w1PLW.d.mts +679 -0
  30. package/dist/interface-Bf7w1PLW.d.ts +679 -0
  31. package/dist/{noir-DKfEzWy9.d.mts → noir-kzbLVTei.d.mts} +31 -21
  32. package/dist/{noir-DKfEzWy9.d.ts → noir-kzbLVTei.d.ts} +31 -21
  33. package/dist/proofs/halo2.d.mts +151 -0
  34. package/dist/proofs/halo2.d.ts +151 -0
  35. package/dist/proofs/halo2.js +350 -0
  36. package/dist/proofs/halo2.mjs +11 -0
  37. package/dist/proofs/kimchi.d.mts +160 -0
  38. package/dist/proofs/kimchi.d.ts +160 -0
  39. package/dist/proofs/kimchi.js +431 -0
  40. package/dist/proofs/kimchi.mjs +13 -0
  41. package/dist/proofs/noir.d.mts +1 -1
  42. package/dist/proofs/noir.d.ts +1 -1
  43. package/dist/proofs/noir.js +74 -18
  44. package/dist/proofs/noir.mjs +84 -24
  45. package/dist/solana-U3MEGU7W.mjs +280 -0
  46. package/dist/validity_proof-3POXLPNY.mjs +21 -0
  47. package/package.json +54 -21
  48. package/src/adapters/index.ts +41 -0
  49. package/src/adapters/jupiter.ts +571 -0
  50. package/src/adapters/near-intents.ts +135 -0
  51. package/src/advisor/advisor.ts +653 -0
  52. package/src/advisor/index.ts +54 -0
  53. package/src/advisor/tools.ts +303 -0
  54. package/src/advisor/types.ts +164 -0
  55. package/src/chains/ethereum/announcement.ts +536 -0
  56. package/src/chains/ethereum/bnb-optimizations.ts +474 -0
  57. package/src/chains/ethereum/commitment.ts +522 -0
  58. package/src/chains/ethereum/constants.ts +462 -0
  59. package/src/chains/ethereum/deployment.ts +596 -0
  60. package/src/chains/ethereum/gas-estimation.ts +538 -0
  61. package/src/chains/ethereum/index.ts +268 -0
  62. package/src/chains/ethereum/optimizations.ts +614 -0
  63. package/src/chains/ethereum/privacy-adapter.ts +855 -0
  64. package/src/chains/ethereum/registry.ts +584 -0
  65. package/src/chains/ethereum/rpc.ts +905 -0
  66. package/src/chains/ethereum/stealth.ts +491 -0
  67. package/src/chains/ethereum/token.ts +790 -0
  68. package/src/chains/ethereum/transfer.ts +637 -0
  69. package/src/chains/ethereum/types.ts +456 -0
  70. package/src/chains/ethereum/viewing-key.ts +455 -0
  71. package/src/chains/near/commitment.ts +608 -0
  72. package/src/chains/near/constants.ts +284 -0
  73. package/src/chains/near/function-call.ts +871 -0
  74. package/src/chains/near/history.ts +654 -0
  75. package/src/chains/near/implicit-account.ts +840 -0
  76. package/src/chains/near/index.ts +393 -0
  77. package/src/chains/near/native-transfer.ts +658 -0
  78. package/src/chains/near/nep141.ts +775 -0
  79. package/src/chains/near/privacy-adapter.ts +889 -0
  80. package/src/chains/near/resolver.ts +971 -0
  81. package/src/chains/near/rpc.ts +1016 -0
  82. package/src/chains/near/stealth.ts +419 -0
  83. package/src/chains/near/types.ts +317 -0
  84. package/src/chains/near/viewing-key.ts +876 -0
  85. package/src/chains/solana/anchor-transfer.ts +386 -0
  86. package/src/chains/solana/commitment.ts +577 -0
  87. package/src/chains/solana/constants.ts +126 -12
  88. package/src/chains/solana/ephemeral-keys.ts +543 -0
  89. package/src/chains/solana/index.ts +276 -1
  90. package/src/chains/solana/key-derivation.ts +418 -0
  91. package/src/chains/solana/kit-compat.ts +334 -0
  92. package/src/chains/solana/optimizations.ts +560 -0
  93. package/src/chains/solana/privacy-adapter.ts +605 -0
  94. package/src/chains/solana/providers/generic.ts +201 -0
  95. package/src/chains/solana/providers/helius-enhanced-types.ts +336 -0
  96. package/src/chains/solana/providers/helius-enhanced.ts +623 -0
  97. package/src/chains/solana/providers/helius.ts +402 -0
  98. package/src/chains/solana/providers/index.ts +85 -0
  99. package/src/chains/solana/providers/interface.ts +221 -0
  100. package/src/chains/solana/providers/quicknode.ts +409 -0
  101. package/src/chains/solana/providers/triton.ts +426 -0
  102. package/src/chains/solana/providers/webhook.ts +790 -0
  103. package/src/chains/solana/rpc-client.ts +1150 -0
  104. package/src/chains/solana/scan.ts +170 -73
  105. package/src/chains/solana/sol-transfer.ts +732 -0
  106. package/src/chains/solana/spl-transfer.ts +886 -0
  107. package/src/chains/solana/stealth-scanner.ts +703 -0
  108. package/src/chains/solana/sunspot-verifier.ts +453 -0
  109. package/src/chains/solana/transaction-builder.ts +755 -0
  110. package/src/chains/solana/transfer.ts +74 -5
  111. package/src/chains/solana/types.ts +77 -7
  112. package/src/chains/solana/utils.ts +110 -0
  113. package/src/chains/solana/viewing-key.ts +807 -0
  114. package/src/compliance/fireblocks.ts +921 -0
  115. package/src/compliance/index.ts +37 -0
  116. package/src/compliance/range-sas.ts +956 -0
  117. package/src/config/endpoints.ts +100 -0
  118. package/src/crypto.ts +11 -8
  119. package/src/errors.ts +82 -0
  120. package/src/evm/erc4337-relayer.ts +830 -0
  121. package/src/evm/index.ts +47 -0
  122. package/src/fees/calculator.ts +396 -0
  123. package/src/fees/index.ts +87 -0
  124. package/src/fees/near-contract.ts +429 -0
  125. package/src/fees/types.ts +268 -0
  126. package/src/index.ts +785 -1
  127. package/src/intent.ts +6 -3
  128. package/src/logger.ts +324 -0
  129. package/src/network/index.ts +80 -0
  130. package/src/network/proxy.ts +691 -0
  131. package/src/optimizations/index.ts +541 -0
  132. package/src/oracle/types.ts +1 -0
  133. package/src/privacy-backends/arcium-types.ts +727 -0
  134. package/src/privacy-backends/arcium.ts +719 -0
  135. package/src/privacy-backends/combined-privacy.ts +866 -0
  136. package/src/privacy-backends/cspl-token.ts +595 -0
  137. package/src/privacy-backends/cspl-types.ts +512 -0
  138. package/src/privacy-backends/cspl.ts +907 -0
  139. package/src/privacy-backends/health.ts +488 -0
  140. package/src/privacy-backends/inco-types.ts +323 -0
  141. package/src/privacy-backends/inco.ts +616 -0
  142. package/src/privacy-backends/index.ts +336 -0
  143. package/src/privacy-backends/interface.ts +906 -0
  144. package/src/privacy-backends/lru-cache.ts +343 -0
  145. package/src/privacy-backends/magicblock.ts +458 -0
  146. package/src/privacy-backends/mock.ts +258 -0
  147. package/src/privacy-backends/privacycash-types.ts +278 -0
  148. package/src/privacy-backends/privacycash.ts +456 -0
  149. package/src/privacy-backends/private-swap.ts +570 -0
  150. package/src/privacy-backends/rate-limiter.ts +683 -0
  151. package/src/privacy-backends/registry.ts +690 -0
  152. package/src/privacy-backends/router.ts +626 -0
  153. package/src/privacy-backends/shadowwire.ts +449 -0
  154. package/src/privacy-backends/sip-native.ts +256 -0
  155. package/src/privacy-logger.ts +191 -0
  156. package/src/production-safety.ts +373 -0
  157. package/src/proofs/aggregator.ts +1029 -0
  158. package/src/proofs/browser-composer.ts +1150 -0
  159. package/src/proofs/browser.ts +113 -25
  160. package/src/proofs/cache/index.ts +127 -0
  161. package/src/proofs/cache/interface.ts +545 -0
  162. package/src/proofs/cache/key-generator.ts +188 -0
  163. package/src/proofs/cache/lru-cache.ts +481 -0
  164. package/src/proofs/cache/multi-tier-cache.ts +575 -0
  165. package/src/proofs/cache/persistent-cache.ts +788 -0
  166. package/src/proofs/compliance-proof.ts +872 -0
  167. package/src/proofs/composer/base.ts +923 -0
  168. package/src/proofs/composer/index.ts +25 -0
  169. package/src/proofs/composer/interface.ts +518 -0
  170. package/src/proofs/composer/types.ts +383 -0
  171. package/src/proofs/converters/halo2.ts +452 -0
  172. package/src/proofs/converters/index.ts +208 -0
  173. package/src/proofs/converters/interface.ts +363 -0
  174. package/src/proofs/converters/kimchi.ts +462 -0
  175. package/src/proofs/converters/noir.ts +451 -0
  176. package/src/proofs/fallback.ts +888 -0
  177. package/src/proofs/halo2.ts +42 -0
  178. package/src/proofs/index.ts +471 -0
  179. package/src/proofs/interface.ts +13 -0
  180. package/src/proofs/kimchi.ts +42 -0
  181. package/src/proofs/lazy.ts +1004 -0
  182. package/src/proofs/mock.ts +25 -1
  183. package/src/proofs/noir.ts +111 -30
  184. package/src/proofs/orchestrator.ts +960 -0
  185. package/src/proofs/parallel/concurrency.ts +297 -0
  186. package/src/proofs/parallel/dependency-graph.ts +602 -0
  187. package/src/proofs/parallel/executor.ts +420 -0
  188. package/src/proofs/parallel/index.ts +131 -0
  189. package/src/proofs/parallel/interface.ts +685 -0
  190. package/src/proofs/parallel/worker-pool.ts +644 -0
  191. package/src/proofs/providers/halo2.ts +560 -0
  192. package/src/proofs/providers/index.ts +34 -0
  193. package/src/proofs/providers/kimchi.ts +641 -0
  194. package/src/proofs/validator.ts +881 -0
  195. package/src/proofs/verifier.ts +867 -0
  196. package/src/quantum/index.ts +112 -0
  197. package/src/quantum/winternitz-vault.ts +639 -0
  198. package/src/quantum/wots.ts +611 -0
  199. package/src/settlement/backends/direct-chain.ts +1 -0
  200. package/src/settlement/index.ts +9 -0
  201. package/src/settlement/router.ts +732 -46
  202. package/src/solana/index.ts +72 -0
  203. package/src/solana/jito-relayer.ts +687 -0
  204. package/src/solana/noir-verifier-types.ts +430 -0
  205. package/src/solana/noir-verifier.ts +816 -0
  206. package/src/stealth/address-derivation.ts +193 -0
  207. package/src/stealth/ed25519.ts +431 -0
  208. package/src/stealth/index.ts +233 -0
  209. package/src/stealth/meta-address.ts +221 -0
  210. package/src/stealth/secp256k1.ts +368 -0
  211. package/src/stealth/utils.ts +194 -0
  212. package/src/stealth.ts +50 -1504
  213. package/src/surveillance/algorithms/address-reuse.ts +143 -0
  214. package/src/surveillance/algorithms/cluster.ts +247 -0
  215. package/src/surveillance/algorithms/exchange.ts +295 -0
  216. package/src/surveillance/algorithms/temporal.ts +337 -0
  217. package/src/surveillance/analyzer.ts +442 -0
  218. package/src/surveillance/index.ts +64 -0
  219. package/src/surveillance/scoring.ts +372 -0
  220. package/src/surveillance/types.ts +264 -0
  221. package/src/sync/index.ts +106 -0
  222. package/src/sync/manager.ts +504 -0
  223. package/src/sync/mock-provider.ts +318 -0
  224. package/src/sync/oblivious.ts +625 -0
  225. package/src/tokens/index.ts +15 -0
  226. package/src/tokens/registry.ts +301 -0
  227. package/src/utils/deprecation.ts +94 -0
  228. package/src/utils/index.ts +9 -0
  229. package/src/wallet/ethereum/index.ts +68 -0
  230. package/src/wallet/ethereum/metamask-privacy.ts +420 -0
  231. package/src/wallet/ethereum/multi-wallet.ts +646 -0
  232. package/src/wallet/ethereum/privacy-adapter.ts +700 -0
  233. package/src/wallet/ethereum/types.ts +3 -1
  234. package/src/wallet/ethereum/walletconnect-adapter.ts +675 -0
  235. package/src/wallet/hardware/index.ts +10 -0
  236. package/src/wallet/hardware/ledger-privacy.ts +414 -0
  237. package/src/wallet/index.ts +71 -0
  238. package/src/wallet/near/adapter.ts +626 -0
  239. package/src/wallet/near/index.ts +86 -0
  240. package/src/wallet/near/meteor-wallet.ts +1153 -0
  241. package/src/wallet/near/my-near-wallet.ts +790 -0
  242. package/src/wallet/near/wallet-selector.ts +702 -0
  243. package/src/wallet/solana/adapter.ts +6 -4
  244. package/src/wallet/solana/index.ts +13 -0
  245. package/src/wallet/solana/privacy-adapter.ts +567 -0
  246. package/src/wallet/sui/types.ts +6 -4
  247. package/src/zcash/rpc-client.ts +13 -6
  248. package/dist/chunk-3INS3PR5.mjs +0 -884
  249. package/dist/chunk-3OVABDRH.mjs +0 -17096
  250. package/dist/chunk-DLDWZFYC.mjs +0 -1495
  251. package/dist/chunk-E6SZWREQ.mjs +0 -57
  252. package/dist/chunk-G33LB27A.mjs +0 -16166
  253. package/dist/chunk-HGU6HZRC.mjs +0 -231
  254. package/dist/chunk-L2K34JCU.mjs +0 -1496
  255. package/dist/chunk-SN4ZDTVW.mjs +0 -16166
  256. package/dist/constants-VOI7BSLK.mjs +0 -27
  257. package/dist/index-BYZbDjal.d.ts +0 -11390
  258. package/dist/index-CHB3KuOB.d.mts +0 -11859
  259. package/dist/index-CzWPI6Le.d.ts +0 -11859
  260. package/dist/index-xbWjohNq.d.mts +0 -11390
  261. package/dist/solana-5EMCTPTS.mjs +0 -46
  262. package/dist/solana-Q4NAVBTS.mjs +0 -46
@@ -0,0 +1,456 @@
1
+ /**
2
+ * Ethereum Same-Chain Privacy Types
3
+ *
4
+ * Type definitions for Ethereum privacy operations including transfers,
5
+ * scanning, claiming, and EIP-5564 announcements.
6
+ *
7
+ * @packageDocumentation
8
+ */
9
+
10
+ import type { HexString, StealthAddress, StealthMetaAddress } from '@sip-protocol/types'
11
+ import type { EthereumNetwork } from './constants'
12
+
13
+ // ─── Privacy Levels ─────────────────────────────────────────────────────────
14
+
15
+ /**
16
+ * Ethereum privacy level for transactions
17
+ */
18
+ export type EthereumPrivacyLevel = 'transparent' | 'shielded' | 'compliant'
19
+
20
+ // ─── Announcement Types ─────────────────────────────────────────────────────
21
+
22
+ /**
23
+ * EIP-5564 stealth address announcement
24
+ *
25
+ * Emitted when a sender creates a stealth address payment.
26
+ * Recipients scan these to find incoming payments.
27
+ */
28
+ export interface EthereumAnnouncement {
29
+ /** EIP-5564 scheme ID (1 for secp256k1) */
30
+ schemeId: number
31
+ /** Stealth address that received the funds */
32
+ stealthAddress: HexString
33
+ /** Caller/sender who made the announcement */
34
+ caller: HexString
35
+ /** Ephemeral public key (compressed secp256k1, 33 bytes) */
36
+ ephemeralPublicKey: HexString
37
+ /** View tag for efficient filtering (0-255) */
38
+ viewTag: number
39
+ /** Optional metadata (token info, amount commitment, etc.) */
40
+ metadata?: HexString
41
+ /** Transaction hash where the announcement was made */
42
+ txHash?: HexString
43
+ /** Block number of the announcement */
44
+ blockNumber?: number
45
+ /** Log index within the block */
46
+ logIndex?: number
47
+ /** Timestamp of the block (unix seconds) */
48
+ timestamp?: number
49
+ }
50
+
51
+ /**
52
+ * Parsed EIP-5564 announcement metadata
53
+ */
54
+ export interface AnnouncementMetadata {
55
+ /** Token contract address (zero address for native ETH) */
56
+ tokenAddress?: HexString
57
+ /** Amount commitment (Pedersen commitment of the amount) */
58
+ amountCommitment?: HexString
59
+ /** Blinding factor hash (for commitment verification) */
60
+ blindingHash?: HexString
61
+ /** Additional arbitrary data */
62
+ extraData?: HexString
63
+ }
64
+
65
+ // ─── Transfer Types ─────────────────────────────────────────────────────────
66
+
67
+ /**
68
+ * Parameters for building a private Ethereum transfer
69
+ */
70
+ export interface EthereumPrivateTransferParams {
71
+ /** Recipient's stealth meta-address (or encoded string) */
72
+ recipientMetaAddress: StealthMetaAddress | string
73
+ /** Amount in wei (for native ETH) or smallest units (for tokens) */
74
+ amount: bigint
75
+ /** Token contract address (omit for native ETH) */
76
+ tokenContract?: HexString
77
+ /** Privacy level */
78
+ privacyLevel?: EthereumPrivacyLevel
79
+ /** Network to use */
80
+ network?: EthereumNetwork
81
+ /** Custom gas limit */
82
+ gasLimit?: bigint
83
+ /** Max fee per gas (EIP-1559) */
84
+ maxFeePerGas?: bigint
85
+ /** Max priority fee per gas (EIP-1559) */
86
+ maxPriorityFeePerGas?: bigint
87
+ /** Optional memo/reference */
88
+ memo?: string
89
+ }
90
+
91
+ /**
92
+ * Built transaction ready for signing
93
+ */
94
+ export interface EthereumShieldedTransferBuild {
95
+ /** Stealth address to send to */
96
+ stealthAddress: StealthAddress
97
+ /** Ethereum address derived from stealth public key */
98
+ stealthEthAddress: HexString
99
+ /** Ephemeral public key for recipient scanning */
100
+ ephemeralPublicKey: HexString
101
+ /** View tag for efficient filtering */
102
+ viewTag: number
103
+ /** Shared secret (for debugging, should be discarded) */
104
+ sharedSecret?: HexString
105
+ /** Amount commitment (if privacy level is shielded/compliant) */
106
+ amountCommitment?: HexString
107
+ /** Blinding factor (if privacy level is shielded/compliant) */
108
+ blindingFactor?: HexString
109
+ /** Transaction data for the transfer */
110
+ transferTx: {
111
+ to: HexString
112
+ value: bigint
113
+ data?: HexString
114
+ }
115
+ /** Transaction data for the announcement */
116
+ announcementTx: {
117
+ to: HexString
118
+ value: bigint
119
+ data: HexString
120
+ }
121
+ /** Estimated gas for both transactions */
122
+ estimatedGas: bigint
123
+ }
124
+
125
+ /**
126
+ * Result of a private Ethereum transfer
127
+ */
128
+ export interface EthereumPrivateTransferResult {
129
+ /** Transaction hash of the transfer */
130
+ transferTxHash: HexString
131
+ /** Transaction hash of the announcement */
132
+ announcementTxHash: HexString
133
+ /** Stealth address that received the funds */
134
+ stealthAddress: StealthAddress
135
+ /** Ethereum address derived from stealth public key */
136
+ stealthEthAddress: HexString
137
+ /** Ephemeral public key for recipient scanning */
138
+ ephemeralPublicKey: HexString
139
+ /** View tag */
140
+ viewTag: number
141
+ /** Block number of the transfer */
142
+ blockNumber?: number
143
+ /** Gas used */
144
+ gasUsed?: bigint
145
+ }
146
+
147
+ // ─── Scan Types ─────────────────────────────────────────────────────────────
148
+
149
+ /**
150
+ * Parameters for scanning for incoming Ethereum payments
151
+ */
152
+ export interface EthereumScanParams {
153
+ /** Viewing private key for scanning */
154
+ viewingPrivateKey: HexString
155
+ /** Spending public key for address verification */
156
+ spendingPublicKey: HexString
157
+ /** Network to scan */
158
+ network?: EthereumNetwork
159
+ /** RPC URL (overrides default for network) */
160
+ rpcUrl?: string
161
+ /** Start block number (optional, for incremental scanning) */
162
+ fromBlock?: number
163
+ /** End block number (optional, defaults to 'latest') */
164
+ toBlock?: number | 'latest'
165
+ /** Maximum announcements to process */
166
+ limit?: number
167
+ /** Token contract to filter for (omit for all tokens + ETH) */
168
+ tokenContract?: HexString
169
+ /** Custom announcer contract address (overrides default) */
170
+ announcerAddress?: HexString
171
+ }
172
+
173
+ /**
174
+ * Result of scanning for Ethereum payments
175
+ */
176
+ export interface EthereumScanResult {
177
+ /** Detected payments */
178
+ payments: EthereumDetectedPayment[]
179
+ /** Last scanned block number */
180
+ lastBlockNumber: number
181
+ /** Total announcements scanned */
182
+ scannedCount: number
183
+ /** Time taken in milliseconds */
184
+ scanTimeMs: number
185
+ }
186
+
187
+ /**
188
+ * A detected Ethereum payment
189
+ */
190
+ export interface EthereumDetectedPayment {
191
+ /** Stealth address that received the payment */
192
+ stealthAddress: StealthAddress
193
+ /** Ethereum address derived from stealth public key */
194
+ stealthEthAddress: HexString
195
+ /** Amount received (in wei or token smallest units) */
196
+ amount?: bigint
197
+ /** Amount commitment (if hidden) */
198
+ amountCommitment?: HexString
199
+ /** Transaction hash */
200
+ txHash: HexString
201
+ /** Block number */
202
+ blockNumber: number
203
+ /** Token contract (undefined for native ETH) */
204
+ tokenContract?: HexString
205
+ /** Timestamp of the transaction (unix seconds) */
206
+ timestamp?: number
207
+ /** Log index */
208
+ logIndex?: number
209
+ }
210
+
211
+ // ─── Claim Types ────────────────────────────────────────────────────────────
212
+
213
+ /**
214
+ * Parameters for claiming a stealth payment
215
+ */
216
+ export interface EthereumClaimParams {
217
+ /** Stealth address to claim from */
218
+ stealthAddress: StealthAddress
219
+ /** Ephemeral public key from the announcement */
220
+ ephemeralPublicKey: HexString
221
+ /** Viewing private key */
222
+ viewingPrivateKey: HexString
223
+ /** Spending private key */
224
+ spendingPrivateKey: HexString
225
+ /** Destination address to receive funds */
226
+ destinationAddress: HexString
227
+ /** Network */
228
+ network?: EthereumNetwork
229
+ /** RPC URL (overrides default) */
230
+ rpcUrl?: string
231
+ /** Token contract for ERC-20 claims (omit for native ETH) */
232
+ tokenContract?: HexString
233
+ /** Amount to claim (defaults to full balance) */
234
+ amount?: bigint
235
+ /** Gas limit */
236
+ gasLimit?: bigint
237
+ }
238
+
239
+ /**
240
+ * Built claim transaction ready for signing
241
+ */
242
+ export interface EthereumClaimBuild {
243
+ /** Stealth Ethereum address */
244
+ stealthEthAddress: HexString
245
+ /** Derived stealth private key */
246
+ stealthPrivateKey: HexString
247
+ /** Destination address */
248
+ destinationAddress: HexString
249
+ /** Amount to claim */
250
+ amount: bigint
251
+ /** Transaction data */
252
+ tx: {
253
+ to: HexString
254
+ value: bigint
255
+ data?: HexString
256
+ }
257
+ /** Estimated gas */
258
+ estimatedGas: bigint
259
+ }
260
+
261
+ /**
262
+ * Result of claiming a stealth payment
263
+ */
264
+ export interface EthereumClaimResult {
265
+ /** Transaction hash */
266
+ txHash: HexString
267
+ /** Amount claimed */
268
+ amount: bigint
269
+ /** Destination address */
270
+ destinationAddress: HexString
271
+ /** Gas used */
272
+ gasUsed?: bigint
273
+ /** Block number */
274
+ blockNumber?: number
275
+ }
276
+
277
+ // ─── Balance Types ──────────────────────────────────────────────────────────
278
+
279
+ /**
280
+ * Balance query result for a stealth address
281
+ */
282
+ export interface EthereumStealthBalance {
283
+ /** Stealth Ethereum address */
284
+ address: HexString
285
+ /** Native ETH balance in wei */
286
+ ethBalance: bigint
287
+ /** Token balances (contract address -> balance) */
288
+ tokenBalances: Map<HexString, bigint>
289
+ /** Whether the address has any balance */
290
+ hasBalance: boolean
291
+ }
292
+
293
+ // ─── Viewing Key Types ──────────────────────────────────────────────────────
294
+
295
+ /**
296
+ * Ethereum viewing key export format
297
+ */
298
+ export interface EthereumViewingKeyExport {
299
+ /** Version of the export format */
300
+ version: 1
301
+ /** Chain identifier */
302
+ chain: 'ethereum'
303
+ /** Network */
304
+ network: EthereumNetwork
305
+ /** Viewing public key (for sharing with auditors) */
306
+ viewingPublicKey: HexString
307
+ /** Spending public key (for address verification) */
308
+ spendingPublicKey: HexString
309
+ /** Label/description */
310
+ label?: string
311
+ /** Creation timestamp (ISO 8601) */
312
+ createdAt: string
313
+ /** Expiration timestamp (ISO 8601, optional) */
314
+ expiresAt?: string
315
+ }
316
+
317
+ /**
318
+ * Viewing key with private component (for recipient)
319
+ */
320
+ export interface EthereumViewingKeyPair {
321
+ /** Public viewing key (share with auditors) */
322
+ publicKey: HexString
323
+ /** Private viewing key (keep secret) */
324
+ privateKey: HexString
325
+ /** Associated spending public key */
326
+ spendingPublicKey: HexString
327
+ /** Label */
328
+ label?: string
329
+ }
330
+
331
+ // ─── Gas Estimation Types ───────────────────────────────────────────────────
332
+
333
+ /**
334
+ * Gas estimate for Ethereum privacy operations
335
+ */
336
+ export interface EthereumGasEstimate {
337
+ /** Estimated gas units */
338
+ gasLimit: bigint
339
+ /** Current gas price (for legacy txs) */
340
+ gasPrice?: bigint
341
+ /** Max fee per gas (EIP-1559) */
342
+ maxFeePerGas?: bigint
343
+ /** Max priority fee per gas (EIP-1559) */
344
+ maxPriorityFeePerGas?: bigint
345
+ /** Estimated cost in wei */
346
+ estimatedCost: bigint
347
+ /** Estimated cost in ETH (string for precision) */
348
+ estimatedCostEth: string
349
+ }
350
+
351
+ // ─── Registry Types ─────────────────────────────────────────────────────────
352
+
353
+ /**
354
+ * EIP-5564 stealth meta-address registry entry
355
+ */
356
+ export interface RegistryEntry {
357
+ /** Registered stealth meta-address */
358
+ metaAddress: StealthMetaAddress
359
+ /** Encoded meta-address string */
360
+ encoded: string
361
+ /** Block number when registered */
362
+ registeredAt: number
363
+ /** Transaction hash of registration */
364
+ txHash: HexString
365
+ }
366
+
367
+ // ─── Event Types ────────────────────────────────────────────────────────────
368
+
369
+ /**
370
+ * Announcement event from EIP-5564 contract
371
+ */
372
+ export interface AnnouncementEvent {
373
+ /** Event log */
374
+ log: {
375
+ address: HexString
376
+ topics: HexString[]
377
+ data: HexString
378
+ blockNumber: number
379
+ transactionHash: HexString
380
+ logIndex: number
381
+ }
382
+ /** Parsed announcement */
383
+ announcement: EthereumAnnouncement
384
+ }
385
+
386
+ // ─── Commitment Types ───────────────────────────────────────────────────────
387
+
388
+ /**
389
+ * Secp256k1-based Pedersen commitment for Ethereum
390
+ */
391
+ export interface EthereumPedersenCommitment {
392
+ /** The commitment point C = v*G + r*H (compressed secp256k1, 33 bytes) */
393
+ commitment: HexString
394
+ /** The blinding factor r (32 bytes, secret) */
395
+ blinding: HexString
396
+ }
397
+
398
+ /**
399
+ * ERC-20 token commitment with amount and token info
400
+ */
401
+ export interface ERC20TokenCommitment extends EthereumPedersenCommitment {
402
+ /** ERC-20 token contract address */
403
+ tokenContract: HexString
404
+ /** Token decimals */
405
+ decimals: number
406
+ /** Original amount in smallest units */
407
+ amountRaw?: bigint
408
+ }
409
+
410
+ // ─── Adapter State Types ────────────────────────────────────────────────────
411
+
412
+ /**
413
+ * State of the Ethereum privacy adapter
414
+ */
415
+ export interface EthereumPrivacyAdapterState {
416
+ /** Current network */
417
+ network: EthereumNetwork
418
+ /** RPC URL being used */
419
+ rpcUrl: string
420
+ /** Chain ID */
421
+ chainId: number
422
+ /** Default privacy level */
423
+ defaultPrivacyLevel: EthereumPrivacyLevel
424
+ /** Number of scan recipients registered */
425
+ scanRecipientCount: number
426
+ /** Last scanned block */
427
+ lastScannedBlock?: number
428
+ /** Whether connected to RPC */
429
+ isConnected: boolean
430
+ }
431
+
432
+ // ─── Utility Types ──────────────────────────────────────────────────────────
433
+
434
+ /**
435
+ * Scan recipient for payment detection
436
+ */
437
+ export interface EthereumScanRecipient {
438
+ /** Viewing private key */
439
+ viewingPrivateKey: HexString
440
+ /** Spending public key */
441
+ spendingPublicKey: HexString
442
+ /** Optional label */
443
+ label?: string
444
+ }
445
+
446
+ /**
447
+ * Detected payment with full context
448
+ */
449
+ export interface EthereumDetectedPaymentResult {
450
+ /** The detected payment */
451
+ payment: EthereumDetectedPayment
452
+ /** The recipient that matched */
453
+ recipient: EthereumScanRecipient
454
+ /** Derived stealth private key (for claiming) */
455
+ stealthPrivateKey: HexString
456
+ }