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

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 (797) hide show
  1. package/README.md +13 -4
  2. package/dist/__tests__/waitForTransactionEvents.test.d.ts +1 -0
  3. package/dist/browser.cjs +29 -0
  4. package/dist/browser.cjs.map +1 -0
  5. package/dist/browser.d.ts +4 -1
  6. package/dist/browser.js +1 -305
  7. package/dist/browser.js.map +1 -1
  8. package/dist/{chains.browser.cjs → chains/definitions.cjs} +9 -13
  9. package/dist/chains/definitions.cjs.map +1 -0
  10. package/dist/{chains.browser.d.cts → chains/definitions.d.ts} +7 -11
  11. package/dist/chains/definitions.js +64 -0
  12. package/dist/chains/definitions.js.map +1 -0
  13. package/dist/chains/index.cjs +37 -0
  14. package/dist/chains/index.cjs.map +1 -0
  15. package/dist/chains/index.d.ts +5 -0
  16. package/dist/chains/index.js +15 -0
  17. package/dist/chains/index.js.map +1 -0
  18. package/dist/chains.browser.d.ts +5 -50
  19. package/dist/chains.browser.js +7 -57
  20. package/dist/chains.browser.js.map +1 -1
  21. package/dist/chains.cjs +6 -65
  22. package/dist/chains.cjs.map +1 -1
  23. package/dist/chains.d.ts +8 -2
  24. package/dist/chains.js +7 -57
  25. package/dist/chains.js.map +1 -1
  26. package/dist/chains.node.cjs +6 -65
  27. package/dist/chains.node.cjs.map +1 -1
  28. package/dist/chains.node.d.ts +8 -2
  29. package/dist/chains.node.js +7 -57
  30. package/dist/chains.node.js.map +1 -1
  31. package/dist/config/addresses.cjs +325 -0
  32. package/dist/config/addresses.cjs.map +1 -0
  33. package/dist/config/addresses.d.ts +364 -0
  34. package/dist/config/addresses.js +295 -0
  35. package/dist/config/addresses.js.map +1 -0
  36. package/dist/config/chains.cjs +93 -0
  37. package/dist/config/chains.cjs.map +1 -0
  38. package/dist/config/chains.d.ts +81 -0
  39. package/dist/config/chains.js +67 -0
  40. package/dist/config/chains.js.map +1 -0
  41. package/dist/config/features.cjs +52 -0
  42. package/dist/config/features.cjs.map +1 -0
  43. package/dist/config/features.d.ts +62 -0
  44. package/dist/config/features.js +28 -0
  45. package/dist/config/features.js.map +1 -0
  46. package/dist/config/tests/addresses.test.d.ts +1 -0
  47. package/dist/contracts/contractController.cjs +126 -0
  48. package/dist/contracts/contractController.cjs.map +1 -0
  49. package/dist/contracts/contractController.d.ts +79 -0
  50. package/dist/contracts/contractController.js +100 -0
  51. package/dist/contracts/contractController.js.map +1 -0
  52. package/dist/contracts/tests/contractController.test.d.ts +1 -0
  53. package/dist/controllers/__tests__/schemas-edge-cases.test.d.ts +1 -0
  54. package/dist/controllers/data-error-handling.test.d.ts +1 -0
  55. package/dist/controllers/data.cjs +2351 -0
  56. package/dist/controllers/data.cjs.map +1 -0
  57. package/dist/controllers/data.d.ts +932 -0
  58. package/dist/controllers/data.js +2334 -0
  59. package/dist/controllers/data.js.map +1 -0
  60. package/dist/controllers/permissions.cjs +3863 -0
  61. package/dist/controllers/permissions.cjs.map +1 -0
  62. package/dist/controllers/permissions.d.ts +1330 -0
  63. package/dist/controllers/permissions.js +3839 -0
  64. package/dist/controllers/permissions.js.map +1 -0
  65. package/dist/controllers/protocol.cjs +179 -0
  66. package/dist/controllers/protocol.cjs.map +1 -0
  67. package/dist/controllers/protocol.d.ts +139 -0
  68. package/dist/controllers/protocol.js +159 -0
  69. package/dist/controllers/protocol.js.map +1 -0
  70. package/dist/controllers/schemas.cjs +608 -0
  71. package/dist/controllers/schemas.cjs.map +1 -0
  72. package/dist/controllers/schemas.d.ts +246 -0
  73. package/dist/controllers/schemas.js +584 -0
  74. package/dist/controllers/schemas.js.map +1 -0
  75. package/dist/controllers/server-additional.test.d.ts +1 -0
  76. package/dist/controllers/server.cjs +427 -0
  77. package/dist/controllers/server.cjs.map +1 -0
  78. package/dist/controllers/server.d.ts +217 -0
  79. package/dist/controllers/server.js +408 -0
  80. package/dist/controllers/server.js.map +1 -0
  81. package/dist/core/apiClient.cjs +328 -0
  82. package/dist/core/apiClient.cjs.map +1 -0
  83. package/dist/core/apiClient.d.ts +161 -0
  84. package/dist/core/apiClient.js +309 -0
  85. package/dist/core/apiClient.js.map +1 -0
  86. package/dist/core/client.cjs +70 -0
  87. package/dist/core/client.cjs.map +1 -0
  88. package/dist/core/client.d.ts +89 -0
  89. package/dist/core/client.js +47 -0
  90. package/dist/core/client.js.map +1 -0
  91. package/dist/core/core.test.d.ts +1 -0
  92. package/dist/core/generics.cjs +390 -0
  93. package/dist/core/generics.cjs.map +1 -0
  94. package/dist/core/generics.d.ts +116 -0
  95. package/dist/core/generics.js +359 -0
  96. package/dist/core/generics.js.map +1 -0
  97. package/dist/core/tests/apiClient.test.d.ts +1 -0
  98. package/dist/core/tests/client.test.d.ts +1 -0
  99. package/dist/core/tests/generics.test.d.ts +1 -0
  100. package/dist/core.cjs +657 -0
  101. package/dist/core.cjs.map +1 -0
  102. package/dist/core.d.ts +440 -0
  103. package/dist/core.js +630 -0
  104. package/dist/core.js.map +1 -0
  105. package/dist/crypto/ecies/__tests__/base.test.d.ts +4 -0
  106. package/dist/crypto/ecies/__tests__/compatibility.test.d.ts +8 -0
  107. package/dist/crypto/ecies/__tests__/constants.test.d.ts +4 -0
  108. package/dist/crypto/ecies/__tests__/native-parity.test.d.ts +7 -0
  109. package/dist/crypto/ecies/__tests__/normalization.test.d.ts +1 -0
  110. package/dist/crypto/ecies/__tests__/test-vectors.cjs +102 -0
  111. package/dist/crypto/ecies/__tests__/test-vectors.cjs.map +1 -0
  112. package/dist/crypto/ecies/__tests__/test-vectors.d.ts +38 -0
  113. package/dist/crypto/ecies/__tests__/test-vectors.js +77 -0
  114. package/dist/crypto/ecies/__tests__/test-vectors.js.map +1 -0
  115. package/dist/crypto/ecies/base.cjs +232 -0
  116. package/dist/crypto/ecies/base.cjs.map +1 -0
  117. package/dist/crypto/ecies/base.d.ts +140 -0
  118. package/dist/crypto/ecies/base.js +208 -0
  119. package/dist/crypto/ecies/base.js.map +1 -0
  120. package/dist/crypto/ecies/browser.cjs +165 -0
  121. package/dist/crypto/ecies/browser.cjs.map +1 -0
  122. package/dist/crypto/ecies/browser.d.ts +43 -0
  123. package/dist/crypto/ecies/browser.js +131 -0
  124. package/dist/crypto/ecies/browser.js.map +1 -0
  125. package/dist/crypto/ecies/constants.cjs +131 -0
  126. package/dist/crypto/ecies/constants.cjs.map +1 -0
  127. package/dist/crypto/ecies/constants.d.ts +120 -0
  128. package/dist/crypto/ecies/constants.js +101 -0
  129. package/dist/crypto/ecies/constants.js.map +1 -0
  130. package/dist/crypto/ecies/index.cjs +35 -0
  131. package/dist/crypto/ecies/index.cjs.map +1 -0
  132. package/dist/crypto/ecies/index.d.ts +8 -0
  133. package/dist/crypto/ecies/index.js +13 -0
  134. package/dist/crypto/ecies/index.js.map +1 -0
  135. package/dist/crypto/ecies/interface.cjs +87 -0
  136. package/dist/crypto/ecies/interface.cjs.map +1 -0
  137. package/dist/crypto/ecies/interface.d.ts +174 -0
  138. package/dist/crypto/ecies/interface.js +60 -0
  139. package/dist/crypto/ecies/interface.js.map +1 -0
  140. package/dist/crypto/ecies/node.cjs +167 -0
  141. package/dist/crypto/ecies/node.cjs.map +1 -0
  142. package/dist/crypto/ecies/node.d.ts +45 -0
  143. package/dist/crypto/ecies/node.js +139 -0
  144. package/dist/crypto/ecies/node.js.map +1 -0
  145. package/dist/crypto/ecies/test-vectors/eccrypto-vectors.json +72 -0
  146. package/dist/crypto/ecies/utils.cjs +52 -0
  147. package/dist/crypto/ecies/utils.cjs.map +1 -0
  148. package/dist/crypto/ecies/utils.d.ts +30 -0
  149. package/dist/crypto/ecies/utils.js +26 -0
  150. package/dist/crypto/ecies/utils.js.map +1 -0
  151. package/dist/crypto/services/WalletKeyEncryptionService.cjs +128 -0
  152. package/dist/crypto/services/WalletKeyEncryptionService.cjs.map +1 -0
  153. package/dist/crypto/services/WalletKeyEncryptionService.d.ts +88 -0
  154. package/dist/crypto/services/WalletKeyEncryptionService.js +108 -0
  155. package/dist/crypto/services/WalletKeyEncryptionService.js.map +1 -0
  156. package/dist/crypto/services/WalletKeyEncryptionService.test.d.ts +1 -0
  157. package/dist/diagnostics.cjs +37 -0
  158. package/dist/diagnostics.cjs.map +1 -0
  159. package/dist/diagnostics.d.ts +24 -0
  160. package/dist/diagnostics.js +13 -0
  161. package/dist/diagnostics.js.map +1 -0
  162. package/dist/diagnostics.test.d.ts +1 -0
  163. package/dist/errors.cjs +141 -0
  164. package/dist/errors.cjs.map +1 -0
  165. package/dist/errors.d.ts +348 -0
  166. package/dist/errors.js +105 -0
  167. package/dist/errors.js.map +1 -0
  168. package/dist/generated/abi/ComputeEngineImplementation.cjs +1313 -0
  169. package/dist/generated/abi/ComputeEngineImplementation.cjs.map +1 -0
  170. package/dist/generated/abi/ComputeEngineImplementation.d.ts +995 -0
  171. package/dist/generated/abi/ComputeEngineImplementation.js +1289 -0
  172. package/dist/generated/abi/ComputeEngineImplementation.js.map +1 -0
  173. package/dist/generated/abi/ComputeInstructionRegistryImplementation.cjs +734 -0
  174. package/dist/generated/abi/ComputeInstructionRegistryImplementation.cjs.map +1 -0
  175. package/dist/generated/abi/ComputeInstructionRegistryImplementation.d.ts +544 -0
  176. package/dist/generated/abi/ComputeInstructionRegistryImplementation.js +710 -0
  177. package/dist/generated/abi/ComputeInstructionRegistryImplementation.js.map +1 -0
  178. package/dist/generated/abi/DATFactoryImplementation.cjs +882 -0
  179. package/dist/generated/abi/DATFactoryImplementation.cjs.map +1 -0
  180. package/dist/generated/abi/DATFactoryImplementation.d.ts +660 -0
  181. package/dist/generated/abi/DATFactoryImplementation.js +858 -0
  182. package/dist/generated/abi/DATFactoryImplementation.js.map +1 -0
  183. package/dist/generated/abi/DATImplementation.cjs +934 -0
  184. package/dist/generated/abi/DATImplementation.cjs.map +1 -0
  185. package/dist/generated/abi/DATImplementation.d.ts +692 -0
  186. package/dist/generated/abi/DATImplementation.js +910 -0
  187. package/dist/generated/abi/DATImplementation.js.map +1 -0
  188. package/dist/generated/abi/DATPausableImplementation.cjs +1523 -0
  189. package/dist/generated/abi/DATPausableImplementation.cjs.map +1 -0
  190. package/dist/generated/abi/DATPausableImplementation.d.ts +1144 -0
  191. package/dist/generated/abi/DATPausableImplementation.js +1499 -0
  192. package/dist/generated/abi/DATPausableImplementation.js.map +1 -0
  193. package/dist/generated/abi/DATVotesImplementation.cjs +1460 -0
  194. package/dist/generated/abi/DATVotesImplementation.cjs.map +1 -0
  195. package/dist/generated/abi/DATVotesImplementation.d.ts +1094 -0
  196. package/dist/generated/abi/DATVotesImplementation.js +1436 -0
  197. package/dist/generated/abi/DATVotesImplementation.js.map +1 -0
  198. package/dist/generated/abi/DLPPerformanceImplementation.cjs +1160 -0
  199. package/dist/generated/abi/DLPPerformanceImplementation.cjs.map +1 -0
  200. package/dist/generated/abi/DLPPerformanceImplementation.d.ts +882 -0
  201. package/dist/generated/abi/DLPPerformanceImplementation.js +1136 -0
  202. package/dist/generated/abi/DLPPerformanceImplementation.js.map +1 -0
  203. package/dist/generated/abi/DLPRegistryImplementation.cjs +1469 -0
  204. package/dist/generated/abi/DLPRegistryImplementation.cjs.map +1 -0
  205. package/dist/generated/abi/DLPRegistryImplementation.d.ts +1122 -0
  206. package/dist/generated/abi/DLPRegistryImplementation.js +1445 -0
  207. package/dist/generated/abi/DLPRegistryImplementation.js.map +1 -0
  208. package/dist/generated/abi/DLPRegistryTreasuryImplementation.cjs +612 -0
  209. package/dist/generated/abi/DLPRegistryTreasuryImplementation.cjs.map +1 -0
  210. package/dist/generated/abi/DLPRegistryTreasuryImplementation.d.ts +451 -0
  211. package/dist/generated/abi/DLPRegistryTreasuryImplementation.js +588 -0
  212. package/dist/generated/abi/DLPRegistryTreasuryImplementation.js.map +1 -0
  213. package/dist/generated/abi/DLPRewardDeployerImplementation.cjs +948 -0
  214. package/dist/generated/abi/DLPRewardDeployerImplementation.cjs.map +1 -0
  215. package/dist/generated/abi/DLPRewardDeployerImplementation.d.ts +713 -0
  216. package/dist/generated/abi/DLPRewardDeployerImplementation.js +924 -0
  217. package/dist/generated/abi/DLPRewardDeployerImplementation.js.map +1 -0
  218. package/dist/generated/abi/DLPRewardDeployerTreasuryImplementation.cjs +612 -0
  219. package/dist/generated/abi/DLPRewardDeployerTreasuryImplementation.cjs.map +1 -0
  220. package/dist/generated/abi/DLPRewardDeployerTreasuryImplementation.d.ts +451 -0
  221. package/dist/generated/abi/DLPRewardDeployerTreasuryImplementation.js +588 -0
  222. package/dist/generated/abi/DLPRewardDeployerTreasuryImplementation.js.map +1 -0
  223. package/dist/generated/abi/DLPRewardSwapImplementation.cjs +939 -0
  224. package/dist/generated/abi/DLPRewardSwapImplementation.cjs.map +1 -0
  225. package/dist/generated/abi/DLPRewardSwapImplementation.d.ts +705 -0
  226. package/dist/generated/abi/DLPRewardSwapImplementation.js +915 -0
  227. package/dist/generated/abi/DLPRewardSwapImplementation.js.map +1 -0
  228. package/dist/generated/abi/DLPRootImplementation.cjs +1644 -0
  229. package/dist/generated/abi/DLPRootImplementation.cjs.map +1 -0
  230. package/dist/generated/abi/DLPRootImplementation.d.ts +1246 -0
  231. package/dist/generated/abi/DLPRootImplementation.js +1620 -0
  232. package/dist/generated/abi/DLPRootImplementation.js.map +1 -0
  233. package/dist/generated/abi/DLPTreasuryImplementation.cjs +612 -0
  234. package/dist/generated/abi/DLPTreasuryImplementation.cjs.map +1 -0
  235. package/dist/generated/abi/DLPTreasuryImplementation.d.ts +451 -0
  236. package/dist/generated/abi/DLPTreasuryImplementation.js +588 -0
  237. package/dist/generated/abi/DLPTreasuryImplementation.js.map +1 -0
  238. package/dist/generated/abi/DataLiquidityPoolImplementation.cjs +985 -0
  239. package/dist/generated/abi/DataLiquidityPoolImplementation.cjs.map +1 -0
  240. package/dist/generated/abi/DataLiquidityPoolImplementation.d.ts +735 -0
  241. package/dist/generated/abi/DataLiquidityPoolImplementation.js +961 -0
  242. package/dist/generated/abi/DataLiquidityPoolImplementation.js.map +1 -0
  243. package/dist/generated/abi/DataPortabilityGranteesImplementation.cjs +888 -0
  244. package/dist/generated/abi/DataPortabilityGranteesImplementation.cjs.map +1 -0
  245. package/dist/generated/abi/DataPortabilityGranteesImplementation.d.ts +660 -0
  246. package/dist/generated/abi/DataPortabilityGranteesImplementation.js +864 -0
  247. package/dist/generated/abi/DataPortabilityGranteesImplementation.js.map +1 -0
  248. package/dist/generated/abi/DataPortabilityPermissionsImplementation.cjs +1317 -0
  249. package/dist/generated/abi/DataPortabilityPermissionsImplementation.cjs.map +1 -0
  250. package/dist/generated/abi/DataPortabilityPermissionsImplementation.d.ts +988 -0
  251. package/dist/generated/abi/DataPortabilityPermissionsImplementation.js +1293 -0
  252. package/dist/generated/abi/DataPortabilityPermissionsImplementation.js.map +1 -0
  253. package/dist/generated/abi/DataPortabilityServersImplementation.cjs +1438 -0
  254. package/dist/generated/abi/DataPortabilityServersImplementation.cjs.map +1 -0
  255. package/dist/generated/abi/DataPortabilityServersImplementation.d.ts +1085 -0
  256. package/dist/generated/abi/DataPortabilityServersImplementation.js +1414 -0
  257. package/dist/generated/abi/DataPortabilityServersImplementation.js.map +1 -0
  258. package/dist/generated/abi/DataRefinerRegistryImplementation.cjs +984 -0
  259. package/dist/generated/abi/DataRefinerRegistryImplementation.cjs.map +1 -0
  260. package/dist/generated/abi/DataRefinerRegistryImplementation.d.ts +736 -0
  261. package/dist/generated/abi/DataRefinerRegistryImplementation.js +960 -0
  262. package/dist/generated/abi/DataRefinerRegistryImplementation.js.map +1 -0
  263. package/dist/generated/abi/DataRegistryImplementation.cjs +1341 -0
  264. package/dist/generated/abi/DataRegistryImplementation.cjs.map +1 -0
  265. package/dist/generated/abi/DataRegistryImplementation.d.ts +1013 -0
  266. package/dist/generated/abi/DataRegistryImplementation.js +1317 -0
  267. package/dist/generated/abi/DataRegistryImplementation.js.map +1 -0
  268. package/dist/generated/abi/QueryEngineImplementation.cjs +1319 -0
  269. package/dist/generated/abi/QueryEngineImplementation.cjs.map +1 -0
  270. package/dist/generated/abi/QueryEngineImplementation.d.ts +1000 -0
  271. package/dist/generated/abi/QueryEngineImplementation.js +1295 -0
  272. package/dist/generated/abi/QueryEngineImplementation.js.map +1 -0
  273. package/dist/generated/abi/SwapHelperImplementation.cjs +1019 -0
  274. package/dist/generated/abi/SwapHelperImplementation.cjs.map +1 -0
  275. package/dist/generated/abi/SwapHelperImplementation.d.ts +763 -0
  276. package/dist/generated/abi/SwapHelperImplementation.js +995 -0
  277. package/dist/generated/abi/SwapHelperImplementation.js.map +1 -0
  278. package/dist/generated/abi/TeePoolDedicatedGpuImplementation.cjs +936 -0
  279. package/dist/generated/abi/TeePoolDedicatedGpuImplementation.cjs.map +1 -0
  280. package/dist/generated/abi/TeePoolDedicatedGpuImplementation.d.ts +700 -0
  281. package/dist/generated/abi/TeePoolDedicatedGpuImplementation.js +912 -0
  282. package/dist/generated/abi/TeePoolDedicatedGpuImplementation.js.map +1 -0
  283. package/dist/generated/abi/TeePoolDedicatedStandardImplementation.cjs +936 -0
  284. package/dist/generated/abi/TeePoolDedicatedStandardImplementation.cjs.map +1 -0
  285. package/dist/generated/abi/TeePoolDedicatedStandardImplementation.d.ts +700 -0
  286. package/dist/generated/abi/TeePoolDedicatedStandardImplementation.js +912 -0
  287. package/dist/generated/abi/TeePoolDedicatedStandardImplementation.js.map +1 -0
  288. package/dist/generated/abi/TeePoolEphemeralStandardImplementation.cjs +936 -0
  289. package/dist/generated/abi/TeePoolEphemeralStandardImplementation.cjs.map +1 -0
  290. package/dist/generated/abi/TeePoolEphemeralStandardImplementation.d.ts +700 -0
  291. package/dist/generated/abi/TeePoolEphemeralStandardImplementation.js +912 -0
  292. package/dist/generated/abi/TeePoolEphemeralStandardImplementation.js.map +1 -0
  293. package/dist/generated/abi/TeePoolImplementation.cjs +1313 -0
  294. package/dist/generated/abi/TeePoolImplementation.cjs.map +1 -0
  295. package/dist/generated/abi/TeePoolImplementation.d.ts +992 -0
  296. package/dist/generated/abi/TeePoolImplementation.js +1289 -0
  297. package/dist/generated/abi/TeePoolImplementation.js.map +1 -0
  298. package/dist/generated/abi/TeePoolPersistentGpuImplementation.cjs +936 -0
  299. package/dist/generated/abi/TeePoolPersistentGpuImplementation.cjs.map +1 -0
  300. package/dist/generated/abi/TeePoolPersistentGpuImplementation.d.ts +700 -0
  301. package/dist/generated/abi/TeePoolPersistentGpuImplementation.js +912 -0
  302. package/dist/generated/abi/TeePoolPersistentGpuImplementation.js.map +1 -0
  303. package/dist/generated/abi/TeePoolPersistentStandardImplementation.cjs +936 -0
  304. package/dist/generated/abi/TeePoolPersistentStandardImplementation.cjs.map +1 -0
  305. package/dist/generated/abi/TeePoolPersistentStandardImplementation.d.ts +700 -0
  306. package/dist/generated/abi/TeePoolPersistentStandardImplementation.js +912 -0
  307. package/dist/generated/abi/TeePoolPersistentStandardImplementation.js.map +1 -0
  308. package/dist/generated/abi/TeePoolPhalaImplementation.cjs +1313 -0
  309. package/dist/generated/abi/TeePoolPhalaImplementation.cjs.map +1 -0
  310. package/dist/generated/abi/TeePoolPhalaImplementation.d.ts +992 -0
  311. package/dist/generated/abi/TeePoolPhalaImplementation.js +1289 -0
  312. package/dist/generated/abi/TeePoolPhalaImplementation.js.map +1 -0
  313. package/dist/generated/abi/VanaEpochImplementation.cjs +1188 -0
  314. package/dist/generated/abi/VanaEpochImplementation.cjs.map +1 -0
  315. package/dist/generated/abi/VanaEpochImplementation.d.ts +899 -0
  316. package/dist/generated/abi/VanaEpochImplementation.js +1164 -0
  317. package/dist/generated/abi/VanaEpochImplementation.js.map +1 -0
  318. package/dist/generated/abi/VanaPoolEntityImplementation.cjs +1234 -0
  319. package/dist/generated/abi/VanaPoolEntityImplementation.cjs.map +1 -0
  320. package/dist/generated/abi/VanaPoolEntityImplementation.d.ts +933 -0
  321. package/dist/generated/abi/VanaPoolEntityImplementation.js +1210 -0
  322. package/dist/generated/abi/VanaPoolEntityImplementation.js.map +1 -0
  323. package/dist/generated/abi/VanaPoolStakingImplementation.cjs +921 -0
  324. package/dist/generated/abi/VanaPoolStakingImplementation.cjs.map +1 -0
  325. package/dist/generated/abi/VanaPoolStakingImplementation.d.ts +692 -0
  326. package/dist/generated/abi/VanaPoolStakingImplementation.js +897 -0
  327. package/dist/generated/abi/VanaPoolStakingImplementation.js.map +1 -0
  328. package/dist/generated/abi/VanaPoolTreasuryImplementation.cjs +538 -0
  329. package/dist/generated/abi/VanaPoolTreasuryImplementation.cjs.map +1 -0
  330. package/dist/generated/abi/VanaPoolTreasuryImplementation.d.ts +393 -0
  331. package/dist/generated/abi/VanaPoolTreasuryImplementation.js +514 -0
  332. package/dist/generated/abi/VanaPoolTreasuryImplementation.js.map +1 -0
  333. package/dist/generated/abi/index.cjs +177 -0
  334. package/dist/generated/abi/index.cjs.map +1 -0
  335. package/dist/{index.node.d.cts → generated/abi/index.d.ts} +26541 -37893
  336. package/dist/generated/abi/index.js +120 -0
  337. package/dist/generated/abi/index.js.map +1 -0
  338. package/dist/generated/event-types.cjs +17 -0
  339. package/dist/generated/event-types.cjs.map +1 -0
  340. package/dist/generated/event-types.d.ts +854 -0
  341. package/dist/generated/event-types.js +1 -0
  342. package/dist/generated/event-types.js.map +1 -0
  343. package/dist/generated/eventRegistry.cjs +3351 -0
  344. package/dist/generated/eventRegistry.cjs.map +1 -0
  345. package/dist/generated/eventRegistry.d.ts +14 -0
  346. package/dist/generated/eventRegistry.js +3326 -0
  347. package/dist/generated/eventRegistry.js.map +1 -0
  348. package/dist/generated/server/server-exports.cjs +23 -0
  349. package/dist/generated/server/server-exports.cjs.map +1 -0
  350. package/dist/generated/server/server-exports.d.ts +19 -0
  351. package/dist/generated/server/server-exports.js +2 -0
  352. package/dist/generated/server/server-exports.js.map +1 -0
  353. package/dist/generated/server/server.cjs +17 -0
  354. package/dist/generated/server/server.cjs.map +1 -0
  355. package/dist/generated/server/server.d.ts +538 -0
  356. package/dist/generated/server/server.js +1 -0
  357. package/dist/generated/server/server.js.map +1 -0
  358. package/dist/generated/subgraph.cjs +675 -0
  359. package/dist/generated/subgraph.cjs.map +1 -0
  360. package/dist/generated/subgraph.d.ts +5978 -0
  361. package/dist/generated/subgraph.js +644 -0
  362. package/dist/generated/subgraph.js.map +1 -0
  363. package/dist/index.browser.d.ts +45 -37628
  364. package/dist/index.browser.js +66 -47417
  365. package/dist/index.browser.js.map +1 -1
  366. package/dist/index.cjs +5 -0
  367. package/dist/index.cjs.map +1 -0
  368. package/dist/index.d.ts +0 -0
  369. package/dist/index.js +4 -0
  370. package/dist/index.js.map +1 -0
  371. package/dist/index.node.cjs +87 -47907
  372. package/dist/index.node.cjs.map +1 -1
  373. package/dist/index.node.d.ts +47 -37764
  374. package/dist/index.node.js +68 -47792
  375. package/dist/index.node.js.map +1 -1
  376. package/dist/node.cjs +2 -321
  377. package/dist/node.cjs.map +1 -1
  378. package/dist/node.d.ts +4 -1
  379. package/dist/node.js +1 -307
  380. package/dist/node.js.map +1 -1
  381. package/dist/platform/browser-only.cjs +37 -0
  382. package/dist/platform/browser-only.cjs.map +1 -0
  383. package/dist/platform/browser-only.d.ts +22 -0
  384. package/dist/platform/browser-only.js +12 -0
  385. package/dist/platform/browser-only.js.map +1 -0
  386. package/dist/platform/browser-only.test.d.ts +1 -0
  387. package/dist/platform/browser-safe.cjs +57 -0
  388. package/dist/platform/browser-safe.cjs.map +1 -0
  389. package/dist/platform/browser-safe.d.ts +29 -0
  390. package/dist/platform/browser-safe.js +31 -0
  391. package/dist/platform/browser-safe.js.map +1 -0
  392. package/dist/platform/browser-safe.test.d.ts +1 -0
  393. package/dist/platform/browser.cjs +330 -0
  394. package/dist/platform/browser.cjs.map +1 -0
  395. package/dist/platform/browser.d.ts +71 -0
  396. package/dist/platform/browser.js +296 -0
  397. package/dist/platform/browser.js.map +1 -0
  398. package/dist/platform/browser.test.d.ts +1 -0
  399. package/dist/platform/index.cjs +50 -0
  400. package/dist/platform/index.cjs.map +1 -0
  401. package/dist/platform/index.d.ts +11 -0
  402. package/dist/platform/index.js +27 -0
  403. package/dist/platform/index.js.map +1 -0
  404. package/dist/platform/interface.cjs +17 -0
  405. package/dist/platform/interface.cjs.map +1 -0
  406. package/dist/{node-D9-F9uEP.d.cts → platform/interface.d.ts} +6 -28
  407. package/dist/platform/interface.js +1 -0
  408. package/dist/platform/interface.js.map +1 -0
  409. package/dist/platform/node.cjs +351 -0
  410. package/dist/platform/node.cjs.map +1 -0
  411. package/dist/platform/node.d.ts +23 -0
  412. package/dist/platform/node.js +320 -0
  413. package/dist/platform/node.js.map +1 -0
  414. package/dist/platform/ports/openpgp-port.cjs +74 -0
  415. package/dist/platform/ports/openpgp-port.cjs.map +1 -0
  416. package/dist/platform/ports/openpgp-port.d.ts +13 -0
  417. package/dist/platform/ports/openpgp-port.js +59 -0
  418. package/dist/platform/ports/openpgp-port.js.map +1 -0
  419. package/dist/platform/ports/pgp-port.cjs +17 -0
  420. package/dist/platform/ports/pgp-port.cjs.map +1 -0
  421. package/dist/platform/ports/pgp-port.d.ts +35 -0
  422. package/dist/platform/ports/pgp-port.js +1 -0
  423. package/dist/platform/ports/pgp-port.js.map +1 -0
  424. package/dist/platform/shared/error-utils.cjs +43 -0
  425. package/dist/platform/shared/error-utils.cjs.map +1 -0
  426. package/dist/platform/shared/error-utils.d.ts +23 -0
  427. package/dist/platform/shared/error-utils.js +18 -0
  428. package/dist/platform/shared/error-utils.js.map +1 -0
  429. package/dist/platform/shared/pgp-utils.cjs +55 -0
  430. package/dist/platform/shared/pgp-utils.cjs.map +1 -0
  431. package/dist/platform/shared/pgp-utils.d.ts +59 -0
  432. package/dist/platform/shared/pgp-utils.js +29 -0
  433. package/dist/platform/shared/pgp-utils.js.map +1 -0
  434. package/dist/platform/shared/stream-utils.cjs +49 -0
  435. package/dist/platform/shared/stream-utils.cjs.map +1 -0
  436. package/dist/platform/shared/stream-utils.d.ts +14 -0
  437. package/dist/platform/shared/stream-utils.js +25 -0
  438. package/dist/platform/shared/stream-utils.js.map +1 -0
  439. package/dist/platform/utils.cjs +114 -0
  440. package/dist/platform/utils.cjs.map +1 -0
  441. package/dist/platform/utils.d.ts +49 -0
  442. package/dist/platform/utils.js +76 -0
  443. package/dist/platform/utils.js.map +1 -0
  444. package/dist/platform/utils.test.d.ts +1 -0
  445. package/dist/platform.browser.d.ts +6 -57
  446. package/dist/platform.browser.js +10 -379
  447. package/dist/platform.browser.js.map +1 -1
  448. package/dist/platform.cjs +14 -708
  449. package/dist/platform.cjs.map +1 -1
  450. package/dist/platform.d.ts +11 -2
  451. package/dist/platform.js +14 -694
  452. package/dist/platform.js.map +1 -1
  453. package/dist/platform.node.cjs +14 -708
  454. package/dist/platform.node.cjs.map +1 -1
  455. package/dist/platform.node.d.ts +7 -102
  456. package/dist/platform.node.js +14 -694
  457. package/dist/platform.node.js.map +1 -1
  458. package/dist/schemas/dataSchema.schema.json +53 -0
  459. package/dist/schemas/grantFile.schema.json +43 -0
  460. package/dist/server/handler.cjs +101 -0
  461. package/dist/server/handler.cjs.map +1 -0
  462. package/dist/server/handler.d.ts +87 -0
  463. package/dist/server/handler.js +77 -0
  464. package/dist/server/handler.js.map +1 -0
  465. package/dist/storage/index.cjs +44 -0
  466. package/dist/storage/index.cjs.map +1 -0
  467. package/dist/storage/index.d.ts +56 -0
  468. package/dist/storage/index.js +15 -0
  469. package/dist/storage/index.js.map +1 -0
  470. package/dist/storage/manager.cjs +189 -0
  471. package/dist/storage/manager.cjs.map +1 -0
  472. package/dist/storage/manager.d.ts +147 -0
  473. package/dist/storage/manager.js +165 -0
  474. package/dist/storage/manager.js.map +1 -0
  475. package/dist/storage/providers/callback-storage.cjs +177 -0
  476. package/dist/storage/providers/callback-storage.cjs.map +1 -0
  477. package/dist/storage/providers/callback-storage.d.ts +94 -0
  478. package/dist/storage/providers/callback-storage.js +155 -0
  479. package/dist/storage/providers/callback-storage.js.map +1 -0
  480. package/dist/storage/providers/google-drive.cjs +516 -0
  481. package/dist/storage/providers/google-drive.cjs.map +1 -0
  482. package/dist/storage/providers/google-drive.d.ts +152 -0
  483. package/dist/storage/providers/google-drive.js +494 -0
  484. package/dist/storage/providers/google-drive.js.map +1 -0
  485. package/dist/storage/providers/google-drive.test.d.ts +1 -0
  486. package/dist/storage/providers/ipfs.cjs +283 -0
  487. package/dist/storage/providers/ipfs.cjs.map +1 -0
  488. package/dist/storage/providers/ipfs.d.ts +160 -0
  489. package/dist/storage/providers/ipfs.js +261 -0
  490. package/dist/storage/providers/ipfs.js.map +1 -0
  491. package/dist/storage/providers/pinata.cjs +339 -0
  492. package/dist/storage/providers/pinata.cjs.map +1 -0
  493. package/dist/storage/providers/pinata.d.ts +170 -0
  494. package/dist/storage/providers/pinata.js +317 -0
  495. package/dist/storage/providers/pinata.js.map +1 -0
  496. package/dist/storage/tests/callbackStorage.test.d.ts +1 -0
  497. package/dist/storage/tests/googleDriveStorage.test.d.ts +1 -0
  498. package/dist/storage/tests/ipfsStorage.test.d.ts +1 -0
  499. package/dist/storage/tests/pinataStorage.test.d.ts +1 -0
  500. package/dist/storage/tests/storageManager.test.d.ts +1 -0
  501. package/dist/tests/abi.test.d.ts +1 -0
  502. package/dist/tests/chains-definitions.test.d.ts +1 -0
  503. package/dist/tests/core-encryption.test.d.ts +1 -0
  504. package/dist/tests/core-extended.test.d.ts +1 -0
  505. package/dist/tests/core-generics-coverage.test.d.ts +1 -0
  506. package/dist/tests/coverage-boost.test.d.ts +1 -0
  507. package/dist/tests/crypto-cross-platform-compatibility.test.d.ts +1 -0
  508. package/dist/tests/data-addfile-permissions-schema.test.d.ts +1 -0
  509. package/dist/tests/data-additional-methods.test.d.ts +1 -0
  510. package/dist/tests/data-controller-edge-cases.test.d.ts +1 -0
  511. package/dist/tests/data-ipfs-gateways.test.d.ts +1 -0
  512. package/dist/tests/data-relayer.test.d.ts +1 -0
  513. package/dist/tests/data-schema-validation.test.d.ts +1 -0
  514. package/dist/tests/data-simple-methods.test.d.ts +1 -0
  515. package/dist/tests/data.test.d.ts +1 -0
  516. package/dist/tests/demo-integration.test.d.ts +1 -0
  517. package/dist/tests/demo-trusted-server-integration.test.d.ts +1 -0
  518. package/dist/tests/download-relayer.test.d.ts +1 -0
  519. package/dist/tests/dual-mode-permissions.test.d.ts +1 -0
  520. package/dist/tests/dual-mode-trusted-servers.test.d.ts +1 -0
  521. package/dist/tests/encryption-correct-implementation.test.d.ts +1 -0
  522. package/dist/tests/encryption-coverage.test.d.ts +1 -0
  523. package/dist/tests/encryption-edge-cases.test.d.ts +1 -0
  524. package/dist/tests/encryption-utils-updated.test.d.ts +1 -0
  525. package/dist/tests/errors-coverage.test.d.ts +1 -0
  526. package/dist/tests/errors.test.d.ts +1 -0
  527. package/dist/tests/factories/mockFactory.d.ts +316 -0
  528. package/dist/tests/fakes/FakeStorageManager.d.ts +200 -0
  529. package/dist/tests/fakes/FakeStorageManager.test.d.ts +1 -0
  530. package/dist/tests/fakes/FakeWaitForTransactionEvents.d.ts +170 -0
  531. package/dist/tests/fakes/FakeWaitForTransactionEvents.test.d.ts +1 -0
  532. package/dist/tests/fakes/fake-pgp-port.d.ts +13 -0
  533. package/dist/tests/grantValidation-edge-cases.test.d.ts +1 -0
  534. package/dist/tests/grantValidation-unreachable-branch.test.d.ts +1 -0
  535. package/dist/tests/helper-methods.test.d.ts +1 -0
  536. package/dist/tests/helpers/platformTestHelpers.d.ts +106 -0
  537. package/dist/tests/helpers/typedMocks.d.ts +64 -0
  538. package/dist/tests/index-browser.test.d.ts +1 -0
  539. package/dist/tests/index-node.test.d.ts +1 -0
  540. package/dist/tests/index.test.d.ts +1 -0
  541. package/dist/tests/mocks/platformAdapter.d.ts +12 -0
  542. package/dist/tests/new-permissions-methods.test.d.ts +1 -0
  543. package/dist/tests/no-buffer-browser.test.d.ts +1 -0
  544. package/dist/tests/permissions-grantee.test.d.ts +1 -0
  545. package/dist/tests/permissions-schema-validation.test.d.ts +1 -0
  546. package/dist/tests/permissions-server-files.test.d.ts +1 -0
  547. package/dist/tests/permissions-trust-servers.test.d.ts +1 -0
  548. package/dist/tests/permissions.test.d.ts +1 -0
  549. package/dist/tests/personal.test.d.ts +1 -0
  550. package/dist/tests/platform-browser.test.d.ts +1 -0
  551. package/dist/tests/platform-crypto-expanded.test.d.ts +1 -0
  552. package/dist/tests/platform-crypto.test.d.ts +1 -0
  553. package/dist/tests/platform-index.test.d.ts +1 -0
  554. package/dist/tests/platform-node.test.d.ts +1 -0
  555. package/dist/tests/platform-shared-utils.test.d.ts +1 -0
  556. package/dist/tests/platform-updated.test.d.ts +1 -0
  557. package/dist/tests/protocol-additional-methods.test.d.ts +1 -0
  558. package/dist/tests/protocol.test.d.ts +1 -0
  559. package/dist/tests/schemas.test.d.ts +1 -0
  560. package/dist/tests/server-handler.test.d.ts +1 -0
  561. package/dist/tests/setup.d.ts +7 -0
  562. package/dist/tests/signatureFormatter.test.d.ts +1 -0
  563. package/dist/tests/trusted-server-queries.test.d.ts +1 -0
  564. package/dist/tests/typedDataConverter.test.d.ts +1 -0
  565. package/dist/tests/types-contracts.test.d.ts +1 -0
  566. package/dist/tests/types-data.test.d.ts +1 -0
  567. package/dist/tests/types-external-apis.test.d.ts +1 -0
  568. package/dist/tests/types-generics.test.d.ts +1 -0
  569. package/dist/tests/types-permissions.test.d.ts +1 -0
  570. package/dist/tests/types-upload-params.test.d.ts +1 -0
  571. package/dist/tests/types.test.d.ts +1 -0
  572. package/dist/tests/utils-formatters.test.d.ts +1 -0
  573. package/dist/tests/utils-grantFiles-edge-cases.test.d.ts +1 -0
  574. package/dist/tests/utils-grantFiles-validation.test.d.ts +1 -0
  575. package/dist/tests/utils-grantFiles.test.d.ts +1 -0
  576. package/dist/tests/utils-grantValidation-consolidated.test.d.ts +1 -0
  577. package/dist/tests/utils-grants.test.d.ts +1 -0
  578. package/dist/tests/utils-ipfs-additional.test.d.ts +1 -0
  579. package/dist/tests/utils-ipfs.test.d.ts +4 -0
  580. package/dist/tests/utils-schemaValidation.test.d.ts +1 -0
  581. package/dist/tests/vana.test.d.ts +1 -0
  582. package/dist/tests/wallet-crypto-compatibility.test.d.ts +1 -0
  583. package/dist/types/blockchain.cjs +17 -0
  584. package/dist/types/blockchain.cjs.map +1 -0
  585. package/dist/types/blockchain.d.ts +57 -0
  586. package/dist/types/blockchain.js +1 -0
  587. package/dist/types/blockchain.js.map +1 -0
  588. package/dist/types/chains-additional.test.d.ts +1 -0
  589. package/dist/types/chains.cjs +36 -0
  590. package/dist/types/chains.cjs.map +1 -0
  591. package/dist/types/chains.d.ts +31 -0
  592. package/dist/types/chains.js +11 -0
  593. package/dist/types/chains.js.map +1 -0
  594. package/dist/types/config.cjs +41 -0
  595. package/dist/types/config.cjs.map +1 -0
  596. package/dist/types/config.d.ts +723 -0
  597. package/dist/types/config.js +15 -0
  598. package/dist/types/config.js.map +1 -0
  599. package/dist/types/contracts.cjs +17 -0
  600. package/dist/types/contracts.cjs.map +1 -0
  601. package/dist/types/contracts.d.ts +65 -0
  602. package/dist/types/contracts.js +1 -0
  603. package/dist/types/contracts.js.map +1 -0
  604. package/dist/types/controller-context.cjs +17 -0
  605. package/dist/types/controller-context.cjs.map +1 -0
  606. package/dist/types/controller-context.d.ts +62 -0
  607. package/dist/types/controller-context.js +1 -0
  608. package/dist/types/controller-context.js.map +1 -0
  609. package/dist/types/data.cjs +17 -0
  610. package/dist/types/data.cjs.map +1 -0
  611. package/dist/types/data.d.ts +691 -0
  612. package/dist/types/data.js +1 -0
  613. package/dist/types/data.js.map +1 -0
  614. package/dist/types/eccrypto-js.d.cjs +2 -0
  615. package/dist/types/eccrypto-js.d.cjs.map +1 -0
  616. package/dist/types/eccrypto-js.d.js +1 -0
  617. package/dist/types/eccrypto-js.d.js.map +1 -0
  618. package/dist/types/external-apis.cjs +61 -0
  619. package/dist/types/external-apis.cjs.map +1 -0
  620. package/dist/types/external-apis.d.ts +184 -0
  621. package/dist/types/external-apis.js +34 -0
  622. package/dist/types/external-apis.js.map +1 -0
  623. package/dist/types/generics.cjs +17 -0
  624. package/dist/types/generics.cjs.map +1 -0
  625. package/dist/types/generics.d.ts +447 -0
  626. package/dist/types/generics.js +1 -0
  627. package/dist/types/generics.js.map +1 -0
  628. package/dist/types/index.cjs +61 -0
  629. package/dist/types/index.cjs.map +1 -0
  630. package/dist/types/index.d.ts +20 -0
  631. package/dist/types/index.js +34 -0
  632. package/dist/types/index.js.map +1 -0
  633. package/dist/types/operations.cjs +65 -0
  634. package/dist/types/operations.cjs.map +1 -0
  635. package/dist/types/operations.d.ts +112 -0
  636. package/dist/types/operations.js +37 -0
  637. package/dist/types/operations.js.map +1 -0
  638. package/dist/types/permissions.cjs +17 -0
  639. package/dist/types/permissions.cjs.map +1 -0
  640. package/dist/types/permissions.d.ts +954 -0
  641. package/dist/types/permissions.js +1 -0
  642. package/dist/types/permissions.js.map +1 -0
  643. package/dist/types/personal.cjs +17 -0
  644. package/dist/types/personal.cjs.map +1 -0
  645. package/dist/types/personal.d.ts +38 -0
  646. package/dist/types/personal.js +1 -0
  647. package/dist/types/personal.js.map +1 -0
  648. package/dist/types/relayer.cjs +17 -0
  649. package/dist/types/relayer.cjs.map +1 -0
  650. package/dist/types/relayer.d.ts +281 -0
  651. package/dist/types/relayer.js +1 -0
  652. package/dist/types/relayer.js.map +1 -0
  653. package/dist/types/storage.cjs +39 -0
  654. package/dist/types/storage.cjs.map +1 -0
  655. package/dist/types/storage.d.ts +129 -0
  656. package/dist/types/storage.js +15 -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.ts +193 -0
  661. package/dist/types/transactionResults.js +1 -0
  662. package/dist/types/transactionResults.js.map +1 -0
  663. package/dist/types/utils.cjs +17 -0
  664. package/dist/types/utils.cjs.map +1 -0
  665. package/dist/types/utils.d.ts +816 -0
  666. package/dist/types/utils.js +1 -0
  667. package/dist/types/utils.js.map +1 -0
  668. package/dist/types.cjs +23 -0
  669. package/dist/types.cjs.map +1 -0
  670. package/dist/types.d.ts +30 -0
  671. package/dist/types.js +2 -0
  672. package/dist/types.js.map +1 -0
  673. package/dist/utils/__tests__/parseTransaction.test.d.ts +1 -0
  674. package/dist/utils/__tests__/pojo-serialization.test.d.ts +1 -0
  675. package/dist/utils/__tests__/signatureCache.test.d.ts +1 -0
  676. package/dist/utils/__tests__/transaction-edge-cases.test.d.ts +1 -0
  677. package/dist/utils/__tests__/transactionHelpers.test.d.ts +1 -0
  678. package/dist/utils/__tests__/urlResolver.test.d.ts +4 -0
  679. package/dist/utils/blockchain/registry.cjs +81 -0
  680. package/dist/utils/blockchain/registry.cjs.map +1 -0
  681. package/dist/utils/blockchain/registry.d.ts +32 -0
  682. package/dist/utils/blockchain/registry.js +56 -0
  683. package/dist/utils/blockchain/registry.js.map +1 -0
  684. package/dist/utils/blockchain/registry.test.d.ts +1 -0
  685. package/dist/utils/crypto-utils.cjs +108 -0
  686. package/dist/utils/crypto-utils.cjs.map +1 -0
  687. package/dist/utils/crypto-utils.d.ts +100 -0
  688. package/dist/utils/crypto-utils.js +76 -0
  689. package/dist/utils/crypto-utils.js.map +1 -0
  690. package/dist/utils/crypto-utils.test.d.ts +1 -0
  691. package/dist/utils/download.cjs +69 -0
  692. package/dist/utils/download.cjs.map +1 -0
  693. package/dist/utils/download.d.ts +40 -0
  694. package/dist/utils/download.js +45 -0
  695. package/dist/utils/download.js.map +1 -0
  696. package/dist/utils/encoding.cjs +66 -0
  697. package/dist/utils/encoding.cjs.map +1 -0
  698. package/dist/utils/encoding.d.ts +52 -0
  699. package/dist/utils/encoding.js +39 -0
  700. package/dist/utils/encoding.js.map +1 -0
  701. package/dist/utils/encoding.test.d.ts +1 -0
  702. package/dist/utils/encryption.cjs +176 -0
  703. package/dist/utils/encryption.cjs.map +1 -0
  704. package/dist/utils/encryption.d.ts +271 -0
  705. package/dist/utils/encryption.js +142 -0
  706. package/dist/utils/encryption.js.map +1 -0
  707. package/dist/utils/formatters.cjs +55 -0
  708. package/dist/utils/formatters.cjs.map +1 -0
  709. package/dist/utils/formatters.d.ts +118 -0
  710. package/dist/utils/formatters.js +28 -0
  711. package/dist/utils/formatters.js.map +1 -0
  712. package/dist/utils/grantFiles.cjs +178 -0
  713. package/dist/utils/grantFiles.cjs.map +1 -0
  714. package/dist/utils/grantFiles.d.ts +182 -0
  715. package/dist/utils/grantFiles.js +140 -0
  716. package/dist/utils/grantFiles.js.map +1 -0
  717. package/dist/utils/grantValidation.cjs +243 -0
  718. package/dist/utils/grantValidation.cjs.map +1 -0
  719. package/dist/utils/grantValidation.d.ts +147 -0
  720. package/dist/utils/grantValidation.js +201 -0
  721. package/dist/utils/grantValidation.js.map +1 -0
  722. package/dist/utils/grants.cjs +108 -0
  723. package/dist/utils/grants.cjs.map +1 -0
  724. package/dist/utils/grants.d.ts +67 -0
  725. package/dist/utils/grants.js +82 -0
  726. package/dist/utils/grants.js.map +1 -0
  727. package/dist/utils/ipfs.cjs +130 -0
  728. package/dist/utils/ipfs.cjs.map +1 -0
  729. package/dist/utils/ipfs.d.ts +88 -0
  730. package/dist/utils/ipfs.js +99 -0
  731. package/dist/utils/ipfs.js.map +1 -0
  732. package/dist/utils/lazy-import.cjs +38 -0
  733. package/dist/utils/lazy-import.cjs.map +1 -0
  734. package/dist/utils/lazy-import.d.ts +18 -0
  735. package/dist/utils/lazy-import.js +14 -0
  736. package/dist/utils/lazy-import.js.map +1 -0
  737. package/dist/utils/multicall.cjs +233 -0
  738. package/dist/utils/multicall.cjs.map +1 -0
  739. package/dist/utils/multicall.d.ts +126 -0
  740. package/dist/utils/multicall.js +208 -0
  741. package/dist/utils/multicall.js.map +1 -0
  742. package/dist/utils/parseTransactionPojo.cjs +87 -0
  743. package/dist/utils/parseTransactionPojo.cjs.map +1 -0
  744. package/dist/utils/parseTransactionPojo.d.ts +31 -0
  745. package/dist/utils/parseTransactionPojo.js +63 -0
  746. package/dist/utils/parseTransactionPojo.js.map +1 -0
  747. package/dist/utils/schemaValidation.cjs +258 -0
  748. package/dist/utils/schemaValidation.cjs.map +1 -0
  749. package/dist/utils/schemaValidation.d.ts +168 -0
  750. package/dist/utils/schemaValidation.js +219 -0
  751. package/dist/utils/schemaValidation.js.map +1 -0
  752. package/dist/utils/signatureCache.cjs +186 -0
  753. package/dist/utils/signatureCache.cjs.map +1 -0
  754. package/dist/utils/signatureCache.d.ts +131 -0
  755. package/dist/utils/signatureCache.js +161 -0
  756. package/dist/utils/signatureCache.js.map +1 -0
  757. package/dist/utils/signatureFormatter.cjs +42 -0
  758. package/dist/utils/signatureFormatter.cjs.map +1 -0
  759. package/dist/utils/signatureFormatter.d.ts +36 -0
  760. package/dist/utils/signatureFormatter.js +18 -0
  761. package/dist/utils/signatureFormatter.js.map +1 -0
  762. package/dist/utils/tests/multicall.test.d.ts +1 -0
  763. package/dist/utils/transactionHelpers.cjs +54 -0
  764. package/dist/utils/transactionHelpers.cjs.map +1 -0
  765. package/dist/utils/transactionHelpers.d.ts +80 -0
  766. package/dist/utils/transactionHelpers.js +29 -0
  767. package/dist/utils/transactionHelpers.js.map +1 -0
  768. package/dist/utils/typeGuards.cjs +109 -0
  769. package/dist/utils/typeGuards.cjs.map +1 -0
  770. package/dist/utils/typeGuards.d.ts +138 -0
  771. package/dist/utils/typeGuards.js +74 -0
  772. package/dist/utils/typeGuards.js.map +1 -0
  773. package/dist/utils/typedDataConverter.cjs +43 -0
  774. package/dist/utils/typedDataConverter.cjs.map +1 -0
  775. package/dist/utils/typedDataConverter.d.ts +10 -0
  776. package/dist/utils/typedDataConverter.js +19 -0
  777. package/dist/utils/typedDataConverter.js.map +1 -0
  778. package/dist/utils/urlResolver.cjs +55 -0
  779. package/dist/utils/urlResolver.cjs.map +1 -0
  780. package/dist/utils/urlResolver.d.ts +38 -0
  781. package/dist/utils/urlResolver.js +30 -0
  782. package/dist/utils/urlResolver.js.map +1 -0
  783. package/dist/utils/withEvents.cjs +44 -0
  784. package/dist/utils/withEvents.cjs.map +1 -0
  785. package/dist/utils/withEvents.d.ts +56 -0
  786. package/dist/utils/withEvents.js +18 -0
  787. package/dist/utils/withEvents.js.map +1 -0
  788. package/package.json +61 -29
  789. package/dist/browser-DY8XDblx.d.ts +0 -241
  790. package/dist/chains.browser.cjs.map +0 -1
  791. package/dist/chains.d.cts +0 -2
  792. package/dist/chains.node.d.cts +0 -2
  793. package/dist/index.d.cts +0 -2
  794. package/dist/node-D9-F9uEP.d.ts +0 -238
  795. package/dist/node.d.cts +0 -1
  796. package/dist/platform.d.cts +0 -2
  797. package/dist/platform.node.d.cts +0 -105
