@opendatalabs/vana-sdk 0.1.0-alpha.eebb656 → 0.1.0-alpha.ef15099

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 (545) hide show
  1. package/README.md +67 -351
  2. package/dist/browser.cjs.map +1 -1
  3. package/dist/browser.d.ts +33 -1
  4. package/dist/browser.js.map +1 -1
  5. package/dist/chains/definitions.cjs +9 -6
  6. package/dist/chains/definitions.cjs.map +1 -1
  7. package/dist/chains/definitions.d.ts +2 -0
  8. package/dist/chains/definitions.js +9 -6
  9. package/dist/chains/definitions.js.map +1 -1
  10. package/dist/chains/index.cjs.map +1 -1
  11. package/dist/chains/index.d.ts +30 -1
  12. package/dist/chains/index.js.map +1 -1
  13. package/dist/client/enhancedResponse.cjs +164 -0
  14. package/dist/client/enhancedResponse.cjs.map +1 -0
  15. package/dist/client/enhancedResponse.d.ts +120 -0
  16. package/dist/client/enhancedResponse.js +138 -0
  17. package/dist/client/enhancedResponse.js.map +1 -0
  18. package/dist/config/chains.cjs.map +1 -1
  19. package/dist/config/chains.d.ts +99 -0
  20. package/dist/config/chains.js.map +1 -1
  21. package/dist/config/contracts.config.cjs +400 -0
  22. package/dist/config/contracts.config.cjs.map +1 -0
  23. package/dist/config/contracts.config.d.ts +84 -0
  24. package/dist/config/contracts.config.js +375 -0
  25. package/dist/config/contracts.config.js.map +1 -0
  26. package/dist/config/default-services.cjs +60 -0
  27. package/dist/config/default-services.cjs.map +1 -0
  28. package/dist/config/default-services.d.ts +46 -0
  29. package/dist/config/default-services.js +33 -0
  30. package/dist/config/default-services.js.map +1 -0
  31. package/dist/config/default-services.test.d.ts +1 -0
  32. package/dist/contracts/contractController.cjs +1 -1
  33. package/dist/contracts/contractController.cjs.map +1 -1
  34. package/dist/contracts/contractController.d.ts +66 -10
  35. package/dist/contracts/contractController.js +1 -1
  36. package/dist/contracts/contractController.js.map +1 -1
  37. package/dist/controllers/__tests__/data-consistency-integration.test.d.ts +7 -0
  38. package/dist/controllers/__tests__/operations.processQueue.test.d.ts +1 -0
  39. package/dist/controllers/accessSettlement.cjs +289 -0
  40. package/dist/controllers/accessSettlement.cjs.map +1 -0
  41. package/dist/controllers/accessSettlement.d.ts +157 -0
  42. package/dist/controllers/accessSettlement.js +265 -0
  43. package/dist/controllers/accessSettlement.js.map +1 -0
  44. package/dist/controllers/accessSettlement.test.d.ts +1 -0
  45. package/dist/controllers/base.cjs +116 -0
  46. package/dist/controllers/base.cjs.map +1 -0
  47. package/dist/controllers/base.d.ts +94 -0
  48. package/dist/controllers/base.js +92 -0
  49. package/dist/controllers/base.js.map +1 -0
  50. package/dist/controllers/data.cjs +634 -352
  51. package/dist/controllers/data.cjs.map +1 -1
  52. package/dist/controllers/data.d.ts +348 -213
  53. package/dist/controllers/data.js +647 -355
  54. package/dist/controllers/data.js.map +1 -1
  55. package/dist/controllers/operations.cjs +430 -0
  56. package/dist/controllers/operations.cjs.map +1 -0
  57. package/dist/controllers/operations.d.ts +229 -0
  58. package/dist/controllers/operations.js +406 -0
  59. package/dist/controllers/operations.js.map +1 -0
  60. package/dist/controllers/permissions.cjs +943 -443
  61. package/dist/controllers/permissions.cjs.map +1 -1
  62. package/dist/controllers/permissions.d.ts +201 -120
  63. package/dist/controllers/permissions.js +943 -443
  64. package/dist/controllers/permissions.js.map +1 -1
  65. package/dist/controllers/protocol.cjs +14 -10
  66. package/dist/controllers/protocol.cjs.map +1 -1
  67. package/dist/controllers/protocol.d.ts +30 -31
  68. package/dist/controllers/protocol.js +14 -10
  69. package/dist/controllers/protocol.js.map +1 -1
  70. package/dist/controllers/runtimePermissions.cjs +272 -0
  71. package/dist/controllers/runtimePermissions.cjs.map +1 -0
  72. package/dist/controllers/runtimePermissions.d.ts +152 -0
  73. package/dist/controllers/runtimePermissions.js +251 -0
  74. package/dist/controllers/runtimePermissions.js.map +1 -0
  75. package/dist/controllers/runtimePermissions.test.d.ts +1 -0
  76. package/dist/controllers/schemas.cjs +113 -43
  77. package/dist/controllers/schemas.cjs.map +1 -1
  78. package/dist/controllers/schemas.d.ts +90 -43
  79. package/dist/controllers/schemas.js +113 -43
  80. package/dist/controllers/schemas.js.map +1 -1
  81. package/dist/controllers/server.cjs +276 -60
  82. package/dist/controllers/server.cjs.map +1 -1
  83. package/dist/controllers/server.d.ts +159 -54
  84. package/dist/controllers/server.js +276 -60
  85. package/dist/controllers/server.js.map +1 -1
  86. package/dist/core/__tests__/health.test.d.ts +1 -0
  87. package/dist/core/__tests__/inMemoryNonceManager.test.d.ts +1 -0
  88. package/dist/core/__tests__/nonceManager.test.d.ts +1 -0
  89. package/dist/core/__tests__/pollingManager.test.d.ts +4 -0
  90. package/dist/core/apiClient.cjs +53 -3
  91. package/dist/core/apiClient.cjs.map +1 -1
  92. package/dist/core/apiClient.d.ts +132 -7
  93. package/dist/core/apiClient.js +53 -3
  94. package/dist/core/apiClient.js.map +1 -1
  95. package/dist/core/generics.cjs +30 -3
  96. package/dist/core/generics.cjs.map +1 -1
  97. package/dist/core/generics.d.ts +95 -6
  98. package/dist/core/generics.js +30 -3
  99. package/dist/core/generics.js.map +1 -1
  100. package/dist/core/health.cjs +289 -0
  101. package/dist/core/health.cjs.map +1 -0
  102. package/dist/core/health.d.ts +143 -0
  103. package/dist/core/health.js +265 -0
  104. package/dist/core/health.js.map +1 -0
  105. package/dist/core/inMemoryNonceManager.cjs +138 -0
  106. package/dist/core/inMemoryNonceManager.cjs.map +1 -0
  107. package/dist/core/inMemoryNonceManager.d.ts +69 -0
  108. package/dist/core/inMemoryNonceManager.js +114 -0
  109. package/dist/core/inMemoryNonceManager.js.map +1 -0
  110. package/dist/core/nonceManager.cjs +304 -0
  111. package/dist/core/nonceManager.cjs.map +1 -0
  112. package/dist/core/nonceManager.d.ts +116 -0
  113. package/dist/core/nonceManager.js +280 -0
  114. package/dist/core/nonceManager.js.map +1 -0
  115. package/dist/core/pollingManager.cjs +292 -0
  116. package/dist/core/pollingManager.cjs.map +1 -0
  117. package/dist/core/pollingManager.d.ts +120 -0
  118. package/dist/core/pollingManager.js +268 -0
  119. package/dist/core/pollingManager.js.map +1 -0
  120. package/dist/core.cjs +164 -36
  121. package/dist/core.cjs.map +1 -1
  122. package/dist/core.d.ts +69 -10
  123. package/dist/core.js +167 -37
  124. package/dist/core.js.map +1 -1
  125. package/dist/crypto/ecies/__tests__/constants.test.d.ts +1 -1
  126. package/dist/crypto/ecies/__tests__/interface.test.d.ts +1 -0
  127. package/dist/crypto/ecies/__tests__/serialization.test.d.ts +8 -0
  128. package/dist/crypto/ecies/__tests__/utils.test.d.ts +1 -0
  129. package/dist/crypto/ecies/base.cjs +59 -23
  130. package/dist/crypto/ecies/base.cjs.map +1 -1
  131. package/dist/crypto/ecies/base.js +59 -23
  132. package/dist/crypto/ecies/base.js.map +1 -1
  133. package/dist/crypto/ecies/constants.cjs +2 -10
  134. package/dist/crypto/ecies/constants.cjs.map +1 -1
  135. package/dist/crypto/ecies/constants.d.ts +0 -9
  136. package/dist/crypto/ecies/constants.js +1 -8
  137. package/dist/crypto/ecies/constants.js.map +1 -1
  138. package/dist/crypto/ecies/interface.cjs +19 -2
  139. package/dist/crypto/ecies/interface.cjs.map +1 -1
  140. package/dist/crypto/ecies/interface.js +19 -2
  141. package/dist/crypto/ecies/interface.js.map +1 -1
  142. package/dist/errors.cjs +45 -0
  143. package/dist/errors.cjs.map +1 -1
  144. package/dist/errors.d.ts +104 -0
  145. package/dist/errors.js +43 -0
  146. package/dist/errors.js.map +1 -1
  147. package/dist/generated/abi/AccessSettlementImplementation.cjs +635 -0
  148. package/dist/generated/abi/AccessSettlementImplementation.cjs.map +1 -0
  149. package/dist/generated/abi/AccessSettlementImplementation.d.ts +468 -0
  150. package/dist/generated/abi/AccessSettlementImplementation.js +611 -0
  151. package/dist/generated/abi/AccessSettlementImplementation.js.map +1 -0
  152. package/dist/generated/abi/AttestationPolicyImplementation.cjs +614 -0
  153. package/dist/generated/abi/AttestationPolicyImplementation.cjs.map +1 -0
  154. package/dist/generated/abi/AttestationPolicyImplementation.d.ts +449 -0
  155. package/dist/generated/abi/AttestationPolicyImplementation.js +590 -0
  156. package/dist/generated/abi/AttestationPolicyImplementation.js.map +1 -0
  157. package/dist/generated/abi/ComputeEngineImplementation.cjs.map +1 -1
  158. package/dist/generated/abi/ComputeEngineImplementation.js.map +1 -1
  159. package/dist/generated/abi/{DLPTreasuryImplementation.cjs → ComputeEngineTreasuryImplementation.cjs} +16 -92
  160. package/dist/generated/abi/ComputeEngineTreasuryImplementation.cjs.map +1 -0
  161. package/dist/generated/abi/{DLPTreasuryImplementation.d.ts → ComputeEngineTreasuryImplementation.d.ts} +9 -67
  162. package/dist/generated/abi/{DLPTreasuryImplementation.js → ComputeEngineTreasuryImplementation.js} +12 -88
  163. package/dist/generated/abi/ComputeEngineTreasuryImplementation.js.map +1 -0
  164. package/dist/generated/abi/ComputeInstructionRegistryImplementation.cjs.map +1 -1
  165. package/dist/generated/abi/ComputeInstructionRegistryImplementation.js.map +1 -1
  166. package/dist/generated/abi/DATFactoryImplementation.cjs.map +1 -1
  167. package/dist/generated/abi/DATFactoryImplementation.js.map +1 -1
  168. package/dist/generated/abi/DATImplementation.cjs.map +1 -1
  169. package/dist/generated/abi/DATImplementation.js.map +1 -1
  170. package/dist/generated/abi/DATPausableImplementation.cjs.map +1 -1
  171. package/dist/generated/abi/DATPausableImplementation.js.map +1 -1
  172. package/dist/generated/abi/DATVotesImplementation.cjs.map +1 -1
  173. package/dist/generated/abi/DATVotesImplementation.js.map +1 -1
  174. package/dist/generated/abi/DLPPerformanceImplementation.cjs +42 -0
  175. package/dist/generated/abi/DLPPerformanceImplementation.cjs.map +1 -1
  176. package/dist/generated/abi/DLPPerformanceImplementation.d.ts +32 -0
  177. package/dist/generated/abi/DLPPerformanceImplementation.js +42 -0
  178. package/dist/generated/abi/DLPPerformanceImplementation.js.map +1 -1
  179. package/dist/generated/abi/DLPRegistryImplementation.cjs +5 -5
  180. package/dist/generated/abi/DLPRegistryImplementation.cjs.map +1 -1
  181. package/dist/generated/abi/DLPRegistryImplementation.d.ts +4 -4
  182. package/dist/generated/abi/DLPRegistryImplementation.js +5 -5
  183. package/dist/generated/abi/DLPRegistryImplementation.js.map +1 -1
  184. package/dist/generated/abi/DLPRegistryTreasuryImplementation.cjs.map +1 -1
  185. package/dist/generated/abi/DLPRegistryTreasuryImplementation.js.map +1 -1
  186. package/dist/generated/abi/DLPRewardDeployerImplementation.cjs +166 -2
  187. package/dist/generated/abi/DLPRewardDeployerImplementation.cjs.map +1 -1
  188. package/dist/generated/abi/DLPRewardDeployerImplementation.d.ts +129 -2
  189. package/dist/generated/abi/DLPRewardDeployerImplementation.js +166 -2
  190. package/dist/generated/abi/DLPRewardDeployerImplementation.js.map +1 -1
  191. package/dist/generated/abi/DLPRewardSwapImplementation.cjs.map +1 -1
  192. package/dist/generated/abi/DLPRewardSwapImplementation.js.map +1 -1
  193. package/dist/generated/abi/DataLiquidityPoolImplementation.cjs +282 -100
  194. package/dist/generated/abi/DataLiquidityPoolImplementation.cjs.map +1 -1
  195. package/dist/generated/abi/DataLiquidityPoolImplementation.d.ts +218 -79
  196. package/dist/generated/abi/DataLiquidityPoolImplementation.js +281 -99
  197. package/dist/generated/abi/DataLiquidityPoolImplementation.js.map +1 -1
  198. package/dist/generated/abi/DataPortabilityGranteesImplementation.cjs +167 -19
  199. package/dist/generated/abi/DataPortabilityGranteesImplementation.cjs.map +1 -1
  200. package/dist/generated/abi/DataPortabilityGranteesImplementation.d.ts +127 -14
  201. package/dist/generated/abi/DataPortabilityGranteesImplementation.js +167 -19
  202. package/dist/generated/abi/DataPortabilityGranteesImplementation.js.map +1 -1
  203. package/dist/generated/abi/DataPortabilityPermissionsImplementation.cjs +0 -19
  204. package/dist/generated/abi/DataPortabilityPermissionsImplementation.cjs.map +1 -1
  205. package/dist/generated/abi/DataPortabilityPermissionsImplementation.d.ts +0 -14
  206. package/dist/generated/abi/DataPortabilityPermissionsImplementation.js +0 -19
  207. package/dist/generated/abi/DataPortabilityPermissionsImplementation.js.map +1 -1
  208. package/dist/generated/abi/DataPortabilityServersImplementation.cjs +0 -19
  209. package/dist/generated/abi/DataPortabilityServersImplementation.cjs.map +1 -1
  210. package/dist/generated/abi/DataPortabilityServersImplementation.d.ts +0 -14
  211. package/dist/generated/abi/DataPortabilityServersImplementation.js +0 -19
  212. package/dist/generated/abi/DataPortabilityServersImplementation.js.map +1 -1
  213. package/dist/generated/abi/DataRefinerRegistryImplementation.cjs.map +1 -1
  214. package/dist/generated/abi/DataRefinerRegistryImplementation.js.map +1 -1
  215. package/dist/generated/abi/DataRegistryImplementation.cjs +0 -13
  216. package/dist/generated/abi/DataRegistryImplementation.cjs.map +1 -1
  217. package/dist/generated/abi/DataRegistryImplementation.d.ts +0 -10
  218. package/dist/generated/abi/DataRegistryImplementation.js +0 -13
  219. package/dist/generated/abi/DataRegistryImplementation.js.map +1 -1
  220. package/dist/generated/abi/DatasetRegistryImplementation.cjs +751 -0
  221. package/dist/generated/abi/DatasetRegistryImplementation.cjs.map +1 -0
  222. package/dist/generated/abi/DatasetRegistryImplementation.d.ts +557 -0
  223. package/dist/generated/abi/DatasetRegistryImplementation.js +727 -0
  224. package/dist/generated/abi/DatasetRegistryImplementation.js.map +1 -0
  225. package/dist/generated/abi/ProtocolConfigImplementation.cjs +578 -0
  226. package/dist/generated/abi/ProtocolConfigImplementation.cjs.map +1 -0
  227. package/dist/generated/abi/ProtocolConfigImplementation.d.ts +423 -0
  228. package/dist/generated/abi/ProtocolConfigImplementation.js +554 -0
  229. package/dist/generated/abi/ProtocolConfigImplementation.js.map +1 -0
  230. package/dist/generated/abi/QueryEngineImplementation.cjs.map +1 -1
  231. package/dist/generated/abi/QueryEngineImplementation.js.map +1 -1
  232. package/dist/generated/abi/SwapHelperImplementation.cjs +0 -43
  233. package/dist/generated/abi/SwapHelperImplementation.cjs.map +1 -1
  234. package/dist/generated/abi/SwapHelperImplementation.d.ts +0 -35
  235. package/dist/generated/abi/SwapHelperImplementation.js +0 -43
  236. package/dist/generated/abi/SwapHelperImplementation.js.map +1 -1
  237. package/dist/generated/abi/TeePoolDedicatedGpuImplementation.cjs.map +1 -1
  238. package/dist/generated/abi/TeePoolDedicatedGpuImplementation.js.map +1 -1
  239. package/dist/generated/abi/TeePoolDedicatedStandardImplementation.cjs.map +1 -1
  240. package/dist/generated/abi/TeePoolDedicatedStandardImplementation.js.map +1 -1
  241. package/dist/generated/abi/TeePoolEphemeralStandardImplementation.cjs.map +1 -1
  242. package/dist/generated/abi/TeePoolEphemeralStandardImplementation.js.map +1 -1
  243. package/dist/generated/abi/TeePoolPersistentGpuImplementation.cjs.map +1 -1
  244. package/dist/generated/abi/TeePoolPersistentGpuImplementation.js.map +1 -1
  245. package/dist/generated/abi/TeePoolPersistentStandardImplementation.cjs.map +1 -1
  246. package/dist/generated/abi/TeePoolPersistentStandardImplementation.js.map +1 -1
  247. package/dist/generated/abi/TeePoolPhalaImplementation.cjs.map +1 -1
  248. package/dist/generated/abi/TeePoolPhalaImplementation.js.map +1 -1
  249. package/dist/generated/abi/UniswapV3NonfungiblePositionManagerImplementation.cjs +1251 -0
  250. package/dist/generated/abi/UniswapV3NonfungiblePositionManagerImplementation.cjs.map +1 -0
  251. package/dist/generated/abi/UniswapV3NonfungiblePositionManagerImplementation.d.ts +948 -0
  252. package/dist/generated/abi/UniswapV3NonfungiblePositionManagerImplementation.js +1227 -0
  253. package/dist/generated/abi/UniswapV3NonfungiblePositionManagerImplementation.js.map +1 -0
  254. package/dist/generated/abi/UniswapV3QuoterV2Implementation.cjs +297 -0
  255. package/dist/generated/abi/UniswapV3QuoterV2Implementation.cjs.map +1 -0
  256. package/dist/generated/abi/UniswapV3QuoterV2Implementation.d.ts +206 -0
  257. package/dist/generated/abi/UniswapV3QuoterV2Implementation.js +273 -0
  258. package/dist/generated/abi/UniswapV3QuoterV2Implementation.js.map +1 -0
  259. package/dist/generated/abi/VanaEpochImplementation.cjs +195 -0
  260. package/dist/generated/abi/VanaEpochImplementation.cjs.map +1 -1
  261. package/dist/generated/abi/VanaEpochImplementation.d.ts +151 -0
  262. package/dist/generated/abi/VanaEpochImplementation.js +195 -0
  263. package/dist/generated/abi/VanaEpochImplementation.js.map +1 -1
  264. package/dist/generated/abi/VanaPoolEntityImplementation.cjs +22 -65
  265. package/dist/generated/abi/VanaPoolEntityImplementation.cjs.map +1 -1
  266. package/dist/generated/abi/VanaPoolEntityImplementation.d.ts +17 -51
  267. package/dist/generated/abi/VanaPoolEntityImplementation.js +22 -65
  268. package/dist/generated/abi/VanaPoolEntityImplementation.js.map +1 -1
  269. package/dist/generated/abi/VanaPoolStakingImplementation.cjs +113 -1
  270. package/dist/generated/abi/VanaPoolStakingImplementation.cjs.map +1 -1
  271. package/dist/generated/abi/VanaPoolStakingImplementation.d.ts +85 -1
  272. package/dist/generated/abi/VanaPoolStakingImplementation.js +113 -1
  273. package/dist/generated/abi/VanaPoolStakingImplementation.js.map +1 -1
  274. package/dist/generated/abi/VanaPoolTreasuryImplementation.cjs.map +1 -1
  275. package/dist/generated/abi/VanaPoolTreasuryImplementation.js.map +1 -1
  276. package/dist/generated/abi/VanaRuntimePermissionsImplementation.cjs +759 -0
  277. package/dist/generated/abi/VanaRuntimePermissionsImplementation.cjs.map +1 -0
  278. package/dist/generated/abi/VanaRuntimePermissionsImplementation.d.ts +563 -0
  279. package/dist/generated/abi/VanaRuntimePermissionsImplementation.js +735 -0
  280. package/dist/generated/abi/VanaRuntimePermissionsImplementation.js.map +1 -0
  281. package/dist/generated/abi/VanaRuntimeServersImplementation.cjs +820 -0
  282. package/dist/generated/abi/VanaRuntimeServersImplementation.cjs.map +1 -0
  283. package/dist/generated/abi/VanaRuntimeServersImplementation.d.ts +609 -0
  284. package/dist/generated/abi/VanaRuntimeServersImplementation.js +796 -0
  285. package/dist/generated/abi/VanaRuntimeServersImplementation.js.map +1 -0
  286. package/dist/generated/abi/VanaTreasuryImplementation.cjs +536 -0
  287. package/dist/generated/abi/VanaTreasuryImplementation.cjs.map +1 -0
  288. package/dist/generated/abi/VanaTreasuryImplementation.d.ts +393 -0
  289. package/dist/generated/abi/VanaTreasuryImplementation.js +512 -0
  290. package/dist/generated/abi/VanaTreasuryImplementation.js.map +1 -0
  291. package/dist/generated/abi/WVANAImplementation.cjs +339 -0
  292. package/dist/generated/abi/WVANAImplementation.cjs.map +1 -0
  293. package/dist/generated/abi/WVANAImplementation.d.ts +244 -0
  294. package/dist/generated/abi/WVANAImplementation.js +315 -0
  295. package/dist/generated/abi/WVANAImplementation.js.map +1 -0
  296. package/dist/generated/abi/index.cjs +79 -47
  297. package/dist/generated/abi/index.cjs.map +1 -1
  298. package/dist/generated/abi/index.d.ts +15783 -10449
  299. package/dist/generated/abi/index.js +65 -43
  300. package/dist/generated/abi/index.js.map +1 -1
  301. package/dist/{config → generated}/addresses.cjs +174 -75
  302. package/dist/generated/addresses.cjs.map +1 -0
  303. package/dist/{config → generated}/addresses.d.ts +174 -165
  304. package/dist/{config → generated}/addresses.js +174 -75
  305. package/dist/generated/addresses.js.map +1 -0
  306. package/dist/generated/event-types.cjs.map +1 -1
  307. package/dist/generated/event-types.d.ts +482 -399
  308. package/dist/generated/eventRegistry.cjs +2601 -724
  309. package/dist/generated/eventRegistry.cjs.map +1 -1
  310. package/dist/generated/eventRegistry.d.ts +2 -2
  311. package/dist/generated/eventRegistry.js +2601 -724
  312. package/dist/generated/eventRegistry.js.map +1 -1
  313. package/dist/generated/server/server-exports.cjs +22 -0
  314. package/dist/generated/server/server-exports.cjs.map +1 -1
  315. package/dist/generated/server/server-exports.d.ts +31 -11
  316. package/dist/generated/server/server-exports.js +17 -0
  317. package/dist/generated/server/server-exports.js.map +1 -1
  318. package/dist/generated/server/server.cjs.map +1 -1
  319. package/dist/generated/server/server.d.ts +771 -402
  320. package/dist/generated/subgraph.cjs +797 -32
  321. package/dist/generated/subgraph.cjs.map +1 -1
  322. package/dist/generated/subgraph.d.ts +135 -0
  323. package/dist/generated/subgraph.js +792 -32
  324. package/dist/generated/subgraph.js.map +1 -1
  325. package/dist/index.browser.d.ts +6 -1
  326. package/dist/index.browser.js +26 -1
  327. package/dist/index.browser.js.map +1 -1
  328. package/dist/index.cjs.map +1 -1
  329. package/dist/index.js.map +1 -1
  330. package/dist/index.node.cjs +47 -4
  331. package/dist/index.node.cjs.map +1 -1
  332. package/dist/index.node.d.ts +60 -14
  333. package/dist/index.node.js +42 -3
  334. package/dist/index.node.js.map +1 -1
  335. package/dist/lib/__tests__/redisAtomicStore.test.d.ts +1 -0
  336. package/dist/lib/redisAtomicStore.cjs +201 -0
  337. package/dist/lib/redisAtomicStore.cjs.map +1 -0
  338. package/dist/lib/redisAtomicStore.d.ts +120 -0
  339. package/dist/lib/redisAtomicStore.js +177 -0
  340. package/dist/lib/redisAtomicStore.js.map +1 -0
  341. package/dist/node.cjs.map +1 -1
  342. package/dist/node.d.ts +39 -1
  343. package/dist/node.js.map +1 -1
  344. package/dist/platform/browser.cjs +160 -2
  345. package/dist/platform/browser.cjs.map +1 -1
  346. package/dist/platform/browser.d.ts +232 -12
  347. package/dist/platform/browser.js +160 -2
  348. package/dist/platform/browser.js.map +1 -1
  349. package/dist/platform/interface.cjs.map +1 -1
  350. package/dist/platform/interface.d.ts +283 -90
  351. package/dist/platform/node.cjs +163 -2
  352. package/dist/platform/node.cjs.map +1 -1
  353. package/dist/platform/node.d.ts +69 -6
  354. package/dist/platform/node.js +163 -2
  355. package/dist/platform/node.js.map +1 -1
  356. package/dist/server/relayerHandler.cjs +452 -0
  357. package/dist/server/relayerHandler.cjs.map +1 -0
  358. package/dist/server/relayerHandler.d.ts +69 -0
  359. package/dist/server/relayerHandler.js +428 -0
  360. package/dist/server/relayerHandler.js.map +1 -0
  361. package/dist/storage/index.cjs +3 -0
  362. package/dist/storage/index.cjs.map +1 -1
  363. package/dist/storage/index.d.ts +1 -0
  364. package/dist/storage/index.js +2 -0
  365. package/dist/storage/index.js.map +1 -1
  366. package/dist/storage/manager.cjs +108 -25
  367. package/dist/storage/manager.cjs.map +1 -1
  368. package/dist/storage/manager.d.ts +119 -25
  369. package/dist/storage/manager.js +108 -25
  370. package/dist/storage/manager.js.map +1 -1
  371. package/dist/storage/providers/callback-storage.cjs +86 -15
  372. package/dist/storage/providers/callback-storage.cjs.map +1 -1
  373. package/dist/storage/providers/callback-storage.d.ts +109 -20
  374. package/dist/storage/providers/callback-storage.js +86 -15
  375. package/dist/storage/providers/callback-storage.js.map +1 -1
  376. package/dist/storage/providers/dropbox.cjs +237 -0
  377. package/dist/storage/providers/dropbox.cjs.map +1 -0
  378. package/dist/storage/providers/dropbox.d.ts +39 -0
  379. package/dist/storage/providers/dropbox.js +215 -0
  380. package/dist/storage/providers/dropbox.js.map +1 -0
  381. package/dist/storage/providers/dropbox.test.d.ts +1 -0
  382. package/dist/storage/providers/pinata.cjs.map +1 -1
  383. package/dist/storage/providers/pinata.d.ts +12 -14
  384. package/dist/storage/providers/pinata.js.map +1 -1
  385. package/dist/tests/data-upload-owner-validation.test.d.ts +1 -0
  386. package/dist/tests/factories/mockFactory.d.ts +6 -6
  387. package/dist/tests/fakes/FakeWaitForTransactionEvents.d.ts +2 -2
  388. package/dist/tests/permissions-revoke-relayer.test.d.ts +1 -0
  389. package/dist/tests/permissions-transaction-options.test.d.ts +1 -0
  390. package/dist/tests/read-only-mode.test.d.ts +1 -0
  391. package/dist/tests/relayer-integration.test.d.ts +1 -0
  392. package/dist/tests/relayer-unified.test.d.ts +1 -0
  393. package/dist/tests/server-relayer-handler.test.d.ts +1 -0
  394. package/dist/types/accessSettlement.cjs +17 -0
  395. package/dist/types/accessSettlement.cjs.map +1 -0
  396. package/dist/types/accessSettlement.d.ts +66 -0
  397. package/dist/types/accessSettlement.js +1 -0
  398. package/dist/types/accessSettlement.js.map +1 -0
  399. package/dist/types/atomicStore.cjs +31 -0
  400. package/dist/types/atomicStore.cjs.map +1 -0
  401. package/dist/types/atomicStore.d.ts +236 -0
  402. package/dist/types/atomicStore.js +7 -0
  403. package/dist/types/atomicStore.js.map +1 -0
  404. package/dist/types/blockchain.cjs.map +1 -1
  405. package/dist/types/blockchain.d.ts +39 -11
  406. package/dist/types/chains.cjs.map +1 -1
  407. package/dist/types/chains.d.ts +74 -7
  408. package/dist/types/chains.js.map +1 -1
  409. package/dist/types/config.cjs +10 -0
  410. package/dist/types/config.cjs.map +1 -1
  411. package/dist/types/config.d.ts +217 -220
  412. package/dist/types/config.js +8 -0
  413. package/dist/types/config.js.map +1 -1
  414. package/dist/types/contracts.cjs.map +1 -1
  415. package/dist/types/contracts.d.ts +71 -7
  416. package/dist/types/controller-context.cjs.map +1 -1
  417. package/dist/types/controller-context.d.ts +12 -6
  418. package/dist/types/data.cjs.map +1 -1
  419. package/dist/types/data.d.ts +82 -10
  420. package/dist/types/generics.cjs.map +1 -1
  421. package/dist/types/generics.d.ts +81 -10
  422. package/dist/types/index.cjs +4 -0
  423. package/dist/types/index.cjs.map +1 -1
  424. package/dist/types/index.d.ts +36 -6
  425. package/dist/types/index.js +9 -1
  426. package/dist/types/index.js.map +1 -1
  427. package/dist/types/operationStore.cjs +17 -0
  428. package/dist/types/operationStore.cjs.map +1 -0
  429. package/dist/types/operationStore.d.ts +171 -0
  430. package/dist/types/operationStore.js +1 -0
  431. package/dist/types/operationStore.js.map +1 -0
  432. package/dist/types/operations.cjs +3 -15
  433. package/dist/types/operations.cjs.map +1 -1
  434. package/dist/types/operations.d.ts +131 -39
  435. package/dist/types/operations.js +2 -13
  436. package/dist/types/operations.js.map +1 -1
  437. package/dist/types/options.cjs +17 -0
  438. package/dist/types/options.cjs.map +1 -0
  439. package/dist/types/options.d.ts +308 -0
  440. package/dist/types/options.js +1 -0
  441. package/dist/types/options.js.map +1 -0
  442. package/dist/types/permissions.cjs.map +1 -1
  443. package/dist/types/permissions.d.ts +19 -20
  444. package/dist/types/personal.cjs.map +1 -1
  445. package/dist/types/personal.d.ts +150 -14
  446. package/dist/types/relayer.cjs.map +1 -1
  447. package/dist/types/relayer.d.ts +307 -35
  448. package/dist/types/runtimePermissions.cjs +17 -0
  449. package/dist/types/runtimePermissions.cjs.map +1 -0
  450. package/dist/types/runtimePermissions.d.ts +122 -0
  451. package/dist/types/runtimePermissions.js +1 -0
  452. package/dist/types/runtimePermissions.js.map +1 -0
  453. package/dist/types/storage.cjs.map +1 -1
  454. package/dist/types/storage.d.ts +9 -21
  455. package/dist/types/storage.js.map +1 -1
  456. package/dist/types/utils.cjs.map +1 -1
  457. package/dist/types/utils.d.ts +0 -45
  458. package/dist/utils/__tests__/chainQuery.test.d.ts +1 -0
  459. package/dist/utils/__tests__/subgraphConsistency.test.d.ts +4 -0
  460. package/dist/utils/__tests__/subgraphPagination.test.d.ts +4 -0
  461. package/dist/utils/blockchain/registry.cjs +3 -3
  462. package/dist/utils/blockchain/registry.cjs.map +1 -1
  463. package/dist/utils/blockchain/registry.d.ts +1 -1
  464. package/dist/utils/blockchain/registry.js +3 -3
  465. package/dist/utils/blockchain/registry.js.map +1 -1
  466. package/dist/utils/chainQuery.cjs +107 -0
  467. package/dist/utils/chainQuery.cjs.map +1 -0
  468. package/dist/utils/chainQuery.d.ts +31 -0
  469. package/dist/utils/chainQuery.js +82 -0
  470. package/dist/utils/chainQuery.js.map +1 -0
  471. package/dist/utils/grantFiles.cjs +4 -1
  472. package/dist/utils/grantFiles.cjs.map +1 -1
  473. package/dist/utils/grantFiles.d.ts +10 -20
  474. package/dist/utils/grantFiles.js +4 -1
  475. package/dist/utils/grantFiles.js.map +1 -1
  476. package/dist/utils/grantValidation.cjs.map +1 -1
  477. package/dist/utils/grantValidation.d.ts +95 -16
  478. package/dist/utils/grantValidation.js.map +1 -1
  479. package/dist/utils/grants.cjs.map +1 -1
  480. package/dist/utils/grants.d.ts +93 -12
  481. package/dist/utils/grants.js.map +1 -1
  482. package/dist/utils/ipfs.cjs +2 -4
  483. package/dist/utils/ipfs.cjs.map +1 -1
  484. package/dist/utils/ipfs.d.ts +1 -1
  485. package/dist/utils/ipfs.js +2 -4
  486. package/dist/utils/ipfs.js.map +1 -1
  487. package/dist/utils/lazy-import.cjs.map +1 -1
  488. package/dist/utils/lazy-import.d.ts +32 -7
  489. package/dist/utils/lazy-import.js.map +1 -1
  490. package/dist/utils/multicall.cjs +1 -1
  491. package/dist/utils/multicall.cjs.map +1 -1
  492. package/dist/utils/multicall.js +1 -1
  493. package/dist/utils/multicall.js.map +1 -1
  494. package/dist/utils/runtimeGrantFiles.cjs +84 -0
  495. package/dist/utils/runtimeGrantFiles.cjs.map +1 -0
  496. package/dist/utils/runtimeGrantFiles.d.ts +66 -0
  497. package/dist/utils/runtimeGrantFiles.js +58 -0
  498. package/dist/utils/runtimeGrantFiles.js.map +1 -0
  499. package/dist/utils/signatureCache.cjs +8 -2
  500. package/dist/utils/signatureCache.cjs.map +1 -1
  501. package/dist/utils/signatureCache.d.ts +49 -8
  502. package/dist/utils/signatureCache.js +8 -2
  503. package/dist/utils/signatureCache.js.map +1 -1
  504. package/dist/utils/subgraphConsistency.cjs +184 -0
  505. package/dist/utils/subgraphConsistency.cjs.map +1 -0
  506. package/dist/utils/subgraphConsistency.d.ts +65 -0
  507. package/dist/utils/subgraphConsistency.js +155 -0
  508. package/dist/utils/subgraphConsistency.js.map +1 -0
  509. package/dist/utils/subgraphMetaCache.cjs +101 -0
  510. package/dist/utils/subgraphMetaCache.cjs.map +1 -0
  511. package/dist/utils/subgraphMetaCache.d.ts +56 -0
  512. package/dist/utils/subgraphMetaCache.js +76 -0
  513. package/dist/utils/subgraphMetaCache.js.map +1 -0
  514. package/dist/utils/subgraphPagination.cjs +104 -0
  515. package/dist/utils/subgraphPagination.cjs.map +1 -0
  516. package/dist/utils/subgraphPagination.d.ts +78 -0
  517. package/dist/utils/subgraphPagination.js +78 -0
  518. package/dist/utils/subgraphPagination.js.map +1 -0
  519. package/dist/utils/transactionHelpers.cjs.map +1 -1
  520. package/dist/utils/transactionHelpers.d.ts +12 -12
  521. package/dist/utils/transactionHelpers.js.map +1 -1
  522. package/dist/utils/typedDataConverter.cjs.map +1 -1
  523. package/dist/utils/typedDataConverter.d.ts +39 -3
  524. package/dist/utils/typedDataConverter.js.map +1 -1
  525. package/dist/utils/urlResolver.cjs +7 -0
  526. package/dist/utils/urlResolver.cjs.map +1 -1
  527. package/dist/utils/urlResolver.d.ts +22 -4
  528. package/dist/utils/urlResolver.js +7 -0
  529. package/dist/utils/urlResolver.js.map +1 -1
  530. package/dist/utils/wallet.cjs +63 -0
  531. package/dist/utils/wallet.cjs.map +1 -0
  532. package/dist/utils/wallet.d.ts +94 -0
  533. package/dist/utils/wallet.js +37 -0
  534. package/dist/utils/wallet.js.map +1 -0
  535. package/package.json +7 -2
  536. package/dist/config/addresses.cjs.map +0 -1
  537. package/dist/config/addresses.js.map +0 -1
  538. package/dist/generated/abi/DLPTreasuryImplementation.cjs.map +0 -1
  539. package/dist/generated/abi/DLPTreasuryImplementation.js.map +0 -1
  540. package/dist/server/handler.cjs +0 -101
  541. package/dist/server/handler.cjs.map +0 -1
  542. package/dist/server/handler.d.ts +0 -87
  543. package/dist/server/handler.js +0 -77
  544. package/dist/server/handler.js.map +0 -1
  545. /package/dist/{tests/server-handler.test.d.ts → client/__tests__/enhancedResponse.test.d.ts} +0 -0
