@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.
Files changed (264) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +267 -0
  3. package/dist/{TransportWebUSB-TQ7WZ4LE.mjs → TransportWebUSB-YQMAGJAJ.mjs} +12 -9
  4. package/dist/browser.d.mts +10 -4
  5. package/dist/browser.d.ts +10 -4
  6. package/dist/browser.js +47556 -19603
  7. package/dist/browser.mjs +628 -48
  8. package/dist/chunk-4GRJ5MAW.mjs +152 -0
  9. package/dist/chunk-5D7A3L3W.mjs +717 -0
  10. package/dist/chunk-64AYA5F5.mjs +7834 -0
  11. package/dist/chunk-GMDGB22A.mjs +379 -0
  12. package/dist/chunk-I534WKN7.mjs +328 -0
  13. package/dist/chunk-IBZVA5Y7.mjs +1003 -0
  14. package/dist/chunk-PRRZAWJE.mjs +223 -0
  15. package/dist/{chunk-UJCSKKID.mjs → chunk-XGB3TDIC.mjs} +13 -1
  16. package/dist/{chunk-3M3HNQCW.mjs → chunk-YWGJ77A2.mjs} +28656 -13103
  17. package/dist/{chunk-6WGN57S2.mjs → chunk-Z3K7W5S3.mjs} +48 -0
  18. package/dist/constants-LHAAUC2T.mjs +51 -0
  19. package/dist/dist-2OGQ7FED.mjs +3957 -0
  20. package/dist/dist-IFHPYLDX.mjs +254 -0
  21. package/dist/fulfillment_proof-ANHVPKTB.mjs +21 -0
  22. package/dist/funding_proof-ICFZ5LHY.mjs +21 -0
  23. package/dist/{index-DIBZHOOQ.d.ts → index-DXh2IGkz.d.ts} +21239 -10304
  24. package/dist/{index-8MQz13eJ.d.mts → index-DeE1ZzA4.d.mts} +21239 -10304
  25. package/dist/index.d.mts +9 -3
  26. package/dist/index.d.ts +9 -3
  27. package/dist/index.js +48396 -19623
  28. package/dist/index.mjs +537 -19
  29. package/dist/interface-Bf7w1PLW.d.mts +679 -0
  30. package/dist/interface-Bf7w1PLW.d.ts +679 -0
  31. package/dist/{noir-DKfEzWy9.d.mts → noir-kzbLVTei.d.mts} +31 -21
  32. package/dist/{noir-DKfEzWy9.d.ts → noir-kzbLVTei.d.ts} +31 -21
  33. package/dist/proofs/halo2.d.mts +151 -0
  34. package/dist/proofs/halo2.d.ts +151 -0
  35. package/dist/proofs/halo2.js +350 -0
  36. package/dist/proofs/halo2.mjs +11 -0
  37. package/dist/proofs/kimchi.d.mts +160 -0
  38. package/dist/proofs/kimchi.d.ts +160 -0
  39. package/dist/proofs/kimchi.js +431 -0
  40. package/dist/proofs/kimchi.mjs +13 -0
  41. package/dist/proofs/noir.d.mts +1 -1
  42. package/dist/proofs/noir.d.ts +1 -1
  43. package/dist/proofs/noir.js +74 -18
  44. package/dist/proofs/noir.mjs +84 -24
  45. package/dist/solana-U3MEGU7W.mjs +280 -0
  46. package/dist/validity_proof-3POXLPNY.mjs +21 -0
  47. package/package.json +54 -21
  48. package/src/adapters/index.ts +41 -0
  49. package/src/adapters/jupiter.ts +571 -0
  50. package/src/adapters/near-intents.ts +135 -0
  51. package/src/advisor/advisor.ts +653 -0
  52. package/src/advisor/index.ts +54 -0
  53. package/src/advisor/tools.ts +303 -0
  54. package/src/advisor/types.ts +164 -0
  55. package/src/chains/ethereum/announcement.ts +536 -0
  56. package/src/chains/ethereum/bnb-optimizations.ts +474 -0
  57. package/src/chains/ethereum/commitment.ts +522 -0
  58. package/src/chains/ethereum/constants.ts +462 -0
  59. package/src/chains/ethereum/deployment.ts +596 -0
  60. package/src/chains/ethereum/gas-estimation.ts +538 -0
  61. package/src/chains/ethereum/index.ts +268 -0
  62. package/src/chains/ethereum/optimizations.ts +614 -0
  63. package/src/chains/ethereum/privacy-adapter.ts +855 -0
  64. package/src/chains/ethereum/registry.ts +584 -0
  65. package/src/chains/ethereum/rpc.ts +905 -0
  66. package/src/chains/ethereum/stealth.ts +491 -0
  67. package/src/chains/ethereum/token.ts +790 -0
  68. package/src/chains/ethereum/transfer.ts +637 -0
  69. package/src/chains/ethereum/types.ts +456 -0
  70. package/src/chains/ethereum/viewing-key.ts +455 -0
  71. package/src/chains/near/commitment.ts +608 -0
  72. package/src/chains/near/constants.ts +284 -0
  73. package/src/chains/near/function-call.ts +871 -0
  74. package/src/chains/near/history.ts +654 -0
  75. package/src/chains/near/implicit-account.ts +840 -0
  76. package/src/chains/near/index.ts +393 -0
  77. package/src/chains/near/native-transfer.ts +658 -0
  78. package/src/chains/near/nep141.ts +775 -0
  79. package/src/chains/near/privacy-adapter.ts +889 -0
  80. package/src/chains/near/resolver.ts +971 -0
  81. package/src/chains/near/rpc.ts +1016 -0
  82. package/src/chains/near/stealth.ts +419 -0
  83. package/src/chains/near/types.ts +317 -0
  84. package/src/chains/near/viewing-key.ts +876 -0
  85. package/src/chains/solana/anchor-transfer.ts +386 -0
  86. package/src/chains/solana/commitment.ts +577 -0
  87. package/src/chains/solana/constants.ts +126 -12
  88. package/src/chains/solana/ephemeral-keys.ts +543 -0
  89. package/src/chains/solana/index.ts +252 -1
  90. package/src/chains/solana/key-derivation.ts +418 -0
  91. package/src/chains/solana/kit-compat.ts +334 -0
  92. package/src/chains/solana/optimizations.ts +560 -0
  93. package/src/chains/solana/privacy-adapter.ts +605 -0
  94. package/src/chains/solana/providers/generic.ts +47 -6
  95. package/src/chains/solana/providers/helius-enhanced-types.ts +336 -0
  96. package/src/chains/solana/providers/helius-enhanced.ts +623 -0
  97. package/src/chains/solana/providers/helius.ts +186 -33
  98. package/src/chains/solana/providers/index.ts +31 -0
  99. package/src/chains/solana/providers/interface.ts +61 -18
  100. package/src/chains/solana/providers/quicknode.ts +409 -0
  101. package/src/chains/solana/providers/triton.ts +426 -0
  102. package/src/chains/solana/providers/webhook.ts +338 -67
  103. package/src/chains/solana/rpc-client.ts +1150 -0
  104. package/src/chains/solana/scan.ts +83 -66
  105. package/src/chains/solana/sol-transfer.ts +732 -0
  106. package/src/chains/solana/spl-transfer.ts +886 -0
  107. package/src/chains/solana/stealth-scanner.ts +703 -0
  108. package/src/chains/solana/sunspot-verifier.ts +453 -0
  109. package/src/chains/solana/transaction-builder.ts +755 -0
  110. package/src/chains/solana/transfer.ts +74 -5
  111. package/src/chains/solana/types.ts +57 -6
  112. package/src/chains/solana/utils.ts +110 -0
  113. package/src/chains/solana/viewing-key.ts +807 -0
  114. package/src/compliance/fireblocks.ts +921 -0
  115. package/src/compliance/index.ts +23 -0
  116. package/src/compliance/range-sas.ts +398 -33
  117. package/src/config/endpoints.ts +100 -0
  118. package/src/crypto.ts +11 -8
  119. package/src/errors.ts +82 -0
  120. package/src/evm/erc4337-relayer.ts +830 -0
  121. package/src/evm/index.ts +47 -0
  122. package/src/fees/calculator.ts +396 -0
  123. package/src/fees/index.ts +87 -0
  124. package/src/fees/near-contract.ts +429 -0
  125. package/src/fees/types.ts +268 -0
  126. package/src/index.ts +686 -1
  127. package/src/intent.ts +6 -3
  128. package/src/logger.ts +324 -0
  129. package/src/network/index.ts +80 -0
  130. package/src/network/proxy.ts +691 -0
  131. package/src/optimizations/index.ts +541 -0
  132. package/src/oracle/types.ts +1 -0
  133. package/src/privacy-backends/arcium-types.ts +727 -0
  134. package/src/privacy-backends/arcium.ts +719 -0
  135. package/src/privacy-backends/combined-privacy.ts +866 -0
  136. package/src/privacy-backends/cspl-token.ts +595 -0
  137. package/src/privacy-backends/cspl-types.ts +512 -0
  138. package/src/privacy-backends/cspl.ts +907 -0
  139. package/src/privacy-backends/health.ts +488 -0
  140. package/src/privacy-backends/inco-types.ts +323 -0
  141. package/src/privacy-backends/inco.ts +616 -0
  142. package/src/privacy-backends/index.ts +254 -4
  143. package/src/privacy-backends/interface.ts +649 -6
  144. package/src/privacy-backends/lru-cache.ts +343 -0
  145. package/src/privacy-backends/magicblock.ts +458 -0
  146. package/src/privacy-backends/mock.ts +258 -0
  147. package/src/privacy-backends/privacycash.ts +13 -17
  148. package/src/privacy-backends/private-swap.ts +570 -0
  149. package/src/privacy-backends/rate-limiter.ts +683 -0
  150. package/src/privacy-backends/registry.ts +414 -2
  151. package/src/privacy-backends/router.ts +283 -3
  152. package/src/privacy-backends/shadowwire.ts +449 -0
  153. package/src/privacy-backends/sip-native.ts +3 -0
  154. package/src/privacy-logger.ts +191 -0
  155. package/src/production-safety.ts +373 -0
  156. package/src/proofs/aggregator.ts +1029 -0
  157. package/src/proofs/browser-composer.ts +1150 -0
  158. package/src/proofs/browser.ts +113 -25
  159. package/src/proofs/cache/index.ts +127 -0
  160. package/src/proofs/cache/interface.ts +545 -0
  161. package/src/proofs/cache/key-generator.ts +188 -0
  162. package/src/proofs/cache/lru-cache.ts +481 -0
  163. package/src/proofs/cache/multi-tier-cache.ts +575 -0
  164. package/src/proofs/cache/persistent-cache.ts +788 -0
  165. package/src/proofs/compliance-proof.ts +872 -0
  166. package/src/proofs/composer/base.ts +923 -0
  167. package/src/proofs/composer/index.ts +25 -0
  168. package/src/proofs/composer/interface.ts +518 -0
  169. package/src/proofs/composer/types.ts +383 -0
  170. package/src/proofs/converters/halo2.ts +452 -0
  171. package/src/proofs/converters/index.ts +208 -0
  172. package/src/proofs/converters/interface.ts +363 -0
  173. package/src/proofs/converters/kimchi.ts +462 -0
  174. package/src/proofs/converters/noir.ts +451 -0
  175. package/src/proofs/fallback.ts +888 -0
  176. package/src/proofs/halo2.ts +42 -0
  177. package/src/proofs/index.ts +471 -0
  178. package/src/proofs/interface.ts +13 -0
  179. package/src/proofs/kimchi.ts +42 -0
  180. package/src/proofs/lazy.ts +1004 -0
  181. package/src/proofs/mock.ts +25 -1
  182. package/src/proofs/noir.ts +110 -29
  183. package/src/proofs/orchestrator.ts +960 -0
  184. package/src/proofs/parallel/concurrency.ts +297 -0
  185. package/src/proofs/parallel/dependency-graph.ts +602 -0
  186. package/src/proofs/parallel/executor.ts +420 -0
  187. package/src/proofs/parallel/index.ts +131 -0
  188. package/src/proofs/parallel/interface.ts +685 -0
  189. package/src/proofs/parallel/worker-pool.ts +644 -0
  190. package/src/proofs/providers/halo2.ts +560 -0
  191. package/src/proofs/providers/index.ts +34 -0
  192. package/src/proofs/providers/kimchi.ts +641 -0
  193. package/src/proofs/validator.ts +881 -0
  194. package/src/proofs/verifier.ts +867 -0
  195. package/src/quantum/index.ts +112 -0
  196. package/src/quantum/winternitz-vault.ts +639 -0
  197. package/src/quantum/wots.ts +611 -0
  198. package/src/settlement/backends/direct-chain.ts +1 -0
  199. package/src/settlement/index.ts +9 -0
  200. package/src/settlement/router.ts +732 -46
  201. package/src/solana/index.ts +72 -0
  202. package/src/solana/jito-relayer.ts +687 -0
  203. package/src/solana/noir-verifier-types.ts +430 -0
  204. package/src/solana/noir-verifier.ts +816 -0
  205. package/src/stealth/address-derivation.ts +193 -0
  206. package/src/stealth/ed25519.ts +431 -0
  207. package/src/stealth/index.ts +233 -0
  208. package/src/stealth/meta-address.ts +221 -0
  209. package/src/stealth/secp256k1.ts +368 -0
  210. package/src/stealth/utils.ts +194 -0
  211. package/src/stealth.ts +50 -1504
  212. package/src/sync/index.ts +106 -0
  213. package/src/sync/manager.ts +504 -0
  214. package/src/sync/mock-provider.ts +318 -0
  215. package/src/sync/oblivious.ts +625 -0
  216. package/src/tokens/index.ts +15 -0
  217. package/src/tokens/registry.ts +301 -0
  218. package/src/utils/deprecation.ts +94 -0
  219. package/src/utils/index.ts +9 -0
  220. package/src/wallet/ethereum/index.ts +68 -0
  221. package/src/wallet/ethereum/metamask-privacy.ts +420 -0
  222. package/src/wallet/ethereum/multi-wallet.ts +646 -0
  223. package/src/wallet/ethereum/privacy-adapter.ts +700 -0
  224. package/src/wallet/ethereum/types.ts +3 -1
  225. package/src/wallet/ethereum/walletconnect-adapter.ts +675 -0
  226. package/src/wallet/hardware/index.ts +10 -0
  227. package/src/wallet/hardware/ledger-privacy.ts +414 -0
  228. package/src/wallet/index.ts +71 -0
  229. package/src/wallet/near/adapter.ts +626 -0
  230. package/src/wallet/near/index.ts +86 -0
  231. package/src/wallet/near/meteor-wallet.ts +1153 -0
  232. package/src/wallet/near/my-near-wallet.ts +790 -0
  233. package/src/wallet/near/wallet-selector.ts +702 -0
  234. package/src/wallet/solana/adapter.ts +6 -4
  235. package/src/wallet/solana/index.ts +13 -0
  236. package/src/wallet/solana/privacy-adapter.ts +567 -0
  237. package/src/wallet/sui/types.ts +6 -4
  238. package/src/zcash/rpc-client.ts +13 -6
  239. package/dist/chunk-2XIVXWHA.mjs +0 -1930
  240. package/dist/chunk-3INS3PR5.mjs +0 -884
  241. package/dist/chunk-3OVABDRH.mjs +0 -17096
  242. package/dist/chunk-7RFRWDCW.mjs +0 -1504
  243. package/dist/chunk-DLDWZFYC.mjs +0 -1495
  244. package/dist/chunk-E6SZWREQ.mjs +0 -57
  245. package/dist/chunk-F6F73W35.mjs +0 -16166
  246. package/dist/chunk-G33LB27A.mjs +0 -16166
  247. package/dist/chunk-HGU6HZRC.mjs +0 -231
  248. package/dist/chunk-L2K34JCU.mjs +0 -1496
  249. package/dist/chunk-OFDBEIEK.mjs +0 -16166
  250. package/dist/chunk-SF7YSLF5.mjs +0 -1515
  251. package/dist/chunk-SN4ZDTVW.mjs +0 -16166
  252. package/dist/chunk-WWUSGOXE.mjs +0 -17129
  253. package/dist/constants-VOI7BSLK.mjs +0 -27
  254. package/dist/index-B71aXVzk.d.ts +0 -13264
  255. package/dist/index-BYZbDjal.d.ts +0 -11390
  256. package/dist/index-CHB3KuOB.d.mts +0 -11859
  257. package/dist/index-CzWPI6Le.d.ts +0 -11859
  258. package/dist/index-pOIIuwfV.d.mts +0 -13264
  259. package/dist/index-xbWjohNq.d.mts +0 -11390
  260. package/dist/solana-4O4K45VU.mjs +0 -46
  261. package/dist/solana-5EMCTPTS.mjs +0 -46
  262. package/dist/solana-NDABAZ6P.mjs +0 -56
  263. package/dist/solana-Q4NAVBTS.mjs +0 -46
  264. package/dist/solana-ZYO63LY5.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
+ }