@opendatalabs/vana-sdk 0.1.0-alpha.9b6ddbc → 0.1.0-alpha.9bbda27

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 (432) hide show
  1. package/README.md +67 -351
  2. package/dist/client/__tests__/enhancedResponse.test.d.ts +1 -0
  3. package/dist/client/enhancedResponse.cjs +164 -0
  4. package/dist/client/enhancedResponse.cjs.map +1 -0
  5. package/dist/client/enhancedResponse.d.ts +120 -0
  6. package/dist/client/enhancedResponse.js +138 -0
  7. package/dist/client/enhancedResponse.js.map +1 -0
  8. package/dist/config/contracts.config.cjs +403 -0
  9. package/dist/config/contracts.config.cjs.map +1 -0
  10. package/dist/config/contracts.config.d.ts +84 -0
  11. package/dist/config/contracts.config.js +378 -0
  12. package/dist/config/contracts.config.js.map +1 -0
  13. package/dist/contracts/contractController.cjs +1 -1
  14. package/dist/contracts/contractController.cjs.map +1 -1
  15. package/dist/contracts/contractController.js +1 -1
  16. package/dist/contracts/contractController.js.map +1 -1
  17. package/dist/controllers/__tests__/data-consistency-integration.test.d.ts +7 -0
  18. package/dist/controllers/__tests__/operations.processQueue.test.d.ts +1 -0
  19. package/dist/controllers/accessSettlement.cjs +289 -0
  20. package/dist/controllers/accessSettlement.cjs.map +1 -0
  21. package/dist/controllers/accessSettlement.d.ts +157 -0
  22. package/dist/controllers/accessSettlement.js +265 -0
  23. package/dist/controllers/accessSettlement.js.map +1 -0
  24. package/dist/controllers/accessSettlement.test.d.ts +1 -0
  25. package/dist/controllers/base.cjs +33 -0
  26. package/dist/controllers/base.cjs.map +1 -1
  27. package/dist/controllers/base.d.ts +10 -0
  28. package/dist/controllers/base.js +33 -0
  29. package/dist/controllers/base.js.map +1 -1
  30. package/dist/controllers/data.cjs +279 -160
  31. package/dist/controllers/data.cjs.map +1 -1
  32. package/dist/controllers/data.d.ts +34 -19
  33. package/dist/controllers/data.js +292 -163
  34. package/dist/controllers/data.js.map +1 -1
  35. package/dist/controllers/dataset.cjs +357 -0
  36. package/dist/controllers/dataset.cjs.map +1 -0
  37. package/dist/controllers/dataset.d.ts +178 -0
  38. package/dist/controllers/dataset.js +333 -0
  39. package/dist/controllers/dataset.js.map +1 -0
  40. package/dist/controllers/dataset.test.d.ts +1 -0
  41. package/dist/controllers/operations.cjs +430 -0
  42. package/dist/controllers/operations.cjs.map +1 -0
  43. package/dist/controllers/operations.d.ts +229 -0
  44. package/dist/controllers/operations.js +406 -0
  45. package/dist/controllers/operations.js.map +1 -0
  46. package/dist/controllers/permissions.cjs +606 -214
  47. package/dist/controllers/permissions.cjs.map +1 -1
  48. package/dist/controllers/permissions.d.ts +141 -34
  49. package/dist/controllers/permissions.js +606 -214
  50. package/dist/controllers/permissions.js.map +1 -1
  51. package/dist/controllers/runtimePermissions.cjs +285 -0
  52. package/dist/controllers/runtimePermissions.cjs.map +1 -0
  53. package/dist/controllers/runtimePermissions.d.ts +152 -0
  54. package/dist/controllers/runtimePermissions.js +264 -0
  55. package/dist/controllers/runtimePermissions.js.map +1 -0
  56. package/dist/controllers/runtimePermissions.test.d.ts +1 -0
  57. package/dist/controllers/schemas.cjs +82 -5
  58. package/dist/controllers/schemas.cjs.map +1 -1
  59. package/dist/controllers/schemas.d.ts +41 -0
  60. package/dist/controllers/schemas.js +82 -5
  61. package/dist/controllers/schemas.js.map +1 -1
  62. package/dist/controllers/server.cjs +184 -49
  63. package/dist/controllers/server.cjs.map +1 -1
  64. package/dist/controllers/server.d.ts +74 -13
  65. package/dist/controllers/server.js +184 -49
  66. package/dist/controllers/server.js.map +1 -1
  67. package/dist/core/__tests__/health.test.d.ts +1 -0
  68. package/dist/core/__tests__/inMemoryNonceManager.test.d.ts +1 -0
  69. package/dist/core/__tests__/nonceManager.test.d.ts +1 -0
  70. package/dist/core/__tests__/pollingManager.test.d.ts +4 -0
  71. package/dist/core/health.cjs +289 -0
  72. package/dist/core/health.cjs.map +1 -0
  73. package/dist/core/health.d.ts +143 -0
  74. package/dist/core/health.js +265 -0
  75. package/dist/core/health.js.map +1 -0
  76. package/dist/core/inMemoryNonceManager.cjs +138 -0
  77. package/dist/core/inMemoryNonceManager.cjs.map +1 -0
  78. package/dist/core/inMemoryNonceManager.d.ts +69 -0
  79. package/dist/core/inMemoryNonceManager.js +114 -0
  80. package/dist/core/inMemoryNonceManager.js.map +1 -0
  81. package/dist/core/nonceManager.cjs +304 -0
  82. package/dist/core/nonceManager.cjs.map +1 -0
  83. package/dist/core/nonceManager.d.ts +116 -0
  84. package/dist/core/nonceManager.js +280 -0
  85. package/dist/core/nonceManager.js.map +1 -0
  86. package/dist/core/pollingManager.cjs +292 -0
  87. package/dist/core/pollingManager.cjs.map +1 -0
  88. package/dist/core/pollingManager.d.ts +120 -0
  89. package/dist/core/pollingManager.js +268 -0
  90. package/dist/core/pollingManager.js.map +1 -0
  91. package/dist/core.cjs +67 -1
  92. package/dist/core.cjs.map +1 -1
  93. package/dist/core.d.ts +63 -3
  94. package/dist/core.js +67 -1
  95. package/dist/core.js.map +1 -1
  96. package/dist/crypto/ecies/__tests__/constants.test.d.ts +1 -1
  97. package/dist/crypto/ecies/__tests__/interface.test.d.ts +1 -0
  98. package/dist/crypto/ecies/__tests__/serialization.test.d.ts +8 -0
  99. package/dist/crypto/ecies/__tests__/utils.test.d.ts +1 -0
  100. package/dist/crypto/ecies/base.cjs +59 -23
  101. package/dist/crypto/ecies/base.cjs.map +1 -1
  102. package/dist/crypto/ecies/base.js +59 -23
  103. package/dist/crypto/ecies/base.js.map +1 -1
  104. package/dist/crypto/ecies/constants.cjs +2 -10
  105. package/dist/crypto/ecies/constants.cjs.map +1 -1
  106. package/dist/crypto/ecies/constants.d.ts +0 -9
  107. package/dist/crypto/ecies/constants.js +1 -8
  108. package/dist/crypto/ecies/constants.js.map +1 -1
  109. package/dist/crypto/ecies/index.cjs.map +1 -1
  110. package/dist/crypto/ecies/index.d.ts +10 -2
  111. package/dist/crypto/ecies/index.js.map +1 -1
  112. package/dist/crypto/ecies/interface.cjs +19 -2
  113. package/dist/crypto/ecies/interface.cjs.map +1 -1
  114. package/dist/crypto/ecies/interface.js +19 -2
  115. package/dist/crypto/ecies/interface.js.map +1 -1
  116. package/dist/errors.cjs +29 -0
  117. package/dist/errors.cjs.map +1 -1
  118. package/dist/errors.d.ts +64 -0
  119. package/dist/errors.js +28 -0
  120. package/dist/errors.js.map +1 -1
  121. package/dist/generated/abi/AccessSettlementImplementation.cjs +635 -0
  122. package/dist/generated/abi/AccessSettlementImplementation.cjs.map +1 -0
  123. package/dist/generated/abi/AccessSettlementImplementation.d.ts +468 -0
  124. package/dist/generated/abi/AccessSettlementImplementation.js +611 -0
  125. package/dist/generated/abi/AccessSettlementImplementation.js.map +1 -0
  126. package/dist/generated/abi/AttestationPolicyImplementation.cjs +614 -0
  127. package/dist/generated/abi/AttestationPolicyImplementation.cjs.map +1 -0
  128. package/dist/generated/abi/AttestationPolicyImplementation.d.ts +449 -0
  129. package/dist/generated/abi/AttestationPolicyImplementation.js +590 -0
  130. package/dist/generated/abi/AttestationPolicyImplementation.js.map +1 -0
  131. package/dist/generated/abi/ComputeEngineImplementation.cjs.map +1 -1
  132. package/dist/generated/abi/ComputeEngineImplementation.js.map +1 -1
  133. package/dist/generated/abi/{DLPTreasuryImplementation.cjs → ComputeEngineTreasuryImplementation.cjs} +16 -92
  134. package/dist/generated/abi/ComputeEngineTreasuryImplementation.cjs.map +1 -0
  135. package/dist/generated/abi/{DLPTreasuryImplementation.d.ts → ComputeEngineTreasuryImplementation.d.ts} +9 -67
  136. package/dist/generated/abi/{DLPTreasuryImplementation.js → ComputeEngineTreasuryImplementation.js} +12 -88
  137. package/dist/generated/abi/ComputeEngineTreasuryImplementation.js.map +1 -0
  138. package/dist/generated/abi/ComputeInstructionRegistryImplementation.cjs.map +1 -1
  139. package/dist/generated/abi/ComputeInstructionRegistryImplementation.js.map +1 -1
  140. package/dist/generated/abi/DATFactoryImplementation.cjs.map +1 -1
  141. package/dist/generated/abi/DATFactoryImplementation.js.map +1 -1
  142. package/dist/generated/abi/DATImplementation.cjs.map +1 -1
  143. package/dist/generated/abi/DATImplementation.js.map +1 -1
  144. package/dist/generated/abi/DATPausableImplementation.cjs.map +1 -1
  145. package/dist/generated/abi/DATPausableImplementation.js.map +1 -1
  146. package/dist/generated/abi/DATVotesImplementation.cjs.map +1 -1
  147. package/dist/generated/abi/DATVotesImplementation.js.map +1 -1
  148. package/dist/generated/abi/DLPPerformanceImplementation.cjs +42 -0
  149. package/dist/generated/abi/DLPPerformanceImplementation.cjs.map +1 -1
  150. package/dist/generated/abi/DLPPerformanceImplementation.d.ts +32 -0
  151. package/dist/generated/abi/DLPPerformanceImplementation.js +42 -0
  152. package/dist/generated/abi/DLPPerformanceImplementation.js.map +1 -1
  153. package/dist/generated/abi/DLPRegistryImplementation.cjs +5 -5
  154. package/dist/generated/abi/DLPRegistryImplementation.cjs.map +1 -1
  155. package/dist/generated/abi/DLPRegistryImplementation.d.ts +4 -4
  156. package/dist/generated/abi/DLPRegistryImplementation.js +5 -5
  157. package/dist/generated/abi/DLPRegistryImplementation.js.map +1 -1
  158. package/dist/generated/abi/DLPRegistryTreasuryImplementation.cjs.map +1 -1
  159. package/dist/generated/abi/DLPRegistryTreasuryImplementation.js.map +1 -1
  160. package/dist/generated/abi/DLPRewardDeployerImplementation.cjs +166 -2
  161. package/dist/generated/abi/DLPRewardDeployerImplementation.cjs.map +1 -1
  162. package/dist/generated/abi/DLPRewardDeployerImplementation.d.ts +129 -2
  163. package/dist/generated/abi/DLPRewardDeployerImplementation.js +166 -2
  164. package/dist/generated/abi/DLPRewardDeployerImplementation.js.map +1 -1
  165. package/dist/generated/abi/DLPRewardSwapImplementation.cjs.map +1 -1
  166. package/dist/generated/abi/DLPRewardSwapImplementation.js.map +1 -1
  167. package/dist/generated/abi/DataLiquidityPoolImplementation.cjs +282 -100
  168. package/dist/generated/abi/DataLiquidityPoolImplementation.cjs.map +1 -1
  169. package/dist/generated/abi/DataLiquidityPoolImplementation.d.ts +218 -79
  170. package/dist/generated/abi/DataLiquidityPoolImplementation.js +281 -99
  171. package/dist/generated/abi/DataLiquidityPoolImplementation.js.map +1 -1
  172. package/dist/generated/abi/DataPortabilityGranteesImplementation.cjs +167 -19
  173. package/dist/generated/abi/DataPortabilityGranteesImplementation.cjs.map +1 -1
  174. package/dist/generated/abi/DataPortabilityGranteesImplementation.d.ts +127 -14
  175. package/dist/generated/abi/DataPortabilityGranteesImplementation.js +167 -19
  176. package/dist/generated/abi/DataPortabilityGranteesImplementation.js.map +1 -1
  177. package/dist/generated/abi/DataPortabilityPermissionsImplementation.cjs +0 -19
  178. package/dist/generated/abi/DataPortabilityPermissionsImplementation.cjs.map +1 -1
  179. package/dist/generated/abi/DataPortabilityPermissionsImplementation.d.ts +0 -14
  180. package/dist/generated/abi/DataPortabilityPermissionsImplementation.js +0 -19
  181. package/dist/generated/abi/DataPortabilityPermissionsImplementation.js.map +1 -1
  182. package/dist/generated/abi/DataPortabilityServersImplementation.cjs +0 -19
  183. package/dist/generated/abi/DataPortabilityServersImplementation.cjs.map +1 -1
  184. package/dist/generated/abi/DataPortabilityServersImplementation.d.ts +0 -14
  185. package/dist/generated/abi/DataPortabilityServersImplementation.js +0 -19
  186. package/dist/generated/abi/DataPortabilityServersImplementation.js.map +1 -1
  187. package/dist/generated/abi/DataRefinerRegistryImplementation.cjs.map +1 -1
  188. package/dist/generated/abi/DataRefinerRegistryImplementation.js.map +1 -1
  189. package/dist/generated/abi/DataRegistryImplementation.cjs +0 -13
  190. package/dist/generated/abi/DataRegistryImplementation.cjs.map +1 -1
  191. package/dist/generated/abi/DataRegistryImplementation.d.ts +0 -10
  192. package/dist/generated/abi/DataRegistryImplementation.js +0 -13
  193. package/dist/generated/abi/DataRegistryImplementation.js.map +1 -1
  194. package/dist/generated/abi/DatasetRegistryImplementation.cjs +751 -0
  195. package/dist/generated/abi/DatasetRegistryImplementation.cjs.map +1 -0
  196. package/dist/generated/abi/DatasetRegistryImplementation.d.ts +557 -0
  197. package/dist/generated/abi/DatasetRegistryImplementation.js +727 -0
  198. package/dist/generated/abi/DatasetRegistryImplementation.js.map +1 -0
  199. package/dist/generated/abi/ProtocolConfigImplementation.cjs +578 -0
  200. package/dist/generated/abi/ProtocolConfigImplementation.cjs.map +1 -0
  201. package/dist/generated/abi/ProtocolConfigImplementation.d.ts +423 -0
  202. package/dist/generated/abi/ProtocolConfigImplementation.js +554 -0
  203. package/dist/generated/abi/ProtocolConfigImplementation.js.map +1 -0
  204. package/dist/generated/abi/QueryEngineImplementation.cjs.map +1 -1
  205. package/dist/generated/abi/QueryEngineImplementation.js.map +1 -1
  206. package/dist/generated/abi/SwapHelperImplementation.cjs +0 -43
  207. package/dist/generated/abi/SwapHelperImplementation.cjs.map +1 -1
  208. package/dist/generated/abi/SwapHelperImplementation.d.ts +0 -35
  209. package/dist/generated/abi/SwapHelperImplementation.js +0 -43
  210. package/dist/generated/abi/SwapHelperImplementation.js.map +1 -1
  211. package/dist/generated/abi/TeePoolDedicatedGpuImplementation.cjs.map +1 -1
  212. package/dist/generated/abi/TeePoolDedicatedGpuImplementation.js.map +1 -1
  213. package/dist/generated/abi/TeePoolDedicatedStandardImplementation.cjs.map +1 -1
  214. package/dist/generated/abi/TeePoolDedicatedStandardImplementation.js.map +1 -1
  215. package/dist/generated/abi/TeePoolEphemeralStandardImplementation.cjs.map +1 -1
  216. package/dist/generated/abi/TeePoolEphemeralStandardImplementation.js.map +1 -1
  217. package/dist/generated/abi/TeePoolPersistentGpuImplementation.cjs.map +1 -1
  218. package/dist/generated/abi/TeePoolPersistentGpuImplementation.js.map +1 -1
  219. package/dist/generated/abi/TeePoolPersistentStandardImplementation.cjs.map +1 -1
  220. package/dist/generated/abi/TeePoolPersistentStandardImplementation.js.map +1 -1
  221. package/dist/generated/abi/TeePoolPhalaImplementation.cjs.map +1 -1
  222. package/dist/generated/abi/TeePoolPhalaImplementation.js.map +1 -1
  223. package/dist/generated/abi/UniswapV3NonfungiblePositionManagerImplementation.cjs +1251 -0
  224. package/dist/generated/abi/UniswapV3NonfungiblePositionManagerImplementation.cjs.map +1 -0
  225. package/dist/generated/abi/UniswapV3NonfungiblePositionManagerImplementation.d.ts +948 -0
  226. package/dist/generated/abi/UniswapV3NonfungiblePositionManagerImplementation.js +1227 -0
  227. package/dist/generated/abi/UniswapV3NonfungiblePositionManagerImplementation.js.map +1 -0
  228. package/dist/generated/abi/UniswapV3QuoterV2Implementation.cjs +297 -0
  229. package/dist/generated/abi/UniswapV3QuoterV2Implementation.cjs.map +1 -0
  230. package/dist/generated/abi/UniswapV3QuoterV2Implementation.d.ts +206 -0
  231. package/dist/generated/abi/UniswapV3QuoterV2Implementation.js +273 -0
  232. package/dist/generated/abi/UniswapV3QuoterV2Implementation.js.map +1 -0
  233. package/dist/generated/abi/VanaEpochImplementation.cjs +195 -0
  234. package/dist/generated/abi/VanaEpochImplementation.cjs.map +1 -1
  235. package/dist/generated/abi/VanaEpochImplementation.d.ts +151 -0
  236. package/dist/generated/abi/VanaEpochImplementation.js +195 -0
  237. package/dist/generated/abi/VanaEpochImplementation.js.map +1 -1
  238. package/dist/generated/abi/VanaPoolEntityImplementation.cjs +22 -65
  239. package/dist/generated/abi/VanaPoolEntityImplementation.cjs.map +1 -1
  240. package/dist/generated/abi/VanaPoolEntityImplementation.d.ts +17 -51
  241. package/dist/generated/abi/VanaPoolEntityImplementation.js +22 -65
  242. package/dist/generated/abi/VanaPoolEntityImplementation.js.map +1 -1
  243. package/dist/generated/abi/VanaPoolStakingImplementation.cjs +113 -1
  244. package/dist/generated/abi/VanaPoolStakingImplementation.cjs.map +1 -1
  245. package/dist/generated/abi/VanaPoolStakingImplementation.d.ts +85 -1
  246. package/dist/generated/abi/VanaPoolStakingImplementation.js +113 -1
  247. package/dist/generated/abi/VanaPoolStakingImplementation.js.map +1 -1
  248. package/dist/generated/abi/VanaPoolTreasuryImplementation.cjs.map +1 -1
  249. package/dist/generated/abi/VanaPoolTreasuryImplementation.js.map +1 -1
  250. package/dist/generated/abi/VanaRuntimePermissionsImplementation.cjs +759 -0
  251. package/dist/generated/abi/VanaRuntimePermissionsImplementation.cjs.map +1 -0
  252. package/dist/generated/abi/VanaRuntimePermissionsImplementation.d.ts +563 -0
  253. package/dist/generated/abi/VanaRuntimePermissionsImplementation.js +735 -0
  254. package/dist/generated/abi/VanaRuntimePermissionsImplementation.js.map +1 -0
  255. package/dist/generated/abi/VanaRuntimeServersImplementation.cjs +820 -0
  256. package/dist/generated/abi/VanaRuntimeServersImplementation.cjs.map +1 -0
  257. package/dist/generated/abi/VanaRuntimeServersImplementation.d.ts +609 -0
  258. package/dist/generated/abi/VanaRuntimeServersImplementation.js +796 -0
  259. package/dist/generated/abi/VanaRuntimeServersImplementation.js.map +1 -0
  260. package/dist/generated/abi/VanaTreasuryImplementation.cjs +536 -0
  261. package/dist/generated/abi/VanaTreasuryImplementation.cjs.map +1 -0
  262. package/dist/generated/abi/VanaTreasuryImplementation.d.ts +393 -0
  263. package/dist/generated/abi/VanaTreasuryImplementation.js +512 -0
  264. package/dist/generated/abi/VanaTreasuryImplementation.js.map +1 -0
  265. package/dist/generated/abi/WVANAImplementation.cjs +339 -0
  266. package/dist/generated/abi/WVANAImplementation.cjs.map +1 -0
  267. package/dist/generated/abi/WVANAImplementation.d.ts +244 -0
  268. package/dist/generated/abi/WVANAImplementation.js +315 -0
  269. package/dist/generated/abi/WVANAImplementation.js.map +1 -0
  270. package/dist/generated/abi/index.cjs +79 -47
  271. package/dist/generated/abi/index.cjs.map +1 -1
  272. package/dist/generated/abi/index.d.ts +15783 -10449
  273. package/dist/generated/abi/index.js +65 -43
  274. package/dist/generated/abi/index.js.map +1 -1
  275. package/dist/{config → generated}/addresses.cjs +174 -75
  276. package/dist/generated/addresses.cjs.map +1 -0
  277. package/dist/{config → generated}/addresses.d.ts +174 -165
  278. package/dist/{config → generated}/addresses.js +174 -75
  279. package/dist/generated/addresses.js.map +1 -0
  280. package/dist/generated/event-types.cjs.map +1 -1
  281. package/dist/generated/event-types.d.ts +482 -399
  282. package/dist/generated/eventRegistry.cjs +2601 -724
  283. package/dist/generated/eventRegistry.cjs.map +1 -1
  284. package/dist/generated/eventRegistry.d.ts +2 -2
  285. package/dist/generated/eventRegistry.js +2601 -724
  286. package/dist/generated/eventRegistry.js.map +1 -1
  287. package/dist/generated/server/server-exports.cjs +22 -0
  288. package/dist/generated/server/server-exports.cjs.map +1 -1
  289. package/dist/generated/server/server-exports.d.ts +31 -11
  290. package/dist/generated/server/server-exports.js +17 -0
  291. package/dist/generated/server/server-exports.js.map +1 -1
  292. package/dist/generated/server/server.cjs.map +1 -1
  293. package/dist/generated/server/server.d.ts +771 -402
  294. package/dist/generated/subgraph.cjs +797 -32
  295. package/dist/generated/subgraph.cjs.map +1 -1
  296. package/dist/generated/subgraph.d.ts +135 -0
  297. package/dist/generated/subgraph.js +792 -32
  298. package/dist/generated/subgraph.js.map +1 -1
  299. package/dist/index.browser.d.ts +7 -1
  300. package/dist/index.browser.js +26 -1
  301. package/dist/index.browser.js.map +1 -1
  302. package/dist/index.node.cjs +47 -1
  303. package/dist/index.node.cjs.map +1 -1
  304. package/dist/index.node.d.ts +55 -6
  305. package/dist/index.node.js +43 -2
  306. package/dist/index.node.js.map +1 -1
  307. package/dist/lib/__tests__/redisAtomicStore.test.d.ts +1 -0
  308. package/dist/lib/redisAtomicStore.cjs +201 -0
  309. package/dist/lib/redisAtomicStore.cjs.map +1 -0
  310. package/dist/lib/redisAtomicStore.d.ts +120 -0
  311. package/dist/lib/redisAtomicStore.js +177 -0
  312. package/dist/lib/redisAtomicStore.js.map +1 -0
  313. package/dist/server/relayerHandler.cjs +313 -75
  314. package/dist/server/relayerHandler.cjs.map +1 -1
  315. package/dist/server/relayerHandler.d.ts +35 -2
  316. package/dist/server/relayerHandler.js +313 -75
  317. package/dist/server/relayerHandler.js.map +1 -1
  318. package/dist/storage/index.cjs +3 -0
  319. package/dist/storage/index.cjs.map +1 -1
  320. package/dist/storage/index.d.ts +1 -0
  321. package/dist/storage/index.js +2 -0
  322. package/dist/storage/index.js.map +1 -1
  323. package/dist/storage/providers/dropbox.cjs +237 -0
  324. package/dist/storage/providers/dropbox.cjs.map +1 -0
  325. package/dist/storage/providers/dropbox.d.ts +39 -0
  326. package/dist/storage/providers/dropbox.js +215 -0
  327. package/dist/storage/providers/dropbox.js.map +1 -0
  328. package/dist/storage/providers/dropbox.test.d.ts +1 -0
  329. package/dist/tests/data-upload-owner-validation.test.d.ts +1 -0
  330. package/dist/types/accessSettlement.cjs +17 -0
  331. package/dist/types/accessSettlement.cjs.map +1 -0
  332. package/dist/types/accessSettlement.d.ts +66 -0
  333. package/dist/types/accessSettlement.js +1 -0
  334. package/dist/types/accessSettlement.js.map +1 -0
  335. package/dist/types/atomicStore.cjs +31 -0
  336. package/dist/types/atomicStore.cjs.map +1 -0
  337. package/dist/types/atomicStore.d.ts +236 -0
  338. package/dist/types/atomicStore.js +7 -0
  339. package/dist/types/atomicStore.js.map +1 -0
  340. package/dist/types/config.cjs.map +1 -1
  341. package/dist/types/config.d.ts +32 -0
  342. package/dist/types/config.js.map +1 -1
  343. package/dist/types/controller-context.cjs.map +1 -1
  344. package/dist/types/controller-context.d.ts +4 -1
  345. package/dist/types/data.cjs.map +1 -1
  346. package/dist/types/data.d.ts +7 -4
  347. package/dist/types/dataset.cjs +17 -0
  348. package/dist/types/dataset.cjs.map +1 -0
  349. package/dist/types/dataset.d.ts +51 -0
  350. package/dist/types/dataset.js +1 -0
  351. package/dist/types/dataset.js.map +1 -0
  352. package/dist/types/generics.cjs.map +1 -1
  353. package/dist/types/generics.d.ts +1 -1
  354. package/dist/types/index.cjs.map +1 -1
  355. package/dist/types/index.d.ts +7 -2
  356. package/dist/types/index.js.map +1 -1
  357. package/dist/types/operationStore.cjs +17 -0
  358. package/dist/types/operationStore.cjs.map +1 -0
  359. package/dist/types/operationStore.d.ts +171 -0
  360. package/dist/types/operationStore.js +1 -0
  361. package/dist/types/operationStore.js.map +1 -0
  362. package/dist/types/operations.cjs +3 -15
  363. package/dist/types/operations.cjs.map +1 -1
  364. package/dist/types/operations.d.ts +8 -52
  365. package/dist/types/operations.js +2 -13
  366. package/dist/types/operations.js.map +1 -1
  367. package/dist/types/options.cjs +17 -0
  368. package/dist/types/options.cjs.map +1 -0
  369. package/dist/types/options.d.ts +308 -0
  370. package/dist/types/options.js +1 -0
  371. package/dist/types/options.js.map +1 -0
  372. package/dist/types/permissions.cjs.map +1 -1
  373. package/dist/types/permissions.d.ts +4 -0
  374. package/dist/types/relayer.cjs.map +1 -1
  375. package/dist/types/relayer.d.ts +55 -10
  376. package/dist/types/runtimePermissions.cjs +17 -0
  377. package/dist/types/runtimePermissions.cjs.map +1 -0
  378. package/dist/types/runtimePermissions.d.ts +122 -0
  379. package/dist/types/runtimePermissions.js +1 -0
  380. package/dist/types/runtimePermissions.js.map +1 -0
  381. package/dist/types/utils.cjs.map +1 -1
  382. package/dist/types/utils.d.ts +0 -49
  383. package/dist/utils/__tests__/chainQuery.test.d.ts +1 -0
  384. package/dist/utils/__tests__/subgraphConsistency.test.d.ts +4 -0
  385. package/dist/utils/__tests__/subgraphPagination.test.d.ts +4 -0
  386. package/dist/utils/blockchain/registry.cjs +1 -1
  387. package/dist/utils/blockchain/registry.cjs.map +1 -1
  388. package/dist/utils/blockchain/registry.js +1 -1
  389. package/dist/utils/blockchain/registry.js.map +1 -1
  390. package/dist/utils/chainQuery.cjs +107 -0
  391. package/dist/utils/chainQuery.cjs.map +1 -0
  392. package/dist/utils/chainQuery.d.ts +31 -0
  393. package/dist/utils/chainQuery.js +82 -0
  394. package/dist/utils/chainQuery.js.map +1 -0
  395. package/dist/utils/grantFiles.cjs +4 -1
  396. package/dist/utils/grantFiles.cjs.map +1 -1
  397. package/dist/utils/grantFiles.js +4 -1
  398. package/dist/utils/grantFiles.js.map +1 -1
  399. package/dist/utils/ipfs.cjs +1 -3
  400. package/dist/utils/ipfs.cjs.map +1 -1
  401. package/dist/utils/ipfs.d.ts +4 -4
  402. package/dist/utils/ipfs.js +1 -3
  403. package/dist/utils/ipfs.js.map +1 -1
  404. package/dist/utils/multicall.cjs +1 -1
  405. package/dist/utils/multicall.cjs.map +1 -1
  406. package/dist/utils/multicall.js +1 -1
  407. package/dist/utils/multicall.js.map +1 -1
  408. package/dist/utils/runtimeGrantFiles.cjs +84 -0
  409. package/dist/utils/runtimeGrantFiles.cjs.map +1 -0
  410. package/dist/utils/runtimeGrantFiles.d.ts +66 -0
  411. package/dist/utils/runtimeGrantFiles.js +58 -0
  412. package/dist/utils/runtimeGrantFiles.js.map +1 -0
  413. package/dist/utils/subgraphConsistency.cjs +184 -0
  414. package/dist/utils/subgraphConsistency.cjs.map +1 -0
  415. package/dist/utils/subgraphConsistency.d.ts +65 -0
  416. package/dist/utils/subgraphConsistency.js +155 -0
  417. package/dist/utils/subgraphConsistency.js.map +1 -0
  418. package/dist/utils/subgraphMetaCache.cjs +101 -0
  419. package/dist/utils/subgraphMetaCache.cjs.map +1 -0
  420. package/dist/utils/subgraphMetaCache.d.ts +56 -0
  421. package/dist/utils/subgraphMetaCache.js +76 -0
  422. package/dist/utils/subgraphMetaCache.js.map +1 -0
  423. package/dist/utils/subgraphPagination.cjs +104 -0
  424. package/dist/utils/subgraphPagination.cjs.map +1 -0
  425. package/dist/utils/subgraphPagination.d.ts +78 -0
  426. package/dist/utils/subgraphPagination.js +78 -0
  427. package/dist/utils/subgraphPagination.js.map +1 -0
  428. package/package.json +7 -2
  429. package/dist/config/addresses.cjs.map +0 -1
  430. package/dist/config/addresses.js.map +0 -1
  431. package/dist/generated/abi/DLPTreasuryImplementation.cjs.map +0 -1
  432. package/dist/generated/abi/DLPTreasuryImplementation.js.map +0 -1
