@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.
- package/LICENSE +21 -0
- package/README.md +1393 -0
- package/dist/cjs/advanced/circuit-breaker.d.ts +111 -0
- package/dist/cjs/advanced/circuit-breaker.d.ts.map +1 -0
- package/dist/cjs/advanced/circuit-breaker.js +278 -0
- package/dist/cjs/advanced/circuit-breaker.js.map +1 -0
- package/dist/cjs/advanced/index.d.ts +8 -0
- package/dist/cjs/advanced/index.d.ts.map +1 -0
- package/dist/cjs/advanced/index.js +13 -0
- package/dist/cjs/advanced/index.js.map +1 -0
- package/dist/cjs/advanced/load-balancer.d.ts +114 -0
- package/dist/cjs/advanced/load-balancer.d.ts.map +1 -0
- package/dist/cjs/advanced/load-balancer.js +354 -0
- package/dist/cjs/advanced/load-balancer.js.map +1 -0
- package/dist/cjs/advanced/smart-caching.d.ts +113 -0
- package/dist/cjs/advanced/smart-caching.d.ts.map +1 -0
- package/dist/cjs/advanced/smart-caching.js +461 -0
- package/dist/cjs/advanced/smart-caching.js.map +1 -0
- package/dist/cjs/advanced/types.d.ts +228 -0
- package/dist/cjs/advanced/types.d.ts.map +1 -0
- package/dist/cjs/advanced/types.js +7 -0
- package/dist/cjs/advanced/types.js.map +1 -0
- package/dist/cjs/ai/index.d.ts +15 -0
- package/dist/cjs/ai/index.d.ts.map +1 -0
- package/dist/cjs/ai/index.js +20 -0
- package/dist/cjs/ai/index.js.map +1 -0
- package/dist/cjs/ai/merkle-operation.d.ts +245 -0
- package/dist/cjs/ai/merkle-operation.d.ts.map +1 -0
- package/dist/cjs/ai/merkle-operation.js +522 -0
- package/dist/cjs/ai/merkle-operation.js.map +1 -0
- package/dist/cjs/ai/pda-manager.d.ts +134 -0
- package/dist/cjs/ai/pda-manager.d.ts.map +1 -0
- package/dist/cjs/ai/pda-manager.js +250 -0
- package/dist/cjs/ai/pda-manager.js.map +1 -0
- package/dist/cjs/ai/types.ai.d.ts +172 -0
- package/dist/cjs/ai/types.ai.d.ts.map +1 -0
- package/dist/cjs/ai/types.ai.js +14 -0
- package/dist/cjs/ai/types.ai.js.map +1 -0
- package/dist/cjs/ai/zero-combine-fetcher.d.ts +171 -0
- package/dist/cjs/ai/zero-combine-fetcher.d.ts.map +1 -0
- package/dist/cjs/ai/zero-combine-fetcher.js +412 -0
- package/dist/cjs/ai/zero-combine-fetcher.js.map +1 -0
- package/dist/cjs/client.d.ts +83 -0
- package/dist/cjs/client.d.ts.map +1 -0
- package/dist/cjs/client.js +287 -0
- package/dist/cjs/client.js.map +1 -0
- package/dist/cjs/defi/advanced-features.d.ts +207 -0
- package/dist/cjs/defi/advanced-features.d.ts.map +1 -0
- package/dist/cjs/defi/advanced-features.js +382 -0
- package/dist/cjs/defi/advanced-features.js.map +1 -0
- package/dist/cjs/defi/index.d.ts +29 -0
- package/dist/cjs/defi/index.d.ts.map +1 -0
- package/dist/cjs/defi/index.js +50 -0
- package/dist/cjs/defi/index.js.map +1 -0
- package/dist/cjs/defi/jito.d.ts +118 -0
- package/dist/cjs/defi/jito.d.ts.map +1 -0
- package/dist/cjs/defi/jito.js +291 -0
- package/dist/cjs/defi/jito.js.map +1 -0
- package/dist/cjs/defi/jupiter.d.ts +143 -0
- package/dist/cjs/defi/jupiter.d.ts.map +1 -0
- package/dist/cjs/defi/jupiter.js +219 -0
- package/dist/cjs/defi/jupiter.js.map +1 -0
- package/dist/cjs/defi/price-feed.d.ts +63 -0
- package/dist/cjs/defi/price-feed.d.ts.map +1 -0
- package/dist/cjs/defi/price-feed.js +153 -0
- package/dist/cjs/defi/price-feed.js.map +1 -0
- package/dist/cjs/defi/token-data.d.ts +83 -0
- package/dist/cjs/defi/token-data.d.ts.map +1 -0
- package/dist/cjs/defi/token-data.js +205 -0
- package/dist/cjs/defi/token-data.js.map +1 -0
- package/dist/cjs/defi/unstable-features.d.ts +207 -0
- package/dist/cjs/defi/unstable-features.d.ts.map +1 -0
- package/dist/cjs/defi/unstable-features.js +382 -0
- package/dist/cjs/defi/unstable-features.js.map +1 -0
- package/dist/cjs/defi/utils.d.ts +265 -0
- package/dist/cjs/defi/utils.d.ts.map +1 -0
- package/dist/cjs/defi/utils.js +619 -0
- package/dist/cjs/defi/utils.js.map +1 -0
- package/dist/cjs/index.d.ts +31 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +71 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/methods/solana-rpc.d.ts +362 -0
- package/dist/cjs/methods/solana-rpc.d.ts.map +1 -0
- package/dist/cjs/methods/solana-rpc.js +584 -0
- package/dist/cjs/methods/solana-rpc.js.map +1 -0
- package/dist/cjs/nft/advanced-features.d.ts +205 -0
- package/dist/cjs/nft/advanced-features.d.ts.map +1 -0
- package/dist/cjs/nft/advanced-features.js +529 -0
- package/dist/cjs/nft/advanced-features.js.map +1 -0
- package/dist/cjs/nft/clients/index.d.ts +8 -0
- package/dist/cjs/nft/clients/index.d.ts.map +1 -0
- package/dist/cjs/nft/clients/index.js +14 -0
- package/dist/cjs/nft/clients/index.js.map +1 -0
- package/dist/cjs/nft/clients/magic-eden-client.d.ts +101 -0
- package/dist/cjs/nft/clients/magic-eden-client.d.ts.map +1 -0
- package/dist/cjs/nft/clients/magic-eden-client.js +263 -0
- package/dist/cjs/nft/clients/magic-eden-client.js.map +1 -0
- package/dist/cjs/nft/clients/metaplex-onchain-client.d.ts +154 -0
- package/dist/cjs/nft/clients/metaplex-onchain-client.d.ts.map +1 -0
- package/dist/cjs/nft/clients/metaplex-onchain-client.js +408 -0
- package/dist/cjs/nft/clients/metaplex-onchain-client.js.map +1 -0
- package/dist/cjs/nft/clients/tensor-client.d.ts +79 -0
- package/dist/cjs/nft/clients/tensor-client.d.ts.map +1 -0
- package/dist/cjs/nft/clients/tensor-client.js +222 -0
- package/dist/cjs/nft/clients/tensor-client.js.map +1 -0
- package/dist/cjs/nft/index.d.ts +13 -0
- package/dist/cjs/nft/index.d.ts.map +1 -0
- package/dist/cjs/nft/index.js +37 -0
- package/dist/cjs/nft/index.js.map +1 -0
- package/dist/cjs/nft/types.nft.d.ts +342 -0
- package/dist/cjs/nft/types.nft.d.ts.map +1 -0
- package/dist/cjs/nft/types.nft.js +3 -0
- package/dist/cjs/nft/types.nft.js.map +1 -0
- package/dist/cjs/nft/utils.d.ts +46 -0
- package/dist/cjs/nft/utils.d.ts.map +1 -0
- package/dist/cjs/nft/utils.js +281 -0
- package/dist/cjs/nft/utils.js.map +1 -0
- package/dist/cjs/types.d.ts +525 -0
- package/dist/cjs/types.d.ts.map +1 -0
- package/dist/cjs/types.js +192 -0
- package/dist/cjs/types.js.map +1 -0
- package/dist/cjs/utils/constant.d.ts +8 -0
- package/dist/cjs/utils/constant.d.ts.map +1 -0
- package/dist/cjs/utils/constant.js +12 -0
- package/dist/cjs/utils/constant.js.map +1 -0
- package/dist/cjs/utils/helpers.d.ts +92 -0
- package/dist/cjs/utils/helpers.d.ts.map +1 -0
- package/dist/cjs/utils/helpers.js +248 -0
- package/dist/cjs/utils/helpers.js.map +1 -0
- package/dist/cjs/websocket/client.d.ts +182 -0
- package/dist/cjs/websocket/client.d.ts.map +1 -0
- package/dist/cjs/websocket/client.js +465 -0
- package/dist/cjs/websocket/client.js.map +1 -0
- package/dist/cjs/websocket/index.d.ts +6 -0
- package/dist/cjs/websocket/index.d.ts.map +1 -0
- package/dist/cjs/websocket/index.js +9 -0
- package/dist/cjs/websocket/index.js.map +1 -0
- package/dist/docs/.nojekyll +1 -0
- package/dist/docs/assets/highlight.css +113 -0
- package/dist/docs/assets/icons.js +18 -0
- package/dist/docs/assets/icons.svg +1 -0
- package/dist/docs/assets/main.js +60 -0
- package/dist/docs/assets/navigation.js +1 -0
- package/dist/docs/assets/search.js +1 -0
- package/dist/docs/assets/style.css +1493 -0
- package/dist/docs/classes/AIError.html +40 -0
- package/dist/docs/classes/AIInvestmentAdvisor.html +26 -0
- package/dist/docs/classes/AIRarityCalculator.html +28 -0
- package/dist/docs/classes/ArbitrageDetector.html +30 -0
- package/dist/docs/classes/BatchingError.html +40 -0
- package/dist/docs/classes/CacheError.html +40 -0
- package/dist/docs/classes/CircuitBreaker.html +38 -0
- package/dist/docs/classes/CircuitBreakerError.html +40 -0
- package/dist/docs/classes/CollectionAnalytics.html +30 -0
- package/dist/docs/classes/DeFiError.html +40 -0
- package/dist/docs/classes/FlashLoanSimulator.html +26 -0
- package/dist/docs/classes/JitoIntegration.html +53 -0
- package/dist/docs/classes/JupiterIntegration.html +43 -0
- package/dist/docs/classes/Keypair.html +28 -0
- package/dist/docs/classes/LoadBalancer.html +34 -0
- package/dist/docs/classes/MEVProtection.html +28 -0
- package/dist/docs/classes/MarketplaceAggregator.html +28 -0
- package/dist/docs/classes/MerkleOperation.html +74 -0
- package/dist/docs/classes/NFTEngine.html +29 -0
- package/dist/docs/classes/NFTError.html +40 -0
- package/dist/docs/classes/NetworkError.html +40 -0
- package/dist/docs/classes/PDAManager.html +46 -0
- package/dist/docs/classes/PortfolioAnalytics.html +26 -0
- package/dist/docs/classes/PriceFeedIntegration.html +37 -0
- package/dist/docs/classes/PublicKey.html +46 -0
- package/dist/docs/classes/RateLimitError.html +39 -0
- package/dist/docs/classes/SmartCaching.html +42 -0
- package/dist/docs/classes/Synapse.html +6 -0
- package/dist/docs/classes/SynapseClient.html +55 -0
- package/dist/docs/classes/SynapseError.html +37 -0
- package/dist/docs/classes/SynapseSolanaEngine.html +49 -0
- package/dist/docs/classes/SynapseUtils.html +25 -0
- package/dist/docs/classes/TokenDataIntegration.html +41 -0
- package/dist/docs/classes/Transaction.html +87 -0
- package/dist/docs/classes/TransactionInstruction.html +10 -0
- package/dist/docs/classes/UpstreamError.html +39 -0
- package/dist/docs/classes/WebSocketClient.html +47 -0
- package/dist/docs/classes/WebSocketError.html +40 -0
- package/dist/docs/classes/YieldFarmingFinder.html +26 -0
- package/dist/docs/classes/ZeroCombineFetcher.html +25 -0
- package/dist/docs/functions/createSynapseClient.html +2 -0
- package/dist/docs/hierarchy.html +1 -0
- package/dist/docs/index.html +776 -0
- package/dist/docs/interfaces/AIAgentConfig.html +11 -0
- package/dist/docs/interfaces/AIAgentContext.html +7 -0
- package/dist/docs/interfaces/AIContext.html +6 -0
- package/dist/docs/interfaces/AIMethodResult.html +6 -0
- package/dist/docs/interfaces/AIRarityAnalysis.html +3 -0
- package/dist/docs/interfaces/AIResponse.html +5 -0
- package/dist/docs/interfaces/AccountInfo.html +8 -0
- package/dist/docs/interfaces/AdvancedClientConfig.html +7 -0
- package/dist/docs/interfaces/AdvancedEvents.html +9 -0
- package/dist/docs/interfaces/AdvancedMetricsData.html +5 -0
- package/dist/docs/interfaces/AdvancedPerformanceMetrics.html +6 -0
- package/dist/docs/interfaces/AgentAdapter.html +6 -0
- package/dist/docs/interfaces/AgentRiskReport.html +6 -0
- package/dist/docs/interfaces/AgentTradeSuggestion.html +10 -0
- package/dist/docs/interfaces/AggregatedCollectionStats.html +36 -0
- package/dist/docs/interfaces/ArbitrageOpportunity.html +8 -0
- package/dist/docs/interfaces/AutoTradingStrategy.html +13 -0
- package/dist/docs/interfaces/BatchResponse.html +4 -0
- package/dist/docs/interfaces/BatchResult.html +6 -0
- package/dist/docs/interfaces/BatcherConfig.html +5 -0
- package/dist/docs/interfaces/BirdeyeTokenPrice.html +4 -0
- package/dist/docs/interfaces/BlockhashInfo.html +5 -0
- package/dist/docs/interfaces/BuildSwapTxResult.html +7 -0
- package/dist/docs/interfaces/CacheStats.html +9 -0
- package/dist/docs/interfaces/ChunkInfo.html +10 -0
- package/dist/docs/interfaces/CircuitBreakerConfig.html +6 -0
- package/dist/docs/interfaces/ClientStats.html +14 -0
- package/dist/docs/interfaces/CollectionStats.html +17 -0
- package/dist/docs/interfaces/CollectionTrends.html +7 -0
- package/dist/docs/interfaces/CompressedNFTInfo.html +13 -0
- package/dist/docs/interfaces/ConfirmedTransaction.html +6 -0
- package/dist/docs/interfaces/ConnectionEvents.html +11 -0
- package/dist/docs/interfaces/DeFiConfig.html +16 -0
- package/dist/docs/interfaces/DiagnosticsResult.html +6 -0
- package/dist/docs/interfaces/EpochInfo.html +9 -0
- package/dist/docs/interfaces/ExecuteSwapParams.html +10 -0
- package/dist/docs/interfaces/FetchConfig.html +7 -0
- package/dist/docs/interfaces/FlashLoanAction.html +6 -0
- package/dist/docs/interfaces/FlashLoanSimulation.html +9 -0
- package/dist/docs/interfaces/GatewayStats.html +7 -0
- package/dist/docs/interfaces/InscriptionResult.html +18 -0
- package/dist/docs/interfaces/InvestmentRecommendation.html +10 -0
- package/dist/docs/interfaces/JitoBundleParams.html +4 -0
- package/dist/docs/interfaces/JitoBundleResult.html +6 -0
- package/dist/docs/interfaces/JitoBundleStatus.html +6 -0
- package/dist/docs/interfaces/JitoTipAccount.html +3 -0
- package/dist/docs/interfaces/JupiterQuoteParams.html +10 -0
- package/dist/docs/interfaces/JupiterQuoteRequest.html +17 -0
- package/dist/docs/interfaces/JupiterQuoteResponse.html +13 -0
- package/dist/docs/interfaces/JupiterSwapOptions.html +8 -0
- package/dist/docs/interfaces/JupiterSwapResponse.html +4 -0
- package/dist/docs/interfaces/JupiterTokenPrice.html +5 -0
- package/dist/docs/interfaces/LoadBalancerConfig.html +5 -0
- package/dist/docs/interfaces/MEVProtectionConfig.html +11 -0
- package/dist/docs/interfaces/MEVProtectionResult.html +6 -0
- package/dist/docs/interfaces/MagicEdenActivity.html +22 -0
- package/dist/docs/interfaces/MagicEdenCollection.html +22 -0
- package/dist/docs/interfaces/MagicEdenCollectionStats.html +17 -0
- package/dist/docs/interfaces/MagicEdenErrorResponse.html +4 -0
- package/dist/docs/interfaces/MagicEdenListing.html +24 -0
- package/dist/docs/interfaces/MarketplaceClientConfig.html +14 -0
- package/dist/docs/interfaces/MarketplaceFloorPrices.html +7 -0
- package/dist/docs/interfaces/MarketplaceListing.html +9 -0
- package/dist/docs/interfaces/MerkleLeaf.html +6 -0
- package/dist/docs/interfaces/MerkleProof.html +8 -0
- package/dist/docs/interfaces/MerkleValidationResult.html +10 -0
- package/dist/docs/interfaces/MultiChainSignal.html +8 -0
- package/dist/docs/interfaces/NFTAttribute.html +4 -0
- package/dist/docs/interfaces/NFTConfig.html +6 -0
- package/dist/docs/interfaces/NFTInfo.html +10 -0
- package/dist/docs/interfaces/NFTMetadata.html +9 -0
- package/dist/docs/interfaces/NormalizedMarketplaceListing.html +18 -0
- package/dist/docs/interfaces/OOBECompatibleAgent.html +8 -0
- package/dist/docs/interfaces/PDAConfig.html +10 -0
- package/dist/docs/interfaces/ParsedAccountInfo.html +8 -0
- package/dist/docs/interfaces/PerformanceMetrics.html +9 -0
- package/dist/docs/interfaces/PortfolioMetrics.html +10 -0
- package/dist/docs/interfaces/PriceData.html +8 -0
- package/dist/docs/interfaces/ProofRecord.html +12 -0
- package/dist/docs/interfaces/QuoteRequestCommon.html +11 -0
- package/dist/docs/interfaces/QuoteResponse.html +6 -0
- package/dist/docs/interfaces/RarityAlgorithmConfig.html +3 -0
- package/dist/docs/interfaces/RarityScore.html +8 -0
- package/dist/docs/interfaces/RaydiumBuildSwapParams.html +14 -0
- package/dist/docs/interfaces/RaydiumQuoteRequest.html +14 -0
- package/dist/docs/interfaces/RequestOptions.html +12 -0
- package/dist/docs/interfaces/RetryAttempt.html +5 -0
- package/dist/docs/interfaces/RpcError.html +5 -0
- package/dist/docs/interfaces/RpcRequest.html +6 -0
- package/dist/docs/interfaces/RpcResponse.html +6 -0
- package/dist/docs/interfaces/SecurityThreat.html +6 -0
- package/dist/docs/interfaces/SignatureInfo.html +8 -0
- package/dist/docs/interfaces/Signer.html +4 -0
- package/dist/docs/interfaces/SmartCacheConfig.html +7 -0
- package/dist/docs/interfaces/SmartQueryOptions.html +10 -0
- package/dist/docs/interfaces/StressTestOptions.html +8 -0
- package/dist/docs/interfaces/StressTestResult.html +9 -0
- package/dist/docs/interfaces/SubscriptionConfig.html +9 -0
- package/dist/docs/interfaces/SubscriptionOptions.html +7 -0
- package/dist/docs/interfaces/SubscriptionResult.html +7 -0
- package/dist/docs/interfaces/SynapseConfig.html +13 -0
- package/dist/docs/interfaces/SynapseLikeClient.html +4 -0
- package/dist/docs/interfaces/TensorCollectionStats.html +33 -0
- package/dist/docs/interfaces/TensorErrorResponse.html +5 -0
- package/dist/docs/interfaces/TensorListing.html +16 -0
- package/dist/docs/interfaces/TensorSale.html +16 -0
- package/dist/docs/interfaces/TokenAccount.html +7 -0
- package/dist/docs/interfaces/TokenAccountInfo.html +12 -0
- package/dist/docs/interfaces/TokenHolding.html +8 -0
- package/dist/docs/interfaces/TokenInfo.html +7 -0
- package/dist/docs/interfaces/TokenLargestAccount.html +5 -0
- package/dist/docs/interfaces/TokenSupply.html +5 -0
- package/dist/docs/interfaces/TradeExecution.html +14 -0
- package/dist/docs/interfaces/TransactionSignature.html +8 -0
- package/dist/docs/interfaces/UpstreamHealth.html +8 -0
- package/dist/docs/interfaces/UserPDAs.html +10 -0
- package/dist/docs/interfaces/WebSocketConfig.html +12 -0
- package/dist/docs/interfaces/WebSocketMessage.html +6 -0
- package/dist/docs/interfaces/YieldOpportunity.html +8 -0
- package/dist/docs/interfaces/ZeroChunk.html +8 -0
- package/dist/docs/interfaces/ZeroCombineResult.html +3 -0
- package/dist/docs/media/LICENSE +21 -0
- package/dist/docs/media/README-1.md +778 -0
- package/dist/docs/media/README-2.md +1050 -0
- package/dist/docs/media/README-3.md +1522 -0
- package/dist/docs/media/README-4.md +869 -0
- package/dist/docs/media/README-5.md +857 -0
- package/dist/docs/media/README-6.md +727 -0
- package/dist/docs/media/README.md +766 -0
- package/dist/docs/modules.html +168 -0
- package/dist/docs/types/BlockhashWithExpiryBlockHeight.html +1 -0
- package/dist/docs/types/Commitment.html +3 -0
- package/dist/docs/types/RiskTolerance.html +1 -0
- package/dist/docs/types/SimulatedTransactionResponse.html +1 -0
- package/dist/esm/advanced/circuit-breaker.d.ts +111 -0
- package/dist/esm/advanced/circuit-breaker.d.ts.map +1 -0
- package/dist/esm/advanced/circuit-breaker.js +274 -0
- package/dist/esm/advanced/circuit-breaker.js.map +1 -0
- package/dist/esm/advanced/index.d.ts +8 -0
- package/dist/esm/advanced/index.d.ts.map +1 -0
- package/dist/esm/advanced/index.js +7 -0
- package/dist/esm/advanced/index.js.map +1 -0
- package/dist/esm/advanced/load-balancer.d.ts +114 -0
- package/dist/esm/advanced/load-balancer.d.ts.map +1 -0
- package/dist/esm/advanced/load-balancer.js +350 -0
- package/dist/esm/advanced/load-balancer.js.map +1 -0
- package/dist/esm/advanced/smart-caching.d.ts +113 -0
- package/dist/esm/advanced/smart-caching.d.ts.map +1 -0
- package/dist/esm/advanced/smart-caching.js +457 -0
- package/dist/esm/advanced/smart-caching.js.map +1 -0
- package/dist/esm/advanced/types.d.ts +228 -0
- package/dist/esm/advanced/types.d.ts.map +1 -0
- package/dist/esm/advanced/types.js +6 -0
- package/dist/esm/advanced/types.js.map +1 -0
- package/dist/esm/ai/index.d.ts +15 -0
- package/dist/esm/ai/index.d.ts.map +1 -0
- package/dist/esm/ai/index.js +14 -0
- package/dist/esm/ai/index.js.map +1 -0
- package/dist/esm/ai/merkle-operation.d.ts +245 -0
- package/dist/esm/ai/merkle-operation.d.ts.map +1 -0
- package/dist/esm/ai/merkle-operation.js +485 -0
- package/dist/esm/ai/merkle-operation.js.map +1 -0
- package/dist/esm/ai/pda-manager.d.ts +134 -0
- package/dist/esm/ai/pda-manager.d.ts.map +1 -0
- package/dist/esm/ai/pda-manager.js +213 -0
- package/dist/esm/ai/pda-manager.js.map +1 -0
- package/dist/esm/ai/types.ai.d.ts +172 -0
- package/dist/esm/ai/types.ai.d.ts.map +1 -0
- package/dist/esm/ai/types.ai.js +13 -0
- package/dist/esm/ai/types.ai.js.map +1 -0
- package/dist/esm/ai/zero-combine-fetcher.d.ts +171 -0
- package/dist/esm/ai/zero-combine-fetcher.d.ts.map +1 -0
- package/dist/esm/ai/zero-combine-fetcher.js +408 -0
- package/dist/esm/ai/zero-combine-fetcher.js.map +1 -0
- package/dist/esm/client.d.ts +83 -0
- package/dist/esm/client.d.ts.map +1 -0
- package/dist/esm/client.js +283 -0
- package/dist/esm/client.js.map +1 -0
- package/dist/esm/defi/advanced-features.d.ts +207 -0
- package/dist/esm/defi/advanced-features.d.ts.map +1 -0
- package/dist/esm/defi/advanced-features.js +374 -0
- package/dist/esm/defi/advanced-features.js.map +1 -0
- package/dist/esm/defi/index.d.ts +29 -0
- package/dist/esm/defi/index.d.ts.map +1 -0
- package/dist/esm/defi/index.js +37 -0
- package/dist/esm/defi/index.js.map +1 -0
- package/dist/esm/defi/jito.d.ts +118 -0
- package/dist/esm/defi/jito.d.ts.map +1 -0
- package/dist/esm/defi/jito.js +287 -0
- package/dist/esm/defi/jito.js.map +1 -0
- package/dist/esm/defi/jupiter.d.ts +143 -0
- package/dist/esm/defi/jupiter.d.ts.map +1 -0
- package/dist/esm/defi/jupiter.js +215 -0
- package/dist/esm/defi/jupiter.js.map +1 -0
- package/dist/esm/defi/price-feed.d.ts +63 -0
- package/dist/esm/defi/price-feed.d.ts.map +1 -0
- package/dist/esm/defi/price-feed.js +149 -0
- package/dist/esm/defi/price-feed.js.map +1 -0
- package/dist/esm/defi/token-data.d.ts +83 -0
- package/dist/esm/defi/token-data.d.ts.map +1 -0
- package/dist/esm/defi/token-data.js +201 -0
- package/dist/esm/defi/token-data.js.map +1 -0
- package/dist/esm/defi/unstable-features.d.ts +207 -0
- package/dist/esm/defi/unstable-features.d.ts.map +1 -0
- package/dist/esm/defi/unstable-features.js +374 -0
- package/dist/esm/defi/unstable-features.js.map +1 -0
- package/dist/esm/defi/utils.d.ts +265 -0
- package/dist/esm/defi/utils.d.ts.map +1 -0
- package/dist/esm/defi/utils.js +582 -0
- package/dist/esm/defi/utils.js.map +1 -0
- package/dist/esm/index.d.ts +31 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +47 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/methods/solana-rpc.d.ts +362 -0
- package/dist/esm/methods/solana-rpc.d.ts.map +1 -0
- package/dist/esm/methods/solana-rpc.js +532 -0
- package/dist/esm/methods/solana-rpc.js.map +1 -0
- package/dist/esm/nft/advanced-features.d.ts +205 -0
- package/dist/esm/nft/advanced-features.d.ts.map +1 -0
- package/dist/esm/nft/advanced-features.js +489 -0
- package/dist/esm/nft/advanced-features.js.map +1 -0
- package/dist/esm/nft/clients/index.d.ts +8 -0
- package/dist/esm/nft/clients/index.d.ts.map +1 -0
- package/dist/esm/nft/clients/index.js +8 -0
- package/dist/esm/nft/clients/index.js.map +1 -0
- package/dist/esm/nft/clients/magic-eden-client.d.ts +101 -0
- package/dist/esm/nft/clients/magic-eden-client.d.ts.map +1 -0
- package/dist/esm/nft/clients/magic-eden-client.js +259 -0
- package/dist/esm/nft/clients/magic-eden-client.js.map +1 -0
- package/dist/esm/nft/clients/metaplex-onchain-client.d.ts +154 -0
- package/dist/esm/nft/clients/metaplex-onchain-client.d.ts.map +1 -0
- package/dist/esm/nft/clients/metaplex-onchain-client.js +404 -0
- package/dist/esm/nft/clients/metaplex-onchain-client.js.map +1 -0
- package/dist/esm/nft/clients/tensor-client.d.ts +79 -0
- package/dist/esm/nft/clients/tensor-client.d.ts.map +1 -0
- package/dist/esm/nft/clients/tensor-client.js +218 -0
- package/dist/esm/nft/clients/tensor-client.js.map +1 -0
- package/dist/esm/nft/index.d.ts +13 -0
- package/dist/esm/nft/index.d.ts.map +1 -0
- package/dist/esm/nft/index.js +15 -0
- package/dist/esm/nft/index.js.map +1 -0
- package/dist/esm/nft/types.nft.d.ts +342 -0
- package/dist/esm/nft/types.nft.d.ts.map +1 -0
- package/dist/esm/nft/types.nft.js +2 -0
- package/dist/esm/nft/types.nft.js.map +1 -0
- package/dist/esm/nft/utils.d.ts +46 -0
- package/dist/esm/nft/utils.d.ts.map +1 -0
- package/dist/esm/nft/utils.js +276 -0
- package/dist/esm/nft/utils.js.map +1 -0
- package/dist/esm/types.d.ts +525 -0
- package/dist/esm/types.d.ts.map +1 -0
- package/dist/esm/types.js +178 -0
- package/dist/esm/types.js.map +1 -0
- package/dist/esm/utils/constant.d.ts +8 -0
- package/dist/esm/utils/constant.d.ts.map +1 -0
- package/dist/esm/utils/constant.js +8 -0
- package/dist/esm/utils/constant.js.map +1 -0
- package/dist/esm/utils/helpers.d.ts +92 -0
- package/dist/esm/utils/helpers.d.ts.map +1 -0
- package/dist/esm/utils/helpers.js +243 -0
- package/dist/esm/utils/helpers.js.map +1 -0
- package/dist/esm/websocket/client.d.ts +182 -0
- package/dist/esm/websocket/client.d.ts.map +1 -0
- package/dist/esm/websocket/client.js +458 -0
- package/dist/esm/websocket/client.js.map +1 -0
- package/dist/esm/websocket/index.d.ts +6 -0
- package/dist/esm/websocket/index.d.ts.map +1 -0
- package/dist/esm/websocket/index.js +5 -0
- package/dist/esm/websocket/index.js.map +1 -0
- package/package.json +160 -0
|
@@ -0,0 +1,727 @@
|
|
|
1
|
+
# Utils Module
|
|
2
|
+
|
|
3
|
+
Utility functions, constants, and helper methods for Synapse Client SDK.
|
|
4
|
+
|
|
5
|
+
## Table of Contents
|
|
6
|
+
|
|
7
|
+
- [Overview](#overview)
|
|
8
|
+
- [Components](#components)
|
|
9
|
+
- [Constants](#constants)
|
|
10
|
+
- [Helper Functions](#helper-functions)
|
|
11
|
+
- [Validation](#validation)
|
|
12
|
+
- [Performance Monitoring](#performance-monitoring)
|
|
13
|
+
- [Diagnostics](#diagnostics)
|
|
14
|
+
- [Best Practices](#best-practices)
|
|
15
|
+
- [API Reference](#api-reference)
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## Overview
|
|
20
|
+
|
|
21
|
+
The Utils module provides essential utility functions and constants used throughout the Synapse Client SDK. It includes validation helpers, performance monitoring tools, diagnostics, and common constants.
|
|
22
|
+
|
|
23
|
+
```
|
|
24
|
+
┌─────────────────────────────────────────────────────────────────┐
|
|
25
|
+
│ Utils Module │
|
|
26
|
+
├─────────────────────────────────────────────────────────────────┤
|
|
27
|
+
│ │
|
|
28
|
+
│ ┌────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │
|
|
29
|
+
│ │ Constants │ │ Helpers │ │ Validation │ │
|
|
30
|
+
│ │ (URLs, IDs) │ │ (Formatting) │ │ (Address, Key) │ │
|
|
31
|
+
│ └────────────────┘ └─────────────────┘ └─────────────────┘ │
|
|
32
|
+
│ │
|
|
33
|
+
│ ┌────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │
|
|
34
|
+
│ │ Performance │ │ Diagnostics │ │ Rate Limiting │ │
|
|
35
|
+
│ │ Monitoring │ │ (Health) │ │ (Info) │ │
|
|
36
|
+
│ └────────────────┘ └─────────────────┘ └─────────────────┘ │
|
|
37
|
+
│ │
|
|
38
|
+
└─────────────────────────────────────────────────────────────────┘
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
---
|
|
42
|
+
|
|
43
|
+
## Components
|
|
44
|
+
|
|
45
|
+
### 1. Constants
|
|
46
|
+
|
|
47
|
+
Core configuration values and endpoints.
|
|
48
|
+
|
|
49
|
+
### 2. Helper Functions
|
|
50
|
+
|
|
51
|
+
Common utility functions for formatting and conversion.
|
|
52
|
+
|
|
53
|
+
### 3. Validation
|
|
54
|
+
|
|
55
|
+
Address and API key validation methods.
|
|
56
|
+
|
|
57
|
+
### 4. Performance Monitoring
|
|
58
|
+
|
|
59
|
+
Real-time performance monitoring tools.
|
|
60
|
+
|
|
61
|
+
### 5. Diagnostics
|
|
62
|
+
|
|
63
|
+
System health checks and gateway diagnostics.
|
|
64
|
+
|
|
65
|
+
---
|
|
66
|
+
|
|
67
|
+
## Constants
|
|
68
|
+
|
|
69
|
+
### SynapseConstants
|
|
70
|
+
|
|
71
|
+
```typescript
|
|
72
|
+
import { SynapseConstants } from '@synapse/client-sdk/utils';
|
|
73
|
+
|
|
74
|
+
// RPC endpoints
|
|
75
|
+
console.log('Base URL:', SynapseConstants.BASE_URL);
|
|
76
|
+
console.log('WebSocket URL:', SynapseConstants.WEBSOCKET_URL);
|
|
77
|
+
console.log('Server URL:', SynapseConstants.SERVER_BASE_URL);
|
|
78
|
+
|
|
79
|
+
// Timeouts
|
|
80
|
+
console.log('Default timeout:', SynapseConstants.DEFAULT_TIMEOUT);
|
|
81
|
+
console.log('WebSocket ping interval:', SynapseConstants.WS_PING_INTERVAL);
|
|
82
|
+
|
|
83
|
+
// Retry configuration
|
|
84
|
+
console.log('Max retries:', SynapseConstants.MAX_RETRIES);
|
|
85
|
+
console.log('Retry delay:', SynapseConstants.RETRY_DELAY);
|
|
86
|
+
|
|
87
|
+
// Cache configuration
|
|
88
|
+
console.log('Cache TTL:', SynapseConstants.CACHE_TTL);
|
|
89
|
+
console.log('Max cache size:', SynapseConstants.MAX_CACHE_SIZE);
|
|
90
|
+
|
|
91
|
+
// Program IDs
|
|
92
|
+
console.log('System Program:', SynapseConstants.SYSTEM_PROGRAM_ID);
|
|
93
|
+
console.log('Token Program:', SynapseConstants.TOKEN_PROGRAM_ID);
|
|
94
|
+
console.log('Associated Token Program:', SynapseConstants.ASSOCIATED_TOKEN_PROGRAM_ID);
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
### Available Constants
|
|
98
|
+
|
|
99
|
+
| Constant | Value | Description |
|
|
100
|
+
|----------|-------|-------------|
|
|
101
|
+
| `BASE_URL` | `string` | Default RPC endpoint |
|
|
102
|
+
| `WEBSOCKET_URL` | `string` | WebSocket endpoint |
|
|
103
|
+
| `SERVER_BASE_URL` | `string` | Server API endpoint |
|
|
104
|
+
| `DEFAULT_TIMEOUT` | `30000` | Default request timeout (ms) |
|
|
105
|
+
| `WS_PING_INTERVAL` | `30000` | WebSocket ping interval (ms) |
|
|
106
|
+
| `MAX_RETRIES` | `3` | Maximum retry attempts |
|
|
107
|
+
| `RETRY_DELAY` | `1000` | Retry delay (ms) |
|
|
108
|
+
| `CACHE_TTL` | `60000` | Cache time-to-live (ms) |
|
|
109
|
+
| `MAX_CACHE_SIZE` | `10000` | Maximum cache entries |
|
|
110
|
+
| `SYSTEM_PROGRAM_ID` | `11111...` | Solana System Program |
|
|
111
|
+
| `TOKEN_PROGRAM_ID` | `Token...` | SPL Token Program |
|
|
112
|
+
| `ASSOCIATED_TOKEN_PROGRAM_ID` | `ATokenG...` | Associated Token Program |
|
|
113
|
+
|
|
114
|
+
---
|
|
115
|
+
|
|
116
|
+
## Helper Functions
|
|
117
|
+
|
|
118
|
+
### SynapseUtils
|
|
119
|
+
|
|
120
|
+
```typescript
|
|
121
|
+
import { SynapseUtils } from '@synapse/client-sdk/utils';
|
|
122
|
+
|
|
123
|
+
// Format lamports to SOL
|
|
124
|
+
const sol = SynapseUtils.lamportsToSol(1_000_000_000);
|
|
125
|
+
console.log('Amount:', sol, 'SOL'); // 1 SOL
|
|
126
|
+
|
|
127
|
+
// Parse SOL to lamports
|
|
128
|
+
const lamports = SynapseUtils.solToLamports(1.5);
|
|
129
|
+
console.log('Lamports:', lamports); // 1500000000
|
|
130
|
+
|
|
131
|
+
// Validate Solana address
|
|
132
|
+
const isValid = SynapseUtils.isValidSolanaAddress(
|
|
133
|
+
'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v'
|
|
134
|
+
);
|
|
135
|
+
console.log('Valid address:', isValid); // true
|
|
136
|
+
|
|
137
|
+
// Shorten signature for display
|
|
138
|
+
const shortSig = SynapseUtils.shortenSignature(
|
|
139
|
+
'5j7s6NyAj9M8q2CqYv...',
|
|
140
|
+
8
|
|
141
|
+
);
|
|
142
|
+
console.log('Short signature:', shortSig);
|
|
143
|
+
|
|
144
|
+
// Format timestamp
|
|
145
|
+
const formatted = SynapseUtils.formatTimestamp(Date.now());
|
|
146
|
+
console.log('Timestamp:', formatted); // "2024-01-15 14:30:25"
|
|
147
|
+
|
|
148
|
+
// Calculate transaction fee
|
|
149
|
+
const fee = SynapseUtils.calculateFee(signatureCount, 5000);
|
|
150
|
+
console.log('Fee:', fee, 'lamports');
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
### Formatting Methods
|
|
154
|
+
|
|
155
|
+
| Method | Signature | Description |
|
|
156
|
+
|--------|-----------|-------------|
|
|
157
|
+
| `lamportsToSol` | `(lamports: number) => number` | Convert lamports to SOL |
|
|
158
|
+
| `solToLamports` | `(sol: number) => number` | Convert SOL to lamports |
|
|
159
|
+
| `shortenAddress` | `(address: string, chars?: number) => string` | Shorten address for display |
|
|
160
|
+
| `shortenSignature` | `(sig: string, chars?: number) => string` | Shorten signature |
|
|
161
|
+
| `formatTimestamp` | `(timestamp: number) => string` | Format Unix timestamp |
|
|
162
|
+
| `formatDuration` | `(ms: number) => string` | Format duration (e.g., "2h 15m") |
|
|
163
|
+
| `formatBytes` | `(bytes: number) => string` | Format bytes (e.g., "1.5 MB") |
|
|
164
|
+
| `calculateFee` | `(signatures: number, lamportsPerSignature: number) => number` | Calculate tx fee |
|
|
165
|
+
|
|
166
|
+
---
|
|
167
|
+
|
|
168
|
+
## Validation
|
|
169
|
+
|
|
170
|
+
### Address Validation
|
|
171
|
+
|
|
172
|
+
```typescript
|
|
173
|
+
import { SynapseUtils } from '@synapse/client-sdk/utils';
|
|
174
|
+
|
|
175
|
+
// Validate Solana address
|
|
176
|
+
const isValidAddress = SynapseUtils.isValidSolanaAddress(address);
|
|
177
|
+
if (!isValidAddress) {
|
|
178
|
+
throw new Error('Invalid Solana address');
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
// Validate multiple addresses
|
|
182
|
+
const addresses = ['addr1', 'addr2', 'addr3'];
|
|
183
|
+
const validAddresses = addresses.filter(addr =>
|
|
184
|
+
SynapseUtils.isValidSolanaAddress(addr)
|
|
185
|
+
);
|
|
186
|
+
|
|
187
|
+
console.log('Valid addresses:', validAddresses.length);
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
### API Key Validation
|
|
191
|
+
|
|
192
|
+
```typescript
|
|
193
|
+
import { SynapseUtils } from '@synapse/client-sdk/utils';
|
|
194
|
+
|
|
195
|
+
const utils = new SynapseUtils(client);
|
|
196
|
+
|
|
197
|
+
// Validate API key format and authentication
|
|
198
|
+
const isValidKey = await utils.isValidApiKey(apiKey);
|
|
199
|
+
if (!isValidKey) {
|
|
200
|
+
throw new Error('Invalid or expired API key');
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
console.log('API key valid:', isValidKey);
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
### Validation Rules
|
|
207
|
+
|
|
208
|
+
| Validation | Rules | Example |
|
|
209
|
+
|-----------|-------|---------|
|
|
210
|
+
| **Solana Address** | 32-44 chars, Base58 | `EPjFWdd5...` |
|
|
211
|
+
| **API Key** | Server-side verification | `sk_live_...` |
|
|
212
|
+
| **Public Key** | 44 chars, valid Base58 | `TokenkegQf...` |
|
|
213
|
+
| **Signature** | 88 chars, Base58 | `5j7s6NyAj...` |
|
|
214
|
+
|
|
215
|
+
---
|
|
216
|
+
|
|
217
|
+
## Performance Monitoring
|
|
218
|
+
|
|
219
|
+
### Real-Time Monitoring
|
|
220
|
+
|
|
221
|
+
```typescript
|
|
222
|
+
import { SynapseClient } from '@synapse/client-sdk';
|
|
223
|
+
import { SynapseUtils } from '@synapse/client-sdk/utils';
|
|
224
|
+
|
|
225
|
+
const client = new SynapseClient({ /* config */ });
|
|
226
|
+
const utils = new SynapseUtils(client);
|
|
227
|
+
|
|
228
|
+
// Monitor performance for 60 seconds
|
|
229
|
+
await utils.monitorPerformance(60000);
|
|
230
|
+
|
|
231
|
+
// Output:
|
|
232
|
+
// 🔍 Starting performance monitoring...
|
|
233
|
+
// [5s] RPS: 120, Latency: 45ms, Errors: 0
|
|
234
|
+
// [10s] RPS: 125, Latency: 42ms, Errors: 0
|
|
235
|
+
// [15s] RPS: 130, Latency: 40ms, Errors: 1
|
|
236
|
+
// ...
|
|
237
|
+
// ✅ Performance monitoring completed
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
### Stress Testing
|
|
241
|
+
|
|
242
|
+
```typescript
|
|
243
|
+
// Run stress test
|
|
244
|
+
const results = await utils.runStressTest({
|
|
245
|
+
requests: 1000,
|
|
246
|
+
concurrency: 50,
|
|
247
|
+
method: 'getBalance',
|
|
248
|
+
params: ['YourAddressHere'],
|
|
249
|
+
});
|
|
250
|
+
|
|
251
|
+
console.log('Stress Test Results:');
|
|
252
|
+
console.log(' Total requests:', results.totalRequests);
|
|
253
|
+
console.log(' Successful:', results.successfulRequests);
|
|
254
|
+
console.log(' Average latency:', results.averageLatency, 'ms');
|
|
255
|
+
console.log(' RPS:', results.requestsPerSecond);
|
|
256
|
+
console.log(' Error rate:', results.errorRate, '%');
|
|
257
|
+
|
|
258
|
+
// Example output:
|
|
259
|
+
// 📈 Starting stress test: 1000 requests, 50 concurrent
|
|
260
|
+
// 📈 Progress: 10%
|
|
261
|
+
// 📈 Progress: 20%
|
|
262
|
+
// ...
|
|
263
|
+
// >> Stress Test Results:
|
|
264
|
+
// Successful: 995/1000 (99.5%)
|
|
265
|
+
// RPS: 250
|
|
266
|
+
// Avg Latency: 42ms
|
|
267
|
+
// Total Time: 4000ms
|
|
268
|
+
```
|
|
269
|
+
|
|
270
|
+
### Stress Test Configuration
|
|
271
|
+
|
|
272
|
+
| Option | Type | Default | Description |
|
|
273
|
+
|--------|------|---------|-------------|
|
|
274
|
+
| `requests` | `number` | Required | Total number of requests |
|
|
275
|
+
| `concurrency` | `number` | Required | Concurrent requests |
|
|
276
|
+
| `method` | `string` | `'getSlot'` | RPC method to test |
|
|
277
|
+
| `params` | `any[]` | `[]` | Method parameters |
|
|
278
|
+
|
|
279
|
+
---
|
|
280
|
+
|
|
281
|
+
## Diagnostics
|
|
282
|
+
|
|
283
|
+
### Gateway Health Check
|
|
284
|
+
|
|
285
|
+
```typescript
|
|
286
|
+
// Run diagnostics
|
|
287
|
+
const diagnostics = await utils.diagnostics();
|
|
288
|
+
|
|
289
|
+
console.log('Gateway Health:', diagnostics.gatewayHealth ? '✅' : '❌');
|
|
290
|
+
console.log('Gateway Version:', diagnostics.performance.version);
|
|
291
|
+
console.log('Uptime:', diagnostics.performance.uptime);
|
|
292
|
+
console.log('Memory:', diagnostics.performance.memory);
|
|
293
|
+
|
|
294
|
+
console.log('Upstreams:');
|
|
295
|
+
diagnostics.upstreams.forEach(upstream => {
|
|
296
|
+
console.log(` ${upstream.url}: ${upstream.status}`);
|
|
297
|
+
console.log(` Latency: ${upstream.latency}ms`);
|
|
298
|
+
console.log(` Success rate: ${upstream.successRate}%`);
|
|
299
|
+
});
|
|
300
|
+
|
|
301
|
+
console.log('Client Stats:');
|
|
302
|
+
console.log(' Requests:', diagnostics.clientStats.requestCount);
|
|
303
|
+
console.log(' Errors:', diagnostics.clientStats.errorCount);
|
|
304
|
+
console.log(' Avg latency:', diagnostics.clientStats.averageLatency);
|
|
305
|
+
```
|
|
306
|
+
|
|
307
|
+
### Rate Limit Information
|
|
308
|
+
|
|
309
|
+
```typescript
|
|
310
|
+
// Get rate limit info
|
|
311
|
+
const rateLimit = await utils.getRateLimitInfo();
|
|
312
|
+
|
|
313
|
+
if (rateLimit) {
|
|
314
|
+
console.log('Plan:', rateLimit.plan);
|
|
315
|
+
console.log('Remaining requests:', rateLimit.remaining);
|
|
316
|
+
console.log('Reset time:', new Date(rateLimit.resetTime));
|
|
317
|
+
|
|
318
|
+
// Calculate time until reset
|
|
319
|
+
const msUntilReset = rateLimit.resetTime - Date.now();
|
|
320
|
+
console.log('Reset in:', Math.floor(msUntilReset / 1000 / 60), 'minutes');
|
|
321
|
+
|
|
322
|
+
// Warn if approaching limit
|
|
323
|
+
if (rateLimit.remaining < 100) {
|
|
324
|
+
console.warn('⚠️ Approaching rate limit!');
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
```
|
|
328
|
+
|
|
329
|
+
---
|
|
330
|
+
|
|
331
|
+
## Best Practices
|
|
332
|
+
|
|
333
|
+
### 1. Use Constants
|
|
334
|
+
|
|
335
|
+
```typescript
|
|
336
|
+
// ✅ Recommended: Use constants
|
|
337
|
+
import { SynapseConstants } from '@synapse/client-sdk/utils';
|
|
338
|
+
|
|
339
|
+
const client = new SynapseClient({
|
|
340
|
+
endpoint: SynapseConstants.BASE_URL,
|
|
341
|
+
timeout: SynapseConstants.DEFAULT_TIMEOUT,
|
|
342
|
+
});
|
|
343
|
+
|
|
344
|
+
// ❌ Not recommended: Hardcode values
|
|
345
|
+
const client = new SynapseClient({
|
|
346
|
+
endpoint: 'https://...',
|
|
347
|
+
timeout: 30000,
|
|
348
|
+
});
|
|
349
|
+
```
|
|
350
|
+
|
|
351
|
+
### 2. Validate Inputs
|
|
352
|
+
|
|
353
|
+
```typescript
|
|
354
|
+
// ✅ Recommended: Validate before using
|
|
355
|
+
import { SynapseUtils } from '@synapse/client-sdk/utils';
|
|
356
|
+
|
|
357
|
+
function getBalance(address: string) {
|
|
358
|
+
if (!SynapseUtils.isValidSolanaAddress(address)) {
|
|
359
|
+
throw new Error('Invalid address');
|
|
360
|
+
}
|
|
361
|
+
return client.call('getBalance', [address]);
|
|
362
|
+
}
|
|
363
|
+
|
|
364
|
+
// ❌ Not recommended: Skip validation
|
|
365
|
+
function getBalance(address: string) {
|
|
366
|
+
return client.call('getBalance', [address]); // May fail
|
|
367
|
+
}
|
|
368
|
+
```
|
|
369
|
+
|
|
370
|
+
### 3. Monitor Performance
|
|
371
|
+
|
|
372
|
+
```typescript
|
|
373
|
+
// ✅ Recommended: Regular monitoring
|
|
374
|
+
setInterval(async () => {
|
|
375
|
+
const stats = client.getStats();
|
|
376
|
+
if (stats.averageLatency > 1000) {
|
|
377
|
+
console.warn('High latency detected');
|
|
378
|
+
}
|
|
379
|
+
}, 60000);
|
|
380
|
+
|
|
381
|
+
// ❌ Not recommended: No monitoring
|
|
382
|
+
// Issues go unnoticed
|
|
383
|
+
```
|
|
384
|
+
|
|
385
|
+
### 4. Use Utilities for Formatting
|
|
386
|
+
|
|
387
|
+
```typescript
|
|
388
|
+
// ✅ Recommended: Use utility functions
|
|
389
|
+
const formatted = SynapseUtils.lamportsToSol(balance);
|
|
390
|
+
console.log(`Balance: ${formatted} SOL`);
|
|
391
|
+
|
|
392
|
+
// ❌ Not recommended: Manual calculation
|
|
393
|
+
const formatted = balance / 1000000000; // Magic number
|
|
394
|
+
console.log(`Balance: ${formatted} SOL`);
|
|
395
|
+
```
|
|
396
|
+
|
|
397
|
+
---
|
|
398
|
+
|
|
399
|
+
## API Reference
|
|
400
|
+
|
|
401
|
+
### SynapseConstants
|
|
402
|
+
|
|
403
|
+
#### Properties
|
|
404
|
+
|
|
405
|
+
```typescript
|
|
406
|
+
BASE_URL: string
|
|
407
|
+
WEBSOCKET_URL: string
|
|
408
|
+
SERVER_BASE_URL: string
|
|
409
|
+
DEFAULT_TIMEOUT: number
|
|
410
|
+
WS_PING_INTERVAL: number
|
|
411
|
+
MAX_RETRIES: number
|
|
412
|
+
RETRY_DELAY: number
|
|
413
|
+
CACHE_TTL: number
|
|
414
|
+
MAX_CACHE_SIZE: number
|
|
415
|
+
SYSTEM_PROGRAM_ID: string
|
|
416
|
+
TOKEN_PROGRAM_ID: string
|
|
417
|
+
ASSOCIATED_TOKEN_PROGRAM_ID: string
|
|
418
|
+
```
|
|
419
|
+
|
|
420
|
+
---
|
|
421
|
+
|
|
422
|
+
### SynapseUtils
|
|
423
|
+
|
|
424
|
+
#### Constructor
|
|
425
|
+
|
|
426
|
+
```typescript
|
|
427
|
+
constructor(client: SynapseClient)
|
|
428
|
+
```
|
|
429
|
+
|
|
430
|
+
Creates a new utils instance.
|
|
431
|
+
|
|
432
|
+
---
|
|
433
|
+
|
|
434
|
+
#### Static Methods
|
|
435
|
+
|
|
436
|
+
##### isValidSolanaAddress()
|
|
437
|
+
|
|
438
|
+
```typescript
|
|
439
|
+
static isValidSolanaAddress(address: string): boolean
|
|
440
|
+
```
|
|
441
|
+
|
|
442
|
+
Validates Solana address format.
|
|
443
|
+
|
|
444
|
+
**Example:**
|
|
445
|
+
```typescript
|
|
446
|
+
const isValid = SynapseUtils.isValidSolanaAddress('EPjFWdd5...');
|
|
447
|
+
```
|
|
448
|
+
|
|
449
|
+
---
|
|
450
|
+
|
|
451
|
+
##### lamportsToSol()
|
|
452
|
+
|
|
453
|
+
```typescript
|
|
454
|
+
static lamportsToSol(lamports: number): number
|
|
455
|
+
```
|
|
456
|
+
|
|
457
|
+
Converts lamports to SOL.
|
|
458
|
+
|
|
459
|
+
**Example:**
|
|
460
|
+
```typescript
|
|
461
|
+
const sol = SynapseUtils.lamportsToSol(1_000_000_000); // 1
|
|
462
|
+
```
|
|
463
|
+
|
|
464
|
+
---
|
|
465
|
+
|
|
466
|
+
##### solToLamports()
|
|
467
|
+
|
|
468
|
+
```typescript
|
|
469
|
+
static solToLamports(sol: number): number
|
|
470
|
+
```
|
|
471
|
+
|
|
472
|
+
Converts SOL to lamports.
|
|
473
|
+
|
|
474
|
+
**Example:**
|
|
475
|
+
```typescript
|
|
476
|
+
const lamports = SynapseUtils.solToLamports(1.5); // 1500000000
|
|
477
|
+
```
|
|
478
|
+
|
|
479
|
+
---
|
|
480
|
+
|
|
481
|
+
##### shortenAddress()
|
|
482
|
+
|
|
483
|
+
```typescript
|
|
484
|
+
static shortenAddress(address: string, chars?: number): string
|
|
485
|
+
```
|
|
486
|
+
|
|
487
|
+
Shortens address for display.
|
|
488
|
+
|
|
489
|
+
**Example:**
|
|
490
|
+
```typescript
|
|
491
|
+
const short = SynapseUtils.shortenAddress('EPjFWdd5...', 4);
|
|
492
|
+
// "EPjF...t1v"
|
|
493
|
+
```
|
|
494
|
+
|
|
495
|
+
---
|
|
496
|
+
|
|
497
|
+
##### formatTimestamp()
|
|
498
|
+
|
|
499
|
+
```typescript
|
|
500
|
+
static formatTimestamp(timestamp: number): string
|
|
501
|
+
```
|
|
502
|
+
|
|
503
|
+
Formats Unix timestamp to readable string.
|
|
504
|
+
|
|
505
|
+
**Example:**
|
|
506
|
+
```typescript
|
|
507
|
+
const formatted = SynapseUtils.formatTimestamp(Date.now());
|
|
508
|
+
// "2024-01-15 14:30:25"
|
|
509
|
+
```
|
|
510
|
+
|
|
511
|
+
---
|
|
512
|
+
|
|
513
|
+
#### Instance Methods
|
|
514
|
+
|
|
515
|
+
##### isValidApiKey()
|
|
516
|
+
|
|
517
|
+
```typescript
|
|
518
|
+
async isValidApiKey(apiKey: string): Promise<boolean>
|
|
519
|
+
```
|
|
520
|
+
|
|
521
|
+
Validates API key with server.
|
|
522
|
+
|
|
523
|
+
**Example:**
|
|
524
|
+
```typescript
|
|
525
|
+
const isValid = await utils.isValidApiKey('sk_live_...');
|
|
526
|
+
```
|
|
527
|
+
|
|
528
|
+
---
|
|
529
|
+
|
|
530
|
+
##### monitorPerformance()
|
|
531
|
+
|
|
532
|
+
```typescript
|
|
533
|
+
async monitorPerformance(duration?: number): Promise<void>
|
|
534
|
+
```
|
|
535
|
+
|
|
536
|
+
Monitors client performance for specified duration.
|
|
537
|
+
|
|
538
|
+
**Parameters:**
|
|
539
|
+
- `duration`: Monitoring duration in milliseconds (default: 60000)
|
|
540
|
+
|
|
541
|
+
**Example:**
|
|
542
|
+
```typescript
|
|
543
|
+
await utils.monitorPerformance(60000); // 1 minute
|
|
544
|
+
```
|
|
545
|
+
|
|
546
|
+
---
|
|
547
|
+
|
|
548
|
+
##### runStressTest()
|
|
549
|
+
|
|
550
|
+
```typescript
|
|
551
|
+
async runStressTest(options: {
|
|
552
|
+
requests: number;
|
|
553
|
+
concurrency: number;
|
|
554
|
+
method?: string;
|
|
555
|
+
params?: any[];
|
|
556
|
+
}): Promise<{
|
|
557
|
+
totalRequests: number;
|
|
558
|
+
successfulRequests: number;
|
|
559
|
+
averageLatency: number;
|
|
560
|
+
requestsPerSecond: number;
|
|
561
|
+
errorRate: number;
|
|
562
|
+
}>
|
|
563
|
+
```
|
|
564
|
+
|
|
565
|
+
Runs stress test on client.
|
|
566
|
+
|
|
567
|
+
**Example:**
|
|
568
|
+
```typescript
|
|
569
|
+
const results = await utils.runStressTest({
|
|
570
|
+
requests: 1000,
|
|
571
|
+
concurrency: 50,
|
|
572
|
+
});
|
|
573
|
+
```
|
|
574
|
+
|
|
575
|
+
---
|
|
576
|
+
|
|
577
|
+
##### diagnostics()
|
|
578
|
+
|
|
579
|
+
```typescript
|
|
580
|
+
async diagnostics(): Promise<{
|
|
581
|
+
gatewayHealth: boolean;
|
|
582
|
+
upstreams: any[];
|
|
583
|
+
performance: any;
|
|
584
|
+
clientStats: any;
|
|
585
|
+
}>
|
|
586
|
+
```
|
|
587
|
+
|
|
588
|
+
Gets gateway diagnostics and health.
|
|
589
|
+
|
|
590
|
+
**Example:**
|
|
591
|
+
```typescript
|
|
592
|
+
const diag = await utils.diagnostics();
|
|
593
|
+
console.log('Health:', diag.gatewayHealth);
|
|
594
|
+
```
|
|
595
|
+
|
|
596
|
+
---
|
|
597
|
+
|
|
598
|
+
##### getRateLimitInfo()
|
|
599
|
+
|
|
600
|
+
```typescript
|
|
601
|
+
async getRateLimitInfo(): Promise<{
|
|
602
|
+
plan: string;
|
|
603
|
+
remaining: number;
|
|
604
|
+
resetTime: number;
|
|
605
|
+
} | null>
|
|
606
|
+
```
|
|
607
|
+
|
|
608
|
+
Gets rate limit information.
|
|
609
|
+
|
|
610
|
+
**Example:**
|
|
611
|
+
```typescript
|
|
612
|
+
const info = await utils.getRateLimitInfo();
|
|
613
|
+
if (info) {
|
|
614
|
+
console.log('Remaining:', info.remaining);
|
|
615
|
+
}
|
|
616
|
+
```
|
|
617
|
+
|
|
618
|
+
---
|
|
619
|
+
|
|
620
|
+
## Common Use Cases
|
|
621
|
+
|
|
622
|
+
### 1. Display Balance
|
|
623
|
+
|
|
624
|
+
```typescript
|
|
625
|
+
const balance = await client.call('getBalance', [address]);
|
|
626
|
+
const formatted = SynapseUtils.lamportsToSol(balance);
|
|
627
|
+
console.log(`Balance: ${formatted.toFixed(4)} SOL`);
|
|
628
|
+
```
|
|
629
|
+
|
|
630
|
+
### 2. Validate Input
|
|
631
|
+
|
|
632
|
+
```typescript
|
|
633
|
+
if (!SynapseUtils.isValidSolanaAddress(address)) {
|
|
634
|
+
throw new Error('Invalid address format');
|
|
635
|
+
}
|
|
636
|
+
```
|
|
637
|
+
|
|
638
|
+
### 3. Monitor Health
|
|
639
|
+
|
|
640
|
+
```typescript
|
|
641
|
+
const diagnostics = await utils.diagnostics();
|
|
642
|
+
if (!diagnostics.gatewayHealth) {
|
|
643
|
+
console.error('Gateway unhealthy!');
|
|
644
|
+
// Switch to backup endpoint
|
|
645
|
+
}
|
|
646
|
+
```
|
|
647
|
+
|
|
648
|
+
### 4. Check Rate Limits
|
|
649
|
+
|
|
650
|
+
```typescript
|
|
651
|
+
const rateLimit = await utils.getRateLimitInfo();
|
|
652
|
+
if (rateLimit && rateLimit.remaining < 100) {
|
|
653
|
+
console.warn('Approaching rate limit');
|
|
654
|
+
// Throttle requests
|
|
655
|
+
}
|
|
656
|
+
```
|
|
657
|
+
|
|
658
|
+
### 5. Stress Test Before Production
|
|
659
|
+
|
|
660
|
+
```typescript
|
|
661
|
+
const results = await utils.runStressTest({
|
|
662
|
+
requests: 10000,
|
|
663
|
+
concurrency: 100,
|
|
664
|
+
});
|
|
665
|
+
|
|
666
|
+
if (results.errorRate > 1) {
|
|
667
|
+
console.error('High error rate in stress test');
|
|
668
|
+
}
|
|
669
|
+
|
|
670
|
+
if (results.averageLatency > 100) {
|
|
671
|
+
console.warn('High latency detected');
|
|
672
|
+
}
|
|
673
|
+
```
|
|
674
|
+
|
|
675
|
+
---
|
|
676
|
+
|
|
677
|
+
## Performance
|
|
678
|
+
|
|
679
|
+
| Operation | Latency | Notes |
|
|
680
|
+
|-----------|---------|-------|
|
|
681
|
+
| Address Validation | <1ms | Regex check |
|
|
682
|
+
| Format Conversion | <1ms | Math operation |
|
|
683
|
+
| API Key Validation | 50-200ms | Server roundtrip |
|
|
684
|
+
| Diagnostics | 100-500ms | Multiple checks |
|
|
685
|
+
| Stress Test | Varies | Depends on config |
|
|
686
|
+
|
|
687
|
+
---
|
|
688
|
+
|
|
689
|
+
## Troubleshooting
|
|
690
|
+
|
|
691
|
+
### Issue: Invalid address validation fails
|
|
692
|
+
|
|
693
|
+
**Solution:**
|
|
694
|
+
```typescript
|
|
695
|
+
// Ensure address is trimmed and properly formatted
|
|
696
|
+
const address = inputAddress.trim();
|
|
697
|
+
const isValid = SynapseUtils.isValidSolanaAddress(address);
|
|
698
|
+
```
|
|
699
|
+
|
|
700
|
+
### Issue: Rate limit info returns null
|
|
701
|
+
|
|
702
|
+
**Solution:**
|
|
703
|
+
```typescript
|
|
704
|
+
// Ensure API key is provided
|
|
705
|
+
const client = new SynapseClient({
|
|
706
|
+
endpoint: SynapseConstants.BASE_URL,
|
|
707
|
+
apiKey: process.env.SYNAPSE_API_KEY, // Required
|
|
708
|
+
});
|
|
709
|
+
```
|
|
710
|
+
|
|
711
|
+
### Issue: Stress test errors
|
|
712
|
+
|
|
713
|
+
**Solution:**
|
|
714
|
+
```typescript
|
|
715
|
+
// Reduce concurrency for slower endpoints
|
|
716
|
+
const results = await utils.runStressTest({
|
|
717
|
+
requests: 1000,
|
|
718
|
+
concurrency: 10, // Reduced from 50
|
|
719
|
+
});
|
|
720
|
+
```
|
|
721
|
+
|
|
722
|
+
---
|
|
723
|
+
|
|
724
|
+
**Utils Module** - Essential utilities for Synapse SDK
|
|
725
|
+
|
|
726
|
+
Built for developer productivity and code quality
|
|
727
|
+
|