@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.
- package/LICENSE +21 -0
- package/README.md +267 -0
- package/dist/{TransportWebUSB-TQ7WZ4LE.mjs → TransportWebUSB-YQMAGJAJ.mjs} +12 -9
- package/dist/browser.d.mts +10 -4
- package/dist/browser.d.ts +10 -4
- package/dist/browser.js +48874 -18336
- package/dist/browser.mjs +674 -48
- package/dist/chunk-4GRJ5MAW.mjs +152 -0
- package/dist/chunk-5D7A3L3W.mjs +717 -0
- package/dist/chunk-64AYA5F5.mjs +7834 -0
- package/dist/chunk-GMDGB22A.mjs +379 -0
- package/dist/chunk-I534WKN7.mjs +328 -0
- package/dist/chunk-IBZVA5Y7.mjs +1003 -0
- package/dist/chunk-PRRZAWJE.mjs +223 -0
- package/dist/{chunk-UJCSKKID.mjs → chunk-XGB3TDIC.mjs} +13 -1
- package/dist/chunk-YWGJ77A2.mjs +33806 -0
- package/dist/{chunk-6WGN57S2.mjs → chunk-Z3K7W5S3.mjs} +48 -0
- package/dist/constants-LHAAUC2T.mjs +51 -0
- package/dist/dist-2OGQ7FED.mjs +3957 -0
- package/dist/dist-IFHPYLDX.mjs +254 -0
- package/dist/fulfillment_proof-ANHVPKTB.mjs +21 -0
- package/dist/funding_proof-ICFZ5LHY.mjs +21 -0
- package/dist/index-DXh2IGkz.d.ts +24681 -0
- package/dist/index-DeE1ZzA4.d.mts +24681 -0
- package/dist/index.d.mts +9 -3
- package/dist/index.d.ts +9 -3
- package/dist/index.js +48676 -17318
- package/dist/index.mjs +583 -19
- package/dist/interface-Bf7w1PLW.d.mts +679 -0
- package/dist/interface-Bf7w1PLW.d.ts +679 -0
- package/dist/{noir-DKfEzWy9.d.mts → noir-kzbLVTei.d.mts} +31 -21
- package/dist/{noir-DKfEzWy9.d.ts → noir-kzbLVTei.d.ts} +31 -21
- package/dist/proofs/halo2.d.mts +151 -0
- package/dist/proofs/halo2.d.ts +151 -0
- package/dist/proofs/halo2.js +350 -0
- package/dist/proofs/halo2.mjs +11 -0
- package/dist/proofs/kimchi.d.mts +160 -0
- package/dist/proofs/kimchi.d.ts +160 -0
- package/dist/proofs/kimchi.js +431 -0
- package/dist/proofs/kimchi.mjs +13 -0
- package/dist/proofs/noir.d.mts +1 -1
- package/dist/proofs/noir.d.ts +1 -1
- package/dist/proofs/noir.js +74 -18
- package/dist/proofs/noir.mjs +84 -24
- package/dist/solana-U3MEGU7W.mjs +280 -0
- package/dist/validity_proof-3POXLPNY.mjs +21 -0
- package/package.json +54 -21
- package/src/adapters/index.ts +41 -0
- package/src/adapters/jupiter.ts +571 -0
- package/src/adapters/near-intents.ts +135 -0
- package/src/advisor/advisor.ts +653 -0
- package/src/advisor/index.ts +54 -0
- package/src/advisor/tools.ts +303 -0
- package/src/advisor/types.ts +164 -0
- package/src/chains/ethereum/announcement.ts +536 -0
- package/src/chains/ethereum/bnb-optimizations.ts +474 -0
- package/src/chains/ethereum/commitment.ts +522 -0
- package/src/chains/ethereum/constants.ts +462 -0
- package/src/chains/ethereum/deployment.ts +596 -0
- package/src/chains/ethereum/gas-estimation.ts +538 -0
- package/src/chains/ethereum/index.ts +268 -0
- package/src/chains/ethereum/optimizations.ts +614 -0
- package/src/chains/ethereum/privacy-adapter.ts +855 -0
- package/src/chains/ethereum/registry.ts +584 -0
- package/src/chains/ethereum/rpc.ts +905 -0
- package/src/chains/ethereum/stealth.ts +491 -0
- package/src/chains/ethereum/token.ts +790 -0
- package/src/chains/ethereum/transfer.ts +637 -0
- package/src/chains/ethereum/types.ts +456 -0
- package/src/chains/ethereum/viewing-key.ts +455 -0
- package/src/chains/near/commitment.ts +608 -0
- package/src/chains/near/constants.ts +284 -0
- package/src/chains/near/function-call.ts +871 -0
- package/src/chains/near/history.ts +654 -0
- package/src/chains/near/implicit-account.ts +840 -0
- package/src/chains/near/index.ts +393 -0
- package/src/chains/near/native-transfer.ts +658 -0
- package/src/chains/near/nep141.ts +775 -0
- package/src/chains/near/privacy-adapter.ts +889 -0
- package/src/chains/near/resolver.ts +971 -0
- package/src/chains/near/rpc.ts +1016 -0
- package/src/chains/near/stealth.ts +419 -0
- package/src/chains/near/types.ts +317 -0
- package/src/chains/near/viewing-key.ts +876 -0
- package/src/chains/solana/anchor-transfer.ts +386 -0
- package/src/chains/solana/commitment.ts +577 -0
- package/src/chains/solana/constants.ts +126 -12
- package/src/chains/solana/ephemeral-keys.ts +543 -0
- package/src/chains/solana/index.ts +276 -1
- package/src/chains/solana/key-derivation.ts +418 -0
- package/src/chains/solana/kit-compat.ts +334 -0
- package/src/chains/solana/optimizations.ts +560 -0
- package/src/chains/solana/privacy-adapter.ts +605 -0
- package/src/chains/solana/providers/generic.ts +201 -0
- package/src/chains/solana/providers/helius-enhanced-types.ts +336 -0
- package/src/chains/solana/providers/helius-enhanced.ts +623 -0
- package/src/chains/solana/providers/helius.ts +402 -0
- package/src/chains/solana/providers/index.ts +85 -0
- package/src/chains/solana/providers/interface.ts +221 -0
- package/src/chains/solana/providers/quicknode.ts +409 -0
- package/src/chains/solana/providers/triton.ts +426 -0
- package/src/chains/solana/providers/webhook.ts +790 -0
- package/src/chains/solana/rpc-client.ts +1150 -0
- package/src/chains/solana/scan.ts +170 -73
- package/src/chains/solana/sol-transfer.ts +732 -0
- package/src/chains/solana/spl-transfer.ts +886 -0
- package/src/chains/solana/stealth-scanner.ts +703 -0
- package/src/chains/solana/sunspot-verifier.ts +453 -0
- package/src/chains/solana/transaction-builder.ts +755 -0
- package/src/chains/solana/transfer.ts +74 -5
- package/src/chains/solana/types.ts +77 -7
- package/src/chains/solana/utils.ts +110 -0
- package/src/chains/solana/viewing-key.ts +807 -0
- package/src/compliance/fireblocks.ts +921 -0
- package/src/compliance/index.ts +37 -0
- package/src/compliance/range-sas.ts +956 -0
- package/src/config/endpoints.ts +100 -0
- package/src/crypto.ts +11 -8
- package/src/errors.ts +82 -0
- package/src/evm/erc4337-relayer.ts +830 -0
- package/src/evm/index.ts +47 -0
- package/src/fees/calculator.ts +396 -0
- package/src/fees/index.ts +87 -0
- package/src/fees/near-contract.ts +429 -0
- package/src/fees/types.ts +268 -0
- package/src/index.ts +785 -1
- package/src/intent.ts +6 -3
- package/src/logger.ts +324 -0
- package/src/network/index.ts +80 -0
- package/src/network/proxy.ts +691 -0
- package/src/optimizations/index.ts +541 -0
- package/src/oracle/types.ts +1 -0
- package/src/privacy-backends/arcium-types.ts +727 -0
- package/src/privacy-backends/arcium.ts +719 -0
- package/src/privacy-backends/combined-privacy.ts +866 -0
- package/src/privacy-backends/cspl-token.ts +595 -0
- package/src/privacy-backends/cspl-types.ts +512 -0
- package/src/privacy-backends/cspl.ts +907 -0
- package/src/privacy-backends/health.ts +488 -0
- package/src/privacy-backends/inco-types.ts +323 -0
- package/src/privacy-backends/inco.ts +616 -0
- package/src/privacy-backends/index.ts +336 -0
- package/src/privacy-backends/interface.ts +906 -0
- package/src/privacy-backends/lru-cache.ts +343 -0
- package/src/privacy-backends/magicblock.ts +458 -0
- package/src/privacy-backends/mock.ts +258 -0
- package/src/privacy-backends/privacycash-types.ts +278 -0
- package/src/privacy-backends/privacycash.ts +456 -0
- package/src/privacy-backends/private-swap.ts +570 -0
- package/src/privacy-backends/rate-limiter.ts +683 -0
- package/src/privacy-backends/registry.ts +690 -0
- package/src/privacy-backends/router.ts +626 -0
- package/src/privacy-backends/shadowwire.ts +449 -0
- package/src/privacy-backends/sip-native.ts +256 -0
- package/src/privacy-logger.ts +191 -0
- package/src/production-safety.ts +373 -0
- package/src/proofs/aggregator.ts +1029 -0
- package/src/proofs/browser-composer.ts +1150 -0
- package/src/proofs/browser.ts +113 -25
- package/src/proofs/cache/index.ts +127 -0
- package/src/proofs/cache/interface.ts +545 -0
- package/src/proofs/cache/key-generator.ts +188 -0
- package/src/proofs/cache/lru-cache.ts +481 -0
- package/src/proofs/cache/multi-tier-cache.ts +575 -0
- package/src/proofs/cache/persistent-cache.ts +788 -0
- package/src/proofs/compliance-proof.ts +872 -0
- package/src/proofs/composer/base.ts +923 -0
- package/src/proofs/composer/index.ts +25 -0
- package/src/proofs/composer/interface.ts +518 -0
- package/src/proofs/composer/types.ts +383 -0
- package/src/proofs/converters/halo2.ts +452 -0
- package/src/proofs/converters/index.ts +208 -0
- package/src/proofs/converters/interface.ts +363 -0
- package/src/proofs/converters/kimchi.ts +462 -0
- package/src/proofs/converters/noir.ts +451 -0
- package/src/proofs/fallback.ts +888 -0
- package/src/proofs/halo2.ts +42 -0
- package/src/proofs/index.ts +471 -0
- package/src/proofs/interface.ts +13 -0
- package/src/proofs/kimchi.ts +42 -0
- package/src/proofs/lazy.ts +1004 -0
- package/src/proofs/mock.ts +25 -1
- package/src/proofs/noir.ts +111 -30
- package/src/proofs/orchestrator.ts +960 -0
- package/src/proofs/parallel/concurrency.ts +297 -0
- package/src/proofs/parallel/dependency-graph.ts +602 -0
- package/src/proofs/parallel/executor.ts +420 -0
- package/src/proofs/parallel/index.ts +131 -0
- package/src/proofs/parallel/interface.ts +685 -0
- package/src/proofs/parallel/worker-pool.ts +644 -0
- package/src/proofs/providers/halo2.ts +560 -0
- package/src/proofs/providers/index.ts +34 -0
- package/src/proofs/providers/kimchi.ts +641 -0
- package/src/proofs/validator.ts +881 -0
- package/src/proofs/verifier.ts +867 -0
- package/src/quantum/index.ts +112 -0
- package/src/quantum/winternitz-vault.ts +639 -0
- package/src/quantum/wots.ts +611 -0
- package/src/settlement/backends/direct-chain.ts +1 -0
- package/src/settlement/index.ts +9 -0
- package/src/settlement/router.ts +732 -46
- package/src/solana/index.ts +72 -0
- package/src/solana/jito-relayer.ts +687 -0
- package/src/solana/noir-verifier-types.ts +430 -0
- package/src/solana/noir-verifier.ts +816 -0
- package/src/stealth/address-derivation.ts +193 -0
- package/src/stealth/ed25519.ts +431 -0
- package/src/stealth/index.ts +233 -0
- package/src/stealth/meta-address.ts +221 -0
- package/src/stealth/secp256k1.ts +368 -0
- package/src/stealth/utils.ts +194 -0
- package/src/stealth.ts +50 -1504
- package/src/surveillance/algorithms/address-reuse.ts +143 -0
- package/src/surveillance/algorithms/cluster.ts +247 -0
- package/src/surveillance/algorithms/exchange.ts +295 -0
- package/src/surveillance/algorithms/temporal.ts +337 -0
- package/src/surveillance/analyzer.ts +442 -0
- package/src/surveillance/index.ts +64 -0
- package/src/surveillance/scoring.ts +372 -0
- package/src/surveillance/types.ts +264 -0
- package/src/sync/index.ts +106 -0
- package/src/sync/manager.ts +504 -0
- package/src/sync/mock-provider.ts +318 -0
- package/src/sync/oblivious.ts +625 -0
- package/src/tokens/index.ts +15 -0
- package/src/tokens/registry.ts +301 -0
- package/src/utils/deprecation.ts +94 -0
- package/src/utils/index.ts +9 -0
- package/src/wallet/ethereum/index.ts +68 -0
- package/src/wallet/ethereum/metamask-privacy.ts +420 -0
- package/src/wallet/ethereum/multi-wallet.ts +646 -0
- package/src/wallet/ethereum/privacy-adapter.ts +700 -0
- package/src/wallet/ethereum/types.ts +3 -1
- package/src/wallet/ethereum/walletconnect-adapter.ts +675 -0
- package/src/wallet/hardware/index.ts +10 -0
- package/src/wallet/hardware/ledger-privacy.ts +414 -0
- package/src/wallet/index.ts +71 -0
- package/src/wallet/near/adapter.ts +626 -0
- package/src/wallet/near/index.ts +86 -0
- package/src/wallet/near/meteor-wallet.ts +1153 -0
- package/src/wallet/near/my-near-wallet.ts +790 -0
- package/src/wallet/near/wallet-selector.ts +702 -0
- package/src/wallet/solana/adapter.ts +6 -4
- package/src/wallet/solana/index.ts +13 -0
- package/src/wallet/solana/privacy-adapter.ts +567 -0
- package/src/wallet/sui/types.ts +6 -4
- package/src/zcash/rpc-client.ts +13 -6
- package/dist/chunk-3INS3PR5.mjs +0 -884
- package/dist/chunk-3OVABDRH.mjs +0 -17096
- package/dist/chunk-DLDWZFYC.mjs +0 -1495
- package/dist/chunk-E6SZWREQ.mjs +0 -57
- package/dist/chunk-G33LB27A.mjs +0 -16166
- package/dist/chunk-HGU6HZRC.mjs +0 -231
- package/dist/chunk-L2K34JCU.mjs +0 -1496
- package/dist/chunk-SN4ZDTVW.mjs +0 -16166
- package/dist/constants-VOI7BSLK.mjs +0 -27
- package/dist/index-BYZbDjal.d.ts +0 -11390
- package/dist/index-CHB3KuOB.d.mts +0 -11859
- package/dist/index-CzWPI6Le.d.ts +0 -11859
- package/dist/index-xbWjohNq.d.mts +0 -11390
- package/dist/solana-5EMCTPTS.mjs +0 -46
- 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
|
+
}
|