@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,512 @@
1
+ /**
2
+ * C-SPL (Confidential SPL) Token Standard Types
3
+ *
4
+ * Type definitions for the Confidential SPL token standard from Arcium.
5
+ * C-SPL enables encrypted token balances and transfer amounts on Solana.
6
+ *
7
+ * ## Architecture
8
+ *
9
+ * C-SPL unifies four pieces of Solana infrastructure:
10
+ * - SPL Token (classic fungible tokens)
11
+ * - Token-2022 (flexible token extensions)
12
+ * - Confidential Transfer Extension (private transfers)
13
+ * - Arcium encrypted compute (MPC for DeFi logic)
14
+ *
15
+ * ## Key Properties
16
+ *
17
+ * - **Encrypted Balances**: Token balances are hidden on-chain
18
+ * - **Encrypted Amounts**: Transfer amounts are encrypted
19
+ * - **Public Addresses**: Sender and recipient remain visible
20
+ * - **Wrappable**: Any SPL token can be wrapped to C-SPL
21
+ *
22
+ * ## Use Cases
23
+ *
24
+ * - Private DeFi (swaps, lending, borrowing)
25
+ * - Institutional payroll
26
+ * - Vendor payments
27
+ * - Private stablecoins
28
+ * - Confidential RWA trading
29
+ *
30
+ * @see https://docs.arcium.com
31
+ * @see https://x.com/ArciumHQ/status/1963271375671668789
32
+ */
33
+
34
+ // ─── Core C-SPL Types ─────────────────────────────────────────────────────────
35
+
36
+ /**
37
+ * C-SPL token configuration
38
+ *
39
+ * Represents a token that has been wrapped for confidential transfers.
40
+ */
41
+ export interface CSPLToken {
42
+ /** Original SPL token mint address */
43
+ mint: string
44
+ /** C-SPL wrapped mint address */
45
+ confidentialMint: string
46
+ /** Token decimals */
47
+ decimals: number
48
+ /** Token symbol (e.g., 'SOL', 'USDC') */
49
+ symbol?: string
50
+ /** Token name */
51
+ name?: string
52
+ /** Whether this is a native wrap (SOL -> wSOL -> C-wSOL) */
53
+ isNativeWrap?: boolean
54
+ }
55
+
56
+ /**
57
+ * Confidential token account
58
+ *
59
+ * A C-SPL account holds encrypted balances for a specific token.
60
+ */
61
+ export interface ConfidentialTokenAccount {
62
+ /** Account address */
63
+ address: string
64
+ /** Owner public key */
65
+ owner: string
66
+ /** Associated C-SPL token */
67
+ token: CSPLToken
68
+ /** Encrypted available balance */
69
+ encryptedBalance: Uint8Array
70
+ /** Encrypted pending balance (incoming transfers not yet applied) */
71
+ pendingBalance?: Uint8Array
72
+ /** Number of pending incoming transfers */
73
+ pendingCount?: number
74
+ /** Account is initialized and ready */
75
+ isInitialized: boolean
76
+ /** Account is frozen (transfers blocked) */
77
+ isFrozen: boolean
78
+ }
79
+
80
+ /**
81
+ * Confidential balance representation
82
+ *
83
+ * Holds both encrypted and (optionally) decrypted balance info.
84
+ */
85
+ export interface ConfidentialBalance {
86
+ /** Associated token */
87
+ token: CSPLToken
88
+ /** Encrypted balance ciphertext */
89
+ encryptedAmount: Uint8Array
90
+ /** Decrypted amount (only available to account owner) */
91
+ decryptedAmount?: bigint
92
+ /** Pending incoming balance */
93
+ pendingBalance?: Uint8Array
94
+ /** Pending decrypted amount */
95
+ pendingDecryptedAmount?: bigint
96
+ }
97
+
98
+ // ─── Transfer Types ───────────────────────────────────────────────────────────
99
+
100
+ /**
101
+ * Parameters for a confidential transfer
102
+ */
103
+ export interface ConfidentialTransferParams {
104
+ /** Sender address */
105
+ from: string
106
+ /** Recipient address */
107
+ to: string
108
+ /** Token being transferred */
109
+ token: CSPLToken
110
+ /** Encrypted transfer amount */
111
+ encryptedAmount: Uint8Array
112
+ /** Zero-knowledge proof for valid transfer (proves sender has sufficient balance) */
113
+ proof?: Uint8Array
114
+ /** Optional memo (public, max CSPL_MAX_MEMO_BYTES bytes) */
115
+ memo?: string
116
+ }
117
+
118
+ /**
119
+ * Result of a confidential transfer
120
+ */
121
+ export interface ConfidentialTransferResult {
122
+ /** Whether transfer succeeded */
123
+ success: boolean
124
+ /** Transaction signature */
125
+ signature?: string
126
+ /** Error message if failed */
127
+ error?: string
128
+ /** Sender's new encrypted balance */
129
+ newSenderBalance?: Uint8Array
130
+ /** Recipient's pending balance updated */
131
+ recipientPendingUpdated?: boolean
132
+ }
133
+
134
+ /**
135
+ * Parameters for wrapping SPL tokens to C-SPL
136
+ */
137
+ export interface WrapTokenParams {
138
+ /** SPL token mint to wrap */
139
+ mint: string
140
+ /** Amount to wrap (plaintext, will be encrypted) */
141
+ amount: bigint
142
+ /** Owner address */
143
+ owner: string
144
+ /** Create C-SPL account if it doesn't exist */
145
+ createAccount?: boolean
146
+ }
147
+
148
+ /**
149
+ * Result of wrapping tokens
150
+ */
151
+ export interface WrapTokenResult {
152
+ /** Whether wrap succeeded */
153
+ success: boolean
154
+ /** Transaction signature */
155
+ signature?: string
156
+ /** C-SPL token info */
157
+ token?: CSPLToken
158
+ /** New encrypted balance */
159
+ encryptedBalance?: Uint8Array
160
+ /** Error message if failed */
161
+ error?: string
162
+ }
163
+
164
+ /**
165
+ * Parameters for unwrapping C-SPL back to SPL
166
+ */
167
+ export interface UnwrapTokenParams {
168
+ /** C-SPL token to unwrap */
169
+ token: CSPLToken
170
+ /** Encrypted amount to unwrap */
171
+ encryptedAmount: Uint8Array
172
+ /** Owner address */
173
+ owner: string
174
+ /** Proof of ownership/balance */
175
+ proof?: Uint8Array
176
+ }
177
+
178
+ /**
179
+ * Result of unwrapping tokens
180
+ */
181
+ export interface UnwrapTokenResult {
182
+ /** Whether unwrap succeeded */
183
+ success: boolean
184
+ /** Transaction signature */
185
+ signature?: string
186
+ /** Decrypted amount received */
187
+ amount?: bigint
188
+ /** Error message if failed */
189
+ error?: string
190
+ }
191
+
192
+ // ─── Swap Types ───────────────────────────────────────────────────────────────
193
+
194
+ /**
195
+ * Parameters for a confidential swap
196
+ *
197
+ * Combines C-SPL tokens with Arcium MPC for fully private swaps.
198
+ */
199
+ export interface ConfidentialSwapParams {
200
+ /** Input token (being sold) */
201
+ inputToken: CSPLToken
202
+ /** Output token (being bought) */
203
+ outputToken: CSPLToken
204
+ /** Encrypted input amount */
205
+ encryptedInputAmount: Uint8Array
206
+ /** Encrypted minimum output amount (slippage protection) */
207
+ encryptedMinOutput?: Uint8Array
208
+ /** Slippage tolerance in basis points (e.g., 50 = 0.5%) */
209
+ slippageBps?: number
210
+ /** Swap deadline (Unix timestamp) */
211
+ deadline?: number
212
+ /** User's address */
213
+ user: string
214
+ /** Preferred DEX/AMM for swap execution */
215
+ preferredDex?: string
216
+ }
217
+
218
+ /**
219
+ * Result of a confidential swap
220
+ */
221
+ export interface ConfidentialSwapResult {
222
+ /** Whether swap succeeded */
223
+ success: boolean
224
+ /** Transaction signature */
225
+ signature?: string
226
+ /** Arcium computation ID */
227
+ computationId?: string
228
+ /** Encrypted output amount received */
229
+ encryptedOutputAmount?: Uint8Array
230
+ /** Decrypted output amount (if available) */
231
+ decryptedOutputAmount?: bigint
232
+ /** Effective price (encrypted or decrypted) */
233
+ effectivePrice?: bigint
234
+ /** Error message if failed */
235
+ error?: string
236
+ /** Swap metadata */
237
+ metadata?: {
238
+ dex: string
239
+ route: string[]
240
+ gasUsed?: bigint
241
+ }
242
+ }
243
+
244
+ /**
245
+ * Confidential liquidity pool information
246
+ */
247
+ export interface ConfidentialPool {
248
+ /** Pool address */
249
+ address: string
250
+ /** Token A in the pool */
251
+ tokenA: CSPLToken
252
+ /** Token B in the pool */
253
+ tokenB: CSPLToken
254
+ /** Encrypted reserve of token A */
255
+ encryptedReserveA?: Uint8Array
256
+ /** Encrypted reserve of token B */
257
+ encryptedReserveB?: Uint8Array
258
+ /** Fee in basis points */
259
+ feeBps: number
260
+ /** Pool protocol (e.g., 'arcium-amm', 'orca-confidential') */
261
+ protocol: string
262
+ }
263
+
264
+ // ─── Encryption Types ─────────────────────────────────────────────────────────
265
+
266
+ /**
267
+ * Encryption parameters for C-SPL amounts
268
+ */
269
+ export interface CSPLEncryptionParams {
270
+ /** Plaintext amount to encrypt */
271
+ amount: bigint
272
+ /** Recipient's public key (for transfer encryption) */
273
+ recipientPubkey?: string
274
+ /** Auditor keys (for compliance) */
275
+ auditorKeys?: string[]
276
+ }
277
+
278
+ /**
279
+ * Encrypted amount with metadata
280
+ */
281
+ export interface EncryptedAmount {
282
+ /** Ciphertext */
283
+ ciphertext: Uint8Array
284
+ /** Encryption type used */
285
+ encryptionType: CSPLEncryptionType
286
+ /** Nonce/IV */
287
+ nonce?: Uint8Array
288
+ /** Auditor ciphertexts (if compliance enabled) */
289
+ auditorCiphertexts?: Map<string, Uint8Array>
290
+ }
291
+
292
+ /**
293
+ * Supported encryption types for C-SPL
294
+ */
295
+ export type CSPLEncryptionType =
296
+ | 'twisted-elgamal' // Default for Solana Confidential Transfers
297
+ | 'aes-gcm' // For Arcium MPC inputs
298
+ | 'pedersen' // For commitments
299
+
300
+ /**
301
+ * Decryption request parameters
302
+ */
303
+ export interface CSPLDecryptionParams {
304
+ /** Encrypted amount to decrypt */
305
+ encryptedAmount: Uint8Array
306
+ /** Decryption key (account owner's key) */
307
+ decryptionKey: Uint8Array
308
+ /** Expected encryption type */
309
+ encryptionType?: CSPLEncryptionType
310
+ }
311
+
312
+ // ─── Compliance Types ─────────────────────────────────────────────────────────
313
+
314
+ /**
315
+ * Auditor configuration for compliant C-SPL
316
+ *
317
+ * Allows designated auditors to decrypt transaction amounts.
318
+ */
319
+ export interface CSPLAuditorConfig {
320
+ /** Auditor public key */
321
+ auditorPubkey: string
322
+ /** Auditor name/identifier */
323
+ name?: string
324
+ /** What the auditor can see */
325
+ permissions: CSPLAuditorPermission[]
326
+ /** Expiration timestamp */
327
+ expiresAt?: number
328
+ }
329
+
330
+ /**
331
+ * Auditor permission levels
332
+ */
333
+ export type CSPLAuditorPermission =
334
+ | 'view_balances' // Can decrypt balances
335
+ | 'view_transfers' // Can decrypt transfer amounts
336
+ | 'view_swaps' // Can decrypt swap details
337
+ | 'full_access' // All of the above
338
+
339
+ /**
340
+ * Compliance-enabled transfer parameters
341
+ */
342
+ export interface CompliantTransferParams extends ConfidentialTransferParams {
343
+ /** Auditor configurations for this transfer */
344
+ auditors?: CSPLAuditorConfig[]
345
+ /** Include auditor-decryptable ciphertexts */
346
+ enableAudit: boolean
347
+ }
348
+
349
+ // ─── SDK Interface ────────────────────────────────────────────────────────────
350
+
351
+ /**
352
+ * C-SPL Client SDK interface
353
+ *
354
+ * The actual implementation wraps Solana's Confidential Transfer
355
+ * extension and Arcium's MPC for swap operations.
356
+ */
357
+ export interface ICSPLClient {
358
+ /**
359
+ * Initialize connection
360
+ */
361
+ connect(rpcUrl: string): Promise<void>
362
+
363
+ /**
364
+ * Disconnect
365
+ */
366
+ disconnect(): Promise<void>
367
+
368
+ /**
369
+ * Get or create a confidential token account
370
+ */
371
+ getOrCreateAccount(
372
+ owner: string,
373
+ token: CSPLToken
374
+ ): Promise<ConfidentialTokenAccount>
375
+
376
+ /**
377
+ * Get confidential balance
378
+ */
379
+ getBalance(owner: string, token: CSPLToken): Promise<ConfidentialBalance>
380
+
381
+ /**
382
+ * Wrap SPL tokens to C-SPL
383
+ */
384
+ wrapToken(params: WrapTokenParams): Promise<WrapTokenResult>
385
+
386
+ /**
387
+ * Unwrap C-SPL back to SPL
388
+ */
389
+ unwrapToken(params: UnwrapTokenParams): Promise<UnwrapTokenResult>
390
+
391
+ /**
392
+ * Execute a confidential transfer
393
+ */
394
+ transfer(params: ConfidentialTransferParams): Promise<ConfidentialTransferResult>
395
+
396
+ /**
397
+ * Encrypt an amount for transfer
398
+ */
399
+ encryptAmount(params: CSPLEncryptionParams): Promise<EncryptedAmount>
400
+
401
+ /**
402
+ * Decrypt an encrypted amount
403
+ */
404
+ decryptAmount(params: CSPLDecryptionParams): Promise<bigint>
405
+
406
+ /**
407
+ * Apply pending balance to available balance
408
+ */
409
+ applyPendingBalance(
410
+ owner: string,
411
+ token: CSPLToken
412
+ ): Promise<ConfidentialTransferResult>
413
+ }
414
+
415
+ // ─── Constants ────────────────────────────────────────────────────────────────
416
+
417
+ /**
418
+ * Well-known C-SPL token configurations
419
+ */
420
+ export const CSPL_TOKENS: Record<string, Partial<CSPLToken>> = {
421
+ // Native SOL wrapped
422
+ 'C-wSOL': {
423
+ mint: 'So11111111111111111111111111111111111111112',
424
+ symbol: 'C-wSOL',
425
+ name: 'Confidential Wrapped SOL',
426
+ decimals: 9,
427
+ isNativeWrap: true,
428
+ },
429
+ // USDC
430
+ 'C-USDC': {
431
+ mint: 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v',
432
+ symbol: 'C-USDC',
433
+ name: 'Confidential USDC',
434
+ decimals: 6,
435
+ },
436
+ // USDT
437
+ 'C-USDT': {
438
+ mint: 'Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB',
439
+ symbol: 'C-USDT',
440
+ name: 'Confidential USDT',
441
+ decimals: 6,
442
+ },
443
+ }
444
+
445
+ /**
446
+ * C-SPL program IDs
447
+ *
448
+ * NOTE: TOKEN_PROGRAM and ATA_PROGRAM are PLACEHOLDER addresses.
449
+ * Real values TBD when C-SPL launches on Solana.
450
+ * The PLACEHOLDR prefix makes them obviously invalid to prevent
451
+ * accidental use in production.
452
+ *
453
+ * CONFIDENTIAL_TRANSFER is the real Solana Token-2022 program ID.
454
+ */
455
+ export const CSPL_PROGRAM_IDS = {
456
+ /** C-SPL token program (PLACEHOLDER - TBD) */
457
+ TOKEN_PROGRAM: 'PLACEHLDRCSPLTokenProgram111111111111111111',
458
+ /** C-SPL associated token account program (PLACEHOLDER - TBD) */
459
+ ATA_PROGRAM: 'PLACEHLDRCSPLAtaProgram1111111111111111111',
460
+ /** Confidential transfer extension (REAL Solana Token-2022 program) */
461
+ CONFIDENTIAL_TRANSFER: 'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb',
462
+ } as const
463
+
464
+ /**
465
+ * Default slippage for confidential swaps (0.5%)
466
+ */
467
+ export const DEFAULT_SWAP_SLIPPAGE_BPS = 50
468
+
469
+ /**
470
+ * Maximum pending transfers before apply is required
471
+ */
472
+ export const MAX_PENDING_TRANSFERS = 65536
473
+
474
+ /**
475
+ * Maximum memo length in bytes
476
+ *
477
+ * Solana memo program limit is 566 bytes, but we use 256 for:
478
+ * - Better UX (reasonable user-facing memo length)
479
+ * - Compatibility with other privacy backends
480
+ * - Room for protocol metadata in the transaction
481
+ */
482
+ export const CSPL_MAX_MEMO_BYTES = 256
483
+
484
+ /**
485
+ * Cost estimate for C-SPL operations (in lamports)
486
+ */
487
+ export const CSPL_OPERATION_COSTS = {
488
+ /** Create confidential account */
489
+ createAccount: BigInt(2_039_280),
490
+ /** Wrap tokens */
491
+ wrap: BigInt(5_000),
492
+ /** Unwrap tokens */
493
+ unwrap: BigInt(5_000),
494
+ /** Confidential transfer */
495
+ transfer: BigInt(10_000),
496
+ /** Apply pending balance */
497
+ applyPending: BigInt(5_000),
498
+ } as const
499
+
500
+ /**
501
+ * Estimated time for C-SPL operations (in milliseconds)
502
+ */
503
+ export const CSPL_OPERATION_TIMES = {
504
+ /** Wrap tokens */
505
+ wrap: 2_000,
506
+ /** Unwrap tokens */
507
+ unwrap: 2_000,
508
+ /** Confidential transfer */
509
+ transfer: 3_000,
510
+ /** Confidential swap (via Arcium) */
511
+ swap: 30_000,
512
+ } as const