@opendatalabs/vana-sdk 0.1.0-alpha.2b6935d → 0.1.0-alpha.2e569eb

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 (292) hide show
  1. package/dist/browser.cjs.map +1 -1
  2. package/dist/browser.d.ts +33 -1
  3. package/dist/browser.js.map +1 -1
  4. package/dist/chains/index.cjs.map +1 -1
  5. package/dist/chains/index.d.ts +30 -1
  6. package/dist/chains/index.js.map +1 -1
  7. package/dist/config/chains.cjs.map +1 -1
  8. package/dist/config/chains.d.ts +99 -0
  9. package/dist/config/chains.js.map +1 -1
  10. package/dist/contracts/contractController.cjs.map +1 -1
  11. package/dist/contracts/contractController.d.ts +66 -10
  12. package/dist/contracts/contractController.js.map +1 -1
  13. package/dist/controllers/__tests__/data-consistency-integration.test.d.ts +7 -0
  14. package/dist/controllers/base.cjs +33 -0
  15. package/dist/controllers/base.cjs.map +1 -1
  16. package/dist/controllers/base.d.ts +10 -0
  17. package/dist/controllers/base.js +33 -0
  18. package/dist/controllers/base.js.map +1 -1
  19. package/dist/controllers/data.cjs +417 -276
  20. package/dist/controllers/data.cjs.map +1 -1
  21. package/dist/controllers/data.d.ts +246 -193
  22. package/dist/controllers/data.js +430 -279
  23. package/dist/controllers/data.js.map +1 -1
  24. package/dist/controllers/operations.cjs +430 -0
  25. package/dist/controllers/operations.cjs.map +1 -0
  26. package/dist/controllers/operations.d.ts +229 -0
  27. package/dist/controllers/operations.js +406 -0
  28. package/dist/controllers/operations.js.map +1 -0
  29. package/dist/controllers/permissions.cjs +691 -210
  30. package/dist/controllers/permissions.cjs.map +1 -1
  31. package/dist/controllers/permissions.d.ts +196 -68
  32. package/dist/controllers/permissions.js +691 -210
  33. package/dist/controllers/permissions.js.map +1 -1
  34. package/dist/controllers/protocol.cjs.map +1 -1
  35. package/dist/controllers/protocol.d.ts +27 -28
  36. package/dist/controllers/protocol.js.map +1 -1
  37. package/dist/controllers/schemas.cjs +104 -25
  38. package/dist/controllers/schemas.cjs.map +1 -1
  39. package/dist/controllers/schemas.d.ts +88 -40
  40. package/dist/controllers/schemas.js +104 -25
  41. package/dist/controllers/schemas.js.map +1 -1
  42. package/dist/controllers/server.cjs +269 -58
  43. package/dist/controllers/server.cjs.map +1 -1
  44. package/dist/controllers/server.d.ts +157 -52
  45. package/dist/controllers/server.js +269 -58
  46. package/dist/controllers/server.js.map +1 -1
  47. package/dist/core/__tests__/health.test.d.ts +1 -0
  48. package/dist/core/__tests__/inMemoryNonceManager.test.d.ts +1 -0
  49. package/dist/core/__tests__/nonceManager.test.d.ts +1 -0
  50. package/dist/core/__tests__/pollingManager.test.d.ts +4 -0
  51. package/dist/core/apiClient.cjs +53 -3
  52. package/dist/core/apiClient.cjs.map +1 -1
  53. package/dist/core/apiClient.d.ts +132 -7
  54. package/dist/core/apiClient.js +53 -3
  55. package/dist/core/apiClient.js.map +1 -1
  56. package/dist/core/generics.cjs +30 -3
  57. package/dist/core/generics.cjs.map +1 -1
  58. package/dist/core/generics.d.ts +95 -6
  59. package/dist/core/generics.js +30 -3
  60. package/dist/core/generics.js.map +1 -1
  61. package/dist/core/health.cjs +289 -0
  62. package/dist/core/health.cjs.map +1 -0
  63. package/dist/core/health.d.ts +143 -0
  64. package/dist/core/health.js +265 -0
  65. package/dist/core/health.js.map +1 -0
  66. package/dist/core/inMemoryNonceManager.cjs +138 -0
  67. package/dist/core/inMemoryNonceManager.cjs.map +1 -0
  68. package/dist/core/inMemoryNonceManager.d.ts +69 -0
  69. package/dist/core/inMemoryNonceManager.js +114 -0
  70. package/dist/core/inMemoryNonceManager.js.map +1 -0
  71. package/dist/core/nonceManager.cjs +304 -0
  72. package/dist/core/nonceManager.cjs.map +1 -0
  73. package/dist/core/nonceManager.d.ts +116 -0
  74. package/dist/core/nonceManager.js +280 -0
  75. package/dist/core/nonceManager.js.map +1 -0
  76. package/dist/core/pollingManager.cjs +292 -0
  77. package/dist/core/pollingManager.cjs.map +1 -0
  78. package/dist/core/pollingManager.d.ts +120 -0
  79. package/dist/core/pollingManager.js +268 -0
  80. package/dist/core/pollingManager.js.map +1 -0
  81. package/dist/core.cjs +9 -1
  82. package/dist/core.cjs.map +1 -1
  83. package/dist/core.d.ts +10 -3
  84. package/dist/core.js +9 -1
  85. package/dist/core.js.map +1 -1
  86. package/dist/crypto/ecies/base.cjs +16 -3
  87. package/dist/crypto/ecies/base.cjs.map +1 -1
  88. package/dist/crypto/ecies/base.js +16 -3
  89. package/dist/crypto/ecies/base.js.map +1 -1
  90. package/dist/errors.cjs +29 -0
  91. package/dist/errors.cjs.map +1 -1
  92. package/dist/errors.d.ts +64 -0
  93. package/dist/errors.js +28 -0
  94. package/dist/errors.js.map +1 -1
  95. package/dist/generated/abi/DataPortabilityGranteesImplementation.cjs +162 -0
  96. package/dist/generated/abi/DataPortabilityGranteesImplementation.cjs.map +1 -1
  97. package/dist/generated/abi/DataPortabilityGranteesImplementation.d.ts +123 -0
  98. package/dist/generated/abi/DataPortabilityGranteesImplementation.js +162 -0
  99. package/dist/generated/abi/DataPortabilityGranteesImplementation.js.map +1 -1
  100. package/dist/generated/abi/index.d.ts +123 -0
  101. package/dist/generated/server/server-exports.cjs +22 -0
  102. package/dist/generated/server/server-exports.cjs.map +1 -1
  103. package/dist/generated/server/server-exports.d.ts +27 -10
  104. package/dist/generated/server/server-exports.js +17 -0
  105. package/dist/generated/server/server-exports.js.map +1 -1
  106. package/dist/generated/server/server.cjs.map +1 -1
  107. package/dist/generated/server/server.d.ts +771 -402
  108. package/dist/generated/subgraph.cjs +797 -32
  109. package/dist/generated/subgraph.cjs.map +1 -1
  110. package/dist/generated/subgraph.d.ts +135 -0
  111. package/dist/generated/subgraph.js +792 -32
  112. package/dist/generated/subgraph.js.map +1 -1
  113. package/dist/index.browser.d.ts +1 -0
  114. package/dist/index.browser.js +2 -0
  115. package/dist/index.browser.js.map +1 -1
  116. package/dist/index.cjs.map +1 -1
  117. package/dist/index.js.map +1 -1
  118. package/dist/index.node.cjs +19 -3
  119. package/dist/index.node.cjs.map +1 -1
  120. package/dist/index.node.d.ts +54 -14
  121. package/dist/index.node.js +17 -3
  122. package/dist/index.node.js.map +1 -1
  123. package/dist/lib/__tests__/redisAtomicStore.test.d.ts +1 -0
  124. package/dist/lib/redisAtomicStore.cjs +201 -0
  125. package/dist/lib/redisAtomicStore.cjs.map +1 -0
  126. package/dist/lib/redisAtomicStore.d.ts +120 -0
  127. package/dist/lib/redisAtomicStore.js +177 -0
  128. package/dist/lib/redisAtomicStore.js.map +1 -0
  129. package/dist/node.cjs.map +1 -1
  130. package/dist/node.d.ts +39 -1
  131. package/dist/node.js.map +1 -1
  132. package/dist/platform/browser.cjs +160 -2
  133. package/dist/platform/browser.cjs.map +1 -1
  134. package/dist/platform/browser.d.ts +232 -12
  135. package/dist/platform/browser.js +160 -2
  136. package/dist/platform/browser.js.map +1 -1
  137. package/dist/platform/interface.cjs.map +1 -1
  138. package/dist/platform/interface.d.ts +283 -90
  139. package/dist/platform/node.cjs +163 -2
  140. package/dist/platform/node.cjs.map +1 -1
  141. package/dist/platform/node.d.ts +69 -6
  142. package/dist/platform/node.js +163 -2
  143. package/dist/platform/node.js.map +1 -1
  144. package/dist/server/relayerHandler.cjs +295 -95
  145. package/dist/server/relayerHandler.cjs.map +1 -1
  146. package/dist/server/relayerHandler.d.ts +35 -3
  147. package/dist/server/relayerHandler.js +294 -93
  148. package/dist/server/relayerHandler.js.map +1 -1
  149. package/dist/storage/index.cjs +3 -0
  150. package/dist/storage/index.cjs.map +1 -1
  151. package/dist/storage/index.d.ts +1 -0
  152. package/dist/storage/index.js +2 -0
  153. package/dist/storage/index.js.map +1 -1
  154. package/dist/storage/manager.cjs +108 -25
  155. package/dist/storage/manager.cjs.map +1 -1
  156. package/dist/storage/manager.d.ts +119 -25
  157. package/dist/storage/manager.js +108 -25
  158. package/dist/storage/manager.js.map +1 -1
  159. package/dist/storage/providers/callback-storage.cjs +86 -15
  160. package/dist/storage/providers/callback-storage.cjs.map +1 -1
  161. package/dist/storage/providers/callback-storage.d.ts +109 -20
  162. package/dist/storage/providers/callback-storage.js +86 -15
  163. package/dist/storage/providers/callback-storage.js.map +1 -1
  164. package/dist/storage/providers/dropbox.cjs +237 -0
  165. package/dist/storage/providers/dropbox.cjs.map +1 -0
  166. package/dist/storage/providers/dropbox.d.ts +39 -0
  167. package/dist/storage/providers/dropbox.js +215 -0
  168. package/dist/storage/providers/dropbox.js.map +1 -0
  169. package/dist/storage/providers/dropbox.test.d.ts +1 -0
  170. package/dist/storage/providers/pinata.cjs.map +1 -1
  171. package/dist/storage/providers/pinata.d.ts +12 -14
  172. package/dist/storage/providers/pinata.js.map +1 -1
  173. package/dist/tests/data-upload-owner-validation.test.d.ts +1 -0
  174. package/dist/tests/permissions-transaction-options.test.d.ts +1 -0
  175. package/dist/types/atomicStore.cjs +31 -0
  176. package/dist/types/atomicStore.cjs.map +1 -0
  177. package/dist/types/atomicStore.d.ts +236 -0
  178. package/dist/types/atomicStore.js +7 -0
  179. package/dist/types/atomicStore.js.map +1 -0
  180. package/dist/types/blockchain.cjs.map +1 -1
  181. package/dist/types/blockchain.d.ts +39 -11
  182. package/dist/types/chains.cjs.map +1 -1
  183. package/dist/types/chains.d.ts +74 -7
  184. package/dist/types/chains.js.map +1 -1
  185. package/dist/types/config.cjs.map +1 -1
  186. package/dist/types/config.d.ts +38 -4
  187. package/dist/types/config.js.map +1 -1
  188. package/dist/types/contracts.cjs.map +1 -1
  189. package/dist/types/contracts.d.ts +71 -7
  190. package/dist/types/controller-context.cjs.map +1 -1
  191. package/dist/types/controller-context.d.ts +4 -1
  192. package/dist/types/data.cjs.map +1 -1
  193. package/dist/types/data.d.ts +11 -10
  194. package/dist/types/generics.cjs.map +1 -1
  195. package/dist/types/generics.d.ts +81 -10
  196. package/dist/types/index.cjs.map +1 -1
  197. package/dist/types/index.d.ts +31 -3
  198. package/dist/types/index.js.map +1 -1
  199. package/dist/types/operationStore.cjs +17 -0
  200. package/dist/types/operationStore.cjs.map +1 -0
  201. package/dist/types/operationStore.d.ts +171 -0
  202. package/dist/types/operationStore.js +1 -0
  203. package/dist/types/operationStore.js.map +1 -0
  204. package/dist/types/operations.cjs +3 -15
  205. package/dist/types/operations.cjs.map +1 -1
  206. package/dist/types/operations.d.ts +131 -39
  207. package/dist/types/operations.js +2 -13
  208. package/dist/types/operations.js.map +1 -1
  209. package/dist/types/options.cjs +17 -0
  210. package/dist/types/options.cjs.map +1 -0
  211. package/dist/types/options.d.ts +308 -0
  212. package/dist/types/options.js +1 -0
  213. package/dist/types/options.js.map +1 -0
  214. package/dist/types/permissions.cjs.map +1 -1
  215. package/dist/types/permissions.d.ts +19 -20
  216. package/dist/types/personal.cjs.map +1 -1
  217. package/dist/types/personal.d.ts +150 -14
  218. package/dist/types/relayer.cjs.map +1 -1
  219. package/dist/types/relayer.d.ts +120 -24
  220. package/dist/types/storage.cjs.map +1 -1
  221. package/dist/types/storage.d.ts +9 -21
  222. package/dist/types/storage.js.map +1 -1
  223. package/dist/types/utils.cjs.map +1 -1
  224. package/dist/types/utils.d.ts +0 -45
  225. package/dist/utils/__tests__/chainQuery.test.d.ts +1 -0
  226. package/dist/utils/__tests__/subgraphConsistency.test.d.ts +4 -0
  227. package/dist/utils/__tests__/subgraphPagination.test.d.ts +4 -0
  228. package/dist/utils/chainQuery.cjs +107 -0
  229. package/dist/utils/chainQuery.cjs.map +1 -0
  230. package/dist/utils/chainQuery.d.ts +31 -0
  231. package/dist/utils/chainQuery.js +82 -0
  232. package/dist/utils/chainQuery.js.map +1 -0
  233. package/dist/utils/grantFiles.cjs +4 -1
  234. package/dist/utils/grantFiles.cjs.map +1 -1
  235. package/dist/utils/grantFiles.d.ts +10 -20
  236. package/dist/utils/grantFiles.js +4 -1
  237. package/dist/utils/grantFiles.js.map +1 -1
  238. package/dist/utils/grantValidation.cjs.map +1 -1
  239. package/dist/utils/grantValidation.d.ts +95 -16
  240. package/dist/utils/grantValidation.js.map +1 -1
  241. package/dist/utils/grants.cjs.map +1 -1
  242. package/dist/utils/grants.d.ts +93 -12
  243. package/dist/utils/grants.js.map +1 -1
  244. package/dist/utils/ipfs.cjs +2 -4
  245. package/dist/utils/ipfs.cjs.map +1 -1
  246. package/dist/utils/ipfs.d.ts +1 -1
  247. package/dist/utils/ipfs.js +2 -4
  248. package/dist/utils/ipfs.js.map +1 -1
  249. package/dist/utils/lazy-import.cjs.map +1 -1
  250. package/dist/utils/lazy-import.d.ts +32 -7
  251. package/dist/utils/lazy-import.js.map +1 -1
  252. package/dist/utils/signatureCache.cjs +8 -2
  253. package/dist/utils/signatureCache.cjs.map +1 -1
  254. package/dist/utils/signatureCache.d.ts +49 -8
  255. package/dist/utils/signatureCache.js +8 -2
  256. package/dist/utils/signatureCache.js.map +1 -1
  257. package/dist/utils/subgraphConsistency.cjs +184 -0
  258. package/dist/utils/subgraphConsistency.cjs.map +1 -0
  259. package/dist/utils/subgraphConsistency.d.ts +65 -0
  260. package/dist/utils/subgraphConsistency.js +155 -0
  261. package/dist/utils/subgraphConsistency.js.map +1 -0
  262. package/dist/utils/subgraphMetaCache.cjs +101 -0
  263. package/dist/utils/subgraphMetaCache.cjs.map +1 -0
  264. package/dist/utils/subgraphMetaCache.d.ts +56 -0
  265. package/dist/utils/subgraphMetaCache.js +76 -0
  266. package/dist/utils/subgraphMetaCache.js.map +1 -0
  267. package/dist/utils/subgraphPagination.cjs +104 -0
  268. package/dist/utils/subgraphPagination.cjs.map +1 -0
  269. package/dist/utils/subgraphPagination.d.ts +78 -0
  270. package/dist/utils/subgraphPagination.js +78 -0
  271. package/dist/utils/subgraphPagination.js.map +1 -0
  272. package/dist/utils/transactionHelpers.cjs.map +1 -1
  273. package/dist/utils/transactionHelpers.d.ts +12 -12
  274. package/dist/utils/transactionHelpers.js.map +1 -1
  275. package/dist/utils/typedDataConverter.cjs.map +1 -1
  276. package/dist/utils/typedDataConverter.d.ts +39 -3
  277. package/dist/utils/typedDataConverter.js.map +1 -1
  278. package/dist/utils/urlResolver.cjs +7 -0
  279. package/dist/utils/urlResolver.cjs.map +1 -1
  280. package/dist/utils/urlResolver.d.ts +22 -4
  281. package/dist/utils/urlResolver.js +7 -0
  282. package/dist/utils/urlResolver.js.map +1 -1
  283. package/dist/utils/wallet.cjs.map +1 -1
  284. package/dist/utils/wallet.d.ts +78 -16
  285. package/dist/utils/wallet.js.map +1 -1
  286. package/package.json +3 -1
  287. package/dist/server/handler.cjs +0 -103
  288. package/dist/server/handler.cjs.map +0 -1
  289. package/dist/server/handler.d.ts +0 -95
  290. package/dist/server/handler.js +0 -79
  291. package/dist/server/handler.js.map +0 -1
  292. /package/dist/{tests/server-handler.test.d.ts → controllers/__tests__/operations.processQueue.test.d.ts} +0 -0
