@opendatalabs/vana-sdk 0.1.0-alpha.7e4db82 → 0.1.0-alpha.7ee7635

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 (796) hide show
  1. package/README.md +98 -36
  2. package/dist/browser.cjs +29 -0
  3. package/dist/browser.cjs.map +1 -0
  4. package/dist/browser.d.cts +2 -0
  5. package/dist/browser.d.ts +2 -0
  6. package/dist/browser.js +5 -0
  7. package/dist/browser.js.map +1 -0
  8. package/dist/chains/definitions.cjs +92 -0
  9. package/dist/chains/definitions.cjs.map +1 -0
  10. package/dist/chains/definitions.d.cts +53 -0
  11. package/dist/chains/definitions.d.ts +53 -0
  12. package/dist/chains/definitions.js +64 -0
  13. package/dist/chains/definitions.js.map +1 -0
  14. package/dist/chains/index.cjs +37 -0
  15. package/dist/chains/index.cjs.map +1 -0
  16. package/dist/chains/index.d.cts +2 -0
  17. package/dist/chains/index.d.ts +2 -0
  18. package/dist/chains/index.js +15 -0
  19. package/dist/chains/index.js.map +1 -0
  20. package/dist/chains.browser.cjs +6 -65
  21. package/dist/chains.browser.cjs.map +1 -1
  22. package/dist/chains.browser.d.cts +2 -53
  23. package/dist/chains.browser.d.ts +2 -53
  24. package/dist/chains.browser.js +7 -57
  25. package/dist/chains.browser.js.map +1 -1
  26. package/dist/chains.cjs +6 -65
  27. package/dist/chains.cjs.map +1 -1
  28. package/dist/chains.d.cts +1 -1
  29. package/dist/chains.d.ts +1 -1
  30. package/dist/chains.js +7 -57
  31. package/dist/chains.js.map +1 -1
  32. package/dist/chains.node.cjs +6 -65
  33. package/dist/chains.node.cjs.map +1 -1
  34. package/dist/chains.node.d.cts +1 -1
  35. package/dist/chains.node.d.ts +1 -1
  36. package/dist/chains.node.js +7 -57
  37. package/dist/chains.node.js.map +1 -1
  38. package/dist/config/addresses.cjs +325 -0
  39. package/dist/config/addresses.cjs.map +1 -0
  40. package/dist/config/addresses.d.cts +401 -0
  41. package/dist/config/addresses.d.ts +401 -0
  42. package/dist/config/addresses.js +295 -0
  43. package/dist/config/addresses.js.map +1 -0
  44. package/dist/config/chains.cjs +93 -0
  45. package/dist/config/chains.cjs.map +1 -0
  46. package/dist/config/chains.d.cts +85 -0
  47. package/dist/config/chains.d.ts +85 -0
  48. package/dist/config/chains.js +67 -0
  49. package/dist/config/chains.js.map +1 -0
  50. package/dist/config/features.cjs +52 -0
  51. package/dist/config/features.cjs.map +1 -0
  52. package/dist/config/features.d.cts +64 -0
  53. package/dist/config/features.d.ts +64 -0
  54. package/dist/config/features.js +28 -0
  55. package/dist/config/features.js.map +1 -0
  56. package/dist/contracts/contractController.cjs +126 -0
  57. package/dist/contracts/contractController.cjs.map +1 -0
  58. package/dist/contracts/contractController.d.cts +117 -0
  59. package/dist/contracts/contractController.d.ts +117 -0
  60. package/dist/contracts/contractController.js +103 -0
  61. package/dist/contracts/contractController.js.map +1 -0
  62. package/dist/controllers/data.cjs +2251 -0
  63. package/dist/controllers/data.cjs.map +1 -0
  64. package/dist/controllers/data.d.cts +915 -0
  65. package/dist/controllers/data.d.ts +915 -0
  66. package/dist/controllers/data.js +2234 -0
  67. package/dist/controllers/data.js.map +1 -0
  68. package/dist/controllers/permissions.cjs +3949 -0
  69. package/dist/controllers/permissions.cjs.map +1 -0
  70. package/dist/controllers/permissions.d.cts +1383 -0
  71. package/dist/controllers/permissions.d.ts +1383 -0
  72. package/dist/controllers/permissions.js +3925 -0
  73. package/dist/controllers/permissions.js.map +1 -0
  74. package/dist/controllers/protocol.cjs +179 -0
  75. package/dist/controllers/protocol.cjs.map +1 -0
  76. package/dist/controllers/protocol.d.cts +188 -0
  77. package/dist/controllers/protocol.d.ts +188 -0
  78. package/dist/controllers/protocol.js +162 -0
  79. package/dist/controllers/protocol.js.map +1 -0
  80. package/dist/controllers/schemas.cjs +606 -0
  81. package/dist/controllers/schemas.cjs.map +1 -0
  82. package/dist/controllers/schemas.d.cts +260 -0
  83. package/dist/controllers/schemas.d.ts +260 -0
  84. package/dist/controllers/schemas.js +582 -0
  85. package/dist/controllers/schemas.js.map +1 -0
  86. package/dist/controllers/server.cjs +427 -0
  87. package/dist/controllers/server.cjs.map +1 -0
  88. package/dist/controllers/server.d.cts +230 -0
  89. package/dist/controllers/server.d.ts +230 -0
  90. package/dist/controllers/server.js +408 -0
  91. package/dist/controllers/server.js.map +1 -0
  92. package/dist/core/apiClient.cjs +325 -0
  93. package/dist/core/apiClient.cjs.map +1 -0
  94. package/dist/core/apiClient.d.cts +165 -0
  95. package/dist/core/apiClient.d.ts +165 -0
  96. package/dist/core/apiClient.js +309 -0
  97. package/dist/core/apiClient.js.map +1 -0
  98. package/dist/core/client.cjs +70 -0
  99. package/dist/core/client.cjs.map +1 -0
  100. package/dist/core/client.d.cts +92 -0
  101. package/dist/core/client.d.ts +92 -0
  102. package/dist/core/client.js +47 -0
  103. package/dist/core/client.js.map +1 -0
  104. package/dist/core/generics.cjs +388 -0
  105. package/dist/core/generics.cjs.map +1 -0
  106. package/dist/core/generics.d.cts +120 -0
  107. package/dist/core/generics.d.ts +120 -0
  108. package/dist/core/generics.js +366 -0
  109. package/dist/core/generics.js.map +1 -0
  110. package/dist/core.cjs +658 -0
  111. package/dist/core.cjs.map +1 -0
  112. package/dist/core.d.cts +493 -0
  113. package/dist/core.d.ts +493 -0
  114. package/dist/core.js +636 -0
  115. package/dist/core.js.map +1 -0
  116. package/dist/crypto/ecies/__tests__/test-vectors.cjs +102 -0
  117. package/dist/crypto/ecies/__tests__/test-vectors.cjs.map +1 -0
  118. package/dist/crypto/ecies/__tests__/test-vectors.d.cts +40 -0
  119. package/dist/crypto/ecies/__tests__/test-vectors.d.ts +40 -0
  120. package/dist/crypto/ecies/__tests__/test-vectors.js +77 -0
  121. package/dist/crypto/ecies/__tests__/test-vectors.js.map +1 -0
  122. package/dist/crypto/ecies/base.cjs +231 -0
  123. package/dist/crypto/ecies/base.cjs.map +1 -0
  124. package/dist/crypto/ecies/base.d.cts +143 -0
  125. package/dist/crypto/ecies/base.d.ts +143 -0
  126. package/dist/crypto/ecies/base.js +211 -0
  127. package/dist/crypto/ecies/base.js.map +1 -0
  128. package/dist/crypto/ecies/browser.cjs +164 -0
  129. package/dist/crypto/ecies/browser.cjs.map +1 -0
  130. package/dist/crypto/ecies/browser.d.cts +48 -0
  131. package/dist/crypto/ecies/browser.d.ts +48 -0
  132. package/dist/crypto/ecies/browser.js +130 -0
  133. package/dist/crypto/ecies/browser.js.map +1 -0
  134. package/dist/crypto/ecies/constants.cjs +131 -0
  135. package/dist/crypto/ecies/constants.cjs.map +1 -0
  136. package/dist/crypto/ecies/constants.d.cts +122 -0
  137. package/dist/crypto/ecies/constants.d.ts +122 -0
  138. package/dist/crypto/ecies/constants.js +101 -0
  139. package/dist/crypto/ecies/constants.js.map +1 -0
  140. package/dist/crypto/ecies/index.cjs +35 -0
  141. package/dist/crypto/ecies/index.cjs.map +1 -0
  142. package/dist/crypto/ecies/index.d.cts +1 -0
  143. package/dist/crypto/ecies/index.d.ts +1 -0
  144. package/dist/crypto/ecies/index.js +13 -0
  145. package/dist/crypto/ecies/index.js.map +1 -0
  146. package/dist/crypto/ecies/interface.cjs +88 -0
  147. package/dist/crypto/ecies/interface.cjs.map +1 -0
  148. package/dist/crypto/ecies/interface.d.cts +176 -0
  149. package/dist/crypto/ecies/interface.d.ts +176 -0
  150. package/dist/crypto/ecies/interface.js +61 -0
  151. package/dist/crypto/ecies/interface.js.map +1 -0
  152. package/dist/crypto/ecies/node.cjs +166 -0
  153. package/dist/crypto/ecies/node.cjs.map +1 -0
  154. package/dist/crypto/ecies/node.d.cts +50 -0
  155. package/dist/crypto/ecies/node.d.ts +50 -0
  156. package/dist/crypto/ecies/node.js +144 -0
  157. package/dist/crypto/ecies/node.js.map +1 -0
  158. package/dist/crypto/ecies/test-vectors/eccrypto-vectors.d.cts +76 -0
  159. package/dist/crypto/ecies/test-vectors/eccrypto-vectors.d.ts +76 -0
  160. package/dist/crypto/ecies/test-vectors/eccrypto-vectors.json +72 -0
  161. package/dist/crypto/ecies/utils.cjs +91 -0
  162. package/dist/crypto/ecies/utils.cjs.map +1 -0
  163. package/dist/crypto/ecies/utils.d.cts +67 -0
  164. package/dist/crypto/ecies/utils.d.ts +67 -0
  165. package/dist/crypto/ecies/utils.js +60 -0
  166. package/dist/crypto/ecies/utils.js.map +1 -0
  167. package/dist/crypto/services/WalletKeyEncryptionService.cjs +128 -0
  168. package/dist/crypto/services/WalletKeyEncryptionService.cjs.map +1 -0
  169. package/dist/crypto/services/WalletKeyEncryptionService.d.cts +92 -0
  170. package/dist/crypto/services/WalletKeyEncryptionService.d.ts +92 -0
  171. package/dist/crypto/services/WalletKeyEncryptionService.js +112 -0
  172. package/dist/crypto/services/WalletKeyEncryptionService.js.map +1 -0
  173. package/dist/diagnostics.cjs +37 -0
  174. package/dist/diagnostics.cjs.map +1 -0
  175. package/dist/diagnostics.d.cts +26 -0
  176. package/dist/diagnostics.d.ts +26 -0
  177. package/dist/diagnostics.js +13 -0
  178. package/dist/diagnostics.js.map +1 -0
  179. package/dist/errors.cjs +141 -0
  180. package/dist/errors.cjs.map +1 -0
  181. package/dist/errors.d.cts +350 -0
  182. package/dist/errors.d.ts +350 -0
  183. package/dist/errors.js +108 -0
  184. package/dist/errors.js.map +1 -0
  185. package/dist/generated/abi/ComputeEngineImplementation.cjs +1313 -0
  186. package/dist/generated/abi/ComputeEngineImplementation.cjs.map +1 -0
  187. package/dist/generated/abi/ComputeEngineImplementation.d.cts +996 -0
  188. package/dist/generated/abi/ComputeEngineImplementation.d.ts +996 -0
  189. package/dist/generated/abi/ComputeEngineImplementation.js +1289 -0
  190. package/dist/generated/abi/ComputeEngineImplementation.js.map +1 -0
  191. package/dist/generated/abi/ComputeInstructionRegistryImplementation.cjs +734 -0
  192. package/dist/generated/abi/ComputeInstructionRegistryImplementation.cjs.map +1 -0
  193. package/dist/generated/abi/ComputeInstructionRegistryImplementation.d.cts +545 -0
  194. package/dist/generated/abi/ComputeInstructionRegistryImplementation.d.ts +545 -0
  195. package/dist/generated/abi/ComputeInstructionRegistryImplementation.js +710 -0
  196. package/dist/generated/abi/ComputeInstructionRegistryImplementation.js.map +1 -0
  197. package/dist/generated/abi/DATFactoryImplementation.cjs +882 -0
  198. package/dist/generated/abi/DATFactoryImplementation.cjs.map +1 -0
  199. package/dist/generated/abi/DATFactoryImplementation.d.cts +661 -0
  200. package/dist/generated/abi/DATFactoryImplementation.d.ts +661 -0
  201. package/dist/generated/abi/DATFactoryImplementation.js +858 -0
  202. package/dist/generated/abi/DATFactoryImplementation.js.map +1 -0
  203. package/dist/generated/abi/DATImplementation.cjs +934 -0
  204. package/dist/generated/abi/DATImplementation.cjs.map +1 -0
  205. package/dist/generated/abi/DATImplementation.d.cts +693 -0
  206. package/dist/generated/abi/DATImplementation.d.ts +693 -0
  207. package/dist/generated/abi/DATImplementation.js +910 -0
  208. package/dist/generated/abi/DATImplementation.js.map +1 -0
  209. package/dist/generated/abi/DATPausableImplementation.cjs +1523 -0
  210. package/dist/generated/abi/DATPausableImplementation.cjs.map +1 -0
  211. package/dist/generated/abi/DATPausableImplementation.d.cts +1145 -0
  212. package/dist/generated/abi/DATPausableImplementation.d.ts +1145 -0
  213. package/dist/generated/abi/DATPausableImplementation.js +1499 -0
  214. package/dist/generated/abi/DATPausableImplementation.js.map +1 -0
  215. package/dist/generated/abi/DATVotesImplementation.cjs +1460 -0
  216. package/dist/generated/abi/DATVotesImplementation.cjs.map +1 -0
  217. package/dist/generated/abi/DATVotesImplementation.d.cts +1095 -0
  218. package/dist/generated/abi/DATVotesImplementation.d.ts +1095 -0
  219. package/dist/generated/abi/DATVotesImplementation.js +1436 -0
  220. package/dist/generated/abi/DATVotesImplementation.js.map +1 -0
  221. package/dist/generated/abi/DLPPerformanceImplementation.cjs +1160 -0
  222. package/dist/generated/abi/DLPPerformanceImplementation.cjs.map +1 -0
  223. package/dist/generated/abi/DLPPerformanceImplementation.d.cts +883 -0
  224. package/dist/generated/abi/DLPPerformanceImplementation.d.ts +883 -0
  225. package/dist/generated/abi/DLPPerformanceImplementation.js +1136 -0
  226. package/dist/generated/abi/DLPPerformanceImplementation.js.map +1 -0
  227. package/dist/generated/abi/DLPRegistryImplementation.cjs +1469 -0
  228. package/dist/generated/abi/DLPRegistryImplementation.cjs.map +1 -0
  229. package/dist/generated/abi/DLPRegistryImplementation.d.cts +1123 -0
  230. package/dist/generated/abi/DLPRegistryImplementation.d.ts +1123 -0
  231. package/dist/generated/abi/DLPRegistryImplementation.js +1445 -0
  232. package/dist/generated/abi/DLPRegistryImplementation.js.map +1 -0
  233. package/dist/generated/abi/DLPRegistryTreasuryImplementation.cjs +612 -0
  234. package/dist/generated/abi/DLPRegistryTreasuryImplementation.cjs.map +1 -0
  235. package/dist/generated/abi/DLPRegistryTreasuryImplementation.d.cts +452 -0
  236. package/dist/generated/abi/DLPRegistryTreasuryImplementation.d.ts +452 -0
  237. package/dist/generated/abi/DLPRegistryTreasuryImplementation.js +588 -0
  238. package/dist/generated/abi/DLPRegistryTreasuryImplementation.js.map +1 -0
  239. package/dist/generated/abi/DLPRewardDeployerImplementation.cjs +948 -0
  240. package/dist/generated/abi/DLPRewardDeployerImplementation.cjs.map +1 -0
  241. package/dist/generated/abi/DLPRewardDeployerImplementation.d.cts +714 -0
  242. package/dist/generated/abi/DLPRewardDeployerImplementation.d.ts +714 -0
  243. package/dist/generated/abi/DLPRewardDeployerImplementation.js +924 -0
  244. package/dist/generated/abi/DLPRewardDeployerImplementation.js.map +1 -0
  245. package/dist/generated/abi/DLPRewardDeployerTreasuryImplementation.cjs +612 -0
  246. package/dist/generated/abi/DLPRewardDeployerTreasuryImplementation.cjs.map +1 -0
  247. package/dist/generated/abi/DLPRewardDeployerTreasuryImplementation.d.cts +452 -0
  248. package/dist/generated/abi/DLPRewardDeployerTreasuryImplementation.d.ts +452 -0
  249. package/dist/generated/abi/DLPRewardDeployerTreasuryImplementation.js +588 -0
  250. package/dist/generated/abi/DLPRewardDeployerTreasuryImplementation.js.map +1 -0
  251. package/dist/generated/abi/DLPRewardSwapImplementation.cjs +939 -0
  252. package/dist/generated/abi/DLPRewardSwapImplementation.cjs.map +1 -0
  253. package/dist/generated/abi/DLPRewardSwapImplementation.d.cts +706 -0
  254. package/dist/generated/abi/DLPRewardSwapImplementation.d.ts +706 -0
  255. package/dist/generated/abi/DLPRewardSwapImplementation.js +915 -0
  256. package/dist/generated/abi/DLPRewardSwapImplementation.js.map +1 -0
  257. package/dist/generated/abi/DLPRootImplementation.cjs +1644 -0
  258. package/dist/generated/abi/DLPRootImplementation.cjs.map +1 -0
  259. package/dist/generated/abi/DLPRootImplementation.d.cts +1248 -0
  260. package/dist/generated/abi/DLPRootImplementation.d.ts +1248 -0
  261. package/dist/generated/abi/DLPRootImplementation.js +1620 -0
  262. package/dist/generated/abi/DLPRootImplementation.js.map +1 -0
  263. package/dist/generated/abi/DLPTreasuryImplementation.cjs +612 -0
  264. package/dist/generated/abi/DLPTreasuryImplementation.cjs.map +1 -0
  265. package/dist/generated/abi/DLPTreasuryImplementation.d.cts +452 -0
  266. package/dist/generated/abi/DLPTreasuryImplementation.d.ts +452 -0
  267. package/dist/generated/abi/DLPTreasuryImplementation.js +588 -0
  268. package/dist/generated/abi/DLPTreasuryImplementation.js.map +1 -0
  269. package/dist/generated/abi/DataLiquidityPoolImplementation.cjs +985 -0
  270. package/dist/generated/abi/DataLiquidityPoolImplementation.cjs.map +1 -0
  271. package/dist/generated/abi/DataLiquidityPoolImplementation.d.cts +737 -0
  272. package/dist/generated/abi/DataLiquidityPoolImplementation.d.ts +737 -0
  273. package/dist/generated/abi/DataLiquidityPoolImplementation.js +961 -0
  274. package/dist/generated/abi/DataLiquidityPoolImplementation.js.map +1 -0
  275. package/dist/generated/abi/DataPortabilityGranteesImplementation.cjs +888 -0
  276. package/dist/generated/abi/DataPortabilityGranteesImplementation.cjs.map +1 -0
  277. package/dist/generated/abi/DataPortabilityGranteesImplementation.d.cts +661 -0
  278. package/dist/generated/abi/DataPortabilityGranteesImplementation.d.ts +661 -0
  279. package/dist/generated/abi/DataPortabilityGranteesImplementation.js +864 -0
  280. package/dist/generated/abi/DataPortabilityGranteesImplementation.js.map +1 -0
  281. package/dist/generated/abi/DataPortabilityPermissionsImplementation.cjs +1317 -0
  282. package/dist/generated/abi/DataPortabilityPermissionsImplementation.cjs.map +1 -0
  283. package/dist/generated/abi/DataPortabilityPermissionsImplementation.d.cts +989 -0
  284. package/dist/generated/abi/DataPortabilityPermissionsImplementation.d.ts +989 -0
  285. package/dist/generated/abi/DataPortabilityPermissionsImplementation.js +1293 -0
  286. package/dist/generated/abi/DataPortabilityPermissionsImplementation.js.map +1 -0
  287. package/dist/generated/abi/DataPortabilityServersImplementation.cjs +1438 -0
  288. package/dist/generated/abi/DataPortabilityServersImplementation.cjs.map +1 -0
  289. package/dist/generated/abi/DataPortabilityServersImplementation.d.cts +1086 -0
  290. package/dist/generated/abi/DataPortabilityServersImplementation.d.ts +1086 -0
  291. package/dist/generated/abi/DataPortabilityServersImplementation.js +1414 -0
  292. package/dist/generated/abi/DataPortabilityServersImplementation.js.map +1 -0
  293. package/dist/generated/abi/DataRefinerRegistryImplementation.cjs +984 -0
  294. package/dist/generated/abi/DataRefinerRegistryImplementation.cjs.map +1 -0
  295. package/dist/generated/abi/DataRefinerRegistryImplementation.d.cts +737 -0
  296. package/dist/generated/abi/DataRefinerRegistryImplementation.d.ts +737 -0
  297. package/dist/generated/abi/DataRefinerRegistryImplementation.js +960 -0
  298. package/dist/generated/abi/DataRefinerRegistryImplementation.js.map +1 -0
  299. package/dist/generated/abi/DataRegistryImplementation.cjs +1341 -0
  300. package/dist/generated/abi/DataRegistryImplementation.cjs.map +1 -0
  301. package/dist/generated/abi/DataRegistryImplementation.d.cts +1014 -0
  302. package/dist/generated/abi/DataRegistryImplementation.d.ts +1014 -0
  303. package/dist/generated/abi/DataRegistryImplementation.js +1317 -0
  304. package/dist/generated/abi/DataRegistryImplementation.js.map +1 -0
  305. package/dist/generated/abi/QueryEngineImplementation.cjs +1319 -0
  306. package/dist/generated/abi/QueryEngineImplementation.cjs.map +1 -0
  307. package/dist/generated/abi/QueryEngineImplementation.d.cts +1001 -0
  308. package/dist/generated/abi/QueryEngineImplementation.d.ts +1001 -0
  309. package/dist/generated/abi/QueryEngineImplementation.js +1295 -0
  310. package/dist/generated/abi/QueryEngineImplementation.js.map +1 -0
  311. package/dist/generated/abi/SwapHelperImplementation.cjs +1019 -0
  312. package/dist/generated/abi/SwapHelperImplementation.cjs.map +1 -0
  313. package/dist/generated/abi/SwapHelperImplementation.d.cts +764 -0
  314. package/dist/generated/abi/SwapHelperImplementation.d.ts +764 -0
  315. package/dist/generated/abi/SwapHelperImplementation.js +995 -0
  316. package/dist/generated/abi/SwapHelperImplementation.js.map +1 -0
  317. package/dist/generated/abi/TeePoolDedicatedGpuImplementation.cjs +936 -0
  318. package/dist/generated/abi/TeePoolDedicatedGpuImplementation.cjs.map +1 -0
  319. package/dist/generated/abi/TeePoolDedicatedGpuImplementation.d.cts +701 -0
  320. package/dist/generated/abi/TeePoolDedicatedGpuImplementation.d.ts +701 -0
  321. package/dist/generated/abi/TeePoolDedicatedGpuImplementation.js +912 -0
  322. package/dist/generated/abi/TeePoolDedicatedGpuImplementation.js.map +1 -0
  323. package/dist/generated/abi/TeePoolDedicatedStandardImplementation.cjs +936 -0
  324. package/dist/generated/abi/TeePoolDedicatedStandardImplementation.cjs.map +1 -0
  325. package/dist/generated/abi/TeePoolDedicatedStandardImplementation.d.cts +701 -0
  326. package/dist/generated/abi/TeePoolDedicatedStandardImplementation.d.ts +701 -0
  327. package/dist/generated/abi/TeePoolDedicatedStandardImplementation.js +912 -0
  328. package/dist/generated/abi/TeePoolDedicatedStandardImplementation.js.map +1 -0
  329. package/dist/generated/abi/TeePoolEphemeralStandardImplementation.cjs +936 -0
  330. package/dist/generated/abi/TeePoolEphemeralStandardImplementation.cjs.map +1 -0
  331. package/dist/generated/abi/TeePoolEphemeralStandardImplementation.d.cts +701 -0
  332. package/dist/generated/abi/TeePoolEphemeralStandardImplementation.d.ts +701 -0
  333. package/dist/generated/abi/TeePoolEphemeralStandardImplementation.js +912 -0
  334. package/dist/generated/abi/TeePoolEphemeralStandardImplementation.js.map +1 -0
  335. package/dist/generated/abi/TeePoolImplementation.cjs +1313 -0
  336. package/dist/generated/abi/TeePoolImplementation.cjs.map +1 -0
  337. package/dist/generated/abi/TeePoolImplementation.d.cts +993 -0
  338. package/dist/generated/abi/TeePoolImplementation.d.ts +993 -0
  339. package/dist/generated/abi/TeePoolImplementation.js +1289 -0
  340. package/dist/generated/abi/TeePoolImplementation.js.map +1 -0
  341. package/dist/generated/abi/TeePoolPersistentGpuImplementation.cjs +936 -0
  342. package/dist/generated/abi/TeePoolPersistentGpuImplementation.cjs.map +1 -0
  343. package/dist/generated/abi/TeePoolPersistentGpuImplementation.d.cts +701 -0
  344. package/dist/generated/abi/TeePoolPersistentGpuImplementation.d.ts +701 -0
  345. package/dist/generated/abi/TeePoolPersistentGpuImplementation.js +912 -0
  346. package/dist/generated/abi/TeePoolPersistentGpuImplementation.js.map +1 -0
  347. package/dist/generated/abi/TeePoolPersistentStandardImplementation.cjs +936 -0
  348. package/dist/generated/abi/TeePoolPersistentStandardImplementation.cjs.map +1 -0
  349. package/dist/generated/abi/TeePoolPersistentStandardImplementation.d.cts +701 -0
  350. package/dist/generated/abi/TeePoolPersistentStandardImplementation.d.ts +701 -0
  351. package/dist/generated/abi/TeePoolPersistentStandardImplementation.js +912 -0
  352. package/dist/generated/abi/TeePoolPersistentStandardImplementation.js.map +1 -0
  353. package/dist/generated/abi/TeePoolPhalaImplementation.cjs +1313 -0
  354. package/dist/generated/abi/TeePoolPhalaImplementation.cjs.map +1 -0
  355. package/dist/generated/abi/TeePoolPhalaImplementation.d.cts +993 -0
  356. package/dist/generated/abi/TeePoolPhalaImplementation.d.ts +993 -0
  357. package/dist/generated/abi/TeePoolPhalaImplementation.js +1289 -0
  358. package/dist/generated/abi/TeePoolPhalaImplementation.js.map +1 -0
  359. package/dist/generated/abi/VanaEpochImplementation.cjs +1188 -0
  360. package/dist/generated/abi/VanaEpochImplementation.cjs.map +1 -0
  361. package/dist/generated/abi/VanaEpochImplementation.d.cts +900 -0
  362. package/dist/generated/abi/VanaEpochImplementation.d.ts +900 -0
  363. package/dist/generated/abi/VanaEpochImplementation.js +1164 -0
  364. package/dist/generated/abi/VanaEpochImplementation.js.map +1 -0
  365. package/dist/generated/abi/VanaPoolEntityImplementation.cjs +1234 -0
  366. package/dist/generated/abi/VanaPoolEntityImplementation.cjs.map +1 -0
  367. package/dist/generated/abi/VanaPoolEntityImplementation.d.cts +934 -0
  368. package/dist/generated/abi/VanaPoolEntityImplementation.d.ts +934 -0
  369. package/dist/generated/abi/VanaPoolEntityImplementation.js +1210 -0
  370. package/dist/generated/abi/VanaPoolEntityImplementation.js.map +1 -0
  371. package/dist/generated/abi/VanaPoolStakingImplementation.cjs +921 -0
  372. package/dist/generated/abi/VanaPoolStakingImplementation.cjs.map +1 -0
  373. package/dist/generated/abi/VanaPoolStakingImplementation.d.cts +693 -0
  374. package/dist/generated/abi/VanaPoolStakingImplementation.d.ts +693 -0
  375. package/dist/generated/abi/VanaPoolStakingImplementation.js +897 -0
  376. package/dist/generated/abi/VanaPoolStakingImplementation.js.map +1 -0
  377. package/dist/generated/abi/VanaPoolTreasuryImplementation.cjs +538 -0
  378. package/dist/generated/abi/VanaPoolTreasuryImplementation.cjs.map +1 -0
  379. package/dist/generated/abi/VanaPoolTreasuryImplementation.d.cts +394 -0
  380. package/dist/generated/abi/VanaPoolTreasuryImplementation.d.ts +394 -0
  381. package/dist/generated/abi/VanaPoolTreasuryImplementation.js +514 -0
  382. package/dist/generated/abi/VanaPoolTreasuryImplementation.js.map +1 -0
  383. package/dist/generated/abi/index.cjs +177 -0
  384. package/dist/generated/abi/index.cjs.map +1 -0
  385. package/dist/generated/abi/index.d.cts +26547 -0
  386. package/dist/generated/abi/index.d.ts +26547 -0
  387. package/dist/generated/abi/index.js +120 -0
  388. package/dist/generated/abi/index.js.map +1 -0
  389. package/dist/generated/event-types.cjs +17 -0
  390. package/dist/generated/event-types.cjs.map +1 -0
  391. package/dist/generated/event-types.d.cts +855 -0
  392. package/dist/generated/event-types.d.ts +855 -0
  393. package/dist/generated/event-types.js +1 -0
  394. package/dist/generated/event-types.js.map +1 -0
  395. package/dist/generated/eventRegistry.cjs +3351 -0
  396. package/dist/generated/eventRegistry.cjs.map +1 -0
  397. package/dist/generated/eventRegistry.d.cts +18 -0
  398. package/dist/generated/eventRegistry.d.ts +18 -0
  399. package/dist/generated/eventRegistry.js +3326 -0
  400. package/dist/generated/eventRegistry.js.map +1 -0
  401. package/dist/generated/server/server-exports.cjs +23 -0
  402. package/dist/generated/server/server-exports.cjs.map +1 -0
  403. package/dist/generated/server/server-exports.d.cts +21 -0
  404. package/dist/generated/server/server-exports.d.ts +21 -0
  405. package/dist/generated/server/server-exports.js +2 -0
  406. package/dist/generated/server/server-exports.js.map +1 -0
  407. package/dist/generated/server/server.cjs +17 -0
  408. package/dist/generated/server/server.cjs.map +1 -0
  409. package/dist/generated/server/server.d.cts +512 -0
  410. package/dist/generated/server/server.d.ts +512 -0
  411. package/dist/generated/server/server.js +1 -0
  412. package/dist/generated/server/server.js.map +1 -0
  413. package/dist/generated/subgraph.cjs +675 -0
  414. package/dist/generated/subgraph.cjs.map +1 -0
  415. package/dist/generated/subgraph.d.cts +5981 -0
  416. package/dist/generated/subgraph.d.ts +5981 -0
  417. package/dist/generated/subgraph.js +644 -0
  418. package/dist/generated/subgraph.js.map +1 -0
  419. package/dist/index.browser.cjs +151 -0
  420. package/dist/index.browser.cjs.map +1 -0
  421. package/dist/index.browser.d.cts +201 -0
  422. package/dist/index.browser.d.ts +162 -32452
  423. package/dist/index.browser.js +64 -40995
  424. package/dist/index.browser.js.map +1 -1
  425. package/dist/index.cjs +3 -0
  426. package/dist/index.cjs.map +1 -0
  427. package/dist/index.d.ts +2 -0
  428. package/dist/index.js +2 -0
  429. package/dist/index.js.map +1 -0
  430. package/dist/index.node.cjs +87 -41441
  431. package/dist/index.node.cjs.map +1 -1
  432. package/dist/index.node.d.cts +86 -32596
  433. package/dist/index.node.d.ts +86 -32596
  434. package/dist/index.node.js +68 -41331
  435. package/dist/index.node.js.map +1 -1
  436. package/dist/node.cjs +29 -0
  437. package/dist/node.cjs.map +1 -0
  438. package/dist/node.d.cts +2 -0
  439. package/dist/node.d.ts +2 -0
  440. package/dist/node.js +5 -0
  441. package/dist/node.js.map +1 -0
  442. package/dist/platform/browser-only.cjs +37 -0
  443. package/dist/platform/browser-only.cjs.map +1 -0
  444. package/dist/platform/browser-only.d.cts +25 -0
  445. package/dist/platform/browser-only.d.ts +25 -0
  446. package/dist/platform/browser-only.js +12 -0
  447. package/dist/platform/browser-only.js.map +1 -0
  448. package/dist/platform/browser-safe.cjs +57 -0
  449. package/dist/platform/browser-safe.cjs.map +1 -0
  450. package/dist/platform/browser-safe.d.cts +32 -0
  451. package/dist/platform/browser-safe.d.ts +32 -0
  452. package/dist/platform/browser-safe.js +31 -0
  453. package/dist/platform/browser-safe.js.map +1 -0
  454. package/dist/platform/browser.cjs +329 -0
  455. package/dist/platform/browser.cjs.map +1 -0
  456. package/dist/platform/browser.d.cts +74 -0
  457. package/dist/platform/browser.d.ts +74 -0
  458. package/dist/platform/browser.js +304 -0
  459. package/dist/platform/browser.js.map +1 -0
  460. package/dist/platform/index.cjs +50 -0
  461. package/dist/platform/index.cjs.map +1 -0
  462. package/dist/platform/index.d.cts +5 -0
  463. package/dist/platform/index.d.ts +5 -0
  464. package/dist/platform/index.js +27 -0
  465. package/dist/platform/index.js.map +1 -0
  466. package/dist/platform/interface.cjs +17 -0
  467. package/dist/platform/interface.cjs.map +1 -0
  468. package/dist/platform/interface.d.cts +218 -0
  469. package/dist/platform/interface.d.ts +218 -0
  470. package/dist/platform/interface.js +1 -0
  471. package/dist/platform/interface.js.map +1 -0
  472. package/dist/platform/node.cjs +351 -0
  473. package/dist/platform/node.cjs.map +1 -0
  474. package/dist/platform/node.d.cts +27 -0
  475. package/dist/platform/node.d.ts +27 -0
  476. package/dist/platform/node.js +327 -0
  477. package/dist/platform/node.js.map +1 -0
  478. package/dist/platform/shared/error-utils.cjs +43 -0
  479. package/dist/platform/shared/error-utils.cjs.map +1 -0
  480. package/dist/platform/shared/error-utils.d.cts +25 -0
  481. package/dist/platform/shared/error-utils.d.ts +25 -0
  482. package/dist/platform/shared/error-utils.js +18 -0
  483. package/dist/platform/shared/error-utils.js.map +1 -0
  484. package/dist/platform/shared/pgp-utils.cjs +55 -0
  485. package/dist/platform/shared/pgp-utils.cjs.map +1 -0
  486. package/dist/platform/shared/pgp-utils.d.cts +61 -0
  487. package/dist/platform/shared/pgp-utils.d.ts +61 -0
  488. package/dist/platform/shared/pgp-utils.js +29 -0
  489. package/dist/platform/shared/pgp-utils.js.map +1 -0
  490. package/dist/platform/shared/stream-utils.cjs +49 -0
  491. package/dist/platform/shared/stream-utils.cjs.map +1 -0
  492. package/dist/platform/shared/stream-utils.d.cts +16 -0
  493. package/dist/platform/shared/stream-utils.d.ts +16 -0
  494. package/dist/platform/shared/stream-utils.js +25 -0
  495. package/dist/platform/shared/stream-utils.js.map +1 -0
  496. package/dist/platform/utils.cjs +114 -0
  497. package/dist/platform/utils.cjs.map +1 -0
  498. package/dist/platform/utils.d.cts +53 -0
  499. package/dist/platform/utils.d.ts +53 -0
  500. package/dist/platform/utils.js +76 -0
  501. package/dist/platform/utils.js.map +1 -0
  502. package/dist/platform.browser.cjs +41 -0
  503. package/dist/platform.browser.cjs.map +1 -0
  504. package/dist/platform.browser.d.cts +4 -0
  505. package/dist/platform.browser.d.ts +4 -224
  506. package/dist/platform.browser.js +10 -309
  507. package/dist/platform.browser.js.map +1 -1
  508. package/dist/platform.cjs +14 -623
  509. package/dist/platform.cjs.map +1 -1
  510. package/dist/platform.d.cts +5 -1
  511. package/dist/platform.d.ts +5 -1
  512. package/dist/platform.js +14 -609
  513. package/dist/platform.js.map +1 -1
  514. package/dist/platform.node.cjs +14 -623
  515. package/dist/platform.node.cjs.map +1 -1
  516. package/dist/platform.node.d.cts +5 -264
  517. package/dist/platform.node.d.ts +5 -264
  518. package/dist/platform.node.js +14 -609
  519. package/dist/platform.node.js.map +1 -1
  520. package/dist/schemas/dataSchema.schema.d.cts +88 -0
  521. package/dist/schemas/dataSchema.schema.d.ts +88 -0
  522. package/dist/schemas/dataSchema.schema.json +53 -0
  523. package/dist/schemas/grantFile.schema.d.cts +57 -0
  524. package/dist/schemas/grantFile.schema.d.ts +57 -0
  525. package/dist/schemas/grantFile.schema.json +43 -0
  526. package/dist/server/handler.cjs +101 -0
  527. package/dist/server/handler.cjs.map +1 -0
  528. package/dist/server/handler.d.cts +306 -0
  529. package/dist/server/handler.d.ts +306 -0
  530. package/dist/server/handler.js +77 -0
  531. package/dist/server/handler.js.map +1 -0
  532. package/dist/storage/index.cjs +44 -0
  533. package/dist/storage/index.cjs.map +1 -0
  534. package/dist/storage/index.d.cts +10 -0
  535. package/dist/storage/index.d.ts +10 -0
  536. package/dist/storage/index.js +15 -0
  537. package/dist/storage/index.js.map +1 -0
  538. package/dist/storage/manager.cjs +189 -0
  539. package/dist/storage/manager.cjs.map +1 -0
  540. package/dist/storage/manager.d.cts +150 -0
  541. package/dist/storage/manager.d.ts +150 -0
  542. package/dist/storage/manager.js +172 -0
  543. package/dist/storage/manager.js.map +1 -0
  544. package/dist/storage/providers/callback-storage.cjs +177 -0
  545. package/dist/storage/providers/callback-storage.cjs.map +1 -0
  546. package/dist/storage/providers/callback-storage.d.cts +100 -0
  547. package/dist/storage/providers/callback-storage.d.ts +100 -0
  548. package/dist/storage/providers/callback-storage.js +155 -0
  549. package/dist/storage/providers/callback-storage.js.map +1 -0
  550. package/dist/storage/providers/google-drive.cjs +516 -0
  551. package/dist/storage/providers/google-drive.cjs.map +1 -0
  552. package/dist/storage/providers/google-drive.d.cts +156 -0
  553. package/dist/storage/providers/google-drive.d.ts +156 -0
  554. package/dist/storage/providers/google-drive.js +497 -0
  555. package/dist/storage/providers/google-drive.js.map +1 -0
  556. package/dist/storage/providers/ipfs.cjs +283 -0
  557. package/dist/storage/providers/ipfs.cjs.map +1 -0
  558. package/dist/storage/providers/ipfs.d.cts +163 -0
  559. package/dist/storage/providers/ipfs.d.ts +163 -0
  560. package/dist/storage/providers/ipfs.js +264 -0
  561. package/dist/storage/providers/ipfs.js.map +1 -0
  562. package/dist/storage/providers/pinata.cjs +339 -0
  563. package/dist/storage/providers/pinata.cjs.map +1 -0
  564. package/dist/storage/providers/pinata.d.cts +173 -0
  565. package/dist/storage/providers/pinata.d.ts +173 -0
  566. package/dist/storage/providers/pinata.js +320 -0
  567. package/dist/storage/providers/pinata.js.map +1 -0
  568. package/dist/types/blockchain.cjs +17 -0
  569. package/dist/types/blockchain.cjs.map +1 -0
  570. package/dist/types/blockchain.d.cts +52 -0
  571. package/dist/types/blockchain.d.ts +52 -0
  572. package/dist/types/blockchain.js +1 -0
  573. package/dist/types/blockchain.js.map +1 -0
  574. package/dist/types/chains.cjs +36 -0
  575. package/dist/types/chains.cjs.map +1 -0
  576. package/dist/types/chains.d.cts +34 -0
  577. package/dist/types/chains.d.ts +34 -0
  578. package/dist/types/chains.js +11 -0
  579. package/dist/types/chains.js.map +1 -0
  580. package/dist/types/config.cjs +41 -0
  581. package/dist/types/config.cjs.map +1 -0
  582. package/dist/types/config.d.cts +726 -0
  583. package/dist/types/config.d.ts +726 -0
  584. package/dist/types/config.js +15 -0
  585. package/dist/types/config.js.map +1 -0
  586. package/dist/types/contracts.cjs +17 -0
  587. package/dist/types/contracts.cjs.map +1 -0
  588. package/dist/types/contracts.d.cts +68 -0
  589. package/dist/types/contracts.d.ts +68 -0
  590. package/dist/types/contracts.js +1 -0
  591. package/dist/types/contracts.js.map +1 -0
  592. package/dist/types/controller-context.cjs +17 -0
  593. package/dist/types/controller-context.cjs.map +1 -0
  594. package/dist/types/controller-context.d.cts +71 -0
  595. package/dist/types/controller-context.d.ts +71 -0
  596. package/dist/types/controller-context.js +1 -0
  597. package/dist/types/controller-context.js.map +1 -0
  598. package/dist/types/data.cjs +17 -0
  599. package/dist/types/data.cjs.map +1 -0
  600. package/dist/types/data.d.cts +694 -0
  601. package/dist/types/data.d.ts +694 -0
  602. package/dist/types/data.js +1 -0
  603. package/dist/types/data.js.map +1 -0
  604. package/dist/types/eccrypto-js.d.cjs +2 -0
  605. package/dist/types/eccrypto-js.d.cjs.map +1 -0
  606. package/dist/types/eccrypto-js.d.d.cts +13 -0
  607. package/dist/types/eccrypto-js.d.d.ts +13 -0
  608. package/dist/types/eccrypto-js.d.js +1 -0
  609. package/dist/types/eccrypto-js.d.js.map +1 -0
  610. package/dist/types/external-apis.cjs +61 -0
  611. package/dist/types/external-apis.cjs.map +1 -0
  612. package/dist/types/external-apis.d.cts +186 -0
  613. package/dist/types/external-apis.d.ts +186 -0
  614. package/dist/types/external-apis.js +34 -0
  615. package/dist/types/external-apis.js.map +1 -0
  616. package/dist/types/generics.cjs +17 -0
  617. package/dist/types/generics.cjs.map +1 -0
  618. package/dist/types/generics.d.cts +450 -0
  619. package/dist/types/generics.d.ts +450 -0
  620. package/dist/types/generics.js +1 -0
  621. package/dist/types/generics.js.map +1 -0
  622. package/dist/types/index.cjs +64 -0
  623. package/dist/types/index.cjs.map +1 -0
  624. package/dist/types/index.d.cts +22 -0
  625. package/dist/types/index.d.ts +22 -0
  626. package/dist/types/index.js +35 -0
  627. package/dist/types/index.js.map +1 -0
  628. package/dist/types/operations.cjs +65 -0
  629. package/dist/types/operations.cjs.map +1 -0
  630. package/dist/types/operations.d.cts +116 -0
  631. package/dist/types/operations.d.ts +116 -0
  632. package/dist/types/operations.js +37 -0
  633. package/dist/types/operations.js.map +1 -0
  634. package/dist/types/permissions.cjs +17 -0
  635. package/dist/types/permissions.cjs.map +1 -0
  636. package/dist/types/permissions.d.cts +957 -0
  637. package/dist/types/permissions.d.ts +957 -0
  638. package/dist/types/permissions.js +1 -0
  639. package/dist/types/permissions.js.map +1 -0
  640. package/dist/types/personal.cjs +17 -0
  641. package/dist/types/personal.cjs.map +1 -0
  642. package/dist/types/personal.d.cts +40 -0
  643. package/dist/types/personal.d.ts +40 -0
  644. package/dist/types/personal.js +1 -0
  645. package/dist/types/personal.js.map +1 -0
  646. package/dist/types/relayer.cjs +17 -0
  647. package/dist/types/relayer.cjs.map +1 -0
  648. package/dist/types/relayer.d.cts +284 -0
  649. package/dist/types/relayer.d.ts +284 -0
  650. package/dist/types/relayer.js +1 -0
  651. package/dist/types/relayer.js.map +1 -0
  652. package/dist/types/storage.cjs +39 -0
  653. package/dist/types/storage.cjs.map +1 -0
  654. package/dist/types/storage.d.cts +131 -0
  655. package/dist/types/storage.d.ts +131 -0
  656. package/dist/types/storage.js +18 -0
  657. package/dist/types/storage.js.map +1 -0
  658. package/dist/types/transactionResults.cjs +17 -0
  659. package/dist/types/transactionResults.cjs.map +1 -0
  660. package/dist/types/transactionResults.d.cts +195 -0
  661. package/dist/types/transactionResults.d.ts +195 -0
  662. package/dist/types/transactionResults.js +1 -0
  663. package/dist/types/transactionResults.js.map +1 -0
  664. package/dist/types/utils.cjs +17 -0
  665. package/dist/types/utils.cjs.map +1 -0
  666. package/dist/types/utils.d.cts +819 -0
  667. package/dist/types/utils.d.ts +819 -0
  668. package/dist/types/utils.js +1 -0
  669. package/dist/types/utils.js.map +1 -0
  670. package/dist/types.cjs +23 -0
  671. package/dist/types.cjs.map +1 -0
  672. package/dist/types.d.cts +54 -0
  673. package/dist/types.d.ts +54 -0
  674. package/dist/types.js +2 -0
  675. package/dist/types.js.map +1 -0
  676. package/dist/utils/blockchain/registry.cjs +81 -0
  677. package/dist/utils/blockchain/registry.cjs.map +1 -0
  678. package/dist/utils/blockchain/registry.d.cts +34 -0
  679. package/dist/utils/blockchain/registry.d.ts +34 -0
  680. package/dist/utils/blockchain/registry.js +56 -0
  681. package/dist/utils/blockchain/registry.js.map +1 -0
  682. package/dist/utils/crypto-utils.cjs +120 -0
  683. package/dist/utils/crypto-utils.cjs.map +1 -0
  684. package/dist/utils/crypto-utils.d.cts +118 -0
  685. package/dist/utils/crypto-utils.d.ts +118 -0
  686. package/dist/utils/crypto-utils.js +87 -0
  687. package/dist/utils/crypto-utils.js.map +1 -0
  688. package/dist/utils/download.cjs +69 -0
  689. package/dist/utils/download.cjs.map +1 -0
  690. package/dist/utils/download.d.cts +41 -0
  691. package/dist/utils/download.d.ts +41 -0
  692. package/dist/utils/download.js +45 -0
  693. package/dist/utils/download.js.map +1 -0
  694. package/dist/utils/encoding.cjs +66 -0
  695. package/dist/utils/encoding.cjs.map +1 -0
  696. package/dist/utils/encoding.d.cts +54 -0
  697. package/dist/utils/encoding.d.ts +54 -0
  698. package/dist/utils/encoding.js +39 -0
  699. package/dist/utils/encoding.js.map +1 -0
  700. package/dist/utils/encryption.cjs +170 -0
  701. package/dist/utils/encryption.cjs.map +1 -0
  702. package/dist/utils/encryption.d.cts +275 -0
  703. package/dist/utils/encryption.d.ts +275 -0
  704. package/dist/utils/encryption.js +136 -0
  705. package/dist/utils/encryption.js.map +1 -0
  706. package/dist/utils/formatters.cjs +53 -0
  707. package/dist/utils/formatters.cjs.map +1 -0
  708. package/dist/utils/formatters.d.cts +120 -0
  709. package/dist/utils/formatters.d.ts +120 -0
  710. package/dist/utils/formatters.js +26 -0
  711. package/dist/utils/formatters.js.map +1 -0
  712. package/dist/utils/grantFiles.cjs +175 -0
  713. package/dist/utils/grantFiles.cjs.map +1 -0
  714. package/dist/utils/grantFiles.d.cts +186 -0
  715. package/dist/utils/grantFiles.d.ts +186 -0
  716. package/dist/utils/grantFiles.js +137 -0
  717. package/dist/utils/grantFiles.js.map +1 -0
  718. package/dist/utils/grantValidation.cjs +243 -0
  719. package/dist/utils/grantValidation.cjs.map +1 -0
  720. package/dist/utils/grantValidation.d.cts +150 -0
  721. package/dist/utils/grantValidation.d.ts +150 -0
  722. package/dist/utils/grantValidation.js +201 -0
  723. package/dist/utils/grantValidation.js.map +1 -0
  724. package/dist/utils/grants.cjs +108 -0
  725. package/dist/utils/grants.cjs.map +1 -0
  726. package/dist/utils/grants.d.cts +70 -0
  727. package/dist/utils/grants.d.ts +70 -0
  728. package/dist/utils/grants.js +82 -0
  729. package/dist/utils/grants.js.map +1 -0
  730. package/dist/utils/ipfs.cjs +130 -0
  731. package/dist/utils/ipfs.cjs.map +1 -0
  732. package/dist/utils/ipfs.d.cts +90 -0
  733. package/dist/utils/ipfs.d.ts +90 -0
  734. package/dist/utils/ipfs.js +99 -0
  735. package/dist/utils/ipfs.js.map +1 -0
  736. package/dist/utils/lazy-import.cjs +40 -0
  737. package/dist/utils/lazy-import.cjs.map +1 -0
  738. package/dist/utils/lazy-import.d.cts +20 -0
  739. package/dist/utils/lazy-import.d.ts +20 -0
  740. package/dist/utils/lazy-import.js +16 -0
  741. package/dist/utils/lazy-import.js.map +1 -0
  742. package/dist/utils/multicall.cjs +231 -0
  743. package/dist/utils/multicall.cjs.map +1 -0
  744. package/dist/utils/multicall.d.cts +129 -0
  745. package/dist/utils/multicall.d.ts +129 -0
  746. package/dist/utils/multicall.js +206 -0
  747. package/dist/utils/multicall.js.map +1 -0
  748. package/dist/utils/parseTransactionPojo.cjs +87 -0
  749. package/dist/utils/parseTransactionPojo.cjs.map +1 -0
  750. package/dist/utils/parseTransactionPojo.d.cts +37 -0
  751. package/dist/utils/parseTransactionPojo.d.ts +37 -0
  752. package/dist/utils/parseTransactionPojo.js +63 -0
  753. package/dist/utils/parseTransactionPojo.js.map +1 -0
  754. package/dist/utils/schemaValidation.cjs +258 -0
  755. package/dist/utils/schemaValidation.cjs.map +1 -0
  756. package/dist/utils/schemaValidation.d.cts +172 -0
  757. package/dist/utils/schemaValidation.d.ts +172 -0
  758. package/dist/utils/schemaValidation.js +222 -0
  759. package/dist/utils/schemaValidation.js.map +1 -0
  760. package/dist/utils/signatureCache.cjs +187 -0
  761. package/dist/utils/signatureCache.cjs.map +1 -0
  762. package/dist/utils/signatureCache.d.cts +134 -0
  763. package/dist/utils/signatureCache.d.ts +134 -0
  764. package/dist/utils/signatureCache.js +165 -0
  765. package/dist/utils/signatureCache.js.map +1 -0
  766. package/dist/utils/signatureFormatter.cjs +45 -0
  767. package/dist/utils/signatureFormatter.cjs.map +1 -0
  768. package/dist/utils/signatureFormatter.d.cts +39 -0
  769. package/dist/utils/signatureFormatter.d.ts +39 -0
  770. package/dist/utils/signatureFormatter.js +21 -0
  771. package/dist/utils/signatureFormatter.js.map +1 -0
  772. package/dist/utils/transactionHelpers.cjs +54 -0
  773. package/dist/utils/transactionHelpers.cjs.map +1 -0
  774. package/dist/utils/transactionHelpers.d.cts +86 -0
  775. package/dist/utils/transactionHelpers.d.ts +86 -0
  776. package/dist/utils/transactionHelpers.js +29 -0
  777. package/dist/utils/transactionHelpers.js.map +1 -0
  778. package/dist/utils/typedDataConverter.cjs +43 -0
  779. package/dist/utils/typedDataConverter.cjs.map +1 -0
  780. package/dist/utils/typedDataConverter.d.cts +13 -0
  781. package/dist/utils/typedDataConverter.d.ts +13 -0
  782. package/dist/utils/typedDataConverter.js +19 -0
  783. package/dist/utils/typedDataConverter.js.map +1 -0
  784. package/dist/utils/urlResolver.cjs +55 -0
  785. package/dist/utils/urlResolver.cjs.map +1 -0
  786. package/dist/utils/urlResolver.d.cts +40 -0
  787. package/dist/utils/urlResolver.d.ts +40 -0
  788. package/dist/utils/urlResolver.js +30 -0
  789. package/dist/utils/urlResolver.js.map +1 -0
  790. package/dist/utils/withEvents.cjs +44 -0
  791. package/dist/utils/withEvents.cjs.map +1 -0
  792. package/dist/utils/withEvents.d.cts +63 -0
  793. package/dist/utils/withEvents.d.ts +63 -0
  794. package/dist/utils/withEvents.js +18 -0
  795. package/dist/utils/withEvents.js.map +1 -0
  796. package/package.json +58 -27
