@oobe-protocol-labs/synapse-client-sdk 1.0.0-beta

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 (460) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +1393 -0
  3. package/dist/cjs/advanced/circuit-breaker.d.ts +111 -0
  4. package/dist/cjs/advanced/circuit-breaker.d.ts.map +1 -0
  5. package/dist/cjs/advanced/circuit-breaker.js +278 -0
  6. package/dist/cjs/advanced/circuit-breaker.js.map +1 -0
  7. package/dist/cjs/advanced/index.d.ts +8 -0
  8. package/dist/cjs/advanced/index.d.ts.map +1 -0
  9. package/dist/cjs/advanced/index.js +13 -0
  10. package/dist/cjs/advanced/index.js.map +1 -0
  11. package/dist/cjs/advanced/load-balancer.d.ts +114 -0
  12. package/dist/cjs/advanced/load-balancer.d.ts.map +1 -0
  13. package/dist/cjs/advanced/load-balancer.js +354 -0
  14. package/dist/cjs/advanced/load-balancer.js.map +1 -0
  15. package/dist/cjs/advanced/smart-caching.d.ts +113 -0
  16. package/dist/cjs/advanced/smart-caching.d.ts.map +1 -0
  17. package/dist/cjs/advanced/smart-caching.js +461 -0
  18. package/dist/cjs/advanced/smart-caching.js.map +1 -0
  19. package/dist/cjs/advanced/types.d.ts +228 -0
  20. package/dist/cjs/advanced/types.d.ts.map +1 -0
  21. package/dist/cjs/advanced/types.js +7 -0
  22. package/dist/cjs/advanced/types.js.map +1 -0
  23. package/dist/cjs/ai/index.d.ts +15 -0
  24. package/dist/cjs/ai/index.d.ts.map +1 -0
  25. package/dist/cjs/ai/index.js +20 -0
  26. package/dist/cjs/ai/index.js.map +1 -0
  27. package/dist/cjs/ai/merkle-operation.d.ts +245 -0
  28. package/dist/cjs/ai/merkle-operation.d.ts.map +1 -0
  29. package/dist/cjs/ai/merkle-operation.js +522 -0
  30. package/dist/cjs/ai/merkle-operation.js.map +1 -0
  31. package/dist/cjs/ai/pda-manager.d.ts +134 -0
  32. package/dist/cjs/ai/pda-manager.d.ts.map +1 -0
  33. package/dist/cjs/ai/pda-manager.js +250 -0
  34. package/dist/cjs/ai/pda-manager.js.map +1 -0
  35. package/dist/cjs/ai/types.ai.d.ts +172 -0
  36. package/dist/cjs/ai/types.ai.d.ts.map +1 -0
  37. package/dist/cjs/ai/types.ai.js +14 -0
  38. package/dist/cjs/ai/types.ai.js.map +1 -0
  39. package/dist/cjs/ai/zero-combine-fetcher.d.ts +171 -0
  40. package/dist/cjs/ai/zero-combine-fetcher.d.ts.map +1 -0
  41. package/dist/cjs/ai/zero-combine-fetcher.js +412 -0
  42. package/dist/cjs/ai/zero-combine-fetcher.js.map +1 -0
  43. package/dist/cjs/client.d.ts +83 -0
  44. package/dist/cjs/client.d.ts.map +1 -0
  45. package/dist/cjs/client.js +287 -0
  46. package/dist/cjs/client.js.map +1 -0
  47. package/dist/cjs/defi/advanced-features.d.ts +207 -0
  48. package/dist/cjs/defi/advanced-features.d.ts.map +1 -0
  49. package/dist/cjs/defi/advanced-features.js +382 -0
  50. package/dist/cjs/defi/advanced-features.js.map +1 -0
  51. package/dist/cjs/defi/index.d.ts +29 -0
  52. package/dist/cjs/defi/index.d.ts.map +1 -0
  53. package/dist/cjs/defi/index.js +50 -0
  54. package/dist/cjs/defi/index.js.map +1 -0
  55. package/dist/cjs/defi/jito.d.ts +118 -0
  56. package/dist/cjs/defi/jito.d.ts.map +1 -0
  57. package/dist/cjs/defi/jito.js +291 -0
  58. package/dist/cjs/defi/jito.js.map +1 -0
  59. package/dist/cjs/defi/jupiter.d.ts +143 -0
  60. package/dist/cjs/defi/jupiter.d.ts.map +1 -0
  61. package/dist/cjs/defi/jupiter.js +219 -0
  62. package/dist/cjs/defi/jupiter.js.map +1 -0
  63. package/dist/cjs/defi/price-feed.d.ts +63 -0
  64. package/dist/cjs/defi/price-feed.d.ts.map +1 -0
  65. package/dist/cjs/defi/price-feed.js +153 -0
  66. package/dist/cjs/defi/price-feed.js.map +1 -0
  67. package/dist/cjs/defi/token-data.d.ts +83 -0
  68. package/dist/cjs/defi/token-data.d.ts.map +1 -0
  69. package/dist/cjs/defi/token-data.js +205 -0
  70. package/dist/cjs/defi/token-data.js.map +1 -0
  71. package/dist/cjs/defi/unstable-features.d.ts +207 -0
  72. package/dist/cjs/defi/unstable-features.d.ts.map +1 -0
  73. package/dist/cjs/defi/unstable-features.js +382 -0
  74. package/dist/cjs/defi/unstable-features.js.map +1 -0
  75. package/dist/cjs/defi/utils.d.ts +265 -0
  76. package/dist/cjs/defi/utils.d.ts.map +1 -0
  77. package/dist/cjs/defi/utils.js +619 -0
  78. package/dist/cjs/defi/utils.js.map +1 -0
  79. package/dist/cjs/index.d.ts +31 -0
  80. package/dist/cjs/index.d.ts.map +1 -0
  81. package/dist/cjs/index.js +71 -0
  82. package/dist/cjs/index.js.map +1 -0
  83. package/dist/cjs/methods/solana-rpc.d.ts +362 -0
  84. package/dist/cjs/methods/solana-rpc.d.ts.map +1 -0
  85. package/dist/cjs/methods/solana-rpc.js +584 -0
  86. package/dist/cjs/methods/solana-rpc.js.map +1 -0
  87. package/dist/cjs/nft/advanced-features.d.ts +205 -0
  88. package/dist/cjs/nft/advanced-features.d.ts.map +1 -0
  89. package/dist/cjs/nft/advanced-features.js +529 -0
  90. package/dist/cjs/nft/advanced-features.js.map +1 -0
  91. package/dist/cjs/nft/clients/index.d.ts +8 -0
  92. package/dist/cjs/nft/clients/index.d.ts.map +1 -0
  93. package/dist/cjs/nft/clients/index.js +14 -0
  94. package/dist/cjs/nft/clients/index.js.map +1 -0
  95. package/dist/cjs/nft/clients/magic-eden-client.d.ts +101 -0
  96. package/dist/cjs/nft/clients/magic-eden-client.d.ts.map +1 -0
  97. package/dist/cjs/nft/clients/magic-eden-client.js +263 -0
  98. package/dist/cjs/nft/clients/magic-eden-client.js.map +1 -0
  99. package/dist/cjs/nft/clients/metaplex-onchain-client.d.ts +154 -0
  100. package/dist/cjs/nft/clients/metaplex-onchain-client.d.ts.map +1 -0
  101. package/dist/cjs/nft/clients/metaplex-onchain-client.js +408 -0
  102. package/dist/cjs/nft/clients/metaplex-onchain-client.js.map +1 -0
  103. package/dist/cjs/nft/clients/tensor-client.d.ts +79 -0
  104. package/dist/cjs/nft/clients/tensor-client.d.ts.map +1 -0
  105. package/dist/cjs/nft/clients/tensor-client.js +222 -0
  106. package/dist/cjs/nft/clients/tensor-client.js.map +1 -0
  107. package/dist/cjs/nft/index.d.ts +13 -0
  108. package/dist/cjs/nft/index.d.ts.map +1 -0
  109. package/dist/cjs/nft/index.js +37 -0
  110. package/dist/cjs/nft/index.js.map +1 -0
  111. package/dist/cjs/nft/types.nft.d.ts +342 -0
  112. package/dist/cjs/nft/types.nft.d.ts.map +1 -0
  113. package/dist/cjs/nft/types.nft.js +3 -0
  114. package/dist/cjs/nft/types.nft.js.map +1 -0
  115. package/dist/cjs/nft/utils.d.ts +46 -0
  116. package/dist/cjs/nft/utils.d.ts.map +1 -0
  117. package/dist/cjs/nft/utils.js +281 -0
  118. package/dist/cjs/nft/utils.js.map +1 -0
  119. package/dist/cjs/types.d.ts +525 -0
  120. package/dist/cjs/types.d.ts.map +1 -0
  121. package/dist/cjs/types.js +192 -0
  122. package/dist/cjs/types.js.map +1 -0
  123. package/dist/cjs/utils/constant.d.ts +8 -0
  124. package/dist/cjs/utils/constant.d.ts.map +1 -0
  125. package/dist/cjs/utils/constant.js +12 -0
  126. package/dist/cjs/utils/constant.js.map +1 -0
  127. package/dist/cjs/utils/helpers.d.ts +92 -0
  128. package/dist/cjs/utils/helpers.d.ts.map +1 -0
  129. package/dist/cjs/utils/helpers.js +248 -0
  130. package/dist/cjs/utils/helpers.js.map +1 -0
  131. package/dist/cjs/websocket/client.d.ts +182 -0
  132. package/dist/cjs/websocket/client.d.ts.map +1 -0
  133. package/dist/cjs/websocket/client.js +465 -0
  134. package/dist/cjs/websocket/client.js.map +1 -0
  135. package/dist/cjs/websocket/index.d.ts +6 -0
  136. package/dist/cjs/websocket/index.d.ts.map +1 -0
  137. package/dist/cjs/websocket/index.js +9 -0
  138. package/dist/cjs/websocket/index.js.map +1 -0
  139. package/dist/docs/.nojekyll +1 -0
  140. package/dist/docs/assets/highlight.css +113 -0
  141. package/dist/docs/assets/icons.js +18 -0
  142. package/dist/docs/assets/icons.svg +1 -0
  143. package/dist/docs/assets/main.js +60 -0
  144. package/dist/docs/assets/navigation.js +1 -0
  145. package/dist/docs/assets/search.js +1 -0
  146. package/dist/docs/assets/style.css +1493 -0
  147. package/dist/docs/classes/AIError.html +40 -0
  148. package/dist/docs/classes/AIInvestmentAdvisor.html +26 -0
  149. package/dist/docs/classes/AIRarityCalculator.html +28 -0
  150. package/dist/docs/classes/ArbitrageDetector.html +30 -0
  151. package/dist/docs/classes/BatchingError.html +40 -0
  152. package/dist/docs/classes/CacheError.html +40 -0
  153. package/dist/docs/classes/CircuitBreaker.html +38 -0
  154. package/dist/docs/classes/CircuitBreakerError.html +40 -0
  155. package/dist/docs/classes/CollectionAnalytics.html +30 -0
  156. package/dist/docs/classes/DeFiError.html +40 -0
  157. package/dist/docs/classes/FlashLoanSimulator.html +26 -0
  158. package/dist/docs/classes/JitoIntegration.html +53 -0
  159. package/dist/docs/classes/JupiterIntegration.html +43 -0
  160. package/dist/docs/classes/Keypair.html +28 -0
  161. package/dist/docs/classes/LoadBalancer.html +34 -0
  162. package/dist/docs/classes/MEVProtection.html +28 -0
  163. package/dist/docs/classes/MarketplaceAggregator.html +28 -0
  164. package/dist/docs/classes/MerkleOperation.html +74 -0
  165. package/dist/docs/classes/NFTEngine.html +29 -0
  166. package/dist/docs/classes/NFTError.html +40 -0
  167. package/dist/docs/classes/NetworkError.html +40 -0
  168. package/dist/docs/classes/PDAManager.html +46 -0
  169. package/dist/docs/classes/PortfolioAnalytics.html +26 -0
  170. package/dist/docs/classes/PriceFeedIntegration.html +37 -0
  171. package/dist/docs/classes/PublicKey.html +46 -0
  172. package/dist/docs/classes/RateLimitError.html +39 -0
  173. package/dist/docs/classes/SmartCaching.html +42 -0
  174. package/dist/docs/classes/Synapse.html +6 -0
  175. package/dist/docs/classes/SynapseClient.html +55 -0
  176. package/dist/docs/classes/SynapseError.html +37 -0
  177. package/dist/docs/classes/SynapseSolanaEngine.html +49 -0
  178. package/dist/docs/classes/SynapseUtils.html +25 -0
  179. package/dist/docs/classes/TokenDataIntegration.html +41 -0
  180. package/dist/docs/classes/Transaction.html +87 -0
  181. package/dist/docs/classes/TransactionInstruction.html +10 -0
  182. package/dist/docs/classes/UpstreamError.html +39 -0
  183. package/dist/docs/classes/WebSocketClient.html +47 -0
  184. package/dist/docs/classes/WebSocketError.html +40 -0
  185. package/dist/docs/classes/YieldFarmingFinder.html +26 -0
  186. package/dist/docs/classes/ZeroCombineFetcher.html +25 -0
  187. package/dist/docs/functions/createSynapseClient.html +2 -0
  188. package/dist/docs/hierarchy.html +1 -0
  189. package/dist/docs/index.html +776 -0
  190. package/dist/docs/interfaces/AIAgentConfig.html +11 -0
  191. package/dist/docs/interfaces/AIAgentContext.html +7 -0
  192. package/dist/docs/interfaces/AIContext.html +6 -0
  193. package/dist/docs/interfaces/AIMethodResult.html +6 -0
  194. package/dist/docs/interfaces/AIRarityAnalysis.html +3 -0
  195. package/dist/docs/interfaces/AIResponse.html +5 -0
  196. package/dist/docs/interfaces/AccountInfo.html +8 -0
  197. package/dist/docs/interfaces/AdvancedClientConfig.html +7 -0
  198. package/dist/docs/interfaces/AdvancedEvents.html +9 -0
  199. package/dist/docs/interfaces/AdvancedMetricsData.html +5 -0
  200. package/dist/docs/interfaces/AdvancedPerformanceMetrics.html +6 -0
  201. package/dist/docs/interfaces/AgentAdapter.html +6 -0
  202. package/dist/docs/interfaces/AgentRiskReport.html +6 -0
  203. package/dist/docs/interfaces/AgentTradeSuggestion.html +10 -0
  204. package/dist/docs/interfaces/AggregatedCollectionStats.html +36 -0
  205. package/dist/docs/interfaces/ArbitrageOpportunity.html +8 -0
  206. package/dist/docs/interfaces/AutoTradingStrategy.html +13 -0
  207. package/dist/docs/interfaces/BatchResponse.html +4 -0
  208. package/dist/docs/interfaces/BatchResult.html +6 -0
  209. package/dist/docs/interfaces/BatcherConfig.html +5 -0
  210. package/dist/docs/interfaces/BirdeyeTokenPrice.html +4 -0
  211. package/dist/docs/interfaces/BlockhashInfo.html +5 -0
  212. package/dist/docs/interfaces/BuildSwapTxResult.html +7 -0
  213. package/dist/docs/interfaces/CacheStats.html +9 -0
  214. package/dist/docs/interfaces/ChunkInfo.html +10 -0
  215. package/dist/docs/interfaces/CircuitBreakerConfig.html +6 -0
  216. package/dist/docs/interfaces/ClientStats.html +14 -0
  217. package/dist/docs/interfaces/CollectionStats.html +17 -0
  218. package/dist/docs/interfaces/CollectionTrends.html +7 -0
  219. package/dist/docs/interfaces/CompressedNFTInfo.html +13 -0
  220. package/dist/docs/interfaces/ConfirmedTransaction.html +6 -0
  221. package/dist/docs/interfaces/ConnectionEvents.html +11 -0
  222. package/dist/docs/interfaces/DeFiConfig.html +16 -0
  223. package/dist/docs/interfaces/DiagnosticsResult.html +6 -0
  224. package/dist/docs/interfaces/EpochInfo.html +9 -0
  225. package/dist/docs/interfaces/ExecuteSwapParams.html +10 -0
  226. package/dist/docs/interfaces/FetchConfig.html +7 -0
  227. package/dist/docs/interfaces/FlashLoanAction.html +6 -0
  228. package/dist/docs/interfaces/FlashLoanSimulation.html +9 -0
  229. package/dist/docs/interfaces/GatewayStats.html +7 -0
  230. package/dist/docs/interfaces/InscriptionResult.html +18 -0
  231. package/dist/docs/interfaces/InvestmentRecommendation.html +10 -0
  232. package/dist/docs/interfaces/JitoBundleParams.html +4 -0
  233. package/dist/docs/interfaces/JitoBundleResult.html +6 -0
  234. package/dist/docs/interfaces/JitoBundleStatus.html +6 -0
  235. package/dist/docs/interfaces/JitoTipAccount.html +3 -0
  236. package/dist/docs/interfaces/JupiterQuoteParams.html +10 -0
  237. package/dist/docs/interfaces/JupiterQuoteRequest.html +17 -0
  238. package/dist/docs/interfaces/JupiterQuoteResponse.html +13 -0
  239. package/dist/docs/interfaces/JupiterSwapOptions.html +8 -0
  240. package/dist/docs/interfaces/JupiterSwapResponse.html +4 -0
  241. package/dist/docs/interfaces/JupiterTokenPrice.html +5 -0
  242. package/dist/docs/interfaces/LoadBalancerConfig.html +5 -0
  243. package/dist/docs/interfaces/MEVProtectionConfig.html +11 -0
  244. package/dist/docs/interfaces/MEVProtectionResult.html +6 -0
  245. package/dist/docs/interfaces/MagicEdenActivity.html +22 -0
  246. package/dist/docs/interfaces/MagicEdenCollection.html +22 -0
  247. package/dist/docs/interfaces/MagicEdenCollectionStats.html +17 -0
  248. package/dist/docs/interfaces/MagicEdenErrorResponse.html +4 -0
  249. package/dist/docs/interfaces/MagicEdenListing.html +24 -0
  250. package/dist/docs/interfaces/MarketplaceClientConfig.html +14 -0
  251. package/dist/docs/interfaces/MarketplaceFloorPrices.html +7 -0
  252. package/dist/docs/interfaces/MarketplaceListing.html +9 -0
  253. package/dist/docs/interfaces/MerkleLeaf.html +6 -0
  254. package/dist/docs/interfaces/MerkleProof.html +8 -0
  255. package/dist/docs/interfaces/MerkleValidationResult.html +10 -0
  256. package/dist/docs/interfaces/MultiChainSignal.html +8 -0
  257. package/dist/docs/interfaces/NFTAttribute.html +4 -0
  258. package/dist/docs/interfaces/NFTConfig.html +6 -0
  259. package/dist/docs/interfaces/NFTInfo.html +10 -0
  260. package/dist/docs/interfaces/NFTMetadata.html +9 -0
  261. package/dist/docs/interfaces/NormalizedMarketplaceListing.html +18 -0
  262. package/dist/docs/interfaces/OOBECompatibleAgent.html +8 -0
  263. package/dist/docs/interfaces/PDAConfig.html +10 -0
  264. package/dist/docs/interfaces/ParsedAccountInfo.html +8 -0
  265. package/dist/docs/interfaces/PerformanceMetrics.html +9 -0
  266. package/dist/docs/interfaces/PortfolioMetrics.html +10 -0
  267. package/dist/docs/interfaces/PriceData.html +8 -0
  268. package/dist/docs/interfaces/ProofRecord.html +12 -0
  269. package/dist/docs/interfaces/QuoteRequestCommon.html +11 -0
  270. package/dist/docs/interfaces/QuoteResponse.html +6 -0
  271. package/dist/docs/interfaces/RarityAlgorithmConfig.html +3 -0
  272. package/dist/docs/interfaces/RarityScore.html +8 -0
  273. package/dist/docs/interfaces/RaydiumBuildSwapParams.html +14 -0
  274. package/dist/docs/interfaces/RaydiumQuoteRequest.html +14 -0
  275. package/dist/docs/interfaces/RequestOptions.html +12 -0
  276. package/dist/docs/interfaces/RetryAttempt.html +5 -0
  277. package/dist/docs/interfaces/RpcError.html +5 -0
  278. package/dist/docs/interfaces/RpcRequest.html +6 -0
  279. package/dist/docs/interfaces/RpcResponse.html +6 -0
  280. package/dist/docs/interfaces/SecurityThreat.html +6 -0
  281. package/dist/docs/interfaces/SignatureInfo.html +8 -0
  282. package/dist/docs/interfaces/Signer.html +4 -0
  283. package/dist/docs/interfaces/SmartCacheConfig.html +7 -0
  284. package/dist/docs/interfaces/SmartQueryOptions.html +10 -0
  285. package/dist/docs/interfaces/StressTestOptions.html +8 -0
  286. package/dist/docs/interfaces/StressTestResult.html +9 -0
  287. package/dist/docs/interfaces/SubscriptionConfig.html +9 -0
  288. package/dist/docs/interfaces/SubscriptionOptions.html +7 -0
  289. package/dist/docs/interfaces/SubscriptionResult.html +7 -0
  290. package/dist/docs/interfaces/SynapseConfig.html +13 -0
  291. package/dist/docs/interfaces/SynapseLikeClient.html +4 -0
  292. package/dist/docs/interfaces/TensorCollectionStats.html +33 -0
  293. package/dist/docs/interfaces/TensorErrorResponse.html +5 -0
  294. package/dist/docs/interfaces/TensorListing.html +16 -0
  295. package/dist/docs/interfaces/TensorSale.html +16 -0
  296. package/dist/docs/interfaces/TokenAccount.html +7 -0
  297. package/dist/docs/interfaces/TokenAccountInfo.html +12 -0
  298. package/dist/docs/interfaces/TokenHolding.html +8 -0
  299. package/dist/docs/interfaces/TokenInfo.html +7 -0
  300. package/dist/docs/interfaces/TokenLargestAccount.html +5 -0
  301. package/dist/docs/interfaces/TokenSupply.html +5 -0
  302. package/dist/docs/interfaces/TradeExecution.html +14 -0
  303. package/dist/docs/interfaces/TransactionSignature.html +8 -0
  304. package/dist/docs/interfaces/UpstreamHealth.html +8 -0
  305. package/dist/docs/interfaces/UserPDAs.html +10 -0
  306. package/dist/docs/interfaces/WebSocketConfig.html +12 -0
  307. package/dist/docs/interfaces/WebSocketMessage.html +6 -0
  308. package/dist/docs/interfaces/YieldOpportunity.html +8 -0
  309. package/dist/docs/interfaces/ZeroChunk.html +8 -0
  310. package/dist/docs/interfaces/ZeroCombineResult.html +3 -0
  311. package/dist/docs/media/LICENSE +21 -0
  312. package/dist/docs/media/README-1.md +778 -0
  313. package/dist/docs/media/README-2.md +1050 -0
  314. package/dist/docs/media/README-3.md +1522 -0
  315. package/dist/docs/media/README-4.md +869 -0
  316. package/dist/docs/media/README-5.md +857 -0
  317. package/dist/docs/media/README-6.md +727 -0
  318. package/dist/docs/media/README.md +766 -0
  319. package/dist/docs/modules.html +168 -0
  320. package/dist/docs/types/BlockhashWithExpiryBlockHeight.html +1 -0
  321. package/dist/docs/types/Commitment.html +3 -0
  322. package/dist/docs/types/RiskTolerance.html +1 -0
  323. package/dist/docs/types/SimulatedTransactionResponse.html +1 -0
  324. package/dist/esm/advanced/circuit-breaker.d.ts +111 -0
  325. package/dist/esm/advanced/circuit-breaker.d.ts.map +1 -0
  326. package/dist/esm/advanced/circuit-breaker.js +274 -0
  327. package/dist/esm/advanced/circuit-breaker.js.map +1 -0
  328. package/dist/esm/advanced/index.d.ts +8 -0
  329. package/dist/esm/advanced/index.d.ts.map +1 -0
  330. package/dist/esm/advanced/index.js +7 -0
  331. package/dist/esm/advanced/index.js.map +1 -0
  332. package/dist/esm/advanced/load-balancer.d.ts +114 -0
  333. package/dist/esm/advanced/load-balancer.d.ts.map +1 -0
  334. package/dist/esm/advanced/load-balancer.js +350 -0
  335. package/dist/esm/advanced/load-balancer.js.map +1 -0
  336. package/dist/esm/advanced/smart-caching.d.ts +113 -0
  337. package/dist/esm/advanced/smart-caching.d.ts.map +1 -0
  338. package/dist/esm/advanced/smart-caching.js +457 -0
  339. package/dist/esm/advanced/smart-caching.js.map +1 -0
  340. package/dist/esm/advanced/types.d.ts +228 -0
  341. package/dist/esm/advanced/types.d.ts.map +1 -0
  342. package/dist/esm/advanced/types.js +6 -0
  343. package/dist/esm/advanced/types.js.map +1 -0
  344. package/dist/esm/ai/index.d.ts +15 -0
  345. package/dist/esm/ai/index.d.ts.map +1 -0
  346. package/dist/esm/ai/index.js +14 -0
  347. package/dist/esm/ai/index.js.map +1 -0
  348. package/dist/esm/ai/merkle-operation.d.ts +245 -0
  349. package/dist/esm/ai/merkle-operation.d.ts.map +1 -0
  350. package/dist/esm/ai/merkle-operation.js +485 -0
  351. package/dist/esm/ai/merkle-operation.js.map +1 -0
  352. package/dist/esm/ai/pda-manager.d.ts +134 -0
  353. package/dist/esm/ai/pda-manager.d.ts.map +1 -0
  354. package/dist/esm/ai/pda-manager.js +213 -0
  355. package/dist/esm/ai/pda-manager.js.map +1 -0
  356. package/dist/esm/ai/types.ai.d.ts +172 -0
  357. package/dist/esm/ai/types.ai.d.ts.map +1 -0
  358. package/dist/esm/ai/types.ai.js +13 -0
  359. package/dist/esm/ai/types.ai.js.map +1 -0
  360. package/dist/esm/ai/zero-combine-fetcher.d.ts +171 -0
  361. package/dist/esm/ai/zero-combine-fetcher.d.ts.map +1 -0
  362. package/dist/esm/ai/zero-combine-fetcher.js +408 -0
  363. package/dist/esm/ai/zero-combine-fetcher.js.map +1 -0
  364. package/dist/esm/client.d.ts +83 -0
  365. package/dist/esm/client.d.ts.map +1 -0
  366. package/dist/esm/client.js +283 -0
  367. package/dist/esm/client.js.map +1 -0
  368. package/dist/esm/defi/advanced-features.d.ts +207 -0
  369. package/dist/esm/defi/advanced-features.d.ts.map +1 -0
  370. package/dist/esm/defi/advanced-features.js +374 -0
  371. package/dist/esm/defi/advanced-features.js.map +1 -0
  372. package/dist/esm/defi/index.d.ts +29 -0
  373. package/dist/esm/defi/index.d.ts.map +1 -0
  374. package/dist/esm/defi/index.js +37 -0
  375. package/dist/esm/defi/index.js.map +1 -0
  376. package/dist/esm/defi/jito.d.ts +118 -0
  377. package/dist/esm/defi/jito.d.ts.map +1 -0
  378. package/dist/esm/defi/jito.js +287 -0
  379. package/dist/esm/defi/jito.js.map +1 -0
  380. package/dist/esm/defi/jupiter.d.ts +143 -0
  381. package/dist/esm/defi/jupiter.d.ts.map +1 -0
  382. package/dist/esm/defi/jupiter.js +215 -0
  383. package/dist/esm/defi/jupiter.js.map +1 -0
  384. package/dist/esm/defi/price-feed.d.ts +63 -0
  385. package/dist/esm/defi/price-feed.d.ts.map +1 -0
  386. package/dist/esm/defi/price-feed.js +149 -0
  387. package/dist/esm/defi/price-feed.js.map +1 -0
  388. package/dist/esm/defi/token-data.d.ts +83 -0
  389. package/dist/esm/defi/token-data.d.ts.map +1 -0
  390. package/dist/esm/defi/token-data.js +201 -0
  391. package/dist/esm/defi/token-data.js.map +1 -0
  392. package/dist/esm/defi/unstable-features.d.ts +207 -0
  393. package/dist/esm/defi/unstable-features.d.ts.map +1 -0
  394. package/dist/esm/defi/unstable-features.js +374 -0
  395. package/dist/esm/defi/unstable-features.js.map +1 -0
  396. package/dist/esm/defi/utils.d.ts +265 -0
  397. package/dist/esm/defi/utils.d.ts.map +1 -0
  398. package/dist/esm/defi/utils.js +582 -0
  399. package/dist/esm/defi/utils.js.map +1 -0
  400. package/dist/esm/index.d.ts +31 -0
  401. package/dist/esm/index.d.ts.map +1 -0
  402. package/dist/esm/index.js +47 -0
  403. package/dist/esm/index.js.map +1 -0
  404. package/dist/esm/methods/solana-rpc.d.ts +362 -0
  405. package/dist/esm/methods/solana-rpc.d.ts.map +1 -0
  406. package/dist/esm/methods/solana-rpc.js +532 -0
  407. package/dist/esm/methods/solana-rpc.js.map +1 -0
  408. package/dist/esm/nft/advanced-features.d.ts +205 -0
  409. package/dist/esm/nft/advanced-features.d.ts.map +1 -0
  410. package/dist/esm/nft/advanced-features.js +489 -0
  411. package/dist/esm/nft/advanced-features.js.map +1 -0
  412. package/dist/esm/nft/clients/index.d.ts +8 -0
  413. package/dist/esm/nft/clients/index.d.ts.map +1 -0
  414. package/dist/esm/nft/clients/index.js +8 -0
  415. package/dist/esm/nft/clients/index.js.map +1 -0
  416. package/dist/esm/nft/clients/magic-eden-client.d.ts +101 -0
  417. package/dist/esm/nft/clients/magic-eden-client.d.ts.map +1 -0
  418. package/dist/esm/nft/clients/magic-eden-client.js +259 -0
  419. package/dist/esm/nft/clients/magic-eden-client.js.map +1 -0
  420. package/dist/esm/nft/clients/metaplex-onchain-client.d.ts +154 -0
  421. package/dist/esm/nft/clients/metaplex-onchain-client.d.ts.map +1 -0
  422. package/dist/esm/nft/clients/metaplex-onchain-client.js +404 -0
  423. package/dist/esm/nft/clients/metaplex-onchain-client.js.map +1 -0
  424. package/dist/esm/nft/clients/tensor-client.d.ts +79 -0
  425. package/dist/esm/nft/clients/tensor-client.d.ts.map +1 -0
  426. package/dist/esm/nft/clients/tensor-client.js +218 -0
  427. package/dist/esm/nft/clients/tensor-client.js.map +1 -0
  428. package/dist/esm/nft/index.d.ts +13 -0
  429. package/dist/esm/nft/index.d.ts.map +1 -0
  430. package/dist/esm/nft/index.js +15 -0
  431. package/dist/esm/nft/index.js.map +1 -0
  432. package/dist/esm/nft/types.nft.d.ts +342 -0
  433. package/dist/esm/nft/types.nft.d.ts.map +1 -0
  434. package/dist/esm/nft/types.nft.js +2 -0
  435. package/dist/esm/nft/types.nft.js.map +1 -0
  436. package/dist/esm/nft/utils.d.ts +46 -0
  437. package/dist/esm/nft/utils.d.ts.map +1 -0
  438. package/dist/esm/nft/utils.js +276 -0
  439. package/dist/esm/nft/utils.js.map +1 -0
  440. package/dist/esm/types.d.ts +525 -0
  441. package/dist/esm/types.d.ts.map +1 -0
  442. package/dist/esm/types.js +178 -0
  443. package/dist/esm/types.js.map +1 -0
  444. package/dist/esm/utils/constant.d.ts +8 -0
  445. package/dist/esm/utils/constant.d.ts.map +1 -0
  446. package/dist/esm/utils/constant.js +8 -0
  447. package/dist/esm/utils/constant.js.map +1 -0
  448. package/dist/esm/utils/helpers.d.ts +92 -0
  449. package/dist/esm/utils/helpers.d.ts.map +1 -0
  450. package/dist/esm/utils/helpers.js +243 -0
  451. package/dist/esm/utils/helpers.js.map +1 -0
  452. package/dist/esm/websocket/client.d.ts +182 -0
  453. package/dist/esm/websocket/client.d.ts.map +1 -0
  454. package/dist/esm/websocket/client.js +458 -0
  455. package/dist/esm/websocket/client.js.map +1 -0
  456. package/dist/esm/websocket/index.d.ts +6 -0
  457. package/dist/esm/websocket/index.d.ts.map +1 -0
  458. package/dist/esm/websocket/index.js +5 -0
  459. package/dist/esm/websocket/index.js.map +1 -0
  460. package/package.json +160 -0