@@ -123,6 +123,7 @@ export { DataController } from "./controllers/data";
123
123
  export { ServerController } from "./controllers/server";
124
124
  export { ProtocolController } from "./controllers/protocol";
125
125
  export { SchemaController } from "./controllers/schemas";
126
+ export { OperationsController } from "./controllers/operations";
126
127
  export * from "./contracts/contractController";
127
128
  export * from "./utils/encryption";
128
129
  export * from "./utils/formatters";
@@ -22,6 +22,7 @@ import { DataController } from "./controllers/data";
22
22
  import { ServerController } from "./controllers/server";
23
23
  import { ProtocolController } from "./controllers/protocol";
24
24
  import { SchemaController } from "./controllers/schemas";
25
+ import { OperationsController } from "./controllers/operations";
25
26
  export * from "./contracts/contractController";
26
27
  export * from "./utils/encryption";
27
28
  export * from "./utils/formatters";
@@ -82,6 +83,7 @@ export {
82
83
  EventEmitter,
83
84
  MemoryCache,
84
85
  MiddlewarePipeline,
86
+ OperationsController,
85
87
  PermissionsController,
86
88
  ProtocolController,
87
89
  RateLimiter,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.browser.ts"],"sourcesContent":["/**\n * @module Browser\n * Browser-specific implementation of the Vana SDK\n */\n\nimport { BrowserPlatformAdapter } from \"./platform/browser\";\nimport { VanaCore } from \"./core\";\nimport type {\n VanaConfig,\n VanaConfigWithStorage,\n StorageRequiredMarker,\n} from \"./types\";\n\n/**\n * Internal implementation class for browser environments.\n * This class is not exported directly - use the Vana factory function instead.\n */\nclass VanaBrowserImpl extends VanaCore {\n constructor(config: VanaConfig) {\n super(new BrowserPlatformAdapter(), config);\n }\n}\n\n/**\n * Creates a new Vana SDK instance configured for browser environments.\n *\n * @remarks\n * This is the primary entry point for browser applications using the Vana SDK. The function\n * automatically detects your configuration type and provides compile-time type safety:\n * - **With storage configured**: All methods including file upload/download are available\n * - **Without storage**: Storage-dependent methods throw runtime errors and are excluded from TypeScript\n *\n * The SDK supports multiple wallet configurations (direct WalletClient or chain config),\n * various storage providers (IPFS, Pinata, Google Drive), and gasless transactions via relayers.\n * All operations are optimized for browser environments with proper bundle size optimization.\n *\n * @param config - Configuration object containing wallet, storage, and relayer settings\n * @returns A fully configured Vana SDK instance for browser use\n * @throws {InvalidConfigurationError} When configuration parameters are invalid or missing\n * @example\n * ```typescript\n * import { Vana } from '@opendatalabs/vana-sdk/browser';\n * import { createWalletClient, custom } from 'viem';\n * import { IPFSStorage } from '@opendatalabs/vana-sdk/browser';\n *\n * // Complete setup with storage and wallet\n * const walletClient = createWalletClient({\n * chain: mokshaTestnet,\n * transport: custom(window.ethereum)\n * });\n *\n * const vana = Vana({\n * walletClient,\n * storage: {\n * providers: {\n * ipfs: new IPFSStorage({ gateway: 'https://gateway.pinata.cloud' }),\n * pinata: new PinataStorage({ apiKey: process.env.PINATA_KEY })\n * },\n * defaultProvider: 'ipfs'\n * },\n * relayerCallbacks: {\n * async submitPermissionGrant(typedData, signature) {\n * const response = await fetch('/api/relay/grant', {\n * method: 'POST',\n * body: JSON.stringify({ typedData, signature })\n * });\n * return (await response.json()).transactionHash;\n * }\n * }\n * });\n *\n * // All operations now available\n * const files = await vana.data.getUserFiles();\n * const permissions = await vana.permissions.getUserPermissions();\n * await vana.data.upload({ content: 'My data', filename: 'data.txt' });\n * ```\n *\n * @example\n * ```typescript\n * // Minimal setup without storage (read-only operations)\n * const vanaReadOnly = Vana({ walletClient });\n *\n * // These work without storage\n * const files = await vanaReadOnly.data.getUserFiles();\n * const permissions = await vanaReadOnly.permissions.getUserPermissions();\n *\n * // This would throw a runtime error\n * // await vanaReadOnly.data.upload(params); // ❌ InvalidConfigurationError\n *\n * // Safe runtime check\n * if (vanaReadOnly.isStorageEnabled()) {\n * await vanaReadOnly.data.upload(params); // ✅ TypeScript allows this\n * } else {\n * console.log('Storage not configured - upload unavailable');\n * }\n * ```\n *\n * @example\n * ```typescript\n * // Using chain configuration instead of wallet client\n * const vana = Vana({\n * chainId: 14800, // Moksha testnet\n * account: '0x742d35Cc6558Fd4D9e9E0E888F0462ef6919Bd36',\n * rpcUrl: 'https://rpc.moksha.vana.org',\n * storage: {\n * providers: { ipfs: new IPFSStorage() },\n * defaultProvider: 'ipfs'\n * }\n * });\n * ```\n *\n * @see {@link https://docs.vana.org/docs/sdk/getting-started | Getting Started Guide} for setup tutorials\n * @see {@link VanaCore} for the underlying implementation details\n * @category Core SDK\n */\nexport function Vana(\n config: VanaConfigWithStorage,\n): VanaBrowserImpl & StorageRequiredMarker;\nexport function Vana(config: VanaConfig): VanaBrowserImpl;\n/**\n * Creates a new Vana SDK instance.\n *\n * @param config - The configuration for the Vana SDK\n * @returns A new Vana SDK instance\n */\nexport function Vana(config: VanaConfig) {\n return new VanaBrowserImpl(config);\n}\n\n/**\n * The type of a Vana SDK instance in browser environments.\n * Uses InstanceType to properly expose all public methods from the class hierarchy.\n *\n * @see {@link Vana}\n */\nexport type VanaInstance = InstanceType<typeof VanaBrowserImpl>;\n\n// Export as default export\nexport default Vana;\n\n// Re-export everything that was in index.ts (avoiding circular dependency)\n// Core class and factory\nexport { VanaCore, VanaCoreFactory } from \"./core\";\n\n// Types - modular exports\nexport type * from \"./types\";\n\n// Type guards and utilities\nexport {\n isReplicateAPIResponse,\n isAPIResponse,\n safeParseJSON,\n parseReplicateOutput,\n} from \"./types/external-apis\";\n\n// VanaContract is exported from abi to avoid circular dependencies\nexport type { VanaContract } from \"./generated/abi\";\n\n// Error classes\nexport * from \"./errors\";\n\n// Controllers\nexport { PermissionsController } from \"./controllers/permissions\";\nexport { DataController } from \"./controllers/data\";\nexport { ServerController } from \"./controllers/server\";\nexport { ProtocolController } from \"./controllers/protocol\";\nexport { SchemaController } from \"./controllers/schemas\";\n\n// Contract controller\nexport * from \"./contracts/contractController\";\n\n// Utilities\nexport * from \"./utils/encryption\";\nexport * from \"./utils/formatters\";\nexport * from \"./utils/grantFiles\";\nexport * from \"./utils/grantValidation\";\nexport * from \"./utils/grants\";\nexport * from \"./utils/ipfs\";\nexport * from \"./utils/schemaValidation\";\nexport * from \"./utils/signatureCache\";\n// TransactionHandle removed - using POJOs instead\nexport type {\n Operation,\n TransactionResult,\n TransactionReceipt,\n PollingOptions,\n TransactionWaitOptions,\n} from \"./types/operations\";\n\n// Storage API\nexport * from \"./storage\";\n\n// Configuration\nexport { getContractAddress } from \"./config/addresses\";\nexport { chains } from \"./config/chains\";\nexport {\n type ServiceEndpoints,\n mainnetServices,\n mokshaServices,\n getServiceEndpoints,\n getDefaultPersonalServerUrl,\n} from \"./config/default-services\";\n\n// Chain configurations with subgraph URLs - explicit exports for better DX\nexport {\n vanaMainnet,\n mokshaTestnet,\n moksha,\n type VanaChainConfig,\n getChainConfig,\n getAllChains,\n} from \"./chains\";\nexport * from \"./chains\";\n\n// ABIs\nexport { getAbi } from \"./generated/abi\";\nexport type { VanaContract as VanaContractAbi } from \"./generated/abi\";\n\n// Generic utilities for extensibility\nexport {\n BaseController,\n RetryUtility,\n RateLimiter,\n MemoryCache,\n EventEmitter,\n MiddlewarePipeline,\n AsyncQueue,\n CircuitBreaker,\n} from \"./core/generics\";\n\n// Platform adapters - browser-safe exports\nexport { BrowserPlatformAdapter } from \"./platform/browser\";\nexport { BrowserECIESUint8Provider as BrowserECIESProvider } from \"./crypto/ecies/browser\";\nexport type { VanaPlatformAdapter } from \"./platform/interface\";\n\n// Browser-only platform adapter utilities\nexport {\n createBrowserPlatformAdapter,\n createPlatformAdapterSafe,\n} from \"./platform/browser-only\";\n\n// Note: createNodePlatformAdapter is not exported in browser bundle to avoid Node.js dependencies\n\n// NodePlatformAdapter is available through dynamic import to avoid bundling Node.js dependencies\n// Use createNodePlatformAdapter() for dynamic import\n\n// Platform utilities - browser-safe only\nexport {\n detectPlatform,\n isPlatformSupported,\n getPlatformCapabilities,\n} from \"./platform/utils\";\n\nexport { ApiClient } from \"./core/apiClient\";\n\nexport type {\n ApiClientConfig,\n HttpMethod,\n RequestOptions,\n} from \"./core/apiClient\";\n\n// Note: Default export is already handled above with the Vana factory function\n\n// For testing purposes, we also export the implementation class\nexport { VanaBrowserImpl };\n"],"mappings":"AAKA,SAAS,8BAA8B;AACvC,SAAS,gBAAgB;AAWzB,MAAM,wBAAwB,SAAS;AAAA,EACrC,YAAY,QAAoB;AAC9B,UAAM,IAAI,uBAAuB,GAAG,MAAM;AAAA,EAC5C;AACF;AAwGO,SAAS,KAAK,QAAoB;AACvC,SAAO,IAAI,gBAAgB,MAAM;AACnC;AAWA,IAAO,wBAAQ;AAIf,SAAS,YAAAA,WAAU,uBAAuB;AAM1C;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAMP,cAAc;AAGd,SAAS,6BAA6B;AACtC,SAAS,sBAAsB;AAC/B,SAAS,wBAAwB;AACjC,SAAS,0BAA0B;AACnC,SAAS,wBAAwB;AAGjC,cAAc;AAGd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AAWd,cAAc;AAGd,SAAS,0BAA0B;AACnC,SAAS,cAAc;AACvB;AAAA,EAEE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAGP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EAEA;AAAA,EACA;AAAA,OACK;AACP,cAAc;AAGd,SAAS,cAAc;AAIvB;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAGP,SAAS,0BAAAC,+BAA8B;AACvC,SAAsC,iCAA4B;AAIlE;AAAA,EACE;AAAA,EACA;AAAA,OACK;AAQP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEP,SAAS,iBAAiB;","names":["VanaCore","BrowserPlatformAdapter"]}
