@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.
Files changed (262) 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 +48874 -18336
  7. package/dist/browser.mjs +674 -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-YWGJ77A2.mjs +33806 -0
  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-DXh2IGkz.d.ts +24681 -0
  24. package/dist/index-DeE1ZzA4.d.mts +24681 -0
  25. package/dist/index.d.mts +9 -3
  26. package/dist/index.d.ts +9 -3
  27. package/dist/index.js +48676 -17318
  28. package/dist/index.mjs +583 -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 +276 -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 +201 -0
  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 +402 -0
  98. package/src/chains/solana/providers/index.ts +85 -0
  99. package/src/chains/solana/providers/interface.ts +221 -0
  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 +790 -0
  103. package/src/chains/solana/rpc-client.ts +1150 -0
  104. package/src/chains/solana/scan.ts +170 -73
  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 +77 -7
  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 +37 -0
  116. package/src/compliance/range-sas.ts +956 -0
  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 +785 -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 +336 -0
  143. package/src/privacy-backends/interface.ts +906 -0
  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-types.ts +278 -0
  148. package/src/privacy-backends/privacycash.ts +456 -0
  149. package/src/privacy-backends/private-swap.ts +570 -0
  150. package/src/privacy-backends/rate-limiter.ts +683 -0
  151. package/src/privacy-backends/registry.ts +690 -0
  152. package/src/privacy-backends/router.ts +626 -0
  153. package/src/privacy-backends/shadowwire.ts +449 -0
  154. package/src/privacy-backends/sip-native.ts +256 -0
  155. package/src/privacy-logger.ts +191 -0
  156. package/src/production-safety.ts +373 -0
  157. package/src/proofs/aggregator.ts +1029 -0
  158. package/src/proofs/browser-composer.ts +1150 -0
  159. package/src/proofs/browser.ts +113 -25
  160. package/src/proofs/cache/index.ts +127 -0
  161. package/src/proofs/cache/interface.ts +545 -0
  162. package/src/proofs/cache/key-generator.ts +188 -0
  163. package/src/proofs/cache/lru-cache.ts +481 -0
  164. package/src/proofs/cache/multi-tier-cache.ts +575 -0
  165. package/src/proofs/cache/persistent-cache.ts +788 -0
  166. package/src/proofs/compliance-proof.ts +872 -0
  167. package/src/proofs/composer/base.ts +923 -0
  168. package/src/proofs/composer/index.ts +25 -0
  169. package/src/proofs/composer/interface.ts +518 -0
  170. package/src/proofs/composer/types.ts +383 -0
  171. package/src/proofs/converters/halo2.ts +452 -0
  172. package/src/proofs/converters/index.ts +208 -0
  173. package/src/proofs/converters/interface.ts +363 -0
  174. package/src/proofs/converters/kimchi.ts +462 -0
  175. package/src/proofs/converters/noir.ts +451 -0
  176. package/src/proofs/fallback.ts +888 -0
  177. package/src/proofs/halo2.ts +42 -0
  178. package/src/proofs/index.ts +471 -0
  179. package/src/proofs/interface.ts +13 -0
  180. package/src/proofs/kimchi.ts +42 -0
  181. package/src/proofs/lazy.ts +1004 -0
  182. package/src/proofs/mock.ts +25 -1
  183. package/src/proofs/noir.ts +111 -30
  184. package/src/proofs/orchestrator.ts +960 -0
  185. package/src/proofs/parallel/concurrency.ts +297 -0
  186. package/src/proofs/parallel/dependency-graph.ts +602 -0
  187. package/src/proofs/parallel/executor.ts +420 -0
  188. package/src/proofs/parallel/index.ts +131 -0
  189. package/src/proofs/parallel/interface.ts +685 -0
  190. package/src/proofs/parallel/worker-pool.ts +644 -0
  191. package/src/proofs/providers/halo2.ts +560 -0
  192. package/src/proofs/providers/index.ts +34 -0
  193. package/src/proofs/providers/kimchi.ts +641 -0
  194. package/src/proofs/validator.ts +881 -0
  195. package/src/proofs/verifier.ts +867 -0
  196. package/src/quantum/index.ts +112 -0
  197. package/src/quantum/winternitz-vault.ts +639 -0
  198. package/src/quantum/wots.ts +611 -0
  199. package/src/settlement/backends/direct-chain.ts +1 -0
  200. package/src/settlement/index.ts +9 -0
  201. package/src/settlement/router.ts +732 -46
  202. package/src/solana/index.ts +72 -0
  203. package/src/solana/jito-relayer.ts +687 -0
  204. package/src/solana/noir-verifier-types.ts +430 -0
  205. package/src/solana/noir-verifier.ts +816 -0
  206. package/src/stealth/address-derivation.ts +193 -0
  207. package/src/stealth/ed25519.ts +431 -0
  208. package/src/stealth/index.ts +233 -0
  209. package/src/stealth/meta-address.ts +221 -0
  210. package/src/stealth/secp256k1.ts +368 -0
  211. package/src/stealth/utils.ts +194 -0
  212. package/src/stealth.ts +50 -1504
  213. package/src/surveillance/algorithms/address-reuse.ts +143 -0
  214. package/src/surveillance/algorithms/cluster.ts +247 -0
  215. package/src/surveillance/algorithms/exchange.ts +295 -0
  216. package/src/surveillance/algorithms/temporal.ts +337 -0
  217. package/src/surveillance/analyzer.ts +442 -0
  218. package/src/surveillance/index.ts +64 -0
  219. package/src/surveillance/scoring.ts +372 -0
  220. package/src/surveillance/types.ts +264 -0
  221. package/src/sync/index.ts +106 -0
  222. package/src/sync/manager.ts +504 -0
  223. package/src/sync/mock-provider.ts +318 -0
  224. package/src/sync/oblivious.ts +625 -0
  225. package/src/tokens/index.ts +15 -0
  226. package/src/tokens/registry.ts +301 -0
  227. package/src/utils/deprecation.ts +94 -0
  228. package/src/utils/index.ts +9 -0
  229. package/src/wallet/ethereum/index.ts +68 -0
  230. package/src/wallet/ethereum/metamask-privacy.ts +420 -0
  231. package/src/wallet/ethereum/multi-wallet.ts +646 -0
  232. package/src/wallet/ethereum/privacy-adapter.ts +700 -0
  233. package/src/wallet/ethereum/types.ts +3 -1
  234. package/src/wallet/ethereum/walletconnect-adapter.ts +675 -0
  235. package/src/wallet/hardware/index.ts +10 -0
  236. package/src/wallet/hardware/ledger-privacy.ts +414 -0
  237. package/src/wallet/index.ts +71 -0
  238. package/src/wallet/near/adapter.ts +626 -0
  239. package/src/wallet/near/index.ts +86 -0
  240. package/src/wallet/near/meteor-wallet.ts +1153 -0
  241. package/src/wallet/near/my-near-wallet.ts +790 -0
  242. package/src/wallet/near/wallet-selector.ts +702 -0
  243. package/src/wallet/solana/adapter.ts +6 -4
  244. package/src/wallet/solana/index.ts +13 -0
  245. package/src/wallet/solana/privacy-adapter.ts +567 -0
  246. package/src/wallet/sui/types.ts +6 -4
  247. package/src/zcash/rpc-client.ts +13 -6
  248. package/dist/chunk-3INS3PR5.mjs +0 -884
  249. package/dist/chunk-3OVABDRH.mjs +0 -17096
  250. package/dist/chunk-DLDWZFYC.mjs +0 -1495
  251. package/dist/chunk-E6SZWREQ.mjs +0 -57
  252. package/dist/chunk-G33LB27A.mjs +0 -16166
  253. package/dist/chunk-HGU6HZRC.mjs +0 -231
  254. package/dist/chunk-L2K34JCU.mjs +0 -1496
  255. package/dist/chunk-SN4ZDTVW.mjs +0 -16166
  256. package/dist/constants-VOI7BSLK.mjs +0 -27
  257. package/dist/index-BYZbDjal.d.ts +0 -11390
  258. package/dist/index-CHB3KuOB.d.mts +0 -11859
  259. package/dist/index-CzWPI6Le.d.ts +0 -11859
  260. package/dist/index-xbWjohNq.d.mts +0 -11390
  261. package/dist/solana-5EMCTPTS.mjs +0 -46
  262. package/dist/solana-Q4NAVBTS.mjs +0 -46