@@ -0,0 +1,152 @@
1
+ import { BaseController } from "./base";
2
+ import type { RuntimePermissionParams, RuntimePermission, RuntimeGrantFile, RuntimePermissionResult } from "../types/runtimePermissions";
3
+ /**
4
+ * Controller for VanaRuntimePermissions contract
5
+ *
6
+ * @remarks
7
+ * Manages permissions for data access via Vana Runtime. Allows dataset owners
8
+ * to create monetized access permissions for data consumers to execute operations
9
+ * on their datasets within TEE environments.
10
+ *
11
+ * Follows the same pattern as PermissionsController but for runtime-specific permissions.
12
+ *
13
+ * @category Controllers
14
+ * @example
15
+ * ```typescript
16
+ * // Create a permission for a data consumer
17
+ * const result = await sdk.runtimePermissions.createPermission({
18
+ * datasetId: 123n,
19
+ * grantee: "0x...",
20
+ * task: "vanaorg/vana-task-demo:latest",
21
+ * operation: "aggregate_keywords",
22
+ * pricing: { price_per_file_vana: 0.1 }
23
+ * });
24
+ *
25
+ * console.log(`Permission created with ID: ${result.permissionId}`);
26
+ * console.log(`Grant stored at: ${result.grantUrl}`);
27
+ * ```
28
+ */
29
+ export declare class RuntimePermissionsController extends BaseController {
30
+ /**
31
+ * Create a new runtime permission grant
32
+ *
33
+ * @remarks
34
+ * This method:
35
+ * 1. Creates a grant file with pricing and operation details
36
+ * 2. Uploads the grant to IPFS (via relayer if available)
37
+ * 3. Calls VanaRuntimePermissions.createPermission() on-chain
38
+ * 4. Waits for transaction confirmation
39
+ * 5. Returns the permission ID and grant URL
40
+ *
41
+ * @param params - Permission parameters including dataset, grantee, pricing
42
+ * @returns Permission ID, transaction hash, and grant URL
43
+ * @throws {BlockchainError} When permission creation fails
44
+ * @throws {NetworkError} When IPFS upload fails
45
+ *
46
+ * @example
47
+ * ```typescript
48
+ * const result = await sdk.runtimePermissions.createPermission({
49
+ * datasetId: 123n,
50
+ * grantee: "0x742d35Cc...",
51
+ * task: "vanaorg/vana-task-demo:latest",
52
+ * operation: "aggregate_keywords",
53
+ * pricing: {
54
+ * price_per_file_vana: 0.1,
55
+ * minimum_price_vana: 0.01,
56
+ * maximum_price_vana: 100
57
+ * },
58
+ * parameters: {
59
+ * maxFiles: 1000
60
+ * },
61
+ * });
62
+ * ```
63
+ */
64
+ createPermission(params: RuntimePermissionParams): Promise<RuntimePermissionResult>;
65
+ /**
66
+ * Get permission by ID
67
+ *
68
+ * @remarks
69
+ * Fetches permission details from the VanaRuntimePermissions contract.
70
+ * The returned permission contains an IPFS hash in the grant field,
71
+ * which can be resolved using fetchGrant().
72
+ *
73
+ * @param permissionId - Permission identifier
74
+ * @returns Permission details including dataset, grantee, and grant hash
75
+ *
76
+ * @example
77
+ * ```typescript
78
+ * const permission = await sdk.runtimePermissions.getPermission(1024n);
79
+ * console.log(`Dataset: ${permission.datasetId}`);
80
+ * console.log(`Grant: ${permission.grant}`); // IPFS hash
81
+ *
82
+ * // Resolve full grant details
83
+ * const grantFile = await sdk.runtimePermissions.fetchGrant(permission);
84
+ * console.log(`Price: ${grantFile.pricing.price_per_file_vana} VANA`);
85
+ * ```
86
+ */
87
+ getPermission(permissionId: bigint): Promise<RuntimePermission>;
88
+ /**
89
+ * Check if permission is active (not expired)
90
+ *
91
+ * @remarks
92
+ * Returns true if the current block number is between startBlock and endBlock.
93
+ *
94
+ * @param permissionId - Permission identifier
95
+ * @returns Whether permission is currently active
96
+ *
97
+ * @example
98
+ * ```typescript
99
+ * const isActive = await sdk.runtimePermissions.isPermissionActive(1024n);
100
+ * if (isActive) {
101
+ * console.log("Permission is valid");
102
+ * } else {
103
+ * console.log("Permission has expired");
104
+ * }
105
+ * ```
106
+ */
107
+ isPermissionActive(permissionId: bigint): Promise<boolean>;
108
+ /**
109
+ * Get all permissions for a dataset
110
+ *
111
+ * @remarks
112
+ * Returns an array of permissions that have been granted for the specified dataset.
113
+ * Useful for dataset owners to view all active permissions.
114
+ *
115
+ * @param datasetId - Dataset identifier
116
+ * @returns Array of runtime permissions
117
+ *
118
+ * @example
119
+ * ```typescript
120
+ * const permissions = await sdk.runtimePermissions.getDatasetPermissions(123n);
121
+ * console.log(`Found ${permissions.length} permissions`);
122
+ *
123
+ * // Access each permission directly
124
+ * for (const permission of permissions) {
125
+ * console.log(`Permission ${permission.id}: ${permission.grant}`);
126
+ * }
127
+ * ```
128
+ */
129
+ getDatasetPermissions(datasetId: bigint): Promise<RuntimePermission[]>;
130
+ /**
131
+ * Fetch and parse grant file from IPFS
132
+ *
133
+ * @remarks
134
+ * Resolves the IPFS hash stored in permission.grant and returns the
135
+ * full grant file with pricing and operation details.
136
+ *
137
+ * @param permission - Permission with grant URL/hash
138
+ * @returns Parsed grant file with pricing and parameters
139
+ * @throws {NetworkError} When IPFS fetch fails
140
+ *
141
+ * @example
142
+ * ```typescript
143
+ * const permission = await sdk.runtimePermissions.getPermission(1024n);
144
+ * const grant = await sdk.runtimePermissions.fetchGrant(permission);
145
+ *
146
+ * console.log(`Task: ${grant.task}`);
147
+ * console.log(`Operation: ${grant.operation}`);
148
+ * console.log(`Price: ${grant.pricing.price_per_file_vana} VANA per file`);
149
+ * ```
150
+ */
151
+ fetchGrant(permission: RuntimePermission): Promise<RuntimeGrantFile>;
152
+ }
@@ -0,0 +1,251 @@
1
+ import { getContract } from "viem";
2
+ import { BaseController } from "./base";
3
+ import {
4
+ createRuntimeGrantFile,
5
+ retrieveRuntimeGrantFile
6
+ } from "../utils/runtimeGrantFiles";
7
+ import { BlockchainError, NetworkError } from "../errors";
8
+ import { getContractAddress } from "../generated/addresses";
9
+ import { getAbi } from "../generated/abi";
10
+ class RuntimePermissionsController extends BaseController {
11
+ /**
12
+ * Create a new runtime permission grant
13
+ *
14
+ * @remarks
15
+ * This method:
16
+ * 1. Creates a grant file with pricing and operation details
17
+ * 2. Uploads the grant to IPFS (via relayer if available)
18
+ * 3. Calls VanaRuntimePermissions.createPermission() on-chain
19
+ * 4. Waits for transaction confirmation
20
+ * 5. Returns the permission ID and grant URL
21
+ *
22
+ * @param params - Permission parameters including dataset, grantee, pricing
23
+ * @returns Permission ID, transaction hash, and grant URL
24
+ * @throws {BlockchainError} When permission creation fails
25
+ * @throws {NetworkError} When IPFS upload fails
26
+ *
27
+ * @example
28
+ * ```typescript
29
+ * const result = await sdk.runtimePermissions.createPermission({
30
+ * datasetId: 123n,
31
+ * grantee: "0x742d35Cc...",
32
+ * task: "vanaorg/vana-task-demo:latest",
33
+ * operation: "aggregate_keywords",
34
+ * pricing: {
35
+ * price_per_file_vana: 0.1,
36
+ * minimum_price_vana: 0.01,
37
+ * maximum_price_vana: 100
38
+ * },
39
+ * parameters: {
40
+ * maxFiles: 1000
41
+ * },
42
+ * });
43
+ * ```
44
+ */
45
+ async createPermission(params) {
46
+ this.assertWallet();
47
+ try {
48
+ const grantFile = createRuntimeGrantFile(params);
49
+ let grantUrl = params.grantUrl;
50
+ if (!grantUrl) {
51
+ if (!this.context.relayer) {
52
+ throw new NetworkError(
53
+ "No relayer configured and no grantUrl provided. Configure relayer or provide grantUrl parameter."
54
+ );
55
+ }
56
+ const request = {
57
+ type: "direct",
58
+ operation: "storeGrantFile",
59
+ params: grantFile
60
+ };
61
+ const response = await this.context.relayer(request);
62
+ if (response.type === "error") {
63
+ throw new NetworkError(
64
+ `Failed to store grant file: ${response.error}`
65
+ );
66
+ }
67
+ if (response.type === "direct" && typeof response.result === "object" && response.result !== null && "url" in response.result && typeof response.result.url === "string") {
68
+ grantUrl = response.result.url;
69
+ } else {
70
+ throw new NetworkError("Upload succeeded but no URL was returned");
71
+ }
72
+ }
73
+ const chainId = await this.context.publicClient.getChainId();
74
+ const contractAddress = getContractAddress(
75
+ chainId,
76
+ "VanaRuntimePermissions"
77
+ );
78
+ const abi = getAbi("VanaRuntimePermissions");
79
+ const granteeId = BigInt(params.grantee);
80
+ const startBlock = await this.context.publicClient.getBlockNumber();
81
+ const endBlock = 2n ** 256n - 1n;
82
+ const account = this.context.walletClient?.account ?? this.context.userAddress;
83
+ const hash = await this.context.walletClient.writeContract({
84
+ address: contractAddress,
85
+ abi,
86
+ functionName: "createPermission",
87
+ args: [params.datasetId, granteeId, grantUrl, startBlock, endBlock],
88
+ account,
89
+ chain: this.context.walletClient?.chain ?? null
90
+ });
91
+ await this.context.publicClient.waitForTransactionReceipt({
92
+ hash
93
+ });
94
+ const permissionId = 0n;
95
+ return {
96
+ permissionId,
97
+ hash,
98
+ grantUrl
99
+ };
100
+ } catch (error) {
101
+ if (error instanceof NetworkError) {
102
+ throw error;
103
+ }
104
+ if (error instanceof Error) {
105
+ throw new BlockchainError(
106
+ `Failed to create runtime permission: ${error.message}`,
107
+ error
108
+ );
109
+ }
110
+ throw new BlockchainError(
111
+ "Failed to create runtime permission with unknown error"
112
+ );
113
+ }
114
+ }
115
+ /**
116
+ * Get permission by ID
117
+ *
118
+ * @remarks
119
+ * Fetches permission details from the VanaRuntimePermissions contract.
120
+ * The returned permission contains an IPFS hash in the grant field,
121
+ * which can be resolved using fetchGrant().
122
+ *
123
+ * @param permissionId - Permission identifier
124
+ * @returns Permission details including dataset, grantee, and grant hash
125
+ *
126
+ * @example
127
+ * ```typescript
128
+ * const permission = await sdk.runtimePermissions.getPermission(1024n);
129
+ * console.log(`Dataset: ${permission.datasetId}`);
130
+ * console.log(`Grant: ${permission.grant}`); // IPFS hash
131
+ *
132
+ * // Resolve full grant details
133
+ * const grantFile = await sdk.runtimePermissions.fetchGrant(permission);
134
+ * console.log(`Price: ${grantFile.pricing.price_per_file_vana} VANA`);
135
+ * ```
136
+ */
137
+ async getPermission(permissionId) {
138
+ const chainId = await this.context.publicClient.getChainId();
139
+ const contractAddress = getContractAddress(
140
+ chainId,
141
+ "VanaRuntimePermissions"
142
+ );
143
+ const abi = getAbi("VanaRuntimePermissions");
144
+ const contract = getContract({
145
+ address: contractAddress,
146
+ abi,
147
+ client: this.context.publicClient
148
+ });
149
+ return await contract.read.getPermission([
150
+ permissionId
151
+ ]);
152
+ }
153
+ /**
154
+ * Check if permission is active (not expired)
155
+ *
156
+ * @remarks
157
+ * Returns true if the current block number is between startBlock and endBlock.
158
+ *
159
+ * @param permissionId - Permission identifier
160
+ * @returns Whether permission is currently active
161
+ *
162
+ * @example
163
+ * ```typescript
164
+ * const isActive = await sdk.runtimePermissions.isPermissionActive(1024n);
165
+ * if (isActive) {
166
+ * console.log("Permission is valid");
167
+ * } else {
168
+ * console.log("Permission has expired");
169
+ * }
170
+ * ```
171
+ */
172
+ async isPermissionActive(permissionId) {
173
+ const chainId = await this.context.publicClient.getChainId();
174
+ const contractAddress = getContractAddress(
175
+ chainId,
176
+ "VanaRuntimePermissions"
177
+ );
178
+ const abi = getAbi("VanaRuntimePermissions");
179
+ const contract = getContract({
180
+ address: contractAddress,
181
+ abi,
182
+ client: this.context.publicClient
183
+ });
184
+ return await contract.read.isPermissionActive([permissionId]);
185
+ }
186
+ /**
187
+ * Get all permissions for a dataset
188
+ *
189
+ * @remarks
190
+ * Returns an array of permissions that have been granted for the specified dataset.
191
+ * Useful for dataset owners to view all active permissions.
192
+ *
193
+ * @param datasetId - Dataset identifier
194
+ * @returns Array of runtime permissions
195
+ *
196
+ * @example
197
+ * ```typescript
198
+ * const permissions = await sdk.runtimePermissions.getDatasetPermissions(123n);
199
+ * console.log(`Found ${permissions.length} permissions`);
200
+ *
201
+ * // Access each permission directly
202
+ * for (const permission of permissions) {
203
+ * console.log(`Permission ${permission.id}: ${permission.grant}`);
204
+ * }
205
+ * ```
206
+ */
207
+ async getDatasetPermissions(datasetId) {
208
+ const chainId = await this.context.publicClient.getChainId();
209
+ const contractAddress = getContractAddress(
210
+ chainId,
211
+ "VanaRuntimePermissions"
212
+ );
213
+ const abi = getAbi("VanaRuntimePermissions");
214
+ const contract = getContract({
215
+ address: contractAddress,
216
+ abi,
217
+ client: this.context.publicClient
218
+ });
219
+ return await contract.read.getDatasetPermissions([
220
+ datasetId
221
+ ]);
222
+ }
223
+ /**
224
+ * Fetch and parse grant file from IPFS
225
+ *
226
+ * @remarks
227
+ * Resolves the IPFS hash stored in permission.grant and returns the
228
+ * full grant file with pricing and operation details.
229
+ *
230
+ * @param permission - Permission with grant URL/hash
231
+ * @returns Parsed grant file with pricing and parameters
232
+ * @throws {NetworkError} When IPFS fetch fails
233
+ *
234
+ * @example
235
+ * ```typescript
236
+ * const permission = await sdk.runtimePermissions.getPermission(1024n);
237
+ * const grant = await sdk.runtimePermissions.fetchGrant(permission);
238
+ *
239
+ * console.log(`Task: ${grant.task}`);
240
+ * console.log(`Operation: ${grant.operation}`);
241
+ * console.log(`Price: ${grant.pricing.price_per_file_vana} VANA per file`);
242
+ * ```
243
+ */
244
+ async fetchGrant(permission) {
245
+ return await retrieveRuntimeGrantFile(permission.grant);
246
+ }
247
+ }
248
+ export {
249
+ RuntimePermissionsController
250
+ };
251
+ //# sourceMappingURL=runtimePermissions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/controllers/runtimePermissions.ts"],"sourcesContent":["import { getContract } from \"viem\";\nimport { BaseController } from \"./base\";\nimport type {\n RuntimePermissionParams,\n RuntimePermission,\n RuntimeGrantFile,\n RuntimePermissionResult,\n} from \"../types/runtimePermissions\";\nimport type { UnifiedRelayerRequest } from \"../types/relayer\";\nimport {\n createRuntimeGrantFile,\n retrieveRuntimeGrantFile,\n} from \"../utils/runtimeGrantFiles\";\nimport { BlockchainError, NetworkError } from \"../errors\";\nimport { getContractAddress } from \"../generated/addresses\";\nimport { getAbi } from \"../generated/abi\";\n\n/**\n * Controller for VanaRuntimePermissions contract\n *\n * @remarks\n * Manages permissions for data access via Vana Runtime. Allows dataset owners\n * to create monetized access permissions for data consumers to execute operations\n * on their datasets within TEE environments.\n *\n * Follows the same pattern as PermissionsController but for runtime-specific permissions.\n *\n * @category Controllers\n * @example\n * ```typescript\n * // Create a permission for a data consumer\n * const result = await sdk.runtimePermissions.createPermission({\n * datasetId: 123n,\n * grantee: \"0x...\",\n * task: \"vanaorg/vana-task-demo:latest\",\n * operation: \"aggregate_keywords\",\n * pricing: { price_per_file_vana: 0.1 }\n * });\n *\n * console.log(`Permission created with ID: ${result.permissionId}`);\n * console.log(`Grant stored at: ${result.grantUrl}`);\n * ```\n */\nexport class RuntimePermissionsController extends BaseController {\n /**\n * Create a new runtime permission grant\n *\n * @remarks\n * This method:\n * 1. Creates a grant file with pricing and operation details\n * 2. Uploads the grant to IPFS (via relayer if available)\n * 3. Calls VanaRuntimePermissions.createPermission() on-chain\n * 4. Waits for transaction confirmation\n * 5. Returns the permission ID and grant URL\n *\n * @param params - Permission parameters including dataset, grantee, pricing\n * @returns Permission ID, transaction hash, and grant URL\n * @throws {BlockchainError} When permission creation fails\n * @throws {NetworkError} When IPFS upload fails\n *\n * @example\n * ```typescript\n * const result = await sdk.runtimePermissions.createPermission({\n * datasetId: 123n,\n * grantee: \"0x742d35Cc...\",\n * task: \"vanaorg/vana-task-demo:latest\",\n * operation: \"aggregate_keywords\",\n * pricing: {\n * price_per_file_vana: 0.1,\n * minimum_price_vana: 0.01,\n * maximum_price_vana: 100\n * },\n * parameters: {\n * maxFiles: 1000\n * },\n * });\n * ```\n */\n async createPermission(\n params: RuntimePermissionParams,\n ): Promise<RuntimePermissionResult> {\n this.assertWallet();\n\n try {\n // 1. Create grant file\n const grantFile = createRuntimeGrantFile(params);\n\n // 2. Upload to IPFS (via relayer if available, or use provided URL)\n let grantUrl = params.grantUrl;\n if (!grantUrl) {\n if (!this.context.relayer) {\n throw new NetworkError(\n \"No relayer configured and no grantUrl provided. \" +\n \"Configure relayer or provide grantUrl parameter.\",\n );\n }\n\n // Store via relayer\n const request: UnifiedRelayerRequest = {\n type: \"direct\",\n operation: \"storeGrantFile\",\n params: grantFile,\n };\n const response = await this.context.relayer(request);\n if (response.type === \"error\") {\n throw new NetworkError(\n `Failed to store grant file: ${response.error}`,\n );\n }\n if (\n response.type === \"direct\" &&\n typeof response.result === \"object\" &&\n response.result !== null &&\n \"url\" in response.result &&\n typeof response.result.url === \"string\"\n ) {\n grantUrl = response.result.url;\n } else {\n throw new NetworkError(\"Upload succeeded but no URL was returned\");\n }\n }\n\n // 3. Get contract address and ABI\n const chainId = await this.context.publicClient.getChainId();\n const contractAddress = getContractAddress(\n chainId,\n \"VanaRuntimePermissions\",\n );\n const abi = getAbi(\"VanaRuntimePermissions\");\n\n // 4. Convert grantee address to ID\n // NOTE: For MVP, we use address as ID. In production, this should\n // query a grantee registry contract or use a proper ID scheme.\n const granteeId = BigInt(params.grantee);\n\n // 5. Get current block for startBlock\n const startBlock = await this.context.publicClient.getBlockNumber();\n\n // 6. Set endBlock to max uint256 (never expires)\n // Note: Unlike DataPortabilityPermissions which has no on-chain expiration,\n // VanaRuntimePermissions contract requires endBlock. We always set it to\n // max uint256 since we have no way to predict future block numbers from timestamps.\n const endBlock = 2n ** 256n - 1n;\n\n // 7. Call contract to create permission\n const account =\n this.context.walletClient?.account ?? this.context.userAddress;\n\n const hash = await this.context.walletClient.writeContract({\n address: contractAddress,\n abi,\n functionName: \"createPermission\",\n args: [params.datasetId, granteeId, grantUrl, startBlock, endBlock],\n account,\n chain: this.context.walletClient?.chain ?? null,\n });\n\n // 8. Wait for transaction confirmation\n await this.context.publicClient.waitForTransactionReceipt({\n hash,\n });\n\n // 9. Parse PermissionCreated event to get permission ID\n // For MVP, we'll use a placeholder. In production, parse event logs.\n // TODO: Add proper event parsing from receipt.logs\n const permissionId = 0n; // Placeholder\n\n return {\n permissionId,\n hash,\n grantUrl,\n };\n } catch (error) {\n if (error instanceof NetworkError) {\n throw error;\n }\n if (error instanceof Error) {\n throw new BlockchainError(\n `Failed to create runtime permission: ${error.message}`,\n error,\n );\n }\n throw new BlockchainError(\n \"Failed to create runtime permission with unknown error\",\n );\n }\n }\n\n /**\n * Get permission by ID\n *\n * @remarks\n * Fetches permission details from the VanaRuntimePermissions contract.\n * The returned permission contains an IPFS hash in the grant field,\n * which can be resolved using fetchGrant().\n *\n * @param permissionId - Permission identifier\n * @returns Permission details including dataset, grantee, and grant hash\n *\n * @example\n * ```typescript\n * const permission = await sdk.runtimePermissions.getPermission(1024n);\n * console.log(`Dataset: ${permission.datasetId}`);\n * console.log(`Grant: ${permission.grant}`); // IPFS hash\n *\n * // Resolve full grant details\n * const grantFile = await sdk.runtimePermissions.fetchGrant(permission);\n * console.log(`Price: ${grantFile.pricing.price_per_file_vana} VANA`);\n * ```\n */\n async getPermission(permissionId: bigint): Promise<RuntimePermission> {\n const chainId = await this.context.publicClient.getChainId();\n const contractAddress = getContractAddress(\n chainId,\n \"VanaRuntimePermissions\",\n );\n const abi = getAbi(\"VanaRuntimePermissions\");\n\n const contract = getContract({\n address: contractAddress,\n abi,\n client: this.context.publicClient,\n });\n\n return (await contract.read.getPermission([\n permissionId,\n ])) as RuntimePermission;\n }\n\n /**\n * Check if permission is active (not expired)\n *\n * @remarks\n * Returns true if the current block number is between startBlock and endBlock.\n *\n * @param permissionId - Permission identifier\n * @returns Whether permission is currently active\n *\n * @example\n * ```typescript\n * const isActive = await sdk.runtimePermissions.isPermissionActive(1024n);\n * if (isActive) {\n * console.log(\"Permission is valid\");\n * } else {\n * console.log(\"Permission has expired\");\n * }\n * ```\n */\n async isPermissionActive(permissionId: bigint): Promise<boolean> {\n const chainId = await this.context.publicClient.getChainId();\n const contractAddress = getContractAddress(\n chainId,\n \"VanaRuntimePermissions\",\n );\n const abi = getAbi(\"VanaRuntimePermissions\");\n\n const contract = getContract({\n address: contractAddress,\n abi,\n client: this.context.publicClient,\n });\n\n return (await contract.read.isPermissionActive([permissionId])) as boolean;\n }\n\n /**\n * Get all permissions for a dataset\n *\n * @remarks\n * Returns an array of permissions that have been granted for the specified dataset.\n * Useful for dataset owners to view all active permissions.\n *\n * @param datasetId - Dataset identifier\n * @returns Array of runtime permissions\n *\n * @example\n * ```typescript\n * const permissions = await sdk.runtimePermissions.getDatasetPermissions(123n);\n * console.log(`Found ${permissions.length} permissions`);\n *\n * // Access each permission directly\n * for (const permission of permissions) {\n * console.log(`Permission ${permission.id}: ${permission.grant}`);\n * }\n * ```\n */\n async getDatasetPermissions(datasetId: bigint): Promise<RuntimePermission[]> {\n const chainId = await this.context.publicClient.getChainId();\n const contractAddress = getContractAddress(\n chainId,\n \"VanaRuntimePermissions\",\n );\n const abi = getAbi(\"VanaRuntimePermissions\");\n\n const contract = getContract({\n address: contractAddress,\n abi,\n client: this.context.publicClient,\n });\n\n return (await contract.read.getDatasetPermissions([\n datasetId,\n ])) as RuntimePermission[];\n }\n\n /**\n * Fetch and parse grant file from IPFS\n *\n * @remarks\n * Resolves the IPFS hash stored in permission.grant and returns the\n * full grant file with pricing and operation details.\n *\n * @param permission - Permission with grant URL/hash\n * @returns Parsed grant file with pricing and parameters\n * @throws {NetworkError} When IPFS fetch fails\n *\n * @example\n * ```typescript\n * const permission = await sdk.runtimePermissions.getPermission(1024n);\n * const grant = await sdk.runtimePermissions.fetchGrant(permission);\n *\n * console.log(`Task: ${grant.task}`);\n * console.log(`Operation: ${grant.operation}`);\n * console.log(`Price: ${grant.pricing.price_per_file_vana} VANA per file`);\n * ```\n */\n async fetchGrant(permission: RuntimePermission): Promise<RuntimeGrantFile> {\n return await retrieveRuntimeGrantFile(permission.grant);\n }\n}\n"],"mappings":"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","names":[]}
@@ -0,0 +1 @@
1
+ export {};
@@ -31,7 +31,8 @@ __export(schemas_exports, {
31
31
  SchemaController: () => SchemaController
32
32
  });