@@ -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 !== void 0 ? 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 type { Address } from \"viem\";\nimport { 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 =\n currentTime !== undefined ? 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":"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","names":["Ajv","addFormats","grantFileSchema"]}
@@ -0,0 +1,147 @@
1
+ import type { Address } from "viem";
2
+ import type { GrantFile } from "../types/permissions";
3
+ /**
4
+ * Base error class for grant validation failures
5
+ *
6
+ * @category Permissions
7
+ */
8
+ export declare class GrantValidationError extends Error {
9
+ details?: Record<string, unknown> | undefined;
10
+ constructor(message: string, details?: Record<string, unknown> | undefined);
11
+ }
12
+ /**
13
+ * Error thrown when a grant has expired
14
+ *
15
+ * @category Permissions
16
+ */
17
+ export declare class GrantExpiredError extends GrantValidationError {
18
+ expires: number;
19
+ currentTime: number;
20
+ constructor(message: string, expires: number, currentTime: number);
21
+ }
22
+ /**
23
+ * Error thrown when grantee doesn't match requesting address
24
+ *
25
+ * @category Permissions
26
+ */
27
+ export declare class GranteeMismatchError extends GrantValidationError {
28
+ grantee: Address;
29
+ requestingAddress: Address;
30
+ constructor(message: string, grantee: Address, requestingAddress: Address);
31
+ }
32
+ /**
33
+ * Error thrown when operation is not allowed by grant
34
+ *
35
+ * @category Permissions
36
+ */
37
+ export declare class OperationNotAllowedError extends GrantValidationError {
38
+ grantedOperation: string;
39
+ requestedOperation: string;
40
+ constructor(message: string, grantedOperation: string, requestedOperation: string);
41
+ }
42
+ /**
43
+ * Error thrown when grant file structure is invalid
44
+ *
45
+ * @category Permissions
46
+ */
47
+ export declare class GrantSchemaError extends GrantValidationError {
48
+ schemaErrors: unknown[];
49
+ invalidData: unknown;
50
+ constructor(message: string, schemaErrors: unknown[], invalidData: unknown);
51
+ }
52
+ /**
53
+ * Options for grant validation
54
+ *
55
+ * @category Permissions
56
+ */
57
+ export interface GrantValidationOptions {
58
+ /** Enable JSON schema validation (default: true) */
59
+ schema?: boolean;
60
+ /** Grantee address to validate access for */
61
+ grantee?: Address;
62
+ /** Operation to validate permission for */
63
+ operation?: string;
64
+ /** Override current time for expiry checking (Unix timestamp) */
65
+ currentTime?: number;
66
+ /** Return detailed results instead of throwing (default: false) */
67
+ throwOnError?: boolean;
68
+ }
69
+ /**
70
+ * Detailed validation result
71
+ *
72
+ * @category Permissions
73
+ */
74
+ export interface GrantValidationResult {
75
+ /** Whether validation passed */
76
+ valid: boolean;
77
+ /** Validation errors encountered */
78
+ errors: Array<{
79
+ type: "schema" | "business";
80
+ field?: string;
81
+ message: string;
82
+ error?: Error;
83
+ }>;
84
+ /** The validated grant file (if validation passed) */
85
+ grant?: GrantFile;
86
+ }
87
+ /**
88
+ * Validates a grant file with comprehensive schema and business rule checking.
89
+ *
90
+ * This function provides flexible validation with TypeScript overloads:
91
+ * - When `throwOnError` is false (or `{ throwOnError: false }`), returns a detailed validation result
92
+ * - When `throwOnError` is true (default), throws specific errors or returns the validated grant
93
+ *
94
+ * @param data - The grant file data to validate (unknown type for safety)
95
+ * @param options - Validation options including grantee, operation, files, etc.
96
+ * @returns Either a GrantFile (when throwing) or GrantValidationResult (when not throwing)
97
+ * @throws {GrantSchemaError} When the grant file structure is invalid
98
+ * @throws {GrantExpiredError} When the grant has expired
99
+ * @throws {GranteeMismatchError} When the grantee doesn't match the requesting address
100
+ * @throws {OperationNotAllowedError} When the requested operation is not allowed
101
+ * @example
102
+ * ```typescript
103
+ * // Throwing mode (default) - returns GrantFile or throws
104
+ * const grant = validateGrant(data, {
105
+ * grantee: '0x123...',
106
+ * operation: 'llm_inference',
107
+ * });
108
+ *
109
+ * // Non-throwing mode - returns validation result
110
+ * const result = validateGrant(data, {
111
+ * grantee: '0x123...',
112
+ * throwOnError: false
113
+ * });
114
+ * if (result.valid) {
115
+ * console.log('Grant is valid:', result.grant);
116
+ * } else {
117
+ * console.log('Validation errors:', result.errors);
118
+ * }
119
+ * ```
120
+ */
121
+ export declare function validateGrant(data: unknown, options: GrantValidationOptions & {
122
+ throwOnError: false;
123
+ }): GrantValidationResult;
124
+ export declare function validateGrant(data: unknown, options?: Omit<GrantValidationOptions, "throwOnError"> | (GrantValidationOptions & {
125
+ throwOnError?: true;
126
+ })): GrantFile;
127
+ /**
128
+ * Validates that a grant file allows access for a specific grantee
129
+ *
130
+ * @param grantFile - The grant file to validate access for
131
+ * @param requestingAddress - The address requesting access to check against the grantee
132
+ */
133
+ export declare function validateGranteeAccess(grantFile: GrantFile, requestingAddress: Address): void;
134
+ /**
135
+ * Validates that a grant has not expired (if expiry is set)
136
+ *
137
+ * @param grantFile - The grant file to check expiration for
138
+ * @param currentTime - Optional override for current time (Unix timestamp)
139
+ */
140
+ export declare function validateGrantExpiry(grantFile: GrantFile, currentTime?: number): void;
141
+ /**
142
+ * Validates that a grant allows a specific operation
143
+ *
144
+ * @param grantFile - The grant file to validate operation access for
145
+ * @param requestedOperation - The operation being requested to validate against the grant
146
+ */
147
+ export declare function validateOperationAccess(grantFile: GrantFile, requestedOperation: string): void;
@@ -0,0 +1,201 @@
1
+ import { getAddress } from "viem";
2
+ import Ajv from "ajv";
3
+ import addFormats from "ajv-formats";
4
+ import grantFileSchema from "../schemas/grantFile.schema.json";
5
+ class GrantValidationError extends Error {
6
+ constructor(message, details) {
7
+ super(message);
8
+ this.details = details;
9
+ this.name = "GrantValidationError";
10
+ }
11
+ }
12
+ class GrantExpiredError extends GrantValidationError {
13
+ constructor(message, expires, currentTime) {
14
+ super(message, { expires, currentTime });
15
+ this.expires = expires;
16
+ this.currentTime = currentTime;
17
+ this.name = "GrantExpiredError";
18
+ }
19
+ }
20
+ class GranteeMismatchError extends GrantValidationError {
21
+ constructor(message, grantee, requestingAddress) {
22
+ super(message, { grantee, requestingAddress });
23
+ this.grantee = grantee;
24
+ this.requestingAddress = requestingAddress;
25
+ this.name = "GranteeMismatchError";
26
+ }
27
+ }
28
+ class OperationNotAllowedError extends GrantValidationError {
29
+ constructor(message, grantedOperation, requestedOperation) {
30
+ super(message, { grantedOperation, requestedOperation });
31
+ this.grantedOperation = grantedOperation;
32
+ this.requestedOperation = requestedOperation;
33
+ this.name = "OperationNotAllowedError";
34
+ }
35
+ }
36
+ class GrantSchemaError extends GrantValidationError {
37
+ constructor(message, schemaErrors, invalidData) {
38
+ super(message, { errors: schemaErrors, data: invalidData });
39
+ this.schemaErrors = schemaErrors;
40
+ this.invalidData = invalidData;
41
+ this.name = "GrantSchemaError";
42
+ }
43
+ }
44
+ const ajv = new Ajv({
45
+ strict: true,
46
+ removeAdditional: false,
47
+ useDefaults: false,
48
+ coerceTypes: false
49
+ });
50
+ addFormats(ajv);
51
+ const validateGrantFileSchema = ajv.compile(grantFileSchema);
52
+ function validateGrant(data, options = {}) {
53
+ const {
54
+ schema = true,
55
+ grantee,
56
+ operation,
57
+ currentTime,
58
+ throwOnError = true
59
+ } = options;
60
+ const errors = [];
61
+ let grant;
62
+ if (schema) {
63
+ try {
64
+ if (validateGrantFileSchema(data)) {
65
+ grant = data;
66
+ } else {
67
+ throw new GrantValidationError("Invalid grant file schema");
68
+ }
69
+ } catch (error) {
70
+ if (error instanceof GrantValidationError) {
71
+ const schemaError = new GrantSchemaError(
72
+ error.message,
73
+ Array.isArray(error.details?.errors) ? error.details.errors : [],
74
+ data
75
+ );
76
+ errors.push({
77
+ type: "schema",
78
+ message: error.message,
79
+ error: schemaError
80
+ });
81
+ } else {
82
+ errors.push({
83
+ type: "schema",
84
+ message: `Schema validation failed: ${error instanceof Error ? error.message : "Unknown error"}`,
85
+ error: error instanceof Error ? error : new Error("Unknown error")
86
+ });
87
+ }
88
+ }
89
+ } else {
90
+ grant = data;
91
+ }
92
+ if (grant) {
93
+ if (grantee) {
94
+ try {
95
+ validateGranteeAccess(grant, grantee);
96
+ } catch (error) {
97
+ const field = extractFieldFromBusinessError(error);
98
+ errors.push({
99
+ type: "business",
100
+ field,
101
+ message: error instanceof Error ? error.message : "Unknown business rule error",
102
+ error: error instanceof Error ? error : new Error("Unknown error")
103
+ });
104
+ }
105
+ }
106
+ try {
107
+ validateGrantExpiry(grant, currentTime);
108
+ } catch (error) {
109
+ const field = extractFieldFromBusinessError(error);
110
+ errors.push({
111
+ type: "business",
112
+ field,
113
+ message: error instanceof Error ? error.message : "Unknown business rule error",
114
+ error: error instanceof Error ? error : new Error("Unknown error")
115
+ });
116
+ }
117
+ if (operation) {
118
+ try {
119
+ validateOperationAccess(grant, operation);
120
+ } catch (error) {
121
+ const field = extractFieldFromBusinessError(error);
122
+ errors.push({
123
+ type: "business",
124
+ field,
125
+ message: error instanceof Error ? error.message : "Unknown business rule error",
126
+ error: error instanceof Error ? error : new Error("Unknown error")
127
+ });
128
+ }
129
+ }
130
+ }
131
+ if (errors.length > 0) {
132
+ if (throwOnError) {
133
+ const firstError = errors[0];
134
+ if (firstError.error) {
135
+ throw firstError.error;
136
+ } else {
137
+ const combinedMessage = errors.map((e) => e.message).join("; ");
138
+ throw new GrantValidationError(
139
+ `Grant validation failed: ${combinedMessage}`,
140
+ { errors, data }
141
+ );
142
+ }
143
+ }
144
+ return { valid: false, errors, grant };
145
+ }
146
+ if (throwOnError) {
147
+ return grant;
148
+ } else {
149
+ return { valid: true, errors: [], grant };
150
+ }
151
+ }
152
+ function extractFieldFromBusinessError(error) {
153
+ if (error instanceof GrantExpiredError) return "expires";
154
+ if (error instanceof GranteeMismatchError) return "grantee";
155
+ if (error instanceof OperationNotAllowedError) return "operation";
156
+ return void 0;
157
+ }
158
+ function validateGranteeAccess(grantFile, requestingAddress) {
159
+ const normalizedGrantee = getAddress(grantFile.grantee);
160
+ const normalizedRequesting = getAddress(requestingAddress);
161
+ if (normalizedGrantee !== normalizedRequesting) {
162
+ throw new GranteeMismatchError(
163
+ "Permission denied: requesting address does not match grantee",
164
+ grantFile.grantee,
165
+ requestingAddress
166
+ );
167
+ }
168
+ }
169
+ function validateGrantExpiry(grantFile, currentTime) {
170
+ if (grantFile.expires) {
171
+ const now = currentTime !== void 0 ? currentTime : Math.floor(Date.now() / 1e3);
172
+ if (now > grantFile.expires) {
173
+ throw new GrantExpiredError(
174
+ "Permission denied: grant has expired",
175
+ grantFile.expires,
176
+ now
177
+ );
178
+ }
179
+ }
180
+ }
181
+ function validateOperationAccess(grantFile, requestedOperation) {
182
+ if (grantFile.operation !== requestedOperation) {
183
+ throw new OperationNotAllowedError(
184
+ "Permission denied: operation not allowed by grant",
185
+ grantFile.operation,
186
+ requestedOperation
187
+ );
188
+ }
189
+ }
190
+ export {
191
+ GrantExpiredError,
192
+ GrantSchemaError,
193
+ GrantValidationError,
194
+ GranteeMismatchError,
195
+ OperationNotAllowedError,
196
+ validateGrant,
197
+ validateGrantExpiry,
198
+ validateGranteeAccess,
199
+ validateOperationAccess
200
+ };
201
+ //# sourceMappingURL=grantValidation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/grantValidation.ts"],"sourcesContent":["import type { Address } from \"viem\";\nimport { 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 =\n currentTime !== undefined ? 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":"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","names":[]}