@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,522 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Merkle Operation - Synapse SDK Implementation
|
|
4
|
+
*
|
|
5
|
+
* Professional Merkle tree operations for proof generation, verification and
|
|
6
|
+
* on-chain inscription. Inspired by OOBE Protocol but optimized for Synapse SDK
|
|
7
|
+
* with efficient batching and modular architecture.
|
|
8
|
+
*
|
|
9
|
+
* @module MerkleOperation
|
|
10
|
+
* @author Synapse Gateway Team
|
|
11
|
+
*/
|
|
12
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
13
|
+
if (k2 === undefined) k2 = k;
|
|
14
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
15
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
16
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
17
|
+
}
|
|
18
|
+
Object.defineProperty(o, k2, desc);
|
|
19
|
+
}) : (function(o, m, k, k2) {
|
|
20
|
+
if (k2 === undefined) k2 = k;
|
|
21
|
+
o[k2] = m[k];
|
|
22
|
+
}));
|
|
23
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
24
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
25
|
+
}) : function(o, v) {
|
|
26
|
+
o["default"] = v;
|
|
27
|
+
});
|
|
28
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
29
|
+
var ownKeys = function(o) {
|
|
30
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
31
|
+
var ar = [];
|
|
32
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
33
|
+
return ar;
|
|
34
|
+
};
|
|
35
|
+
return ownKeys(o);
|
|
36
|
+
};
|
|
37
|
+
return function (mod) {
|
|
38
|
+
if (mod && mod.__esModule) return mod;
|
|
39
|
+
var result = {};
|
|
40
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
41
|
+
__setModuleDefault(result, mod);
|
|
42
|
+
return result;
|
|
43
|
+
};
|
|
44
|
+
})();
|
|
45
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
46
|
+
exports.MerkleOperation = void 0;
|
|
47
|
+
const web3_js_1 = require("@solana/web3.js");
|
|
48
|
+
const pda_manager_1 = require("./pda-manager");
|
|
49
|
+
const crypto = __importStar(require("crypto"));
|
|
50
|
+
const solana_rpc_1 = require("../methods/solana-rpc");
|
|
51
|
+
/**
|
|
52
|
+
* MerkleOperation - handles Merkle tree operations and on-chain storage
|
|
53
|
+
*
|
|
54
|
+
* This class provides utilities for:
|
|
55
|
+
* - Generating Merkle trees from event data
|
|
56
|
+
* - Creating and verifying proofs
|
|
57
|
+
* - Splitting large data into chunks
|
|
58
|
+
* - Inscribing data on-chain via memo transactions
|
|
59
|
+
*
|
|
60
|
+
* For on-chain operations, you can provide either:
|
|
61
|
+
* - A Solana Connection + Signer for real transaction signing
|
|
62
|
+
* - Just use SynapseClient (will require pre-signed transactions)
|
|
63
|
+
*/
|
|
64
|
+
class MerkleOperation {
|
|
65
|
+
client;
|
|
66
|
+
pdaManager;
|
|
67
|
+
walletAddress;
|
|
68
|
+
batchConfig;
|
|
69
|
+
signer;
|
|
70
|
+
rpcMethods;
|
|
71
|
+
// Merkle tree state
|
|
72
|
+
leaves = [];
|
|
73
|
+
tree = [];
|
|
74
|
+
root = '';
|
|
75
|
+
/**
|
|
76
|
+
* Create a new MerkleOperation instance
|
|
77
|
+
* @param client - Synapse client for RPC calls
|
|
78
|
+
* @param walletAddress - User wallet address
|
|
79
|
+
* @param batchConfig - Optional batch processing configuration
|
|
80
|
+
* @param signer - Optional Signer/Keypair for signing transactions
|
|
81
|
+
*/
|
|
82
|
+
constructor(client, walletAddress, batchConfig, connection, signer) {
|
|
83
|
+
this.client = client;
|
|
84
|
+
this.walletAddress = new web3_js_1.PublicKey(walletAddress);
|
|
85
|
+
this.pdaManager = new pda_manager_1.PDAManager(client, walletAddress);
|
|
86
|
+
this.signer = signer;
|
|
87
|
+
this.batchConfig = {
|
|
88
|
+
batchSize: 50,
|
|
89
|
+
delayMs: 1000,
|
|
90
|
+
maxRetries: 3,
|
|
91
|
+
retryDelayMs: 1000,
|
|
92
|
+
...batchConfig,
|
|
93
|
+
};
|
|
94
|
+
this.rpcMethods = new solana_rpc_1.SolanaRpcMethods(client);
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Create Merkle tree from data array
|
|
98
|
+
* @param data - Array of data items to hash
|
|
99
|
+
* @returns Merkle root hash (hex)
|
|
100
|
+
*/
|
|
101
|
+
createMerkleTree(data) {
|
|
102
|
+
if (data.length === 0)
|
|
103
|
+
throw new Error('Data array cannot be empty');
|
|
104
|
+
// Hash all leaves
|
|
105
|
+
this.leaves = data.map((item) => this.hash(item));
|
|
106
|
+
// Build tree bottom-up
|
|
107
|
+
this.tree = [this.leaves];
|
|
108
|
+
let currentLevel = this.leaves;
|
|
109
|
+
while (currentLevel.length > 1) {
|
|
110
|
+
const nextLevel = [];
|
|
111
|
+
for (let i = 0; i < currentLevel.length; i += 2) {
|
|
112
|
+
const left = currentLevel[i];
|
|
113
|
+
const right = i + 1 < currentLevel.length ? currentLevel[i + 1] : left;
|
|
114
|
+
nextLevel.push(this.hash(left + right));
|
|
115
|
+
}
|
|
116
|
+
this.tree.push(nextLevel);
|
|
117
|
+
currentLevel = nextLevel;
|
|
118
|
+
}
|
|
119
|
+
this.root = currentLevel[0];
|
|
120
|
+
return this.root;
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Get Merkle proof for a leaf
|
|
124
|
+
* @param leafData - Data to generate proof for
|
|
125
|
+
* @returns Merkle proof
|
|
126
|
+
*/
|
|
127
|
+
getMerkleProof(leafData) {
|
|
128
|
+
const leaf = this.hash(leafData);
|
|
129
|
+
const leafIndex = this.leaves.indexOf(leaf);
|
|
130
|
+
if (leafIndex === -1) {
|
|
131
|
+
throw new Error('Leaf not found in tree');
|
|
132
|
+
}
|
|
133
|
+
const proof = [];
|
|
134
|
+
let index = leafIndex;
|
|
135
|
+
for (let level = 0; level < this.tree.length - 1; level++) {
|
|
136
|
+
const currentLevel = this.tree[level];
|
|
137
|
+
const isRightNode = index % 2 === 1;
|
|
138
|
+
const siblingIndex = isRightNode ? index - 1 : index + 1;
|
|
139
|
+
if (siblingIndex < currentLevel.length) {
|
|
140
|
+
proof.push(currentLevel[siblingIndex]);
|
|
141
|
+
}
|
|
142
|
+
index = Math.floor(index / 2);
|
|
143
|
+
}
|
|
144
|
+
return {
|
|
145
|
+
leaf,
|
|
146
|
+
proof,
|
|
147
|
+
root: this.root,
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Verify a Merkle proof
|
|
152
|
+
* @param leaf - Leaf hash
|
|
153
|
+
* @param proof - Proof hashes
|
|
154
|
+
* @param root - Expected root hash
|
|
155
|
+
* @returns true if proof is valid
|
|
156
|
+
*/
|
|
157
|
+
verifyProof(leaf, proof, root) {
|
|
158
|
+
let computedHash = leaf;
|
|
159
|
+
for (const proofElement of proof) {
|
|
160
|
+
// Deterministic ordering: smaller hash first
|
|
161
|
+
if (computedHash < proofElement) {
|
|
162
|
+
computedHash = this.hash(computedHash + proofElement);
|
|
163
|
+
}
|
|
164
|
+
else {
|
|
165
|
+
computedHash = this.hash(proofElement + computedHash);
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
return computedHash === root;
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Batch verify multiple Merkle proofs
|
|
172
|
+
* @param proofs - Array of proof objects to verify
|
|
173
|
+
* @returns Array of verification results
|
|
174
|
+
*/
|
|
175
|
+
batchVerifyProofs(proofs) {
|
|
176
|
+
return proofs.map((p) => this.verifyProof(p.leaf, p.proof, p.root));
|
|
177
|
+
} /**
|
|
178
|
+
* Calculate optimal chunks from buffer
|
|
179
|
+
* Splits data into chunks while respecting size limits for memo transactions
|
|
180
|
+
* @param buffer - Data buffer to chunk
|
|
181
|
+
* @param minChunkSize - Minimum chunk size (default: 1)
|
|
182
|
+
* @param maxChunkSize - Maximum chunk size (default: 560 for memo safety)
|
|
183
|
+
* @returns Array of chunk buffers
|
|
184
|
+
*/
|
|
185
|
+
calculateChunks(buffer, minChunkSize = 1, maxChunkSize = 560) {
|
|
186
|
+
const chunks = [];
|
|
187
|
+
const adjustedMaxChunkSize = maxChunkSize - 64; // Reserve space for signature linking
|
|
188
|
+
let offset = 0;
|
|
189
|
+
while (offset < buffer.length) {
|
|
190
|
+
const remainingBytes = buffer.length - offset;
|
|
191
|
+
let chunkSize;
|
|
192
|
+
if (remainingBytes <= maxChunkSize) {
|
|
193
|
+
// Last chunk can use full maxChunkSize
|
|
194
|
+
chunkSize = Math.min(Math.max(minChunkSize, remainingBytes), maxChunkSize);
|
|
195
|
+
}
|
|
196
|
+
else {
|
|
197
|
+
// Other chunks use adjusted size
|
|
198
|
+
chunkSize = Math.min(Math.max(minChunkSize, remainingBytes), adjustedMaxChunkSize);
|
|
199
|
+
}
|
|
200
|
+
const chunk = buffer.subarray(offset, offset + chunkSize);
|
|
201
|
+
chunks.push(chunk);
|
|
202
|
+
offset += chunkSize;
|
|
203
|
+
}
|
|
204
|
+
return chunks;
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* Create zero chunk (128 bytes: 2 merkle leaves + previous signature)
|
|
208
|
+
* @param leaf - Merkle leaf data
|
|
209
|
+
* @returns Zero chunk buffer (128 bytes)
|
|
210
|
+
*/
|
|
211
|
+
createZeroChunk(leaf) {
|
|
212
|
+
const zeroChunk = Buffer.alloc(128);
|
|
213
|
+
// First 64 bytes: input hash
|
|
214
|
+
Buffer.from(leaf.input, 'hex').copy(zeroChunk, 0);
|
|
215
|
+
// Second 64 bytes: result hash
|
|
216
|
+
Buffer.from(leaf.result, 'hex').copy(zeroChunk, 64);
|
|
217
|
+
return zeroChunk;
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* On-chain Merkle inscription - stores data + proof on Solana
|
|
221
|
+
* Uses PDA accounts to store chunked data and merkle roots
|
|
222
|
+
* @param validationResult - Merkle validation result to inscribe
|
|
223
|
+
* @param pdas - Optional custom PDAs
|
|
224
|
+
* @returns Inscription result with signatures and PDAs
|
|
225
|
+
*/
|
|
226
|
+
async inscribeOnChain(validationResult, pdas) {
|
|
227
|
+
// Get or use provided PDAs
|
|
228
|
+
const userPDAs = pdas || this.pdaManager.getUserPDAs();
|
|
229
|
+
// Check if PDAs exist
|
|
230
|
+
const { leafExists, rootExists } = await this.pdaManager.checkPDAExistence(userPDAs);
|
|
231
|
+
if (!leafExists || !rootExists) {
|
|
232
|
+
throw new Error('PDA accounts not initialized. Create accounts first using PDAManager.');
|
|
233
|
+
}
|
|
234
|
+
const { input, result } = validationResult.merkleLeaf;
|
|
235
|
+
const compressedEvents = validationResult.merkleEvents;
|
|
236
|
+
if (!input || !result || !compressedEvents) {
|
|
237
|
+
throw new Error('Invalid validation result: missing required fields');
|
|
238
|
+
}
|
|
239
|
+
// Create zero chunk (128 bytes)
|
|
240
|
+
const zeroChunk = Buffer.alloc(128);
|
|
241
|
+
Buffer.from(input, 'hex').copy(zeroChunk, 0);
|
|
242
|
+
Buffer.from(result, 'hex').copy(zeroChunk, 64);
|
|
243
|
+
// Prepare events buffer and chunk it
|
|
244
|
+
const eventsBuffer = this.trimTrailingZeros(Buffer.from(compressedEvents, 'utf-8'));
|
|
245
|
+
const eventChunks = this.calculateChunks(eventsBuffer, 1, 560);
|
|
246
|
+
// All chunks: events + zero chunk
|
|
247
|
+
const allChunks = [...eventChunks, zeroChunk];
|
|
248
|
+
let prevSignature = null;
|
|
249
|
+
let zeroChunkSignature = null;
|
|
250
|
+
// Process each chunk
|
|
251
|
+
for (let index = 0; index < allChunks.length; index++) {
|
|
252
|
+
const chunk = allChunks[index];
|
|
253
|
+
const isFirst = index === 0;
|
|
254
|
+
const isLast = index === allChunks.length - 1;
|
|
255
|
+
let memoData;
|
|
256
|
+
if (isFirst && !isLast) {
|
|
257
|
+
// First chunk: just the data
|
|
258
|
+
memoData = chunk;
|
|
259
|
+
}
|
|
260
|
+
else if (isLast && prevSignature) {
|
|
261
|
+
// Last chunk (zero chunk): data only
|
|
262
|
+
memoData = chunk;
|
|
263
|
+
}
|
|
264
|
+
else if (!isFirst && !isLast && prevSignature) {
|
|
265
|
+
// Intermediate chunks: link to previous
|
|
266
|
+
memoData = Buffer.from(`${prevSignature}|${chunk.toString('utf-8')}`);
|
|
267
|
+
}
|
|
268
|
+
else {
|
|
269
|
+
// Single chunk case
|
|
270
|
+
memoData = chunk;
|
|
271
|
+
}
|
|
272
|
+
// Send transaction with memo
|
|
273
|
+
const signature = await this.sendMemoTransaction(userPDAs.leafPDA, memoData);
|
|
274
|
+
prevSignature = signature;
|
|
275
|
+
if (isLast) {
|
|
276
|
+
zeroChunkSignature = signature;
|
|
277
|
+
}
|
|
278
|
+
// Small delay between transactions
|
|
279
|
+
await this.sleep(500);
|
|
280
|
+
}
|
|
281
|
+
if (!zeroChunkSignature) {
|
|
282
|
+
throw new Error('Failed to inscribe zero chunk');
|
|
283
|
+
}
|
|
284
|
+
// Store root and proof in Root PDA
|
|
285
|
+
const rootData = {
|
|
286
|
+
root: validationResult.merkleRoot,
|
|
287
|
+
proofSignature: zeroChunkSignature,
|
|
288
|
+
proof: validationResult.merkleProof,
|
|
289
|
+
leaf: validationResult.merkleLeaf,
|
|
290
|
+
};
|
|
291
|
+
const rootSignature = await this.sendMemoTransaction(userPDAs.rootPDA, Buffer.from(JSON.stringify(rootData)));
|
|
292
|
+
return {
|
|
293
|
+
dbAccountStore: userPDAs.leafPDA,
|
|
294
|
+
dbAccountRoot: userPDAs.rootPDA,
|
|
295
|
+
zeroChunkSign: zeroChunkSignature,
|
|
296
|
+
signatureRoot: rootSignature,
|
|
297
|
+
merkleRoot: validationResult.merkleRoot,
|
|
298
|
+
merkleProof: validationResult.merkleProof,
|
|
299
|
+
merkleLeaf: validationResult.merkleLeaf,
|
|
300
|
+
merkleEvents: validationResult.merkleEvents,
|
|
301
|
+
};
|
|
302
|
+
}
|
|
303
|
+
/**
|
|
304
|
+
* Send a memo transaction to store data
|
|
305
|
+
* Uses Synapse client for transaction submission with Memo Program
|
|
306
|
+
*
|
|
307
|
+
* Two modes of operation:
|
|
308
|
+
* 1. With Connection + Signer: Signs and sends transaction directly
|
|
309
|
+
* 2. Without Connection: Returns unsigned transaction for external signing
|
|
310
|
+
*
|
|
311
|
+
* @param pda - Target PDA
|
|
312
|
+
* @param data - Data buffer to store in memo
|
|
313
|
+
* @returns Transaction signature
|
|
314
|
+
*/
|
|
315
|
+
async sendMemoTransaction(pda, data) {
|
|
316
|
+
try {
|
|
317
|
+
// Memo Program ID (SPL Memo Program)
|
|
318
|
+
const MEMO_PROGRAM_ID = new web3_js_1.PublicKey('MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr');
|
|
319
|
+
// Create memo instruction
|
|
320
|
+
const memoInstruction = new web3_js_1.TransactionInstruction({
|
|
321
|
+
keys: [
|
|
322
|
+
// PDA as a readonly account for tracking
|
|
323
|
+
{ pubkey: pda, isSigner: false, isWritable: false },
|
|
324
|
+
],
|
|
325
|
+
programId: MEMO_PROGRAM_ID,
|
|
326
|
+
data: data, // Memo data
|
|
327
|
+
});
|
|
328
|
+
// Create transaction
|
|
329
|
+
const transaction = new web3_js_1.Transaction();
|
|
330
|
+
transaction.add(memoInstruction);
|
|
331
|
+
// Get recent blockhash
|
|
332
|
+
const blockhashData = await this.client.call('getLatestBlockhash', [{ commitment: 'confirmed' }]);
|
|
333
|
+
const { blockhash, lastValidBlockHeight } = blockhashData.value;
|
|
334
|
+
transaction.recentBlockhash = blockhash;
|
|
335
|
+
transaction.lastValidBlockHeight = lastValidBlockHeight;
|
|
336
|
+
transaction.feePayer = this.walletAddress;
|
|
337
|
+
// MODE 2: Serialize for external signing (wallet adapter, etc.)
|
|
338
|
+
// User must sign and send this transaction themselves
|
|
339
|
+
const serializedTx = transaction.serialize({
|
|
340
|
+
requireAllSignatures: false,
|
|
341
|
+
verifySignatures: false,
|
|
342
|
+
}).toString('base64');
|
|
343
|
+
// Send via Synapse client (assumes pre-signed or will be rejected)
|
|
344
|
+
const signature = await this.client.call('sendTransaction', [
|
|
345
|
+
serializedTx,
|
|
346
|
+
{
|
|
347
|
+
encoding: 'base64',
|
|
348
|
+
skipPreflight: false,
|
|
349
|
+
preflightCommitment: 'confirmed',
|
|
350
|
+
maxRetries: this.batchConfig.maxRetries || 3,
|
|
351
|
+
},
|
|
352
|
+
]);
|
|
353
|
+
// Wait for confirmation with retry
|
|
354
|
+
let confirmed = false;
|
|
355
|
+
let attempts = 0;
|
|
356
|
+
const maxAttempts = this.batchConfig.maxRetries || 3;
|
|
357
|
+
while (!confirmed && attempts < maxAttempts) {
|
|
358
|
+
try {
|
|
359
|
+
const status = await this.client.call('getSignatureStatuses', [[signature], { searchTransactionHistory: true }]);
|
|
360
|
+
if (status?.value?.[0]?.confirmationStatus === 'confirmed' ||
|
|
361
|
+
status?.value?.[0]?.confirmationStatus === 'finalized') {
|
|
362
|
+
confirmed = true;
|
|
363
|
+
break;
|
|
364
|
+
}
|
|
365
|
+
// Wait before retry
|
|
366
|
+
await this.sleep(this.batchConfig.retryDelayMs || 1000);
|
|
367
|
+
attempts++;
|
|
368
|
+
}
|
|
369
|
+
catch (error) {
|
|
370
|
+
attempts++;
|
|
371
|
+
if (attempts >= maxAttempts)
|
|
372
|
+
throw error;
|
|
373
|
+
await this.sleep(this.batchConfig.retryDelayMs || 1000);
|
|
374
|
+
}
|
|
375
|
+
}
|
|
376
|
+
if (!confirmed) {
|
|
377
|
+
throw new Error(`Transaction ${signature} not confirmed after ${maxAttempts} attempts`);
|
|
378
|
+
}
|
|
379
|
+
return signature;
|
|
380
|
+
}
|
|
381
|
+
catch (error) {
|
|
382
|
+
throw new Error(`Failed to send memo transaction: ${error.message}`);
|
|
383
|
+
}
|
|
384
|
+
}
|
|
385
|
+
/**
|
|
386
|
+
* Create and send multiple memo transactions in batch
|
|
387
|
+
* Uses optimized batching for better performance
|
|
388
|
+
* @param pda - Target PDA
|
|
389
|
+
* @param dataChunks - Array of data buffers to send
|
|
390
|
+
* @returns Array of transaction signatures
|
|
391
|
+
*/
|
|
392
|
+
async batchSendMemoTransactions(pda, dataChunks) {
|
|
393
|
+
const signatures = [];
|
|
394
|
+
const batchSize = this.batchConfig.batchSize || 10;
|
|
395
|
+
// Process chunks in batches
|
|
396
|
+
for (let i = 0; i < dataChunks.length; i += batchSize) {
|
|
397
|
+
const batch = dataChunks.slice(i, i + batchSize);
|
|
398
|
+
// Send transactions in parallel within batch
|
|
399
|
+
const batchSignatures = await Promise.all(batch.map((chunk) => this.sendMemoTransaction(pda, chunk)));
|
|
400
|
+
signatures.push(...batchSignatures);
|
|
401
|
+
// Delay between batches
|
|
402
|
+
if (i + batchSize < dataChunks.length) {
|
|
403
|
+
await this.sleep(this.batchConfig.delayMs || 1000);
|
|
404
|
+
}
|
|
405
|
+
}
|
|
406
|
+
return signatures;
|
|
407
|
+
}
|
|
408
|
+
/**
|
|
409
|
+
* Hash data using SHA-256
|
|
410
|
+
* @param data - Data to hash
|
|
411
|
+
* @returns Hex hash string
|
|
412
|
+
*/
|
|
413
|
+
hash(data) {
|
|
414
|
+
return crypto.createHash('sha256').update(data).digest('hex');
|
|
415
|
+
}
|
|
416
|
+
/**
|
|
417
|
+
* Trim trailing zeros from buffer
|
|
418
|
+
* @param buffer - Buffer to trim
|
|
419
|
+
* @returns Trimmed buffer
|
|
420
|
+
*/
|
|
421
|
+
trimTrailingZeros(buffer) {
|
|
422
|
+
let end = buffer.length;
|
|
423
|
+
while (end > 0 && buffer[end - 1] === 0) {
|
|
424
|
+
end--;
|
|
425
|
+
}
|
|
426
|
+
return buffer.subarray(0, end);
|
|
427
|
+
}
|
|
428
|
+
/**
|
|
429
|
+
* Sleep utility
|
|
430
|
+
* @param ms - Milliseconds to sleep
|
|
431
|
+
*/
|
|
432
|
+
sleep(ms) {
|
|
433
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
434
|
+
}
|
|
435
|
+
/**
|
|
436
|
+
* Get current Merkle root
|
|
437
|
+
*/
|
|
438
|
+
getRoot() {
|
|
439
|
+
return this.root;
|
|
440
|
+
}
|
|
441
|
+
/**
|
|
442
|
+
* Get all leaves
|
|
443
|
+
*/
|
|
444
|
+
getLeaves() {
|
|
445
|
+
return this.leaves;
|
|
446
|
+
}
|
|
447
|
+
/**
|
|
448
|
+
* Get PDA manager
|
|
449
|
+
*/
|
|
450
|
+
getPDAManager() {
|
|
451
|
+
return this.pdaManager;
|
|
452
|
+
}
|
|
453
|
+
/**
|
|
454
|
+
* Get batch configuration
|
|
455
|
+
*/
|
|
456
|
+
getBatchConfig() {
|
|
457
|
+
return { ...this.batchConfig };
|
|
458
|
+
}
|
|
459
|
+
/**
|
|
460
|
+
* Update batch configuration
|
|
461
|
+
*/
|
|
462
|
+
updateBatchConfig(config) {
|
|
463
|
+
this.batchConfig = { ...this.batchConfig, ...config };
|
|
464
|
+
}
|
|
465
|
+
/**
|
|
466
|
+
* Set signer for transaction signing
|
|
467
|
+
* @param signer - Keypair or Signer instance
|
|
468
|
+
*/
|
|
469
|
+
setSigner(signer) {
|
|
470
|
+
this.signer = signer;
|
|
471
|
+
}
|
|
472
|
+
/**
|
|
473
|
+
* Get unsigned transaction for external signing
|
|
474
|
+
* Useful for wallet adapter integration
|
|
475
|
+
* @param pda - Target PDA
|
|
476
|
+
* @param data - Data buffer to store in memo
|
|
477
|
+
* @returns Unsigned Transaction object
|
|
478
|
+
*/
|
|
479
|
+
async createUnsignedMemoTransaction(pda, data) {
|
|
480
|
+
const MEMO_PROGRAM_ID = new web3_js_1.PublicKey('MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr');
|
|
481
|
+
const memoInstruction = new web3_js_1.TransactionInstruction({
|
|
482
|
+
keys: [{ pubkey: pda, isSigner: false, isWritable: false }],
|
|
483
|
+
programId: MEMO_PROGRAM_ID,
|
|
484
|
+
data: data,
|
|
485
|
+
});
|
|
486
|
+
const transaction = new web3_js_1.Transaction();
|
|
487
|
+
transaction.add(memoInstruction);
|
|
488
|
+
const blockhashData = await this.client.call('getLatestBlockhash', [{ commitment: 'confirmed' }]);
|
|
489
|
+
const { blockhash, lastValidBlockHeight } = blockhashData.value;
|
|
490
|
+
transaction.recentBlockhash = blockhash;
|
|
491
|
+
transaction.lastValidBlockHeight = lastValidBlockHeight;
|
|
492
|
+
transaction.feePayer = this.walletAddress;
|
|
493
|
+
return transaction;
|
|
494
|
+
}
|
|
495
|
+
/**
|
|
496
|
+
* Batch inscribe multiple validation results on-chain
|
|
497
|
+
* Uses client.batch() for optimal performance when inscribing multiple proofs
|
|
498
|
+
* @param validationResults - Array of merkle validation results
|
|
499
|
+
* @param pdas - Optional custom PDAs
|
|
500
|
+
* @returns Array of inscription results
|
|
501
|
+
*/
|
|
502
|
+
async batchInscribeOnChain(validationResults, pdas) {
|
|
503
|
+
if (validationResults.length === 0)
|
|
504
|
+
return [];
|
|
505
|
+
const results = [];
|
|
506
|
+
const batchSize = this.batchConfig.batchSize || 10;
|
|
507
|
+
// Process in batches to avoid overwhelming the network
|
|
508
|
+
for (let i = 0; i < validationResults.length; i += batchSize) {
|
|
509
|
+
const batch = validationResults.slice(i, i + batchSize);
|
|
510
|
+
// Inscribe each in parallel within the batch
|
|
511
|
+
const batchResults = await Promise.all(batch.map((result) => this.inscribeOnChain(result, pdas)));
|
|
512
|
+
results.push(...batchResults);
|
|
513
|
+
// Delay between batches
|
|
514
|
+
if (i + batchSize < validationResults.length) {
|
|
515
|
+
await this.sleep(this.batchConfig.delayMs || 1000);
|
|
516
|
+
}
|
|
517
|
+
}
|
|
518
|
+
return results;
|
|
519
|
+
}
|
|
520
|
+
}
|
|
521
|
+
exports.MerkleOperation = MerkleOperation;
|
|
522
|
+
//# sourceMappingURL=merkle-operation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"merkle-operation.js","sourceRoot":"","sources":["../../../src/ai/merkle-operation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PDA Manager - Synapse SDK Implementation
|
|
3
|
+
*
|
|
4
|
+
* Professional PDA (Program Derived Address) manager inspired by OOBE Protocol
|
|
5
|
+
* but implemented using Synapse SDK's modular architecture and batch methods.
|
|
6
|
+
* No Raydium dependencies - pure Solana Web3.js integration.
|
|
7
|
+
*
|
|
8
|
+
* @module PDAManager
|
|
9
|
+
* @author Synapse Gateway Team
|
|
10
|
+
*/
|
|
11
|
+
import { PublicKey } from '@solana/web3.js';
|
|
12
|
+
import type { SynapseClient } from '../client';
|
|
13
|
+
import type { BatchOptionRequest } from './types.ai';
|
|
14
|
+
/**
|
|
15
|
+
* Configuration for PDA derivation seeds
|
|
16
|
+
*/
|
|
17
|
+
export interface PDAConfig {
|
|
18
|
+
/** Seed for Merkle database PDA */
|
|
19
|
+
merkleDbSeed?: string;
|
|
20
|
+
/** Seed for Merkle root PDA */
|
|
21
|
+
merkleRootSeed?: string;
|
|
22
|
+
/** Seed for personality database PDA */
|
|
23
|
+
personalityDbSeed?: string;
|
|
24
|
+
/** Seed for personality root PDA */
|
|
25
|
+
personalityRootSeed?: string;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Default PDA seeds configuration
|
|
29
|
+
*/
|
|
30
|
+
export declare const DEFAULT_PDA_CONFIG: Required<PDAConfig>;
|
|
31
|
+
/**
|
|
32
|
+
* PDAs result structure
|
|
33
|
+
*/
|
|
34
|
+
export interface UserPDAs {
|
|
35
|
+
/** Leaf/Database PDA for storing merkle data */
|
|
36
|
+
leafPDA: PublicKey;
|
|
37
|
+
/** Root PDA for storing merkle roots and proofs */
|
|
38
|
+
rootPDA: PublicKey;
|
|
39
|
+
/** Bump seed for leaf PDA */
|
|
40
|
+
leafBump: number;
|
|
41
|
+
/** Bump seed for root PDA */
|
|
42
|
+
rootBump: number;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* PDAManager - manages Program Derived Addresses for Merkle storage
|
|
46
|
+
*
|
|
47
|
+
* This class provides utilities to derive and manage PDAs used for storing
|
|
48
|
+
* large amounts of transaction data on-chain using a Merkle tree approach.
|
|
49
|
+
* Compatible with OOBE Protocol patterns but using pure Solana libraries.
|
|
50
|
+
*/
|
|
51
|
+
export declare class PDAManager {
|
|
52
|
+
private client;
|
|
53
|
+
private wallet;
|
|
54
|
+
private config;
|
|
55
|
+
private programId;
|
|
56
|
+
private rpcMethods;
|
|
57
|
+
private batchConfig;
|
|
58
|
+
/**
|
|
59
|
+
* Create a new PDAManager instance
|
|
60
|
+
* @param client - Synapse client for RPC calls
|
|
61
|
+
* @param walletAddress - User wallet address
|
|
62
|
+
* @param config - Optional PDA configuration
|
|
63
|
+
* @param programId - Optional program ID (defaults to System Program)
|
|
64
|
+
* @param batchConfig - Optional batch processing configuration
|
|
65
|
+
*/
|
|
66
|
+
constructor(client: SynapseClient, walletAddress: string, config?: PDAConfig, programId?: string, batchConfig?: BatchOptionRequest);
|
|
67
|
+
/**
|
|
68
|
+
* Generate a deterministic seed buffer from a string seed and wallet
|
|
69
|
+
* Uses SHA-256 hashing for deterministic derivation (OOBE-compatible)
|
|
70
|
+
* @param seed - Base seed string
|
|
71
|
+
* @param wallet - Wallet public key
|
|
72
|
+
* @returns 32-byte seed buffer
|
|
73
|
+
*/
|
|
74
|
+
private generateSeed;
|
|
75
|
+
/**
|
|
76
|
+
* Get user PDAs for Merkle data storage
|
|
77
|
+
* Derives two PDAs: one for storing leaf/chunk data, one for roots
|
|
78
|
+
* @param customConfig - Optional custom seed configuration
|
|
79
|
+
* @returns UserPDAs with leaf and root addresses + bumps
|
|
80
|
+
*/
|
|
81
|
+
getUserPDAs(customConfig?: PDAConfig): UserPDAs;
|
|
82
|
+
/**
|
|
83
|
+
* Get user PDAs for Personality storage (OOBE Agent personality system)
|
|
84
|
+
* Similar to getUserPDAs but uses personality-specific seeds
|
|
85
|
+
* @returns UserPDAs for personality data
|
|
86
|
+
*/
|
|
87
|
+
getUserPersonalityPDAs(): UserPDAs;
|
|
88
|
+
/**
|
|
89
|
+
* Check if PDA accounts exist on-chain
|
|
90
|
+
* Uses Synapse client's batch() for optimal performance
|
|
91
|
+
* @param pdas - UserPDAs to check
|
|
92
|
+
* @returns Object indicating which PDAs exist
|
|
93
|
+
*/
|
|
94
|
+
checkPDAExistence(pdas: UserPDAs): Promise<{
|
|
95
|
+
leafExists: boolean;
|
|
96
|
+
rootExists: boolean;
|
|
97
|
+
}>;
|
|
98
|
+
/**
|
|
99
|
+
* Get PDA account info using Synapse client
|
|
100
|
+
* @param pda - PDA public key
|
|
101
|
+
* @returns Account info or null
|
|
102
|
+
*/
|
|
103
|
+
getPDAAccountInfo(pda: PublicKey): Promise<import("..").AccountInfo | null>;
|
|
104
|
+
/**
|
|
105
|
+
* Get multiple PDA account infos using batch for optimal performance
|
|
106
|
+
* @param pdas - Array of PDA public keys
|
|
107
|
+
* @returns Array of account infos (null if not found)
|
|
108
|
+
*/
|
|
109
|
+
getBatchPDAAccountInfo(pdas: PublicKey[]): Promise<any[]>;
|
|
110
|
+
/**
|
|
111
|
+
* Validate PDA derivation (utility for debugging)
|
|
112
|
+
* @param pda - PDA to validate
|
|
113
|
+
* @param seeds - Seeds used for derivation
|
|
114
|
+
* @returns true if PDA matches expected derivation
|
|
115
|
+
*/
|
|
116
|
+
validatePDA(pda: PublicKey, seeds: Buffer[]): boolean;
|
|
117
|
+
/**
|
|
118
|
+
* Get all PDAs for a wallet (convenience method)
|
|
119
|
+
* Returns both standard and personality PDAs
|
|
120
|
+
*/
|
|
121
|
+
getAllUserPDAs(): {
|
|
122
|
+
standard: UserPDAs;
|
|
123
|
+
personality: UserPDAs;
|
|
124
|
+
};
|
|
125
|
+
/**
|
|
126
|
+
* Get batch configuration
|
|
127
|
+
*/
|
|
128
|
+
getBatchConfig(): BatchOptionRequest;
|
|
129
|
+
/**
|
|
130
|
+
* Update batch configuration
|
|
131
|
+
*/
|
|
132
|
+
updateBatchConfig(config: Partial<BatchOptionRequest>): void;
|
|
133
|
+
}
|
|
134
|
+
//# sourceMappingURL=pda-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pda-manager.d.ts","sourceRoot":"","sources":["../../../src/ai/pda-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,SAAS,EAAiB,MAAM,iBAAiB,CAAC;AAC3D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAGrD;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,mCAAmC;IACnC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,+BAA+B;IAC/B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,wCAAwC;IACxC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,oCAAoC;IACpC,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED;;GAEG;AACH,eAAO,MAAM,kBAAkB,EAAE,QAAQ,CAAC,SAAS,CAKlD,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,gDAAgD;IAChD,OAAO,EAAE,SAAS,CAAC;IACnB,mDAAmD;IACnD,OAAO,EAAE,SAAS,CAAC;IACnB,6BAA6B;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,6BAA6B;IAC7B,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;GAMG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,MAAM,CAAY;IAC1B,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,SAAS,CAAY;IAC7B,OAAO,CAAC,UAAU,CAAmB;IACrC,OAAO,CAAC,WAAW,CAAqB;IAExC;;;;;;;OAOG;gBAED,MAAM,EAAE,aAAa,EACrB,aAAa,EAAE,MAAM,EACrB,MAAM,CAAC,EAAE,SAAS,EAClB,SAAS,CAAC,EAAE,MAAM,EAClB,WAAW,CAAC,EAAE,kBAAkB;IAgBlC;;;;;;OAMG;IACH,OAAO,CAAC,YAAY;IAOpB;;;;;OAKG;IACI,WAAW,CAAC,YAAY,CAAC,EAAE,SAAS,GAAG,QAAQ;IAyBtD;;;;OAIG;IACI,sBAAsB,IAAI,QAAQ;IAyBzC;;;;;OAKG;IACU,iBAAiB,CAC5B,IAAI,EAAE,QAAQ,GACb,OAAO,CAAC;QAAE,UAAU,EAAE,OAAO,CAAC;QAAC,UAAU,EAAE,OAAO,CAAA;KAAE,CAAC;IAuBxD;;;;OAIG;IACU,iBAAiB,CAAC,GAAG,EAAE,SAAS;IAW7C;;;;OAIG;IACU,sBAAsB,CAAC,IAAI,EAAE,SAAS,EAAE;IAiBrD;;;;;OAKG;IACI,WAAW,CAAC,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO;IAS5D;;;OAGG;IACI,cAAc;;;;IAOrB;;OAEG;IACI,cAAc,IAAI,kBAAkB;IAI3C;;OAEG;IACI,iBAAiB,CAAC,MAAM,EAAE,OAAO,CAAC,kBAAkB,CAAC,GAAG,IAAI;CAGpE"}
|