@oobe-protocol-labs/synapse-client-sdk 1.0.8 → 1.2.0

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 (659) hide show
  1. package/CHANGELOG.md +94 -0
  2. package/dist/cjs/ai/gateway/index.d.ts +5 -5
  3. package/dist/cjs/ai/gateway/index.d.ts.map +1 -1
  4. package/dist/cjs/ai/gateway/index.js +2 -2
  5. package/dist/cjs/ai/gateway/index.js.map +1 -1
  6. package/dist/cjs/ai/index.d.ts +1 -1
  7. package/dist/cjs/ai/index.d.ts.map +1 -1
  8. package/dist/cjs/ai/index.js +5 -2
  9. package/dist/cjs/ai/index.js.map +1 -1
  10. package/dist/cjs/ai/tools/index.d.ts +4 -4
  11. package/dist/cjs/ai/tools/index.d.ts.map +1 -1
  12. package/dist/cjs/ai/tools/index.js +5 -2
  13. package/dist/cjs/ai/tools/index.js.map +1 -1
  14. package/dist/cjs/ai/tools/protocols/index.d.ts +9 -3
  15. package/dist/cjs/ai/tools/protocols/index.d.ts.map +1 -1
  16. package/dist/cjs/ai/tools/protocols/index.js +16 -2
  17. package/dist/cjs/ai/tools/protocols/index.js.map +1 -1
  18. package/dist/cjs/ai/tools/protocols/jupiter/schemas.d.ts +1 -1
  19. package/dist/cjs/ai/tools/protocols/jupiter/schemas.d.ts.map +1 -1
  20. package/dist/cjs/ai/tools/protocols/jupiter/schemas.js +81 -2
  21. package/dist/cjs/ai/tools/protocols/jupiter/schemas.js.map +1 -1
  22. package/dist/cjs/ai/tools/protocols/jupiter/tools.d.ts +3 -2
  23. package/dist/cjs/ai/tools/protocols/jupiter/tools.d.ts.map +1 -1
  24. package/dist/cjs/ai/tools/protocols/jupiter/tools.js +85 -2
  25. package/dist/cjs/ai/tools/protocols/jupiter/tools.js.map +1 -1
  26. package/dist/cjs/ai/tools/protocols/jupiter-onchain/tools.d.ts +4 -4
  27. package/dist/cjs/ai/tools/protocols/jupiter-onchain/tools.d.ts.map +1 -1
  28. package/dist/cjs/ai/tools/protocols/jupiter-onchain/tools.js +1 -1
  29. package/dist/cjs/ai/tools/protocols/jupiter-onchain/tools.js.map +1 -1
  30. package/dist/cjs/ai/tools/protocols/metaplex/tools.d.ts +7 -4
  31. package/dist/cjs/ai/tools/protocols/metaplex/tools.d.ts.map +1 -1
  32. package/dist/cjs/ai/tools/protocols/metaplex/tools.js +4 -1
  33. package/dist/cjs/ai/tools/protocols/metaplex/tools.js.map +1 -1
  34. package/dist/cjs/ai/tools/protocols/raydium-onchain/tools.d.ts +4 -4
  35. package/dist/cjs/ai/tools/protocols/raydium-onchain/tools.d.ts.map +1 -1
  36. package/dist/cjs/ai/tools/protocols/raydium-onchain/tools.js +1 -1
  37. package/dist/cjs/ai/tools/protocols/raydium-onchain/tools.js.map +1 -1
  38. package/dist/cjs/ai/tools/protocols/solana-programs/index.d.ts +7 -0
  39. package/dist/cjs/ai/tools/protocols/solana-programs/index.d.ts.map +1 -0
  40. package/dist/cjs/ai/tools/protocols/solana-programs/index.js +13 -0
  41. package/dist/cjs/ai/tools/protocols/solana-programs/index.js.map +1 -0
  42. package/dist/cjs/ai/tools/protocols/solana-programs/schemas.d.ts +11 -0
  43. package/dist/cjs/ai/tools/protocols/solana-programs/schemas.d.ts.map +1 -0
  44. package/dist/cjs/ai/tools/protocols/solana-programs/schemas.js +160 -0
  45. package/dist/cjs/ai/tools/protocols/solana-programs/schemas.js.map +1 -0
  46. package/dist/cjs/ai/tools/protocols/solana-programs/tools.d.ts +57 -0
  47. package/dist/cjs/ai/tools/protocols/solana-programs/tools.d.ts.map +1 -0
  48. package/dist/cjs/ai/tools/protocols/solana-programs/tools.js +226 -0
  49. package/dist/cjs/ai/tools/protocols/solana-programs/tools.js.map +1 -0
  50. package/dist/cjs/context/container.d.ts +341 -0
  51. package/dist/cjs/context/container.d.ts.map +1 -0
  52. package/dist/cjs/context/container.js +670 -0
  53. package/dist/cjs/context/container.js.map +1 -0
  54. package/dist/cjs/context/hooks.d.ts +357 -0
  55. package/dist/cjs/context/hooks.d.ts.map +1 -0
  56. package/dist/cjs/context/hooks.js +451 -0
  57. package/dist/cjs/context/hooks.js.map +1 -0
  58. package/dist/cjs/context/index.d.ts +81 -0
  59. package/dist/cjs/context/index.d.ts.map +1 -0
  60. package/dist/cjs/context/index.js +125 -0
  61. package/dist/cjs/context/index.js.map +1 -0
  62. package/dist/cjs/context/providers.d.ts +176 -0
  63. package/dist/cjs/context/providers.d.ts.map +1 -0
  64. package/dist/cjs/context/providers.js +184 -0
  65. package/dist/cjs/context/providers.js.map +1 -0
  66. package/dist/cjs/context/refs.d.ts +491 -0
  67. package/dist/cjs/context/refs.d.ts.map +1 -0
  68. package/dist/cjs/context/refs.js +673 -0
  69. package/dist/cjs/context/refs.js.map +1 -0
  70. package/dist/cjs/context/types.d.ts +251 -0
  71. package/dist/cjs/context/types.d.ts.map +1 -0
  72. package/dist/cjs/context/types.js +87 -0
  73. package/dist/cjs/context/types.js.map +1 -0
  74. package/dist/cjs/core/client.d.ts +31 -1
  75. package/dist/cjs/core/client.d.ts.map +1 -1
  76. package/dist/cjs/core/client.js.map +1 -1
  77. package/dist/cjs/index.d.ts +4 -1
  78. package/dist/cjs/index.d.ts.map +1 -1
  79. package/dist/cjs/index.js +6 -1
  80. package/dist/cjs/index.js.map +1 -1
  81. package/dist/cjs/programs/associated-token.d.ts +97 -0
  82. package/dist/cjs/programs/associated-token.d.ts.map +1 -0
  83. package/dist/cjs/programs/associated-token.js +113 -0
  84. package/dist/cjs/programs/associated-token.js.map +1 -0
  85. package/dist/cjs/programs/compute-budget.d.ts +105 -0
  86. package/dist/cjs/programs/compute-budget.d.ts.map +1 -0
  87. package/dist/cjs/programs/compute-budget.js +99 -0
  88. package/dist/cjs/programs/compute-budget.js.map +1 -0
  89. package/dist/cjs/programs/index.d.ts +74 -0
  90. package/dist/cjs/programs/index.d.ts.map +1 -0
  91. package/dist/cjs/programs/index.js +112 -0
  92. package/dist/cjs/programs/index.js.map +1 -0
  93. package/dist/cjs/programs/memo.d.ts +70 -0
  94. package/dist/cjs/programs/memo.d.ts.map +1 -0
  95. package/dist/cjs/programs/memo.js +74 -0
  96. package/dist/cjs/programs/memo.js.map +1 -0
  97. package/dist/cjs/programs/spl-token.d.ts +373 -0
  98. package/dist/cjs/programs/spl-token.d.ts.map +1 -0
  99. package/dist/cjs/programs/spl-token.js +358 -0
  100. package/dist/cjs/programs/spl-token.js.map +1 -0
  101. package/dist/cjs/programs/system.d.ts +231 -0
  102. package/dist/cjs/programs/system.d.ts.map +1 -0
  103. package/dist/cjs/programs/system.js +231 -0
  104. package/dist/cjs/programs/system.js.map +1 -0
  105. package/dist/cjs/programs/types.d.ts +111 -0
  106. package/dist/cjs/programs/types.d.ts.map +1 -0
  107. package/dist/cjs/programs/types.js +166 -0
  108. package/dist/cjs/programs/types.js.map +1 -0
  109. package/dist/docs/assets/navigation.js +1 -1
  110. package/dist/docs/assets/search.js +1 -1
  111. package/dist/docs/classes/AccountReader.html +18 -18
  112. package/dist/docs/classes/AccountsClient.html +10 -10
  113. package/dist/docs/classes/AsyncProviderError.html +39 -0
  114. package/dist/docs/classes/CircularDependencyError.html +39 -0
  115. package/dist/docs/classes/DasClient.html +13 -13
  116. package/dist/docs/classes/GeyserParser.html +17 -17
  117. package/dist/docs/classes/GrpcTransport.html +6 -6
  118. package/dist/docs/classes/HttpTransport.html +4 -4
  119. package/dist/docs/classes/InstructionWriter.html +37 -0
  120. package/dist/docs/classes/MemoryGuard.html +27 -0
  121. package/dist/docs/classes/NetworkError.html +5 -5
  122. package/dist/docs/classes/RefRegistry.html +40 -0
  123. package/dist/docs/classes/RefReleasedError.html +39 -0
  124. package/dist/docs/classes/RpcMethodNotFoundError.html +4 -4
  125. package/dist/docs/classes/ServiceNotFoundError.html +39 -0
  126. package/dist/docs/classes/ServiceRef.html +60 -0
  127. package/dist/docs/classes/SolanaRpc.html +55 -55
  128. package/dist/docs/classes/SynapseClient.html +39 -27
  129. package/dist/docs/classes/SynapseContext.html +151 -0
  130. package/dist/docs/classes/SynapseError.html +4 -4
  131. package/dist/docs/classes/TimeoutError.html +4 -4
  132. package/dist/docs/classes/UpstreamError.html +6 -6
  133. package/dist/docs/classes/WeakServiceRef.html +17 -0
  134. package/dist/docs/classes/WsClient.html +10 -10
  135. package/dist/docs/enums/SynapseNetwork.html +2 -2
  136. package/dist/docs/enums/SynapseRegion.html +2 -2
  137. package/dist/docs/enums/TokenExtensionType.html +2 -2
  138. package/dist/docs/functions/Epoch-1.html +1 -1
  139. package/dist/docs/functions/Lamports-2.html +1 -1
  140. package/dist/docs/functions/Pubkey-1.html +1 -1
  141. package/dist/docs/functions/Sig.html +1 -1
  142. package/dist/docs/functions/Slot-1.html +1 -1
  143. package/dist/docs/functions/UnixTs.html +1 -1
  144. package/dist/docs/functions/autoSelectRegion.html +1 -1
  145. package/dist/docs/functions/autoWire.html +11 -0
  146. package/dist/docs/functions/base58Encode.html +1 -1
  147. package/dist/docs/functions/base64ToBytes.html +1 -1
  148. package/dist/docs/functions/chunk.html +1 -1
  149. package/dist/docs/functions/computeBalanceChanges.html +1 -1
  150. package/dist/docs/functions/computeTokenBalanceChanges.html +1 -1
  151. package/dist/docs/functions/createBareContext.html +6 -0
  152. package/dist/docs/functions/createBinding.html +11 -0
  153. package/dist/docs/functions/createBoundHook.html +8 -0
  154. package/dist/docs/functions/createReactAdapter.html +11 -0
  155. package/dist/docs/functions/createRefHook.html +10 -0
  156. package/dist/docs/functions/createServerMiddleware.html +11 -0
  157. package/dist/docs/functions/createServiceHook.html +10 -0
  158. package/dist/docs/functions/createSynapse.html +1 -1
  159. package/dist/docs/functions/createSynapseContext.html +12 -0
  160. package/dist/docs/functions/createToken.html +9 -0
  161. package/dist/docs/functions/decodeBase58.html +2 -0
  162. package/dist/docs/functions/decodeLookupTable.html +1 -1
  163. package/dist/docs/functions/decodeMint.html +1 -1
  164. package/dist/docs/functions/decodeMultisig.html +1 -1
  165. package/dist/docs/functions/decodeNonceAccount.html +1 -1
  166. package/dist/docs/functions/decodeStakeAccount.html +1 -1
  167. package/dist/docs/functions/decodeToken2022Account.html +1 -1
  168. package/dist/docs/functions/decodeToken2022Mint.html +1 -1
  169. package/dist/docs/functions/decodeTokenAccount.html +1 -1
  170. package/dist/docs/functions/encodeBase58.html +1 -1
  171. package/dist/docs/functions/fetchLookupTable.html +1 -1
  172. package/dist/docs/functions/fetchMint.html +1 -1
  173. package/dist/docs/functions/fetchNonceAccount.html +1 -1
  174. package/dist/docs/functions/fetchStakeAccount.html +1 -1
  175. package/dist/docs/functions/fetchTokenAccount.html +1 -1
  176. package/dist/docs/functions/fetchTokenAccountsByOwner.html +1 -1
  177. package/dist/docs/functions/fromKitAddress.html +1 -1
  178. package/dist/docs/functions/getAccountInfo.html +1 -1
  179. package/dist/docs/functions/getAsset.html +1 -1
  180. package/dist/docs/functions/getAssetBatch.html +1 -1
  181. package/dist/docs/functions/getAssetProof.html +1 -1
  182. package/dist/docs/functions/getAssetProofBatch.html +1 -1
  183. package/dist/docs/functions/getAssetsByAuthority.html +1 -1
  184. package/dist/docs/functions/getAssetsByCreator.html +1 -1
  185. package/dist/docs/functions/getAssetsByGroup.html +1 -1
  186. package/dist/docs/functions/getAssetsByOwner.html +1 -1
  187. package/dist/docs/functions/getBalance.html +1 -1
  188. package/dist/docs/functions/getBlock.html +1 -1
  189. package/dist/docs/functions/getBlockCommitment.html +1 -1
  190. package/dist/docs/functions/getBlockHeight.html +1 -1
  191. package/dist/docs/functions/getBlockProduction.html +1 -1
  192. package/dist/docs/functions/getBlockTime.html +1 -1
  193. package/dist/docs/functions/getBlocks.html +1 -1
  194. package/dist/docs/functions/getBlocksWithLimit.html +1 -1
  195. package/dist/docs/functions/getClusterNodes.html +1 -1
  196. package/dist/docs/functions/getContext.html +4 -0
  197. package/dist/docs/functions/getDecodedAccount.html +1 -1
  198. package/dist/docs/functions/getDecodedAccounts.html +1 -1
  199. package/dist/docs/functions/getEnvironment.html +1 -1
  200. package/dist/docs/functions/getEpochInfo.html +1 -1
  201. package/dist/docs/functions/getEpochSchedule.html +1 -1
  202. package/dist/docs/functions/getFeeForMessage.html +1 -1
  203. package/dist/docs/functions/getFirstAvailableBlock.html +1 -1
  204. package/dist/docs/functions/getGenesisHash.html +1 -1
  205. package/dist/docs/functions/getHealth.html +1 -1
  206. package/dist/docs/functions/getHighestSnapshotSlot.html +1 -1
  207. package/dist/docs/functions/getIdentity.html +1 -1
  208. package/dist/docs/functions/getInflationGovernor.html +1 -1
  209. package/dist/docs/functions/getInflationRate.html +1 -1
  210. package/dist/docs/functions/getInflationReward.html +1 -1
  211. package/dist/docs/functions/getLargestAccounts.html +1 -1
  212. package/dist/docs/functions/getLatestBlockhash.html +1 -1
  213. package/dist/docs/functions/getLeaderSchedule.html +1 -1
  214. package/dist/docs/functions/getMaxRetransmitSlot.html +1 -1
  215. package/dist/docs/functions/getMaxShredInsertSlot.html +1 -1
  216. package/dist/docs/functions/getMinimumBalanceForRentExemption.html +1 -1
  217. package/dist/docs/functions/getMultipleAccounts.html +1 -1
  218. package/dist/docs/functions/getProgramAccounts.html +1 -1
  219. package/dist/docs/functions/getProgramCategory.html +1 -1
  220. package/dist/docs/functions/getRecentPerformanceSamples.html +1 -1
  221. package/dist/docs/functions/getRecentPrioritizationFees.html +1 -1
  222. package/dist/docs/functions/getSignatureStatuses.html +1 -1
  223. package/dist/docs/functions/getSignaturesForAddress.html +1 -1
  224. package/dist/docs/functions/getSignaturesForAsset.html +1 -1
  225. package/dist/docs/functions/getSlot.html +1 -1
  226. package/dist/docs/functions/getSlotLeader.html +1 -1
  227. package/dist/docs/functions/getSlotLeaders.html +1 -1
  228. package/dist/docs/functions/getStakeActivation.html +1 -1
  229. package/dist/docs/functions/getStakeMinimumDelegation.html +1 -1
  230. package/dist/docs/functions/getSupply.html +1 -1
  231. package/dist/docs/functions/getTokenAccountBalance.html +1 -1
  232. package/dist/docs/functions/getTokenAccounts.html +1 -1
  233. package/dist/docs/functions/getTokenAccountsByDelegate.html +1 -1
  234. package/dist/docs/functions/getTokenAccountsByOwner.html +1 -1
  235. package/dist/docs/functions/getTokenLargestAccounts.html +1 -1
  236. package/dist/docs/functions/getTokenSupply.html +1 -1
  237. package/dist/docs/functions/getTransaction.html +1 -1
  238. package/dist/docs/functions/getTransactionCount.html +1 -1
  239. package/dist/docs/functions/getVersion.html +1 -1
  240. package/dist/docs/functions/getVoteAccounts.html +1 -1
  241. package/dist/docs/functions/isBlockhashValid.html +1 -1
  242. package/dist/docs/functions/isBrowser.html +1 -1
  243. package/dist/docs/functions/isDisposable.html +3 -0
  244. package/dist/docs/functions/isProgramInCategory.html +1 -1
  245. package/dist/docs/functions/isServer.html +1 -1
  246. package/dist/docs/functions/isValidPubkey.html +1 -1
  247. package/dist/docs/functions/isValidSignature.html +1 -1
  248. package/dist/docs/functions/lamportsToSol.html +1 -1
  249. package/dist/docs/functions/listEndpoints.html +1 -1
  250. package/dist/docs/functions/listNetworks.html +1 -1
  251. package/dist/docs/functions/listRegions.html +1 -1
  252. package/dist/docs/functions/minimumLedgerSlot.html +1 -1
  253. package/dist/docs/functions/parseAccountUpdate.html +1 -1
  254. package/dist/docs/functions/parseBlockMeta.html +1 -1
  255. package/dist/docs/functions/parseEntry.html +1 -1
  256. package/dist/docs/functions/parseGeyserUpdate.html +1 -1
  257. package/dist/docs/functions/parseSlotUpdate.html +1 -1
  258. package/dist/docs/functions/parseTimestamp.html +1 -1
  259. package/dist/docs/functions/parseTransaction.html +1 -1
  260. package/dist/docs/functions/probeLatency.html +1 -1
  261. package/dist/docs/functions/rawBufferToBase58.html +1 -1
  262. package/dist/docs/functions/rawBufferToBase64.html +1 -1
  263. package/dist/docs/functions/rawBufferToBytes.html +1 -1
  264. package/dist/docs/functions/rawBufferToHex.html +1 -1
  265. package/dist/docs/functions/readonly.html +3 -0
  266. package/dist/docs/functions/readonlySigner.html +3 -0
  267. package/dist/docs/functions/requestAirdrop.html +1 -1
  268. package/dist/docs/functions/resolveEndpoint.html +1 -1
  269. package/dist/docs/functions/resolveProgram.html +1 -1
  270. package/dist/docs/functions/resolveProgramBatch.html +1 -1
  271. package/dist/docs/functions/retry.html +1 -1
  272. package/dist/docs/functions/searchAssets.html +1 -1
  273. package/dist/docs/functions/sendTransaction.html +1 -1
  274. package/dist/docs/functions/setGlobalContext.html +9 -0
  275. package/dist/docs/functions/simulateTransaction.html +1 -1
  276. package/dist/docs/functions/sleep.html +1 -1
  277. package/dist/docs/functions/solToLamports.html +1 -1
  278. package/dist/docs/functions/toClientConfig.html +1 -1
  279. package/dist/docs/functions/toKitAddress.html +1 -1
  280. package/dist/docs/functions/toKitInstruction.html +9 -0
  281. package/dist/docs/functions/toKitLamports.html +1 -1
  282. package/dist/docs/functions/toKitSignatureString.html +1 -1
  283. package/dist/docs/functions/tryGetContext.html +3 -0
  284. package/dist/docs/functions/tryUseService.html +4 -0
  285. package/dist/docs/functions/useBoundServices.html +10 -0
  286. package/dist/docs/functions/useService.html +13 -0
  287. package/dist/docs/functions/useSharedRef.html +14 -0
  288. package/dist/docs/functions/withRef.html +14 -0
  289. package/dist/docs/functions/withRefAsync.html +12 -0
  290. package/dist/docs/functions/writable.html +3 -0
  291. package/dist/docs/functions/writableSigner.html +3 -0
  292. package/dist/docs/hierarchy.html +1 -1
  293. package/dist/docs/interfaces/AccountInfo.html +7 -7
  294. package/dist/docs/interfaces/AccountMeta.html +9 -0
  295. package/dist/docs/interfaces/AccountNotification.html +2 -2
  296. package/dist/docs/interfaces/AccountSubParams.html +2 -2
  297. package/dist/docs/interfaces/AddMemoParams.html +11 -0
  298. package/dist/docs/interfaces/AdvanceNonceParams.html +7 -0
  299. package/dist/docs/interfaces/AliasProvider.html +6 -0
  300. package/dist/docs/interfaces/AllocateParams.html +7 -0
  301. package/dist/docs/interfaces/ApproveCheckedParams.html +19 -0
  302. package/dist/docs/interfaces/ApproveParams.html +15 -0
  303. package/dist/docs/interfaces/AssetSignatureInfo.html +2 -2
  304. package/dist/docs/interfaces/AssetSignaturesPage.html +2 -2
  305. package/dist/docs/interfaces/AssignParams.html +7 -0
  306. package/dist/docs/interfaces/AsyncFactoryProvider.html +7 -0
  307. package/dist/docs/interfaces/AuthorizeNonceParams.html +9 -0
  308. package/dist/docs/interfaces/BalanceChange.html +6 -6
  309. package/dist/docs/interfaces/BlockProduction.html +3 -3
  310. package/dist/docs/interfaces/BlockResult.html +2 -2
  311. package/dist/docs/interfaces/BlockReward.html +2 -2
  312. package/dist/docs/interfaces/BlockhashResult.html +2 -2
  313. package/dist/docs/interfaces/BurnCheckedParams.html +17 -0
  314. package/dist/docs/interfaces/BurnParams.html +15 -0
  315. package/dist/docs/interfaces/CallOptions.html +6 -6
  316. package/dist/docs/interfaces/ClassProvider.html +6 -0
  317. package/dist/docs/interfaces/CloseAccountParams.html +13 -0
  318. package/dist/docs/interfaces/ConfirmedTransaction.html +6 -6
  319. package/dist/docs/interfaces/ContactInfo.html +2 -2
  320. package/dist/docs/interfaces/ContextAdapter.html +15 -0
  321. package/dist/docs/interfaces/ContextEvents.html +13 -0
  322. package/dist/docs/interfaces/ContextModule.html +12 -0
  323. package/dist/docs/interfaces/CreateATAParams.html +13 -0
  324. package/dist/docs/interfaces/CreateAccountParams.html +13 -0
  325. package/dist/docs/interfaces/CreateAccountWithSeedParams.html +17 -0
  326. package/dist/docs/interfaces/CreateSynapseContextOpts.html +18 -0
  327. package/dist/docs/interfaces/DasAsset.html +2 -2
  328. package/dist/docs/interfaces/DasAssetProof.html +2 -2
  329. package/dist/docs/interfaces/DasAuthority.html +2 -2
  330. package/dist/docs/interfaces/DasCompression.html +2 -2
  331. package/dist/docs/interfaces/DasContent.html +2 -2
  332. package/dist/docs/interfaces/DasCreator.html +2 -2
  333. package/dist/docs/interfaces/DasFile.html +2 -2
  334. package/dist/docs/interfaces/DasGrouping.html +2 -2
  335. package/dist/docs/interfaces/DasOpts.html +2 -2
  336. package/dist/docs/interfaces/DasOwnership.html +2 -2
  337. package/dist/docs/interfaces/DasPage.html +2 -2
  338. package/dist/docs/interfaces/DasRoyalty.html +2 -2
  339. package/dist/docs/interfaces/DasSearchParams.html +2 -2
  340. package/dist/docs/interfaces/DasSupply.html +2 -2
  341. package/dist/docs/interfaces/DataSlice.html +3 -3
  342. package/dist/docs/interfaces/DecodedAccountResult.html +4 -4
  343. package/dist/docs/interfaces/DecodedLookupTable.html +8 -8
  344. package/dist/docs/interfaces/DecodedMint.html +6 -6
  345. package/dist/docs/interfaces/DecodedMultisig.html +5 -5
  346. package/dist/docs/interfaces/DecodedNonceAccount.html +6 -6
  347. package/dist/docs/interfaces/DecodedStakeAccount.html +2 -2
  348. package/dist/docs/interfaces/DecodedToken2022Account.html +9 -9
  349. package/dist/docs/interfaces/DecodedToken2022Mint.html +6 -6
  350. package/dist/docs/interfaces/DecodedTokenAccount.html +9 -9
  351. package/dist/docs/interfaces/DefaultAccountStateExt.html +2 -2
  352. package/dist/docs/interfaces/Disposable.html +5 -0
  353. package/dist/docs/interfaces/EndpointConnectConfig.html +5 -5
  354. package/dist/docs/interfaces/EpochInfo.html +7 -7
  355. package/dist/docs/interfaces/EpochSchedule.html +2 -2
  356. package/dist/docs/interfaces/FactoryProvider.html +7 -0
  357. package/dist/docs/interfaces/FetchedMint.html +6 -6
  358. package/dist/docs/interfaces/FetchedTokenAccount.html +6 -6
  359. package/dist/docs/interfaces/FreezeThawParams.html +13 -0
  360. package/dist/docs/interfaces/GetAccountInfoOpts.html +6 -6
  361. package/dist/docs/interfaces/GetAssetsByAuthorityParams.html +2 -2
  362. package/dist/docs/interfaces/GetAssetsByCreatorParams.html +2 -2
  363. package/dist/docs/interfaces/GetAssetsByGroupParams.html +2 -2
  364. package/dist/docs/interfaces/GetAssetsByOwnerParams.html +2 -2
  365. package/dist/docs/interfaces/GetBlockOpts.html +6 -6
  366. package/dist/docs/interfaces/GetBlockProductionOpts.html +6 -6
  367. package/dist/docs/interfaces/GetMultipleAccountsOpts.html +6 -6
  368. package/dist/docs/interfaces/GetProgramAccountsOpts.html +6 -6
  369. package/dist/docs/interfaces/GetSignatureStatusesOpts.html +6 -6
  370. package/dist/docs/interfaces/GetSignaturesOpts.html +7 -7
  371. package/dist/docs/interfaces/GetTokenAccountsParams.html +2 -2
  372. package/dist/docs/interfaces/GetTransactionOpts.html +6 -6
  373. package/dist/docs/interfaces/GeyserParserConfig.html +6 -6
  374. package/dist/docs/interfaces/GeyserParserEvents.html +9 -9
  375. package/dist/docs/interfaces/GeyserParserStats.html +2 -2
  376. package/dist/docs/interfaces/GrpcCallOptions.html +2 -2
  377. package/dist/docs/interfaces/GrpcTransportConfig.html +6 -6
  378. package/dist/docs/interfaces/ImmutableOwnerExt.html +2 -2
  379. package/dist/docs/interfaces/InflationGovernor.html +2 -2
  380. package/dist/docs/interfaces/InflationRate.html +2 -2
  381. package/dist/docs/interfaces/InflationReward.html +2 -2
  382. package/dist/docs/interfaces/InitializeAccountParams.html +11 -0
  383. package/dist/docs/interfaces/InitializeMintParams.html +13 -0
  384. package/dist/docs/interfaces/InitializeNonceParams.html +7 -0
  385. package/dist/docs/interfaces/InterestBearingConfigExt.html +2 -2
  386. package/dist/docs/interfaces/LatencyProbeResult.html +2 -2
  387. package/dist/docs/interfaces/LeakReport.html +12 -0
  388. package/dist/docs/interfaces/LogsNotification.html +2 -2
  389. package/dist/docs/interfaces/LogsSubParams.html +2 -2
  390. package/dist/docs/interfaces/MemoTransferExt.html +2 -2
  391. package/dist/docs/interfaces/MemoryGuardConfig.html +20 -0
  392. package/dist/docs/interfaces/MetadataPointerExt.html +2 -2
  393. package/dist/docs/interfaces/MintCloseAuthorityExt.html +2 -2
  394. package/dist/docs/interfaces/MintToCheckedParams.html +17 -0
  395. package/dist/docs/interfaces/MintToParams.html +15 -0
  396. package/dist/docs/interfaces/NonTransferableExt.html +2 -2
  397. package/dist/docs/interfaces/PaginationOpts.html +2 -2
  398. package/dist/docs/interfaces/ParsedAccountUpdate.html +16 -16
  399. package/dist/docs/interfaces/ParsedBlockMeta.html +2 -2
  400. package/dist/docs/interfaces/ParsedEntry.html +2 -2
  401. package/dist/docs/interfaces/ParsedInstruction.html +9 -9
  402. package/dist/docs/interfaces/ParsedSlotUpdate.html +3 -3
  403. package/dist/docs/interfaces/ParsedTransaction.html +19 -19
  404. package/dist/docs/interfaces/PerfSample.html +2 -2
  405. package/dist/docs/interfaces/PermanentDelegateExt.html +2 -2
  406. package/dist/docs/interfaces/ProgramAccount.html +2 -2
  407. package/dist/docs/interfaces/ProgramNotification.html +2 -2
  408. package/dist/docs/interfaces/ProgramSubParams.html +2 -2
  409. package/dist/docs/interfaces/ProgramsBundle.html +108 -0
  410. package/dist/docs/interfaces/RawAccountInfo.html +2 -2
  411. package/dist/docs/interfaces/RawBlockMeta.html +2 -2
  412. package/dist/docs/interfaces/RawBuffer.html +2 -2
  413. package/dist/docs/interfaces/RawCompiledInstruction.html +2 -2
  414. package/dist/docs/interfaces/RawEntry.html +2 -2
  415. package/dist/docs/interfaces/RawGeyserUpdate.html +2 -2
  416. package/dist/docs/interfaces/RawInnerInstruction.html +2 -2
  417. package/dist/docs/interfaces/RawSlotInfo.html +2 -2
  418. package/dist/docs/interfaces/RawTimestamp.html +2 -2
  419. package/dist/docs/interfaces/RawTokenBalance.html +2 -2
  420. package/dist/docs/interfaces/RawTransactionInfo.html +2 -2
  421. package/dist/docs/interfaces/ReactAdapterConfig.html +8 -0
  422. package/dist/docs/interfaces/RecoverNestedParams.html +15 -0
  423. package/dist/docs/interfaces/RefRegistryConfig.html +9 -0
  424. package/dist/docs/interfaces/RefStats.html +15 -0
  425. package/dist/docs/interfaces/RequestHeapFrameParams.html +5 -0
  426. package/dist/docs/interfaces/ResolveMiddleware.html +8 -0
  427. package/dist/docs/interfaces/RevokeParams.html +11 -0
  428. package/dist/docs/interfaces/RootNotification.html +2 -2
  429. package/dist/docs/interfaces/RootSubParams.html +1 -1
  430. package/dist/docs/interfaces/RpcContext.html +2 -2
  431. package/dist/docs/interfaces/RpcError.html +4 -4
  432. package/dist/docs/interfaces/RpcRequest.html +2 -2
  433. package/dist/docs/interfaces/RpcResponse.html +2 -2
  434. package/dist/docs/interfaces/SendTransactionOpts.html +6 -6
  435. package/dist/docs/interfaces/ServerAdapterConfig.html +13 -0
  436. package/dist/docs/interfaces/ServiceBinding.html +17 -0
  437. package/dist/docs/interfaces/ServiceRegistration.html +7 -0
  438. package/dist/docs/interfaces/ServiceResolver.html +16 -0
  439. package/dist/docs/interfaces/ServiceToken.html +13 -0
  440. package/dist/docs/interfaces/SetComputeUnitLimitParams.html +5 -0
  441. package/dist/docs/interfaces/SetComputeUnitPriceParams.html +5 -0
  442. package/dist/docs/interfaces/SetLoadedAccountsDataSizeLimitParams.html +5 -0
  443. package/dist/docs/interfaces/SignatureInfo.html +7 -7
  444. package/dist/docs/interfaces/SignatureNotification.html +2 -2
  445. package/dist/docs/interfaces/SignatureStatus.html +5 -5
  446. package/dist/docs/interfaces/SignatureSubParams.html +2 -2
  447. package/dist/docs/interfaces/SignaturesForAssetParams.html +2 -2
  448. package/dist/docs/interfaces/SimulateResult.html +2 -2
  449. package/dist/docs/interfaces/SimulateTransactionOpts.html +7 -7
  450. package/dist/docs/interfaces/SlotNotification.html +2 -2
  451. package/dist/docs/interfaces/SlotSubParams.html +1 -1
  452. package/dist/docs/interfaces/SortOpts.html +2 -2
  453. package/dist/docs/interfaces/StakeAuthorized.html +2 -2
  454. package/dist/docs/interfaces/StakeDelegation.html +3 -3
  455. package/dist/docs/interfaces/StakeLockup.html +4 -4
  456. package/dist/docs/interfaces/StakeMeta.html +2 -2
  457. package/dist/docs/interfaces/Supply.html +5 -5
  458. package/dist/docs/interfaces/SynapseClientConfig.html +9 -9
  459. package/dist/docs/interfaces/SynapseClientLike.html +14 -0
  460. package/dist/docs/interfaces/SynapseEndpoint.html +7 -7
  461. package/dist/docs/interfaces/SyncNativeParams.html +7 -0
  462. package/dist/docs/interfaces/SystemTransferParams.html +9 -0
  463. package/dist/docs/interfaces/TokenAccount.html +3 -3
  464. package/dist/docs/interfaces/TokenAccountsByOwnerResult.html +2 -2
  465. package/dist/docs/interfaces/TokenAmount.html +5 -5
  466. package/dist/docs/interfaces/TokenBalanceChange.html +2 -2
  467. package/dist/docs/interfaces/TokenTransferParams.html +15 -0
  468. package/dist/docs/interfaces/TransactionInstruction.html +11 -0
  469. package/dist/docs/interfaces/TransactionMeta.html +11 -11
  470. package/dist/docs/interfaces/TransferCheckedParams.html +19 -0
  471. package/dist/docs/interfaces/TransferFeeAmount.html +2 -2
  472. package/dist/docs/interfaces/TransferFeeConfig.html +2 -2
  473. package/dist/docs/interfaces/TransportConfig.html +7 -7
  474. package/dist/docs/interfaces/UnknownExtension.html +2 -2
  475. package/dist/docs/interfaces/ValueProvider.html +4 -0
  476. package/dist/docs/interfaces/VoteAccount.html +9 -9
  477. package/dist/docs/interfaces/VoteAccountsResult.html +3 -3
  478. package/dist/docs/interfaces/WithdrawNonceParams.html +11 -0
  479. package/dist/docs/interfaces/WsConfig.html +6 -6
  480. package/dist/docs/media/CHANGELOG.md +94 -0
  481. package/dist/docs/modules.html +107 -1
  482. package/dist/docs/types/AccountFetchOpts.html +1 -1
  483. package/dist/docs/types/AccountFilter.html +1 -1
  484. package/dist/docs/types/Base58.html +1 -1
  485. package/dist/docs/types/Brand.html +1 -1
  486. package/dist/docs/types/Commitment.html +1 -1
  487. package/dist/docs/types/DasSortBy.html +1 -1
  488. package/dist/docs/types/DasSortDirection.html +1 -1
  489. package/dist/docs/types/DataSizeFilter.html +1 -1
  490. package/dist/docs/types/DecodedExtension.html +1 -1
  491. package/dist/docs/types/Encoding.html +1 -1
  492. package/dist/docs/types/Epoch.html +1 -1
  493. package/dist/docs/types/Lamports.html +1 -1
  494. package/dist/docs/types/LogsFilter.html +1 -1
  495. package/dist/docs/types/MemcmpFilter.html +1 -1
  496. package/dist/docs/types/NonceState.html +1 -1
  497. package/dist/docs/types/ParsedGeyserUpdate.html +1 -1
  498. package/dist/docs/types/Pubkey.html +1 -1
  499. package/dist/docs/types/RuntimeEnv.html +1 -1
  500. package/dist/docs/types/ServiceLifecycle.html +25 -0
  501. package/dist/docs/types/ServiceProvider.html +3 -0
  502. package/dist/docs/types/Signature.html +1 -1
  503. package/dist/docs/types/Slot.html +1 -1
  504. package/dist/docs/types/StakeAccountType.html +1 -1
  505. package/dist/docs/types/SubscriptionId.html +1 -1
  506. package/dist/docs/types/TokenAccountState.html +1 -1
  507. package/dist/docs/types/TransactionDetail.html +1 -1
  508. package/dist/docs/types/UnaryMethod.html +1 -1
  509. package/dist/docs/types/UnixTimestamp.html +1 -1
  510. package/dist/docs/types/WsNotification.html +1 -1
  511. package/dist/docs/variables/ASSOCIATED_TOKEN_PROGRAM.html +3 -0
  512. package/dist/docs/variables/AssociatedToken.html +13 -0
  513. package/dist/docs/variables/COMPUTE_BUDGET_PROGRAM.html +3 -0
  514. package/dist/docs/variables/ComputeBudget.html +19 -0
  515. package/dist/docs/variables/JUPITER_PROGRAMS.html +1 -1
  516. package/dist/docs/variables/KNOWN_PROGRAMS.html +1 -1
  517. package/dist/docs/variables/KNOWN_PROGRAMS_COUNT.html +1 -1
  518. package/dist/docs/variables/LOOKUP_TABLE_HEADER_SIZE.html +1 -1
  519. package/dist/docs/variables/LOOKUP_TABLE_PROGRAM_ID.html +1 -1
  520. package/dist/docs/variables/MARINADE_PROGRAMS.html +1 -1
  521. package/dist/docs/variables/MAX_MULTISIG_SIGNERS.html +1 -1
  522. package/dist/docs/variables/MEMO_PROGRAM_V1.html +3 -0
  523. package/dist/docs/variables/MEMO_PROGRAM_V2.html +3 -0
  524. package/dist/docs/variables/METAPLEX_PROGRAMS.html +1 -1
  525. package/dist/docs/variables/METEORA_PROGRAMS.html +1 -1
  526. package/dist/docs/variables/MINT_SIZE.html +1 -1
  527. package/dist/docs/variables/MULTISIG_SIZE.html +1 -1
  528. package/dist/docs/variables/Memo.html +9 -0
  529. package/dist/docs/variables/NONCE_ACCOUNT_SIZE.html +1 -1
  530. package/dist/docs/variables/ORCA_PROGRAMS.html +1 -1
  531. package/dist/docs/variables/OTHER_PROGRAMS.html +1 -1
  532. package/dist/docs/variables/RAYDIUM_PROGRAMS.html +1 -1
  533. package/dist/docs/variables/SDK_USER_AGENT.html +1 -1
  534. package/dist/docs/variables/SPL_PROGRAMS.html +1 -1
  535. package/dist/docs/variables/STAKE_PROGRAM_ID.html +1 -1
  536. package/dist/docs/variables/SYNAPSE_DEVNET_EU.html +1 -1
  537. package/dist/docs/variables/SYNAPSE_DEVNET_US.html +1 -1
  538. package/dist/docs/variables/SYNAPSE_ENDPOINTS.html +1 -1
  539. package/dist/docs/variables/SYNAPSE_MAINNET_EU.html +1 -1
  540. package/dist/docs/variables/SYNAPSE_MAINNET_US.html +1 -1
  541. package/dist/docs/variables/SYSTEM_PROGRAM.html +3 -0
  542. package/dist/docs/variables/SYSTEM_PROGRAMS.html +1 -1
  543. package/dist/docs/variables/SYSTEM_PROGRAM_ID.html +1 -1
  544. package/dist/docs/variables/SplToken.html +38 -0
  545. package/dist/docs/variables/SystemProgram.html +42 -0
  546. package/dist/docs/variables/TOKEN_2022_PROGRAM.html +3 -0
  547. package/dist/docs/variables/TOKEN_2022_PROGRAM_ID.html +1 -1
  548. package/dist/docs/variables/TOKEN_ACCOUNT_SIZE.html +1 -1
  549. package/dist/docs/variables/TOKEN_PROGRAM.html +3 -0
  550. package/dist/docs/variables/TOKEN_PROGRAM_ID.html +1 -1
  551. package/dist/docs/variables/Tokens.html +16 -0
  552. package/dist/esm/ai/gateway/index.d.ts +5 -5
  553. package/dist/esm/ai/gateway/index.d.ts.map +1 -1
  554. package/dist/esm/ai/gateway/index.js +2 -2
  555. package/dist/esm/ai/gateway/index.js.map +1 -1
  556. package/dist/esm/ai/index.d.ts +1 -1
  557. package/dist/esm/ai/index.d.ts.map +1 -1
  558. package/dist/esm/ai/index.js +2 -2
  559. package/dist/esm/ai/index.js.map +1 -1
  560. package/dist/esm/ai/tools/index.d.ts +4 -4
  561. package/dist/esm/ai/tools/index.d.ts.map +1 -1
  562. package/dist/esm/ai/tools/index.js +3 -3
  563. package/dist/esm/ai/tools/index.js.map +1 -1
  564. package/dist/esm/ai/tools/protocols/index.d.ts +9 -3
  565. package/dist/esm/ai/tools/protocols/index.d.ts.map +1 -1
  566. package/dist/esm/ai/tools/protocols/index.js +12 -1
  567. package/dist/esm/ai/tools/protocols/index.js.map +1 -1
  568. package/dist/esm/ai/tools/protocols/jupiter/schemas.d.ts +1 -1
  569. package/dist/esm/ai/tools/protocols/jupiter/schemas.d.ts.map +1 -1
  570. package/dist/esm/ai/tools/protocols/jupiter/schemas.js +81 -2
  571. package/dist/esm/ai/tools/protocols/jupiter/schemas.js.map +1 -1
  572. package/dist/esm/ai/tools/protocols/jupiter/tools.d.ts +3 -2
  573. package/dist/esm/ai/tools/protocols/jupiter/tools.d.ts.map +1 -1
  574. package/dist/esm/ai/tools/protocols/jupiter/tools.js +85 -2
  575. package/dist/esm/ai/tools/protocols/jupiter/tools.js.map +1 -1
  576. package/dist/esm/ai/tools/protocols/jupiter-onchain/tools.d.ts +4 -4
  577. package/dist/esm/ai/tools/protocols/jupiter-onchain/tools.d.ts.map +1 -1
  578. package/dist/esm/ai/tools/protocols/jupiter-onchain/tools.js +1 -1
  579. package/dist/esm/ai/tools/protocols/jupiter-onchain/tools.js.map +1 -1
  580. package/dist/esm/ai/tools/protocols/metaplex/tools.d.ts +7 -4
  581. package/dist/esm/ai/tools/protocols/metaplex/tools.d.ts.map +1 -1
  582. package/dist/esm/ai/tools/protocols/metaplex/tools.js +4 -1
  583. package/dist/esm/ai/tools/protocols/metaplex/tools.js.map +1 -1
  584. package/dist/esm/ai/tools/protocols/raydium-onchain/tools.d.ts +4 -4
  585. package/dist/esm/ai/tools/protocols/raydium-onchain/tools.d.ts.map +1 -1
  586. package/dist/esm/ai/tools/protocols/raydium-onchain/tools.js +1 -1
  587. package/dist/esm/ai/tools/protocols/raydium-onchain/tools.js.map +1 -1
  588. package/dist/esm/ai/tools/protocols/solana-programs/index.d.ts +7 -0
  589. package/dist/esm/ai/tools/protocols/solana-programs/index.d.ts.map +1 -0
  590. package/dist/esm/ai/tools/protocols/solana-programs/index.js +7 -0
  591. package/dist/esm/ai/tools/protocols/solana-programs/index.js.map +1 -0
  592. package/dist/esm/ai/tools/protocols/solana-programs/schemas.d.ts +11 -0
  593. package/dist/esm/ai/tools/protocols/solana-programs/schemas.d.ts.map +1 -0
  594. package/dist/esm/ai/tools/protocols/solana-programs/schemas.js +157 -0
  595. package/dist/esm/ai/tools/protocols/solana-programs/schemas.js.map +1 -0
  596. package/dist/esm/ai/tools/protocols/solana-programs/tools.d.ts +57 -0
  597. package/dist/esm/ai/tools/protocols/solana-programs/tools.d.ts.map +1 -0
  598. package/dist/esm/ai/tools/protocols/solana-programs/tools.js +220 -0
  599. package/dist/esm/ai/tools/protocols/solana-programs/tools.js.map +1 -0
  600. package/dist/esm/context/container.d.ts +341 -0
  601. package/dist/esm/context/container.d.ts.map +1 -0
  602. package/dist/esm/context/container.js +666 -0
  603. package/dist/esm/context/container.js.map +1 -0
  604. package/dist/esm/context/hooks.d.ts +357 -0
  605. package/dist/esm/context/hooks.d.ts.map +1 -0
  606. package/dist/esm/context/hooks.js +434 -0
  607. package/dist/esm/context/hooks.js.map +1 -0
  608. package/dist/esm/context/index.d.ts +81 -0
  609. package/dist/esm/context/index.d.ts.map +1 -0
  610. package/dist/esm/context/index.js +98 -0
  611. package/dist/esm/context/index.js.map +1 -0
  612. package/dist/esm/context/providers.d.ts +176 -0
  613. package/dist/esm/context/providers.d.ts.map +1 -0
  614. package/dist/esm/context/providers.js +179 -0
  615. package/dist/esm/context/providers.js.map +1 -0
  616. package/dist/esm/context/refs.d.ts +491 -0
  617. package/dist/esm/context/refs.d.ts.map +1 -0
  618. package/dist/esm/context/refs.js +664 -0
  619. package/dist/esm/context/refs.js.map +1 -0
  620. package/dist/esm/context/types.d.ts +251 -0
  621. package/dist/esm/context/types.d.ts.map +1 -0
  622. package/dist/esm/context/types.js +79 -0
  623. package/dist/esm/context/types.js.map +1 -0
  624. package/dist/esm/core/client.d.ts +31 -1
  625. package/dist/esm/core/client.d.ts.map +1 -1
  626. package/dist/esm/core/client.js.map +1 -1
  627. package/dist/esm/index.d.ts +4 -1
  628. package/dist/esm/index.d.ts.map +1 -1
  629. package/dist/esm/index.js +6 -1
  630. package/dist/esm/index.js.map +1 -1
  631. package/dist/esm/programs/associated-token.d.ts +97 -0
  632. package/dist/esm/programs/associated-token.d.ts.map +1 -0
  633. package/dist/esm/programs/associated-token.js +110 -0
  634. package/dist/esm/programs/associated-token.js.map +1 -0
  635. package/dist/esm/programs/compute-budget.d.ts +105 -0
  636. package/dist/esm/programs/compute-budget.d.ts.map +1 -0
  637. package/dist/esm/programs/compute-budget.js +96 -0
  638. package/dist/esm/programs/compute-budget.js.map +1 -0
  639. package/dist/esm/programs/index.d.ts +74 -0
  640. package/dist/esm/programs/index.d.ts.map +1 -0
  641. package/dist/esm/programs/index.js +90 -0
  642. package/dist/esm/programs/index.js.map +1 -0
  643. package/dist/esm/programs/memo.d.ts +70 -0
  644. package/dist/esm/programs/memo.d.ts.map +1 -0
  645. package/dist/esm/programs/memo.js +71 -0
  646. package/dist/esm/programs/memo.js.map +1 -0
  647. package/dist/esm/programs/spl-token.d.ts +373 -0
  648. package/dist/esm/programs/spl-token.d.ts.map +1 -0
  649. package/dist/esm/programs/spl-token.js +355 -0
  650. package/dist/esm/programs/spl-token.js.map +1 -0
  651. package/dist/esm/programs/system.d.ts +231 -0
  652. package/dist/esm/programs/system.d.ts.map +1 -0
  653. package/dist/esm/programs/system.js +228 -0
  654. package/dist/esm/programs/system.js.map +1 -0
  655. package/dist/esm/programs/types.d.ts +111 -0
  656. package/dist/esm/programs/types.d.ts.map +1 -0
  657. package/dist/esm/programs/types.js +157 -0
  658. package/dist/esm/programs/types.js.map +1 -0
  659. package/package.json +41 -1