@@ -0,0 +1,766 @@
1
+ # Advanced Features Module
2
+
3
+ Enterprise-grade resilience, performance optimization, and intelligent caching for production Solana applications.
4
+
5
+ ## Architecture
6
+
7
+ ```
8
+ ┌────────────────────────────────────────────────────────────┐
9
+ │ Advanced Features Layer │
10
+ ├────────────────────────────────────────────────────────────┤
11
+ │ │
12
+ │ ┌──────────────────┐ ┌──────────────────┐ │
13
+ │ │ Circuit Breaker │ │ Smart Caching │ │
14
+ │ │ • Failure Track │ │ • L1 Memory │ │
15
+ │ │ • State Machine │ │ • L2 Extended │ │
16
+ │ │ • Auto Recovery │ │ • L3 Redis │ │
17
+ │ │ • Fallback │ │ • ML Prediction │ │
18
+ │ └──────────────────┘ └──────────────────┘ │
19
+ │ │
20
+ │ ┌──────────────────┐ ┌──────────────────┐ │
21
+ │ │ Load Balancer │ │ Metrics │ │
22
+ │ │ • Round Robin │ │ • Latency │ │
23
+ │ │ • Weighted │ │ • Hit Rate │ │
24
+ │ │ • Least Conn │ │ • Throughput │ │
25
+ │ │ • IP Hash │ │ • Errors │ │
26
+ │ └──────────────────┘ └──────────────────┘ │
27
+ │ │
28
+ └────────────────────────────────────────────────────────────┘
29
+ ```
30
+
31
+ ## Components
32
+
33
+ | Component | Purpose | Complexity | Production Ready |
34
+ |-----------|---------|------------|------------------|
35
+ | **CircuitBreaker** | Prevent cascade failures | High | Yes |
36
+ | **SmartCaching** | Multi-layer ML caching | High | Yes |
37
+ | **LoadBalancer** | Distribute requests | Medium | Yes |
38
+
39
+ ---
40
+
41
+ ## Circuit Breaker
42
+
43
+ Automatically detect and prevent cascading failures with intelligent recovery.
44
+
45
+ ### State Machine
46
+
47
+ ```
48
+ ┌──────────┐ failure_threshold ┌──────────┐
49
+ │ CLOSED │ ───────────────────> │ OPEN │
50
+ │ (normal) │ │ (failing)│
51
+ └──────────┘ └──────────┘
52
+ ^ │
53
+ │ │ retry_interval
54
+ │ │
55
+ │ v
56
+ │ ┌──────────┐
57
+ │ success_count > N │ HALF │
58
+ └─────────────────────────── │ OPEN │
59
+ │ (testing)│
60
+ └──────────┘
61
+ ```
62
+
63
+ ### States
64
+
65
+ | State | Description | Behavior |
66
+ |-------|-------------|----------|
67
+ | **CLOSED** | Normal operation | All requests pass through |
68
+ | **OPEN** | Failure threshold exceeded | Requests fail fast or use fallback |
69
+ | **HALF-OPEN** | Testing recovery | Limited requests allowed |
70
+
71
+ ### Configuration
72
+
73
+ ```typescript
74
+ interface CircuitBreakerConfig {
75
+ failureThreshold: number; // Failed requests before opening
76
+ timeout: number; // Circuit stays open (ms)
77
+ retryInterval: number; // Time before half-open (ms)
78
+ monitorWindow: number; // Sliding window for failures (ms)
79
+ enableFallback: boolean; // Use fallback on open
80
+ }
81
+ ```
82
+
83
+ ### Implementation
84
+
85
+ ```typescript
86
+ import { CircuitBreaker } from '@synapse/client-sdk/advanced';
87
+
88
+ const breaker = new CircuitBreaker({
89
+ failureThreshold: 5, // Open after 5 failures
90
+ timeout: 60000, // Stay open for 60s
91
+ retryInterval: 30000, // Test recovery after 30s
92
+ monitorWindow: 60000, // Track failures in 60s window
93
+ enableFallback: true, // Use fallback when open
94
+ });
95
+
96
+ // Execute operation with circuit breaker protection
97
+ const result = await breaker.execute(
98
+ // Primary operation
99
+ async () => {
100
+ return await client.call('getAccountInfo', [address]);
101
+ },
102
+ // Fallback (optional)
103
+ async () => {
104
+ return await getCachedAccountInfo(address);
105
+ }
106
+ );
107
+ ```
108
+
109
+ ### Event Monitoring
110
+
111
+ ```typescript
112
+ breaker.on('circuit-opened', ({ reason }) => {
113
+ console.log('Circuit opened:', reason);
114
+ // Alert monitoring system
115
+ });
116
+
117
+ breaker.on('circuit-closed', () => {
118
+ console.log('Circuit closed - recovered');
119
+ // Log recovery
120
+ });
121
+
122
+ breaker.on('circuit-half-opened', () => {
123
+ console.log('Circuit testing recovery...');
124
+ });
125
+
126
+ breaker.on('fallback-used', () => {
127
+ console.log('Using fallback operation');
128
+ // Track fallback usage
129
+ });
130
+ ```
131
+
132
+ ### Statistics
133
+
134
+ ```typescript
135
+ const state = breaker.getState();
136
+
137
+ console.log('Circuit Breaker State:', {
138
+ state: state.state, // 'closed' | 'open' | 'half-open'
139
+ failures: state.failures, // Current failure count
140
+ successCount: state.successCount, // Success count in current state
141
+ totalRequests: state.totalRequests, // Total requests processed
142
+ lastFailureTime: state.lastFailureTime,// Last failure timestamp
143
+ });
144
+ ```
145
+
146
+ ### Best Practices
147
+
148
+ 1. **Set Appropriate Thresholds**
149
+ ```typescript
150
+ // For critical services
151
+ const criticalBreaker = new CircuitBreaker({
152
+ failureThreshold: 3, // Fail fast
153
+ timeout: 120000, // Longer recovery
154
+ retryInterval: 60000, // Conservative retry
155
+ });
156
+
157
+ // For non-critical services
158
+ const standardBreaker = new CircuitBreaker({
159
+ failureThreshold: 10, // More tolerant
160
+ timeout: 30000, // Shorter recovery
161
+ retryInterval: 15000, // Faster retry
162
+ });
163
+ ```
164
+
165
+ 2. **Always Provide Fallbacks**
166
+ ```typescript
167
+ await breaker.execute(
168
+ () => fetchFromPrimary(),
169
+ () => fetchFromCache() // Always provide fallback
170
+ );
171
+ ```
172
+
173
+ 3. **Monitor Circuit State**
174
+ ```typescript
175
+ setInterval(() => {
176
+ const state = breaker.getState();
177
+ if (state.state === 'open') {
178
+ metrics.increment('circuit_breaker.open');
179
+ }
180
+ }, 30000);
181
+ ```
182
+
183
+ ---
184
+
185
+ ## Smart Caching
186
+
187
+ Multi-layer intelligent caching with ML-driven optimization and predictive loading.
188
+
189
+ ### Cache Architecture
190
+
191
+ ```
192
+ ┌─────────────────────────────────────────────────────────┐
193
+ │ Cache Hierarchy │
194
+ ├─────────────────────────────────────────────────────────┤
195
+ │ │
196
+ │ L1 Cache (Memory - LRU) │
197
+ │ ├─ Max Size: 10,000 entries │
198
+ │ ├─ TTL: 60s (default) │
199
+ │ ├─ Hit Ratio: ~95% │
200
+ │ └─ Latency: <1ms │
201
+ │ │ │
202
+ │ │ miss │
203
+ │ ▼ │
204
+ │ L2 Cache (Extended Memory) │
205
+ │ ├─ Max Size: 50,000 entries │
206
+ │ ├─ TTL: 300s (default) │
207
+ │ ├─ Hit Ratio: ~80% │
208
+ │ └─ Latency: <2ms │
209
+ │ │ │
210
+ │ │ miss │
211
+ │ ▼ │
212
+ │ L3 Cache (Distributed - Redis) │
213
+ │ ├─ Size: Unlimited │
214
+ │ ├─ TTL: Configurable │
215
+ │ ├─ Hit Ratio: ~60% │
216
+ │ └─ Latency: <10ms │
217
+ │ │
218
+ └─────────────────────────────────────────────────────────┘
219
+ ```
220
+
221
+ ### Configuration
222
+
223
+ ```typescript
224
+ interface SmartCacheConfig {
225
+ maxSize?: number; // L1 cache size (default: 10000)
226
+ enableL2?: boolean; // Enable L2 cache (default: true)
227
+ enableDistributed?: boolean; // Enable Redis L3 (default: false)
228
+ redisUrl?: string; // Redis connection URL
229
+ ttl?: number; // Default TTL in ms (default: 60000)
230
+ enableCompression?: boolean; // Compress values (default: true)
231
+ enablePredictive?: boolean; // ML predictive loading (default: true)
232
+ compressionThreshold?: number; // Compress if >N bytes (default: 1024)
233
+ }
234
+ ```
235
+
236
+ ### Implementation
237
+
238
+ ```typescript
239
+ import { SmartCaching } from '@synapse/client-sdk/advanced';
240
+
241
+ const cache = new SmartCaching({
242
+ maxSize: 10000,
243
+ enableL2: true,
244
+ enableDistributed: true,
245
+ redisUrl: 'redis://localhost:6379',
246
+ ttl: 60000,
247
+ enableCompression: true,
248
+ enablePredictive: true,
249
+ compressionThreshold: 1024,
250
+ });
251
+
252
+ // Get from cache with automatic layer traversal
253
+ const accountInfo = await cache.get<AccountInfo>(
254
+ `account:${address}`,
255
+ true // Enable predictive loading
256
+ );
257
+
258
+ if (accountInfo) {
259
+ console.log('Cache hit:', accountInfo);
260
+ } else {
261
+ // Fetch from RPC
262
+ const fresh = await client.call('getAccountInfo', [address]);
263
+
264
+ // Store in cache with custom TTL
265
+ await cache.set(
266
+ `account:${address}`,
267
+ fresh,
268
+ { ttl: 120000, compress: true }
269
+ );
270
+ }
271
+ ```
272
+
273
+ ### Cache Patterns
274
+
275
+ #### 1. Read-Through Pattern
276
+
277
+ ```typescript
278
+ async function getAccountInfo(address: string): Promise<AccountInfo> {
279
+ const cacheKey = `account:${address}`;
280
+
281
+ // Try cache first
282
+ let data = await cache.get<AccountInfo>(cacheKey);
283
+
284
+ if (!data) {
285
+ // Cache miss - fetch from source
286
+ data = await client.call('getAccountInfo', [address]);
287
+
288
+ // Store in cache
289
+ await cache.set(cacheKey, data, { ttl: 60000 });
290
+ }
291
+
292
+ return data;
293
+ }
294
+ ```
295
+
296
+ #### 2. Write-Through Pattern
297
+
298
+ ```typescript
299
+ async function updateAccount(address: string, data: AccountInfo): Promise<void> {
300
+ const cacheKey = `account:${address}`;
301
+
302
+ // Update source
303
+ await updateAccountInDB(address, data);
304
+
305
+ // Update cache immediately
306
+ await cache.set(cacheKey, data, { ttl: 60000 });
307
+ }
308
+ ```
309
+
310
+ #### 3. Cache-Aside Pattern
311
+
312
+ ```typescript
313
+ async function getTokenPrice(mint: string): Promise<number> {
314
+ const cacheKey = `price:${mint}`;
315
+
316
+ // Check cache
317
+ const cached = await cache.get<number>(cacheKey);
318
+ if (cached !== null) return cached;
319
+
320
+ // Fetch from API
321
+ const price = await fetchPriceFromAPI(mint);
322
+
323
+ // Store in cache (don't await - fire and forget)
324
+ cache.set(cacheKey, price, { ttl: 30000 }).catch(console.error);
325
+
326
+ return price;
327
+ }
328
+ ```
329
+
330
+ ### Predictive Loading
331
+
332
+ The cache uses ML to predict which keys will be accessed next:
333
+
334
+ ```typescript
335
+ // Automatic predictive loading
336
+ const account1 = await cache.get('account:1', true);
337
+
338
+ // Cache automatically loads:
339
+ // - account:2 (sequential access pattern)
340
+ // - account:1:tokens (related data pattern)
341
+ // - account:1:transactions (related data pattern)
342
+ ```
343
+
344
+ ### Cache Statistics
345
+
346
+ ```typescript
347
+ const stats = cache.getAdvancedStats();
348
+
349
+ console.log('Cache Performance:', {
350
+ hitRate: stats.hitRate, // 95.5%
351
+ missRate: stats.missRate, // 4.5%
352
+ totalHits: stats.totalHits, // 10,000
353
+ totalMisses: stats.totalMisses, // 500
354
+ averageLatency: stats.averageLatency, // 0.8ms
355
+ memoryUsage: {
356
+ raw: stats.memoryUsage.raw, // 150MB
357
+ compressed: stats.memoryUsage.compressed, // 45MB
358
+ },
359
+ compressionRatio: stats.compressionRatio, // 0.3 (70% savings)
360
+ });
361
+
362
+ // Layer-specific stats
363
+ console.log('L1 Stats:', {
364
+ size: stats.l1.size,
365
+ hits: stats.l1.hits,
366
+ hitRate: stats.l1.hitRate,
367
+ });
368
+
369
+ console.log('L2 Stats:', {
370
+ size: stats.l2.size,
371
+ hits: stats.l2.hits,
372
+ hitRate: stats.l2.hitRate,
373
+ });
374
+ ```
375
+
376
+ ### Cache Invalidation
377
+
378
+ ```typescript
379
+ // Invalidate single key
380
+ await cache.delete('account:address1');
381
+
382
+ // Invalidate by pattern
383
+ await cache.deleteByPattern('account:*');
384
+
385
+ // Invalidate by tag
386
+ await cache.deleteByTag('user:123');
387
+
388
+ // Clear entire cache
389
+ await cache.clear();
390
+
391
+ // Invalidate with event
392
+ cache.on('invalidation', ({ key, reason }) => {
393
+ console.log(`Cache invalidated: ${key} (${reason})`);
394
+ });
395
+ ```
396
+
397
+ ### Best Practices
398
+
399
+ 1. **Use Appropriate TTLs**
400
+ ```typescript
401
+ // Static data - long TTL
402
+ cache.set('token:metadata', metadata, { ttl: 3600000 }); // 1 hour
403
+
404
+ // Dynamic data - short TTL
405
+ cache.set('token:price', price, { ttl: 30000 }); // 30 seconds
406
+
407
+ // Real-time data - very short TTL
408
+ cache.set('account:balance', balance, { ttl: 5000 }); // 5 seconds
409
+ ```
410
+
411
+ 2. **Enable Compression for Large Data**
412
+ ```typescript
413
+ // Compress large objects
414
+ await cache.set(key, largeObject, {
415
+ ttl: 60000,
416
+ compress: true,
417
+ compressionThreshold: 1024, // Compress if >1KB
418
+ });
419
+ ```
420
+
421
+ 3. **Use Cache Tags for Bulk Invalidation**
422
+ ```typescript
423
+ // Set with tags
424
+ await cache.set(key, value, {
425
+ ttl: 60000,
426
+ tags: ['user:123', 'collection:abc'],
427
+ });
428
+
429
+ // Invalidate all user data at once
430
+ await cache.deleteByTag('user:123');
431
+ ```
432
+
433
+ 4. **Monitor Cache Performance**
434
+ ```typescript
435
+ setInterval(() => {
436
+ const stats = cache.getAdvancedStats();
437
+
438
+ if (stats.hitRate < 0.8) {
439
+ console.warn('Cache hit rate below 80%');
440
+ // Adjust TTLs or cache size
441
+ }
442
+
443
+ if (stats.memoryUsage.raw > 500 * 1024 * 1024) {
444
+ console.warn('Cache memory usage above 500MB');
445
+ // Increase compression or reduce maxSize
446
+ }
447
+ }, 60000);
448
+ ```
449
+
450
+ ---
451
+
452
+ ## Load Balancer
453
+
454
+ Distribute requests across multiple RPC endpoints using various strategies.
455
+
456
+ ### Load Balancing Strategies
457
+
458
+ | Strategy | Algorithm | Use Case | Complexity |
459
+ |----------|-----------|----------|------------|
460
+ | **Round Robin** | Sequential rotation | Equal servers | Low |
461
+ | **Weighted** | Capacity-based | Unequal servers | Medium |
462
+ | **Least Connections** | Minimum active | Dynamic load | Medium |
463
+ | **IP Hash** | Client affinity | Session persistence | Low |
464
+ | **EWMA** | Exponential weighted | Latency-aware | High |
465
+
466
+ ### Configuration
467
+
468
+ ```typescript
469
+ interface LoadBalancerConfig {
470
+ endpoints: string[]; // RPC endpoints
471
+ strategy: 'round-robin' | 'weighted' | 'least-connections' | 'ip-hash' | 'ewma';
472
+ weights?: Record<string, number>; // Endpoint weights
473
+ healthCheckInterval?: number; // Health check frequency (ms)
474
+ timeout?: number; // Request timeout (ms)
475
+ maxRetriesPerEndpoint?: number; // Retries per endpoint
476
+ }
477
+ ```
478
+
479
+ ### Implementation
480
+
481
+ ```typescript
482
+ import { LoadBalancer } from '@synapse/client-sdk/advanced';
483
+
484
+ const balancer = new LoadBalancer({
485
+ endpoints: [
486
+ 'https://rpc1.synapse.com',
487
+ 'https://rpc2.synapse.com',
488
+ 'https://rpc3.synapse.com',
489
+ ],
490
+ strategy: 'ewma', // Latency-aware
491
+ healthCheckInterval: 30000, // Check every 30s
492
+ timeout: 10000, // 10s timeout
493
+ maxRetriesPerEndpoint: 2, // Retry twice per endpoint
494
+ });
495
+
496
+ // Get next endpoint
497
+ const endpoint = balancer.getNextEndpoint();
498
+ console.log('Using endpoint:', endpoint);
499
+
500
+ // Execute with automatic failover
501
+ const result = await balancer.execute(async (endpoint) => {
502
+ return await fetch(`${endpoint}/rpc`, {
503
+ method: 'POST',
504
+ body: JSON.stringify(rpcRequest),
505
+ });
506
+ });
507
+ ```
508
+
509
+ ### Strategy Examples
510
+
511
+ #### Round Robin
512
+
513
+ ```typescript
514
+ const roundRobin = new LoadBalancer({
515
+ endpoints: ['rpc1', 'rpc2', 'rpc3'],
516
+ strategy: 'round-robin',
517
+ });
518
+
519
+ // Distributes evenly:
520
+ // Request 1 → rpc1
521
+ // Request 2 → rpc2
522
+ // Request 3 → rpc3
523
+ // Request 4 → rpc1 (cycle repeats)
524
+ ```
525
+
526
+ #### Weighted
527
+
528
+ ```typescript
529
+ const weighted = new LoadBalancer({
530
+ endpoints: ['rpc1', 'rpc2', 'rpc3'],
531
+ strategy: 'weighted',
532
+ weights: {
533
+ 'rpc1': 50, // 50% of traffic
534
+ 'rpc2': 30, // 30% of traffic
535
+ 'rpc3': 20, // 20% of traffic
536
+ },
537
+ });
538
+ ```
539
+
540
+ #### Least Connections
541
+
542
+ ```typescript
543
+ const leastConn = new LoadBalancer({
544
+ endpoints: ['rpc1', 'rpc2', 'rpc3'],
545
+ strategy: 'least-connections',
546
+ });
547
+
548
+ // Automatically routes to endpoint with fewest active connections
549
+ ```
550
+
551
+ #### EWMA (Recommended)
552
+
553
+ ```typescript
554
+ const ewma = new LoadBalancer({
555
+ endpoints: ['rpc1', 'rpc2', 'rpc3'],
556
+ strategy: 'ewma',
557
+ });
558
+
559
+ // Routes based on exponential weighted moving average of latency
560
+ // Automatically avoids slow endpoints
561
+ ```
562
+
563
+ ### Health Checks
564
+
565
+ ```typescript
566
+ balancer.on('health-check', ({ endpoint, healthy, latency }) => {
567
+ console.log(`Health check: ${endpoint}`, {
568
+ healthy,
569
+ latency,
570
+ });
571
+ });
572
+
573
+ balancer.on('endpoint-down', ({ endpoint }) => {
574
+ console.log(`Endpoint down: ${endpoint}`);
575
+ // Alert monitoring system
576
+ });
577
+
578
+ balancer.on('endpoint-recovered', ({ endpoint }) => {
579
+ console.log(`Endpoint recovered: ${endpoint}`);
580
+ // Log recovery
581
+ });
582
+ ```
583
+
584
+ ### Statistics
585
+
586
+ ```typescript
587
+ const stats = balancer.getStats();
588
+
589
+ console.log('Load Balancer Stats:', {
590
+ totalRequests: stats.totalRequests,
591
+ endpointStats: stats.endpoints.map(e => ({
592
+ url: e.url,
593
+ requests: e.requests,
594
+ errors: e.errors,
595
+ averageLatency: e.averageLatency,
596
+ healthy: e.healthy,
597
+ })),
598
+ });
599
+ ```
600
+
601
+ ---
602
+
603
+ ## Complete Integration Example
604
+
605
+ ```typescript
606
+ import {
607
+ SmartCaching,
608
+ CircuitBreaker,
609
+ LoadBalancer,
610
+ } from '@synapse/client-sdk/advanced';
611
+
612
+ // Initialize components
613
+ const cache = new SmartCaching({
614
+ maxSize: 10000,
615
+ enableL2: true,
616
+ enablePredictive: true,
617
+ });
618
+
619
+ const breaker = new CircuitBreaker({
620
+ failureThreshold: 5,
621
+ timeout: 60000,
622
+ retryInterval: 30000,
623
+ enableFallback: true,
624
+ });
625
+
626
+ const balancer = new LoadBalancer({
627
+ endpoints: [
628
+ 'https://rpc1.synapse.com',
629
+ 'https://rpc2.synapse.com',
630
+ 'https://rpc3.synapse.com',
631
+ ],
632
+ strategy: 'ewma',
633
+ healthCheckInterval: 30000,
634
+ });
635
+
636
+ // Execute request with all features
637
+ async function getAccountInfo(address: string): Promise<AccountInfo> {
638
+ const cacheKey = `account:${address}`;
639
+
640
+ // 1. Check cache first
641
+ const cached = await cache.get<AccountInfo>(cacheKey);
642
+ if (cached) return cached;
643
+
644
+ // 2. Execute with circuit breaker
645
+ const result = await breaker.execute(
646
+ // Primary: Use load balancer
647
+ async () => {
648
+ const endpoint = balancer.getNextEndpoint();
649
+ const response = await fetch(`${endpoint}/rpc`, {
650
+ method: 'POST',
651
+ body: JSON.stringify({
652
+ jsonrpc: '2.0',
653
+ id: 1,
654
+ method: 'getAccountInfo',
655
+ params: [address],
656
+ }),
657
+ });
658
+ return await response.json();
659
+ },
660
+ // Fallback: Try cache or throw
661
+ async () => {
662
+ const stale = await cache.get<AccountInfo>(cacheKey, false);
663
+ if (stale) return stale;
664
+ throw new Error('No fallback available');
665
+ }
666
+ );
667
+
668
+ // 3. Store in cache
669
+ await cache.set(cacheKey, result, { ttl: 60000 });
670
+
671
+ return result;
672
+ }
673
+ ```
674
+
675
+ ---
676
+
677
+ ## Performance Metrics
678
+
679
+ | Component | Operation | Latency | Throughput |
680
+ |-----------|-----------|---------|------------|
681
+ | **Circuit Breaker** | Execute | <1ms | 100k ops/s |
682
+ | **Smart Caching** | L1 Get | <1ms | 1M ops/s |
683
+ | **Smart Caching** | L2 Get | <2ms | 500k ops/s |
684
+ | **Smart Caching** | L3 Get | <10ms | 50k ops/s |
685
+ | **Load Balancer** | Get Next | <0.1ms | 10M ops/s |
686
+ | **Load Balancer** | Health Check | <50ms | N/A |
687
+
688
+ ---
689
+
690
+ ## Best Practices Summary
691
+
692
+ 1. **Always use Circuit Breaker for external calls**
693
+ 2. **Implement multi-layer caching for frequently accessed data**
694
+ 3. **Use EWMA load balancing for optimal latency**
695
+ 4. **Monitor metrics and adjust thresholds**
696
+ 5. **Provide fallbacks for critical operations**
697
+ 6. **Enable compression for large cached objects**
698
+ 7. **Set appropriate TTLs based on data volatility**
699
+ 8. **Use cache tags for efficient bulk invalidation**
700
+
701
+ ---
702
+
703
+ ## Troubleshooting
704
+
705
+ ### Circuit Breaker Stuck Open
706
+
707
+ **Problem:** Circuit remains open despite healthy service
708
+
709
+ **Solution:**
710
+ ```typescript
711
+ // Reduce failure threshold
712
+ breaker.config.failureThreshold = 3;
713
+
714
+ // Reduce retry interval
715
+ breaker.config.retryInterval = 15000;
716
+
717
+ // Manually reset
718
+ breaker.reset();
719
+ ```
720
+
721
+ ### Low Cache Hit Rate
722
+
723
+ **Problem:** Cache hit rate below 80%
724
+
725
+ **Solution:**
726
+ ```typescript
727
+ // Increase cache size
728
+ cache.config.maxSize = 20000;
729
+
730
+ // Enable L2 cache
731
+ cache.config.enableL2 = true;
732
+
733
+ // Increase TTL for stable data
734
+ cache.set(key, value, { ttl: 300000 });
735
+
736
+ // Enable predictive loading
737
+ cache.config.enablePredictive = true;
738
+ ```
739
+
740
+ ### Load Balancer Uneven Distribution
741
+
742
+ **Problem:** One endpoint receiving most traffic
743
+
744
+ **Solution:**
745
+ ```typescript
746
+ // Use weighted strategy
747
+ balancer.config.strategy = 'weighted';
748
+ balancer.config.weights = {
749
+ 'rpc1': 33,
750
+ 'rpc2': 33,
751
+ 'rpc3': 34,
752
+ };
753
+
754
+ // Or use EWMA for automatic optimization
755
+ balancer.config.strategy = 'ewma';
756
+ ```
757
+
758
+ ---
759
+
760
+ ## License
761
+
762
+ MIT License - See [LICENSE](../../LICENSE) for details.
763
+
764
+ ---
765
+
766
+ **Advanced Features Module** - Enterprise-grade resilience and performance