@@ -0,0 +1,186 @@
1
+ import { GrantPermissionParams, GrantFile } from '../types/permissions.js';
2
+ import 'viem';
3
+
4
+ /**
5
+ * Creates a grant file structure from permission parameters.
6
+ *
7
+ * @remarks
8
+ * This function constructs the JSON structure that represents a permission grant
9
+ * in the Vana protocol. The grant file contains all necessary information for
10
+ * a grantee to perform operations on behalf of the grantor.
11
+ *
12
+ * @param params - The permission parameters to create the grant file from
13
+ * @returns The constructed grant file object
14
+ * @example
15
+ * ```typescript
16
+ * const grantFile = createGrantFile({
17
+ * grantee: '0x742d35Cc6558Fd4D9e9E0E888F0462ef6919Bd36',
18
+ * operation: 'llm_inference',
19
+ * parameters: {
20
+ * model: 'gpt-4',
21
+ * maxTokens: 1000
22
+ * },
23
+ * expiresAt: Date.now() + 86400000 // 24 hours
24
+ * });
25
+ *
26
+ * console.log(grantFile);
27
+ * // {
28
+ * // grantee: '0x742d...',
29
+ * // operation: 'llm_inference',
30
+ * // parameters: { model: 'gpt-4', maxTokens: 1000 },
31
+ * // expires: 1234567890
32
+ * // }
33
+ * ```
34
+ */
35
+ declare function createGrantFile(params: GrantPermissionParams): GrantFile;
36
+ /**
37
+ * Stores a grant file in IPFS via the relayer service.
38
+ *
39
+ * @remarks
40
+ * This function uploads the grant file to IPFS through the relayer's upload endpoint.
41
+ * The returned URL can be stored on-chain as part of the permission grant, allowing
42
+ * anyone to retrieve the detailed permission parameters later.
43
+ *
44
+ * @param grantFile - The grant file to store
45
+ * @param relayerUrl - URL of the relayer service
46
+ * @returns Promise resolving to the IPFS URL
47
+ * @throws {NetworkError} When the upload fails or relayer is unavailable
48
+ * @example
49
+ * ```typescript
50
+ * const grantFile = createGrantFile(params);
51
+ *
52
+ * try {
53
+ * const ipfsUrl = await storeGrantFile(grantFile, 'https://relayer.vana.com');
54
+ * console.log(`Grant file stored at: ${ipfsUrl}`);
55
+ * // ipfsUrl: "ipfs://QmHash123..."
56
+ * } catch (error) {
57
+ * console.error('Failed to store grant file:', error);
58
+ * }
59
+ * ```
60
+ */
61
+ declare function storeGrantFile(grantFile: GrantFile, relayerUrl: string): Promise<string>;
62
+ /**
63
+ * Retrieves detailed grant file data from IPFS or HTTP storage.
64
+ *
65
+ * @remarks
66
+ * **This is Step 2 of the performant two-step permission API.**
67
+ *
68
+ * Use this method to resolve detailed permission data (operation, parameters, etc.)
69
+ * for specific grants after first getting the fast on-chain data using
70
+ * `getUserPermissionGrantsOnChain()`. This design eliminates N+1 query problems
71
+ * by allowing selective lazy-loading of expensive off-chain data.
72
+ *
73
+ * **Performance**: Single network request per grant file (typically 100-500ms).
74
+ * **Reliability**: Tries multiple IPFS gateways as fallbacks if primary URL fails.
75
+ *
76
+ * @param grantUrl - The grant file URL from OnChainPermissionGrant.grantUrl
77
+ * @param _relayerUrl - URL of the relayer service (optional, unused)
78
+ * @param downloadRelayer - Optional download relayer for proxying CORS-restricted downloads
79
+ * @param downloadRelayer.proxyDownload - Function to proxy download requests through application server
80
+ * @returns Promise resolving to the complete grant file with operation details
81
+ * @throws {NetworkError} When all retrieval attempts fail
82
+ * @throws {SerializationError} When grant file format is invalid
83
+ * @example
84
+ * ```typescript
85
+ * // Step 1: Fast on-chain data (no N+1 queries)
86
+ * const grants = await vana.permissions.getUserPermissionGrantsOnChain();
87
+ *
88
+ * // Step 2: Lazy-load details for specific grant when needed
89
+ * const grantFile = await retrieveGrantFile(grants[0].grantUrl);
90
+ *
91
+ * console.log(`Operation: ${grantFile.operation}`);
92
+ * console.log(`Grantee: ${grantFile.grantee}`);
93
+ * console.log(`Parameters:`, grantFile.parameters);
94
+ *
95
+ * // Only fetch details for grants user actually wants to see
96
+ * for (const grant of selectedGrants) {
97
+ * const details = await retrieveGrantFile(grant.grantUrl);
98
+ * displayGrantDetails(details);
99
+ * }
100
+ * ```
101
+ */
102
+ declare function retrieveGrantFile(grantUrl: string, _relayerUrl?: string, downloadRelayer?: {
103
+ proxyDownload: (url: string) => Promise<Blob>;
104
+ }): Promise<GrantFile>;
105
+ /**
106
+ * Generates a content hash for a grant file.
107
+ * This can be used for integrity verification.
108
+ *
109
+ * @remarks
110
+ * Creates a deterministic keccak256 hash of the grant file by first sorting
111
+ * all object keys recursively to ensure consistent hashing regardless of
112
+ * property order. This hash can be used to verify grant file integrity
113
+ * or as a unique identifier.
114
+ *
115
+ * @param grantFile - The grant file to generate a hash for
116
+ * @returns The keccak256 hash of the grant file as a hex string
117
+ * @throws {SerializationError} When the grant file cannot be serialized
118
+ * @example
119
+ * ```typescript
120
+ * const grantFile = {
121
+ * grantee: '0x742d35Cc6558Fd4D9e9E0E888F0462ef6919Bd36',
122
+ * operation: 'read',
123
+ * parameters: { version: '1.0', mode: 'full' }
124
+ * };
125
+ *
126
+ * const hash = getGrantFileHash(grantFile);
127
+ * console.log(`Grant file hash: ${hash}`);
128
+ * // "0x1234567890abcdef..."
129
+ *
130
+ * // Same grant file with different property order produces same hash
131
+ * const grantFile2 = {
132
+ * operation: 'read',
133
+ * parameters: { mode: 'full', version: '1.0' },
134
+ * grantee: '0x742d35Cc6558Fd4D9e9E0E888F0462ef6919Bd36'
135
+ * };
136
+ *
137
+ * const hash2 = getGrantFileHash(grantFile2);
138
+ * console.log(hash === hash2); // true
139
+ * ```
140
+ */
141
+ declare function getGrantFileHash(grantFile: GrantFile): string;
142
+ /**
143
+ * Validates that a grant file has the required structure.
144
+ *
145
+ * @remarks
146
+ * Performs runtime validation to ensure data conforms to the GrantFile interface.
147
+ * Checks for required fields (grantee, operation, parameters) and validates their
148
+ * types and formats. This is a type guard function that enables TypeScript to
149
+ * narrow the type when it returns true.
150
+ *
151
+ * @param data - The data to validate as a grant file
152
+ * @returns True if the data is a valid grant file, false otherwise
153
+ * @example
154
+ * ```typescript
155
+ * const unknownData = await fetch(url).then(r => r.json());
156
+ *
157
+ * if (validateGrantFile(unknownData)) {
158
+ * // TypeScript now knows unknownData is a GrantFile
159
+ * console.log(`Grant for operation: ${unknownData.operation}`);
160
+ * console.log(`Grantee: ${unknownData.grantee}`);
161
+ * } else {
162
+ * throw new Error('Invalid grant file format');
163
+ * }
164
+ *
165
+ * // Validation examples:
166
+ * validateGrantFile({
167
+ * grantee: '0x742d35Cc6558Fd4D9e9E0E888F0462ef6919Bd36',
168
+ * operation: 'read',
169
+ * parameters: {}
170
+ * }); // true
171
+ *
172
+ * validateGrantFile({
173
+ * grantee: 'invalid-address',
174
+ * operation: 'read',
175
+ * parameters: {}
176
+ * }); // false (invalid address format)
177
+ *
178
+ * validateGrantFile({
179
+ * operation: 'read',
180
+ * parameters: {}
181
+ * }); // false (missing grantee)
182
+ * ```
183
+ */
184
+ declare function validateGrantFile(data: unknown): data is GrantFile;
185
+
186
+ export { createGrantFile, getGrantFileHash, retrieveGrantFile, storeGrantFile, validateGrantFile };
@@ -0,0 +1,137 @@
1
+ import { keccak256, toHex } from "viem";
2
+ import { SerializationError, NetworkError } from "../errors";
3
+ function createGrantFile(params) {
4
+ const grantFile = {
5
+ grantee: params.grantee,
6
+ operation: params.operation,
7
+ parameters: params.parameters
8
+ };
9
+ if (params.expiresAt) {
10
+ grantFile.expires = params.expiresAt;
11
+ }
12
+ return grantFile;
13
+ }
14
+ async function storeGrantFile(grantFile, relayerUrl) {
15
+ try {
16
+ const grantFileBlob = new Blob([JSON.stringify(grantFile, null, 2)], {
17
+ type: "application/json"
18
+ });
19
+ const formData = new FormData();
20
+ formData.append("file", grantFileBlob, "grant-file.json");
21
+ const response = await fetch(`${relayerUrl}/api/ipfs/upload`, {
22
+ method: "POST",
23
+ body: formData
24
+ });
25
+ if (!response.ok) {
26
+ throw new NetworkError(
27
+ `Failed to store grant file: ${response.statusText}`,
28
+ new Error(`HTTP ${response.status}`)
29
+ );
30
+ }
31
+ const responseData = await response.json();
32
+ const data = responseData;
33
+ if (!data.success) {
34
+ throw new NetworkError(data.error || "Failed to store grant file");
35
+ }
36
+ return data.url || "";
37
+ } catch (error) {
38
+ if (error instanceof NetworkError) {
39
+ throw error;
40
+ }
41
+ throw new NetworkError(
42
+ `Network error while storing grant file: ${error instanceof Error ? error.message : "Unknown error"}`,
43
+ error
44
+ );
45
+ }
46
+ }
47
+ async function retrieveGrantFile(grantUrl, _relayerUrl, downloadRelayer) {
48
+ try {
49
+ if (grantUrl.startsWith("http") && grantUrl.includes("/ipfs/")) {
50
+ console.warn(
51
+ `\u26A0\uFE0F Grant URL uses HTTP gateway format instead of ipfs:// protocol. Found: ${grantUrl}. Consider using ipfs:// format for better protocol-agnostic storage.`
52
+ );
53
+ }
54
+ const { fetchWithRelayer } = await import("./download");
55
+ const response = await fetchWithRelayer(grantUrl, downloadRelayer);
56
+ if (!response.ok) {
57
+ throw new NetworkError(
58
+ `Failed to retrieve grant file: HTTP ${response.status}`
59
+ );
60
+ }
61
+ const text = await response.text();
62
+ const grantFile = JSON.parse(text);
63
+ if (!validateGrantFile(grantFile)) {
64
+ throw new NetworkError(`Invalid grant file format from ${grantUrl}`);
65
+ }
66
+ return grantFile;
67
+ } catch (error) {
68
+ if (error instanceof NetworkError) {
69
+ throw error;
70
+ }
71
+ throw new NetworkError(
72
+ `Error retrieving grant file: ${error instanceof Error ? error.message : "Unknown error"}`,
73
+ error
74
+ );
75
+ }
76
+ }
77
+ function getGrantFileHash(grantFile) {
78
+ try {
79
+ const sortedFile = {
80
+ grantee: grantFile.grantee,
81
+ operation: grantFile.operation,
82
+ parameters: sortObjectKeys(grantFile.parameters)
83
+ };
84
+ if (grantFile.expires !== void 0) {
85
+ sortedFile.expires = grantFile.expires;
86
+ }
87
+ const jsonString = JSON.stringify(sortedFile);
88
+ console.info(`Hash: ${keccak256(toHex(jsonString))}`);
89
+ return keccak256(toHex(jsonString));
90
+ } catch (error) {
91
+ throw new SerializationError(
92
+ `Failed to generate grant file hash: ${error instanceof Error ? error.message : "Unknown error"}`
93
+ );
94
+ }
95
+ }
96
+ function sortObjectKeys(obj) {
97
+ if (obj === null || typeof obj !== "object") {
98
+ return obj;
99
+ }
100
+ if (Array.isArray(obj)) {
101
+ return obj.map((item) => sortObjectKeys(item));
102
+ }
103
+ const sortedObj = {};
104
+ Object.keys(obj).sort().forEach((key) => {
105
+ sortedObj[key] = sortObjectKeys(obj[key]);
106
+ });
107
+ return sortedObj;
108
+ }
109
+ function validateGrantFile(data) {
110
+ if (!data || typeof data !== "object") {
111
+ return false;
112
+ }
113
+ const obj = data;
114
+ if (typeof obj.grantee !== "string" || !obj.grantee.match(/^0x[a-fA-F0-9]{40}$/)) {
115
+ return false;
116
+ }
117
+ if (typeof obj.operation !== "string" || obj.operation.length === 0) {
118
+ return false;
119
+ }
120
+ if (!obj.parameters || typeof obj.parameters !== "object") {
121
+ return false;
122
+ }
123
+ if (obj.expires !== void 0) {
124
+ if (typeof obj.expires !== "number" || obj.expires < 0 || !Number.isInteger(obj.expires)) {
125
+ return false;
126
+ }
127
+ }
128
+ return true;
129
+ }
130
+ export {
131
+ createGrantFile,
132
+ getGrantFileHash,
133
+ retrieveGrantFile,
134
+ storeGrantFile,
135
+ validateGrantFile
136
+ };
137
+ //# sourceMappingURL=grantFiles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/grantFiles.ts"],"sourcesContent":["import { keccak256, toHex } from \"viem\";\nimport type { GrantFile, GrantPermissionParams } from \"../types/permissions\";\nimport { SerializationError, NetworkError } from \"../errors\";\n\ninterface GrantFileStorageResponse {\n success: boolean;\n error?: string;\n url?: string;\n}\n\n/**\n * Creates a grant file structure from permission parameters.\n *\n * @remarks\n * This function constructs the JSON structure that represents a permission grant\n * in the Vana protocol. The grant file contains all necessary information for\n * a grantee to perform operations on behalf of the grantor.\n *\n * @param params - The permission parameters to create the grant file from\n * @returns The constructed grant file object\n * @example\n * ```typescript\n * const grantFile = createGrantFile({\n * grantee: '0x742d35Cc6558Fd4D9e9E0E888F0462ef6919Bd36',\n * operation: 'llm_inference',\n * parameters: {\n * model: 'gpt-4',\n * maxTokens: 1000\n * },\n * expiresAt: Date.now() + 86400000 // 24 hours\n * });\n *\n * console.log(grantFile);\n * // {\n * // grantee: '0x742d...',\n * // operation: 'llm_inference',\n * // parameters: { model: 'gpt-4', maxTokens: 1000 },\n * // expires: 1234567890\n * // }\n * ```\n */\nexport function createGrantFile(params: GrantPermissionParams): GrantFile {\n const grantFile: GrantFile = {\n grantee: params.grantee,\n operation: params.operation,\n parameters: params.parameters,\n };\n\n // Add expiration if provided\n if (params.expiresAt) {\n grantFile.expires = params.expiresAt;\n }\n\n return grantFile;\n}\n\n/**\n * Stores a grant file in IPFS via the relayer service.\n *\n * @remarks\n * This function uploads the grant file to IPFS through the relayer's upload endpoint.\n * The returned URL can be stored on-chain as part of the permission grant, allowing\n * anyone to retrieve the detailed permission parameters later.\n *\n * @param grantFile - The grant file to store\n * @param relayerUrl - URL of the relayer service\n * @returns Promise resolving to the IPFS URL\n * @throws {NetworkError} When the upload fails or relayer is unavailable\n * @example\n * ```typescript\n * const grantFile = createGrantFile(params);\n *\n * try {\n * const ipfsUrl = await storeGrantFile(grantFile, 'https://relayer.vana.com');\n * console.log(`Grant file stored at: ${ipfsUrl}`);\n * // ipfsUrl: \"ipfs://QmHash123...\"\n * } catch (error) {\n * console.error('Failed to store grant file:', error);\n * }\n * ```\n */\nexport async function storeGrantFile(\n grantFile: GrantFile,\n relayerUrl: string,\n): Promise<string> {\n try {\n // Convert grant file to blob and use IPFS upload endpoint\n const grantFileBlob = new Blob([JSON.stringify(grantFile, null, 2)], {\n type: \"application/json\",\n });\n\n const formData = new FormData();\n formData.append(\"file\", grantFileBlob, \"grant-file.json\");\n\n const response = await fetch(`${relayerUrl}/api/ipfs/upload`, {\n method: \"POST\",\n body: formData,\n });\n\n if (!response.ok) {\n throw new NetworkError(\n `Failed to store grant file: ${response.statusText}`,\n new Error(`HTTP ${response.status}`),\n );\n }\n\n const responseData: unknown = await response.json();\n const data = responseData as GrantFileStorageResponse;\n\n if (!data.success) {\n throw new NetworkError(data.error || \"Failed to store grant file\");\n }\n\n return data.url || \"\"; // The IPFS URL from the upload response\n } catch (error) {\n if (error instanceof NetworkError) {\n throw error;\n }\n throw new NetworkError(\n `Network error while storing grant file: ${error instanceof Error ? error.message : \"Unknown error\"}`,\n error as Error,\n );\n }\n}\n\n/**\n * Retrieves detailed grant file data from IPFS or HTTP storage.\n *\n * @remarks\n * **This is Step 2 of the performant two-step permission API.**\n *\n * Use this method to resolve detailed permission data (operation, parameters, etc.)\n * for specific grants after first getting the fast on-chain data using\n * `getUserPermissionGrantsOnChain()`. This design eliminates N+1 query problems\n * by allowing selective lazy-loading of expensive off-chain data.\n *\n * **Performance**: Single network request per grant file (typically 100-500ms).\n * **Reliability**: Tries multiple IPFS gateways as fallbacks if primary URL fails.\n *\n * @param grantUrl - The grant file URL from OnChainPermissionGrant.grantUrl\n * @param _relayerUrl - URL of the relayer service (optional, unused)\n * @param downloadRelayer - Optional download relayer for proxying CORS-restricted downloads\n * @param downloadRelayer.proxyDownload - Function to proxy download requests through application server\n * @returns Promise resolving to the complete grant file with operation details\n * @throws {NetworkError} When all retrieval attempts fail\n * @throws {SerializationError} When grant file format is invalid\n * @example\n * ```typescript\n * // Step 1: Fast on-chain data (no N+1 queries)\n * const grants = await vana.permissions.getUserPermissionGrantsOnChain();\n *\n * // Step 2: Lazy-load details for specific grant when needed\n * const grantFile = await retrieveGrantFile(grants[0].grantUrl);\n *\n * console.log(`Operation: ${grantFile.operation}`);\n * console.log(`Grantee: ${grantFile.grantee}`);\n * console.log(`Parameters:`, grantFile.parameters);\n *\n * // Only fetch details for grants user actually wants to see\n * for (const grant of selectedGrants) {\n * const details = await retrieveGrantFile(grant.grantUrl);\n * displayGrantDetails(details);\n * }\n * ```\n */\nexport async function retrieveGrantFile(\n grantUrl: string,\n _relayerUrl?: string,\n downloadRelayer?: { proxyDownload: (url: string) => Promise<Blob> },\n): Promise<GrantFile> {\n try {\n // Check if the URL is a gateway URL instead of ipfs:// protocol\n if (grantUrl.startsWith(\"http\") && grantUrl.includes(\"/ipfs/\")) {\n console.warn(\n `⚠️ Grant URL uses HTTP gateway format instead of ipfs:// protocol. ` +\n `Found: ${grantUrl}. ` +\n `Consider using ipfs:// format for better protocol-agnostic storage.`,\n );\n }\n\n // Use the unified download utility\n const { fetchWithRelayer } = await import(\"./download\");\n const response = await fetchWithRelayer(grantUrl, downloadRelayer);\n\n if (!response.ok) {\n throw new NetworkError(\n `Failed to retrieve grant file: HTTP ${response.status}`,\n );\n }\n\n const text = await response.text();\n const grantFile = JSON.parse(text);\n\n if (!validateGrantFile(grantFile)) {\n throw new NetworkError(`Invalid grant file format from ${grantUrl}`);\n }\n\n return grantFile;\n } catch (error) {\n if (error instanceof NetworkError) {\n throw error;\n }\n throw new NetworkError(\n `Error retrieving grant file: ${error instanceof Error ? error.message : \"Unknown error\"}`,\n error as Error,\n );\n }\n}\n\n/**\n * Generates a content hash for a grant file.\n * This can be used for integrity verification.\n *\n * @remarks\n * Creates a deterministic keccak256 hash of the grant file by first sorting\n * all object keys recursively to ensure consistent hashing regardless of\n * property order. This hash can be used to verify grant file integrity\n * or as a unique identifier.\n *\n * @param grantFile - The grant file to generate a hash for\n * @returns The keccak256 hash of the grant file as a hex string\n * @throws {SerializationError} When the grant file cannot be serialized\n * @example\n * ```typescript\n * const grantFile = {\n * grantee: '0x742d35Cc6558Fd4D9e9E0E888F0462ef6919Bd36',\n * operation: 'read',\n * parameters: { version: '1.0', mode: 'full' }\n * };\n *\n * const hash = getGrantFileHash(grantFile);\n * console.log(`Grant file hash: ${hash}`);\n * // \"0x1234567890abcdef...\"\n *\n * // Same grant file with different property order produces same hash\n * const grantFile2 = {\n * operation: 'read',\n * parameters: { mode: 'full', version: '1.0' },\n * grantee: '0x742d35Cc6558Fd4D9e9E0E888F0462ef6919Bd36'\n * };\n *\n * const hash2 = getGrantFileHash(grantFile2);\n * console.log(hash === hash2); // true\n * ```\n */\nexport function getGrantFileHash(grantFile: GrantFile): string {\n try {\n // Create a stable JSON representation\n const sortedFile: GrantFile = {\n grantee: grantFile.grantee,\n operation: grantFile.operation,\n parameters: sortObjectKeys(grantFile.parameters) as Record<\n string,\n unknown\n >,\n };\n\n // Add expires if present\n if (grantFile.expires !== undefined) {\n sortedFile.expires = grantFile.expires;\n }\n\n const jsonString = JSON.stringify(sortedFile);\n console.info(`Hash: ${keccak256(toHex(jsonString))}`);\n return keccak256(toHex(jsonString));\n } catch (error) {\n throw new SerializationError(\n `Failed to generate grant file hash: ${error instanceof Error ? error.message : \"Unknown error\"}`,\n );\n }\n}\n\n/**\n * Recursively sorts object keys for stable serialization.\n *\n * @param obj - The object to sort keys recursively\n * @returns The object with all keys sorted recursively\n */\nfunction sortObjectKeys(obj: unknown): unknown {\n if (obj === null || typeof obj !== \"object\") {\n return obj;\n }\n\n if (Array.isArray(obj)) {\n return obj.map((item) => sortObjectKeys(item));\n }\n\n const sortedObj: Record<string, unknown> = {};\n Object.keys(obj as Record<string, unknown>)\n .sort()\n .forEach((key) => {\n sortedObj[key] = sortObjectKeys((obj as Record<string, unknown>)[key]);\n });\n\n return sortedObj;\n}\n\n/**\n * Validates that a grant file has the required structure.\n *\n * @remarks\n * Performs runtime validation to ensure data conforms to the GrantFile interface.\n * Checks for required fields (grantee, operation, parameters) and validates their\n * types and formats. This is a type guard function that enables TypeScript to\n * narrow the type when it returns true.\n *\n * @param data - The data to validate as a grant file\n * @returns True if the data is a valid grant file, false otherwise\n * @example\n * ```typescript\n * const unknownData = await fetch(url).then(r => r.json());\n *\n * if (validateGrantFile(unknownData)) {\n * // TypeScript now knows unknownData is a GrantFile\n * console.log(`Grant for operation: ${unknownData.operation}`);\n * console.log(`Grantee: ${unknownData.grantee}`);\n * } else {\n * throw new Error('Invalid grant file format');\n * }\n *\n * // Validation examples:\n * validateGrantFile({\n * grantee: '0x742d35Cc6558Fd4D9e9E0E888F0462ef6919Bd36',\n * operation: 'read',\n * parameters: {}\n * }); // true\n *\n * validateGrantFile({\n * grantee: 'invalid-address',\n * operation: 'read',\n * parameters: {}\n * }); // false (invalid address format)\n *\n * validateGrantFile({\n * operation: 'read',\n * parameters: {}\n * }); // false (missing grantee)\n * ```\n */\nexport function validateGrantFile(data: unknown): data is GrantFile {\n if (!data || typeof data !== \"object\") {\n return false;\n }\n\n const obj = data as Record<string, unknown>;\n\n // Validate required fields\n // Validate grantee address\n if (\n typeof obj.grantee !== \"string\" ||\n !obj.grantee.match(/^0x[a-fA-F0-9]{40}$/)\n ) {\n return false;\n }\n\n if (typeof obj.operation !== \"string\" || obj.operation.length === 0) {\n return false;\n }\n\n // Files are no longer stored in grant files - they're tracked in the contract\n\n if (!obj.parameters || typeof obj.parameters !== \"object\") {\n return false;\n }\n\n // Validate optional expires field\n if (obj.expires !== undefined) {\n if (\n typeof obj.expires !== \"number\" ||\n obj.expires < 0 ||\n !Number.isInteger(obj.expires)\n ) {\n return false;\n }\n }\n\n return true;\n}\n"],"mappings":"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","names":[]}
@@ -0,0 +1,243 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var grantValidation_exports = {};
30
+ __export(grantValidation_exports, {
31
+ GrantExpiredError: () => GrantExpiredError,
32
+ GrantSchemaError: () => GrantSchemaError,
33
+ GrantValidationError: () => GrantValidationError,
34
+ GranteeMismatchError: () => GranteeMismatchError,
35
+ OperationNotAllowedError: () => OperationNotAllowedError,
36
+ validateGrant: () => validateGrant,
37
+ validateGrantExpiry: () => validateGrantExpiry,
38
+ validateGranteeAccess: () => validateGranteeAccess,
39
+ validateOperationAccess: () => validateOperationAccess
40
+ });
41
+ module.exports = __toCommonJS(grantValidation_exports);
42
+ var import_viem = require("viem");
43
+ var import_ajv = __toESM(require("ajv"), 1);
44
+ var import_ajv_formats = __toESM(require("ajv-formats"), 1);
45
+ var import_grantFile_schema = __toESM(require("../schemas/grantFile.schema.json"), 1);
46
+ class GrantValidationError extends Error {
47
+ constructor(message, details) {
48
+ super(message);
49
+ this.details = details;
50
+ this.name = "GrantValidationError";
51
+ }
52
+ }
53
+ class GrantExpiredError extends GrantValidationError {
54
+ constructor(message, expires, currentTime) {
55
+ super(message, { expires, currentTime });
56
+ this.expires = expires;
57
+ this.currentTime = currentTime;
58
+ this.name = "GrantExpiredError";
59
+ }
60
+ }
61
+ class GranteeMismatchError extends GrantValidationError {
62
+ constructor(message, grantee, requestingAddress) {
63
+ super(message, { grantee, requestingAddress });
64
+ this.grantee = grantee;
65
+ this.requestingAddress = requestingAddress;
66
+ this.name = "GranteeMismatchError";
67
+ }
68
+ }
69
+ class OperationNotAllowedError extends GrantValidationError {
70
+ constructor(message, grantedOperation, requestedOperation) {
71
+ super(message, { grantedOperation, requestedOperation });
72
+ this.grantedOperation = grantedOperation;
73
+ this.requestedOperation = requestedOperation;
74
+ this.name = "OperationNotAllowedError";
75
+ }
76
+ }
77
+ class GrantSchemaError extends GrantValidationError {
78
+ constructor(message, schemaErrors, invalidData) {
79
+ super(message, { errors: schemaErrors, data: invalidData });
80
+ this.schemaErrors = schemaErrors;
81
+ this.invalidData = invalidData;
82
+ this.name = "GrantSchemaError";
83
+ }
84
+ }
85
+ const ajv = new import_ajv.default({
86
+ strict: true,
87
+ removeAdditional: false,
88
+ useDefaults: false,
89
+ coerceTypes: false
90
+ });
91
+ (0, import_ajv_formats.default)(ajv);
92
+ const validateGrantFileSchema = ajv.compile(import_grantFile_schema.default);
93
+ function validateGrant(data, options = {}) {
94
+ const {
95
+ schema = true,
96
+ grantee,
97
+ operation,
98
+ currentTime,
99
+ throwOnError = true
100
+ } = options;
101
+ const errors = [];
102
+ let grant;
103
+ if (schema) {
104
+ try {
105
+ if (validateGrantFileSchema(data)) {
106
+ grant = data;
107
+ } else {
108
+ throw new GrantValidationError("Invalid grant file schema");
109
+ }
110
+ } catch (error) {
111
+ if (error instanceof GrantValidationError) {
112
+ const schemaError = new GrantSchemaError(
113
+ error.message,
114
+ Array.isArray(error.details?.errors) ? error.details.errors : [],
115
+ data
116
+ );
117
+ errors.push({
118
+ type: "schema",
119
+ message: error.message,
120
+ error: schemaError
121
+ });
122
+ } else {
123
+ errors.push({
124
+ type: "schema",
125
+ message: `Schema validation failed: ${error instanceof Error ? error.message : "Unknown error"}`,
126
+ error: error instanceof Error ? error : new Error("Unknown error")
127
+ });
128
+ }
129
+ }
130
+ } else {
131
+ grant = data;
132
+ }
133
+ if (grant) {
134
+ if (grantee) {
135
+ try {
136
+ validateGranteeAccess(grant, grantee);
137
+ } catch (error) {
138
+ const field = extractFieldFromBusinessError(error);
139
+ errors.push({
140
+ type: "business",
141
+ field,
142
+ message: error instanceof Error ? error.message : "Unknown business rule error",
143
+ error: error instanceof Error ? error : new Error("Unknown error")
144
+ });
145
+ }
146
+ }
147
+ try {
148
+ validateGrantExpiry(grant, currentTime);
149
+ } catch (error) {
150
+ const field = extractFieldFromBusinessError(error);
151
+ errors.push({
152
+ type: "business",
153
+ field,
154
+ message: error instanceof Error ? error.message : "Unknown business rule error",
155
+ error: error instanceof Error ? error : new Error("Unknown error")
156
+ });
157
+ }
158
+ if (operation) {
159
+ try {
160
+ validateOperationAccess(grant, operation);
161
+ } catch (error) {
162
+ const field = extractFieldFromBusinessError(error);
163
+ errors.push({
164
+ type: "business",
165
+ field,
166
+ message: error instanceof Error ? error.message : "Unknown business rule error",
167
+ error: error instanceof Error ? error : new Error("Unknown error")
168
+ });
169
+ }
170
+ }
171
+ }
172
+ if (errors.length > 0) {
173
+ if (throwOnError) {
174
+ const firstError = errors[0];
175
+ if (firstError.error) {
176
+ throw firstError.error;
177
+ } else {
178
+ const combinedMessage = errors.map((e) => e.message).join("; ");
179
+ throw new GrantValidationError(
180
+ `Grant validation failed: ${combinedMessage}`,
181
+ { errors, data }
182
+ );
183
+ }
184
+ }
185
+ return { valid: false, errors, grant };
186
+ }
187
+ if (throwOnError) {
188
+ return grant;
189
+ } else {
190
+ return { valid: true, errors: [], grant };
191
+ }
192
+ }
193
+ function extractFieldFromBusinessError(error) {
194
+ if (error instanceof GrantExpiredError) return "expires";
195
+ if (error instanceof GranteeMismatchError) return "grantee";
196
+ if (error instanceof OperationNotAllowedError) return "operation";
197
+ return void 0;
198
+ }
199
+ function validateGranteeAccess(grantFile, requestingAddress) {
200
+ const normalizedGrantee = (0, import_viem.getAddress)(grantFile.grantee);
201
+ const normalizedRequesting = (0, import_viem.getAddress)(requestingAddress);
202
+ if (normalizedGrantee !== normalizedRequesting) {
203
+ throw new GranteeMismatchError(
204
+ "Permission denied: requesting address does not match grantee",
205
+ grantFile.grantee,
206
+ requestingAddress
207
+ );
208
+ }
209
+ }
210
+ function validateGrantExpiry(grantFile, currentTime) {
211
+ if (grantFile.expires) {
212
+ const now = currentTime || Math.floor(Date.now() / 1e3);
213
+ if (now > grantFile.expires) {
214
+ throw new GrantExpiredError(
215
+ "Permission denied: grant has expired",
216
+ grantFile.expires,
217
+ now
218
+ );
219
+ }
220
+ }
221
+ }
222
+ function validateOperationAccess(grantFile, requestedOperation) {
223
+ if (grantFile.operation !== requestedOperation) {
224
+ throw new OperationNotAllowedError(
225
+ "Permission denied: operation not allowed by grant",
226
+ grantFile.operation,
227
+ requestedOperation
228
+ );
229
+ }
230
+ }
231
+ // Annotate the CommonJS export names for ESM import in node:
232
+ 0 && (module.exports = {
233
+ GrantExpiredError,
234
+ GrantSchemaError,
235
+ GrantValidationError,
236
+ GranteeMismatchError,
237
+ OperationNotAllowedError,
238
+ validateGrant,
239
+ validateGrantExpiry,
240
+ validateGranteeAccess,
241
+ validateOperationAccess
242
+ });
243
+ //# sourceMappingURL=grantValidation.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/grantValidation.ts"],"sourcesContent":["import { Address, getAddress } from \"viem\";\nimport Ajv, { type ValidateFunction } from \"ajv\";\nimport addFormats from \"ajv-formats\";\nimport type { GrantFile } from \"../types/permissions\";\nimport grantFileSchema from \"../schemas/grantFile.schema.json\";\n\n/**\n * Base error class for grant validation failures\n *\n * @category Permissions\n */\nexport class GrantValidationError extends Error {\n constructor(\n message: string,\n public details?: Record<string, unknown>,\n ) {\n super(message);\n this.name = \"GrantValidationError\";\n }\n}\n\n/**\n * Error thrown when a grant has expired\n *\n * @category Permissions\n */\nexport class GrantExpiredError extends GrantValidationError {\n constructor(\n message: string,\n public expires: number,\n public currentTime: number,\n ) {\n super(message, { expires, currentTime });\n this.name = \"GrantExpiredError\";\n }\n}\n\n/**\n * Error thrown when grantee doesn't match requesting address\n *\n * @category Permissions\n */\nexport class GranteeMismatchError extends GrantValidationError {\n constructor(\n message: string,\n public grantee: Address,\n public requestingAddress: Address,\n ) {\n super(message, { grantee, requestingAddress });\n this.name = \"GranteeMismatchError\";\n }\n}\n\n/**\n * Error thrown when operation is not allowed by grant\n *\n * @category Permissions\n */\nexport class OperationNotAllowedError extends GrantValidationError {\n constructor(\n message: string,\n public grantedOperation: string,\n public requestedOperation: string,\n ) {\n super(message, { grantedOperation, requestedOperation });\n this.name = \"OperationNotAllowedError\";\n }\n}\n\n/**\n * Error thrown when grant file structure is invalid\n *\n * @category Permissions\n */\nexport class GrantSchemaError extends GrantValidationError {\n constructor(\n message: string,\n public schemaErrors: unknown[],\n public invalidData: unknown,\n ) {\n super(message, { errors: schemaErrors, data: invalidData });\n this.name = \"GrantSchemaError\";\n }\n}\n\n/**\n * Ajv instance for grant file validation with draft 2020-12 support\n */\nconst ajv = new Ajv({\n strict: true,\n removeAdditional: false,\n useDefaults: false,\n coerceTypes: false,\n});\n\n// Add format validators (email, date, etc.)\naddFormats(ajv);\n\n/**\n * Compiled grant file schema validator\n */\nconst validateGrantFileSchema: ValidateFunction = ajv.compile(grantFileSchema);\n\n/**\n * Options for grant validation\n *\n * @category Permissions\n */\nexport interface GrantValidationOptions {\n /** Enable JSON schema validation (default: true) */\n schema?: boolean;\n /** Grantee address to validate access for */\n grantee?: Address;\n /** Operation to validate permission for */\n operation?: string;\n /** Override current time for expiry checking (Unix timestamp) */\n currentTime?: number;\n /** Return detailed results instead of throwing (default: false) */\n throwOnError?: boolean;\n}\n\n/**\n * Detailed validation result\n *\n * @category Permissions\n */\nexport interface GrantValidationResult {\n /** Whether validation passed */\n valid: boolean;\n /** Validation errors encountered */\n errors: Array<{\n type: \"schema\" | \"business\";\n field?: string;\n message: string;\n error?: Error;\n }>;\n /** The validated grant file (if validation passed) */\n grant?: GrantFile;\n}\n\n/**\n * Validates a grant file with comprehensive schema and business rule checking.\n *\n * This function provides flexible validation with TypeScript overloads:\n * - When `throwOnError` is false (or `{ throwOnError: false }`), returns a detailed validation result\n * - When `throwOnError` is true (default), throws specific errors or returns the validated grant\n *\n * @param data - The grant file data to validate (unknown type for safety)\n * @param options - Validation options including grantee, operation, files, etc.\n * @returns Either a GrantFile (when throwing) or GrantValidationResult (when not throwing)\n * @throws {GrantSchemaError} When the grant file structure is invalid\n * @throws {GrantExpiredError} When the grant has expired\n * @throws {GranteeMismatchError} When the grantee doesn't match the requesting address\n * @throws {OperationNotAllowedError} When the requested operation is not allowed\n * @example\n * ```typescript\n * // Throwing mode (default) - returns GrantFile or throws\n * const grant = validateGrant(data, {\n * grantee: '0x123...',\n * operation: 'llm_inference',\n * });\n *\n * // Non-throwing mode - returns validation result\n * const result = validateGrant(data, {\n * grantee: '0x123...',\n * throwOnError: false\n * });\n * if (result.valid) {\n * console.log('Grant is valid:', result.grant);\n * } else {\n * console.log('Validation errors:', result.errors);\n * }\n * ```\n */\n\nexport function validateGrant(\n data: unknown,\n options: GrantValidationOptions & { throwOnError: false },\n): GrantValidationResult;\n\nexport function validateGrant(\n data: unknown,\n options?:\n | Omit<GrantValidationOptions, \"throwOnError\">\n | (GrantValidationOptions & { throwOnError?: true }),\n): GrantFile;\n\n/**\n * Implementation function for grant validation with flexible return types\n *\n * @param data - The grant file data to validate\n * @param options - Validation configuration options\n * @returns Either a GrantFile or GrantValidationResult depending on throwOnError setting\n */\nexport function validateGrant(\n data: unknown,\n options: GrantValidationOptions = {},\n): GrantFile | GrantValidationResult {\n const {\n schema = true,\n grantee,\n operation,\n currentTime,\n throwOnError = true,\n } = options;\n\n const errors: GrantValidationResult[\"errors\"] = [];\n let grant: GrantFile | undefined;\n\n // 1. Schema Validation\n if (schema) {\n try {\n if (validateGrantFileSchema(data)) {\n grant = data as GrantFile;\n } else {\n throw new GrantValidationError(\"Invalid grant file schema\");\n }\n } catch (error) {\n if (error instanceof GrantValidationError) {\n const schemaError = new GrantSchemaError(\n error.message,\n Array.isArray(error.details?.errors) ? error.details.errors : [],\n data,\n );\n errors.push({\n type: \"schema\",\n message: error.message,\n error: schemaError,\n });\n } else {\n errors.push({\n type: \"schema\",\n message: `Schema validation failed: ${error instanceof Error ? error.message : \"Unknown error\"}`,\n error: error instanceof Error ? error : new Error(\"Unknown error\"),\n });\n }\n }\n } else {\n // Minimal type assertion if schema validation is skipped\n grant = data as GrantFile;\n }\n\n // 2. Business Logic Validation (only if we have a valid grant)\n if (grant) {\n // Check grantee access\n if (grantee) {\n try {\n validateGranteeAccess(grant, grantee);\n } catch (error) {\n const field = extractFieldFromBusinessError(error);\n errors.push({\n type: \"business\",\n field,\n message:\n error instanceof Error\n ? error.message\n : \"Unknown business rule error\",\n error: error instanceof Error ? error : new Error(\"Unknown error\"),\n });\n }\n }\n\n // Check expiration\n try {\n validateGrantExpiry(grant, currentTime);\n } catch (error) {\n const field = extractFieldFromBusinessError(error);\n errors.push({\n type: \"business\",\n field,\n message:\n error instanceof Error\n ? error.message\n : \"Unknown business rule error\",\n error: error instanceof Error ? error : new Error(\"Unknown error\"),\n });\n }\n\n // Check operation access\n if (operation) {\n try {\n validateOperationAccess(grant, operation);\n } catch (error) {\n const field = extractFieldFromBusinessError(error);\n errors.push({\n type: \"business\",\n field,\n message:\n error instanceof Error\n ? error.message\n : \"Unknown business rule error\",\n error: error instanceof Error ? error : new Error(\"Unknown error\"),\n });\n }\n }\n }\n\n // 3. Return Results\n if (errors.length > 0) {\n if (throwOnError) {\n // Throw the most specific error we have\n const firstError = errors[0];\n if (firstError.error) {\n throw firstError.error;\n } else {\n const combinedMessage = errors.map((e) => e.message).join(\"; \");\n throw new GrantValidationError(\n `Grant validation failed: ${combinedMessage}`,\n { errors, data },\n );\n }\n }\n\n return { valid: false, errors, grant };\n }\n\n if (throwOnError) {\n return grant as GrantFile;\n } else {\n return { valid: true, errors: [], grant: grant as GrantFile };\n }\n}\n\n/**\n * Helper function to extract field name from business validation errors\n *\n * @param error - The validation error to extract field information from\n * @returns The field name associated with the error, or undefined if not applicable\n */\nfunction extractFieldFromBusinessError(error: unknown): string | undefined {\n if (error instanceof GrantExpiredError) return \"expires\";\n if (error instanceof GranteeMismatchError) return \"grantee\";\n if (error instanceof OperationNotAllowedError) return \"operation\";\n return undefined;\n}\n\n/**\n * Validates that a grant file allows access for a specific grantee\n *\n * @param grantFile - The grant file to validate access for\n * @param requestingAddress - The address requesting access to check against the grantee\n */\nexport function validateGranteeAccess(\n grantFile: GrantFile,\n requestingAddress: Address,\n): void {\n const normalizedGrantee = getAddress(grantFile.grantee);\n const normalizedRequesting = getAddress(requestingAddress);\n\n if (normalizedGrantee !== normalizedRequesting) {\n throw new GranteeMismatchError(\n \"Permission denied: requesting address does not match grantee\",\n grantFile.grantee,\n requestingAddress,\n );\n }\n}\n\n/**\n * Validates that a grant has not expired (if expiry is set)\n *\n * @param grantFile - The grant file to check expiration for\n * @param currentTime - Optional override for current time (Unix timestamp)\n */\nexport function validateGrantExpiry(\n grantFile: GrantFile,\n currentTime?: number,\n): void {\n if (grantFile.expires) {\n const now = currentTime || Math.floor(Date.now() / 1000); // Current Unix timestamp\n\n if (now > grantFile.expires) {\n throw new GrantExpiredError(\n \"Permission denied: grant has expired\",\n grantFile.expires,\n now,\n );\n }\n }\n}\n\n/**\n * Validates that a grant allows a specific operation\n *\n * @param grantFile - The grant file to validate operation access for\n * @param requestedOperation - The operation being requested to validate against the grant\n */\nexport function validateOperationAccess(\n grantFile: GrantFile,\n requestedOperation: string,\n): void {\n if (grantFile.operation !== requestedOperation) {\n throw new OperationNotAllowedError(\n \"Permission denied: operation not allowed by grant\",\n grantFile.operation,\n requestedOperation,\n );\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAAoC;AACpC,iBAA2C;AAC3C,yBAAuB;AAEvB,8BAA4B;AAOrB,MAAM,6BAA6B,MAAM;AAAA,EAC9C,YACE,SACO,SACP;AACA,UAAM,OAAO;AAFN;AAGP,SAAK,OAAO;AAAA,EACd;AACF;AAOO,MAAM,0BAA0B,qBAAqB;AAAA,EAC1D,YACE,SACO,SACA,aACP;AACA,UAAM,SAAS,EAAE,SAAS,YAAY,CAAC;AAHhC;AACA;AAGP,SAAK,OAAO;AAAA,EACd;AACF;AAOO,MAAM,6BAA6B,qBAAqB;AAAA,EAC7D,YACE,SACO,SACA,mBACP;AACA,UAAM,SAAS,EAAE,SAAS,kBAAkB,CAAC;AAHtC;AACA;AAGP,SAAK,OAAO;AAAA,EACd;AACF;AAOO,MAAM,iCAAiC,qBAAqB;AAAA,EACjE,YACE,SACO,kBACA,oBACP;AACA,UAAM,SAAS,EAAE,kBAAkB,mBAAmB,CAAC;AAHhD;AACA;AAGP,SAAK,OAAO;AAAA,EACd;AACF;AAOO,MAAM,yBAAyB,qBAAqB;AAAA,EACzD,YACE,SACO,cACA,aACP;AACA,UAAM,SAAS,EAAE,QAAQ,cAAc,MAAM,YAAY,CAAC;AAHnD;AACA;AAGP,SAAK,OAAO;AAAA,EACd;AACF;AAKA,MAAM,MAAM,IAAI,WAAAA,QAAI;AAAA,EAClB,QAAQ;AAAA,EACR,kBAAkB;AAAA,EAClB,aAAa;AAAA,EACb,aAAa;AACf,CAAC;AAAA,IAGD,mBAAAC,SAAW,GAAG;AAKd,MAAM,0BAA4C,IAAI,QAAQ,wBAAAC,OAAe;AA6FtE,SAAS,cACd,MACA,UAAkC,CAAC,GACA;AACnC,QAAM;AAAA,IACJ,SAAS;AAAA,IACT;AAAA,IACA;AAAA,IACA;AAAA,IACA,eAAe;AAAA,EACjB,IAAI;AAEJ,QAAM,SAA0C,CAAC;AACjD,MAAI;AAGJ,MAAI,QAAQ;AACV,QAAI;AACF,UAAI,wBAAwB,IAAI,GAAG;AACjC,gBAAQ;AAAA,MACV,OAAO;AACL,cAAM,IAAI,qBAAqB,2BAA2B;AAAA,MAC5D;AAAA,IACF,SAAS,OAAO;AACd,UAAI,iBAAiB,sBAAsB;AACzC,cAAM,cAAc,IAAI;AAAA,UACtB,MAAM;AAAA,UACN,MAAM,QAAQ,MAAM,SAAS,MAAM,IAAI,MAAM,QAAQ,SAAS,CAAC;AAAA,UAC/D;AAAA,QACF;AACA,eAAO,KAAK;AAAA,UACV,MAAM;AAAA,UACN,SAAS,MAAM;AAAA,UACf,OAAO;AAAA,QACT,CAAC;AAAA,MACH,OAAO;AACL,eAAO,KAAK;AAAA,UACV,MAAM;AAAA,UACN,SAAS,6BAA6B,iBAAiB,QAAQ,MAAM,UAAU,eAAe;AAAA,UAC9F,OAAO,iBAAiB,QAAQ,QAAQ,IAAI,MAAM,eAAe;AAAA,QACnE,CAAC;AAAA,MACH;AAAA,IACF;AAAA,EACF,OAAO;AAEL,YAAQ;AAAA,EACV;AAGA,MAAI,OAAO;AAET,QAAI,SAAS;AACX,UAAI;AACF,8BAAsB,OAAO,OAAO;AAAA,MACtC,SAAS,OAAO;AACd,cAAM,QAAQ,8BAA8B,KAAK;AACjD,eAAO,KAAK;AAAA,UACV,MAAM;AAAA,UACN;AAAA,UACA,SACE,iBAAiB,QACb,MAAM,UACN;AAAA,UACN,OAAO,iBAAiB,QAAQ,QAAQ,IAAI,MAAM,eAAe;AAAA,QACnE,CAAC;AAAA,MACH;AAAA,IACF;AAGA,QAAI;AACF,0BAAoB,OAAO,WAAW;AAAA,IACxC,SAAS,OAAO;AACd,YAAM,QAAQ,8BAA8B,KAAK;AACjD,aAAO,KAAK;AAAA,QACV,MAAM;AAAA,QACN;AAAA,QACA,SACE,iBAAiB,QACb,MAAM,UACN;AAAA,QACN,OAAO,iBAAiB,QAAQ,QAAQ,IAAI,MAAM,eAAe;AAAA,MACnE,CAAC;AAAA,IACH;AAGA,QAAI,WAAW;AACb,UAAI;AACF,gCAAwB,OAAO,SAAS;AAAA,MAC1C,SAAS,OAAO;AACd,cAAM,QAAQ,8BAA8B,KAAK;AACjD,eAAO,KAAK;AAAA,UACV,MAAM;AAAA,UACN;AAAA,UACA,SACE,iBAAiB,QACb,MAAM,UACN;AAAA,UACN,OAAO,iBAAiB,QAAQ,QAAQ,IAAI,MAAM,eAAe;AAAA,QACnE,CAAC;AAAA,MACH;AAAA,IACF;AAAA,EACF;AAGA,MAAI,OAAO,SAAS,GAAG;AACrB,QAAI,cAAc;AAEhB,YAAM,aAAa,OAAO,CAAC;AAC3B,UAAI,WAAW,OAAO;AACpB,cAAM,WAAW;AAAA,MACnB,OAAO;AACL,cAAM,kBAAkB,OAAO,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,IAAI;AAC9D,cAAM,IAAI;AAAA,UACR,4BAA4B,eAAe;AAAA,UAC3C,EAAE,QAAQ,KAAK;AAAA,QACjB;AAAA,MACF;AAAA,IACF;AAEA,WAAO,EAAE,OAAO,OAAO,QAAQ,MAAM;AAAA,EACvC;AAEA,MAAI,cAAc;AAChB,WAAO;AAAA,EACT,OAAO;AACL,WAAO,EAAE,OAAO,MAAM,QAAQ,CAAC,GAAG,MAA0B;AAAA,EAC9D;AACF;AAQA,SAAS,8BAA8B,OAAoC;AACzE,MAAI,iBAAiB,kBAAmB,QAAO;AAC/C,MAAI,iBAAiB,qBAAsB,QAAO;AAClD,MAAI,iBAAiB,yBAA0B,QAAO;AACtD,SAAO;AACT;AAQO,SAAS,sBACd,WACA,mBACM;AACN,QAAM,wBAAoB,wBAAW,UAAU,OAAO;AACtD,QAAM,2BAAuB,wBAAW,iBAAiB;AAEzD,MAAI,sBAAsB,sBAAsB;AAC9C,UAAM,IAAI;AAAA,MACR;AAAA,MACA,UAAU;AAAA,MACV;AAAA,IACF;AAAA,EACF;AACF;AAQO,SAAS,oBACd,WACA,aACM;AACN,MAAI,UAAU,SAAS;AACrB,UAAM,MAAM,eAAe,KAAK,MAAM,KAAK,IAAI,IAAI,GAAI;AAEvD,QAAI,MAAM,UAAU,SAAS;AAC3B,YAAM,IAAI;AAAA,QACR;AAAA,QACA,UAAU;AAAA,QACV;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAQO,SAAS,wBACd,WACA,oBACM;AACN,MAAI,UAAU,cAAc,oBAAoB;AAC9C,UAAM,IAAI;AAAA,MACR;AAAA,MACA,UAAU;AAAA,MACV;AAAA,IACF;AAAA,EACF;AACF;","names":["Ajv","addFormats","grantFileSchema"]}