@@ -0,0 +1,100 @@
1
+ /**
2
+ * Centralized RPC endpoint configuration
3
+ *
4
+ * All localhost URLs are configurable via environment variables.
5
+ * This allows Docker, Kubernetes, and CI environments to override defaults.
6
+ *
7
+ * @module config/endpoints
8
+ */
9
+
10
+ /**
11
+ * Get environment variable or return default
12
+ * Works in both Node.js and browser environments
13
+ */
14
+ function getEnvVar(name: string, defaultValue: string): string {
15
+ if (typeof process !== 'undefined' && process.env) {
16
+ return process.env[name] || defaultValue
17
+ }
18
+ return defaultValue
19
+ }
20
+
21
+ /**
22
+ * Solana RPC endpoints
23
+ */
24
+ export const SOLANA_RPC_ENDPOINTS = {
25
+ localnet: getEnvVar('SOLANA_LOCALNET_RPC', 'http://localhost:8899'),
26
+ devnet: getEnvVar('SOLANA_DEVNET_RPC', 'https://api.devnet.solana.com'),
27
+ testnet: getEnvVar('SOLANA_TESTNET_RPC', 'https://api.testnet.solana.com'),
28
+ mainnet: getEnvVar('SOLANA_MAINNET_RPC', 'https://api.mainnet-beta.solana.com'),
29
+ } as const
30
+
31
+ /**
32
+ * Solana explorer endpoints
33
+ */
34
+ export const SOLANA_EXPLORER_ENDPOINTS = {
35
+ localnet: getEnvVar('SOLANA_LOCALNET_EXPLORER', 'http://localhost:3000'),
36
+ devnet: getEnvVar('SOLANA_DEVNET_EXPLORER', 'https://explorer.solana.com'),
37
+ testnet: getEnvVar('SOLANA_TESTNET_EXPLORER', 'https://explorer.solana.com'),
38
+ mainnet: getEnvVar('SOLANA_MAINNET_EXPLORER', 'https://explorer.solana.com'),
39
+ } as const
40
+
41
+ /**
42
+ * Ethereum RPC endpoints
43
+ */
44
+ export const ETH_RPC_ENDPOINTS = {
45
+ localnet: getEnvVar('ETH_LOCALNET_RPC', 'http://localhost:8545'),
46
+ goerli: getEnvVar('ETH_GOERLI_RPC', 'https://rpc.ankr.com/eth_goerli'),
47
+ sepolia: getEnvVar('ETH_SEPOLIA_RPC', 'https://rpc.ankr.com/eth_sepolia'),
48
+ mainnet: getEnvVar('ETH_MAINNET_RPC', 'https://rpc.ankr.com/eth'),
49
+ } as const
50
+
51
+ /**
52
+ * Sui RPC endpoints
53
+ */
54
+ export const SUI_RPC_ENDPOINTS = {
55
+ localnet: getEnvVar('SUI_LOCALNET_RPC', 'http://localhost:9000'),
56
+ devnet: getEnvVar('SUI_DEVNET_RPC', 'https://fullnode.devnet.sui.io:443'),
57
+ testnet: getEnvVar('SUI_TESTNET_RPC', 'https://fullnode.testnet.sui.io:443'),
58
+ mainnet: getEnvVar('SUI_MAINNET_RPC', 'https://fullnode.mainnet.sui.io:443'),
59
+ } as const
60
+
61
+ /**
62
+ * Zcash RPC configuration
63
+ */
64
+ export interface ZcashRpcConfig {
65
+ host: string
66
+ port: number
67
+ }
68
+
69
+ export const ZCASH_RPC_CONFIG: ZcashRpcConfig = {
70
+ host: getEnvVar('ZCASH_RPC_HOST', '127.0.0.1'),
71
+ port: parseInt(getEnvVar('ZCASH_RPC_PORT', '8232'), 10),
72
+ }
73
+
74
+ /**
75
+ * Get all configurable endpoint environment variables
76
+ * Useful for documentation and validation
77
+ */
78
+ export function getEndpointEnvVars(): Record<string, { envVar: string; default: string }> {
79
+ return {
80
+ // Solana
81
+ 'solana.localnet': { envVar: 'SOLANA_LOCALNET_RPC', default: 'http://localhost:8899' },
82
+ 'solana.devnet': { envVar: 'SOLANA_DEVNET_RPC', default: 'https://api.devnet.solana.com' },
83
+ 'solana.testnet': { envVar: 'SOLANA_TESTNET_RPC', default: 'https://api.testnet.solana.com' },
84
+ 'solana.mainnet': { envVar: 'SOLANA_MAINNET_RPC', default: 'https://api.mainnet-beta.solana.com' },
85
+ 'solana.localnet.explorer': { envVar: 'SOLANA_LOCALNET_EXPLORER', default: 'http://localhost:3000' },
86
+ // Ethereum
87
+ 'ethereum.localnet': { envVar: 'ETH_LOCALNET_RPC', default: 'http://localhost:8545' },
88
+ 'ethereum.goerli': { envVar: 'ETH_GOERLI_RPC', default: 'https://rpc.ankr.com/eth_goerli' },
89
+ 'ethereum.sepolia': { envVar: 'ETH_SEPOLIA_RPC', default: 'https://rpc.ankr.com/eth_sepolia' },
90
+ 'ethereum.mainnet': { envVar: 'ETH_MAINNET_RPC', default: 'https://rpc.ankr.com/eth' },
91
+ // Sui
92
+ 'sui.localnet': { envVar: 'SUI_LOCALNET_RPC', default: 'http://localhost:9000' },
93
+ 'sui.devnet': { envVar: 'SUI_DEVNET_RPC', default: 'https://fullnode.devnet.sui.io:443' },
94
+ 'sui.testnet': { envVar: 'SUI_TESTNET_RPC', default: 'https://fullnode.testnet.sui.io:443' },
95
+ 'sui.mainnet': { envVar: 'SUI_MAINNET_RPC', default: 'https://fullnode.mainnet.sui.io:443' },
96
+ // Zcash
97
+ 'zcash.host': { envVar: 'ZCASH_RPC_HOST', default: '127.0.0.1' },
98
+ 'zcash.port': { envVar: 'ZCASH_RPC_PORT', default: '8232' },
99
+ }
100
+ }
package/src/crypto.ts CHANGED
@@ -22,6 +22,7 @@ import { bytesToHex, randomBytes } from '@noble/hashes/utils'
22
22
  import type { Commitment, HexString, Hash } from '@sip-protocol/types'
