@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,404 @@
|
|
|
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 { PublicKey } from '@solana/web3.js';
|
|
8
|
+
import { createBaseUmi } from '@metaplex-foundation/umi';
|
|
9
|
+
import { publicKey as umiPublicKey } from '@metaplex-foundation/umi';
|
|
10
|
+
import { fetchDigitalAsset, mplTokenMetadata, } from '@metaplex-foundation/mpl-token-metadata';
|
|
11
|
+
/**
|
|
12
|
+
* MetaplexOnChainClient - Direct on-chain NFT analysis
|
|
13
|
+
*
|
|
14
|
+
* Provides trustless, decentralized collection statistics without
|
|
15
|
+
* relying on centralized marketplace APIs. Uses Metaplex standards,
|
|
16
|
+
* Solana RPC queries, and optional DAS API for faster bulk operations.
|
|
17
|
+
*
|
|
18
|
+
* **Use Cases:**
|
|
19
|
+
* - Collections not listed on major marketplaces
|
|
20
|
+
* - Trustless verification of collection data
|
|
21
|
+
* - Real-time holder distribution analysis
|
|
22
|
+
* - Independent supply and holder calculations
|
|
23
|
+
*
|
|
24
|
+
* **Trade-offs:**
|
|
25
|
+
* - Slower than marketplace APIs (requires multiple RPC calls)
|
|
26
|
+
* - No historical price data (no marketplace context)
|
|
27
|
+
* - No marketplace-specific metrics (listings, sales, volume)
|
|
28
|
+
* - Higher RPC costs for large collections (1000+ NFTs)
|
|
29
|
+
*
|
|
30
|
+
* **Recommended:** Use with Helius DAS API for production deployments
|
|
31
|
+
*/
|
|
32
|
+
export class MetaplexOnChainClient {
|
|
33
|
+
connection;
|
|
34
|
+
rpcEndpoint;
|
|
35
|
+
timeout;
|
|
36
|
+
logLevel;
|
|
37
|
+
dasEndpoint;
|
|
38
|
+
umi;
|
|
39
|
+
constructor(config) {
|
|
40
|
+
this.connection = config.connection;
|
|
41
|
+
this.rpcEndpoint = config.rpcEndpoint || this.connection.rpcEndpoint;
|
|
42
|
+
this.timeout = config.timeout || 30000;
|
|
43
|
+
this.logLevel = config.logLevel || 'error';
|
|
44
|
+
this.dasEndpoint = config.dasEndpoint;
|
|
45
|
+
// Initialize Umi with Metaplex Token Metadata plugin
|
|
46
|
+
this.umi = createBaseUmi();
|
|
47
|
+
this.umi.use(mplTokenMetadata());
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Get collection metadata from on-chain data using Metaplex standards
|
|
51
|
+
* @param collectionMint - Collection mint address
|
|
52
|
+
* @returns Collection metadata parsed from Metaplex Token Metadata
|
|
53
|
+
*/
|
|
54
|
+
async getCollectionMetadata(collectionMint) {
|
|
55
|
+
this.logDebug(`Fetching on-chain metadata for collection: ${collectionMint}`);
|
|
56
|
+
try {
|
|
57
|
+
const mint = umiPublicKey(collectionMint);
|
|
58
|
+
// Fetch digital asset using Metaplex library
|
|
59
|
+
const digitalAsset = await fetchDigitalAsset(this.umi, mint);
|
|
60
|
+
// Extract metadata
|
|
61
|
+
const metadata = digitalAsset.metadata;
|
|
62
|
+
// Helper to unwrap Option types from Metaplex
|
|
63
|
+
const unwrapOption = (option) => {
|
|
64
|
+
if (!option || option.__option === 'None')
|
|
65
|
+
return undefined;
|
|
66
|
+
return option.__option === 'Some' ? option.value : option;
|
|
67
|
+
};
|
|
68
|
+
const creators = unwrapOption(metadata.creators) || [];
|
|
69
|
+
const collection = unwrapOption(metadata.collection);
|
|
70
|
+
const result = {
|
|
71
|
+
collectionMint,
|
|
72
|
+
name: metadata.name,
|
|
73
|
+
symbol: metadata.symbol,
|
|
74
|
+
uri: metadata.uri,
|
|
75
|
+
updateAuthority: metadata.updateAuthority.toString(),
|
|
76
|
+
creators: creators.map((creator) => ({
|
|
77
|
+
address: creator.address.toString(),
|
|
78
|
+
verified: creator.verified,
|
|
79
|
+
share: creator.share,
|
|
80
|
+
})),
|
|
81
|
+
sellerFeeBasisPoints: metadata.sellerFeeBasisPoints,
|
|
82
|
+
isMutable: metadata.isMutable,
|
|
83
|
+
collection: collection ? {
|
|
84
|
+
verified: collection.verified,
|
|
85
|
+
key: collection.key.toString(),
|
|
86
|
+
} : undefined,
|
|
87
|
+
};
|
|
88
|
+
this.logInfo(`Metadata fetched: ${result.name} (${result.symbol})`);
|
|
89
|
+
return result;
|
|
90
|
+
}
|
|
91
|
+
catch (error) {
|
|
92
|
+
this.logError(`Failed to fetch collection metadata: ${error.message}`);
|
|
93
|
+
throw new Error(`On-chain metadata fetch failed: ${error.message}`);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Get all NFTs in a collection by creator
|
|
98
|
+
* Uses DAS API if available (recommended), falls back to RPC
|
|
99
|
+
* @param creatorAddress - Creator/collection address
|
|
100
|
+
* @param options - Query options
|
|
101
|
+
* @returns Array of NFTs with owner and metadata
|
|
102
|
+
*/
|
|
103
|
+
async getCollectionNFTs(creatorAddress, options) {
|
|
104
|
+
this.logDebug(`Fetching NFTs for creator: ${creatorAddress}`);
|
|
105
|
+
try {
|
|
106
|
+
// Use DAS API if available (much faster for large collections)
|
|
107
|
+
if (this.dasEndpoint) {
|
|
108
|
+
return await this.getCollectionNFTsViaDAS(creatorAddress, options);
|
|
109
|
+
}
|
|
110
|
+
// Fallback to RPC queries (slower, more expensive)
|
|
111
|
+
this.logInfo('WARNING: Fetching via RPC - slow for large collections. Consider using DAS API (Helius)');
|
|
112
|
+
// For production: Implement getProgramAccounts with filters
|
|
113
|
+
// This requires significant RPC calls and is expensive
|
|
114
|
+
throw new Error('RPC-only collection fetching not implemented. Please provide dasEndpoint for production use.');
|
|
115
|
+
}
|
|
116
|
+
catch (error) {
|
|
117
|
+
this.logError(`Failed to fetch collection NFTs: ${error.message}`);
|
|
118
|
+
throw new Error(`On-chain NFT fetch failed: ${error.message}`);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Get NFTs via DAS (Digital Asset Standard) API - RECOMMENDED
|
|
123
|
+
* Supports Helius, Triton, and other DAS-compatible providers
|
|
124
|
+
* @private
|
|
125
|
+
*/
|
|
126
|
+
async getCollectionNFTsViaDAS(creatorAddress, options) {
|
|
127
|
+
if (!this.dasEndpoint) {
|
|
128
|
+
throw new Error('DAS endpoint not configured');
|
|
129
|
+
}
|
|
130
|
+
this.logDebug(`Fetching NFTs via DAS API: ${creatorAddress}`);
|
|
131
|
+
try {
|
|
132
|
+
const response = await fetch(this.dasEndpoint, {
|
|
133
|
+
method: 'POST',
|
|
134
|
+
headers: { 'Content-Type': 'application/json' },
|
|
135
|
+
body: JSON.stringify({
|
|
136
|
+
jsonrpc: '2.0',
|
|
137
|
+
id: 'get-assets-by-creator',
|
|
138
|
+
method: 'getAssetsByCreator',
|
|
139
|
+
params: {
|
|
140
|
+
creatorAddress,
|
|
141
|
+
onlyVerified: true,
|
|
142
|
+
page: options?.offset ? Math.floor(options.offset / 1000) + 1 : 1,
|
|
143
|
+
limit: options?.limit || 1000,
|
|
144
|
+
},
|
|
145
|
+
}),
|
|
146
|
+
});
|
|
147
|
+
const data = await response.json();
|
|
148
|
+
if (data.error) {
|
|
149
|
+
throw new Error(`DAS API error: ${data.error.message}`);
|
|
150
|
+
}
|
|
151
|
+
const assets = data.result?.items || [];
|
|
152
|
+
const nfts = assets.map((asset) => ({
|
|
153
|
+
mint: asset.id,
|
|
154
|
+
owner: asset.ownership?.owner || 'unknown',
|
|
155
|
+
metadata: {
|
|
156
|
+
name: asset.content?.metadata?.name || 'Unknown',
|
|
157
|
+
symbol: asset.content?.metadata?.symbol || '',
|
|
158
|
+
uri: asset.content?.json_uri || '',
|
|
159
|
+
sellerFeeBasisPoints: asset.royalty?.basis_points || 0,
|
|
160
|
+
},
|
|
161
|
+
collection: asset.grouping?.find((g) => g.group_key === 'collection')?.group_value,
|
|
162
|
+
verified: asset.grouping?.find((g) => g.group_key === 'collection')?.verified || false,
|
|
163
|
+
}));
|
|
164
|
+
this.logInfo(`Fetched ${nfts.length} NFTs via DAS API (total in response)`);
|
|
165
|
+
return nfts;
|
|
166
|
+
}
|
|
167
|
+
catch (error) {
|
|
168
|
+
this.logError(`DAS API fetch failed: ${error.message}`);
|
|
169
|
+
throw error;
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Calculate on-chain collection statistics
|
|
174
|
+
* Analyzes holder distribution, supply, and concentration risk
|
|
175
|
+
* @param creatorAddress - Creator/collection address
|
|
176
|
+
* @returns Comprehensive on-chain statistics
|
|
177
|
+
*/
|
|
178
|
+
async calculateOnChainStats(creatorAddress) {
|
|
179
|
+
this.logDebug(`Calculating on-chain stats for: ${creatorAddress}`);
|
|
180
|
+
try {
|
|
181
|
+
// Fetch all NFTs in collection
|
|
182
|
+
const nfts = await this.getCollectionNFTs(creatorAddress);
|
|
183
|
+
// Calculate holder distribution
|
|
184
|
+
const holderMap = new Map();
|
|
185
|
+
let verifiedCount = 0;
|
|
186
|
+
for (const nft of nfts) {
|
|
187
|
+
if (nft.owner && nft.owner !== 'unknown') {
|
|
188
|
+
holderMap.set(nft.owner, (holderMap.get(nft.owner) || 0) + 1);
|
|
189
|
+
}
|
|
190
|
+
if (nft.verified) {
|
|
191
|
+
verifiedCount++;
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
const totalSupply = nfts.length;
|
|
195
|
+
const uniqueHolders = holderMap.size;
|
|
196
|
+
// Calculate holder distribution (whales/medium/retail)
|
|
197
|
+
const holderCounts = Array.from(holderMap.entries());
|
|
198
|
+
const distribution = {
|
|
199
|
+
whales: 0,
|
|
200
|
+
medium: 0,
|
|
201
|
+
retail: 0,
|
|
202
|
+
};
|
|
203
|
+
for (const [, count] of holderCounts) {
|
|
204
|
+
const percentage = (count / totalSupply) * 100;
|
|
205
|
+
if (percentage > 10) {
|
|
206
|
+
distribution.whales++;
|
|
207
|
+
}
|
|
208
|
+
else if (percentage >= 1) {
|
|
209
|
+
distribution.medium++;
|
|
210
|
+
}
|
|
211
|
+
else {
|
|
212
|
+
distribution.retail++;
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
// Get top 10 holders
|
|
216
|
+
const topHolders = holderCounts
|
|
217
|
+
.sort((a, b) => b[1] - a[1])
|
|
218
|
+
.slice(0, 10)
|
|
219
|
+
.map(([address, count]) => ({
|
|
220
|
+
address,
|
|
221
|
+
count,
|
|
222
|
+
percentage: (count / totalSupply) * 100,
|
|
223
|
+
}));
|
|
224
|
+
const stats = {
|
|
225
|
+
collectionMint: creatorAddress,
|
|
226
|
+
totalSupply,
|
|
227
|
+
verifiedNFTs: verifiedCount,
|
|
228
|
+
holders: holderMap.size,
|
|
229
|
+
uniqueHolders,
|
|
230
|
+
holderDistribution: distribution,
|
|
231
|
+
topHolders,
|
|
232
|
+
nftsByCreator: totalSupply,
|
|
233
|
+
dataSource: 'on-chain',
|
|
234
|
+
timestamp: Date.now(),
|
|
235
|
+
};
|
|
236
|
+
this.logInfo(`Stats calculated: ${totalSupply} NFTs, ${uniqueHolders} unique holders`);
|
|
237
|
+
return stats;
|
|
238
|
+
}
|
|
239
|
+
catch (error) {
|
|
240
|
+
this.logError(`Failed to calculate on-chain stats: ${error.message}`);
|
|
241
|
+
throw new Error(`On-chain stats calculation failed: ${error.message}`);
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
/**
|
|
245
|
+
* Get holder distribution analysis with concentration risk
|
|
246
|
+
* Uses Herfindahl-Hirschman Index (HHI) for concentration measurement
|
|
247
|
+
* @param creatorAddress - Creator/collection address
|
|
248
|
+
* @returns Holder distribution data with risk score
|
|
249
|
+
*/
|
|
250
|
+
async getHolderDistribution(creatorAddress) {
|
|
251
|
+
this.logDebug(`Analyzing holder distribution for: ${creatorAddress}`);
|
|
252
|
+
try {
|
|
253
|
+
const stats = await this.calculateOnChainStats(creatorAddress);
|
|
254
|
+
const distribution = new Map();
|
|
255
|
+
stats.topHolders.forEach(holder => {
|
|
256
|
+
distribution.set(holder.address, holder.count);
|
|
257
|
+
});
|
|
258
|
+
// Calculate concentration risk using Herfindahl-Hirschman Index
|
|
259
|
+
// HHI = sum of squared market shares
|
|
260
|
+
let hhi = 0;
|
|
261
|
+
stats.topHolders.forEach(holder => {
|
|
262
|
+
const share = holder.percentage / 100;
|
|
263
|
+
hhi += share * share;
|
|
264
|
+
});
|
|
265
|
+
const concentrationRisk = Math.min(100, hhi * 100);
|
|
266
|
+
this.logInfo(`Distribution analyzed: ${stats.uniqueHolders} holders, concentration risk: ${concentrationRisk.toFixed(2)}`);
|
|
267
|
+
return {
|
|
268
|
+
totalHolders: stats.uniqueHolders,
|
|
269
|
+
distribution,
|
|
270
|
+
concentrationRisk,
|
|
271
|
+
};
|
|
272
|
+
}
|
|
273
|
+
catch (error) {
|
|
274
|
+
this.logError(`Failed to analyze holder distribution: ${error.message}`);
|
|
275
|
+
throw new Error(`Holder distribution analysis failed: ${error.message}`);
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
/**
|
|
279
|
+
* Get all NFTs owned by a specific wallet
|
|
280
|
+
* @param ownerAddress - Wallet address
|
|
281
|
+
* @returns Array of owned NFTs
|
|
282
|
+
*/
|
|
283
|
+
async getNFTsByOwner(ownerAddress) {
|
|
284
|
+
this.logDebug(`Fetching NFTs for owner: ${ownerAddress}`);
|
|
285
|
+
try {
|
|
286
|
+
// Use DAS API if available (fastest method)
|
|
287
|
+
if (this.dasEndpoint) {
|
|
288
|
+
const response = await fetch(this.dasEndpoint, {
|
|
289
|
+
method: 'POST',
|
|
290
|
+
headers: { 'Content-Type': 'application/json' },
|
|
291
|
+
body: JSON.stringify({
|
|
292
|
+
jsonrpc: '2.0',
|
|
293
|
+
id: 'get-assets-by-owner',
|
|
294
|
+
method: 'getAssetsByOwner',
|
|
295
|
+
params: {
|
|
296
|
+
ownerAddress,
|
|
297
|
+
page: 1,
|
|
298
|
+
limit: 1000,
|
|
299
|
+
},
|
|
300
|
+
}),
|
|
301
|
+
});
|
|
302
|
+
const data = await response.json();
|
|
303
|
+
if (data.error) {
|
|
304
|
+
throw new Error(`DAS API error: ${data.error.message}`);
|
|
305
|
+
}
|
|
306
|
+
const assets = data.result?.items || [];
|
|
307
|
+
const nfts = assets.map((asset) => ({
|
|
308
|
+
mint: asset.id,
|
|
309
|
+
owner: ownerAddress,
|
|
310
|
+
metadata: {
|
|
311
|
+
name: asset.content?.metadata?.name || 'Unknown',
|
|
312
|
+
symbol: asset.content?.metadata?.symbol || '',
|
|
313
|
+
uri: asset.content?.json_uri || '',
|
|
314
|
+
sellerFeeBasisPoints: asset.royalty?.basis_points || 0,
|
|
315
|
+
},
|
|
316
|
+
collection: asset.grouping?.find((g) => g.group_key === 'collection')?.group_value,
|
|
317
|
+
verified: asset.grouping?.find((g) => g.group_key === 'collection')?.verified || false,
|
|
318
|
+
}));
|
|
319
|
+
this.logInfo(`Fetched ${nfts.length} NFTs for owner via DAS`);
|
|
320
|
+
return nfts;
|
|
321
|
+
}
|
|
322
|
+
// Fallback to Token Program queries (slower)
|
|
323
|
+
this.logInfo('Fetching NFTs via Token Program (no DAS API)');
|
|
324
|
+
const owner = new PublicKey(ownerAddress);
|
|
325
|
+
const tokenAccounts = await this.connection.getParsedTokenAccountsByOwner(owner, {
|
|
326
|
+
programId: new PublicKey('TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA'),
|
|
327
|
+
});
|
|
328
|
+
// Filter for NFTs (amount = 1, decimals = 0)
|
|
329
|
+
const nftAccounts = tokenAccounts.value.filter(account => {
|
|
330
|
+
const parsed = account.account.data.parsed;
|
|
331
|
+
return parsed.info.tokenAmount.decimals === 0 &&
|
|
332
|
+
parsed.info.tokenAmount.amount === '1';
|
|
333
|
+
});
|
|
334
|
+
const nfts = nftAccounts.map(account => ({
|
|
335
|
+
mint: account.account.data.parsed.info.mint,
|
|
336
|
+
owner: ownerAddress,
|
|
337
|
+
metadata: {
|
|
338
|
+
name: 'Unknown', // Would require additional metadata fetch
|
|
339
|
+
symbol: '',
|
|
340
|
+
uri: '',
|
|
341
|
+
sellerFeeBasisPoints: 0,
|
|
342
|
+
},
|
|
343
|
+
verified: false,
|
|
344
|
+
}));
|
|
345
|
+
this.logInfo(`Fetched ${nfts.length} NFTs for owner via Token Program`);
|
|
346
|
+
return nfts;
|
|
347
|
+
}
|
|
348
|
+
catch (error) {
|
|
349
|
+
this.logError(`Failed to fetch NFTs by owner: ${error.message}`);
|
|
350
|
+
throw new Error(`Owner NFT fetch failed: ${error.message}`);
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
/**
|
|
354
|
+
* Health check - verify RPC and DAS API connectivity
|
|
355
|
+
* @returns True if services are accessible
|
|
356
|
+
*/
|
|
357
|
+
async healthCheck() {
|
|
358
|
+
try {
|
|
359
|
+
// Check RPC connectivity
|
|
360
|
+
await this.connection.getLatestBlockhash();
|
|
361
|
+
// Check DAS API if configured
|
|
362
|
+
if (this.dasEndpoint) {
|
|
363
|
+
const response = await fetch(this.dasEndpoint, {
|
|
364
|
+
method: 'POST',
|
|
365
|
+
headers: { 'Content-Type': 'application/json' },
|
|
366
|
+
body: JSON.stringify({
|
|
367
|
+
jsonrpc: '2.0',
|
|
368
|
+
id: 'health-check',
|
|
369
|
+
method: 'getHealth',
|
|
370
|
+
params: [],
|
|
371
|
+
}),
|
|
372
|
+
});
|
|
373
|
+
if (!response.ok) {
|
|
374
|
+
this.logError(`DAS API health check failed: ${response.status}`);
|
|
375
|
+
return false;
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
return true;
|
|
379
|
+
}
|
|
380
|
+
catch (error) {
|
|
381
|
+
this.logError(`Health check failed: ${error.message}`);
|
|
382
|
+
return false;
|
|
383
|
+
}
|
|
384
|
+
}
|
|
385
|
+
// =========================================================================
|
|
386
|
+
// Private Methods - Logging
|
|
387
|
+
// =========================================================================
|
|
388
|
+
logDebug(message) {
|
|
389
|
+
if (this.logLevel === 'debug') {
|
|
390
|
+
console.log(`[MetaplexOnChainClient:DEBUG] ${message}`);
|
|
391
|
+
}
|
|
392
|
+
}
|
|
393
|
+
logInfo(message) {
|
|
394
|
+
if (this.logLevel === 'debug' || this.logLevel === 'info') {
|
|
395
|
+
console.log(`[MetaplexOnChainClient:INFO] ${message}`);
|
|
396
|
+
}
|
|
397
|
+
}
|
|
398
|
+
logError(message) {
|
|
399
|
+
if (this.logLevel !== 'none') {
|
|
400
|
+
console.error(`[MetaplexOnChainClient:ERROR] ${message}`);
|
|
401
|
+
}
|
|
402
|
+
}
|
|
403
|
+
}
|
|
404
|
+
//# sourceMappingURL=metaplex-onchain-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metaplex-onchain-client.js","sourceRoot":"","sources":["../../../../src/nft/clients/metaplex-onchain-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tensor API Client
|
|
3
|
+
* Production-ready integration with Tensor marketplace API
|
|
4
|
+
* @see https://docs.tensor.trade/tensorswap-api
|
|
5
|
+
*/
|
|
6
|
+
import { TensorCollectionStats, TensorListing, TensorSale } from '../types.nft';
|
|
7
|
+
export interface TensorClientConfig {
|
|
8
|
+
baseUrl?: string;
|
|
9
|
+
apiKey?: string;
|
|
10
|
+
rateLimit?: number;
|
|
11
|
+
timeout?: number;
|
|
12
|
+
fetch?: typeof fetch;
|
|
13
|
+
logLevel?: 'debug' | 'info' | 'error' | 'none';
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* TensorClient - Tensor API integration
|
|
17
|
+
* Handles rate limiting, error handling, and response validation
|
|
18
|
+
*/
|
|
19
|
+
export declare class TensorClient {
|
|
20
|
+
private readonly baseUrl;
|
|
21
|
+
private readonly apiKey?;
|
|
22
|
+
private readonly timeout;
|
|
23
|
+
private readonly fetchImpl;
|
|
24
|
+
private readonly logLevel;
|
|
25
|
+
private readonly rateLimiter;
|
|
26
|
+
constructor(config?: TensorClientConfig);
|
|
27
|
+
/**
|
|
28
|
+
* Get collection statistics from Tensor
|
|
29
|
+
* @param slug - Collection slug (e.g. "mad_lads")
|
|
30
|
+
* @returns Collection statistics including floor price, volume, sales
|
|
31
|
+
*/
|
|
32
|
+
getCollectionStats(slug: string): Promise<TensorCollectionStats>;
|
|
33
|
+
/**
|
|
34
|
+
* Get current floor price for a collection
|
|
35
|
+
* @param slug - Collection slug
|
|
36
|
+
* @returns Floor price in lamports
|
|
37
|
+
*/
|
|
38
|
+
getFloorPrice(slug: string): Promise<number>;
|
|
39
|
+
/**
|
|
40
|
+
* Get active listings for a collection
|
|
41
|
+
* @param slug - Collection slug
|
|
42
|
+
* @param options - Pagination and filter options
|
|
43
|
+
* @returns Array of active listings
|
|
44
|
+
*/
|
|
45
|
+
getListings(slug: string, options?: {
|
|
46
|
+
limit?: number;
|
|
47
|
+
page?: number;
|
|
48
|
+
sortBy?: 'price' | 'listedAt';
|
|
49
|
+
sortDirection?: 'asc' | 'desc';
|
|
50
|
+
}): Promise<TensorListing[]>;
|
|
51
|
+
/**
|
|
52
|
+
* Get recent sales for a collection
|
|
53
|
+
* @param slug - Collection slug
|
|
54
|
+
* @param options - Pagination options
|
|
55
|
+
* @returns Array of recent sales
|
|
56
|
+
*/
|
|
57
|
+
getSales(slug: string, options?: {
|
|
58
|
+
limit?: number;
|
|
59
|
+
page?: number;
|
|
60
|
+
}): Promise<TensorSale[]>;
|
|
61
|
+
/**
|
|
62
|
+
* Get listing for a specific NFT mint
|
|
63
|
+
* @param mint - NFT mint address
|
|
64
|
+
* @returns Listing information or null if not listed
|
|
65
|
+
*/
|
|
66
|
+
getMintListing(mint: string): Promise<TensorListing | null>;
|
|
67
|
+
/**
|
|
68
|
+
* Health check - verify Tensor API is accessible
|
|
69
|
+
* @returns True if API is healthy
|
|
70
|
+
*/
|
|
71
|
+
healthCheck(): Promise<boolean>;
|
|
72
|
+
private makeRequest;
|
|
73
|
+
private enforceRateLimit;
|
|
74
|
+
private isNotFoundError;
|
|
75
|
+
private logDebug;
|
|
76
|
+
private logInfo;
|
|
77
|
+
private logError;
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=tensor-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tensor-client.d.ts","sourceRoot":"","sources":["../../../../src/nft/clients/tensor-client.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,qBAAqB,EACrB,aAAa,EACb,UAAU,EAGX,MAAM,cAAc,CAAC;AAEtB,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;CAChD;AAOD;;;GAGG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAe;IACzC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAsC;IAC/D,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAc;gBAE9B,MAAM,CAAC,EAAE,kBAAkB;IA0BvC;;;;OAIG;IACG,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAUtE;;;;OAIG;IACG,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAKlD;;;;;OAKG;IACG,WAAW,CACf,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;QACR,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,MAAM,CAAC,EAAE,OAAO,GAAG,UAAU,CAAC;QAC9B,aAAa,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;KAChC,GACA,OAAO,CAAC,aAAa,EAAE,CAAC;IAgB3B;;;;;OAKG;IACG,QAAQ,CACZ,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;QACR,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,GACA,OAAO,CAAC,UAAU,EAAE,CAAC;IAcxB;;;;OAIG;IACG,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IAiBjE;;;OAGG;IACG,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;YAevB,WAAW;YA6DX,gBAAgB;IAa9B,OAAO,CAAC,eAAe;IAOvB,OAAO,CAAC,QAAQ;IAMhB,OAAO,CAAC,OAAO;IAMf,OAAO,CAAC,QAAQ;CAKjB"}
|