@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,317 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* NEAR Same-Chain Privacy Types
|
|
3
|
+
*
|
|
4
|
+
* Type definitions for NEAR privacy operations including transfers,
|
|
5
|
+
* scanning, claiming, and announcements.
|
|
6
|
+
*
|
|
7
|
+
* @packageDocumentation
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
import type { HexString, StealthAddress } from '@sip-protocol/types'
|
|
11
|
+
import { SIP_MEMO_PREFIX, VIEW_TAG_MIN, VIEW_TAG_MAX } from './constants'
|
|
12
|
+
|
|
13
|
+
// ─── Announcement Types ──────────────────────────────────────────────────────
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* NEAR privacy announcement (included in transaction memo/logs)
|
|
17
|
+
*
|
|
18
|
+
* Contains the information needed for recipients to scan for payments.
|
|
19
|
+
*/
|
|
20
|
+
export interface NEARAnnouncement {
|
|
21
|
+
/** Ephemeral public key (ed25519, 0x-prefixed hex) */
|
|
22
|
+
ephemeralPublicKey: HexString
|
|
23
|
+
/** View tag for efficient filtering (0-255) */
|
|
24
|
+
viewTag: number
|
|
25
|
+
/** Stealth address (ed25519 public key, 0x-prefixed hex) */
|
|
26
|
+
stealthAddress: HexString
|
|
27
|
+
/** NEAR implicit account ID derived from stealth address */
|
|
28
|
+
stealthAccountId: string
|
|
29
|
+
/** Transaction hash where the announcement was made */
|
|
30
|
+
txHash?: string
|
|
31
|
+
/** Block height of the announcement */
|
|
32
|
+
blockHeight?: number
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Parse an announcement from a NEAR memo string
|
|
37
|
+
*
|
|
38
|
+
* Format: SIP:1:<ephemeral_pubkey_hex>:<view_tag_hex>
|
|
39
|
+
*
|
|
40
|
+
* @param memo - The memo string to parse
|
|
41
|
+
* @returns Parsed announcement or null if invalid
|
|
42
|
+
*
|
|
43
|
+
* @example
|
|
44
|
+
* ```typescript
|
|
45
|
+
* const memo = 'SIP:1:1234...abcd:0f'
|
|
46
|
+
* const announcement = parseAnnouncement(memo)
|
|
47
|
+
* if (announcement) {
|
|
48
|
+
* console.log(announcement.ephemeralPublicKey)
|
|
49
|
+
* console.log(announcement.viewTag) // 15
|
|
50
|
+
* }
|
|
51
|
+
* ```
|
|
52
|
+
*/
|
|
53
|
+
export function parseAnnouncement(memo: string): Partial<NEARAnnouncement> | null {
|
|
54
|
+
if (!memo || typeof memo !== 'string') {
|
|
55
|
+
return null
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
// Check prefix
|
|
59
|
+
if (!memo.startsWith(SIP_MEMO_PREFIX)) {
|
|
60
|
+
return null
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
// Parse parts: SIP:1:<ephemeral_pubkey>:<view_tag>
|
|
64
|
+
const content = memo.slice(SIP_MEMO_PREFIX.length)
|
|
65
|
+
const parts = content.split(':')
|
|
66
|
+
|
|
67
|
+
if (parts.length < 2) {
|
|
68
|
+
return null
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
const [ephemeralKeyHex, viewTagHex] = parts
|
|
72
|
+
|
|
73
|
+
// Validate ephemeral key (64 hex chars = 32 bytes)
|
|
74
|
+
if (!ephemeralKeyHex || !/^[0-9a-fA-F]{64}$/.test(ephemeralKeyHex)) {
|
|
75
|
+
return null
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
// Parse view tag (hex byte)
|
|
79
|
+
if (!viewTagHex || !/^[0-9a-fA-F]{1,2}$/.test(viewTagHex)) {
|
|
80
|
+
return null
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
const viewTag = parseInt(viewTagHex, 16)
|
|
84
|
+
if (viewTag < VIEW_TAG_MIN || viewTag > VIEW_TAG_MAX) {
|
|
85
|
+
return null
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
return {
|
|
89
|
+
ephemeralPublicKey: `0x${ephemeralKeyHex.toLowerCase()}` as HexString,
|
|
90
|
+
viewTag,
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
/**
|
|
95
|
+
* Create an announcement memo string
|
|
96
|
+
*
|
|
97
|
+
* @param ephemeralPublicKey - Ephemeral public key (0x-prefixed hex)
|
|
98
|
+
* @param viewTag - View tag (0-255)
|
|
99
|
+
* @returns Encoded memo string
|
|
100
|
+
*
|
|
101
|
+
* @example
|
|
102
|
+
* ```typescript
|
|
103
|
+
* const memo = createAnnouncementMemo(
|
|
104
|
+
* stealthAddress.ephemeralPublicKey,
|
|
105
|
+
* stealthAddress.viewTag
|
|
106
|
+
* )
|
|
107
|
+
* // => 'SIP:1:1234...abcd:0f'
|
|
108
|
+
* ```
|
|
109
|
+
*/
|
|
110
|
+
export function createAnnouncementMemo(
|
|
111
|
+
ephemeralPublicKey: HexString,
|
|
112
|
+
viewTag: number
|
|
113
|
+
): string {
|
|
114
|
+
// Remove 0x prefix
|
|
115
|
+
const ephemeralKeyHex = ephemeralPublicKey.slice(2)
|
|
116
|
+
|
|
117
|
+
// Convert view tag to 2-char hex
|
|
118
|
+
const viewTagHex = viewTag.toString(16).padStart(2, '0')
|
|
119
|
+
|
|
120
|
+
return `${SIP_MEMO_PREFIX}${ephemeralKeyHex}:${viewTagHex}`
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
// ─── Transfer Types ──────────────────────────────────────────────────────────
|
|
124
|
+
|
|
125
|
+
/**
|
|
126
|
+
* Parameters for sending a private NEAR transfer
|
|
127
|
+
*/
|
|
128
|
+
export interface NEARPrivateTransferParams {
|
|
129
|
+
/** NEAR RPC URL or connection object */
|
|
130
|
+
rpcUrl: string
|
|
131
|
+
/** Sender's NEAR account ID */
|
|
132
|
+
senderAccountId: string
|
|
133
|
+
/** Sender's private key for signing */
|
|
134
|
+
senderPrivateKey: string
|
|
135
|
+
/** Recipient's stealth meta-address (or encoded string) */
|
|
136
|
+
recipientMetaAddress: string
|
|
137
|
+
/** Amount in yoctoNEAR (for native NEAR) */
|
|
138
|
+
amount: bigint
|
|
139
|
+
/** Token contract for NEP-141 transfers (omit for native NEAR) */
|
|
140
|
+
tokenContract?: string
|
|
141
|
+
/** Network ID (mainnet, testnet, etc.) */
|
|
142
|
+
networkId?: 'mainnet' | 'testnet' | 'betanet' | 'localnet'
|
|
143
|
+
/** Gas limit for the transaction */
|
|
144
|
+
gas?: bigint
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
/**
|
|
148
|
+
* Result of a private NEAR transfer
|
|
149
|
+
*/
|
|
150
|
+
export interface NEARPrivateTransferResult {
|
|
151
|
+
/** Transaction hash */
|
|
152
|
+
txHash: string
|
|
153
|
+
/** Stealth address that received the funds */
|
|
154
|
+
stealthAddress: StealthAddress
|
|
155
|
+
/** NEAR implicit account ID derived from stealth address */
|
|
156
|
+
stealthAccountId: string
|
|
157
|
+
/** Ephemeral public key for recipient scanning */
|
|
158
|
+
ephemeralPublicKey: HexString
|
|
159
|
+
/** View tag for efficient filtering */
|
|
160
|
+
viewTag: number
|
|
161
|
+
/** Shared secret (for debugging, should be discarded) */
|
|
162
|
+
sharedSecret?: HexString
|
|
163
|
+
/** Block height of the transaction */
|
|
164
|
+
blockHeight?: number
|
|
165
|
+
/** Gas used by the transaction */
|
|
166
|
+
gasUsed?: bigint
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
// ─── Scan Types ──────────────────────────────────────────────────────────────
|
|
170
|
+
|
|
171
|
+
/**
|
|
172
|
+
* Parameters for scanning for incoming NEAR payments
|
|
173
|
+
*/
|
|
174
|
+
export interface NEARScanParams {
|
|
175
|
+
/** NEAR RPC URL */
|
|
176
|
+
rpcUrl: string
|
|
177
|
+
/** Viewing private key for scanning */
|
|
178
|
+
viewingPrivateKey: HexString
|
|
179
|
+
/** Spending public key for address verification */
|
|
180
|
+
spendingPublicKey: HexString
|
|
181
|
+
/** Network ID */
|
|
182
|
+
networkId?: 'mainnet' | 'testnet' | 'betanet' | 'localnet'
|
|
183
|
+
/** Start block height (optional, for incremental scanning) */
|
|
184
|
+
fromBlock?: number
|
|
185
|
+
/** End block height (optional) */
|
|
186
|
+
toBlock?: number
|
|
187
|
+
/** Maximum transactions to scan */
|
|
188
|
+
limit?: number
|
|
189
|
+
/** Token contract to filter for (omit for native NEAR) */
|
|
190
|
+
tokenContract?: string
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
/**
|
|
194
|
+
* Result of scanning for NEAR payments
|
|
195
|
+
*/
|
|
196
|
+
export interface NEARScanResult {
|
|
197
|
+
/** Detected payments */
|
|
198
|
+
payments: NEARDetectedPayment[]
|
|
199
|
+
/** Last scanned block height */
|
|
200
|
+
lastBlockHeight: number
|
|
201
|
+
/** Total announcements scanned */
|
|
202
|
+
scannedCount: number
|
|
203
|
+
/** Time taken in milliseconds */
|
|
204
|
+
scanTimeMs: number
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
/**
|
|
208
|
+
* A detected NEAR payment
|
|
209
|
+
*/
|
|
210
|
+
export interface NEARDetectedPayment {
|
|
211
|
+
/** Stealth address that received the payment */
|
|
212
|
+
stealthAddress: StealthAddress
|
|
213
|
+
/** NEAR implicit account ID */
|
|
214
|
+
stealthAccountId: string
|
|
215
|
+
/** Amount received (in yoctoNEAR or token smallest units) */
|
|
216
|
+
amount: bigint
|
|
217
|
+
/** Transaction hash */
|
|
218
|
+
txHash: string
|
|
219
|
+
/** Block height */
|
|
220
|
+
blockHeight: number
|
|
221
|
+
/** Token contract (undefined for native NEAR) */
|
|
222
|
+
tokenContract?: string
|
|
223
|
+
/** Timestamp of the transaction */
|
|
224
|
+
timestamp?: number
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
// ─── Claim Types ─────────────────────────────────────────────────────────────
|
|
228
|
+
|
|
229
|
+
/**
|
|
230
|
+
* Parameters for claiming a stealth payment
|
|
231
|
+
*/
|
|
232
|
+
export interface NEARClaimParams {
|
|
233
|
+
/** NEAR RPC URL */
|
|
234
|
+
rpcUrl: string
|
|
235
|
+
/** Stealth address to claim from */
|
|
236
|
+
stealthAddress: StealthAddress
|
|
237
|
+
/** Ephemeral public key from the announcement */
|
|
238
|
+
ephemeralPublicKey: HexString
|
|
239
|
+
/** Viewing private key */
|
|
240
|
+
viewingPrivateKey: HexString
|
|
241
|
+
/** Spending private key */
|
|
242
|
+
spendingPrivateKey: HexString
|
|
243
|
+
/** Destination account ID to receive funds */
|
|
244
|
+
destinationAccountId: string
|
|
245
|
+
/** Network ID */
|
|
246
|
+
networkId?: 'mainnet' | 'testnet' | 'betanet' | 'localnet'
|
|
247
|
+
/** Token contract for NEP-141 claims (omit for native NEAR) */
|
|
248
|
+
tokenContract?: string
|
|
249
|
+
/** Amount to claim (defaults to full balance) */
|
|
250
|
+
amount?: bigint
|
|
251
|
+
/** Gas limit */
|
|
252
|
+
gas?: bigint
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
/**
|
|
256
|
+
* Result of claiming a stealth payment
|
|
257
|
+
*/
|
|
258
|
+
export interface NEARClaimResult {
|
|
259
|
+
/** Transaction hash */
|
|
260
|
+
txHash: string
|
|
261
|
+
/** Amount claimed */
|
|
262
|
+
amount: bigint
|
|
263
|
+
/** Destination account ID */
|
|
264
|
+
destinationAccountId: string
|
|
265
|
+
/** Gas used */
|
|
266
|
+
gasUsed?: bigint
|
|
267
|
+
/** Block height */
|
|
268
|
+
blockHeight?: number
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
// ─── Balance Types ───────────────────────────────────────────────────────────
|
|
272
|
+
|
|
273
|
+
/**
|
|
274
|
+
* Balance query result for a stealth account
|
|
275
|
+
*/
|
|
276
|
+
export interface NEARStealthBalance {
|
|
277
|
+
/** NEAR implicit account ID */
|
|
278
|
+
accountId: string
|
|
279
|
+
/** Native NEAR balance in yoctoNEAR */
|
|
280
|
+
nearBalance: bigint
|
|
281
|
+
/** Token balances (contract -> balance) */
|
|
282
|
+
tokenBalances: Map<string, bigint>
|
|
283
|
+
/** Whether the account exists on-chain */
|
|
284
|
+
exists: boolean
|
|
285
|
+
/** Storage used by the account */
|
|
286
|
+
storageUsed?: bigint
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
// ─── RPC Types ───────────────────────────────────────────────────────────────
|
|
290
|
+
|
|
291
|
+
/**
|
|
292
|
+
* NEAR RPC error response
|
|
293
|
+
*/
|
|
294
|
+
export interface NEARRpcError {
|
|
295
|
+
/** Error code */
|
|
296
|
+
code: number
|
|
297
|
+
/** Error message */
|
|
298
|
+
message: string
|
|
299
|
+
/** Error data */
|
|
300
|
+
data?: unknown
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
/**
|
|
304
|
+
* NEAR transaction outcome
|
|
305
|
+
*/
|
|
306
|
+
export interface NEARTransactionOutcome {
|
|
307
|
+
/** Transaction hash */
|
|
308
|
+
transactionHash: string
|
|
309
|
+
/** Block height */
|
|
310
|
+
blockHeight: number
|
|
311
|
+
/** Status */
|
|
312
|
+
status: 'SUCCESS' | 'FAILURE'
|
|
313
|
+
/** Gas burnt */
|
|
314
|
+
gasBurnt: bigint
|
|
315
|
+
/** Logs */
|
|
316
|
+
logs: string[]
|
|
317
|
+
}
|