1
+ {"version":3,"sources":["../src/index.browser.ts"],"sourcesContent":["/**\n * @module Browser\n * Browser-specific implementation of the Vana SDK\n */\n\nimport { BrowserPlatformAdapter } from \"./platform/browser\";\nimport { VanaCore } from \"./core\";\nimport type {\n VanaConfig,\n VanaConfigWithStorage,\n StorageRequiredMarker,\n} from \"./types\";\n\n/**\n * Internal implementation class for browser environments.\n * This class is not exported directly - use the Vana factory function instead.\n */\nclass VanaBrowserImpl extends VanaCore {\n constructor(config: VanaConfig) {\n super(new BrowserPlatformAdapter(), config);\n }\n}\n\n/**\n * Creates a new Vana SDK instance configured for browser environments.\n *\n * @remarks\n * This is the primary entry point for browser applications using the Vana SDK. The function\n * automatically detects your configuration type and provides compile-time type safety:\n * - **With storage configured**: All methods including file upload/download are available\n * - **Without storage**: Storage-dependent methods throw runtime errors and are excluded from TypeScript\n *\n * The SDK supports multiple wallet configurations (direct WalletClient or chain config),\n * various storage providers (IPFS, Pinata, Google Drive), and gasless transactions via relayers.\n * All operations are optimized for browser environments with proper bundle size optimization.\n *\n * @param config - Configuration object containing wallet, storage, and relayer settings\n * @returns A fully configured Vana SDK instance for browser use\n * @throws {InvalidConfigurationError} When configuration parameters are invalid or missing\n * @example\n * ```typescript\n * import { Vana } from '@opendatalabs/vana-sdk/browser';\n * import { createWalletClient, custom } from 'viem';\n * import { IPFSStorage } from '@opendatalabs/vana-sdk/browser';\n *\n * // Complete setup with storage and wallet\n * const walletClient = createWalletClient({\n * chain: mokshaTestnet,\n * transport: custom(window.ethereum)\n * });\n *\n * const vana = Vana({\n * walletClient,\n * storage: {\n * providers: {\n * ipfs: new IPFSStorage({ gateway: 'https://gateway.pinata.cloud' }),\n * pinata: new PinataStorage({ apiKey: process.env.PINATA_KEY })\n * },\n * defaultProvider: 'ipfs'\n * },\n * relayerCallbacks: {\n * async submitPermissionGrant(typedData, signature) {\n * const response = await fetch('/api/relay/grant', {\n * method: 'POST',\n * body: JSON.stringify({ typedData, signature })\n * });\n * return (await response.json()).transactionHash;\n * }\n * }\n * });\n *\n * // All operations now available\n * const files = await vana.data.getUserFiles();\n * const permissions = await vana.permissions.getUserPermissions();\n * await vana.data.upload({ content: 'My data', filename: 'data.txt' });\n * ```\n *\n * @example\n * ```typescript\n * // Minimal setup without storage (read-only operations)\n * const vanaReadOnly = Vana({ walletClient });\n *\n * // These work without storage\n * const files = await vanaReadOnly.data.getUserFiles();\n * const permissions = await vanaReadOnly.permissions.getUserPermissions();\n *\n * // This would throw a runtime error\n * // await vanaReadOnly.data.upload(params); // ❌ InvalidConfigurationError\n *\n * // Safe runtime check\n * if (vanaReadOnly.isStorageEnabled()) {\n * await vanaReadOnly.data.upload(params); // ✅ TypeScript allows this\n * } else {\n * console.log('Storage not configured - upload unavailable');\n * }\n * ```\n *\n * @example\n * ```typescript\n * // Using chain configuration instead of wallet client\n * const vana = Vana({\n * chainId: 14800, // Moksha testnet\n * account: '0x742d35Cc6558Fd4D9e9E0E888F0462ef6919Bd36',\n * rpcUrl: 'https://rpc.moksha.vana.org',\n * storage: {\n * providers: { ipfs: new IPFSStorage() },\n * defaultProvider: 'ipfs'\n * }\n * });\n * ```\n *\n * @see {@link https://docs.vana.org/docs/sdk/getting-started | Getting Started Guide} for setup tutorials\n * @see {@link VanaCore} for the underlying implementation details\n * @category Core SDK\n */\nexport function Vana(\n config: VanaConfigWithStorage,\n): VanaBrowserImpl & StorageRequiredMarker;\nexport function Vana(config: VanaConfig): VanaBrowserImpl;\n/**\n * Creates a new Vana SDK instance.\n *\n * @param config - The configuration for the Vana SDK\n * @returns A new Vana SDK instance\n */\nexport function Vana(config: VanaConfig) {\n return new VanaBrowserImpl(config);\n}\n\n/**\n * The type of a Vana SDK instance in browser environments.\n * Uses InstanceType to properly expose all public methods from the class hierarchy.\n *\n * @see {@link Vana}\n */\nexport type VanaInstance = InstanceType<typeof VanaBrowserImpl>;\n\n// Export as default export\nexport default Vana;\n\n// Re-export everything that was in index.ts (avoiding circular dependency)\n// Core class and factory\nexport { VanaCore, VanaCoreFactory } from \"./core\";\n\n// Types - modular exports\nexport type * from \"./types\";\n\n// Type guards and utilities\nexport {\n isReplicateAPIResponse,\n isAPIResponse,\n safeParseJSON,\n parseReplicateOutput,\n} from \"./types/external-apis\";\n\n// VanaContract is exported from abi to avoid circular dependencies\nexport type { VanaContract } from \"./generated/abi\";\n\n// Error classes\nexport * from \"./errors\";\n\n// Controllers\nexport { PermissionsController } from \"./controllers/permissions\";\nexport { DataController } from \"./controllers/data\";\nexport { ServerController } from \"./controllers/server\";\nexport { ProtocolController } from \"./controllers/protocol\";\nexport { SchemaController } from \"./controllers/schemas\";\nexport { OperationsController } from \"./controllers/operations\";\n\n// Contract controller\nexport * from \"./contracts/contractController\";\n\n// Utilities\nexport * from \"./utils/encryption\";\nexport * from \"./utils/formatters\";\nexport * from \"./utils/grantFiles\";\nexport * from \"./utils/grantValidation\";\nexport * from \"./utils/grants\";\nexport * from \"./utils/ipfs\";\nexport * from \"./utils/schemaValidation\";\nexport * from \"./utils/signatureCache\";\n// TransactionHandle removed - using POJOs instead\nexport type {\n Operation,\n TransactionResult,\n TransactionReceipt,\n PollingOptions,\n TransactionWaitOptions,\n} from \"./types/operations\";\n\n// Storage API\nexport * from \"./storage\";\n\n// Configuration\nexport { getContractAddress } from \"./config/addresses\";\nexport { chains } from \"./config/chains\";\nexport {\n type ServiceEndpoints,\n mainnetServices,\n mokshaServices,\n getServiceEndpoints,\n getDefaultPersonalServerUrl,\n} from \"./config/default-services\";\n\n// Chain configurations with subgraph URLs - explicit exports for better DX\nexport {\n vanaMainnet,\n mokshaTestnet,\n moksha,\n type VanaChainConfig,\n getChainConfig,\n getAllChains,\n} from \"./chains\";\nexport * from \"./chains\";\n\n// ABIs\nexport { getAbi } from \"./generated/abi\";\nexport type { VanaContract as VanaContractAbi } from \"./generated/abi\";\n\n// Generic utilities for extensibility\nexport {\n BaseController,\n RetryUtility,\n RateLimiter,\n MemoryCache,\n EventEmitter,\n MiddlewarePipeline,\n AsyncQueue,\n CircuitBreaker,\n} from \"./core/generics\";\n\n// Platform adapters - browser-safe exports\nexport { BrowserPlatformAdapter } from \"./platform/browser\";\nexport { BrowserECIESUint8Provider as BrowserECIESProvider } from \"./crypto/ecies/browser\";\nexport type { VanaPlatformAdapter } from \"./platform/interface\";\n\n// Browser-only platform adapter utilities\nexport {\n createBrowserPlatformAdapter,\n createPlatformAdapterSafe,\n} from \"./platform/browser-only\";\n\n// Note: createNodePlatformAdapter is not exported in browser bundle to avoid Node.js dependencies\n\n// NodePlatformAdapter is available through dynamic import to avoid bundling Node.js dependencies\n// Use createNodePlatformAdapter() for dynamic import\n\n// Platform utilities - browser-safe only\nexport {\n detectPlatform,\n isPlatformSupported,\n getPlatformCapabilities,\n} from \"./platform/utils\";\n\nexport { ApiClient } from \"./core/apiClient\";\n\nexport type {\n ApiClientConfig,\n HttpMethod,\n RequestOptions,\n} from \"./core/apiClient\";\n\n// Note: Default export is already handled above with the Vana factory function\n\n// For testing purposes, we also export the implementation class\nexport { VanaBrowserImpl };\n"],"mappings":"AAKA,SAAS,8BAA8B;AACvC,SAAS,gBAAgB;AAWzB,MAAM,wBAAwB,SAAS;AAAA,EACrC,YAAY,QAAoB;AAC9B,UAAM,IAAI,uBAAuB,GAAG,MAAM;AAAA,EAC5C;AACF;AAwGO,SAAS,KAAK,QAAoB;AACvC,SAAO,IAAI,gBAAgB,MAAM;AACnC;AAWA,IAAO,wBAAQ;AAIf,SAAS,YAAAA,WAAU,uBAAuB;AAM1C;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAMP,cAAc;AAGd,SAAS,6BAA6B;AACtC,SAAS,sBAAsB;AAC/B,SAAS,wBAAwB;AACjC,SAAS,0BAA0B;AACnC,SAAS,wBAAwB;AACjC,SAAS,4BAA4B;AAGrC,cAAc;AAGd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AAWd,cAAc;AAGd,SAAS,0BAA0B;AACnC,SAAS,cAAc;AACvB;AAAA,EAEE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAGP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EAEA;AAAA,EACA;AAAA,OACK;AACP,cAAc;AAGd,SAAS,cAAc;AAIvB;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAGP,SAAS,0BAAAC,+BAA8B;AACvC,SAAsC,iCAA4B;AAIlE;AAAA,EACE;AAAA,EACA;AAAA,OACK;AAQP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEP,SAAS,iBAAiB;","names":["VanaCore","BrowserPlatformAdapter"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"sourcesContent":["throw new Error(\n 'Import from \"@opendatalabs/vana-sdk/browser\" or \"@opendatalabs/vana-sdk/node\" instead of the root entry point.',\n);\n"],"mappings":";AAAA,MAAM,IAAI;AAAA,EACR;AACF;","names":[]}
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["/**\n * Main entry point for the Vana SDK.\n *\n * @remarks\n * This module prevents accidental imports from the root package path and\n * ensures developers explicitly choose the correct platform-specific build.\n * The SDK requires platform-specific implementations for cryptography,\n * storage, and networking operations.\n *\n * **DO NOT import from this module directly.**\n *\n * Instead, use one of the platform-specific entry points:\n * - `@opendatalabs/vana-sdk/browser` for web applications\n * - `@opendatalabs/vana-sdk/node` for Node.js applications\n *\n * @example\n * ```typescript\n * // ❌ WRONG - This will throw an error\n * import { something } from '@opendatalabs/vana-sdk';\n *\n * // ✅ CORRECT - For browser/web applications\n * import { BrowserPlatformAdapter } from '@opendatalabs/vana-sdk/browser';\n *\n * // ✅ CORRECT - For Node.js applications\n * import { NodePlatformAdapter } from '@opendatalabs/vana-sdk/node';\n * ```\n *\n * @throws {Error} Always throws an error directing to use platform-specific imports\n *\n * @category Core\n * @module index\n */\nthrow new Error(\n 'Import from \"@opendatalabs/vana-sdk/browser\" or \"@opendatalabs/vana-sdk/node\" instead of the root entry point.',\n);\n"],"mappings":";AAgCA,MAAM,IAAI;AAAA,EACR;AACF;","names":[]}
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"sourcesContent":["throw new Error(\n 'Import from \"@opendatalabs/vana-sdk/browser\" or \"@opendatalabs/vana-sdk/node\" instead of the root entry point.',\n);\n"],"mappings":"AAAA,MAAM,IAAI;AAAA,EACR;AACF;","names":[]}
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["/**\n * Main entry point for the Vana SDK.\n *\n * @remarks\n * This module prevents accidental imports from the root package path and\n * ensures developers explicitly choose the correct platform-specific build.\n * The SDK requires platform-specific implementations for cryptography,\n * storage, and networking operations.\n *\n * **DO NOT import from this module directly.**\n *\n * Instead, use one of the platform-specific entry points:\n * - `@opendatalabs/vana-sdk/browser` for web applications\n * - `@opendatalabs/vana-sdk/node` for Node.js applications\n *\n * @example\n * ```typescript\n * // ❌ WRONG - This will throw an error\n * import { something } from '@opendatalabs/vana-sdk';\n *\n * // ✅ CORRECT - For browser/web applications\n * import { BrowserPlatformAdapter } from '@opendatalabs/vana-sdk/browser';\n *\n * // ✅ CORRECT - For Node.js applications\n * import { NodePlatformAdapter } from '@opendatalabs/vana-sdk/node';\n * ```\n *\n * @throws {Error} Always throws an error directing to use platform-specific imports\n *\n * @category Core\n * @module index\n */\nthrow new Error(\n 'Import from \"@opendatalabs/vana-sdk/browser\" or \"@opendatalabs/vana-sdk/node\" instead of the root entry point.',\n);\n"],"mappings":"AAgCA,MAAM,IAAI;AAAA,EACR;AACF;","names":[]}
@@ -25,16 +25,21 @@ __export(index_node_exports, {
25
25
  BrowserPlatformAdapter: () => import_browser.BrowserPlatformAdapter,
26
26
  CircuitBreaker: () => import_generics.CircuitBreaker,
27
27
  DataController: () => import_data.DataController,
28
+ DistributedNonceManager: () => import_nonceManager.DistributedNonceManager,
28
29
  EventEmitter: () => import_generics.EventEmitter,
30
+ InMemoryNonceManager: () => import_inMemoryNonceManager.InMemoryNonceManager,
29
31
  MemoryCache: () => import_generics.MemoryCache,
30
32
  MiddlewarePipeline: () => import_generics.MiddlewarePipeline,
31
33
  NodePlatformAdapter: () => import_node2.NodePlatformAdapter,
34
+ OperationsController: () => import_operations.OperationsController,
32
35
  PermissionsController: () => import_permissions.PermissionsController,
33
36
  ProtocolController: () => import_protocol.ProtocolController,
34
37
  RateLimiter: () => import_generics.RateLimiter,
38
+ RedisAtomicStore: () => import_redisAtomicStore.RedisAtomicStore,
35
39
  RetryUtility: () => import_generics.RetryUtility,
36
40
  SchemaController: () => import_schemas.SchemaController,
37
41
  ServerController: () => import_server.ServerController,
42
+ SystemHealthChecker: () => import_health.SystemHealthChecker,
38
43
  Vana: () => Vana,
39
44
  VanaCore: () => import_core2.VanaCore,
40
45
  VanaCoreFactory: () => import_core2.VanaCoreFactory,
@@ -55,7 +60,6 @@ __export(index_node_exports, {
55
60
  getPlatformCapabilities: () => import_utils.getPlatformCapabilities,
56
61
  getServiceEndpoints: () => import_default_services.getServiceEndpoints,
57
62
  handleRelayerOperation: () => import_relayerHandler.handleRelayerOperation,
58
- handleRelayerRequest: () => import_handler.handleRelayerRequest,
59
63
  isAPIResponse: () => import_external_apis.isAPIResponse,
60
64
  isPlatformSupported: () => import_utils.isPlatformSupported,
61
65
  isReplicateAPIResponse: () => import_external_apis.isReplicateAPIResponse,
@@ -71,6 +75,10 @@ module.exports = __toCommonJS(index_node_exports);
71
75
  var import_node = require("./platform/node");
72
76
  var import_core = require("./core");
73
77
  var import_core2 = require("./core");
78
+ var import_nonceManager = require("./core/nonceManager");
79
+ var import_inMemoryNonceManager = require("./core/inMemoryNonceManager");
80
+ var import_health = require("./core/health");
81
+ var import_redisAtomicStore = require("./lib/redisAtomicStore");
74
82
  var import_external_apis = require("./types/external-apis");
75
83
  __reExport(index_node_exports, require("./errors"), module.exports);
76
84
  var import_permissions = require("./controllers/permissions");
@@ -78,6 +86,7 @@ var import_data = require("./controllers/data");
78
86
  var import_server = require("./controllers/server");
79
87
  var import_protocol = require("./controllers/protocol");
80
88
  var import_schemas = require("./controllers/schemas");
89
+ var import_operations = require("./controllers/operations");
81
90
  __reExport(index_node_exports, require("./contracts/contractController"), module.exports);
82
91
  __reExport(index_node_exports, require("./utils/encryption"), module.exports);
83
92
  __reExport(index_node_exports, require("./utils/formatters"), module.exports);
@@ -96,15 +105,18 @@ __reExport(index_node_exports, require("./chains"), module.exports);
96
105
  var import_abi = require("./generated/abi");
97
106
  var import_generics = require("./core/generics");
98
107
  var import_relayerHandler = require("./server/relayerHandler");
99
- var import_handler = require("./server/handler");
100
108
  var import_node2 = require("./platform/node");
101
109
  var import_browser = require("./platform/browser");
102
110
  var import_utils = require("./platform/utils");
103
111
  var import_browser_safe = require("./platform/browser-safe");
104
112
  var import_apiClient = require("./core/apiClient");
105
113
  class VanaNodeImpl extends import_core.VanaCore {
114
+ operationStore;
115
+ atomicStore;
106
116
  constructor(config) {
107
117
  super(new import_node.NodePlatformAdapter(), config);
118
+ this.operationStore = config.operationStore;
119
+ this.atomicStore = config.atomicStore;
108
120
  }
109
121
  }
110
122
  function Vana(config) {
@@ -119,16 +131,21 @@ var index_node_default = Vana;
119
131
  BrowserPlatformAdapter,
120
132
  CircuitBreaker,
121
133
  DataController,
134
+ DistributedNonceManager,
122
135
  EventEmitter,
136
+ InMemoryNonceManager,
123
137
  MemoryCache,
124
138
  MiddlewarePipeline,
125
139
  NodePlatformAdapter,
140
+ OperationsController,
126
141
  PermissionsController,
127
142
  ProtocolController,
128
143
  RateLimiter,
144
+ RedisAtomicStore,
129
145
  RetryUtility,
130
146
  SchemaController,
131
147
  ServerController,
148
+ SystemHealthChecker,
132
149
  Vana,
133
150
  VanaCore,
134
151
  VanaCoreFactory,
@@ -148,7 +165,6 @@ var index_node_default = Vana;
148
165
  getPlatformCapabilities,
149
166
  getServiceEndpoints,
150
167
  handleRelayerOperation,
151
- handleRelayerRequest,
152
168
  isAPIResponse,
153
169
  isPlatformSupported,
154
170
  isReplicateAPIResponse,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.node.ts"],"sourcesContent":["/**\n * @module Node\n * Node.js-specific implementation of the Vana SDK\n */\n\nimport { NodePlatformAdapter } from \"./platform/node\";\nimport { VanaCore } from \"./core\";\nimport type {\n VanaConfig,\n VanaConfigWithStorage,\n StorageRequiredMarker,\n} from \"./types\";\n\n/**\n * Internal implementation class for Node.js environments.\n * This class is not exported directly - use the Vana factory function instead.\n */\nclass VanaNodeImpl extends VanaCore {\n constructor(config: VanaConfig) {\n super(new NodePlatformAdapter(), config);\n }\n}\n\n/**\n * Creates a new Vana SDK instance configured for Node.js environments.\n *\n * @remarks\n * This is the primary entry point for Node.js applications using the Vana SDK. The function\n * automatically detects your configuration type and provides compile-time type safety:\n * - **With storage configured**: All methods including file upload/download are available\n * - **Without storage**: Storage-dependent methods throw runtime errors and are excluded from TypeScript\n *\n * The Node.js version provides enhanced capabilities including native file system access,\n * server-side cryptographic operations, and support for personal server deployment.\n * It includes all browser capabilities plus Node.js-specific optimizations and utilities.\n *\n * @param config - Configuration object containing wallet, storage, and relayer settings\n * @returns A fully configured Vana SDK instance for Node.js use\n * @throws {InvalidConfigurationError} When configuration parameters are invalid or missing\n * @example\n * ```typescript\n * import { Vana } from '@opendatalabs/vana-sdk/node';\n * import { createWalletClient, http } from 'viem';\n * import { privateKeyToAccount } from 'viem/accounts';\n * import { IPFSStorage, PinataStorage } from '@opendatalabs/vana-sdk/node';\n * import { mokshaTestnet } from '@opendatalabs/vana-sdk/node';\n *\n * // Server setup with private key\n * const account = privateKeyToAccount('0x...');\n * const walletClient = createWalletClient({\n * account,\n * chain: mokshaTestnet,\n * transport: http('https://rpc.moksha.vana.org')\n * });\n *\n * const vana = Vana({\n * walletClient,\n * storage: {\n * providers: {\n * ipfs: new IPFSStorage({\n * gateway: 'https://gateway.pinata.cloud',\n * timeout: 30000\n * }),\n * pinata: new PinataStorage({\n * apiKey: process.env.PINATA_KEY,\n * secretKey: process.env.PINATA_SECRET\n * })\n * },\n * defaultProvider: 'pinata'\n * },\n * relayerCallbacks: {\n * async submitPermissionGrant(typedData, signature) {\n * // Server-side relayer implementation\n * return await submitToCustomRelayer(typedData, signature);\n * }\n * }\n * });\n *\n * // Server operations\n * const uploadResult = await vana.data.upload({\n * content: await fs.readFile('./user-data.json'),\n * filename: 'user-data.json',\n * schemaId: 1\n * });\n *\n * // Personal server setup\n * await vana.server.setupPersonalServer({\n * serverUrl: 'https://my-server.example.com',\n * capabilities: ['data_processing', 'ml_inference']\n * });\n * ```\n *\n * @example\n * ```typescript\n * // CLI tool or script usage\n * const vana = Vana({\n * chainId: 14800, // Moksha testnet\n * account: privateKeyToAccount(process.env.PRIVATE_KEY),\n * rpcUrl: process.env.RPC_URL,\n * storage: {\n * providers: { ipfs: new IPFSStorage() },\n * defaultProvider: 'ipfs'\n * }\n * });\n *\n * // Batch operations for data processing\n * const userFiles = await vana.data.getUserFiles({\n * owner: process.env.USER_ADDRESS\n * });\n *\n * for (const file of userFiles) {\n * const decrypted = await vana.data.decryptFile(file);\n * // Process file data...\n * }\n * ```\n *\n * @example\n * ```typescript\n * // Express.js server integration\n * import express from 'express';\n * import { handleRelayerRequest } from '@opendatalabs/vana-sdk/node';\n *\n * const app = express();\n *\n * app.post('/api/relay/:operation', async (req, res) => {\n * try {\n * const result = await handleRelayerRequest(\n * req.params.operation,\n * req.body,\n * vana\n * );\n * res.json({ success: true, result });\n * } catch (error) {\n * res.status(500).json({ error: error.message });\n * }\n * });\n * ```\n *\n * @see {@link https://docs.vana.org/docs/sdk/server-setup | Server Setup Guide} for Node.js-specific features\n * @see {@link VanaCore} for the underlying implementation details\n * @category Core SDK\n */\nexport function Vana(\n config: VanaConfigWithStorage,\n): VanaNodeImpl & StorageRequiredMarker;\nexport function Vana(config: VanaConfig): VanaNodeImpl;\n/**\n * Creates a new Vana SDK instance.\n *\n * @param config - The configuration for the Vana SDK\n * @returns A new Vana SDK instance\n */\nexport function Vana(config: VanaConfig) {\n return new VanaNodeImpl(config);\n}\n\n/**\n * The type of a Vana SDK instance in Node.js environments.\n * Uses InstanceType to properly expose all public methods from the class hierarchy.\n *\n * @see {@link Vana}\n */\nexport type VanaInstance = InstanceType<typeof VanaNodeImpl>;\n\n// Export as default export\nexport default Vana;\n\n// Re-export everything that was in index.ts (avoiding circular dependency)\n// Core class and factory\nexport { VanaCore, VanaCoreFactory } from \"./core\";\n\n// Types - modular exports\nexport type * from \"./types\";\n\n// Type guards and utilities\nexport {\n isReplicateAPIResponse,\n isAPIResponse,\n safeParseJSON,\n parseReplicateOutput,\n} from \"./types/external-apis\";\n\n// VanaContract is exported from abi to avoid circular dependencies\nexport type { VanaContract } from \"./generated/abi\";\n\n// Error classes\nexport * from \"./errors\";\n\n// Controllers\nexport { PermissionsController } from \"./controllers/permissions\";\nexport { DataController } from \"./controllers/data\";\nexport { ServerController } from \"./controllers/server\";\nexport { ProtocolController } from \"./controllers/protocol\";\nexport { SchemaController } from \"./controllers/schemas\";\n\n// Contract controller\nexport * from \"./contracts/contractController\";\n\n// Utilities\nexport * from \"./utils/encryption\";\nexport * from \"./utils/formatters\";\nexport * from \"./utils/grantFiles\";\nexport * from \"./utils/grantValidation\";\nexport * from \"./utils/grants\";\nexport * from \"./utils/ipfs\";\nexport * from \"./utils/schemaValidation\";\nexport * from \"./utils/signatureCache\";\n\n// Storage API\nexport * from \"./storage\";\n\n// Configuration\nexport { getContractAddress } from \"./config/addresses\";\nexport { chains } from \"./config/chains\";\nexport {\n type ServiceEndpoints,\n mainnetServices,\n mokshaServices,\n getServiceEndpoints,\n getDefaultPersonalServerUrl,\n} from \"./config/default-services\";\n\n// Chain configurations with subgraph URLs - explicit exports for better DX\nexport {\n vanaMainnet,\n mokshaTestnet,\n moksha,\n type VanaChainConfig,\n getChainConfig,\n getAllChains,\n} from \"./chains\";\nexport * from \"./chains\";\n\n// ABIs\nexport { getAbi } from \"./generated/abi\";\nexport type { VanaContract as VanaContractAbi } from \"./generated/abi\";\n\n// Generic utilities for extensibility\nexport {\n BaseController,\n RetryUtility,\n RateLimiter,\n MemoryCache,\n EventEmitter,\n MiddlewarePipeline,\n AsyncQueue,\n CircuitBreaker,\n} from \"./core/generics\";\n\n// Server-side utilities\n// Primary export - unified handler with full type safety\nexport { handleRelayerOperation } from \"./server/relayerHandler\";\nexport type {\n UnifiedRelayerRequest,\n UnifiedRelayerResponse,\n} from \"./types/relayer\";\n\n// Legacy exports - DEPRECATED (will be removed in next major version)\nexport { handleRelayerRequest } from \"./server/handler\";\nexport type { RelayerRequestPayload } from \"./server/handler\";\n// TransactionHandle removed - using POJOs instead\nexport type {\n Operation,\n TransactionResult,\n TransactionReceipt,\n PollingOptions,\n TransactionWaitOptions,\n} from \"./types/operations\";\n\n// Platform adapters\nexport { NodePlatformAdapter } from \"./platform/node\";\nexport { BrowserPlatformAdapter } from \"./platform/browser\";\nexport type { VanaPlatformAdapter } from \"./platform/interface\";\n\n// Platform utilities\nexport {\n detectPlatform,\n createPlatformAdapter,\n createPlatformAdapterFor,\n isPlatformSupported,\n getPlatformCapabilities,\n} from \"./platform/utils\";\n\n// Browser-safe platform utilities\nexport {\n createNodePlatformAdapter,\n createBrowserPlatformAdapter,\n createPlatformAdapterSafe,\n} from \"./platform/browser-safe\";\n\nexport { ApiClient } from \"./core/apiClient\";\n\nexport type {\n ApiClientConfig,\n HttpMethod,\n RequestOptions,\n} from \"./core/apiClient\";\n\n// Note: Default export is already handled above with the Vana factory function\n// For testing purposes, we also export the implementation class\nexport { VanaNodeImpl };\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA,kBAAoC;AACpC,kBAAyB;AAmKzB,IAAAA,eAA0C;AAM1C,2BAKO;AAMP,+BAAc,qBA1Ld;AA6LA,yBAAsC;AACtC,kBAA+B;AAC/B,oBAAiC;AACjC,sBAAmC;AACnC,qBAAiC;AAGjC,+BAAc,2CApMd;AAuMA,+BAAc,+BAvMd;AAwMA,+BAAc,+BAxMd;AAyMA,+BAAc,+BAzMd;AA0MA,+BAAc,oCA1Md;AA2MA,+BAAc,2BA3Md;AA4MA,+BAAc,yBA5Md;AA6MA,+BAAc,qCA7Md;AA8MA,+BAAc,mCA9Md;AAiNA,+BAAc,sBAjNd;AAoNA,uBAAmC;AACnC,oBAAuB;AACvB,8BAMO;AAGP,IAAAC,iBAOO;AACP,+BAAc,qBAvOd;AA0OA,iBAAuB;AAIvB,sBASO;AAIP,4BAAuC;AAOvC,qBAAqC;AAYrC,IAAAC,eAAoC;AACpC,qBAAuC;AAIvC,mBAMO;AAGP,0BAIO;AAEP,uBAA0B;AAjR1B,MAAM,qBAAqB,qBAAS;AAAA,EAClC,YAAY,QAAoB;AAC9B,UAAM,IAAI,gCAAoB,GAAG,MAAM;AAAA,EACzC;AACF;AAmIO,SAAS,KAAK,QAAoB;AACvC,SAAO,IAAI,aAAa,MAAM;AAChC;AAWA,IAAO,qBAAQ;","names":["import_core","import_chains","import_node"]}
1
+ {"version":3,"sources":["../src/index.node.ts"],"sourcesContent":["/**\n * @module Node\n * Node.js-specific implementation of the Vana SDK\n */\n\nimport { NodePlatformAdapter } from \"./platform/node\";\nimport { VanaCore } from \"./core\";\nimport type {\n VanaConfig,\n VanaConfigWithStorage,\n StorageRequiredMarker,\n RelayerRequiredMarker,\n} from \"./types\";\nimport type {\n IOperationStore,\n IRelayerStateStore,\n} from \"./types/operationStore\";\nimport type { IAtomicStore } from \"./types/atomicStore\";\nimport type { PublicClient } from \"viem\";\n\n/**\n * Node.js-specific configuration interface with operation store support\n *\n * @category Configuration\n */\nexport type VanaNodeConfig = VanaConfig & {\n operationStore?: IOperationStore | IRelayerStateStore; // Can be either type\n atomicStore?: IAtomicStore;\n};\n\n/**\n * Node.js configuration with storage requirements\n *\n * @category Configuration\n */\nexport type VanaNodeConfigWithStorage = VanaConfigWithStorage & {\n operationStore?: IOperationStore | IRelayerStateStore; // Can be either type\n atomicStore?: IAtomicStore;\n};\n\n/**\n * Internal implementation class for Node.js environments.\n * This class is not exported directly - use the Vana factory function instead.\n */\nclass VanaNodeImpl extends VanaCore {\n override readonly operationStore?: IOperationStore | IRelayerStateStore;\n override readonly atomicStore?: IAtomicStore;\n\n constructor(config: VanaNodeConfig) {\n super(new NodePlatformAdapter(), config);\n this.operationStore = config.operationStore;\n this.atomicStore = config.atomicStore;\n }\n}\n\n/**\n * Creates a new Vana SDK instance configured for Node.js environments.\n *\n * @remarks\n * This is the primary entry point for Node.js applications using the Vana SDK. The function\n * automatically detects your configuration type and provides compile-time type safety:\n * - **With storage configured**: All methods including file upload/download are available\n * - **Without storage**: Storage-dependent methods throw runtime errors and are excluded from TypeScript\n *\n * The Node.js version provides enhanced capabilities including native file system access,\n * server-side cryptographic operations, and support for personal server deployment.\n * It includes all browser capabilities plus Node.js-specific optimizations and utilities.\n *\n * @param config - Configuration object containing wallet, storage, and relayer settings\n * @returns A fully configured Vana SDK instance for Node.js use\n * @throws {InvalidConfigurationError} When configuration parameters are invalid or missing\n * @example\n * ```typescript\n * import { Vana } from '@opendatalabs/vana-sdk/node';\n * import { createWalletClient, http } from 'viem';\n * import { privateKeyToAccount } from 'viem/accounts';\n * import { IPFSStorage, PinataStorage } from '@opendatalabs/vana-sdk/node';\n * import { mokshaTestnet } from '@opendatalabs/vana-sdk/node';\n *\n * // Server setup with private key\n * const account = privateKeyToAccount('0x...');\n * const walletClient = createWalletClient({\n * account,\n * chain: mokshaTestnet,\n * transport: http('https://rpc.moksha.vana.org')\n * });\n *\n * const vana = Vana({\n * walletClient,\n * storage: {\n * providers: {\n * ipfs: new IPFSStorage({\n * gateway: 'https://gateway.pinata.cloud',\n * timeout: 30000\n * }),\n * pinata: new PinataStorage({\n * apiKey: process.env.PINATA_KEY,\n * secretKey: process.env.PINATA_SECRET\n * })\n * },\n * defaultProvider: 'pinata'\n * },\n * relayerCallbacks: {\n * async submitPermissionGrant(typedData, signature) {\n * // Server-side relayer implementation\n * return await submitToCustomRelayer(typedData, signature);\n * }\n * }\n * });\n *\n * // Server operations\n * const uploadResult = await vana.data.upload({\n * content: await fs.readFile('./user-data.json'),\n * filename: 'user-data.json',\n * schemaId: 1\n * });\n *\n * // Personal server setup\n * await vana.server.setupPersonalServer({\n * serverUrl: 'https://my-server.example.com',\n * capabilities: ['data_processing', 'ml_inference']\n * });\n * ```\n *\n * @example\n * ```typescript\n * // CLI tool or script usage\n * const vana = Vana({\n * chainId: 14800, // Moksha testnet\n * account: privateKeyToAccount(process.env.PRIVATE_KEY),\n * rpcUrl: process.env.RPC_URL,\n * storage: {\n * providers: { ipfs: new IPFSStorage() },\n * defaultProvider: 'ipfs'\n * }\n * });\n *\n * // Batch operations for data processing\n * const userFiles = await vana.data.getUserFiles({\n * owner: process.env.USER_ADDRESS\n * });\n *\n * for (const file of userFiles) {\n * const decrypted = await vana.data.decryptFile(file);\n * // Process file data...\n * }\n * ```\n *\n * @example\n * ```typescript\n * // Express.js server integration\n * import express from 'express';\n * import { handleRelayerOperation } from '@opendatalabs/vana-sdk/node';\n *\n * const app = express();\n *\n * app.post('/api/relay', async (req, res) => {\n * try {\n * const result = await handleRelayerOperation(\n * vana,\n * req.body\n * );\n * res.json(result);\n * } catch (error) {\n * res.status(500).json({ error: error.message });\n * }\n * });\n * ```\n *\n * @see {@link https://docs.vana.org/docs/sdk/server-setup | Server Setup Guide} for Node.js-specific features\n * @see {@link VanaCore} for the underlying implementation details\n * @category Core SDK\n */\n// Overload 1: For configurations that include both storage and operation store\nexport function Vana(\n config: VanaNodeConfigWithStorage & { operationStore: IOperationStore },\n): VanaNodeImpl & StorageRequiredMarker & RelayerRequiredMarker;\n\n// Overload 2: For configurations that include only the operation store\nexport function Vana(\n config: VanaNodeConfig & { operationStore: IOperationStore },\n): VanaNodeImpl & RelayerRequiredMarker;\n\n// Overload 3: For configurations with storage but no operation store\nexport function Vana(\n config: VanaNodeConfigWithStorage,\n): VanaNodeImpl & StorageRequiredMarker;\n\n// Overload 4: Base configuration without special requirements\nexport function Vana(config: VanaNodeConfig): VanaNodeImpl;\n\n// Implementation\nexport function Vana(config: VanaNodeConfig) {\n return new VanaNodeImpl(config);\n}\n\n/**\n * The type of a Vana SDK instance in Node.js environments.\n * Uses InstanceType to properly expose all public methods from the class hierarchy.\n *\n * @see {@link Vana}\n */\nexport type VanaInstance = InstanceType<typeof VanaNodeImpl>;\n\n// Export as default export\nexport default Vana;\n\n// Re-export everything that was in index.ts (avoiding circular dependency)\n// Core class and factory\nexport { VanaCore, VanaCoreFactory } from \"./core\";\nexport { DistributedNonceManager } from \"./core/nonceManager\";\nexport { InMemoryNonceManager } from \"./core/inMemoryNonceManager\";\nexport { SystemHealthChecker } from \"./core/health\";\nexport type {\n SystemHealthCheckerConfig,\n HealthStatus,\n ComponentHealth,\n NonceHealth,\n QueueHealth,\n} from \"./core/health\";\n\n// Storage implementations\nexport { RedisAtomicStore } from \"./lib/redisAtomicStore\";\nexport type { RedisAtomicStoreConfig } from \"./lib/redisAtomicStore\";\n\n// Types - modular exports\nexport type * from \"./types\";\nexport type { IAtomicStore } from \"./types/atomicStore\";\nexport type {\n IOperationStore,\n StoredOperation,\n IRelayerStateStore,\n OperationState,\n} from \"./types/operationStore\";\n\n// Type guards and utilities\nexport {\n isReplicateAPIResponse,\n isAPIResponse,\n safeParseJSON,\n parseReplicateOutput,\n} from \"./types/external-apis\";\n\n// VanaContract is exported from abi to avoid circular dependencies\nexport type { VanaContract } from \"./generated/abi\";\n\n// Error classes\nexport * from \"./errors\";\n\n// Controllers\nexport { PermissionsController } from \"./controllers/permissions\";\nexport { DataController } from \"./controllers/data\";\nexport { ServerController } from \"./controllers/server\";\nexport { ProtocolController } from \"./controllers/protocol\";\nexport { SchemaController } from \"./controllers/schemas\";\nexport { OperationsController } from \"./controllers/operations\";\n\n// Contract controller\nexport * from \"./contracts/contractController\";\n\n// Utilities\nexport * from \"./utils/encryption\";\nexport * from \"./utils/formatters\";\nexport * from \"./utils/grantFiles\";\nexport * from \"./utils/grantValidation\";\nexport * from \"./utils/grants\";\nexport * from \"./utils/ipfs\";\nexport * from \"./utils/schemaValidation\";\nexport * from \"./utils/signatureCache\";\n\n// Storage API\nexport * from \"./storage\";\n\n// Configuration\nexport { getContractAddress } from \"./config/addresses\";\nexport { chains } from \"./config/chains\";\nexport {\n type ServiceEndpoints,\n mainnetServices,\n mokshaServices,\n getServiceEndpoints,\n getDefaultPersonalServerUrl,\n} from \"./config/default-services\";\n\n// Chain configurations with subgraph URLs - explicit exports for better DX\nexport {\n vanaMainnet,\n mokshaTestnet,\n moksha,\n type VanaChainConfig,\n getChainConfig,\n getAllChains,\n} from \"./chains\";\nexport * from \"./chains\";\n\n// ABIs\nexport { getAbi } from \"./generated/abi\";\nexport type { VanaContract as VanaContractAbi } from \"./generated/abi\";\n\n// Generic utilities for extensibility\nexport {\n BaseController,\n RetryUtility,\n RateLimiter,\n MemoryCache,\n EventEmitter,\n MiddlewarePipeline,\n AsyncQueue,\n CircuitBreaker,\n} from \"./core/generics\";\n\n// Server-side utilities\nexport {\n handleRelayerOperation,\n type RelayerOperationOptions,\n} from \"./server/relayerHandler\";\nexport type {\n UnifiedRelayerRequest,\n UnifiedRelayerResponse,\n} from \"./types/relayer\";\n// TransactionHandle removed - using POJOs instead\nexport type {\n Operation,\n TransactionResult,\n TransactionReceipt,\n PollingOptions,\n TransactionWaitOptions,\n} from \"./types/operations\";\n\n// Platform adapters\nexport { NodePlatformAdapter } from \"./platform/node\";\nexport { BrowserPlatformAdapter } from \"./platform/browser\";\nexport type { VanaPlatformAdapter } from \"./platform/interface\";\n\n// Platform utilities\nexport {\n detectPlatform,\n createPlatformAdapter,\n createPlatformAdapterFor,\n isPlatformSupported,\n getPlatformCapabilities,\n} from \"./platform/utils\";\n\n// Browser-safe platform utilities\nexport {\n createNodePlatformAdapter,\n createBrowserPlatformAdapter,\n createPlatformAdapterSafe,\n} from \"./platform/browser-safe\";\n\nexport { ApiClient } from \"./core/apiClient\";\n\nexport type {\n ApiClientConfig,\n HttpMethod,\n RequestOptions,\n} from \"./core/apiClient\";\n\n// Note: Default export is already handled above with the Vana factory function\n// For testing purposes, we also export the implementation class\nexport { VanaNodeImpl };\n\n// Server-specific interface for accessing stores\nexport interface VanaWithStores {\n readonly operationStore?: IOperationStore | IRelayerStateStore;\n readonly atomicStore?: IAtomicStore;\n readonly publicClient: PublicClient;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA,kBAAoC;AACpC,kBAAyB;AA2MzB,IAAAA,eAA0C;AAC1C,0BAAwC;AACxC,kCAAqC;AACrC,oBAAoC;AAUpC,8BAAiC;AAcjC,2BAKO;AAMP,+BAAc,qBAvPd;AA0PA,yBAAsC;AACtC,kBAA+B;AAC/B,oBAAiC;AACjC,sBAAmC;AACnC,qBAAiC;AACjC,wBAAqC;AAGrC,+BAAc,2CAlQd;AAqQA,+BAAc,+BArQd;AAsQA,+BAAc,+BAtQd;AAuQA,+BAAc,+BAvQd;AAwQA,+BAAc,oCAxQd;AAyQA,+BAAc,2BAzQd;AA0QA,+BAAc,yBA1Qd;AA2QA,+BAAc,qCA3Qd;AA4QA,+BAAc,mCA5Qd;AA+QA,+BAAc,sBA/Qd;AAkRA,uBAAmC;AACnC,oBAAuB;AACvB,8BAMO;AAGP,IAAAC,iBAOO;AACP,+BAAc,qBArSd;AAwSA,iBAAuB;AAIvB,sBASO;AAGP,4BAGO;AAeP,IAAAC,eAAoC;AACpC,qBAAuC;AAIvC,mBAMO;AAGP,0BAIO;AAEP,uBAA0B;AAlT1B,MAAM,qBAAqB,qBAAS;AAAA,EAChB;AAAA,EACA;AAAA,EAElB,YAAY,QAAwB;AAClC,UAAM,IAAI,gCAAoB,GAAG,MAAM;AACvC,SAAK,iBAAiB,OAAO;AAC7B,SAAK,cAAc,OAAO;AAAA,EAC5B;AACF;AA2IO,SAAS,KAAK,QAAwB;AAC3C,SAAO,IAAI,aAAa,MAAM;AAChC;AAWA,IAAO,qBAAQ;","names":["import_core","import_chains","import_node"]}
@@ -3,13 +3,36 @@
3
3
  * Node.js-specific implementation of the Vana SDK
4
4
  */
5
5
  import { VanaCore } from "./core";
6
- import type { VanaConfig, VanaConfigWithStorage, StorageRequiredMarker } from "./types";
6
+ import type { VanaConfig, VanaConfigWithStorage, StorageRequiredMarker, RelayerRequiredMarker } from "./types";
7
+ import type { IOperationStore, IRelayerStateStore } from "./types/operationStore";
8
+ import type { IAtomicStore } from "./types/atomicStore";
9
+ import type { PublicClient } from "viem";
10
+ /**
11
+ * Node.js-specific configuration interface with operation store support
12
+ *
13
+ * @category Configuration
14
+ */
15
+ export type VanaNodeConfig = VanaConfig & {
16
+ operationStore?: IOperationStore | IRelayerStateStore;
17
+ atomicStore?: IAtomicStore;
18
+ };
19
+ /**
20
+ * Node.js configuration with storage requirements
21
+ *
22
+ * @category Configuration
23
+ */
24
+ export type VanaNodeConfigWithStorage = VanaConfigWithStorage & {
25
+ operationStore?: IOperationStore | IRelayerStateStore;
26
+ atomicStore?: IAtomicStore;
27
+ };
7
28
  /**
8
29
  * Internal implementation class for Node.js environments.
9
30
  * This class is not exported directly - use the Vana factory function instead.
10
31
  */
11
32
  declare class VanaNodeImpl extends VanaCore {
12
- constructor(config: VanaConfig);
33
+ readonly operationStore?: IOperationStore | IRelayerStateStore;
34
+ readonly atomicStore?: IAtomicStore;
35
+ constructor(config: VanaNodeConfig);
13
36
  }
14
37
  /**
15
38
  * Creates a new Vana SDK instance configured for Node.js environments.
@@ -108,18 +131,17 @@ declare class VanaNodeImpl extends VanaCore {
108
131
  * ```typescript
109
132
  * // Express.js server integration
110
133
  * import express from 'express';
111
- * import { handleRelayerRequest } from '@opendatalabs/vana-sdk/node';
134
+ * import { handleRelayerOperation } from '@opendatalabs/vana-sdk/node';
112
135
  *
113
136
  * const app = express();
114
137
  *
115
- * app.post('/api/relay/:operation', async (req, res) => {
138
+ * app.post('/api/relay', async (req, res) => {
116
139
  * try {
117
- * const result = await handleRelayerRequest(
118
- * req.params.operation,
119
- * req.body,
120
- * vana
140
+ * const result = await handleRelayerOperation(
141
+ * vana,
142
+ * req.body
121
143
  * );
122
- * res.json({ success: true, result });
144
+ * res.json(result);
123
145
  * } catch (error) {
124
146
  * res.status(500).json({ error: error.message });
125
147
  * }
@@ -130,8 +152,14 @@ declare class VanaNodeImpl extends VanaCore {
130
152
  * @see {@link VanaCore} for the underlying implementation details
131
153
  * @category Core SDK
132
154
  */
133
- export declare function Vana(config: VanaConfigWithStorage): VanaNodeImpl & StorageRequiredMarker;
134
- export declare function Vana(config: VanaConfig): VanaNodeImpl;
155
+ export declare function Vana(config: VanaNodeConfigWithStorage & {
156
+ operationStore: IOperationStore;
157
+ }): VanaNodeImpl & StorageRequiredMarker & RelayerRequiredMarker;
158
+ export declare function Vana(config: VanaNodeConfig & {
159
+ operationStore: IOperationStore;
160
+ }): VanaNodeImpl & RelayerRequiredMarker;
161
+ export declare function Vana(config: VanaNodeConfigWithStorage): VanaNodeImpl & StorageRequiredMarker;
162
+ export declare function Vana(config: VanaNodeConfig): VanaNodeImpl;
135
163
  /**
136
164
  * The type of a Vana SDK instance in Node.js environments.
137
165
  * Uses InstanceType to properly expose all public methods from the class hierarchy.
@@ -141,7 +169,15 @@ export declare function Vana(config: VanaConfig): VanaNodeImpl;
141
169
  export type VanaInstance = InstanceType<typeof VanaNodeImpl>;
142
170
  export default Vana;
143
171
  export { VanaCore, VanaCoreFactory } from "./core";
172
+ export { DistributedNonceManager } from "./core/nonceManager";
173
+ export { InMemoryNonceManager } from "./core/inMemoryNonceManager";
174
+ export { SystemHealthChecker } from "./core/health";
175
+ export type { SystemHealthCheckerConfig, HealthStatus, ComponentHealth, NonceHealth, QueueHealth, } from "./core/health";
176
+ export { RedisAtomicStore } from "./lib/redisAtomicStore";
177
+ export type { RedisAtomicStoreConfig } from "./lib/redisAtomicStore";
144
178
  export type * from "./types";
179
+ export type { IAtomicStore } from "./types/atomicStore";
180
+ export type { IOperationStore, StoredOperation, IRelayerStateStore, OperationState, } from "./types/operationStore";
145
181
  export { isReplicateAPIResponse, isAPIResponse, safeParseJSON, parseReplicateOutput, } from "./types/external-apis";
146
182
  export type { VanaContract } from "./generated/abi";
147
183
  export * from "./errors";
@@ -150,6 +186,7 @@ export { DataController } from "./controllers/data";
150
186
  export { ServerController } from "./controllers/server";
151
187
  export { ProtocolController } from "./controllers/protocol";
152
188
  export { SchemaController } from "./controllers/schemas";
189
+ export { OperationsController } from "./controllers/operations";
153
190
  export * from "./contracts/contractController";
154
191
  export * from "./utils/encryption";
155
192
  export * from "./utils/formatters";
@@ -168,10 +205,8 @@ export * from "./chains";
168
205
  export { getAbi } from "./generated/abi";
169
206
  export type { VanaContract as VanaContractAbi } from "./generated/abi";
170
207
  export { BaseController, RetryUtility, RateLimiter, MemoryCache, EventEmitter, MiddlewarePipeline, AsyncQueue, CircuitBreaker, } from "./core/generics";
171
- export { handleRelayerOperation } from "./server/relayerHandler";
208
+ export { handleRelayerOperation, type RelayerOperationOptions, } from "./server/relayerHandler";
172
209
  export type { UnifiedRelayerRequest, UnifiedRelayerResponse, } from "./types/relayer";
173
- export { handleRelayerRequest } from "./server/handler";
174
- export type { RelayerRequestPayload } from "./server/handler";
175
210
  export type { Operation, TransactionResult, TransactionReceipt, PollingOptions, TransactionWaitOptions, } from "./types/operations";
176
211
  export { NodePlatformAdapter } from "./platform/node";
177
212
  export { BrowserPlatformAdapter } from "./platform/browser";
@@ -181,3 +216,8 @@ export { createNodePlatformAdapter, createBrowserPlatformAdapter, createPlatform
181
216
  export { ApiClient } from "./core/apiClient";
182
217
  export type { ApiClientConfig, HttpMethod, RequestOptions, } from "./core/apiClient";
183
218
  export { VanaNodeImpl };
219
+ export interface VanaWithStores {
220
+ readonly operationStore?: IOperationStore | IRelayerStateStore;
221
+ readonly atomicStore?: IAtomicStore;
222
+ readonly publicClient: PublicClient;
223
+ }
@@ -1,8 +1,12 @@
1
1
  import { NodePlatformAdapter } from "./platform/node";
2
2
  import { VanaCore } from "./core";
3
3
  class VanaNodeImpl extends VanaCore {
4
+ operationStore;
5
+ atomicStore;
4
6
  constructor(config) {
5
7
  super(new NodePlatformAdapter(), config);
8
+ this.operationStore = config.operationStore;
9
+ this.atomicStore = config.atomicStore;
6
10
  }
7
11
  }
8
12
  function Vana(config) {
@@ -10,6 +14,10 @@ function Vana(config) {
10
14
  }
11
15
  var index_node_default = Vana;
12
16
  import { VanaCore as VanaCore2, VanaCoreFactory } from "./core";
17
+ import { DistributedNonceManager } from "./core/nonceManager";
18
+ import { InMemoryNonceManager } from "./core/inMemoryNonceManager";
19
+ import { SystemHealthChecker } from "./core/health";
20
+ import { RedisAtomicStore } from "./lib/redisAtomicStore";
13
21
  import {
14
22
  isReplicateAPIResponse,
15
23
  isAPIResponse,
@@ -22,6 +30,7 @@ import { DataController } from "./controllers/data";
22
30
  import { ServerController } from "./controllers/server";
23
31
  import { ProtocolController } from "./controllers/protocol";
24
32
  import { SchemaController } from "./controllers/schemas";
33
+ import { OperationsController } from "./controllers/operations";
25
34
  export * from "./contracts/contractController";
26
35
  export * from "./utils/encryption";
27
36
  export * from "./utils/formatters";
@@ -59,8 +68,9 @@ import {
59
68
  AsyncQueue,
60
69
  CircuitBreaker
61
70
  } from "./core/generics";
62
- import { handleRelayerOperation } from "./server/relayerHandler";
63
- import { handleRelayerRequest } from "./server/handler";
71
+ import {
72
+ handleRelayerOperation
73
+ } from "./server/relayerHandler";
64
74
  import { NodePlatformAdapter as NodePlatformAdapter2 } from "./platform/node";
65
75
  import { BrowserPlatformAdapter } from "./platform/browser";
66
76
  import {
@@ -83,16 +93,21 @@ export {
83
93
  BrowserPlatformAdapter,
84
94
  CircuitBreaker,
85
95
  DataController,
96
+ DistributedNonceManager,
86
97
  EventEmitter,
98
+ InMemoryNonceManager,
87
99
  MemoryCache,
88
100
  MiddlewarePipeline,
89
101
  NodePlatformAdapter2 as NodePlatformAdapter,
102
+ OperationsController,
90
103
  PermissionsController,
91
104
  ProtocolController,
92
105
  RateLimiter,
106
+ RedisAtomicStore,
93
107
  RetryUtility,
94
108
  SchemaController,
95
109
  ServerController,
110
+ SystemHealthChecker,
96
111
  Vana,
97
112
  VanaCore2 as VanaCore,
98
113
  VanaCoreFactory,
@@ -113,7 +128,6 @@ export {
113
128
  getPlatformCapabilities,
114
129
  getServiceEndpoints,
115
130
  handleRelayerOperation,
116
- handleRelayerRequest,
117
131
  isAPIResponse,
118
132
  isPlatformSupported,
119
133
  isReplicateAPIResponse,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.node.ts"],"sourcesContent":["/**\n * @module Node\n * Node.js-specific implementation of the Vana SDK\n */\n\nimport { NodePlatformAdapter } from \"./platform/node\";\nimport { VanaCore } from \"./core\";\nimport type {\n VanaConfig,\n VanaConfigWithStorage,\n StorageRequiredMarker,\n} from \"./types\";\n\n/**\n * Internal implementation class for Node.js environments.\n * This class is not exported directly - use the Vana factory function instead.\n */\nclass VanaNodeImpl extends VanaCore {\n constructor(config: VanaConfig) {\n super(new NodePlatformAdapter(), config);\n }\n}\n\n/**\n * Creates a new Vana SDK instance configured for Node.js environments.\n *\n * @remarks\n * This is the primary entry point for Node.js applications using the Vana SDK. The function\n * automatically detects your configuration type and provides compile-time type safety:\n * - **With storage configured**: All methods including file upload/download are available\n * - **Without storage**: Storage-dependent methods throw runtime errors and are excluded from TypeScript\n *\n * The Node.js version provides enhanced capabilities including native file system access,\n * server-side cryptographic operations, and support for personal server deployment.\n * It includes all browser capabilities plus Node.js-specific optimizations and utilities.\n *\n * @param config - Configuration object containing wallet, storage, and relayer settings\n * @returns A fully configured Vana SDK instance for Node.js use\n * @throws {InvalidConfigurationError} When configuration parameters are invalid or missing\n * @example\n * ```typescript\n * import { Vana } from '@opendatalabs/vana-sdk/node';\n * import { createWalletClient, http } from 'viem';\n * import { privateKeyToAccount } from 'viem/accounts';\n * import { IPFSStorage, PinataStorage } from '@opendatalabs/vana-sdk/node';\n * import { mokshaTestnet } from '@opendatalabs/vana-sdk/node';\n *\n * // Server setup with private key\n * const account = privateKeyToAccount('0x...');\n * const walletClient = createWalletClient({\n * account,\n * chain: mokshaTestnet,\n * transport: http('https://rpc.moksha.vana.org')\n * });\n *\n * const vana = Vana({\n * walletClient,\n * storage: {\n * providers: {\n * ipfs: new IPFSStorage({\n * gateway: 'https://gateway.pinata.cloud',\n * timeout: 30000\n * }),\n * pinata: new PinataStorage({\n * apiKey: process.env.PINATA_KEY,\n * secretKey: process.env.PINATA_SECRET\n * })\n * },\n * defaultProvider: 'pinata'\n * },\n * relayerCallbacks: {\n * async submitPermissionGrant(typedData, signature) {\n * // Server-side relayer implementation\n * return await submitToCustomRelayer(typedData, signature);\n * }\n * }\n * });\n *\n * // Server operations\n * const uploadResult = await vana.data.upload({\n * content: await fs.readFile('./user-data.json'),\n * filename: 'user-data.json',\n * schemaId: 1\n * });\n *\n * // Personal server setup\n * await vana.server.setupPersonalServer({\n * serverUrl: 'https://my-server.example.com',\n * capabilities: ['data_processing', 'ml_inference']\n * });\n * ```\n *\n * @example\n * ```typescript\n * // CLI tool or script usage\n * const vana = Vana({\n * chainId: 14800, // Moksha testnet\n * account: privateKeyToAccount(process.env.PRIVATE_KEY),\n * rpcUrl: process.env.RPC_URL,\n * storage: {\n * providers: { ipfs: new IPFSStorage() },\n * defaultProvider: 'ipfs'\n * }\n * });\n *\n * // Batch operations for data processing\n * const userFiles = await vana.data.getUserFiles({\n * owner: process.env.USER_ADDRESS\n * });\n *\n * for (const file of userFiles) {\n * const decrypted = await vana.data.decryptFile(file);\n * // Process file data...\n * }\n * ```\n *\n * @example\n * ```typescript\n * // Express.js server integration\n * import express from 'express';\n * import { handleRelayerRequest } from '@opendatalabs/vana-sdk/node';\n *\n * const app = express();\n *\n * app.post('/api/relay/:operation', async (req, res) => {\n * try {\n * const result = await handleRelayerRequest(\n * req.params.operation,\n * req.body,\n * vana\n * );\n * res.json({ success: true, result });\n * } catch (error) {\n * res.status(500).json({ error: error.message });\n * }\n * });\n * ```\n *\n * @see {@link https://docs.vana.org/docs/sdk/server-setup | Server Setup Guide} for Node.js-specific features\n * @see {@link VanaCore} for the underlying implementation details\n * @category Core SDK\n */\nexport function Vana(\n config: VanaConfigWithStorage,\n): VanaNodeImpl & StorageRequiredMarker;\nexport function Vana(config: VanaConfig): VanaNodeImpl;\n/**\n * Creates a new Vana SDK instance.\n *\n * @param config - The configuration for the Vana SDK\n * @returns A new Vana SDK instance\n */\nexport function Vana(config: VanaConfig) {\n return new VanaNodeImpl(config);\n}\n\n/**\n * The type of a Vana SDK instance in Node.js environments.\n * Uses InstanceType to properly expose all public methods from the class hierarchy.\n *\n * @see {@link Vana}\n */\nexport type VanaInstance = InstanceType<typeof VanaNodeImpl>;\n\n// Export as default export\nexport default Vana;\n\n// Re-export everything that was in index.ts (avoiding circular dependency)\n// Core class and factory\nexport { VanaCore, VanaCoreFactory } from \"./core\";\n\n// Types - modular exports\nexport type * from \"./types\";\n\n// Type guards and utilities\nexport {\n isReplicateAPIResponse,\n isAPIResponse,\n safeParseJSON,\n parseReplicateOutput,\n} from \"./types/external-apis\";\n\n// VanaContract is exported from abi to avoid circular dependencies\nexport type { VanaContract } from \"./generated/abi\";\n\n// Error classes\nexport * from \"./errors\";\n\n// Controllers\nexport { PermissionsController } from \"./controllers/permissions\";\nexport { DataController } from \"./controllers/data\";\nexport { ServerController } from \"./controllers/server\";\nexport { ProtocolController } from \"./controllers/protocol\";\nexport { SchemaController } from \"./controllers/schemas\";\n\n// Contract controller\nexport * from \"./contracts/contractController\";\n\n// Utilities\nexport * from \"./utils/encryption\";\nexport * from \"./utils/formatters\";\nexport * from \"./utils/grantFiles\";\nexport * from \"./utils/grantValidation\";\nexport * from \"./utils/grants\";\nexport * from \"./utils/ipfs\";\nexport * from \"./utils/schemaValidation\";\nexport * from \"./utils/signatureCache\";\n\n// Storage API\nexport * from \"./storage\";\n\n// Configuration\nexport { getContractAddress } from \"./config/addresses\";\nexport { chains } from \"./config/chains\";\nexport {\n type ServiceEndpoints,\n mainnetServices,\n mokshaServices,\n getServiceEndpoints,\n getDefaultPersonalServerUrl,\n} from \"./config/default-services\";\n\n// Chain configurations with subgraph URLs - explicit exports for better DX\nexport {\n vanaMainnet,\n mokshaTestnet,\n moksha,\n type VanaChainConfig,\n getChainConfig,\n getAllChains,\n} from \"./chains\";\nexport * from \"./chains\";\n\n// ABIs\nexport { getAbi } from \"./generated/abi\";\nexport type { VanaContract as VanaContractAbi } from \"./generated/abi\";\n\n// Generic utilities for extensibility\nexport {\n BaseController,\n RetryUtility,\n RateLimiter,\n MemoryCache,\n EventEmitter,\n MiddlewarePipeline,\n AsyncQueue,\n CircuitBreaker,\n} from \"./core/generics\";\n\n// Server-side utilities\n// Primary export - unified handler with full type safety\nexport { handleRelayerOperation } from \"./server/relayerHandler\";\nexport type {\n UnifiedRelayerRequest,\n UnifiedRelayerResponse,\n} from \"./types/relayer\";\n\n// Legacy exports - DEPRECATED (will be removed in next major version)\nexport { handleRelayerRequest } from \"./server/handler\";\nexport type { RelayerRequestPayload } from \"./server/handler\";\n// TransactionHandle removed - using POJOs instead\nexport type {\n Operation,\n TransactionResult,\n TransactionReceipt,\n PollingOptions,\n TransactionWaitOptions,\n} from \"./types/operations\";\n\n// Platform adapters\nexport { NodePlatformAdapter } from \"./platform/node\";\nexport { BrowserPlatformAdapter } from \"./platform/browser\";\nexport type { VanaPlatformAdapter } from \"./platform/interface\";\n\n// Platform utilities\nexport {\n detectPlatform,\n createPlatformAdapter,\n createPlatformAdapterFor,\n isPlatformSupported,\n getPlatformCapabilities,\n} from \"./platform/utils\";\n\n// Browser-safe platform utilities\nexport {\n createNodePlatformAdapter,\n createBrowserPlatformAdapter,\n createPlatformAdapterSafe,\n} from \"./platform/browser-safe\";\n\nexport { ApiClient } from \"./core/apiClient\";\n\nexport type {\n ApiClientConfig,\n HttpMethod,\n RequestOptions,\n} from \"./core/apiClient\";\n\n// Note: Default export is already handled above with the Vana factory function\n// For testing purposes, we also export the implementation class\nexport { VanaNodeImpl };\n"],"mappings":"AAKA,SAAS,2BAA2B;AACpC,SAAS,gBAAgB;AAWzB,MAAM,qBAAqB,SAAS;AAAA,EAClC,YAAY,QAAoB;AAC9B,UAAM,IAAI,oBAAoB,GAAG,MAAM;AAAA,EACzC;AACF;AAmIO,SAAS,KAAK,QAAoB;AACvC,SAAO,IAAI,aAAa,MAAM;AAChC;AAWA,IAAO,qBAAQ;AAIf,SAAS,YAAAA,WAAU,uBAAuB;AAM1C;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAMP,cAAc;AAGd,SAAS,6BAA6B;AACtC,SAAS,sBAAsB;AAC/B,SAAS,wBAAwB;AACjC,SAAS,0BAA0B;AACnC,SAAS,wBAAwB;AAGjC,cAAc;AAGd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AAGd,cAAc;AAGd,SAAS,0BAA0B;AACnC,SAAS,cAAc;AACvB;AAAA,EAEE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAGP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EAEA;AAAA,EACA;AAAA,OACK;AACP,cAAc;AAGd,SAAS,cAAc;AAIvB;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAIP,SAAS,8BAA8B;AAOvC,SAAS,4BAA4B;AAYrC,SAAS,uBAAAC,4BAA2B;AACpC,SAAS,8BAA8B;AAIvC;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAGP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEP,SAAS,iBAAiB;","names":["VanaCore","NodePlatformAdapter"]}
1
+ {"version":3,"sources":["../src/index.node.ts"],"sourcesContent":["/**\n * @module Node\n * Node.js-specific implementation of the Vana SDK\n */\n\nimport { NodePlatformAdapter } from \"./platform/node\";\nimport { VanaCore } from \"./core\";\nimport type {\n VanaConfig,\n VanaConfigWithStorage,\n StorageRequiredMarker,\n RelayerRequiredMarker,\n} from \"./types\";\nimport type {\n IOperationStore,\n IRelayerStateStore,\n} from \"./types/operationStore\";\nimport type { IAtomicStore } from \"./types/atomicStore\";\nimport type { PublicClient } from \"viem\";\n\n/**\n * Node.js-specific configuration interface with operation store support\n *\n * @category Configuration\n */\nexport type VanaNodeConfig = VanaConfig & {\n operationStore?: IOperationStore | IRelayerStateStore; // Can be either type\n atomicStore?: IAtomicStore;\n};\n\n/**\n * Node.js configuration with storage requirements\n *\n * @category Configuration\n */\nexport type VanaNodeConfigWithStorage = VanaConfigWithStorage & {\n operationStore?: IOperationStore | IRelayerStateStore; // Can be either type\n atomicStore?: IAtomicStore;\n};\n\n/**\n * Internal implementation class for Node.js environments.\n * This class is not exported directly - use the Vana factory function instead.\n */\nclass VanaNodeImpl extends VanaCore {\n override readonly operationStore?: IOperationStore | IRelayerStateStore;\n override readonly atomicStore?: IAtomicStore;\n\n constructor(config: VanaNodeConfig) {\n super(new NodePlatformAdapter(), config);\n this.operationStore = config.operationStore;\n this.atomicStore = config.atomicStore;\n }\n}\n\n/**\n * Creates a new Vana SDK instance configured for Node.js environments.\n *\n * @remarks\n * This is the primary entry point for Node.js applications using the Vana SDK. The function\n * automatically detects your configuration type and provides compile-time type safety:\n * - **With storage configured**: All methods including file upload/download are available\n * - **Without storage**: Storage-dependent methods throw runtime errors and are excluded from TypeScript\n *\n * The Node.js version provides enhanced capabilities including native file system access,\n * server-side cryptographic operations, and support for personal server deployment.\n * It includes all browser capabilities plus Node.js-specific optimizations and utilities.\n *\n * @param config - Configuration object containing wallet, storage, and relayer settings\n * @returns A fully configured Vana SDK instance for Node.js use\n * @throws {InvalidConfigurationError} When configuration parameters are invalid or missing\n * @example\n * ```typescript\n * import { Vana } from '@opendatalabs/vana-sdk/node';\n * import { createWalletClient, http } from 'viem';\n * import { privateKeyToAccount } from 'viem/accounts';\n * import { IPFSStorage, PinataStorage } from '@opendatalabs/vana-sdk/node';\n * import { mokshaTestnet } from '@opendatalabs/vana-sdk/node';\n *\n * // Server setup with private key\n * const account = privateKeyToAccount('0x...');\n * const walletClient = createWalletClient({\n * account,\n * chain: mokshaTestnet,\n * transport: http('https://rpc.moksha.vana.org')\n * });\n *\n * const vana = Vana({\n * walletClient,\n * storage: {\n * providers: {\n * ipfs: new IPFSStorage({\n * gateway: 'https://gateway.pinata.cloud',\n * timeout: 30000\n * }),\n * pinata: new PinataStorage({\n * apiKey: process.env.PINATA_KEY,\n * secretKey: process.env.PINATA_SECRET\n * })\n * },\n * defaultProvider: 'pinata'\n * },\n * relayerCallbacks: {\n * async submitPermissionGrant(typedData, signature) {\n * // Server-side relayer implementation\n * return await submitToCustomRelayer(typedData, signature);\n * }\n * }\n * });\n *\n * // Server operations\n * const uploadResult = await vana.data.upload({\n * content: await fs.readFile('./user-data.json'),\n * filename: 'user-data.json',\n * schemaId: 1\n * });\n *\n * // Personal server setup\n * await vana.server.setupPersonalServer({\n * serverUrl: 'https://my-server.example.com',\n * capabilities: ['data_processing', 'ml_inference']\n * });\n * ```\n *\n * @example\n * ```typescript\n * // CLI tool or script usage\n * const vana = Vana({\n * chainId: 14800, // Moksha testnet\n * account: privateKeyToAccount(process.env.PRIVATE_KEY),\n * rpcUrl: process.env.RPC_URL,\n * storage: {\n * providers: { ipfs: new IPFSStorage() },\n * defaultProvider: 'ipfs'\n * }\n * });\n *\n * // Batch operations for data processing\n * const userFiles = await vana.data.getUserFiles({\n * owner: process.env.USER_ADDRESS\n * });\n *\n * for (const file of userFiles) {\n * const decrypted = await vana.data.decryptFile(file);\n * // Process file data...\n * }\n * ```\n *\n * @example\n * ```typescript\n * // Express.js server integration\n * import express from 'express';\n * import { handleRelayerOperation } from '@opendatalabs/vana-sdk/node';\n *\n * const app = express();\n *\n * app.post('/api/relay', async (req, res) => {\n * try {\n * const result = await handleRelayerOperation(\n * vana,\n * req.body\n * );\n * res.json(result);\n * } catch (error) {\n * res.status(500).json({ error: error.message });\n * }\n * });\n * ```\n *\n * @see {@link https://docs.vana.org/docs/sdk/server-setup | Server Setup Guide} for Node.js-specific features\n * @see {@link VanaCore} for the underlying implementation details\n * @category Core SDK\n */\n// Overload 1: For configurations that include both storage and operation store\nexport function Vana(\n config: VanaNodeConfigWithStorage & { operationStore: IOperationStore },\n): VanaNodeImpl & StorageRequiredMarker & RelayerRequiredMarker;\n\n// Overload 2: For configurations that include only the operation store\nexport function Vana(\n config: VanaNodeConfig & { operationStore: IOperationStore },\n): VanaNodeImpl & RelayerRequiredMarker;\n\n// Overload 3: For configurations with storage but no operation store\nexport function Vana(\n config: VanaNodeConfigWithStorage,\n): VanaNodeImpl & StorageRequiredMarker;\n\n// Overload 4: Base configuration without special requirements\nexport function Vana(config: VanaNodeConfig): VanaNodeImpl;\n\n// Implementation\nexport function Vana(config: VanaNodeConfig) {\n return new VanaNodeImpl(config);\n}\n\n/**\n * The type of a Vana SDK instance in Node.js environments.\n * Uses InstanceType to properly expose all public methods from the class hierarchy.\n *\n * @see {@link Vana}\n */\nexport type VanaInstance = InstanceType<typeof VanaNodeImpl>;\n\n// Export as default export\nexport default Vana;\n\n// Re-export everything that was in index.ts (avoiding circular dependency)\n// Core class and factory\nexport { VanaCore, VanaCoreFactory } from \"./core\";\nexport { DistributedNonceManager } from \"./core/nonceManager\";\nexport { InMemoryNonceManager } from \"./core/inMemoryNonceManager\";\nexport { SystemHealthChecker } from \"./core/health\";\nexport type {\n SystemHealthCheckerConfig,\n HealthStatus,\n ComponentHealth,\n NonceHealth,\n QueueHealth,\n} from \"./core/health\";\n\n// Storage implementations\nexport { RedisAtomicStore } from \"./lib/redisAtomicStore\";\nexport type { RedisAtomicStoreConfig } from \"./lib/redisAtomicStore\";\n\n// Types - modular exports\nexport type * from \"./types\";\nexport type { IAtomicStore } from \"./types/atomicStore\";\nexport type {\n IOperationStore,\n StoredOperation,\n IRelayerStateStore,\n OperationState,\n} from \"./types/operationStore\";\n\n// Type guards and utilities\nexport {\n isReplicateAPIResponse,\n isAPIResponse,\n safeParseJSON,\n parseReplicateOutput,\n} from \"./types/external-apis\";\n\n// VanaContract is exported from abi to avoid circular dependencies\nexport type { VanaContract } from \"./generated/abi\";\n\n// Error classes\nexport * from \"./errors\";\n\n// Controllers\nexport { PermissionsController } from \"./controllers/permissions\";\nexport { DataController } from \"./controllers/data\";\nexport { ServerController } from \"./controllers/server\";\nexport { ProtocolController } from \"./controllers/protocol\";\nexport { SchemaController } from \"./controllers/schemas\";\nexport { OperationsController } from \"./controllers/operations\";\n\n// Contract controller\nexport * from \"./contracts/contractController\";\n\n// Utilities\nexport * from \"./utils/encryption\";\nexport * from \"./utils/formatters\";\nexport * from \"./utils/grantFiles\";\nexport * from \"./utils/grantValidation\";\nexport * from \"./utils/grants\";\nexport * from \"./utils/ipfs\";\nexport * from \"./utils/schemaValidation\";\nexport * from \"./utils/signatureCache\";\n\n// Storage API\nexport * from \"./storage\";\n\n// Configuration\nexport { getContractAddress } from \"./config/addresses\";\nexport { chains } from \"./config/chains\";\nexport {\n type ServiceEndpoints,\n mainnetServices,\n mokshaServices,\n getServiceEndpoints,\n getDefaultPersonalServerUrl,\n} from \"./config/default-services\";\n\n// Chain configurations with subgraph URLs - explicit exports for better DX\nexport {\n vanaMainnet,\n mokshaTestnet,\n moksha,\n type VanaChainConfig,\n getChainConfig,\n getAllChains,\n} from \"./chains\";\nexport * from \"./chains\";\n\n// ABIs\nexport { getAbi } from \"./generated/abi\";\nexport type { VanaContract as VanaContractAbi } from \"./generated/abi\";\n\n// Generic utilities for extensibility\nexport {\n BaseController,\n RetryUtility,\n RateLimiter,\n MemoryCache,\n EventEmitter,\n MiddlewarePipeline,\n AsyncQueue,\n CircuitBreaker,\n} from \"./core/generics\";\n\n// Server-side utilities\nexport {\n handleRelayerOperation,\n type RelayerOperationOptions,\n} from \"./server/relayerHandler\";\nexport type {\n UnifiedRelayerRequest,\n UnifiedRelayerResponse,\n} from \"./types/relayer\";\n// TransactionHandle removed - using POJOs instead\nexport type {\n Operation,\n TransactionResult,\n TransactionReceipt,\n PollingOptions,\n TransactionWaitOptions,\n} from \"./types/operations\";\n\n// Platform adapters\nexport { NodePlatformAdapter } from \"./platform/node\";\nexport { BrowserPlatformAdapter } from \"./platform/browser\";\nexport type { VanaPlatformAdapter } from \"./platform/interface\";\n\n// Platform utilities\nexport {\n detectPlatform,\n createPlatformAdapter,\n createPlatformAdapterFor,\n isPlatformSupported,\n getPlatformCapabilities,\n} from \"./platform/utils\";\n\n// Browser-safe platform utilities\nexport {\n createNodePlatformAdapter,\n createBrowserPlatformAdapter,\n createPlatformAdapterSafe,\n} from \"./platform/browser-safe\";\n\nexport { ApiClient } from \"./core/apiClient\";\n\nexport type {\n ApiClientConfig,\n HttpMethod,\n RequestOptions,\n} from \"./core/apiClient\";\n\n// Note: Default export is already handled above with the Vana factory function\n// For testing purposes, we also export the implementation class\nexport { VanaNodeImpl };\n\n// Server-specific interface for accessing stores\nexport interface VanaWithStores {\n readonly operationStore?: IOperationStore | IRelayerStateStore;\n readonly atomicStore?: IAtomicStore;\n readonly publicClient: PublicClient;\n}\n"],"mappings":"AAKA,SAAS,2BAA2B;AACpC,SAAS,gBAAgB;AAsCzB,MAAM,qBAAqB,SAAS;AAAA,EAChB;AAAA,EACA;AAAA,EAElB,YAAY,QAAwB;AAClC,UAAM,IAAI,oBAAoB,GAAG,MAAM;AACvC,SAAK,iBAAiB,OAAO;AAC7B,SAAK,cAAc,OAAO;AAAA,EAC5B;AACF;AA2IO,SAAS,KAAK,QAAwB;AAC3C,SAAO,IAAI,aAAa,MAAM;AAChC;AAWA,IAAO,qBAAQ;AAIf,SAAS,YAAAA,WAAU,uBAAuB;AAC1C,SAAS,+BAA+B;AACxC,SAAS,4BAA4B;AACrC,SAAS,2BAA2B;AAUpC,SAAS,wBAAwB;AAcjC;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAMP,cAAc;AAGd,SAAS,6BAA6B;AACtC,SAAS,sBAAsB;AAC/B,SAAS,wBAAwB;AACjC,SAAS,0BAA0B;AACnC,SAAS,wBAAwB;AACjC,SAAS,4BAA4B;AAGrC,cAAc;AAGd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AAGd,cAAc;AAGd,SAAS,0BAA0B;AACnC,SAAS,cAAc;AACvB;AAAA,EAEE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAGP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EAEA;AAAA,EACA;AAAA,OACK;AACP,cAAc;AAGd,SAAS,cAAc;AAIvB;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAGP;AAAA,EACE;AAAA,OAEK;AAeP,SAAS,uBAAAC,4BAA2B;AACpC,SAAS,8BAA8B;AAIvC;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAGP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEP,SAAS,iBAAiB;","names":["VanaCore","NodePlatformAdapter"]}
@@ -0,0 +1 @@
1
+ export {};