33
33
  module.exports = __toCommonJS(schemas_exports);
34
- var import_addresses = require("../config/addresses");
34
+ var import_base = require("./base");
35
+ var import_addresses = require("../generated/addresses");
35
36
  var import_abi = require("../generated/abi");
36
37
  var import_multicall = require("../utils/multicall");
37
38
  var import_schemaValidation = require("../utils/schemaValidation");
@@ -39,48 +40,51 @@ var import_registry = require("../utils/blockchain/registry");
39
40
  var import_subgraph = require("../generated/subgraph");
40
41
  var import_graphql = require("graphql");
41
42
  var import_urlResolver = require("../utils/urlResolver");
42
- class SchemaController {
43
+ class SchemaController extends import_base.BaseController {
43
44
  constructor(context) {
44
- this.context = context;
45
+ super(context);
45
46
  }
46
47
  /**
47
- * Creates a new schema with automatic validation and IPFS upload.
48
+ * Creates a schema with validation and IPFS upload.
48
49
  *
49
50
  * @remarks
50
- * This is the primary method for creating schemas on the Vana network. It handles
51
- * the complete workflow including schema validation, IPFS upload, and blockchain
52
- * registration. The schema definition is stored unencrypted on IPFS to enable
53
- * public access and reusability.
51
+ * Primary method for schema creation. Validates definition,
52
+ * uploads to IPFS (unencrypted for reusability), and registers
53
+ * on blockchain. Schema becomes immediately available network-wide.
54
54
  *
55
- * The method automatically:
56
- * - Validates the schema definition against the Vana metaschema
57
- * - Uploads the definition to IPFS to generate a permanent URL
58
- * - Registers the schema on the blockchain with the generated URL
55
+ * @param params - Creation configuration
56
+ * @param params.name - Human-readable schema name
57
+ * @param params.dialect - Schema format (`"json"` or `"sqlite"`)
58
+ * @param params.schema - Definition object or JSON string
59
+ *
60
+ * @returns Schema ID, IPFS URL, and transaction hash
61
+ *
62
+ * @throws {SchemaValidationError} Invalid schema definition.
63
+ * Verify schema follows JSON Schema or SQLite format.
64
+ * @throws {Error} Storage not configured.
65
+ * Configure storage providers in VanaConfig.
66
+ * @throws {Error} IPFS upload failed.
67
+ * Check network and storage provider status.
59
68
  *
60
- * @param params - Schema creation parameters including name, dialect, and definition
61
- * @returns Promise resolving to creation results with schema ID and transaction hash
62
- * @throws {SchemaValidationError} When the schema definition is invalid
63
- * @throws {Error} When IPFS upload or blockchain registration fails
64
69
  * @example
65
70
  * ```typescript
66
- * // Create a JSON schema for user profiles
67
71
  * const result = await vana.schemas.create({
68
72
  * name: "User Profile",
69
73
  * dialect: "json",
70
74
  * schema: {
71
75
  * type: "object",
72
76
  * properties: {
73
- * name: { type: "string" },
77
+ * name: { type: "string", minLength: 1 },
74
78
  * age: { type: "number", minimum: 0 }
75
79
  * },
76
80
  * required: ["name"]
77
81
  * }
78
82
  * });
79
- *
80
- * console.log(`Schema created with ID: ${result.schemaId}`);
83
+ * console.log(`Schema ${result.schemaId} at ${result.definitionUrl}`);
81
84
  * ```
82
85
  */
83
86
  async create(params) {
87
+ this.assertWallet();
84
88
  const { name, dialect, schema } = params;
85
89
  try {
86
90
  let schemaDefinition;
@@ -118,11 +122,9 @@ class SchemaController {
118
122
  });
119
123
  const uploadResult = await this.context.storageManager.upload(
120
124
  schemaBlob,
121
- `${name.replace(/[^a-zA-Z0-9]/g, "_")}.json`,
122
- "ipfs"
123
- // Use IPFS for public schema storage
125
+ `${name.replace(/[^a-zA-Z0-9]/g, "_")}.json`
124
126
  );
125
- const chainId = this.context.walletClient.chain?.id;
127
+ const chainId = this.context.walletClient?.chain?.id ?? this.context.publicClient.chain?.id;
126
128
  if (!chainId) {
127
129
  throw new Error("Chain ID not available");
128
130
  }
@@ -131,8 +133,8 @@ class SchemaController {
131
133
  "DataRefinerRegistry"
132
134
  );
133
135
  const dataRefinerRegistryAbi = (0, import_abi.getAbi)("DataRefinerRegistry");
134
- const account = this.context.walletClient.account ?? await this.getUserAddress();
135
- const from = typeof account === "string" ? account : account.address;
136
+ const account = this.context.walletClient.account ?? this.context.userAddress;
137
+ const from = typeof account === "string" ? account : account?.address;
136
138
  const hash = await this.context.walletClient.writeContract({
137
139
  address: dataRefinerRegistryAddress,
138
140
  abi: dataRefinerRegistryAbi,
@@ -300,8 +302,18 @@ class SchemaController {
300
302
  * ```
301
303
  */
302
304
  async list(options = {}) {
303
- const { limit = 100, offset = 0, includeDefinitions = false } = options;
305
+ const {
306
+ limit = 100,
307
+ offset = 0,
308
+ includeDefinitions = false,
309
+ minBlock,
310
+ waitForSync
311
+ } = options;
304
312
  const subgraphUrl = options.subgraphUrl ?? this.context.subgraphUrl;
313
+ if (subgraphUrl && (minBlock || waitForSync)) {
314
+ const { checkSubgraphConsistency } = await import("../utils/subgraphConsistency");
315
+ await checkSubgraphConsistency(subgraphUrl, { minBlock, waitForSync });
316
+ }
305
317
  if (subgraphUrl) {
306
318
  try {
307
319
  return await this._listSchemasViaSubgraph({
@@ -320,7 +332,7 @@ class SchemaController {
320
332
  if (end <= start) {
321
333
  return [];
322
334
  }
323
- const chainId = this.context.walletClient.chain?.id;
335
+ const chainId = this.context.walletClient?.chain?.id ?? this.context.publicClient.chain?.id;
324
336
  if (!chainId) {
325
337
  throw new Error("Chain ID not available");
326
338
  }
@@ -372,6 +384,75 @@ class SchemaController {
372
384
  );
373
385
  }
374
386
  }
387
+ /**
388
+ * Retrieves schema definition content directly from a URL.
389
+ *
390
+ * @remarks
391
+ * Use this method to fetch and format schema definitions from IPFS or HTTP URLs.
392
+ * Automatically uses the SDK's configured download proxy to bypass CORS restrictions.
393
+ * Returns formatted JSON string if content is valid JSON, otherwise raw content.
394
+ *
395
+ * @param url - The definition URL (typically from schema.definitionUrl)
396
+ * @returns Promise resolving to the formatted definition content
397
+ * @throws {Error} When the content cannot be fetched or network errors occur
398
+ * @example
399
+ * ```typescript
400
+ * const schema = await vana.schemas.get(1);
401
+ * const definition = await vana.schemas.retrieveDefinition(schema.definitionUrl);
402
+ * console.log(definition); // Pretty-printed JSON
403
+ * ```
404
+ */
405
+ async retrieveDefinition(url) {
406
+ try {
407
+ const { universalFetch } = await import("../utils/download");
408
+ const response = await universalFetch(url, this.context.downloadRelayer);
409
+ if (!response.ok) {
410
+ throw new Error(`HTTP ${response.status}: ${response.statusText}`);
411
+ }
412
+ const text = await response.text();
413
+ try {
414
+ const json = JSON.parse(text);
415
+ return JSON.stringify(json, null, 2);
416
+ } catch {
417
+ return text;
418
+ }
419
+ } catch (error) {
420
+ throw new Error(
421
+ `Failed to retrieve schema definition: ${error instanceof Error ? error.message : "Unknown error"}`
422
+ );
423
+ }
424
+ }
425
+ /**
426
+ * Retrieves refinement instruction content from a URL.
427
+ *
428
+ * @remarks
429
+ * Use this method to fetch refinement instructions from IPFS or HTTP URLs.
430
+ * Temporarily housed in SchemaController since refiners use schemas and we don't
431
+ * have a dedicated RefinerController yet. Uses the SDK's configured download proxy.
432
+ *
433
+ * @param url - The instruction URL (typically from refiner.refinementInstructionUrl)
434
+ * @returns Promise resolving to the formatted instruction content
435
+ * @throws {Error} When the content cannot be fetched or network errors occur
436
+ * @example
437
+ * ```typescript
438
+ * const instructions = await vana.schemas.retrieveRefinementInstructions(
439
+ * refiner.refinementInstructionUrl
440
+ * );
441
+ * console.log(instructions);
442
+ * ```
443
+ */
444
+ async retrieveRefinementInstructions(url) {
445
+ try {
446
+ return await this.retrieveDefinition(url);
447
+ } catch (error) {
448
+ throw new Error(
449
+ `Failed to retrieve refinement instructions: ${error instanceof Error ? error.message.replace(
450
+ "Failed to retrieve schema definition: ",
451
+ ""
452
+ ) : "Unknown error"}`
453
+ );
454
+ }
455
+ }
375
456
  /**
376
457
  * Adds a schema using the legacy method (low-level API).
377
458
  *
@@ -380,8 +461,9 @@ class SchemaController {
380
461
  * @returns Promise resolving to the add schema result
381
462
  */
382
463
  async addSchema(params) {
464
+ this.assertWallet();
383
465
  try {
384
- const chainId = this.context.walletClient.chain?.id;
466
+ const chainId = this.context.walletClient?.chain?.id ?? this.context.publicClient.chain?.id;
385
467
  if (!chainId) {
386
468
  throw new Error("Chain ID not available");
387
469
  }
@@ -390,8 +472,8 @@ class SchemaController {
390
472
  "DataRefinerRegistry"
391
473
  );
392
474
  const dataRefinerRegistryAbi = (0, import_abi.getAbi)("DataRefinerRegistry");
393
- const account = this.context.walletClient.account ?? await this.getUserAddress();
394
- const from = typeof account === "string" ? account : account.address;
475
+ const account = this.context.walletClient.account ?? this.context.userAddress;
476
+ const from = typeof account === "string" ? account : account?.address;
395
477
  const hash = await this.context.walletClient.writeContract({
396
478
  address: dataRefinerRegistryAddress,
397
479
  abi: dataRefinerRegistryAbi,
@@ -557,18 +639,6 @@ class SchemaController {
557
639
  * @private
558
640
  * @returns Promise resolving to the user's address
559
641
  */
560
- async getUserAddress() {
561
- if (!this.context.walletClient.account) {
562
- throw new Error("No wallet account connected");
563
- }
564
- if (typeof this.context.walletClient.account === "string") {
565
- return this.context.walletClient.account;
566
- }
567
- if (typeof this.context.walletClient.account === "object" && this.context.walletClient.account.address) {
568
- return this.context.walletClient.account.address;
569
- }
570
- throw new Error("Unable to determine wallet address");
571
- }
572
642
  /**
573
643
  * Fetches and attaches definitions to an array of schemas.
574
644
  *