@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.
Files changed (460) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +1393 -0
  3. package/dist/cjs/advanced/circuit-breaker.d.ts +111 -0
  4. package/dist/cjs/advanced/circuit-breaker.d.ts.map +1 -0
  5. package/dist/cjs/advanced/circuit-breaker.js +278 -0
  6. package/dist/cjs/advanced/circuit-breaker.js.map +1 -0
  7. package/dist/cjs/advanced/index.d.ts +8 -0
  8. package/dist/cjs/advanced/index.d.ts.map +1 -0
  9. package/dist/cjs/advanced/index.js +13 -0
  10. package/dist/cjs/advanced/index.js.map +1 -0
  11. package/dist/cjs/advanced/load-balancer.d.ts +114 -0
  12. package/dist/cjs/advanced/load-balancer.d.ts.map +1 -0
  13. package/dist/cjs/advanced/load-balancer.js +354 -0
  14. package/dist/cjs/advanced/load-balancer.js.map +1 -0
  15. package/dist/cjs/advanced/smart-caching.d.ts +113 -0
  16. package/dist/cjs/advanced/smart-caching.d.ts.map +1 -0
  17. package/dist/cjs/advanced/smart-caching.js +461 -0
  18. package/dist/cjs/advanced/smart-caching.js.map +1 -0
  19. package/dist/cjs/advanced/types.d.ts +228 -0
  20. package/dist/cjs/advanced/types.d.ts.map +1 -0
  21. package/dist/cjs/advanced/types.js +7 -0
  22. package/dist/cjs/advanced/types.js.map +1 -0
  23. package/dist/cjs/ai/index.d.ts +15 -0
  24. package/dist/cjs/ai/index.d.ts.map +1 -0
  25. package/dist/cjs/ai/index.js +20 -0
  26. package/dist/cjs/ai/index.js.map +1 -0
  27. package/dist/cjs/ai/merkle-operation.d.ts +245 -0
  28. package/dist/cjs/ai/merkle-operation.d.ts.map +1 -0
  29. package/dist/cjs/ai/merkle-operation.js +522 -0
  30. package/dist/cjs/ai/merkle-operation.js.map +1 -0
  31. package/dist/cjs/ai/pda-manager.d.ts +134 -0
  32. package/dist/cjs/ai/pda-manager.d.ts.map +1 -0
  33. package/dist/cjs/ai/pda-manager.js +250 -0
  34. package/dist/cjs/ai/pda-manager.js.map +1 -0
  35. package/dist/cjs/ai/types.ai.d.ts +172 -0
  36. package/dist/cjs/ai/types.ai.d.ts.map +1 -0
  37. package/dist/cjs/ai/types.ai.js +14 -0
  38. package/dist/cjs/ai/types.ai.js.map +1 -0
  39. package/dist/cjs/ai/zero-combine-fetcher.d.ts +171 -0
  40. package/dist/cjs/ai/zero-combine-fetcher.d.ts.map +1 -0
  41. package/dist/cjs/ai/zero-combine-fetcher.js +412 -0
  42. package/dist/cjs/ai/zero-combine-fetcher.js.map +1 -0
  43. package/dist/cjs/client.d.ts +83 -0
  44. package/dist/cjs/client.d.ts.map +1 -0
  45. package/dist/cjs/client.js +287 -0
  46. package/dist/cjs/client.js.map +1 -0
  47. package/dist/cjs/defi/advanced-features.d.ts +207 -0
  48. package/dist/cjs/defi/advanced-features.d.ts.map +1 -0
  49. package/dist/cjs/defi/advanced-features.js +382 -0
  50. package/dist/cjs/defi/advanced-features.js.map +1 -0
  51. package/dist/cjs/defi/index.d.ts +29 -0
  52. package/dist/cjs/defi/index.d.ts.map +1 -0
  53. package/dist/cjs/defi/index.js +50 -0
  54. package/dist/cjs/defi/index.js.map +1 -0
  55. package/dist/cjs/defi/jito.d.ts +118 -0
  56. package/dist/cjs/defi/jito.d.ts.map +1 -0
  57. package/dist/cjs/defi/jito.js +291 -0
  58. package/dist/cjs/defi/jito.js.map +1 -0
  59. package/dist/cjs/defi/jupiter.d.ts +143 -0
  60. package/dist/cjs/defi/jupiter.d.ts.map +1 -0
  61. package/dist/cjs/defi/jupiter.js +219 -0
  62. package/dist/cjs/defi/jupiter.js.map +1 -0
  63. package/dist/cjs/defi/price-feed.d.ts +63 -0
  64. package/dist/cjs/defi/price-feed.d.ts.map +1 -0
  65. package/dist/cjs/defi/price-feed.js +153 -0
  66. package/dist/cjs/defi/price-feed.js.map +1 -0
  67. package/dist/cjs/defi/token-data.d.ts +83 -0
  68. package/dist/cjs/defi/token-data.d.ts.map +1 -0
  69. package/dist/cjs/defi/token-data.js +205 -0
  70. package/dist/cjs/defi/token-data.js.map +1 -0
  71. package/dist/cjs/defi/unstable-features.d.ts +207 -0
  72. package/dist/cjs/defi/unstable-features.d.ts.map +1 -0
  73. package/dist/cjs/defi/unstable-features.js +382 -0
  74. package/dist/cjs/defi/unstable-features.js.map +1 -0
  75. package/dist/cjs/defi/utils.d.ts +265 -0
  76. package/dist/cjs/defi/utils.d.ts.map +1 -0
  77. package/dist/cjs/defi/utils.js +619 -0
  78. package/dist/cjs/defi/utils.js.map +1 -0
  79. package/dist/cjs/index.d.ts +31 -0
  80. package/dist/cjs/index.d.ts.map +1 -0
  81. package/dist/cjs/index.js +71 -0
  82. package/dist/cjs/index.js.map +1 -0
  83. package/dist/cjs/methods/solana-rpc.d.ts +362 -0
  84. package/dist/cjs/methods/solana-rpc.d.ts.map +1 -0
  85. package/dist/cjs/methods/solana-rpc.js +584 -0
  86. package/dist/cjs/methods/solana-rpc.js.map +1 -0
  87. package/dist/cjs/nft/advanced-features.d.ts +205 -0
  88. package/dist/cjs/nft/advanced-features.d.ts.map +1 -0
  89. package/dist/cjs/nft/advanced-features.js +529 -0
  90. package/dist/cjs/nft/advanced-features.js.map +1 -0
  91. package/dist/cjs/nft/clients/index.d.ts +8 -0
  92. package/dist/cjs/nft/clients/index.d.ts.map +1 -0
  93. package/dist/cjs/nft/clients/index.js +14 -0
  94. package/dist/cjs/nft/clients/index.js.map +1 -0
  95. package/dist/cjs/nft/clients/magic-eden-client.d.ts +101 -0
  96. package/dist/cjs/nft/clients/magic-eden-client.d.ts.map +1 -0
  97. package/dist/cjs/nft/clients/magic-eden-client.js +263 -0
  98. package/dist/cjs/nft/clients/magic-eden-client.js.map +1 -0
  99. package/dist/cjs/nft/clients/metaplex-onchain-client.d.ts +154 -0
  100. package/dist/cjs/nft/clients/metaplex-onchain-client.d.ts.map +1 -0
  101. package/dist/cjs/nft/clients/metaplex-onchain-client.js +408 -0
  102. package/dist/cjs/nft/clients/metaplex-onchain-client.js.map +1 -0
  103. package/dist/cjs/nft/clients/tensor-client.d.ts +79 -0
  104. package/dist/cjs/nft/clients/tensor-client.d.ts.map +1 -0
  105. package/dist/cjs/nft/clients/tensor-client.js +222 -0
  106. package/dist/cjs/nft/clients/tensor-client.js.map +1 -0
  107. package/dist/cjs/nft/index.d.ts +13 -0
  108. package/dist/cjs/nft/index.d.ts.map +1 -0
  109. package/dist/cjs/nft/index.js +37 -0
  110. package/dist/cjs/nft/index.js.map +1 -0
  111. package/dist/cjs/nft/types.nft.d.ts +342 -0
  112. package/dist/cjs/nft/types.nft.d.ts.map +1 -0
  113. package/dist/cjs/nft/types.nft.js +3 -0
  114. package/dist/cjs/nft/types.nft.js.map +1 -0
  115. package/dist/cjs/nft/utils.d.ts +46 -0
  116. package/dist/cjs/nft/utils.d.ts.map +1 -0
  117. package/dist/cjs/nft/utils.js +281 -0
  118. package/dist/cjs/nft/utils.js.map +1 -0
  119. package/dist/cjs/types.d.ts +525 -0
  120. package/dist/cjs/types.d.ts.map +1 -0
  121. package/dist/cjs/types.js +192 -0
  122. package/dist/cjs/types.js.map +1 -0
  123. package/dist/cjs/utils/constant.d.ts +8 -0
  124. package/dist/cjs/utils/constant.d.ts.map +1 -0
  125. package/dist/cjs/utils/constant.js +12 -0
  126. package/dist/cjs/utils/constant.js.map +1 -0
  127. package/dist/cjs/utils/helpers.d.ts +92 -0
  128. package/dist/cjs/utils/helpers.d.ts.map +1 -0
  129. package/dist/cjs/utils/helpers.js +248 -0
  130. package/dist/cjs/utils/helpers.js.map +1 -0
  131. package/dist/cjs/websocket/client.d.ts +182 -0
  132. package/dist/cjs/websocket/client.d.ts.map +1 -0
  133. package/dist/cjs/websocket/client.js +465 -0
  134. package/dist/cjs/websocket/client.js.map +1 -0
  135. package/dist/cjs/websocket/index.d.ts +6 -0
  136. package/dist/cjs/websocket/index.d.ts.map +1 -0
  137. package/dist/cjs/websocket/index.js +9 -0
  138. package/dist/cjs/websocket/index.js.map +1 -0
  139. package/dist/docs/.nojekyll +1 -0
  140. package/dist/docs/assets/highlight.css +113 -0
  141. package/dist/docs/assets/icons.js +18 -0
  142. package/dist/docs/assets/icons.svg +1 -0
  143. package/dist/docs/assets/main.js +60 -0
  144. package/dist/docs/assets/navigation.js +1 -0
  145. package/dist/docs/assets/search.js +1 -0
  146. package/dist/docs/assets/style.css +1493 -0
  147. package/dist/docs/classes/AIError.html +40 -0
  148. package/dist/docs/classes/AIInvestmentAdvisor.html +26 -0
  149. package/dist/docs/classes/AIRarityCalculator.html +28 -0
  150. package/dist/docs/classes/ArbitrageDetector.html +30 -0
  151. package/dist/docs/classes/BatchingError.html +40 -0
  152. package/dist/docs/classes/CacheError.html +40 -0
  153. package/dist/docs/classes/CircuitBreaker.html +38 -0
  154. package/dist/docs/classes/CircuitBreakerError.html +40 -0
  155. package/dist/docs/classes/CollectionAnalytics.html +30 -0
  156. package/dist/docs/classes/DeFiError.html +40 -0
  157. package/dist/docs/classes/FlashLoanSimulator.html +26 -0
  158. package/dist/docs/classes/JitoIntegration.html +53 -0
  159. package/dist/docs/classes/JupiterIntegration.html +43 -0
  160. package/dist/docs/classes/Keypair.html +28 -0
  161. package/dist/docs/classes/LoadBalancer.html +34 -0
  162. package/dist/docs/classes/MEVProtection.html +28 -0
  163. package/dist/docs/classes/MarketplaceAggregator.html +28 -0
  164. package/dist/docs/classes/MerkleOperation.html +74 -0
  165. package/dist/docs/classes/NFTEngine.html +29 -0
  166. package/dist/docs/classes/NFTError.html +40 -0
  167. package/dist/docs/classes/NetworkError.html +40 -0
  168. package/dist/docs/classes/PDAManager.html +46 -0
  169. package/dist/docs/classes/PortfolioAnalytics.html +26 -0
  170. package/dist/docs/classes/PriceFeedIntegration.html +37 -0
  171. package/dist/docs/classes/PublicKey.html +46 -0
  172. package/dist/docs/classes/RateLimitError.html +39 -0
  173. package/dist/docs/classes/SmartCaching.html +42 -0
  174. package/dist/docs/classes/Synapse.html +6 -0
  175. package/dist/docs/classes/SynapseClient.html +55 -0
  176. package/dist/docs/classes/SynapseError.html +37 -0
  177. package/dist/docs/classes/SynapseSolanaEngine.html +49 -0
  178. package/dist/docs/classes/SynapseUtils.html +25 -0
  179. package/dist/docs/classes/TokenDataIntegration.html +41 -0
  180. package/dist/docs/classes/Transaction.html +87 -0
  181. package/dist/docs/classes/TransactionInstruction.html +10 -0
  182. package/dist/docs/classes/UpstreamError.html +39 -0
  183. package/dist/docs/classes/WebSocketClient.html +47 -0
  184. package/dist/docs/classes/WebSocketError.html +40 -0
  185. package/dist/docs/classes/YieldFarmingFinder.html +26 -0
  186. package/dist/docs/classes/ZeroCombineFetcher.html +25 -0
  187. package/dist/docs/functions/createSynapseClient.html +2 -0
  188. package/dist/docs/hierarchy.html +1 -0
  189. package/dist/docs/index.html +776 -0
  190. package/dist/docs/interfaces/AIAgentConfig.html +11 -0
  191. package/dist/docs/interfaces/AIAgentContext.html +7 -0
  192. package/dist/docs/interfaces/AIContext.html +6 -0
  193. package/dist/docs/interfaces/AIMethodResult.html +6 -0
  194. package/dist/docs/interfaces/AIRarityAnalysis.html +3 -0
  195. package/dist/docs/interfaces/AIResponse.html +5 -0
  196. package/dist/docs/interfaces/AccountInfo.html +8 -0
  197. package/dist/docs/interfaces/AdvancedClientConfig.html +7 -0
  198. package/dist/docs/interfaces/AdvancedEvents.html +9 -0
  199. package/dist/docs/interfaces/AdvancedMetricsData.html +5 -0
  200. package/dist/docs/interfaces/AdvancedPerformanceMetrics.html +6 -0
  201. package/dist/docs/interfaces/AgentAdapter.html +6 -0
  202. package/dist/docs/interfaces/AgentRiskReport.html +6 -0
  203. package/dist/docs/interfaces/AgentTradeSuggestion.html +10 -0
  204. package/dist/docs/interfaces/AggregatedCollectionStats.html +36 -0
  205. package/dist/docs/interfaces/ArbitrageOpportunity.html +8 -0
  206. package/dist/docs/interfaces/AutoTradingStrategy.html +13 -0
  207. package/dist/docs/interfaces/BatchResponse.html +4 -0
  208. package/dist/docs/interfaces/BatchResult.html +6 -0
  209. package/dist/docs/interfaces/BatcherConfig.html +5 -0
  210. package/dist/docs/interfaces/BirdeyeTokenPrice.html +4 -0
  211. package/dist/docs/interfaces/BlockhashInfo.html +5 -0
  212. package/dist/docs/interfaces/BuildSwapTxResult.html +7 -0
  213. package/dist/docs/interfaces/CacheStats.html +9 -0
  214. package/dist/docs/interfaces/ChunkInfo.html +10 -0
  215. package/dist/docs/interfaces/CircuitBreakerConfig.html +6 -0
  216. package/dist/docs/interfaces/ClientStats.html +14 -0
  217. package/dist/docs/interfaces/CollectionStats.html +17 -0
  218. package/dist/docs/interfaces/CollectionTrends.html +7 -0
  219. package/dist/docs/interfaces/CompressedNFTInfo.html +13 -0
  220. package/dist/docs/interfaces/ConfirmedTransaction.html +6 -0
  221. package/dist/docs/interfaces/ConnectionEvents.html +11 -0
  222. package/dist/docs/interfaces/DeFiConfig.html +16 -0
  223. package/dist/docs/interfaces/DiagnosticsResult.html +6 -0
  224. package/dist/docs/interfaces/EpochInfo.html +9 -0
  225. package/dist/docs/interfaces/ExecuteSwapParams.html +10 -0
  226. package/dist/docs/interfaces/FetchConfig.html +7 -0
  227. package/dist/docs/interfaces/FlashLoanAction.html +6 -0
  228. package/dist/docs/interfaces/FlashLoanSimulation.html +9 -0
  229. package/dist/docs/interfaces/GatewayStats.html +7 -0
  230. package/dist/docs/interfaces/InscriptionResult.html +18 -0
  231. package/dist/docs/interfaces/InvestmentRecommendation.html +10 -0
  232. package/dist/docs/interfaces/JitoBundleParams.html +4 -0
  233. package/dist/docs/interfaces/JitoBundleResult.html +6 -0
  234. package/dist/docs/interfaces/JitoBundleStatus.html +6 -0
  235. package/dist/docs/interfaces/JitoTipAccount.html +3 -0
  236. package/dist/docs/interfaces/JupiterQuoteParams.html +10 -0
  237. package/dist/docs/interfaces/JupiterQuoteRequest.html +17 -0
  238. package/dist/docs/interfaces/JupiterQuoteResponse.html +13 -0
  239. package/dist/docs/interfaces/JupiterSwapOptions.html +8 -0
  240. package/dist/docs/interfaces/JupiterSwapResponse.html +4 -0
  241. package/dist/docs/interfaces/JupiterTokenPrice.html +5 -0
  242. package/dist/docs/interfaces/LoadBalancerConfig.html +5 -0
  243. package/dist/docs/interfaces/MEVProtectionConfig.html +11 -0
  244. package/dist/docs/interfaces/MEVProtectionResult.html +6 -0
  245. package/dist/docs/interfaces/MagicEdenActivity.html +22 -0
  246. package/dist/docs/interfaces/MagicEdenCollection.html +22 -0
  247. package/dist/docs/interfaces/MagicEdenCollectionStats.html +17 -0
  248. package/dist/docs/interfaces/MagicEdenErrorResponse.html +4 -0
  249. package/dist/docs/interfaces/MagicEdenListing.html +24 -0
  250. package/dist/docs/interfaces/MarketplaceClientConfig.html +14 -0
  251. package/dist/docs/interfaces/MarketplaceFloorPrices.html +7 -0
  252. package/dist/docs/interfaces/MarketplaceListing.html +9 -0
  253. package/dist/docs/interfaces/MerkleLeaf.html +6 -0
  254. package/dist/docs/interfaces/MerkleProof.html +8 -0
  255. package/dist/docs/interfaces/MerkleValidationResult.html +10 -0
  256. package/dist/docs/interfaces/MultiChainSignal.html +8 -0
  257. package/dist/docs/interfaces/NFTAttribute.html +4 -0
  258. package/dist/docs/interfaces/NFTConfig.html +6 -0
  259. package/dist/docs/interfaces/NFTInfo.html +10 -0
  260. package/dist/docs/interfaces/NFTMetadata.html +9 -0
  261. package/dist/docs/interfaces/NormalizedMarketplaceListing.html +18 -0
  262. package/dist/docs/interfaces/OOBECompatibleAgent.html +8 -0
  263. package/dist/docs/interfaces/PDAConfig.html +10 -0
  264. package/dist/docs/interfaces/ParsedAccountInfo.html +8 -0
  265. package/dist/docs/interfaces/PerformanceMetrics.html +9 -0
  266. package/dist/docs/interfaces/PortfolioMetrics.html +10 -0
  267. package/dist/docs/interfaces/PriceData.html +8 -0
  268. package/dist/docs/interfaces/ProofRecord.html +12 -0
  269. package/dist/docs/interfaces/QuoteRequestCommon.html +11 -0
  270. package/dist/docs/interfaces/QuoteResponse.html +6 -0
  271. package/dist/docs/interfaces/RarityAlgorithmConfig.html +3 -0
  272. package/dist/docs/interfaces/RarityScore.html +8 -0
  273. package/dist/docs/interfaces/RaydiumBuildSwapParams.html +14 -0
  274. package/dist/docs/interfaces/RaydiumQuoteRequest.html +14 -0
  275. package/dist/docs/interfaces/RequestOptions.html +12 -0
  276. package/dist/docs/interfaces/RetryAttempt.html +5 -0
  277. package/dist/docs/interfaces/RpcError.html +5 -0
  278. package/dist/docs/interfaces/RpcRequest.html +6 -0
  279. package/dist/docs/interfaces/RpcResponse.html +6 -0
  280. package/dist/docs/interfaces/SecurityThreat.html +6 -0
  281. package/dist/docs/interfaces/SignatureInfo.html +8 -0
  282. package/dist/docs/interfaces/Signer.html +4 -0
  283. package/dist/docs/interfaces/SmartCacheConfig.html +7 -0
  284. package/dist/docs/interfaces/SmartQueryOptions.html +10 -0
  285. package/dist/docs/interfaces/StressTestOptions.html +8 -0
  286. package/dist/docs/interfaces/StressTestResult.html +9 -0
  287. package/dist/docs/interfaces/SubscriptionConfig.html +9 -0
  288. package/dist/docs/interfaces/SubscriptionOptions.html +7 -0
  289. package/dist/docs/interfaces/SubscriptionResult.html +7 -0
  290. package/dist/docs/interfaces/SynapseConfig.html +13 -0
  291. package/dist/docs/interfaces/SynapseLikeClient.html +4 -0
  292. package/dist/docs/interfaces/TensorCollectionStats.html +33 -0
  293. package/dist/docs/interfaces/TensorErrorResponse.html +5 -0
  294. package/dist/docs/interfaces/TensorListing.html +16 -0
  295. package/dist/docs/interfaces/TensorSale.html +16 -0
  296. package/dist/docs/interfaces/TokenAccount.html +7 -0
  297. package/dist/docs/interfaces/TokenAccountInfo.html +12 -0
  298. package/dist/docs/interfaces/TokenHolding.html +8 -0
  299. package/dist/docs/interfaces/TokenInfo.html +7 -0
  300. package/dist/docs/interfaces/TokenLargestAccount.html +5 -0
  301. package/dist/docs/interfaces/TokenSupply.html +5 -0
  302. package/dist/docs/interfaces/TradeExecution.html +14 -0
  303. package/dist/docs/interfaces/TransactionSignature.html +8 -0
  304. package/dist/docs/interfaces/UpstreamHealth.html +8 -0
  305. package/dist/docs/interfaces/UserPDAs.html +10 -0
  306. package/dist/docs/interfaces/WebSocketConfig.html +12 -0
  307. package/dist/docs/interfaces/WebSocketMessage.html +6 -0
  308. package/dist/docs/interfaces/YieldOpportunity.html +8 -0
  309. package/dist/docs/interfaces/ZeroChunk.html +8 -0
  310. package/dist/docs/interfaces/ZeroCombineResult.html +3 -0
  311. package/dist/docs/media/LICENSE +21 -0
  312. package/dist/docs/media/README-1.md +778 -0
  313. package/dist/docs/media/README-2.md +1050 -0
  314. package/dist/docs/media/README-3.md +1522 -0
  315. package/dist/docs/media/README-4.md +869 -0
  316. package/dist/docs/media/README-5.md +857 -0
  317. package/dist/docs/media/README-6.md +727 -0
  318. package/dist/docs/media/README.md +766 -0
  319. package/dist/docs/modules.html +168 -0
  320. package/dist/docs/types/BlockhashWithExpiryBlockHeight.html +1 -0
  321. package/dist/docs/types/Commitment.html +3 -0
  322. package/dist/docs/types/RiskTolerance.html +1 -0
  323. package/dist/docs/types/SimulatedTransactionResponse.html +1 -0
  324. package/dist/esm/advanced/circuit-breaker.d.ts +111 -0
  325. package/dist/esm/advanced/circuit-breaker.d.ts.map +1 -0
  326. package/dist/esm/advanced/circuit-breaker.js +274 -0
  327. package/dist/esm/advanced/circuit-breaker.js.map +1 -0
  328. package/dist/esm/advanced/index.d.ts +8 -0
  329. package/dist/esm/advanced/index.d.ts.map +1 -0
  330. package/dist/esm/advanced/index.js +7 -0
  331. package/dist/esm/advanced/index.js.map +1 -0
  332. package/dist/esm/advanced/load-balancer.d.ts +114 -0
  333. package/dist/esm/advanced/load-balancer.d.ts.map +1 -0
  334. package/dist/esm/advanced/load-balancer.js +350 -0
  335. package/dist/esm/advanced/load-balancer.js.map +1 -0
  336. package/dist/esm/advanced/smart-caching.d.ts +113 -0
  337. package/dist/esm/advanced/smart-caching.d.ts.map +1 -0
  338. package/dist/esm/advanced/smart-caching.js +457 -0
  339. package/dist/esm/advanced/smart-caching.js.map +1 -0
  340. package/dist/esm/advanced/types.d.ts +228 -0
  341. package/dist/esm/advanced/types.d.ts.map +1 -0
  342. package/dist/esm/advanced/types.js +6 -0
  343. package/dist/esm/advanced/types.js.map +1 -0
  344. package/dist/esm/ai/index.d.ts +15 -0
  345. package/dist/esm/ai/index.d.ts.map +1 -0
  346. package/dist/esm/ai/index.js +14 -0
  347. package/dist/esm/ai/index.js.map +1 -0
  348. package/dist/esm/ai/merkle-operation.d.ts +245 -0
  349. package/dist/esm/ai/merkle-operation.d.ts.map +1 -0
  350. package/dist/esm/ai/merkle-operation.js +485 -0
  351. package/dist/esm/ai/merkle-operation.js.map +1 -0
  352. package/dist/esm/ai/pda-manager.d.ts +134 -0
  353. package/dist/esm/ai/pda-manager.d.ts.map +1 -0
  354. package/dist/esm/ai/pda-manager.js +213 -0
  355. package/dist/esm/ai/pda-manager.js.map +1 -0
  356. package/dist/esm/ai/types.ai.d.ts +172 -0
  357. package/dist/esm/ai/types.ai.d.ts.map +1 -0
  358. package/dist/esm/ai/types.ai.js +13 -0
  359. package/dist/esm/ai/types.ai.js.map +1 -0
  360. package/dist/esm/ai/zero-combine-fetcher.d.ts +171 -0
  361. package/dist/esm/ai/zero-combine-fetcher.d.ts.map +1 -0
  362. package/dist/esm/ai/zero-combine-fetcher.js +408 -0
  363. package/dist/esm/ai/zero-combine-fetcher.js.map +1 -0
  364. package/dist/esm/client.d.ts +83 -0
  365. package/dist/esm/client.d.ts.map +1 -0
  366. package/dist/esm/client.js +283 -0
  367. package/dist/esm/client.js.map +1 -0
  368. package/dist/esm/defi/advanced-features.d.ts +207 -0
  369. package/dist/esm/defi/advanced-features.d.ts.map +1 -0
  370. package/dist/esm/defi/advanced-features.js +374 -0
  371. package/dist/esm/defi/advanced-features.js.map +1 -0
  372. package/dist/esm/defi/index.d.ts +29 -0
  373. package/dist/esm/defi/index.d.ts.map +1 -0
  374. package/dist/esm/defi/index.js +37 -0
  375. package/dist/esm/defi/index.js.map +1 -0
  376. package/dist/esm/defi/jito.d.ts +118 -0
  377. package/dist/esm/defi/jito.d.ts.map +1 -0
  378. package/dist/esm/defi/jito.js +287 -0
  379. package/dist/esm/defi/jito.js.map +1 -0
  380. package/dist/esm/defi/jupiter.d.ts +143 -0
  381. package/dist/esm/defi/jupiter.d.ts.map +1 -0
  382. package/dist/esm/defi/jupiter.js +215 -0
  383. package/dist/esm/defi/jupiter.js.map +1 -0
  384. package/dist/esm/defi/price-feed.d.ts +63 -0
  385. package/dist/esm/defi/price-feed.d.ts.map +1 -0
  386. package/dist/esm/defi/price-feed.js +149 -0
  387. package/dist/esm/defi/price-feed.js.map +1 -0
  388. package/dist/esm/defi/token-data.d.ts +83 -0
  389. package/dist/esm/defi/token-data.d.ts.map +1 -0
  390. package/dist/esm/defi/token-data.js +201 -0
  391. package/dist/esm/defi/token-data.js.map +1 -0
  392. package/dist/esm/defi/unstable-features.d.ts +207 -0
  393. package/dist/esm/defi/unstable-features.d.ts.map +1 -0
  394. package/dist/esm/defi/unstable-features.js +374 -0
  395. package/dist/esm/defi/unstable-features.js.map +1 -0
  396. package/dist/esm/defi/utils.d.ts +265 -0
  397. package/dist/esm/defi/utils.d.ts.map +1 -0
  398. package/dist/esm/defi/utils.js +582 -0
  399. package/dist/esm/defi/utils.js.map +1 -0
  400. package/dist/esm/index.d.ts +31 -0
  401. package/dist/esm/index.d.ts.map +1 -0
  402. package/dist/esm/index.js +47 -0
  403. package/dist/esm/index.js.map +1 -0
  404. package/dist/esm/methods/solana-rpc.d.ts +362 -0
  405. package/dist/esm/methods/solana-rpc.d.ts.map +1 -0
  406. package/dist/esm/methods/solana-rpc.js +532 -0
  407. package/dist/esm/methods/solana-rpc.js.map +1 -0
  408. package/dist/esm/nft/advanced-features.d.ts +205 -0
  409. package/dist/esm/nft/advanced-features.d.ts.map +1 -0
  410. package/dist/esm/nft/advanced-features.js +489 -0
  411. package/dist/esm/nft/advanced-features.js.map +1 -0
  412. package/dist/esm/nft/clients/index.d.ts +8 -0
  413. package/dist/esm/nft/clients/index.d.ts.map +1 -0
  414. package/dist/esm/nft/clients/index.js +8 -0
  415. package/dist/esm/nft/clients/index.js.map +1 -0
  416. package/dist/esm/nft/clients/magic-eden-client.d.ts +101 -0
  417. package/dist/esm/nft/clients/magic-eden-client.d.ts.map +1 -0
  418. package/dist/esm/nft/clients/magic-eden-client.js +259 -0
  419. package/dist/esm/nft/clients/magic-eden-client.js.map +1 -0
  420. package/dist/esm/nft/clients/metaplex-onchain-client.d.ts +154 -0
  421. package/dist/esm/nft/clients/metaplex-onchain-client.d.ts.map +1 -0
  422. package/dist/esm/nft/clients/metaplex-onchain-client.js +404 -0
  423. package/dist/esm/nft/clients/metaplex-onchain-client.js.map +1 -0
  424. package/dist/esm/nft/clients/tensor-client.d.ts +79 -0
  425. package/dist/esm/nft/clients/tensor-client.d.ts.map +1 -0
  426. package/dist/esm/nft/clients/tensor-client.js +218 -0
  427. package/dist/esm/nft/clients/tensor-client.js.map +1 -0
  428. package/dist/esm/nft/index.d.ts +13 -0
  429. package/dist/esm/nft/index.d.ts.map +1 -0
  430. package/dist/esm/nft/index.js +15 -0
  431. package/dist/esm/nft/index.js.map +1 -0
  432. package/dist/esm/nft/types.nft.d.ts +342 -0
  433. package/dist/esm/nft/types.nft.d.ts.map +1 -0
  434. package/dist/esm/nft/types.nft.js +2 -0
  435. package/dist/esm/nft/types.nft.js.map +1 -0
  436. package/dist/esm/nft/utils.d.ts +46 -0
  437. package/dist/esm/nft/utils.d.ts.map +1 -0
  438. package/dist/esm/nft/utils.js +276 -0
  439. package/dist/esm/nft/utils.js.map +1 -0
  440. package/dist/esm/types.d.ts +525 -0
  441. package/dist/esm/types.d.ts.map +1 -0
  442. package/dist/esm/types.js +178 -0
  443. package/dist/esm/types.js.map +1 -0
  444. package/dist/esm/utils/constant.d.ts +8 -0
  445. package/dist/esm/utils/constant.d.ts.map +1 -0
  446. package/dist/esm/utils/constant.js +8 -0
  447. package/dist/esm/utils/constant.js.map +1 -0
  448. package/dist/esm/utils/helpers.d.ts +92 -0
  449. package/dist/esm/utils/helpers.d.ts.map +1 -0
  450. package/dist/esm/utils/helpers.js +243 -0
  451. package/dist/esm/utils/helpers.js.map +1 -0
  452. package/dist/esm/websocket/client.d.ts +182 -0
  453. package/dist/esm/websocket/client.d.ts.map +1 -0
  454. package/dist/esm/websocket/client.js +458 -0
  455. package/dist/esm/websocket/client.js.map +1 -0
  456. package/dist/esm/websocket/index.d.ts +6 -0
  457. package/dist/esm/websocket/index.d.ts.map +1 -0
  458. package/dist/esm/websocket/index.js +5 -0
  459. package/dist/esm/websocket/index.js.map +1 -0
  460. package/package.json +160 -0
