@sip-protocol/sdk 0.7.3 → 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 +47556 -19603
- package/dist/browser.mjs +628 -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-3M3HNQCW.mjs → chunk-YWGJ77A2.mjs} +28656 -13103
- 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-DIBZHOOQ.d.ts → index-DXh2IGkz.d.ts} +21239 -10304
- package/dist/{index-8MQz13eJ.d.mts → index-DeE1ZzA4.d.mts} +21239 -10304
- package/dist/index.d.mts +9 -3
- package/dist/index.d.ts +9 -3
- package/dist/index.js +48396 -19623
- package/dist/index.mjs +537 -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 +252 -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 +47 -6
- 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 +186 -33
- package/src/chains/solana/providers/index.ts +31 -0
- package/src/chains/solana/providers/interface.ts +61 -18
- 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 +338 -67
- package/src/chains/solana/rpc-client.ts +1150 -0
- package/src/chains/solana/scan.ts +83 -66
- 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 +57 -6
- 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 +23 -0
- package/src/compliance/range-sas.ts +398 -33
- 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 +686 -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 +254 -4
- package/src/privacy-backends/interface.ts +649 -6
- 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.ts +13 -17
- package/src/privacy-backends/private-swap.ts +570 -0
- package/src/privacy-backends/rate-limiter.ts +683 -0
- package/src/privacy-backends/registry.ts +414 -2
- package/src/privacy-backends/router.ts +283 -3
- package/src/privacy-backends/shadowwire.ts +449 -0
- package/src/privacy-backends/sip-native.ts +3 -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 +110 -29
- 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/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-2XIVXWHA.mjs +0 -1930
- package/dist/chunk-3INS3PR5.mjs +0 -884
- package/dist/chunk-3OVABDRH.mjs +0 -17096
- package/dist/chunk-7RFRWDCW.mjs +0 -1504
- package/dist/chunk-DLDWZFYC.mjs +0 -1495
- package/dist/chunk-E6SZWREQ.mjs +0 -57
- package/dist/chunk-F6F73W35.mjs +0 -16166
- package/dist/chunk-G33LB27A.mjs +0 -16166
- package/dist/chunk-HGU6HZRC.mjs +0 -231
- package/dist/chunk-L2K34JCU.mjs +0 -1496
- package/dist/chunk-OFDBEIEK.mjs +0 -16166
- package/dist/chunk-SF7YSLF5.mjs +0 -1515
- package/dist/chunk-SN4ZDTVW.mjs +0 -16166
- package/dist/chunk-WWUSGOXE.mjs +0 -17129
- package/dist/constants-VOI7BSLK.mjs +0 -27
- package/dist/index-B71aXVzk.d.ts +0 -13264
- 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-pOIIuwfV.d.mts +0 -13264
- package/dist/index-xbWjohNq.d.mts +0 -11390
- package/dist/solana-4O4K45VU.mjs +0 -46
- package/dist/solana-5EMCTPTS.mjs +0 -46
- package/dist/solana-NDABAZ6P.mjs +0 -56
- package/dist/solana-Q4NAVBTS.mjs +0 -46
- package/dist/solana-ZYO63LY5.mjs +0 -46
|
@@ -0,0 +1,456 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Ethereum Same-Chain Privacy Types
|
|
3
|
+
*
|
|
4
|
+
* Type definitions for Ethereum privacy operations including transfers,
|
|
5
|
+
* scanning, claiming, and EIP-5564 announcements.
|
|
6
|
+
*
|
|
7
|
+
* @packageDocumentation
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
import type { HexString, StealthAddress, StealthMetaAddress } from '@sip-protocol/types'
|
|
11
|
+
import type { EthereumNetwork } from './constants'
|
|
12
|
+
|
|
13
|
+
// ─── Privacy Levels ─────────────────────────────────────────────────────────
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Ethereum privacy level for transactions
|
|
17
|
+
*/
|
|
18
|
+
export type EthereumPrivacyLevel = 'transparent' | 'shielded' | 'compliant'
|
|
19
|
+
|
|
20
|
+
// ─── Announcement Types ─────────────────────────────────────────────────────
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* EIP-5564 stealth address announcement
|
|
24
|
+
*
|
|
25
|
+
* Emitted when a sender creates a stealth address payment.
|
|
26
|
+
* Recipients scan these to find incoming payments.
|
|
27
|
+
*/
|
|
28
|
+
export interface EthereumAnnouncement {
|
|
29
|
+
/** EIP-5564 scheme ID (1 for secp256k1) */
|
|
30
|
+
schemeId: number
|
|
31
|
+
/** Stealth address that received the funds */
|
|
32
|
+
stealthAddress: HexString
|
|
33
|
+
/** Caller/sender who made the announcement */
|
|
34
|
+
caller: HexString
|
|
35
|
+
/** Ephemeral public key (compressed secp256k1, 33 bytes) */
|
|
36
|
+
ephemeralPublicKey: HexString
|
|
37
|
+
/** View tag for efficient filtering (0-255) */
|
|
38
|
+
viewTag: number
|
|
39
|
+
/** Optional metadata (token info, amount commitment, etc.) */
|
|
40
|
+
metadata?: HexString
|
|
41
|
+
/** Transaction hash where the announcement was made */
|
|
42
|
+
txHash?: HexString
|
|
43
|
+
/** Block number of the announcement */
|
|
44
|
+
blockNumber?: number
|
|
45
|
+
/** Log index within the block */
|
|
46
|
+
logIndex?: number
|
|
47
|
+
/** Timestamp of the block (unix seconds) */
|
|
48
|
+
timestamp?: number
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* Parsed EIP-5564 announcement metadata
|
|
53
|
+
*/
|
|
54
|
+
export interface AnnouncementMetadata {
|
|
55
|
+
/** Token contract address (zero address for native ETH) */
|
|
56
|
+
tokenAddress?: HexString
|
|
57
|
+
/** Amount commitment (Pedersen commitment of the amount) */
|
|
58
|
+
amountCommitment?: HexString
|
|
59
|
+
/** Blinding factor hash (for commitment verification) */
|
|
60
|
+
blindingHash?: HexString
|
|
61
|
+
/** Additional arbitrary data */
|
|
62
|
+
extraData?: HexString
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
// ─── Transfer Types ─────────────────────────────────────────────────────────
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* Parameters for building a private Ethereum transfer
|
|
69
|
+
*/
|
|
70
|
+
export interface EthereumPrivateTransferParams {
|
|
71
|
+
/** Recipient's stealth meta-address (or encoded string) */
|
|
72
|
+
recipientMetaAddress: StealthMetaAddress | string
|
|
73
|
+
/** Amount in wei (for native ETH) or smallest units (for tokens) */
|
|
74
|
+
amount: bigint
|
|
75
|
+
/** Token contract address (omit for native ETH) */
|
|
76
|
+
tokenContract?: HexString
|
|
77
|
+
/** Privacy level */
|
|
78
|
+
privacyLevel?: EthereumPrivacyLevel
|
|
79
|
+
/** Network to use */
|
|
80
|
+
network?: EthereumNetwork
|
|
81
|
+
/** Custom gas limit */
|
|
82
|
+
gasLimit?: bigint
|
|
83
|
+
/** Max fee per gas (EIP-1559) */
|
|
84
|
+
maxFeePerGas?: bigint
|
|
85
|
+
/** Max priority fee per gas (EIP-1559) */
|
|
86
|
+
maxPriorityFeePerGas?: bigint
|
|
87
|
+
/** Optional memo/reference */
|
|
88
|
+
memo?: string
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* Built transaction ready for signing
|
|
93
|
+
*/
|
|
94
|
+
export interface EthereumShieldedTransferBuild {
|
|
95
|
+
/** Stealth address to send to */
|
|
96
|
+
stealthAddress: StealthAddress
|
|
97
|
+
/** Ethereum address derived from stealth public key */
|
|
98
|
+
stealthEthAddress: HexString
|
|
99
|
+
/** Ephemeral public key for recipient scanning */
|
|
100
|
+
ephemeralPublicKey: HexString
|
|
101
|
+
/** View tag for efficient filtering */
|
|
102
|
+
viewTag: number
|
|
103
|
+
/** Shared secret (for debugging, should be discarded) */
|
|
104
|
+
sharedSecret?: HexString
|
|
105
|
+
/** Amount commitment (if privacy level is shielded/compliant) */
|
|
106
|
+
amountCommitment?: HexString
|
|
107
|
+
/** Blinding factor (if privacy level is shielded/compliant) */
|
|
108
|
+
blindingFactor?: HexString
|
|
109
|
+
/** Transaction data for the transfer */
|
|
110
|
+
transferTx: {
|
|
111
|
+
to: HexString
|
|
112
|
+
value: bigint
|
|
113
|
+
data?: HexString
|
|
114
|
+
}
|
|
115
|
+
/** Transaction data for the announcement */
|
|
116
|
+
announcementTx: {
|
|
117
|
+
to: HexString
|
|
118
|
+
value: bigint
|
|
119
|
+
data: HexString
|
|
120
|
+
}
|
|
121
|
+
/** Estimated gas for both transactions */
|
|
122
|
+
estimatedGas: bigint
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
/**
|
|
126
|
+
* Result of a private Ethereum transfer
|
|
127
|
+
*/
|
|
128
|
+
export interface EthereumPrivateTransferResult {
|
|
129
|
+
/** Transaction hash of the transfer */
|
|
130
|
+
transferTxHash: HexString
|
|
131
|
+
/** Transaction hash of the announcement */
|
|
132
|
+
announcementTxHash: HexString
|
|
133
|
+
/** Stealth address that received the funds */
|
|
134
|
+
stealthAddress: StealthAddress
|
|
135
|
+
/** Ethereum address derived from stealth public key */
|
|
136
|
+
stealthEthAddress: HexString
|
|
137
|
+
/** Ephemeral public key for recipient scanning */
|
|
138
|
+
ephemeralPublicKey: HexString
|
|
139
|
+
/** View tag */
|
|
140
|
+
viewTag: number
|
|
141
|
+
/** Block number of the transfer */
|
|
142
|
+
blockNumber?: number
|
|
143
|
+
/** Gas used */
|
|
144
|
+
gasUsed?: bigint
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
// ─── Scan Types ─────────────────────────────────────────────────────────────
|
|
148
|
+
|
|
149
|
+
/**
|
|
150
|
+
* Parameters for scanning for incoming Ethereum payments
|
|
151
|
+
*/
|
|
152
|
+
export interface EthereumScanParams {
|
|
153
|
+
/** Viewing private key for scanning */
|
|
154
|
+
viewingPrivateKey: HexString
|
|
155
|
+
/** Spending public key for address verification */
|
|
156
|
+
spendingPublicKey: HexString
|
|
157
|
+
/** Network to scan */
|
|
158
|
+
network?: EthereumNetwork
|
|
159
|
+
/** RPC URL (overrides default for network) */
|
|
160
|
+
rpcUrl?: string
|
|
161
|
+
/** Start block number (optional, for incremental scanning) */
|
|
162
|
+
fromBlock?: number
|
|
163
|
+
/** End block number (optional, defaults to 'latest') */
|
|
164
|
+
toBlock?: number | 'latest'
|
|
165
|
+
/** Maximum announcements to process */
|
|
166
|
+
limit?: number
|
|
167
|
+
/** Token contract to filter for (omit for all tokens + ETH) */
|
|
168
|
+
tokenContract?: HexString
|
|
169
|
+
/** Custom announcer contract address (overrides default) */
|
|
170
|
+
announcerAddress?: HexString
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
/**
|
|
174
|
+
* Result of scanning for Ethereum payments
|
|
175
|
+
*/
|
|
176
|
+
export interface EthereumScanResult {
|
|
177
|
+
/** Detected payments */
|
|
178
|
+
payments: EthereumDetectedPayment[]
|
|
179
|
+
/** Last scanned block number */
|
|
180
|
+
lastBlockNumber: number
|
|
181
|
+
/** Total announcements scanned */
|
|
182
|
+
scannedCount: number
|
|
183
|
+
/** Time taken in milliseconds */
|
|
184
|
+
scanTimeMs: number
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
/**
|
|
188
|
+
* A detected Ethereum payment
|
|
189
|
+
*/
|
|
190
|
+
export interface EthereumDetectedPayment {
|
|
191
|
+
/** Stealth address that received the payment */
|
|
192
|
+
stealthAddress: StealthAddress
|
|
193
|
+
/** Ethereum address derived from stealth public key */
|
|
194
|
+
stealthEthAddress: HexString
|
|
195
|
+
/** Amount received (in wei or token smallest units) */
|
|
196
|
+
amount?: bigint
|
|
197
|
+
/** Amount commitment (if hidden) */
|
|
198
|
+
amountCommitment?: HexString
|
|
199
|
+
/** Transaction hash */
|
|
200
|
+
txHash: HexString
|
|
201
|
+
/** Block number */
|
|
202
|
+
blockNumber: number
|
|
203
|
+
/** Token contract (undefined for native ETH) */
|
|
204
|
+
tokenContract?: HexString
|
|
205
|
+
/** Timestamp of the transaction (unix seconds) */
|
|
206
|
+
timestamp?: number
|
|
207
|
+
/** Log index */
|
|
208
|
+
logIndex?: number
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
// ─── Claim Types ────────────────────────────────────────────────────────────
|
|
212
|
+
|
|
213
|
+
/**
|
|
214
|
+
* Parameters for claiming a stealth payment
|
|
215
|
+
*/
|
|
216
|
+
export interface EthereumClaimParams {
|
|
217
|
+
/** Stealth address to claim from */
|
|
218
|
+
stealthAddress: StealthAddress
|
|
219
|
+
/** Ephemeral public key from the announcement */
|
|
220
|
+
ephemeralPublicKey: HexString
|
|
221
|
+
/** Viewing private key */
|
|
222
|
+
viewingPrivateKey: HexString
|
|
223
|
+
/** Spending private key */
|
|
224
|
+
spendingPrivateKey: HexString
|
|
225
|
+
/** Destination address to receive funds */
|
|
226
|
+
destinationAddress: HexString
|
|
227
|
+
/** Network */
|
|
228
|
+
network?: EthereumNetwork
|
|
229
|
+
/** RPC URL (overrides default) */
|
|
230
|
+
rpcUrl?: string
|
|
231
|
+
/** Token contract for ERC-20 claims (omit for native ETH) */
|
|
232
|
+
tokenContract?: HexString
|
|
233
|
+
/** Amount to claim (defaults to full balance) */
|
|
234
|
+
amount?: bigint
|
|
235
|
+
/** Gas limit */
|
|
236
|
+
gasLimit?: bigint
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
/**
|
|
240
|
+
* Built claim transaction ready for signing
|
|
241
|
+
*/
|
|
242
|
+
export interface EthereumClaimBuild {
|
|
243
|
+
/** Stealth Ethereum address */
|
|
244
|
+
stealthEthAddress: HexString
|
|
245
|
+
/** Derived stealth private key */
|
|
246
|
+
stealthPrivateKey: HexString
|
|
247
|
+
/** Destination address */
|
|
248
|
+
destinationAddress: HexString
|
|
249
|
+
/** Amount to claim */
|
|
250
|
+
amount: bigint
|
|
251
|
+
/** Transaction data */
|
|
252
|
+
tx: {
|
|
253
|
+
to: HexString
|
|
254
|
+
value: bigint
|
|
255
|
+
data?: HexString
|
|
256
|
+
}
|
|
257
|
+
/** Estimated gas */
|
|
258
|
+
estimatedGas: bigint
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
/**
|
|
262
|
+
* Result of claiming a stealth payment
|
|
263
|
+
*/
|
|
264
|
+
export interface EthereumClaimResult {
|
|
265
|
+
/** Transaction hash */
|
|
266
|
+
txHash: HexString
|
|
267
|
+
/** Amount claimed */
|
|
268
|
+
amount: bigint
|
|
269
|
+
/** Destination address */
|
|
270
|
+
destinationAddress: HexString
|
|
271
|
+
/** Gas used */
|
|
272
|
+
gasUsed?: bigint
|
|
273
|
+
/** Block number */
|
|
274
|
+
blockNumber?: number
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
// ─── Balance Types ──────────────────────────────────────────────────────────
|
|
278
|
+
|
|
279
|
+
/**
|
|
280
|
+
* Balance query result for a stealth address
|
|
281
|
+
*/
|
|
282
|
+
export interface EthereumStealthBalance {
|
|
283
|
+
/** Stealth Ethereum address */
|
|
284
|
+
address: HexString
|
|
285
|
+
/** Native ETH balance in wei */
|
|
286
|
+
ethBalance: bigint
|
|
287
|
+
/** Token balances (contract address -> balance) */
|
|
288
|
+
tokenBalances: Map<HexString, bigint>
|
|
289
|
+
/** Whether the address has any balance */
|
|
290
|
+
hasBalance: boolean
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
// ─── Viewing Key Types ──────────────────────────────────────────────────────
|
|
294
|
+
|
|
295
|
+
/**
|
|
296
|
+
* Ethereum viewing key export format
|
|
297
|
+
*/
|
|
298
|
+
export interface EthereumViewingKeyExport {
|
|
299
|
+
/** Version of the export format */
|
|
300
|
+
version: 1
|
|
301
|
+
/** Chain identifier */
|
|
302
|
+
chain: 'ethereum'
|
|
303
|
+
/** Network */
|
|
304
|
+
network: EthereumNetwork
|
|
305
|
+
/** Viewing public key (for sharing with auditors) */
|
|
306
|
+
viewingPublicKey: HexString
|
|
307
|
+
/** Spending public key (for address verification) */
|
|
308
|
+
spendingPublicKey: HexString
|
|
309
|
+
/** Label/description */
|
|
310
|
+
label?: string
|
|
311
|
+
/** Creation timestamp (ISO 8601) */
|
|
312
|
+
createdAt: string
|
|
313
|
+
/** Expiration timestamp (ISO 8601, optional) */
|
|
314
|
+
expiresAt?: string
|
|
315
|
+
}
|
|
316
|
+
|
|
317
|
+
/**
|
|
318
|
+
* Viewing key with private component (for recipient)
|
|
319
|
+
*/
|
|
320
|
+
export interface EthereumViewingKeyPair {
|
|
321
|
+
/** Public viewing key (share with auditors) */
|
|
322
|
+
publicKey: HexString
|
|
323
|
+
/** Private viewing key (keep secret) */
|
|
324
|
+
privateKey: HexString
|
|
325
|
+
/** Associated spending public key */
|
|
326
|
+
spendingPublicKey: HexString
|
|
327
|
+
/** Label */
|
|
328
|
+
label?: string
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
// ─── Gas Estimation Types ───────────────────────────────────────────────────
|
|
332
|
+
|
|
333
|
+
/**
|
|
334
|
+
* Gas estimate for Ethereum privacy operations
|
|
335
|
+
*/
|
|
336
|
+
export interface EthereumGasEstimate {
|
|
337
|
+
/** Estimated gas units */
|
|
338
|
+
gasLimit: bigint
|
|
339
|
+
/** Current gas price (for legacy txs) */
|
|
340
|
+
gasPrice?: bigint
|
|
341
|
+
/** Max fee per gas (EIP-1559) */
|
|
342
|
+
maxFeePerGas?: bigint
|
|
343
|
+
/** Max priority fee per gas (EIP-1559) */
|
|
344
|
+
maxPriorityFeePerGas?: bigint
|
|
345
|
+
/** Estimated cost in wei */
|
|
346
|
+
estimatedCost: bigint
|
|
347
|
+
/** Estimated cost in ETH (string for precision) */
|
|
348
|
+
estimatedCostEth: string
|
|
349
|
+
}
|
|
350
|
+
|
|
351
|
+
// ─── Registry Types ─────────────────────────────────────────────────────────
|
|
352
|
+
|
|
353
|
+
/**
|
|
354
|
+
* EIP-5564 stealth meta-address registry entry
|
|
355
|
+
*/
|
|
356
|
+
export interface RegistryEntry {
|
|
357
|
+
/** Registered stealth meta-address */
|
|
358
|
+
metaAddress: StealthMetaAddress
|
|
359
|
+
/** Encoded meta-address string */
|
|
360
|
+
encoded: string
|
|
361
|
+
/** Block number when registered */
|
|
362
|
+
registeredAt: number
|
|
363
|
+
/** Transaction hash of registration */
|
|
364
|
+
txHash: HexString
|
|
365
|
+
}
|
|
366
|
+
|
|
367
|
+
// ─── Event Types ────────────────────────────────────────────────────────────
|
|
368
|
+
|
|
369
|
+
/**
|
|
370
|
+
* Announcement event from EIP-5564 contract
|
|
371
|
+
*/
|
|
372
|
+
export interface AnnouncementEvent {
|
|
373
|
+
/** Event log */
|
|
374
|
+
log: {
|
|
375
|
+
address: HexString
|
|
376
|
+
topics: HexString[]
|
|
377
|
+
data: HexString
|
|
378
|
+
blockNumber: number
|
|
379
|
+
transactionHash: HexString
|
|
380
|
+
logIndex: number
|
|
381
|
+
}
|
|
382
|
+
/** Parsed announcement */
|
|
383
|
+
announcement: EthereumAnnouncement
|
|
384
|
+
}
|
|
385
|
+
|
|
386
|
+
// ─── Commitment Types ───────────────────────────────────────────────────────
|
|
387
|
+
|
|
388
|
+
/**
|
|
389
|
+
* Secp256k1-based Pedersen commitment for Ethereum
|
|
390
|
+
*/
|
|
391
|
+
export interface EthereumPedersenCommitment {
|
|
392
|
+
/** The commitment point C = v*G + r*H (compressed secp256k1, 33 bytes) */
|
|
393
|
+
commitment: HexString
|
|
394
|
+
/** The blinding factor r (32 bytes, secret) */
|
|
395
|
+
blinding: HexString
|
|
396
|
+
}
|
|
397
|
+
|
|
398
|
+
/**
|
|
399
|
+
* ERC-20 token commitment with amount and token info
|
|
400
|
+
*/
|
|
401
|
+
export interface ERC20TokenCommitment extends EthereumPedersenCommitment {
|
|
402
|
+
/** ERC-20 token contract address */
|
|
403
|
+
tokenContract: HexString
|
|
404
|
+
/** Token decimals */
|
|
405
|
+
decimals: number
|
|
406
|
+
/** Original amount in smallest units */
|
|
407
|
+
amountRaw?: bigint
|
|
408
|
+
}
|
|
409
|
+
|
|
410
|
+
// ─── Adapter State Types ────────────────────────────────────────────────────
|
|
411
|
+
|
|
412
|
+
/**
|
|
413
|
+
* State of the Ethereum privacy adapter
|
|
414
|
+
*/
|
|
415
|
+
export interface EthereumPrivacyAdapterState {
|
|
416
|
+
/** Current network */
|
|
417
|
+
network: EthereumNetwork
|
|
418
|
+
/** RPC URL being used */
|
|
419
|
+
rpcUrl: string
|
|
420
|
+
/** Chain ID */
|
|
421
|
+
chainId: number
|
|
422
|
+
/** Default privacy level */
|
|
423
|
+
defaultPrivacyLevel: EthereumPrivacyLevel
|
|
424
|
+
/** Number of scan recipients registered */
|
|
425
|
+
scanRecipientCount: number
|
|
426
|
+
/** Last scanned block */
|
|
427
|
+
lastScannedBlock?: number
|
|
428
|
+
/** Whether connected to RPC */
|
|
429
|
+
isConnected: boolean
|
|
430
|
+
}
|
|
431
|
+
|
|
432
|
+
// ─── Utility Types ──────────────────────────────────────────────────────────
|
|
433
|
+
|
|
434
|
+
/**
|
|
435
|
+
* Scan recipient for payment detection
|
|
436
|
+
*/
|
|
437
|
+
export interface EthereumScanRecipient {
|
|
438
|
+
/** Viewing private key */
|
|
439
|
+
viewingPrivateKey: HexString
|
|
440
|
+
/** Spending public key */
|
|
441
|
+
spendingPublicKey: HexString
|
|
442
|
+
/** Optional label */
|
|
443
|
+
label?: string
|
|
444
|
+
}
|
|
445
|
+
|
|
446
|
+
/**
|
|
447
|
+
* Detected payment with full context
|
|
448
|
+
*/
|
|
449
|
+
export interface EthereumDetectedPaymentResult {
|
|
450
|
+
/** The detected payment */
|
|
451
|
+
payment: EthereumDetectedPayment
|
|
452
|
+
/** The recipient that matched */
|
|
453
|
+
recipient: EthereumScanRecipient
|
|
454
|
+
/** Derived stealth private key (for claiming) */
|
|
455
|
+
stealthPrivateKey: HexString
|
|
456
|
+
}
|