@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,259 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Magic Eden API Client
|
|
3
|
+
* Integration with Magic Eden marketplace API
|
|
4
|
+
* @see https://api.magiceden.dev/
|
|
5
|
+
* @see https://docs.magiceden.io/
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* MagicEdenClient - Production-ready Magic Eden API integration
|
|
9
|
+
* Handles rate limiting, error handling, and response validation
|
|
10
|
+
*/
|
|
11
|
+
export class MagicEdenClient {
|
|
12
|
+
baseUrl;
|
|
13
|
+
apiKey;
|
|
14
|
+
timeout;
|
|
15
|
+
fetchImpl;
|
|
16
|
+
logLevel;
|
|
17
|
+
rateLimiter;
|
|
18
|
+
constructor(config) {
|
|
19
|
+
this.baseUrl = config?.baseUrl || 'https://api-mainnet.magiceden.dev/v2';
|
|
20
|
+
this.apiKey = config?.apiKey;
|
|
21
|
+
this.timeout = config?.timeout || 10000;
|
|
22
|
+
this.logLevel = config?.logLevel || 'error';
|
|
23
|
+
// Rate limiter: default 10 req/s = 100ms between requests
|
|
24
|
+
const rateLimit = config?.rateLimit || 10;
|
|
25
|
+
this.rateLimiter = {
|
|
26
|
+
lastRequest: 0,
|
|
27
|
+
minInterval: 1000 / rateLimit,
|
|
28
|
+
};
|
|
29
|
+
// Cross-platform fetch support
|
|
30
|
+
if (config?.fetch) {
|
|
31
|
+
this.fetchImpl = config.fetch;
|
|
32
|
+
}
|
|
33
|
+
else if (typeof globalThis.fetch !== 'undefined') {
|
|
34
|
+
this.fetchImpl = globalThis.fetch.bind(globalThis);
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
// Node <18 requires fetch polyfill
|
|
38
|
+
throw new Error('fetch is not available. Please provide a fetch implementation via config.fetch or upgrade to Node 18+');
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Get collection statistics from Magic Eden
|
|
43
|
+
* @param symbol - Collection symbol (e.g. "okay_bears")
|
|
44
|
+
* @returns Collection statistics including floor price, volume
|
|
45
|
+
*/
|
|
46
|
+
async getCollectionStats(symbol) {
|
|
47
|
+
this.logDebug(`Fetching collection stats for: ${symbol}`);
|
|
48
|
+
const url = `${this.baseUrl}/collections/${symbol}/stats`;
|
|
49
|
+
const response = await this.makeRequest(url);
|
|
50
|
+
this.logInfo(`Collection stats fetched: ${symbol} - Floor: ${response.floorPrice} SOL`);
|
|
51
|
+
return response;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Get collection information
|
|
55
|
+
* @param symbol - Collection symbol
|
|
56
|
+
* @returns Collection metadata and info
|
|
57
|
+
*/
|
|
58
|
+
async getCollectionInfo(symbol) {
|
|
59
|
+
this.logDebug(`Fetching collection info for: ${symbol}`);
|
|
60
|
+
const url = `${this.baseUrl}/collections/${symbol}`;
|
|
61
|
+
const response = await this.makeRequest(url);
|
|
62
|
+
this.logInfo(`Collection info fetched: ${symbol} - ${response.name}`);
|
|
63
|
+
return response;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Get current floor price for a collection
|
|
67
|
+
* @param symbol - Collection symbol
|
|
68
|
+
* @returns Floor price in SOL (not lamports)
|
|
69
|
+
*/
|
|
70
|
+
async getFloorPrice(symbol) {
|
|
71
|
+
const stats = await this.getCollectionStats(symbol);
|
|
72
|
+
return stats.floorPrice;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Get active listings for a collection
|
|
76
|
+
* @param symbol - Collection symbol
|
|
77
|
+
* @param options - Pagination options
|
|
78
|
+
* @returns Array of active listings
|
|
79
|
+
*/
|
|
80
|
+
async getListings(symbol, options) {
|
|
81
|
+
this.logDebug(`Fetching listings for: ${symbol}`);
|
|
82
|
+
const params = new URLSearchParams();
|
|
83
|
+
if (options?.offset)
|
|
84
|
+
params.append('offset', options.offset.toString());
|
|
85
|
+
if (options?.limit)
|
|
86
|
+
params.append('limit', options.limit.toString());
|
|
87
|
+
const url = `${this.baseUrl}/collections/${symbol}/listings?${params.toString()}`;
|
|
88
|
+
const response = await this.makeRequest(url);
|
|
89
|
+
this.logInfo(`Fetched ${response.length} listings for: ${symbol}`);
|
|
90
|
+
return response;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Get collection activities (sales, listings, etc.)
|
|
94
|
+
* @param symbol - Collection symbol
|
|
95
|
+
* @param options - Pagination options
|
|
96
|
+
* @returns Array of activities
|
|
97
|
+
*/
|
|
98
|
+
async getCollectionActivities(symbol, options) {
|
|
99
|
+
this.logDebug(`Fetching activities for: ${symbol}`);
|
|
100
|
+
const params = new URLSearchParams();
|
|
101
|
+
if (options?.offset)
|
|
102
|
+
params.append('offset', options.offset.toString());
|
|
103
|
+
if (options?.limit)
|
|
104
|
+
params.append('limit', options.limit.toString());
|
|
105
|
+
const url = `${this.baseUrl}/collections/${symbol}/activities?${params.toString()}`;
|
|
106
|
+
const response = await this.makeRequest(url);
|
|
107
|
+
this.logInfo(`Fetched ${response.length} activities for: ${symbol}`);
|
|
108
|
+
return response;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Get listing for a specific NFT token
|
|
112
|
+
* @param mintAddress - NFT mint address
|
|
113
|
+
* @returns Listing information or null if not listed
|
|
114
|
+
*/
|
|
115
|
+
async getTokenListing(mintAddress) {
|
|
116
|
+
this.logDebug(`Fetching listing for token: ${mintAddress}`);
|
|
117
|
+
const url = `${this.baseUrl}/tokens/${mintAddress}/listings`;
|
|
118
|
+
try {
|
|
119
|
+
const response = await this.makeRequest(url);
|
|
120
|
+
if (response.length === 0) {
|
|
121
|
+
this.logDebug(`No listing found for token: ${mintAddress}`);
|
|
122
|
+
return null;
|
|
123
|
+
}
|
|
124
|
+
// Return the first (active) listing
|
|
125
|
+
this.logInfo(`Listing found for token: ${mintAddress}`);
|
|
126
|
+
return response[0];
|
|
127
|
+
}
|
|
128
|
+
catch (error) {
|
|
129
|
+
if (this.isNotFoundError(error)) {
|
|
130
|
+
this.logDebug(`No listing found for token: ${mintAddress}`);
|
|
131
|
+
return null;
|
|
132
|
+
}
|
|
133
|
+
throw error;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Get recent sales for a collection
|
|
138
|
+
* @param symbol - Collection symbol
|
|
139
|
+
* @param options - Pagination options
|
|
140
|
+
* @returns Array of recent sales (filtered buyNow activities)
|
|
141
|
+
*/
|
|
142
|
+
async getSales(symbol, options) {
|
|
143
|
+
const activities = await this.getCollectionActivities(symbol, options);
|
|
144
|
+
// Filter for sales only (buyNow type)
|
|
145
|
+
return activities.filter((activity) => activity.type === 'buyNow');
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Search for collections by name
|
|
149
|
+
* @param query - Search query
|
|
150
|
+
* @param limit - Maximum results
|
|
151
|
+
* @returns Array of matching collections
|
|
152
|
+
*/
|
|
153
|
+
async searchCollections(query, limit = 20) {
|
|
154
|
+
this.logDebug(`Searching collections: ${query}`);
|
|
155
|
+
const params = new URLSearchParams({
|
|
156
|
+
q: query,
|
|
157
|
+
limit: limit.toString(),
|
|
158
|
+
});
|
|
159
|
+
const url = `${this.baseUrl}/collections?${params.toString()}`;
|
|
160
|
+
const response = await this.makeRequest(url);
|
|
161
|
+
this.logInfo(`Found ${response.length} collections for: ${query}`);
|
|
162
|
+
return response;
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Health check - verify Magic Eden API is accessible
|
|
166
|
+
* @returns True if API is healthy
|
|
167
|
+
*/
|
|
168
|
+
async healthCheck() {
|
|
169
|
+
try {
|
|
170
|
+
// Try fetching a popular collection as health check
|
|
171
|
+
await this.getCollectionStats('okay_bears');
|
|
172
|
+
return true;
|
|
173
|
+
}
|
|
174
|
+
catch (error) {
|
|
175
|
+
this.logError(`Magic Eden API health check failed: ${error.message}`);
|
|
176
|
+
return false;
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
// =========================================================================
|
|
180
|
+
// Private Methods
|
|
181
|
+
// =========================================================================
|
|
182
|
+
async makeRequest(url) {
|
|
183
|
+
// Rate limiting
|
|
184
|
+
await this.enforceRateLimit();
|
|
185
|
+
// Build headers
|
|
186
|
+
const headers = {
|
|
187
|
+
'Accept': 'application/json',
|
|
188
|
+
};
|
|
189
|
+
if (this.apiKey) {
|
|
190
|
+
headers['Authorization'] = `Bearer ${this.apiKey}`;
|
|
191
|
+
}
|
|
192
|
+
// Create abort controller for timeout
|
|
193
|
+
const controller = new AbortController();
|
|
194
|
+
const timeoutId = setTimeout(() => controller.abort(), this.timeout);
|
|
195
|
+
try {
|
|
196
|
+
this.logDebug(`Request: GET ${url}`);
|
|
197
|
+
const response = await this.fetchImpl(url, {
|
|
198
|
+
method: 'GET',
|
|
199
|
+
headers,
|
|
200
|
+
signal: controller.signal,
|
|
201
|
+
});
|
|
202
|
+
clearTimeout(timeoutId);
|
|
203
|
+
// Handle non-OK responses
|
|
204
|
+
if (!response.ok) {
|
|
205
|
+
const errorBody = await response.text();
|
|
206
|
+
let errorMessage = `Magic Eden API error: ${response.status} ${response.statusText}`;
|
|
207
|
+
try {
|
|
208
|
+
const errorJson = JSON.parse(errorBody);
|
|
209
|
+
errorMessage = `Magic Eden API error: ${errorJson.error}`;
|
|
210
|
+
}
|
|
211
|
+
catch {
|
|
212
|
+
errorMessage += ` - ${errorBody.substring(0, 200)}`;
|
|
213
|
+
}
|
|
214
|
+
throw new Error(errorMessage);
|
|
215
|
+
}
|
|
216
|
+
// Parse JSON response
|
|
217
|
+
const data = await response.json();
|
|
218
|
+
this.logDebug(`Response: ${response.status} - ${JSON.stringify(data).substring(0, 100)}...`);
|
|
219
|
+
return data;
|
|
220
|
+
}
|
|
221
|
+
catch (error) {
|
|
222
|
+
clearTimeout(timeoutId);
|
|
223
|
+
if (error.name === 'AbortError') {
|
|
224
|
+
throw new Error(`Magic Eden API request timeout after ${this.timeout}ms`);
|
|
225
|
+
}
|
|
226
|
+
throw error;
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
async enforceRateLimit() {
|
|
230
|
+
const now = Date.now();
|
|
231
|
+
const timeSinceLastRequest = now - this.rateLimiter.lastRequest;
|
|
232
|
+
if (timeSinceLastRequest < this.rateLimiter.minInterval) {
|
|
233
|
+
const waitTime = this.rateLimiter.minInterval - timeSinceLastRequest;
|
|
234
|
+
this.logDebug(`Rate limit: waiting ${waitTime}ms`);
|
|
235
|
+
await new Promise((resolve) => setTimeout(resolve, waitTime));
|
|
236
|
+
}
|
|
237
|
+
this.rateLimiter.lastRequest = Date.now();
|
|
238
|
+
}
|
|
239
|
+
isNotFoundError(error) {
|
|
240
|
+
return (error instanceof Error &&
|
|
241
|
+
(error.message.includes('404') || error.message.includes('not found')));
|
|
242
|
+
}
|
|
243
|
+
logDebug(message) {
|
|
244
|
+
if (this.logLevel === 'debug') {
|
|
245
|
+
console.log(`[MagicEdenClient:DEBUG] ${message}`);
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
logInfo(message) {
|
|
249
|
+
if (this.logLevel === 'debug' || this.logLevel === 'info') {
|
|
250
|
+
console.log(`[MagicEdenClient:INFO] ${message}`);
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
logError(message) {
|
|
254
|
+
if (this.logLevel !== 'none') {
|
|
255
|
+
console.error(`[MagicEdenClient:ERROR] ${message}`);
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
//# sourceMappingURL=magic-eden-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"magic-eden-client.js","sourceRoot":"","sources":["../../../../src/nft/clients/magic-eden-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Metaplex On-Chain Client
|
|
3
|
+
* Direct on-chain NFT collection analysis using Solana RPC and DAS API
|
|
4
|
+
* Alternative to marketplace APIs for decentralized, trustless data
|
|
5
|
+
* @see https://developers.metaplex.com/
|
|
6
|
+
*/
|
|
7
|
+
import { Connection } from '@solana/web3.js';
|
|
8
|
+
export interface MetaplexOnChainConfig {
|
|
9
|
+
connection: Connection;
|
|
10
|
+
/** Optional RPC endpoint override */
|
|
11
|
+
rpcEndpoint?: string;
|
|
12
|
+
/** Request timeout in milliseconds */
|
|
13
|
+
timeout?: number;
|
|
14
|
+
/** Enable detailed logging */
|
|
15
|
+
logLevel?: 'debug' | 'info' | 'error' | 'none';
|
|
16
|
+
/** DAS (Digital Asset Standard) API endpoint for faster queries (Helius, Triton, etc.) */
|
|
17
|
+
dasEndpoint?: string;
|
|
18
|
+
}
|
|
19
|
+
export interface OnChainCollectionMetadata {
|
|
20
|
+
collectionMint: string;
|
|
21
|
+
name: string;
|
|
22
|
+
symbol: string;
|
|
23
|
+
uri: string;
|
|
24
|
+
updateAuthority: string;
|
|
25
|
+
creators: Array<{
|
|
26
|
+
address: string;
|
|
27
|
+
verified: boolean;
|
|
28
|
+
share: number;
|
|
29
|
+
}>;
|
|
30
|
+
sellerFeeBasisPoints: number;
|
|
31
|
+
isMutable: boolean;
|
|
32
|
+
collection?: {
|
|
33
|
+
verified: boolean;
|
|
34
|
+
key: string;
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
export interface OnChainCollectionStats {
|
|
38
|
+
collectionMint: string;
|
|
39
|
+
totalSupply: number;
|
|
40
|
+
verifiedNFTs: number;
|
|
41
|
+
holders: number;
|
|
42
|
+
uniqueHolders: number;
|
|
43
|
+
holderDistribution: {
|
|
44
|
+
whales: number;
|
|
45
|
+
medium: number;
|
|
46
|
+
retail: number;
|
|
47
|
+
};
|
|
48
|
+
topHolders: Array<{
|
|
49
|
+
address: string;
|
|
50
|
+
count: number;
|
|
51
|
+
percentage: number;
|
|
52
|
+
}>;
|
|
53
|
+
nftsByCreator: number;
|
|
54
|
+
dataSource: 'on-chain';
|
|
55
|
+
timestamp: number;
|
|
56
|
+
}
|
|
57
|
+
export interface OnChainNFT {
|
|
58
|
+
mint: string;
|
|
59
|
+
owner: string;
|
|
60
|
+
metadata: {
|
|
61
|
+
name: string;
|
|
62
|
+
symbol: string;
|
|
63
|
+
uri: string;
|
|
64
|
+
sellerFeeBasisPoints: number;
|
|
65
|
+
};
|
|
66
|
+
collection?: string;
|
|
67
|
+
verified: boolean;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* MetaplexOnChainClient - Direct on-chain NFT analysis
|
|
71
|
+
*
|
|
72
|
+
* Provides trustless, decentralized collection statistics without
|
|
73
|
+
* relying on centralized marketplace APIs. Uses Metaplex standards,
|
|
74
|
+
* Solana RPC queries, and optional DAS API for faster bulk operations.
|
|
75
|
+
*
|
|
76
|
+
* **Use Cases:**
|
|
77
|
+
* - Collections not listed on major marketplaces
|
|
78
|
+
* - Trustless verification of collection data
|
|
79
|
+
* - Real-time holder distribution analysis
|
|
80
|
+
* - Independent supply and holder calculations
|
|
81
|
+
*
|
|
82
|
+
* **Trade-offs:**
|
|
83
|
+
* - Slower than marketplace APIs (requires multiple RPC calls)
|
|
84
|
+
* - No historical price data (no marketplace context)
|
|
85
|
+
* - No marketplace-specific metrics (listings, sales, volume)
|
|
86
|
+
* - Higher RPC costs for large collections (1000+ NFTs)
|
|
87
|
+
*
|
|
88
|
+
* **Recommended:** Use with Helius DAS API for production deployments
|
|
89
|
+
*/
|
|
90
|
+
export declare class MetaplexOnChainClient {
|
|
91
|
+
private readonly connection;
|
|
92
|
+
private readonly rpcEndpoint;
|
|
93
|
+
private readonly timeout;
|
|
94
|
+
private readonly logLevel;
|
|
95
|
+
private readonly dasEndpoint?;
|
|
96
|
+
private readonly umi;
|
|
97
|
+
constructor(config: MetaplexOnChainConfig);
|
|
98
|
+
/**
|
|
99
|
+
* Get collection metadata from on-chain data using Metaplex standards
|
|
100
|
+
* @param collectionMint - Collection mint address
|
|
101
|
+
* @returns Collection metadata parsed from Metaplex Token Metadata
|
|
102
|
+
*/
|
|
103
|
+
getCollectionMetadata(collectionMint: string): Promise<OnChainCollectionMetadata>;
|
|
104
|
+
/**
|
|
105
|
+
* Get all NFTs in a collection by creator
|
|
106
|
+
* Uses DAS API if available (recommended), falls back to RPC
|
|
107
|
+
* @param creatorAddress - Creator/collection address
|
|
108
|
+
* @param options - Query options
|
|
109
|
+
* @returns Array of NFTs with owner and metadata
|
|
110
|
+
*/
|
|
111
|
+
getCollectionNFTs(creatorAddress: string, options?: {
|
|
112
|
+
limit?: number;
|
|
113
|
+
offset?: number;
|
|
114
|
+
}): Promise<OnChainNFT[]>;
|
|
115
|
+
/**
|
|
116
|
+
* Get NFTs via DAS (Digital Asset Standard) API - RECOMMENDED
|
|
117
|
+
* Supports Helius, Triton, and other DAS-compatible providers
|
|
118
|
+
* @private
|
|
119
|
+
*/
|
|
120
|
+
private getCollectionNFTsViaDAS;
|
|
121
|
+
/**
|
|
122
|
+
* Calculate on-chain collection statistics
|
|
123
|
+
* Analyzes holder distribution, supply, and concentration risk
|
|
124
|
+
* @param creatorAddress - Creator/collection address
|
|
125
|
+
* @returns Comprehensive on-chain statistics
|
|
126
|
+
*/
|
|
127
|
+
calculateOnChainStats(creatorAddress: string): Promise<OnChainCollectionStats>;
|
|
128
|
+
/**
|
|
129
|
+
* Get holder distribution analysis with concentration risk
|
|
130
|
+
* Uses Herfindahl-Hirschman Index (HHI) for concentration measurement
|
|
131
|
+
* @param creatorAddress - Creator/collection address
|
|
132
|
+
* @returns Holder distribution data with risk score
|
|
133
|
+
*/
|
|
134
|
+
getHolderDistribution(creatorAddress: string): Promise<{
|
|
135
|
+
totalHolders: number;
|
|
136
|
+
distribution: Map<string, number>;
|
|
137
|
+
concentrationRisk: number;
|
|
138
|
+
}>;
|
|
139
|
+
/**
|
|
140
|
+
* Get all NFTs owned by a specific wallet
|
|
141
|
+
* @param ownerAddress - Wallet address
|
|
142
|
+
* @returns Array of owned NFTs
|
|
143
|
+
*/
|
|
144
|
+
getNFTsByOwner(ownerAddress: string): Promise<OnChainNFT[]>;
|
|
145
|
+
/**
|
|
146
|
+
* Health check - verify RPC and DAS API connectivity
|
|
147
|
+
* @returns True if services are accessible
|
|
148
|
+
*/
|
|
149
|
+
healthCheck(): Promise<boolean>;
|
|
150
|
+
private logDebug;
|
|
151
|
+
private logInfo;
|
|
152
|
+
private logError;
|
|
153
|
+
}
|
|
154
|
+
//# sourceMappingURL=metaplex-onchain-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metaplex-onchain-client.d.ts","sourceRoot":"","sources":["../../../../src/nft/clients/metaplex-onchain-client.ts"],"names":[],"mappings":"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"}
|