@@ -0,0 +1,664 @@
1
+ /**
2
+ * Memory-safe service references — ref counting, leak detection, WeakRef sharing.
3
+ *
4
+ * ## Why refs?
5
+ *
6
+ * In an SDK, memory management is critical. Raw `resolve()` returns
7
+ * a direct reference with no tracking. `acquireRef()` returns a
8
+ * `ServiceRef<T>` that:
9
+ *
10
+ * 1. **Tracks** how many components hold the service (ref counting)
11
+ * 2. **Invalidates** automatically when the context is disposed
12
+ * 3. **Detects leaks** via `FinalizationRegistry` (if a ref is GC'd without release)
13
+ * 4. **Supports RAII** via `use()` / `useAsync()` / `withRef()`
14
+ *
15
+ * ## Architecture
16
+ *
17
+ * ```
18
+ * ┌──────────────────────────────────────────────────────────┐
19
+ * │ Component A Component B │
20
+ * │ acquireRef(RPC) ──┐ ┌── acquireRef(RPC) │
21
+ * │ ServiceRef #1 │ │ ServiceRef #2 │
22
+ * │ refCount: 2 ▼ ▼ refCount: 2 │
23
+ * │ ┌──────────┐ │
24
+ * │ │ Registry │ ← FinalizationRegistry │
25
+ * │ │ RPC → 2 │ (leak detection) │
26
+ * │ └────┬─────┘ │
27
+ * │ │ │
28
+ * │ ┌────▼─────┐ │
29
+ * │ │ Singleton│ (one instance, N refs) │
30
+ * │ │ RPC svc │ │
31
+ * │ └──────────┘ │
32
+ * │ │
33
+ * │ A.release() → refCount: 1 │ B.release() → refCount: 0 │
34
+ * └──────────────────────────────────────────────────────────┘
35
+ * ```
36
+ *
37
+ * ## Component sharing pattern
38
+ *
39
+ * ```ts
40
+ * // Component A — acquires a tracked reference
41
+ * const rpcRef = ctx.acquireRef(Tokens.RPC);
42
+ * const balance = await rpcRef.current.getBalance(pubkey);
43
+ *
44
+ * // Component B — acquires its own tracked ref to the SAME instance
45
+ * const rpcRef2 = ctx.acquireRef(Tokens.RPC);
46
+ * const slot = await rpcRef2.current.getSlot();
47
+ *
48
+ * // Both hold the SAME singleton — ref count is 2
49
+ * ctx.refCount(Tokens.RPC); // → 2
50
+ *
51
+ * // Component A unmounts
52
+ * rpcRef.release(); // ref count → 1
53
+ *
54
+ * // Component B unmounts
55
+ * rpcRef2.release(); // ref count → 0
56
+ * ```
57
+ *
58
+ * ## RAII pattern (auto-release)
59
+ *
60
+ * ```ts
61
+ * // Sync — ref released in finally block
62
+ * const balance = withRef(ctx, Tokens.RPC, rpc => rpc.getBalance(pubkey));
63
+ *
64
+ * // Async — ref released after await completes
65
+ * const slot = await withRefAsync(ctx, Tokens.RPC, rpc => rpc.getSlot());
66
+ *
67
+ * // On the ref itself
68
+ * const result = ref.use(rpc => rpc.getBalance(pubkey));
69
+ * ```
70
+ *
71
+ * @module context/refs
72
+ * @since 1.2.0
73
+ */
74
+ import { SynapseError } from '../core/errors.js';
75
+ // ── Errors ─────────────────────────────────────────────────────
76
+ /**
77
+ * Thrown when accessing `.current` on a released or invalidated reference.
78
+ * @since 1.2.0
79
+ */
80
+ export class RefReleasedError extends SynapseError {
81
+ constructor(tokenName) {
82
+ super(`Service reference for "${tokenName}" has been released. ` +
83
+ 'Acquire a new ref with acquireRef() or check ref.alive before access.', -32104);
84
+ this.name = 'RefReleasedError';
85
+ }
86
+ }
87
+ // ── ServiceRef ─────────────────────────────────────────────────
88
+ /**
89
+ * A tracked, ref-counted reference to a resolved service.
90
+ *
91
+ * Provides memory-safe access: accessing `.current` after `.release()`
92
+ * throws {@link RefReleasedError} instead of returning a stale value.
93
+ *
94
+ * @typeParam T - The service type.
95
+ * @since 1.2.0
96
+ *
97
+ * @example
98
+ * ```ts
99
+ * const rpcRef = ctx.acquireRef(Tokens.RPC);
100
+ *
101
+ * // Use the service
102
+ * const balance = await rpcRef.current.getBalance(pubkey);
103
+ *
104
+ * // Release when done (e.g. on unmount)
105
+ * rpcRef.release();
106
+ *
107
+ * // Accessing after release throws
108
+ * rpcRef.current; // ❌ RefReleasedError
109
+ * ```
110
+ */
111
+ export class ServiceRef {
112
+ _value;
113
+ _token;
114
+ _onRelease;
115
+ id;
116
+ _released = false;
117
+ _acquiredAt;
118
+ /**
119
+ * @internal Use `ctx.acquireRef(token)` or `RefRegistry.acquire()` to create refs.
120
+ */
121
+ constructor(_value, _token, _onRelease,
122
+ /** Unique reference ID (monotonically increasing within a registry). */
123
+ id) {
124
+ this._value = _value;
125
+ this._token = _token;
126
+ this._onRelease = _onRelease;
127
+ this.id = id;
128
+ this._acquiredAt = performance.now();
129
+ }
130
+ // ── Accessors ──────────────────────────────────────────────
131
+ /**
132
+ * The resolved service instance.
133
+ *
134
+ * @throws {RefReleasedError} If the ref has been released or invalidated.
135
+ */
136
+ get current() {
137
+ if (this._released) {
138
+ throw new RefReleasedError(this._token.name);
139
+ }
140
+ return this._value;
141
+ }
142
+ /** Whether this reference is still valid (not released). */
143
+ get alive() { return !this._released; }
144
+ /** The token this ref was acquired for. */
145
+ get token() { return this._token; }
146
+ /** `performance.now()` timestamp when this ref was acquired. */
147
+ get acquiredAt() { return this._acquiredAt; }
148
+ /** How long this ref has been alive, in ms. */
149
+ get ageMs() { return performance.now() - this._acquiredAt; }
150
+ // ── Release ────────────────────────────────────────────────
151
+ /**
152
+ * Release this reference, decrementing the ref count.
153
+ *
154
+ * After release:
155
+ * - `.current` throws {@link RefReleasedError}
156
+ * - `.alive` returns `false`
157
+ * - The ref count for this token decreases by 1
158
+ *
159
+ * Safe to call multiple times (idempotent).
160
+ */
161
+ release() {
162
+ if (this._released)
163
+ return;
164
+ this._released = true;
165
+ this._onRelease(this);
166
+ }
167
+ /** Alias for {@link release}. Implements {@link Disposable}. */
168
+ dispose() { this.release(); }
169
+ // ── RAII patterns ──────────────────────────────────────────
170
+ /**
171
+ * Execute a function with this reference, auto-releasing afterward.
172
+ *
173
+ * The ref is released in a `finally` block, guaranteeing cleanup
174
+ * even if the function throws.
175
+ *
176
+ * @param fn - Receives the unwrapped service value.
177
+ * @returns The return value of `fn`.
178
+ *
179
+ * @example
180
+ * ```ts
181
+ * const balance = rpcRef.use(rpc => rpc.getBalance(pubkey));
182
+ * // rpcRef is now released — no leak possible
183
+ * ```
184
+ */
185
+ use(fn) {
186
+ try {
187
+ return fn(this.current);
188
+ }
189
+ finally {
190
+ this.release();
191
+ }
192
+ }
193
+ /**
194
+ * Async version of {@link use}. Awaits the function, then releases.
195
+ *
196
+ * @example
197
+ * ```ts
198
+ * const balance = await rpcRef.useAsync(rpc => rpc.getBalance(pubkey));
199
+ * ```
200
+ */
201
+ async useAsync(fn) {
202
+ try {
203
+ return await fn(this.current);
204
+ }
205
+ finally {
206
+ this.release();
207
+ }
208
+ }
209
+ // ── Sharing ────────────────────────────────────────────────
210
+ /**
211
+ * Create a weak reference that does **not** prevent garbage collection.
212
+ *
213
+ * The returned `WeakServiceRef` can be shared to components that
214
+ * only need the service optionally — if the strong refs are all
215
+ * released and the GC collects the object, `.deref()` returns
216
+ * `undefined` instead of throwing.
217
+ *
218
+ * @throws {SynapseError} If the service value is a primitive (not weakly referenceable).
219
+ *
220
+ * @example
221
+ * ```ts
222
+ * const weakRpc = rpcRef.toWeak();
223
+ * // Later:
224
+ * const rpc = weakRpc.deref();
225
+ * if (rpc) rpc.getBalance(pubkey);
226
+ * ```
227
+ */
228
+ toWeak() {
229
+ if (typeof this._value !== 'object' || this._value === null) {
230
+ throw new SynapseError(`Cannot create WeakRef for non-object service "${this._token.name}". ` +
231
+ 'WeakRef requires an object target.', -32105);
232
+ }
233
+ return new WeakServiceRef(this._value);
234
+ }
235
+ }
236
+ // ── WeakServiceRef ─────────────────────────────────────────────
237
+ /**
238
+ * A non-preventing (weak) reference to a service.
239
+ *
240
+ * Unlike {@link ServiceRef}, this does **not** keep the service alive
241
+ * in memory. The garbage collector can collect the underlying object
242
+ * even while this ref exists. Use `.deref()` to check if the service
243
+ * is still available.
244
+ *
245
+ * @typeParam T - The service type (must be an object).
246
+ * @since 1.2.0
247
+ *
248
+ * @example
249
+ * ```ts
250
+ * const weakRpc = strongRef.toWeak();
251
+ *
252
+ * // In another component — check before use
253
+ * const rpc = weakRpc.deref();
254
+ * if (rpc) {
255
+ * await rpc.getBalance(pubkey);
256
+ * } else {
257
+ * // Service was GC'd — re-acquire if needed
258
+ * }
259
+ * ```
260
+ */
261
+ export class WeakServiceRef {
262
+ _ref;
263
+ constructor(value) {
264
+ this._ref = new WeakRef(value);
265
+ }
266
+ /**
267
+ * Dereference the weak ref.
268
+ * @returns The service instance, or `undefined` if it was GC'd.
269
+ */
270
+ deref() {
271
+ return this._ref.deref();
272
+ }
273
+ /** Whether the underlying object is still alive (not yet GC'd). */
274
+ get alive() {
275
+ return this._ref.deref() !== undefined;
276
+ }
277
+ }
278
+ // ── RefRegistry ────────────────────────────────────────────────
279
+ /**
280
+ * Centralized registry that tracks all active {@link ServiceRef}s.
281
+ *
282
+ * Provides ref counting, introspection, and leak detection via
283
+ * `FinalizationRegistry`. Each `SynapseContext` owns at most one
284
+ * `RefRegistry` (created lazily on first `acquireRef()`).
285
+ *
286
+ * @since 1.2.0
287
+ */
288
+ export class RefRegistry {
289
+ /** @internal Active refs grouped by token. */
290
+ _entries = new Map();
291
+ /** @internal FinalizationRegistry for GC-based leak detection. */
292
+ _leakDetector;
293
+ /** @internal Track which ref IDs are still active (for leak detection). */
294
+ _activeRefIds = new Set();
295
+ /** @internal Monotonically increasing ref ID. */
296
+ _nextId = 1;
297
+ /** @internal Counters. */
298
+ _totalAcquired = 0;
299
+ _totalReleased = 0;
300
+ _peakActive = 0;
301
+ _leakedCount = 0;
302
+ /** @internal Leak handlers. */
303
+ _leakHandlers = [];
304
+ /** @internal Whether the registry has been disposed. */
305
+ _disposed = false;
306
+ constructor(config = {}) {
307
+ const enableLeaks = config.enableLeakDetection !== false;
308
+ if (enableLeaks && typeof FinalizationRegistry !== 'undefined') {
309
+ this._leakDetector = new FinalizationRegistry((held) => {
310
+ // This ref was GC'd without release() being called → leak
311
+ if (this._activeRefIds.has(held.refId)) {
312
+ this._activeRefIds.delete(held.refId);
313
+ this._leakedCount++;
314
+ const report = {
315
+ tokenName: held.tokenName,
316
+ refId: held.refId,
317
+ acquiredAt: held.acquiredAt,
318
+ detectedAt: performance.now(),
319
+ };
320
+ for (const handler of this._leakHandlers) {
321
+ try {
322
+ handler(report);
323
+ }
324
+ catch { /* swallow listener errors */ }
325
+ }
326
+ }
327
+ });
328
+ }
329
+ }
330
+ // ── Acquire & Release ──────────────────────────────────────
331
+ /**
332
+ * Create a tracked ref for a resolved service value.
333
+ *
334
+ * @param token - The service token.
335
+ * @param value - The resolved service instance.
336
+ * @returns A new `ServiceRef<T>` linked to this registry.
337
+ */
338
+ acquire(token, value) {
339
+ if (this._disposed) {
340
+ throw new SynapseError('RefRegistry has been disposed', -32106);
341
+ }
342
+ const id = this._nextId++;
343
+ this._totalAcquired++;
344
+ const ref = new ServiceRef(value, token, (r) => this._handleRelease(token, r), id);
345
+ // Track in entries map
346
+ let set = this._entries.get(token);
347
+ if (!set) {
348
+ set = new Set();
349
+ this._entries.set(token, set);
350
+ }
351
+ set.add(ref);
352
+ // Track active ID
353
+ this._activeRefIds.add(id);
354
+ if (this._activeRefIds.size > this._peakActive) {
355
+ this._peakActive = this._activeRefIds.size;
356
+ }
357
+ // Register with leak detector
358
+ if (this._leakDetector) {
359
+ this._leakDetector.register(ref, { tokenName: token.name, refId: id, acquiredAt: ref.acquiredAt }, ref);
360
+ }
361
+ return ref;
362
+ }
363
+ /** @internal Handle a ref being released. */
364
+ _handleRelease(token, ref) {
365
+ this._activeRefIds.delete(ref.id);
366
+ this._totalReleased++;
367
+ const set = this._entries.get(token);
368
+ if (set) {
369
+ set.delete(ref);
370
+ if (set.size === 0)
371
+ this._entries.delete(token);
372
+ }
373
+ // Unregister from leak detector (ref was properly released)
374
+ if (this._leakDetector) {
375
+ this._leakDetector.unregister(ref);
376
+ }
377
+ }
378
+ // ── Ref Counting ───────────────────────────────────────────
379
+ /**
380
+ * Number of active refs for a specific token.
381
+ */
382
+ refCount(token) {
383
+ return this._entries.get(token)?.size ?? 0;
384
+ }
385
+ /**
386
+ * Total number of active (unreleased) refs across all tokens.
387
+ */
388
+ totalActive() {
389
+ return this._activeRefIds.size;
390
+ }
391
+ // ── Stats & Introspection ──────────────────────────────────
392
+ /**
393
+ * Aggregate statistics snapshot.
394
+ */
395
+ get stats() {
396
+ return {
397
+ totalAcquired: this._totalAcquired,
398
+ totalReleased: this._totalReleased,
399
+ active: this._activeRefIds.size,
400
+ peak: this._peakActive,
401
+ leaked: this._leakedCount,
402
+ byToken: this._tokenBreakdown(),
403
+ };
404
+ }
405
+ /** @internal Build per-token breakdown. */
406
+ _tokenBreakdown() {
407
+ const result = {};
408
+ for (const [token, set] of this._entries) {
409
+ if (set.size > 0)
410
+ result[token.name] = set.size;
411
+ }
412
+ return result;
413
+ }
414
+ // ── Leak Detection ─────────────────────────────────────────
415
+ /**
416
+ * Check for potential leaks: refs that have been alive longer
417
+ * than `maxAgeMs` without being released.
418
+ *
419
+ * This is a **heuristic** — long-lived refs (e.g. for the lifetime
420
+ * of the app) are expected. Use this for debugging / dev mode.
421
+ *
422
+ * @param maxAgeMs - Threshold in ms. @default 60_000
423
+ */
424
+ checkLeaks(maxAgeMs = 60_000) {
425
+ const now = performance.now();
426
+ const reports = [];
427
+ for (const [token, set] of this._entries) {
428
+ for (const ref of set) {
429
+ if (ref.ageMs > maxAgeMs) {
430
+ reports.push({
431
+ tokenName: token.name,
432
+ refId: ref.id,
433
+ acquiredAt: ref.acquiredAt,
434
+ detectedAt: now,
435
+ });
436
+ }
437
+ }
438
+ }
439
+ return reports;
440
+ }
441
+ /**
442
+ * Register a handler for GC-detected leaks.
443
+ *
444
+ * Called when a `ServiceRef` is garbage collected without
445
+ * `.release()` having been called first.
446
+ *
447
+ * @param handler - Receives a {@link LeakReport} for each leak.
448
+ */
449
+ onLeak(handler) {
450
+ this._leakHandlers.push(handler);
451
+ }
452
+ // ── Cleanup ────────────────────────────────────────────────
453
+ /**
454
+ * Force-release all active refs.
455
+ *
456
+ * Called automatically when the owning `SynapseContext` is disposed.
457
+ * After this, all refs' `.current` will throw {@link RefReleasedError}.
458
+ */
459
+ invalidateAll() {
460
+ for (const set of this._entries.values()) {
461
+ // Iterate a copy because release() modifies the set
462
+ for (const ref of [...set]) {
463
+ ref.release();
464
+ }
465
+ }
466
+ this._entries.clear();
467
+ this._activeRefIds.clear();
468
+ }
469
+ /** Dispose the registry — invalidates all refs, clears handlers. */
470
+ dispose() {
471
+ if (this._disposed)
472
+ return;
473
+ this._disposed = true;
474
+ this.invalidateAll();
475
+ this._leakHandlers.length = 0;
476
+ }
477
+ /** Whether this registry has been disposed. */
478
+ get isDisposed() { return this._disposed; }
479
+ }
480
+ // ── MemoryGuard ────────────────────────────────────────────────
481
+ /**
482
+ * Memory safety monitor that wraps a {@link RefRegistry}.
483
+ *
484
+ * Provides configurable thresholds, periodic leak checks, and
485
+ * pressure alerts. Designed for dev-mode diagnostics or production
486
+ * monitoring of SDK memory usage.
487
+ *
488
+ * @since 1.2.0
489
+ *
490
+ * @example
491
+ * ```ts
492
+ * const guard = new MemoryGuard(registry, {
493
+ * maxRefAgeMs: 30_000,
494
+ * maxActiveRefs: 50,
495
+ * checkIntervalMs: 10_000,
496
+ * });
497
+ *
498
+ * guard.onPressure(stats => {
499
+ * console.warn('⚠️ Memory pressure:', stats.active, 'active refs');
500
+ * });
501
+ *
502
+ * guard.onLeak(report => {
503
+ * console.error('🔴 Leaked ref:', report.tokenName, '#' + report.refId);
504
+ * });
505
+ * ```
506
+ */
507
+ export class MemoryGuard {
508
+ _registry;
509
+ _timer;
510
+ _pressureHandlers = [];
511
+ _config;
512
+ constructor(_registry, config = {}) {
513
+ this._registry = _registry;
514
+ this._config = {
515
+ maxRefAgeMs: config.maxRefAgeMs ?? 60_000,
516
+ maxActiveRefs: config.maxActiveRefs ?? 100,
517
+ checkIntervalMs: config.checkIntervalMs ?? 0,
518
+ };
519
+ // Forward leak events from registry
520
+ // (no extra wiring needed — users subscribe via guard.onLeak())
521
+ // Periodic check timer
522
+ if (this._config.checkIntervalMs > 0) {
523
+ this._timer = setInterval(() => this._periodicCheck(), this._config.checkIntervalMs);
524
+ // unref() so the timer doesn't prevent process.exit()
525
+ if (typeof this._timer === 'object' && 'unref' in this._timer) {
526
+ this._timer.unref();
527
+ }
528
+ }
529
+ }
530
+ // ── Stats ──────────────────────────────────────────────────
531
+ /** Current ref statistics from the underlying registry. */
532
+ get stats() { return this._registry.stats; }
533
+ /** Whether the active ref count exceeds the threshold. */
534
+ get underPressure() {
535
+ return this._registry.totalActive() >= this._config.maxActiveRefs;
536
+ }
537
+ /** Number of currently active refs. */
538
+ get activeRefs() {
539
+ return this._registry.totalActive();
540
+ }
541
+ // ── Checks ─────────────────────────────────────────────────
542
+ /**
543
+ * Check for potential leaks (refs older than `maxRefAgeMs`).
544
+ */
545
+ checkLeaks() {
546
+ return this._registry.checkLeaks(this._config.maxRefAgeMs);
547
+ }
548
+ // ── Events ─────────────────────────────────────────────────
549
+ /**
550
+ * Subscribe to memory pressure events.
551
+ *
552
+ * Fires when the active ref count exceeds `maxActiveRefs`
553
+ * during a periodic check.
554
+ */
555
+ onPressure(handler) {
556
+ this._pressureHandlers.push(handler);
557
+ }
558
+ /**
559
+ * Subscribe to GC-detected leak events.
560
+ *
561
+ * Delegates to the underlying {@link RefRegistry.onLeak}.
562
+ */
563
+ onLeak(handler) {
564
+ this._registry.onLeak(handler);
565
+ }
566
+ // ── Internal ───────────────────────────────────────────────
567
+ /** @internal Periodic check callback. */
568
+ _periodicCheck() {
569
+ if (this.underPressure) {
570
+ const stats = this.stats;
571
+ for (const handler of this._pressureHandlers) {
572
+ try {
573
+ handler(stats);
574
+ }
575
+ catch { /* swallow */ }
576
+ }
577
+ }
578
+ }
579
+ /** Dispose the guard — stops the timer, clears handlers. */
580
+ dispose() {
581
+ if (this._timer) {
582
+ clearInterval(this._timer);
583
+ this._timer = undefined;
584
+ }
585
+ this._pressureHandlers.length = 0;
586
+ }
587
+ }
588
+ /**
589
+ * Create a binding that acquires tracked refs for multiple tokens.
590
+ *
591
+ * Services are resolved **lazily** on first property access. All refs
592
+ * are released together with a single `.release()` call.
593
+ *
594
+ * @param acquireFn - Function that acquires a ref for a token (usually `ctx.acquireRef.bind(ctx)`).
595
+ * @param tokens - Record mapping property names to service tokens.
596
+ * @returns A {@link ServiceBinding} with lazy services and batch release.
597
+ * @since 1.2.0
598
+ *
599
+ * @example
600
+ * ```ts
601
+ * const binding = createBinding(
602
+ * token => ctx.acquireRef(token),
603
+ * { rpc: Tokens.RPC, das: Tokens.DAS, programs: Tokens.PROGRAMS },
604
+ * );
605
+ *
606
+ * // Use services (each is acquired on first access):
607
+ * await binding.services.rpc.getBalance(pubkey);
608
+ * await binding.services.das.getAsset(assetId);
609
+ *
610
+ * // Release ALL refs at once:
611
+ * binding.release();
612
+ * ```
613
+ */
614
+ export function createBinding(acquireFn, tokens) {
615
+ const refs = new Map();
616
+ let released = false;
617
+ const services = new Proxy({}, {
618
+ get(_target, prop) {
619
+ if (typeof prop === 'symbol')
620
+ return undefined;
621
+ if (released) {
622
+ throw new SynapseError('ServiceBinding has been released. Cannot access services after release.', -32107);
623
+ }
624
+ // Return cached if already acquired
625
+ const existing = refs.get(prop);
626
+ if (existing)
627
+ return existing.current;
628
+ // Acquire new ref
629
+ const token = tokens[prop];
630
+ if (!token)
631
+ return undefined;
632
+ const ref = acquireFn(token);
633
+ refs.set(prop, ref);
634
+ return ref.current;
635
+ },
636
+ has(_target, prop) {
637
+ return typeof prop === 'string' && prop in tokens;
638
+ },
639
+ ownKeys() {
640
+ return Object.keys(tokens);
641
+ },
642
+ getOwnPropertyDescriptor(_target, prop) {
643
+ if (typeof prop === 'string' && prop in tokens) {
644
+ return { configurable: true, enumerable: true, writable: false };
645
+ }
646
+ return undefined;
647
+ },
648
+ });
649
+ return {
650
+ services,
651
+ refs,
652
+ get alive() { return !released && [...refs.values()].some(r => r.alive); },
653
+ release() {
654
+ if (released)
655
+ return;
656
+ released = true;
657
+ for (const ref of refs.values()) {
658
+ ref.release();
659
+ }
660
+ },
661
+ dispose() { this.release(); },
662
+ };
663
+ }
664
+ //# sourceMappingURL=refs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"refs.js","sourceRoot":"","sources":["../../../src/context/refs.ts"],"names":[],"mappings":"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"}