@@ -0,0 +1,357 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var dataset_exports = {};
20
+ __export(dataset_exports, {
21
+ DatasetController: () => DatasetController
22
+ });
23
+ module.exports = __toCommonJS(dataset_exports);
24
+ var import_viem = require("viem");
25
+ var import_base = require("./base");
26
+ var import_addresses = require("../generated/addresses");
27
+ var import_abi = require("../generated/abi");
28
+ var import_transactionHelpers = require("../utils/transactionHelpers");
29
+ var import_errors = require("../errors");
30
+ var import_multicall = require("../utils/multicall");
31
+ class DatasetController extends import_base.BaseController {
32
+ /**
33
+ * Create a new dataset on the Vana network.
34
+ *
35
+ * @remarks
36
+ * Creates a dataset with the caller as the owner. The dataset will
37
+ * use the specified schema for file validation. Files can be added
38
+ * through the contribute workflow and must be accepted by the owner.
39
+ *
40
+ * @param schemaId - Schema ID defining file structure and validation
41
+ * @param options - Optional transaction parameters (gas, nonce, etc.)
42
+ * @returns Transaction result with DatasetCreated event
43
+ * @throws {ReadOnlyError} When no wallet is configured
44
+ * @throws {BlockchainError} When dataset creation fails
45
+ *
46
+ * @example
47
+ * ```typescript
48
+ * const tx = await vana.dataset.createDataset(42);
49
+ * const events = await vana.waitForTransactionEvents(tx);
50
+ * console.log(`Dataset ${events.datasetId} created`);
51
+ * ```
52
+ */
53
+ async createDataset(schemaId, options) {
54
+ this.assertWallet();
55
+ try {
56
+ const chainId = await this.context.publicClient.getChainId();
57
+ const address = (0, import_addresses.getContractAddress)(chainId, "DatasetRegistry");
58
+ const abi = (0, import_abi.getAbi)("DatasetRegistry");
59
+ const account = this.context.walletClient.account ?? this.context.userAddress;
60
+ if (!account) {
61
+ throw new Error("No account found");
62
+ }
63
+ const accountAddress = typeof account === "string" ? account : account.address;
64
+ const hash = await this.context.walletClient.writeContract({
65
+ address,
66
+ abi,
67
+ functionName: "createDataset",
68
+ args: [accountAddress, BigInt(schemaId)],
69
+ account,
70
+ chain: this.context.walletClient.chain,
71
+ ...this.spreadTransactionOptions(options)
72
+ });
73
+ return (0, import_transactionHelpers.tx)({
74
+ hash,
75
+ from: accountAddress,
76
+ contract: "DatasetRegistry",
77
+ fn: "createDataset"
78
+ });
79
+ } catch (error) {
80
+ throw new import_errors.BlockchainError(
81
+ `Failed to create dataset: ${error instanceof Error ? error.message : String(error)}`,
82
+ error
83
+ );
84
+ }
85
+ }
86
+ /**
87
+ * Accept a pending file into the dataset.
88
+ *
89
+ * @remarks
90
+ * Validates and accepts a contributor's file submission. Only the
91
+ * dataset owner can accept files. Once accepted, the file becomes
92
+ * part of the dataset and can be used in operations.
93
+ *
94
+ * @param datasetId - Dataset ID to accept the file into
95
+ * @param fileId - File ID to accept from pending queue
96
+ * @param options - Optional transaction parameters
97
+ * @returns Transaction result with FileAccepted event
98
+ * @throws {ReadOnlyError} When no wallet is configured
99
+ * @throws {BlockchainError} When file acceptance fails
100
+ *
101
+ * @example
102
+ * ```typescript
103
+ * const tx = await vana.dataset.acceptFile(1, 42);
104
+ * await vana.publicClient.waitForTransactionReceipt({ hash: tx.hash });
105
+ * console.log(`File ${fileId} accepted into dataset ${datasetId}`);
106
+ * ```
107
+ */
108
+ async acceptFile(datasetId, fileId, options) {
109
+ this.assertWallet();
110
+ try {
111
+ const chainId = await this.context.publicClient.getChainId();
112
+ const address = (0, import_addresses.getContractAddress)(chainId, "DatasetRegistry");
113
+ const abi = (0, import_abi.getAbi)("DatasetRegistry");
114
+ const account = this.context.walletClient.account ?? this.context.userAddress;
115
+ if (!account) {
116
+ throw new Error("No account found");
117
+ }
118
+ const accountAddress = typeof account === "string" ? account : account.address;
119
+ const hash = await this.context.walletClient.writeContract({
120
+ address,
121
+ abi,
122
+ functionName: "acceptFile",
123
+ args: [BigInt(datasetId), BigInt(fileId)],
124
+ account,
125
+ chain: this.context.walletClient.chain,
126
+ ...this.spreadTransactionOptions(options)
127
+ });
128
+ return (0, import_transactionHelpers.tx)({
129
+ hash,
130
+ from: accountAddress,
131
+ contract: "DatasetRegistry",
132
+ fn: "acceptFile"
133
+ });
134
+ } catch (error) {
135
+ throw new import_errors.BlockchainError(
136
+ `Failed to accept file: ${error instanceof Error ? error.message : String(error)}`,
137
+ error
138
+ );
139
+ }
140
+ }
141
+ /**
142
+ * Reject a pending file submission.
143
+ *
144
+ * @remarks
145
+ * Removes a file from the pending queue without accepting it.
146
+ * Only the dataset owner can reject files. The file remains in
147
+ * the DataRegistry but is not part of this dataset.
148
+ *
149
+ * @param datasetId - Dataset ID to reject the file from
150
+ * @param fileId - File ID to reject from pending queue
151
+ * @param options - Optional transaction parameters
152
+ * @returns Transaction result with FileRejected event
153
+ * @throws {ReadOnlyError} When no wallet is configured
154
+ * @throws {BlockchainError} When file rejection fails
155
+ *
156
+ * @example
157
+ * ```typescript
158
+ * const tx = await vana.dataset.rejectFile(1, 42);
159
+ * await vana.publicClient.waitForTransactionReceipt({ hash: tx.hash });
160
+ * ```
161
+ */
162
+ async rejectFile(datasetId, fileId, options) {
163
+ this.assertWallet();
164
+ try {
165
+ const chainId = await this.context.publicClient.getChainId();
166
+ const address = (0, import_addresses.getContractAddress)(chainId, "DatasetRegistry");
167
+ const abi = (0, import_abi.getAbi)("DatasetRegistry");
168
+ const account = this.context.walletClient.account ?? this.context.userAddress;
169
+ if (!account) {
170
+ throw new Error("No account found");
171
+ }
172
+ const accountAddress = typeof account === "string" ? account : account.address;
173
+ const hash = await this.context.walletClient.writeContract({
174
+ address,
175
+ abi,
176
+ functionName: "rejectFile",
177
+ args: [BigInt(datasetId), BigInt(fileId)],
178
+ account,
179
+ chain: this.context.walletClient.chain,
180
+ ...this.spreadTransactionOptions(options)
181
+ });
182
+ return (0, import_transactionHelpers.tx)({
183
+ hash,
184
+ from: accountAddress,
185
+ contract: "DatasetRegistry",
186
+ fn: "rejectFile"
187
+ });
188
+ } catch (error) {
189
+ throw new import_errors.BlockchainError(
190
+ `Failed to reject file: ${error instanceof Error ? error.message : String(error)}`,
191
+ error
192
+ );
193
+ }
194
+ }
195
+ /**
196
+ * Get dataset details including file lists.
197
+ *
198
+ * @remarks
199
+ * Retrieves complete dataset state including owner, pending files,
200
+ * accepted files, schema, and creation time. This is a read-only
201
+ * operation that doesn't require a wallet.
202
+ *
203
+ * @param datasetId - Dataset ID to query
204
+ * @returns Dataset object with all details
205
+ * @throws {BlockchainError} When dataset query fails
206
+ *
207
+ * @example
208
+ * ```typescript
209
+ * const dataset = await vana.dataset.getDataset(1);
210
+ * console.log(`Owner: ${dataset.owner}`);
211
+ * console.log(`Pending: ${dataset.pendingFileIds.length}`);
212
+ * console.log(`Accepted: ${dataset.fileIds.length}`);
213
+ * ```
214
+ */
215
+ async getDataset(datasetId) {
216
+ try {
217
+ const chainId = await this.context.publicClient.getChainId();
218
+ const address = (0, import_addresses.getContractAddress)(chainId, "DatasetRegistry");
219
+ const abi = (0, import_abi.getAbi)("DatasetRegistry");
220
+ const contract = (0, import_viem.getContract)({
221
+ address,
222
+ abi,
223
+ client: this.context.publicClient
224
+ });
225
+ const data = await contract.read.getDataset([BigInt(datasetId)]);
226
+ return {
227
+ owner: data.owner,
228
+ pendingFileIds: data.pendingFileIds.map(Number),
229
+ fileIds: data.fileIds.map(Number),
230
+ schemaId: Number(data.schemaId),
231
+ createdAt: Number(data.createdAt)
232
+ };
233
+ } catch (error) {
234
+ throw new import_errors.BlockchainError(
235
+ `Failed to get dataset: ${error instanceof Error ? error.message : String(error)}`,
236
+ error
237
+ );
238
+ }
239
+ }
240
+ /**
241
+ * Get all datasets owned by a specific address.
242
+ *
243
+ * @remarks
244
+ * Queries all datasets created by the specified owner. Uses the subgraph
245
+ * when available for efficient querying, with fallback to RPC via event
246
+ * logs and multicall for guaranteed real-time accuracy.
247
+ *
248
+ * This method will be optimized when datasets are added to the subgraph.
249
+ * Until then, it efficiently queries the chain using event logs to find
250
+ * dataset IDs, then uses multicall to batch-read dataset details.
251
+ *
252
+ * @param params - Query parameters
253
+ * @param params.owner - Owner address to query datasets for
254
+ * @param params.subgraphUrl - Optional custom subgraph URL
255
+ * @param options - Optional consistency and pagination settings
256
+ * @returns Array of datasets with their IDs
257
+ * @throws {BlockchainError} When dataset query fails
258
+ *
259
+ * @example
260
+ * ```typescript
261
+ * // Get all datasets for an address
262
+ * const datasets = await vana.dataset.getUserDatasets({
263
+ * owner: "0x123..."
264
+ * });
265
+ *
266
+ * // With pagination
267
+ * const page1 = await vana.dataset.getUserDatasets(
268
+ * { owner: "0x123..." },
269
+ * { limit: 10, offset: 0 }
270
+ * );
271
+ *
272
+ * // Require recent data from chain
273
+ * const recent = await vana.dataset.getUserDatasets(
274
+ * { owner: "0x123..." },
275
+ * { source: "chain" }
276
+ * );
277
+ * ```
278
+ */
279
+ async getUserDatasets(params, options) {
280
+ const { owner } = params;
281
+ const dataSource = "chain";
282
+ if (dataSource === "chain") {
283
+ try {
284
+ const chainId = await this.context.publicClient.getChainId();
285
+ const contractAddress = (0, import_addresses.getContractAddress)(chainId, "DatasetRegistry");
286
+ const abi = (0, import_abi.getAbi)("DatasetRegistry");
287
+ const BATCH_SIZE = 100;
288
+ const MAX_DATASET_ID = 1e5;
289
+ let currentId = 1;
290
+ const userDatasets = [];
291
+ let reachedEnd = false;
292
+ while (currentId <= MAX_DATASET_ID && !reachedEnd) {
293
+ const batchEnd = Math.min(currentId + BATCH_SIZE, MAX_DATASET_ID + 1);
294
+ const calls = [];
295
+ for (let id = currentId; id < batchEnd; id++) {
296
+ calls.push({
297
+ address: contractAddress,
298
+ abi,
299
+ functionName: "getDataset",
300
+ args: [BigInt(id)]
301
+ });
302
+ }
303
+ const results = await (0, import_multicall.gasAwareMulticall)(
304
+ this.context.publicClient,
305
+ {
306
+ contracts: calls,
307
+ allowFailure: true
308
+ },
309
+ {
310
+ allowFailure: true
311
+ }
312
+ );
313
+ for (let i = 0; i < results.length; i++) {
314
+ const result = results[i];
315
+ const datasetId = currentId + i;
316
+ if (result.status === "failure" || !result.result) {
317
+ reachedEnd = true;
318
+ break;
319
+ }
320
+ const data = result.result;
321
+ const datasetOwner = data.owner;
322
+ if (!datasetOwner || datasetOwner === "0x0000000000000000000000000000000000000000") {
323
+ reachedEnd = true;
324
+ break;
325
+ }
326
+ if (datasetOwner.toLowerCase() === owner.toLowerCase()) {
327
+ userDatasets.push({
328
+ id: datasetId,
329
+ owner: datasetOwner,
330
+ pendingFileIds: data.pendingFileIds.map(Number),
331
+ fileIds: data.fileIds.map(Number),
332
+ schemaId: Number(data.schemaId),
333
+ createdAt: Number(data.createdAt)
334
+ });
335
+ }
336
+ }
337
+ currentId = batchEnd;
338
+ }
339
+ const limit = options?.fetchAll ? userDatasets.length : options?.limit ?? 100;
340
+ const offset = options?.offset ?? 0;
341
+ userDatasets.sort((a, b) => b.createdAt - a.createdAt);
342
+ return userDatasets.slice(offset, offset + limit);
343
+ } catch (error) {
344
+ throw new import_errors.BlockchainError(
345
+ `Failed to get user datasets: ${error instanceof Error ? error.message : String(error)}`,
346
+ error
347
+ );
348
+ }
349
+ }
350
+ throw new Error("Subgraph dataset queries not yet implemented");
351
+ }
352
+ }
353
+ // Annotate the CommonJS export names for ESM import in node:
354
+ 0 && (module.exports = {
355
+ DatasetController
356
+ });
357
+ //# sourceMappingURL=dataset.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/controllers/dataset.ts"],"sourcesContent":["/**\n * Controller for managing datasets and contributor workflows.\n *\n * @remarks\n * Handles dataset creation, file acceptance/rejection, and querying\n * through the DatasetRegistry contract. Implements the Contributor\n * Workflow where files are submitted as pending and must be accepted\n * by the dataset owner.\n *\n * @category Controllers\n */\n\nimport { getContract, type Address } from \"viem\";\nimport { BaseController } from \"./base\";\nimport type {\n TransactionOptions,\n TransactionResult,\n} from \"../types/operations\";\nimport type { Dataset } from \"../types/dataset\";\nimport type { ConsistencyOptions, PaginationOptions } from \"../types/options\";\nimport { getContractAddress } from \"../generated/addresses\";\nimport { getAbi } from \"../generated/abi\";\nimport { tx } from \"../utils/transactionHelpers\";\nimport { BlockchainError } from \"../errors\";\nimport { gasAwareMulticall } from \"../utils/multicall\";\n\n/**\n * Dataset management controller implementing the Contributor Workflow.\n *\n * @remarks\n * Separates dataset management from raw file operations (DataController).\n * Handles the logical grouping of files and owner approval workflow.\n *\n * Key responsibilities:\n * - Creating new datasets with schema validation\n * - Managing pending file approval queue\n * - Accepting/rejecting contributor files\n * - Querying dataset state and file lists\n *\n * @example\n * ```typescript\n * // Create a dataset\n * const result = await vana.dataset.createDataset(schemaId);\n * const datasetId = await vana.waitForTransactionEvents(result);\n *\n * // Get pending files\n * const dataset = await vana.dataset.getDataset(datasetId);\n * console.log(`${dataset.pendingFileIds.length} files awaiting approval`);\n *\n * // Accept a file\n * await vana.dataset.acceptFile(datasetId, fileId);\n * ```\n */\nexport class DatasetController extends BaseController {\n /**\n * Create a new dataset on the Vana network.\n *\n * @remarks\n * Creates a dataset with the caller as the owner. The dataset will\n * use the specified schema for file validation. Files can be added\n * through the contribute workflow and must be accepted by the owner.\n *\n * @param schemaId - Schema ID defining file structure and validation\n * @param options - Optional transaction parameters (gas, nonce, etc.)\n * @returns Transaction result with DatasetCreated event\n * @throws {ReadOnlyError} When no wallet is configured\n * @throws {BlockchainError} When dataset creation fails\n *\n * @example\n * ```typescript\n * const tx = await vana.dataset.createDataset(42);\n * const events = await vana.waitForTransactionEvents(tx);\n * console.log(`Dataset ${events.datasetId} created`);\n * ```\n */\n async createDataset(\n schemaId: number,\n options?: TransactionOptions,\n ): Promise<TransactionResult<\"DatasetRegistry\", \"createDataset\">> {\n this.assertWallet();\n\n try {\n const chainId = await this.context.publicClient.getChainId();\n const address = getContractAddress(chainId, \"DatasetRegistry\");\n const abi = getAbi(\"DatasetRegistry\");\n const account =\n this.context.walletClient.account ?? this.context.userAddress;\n\n if (!account) {\n throw new Error(\"No account found\");\n }\n\n const accountAddress =\n typeof account === \"string\" ? account : account.address;\n\n const hash = await this.context.walletClient.writeContract({\n address,\n abi,\n functionName: \"createDataset\",\n args: [accountAddress, BigInt(schemaId)],\n account,\n chain: this.context.walletClient.chain,\n ...this.spreadTransactionOptions(options),\n });\n\n return tx({\n hash,\n from: accountAddress,\n contract: \"DatasetRegistry\",\n fn: \"createDataset\",\n });\n } catch (error) {\n throw new BlockchainError(\n `Failed to create dataset: ${error instanceof Error ? error.message : String(error)}`,\n error as Error,\n );\n }\n }\n\n /**\n * Accept a pending file into the dataset.\n *\n * @remarks\n * Validates and accepts a contributor's file submission. Only the\n * dataset owner can accept files. Once accepted, the file becomes\n * part of the dataset and can be used in operations.\n *\n * @param datasetId - Dataset ID to accept the file into\n * @param fileId - File ID to accept from pending queue\n * @param options - Optional transaction parameters\n * @returns Transaction result with FileAccepted event\n * @throws {ReadOnlyError} When no wallet is configured\n * @throws {BlockchainError} When file acceptance fails\n *\n * @example\n * ```typescript\n * const tx = await vana.dataset.acceptFile(1, 42);\n * await vana.publicClient.waitForTransactionReceipt({ hash: tx.hash });\n * console.log(`File ${fileId} accepted into dataset ${datasetId}`);\n * ```\n */\n async acceptFile(\n datasetId: number,\n fileId: number,\n options?: TransactionOptions,\n ): Promise<TransactionResult<\"DatasetRegistry\", \"acceptFile\">> {\n this.assertWallet();\n\n try {\n const chainId = await this.context.publicClient.getChainId();\n const address = getContractAddress(chainId, \"DatasetRegistry\");\n const abi = getAbi(\"DatasetRegistry\");\n const account =\n this.context.walletClient.account ?? this.context.userAddress;\n\n if (!account) {\n throw new Error(\"No account found\");\n }\n\n const accountAddress =\n typeof account === \"string\" ? account : account.address;\n\n const hash = await this.context.walletClient.writeContract({\n address,\n abi,\n functionName: \"acceptFile\",\n args: [BigInt(datasetId), BigInt(fileId)],\n account,\n chain: this.context.walletClient.chain,\n ...this.spreadTransactionOptions(options),\n });\n\n return tx({\n hash,\n from: accountAddress,\n contract: \"DatasetRegistry\",\n fn: \"acceptFile\",\n });\n } catch (error) {\n throw new BlockchainError(\n `Failed to accept file: ${error instanceof Error ? error.message : String(error)}`,\n error as Error,\n );\n }\n }\n\n /**\n * Reject a pending file submission.\n *\n * @remarks\n * Removes a file from the pending queue without accepting it.\n * Only the dataset owner can reject files. The file remains in\n * the DataRegistry but is not part of this dataset.\n *\n * @param datasetId - Dataset ID to reject the file from\n * @param fileId - File ID to reject from pending queue\n * @param options - Optional transaction parameters\n * @returns Transaction result with FileRejected event\n * @throws {ReadOnlyError} When no wallet is configured\n * @throws {BlockchainError} When file rejection fails\n *\n * @example\n * ```typescript\n * const tx = await vana.dataset.rejectFile(1, 42);\n * await vana.publicClient.waitForTransactionReceipt({ hash: tx.hash });\n * ```\n */\n async rejectFile(\n datasetId: number,\n fileId: number,\n options?: TransactionOptions,\n ): Promise<TransactionResult<\"DatasetRegistry\", \"rejectFile\">> {\n this.assertWallet();\n\n try {\n const chainId = await this.context.publicClient.getChainId();\n const address = getContractAddress(chainId, \"DatasetRegistry\");\n const abi = getAbi(\"DatasetRegistry\");\n const account =\n this.context.walletClient.account ?? this.context.userAddress;\n\n if (!account) {\n throw new Error(\"No account found\");\n }\n\n const accountAddress =\n typeof account === \"string\" ? account : account.address;\n\n const hash = await this.context.walletClient.writeContract({\n address,\n abi,\n functionName: \"rejectFile\",\n args: [BigInt(datasetId), BigInt(fileId)],\n account,\n chain: this.context.walletClient.chain,\n ...this.spreadTransactionOptions(options),\n });\n\n return tx({\n hash,\n from: accountAddress,\n contract: \"DatasetRegistry\",\n fn: \"rejectFile\",\n });\n } catch (error) {\n throw new BlockchainError(\n `Failed to reject file: ${error instanceof Error ? error.message : String(error)}`,\n error as Error,\n );\n }\n }\n\n /**\n * Get dataset details including file lists.\n *\n * @remarks\n * Retrieves complete dataset state including owner, pending files,\n * accepted files, schema, and creation time. This is a read-only\n * operation that doesn't require a wallet.\n *\n * @param datasetId - Dataset ID to query\n * @returns Dataset object with all details\n * @throws {BlockchainError} When dataset query fails\n *\n * @example\n * ```typescript\n * const dataset = await vana.dataset.getDataset(1);\n * console.log(`Owner: ${dataset.owner}`);\n * console.log(`Pending: ${dataset.pendingFileIds.length}`);\n * console.log(`Accepted: ${dataset.fileIds.length}`);\n * ```\n */\n async getDataset(datasetId: number): Promise<Dataset> {\n try {\n const chainId = await this.context.publicClient.getChainId();\n const address = getContractAddress(chainId, \"DatasetRegistry\");\n const abi = getAbi(\"DatasetRegistry\");\n\n const contract = getContract({\n address,\n abi,\n client: this.context.publicClient,\n });\n\n const data = (await contract.read.getDataset([BigInt(datasetId)])) as any;\n\n // Map contract struct to SDK type\n return {\n owner: data.owner as `0x${string}`,\n pendingFileIds: data.pendingFileIds.map(Number),\n fileIds: data.fileIds.map(Number),\n schemaId: Number(data.schemaId),\n createdAt: Number(data.createdAt),\n };\n } catch (error) {\n throw new BlockchainError(\n `Failed to get dataset: ${error instanceof Error ? error.message : String(error)}`,\n error as Error,\n );\n }\n }\n\n /**\n * Get all datasets owned by a specific address.\n *\n * @remarks\n * Queries all datasets created by the specified owner. Uses the subgraph\n * when available for efficient querying, with fallback to RPC via event\n * logs and multicall for guaranteed real-time accuracy.\n *\n * This method will be optimized when datasets are added to the subgraph.\n * Until then, it efficiently queries the chain using event logs to find\n * dataset IDs, then uses multicall to batch-read dataset details.\n *\n * @param params - Query parameters\n * @param params.owner - Owner address to query datasets for\n * @param params.subgraphUrl - Optional custom subgraph URL\n * @param options - Optional consistency and pagination settings\n * @returns Array of datasets with their IDs\n * @throws {BlockchainError} When dataset query fails\n *\n * @example\n * ```typescript\n * // Get all datasets for an address\n * const datasets = await vana.dataset.getUserDatasets({\n * owner: \"0x123...\"\n * });\n *\n * // With pagination\n * const page1 = await vana.dataset.getUserDatasets(\n * { owner: \"0x123...\" },\n * { limit: 10, offset: 0 }\n * );\n *\n * // Require recent data from chain\n * const recent = await vana.dataset.getUserDatasets(\n * { owner: \"0x123...\" },\n * { source: \"chain\" }\n * );\n * ```\n */\n async getUserDatasets(\n params: {\n owner: Address;\n subgraphUrl?: string;\n },\n options?: ConsistencyOptions & PaginationOptions,\n ): Promise<Array<Dataset & { id: number }>> {\n const { owner } = params;\n\n // Note: Subgraph doesn't have dataset entities yet, so we always use chain\n // This will be optimized when datasets are added to the subgraph schema\n const dataSource = \"chain\";\n\n // For now, we only support chain queries\n // Future: Add subgraph query path when datasets are in the subgraph\n if (dataSource === \"chain\") {\n try {\n const chainId = await this.context.publicClient.getChainId();\n const contractAddress = getContractAddress(chainId, \"DatasetRegistry\");\n const abi = getAbi(\"DatasetRegistry\");\n\n // Strategy: Batch-read datasets with multicall, starting from ID 1\n // Dataset IDs are sequential, so we stop as soon as we hit a non-existent dataset\n // This avoids eth_getLogs which has range limits\n\n const BATCH_SIZE = 100; // Read 100 datasets at a time\n const MAX_DATASET_ID = 100000; // Safety limit to prevent infinite loops\n\n let currentId = 1;\n const userDatasets: Array<Dataset & { id: number }> = [];\n let reachedEnd = false;\n\n while (currentId <= MAX_DATASET_ID && !reachedEnd) {\n // Build batch of calls\n const batchEnd = Math.min(currentId + BATCH_SIZE, MAX_DATASET_ID + 1);\n const calls = [];\n for (let id = currentId; id < batchEnd; id++) {\n calls.push({\n address: contractAddress,\n abi,\n functionName: \"getDataset\",\n args: [BigInt(id)],\n });\n }\n\n // Batch-read datasets using multicall\n const results = await gasAwareMulticall(\n this.context.publicClient,\n {\n contracts: calls,\n allowFailure: true,\n },\n {\n allowFailure: true,\n },\n );\n\n // Process results and filter by owner\n for (let i = 0; i < results.length; i++) {\n const result = results[i];\n const datasetId = currentId + i;\n\n // If we hit a non-existent dataset (failed call or zero owner), we've reached the end\n if (result.status === \"failure\" || !result.result) {\n reachedEnd = true;\n break;\n }\n\n const data = result.result as any;\n const datasetOwner = data.owner as `0x${string}`;\n\n // Check for zero address (non-existent dataset)\n if (\n !datasetOwner ||\n datasetOwner === \"0x0000000000000000000000000000000000000000\"\n ) {\n reachedEnd = true;\n break;\n }\n\n // If this dataset is owned by the user, add it\n if (datasetOwner.toLowerCase() === owner.toLowerCase()) {\n userDatasets.push({\n id: datasetId,\n owner: datasetOwner,\n pendingFileIds: data.pendingFileIds.map(Number),\n fileIds: data.fileIds.map(Number),\n schemaId: Number(data.schemaId),\n createdAt: Number(data.createdAt),\n });\n }\n }\n\n currentId = batchEnd;\n }\n\n // Apply pagination to results\n const limit = options?.fetchAll\n ? userDatasets.length\n : (options?.limit ?? 100);\n const offset = options?.offset ?? 0;\n\n // Sort by creation time descending (most recent first)\n userDatasets.sort((a, b) => b.createdAt - a.createdAt);\n\n return userDatasets.slice(offset, offset + limit);\n } catch (error) {\n throw new BlockchainError(\n `Failed to get user datasets: ${error instanceof Error ? error.message : String(error)}`,\n error as Error,\n );\n }\n }\n\n // Future: When subgraph has dataset entities, implement this path\n // For now, this code path is unreachable but prepared for future enhancement\n throw new Error(\"Subgraph dataset queries not yet implemented\");\n }\n}\n"],"mappings":"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","names":[]}
@@ -0,0 +1,178 @@
1
+ /**
2
+ * Controller for managing datasets and contributor workflows.
3
+ *
4
+ * @remarks
5
+ * Handles dataset creation, file acceptance/rejection, and querying
6
+ * through the DatasetRegistry contract. Implements the Contributor
7
+ * Workflow where files are submitted as pending and must be accepted
8
+ * by the dataset owner.
9
+ *
10
+ * @category Controllers
11
+ */
12
+ import { type Address } from "viem";
13
+ import { BaseController } from "./base";
14
+ import type { TransactionOptions, TransactionResult } from "../types/operations";
15
+ import type { Dataset } from "../types/dataset";
16
+ import type { ConsistencyOptions, PaginationOptions } from "../types/options";
17
+ /**
18
+ * Dataset management controller implementing the Contributor Workflow.
19
+ *
20
+ * @remarks
21
+ * Separates dataset management from raw file operations (DataController).
22
+ * Handles the logical grouping of files and owner approval workflow.
23
+ *
24
+ * Key responsibilities:
25
+ * - Creating new datasets with schema validation
26
+ * - Managing pending file approval queue
27
+ * - Accepting/rejecting contributor files
28
+ * - Querying dataset state and file lists
29
+ *
30
+ * @example
31
+ * ```typescript
32
+ * // Create a dataset
33
+ * const result = await vana.dataset.createDataset(schemaId);
34
+ * const datasetId = await vana.waitForTransactionEvents(result);
35
+ *
36
+ * // Get pending files
37
+ * const dataset = await vana.dataset.getDataset(datasetId);
38
+ * console.log(`${dataset.pendingFileIds.length} files awaiting approval`);
39
+ *
40
+ * // Accept a file
41
+ * await vana.dataset.acceptFile(datasetId, fileId);
42
+ * ```
43
+ */
44
+ export declare class DatasetController extends BaseController {
45
+ /**
46
+ * Create a new dataset on the Vana network.
47
+ *
48
+ * @remarks
49
+ * Creates a dataset with the caller as the owner. The dataset will
50
+ * use the specified schema for file validation. Files can be added
51
+ * through the contribute workflow and must be accepted by the owner.
52
+ *
53
+ * @param schemaId - Schema ID defining file structure and validation
54
+ * @param options - Optional transaction parameters (gas, nonce, etc.)
55
+ * @returns Transaction result with DatasetCreated event
56
+ * @throws {ReadOnlyError} When no wallet is configured
57
+ * @throws {BlockchainError} When dataset creation fails
58
+ *
59
+ * @example
60
+ * ```typescript
61
+ * const tx = await vana.dataset.createDataset(42);
62
+ * const events = await vana.waitForTransactionEvents(tx);
63
+ * console.log(`Dataset ${events.datasetId} created`);
64
+ * ```
65
+ */
66
+ createDataset(schemaId: number, options?: TransactionOptions): Promise<TransactionResult<"DatasetRegistry", "createDataset">>;
67
+ /**
68
+ * Accept a pending file into the dataset.
69
+ *
70
+ * @remarks
71
+ * Validates and accepts a contributor's file submission. Only the
72
+ * dataset owner can accept files. Once accepted, the file becomes
73
+ * part of the dataset and can be used in operations.
74
+ *
75
+ * @param datasetId - Dataset ID to accept the file into
76
+ * @param fileId - File ID to accept from pending queue
77
+ * @param options - Optional transaction parameters
78
+ * @returns Transaction result with FileAccepted event
79
+ * @throws {ReadOnlyError} When no wallet is configured
80
+ * @throws {BlockchainError} When file acceptance fails
81
+ *
82
+ * @example
83
+ * ```typescript
84
+ * const tx = await vana.dataset.acceptFile(1, 42);
85
+ * await vana.publicClient.waitForTransactionReceipt({ hash: tx.hash });
86
+ * console.log(`File ${fileId} accepted into dataset ${datasetId}`);
87
+ * ```
88
+ */
89
+ acceptFile(datasetId: number, fileId: number, options?: TransactionOptions): Promise<TransactionResult<"DatasetRegistry", "acceptFile">>;
90
+ /**
91
+ * Reject a pending file submission.
92
+ *
93
+ * @remarks
94
+ * Removes a file from the pending queue without accepting it.
95
+ * Only the dataset owner can reject files. The file remains in
96
+ * the DataRegistry but is not part of this dataset.
97
+ *
98
+ * @param datasetId - Dataset ID to reject the file from
99
+ * @param fileId - File ID to reject from pending queue
100
+ * @param options - Optional transaction parameters
101
+ * @returns Transaction result with FileRejected event
102
+ * @throws {ReadOnlyError} When no wallet is configured
103
+ * @throws {BlockchainError} When file rejection fails
104
+ *
105
+ * @example
106
+ * ```typescript
107
+ * const tx = await vana.dataset.rejectFile(1, 42);
108
+ * await vana.publicClient.waitForTransactionReceipt({ hash: tx.hash });
109
+ * ```
110
+ */
111
+ rejectFile(datasetId: number, fileId: number, options?: TransactionOptions): Promise<TransactionResult<"DatasetRegistry", "rejectFile">>;
112
+ /**
113
+ * Get dataset details including file lists.
114
+ *
115
+ * @remarks
116
+ * Retrieves complete dataset state including owner, pending files,
117
+ * accepted files, schema, and creation time. This is a read-only
118
+ * operation that doesn't require a wallet.
119
+ *
120
+ * @param datasetId - Dataset ID to query
121
+ * @returns Dataset object with all details
122
+ * @throws {BlockchainError} When dataset query fails
123
+ *
124
+ * @example
125
+ * ```typescript
126
+ * const dataset = await vana.dataset.getDataset(1);
127
+ * console.log(`Owner: ${dataset.owner}`);
128
+ * console.log(`Pending: ${dataset.pendingFileIds.length}`);
129
+ * console.log(`Accepted: ${dataset.fileIds.length}`);
130
+ * ```
131
+ */
132
+ getDataset(datasetId: number): Promise<Dataset>;
133
+ /**
134
+ * Get all datasets owned by a specific address.
135
+ *
136
+ * @remarks
137
+ * Queries all datasets created by the specified owner. Uses the subgraph
138
+ * when available for efficient querying, with fallback to RPC via event
139
+ * logs and multicall for guaranteed real-time accuracy.
140
+ *
141
+ * This method will be optimized when datasets are added to the subgraph.
142
+ * Until then, it efficiently queries the chain using event logs to find
143
+ * dataset IDs, then uses multicall to batch-read dataset details.
144
+ *
145
+ * @param params - Query parameters
146
+ * @param params.owner - Owner address to query datasets for
147
+ * @param params.subgraphUrl - Optional custom subgraph URL
148
+ * @param options - Optional consistency and pagination settings
149
+ * @returns Array of datasets with their IDs
150
+ * @throws {BlockchainError} When dataset query fails
151
+ *
152
+ * @example
153
+ * ```typescript
154
+ * // Get all datasets for an address
155
+ * const datasets = await vana.dataset.getUserDatasets({
156
+ * owner: "0x123..."
157
+ * });
158
+ *
159
+ * // With pagination
160
+ * const page1 = await vana.dataset.getUserDatasets(
161
+ * { owner: "0x123..." },
162
+ * { limit: 10, offset: 0 }
163
+ * );
164
+ *
165
+ * // Require recent data from chain
166
+ * const recent = await vana.dataset.getUserDatasets(
167
+ * { owner: "0x123..." },
168
+ * { source: "chain" }
169
+ * );
170
+ * ```
171
+ */
172
+ getUserDatasets(params: {
173
+ owner: Address;
174
+ subgraphUrl?: string;
175
+ }, options?: ConsistencyOptions & PaginationOptions): Promise<Array<Dataset & {
176
+ id: number;
177
+ }>>;
178
+ }