@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,323 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Inco SDK Type Definitions
|
|
3
|
+
*
|
|
4
|
+
* Type definitions for the @inco/js package.
|
|
5
|
+
* Inco provides FHE (Fully Homomorphic Encryption) for encrypted state computation.
|
|
6
|
+
*
|
|
7
|
+
* ## Architecture
|
|
8
|
+
*
|
|
9
|
+
* - **FHE Engine**: Computes over encrypted data without decryption
|
|
10
|
+
* - **Encrypted Types**: euint256, ebool, eaddress
|
|
11
|
+
* - **Handles**: Unique identifiers for encrypted values on-chain
|
|
12
|
+
* - **Attestations**: Verified decryption mechanisms
|
|
13
|
+
*
|
|
14
|
+
* ## Products
|
|
15
|
+
*
|
|
16
|
+
* - **Inco Lightning**: TEE-based, faster, lower security guarantees
|
|
17
|
+
* - **Inco Atlas**: FHE+MPC, stronger cryptographic guarantees
|
|
18
|
+
*
|
|
19
|
+
* @see https://docs.inco.org
|
|
20
|
+
* @see https://www.npmjs.com/package/@inco/js
|
|
21
|
+
*/
|
|
22
|
+
|
|
23
|
+
import type { ComputationStatus } from './interface'
|
|
24
|
+
|
|
25
|
+
// ─── Re-export from interface ────────────────────────────────────────────────
|
|
26
|
+
|
|
27
|
+
export type { ComputationStatus }
|
|
28
|
+
|
|
29
|
+
// ─── Inco-Specific Types ─────────────────────────────────────────────────────
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Inco network configuration
|
|
33
|
+
*/
|
|
34
|
+
export type IncoNetwork = 'testnet' | 'mainnet'
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Inco product type
|
|
38
|
+
*
|
|
39
|
+
* - Lightning: TEE-based, faster
|
|
40
|
+
* - Atlas: FHE+MPC, stronger guarantees
|
|
41
|
+
*/
|
|
42
|
+
export type IncoProduct = 'lightning' | 'atlas'
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Supported encrypted data types in Inco FHE
|
|
46
|
+
*
|
|
47
|
+
* - euint256: Encrypted unsigned 256-bit integer
|
|
48
|
+
* - ebool: Encrypted boolean
|
|
49
|
+
* - eaddress: Encrypted Ethereum address
|
|
50
|
+
*/
|
|
51
|
+
export type EncryptedType = 'euint256' | 'ebool' | 'eaddress'
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* Configuration for Inco SDK connection
|
|
55
|
+
*/
|
|
56
|
+
export interface IncoConfig {
|
|
57
|
+
/** RPC endpoint URL */
|
|
58
|
+
rpcUrl: string
|
|
59
|
+
/** Network type */
|
|
60
|
+
network: IncoNetwork
|
|
61
|
+
/** Chain ID for EVM networks */
|
|
62
|
+
chainId?: number
|
|
63
|
+
/** Inco product to use */
|
|
64
|
+
product?: IncoProduct
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* Encrypted value handle
|
|
69
|
+
*
|
|
70
|
+
* Represents an encrypted value stored on-chain.
|
|
71
|
+
* The handle is used to reference the value in computations.
|
|
72
|
+
*/
|
|
73
|
+
export interface EncryptedValue {
|
|
74
|
+
/** Unique handle identifier for the encrypted value */
|
|
75
|
+
handle: string
|
|
76
|
+
/** Type of encrypted data */
|
|
77
|
+
type: EncryptedType
|
|
78
|
+
/** Raw ciphertext (if available) */
|
|
79
|
+
ciphertext?: Uint8Array
|
|
80
|
+
/** Chain where the value is stored */
|
|
81
|
+
chainId?: number
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* Parameters for encrypting a value
|
|
86
|
+
*/
|
|
87
|
+
export interface EncryptParams {
|
|
88
|
+
/** Value to encrypt (bigint for euint256, boolean for ebool, string for eaddress) */
|
|
89
|
+
value: bigint | boolean | string
|
|
90
|
+
/** Target encrypted type */
|
|
91
|
+
type: EncryptedType
|
|
92
|
+
/** Destination contract address */
|
|
93
|
+
contractAddress?: string
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* Parameters for decrypting a value
|
|
98
|
+
*/
|
|
99
|
+
export interface DecryptParams {
|
|
100
|
+
/** Handle of the encrypted value */
|
|
101
|
+
handle: string
|
|
102
|
+
/** Expected type (for validation) */
|
|
103
|
+
type?: EncryptedType
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* Decryption result
|
|
108
|
+
*/
|
|
109
|
+
export interface DecryptResult {
|
|
110
|
+
/** Decrypted value */
|
|
111
|
+
value: bigint | boolean | string
|
|
112
|
+
/** Type of the decrypted value */
|
|
113
|
+
type: EncryptedType
|
|
114
|
+
/** Whether decryption was verified/attested */
|
|
115
|
+
attested: boolean
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
/**
|
|
119
|
+
* Parameters for submitting FHE computation
|
|
120
|
+
*/
|
|
121
|
+
export interface SubmitFHEParams {
|
|
122
|
+
/** Contract address containing the FHE logic */
|
|
123
|
+
contractAddress: string
|
|
124
|
+
/** Function selector or name */
|
|
125
|
+
functionName: string
|
|
126
|
+
/** Encrypted input handles */
|
|
127
|
+
encryptedInputs: string[]
|
|
128
|
+
/** Additional plaintext arguments */
|
|
129
|
+
plaintextArgs?: unknown[]
|
|
130
|
+
/** Gas limit for the transaction */
|
|
131
|
+
gasLimit?: bigint
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
/**
|
|
135
|
+
* FHE computation state information
|
|
136
|
+
*/
|
|
137
|
+
export interface FHEComputationInfo {
|
|
138
|
+
/** Computation identifier */
|
|
139
|
+
id: string
|
|
140
|
+
/** Current status */
|
|
141
|
+
status: ComputationStatus
|
|
142
|
+
/** Contract address */
|
|
143
|
+
contractAddress: string
|
|
144
|
+
/** Function executed */
|
|
145
|
+
functionName: string
|
|
146
|
+
/** Input handles used */
|
|
147
|
+
inputHandles: string[]
|
|
148
|
+
/** Output handle (if completed) */
|
|
149
|
+
outputHandle?: string
|
|
150
|
+
/** Submission timestamp */
|
|
151
|
+
submittedAt: number
|
|
152
|
+
/** Completion timestamp (if completed) */
|
|
153
|
+
completedAt?: number
|
|
154
|
+
/** Transaction hash */
|
|
155
|
+
txHash?: string
|
|
156
|
+
/** Error message (if failed) */
|
|
157
|
+
error?: string
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
/**
|
|
161
|
+
* Attestation types for decryption
|
|
162
|
+
*/
|
|
163
|
+
export type AttestationType = 'decrypt' | 'reveal' | 'compute'
|
|
164
|
+
|
|
165
|
+
/**
|
|
166
|
+
* Attestation request for verified decryption
|
|
167
|
+
*/
|
|
168
|
+
export interface AttestationRequest {
|
|
169
|
+
/** Type of attestation */
|
|
170
|
+
type: AttestationType
|
|
171
|
+
/** Handle to attest */
|
|
172
|
+
handle: string
|
|
173
|
+
/** Requester address */
|
|
174
|
+
requester: string
|
|
175
|
+
/** Callback contract (optional) */
|
|
176
|
+
callbackContract?: string
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
/**
|
|
180
|
+
* Attestation result
|
|
181
|
+
*/
|
|
182
|
+
export interface AttestationResult {
|
|
183
|
+
/** Whether attestation succeeded */
|
|
184
|
+
success: boolean
|
|
185
|
+
/** Decrypted/revealed value (if applicable) */
|
|
186
|
+
value?: bigint | boolean | string
|
|
187
|
+
/** Attestation proof */
|
|
188
|
+
proof?: string
|
|
189
|
+
/** Timestamp */
|
|
190
|
+
timestamp: number
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
// ─── SDK Interfaces ──────────────────────────────────────────────────────────
|
|
194
|
+
|
|
195
|
+
/**
|
|
196
|
+
* Inco Client SDK interface
|
|
197
|
+
*
|
|
198
|
+
* The actual SDK is @inco/js.
|
|
199
|
+
* This interface defines the expected API for our adapter.
|
|
200
|
+
*/
|
|
201
|
+
export interface IIncoClient {
|
|
202
|
+
/**
|
|
203
|
+
* Initialize connection to Inco network
|
|
204
|
+
*/
|
|
205
|
+
connect(config: IncoConfig): Promise<void>
|
|
206
|
+
|
|
207
|
+
/**
|
|
208
|
+
* Disconnect from Inco network
|
|
209
|
+
*/
|
|
210
|
+
disconnect(): Promise<void>
|
|
211
|
+
|
|
212
|
+
/**
|
|
213
|
+
* Encrypt a value for FHE computation
|
|
214
|
+
*
|
|
215
|
+
* @param params - Encryption parameters
|
|
216
|
+
* @returns Encrypted value with handle
|
|
217
|
+
*/
|
|
218
|
+
encrypt(params: EncryptParams): Promise<EncryptedValue>
|
|
219
|
+
|
|
220
|
+
/**
|
|
221
|
+
* Decrypt an encrypted value (requires authorization)
|
|
222
|
+
*
|
|
223
|
+
* @param params - Decryption parameters
|
|
224
|
+
* @returns Decrypted value
|
|
225
|
+
*/
|
|
226
|
+
decrypt(params: DecryptParams): Promise<DecryptResult>
|
|
227
|
+
|
|
228
|
+
/**
|
|
229
|
+
* Submit an FHE computation
|
|
230
|
+
*
|
|
231
|
+
* @param params - Computation parameters
|
|
232
|
+
* @returns Computation ID for tracking
|
|
233
|
+
*/
|
|
234
|
+
submitComputation(params: SubmitFHEParams): Promise<string>
|
|
235
|
+
|
|
236
|
+
/**
|
|
237
|
+
* Get computation status
|
|
238
|
+
*
|
|
239
|
+
* @param computationId - Computation to check
|
|
240
|
+
* @returns Current status
|
|
241
|
+
*/
|
|
242
|
+
getComputationStatus(computationId: string): Promise<ComputationStatus>
|
|
243
|
+
|
|
244
|
+
/**
|
|
245
|
+
* Get detailed computation info
|
|
246
|
+
*
|
|
247
|
+
* @param computationId - Computation to query
|
|
248
|
+
* @returns Full computation info
|
|
249
|
+
*/
|
|
250
|
+
getComputationInfo(computationId: string): Promise<FHEComputationInfo>
|
|
251
|
+
|
|
252
|
+
/**
|
|
253
|
+
* Wait for computation to complete
|
|
254
|
+
*
|
|
255
|
+
* @param computationId - Computation to wait for
|
|
256
|
+
* @param timeout - Optional timeout in milliseconds
|
|
257
|
+
* @returns Computation info on completion
|
|
258
|
+
*/
|
|
259
|
+
awaitCompletion(
|
|
260
|
+
computationId: string,
|
|
261
|
+
timeout?: number
|
|
262
|
+
): Promise<FHEComputationInfo>
|
|
263
|
+
|
|
264
|
+
/**
|
|
265
|
+
* Request attested decryption
|
|
266
|
+
*
|
|
267
|
+
* @param request - Attestation request
|
|
268
|
+
* @returns Attestation result
|
|
269
|
+
*/
|
|
270
|
+
requestAttestation(request: AttestationRequest): Promise<AttestationResult>
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
// ─── Constants ───────────────────────────────────────────────────────────────
|
|
274
|
+
|
|
275
|
+
/**
|
|
276
|
+
* Inco network RPC endpoints
|
|
277
|
+
*/
|
|
278
|
+
export const INCO_RPC_URLS: Record<IncoNetwork, string> = {
|
|
279
|
+
testnet: 'https://testnet.inco.org',
|
|
280
|
+
mainnet: 'https://mainnet.inco.org',
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
/**
|
|
284
|
+
* Inco chain IDs
|
|
285
|
+
*/
|
|
286
|
+
export const INCO_CHAIN_IDS: Record<IncoNetwork, number> = {
|
|
287
|
+
testnet: 9090,
|
|
288
|
+
mainnet: 9091, // Placeholder - actual mainnet chain ID TBD
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
/**
|
|
292
|
+
* Supported EVM chains for Inco integration
|
|
293
|
+
*/
|
|
294
|
+
export const INCO_SUPPORTED_CHAINS = [
|
|
295
|
+
'ethereum',
|
|
296
|
+
'base',
|
|
297
|
+
'arbitrum',
|
|
298
|
+
'optimism',
|
|
299
|
+
'polygon',
|
|
300
|
+
] as const
|
|
301
|
+
|
|
302
|
+
/**
|
|
303
|
+
* Default timeout for FHE computation (3 minutes)
|
|
304
|
+
* FHE is generally faster than MPC
|
|
305
|
+
*/
|
|
306
|
+
export const DEFAULT_FHE_TIMEOUT_MS = 180_000
|
|
307
|
+
|
|
308
|
+
/**
|
|
309
|
+
* Estimated time for FHE computation (30 seconds)
|
|
310
|
+
* Faster than MPC due to no multi-party coordination
|
|
311
|
+
*/
|
|
312
|
+
export const ESTIMATED_FHE_TIME_MS = 30_000
|
|
313
|
+
|
|
314
|
+
/**
|
|
315
|
+
* Base cost for Inco FHE computation (in wei)
|
|
316
|
+
* Actual cost depends on computation complexity
|
|
317
|
+
*/
|
|
318
|
+
export const BASE_FHE_COST_WEI = BigInt('10000000000000000') // 0.01 ETH
|
|
319
|
+
|
|
320
|
+
/**
|
|
321
|
+
* Cost per encrypted input (in wei)
|
|
322
|
+
*/
|
|
323
|
+
export const COST_PER_ENCRYPTED_INPUT_WEI = BigInt('1000000000000000') // 0.001 ETH
|