@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,869 @@
|
|
|
1
|
+
# AI Module - OOBE Protocol
|
|
2
|
+
|
|
3
|
+
Professional AI module with OOBE Protocol implementation for advanced Solana operations including PDA management, Zero-Combine data fetching, and Merkle tree operations.
|
|
4
|
+
|
|
5
|
+
## Table of Contents
|
|
6
|
+
|
|
7
|
+
- [Architecture](#architecture)
|
|
8
|
+
- [Features](#features)
|
|
9
|
+
- [Components](#components)
|
|
10
|
+
- [OOBE Protocol](#oobe-protocol)
|
|
11
|
+
- [Implementation](#implementation)
|
|
12
|
+
- [Best Practices](#best-practices)
|
|
13
|
+
- [API Reference](#api-reference)
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## Architecture
|
|
18
|
+
|
|
19
|
+
```
|
|
20
|
+
┌─────────────────────────────────────────────────────────────────┐
|
|
21
|
+
│ AI Module (OOBE) │
|
|
22
|
+
├─────────────────────────────────────────────────────────────────┤
|
|
23
|
+
│ │
|
|
24
|
+
│ ┌────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │
|
|
25
|
+
│ │ PDA Manager │ │ Zero-Combine │ │ Merkle │ │
|
|
26
|
+
│ │ (Address │→ │ Fetcher │→ │ Operations │ │
|
|
27
|
+
│ │ Derivation) │ │ (Data Reconst.) │ │ (Proof Gen.) │ │
|
|
28
|
+
│ └────────────────┘ └─────────────────┘ └─────────────────┘ │
|
|
29
|
+
│ ↓ ↓ ↓ │
|
|
30
|
+
│ ┌────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │
|
|
31
|
+
│ │ On-Chain │ │ Batch Proof │ │ Transaction │ │
|
|
32
|
+
│ │ Storage │ │ Verification │ │ Signing │ │
|
|
33
|
+
│ │ (Solana) │ │ (Multi-PDA) │ │ (Optional) │ │
|
|
34
|
+
│ └────────────────┘ └─────────────────┘ └─────────────────┘ │
|
|
35
|
+
│ │
|
|
36
|
+
├─────────────────────────────────────────────────────────────────┤
|
|
37
|
+
│ OOBE Protocol Layer │
|
|
38
|
+
└─────────────────────────────────────────────────────────────────┘
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
---
|
|
42
|
+
|
|
43
|
+
## Features
|
|
44
|
+
|
|
45
|
+
### Core Capabilities
|
|
46
|
+
|
|
47
|
+
| Feature | Description | Status |
|
|
48
|
+
|---------|-------------|--------|
|
|
49
|
+
| **PDA Management** | Program Derived Address generation and verification | Production |
|
|
50
|
+
| **Zero-Combine** | Large dataset reconstruction from on-chain chunks | Production |
|
|
51
|
+
| **Merkle Operations** | Tree generation, proof creation, verification | Production |
|
|
52
|
+
| **Batch Operations** | Multi-wallet and multi-PDA batch processing | Production |
|
|
53
|
+
| **Transaction Signing** | Optional transaction construction and signing | Production |
|
|
54
|
+
| **OOBE Protocol** | Full OOBE Protocol implementation | Production |
|
|
55
|
+
| **Retry Logic** | Automatic retry with exponential backoff | Production |
|
|
56
|
+
| **Event Emission** | Progress tracking and error handling | Production |
|
|
57
|
+
|
|
58
|
+
---
|
|
59
|
+
|
|
60
|
+
## Components
|
|
61
|
+
|
|
62
|
+
### 1. PDA Manager
|
|
63
|
+
|
|
64
|
+
Program Derived Address management for on-chain Merkle data storage.
|
|
65
|
+
|
|
66
|
+
```typescript
|
|
67
|
+
import { SynapseClient } from '@synapse/client-sdk';
|
|
68
|
+
import { PDAManager } from '@synapse/client-sdk/ai';
|
|
69
|
+
|
|
70
|
+
const client = new SynapseClient({
|
|
71
|
+
endpoint: process.env.SYNAPSE_ENDPOINT!,
|
|
72
|
+
apiKey: process.env.SYNAPSE_API_KEY
|
|
73
|
+
});
|
|
74
|
+
|
|
75
|
+
const pdaManager = new PDAManager(client, 'walletAddress');
|
|
76
|
+
|
|
77
|
+
// Get PDAs for wallet
|
|
78
|
+
const pdas = pdaManager.getUserPDAs();
|
|
79
|
+
console.log('Leaf PDA:', pdas.leafPDA.toBase58());
|
|
80
|
+
console.log('Root PDA:', pdas.rootPDA.toBase58());
|
|
81
|
+
|
|
82
|
+
// Check PDA existence
|
|
83
|
+
const { leafExists, rootExists } = await pdaManager.checkPDAExistence(pdas);
|
|
84
|
+
|
|
85
|
+
// Batch check multiple PDAs
|
|
86
|
+
const accounts = await pdaManager.getBatchPDAAccountInfo([
|
|
87
|
+
pdas.leafPDA,
|
|
88
|
+
pdas.rootPDA
|
|
89
|
+
]);
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
**Features:**
|
|
93
|
+
- Deterministic PDA derivation
|
|
94
|
+
- Existence verification
|
|
95
|
+
- Batch account queries
|
|
96
|
+
- Event emission for tracking
|
|
97
|
+
|
|
98
|
+
---
|
|
99
|
+
|
|
100
|
+
### 2. Zero-Combine Fetcher
|
|
101
|
+
|
|
102
|
+
Large dataset reconstruction from on-chain transaction chunks.
|
|
103
|
+
|
|
104
|
+
```typescript
|
|
105
|
+
import { ZeroCombineFetcher } from '@synapse/client-sdk/ai';
|
|
106
|
+
|
|
107
|
+
const fetcher = new ZeroCombineFetcher(
|
|
108
|
+
client,
|
|
109
|
+
'walletAddress',
|
|
110
|
+
{
|
|
111
|
+
batchSize: 100,
|
|
112
|
+
delayMs: 2000,
|
|
113
|
+
maxRetries: 3,
|
|
114
|
+
}
|
|
115
|
+
);
|
|
116
|
+
|
|
117
|
+
// Fetch and reconstruct all proof records
|
|
118
|
+
const result = await fetcher.execute();
|
|
119
|
+
console.log('Proof records:', result.tools);
|
|
120
|
+
console.log('Merkle roots:', result.roots);
|
|
121
|
+
|
|
122
|
+
// Batch fetch for multiple wallets
|
|
123
|
+
const wallets = ['wallet1', 'wallet2', 'wallet3'];
|
|
124
|
+
const resultsMap = await fetcher.batchExecuteForWallets(wallets);
|
|
125
|
+
|
|
126
|
+
wallets.forEach(wallet => {
|
|
127
|
+
const result = resultsMap.get(wallet);
|
|
128
|
+
console.log(`${wallet}: ${result?.tools.length || 0} records`);
|
|
129
|
+
});
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
**Features:**
|
|
133
|
+
- Automatic pagination with configurable batch size
|
|
134
|
+
- Chunked data reconstruction
|
|
135
|
+
- Multi-wallet batch processing
|
|
136
|
+
- Retry logic with exponential backoff
|
|
137
|
+
- Progress tracking via events
|
|
138
|
+
|
|
139
|
+
---
|
|
140
|
+
|
|
141
|
+
### 3. Merkle Operations
|
|
142
|
+
|
|
143
|
+
Complete Merkle tree operations: generation, proof creation, and verification.
|
|
144
|
+
|
|
145
|
+
#### Basic Usage (Without Signing)
|
|
146
|
+
|
|
147
|
+
```typescript
|
|
148
|
+
import { MerkleOperation } from '@synapse/client-sdk/ai';
|
|
149
|
+
|
|
150
|
+
const merkle = new MerkleOperation(
|
|
151
|
+
client,
|
|
152
|
+
'walletAddress',
|
|
153
|
+
{
|
|
154
|
+
batchSize: 50,
|
|
155
|
+
delayMs: 1000,
|
|
156
|
+
maxRetries: 3,
|
|
157
|
+
}
|
|
158
|
+
);
|
|
159
|
+
|
|
160
|
+
// Create Merkle tree
|
|
161
|
+
const data = ['event1', 'event2', 'event3'];
|
|
162
|
+
const root = merkle.createMerkleTree(data);
|
|
163
|
+
console.log('Merkle Root:', root);
|
|
164
|
+
|
|
165
|
+
// Generate proof
|
|
166
|
+
const proof = merkle.getMerkleProof('event1');
|
|
167
|
+
console.log('Proof:', proof);
|
|
168
|
+
|
|
169
|
+
// Verify proof
|
|
170
|
+
const isValid = merkle.verifyProof(
|
|
171
|
+
proof.leaf,
|
|
172
|
+
proof.proof,
|
|
173
|
+
proof.root
|
|
174
|
+
);
|
|
175
|
+
console.log('Valid:', isValid);
|
|
176
|
+
|
|
177
|
+
// Batch verify multiple proofs
|
|
178
|
+
const proofs = [
|
|
179
|
+
{ leaf: 'hash1', proof: ['hash2'], root: 'rootHash' },
|
|
180
|
+
{ leaf: 'hash3', proof: ['hash4'], root: 'rootHash2' },
|
|
181
|
+
];
|
|
182
|
+
const results = merkle.batchVerifyProofs(proofs);
|
|
183
|
+
console.log('Verification results:', results);
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
#### Advanced Usage (With Transaction Signing)
|
|
187
|
+
|
|
188
|
+
```typescript
|
|
189
|
+
import { Connection, Keypair } from '@solana/web3.js';
|
|
190
|
+
import { MerkleOperation } from '@synapse/client-sdk/ai';
|
|
191
|
+
|
|
192
|
+
// Setup Connection and Keypair
|
|
193
|
+
const connection = new Connection('https://api.mainnet-beta.solana.com');
|
|
194
|
+
const signer = Keypair.fromSecretKey(/* your secret key */);
|
|
195
|
+
|
|
196
|
+
const merkle = new MerkleOperation(
|
|
197
|
+
client,
|
|
198
|
+
signer.publicKey.toBase58(),
|
|
199
|
+
{
|
|
200
|
+
batchSize: 50,
|
|
201
|
+
delayMs: 1000,
|
|
202
|
+
maxRetries: 3,
|
|
203
|
+
}
|
|
204
|
+
);
|
|
205
|
+
|
|
206
|
+
// Inscribe Merkle root on-chain
|
|
207
|
+
const data = ['event1', 'event2', 'event3'];
|
|
208
|
+
const root = merkle.createMerkleTree(data);
|
|
209
|
+
|
|
210
|
+
const txSignature = await merkle.inscribeMerkleRoot(
|
|
211
|
+
root,
|
|
212
|
+
connection,
|
|
213
|
+
signer
|
|
214
|
+
);
|
|
215
|
+
|
|
216
|
+
console.log('Transaction signature:', txSignature);
|
|
217
|
+
console.log('Explorer:', `https://solscan.io/tx/${txSignature}`);
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
**Features:**
|
|
221
|
+
- SHA256-based Merkle tree construction
|
|
222
|
+
- Efficient proof generation
|
|
223
|
+
- Batch proof verification
|
|
224
|
+
- On-chain inscription (optional)
|
|
225
|
+
- Transaction construction and signing
|
|
226
|
+
|
|
227
|
+
---
|
|
228
|
+
|
|
229
|
+
## OOBE Protocol
|
|
230
|
+
|
|
231
|
+
### Protocol Overview
|
|
232
|
+
|
|
233
|
+
OOBE (On-chain Off-chain Blockchain Encoding) Protocol is a data storage and retrieval system that:
|
|
234
|
+
|
|
235
|
+
1. **Splits large datasets** into manageable chunks
|
|
236
|
+
2. **Stores chunks** as Solana transaction memos
|
|
237
|
+
3. **Derives PDAs** for organized storage
|
|
238
|
+
4. **Reconstructs data** from distributed chunks
|
|
239
|
+
5. **Verifies integrity** using Merkle proofs
|
|
240
|
+
|
|
241
|
+
### Protocol Architecture
|
|
242
|
+
|
|
243
|
+
```
|
|
244
|
+
┌─────────────────────────────────────────────────────────────┐
|
|
245
|
+
│ OOBE Protocol Flow │
|
|
246
|
+
├─────────────────────────────────────────────────────────────┤
|
|
247
|
+
│ │
|
|
248
|
+
│ 1. Data Chunking │
|
|
249
|
+
│ [Large Dataset] → [Chunk1, Chunk2, ..., ChunkN] │
|
|
250
|
+
│ │
|
|
251
|
+
│ 2. PDA Derivation │
|
|
252
|
+
│ [Wallet + Program] → [LeafPDA, RootPDA] │
|
|
253
|
+
│ │
|
|
254
|
+
│ 3. On-Chain Storage │
|
|
255
|
+
│ [Chunks] → [Solana Transactions with Memos] │
|
|
256
|
+
│ │
|
|
257
|
+
│ 4. Data Reconstruction │
|
|
258
|
+
│ [Transaction History] → [Combined Dataset] │
|
|
259
|
+
│ │
|
|
260
|
+
│ 5. Merkle Verification │
|
|
261
|
+
│ [Dataset + Proof] → [Verified Data] │
|
|
262
|
+
│ │
|
|
263
|
+
└─────────────────────────────────────────────────────────────┘
|
|
264
|
+
```
|
|
265
|
+
|
|
266
|
+
### Use Cases
|
|
267
|
+
|
|
268
|
+
| Use Case | Description | Benefits |
|
|
269
|
+
|----------|-------------|----------|
|
|
270
|
+
| **AI Agent Storage** | Store AI agent state and memory | Decentralized, verifiable |
|
|
271
|
+
| **Event Logging** | Immutable audit trail | Tamper-proof, transparent |
|
|
272
|
+
| **Data Provenance** | Proof of data origin | Cryptographic verification |
|
|
273
|
+
| **Distributed Storage** | Large dataset distribution | Scalable, resilient |
|
|
274
|
+
|
|
275
|
+
---
|
|
276
|
+
|
|
277
|
+
## Implementation
|
|
278
|
+
|
|
279
|
+
### Complete Example: AI Agent State Storage
|
|
280
|
+
|
|
281
|
+
```typescript
|
|
282
|
+
import { SynapseClient } from '@synapse/client-sdk';
|
|
283
|
+
import {
|
|
284
|
+
PDAManager,
|
|
285
|
+
ZeroCombineFetcher,
|
|
286
|
+
MerkleOperation
|
|
287
|
+
} from '@synapse/client-sdk/ai';
|
|
288
|
+
|
|
289
|
+
// Initialize client
|
|
290
|
+
const client = new SynapseClient({
|
|
291
|
+
endpoint: process.env.SYNAPSE_ENDPOINT!,
|
|
292
|
+
apiKey: process.env.SYNAPSE_API_KEY,
|
|
293
|
+
});
|
|
294
|
+
|
|
295
|
+
// 1. Derive PDAs for agent storage
|
|
296
|
+
const pdaManager = new PDAManager(client, 'agentWalletAddress');
|
|
297
|
+
const pdas = pdaManager.getUserPDAs();
|
|
298
|
+
console.log('Agent PDAs:', pdas);
|
|
299
|
+
|
|
300
|
+
// 2. Verify PDAs exist
|
|
301
|
+
const { leafExists, rootExists } = await pdaManager.checkPDAExistence(pdas);
|
|
302
|
+
if (!leafExists || !rootExists) {
|
|
303
|
+
console.log('PDAs not initialized. Creating...');
|
|
304
|
+
// Initialize PDAs (requires signing)
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
// 3. Fetch agent state from on-chain
|
|
308
|
+
const fetcher = new ZeroCombineFetcher(client, 'agentWalletAddress');
|
|
309
|
+
const agentState = await fetcher.execute();
|
|
310
|
+
console.log('Agent state loaded:', agentState.tools.length, 'records');
|
|
311
|
+
|
|
312
|
+
// 4. Create Merkle proof for verification
|
|
313
|
+
const merkle = new MerkleOperation(client, 'agentWalletAddress');
|
|
314
|
+
const events = agentState.tools.map(tool => JSON.stringify(tool));
|
|
315
|
+
const merkleRoot = merkle.createMerkleTree(events);
|
|
316
|
+
|
|
317
|
+
// 5. Verify specific event
|
|
318
|
+
const eventToVerify = events[0];
|
|
319
|
+
const proof = merkle.getMerkleProof(eventToVerify);
|
|
320
|
+
const isValid = merkle.verifyProof(proof.leaf, proof.proof, proof.root);
|
|
321
|
+
|
|
322
|
+
console.log('Event verification:', isValid ? 'VALID' : 'INVALID');
|
|
323
|
+
```
|
|
324
|
+
|
|
325
|
+
### Batch Processing Multiple Agents
|
|
326
|
+
|
|
327
|
+
```typescript
|
|
328
|
+
// Batch process multiple AI agents
|
|
329
|
+
const agentWallets = [
|
|
330
|
+
'agent1WalletAddress',
|
|
331
|
+
'agent2WalletAddress',
|
|
332
|
+
'agent3WalletAddress',
|
|
333
|
+
];
|
|
334
|
+
|
|
335
|
+
const fetcher = new ZeroCombineFetcher(client, agentWallets[0]);
|
|
336
|
+
const resultsMap = await fetcher.batchExecuteForWallets(agentWallets);
|
|
337
|
+
|
|
338
|
+
agentWallets.forEach(wallet => {
|
|
339
|
+
const state = resultsMap.get(wallet);
|
|
340
|
+
if (state) {
|
|
341
|
+
console.log(`Agent ${wallet}:`);
|
|
342
|
+
console.log(` Events: ${state.tools.length}`);
|
|
343
|
+
console.log(` Roots: ${state.roots.length}`);
|
|
344
|
+
}
|
|
345
|
+
});
|
|
346
|
+
```
|
|
347
|
+
|
|
348
|
+
---
|
|
349
|
+
|
|
350
|
+
## Best Practices
|
|
351
|
+
|
|
352
|
+
### 1. PDA Management
|
|
353
|
+
|
|
354
|
+
```typescript
|
|
355
|
+
// ✅ Recommended: Cache PDAs
|
|
356
|
+
const pdaCache = new Map<string, { leafPDA: PublicKey; rootPDA: PublicKey }>();
|
|
357
|
+
|
|
358
|
+
function getPDACached(wallet: string) {
|
|
359
|
+
if (pdaCache.has(wallet)) {
|
|
360
|
+
return pdaCache.get(wallet)!;
|
|
361
|
+
}
|
|
362
|
+
|
|
363
|
+
const pdaManager = new PDAManager(client, wallet);
|
|
364
|
+
const pdas = pdaManager.getUserPDAs();
|
|
365
|
+
pdaCache.set(wallet, pdas);
|
|
366
|
+
return pdas;
|
|
367
|
+
}
|
|
368
|
+
|
|
369
|
+
// ❌ Not recommended: Create new manager every time
|
|
370
|
+
const pdas = new PDAManager(client, wallet).getUserPDAs(); // Inefficient
|
|
371
|
+
```
|
|
372
|
+
|
|
373
|
+
### 2. Zero-Combine Fetching
|
|
374
|
+
|
|
375
|
+
```typescript
|
|
376
|
+
// ✅ Recommended: Use batch operations
|
|
377
|
+
const results = await fetcher.batchExecuteForWallets(wallets);
|
|
378
|
+
|
|
379
|
+
// ❌ Not recommended: Sequential fetches
|
|
380
|
+
for (const wallet of wallets) {
|
|
381
|
+
const result = await new ZeroCombineFetcher(client, wallet).execute();
|
|
382
|
+
}
|
|
383
|
+
```
|
|
384
|
+
|
|
385
|
+
### 3. Merkle Proof Verification
|
|
386
|
+
|
|
387
|
+
```typescript
|
|
388
|
+
// ✅ Recommended: Batch verify proofs
|
|
389
|
+
const proofs = events.map(event => merkle.getMerkleProof(event));
|
|
390
|
+
const results = merkle.batchVerifyProofs(proofs.map(p => ({
|
|
391
|
+
leaf: p.leaf,
|
|
392
|
+
proof: p.proof,
|
|
393
|
+
root: p.root,
|
|
394
|
+
})));
|
|
395
|
+
|
|
396
|
+
// ❌ Not recommended: Verify one by one
|
|
397
|
+
for (const event of events) {
|
|
398
|
+
const proof = merkle.getMerkleProof(event);
|
|
399
|
+
merkle.verifyProof(proof.leaf, proof.proof, proof.root);
|
|
400
|
+
}
|
|
401
|
+
```
|
|
402
|
+
|
|
403
|
+
### 4. Error Handling
|
|
404
|
+
|
|
405
|
+
```typescript
|
|
406
|
+
// ✅ Recommended: Handle errors gracefully
|
|
407
|
+
try {
|
|
408
|
+
const result = await fetcher.execute();
|
|
409
|
+
} catch (error) {
|
|
410
|
+
console.error('Fetch failed:', error);
|
|
411
|
+
// Retry with different parameters
|
|
412
|
+
const result = await fetcher.execute({
|
|
413
|
+
batchSize: 50,
|
|
414
|
+
maxRetries: 5
|
|
415
|
+
});
|
|
416
|
+
}
|
|
417
|
+
|
|
418
|
+
// ❌ Not recommended: No error handling
|
|
419
|
+
const result = await fetcher.execute(); // May fail
|
|
420
|
+
```
|
|
421
|
+
|
|
422
|
+
### 5. Event Monitoring
|
|
423
|
+
|
|
424
|
+
```typescript
|
|
425
|
+
// ✅ Recommended: Monitor progress with events
|
|
426
|
+
fetcher.on('fetch-progress', ({ current, total }) => {
|
|
427
|
+
console.log(`Progress: ${current}/${total} (${(current/total*100).toFixed(1)}%)`);
|
|
428
|
+
});
|
|
429
|
+
|
|
430
|
+
fetcher.on('fetch-error', (error) => {
|
|
431
|
+
console.error('Fetch error:', error);
|
|
432
|
+
// Implement recovery logic
|
|
433
|
+
});
|
|
434
|
+
|
|
435
|
+
fetcher.on('fetch-complete', (result) => {
|
|
436
|
+
console.log('Fetch completed:', result.tools.length, 'records');
|
|
437
|
+
});
|
|
438
|
+
|
|
439
|
+
// ❌ Not recommended: No progress tracking
|
|
440
|
+
const result = await fetcher.execute(); // Black box
|
|
441
|
+
```
|
|
442
|
+
|
|
443
|
+
---
|
|
444
|
+
|
|
445
|
+
## API Reference
|
|
446
|
+
|
|
447
|
+
### PDAManager
|
|
448
|
+
|
|
449
|
+
#### Constructor
|
|
450
|
+
|
|
451
|
+
```typescript
|
|
452
|
+
constructor(client: SynapseClient, userWallet: string)
|
|
453
|
+
```
|
|
454
|
+
|
|
455
|
+
Creates a new PDA Manager instance.
|
|
456
|
+
|
|
457
|
+
---
|
|
458
|
+
|
|
459
|
+
#### getUserPDAs()
|
|
460
|
+
|
|
461
|
+
```typescript
|
|
462
|
+
getUserPDAs(): { leafPDA: PublicKey; rootPDA: PublicKey }
|
|
463
|
+
```
|
|
464
|
+
|
|
465
|
+
Derives PDAs for the user wallet.
|
|
466
|
+
|
|
467
|
+
**Returns:** Leaf and Root PDAs
|
|
468
|
+
|
|
469
|
+
---
|
|
470
|
+
|
|
471
|
+
#### checkPDAExistence()
|
|
472
|
+
|
|
473
|
+
```typescript
|
|
474
|
+
async checkPDAExistence(pdas: {
|
|
475
|
+
leafPDA: PublicKey;
|
|
476
|
+
rootPDA: PublicKey
|
|
477
|
+
}): Promise<{ leafExists: boolean; rootExists: boolean }>
|
|
478
|
+
```
|
|
479
|
+
|
|
480
|
+
Checks if PDAs exist on-chain.
|
|
481
|
+
|
|
482
|
+
**Returns:** Existence status
|
|
483
|
+
|
|
484
|
+
---
|
|
485
|
+
|
|
486
|
+
#### BatchOptionRequest {
|
|
487
|
+
batchSize: number;
|
|
488
|
+
delayMs?: number;
|
|
489
|
+
maxRetries?: number;
|
|
490
|
+
retryDelayMs?: number;
|
|
491
|
+
}
|
|
492
|
+
|
|
493
|
+
**interface** | Option for batch reqs
|
|
494
|
+
---
|
|
495
|
+
|
|
496
|
+
#### getBatchPDAAccountInfo()
|
|
497
|
+
|
|
498
|
+
```typescript
|
|
499
|
+
async getBatchPDAAccountInfo(
|
|
500
|
+
pdas: PublicKey[]
|
|
501
|
+
): Promise<(AccountInfo | null)[]>
|
|
502
|
+
```
|
|
503
|
+
|
|
504
|
+
Batch fetch account info for multiple PDAs.
|
|
505
|
+
|
|
506
|
+
**Returns:** Array of account infos
|
|
507
|
+
|
|
508
|
+
---
|
|
509
|
+
|
|
510
|
+
### ZeroCombineFetcher
|
|
511
|
+
|
|
512
|
+
#### Constructor
|
|
513
|
+
|
|
514
|
+
```typescript
|
|
515
|
+
constructor(
|
|
516
|
+
client: SynapseClient,
|
|
517
|
+
userWallet: string,
|
|
518
|
+
options?: {
|
|
519
|
+
batchSize?: number;
|
|
520
|
+
delayMs?: number;
|
|
521
|
+
maxRetries?: number;
|
|
522
|
+
}
|
|
523
|
+
)
|
|
524
|
+
```
|
|
525
|
+
|
|
526
|
+
Creates a new Zero-Combine Fetcher.
|
|
527
|
+
|
|
528
|
+
---
|
|
529
|
+
|
|
530
|
+
#### execute()
|
|
531
|
+
|
|
532
|
+
```typescript
|
|
533
|
+
async execute(): Promise<{
|
|
534
|
+
tools: any[];
|
|
535
|
+
roots: string[];
|
|
536
|
+
}>
|
|
537
|
+
```
|
|
538
|
+
|
|
539
|
+
Fetches and reconstructs data from on-chain.
|
|
540
|
+
|
|
541
|
+
**Returns:** Reconstructed data
|
|
542
|
+
|
|
543
|
+
---
|
|
544
|
+
|
|
545
|
+
#### batchExecuteForWallets()
|
|
546
|
+
|
|
547
|
+
```typescript
|
|
548
|
+
async batchExecuteForWallets(
|
|
549
|
+
wallets: string[]
|
|
550
|
+
): Promise<Map<string, { tools: any[]; roots: string[] }>>
|
|
551
|
+
```
|
|
552
|
+
|
|
553
|
+
Batch fetch for multiple wallets.
|
|
554
|
+
|
|
555
|
+
**Returns:** Map of wallet to results
|
|
556
|
+
|
|
557
|
+
---
|
|
558
|
+
|
|
559
|
+
### MerkleOperation
|
|
560
|
+
|
|
561
|
+
#### Constructor
|
|
562
|
+
|
|
563
|
+
```typescript
|
|
564
|
+
constructor(
|
|
565
|
+
client: SynapseClient,
|
|
566
|
+
userWallet: string,
|
|
567
|
+
options?: {
|
|
568
|
+
batchSize?: number;
|
|
569
|
+
delayMs?: number;
|
|
570
|
+
maxRetries?: number;
|
|
571
|
+
}
|
|
572
|
+
)
|
|
573
|
+
```
|
|
574
|
+
|
|
575
|
+
Creates a new Merkle Operation instance.
|
|
576
|
+
|
|
577
|
+
---
|
|
578
|
+
|
|
579
|
+
#### createMerkleTree()
|
|
580
|
+
|
|
581
|
+
```typescript
|
|
582
|
+
createMerkleTree(data: string[]): string
|
|
583
|
+
```
|
|
584
|
+
|
|
585
|
+
Creates Merkle tree and returns root hash.
|
|
586
|
+
|
|
587
|
+
**Returns:** Merkle root
|
|
588
|
+
|
|
589
|
+
---
|
|
590
|
+
|
|
591
|
+
#### getMerkleProof()
|
|
592
|
+
|
|
593
|
+
```typescript
|
|
594
|
+
getMerkleProof(leaf: string): {
|
|
595
|
+
leaf: string;
|
|
596
|
+
proof: string[];
|
|
597
|
+
root: string;
|
|
598
|
+
}
|
|
599
|
+
```
|
|
600
|
+
|
|
601
|
+
Generates Merkle proof for a leaf.
|
|
602
|
+
|
|
603
|
+
**Returns:** Proof object
|
|
604
|
+
|
|
605
|
+
---
|
|
606
|
+
|
|
607
|
+
#### verifyProof()
|
|
608
|
+
|
|
609
|
+
```typescript
|
|
610
|
+
verifyProof(
|
|
611
|
+
leaf: string,
|
|
612
|
+
proof: string[],
|
|
613
|
+
root: string
|
|
614
|
+
): boolean
|
|
615
|
+
```
|
|
616
|
+
|
|
617
|
+
Verifies a Merkle proof.
|
|
618
|
+
|
|
619
|
+
**Returns:** Verification result
|
|
620
|
+
|
|
621
|
+
---
|
|
622
|
+
|
|
623
|
+
#### batchVerifyProofs()
|
|
624
|
+
|
|
625
|
+
```typescript
|
|
626
|
+
batchVerifyProofs(proofs: Array<{
|
|
627
|
+
leaf: string;
|
|
628
|
+
proof: string[];
|
|
629
|
+
root: string;
|
|
630
|
+
}>): boolean[]
|
|
631
|
+
```
|
|
632
|
+
|
|
633
|
+
Batch verify multiple proofs.
|
|
634
|
+
|
|
635
|
+
**Returns:** Array of verification results
|
|
636
|
+
|
|
637
|
+
---
|
|
638
|
+
|
|
639
|
+
#### inscribeMerkleRoot()
|
|
640
|
+
|
|
641
|
+
```typescript
|
|
642
|
+
async inscribeMerkleRoot(
|
|
643
|
+
root: string,
|
|
644
|
+
connection: Connection,
|
|
645
|
+
signer: Keypair
|
|
646
|
+
): Promise<string>
|
|
647
|
+
```
|
|
648
|
+
|
|
649
|
+
Inscribes Merkle root on-chain.
|
|
650
|
+
|
|
651
|
+
**Parameters:**
|
|
652
|
+
- `root`: Merkle root hash
|
|
653
|
+
- `connection`: Solana connection
|
|
654
|
+
- `signer`: Transaction signer
|
|
655
|
+
|
|
656
|
+
**Returns:** Transaction signature
|
|
657
|
+
|
|
658
|
+
---
|
|
659
|
+
|
|
660
|
+
## Performance
|
|
661
|
+
|
|
662
|
+
| Operation | Complexity | Latency | Notes |
|
|
663
|
+
|-----------|-----------|---------|-------|
|
|
664
|
+
| PDA Derivation | O(1) | <1ms | Deterministic |
|
|
665
|
+
| PDA Existence Check | O(n) | 50-200ms | RPC call |
|
|
666
|
+
| Zero-Combine Fetch | O(n) | 1-10s | Depends on data size |
|
|
667
|
+
| Merkle Tree Creation | O(n log n) | 10-100ms | CPU-intensive |
|
|
668
|
+
| Merkle Proof Generation | O(log n) | <1ms | Tree traversal |
|
|
669
|
+
| Proof Verification | O(log n) | <1ms | Hash comparison |
|
|
670
|
+
| Batch Operations | O(n) | Linear | Parallel processing |
|
|
671
|
+
|
|
672
|
+
---
|
|
673
|
+
|
|
674
|
+
## Troubleshooting
|
|
675
|
+
|
|
676
|
+
### Issue: PDA not found
|
|
677
|
+
|
|
678
|
+
**Solutions:**
|
|
679
|
+
- Verify wallet address is correct
|
|
680
|
+
- Check if PDAs have been initialized
|
|
681
|
+
- Use correct program ID
|
|
682
|
+
|
|
683
|
+
```typescript
|
|
684
|
+
const { leafExists, rootExists } = await pdaManager.checkPDAExistence(pdas);
|
|
685
|
+
if (!leafExists) {
|
|
686
|
+
console.log('Leaf PDA not initialized');
|
|
687
|
+
}
|
|
688
|
+
```
|
|
689
|
+
|
|
690
|
+
---
|
|
691
|
+
|
|
692
|
+
### Issue: Zero-Combine fetch timeout
|
|
693
|
+
|
|
694
|
+
**Solutions:**
|
|
695
|
+
- Increase `maxRetries` option
|
|
696
|
+
- Reduce `batchSize` for slower networks
|
|
697
|
+
- Increase `delayMs` between batches
|
|
698
|
+
|
|
699
|
+
```typescript
|
|
700
|
+
const fetcher = new ZeroCombineFetcher(client, wallet, {
|
|
701
|
+
batchSize: 50, // Reduce from 100
|
|
702
|
+
delayMs: 3000, // Increase from 2000
|
|
703
|
+
maxRetries: 5, // Increase from 3
|
|
704
|
+
});
|
|
705
|
+
```
|
|
706
|
+
|
|
707
|
+
---
|
|
708
|
+
|
|
709
|
+
### Issue: Merkle proof verification fails
|
|
710
|
+
|
|
711
|
+
**Solutions:**
|
|
712
|
+
- Verify data ordering is consistent
|
|
713
|
+
- Check for data corruption
|
|
714
|
+
- Ensure same hash algorithm
|
|
715
|
+
|
|
716
|
+
```typescript
|
|
717
|
+
// Ensure consistent ordering
|
|
718
|
+
const sortedData = data.sort();
|
|
719
|
+
const root = merkle.createMerkleTree(sortedData);
|
|
720
|
+
```
|
|
721
|
+
|
|
722
|
+
---
|
|
723
|
+
|
|
724
|
+
**AI Module** - OOBE Protocol implementation for advanced Solana operations
|
|
725
|
+
|
|
726
|
+
Built for decentralized AI agent infrastructure
|
|
727
|
+
// Crea MerkleOperation con signing support
|
|
728
|
+
const merkle = new MerkleOperation(
|
|
729
|
+
client,
|
|
730
|
+
signer.publicKey.toBase58(),
|
|
731
|
+
{ batchSize: 50 },
|
|
732
|
+
connection, // Connection per RPC
|
|
733
|
+
signer // Signer per firmare transactions
|
|
734
|
+
);
|
|
735
|
+
|
|
736
|
+
// Ora puoi inscrivere on-chain (transazioni firmate automaticamente)
|
|
737
|
+
const validationResult = {
|
|
738
|
+
merkleRoot: root,
|
|
739
|
+
merkleProof: proof.proof,
|
|
740
|
+
merkleLeaf: { input: 'hash1', result: 'hash2' },
|
|
741
|
+
merkleEvents: Buffer.from('compressed data').toString('base64'),
|
|
742
|
+
};
|
|
743
|
+
|
|
744
|
+
const inscription = await merkle.inscribeOnChain(validationResult);
|
|
745
|
+
console.log('Inscription signatures:', {
|
|
746
|
+
zeroChunk: inscription.zeroChunkSign,
|
|
747
|
+
root: inscription.signatureRoot,
|
|
748
|
+
});
|
|
749
|
+
|
|
750
|
+
// Batch inscribe multiple proofs
|
|
751
|
+
const results = await merkle.batchInscribeOnChain([
|
|
752
|
+
validationResult1,
|
|
753
|
+
validationResult2,
|
|
754
|
+
validationResult3,
|
|
755
|
+
]);
|
|
756
|
+
```
|
|
757
|
+
|
|
758
|
+
#### Uso con Wallet Adapter (Browser/React)
|
|
759
|
+
```typescript
|
|
760
|
+
import { useConnection, useWallet } from '@solana/wallet-adapter-react';
|
|
761
|
+
import { MerkleOperation } from '@synapse/client-sdk/ai';
|
|
762
|
+
|
|
763
|
+
function MyComponent() {
|
|
764
|
+
const { connection } = useConnection();
|
|
765
|
+
const wallet = useWallet();
|
|
766
|
+
|
|
767
|
+
const handleInscribe = async () => {
|
|
768
|
+
if (!wallet.publicKey) return;
|
|
769
|
+
|
|
770
|
+
const merkle = new MerkleOperation(
|
|
771
|
+
client,
|
|
772
|
+
wallet.publicKey.toBase58(),
|
|
773
|
+
{ batchSize: 50 }
|
|
774
|
+
);
|
|
775
|
+
|
|
776
|
+
// Ottieni transaction unsigned
|
|
777
|
+
const tx = await merkle.createUnsignedMemoTransaction(
|
|
778
|
+
pdaAddress,
|
|
779
|
+
Buffer.from('your data')
|
|
780
|
+
);
|
|
781
|
+
|
|
782
|
+
// Firma con wallet adapter
|
|
783
|
+
const signed = await wallet.signTransaction(tx);
|
|
784
|
+
|
|
785
|
+
// Invia manualmente
|
|
786
|
+
const signature = await connection.sendRawTransaction(signed.serialize());
|
|
787
|
+
await connection.confirmTransaction(signature);
|
|
788
|
+
};
|
|
789
|
+
}
|
|
790
|
+
```
|
|
791
|
+
|
|
792
|
+
## Configurazione Batch
|
|
793
|
+
|
|
794
|
+
Tutti i moduli supportano `BatchOptionRequest` per ottimizzare le performance:
|
|
795
|
+
|
|
796
|
+
```typescript
|
|
797
|
+
import type { BatchOptionRequest } from '@synapse/client-sdk/ai';
|
|
798
|
+
|
|
799
|
+
const batchConfig: BatchOptionRequest = {
|
|
800
|
+
batchSize: 100, // Numero di richieste per batch
|
|
801
|
+
delayMs: 2000, // Delay tra batches (ms)
|
|
802
|
+
maxRetries: 3, // Tentativi massimi per richiesta fallita
|
|
803
|
+
retryDelayMs: 1000, // Delay tra retry (ms)
|
|
804
|
+
};
|
|
805
|
+
```
|
|
806
|
+
|
|
807
|
+
## Best Practices
|
|
808
|
+
|
|
809
|
+
### 1. PDAManager
|
|
810
|
+
- Usa `getBatchPDAAccountInfo()` per check multipli in parallelo
|
|
811
|
+
- Cache i PDAs derivati per evitare ricalcoli
|
|
812
|
+
- Verifica sempre l'esistenza dei PDAs prima di usarli
|
|
813
|
+
|
|
814
|
+
### 2. ZeroCombineFetcher
|
|
815
|
+
- Configura `batchSize` in base al rate limit dell'RPC
|
|
816
|
+
- Usa `delayMs` appropriati per evitare throttling
|
|
817
|
+
- Per multiple wallets, usa `batchExecuteForWallets()` invece di loop sequenziali
|
|
818
|
+
|
|
819
|
+
### 3. MerkleOperation
|
|
820
|
+
- **Con Connection/Signer**: Transazioni firmate automaticamente, ideale per backend/script
|
|
821
|
+
- **Senza Connection/Signer**: Usa `createUnsignedMemoTransaction()` e firma esternamente (wallet adapter)
|
|
822
|
+
- **Batch Operations**: Usa `batchInscribeOnChain()` per inserire multipli proof contemporaneamente
|
|
823
|
+
- Configura `maxRetries` per gestire network failures
|
|
824
|
+
- Chunking automatico per dati > 560 bytes (limite memo transactions)
|
|
825
|
+
|
|
826
|
+
## Compatibilità OOBE Protocol
|
|
827
|
+
|
|
828
|
+
Tutti i moduli sono compatibili con [OOBE Protocol](https://github.com/CryptoFamilyNFT/oobe-protocol):
|
|
829
|
+
|
|
830
|
+
- ✅ PDA derivation deterministico (SHA-256)
|
|
831
|
+
- ✅ Zero chunk pattern (128 bytes: 2 merkle leaves + signature)
|
|
832
|
+
- ✅ Chunked data linking via previous signatures
|
|
833
|
+
- ✅ Batch optimization per performance
|
|
834
|
+
- ✅ Memo program integration per storage on-chain
|
|
835
|
+
|
|
836
|
+
## Esempi Completi
|
|
837
|
+
|
|
838
|
+
Vedi la cartella `/examples` per esempi completi di:
|
|
839
|
+
- Backend automation (con Keypair)
|
|
840
|
+
- Frontend integration (con wallet adapter)
|
|
841
|
+
- Batch processing di large datasets
|
|
842
|
+
- Merkle proof generation e verification
|
|
843
|
+
- On-chain data inscription
|
|
844
|
+
|
|
845
|
+
## TypeScript Support
|
|
846
|
+
|
|
847
|
+
Tutti i moduli sono completamente tipizzati con TypeScript:
|
|
848
|
+
|
|
849
|
+
```typescript
|
|
850
|
+
import type {
|
|
851
|
+
PDAConfig,
|
|
852
|
+
UserPDAs,
|
|
853
|
+
ZeroChunk,
|
|
854
|
+
SignatureInfo,
|
|
855
|
+
ProofRecord,
|
|
856
|
+
FetchConfig,
|
|
857
|
+
ZeroCombineResult,
|
|
858
|
+
MerkleLeaf,
|
|
859
|
+
MerkleProof,
|
|
860
|
+
MerkleValidationResult,
|
|
861
|
+
ChunkInfo,
|
|
862
|
+
InscriptionResult,
|
|
863
|
+
BatchOptionRequest,
|
|
864
|
+
} from '@synapse/client-sdk/ai';
|
|
865
|
+
```
|
|
866
|
+
|
|
867
|
+
## License
|
|
868
|
+
|
|
869
|
+
MIT
|