@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,25 @@
1
+ /**
2
+ * Proof Composer Module
3
+ *
4
+ * Exports for the proof composition system.
5
+ *
6
+ * @packageDocumentation
7
+ */
8
+
9
+ // Types
10
+ export * from './types'
11
+
12
+ // Interfaces
13
+ export {
14
+ type ComposableProofProvider,
15
+ type ProofComposer,
16
+ type ProofProviderFactory,
17
+ type ProofProviderRegistry,
18
+ ProofCompositionError,
19
+ ProviderNotFoundError,
20
+ CompositionTimeoutError,
21
+ IncompatibleSystemsError,
22
+ } from './interface'
23
+
24
+ // Implementation
25
+ export { BaseProofComposer } from './base'
@@ -0,0 +1,518 @@
1
+ /**
2
+ * Proof Composer Interface
3
+ *
4
+ * Defines the core interfaces for proof composition, including:
5
+ * - ProofComposer: Main composition orchestrator
6
+ * - ComposableProofProvider: Abstract provider for proof systems
7
+ *
8
+ * @packageDocumentation
9
+ */
10
+
11
+ import type {
12
+ ProofSystem,
13
+ ProofAggregationStrategy,
14
+ SingleProof,
15
+ ComposedProof,
16
+ ProofCompositionConfig,
17
+ ProofProviderCapabilities,
18
+ ProofProviderStatus,
19
+ CompositionResult,
20
+ VerificationResult,
21
+ CompositionEventListener,
22
+ } from '@sip-protocol/types'
23
+
24
+ import type {
25
+ ProofProviderRegistration,
26
+ RegisterProviderOptions,
27
+ ProofGenerationRequest,
28
+ ProofGenerationResult,
29
+ ComposeProofsOptions,
30
+ VerifyComposedProofOptions,
31
+ AggregateProofsOptions,
32
+ AggregationResult,
33
+ ConvertProofOptions,
34
+ ConversionResult,
35
+ CacheStats,
36
+ WorkerPoolStatus,
37
+ CompatibilityMatrix,
38
+ FallbackConfig,
39
+ TelemetryCollector,
40
+ } from './types'
41
+
42
+ // ─── Composable Proof Provider ──────────────────────────────────────────────
43
+
44
+ /**
45
+ * Abstract interface for proof providers that can participate in composition.
46
+ *
47
+ * Implementations of this interface provide proof generation and verification
48
+ * for a specific proof system (Noir, Halo2, Kimchi, etc.).
49
+ *
50
+ * @example
51
+ * ```typescript
52
+ * class Halo2Provider implements ComposableProofProvider {
53
+ * readonly system = 'halo2'
54
+ *
55
+ * async initialize() {
56
+ * // Load WASM, setup keys, etc.
57
+ * }
58
+ *
59
+ * async generateProof(request) {
60
+ * // Generate Halo2 proof
61
+ * }
62
+ *
63
+ * async verifyProof(proof) {
64
+ * // Verify Halo2 proof
65
+ * }
66
+ * }
67
+ * ```
68
+ */
69
+ export interface ComposableProofProvider {
70
+ /**
71
+ * The proof system this provider implements
72
+ */
73
+ readonly system: ProofSystem
74
+
75
+ /**
76
+ * Provider capabilities
77
+ */
78
+ readonly capabilities: ProofProviderCapabilities
79
+
80
+ /**
81
+ * Current provider status
82
+ */
83
+ readonly status: ProofProviderStatus
84
+
85
+ /**
86
+ * Initialize the provider.
87
+ * Must be called before generating or verifying proofs.
88
+ *
89
+ * @throws Error if initialization fails
90
+ */
91
+ initialize(): Promise<void>
92
+
93
+ /**
94
+ * Wait for provider to be ready with optional timeout.
95
+ *
96
+ * @param timeoutMs - Maximum wait time in milliseconds (default: 30000)
97
+ * @throws Error if timeout reached or initialization fails
98
+ */
99
+ waitUntilReady(timeoutMs?: number): Promise<void>
100
+
101
+ /**
102
+ * Generate a proof for the given request.
103
+ *
104
+ * @param request - Proof generation request
105
+ * @returns Generation result with proof or error
106
+ */
107
+ generateProof(request: ProofGenerationRequest): Promise<ProofGenerationResult>
108
+
109
+ /**
110
+ * Verify a single proof.
111
+ *
112
+ * @param proof - The proof to verify
113
+ * @returns true if valid, false otherwise
114
+ */
115
+ verifyProof(proof: SingleProof): Promise<boolean>
116
+
117
+ /**
118
+ * Verify multiple proofs in a batch (if supported).
119
+ *
120
+ * @param proofs - Proofs to verify
121
+ * @returns Array of verification results
122
+ */
123
+ verifyBatch?(proofs: SingleProof[]): Promise<boolean[]>
124
+
125
+ /**
126
+ * Get available circuits for this provider.
127
+ *
128
+ * @returns Array of circuit identifiers
129
+ */
130
+ getAvailableCircuits(): string[]
131
+
132
+ /**
133
+ * Check if a specific circuit is available.
134
+ *
135
+ * @param circuitId - Circuit identifier
136
+ * @returns true if circuit is available
137
+ */
138
+ hasCircuit(circuitId: string): boolean
139
+
140
+ /**
141
+ * Dispose of resources used by this provider.
142
+ */
143
+ dispose(): Promise<void>
144
+ }
145
+
146
+ // ─── Proof Composer Interface ───────────────────────────────────────────────
147
+
148
+ /**
149
+ * Main interface for the proof composition system.
150
+ *
151
+ * ProofComposer orchestrates the composition of proofs from multiple
152
+ * proof systems, handling:
153
+ * - Provider registration and management
154
+ * - Proof generation across systems
155
+ * - Proof composition and aggregation
156
+ * - Verification of composed proofs
157
+ * - Caching and optimization
158
+ *
159
+ * @example
160
+ * ```typescript
161
+ * const composer = new ProofComposer(config)
162
+ *
163
+ * // Register providers
164
+ * await composer.registerProvider(noirProvider)
165
+ * await composer.registerProvider(halo2Provider)
166
+ *
167
+ * // Generate proofs
168
+ * const proof1 = await composer.generateProof({
169
+ * circuitId: 'funding_proof',
170
+ * privateInputs: { balance: 1000n },
171
+ * publicInputs: { minRequired: 100n },
172
+ * })
173
+ *
174
+ * const proof2 = await composer.generateProof({
175
+ * circuitId: 'validity_proof',
176
+ * privateInputs: { sender: '0x...' },
177
+ * publicInputs: { intentHash: '0x...' },
178
+ * })
179
+ *
180
+ * // Compose proofs
181
+ * const result = await composer.compose({
182
+ * proofs: [proof1.proof!, proof2.proof!],
183
+ * strategy: ProofAggregationStrategy.PARALLEL,
184
+ * })
185
+ *
186
+ * // Verify composed proof
187
+ * const verification = await composer.verify({
188
+ * composedProof: result.composedProof!,
189
+ * })
190
+ * ```
191
+ */
192
+ export interface ProofComposer {
193
+ // ─── Configuration ──────────────────────────────────────────────────────
194
+
195
+ /**
196
+ * Current configuration
197
+ */
198
+ readonly config: ProofCompositionConfig
199
+
200
+ /**
201
+ * Update configuration.
202
+ *
203
+ * @param config - Partial configuration to merge
204
+ */
205
+ updateConfig(config: Partial<ProofCompositionConfig>): void
206
+
207
+ // ─── Provider Management ────────────────────────────────────────────────
208
+
209
+ /**
210
+ * Register a proof provider.
211
+ *
212
+ * @param provider - The provider to register
213
+ * @param options - Registration options
214
+ * @returns Registration entry
215
+ */
216
+ registerProvider(
217
+ provider: ComposableProofProvider,
218
+ options?: RegisterProviderOptions,
219
+ ): Promise<ProofProviderRegistration>
220
+
221
+ /**
222
+ * Unregister a provider.
223
+ *
224
+ * @param providerId - Provider ID to unregister
225
+ * @returns true if provider was removed
226
+ */
227
+ unregisterProvider(providerId: string): boolean
228
+
229
+ /**
230
+ * Get a registered provider by ID.
231
+ *
232
+ * @param providerId - Provider ID
233
+ * @returns Provider or undefined
234
+ */
235
+ getProvider(providerId: string): ComposableProofProvider | undefined
236
+
237
+ /**
238
+ * Get provider for a specific proof system.
239
+ *
240
+ * @param system - Proof system
241
+ * @returns Provider or undefined
242
+ */
243
+ getProviderForSystem(system: ProofSystem): ComposableProofProvider | undefined
244
+
245
+ /**
246
+ * Get all registered providers.
247
+ *
248
+ * @returns Array of provider registrations
249
+ */
250
+ getProviders(): ProofProviderRegistration[]
251
+
252
+ /**
253
+ * Get available proof systems.
254
+ *
255
+ * @returns Array of available systems
256
+ */
257
+ getAvailableSystems(): ProofSystem[]
258
+
259
+ // ─── Proof Generation ───────────────────────────────────────────────────
260
+
261
+ /**
262
+ * Generate a proof using the appropriate provider.
263
+ *
264
+ * @param request - Proof generation request
265
+ * @returns Generation result
266
+ */
267
+ generateProof(request: ProofGenerationRequest): Promise<ProofGenerationResult>
268
+
269
+ /**
270
+ * Generate multiple proofs in parallel.
271
+ *
272
+ * @param requests - Array of proof requests
273
+ * @returns Array of generation results
274
+ */
275
+ generateProofs(requests: ProofGenerationRequest[]): Promise<ProofGenerationResult[]>
276
+
277
+ // ─── Composition ────────────────────────────────────────────────────────
278
+
279
+ /**
280
+ * Compose multiple proofs into a single composed proof.
281
+ *
282
+ * @param options - Composition options
283
+ * @returns Composition result
284
+ */
285
+ compose(options: ComposeProofsOptions): Promise<CompositionResult>
286
+
287
+ /**
288
+ * Aggregate proofs into a single proof (if supported).
289
+ *
290
+ * @param options - Aggregation options
291
+ * @returns Aggregation result
292
+ */
293
+ aggregate(options: AggregateProofsOptions): Promise<AggregationResult>
294
+
295
+ // ─── Verification ───────────────────────────────────────────────────────
296
+
297
+ /**
298
+ * Verify a composed proof.
299
+ *
300
+ * @param options - Verification options
301
+ * @returns Verification result
302
+ */
303
+ verify(options: VerifyComposedProofOptions): Promise<VerificationResult>
304
+
305
+ /**
306
+ * Verify a single proof.
307
+ *
308
+ * @param proof - Proof to verify
309
+ * @returns true if valid
310
+ */
311
+ verifySingle(proof: SingleProof): Promise<boolean>
312
+
313
+ // ─── Format Conversion ──────────────────────────────────────────────────
314
+
315
+ /**
316
+ * Convert a proof to a different format.
317
+ *
318
+ * @param options - Conversion options
319
+ * @returns Conversion result
320
+ */
321
+ convert(options: ConvertProofOptions): Promise<ConversionResult>
322
+
323
+ /**
324
+ * Get the compatibility matrix for proof systems.
325
+ *
326
+ * @returns Compatibility matrix
327
+ */
328
+ getCompatibilityMatrix(): CompatibilityMatrix
329
+
330
+ /**
331
+ * Check if two systems are compatible for composition.
332
+ *
333
+ * @param source - Source system
334
+ * @param target - Target system
335
+ * @returns true if compatible
336
+ */
337
+ areSystemsCompatible(source: ProofSystem, target: ProofSystem): boolean
338
+
339
+ // ─── Caching ────────────────────────────────────────────────────────────
340
+
341
+ /**
342
+ * Get cache statistics.
343
+ *
344
+ * @returns Cache stats
345
+ */
346
+ getCacheStats(): CacheStats
347
+
348
+ /**
349
+ * Clear the proof cache.
350
+ *
351
+ * @param olderThan - Optional: only clear entries older than this timestamp
352
+ */
353
+ clearCache(olderThan?: number): void
354
+
355
+ // ─── Worker Pool ────────────────────────────────────────────────────────
356
+
357
+ /**
358
+ * Get worker pool status.
359
+ *
360
+ * @returns Worker pool status
361
+ */
362
+ getWorkerPoolStatus(): WorkerPoolStatus
363
+
364
+ /**
365
+ * Scale worker pool.
366
+ *
367
+ * @param targetWorkers - Target number of workers
368
+ */
369
+ scaleWorkerPool(targetWorkers: number): Promise<void>
370
+
371
+ // ─── Fallback Configuration ─────────────────────────────────────────────
372
+
373
+ /**
374
+ * Set fallback configuration.
375
+ *
376
+ * @param config - Fallback configuration
377
+ */
378
+ setFallbackConfig(config: FallbackConfig): void
379
+
380
+ /**
381
+ * Get current fallback configuration.
382
+ *
383
+ * @returns Fallback config or undefined
384
+ */
385
+ getFallbackConfig(): FallbackConfig | undefined
386
+
387
+ // ─── Events ─────────────────────────────────────────────────────────────
388
+
389
+ /**
390
+ * Add an event listener.
391
+ *
392
+ * @param listener - Event listener
393
+ * @returns Unsubscribe function
394
+ */
395
+ addEventListener(listener: CompositionEventListener): () => void
396
+
397
+ /**
398
+ * Remove an event listener.
399
+ *
400
+ * @param listener - Listener to remove
401
+ */
402
+ removeEventListener(listener: CompositionEventListener): void
403
+
404
+ // ─── Telemetry ──────────────────────────────────────────────────────────
405
+
406
+ /**
407
+ * Set telemetry collector.
408
+ *
409
+ * @param collector - Telemetry collector
410
+ */
411
+ setTelemetryCollector(collector: TelemetryCollector): void
412
+
413
+ // ─── Lifecycle ──────────────────────────────────────────────────────────
414
+
415
+ /**
416
+ * Initialize the composer and all providers.
417
+ */
418
+ initialize(): Promise<void>
419
+
420
+ /**
421
+ * Dispose of resources.
422
+ */
423
+ dispose(): Promise<void>
424
+ }
425
+
426
+ // ─── Factory Types ──────────────────────────────────────────────────────────
427
+
428
+ /**
429
+ * Factory for creating proof providers
430
+ */
431
+ export type ProofProviderFactory = (
432
+ config?: Record<string, unknown>,
433
+ ) => Promise<ComposableProofProvider>
434
+
435
+ /**
436
+ * Registry of proof provider factories
437
+ */
438
+ export interface ProofProviderRegistry {
439
+ /** Register a provider factory */
440
+ register(system: ProofSystem, factory: ProofProviderFactory): void
441
+ /** Get a provider factory */
442
+ get(system: ProofSystem): ProofProviderFactory | undefined
443
+ /** Create a provider instance */
444
+ create(system: ProofSystem, config?: Record<string, unknown>): Promise<ComposableProofProvider>
445
+ /** Get all registered systems */
446
+ getSystems(): ProofSystem[]
447
+ }
448
+
449
+ // ─── Error Classes ──────────────────────────────────────────────────────────
450
+
451
+ /**
452
+ * Error thrown during proof composition
453
+ */
454
+ export class ProofCompositionError extends Error {
455
+ readonly code: string
456
+ readonly system?: ProofSystem
457
+ readonly proofId?: string
458
+ readonly cause?: Error
459
+
460
+ constructor(
461
+ code: string,
462
+ message: string,
463
+ options?: {
464
+ system?: ProofSystem
465
+ proofId?: string
466
+ cause?: Error
467
+ },
468
+ ) {
469
+ super(message)
470
+ this.name = 'ProofCompositionError'
471
+ this.code = code
472
+ this.system = options?.system
473
+ this.proofId = options?.proofId
474
+ this.cause = options?.cause
475
+ }
476
+ }
477
+
478
+ /**
479
+ * Error thrown when a provider is not found
480
+ */
481
+ export class ProviderNotFoundError extends ProofCompositionError {
482
+ constructor(system: ProofSystem) {
483
+ super('PROVIDER_NOT_FOUND', `No provider found for system: ${system}`, { system })
484
+ this.name = 'ProviderNotFoundError'
485
+ }
486
+ }
487
+
488
+ /**
489
+ * Error thrown when composition times out
490
+ */
491
+ export class CompositionTimeoutError extends ProofCompositionError {
492
+ readonly timeoutMs: number
493
+
494
+ constructor(timeoutMs: number) {
495
+ super('TIMEOUT', `Composition timed out after ${timeoutMs}ms`)
496
+ this.name = 'CompositionTimeoutError'
497
+ this.timeoutMs = timeoutMs
498
+ }
499
+ }
500
+
501
+ /**
502
+ * Error thrown when proof systems are incompatible
503
+ */
504
+ export class IncompatibleSystemsError extends ProofCompositionError {
505
+ readonly source: ProofSystem
506
+ readonly target: ProofSystem
507
+
508
+ constructor(source: ProofSystem, target: ProofSystem) {
509
+ super(
510
+ 'INCOMPATIBLE_SYSTEMS',
511
+ `Proof systems are incompatible: ${source} -> ${target}`,
512
+ { system: source },
513
+ )
514
+ this.name = 'IncompatibleSystemsError'
515
+ this.source = source
516
+ this.target = target
517
+ }
518
+ }