23
23
  import { commit, verifyOpening } from './commitment'
24
24
  import { ValidationError, ErrorCode } from './errors'
25
+ import { warnOnce, deprecationMessage } from './utils'
25
26
 
26
27
  /**
27
28
  * Create a Pedersen commitment to a value
@@ -37,10 +38,11 @@ export function createCommitment(
37
38
  value: bigint,
38
39
  blindingFactor?: Uint8Array,
39
40
  ): Commitment {
40
- console.warn(
41
- 'createCommitment() is deprecated and will be removed in v0.2.0. ' +
42
- 'Use commit() from "./commitment" instead.'
43
- )
41
+ warnOnce('createCommitment', deprecationMessage(
42
+ 'createCommitment()',
43
+ 'commit() from "./commitment"',
44
+ '2026-06-01'
45
+ ))
44
46
 
45
47
  const { commitment, blinding } = commit(value, blindingFactor)
46
48
 
@@ -59,10 +61,11 @@ export function verifyCommitment(
59
61
  commitment: Commitment,
60
62
  expectedValue: bigint,
61
63
  ): boolean {
62
- console.warn(
63
- 'verifyCommitment() is deprecated and will be removed in v0.2.0. ' +
64
- 'Use verifyOpening() from "./commitment" instead.'
65
- )
64
+ warnOnce('verifyCommitment', deprecationMessage(
65
+ 'verifyCommitment()',
66
+ 'verifyOpening() from "./commitment"',
67
+ '2026-06-01'
68
+ ))
66
69
 
67
70
  if (!commitment.blindingFactor) {
68
71
  throw new ValidationError(
package/src/errors.ts CHANGED
@@ -31,6 +31,8 @@ export enum ErrorCode {
31
31
  INVALID_ADDRESS = 'SIP_2007',
32
32
  MISSING_REQUIRED = 'SIP_2008',
33
33
  OUT_OF_RANGE = 'SIP_2009',
34
+ TOKEN_NOT_FOUND = 'SIP_2010',
35
+ UNSUPPORTED_CHAIN = 'SIP_2011',
34
36
 
35
37
  // Cryptographic errors (3xxx)
36
38
  CRYPTO_FAILED = 'SIP_3000',
@@ -81,6 +83,25 @@ export enum ErrorCode {
81
83
  WALLET_CONNECTION_FAILED = 'SIP_7002',
82
84
  WALLET_SIGNING_FAILED = 'SIP_7003',
83
85
  WALLET_TRANSACTION_FAILED = 'SIP_7004',
86
+
87
+ // Security errors (8xxx)
88
+ SECURITY_ERROR = 'SIP_8000',
89
+ INVALID_SIGNATURE = 'SIP_8001',
90
+ INVALID_AUTH = 'SIP_8002',
91
+ UNAUTHORIZED = 'SIP_8003',
92
+ RATE_LIMIT_EXCEEDED = 'SIP_8004',
93
+
94
+ // Privacy backend errors (9xxx)
95
+ PRIVACY_BACKEND_ERROR = 'SIP_9000',
96
+ ARCIUM_ERROR = 'SIP_9001',
97
+ ARCIUM_INVALID_NETWORK = 'SIP_9002',
98
+ ARCIUM_COMPUTATION_FAILED = 'SIP_9003',
99
+ ARCIUM_COMPUTATION_TIMEOUT = 'SIP_9004',
100
+ ARCIUM_CLUSTER_UNAVAILABLE = 'SIP_9005',
101
+ ARCIUM_CIRCUIT_NOT_FOUND = 'SIP_9006',
102
+ INCO_ERROR = 'SIP_9010',
103
+ MAGICBLOCK_ERROR = 'SIP_9020',
104
+ SHADOWWIRE_ERROR = 'SIP_9030',
84
105
  }
85
106
 
86
107
  // ─── Serialized Error Type ───────────────────────────────────────────────────
@@ -423,6 +444,60 @@ export class NetworkError extends SIPError {
423
444
  }
424
445
  }
425
446
 
447
+ // ─── Security Error ──────────────────────────────────────────────────────────
448
+
449
+ /**
450
+ * Error thrown when security/authentication checks fail
451
+ *
452
+ * Used for signature verification, authorization, and rate limiting.
453
+ *
454
+ * @example
455
+ * ```typescript
456
+ * throw new SecurityError('Invalid webhook signature', 'INVALID_SIGNATURE')
457
+ *
458
+ * // With context
459
+ * throw new SecurityError('Rate limit exceeded', 'RATE_LIMIT_EXCEEDED', {
460
+ * context: { limit: 100, window: '1m' }
461
+ * })
462
+ * ```
463
+ */
464
+ export class SecurityError extends SIPError {
465
+ /** Security error type for programmatic handling */
466
+ readonly securityType: string
467
+
468
+ constructor(
469
+ message: string,
470
+ securityType: string = 'SECURITY_ERROR',
471
+ options?: {
472
+ cause?: Error
473
+ context?: Record<string, unknown>
474
+ }
475
+ ) {
476
+ // Map security type to error code
477
+ let code: ErrorCode
478
+ switch (securityType) {
479
+ case 'INVALID_SIGNATURE':
480
+ code = ErrorCode.INVALID_SIGNATURE
481
+ break
482
+ case 'INVALID_AUTH':
483
+ code = ErrorCode.INVALID_AUTH
484
+ break
485
+ case 'UNAUTHORIZED':
486
+ code = ErrorCode.UNAUTHORIZED
487
+ break
488
+ case 'RATE_LIMIT_EXCEEDED':
489
+ code = ErrorCode.RATE_LIMIT_EXCEEDED
490
+ break
491
+ default:
492
+ code = ErrorCode.SECURITY_ERROR
493
+ }
494
+
495
+ super(message, code, options)
496
+ this.name = 'SecurityError'
497
+ this.securityType = securityType
498
+ }
499
+ }
500
+
426
501
  // ─── Error Utilities ─────────────────────────────────────────────────────────
427
502
 
428
503
  /**
@@ -432,6 +507,13 @@ export function isSIPError(error: unknown): error is SIPError {
432
507
  return error instanceof SIPError
433
508
  }
434
509
 
510
+ /**
511
+ * Check if an error is a security error
512
+ */
513
+ export function isSecurityError(error: unknown): error is SecurityError {
514
+ return error instanceof SecurityError
515
+ }
516
+
435
517
  /**
436
518
  * Check if an error has a specific error code
437
519
  */