@@ -0,0 +1,485 @@
1
+ /**
2
+ * Merkle Operation - Synapse SDK Implementation
3
+ *
4
+ * Professional Merkle tree operations for proof generation, verification and
5
+ * on-chain inscription. Inspired by OOBE Protocol but optimized for Synapse SDK
6
+ * with efficient batching and modular architecture.
7
+ *
8
+ * @module MerkleOperation
9
+ * @author Synapse Gateway Team
10
+ */
11
+ import { PublicKey, Transaction, TransactionInstruction } from '@solana/web3.js';
12
+ import { PDAManager } from './pda-manager.js';
13
+ import * as crypto from 'crypto';
14
+ import { SolanaRpcMethods } from '../methods/solana-rpc.js';
15
+ /**
16
+ * MerkleOperation - handles Merkle tree operations and on-chain storage
17
+ *
18
+ * This class provides utilities for:
19
+ * - Generating Merkle trees from event data
20
+ * - Creating and verifying proofs
21
+ * - Splitting large data into chunks
22
+ * - Inscribing data on-chain via memo transactions
23
+ *
24
+ * For on-chain operations, you can provide either:
25
+ * - A Solana Connection + Signer for real transaction signing
26
+ * - Just use SynapseClient (will require pre-signed transactions)
27
+ */
28
+ export class MerkleOperation {
29
+ client;
30
+ pdaManager;
31
+ walletAddress;
32
+ batchConfig;
33
+ signer;
34
+ rpcMethods;
35
+ // Merkle tree state
36
+ leaves = [];
37
+ tree = [];
38
+ root = '';
39
+ /**
40
+ * Create a new MerkleOperation instance
41
+ * @param client - Synapse client for RPC calls
42
+ * @param walletAddress - User wallet address
43
+ * @param batchConfig - Optional batch processing configuration
44
+ * @param signer - Optional Signer/Keypair for signing transactions
45
+ */
46
+ constructor(client, walletAddress, batchConfig, connection, signer) {
47
+ this.client = client;
48
+ this.walletAddress = new PublicKey(walletAddress);
49
+ this.pdaManager = new PDAManager(client, walletAddress);
50
+ this.signer = signer;
51
+ this.batchConfig = {
52
+ batchSize: 50,
53
+ delayMs: 1000,
54
+ maxRetries: 3,
55
+ retryDelayMs: 1000,
56
+ ...batchConfig,
57
+ };
58
+ this.rpcMethods = new SolanaRpcMethods(client);
59
+ }
60
+ /**
61
+ * Create Merkle tree from data array
62
+ * @param data - Array of data items to hash
63
+ * @returns Merkle root hash (hex)
64
+ */
65
+ createMerkleTree(data) {
66
+ if (data.length === 0)
67
+ throw new Error('Data array cannot be empty');
68
+ // Hash all leaves
69
+ this.leaves = data.map((item) => this.hash(item));
70
+ // Build tree bottom-up
71
+ this.tree = [this.leaves];
72
+ let currentLevel = this.leaves;
73
+ while (currentLevel.length > 1) {
74
+ const nextLevel = [];
75
+ for (let i = 0; i < currentLevel.length; i += 2) {
76
+ const left = currentLevel[i];
77
+ const right = i + 1 < currentLevel.length ? currentLevel[i + 1] : left;
78
+ nextLevel.push(this.hash(left + right));
79
+ }
80
+ this.tree.push(nextLevel);
81
+ currentLevel = nextLevel;
82
+ }
83
+ this.root = currentLevel[0];
84
+ return this.root;
85
+ }
86
+ /**
87
+ * Get Merkle proof for a leaf
88
+ * @param leafData - Data to generate proof for
89
+ * @returns Merkle proof
90
+ */
91
+ getMerkleProof(leafData) {
92
+ const leaf = this.hash(leafData);
93
+ const leafIndex = this.leaves.indexOf(leaf);
94
+ if (leafIndex === -1) {
95
+ throw new Error('Leaf not found in tree');
96
+ }
97
+ const proof = [];
98
+ let index = leafIndex;
99
+ for (let level = 0; level < this.tree.length - 1; level++) {
100
+ const currentLevel = this.tree[level];
101
+ const isRightNode = index % 2 === 1;
102
+ const siblingIndex = isRightNode ? index - 1 : index + 1;
103
+ if (siblingIndex < currentLevel.length) {
104
+ proof.push(currentLevel[siblingIndex]);
105
+ }
106
+ index = Math.floor(index / 2);
107
+ }
108
+ return {
109
+ leaf,
110
+ proof,
111
+ root: this.root,
112
+ };
113
+ }
114
+ /**
115
+ * Verify a Merkle proof
116
+ * @param leaf - Leaf hash
117
+ * @param proof - Proof hashes
118
+ * @param root - Expected root hash
119
+ * @returns true if proof is valid
120
+ */
121
+ verifyProof(leaf, proof, root) {
122
+ let computedHash = leaf;
123
+ for (const proofElement of proof) {
124
+ // Deterministic ordering: smaller hash first
125
+ if (computedHash < proofElement) {
126
+ computedHash = this.hash(computedHash + proofElement);
127
+ }
128
+ else {
129
+ computedHash = this.hash(proofElement + computedHash);
130
+ }
131
+ }
132
+ return computedHash === root;
133
+ }
134
+ /**
135
+ * Batch verify multiple Merkle proofs
136
+ * @param proofs - Array of proof objects to verify
137
+ * @returns Array of verification results
138
+ */
139
+ batchVerifyProofs(proofs) {
140
+ return proofs.map((p) => this.verifyProof(p.leaf, p.proof, p.root));
141
+ } /**
142
+ * Calculate optimal chunks from buffer
143
+ * Splits data into chunks while respecting size limits for memo transactions
144
+ * @param buffer - Data buffer to chunk
145
+ * @param minChunkSize - Minimum chunk size (default: 1)
146
+ * @param maxChunkSize - Maximum chunk size (default: 560 for memo safety)
147
+ * @returns Array of chunk buffers
148
+ */
149
+ calculateChunks(buffer, minChunkSize = 1, maxChunkSize = 560) {
150
+ const chunks = [];
151
+ const adjustedMaxChunkSize = maxChunkSize - 64; // Reserve space for signature linking
152
+ let offset = 0;
153
+ while (offset < buffer.length) {
154
+ const remainingBytes = buffer.length - offset;
155
+ let chunkSize;
156
+ if (remainingBytes <= maxChunkSize) {
157
+ // Last chunk can use full maxChunkSize
158
+ chunkSize = Math.min(Math.max(minChunkSize, remainingBytes), maxChunkSize);
159
+ }
160
+ else {
161
+ // Other chunks use adjusted size
162
+ chunkSize = Math.min(Math.max(minChunkSize, remainingBytes), adjustedMaxChunkSize);
163
+ }
164
+ const chunk = buffer.subarray(offset, offset + chunkSize);
165
+ chunks.push(chunk);
166
+ offset += chunkSize;
167
+ }
168
+ return chunks;
169
+ }
170
+ /**
171
+ * Create zero chunk (128 bytes: 2 merkle leaves + previous signature)
172
+ * @param leaf - Merkle leaf data
173
+ * @returns Zero chunk buffer (128 bytes)
174
+ */
175
+ createZeroChunk(leaf) {
176
+ const zeroChunk = Buffer.alloc(128);
177
+ // First 64 bytes: input hash
178
+ Buffer.from(leaf.input, 'hex').copy(zeroChunk, 0);
179
+ // Second 64 bytes: result hash
180
+ Buffer.from(leaf.result, 'hex').copy(zeroChunk, 64);
181
+ return zeroChunk;
182
+ }
183
+ /**
184
+ * On-chain Merkle inscription - stores data + proof on Solana
185
+ * Uses PDA accounts to store chunked data and merkle roots
186
+ * @param validationResult - Merkle validation result to inscribe
187
+ * @param pdas - Optional custom PDAs
188
+ * @returns Inscription result with signatures and PDAs
189
+ */
190
+ async inscribeOnChain(validationResult, pdas) {
191
+ // Get or use provided PDAs
192
+ const userPDAs = pdas || this.pdaManager.getUserPDAs();
193
+ // Check if PDAs exist
194
+ const { leafExists, rootExists } = await this.pdaManager.checkPDAExistence(userPDAs);
195
+ if (!leafExists || !rootExists) {
196
+ throw new Error('PDA accounts not initialized. Create accounts first using PDAManager.');
197
+ }
198
+ const { input, result } = validationResult.merkleLeaf;
199
+ const compressedEvents = validationResult.merkleEvents;
200
+ if (!input || !result || !compressedEvents) {
201
+ throw new Error('Invalid validation result: missing required fields');
202
+ }
203
+ // Create zero chunk (128 bytes)
204
+ const zeroChunk = Buffer.alloc(128);
205
+ Buffer.from(input, 'hex').copy(zeroChunk, 0);
206
+ Buffer.from(result, 'hex').copy(zeroChunk, 64);
207
+ // Prepare events buffer and chunk it
208
+ const eventsBuffer = this.trimTrailingZeros(Buffer.from(compressedEvents, 'utf-8'));
209
+ const eventChunks = this.calculateChunks(eventsBuffer, 1, 560);
210
+ // All chunks: events + zero chunk
211
+ const allChunks = [...eventChunks, zeroChunk];
212
+ let prevSignature = null;
213
+ let zeroChunkSignature = null;
214
+ // Process each chunk
215
+ for (let index = 0; index < allChunks.length; index++) {
216
+ const chunk = allChunks[index];
217
+ const isFirst = index === 0;
218
+ const isLast = index === allChunks.length - 1;
219
+ let memoData;
220
+ if (isFirst && !isLast) {
221
+ // First chunk: just the data
222
+ memoData = chunk;
223
+ }
224
+ else if (isLast && prevSignature) {
225
+ // Last chunk (zero chunk): data only
226
+ memoData = chunk;
227
+ }
228
+ else if (!isFirst && !isLast && prevSignature) {
229
+ // Intermediate chunks: link to previous
230
+ memoData = Buffer.from(`${prevSignature}|${chunk.toString('utf-8')}`);
231
+ }
232
+ else {
233
+ // Single chunk case
234
+ memoData = chunk;
235
+ }
236
+ // Send transaction with memo
237
+ const signature = await this.sendMemoTransaction(userPDAs.leafPDA, memoData);
238
+ prevSignature = signature;
239
+ if (isLast) {
240
+ zeroChunkSignature = signature;
241
+ }
242
+ // Small delay between transactions
243
+ await this.sleep(500);
244
+ }
245
+ if (!zeroChunkSignature) {
246
+ throw new Error('Failed to inscribe zero chunk');
247
+ }
248
+ // Store root and proof in Root PDA
249
+ const rootData = {
250
+ root: validationResult.merkleRoot,
251
+ proofSignature: zeroChunkSignature,
252
+ proof: validationResult.merkleProof,
253
+ leaf: validationResult.merkleLeaf,
254
+ };
255
+ const rootSignature = await this.sendMemoTransaction(userPDAs.rootPDA, Buffer.from(JSON.stringify(rootData)));
256
+ return {
257
+ dbAccountStore: userPDAs.leafPDA,
258
+ dbAccountRoot: userPDAs.rootPDA,
259
+ zeroChunkSign: zeroChunkSignature,
260
+ signatureRoot: rootSignature,
261
+ merkleRoot: validationResult.merkleRoot,
262
+ merkleProof: validationResult.merkleProof,
263
+ merkleLeaf: validationResult.merkleLeaf,
264
+ merkleEvents: validationResult.merkleEvents,
265
+ };
266
+ }
267
+ /**
268
+ * Send a memo transaction to store data
269
+ * Uses Synapse client for transaction submission with Memo Program
270
+ *
271
+ * Two modes of operation:
272
+ * 1. With Connection + Signer: Signs and sends transaction directly
273
+ * 2. Without Connection: Returns unsigned transaction for external signing
274
+ *
275
+ * @param pda - Target PDA
276
+ * @param data - Data buffer to store in memo
277
+ * @returns Transaction signature
278
+ */
279
+ async sendMemoTransaction(pda, data) {
280
+ try {
281
+ // Memo Program ID (SPL Memo Program)
282
+ const MEMO_PROGRAM_ID = new PublicKey('MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr');
283
+ // Create memo instruction
284
+ const memoInstruction = new TransactionInstruction({
285
+ keys: [
286
+ // PDA as a readonly account for tracking
287
+ { pubkey: pda, isSigner: false, isWritable: false },
288
+ ],
289
+ programId: MEMO_PROGRAM_ID,
290
+ data: data, // Memo data
291
+ });
292
+ // Create transaction
293
+ const transaction = new Transaction();
294
+ transaction.add(memoInstruction);
295
+ // Get recent blockhash
296
+ const blockhashData = await this.client.call('getLatestBlockhash', [{ commitment: 'confirmed' }]);
297
+ const { blockhash, lastValidBlockHeight } = blockhashData.value;
298
+ transaction.recentBlockhash = blockhash;
299
+ transaction.lastValidBlockHeight = lastValidBlockHeight;
300
+ transaction.feePayer = this.walletAddress;
301
+ // MODE 2: Serialize for external signing (wallet adapter, etc.)
302
+ // User must sign and send this transaction themselves
303
+ const serializedTx = transaction.serialize({
304
+ requireAllSignatures: false,
305
+ verifySignatures: false,
306
+ }).toString('base64');
307
+ // Send via Synapse client (assumes pre-signed or will be rejected)
308
+ const signature = await this.client.call('sendTransaction', [
309
+ serializedTx,
310
+ {
311
+ encoding: 'base64',
312
+ skipPreflight: false,
313
+ preflightCommitment: 'confirmed',
314
+ maxRetries: this.batchConfig.maxRetries || 3,
315
+ },
316
+ ]);
317
+ // Wait for confirmation with retry
318
+ let confirmed = false;
319
+ let attempts = 0;
320
+ const maxAttempts = this.batchConfig.maxRetries || 3;
321
+ while (!confirmed && attempts < maxAttempts) {
322
+ try {
323
+ const status = await this.client.call('getSignatureStatuses', [[signature], { searchTransactionHistory: true }]);
324
+ if (status?.value?.[0]?.confirmationStatus === 'confirmed' ||
325
+ status?.value?.[0]?.confirmationStatus === 'finalized') {
326
+ confirmed = true;
327
+ break;
328
+ }
329
+ // Wait before retry
330
+ await this.sleep(this.batchConfig.retryDelayMs || 1000);
331
+ attempts++;
332
+ }
333
+ catch (error) {
334
+ attempts++;
335
+ if (attempts >= maxAttempts)
336
+ throw error;
337
+ await this.sleep(this.batchConfig.retryDelayMs || 1000);
338
+ }
339
+ }
340
+ if (!confirmed) {
341
+ throw new Error(`Transaction ${signature} not confirmed after ${maxAttempts} attempts`);
342
+ }
343
+ return signature;
344
+ }
345
+ catch (error) {
346
+ throw new Error(`Failed to send memo transaction: ${error.message}`);
347
+ }
348
+ }
349
+ /**
350
+ * Create and send multiple memo transactions in batch
351
+ * Uses optimized batching for better performance
352
+ * @param pda - Target PDA
353
+ * @param dataChunks - Array of data buffers to send
354
+ * @returns Array of transaction signatures
355
+ */
356
+ async batchSendMemoTransactions(pda, dataChunks) {
357
+ const signatures = [];
358
+ const batchSize = this.batchConfig.batchSize || 10;
359
+ // Process chunks in batches
360
+ for (let i = 0; i < dataChunks.length; i += batchSize) {
361
+ const batch = dataChunks.slice(i, i + batchSize);
362
+ // Send transactions in parallel within batch
363
+ const batchSignatures = await Promise.all(batch.map((chunk) => this.sendMemoTransaction(pda, chunk)));
364
+ signatures.push(...batchSignatures);
365
+ // Delay between batches
366
+ if (i + batchSize < dataChunks.length) {
367
+ await this.sleep(this.batchConfig.delayMs || 1000);
368
+ }
369
+ }
370
+ return signatures;
371
+ }
372
+ /**
373
+ * Hash data using SHA-256
374
+ * @param data - Data to hash
375
+ * @returns Hex hash string
376
+ */
377
+ hash(data) {
378
+ return crypto.createHash('sha256').update(data).digest('hex');
379
+ }
380
+ /**
381
+ * Trim trailing zeros from buffer
382
+ * @param buffer - Buffer to trim
383
+ * @returns Trimmed buffer
384
+ */
385
+ trimTrailingZeros(buffer) {
386
+ let end = buffer.length;
387
+ while (end > 0 && buffer[end - 1] === 0) {
388
+ end--;
389
+ }
390
+ return buffer.subarray(0, end);
391
+ }
392
+ /**
393
+ * Sleep utility
394
+ * @param ms - Milliseconds to sleep
395
+ */
396
+ sleep(ms) {
397
+ return new Promise((resolve) => setTimeout(resolve, ms));
398
+ }
399
+ /**
400
+ * Get current Merkle root
401
+ */
402
+ getRoot() {
403
+ return this.root;
404
+ }
405
+ /**
406
+ * Get all leaves
407
+ */
408
+ getLeaves() {
409
+ return this.leaves;
410
+ }
411
+ /**
412
+ * Get PDA manager
413
+ */
414
+ getPDAManager() {
415
+ return this.pdaManager;
416
+ }
417
+ /**
418
+ * Get batch configuration
419
+ */
420
+ getBatchConfig() {
421
+ return { ...this.batchConfig };
422
+ }
423
+ /**
424
+ * Update batch configuration
425
+ */
426
+ updateBatchConfig(config) {
427
+ this.batchConfig = { ...this.batchConfig, ...config };
428
+ }
429
+ /**
430
+ * Set signer for transaction signing
431
+ * @param signer - Keypair or Signer instance
432
+ */
433
+ setSigner(signer) {
434
+ this.signer = signer;
435
+ }
436
+ /**
437
+ * Get unsigned transaction for external signing
438
+ * Useful for wallet adapter integration
439
+ * @param pda - Target PDA
440
+ * @param data - Data buffer to store in memo
441
+ * @returns Unsigned Transaction object
442
+ */
443
+ async createUnsignedMemoTransaction(pda, data) {
444
+ const MEMO_PROGRAM_ID = new PublicKey('MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr');
445
+ const memoInstruction = new TransactionInstruction({
446
+ keys: [{ pubkey: pda, isSigner: false, isWritable: false }],
447
+ programId: MEMO_PROGRAM_ID,
448
+ data: data,
449
+ });
450
+ const transaction = new Transaction();
451
+ transaction.add(memoInstruction);
452
+ const blockhashData = await this.client.call('getLatestBlockhash', [{ commitment: 'confirmed' }]);
453
+ const { blockhash, lastValidBlockHeight } = blockhashData.value;
454
+ transaction.recentBlockhash = blockhash;
455
+ transaction.lastValidBlockHeight = lastValidBlockHeight;
456
+ transaction.feePayer = this.walletAddress;
457
+ return transaction;
458
+ }
459
+ /**
460
+ * Batch inscribe multiple validation results on-chain
461
+ * Uses client.batch() for optimal performance when inscribing multiple proofs
462
+ * @param validationResults - Array of merkle validation results
463
+ * @param pdas - Optional custom PDAs
464
+ * @returns Array of inscription results
465
+ */
466
+ async batchInscribeOnChain(validationResults, pdas) {
467
+ if (validationResults.length === 0)
468
+ return [];
469
+ const results = [];
470
+ const batchSize = this.batchConfig.batchSize || 10;
471
+ // Process in batches to avoid overwhelming the network
472
+ for (let i = 0; i < validationResults.length; i += batchSize) {
473
+ const batch = validationResults.slice(i, i + batchSize);
474
+ // Inscribe each in parallel within the batch
475
+ const batchResults = await Promise.all(batch.map((result) => this.inscribeOnChain(result, pdas)));
476
+ results.push(...batchResults);
477
+ // Delay between batches
478
+ if (i + batchSize < validationResults.length) {
479
+ await this.sleep(this.batchConfig.delayMs || 1000);
480
+ }
481
+ }
482
+ return results;
483
+ }
484
+ }
485
+ //# 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"}