@opendatalabs/vana-sdk 0.1.0-alpha.d7fc764 → 0.1.0-alpha.dc68f39

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 (667) hide show
  1. package/dist/__tests__/waitForTransactionEvents.test.d.ts +1 -0
  2. package/dist/browser.d.ts +4 -2
  3. package/dist/chains/definitions.cjs +9 -6
  4. package/dist/chains/definitions.cjs.map +1 -1
  5. package/dist/chains/definitions.d.ts +9 -11
  6. package/dist/chains/definitions.js +9 -6
  7. package/dist/chains/definitions.js.map +1 -1
  8. package/dist/chains/index.d.ts +5 -2
  9. package/dist/chains.browser.d.ts +8 -2
  10. package/dist/chains.d.ts +8 -2
  11. package/dist/chains.node.d.ts +8 -2
  12. package/dist/config/addresses.d.ts +8 -24
  13. package/dist/config/chains.d.ts +9 -13
  14. package/dist/config/default-services.cjs +60 -0
  15. package/dist/config/default-services.cjs.map +1 -0
  16. package/dist/config/default-services.d.ts +46 -0
  17. package/dist/config/default-services.js +33 -0
  18. package/dist/config/default-services.js.map +1 -0
  19. package/dist/config/default-services.test.d.ts +1 -0
  20. package/dist/config/features.d.ts +1 -3
  21. package/dist/config/tests/addresses.test.d.ts +1 -0
  22. package/dist/contracts/contractController.cjs +3 -3
  23. package/dist/contracts/contractController.cjs.map +1 -1
  24. package/dist/contracts/contractController.d.ts +11 -28
  25. package/dist/contracts/contractController.js +4 -7
  26. package/dist/contracts/contractController.js.map +1 -1
  27. package/dist/contracts/tests/contractController.test.d.ts +1 -0
  28. package/dist/controllers/__tests__/schemas-edge-cases.test.d.ts +1 -0
  29. package/dist/controllers/base.cjs +83 -0
  30. package/dist/controllers/base.cjs.map +1 -0
  31. package/dist/controllers/base.d.ts +84 -0
  32. package/dist/controllers/base.js +59 -0
  33. package/dist/controllers/base.js.map +1 -0
  34. package/dist/controllers/data-error-handling.test.d.ts +1 -0
  35. package/dist/controllers/data.cjs +415 -172
  36. package/dist/controllers/data.cjs.map +1 -1
  37. package/dist/controllers/data.d.ts +149 -76
  38. package/dist/controllers/data.js +415 -172
  39. package/dist/controllers/data.js.map +1 -1
  40. package/dist/controllers/permissions.cjs +508 -257
  41. package/dist/controllers/permissions.cjs.map +1 -1
  42. package/dist/controllers/permissions.d.ts +1348 -25
  43. package/dist/controllers/permissions.js +508 -257
  44. package/dist/controllers/permissions.js.map +1 -1
  45. package/dist/controllers/protocol.cjs +15 -11
  46. package/dist/controllers/protocol.cjs.map +1 -1
  47. package/dist/controllers/protocol.d.ts +7 -35
  48. package/dist/controllers/protocol.js +15 -14
  49. package/dist/controllers/protocol.js.map +1 -1
  50. package/dist/controllers/schemas.cjs +69 -54
  51. package/dist/controllers/schemas.cjs.map +1 -1
  52. package/dist/controllers/schemas.d.ts +9 -36
  53. package/dist/controllers/schemas.js +69 -54
  54. package/dist/controllers/schemas.js.map +1 -1
  55. package/dist/controllers/server-additional.test.d.ts +1 -0
  56. package/dist/controllers/server.cjs +15 -10
  57. package/dist/controllers/server.cjs.map +1 -1
  58. package/dist/controllers/server.d.ts +7 -33
  59. package/dist/controllers/server.js +15 -10
  60. package/dist/controllers/server.js.map +1 -1
  61. package/dist/core/apiClient.cjs +15 -12
  62. package/dist/core/apiClient.cjs.map +1 -1
  63. package/dist/core/apiClient.d.ts +5 -9
  64. package/dist/core/apiClient.js +19 -19
  65. package/dist/core/apiClient.js.map +1 -1
  66. package/dist/core/client.cjs +7 -7
  67. package/dist/core/client.cjs.map +1 -1
  68. package/dist/core/client.d.ts +6 -9
  69. package/dist/core/client.js +7 -7
  70. package/dist/core/client.js.map +1 -1
  71. package/dist/core/core.test.d.ts +1 -0
  72. package/dist/core/generics.cjs +11 -9
  73. package/dist/core/generics.cjs.map +1 -1
  74. package/dist/core/generics.d.ts +9 -13
  75. package/dist/core/generics.js +22 -29
  76. package/dist/core/generics.js.map +1 -1
  77. package/dist/core/tests/apiClient.test.d.ts +1 -0
  78. package/dist/core/tests/client.test.d.ts +1 -0
  79. package/dist/core/tests/generics.test.d.ts +1 -0
  80. package/dist/core.cjs +114 -48
  81. package/dist/core.cjs.map +1 -1
  82. package/dist/core.d.ts +40 -65
  83. package/dist/core.js +127 -74
  84. package/dist/core.js.map +1 -1
  85. package/dist/crypto/ecies/__tests__/base.test.d.ts +4 -0
  86. package/dist/crypto/ecies/__tests__/compatibility.test.d.ts +8 -0
  87. package/dist/crypto/ecies/__tests__/constants.test.d.ts +4 -0
  88. package/dist/crypto/ecies/__tests__/native-parity.test.d.ts +7 -0
  89. package/dist/crypto/ecies/__tests__/normalization.test.d.ts +1 -0
  90. package/dist/crypto/ecies/__tests__/test-vectors.d.ts +2 -4
  91. package/dist/crypto/ecies/base.cjs +4 -3
  92. package/dist/crypto/ecies/base.cjs.map +1 -1
  93. package/dist/crypto/ecies/base.d.ts +2 -5
  94. package/dist/crypto/ecies/base.js +12 -15
  95. package/dist/crypto/ecies/base.js.map +1 -1
  96. package/dist/crypto/ecies/browser.cjs +2 -1
  97. package/dist/crypto/ecies/browser.cjs.map +1 -1
  98. package/dist/crypto/ecies/browser.d.ts +2 -7
  99. package/dist/crypto/ecies/browser.js +2 -1
  100. package/dist/crypto/ecies/browser.js.map +1 -1
  101. package/dist/crypto/ecies/constants.d.ts +7 -9
  102. package/dist/crypto/ecies/index.d.ts +8 -1
  103. package/dist/crypto/ecies/interface.cjs +4 -5
  104. package/dist/crypto/ecies/interface.cjs.map +1 -1
  105. package/dist/crypto/ecies/interface.d.ts +9 -11
  106. package/dist/crypto/ecies/interface.js +4 -5
  107. package/dist/crypto/ecies/interface.js.map +1 -1
  108. package/dist/crypto/ecies/node.cjs +3 -2
  109. package/dist/crypto/ecies/node.cjs.map +1 -1
  110. package/dist/crypto/ecies/node.d.ts +2 -7
  111. package/dist/crypto/ecies/node.js +11 -16
  112. package/dist/crypto/ecies/node.js.map +1 -1
  113. package/dist/crypto/ecies/test-vectors/eccrypto-vectors.json +72 -0
  114. package/dist/crypto/ecies/utils.cjs +2 -41
  115. package/dist/crypto/ecies/utils.cjs.map +1 -1
  116. package/dist/crypto/ecies/utils.d.ts +3 -40
  117. package/dist/crypto/ecies/utils.js +1 -35
  118. package/dist/crypto/ecies/utils.js.map +1 -1
  119. package/dist/crypto/services/WalletKeyEncryptionService.cjs +2 -2
  120. package/dist/crypto/services/WalletKeyEncryptionService.cjs.map +1 -1
  121. package/dist/crypto/services/WalletKeyEncryptionService.d.ts +3 -7
  122. package/dist/crypto/services/WalletKeyEncryptionService.js +5 -9
  123. package/dist/crypto/services/WalletKeyEncryptionService.js.map +1 -1
  124. package/dist/crypto/services/WalletKeyEncryptionService.test.d.ts +1 -0
  125. package/dist/diagnostics.d.ts +1 -3
  126. package/dist/diagnostics.test.d.ts +1 -0
  127. package/dist/errors.cjs +16 -0
  128. package/dist/errors.cjs.map +1 -1
  129. package/dist/errors.d.ts +53 -15
  130. package/dist/errors.js +18 -6
  131. package/dist/errors.js.map +1 -1
  132. package/dist/generated/abi/ComputeEngineImplementation.d.ts +2 -3
  133. package/dist/generated/abi/ComputeInstructionRegistryImplementation.d.ts +2 -3
  134. package/dist/generated/abi/DATFactoryImplementation.d.ts +2 -3
  135. package/dist/generated/abi/DATImplementation.d.ts +2 -3
  136. package/dist/generated/abi/DATPausableImplementation.d.ts +2 -3
  137. package/dist/generated/abi/DATVotesImplementation.d.ts +2 -3
  138. package/dist/generated/abi/DLPPerformanceImplementation.d.ts +2 -3
  139. package/dist/generated/abi/DLPRegistryImplementation.d.ts +2 -3
  140. package/dist/generated/abi/DLPRegistryTreasuryImplementation.d.ts +2 -3
  141. package/dist/generated/abi/DLPRewardDeployerImplementation.d.ts +2 -3
  142. package/dist/generated/abi/DLPRewardDeployerTreasuryImplementation.d.ts +2 -3
  143. package/dist/generated/abi/DLPRewardSwapImplementation.d.ts +2 -3
  144. package/dist/generated/abi/DLPRootImplementation.d.ts +1 -3
  145. package/dist/generated/abi/DLPTreasuryImplementation.d.ts +2 -3
  146. package/dist/generated/abi/DataLiquidityPoolImplementation.d.ts +1 -3
  147. package/dist/generated/abi/DataPortabilityGranteesImplementation.d.ts +2 -3
  148. package/dist/generated/abi/DataPortabilityPermissionsImplementation.d.ts +2 -3
  149. package/dist/generated/abi/DataPortabilityServersImplementation.d.ts +2 -3
  150. package/dist/generated/abi/DataRefinerRegistryImplementation.d.ts +2 -3
  151. package/dist/generated/abi/DataRegistryImplementation.cjs +13 -0
  152. package/dist/generated/abi/DataRegistryImplementation.cjs.map +1 -1
  153. package/dist/generated/abi/DataRegistryImplementation.d.ts +12 -3
  154. package/dist/generated/abi/DataRegistryImplementation.js +13 -0
  155. package/dist/generated/abi/DataRegistryImplementation.js.map +1 -1
  156. package/dist/generated/abi/QueryEngineImplementation.d.ts +2 -3
  157. package/dist/generated/abi/SwapHelperImplementation.d.ts +2 -3
  158. package/dist/generated/abi/TeePoolDedicatedGpuImplementation.d.ts +2 -3
  159. package/dist/generated/abi/TeePoolDedicatedStandardImplementation.d.ts +2 -3
  160. package/dist/generated/abi/TeePoolEphemeralStandardImplementation.d.ts +2 -3
  161. package/dist/generated/abi/TeePoolImplementation.d.ts +2 -3
  162. package/dist/generated/abi/TeePoolPersistentGpuImplementation.d.ts +2 -3
  163. package/dist/generated/abi/TeePoolPersistentStandardImplementation.d.ts +2 -3
  164. package/dist/generated/abi/TeePoolPhalaImplementation.d.ts +2 -3
  165. package/dist/generated/abi/VanaEpochImplementation.d.ts +2 -3
  166. package/dist/generated/abi/VanaPoolEntityImplementation.d.ts +2 -3
  167. package/dist/generated/abi/VanaPoolStakingImplementation.d.ts +2 -3
  168. package/dist/generated/abi/VanaPoolTreasuryImplementation.d.ts +2 -3
  169. package/dist/generated/abi/index.cjs +42 -0
  170. package/dist/generated/abi/index.cjs.map +1 -1
  171. package/dist/generated/abi/index.d.ts +47 -18
  172. package/dist/generated/abi/index.js +21 -0
  173. package/dist/generated/abi/index.js.map +1 -1
  174. package/dist/generated/event-types.cjs +17 -0
  175. package/dist/generated/event-types.cjs.map +1 -0
  176. package/dist/generated/event-types.d.ts +854 -0
  177. package/dist/generated/event-types.js +1 -0
  178. package/dist/generated/event-types.js.map +1 -0
  179. package/dist/generated/eventRegistry.cjs +3351 -0
  180. package/dist/generated/eventRegistry.cjs.map +1 -0
  181. package/dist/generated/eventRegistry.d.ts +14 -0
  182. package/dist/generated/eventRegistry.js +3326 -0
  183. package/dist/generated/eventRegistry.js.map +1 -0
  184. package/dist/generated/server/server-exports.d.ts +19 -21
  185. package/dist/generated/server/server.cjs.map +1 -1
  186. package/dist/generated/server/server.d.ts +113 -87
  187. package/dist/generated/subgraph.d.ts +329 -332
  188. package/dist/index.browser.d.ts +48 -73
  189. package/dist/index.browser.js +12 -0
  190. package/dist/index.browser.js.map +1 -1
  191. package/dist/index.cjs +3 -1
  192. package/dist/index.cjs.map +1 -1
  193. package/dist/index.d.ts +0 -2
  194. package/dist/index.js +3 -1
  195. package/dist/index.js.map +1 -1
  196. package/dist/index.node.cjs +9 -0
  197. package/dist/index.node.cjs.map +1 -1
  198. package/dist/index.node.d.ts +181 -64
  199. package/dist/index.node.js +10 -0
  200. package/dist/index.node.js.map +1 -1
  201. package/dist/node.d.ts +4 -2
  202. package/dist/platform/browser-only.d.ts +5 -8
  203. package/dist/platform/browser-only.test.d.ts +1 -0
  204. package/dist/platform/browser-safe.d.ts +6 -9
  205. package/dist/platform/browser-safe.test.d.ts +1 -0
  206. package/dist/platform/browser.cjs +7 -6
  207. package/dist/platform/browser.cjs.map +1 -1
  208. package/dist/platform/browser.d.ts +3 -6
  209. package/dist/platform/browser.js +19 -27
  210. package/dist/platform/browser.js.map +1 -1
  211. package/dist/platform/browser.test.d.ts +1 -0
  212. package/dist/platform/index.d.ts +11 -5
  213. package/dist/platform/interface.d.ts +6 -8
  214. package/dist/platform/node.d.ts +3 -7
  215. package/dist/platform/node.js +12 -19
  216. package/dist/platform/node.js.map +1 -1
  217. package/dist/platform/ports/openpgp-port.cjs +74 -0
  218. package/dist/platform/ports/openpgp-port.cjs.map +1 -0
  219. package/dist/platform/ports/openpgp-port.d.ts +13 -0
  220. package/dist/platform/ports/openpgp-port.js +59 -0
  221. package/dist/platform/ports/openpgp-port.js.map +1 -0
  222. package/dist/platform/ports/pgp-port.cjs +17 -0
  223. package/dist/platform/ports/pgp-port.cjs.map +1 -0
  224. package/dist/platform/ports/pgp-port.d.ts +35 -0
  225. package/dist/platform/ports/pgp-port.js +1 -0
  226. package/dist/platform/ports/pgp-port.js.map +1 -0
  227. package/dist/platform/shared/error-utils.d.ts +2 -4
  228. package/dist/platform/shared/pgp-utils.cjs +2 -2
  229. package/dist/platform/shared/pgp-utils.cjs.map +1 -1
  230. package/dist/platform/shared/pgp-utils.d.ts +3 -5
  231. package/dist/platform/shared/pgp-utils.js +2 -2
  232. package/dist/platform/shared/pgp-utils.js.map +1 -1
  233. package/dist/platform/shared/stream-utils.d.ts +1 -3
  234. package/dist/platform/utils.d.ts +6 -10
  235. package/dist/platform/utils.test.d.ts +1 -0
  236. package/dist/platform.browser.d.ts +9 -4
  237. package/dist/platform.d.ts +11 -5
  238. package/dist/platform.node.d.ts +10 -5
  239. package/dist/schemas/dataSchema.schema.json +53 -0
  240. package/dist/schemas/grantFile.schema.json +43 -0
  241. package/dist/server/handler.cjs.map +1 -1
  242. package/dist/server/handler.d.ts +8 -203
  243. package/dist/server/handler.js.map +1 -1
  244. package/dist/storage/index.d.ts +56 -10
  245. package/dist/storage/manager.cjs +6 -6
  246. package/dist/storage/manager.cjs.map +1 -1
  247. package/dist/storage/manager.d.ts +2 -5
  248. package/dist/storage/manager.js +5 -12
  249. package/dist/storage/manager.js.map +1 -1
  250. package/dist/storage/providers/callback-storage.cjs +3 -3
  251. package/dist/storage/providers/callback-storage.cjs.map +1 -1
  252. package/dist/storage/providers/callback-storage.d.ts +3 -9
  253. package/dist/storage/providers/callback-storage.js +3 -3
  254. package/dist/storage/providers/callback-storage.js.map +1 -1
  255. package/dist/storage/providers/google-drive.cjs +2 -2
  256. package/dist/storage/providers/google-drive.cjs.map +1 -1
  257. package/dist/storage/providers/google-drive.d.ts +3 -7
  258. package/dist/storage/providers/google-drive.js +4 -7
  259. package/dist/storage/providers/google-drive.js.map +1 -1
  260. package/dist/storage/providers/google-drive.test.d.ts +1 -0
  261. package/dist/storage/providers/ipfs.cjs +5 -5
  262. package/dist/storage/providers/ipfs.cjs.map +1 -1
  263. package/dist/storage/providers/ipfs.d.ts +3 -6
  264. package/dist/storage/providers/ipfs.js +7 -10
  265. package/dist/storage/providers/ipfs.js.map +1 -1
  266. package/dist/storage/providers/pinata.cjs +6 -6
  267. package/dist/storage/providers/pinata.cjs.map +1 -1
  268. package/dist/storage/providers/pinata.d.ts +5 -8
  269. package/dist/storage/providers/pinata.js +8 -11
  270. package/dist/storage/providers/pinata.js.map +1 -1
  271. package/dist/storage/tests/callbackStorage.test.d.ts +1 -0
  272. package/dist/storage/tests/googleDriveStorage.test.d.ts +1 -0
  273. package/dist/storage/tests/ipfsStorage.test.d.ts +1 -0
  274. package/dist/storage/tests/pinataStorage.test.d.ts +1 -0
  275. package/dist/storage/tests/storageManager.test.d.ts +1 -0
  276. package/dist/tests/abi.test.d.ts +1 -0
  277. package/dist/tests/chains-definitions.test.d.ts +1 -0
  278. package/dist/tests/core-encryption.test.d.ts +1 -0
  279. package/dist/tests/core-extended.test.d.ts +1 -0
  280. package/dist/tests/core-generics-coverage.test.d.ts +1 -0
  281. package/dist/tests/coverage-boost.test.d.ts +1 -0
  282. package/dist/tests/crypto-cross-platform-compatibility.test.d.ts +1 -0
  283. package/dist/tests/data-addfile-permissions-schema.test.d.ts +1 -0
  284. package/dist/tests/data-additional-methods.test.d.ts +1 -0
  285. package/dist/tests/data-controller-edge-cases.test.d.ts +1 -0
  286. package/dist/tests/data-ipfs-gateways.test.d.ts +1 -0
  287. package/dist/tests/data-relayer.test.d.ts +1 -0
  288. package/dist/tests/data-schema-validation.test.d.ts +1 -0
  289. package/dist/tests/data-simple-methods.test.d.ts +1 -0
  290. package/dist/tests/data.test.d.ts +1 -0
  291. package/dist/tests/demo-integration.test.d.ts +1 -0
  292. package/dist/tests/demo-trusted-server-integration.test.d.ts +1 -0
  293. package/dist/tests/download-relayer.test.d.ts +1 -0
  294. package/dist/tests/dual-mode-permissions.test.d.ts +1 -0
  295. package/dist/tests/dual-mode-trusted-servers.test.d.ts +1 -0
  296. package/dist/tests/encryption-correct-implementation.test.d.ts +1 -0
  297. package/dist/tests/encryption-coverage.test.d.ts +1 -0
  298. package/dist/tests/encryption-edge-cases.test.d.ts +1 -0
  299. package/dist/tests/encryption-utils-updated.test.d.ts +1 -0
  300. package/dist/tests/errors-coverage.test.d.ts +1 -0
  301. package/dist/tests/errors.test.d.ts +1 -0
  302. package/dist/tests/factories/mockFactory.d.ts +316 -0
  303. package/dist/tests/fakes/FakeStorageManager.d.ts +200 -0
  304. package/dist/tests/fakes/FakeStorageManager.test.d.ts +1 -0
  305. package/dist/tests/fakes/FakeWaitForTransactionEvents.d.ts +170 -0
  306. package/dist/tests/fakes/FakeWaitForTransactionEvents.test.d.ts +1 -0
  307. package/dist/tests/fakes/fake-pgp-port.d.ts +13 -0
  308. package/dist/tests/grantValidation-edge-cases.test.d.ts +1 -0
  309. package/dist/tests/grantValidation-unreachable-branch.test.d.ts +1 -0
  310. package/dist/tests/helper-methods.test.d.ts +1 -0
  311. package/dist/tests/helpers/platformTestHelpers.d.ts +106 -0
  312. package/dist/tests/helpers/typedMocks.d.ts +64 -0
  313. package/dist/tests/index-browser.test.d.ts +1 -0
  314. package/dist/tests/index-node.test.d.ts +1 -0
  315. package/dist/tests/index.test.d.ts +1 -0
  316. package/dist/tests/mocks/platformAdapter.d.ts +12 -0
  317. package/dist/tests/new-permissions-methods.test.d.ts +1 -0
  318. package/dist/tests/no-buffer-browser.test.d.ts +1 -0
  319. package/dist/tests/permissions-grantee.test.d.ts +1 -0
  320. package/dist/tests/permissions-schema-validation.test.d.ts +1 -0
  321. package/dist/tests/permissions-server-files.test.d.ts +1 -0
  322. package/dist/tests/permissions-transaction-options.test.d.ts +1 -0
  323. package/dist/tests/permissions-trust-servers.test.d.ts +1 -0
  324. package/dist/tests/permissions.test.d.ts +1 -0
  325. package/dist/tests/personal.test.d.ts +1 -0
  326. package/dist/tests/platform-browser.test.d.ts +1 -0
  327. package/dist/tests/platform-crypto-expanded.test.d.ts +1 -0
  328. package/dist/tests/platform-crypto.test.d.ts +1 -0
  329. package/dist/tests/platform-index.test.d.ts +1 -0
  330. package/dist/tests/platform-node.test.d.ts +1 -0
  331. package/dist/tests/platform-shared-utils.test.d.ts +1 -0
  332. package/dist/tests/platform-updated.test.d.ts +1 -0
  333. package/dist/tests/protocol-additional-methods.test.d.ts +1 -0
  334. package/dist/tests/protocol.test.d.ts +1 -0
  335. package/dist/tests/read-only-mode.test.d.ts +1 -0
  336. package/dist/tests/schemas.test.d.ts +1 -0
  337. package/dist/tests/server-handler.test.d.ts +1 -0
  338. package/dist/tests/setup.d.ts +7 -0
  339. package/dist/tests/signatureFormatter.test.d.ts +1 -0
  340. package/dist/tests/trusted-server-queries.test.d.ts +1 -0
  341. package/dist/tests/typedDataConverter.test.d.ts +1 -0
  342. package/dist/tests/types-contracts.test.d.ts +1 -0
  343. package/dist/tests/types-data.test.d.ts +1 -0
  344. package/dist/tests/types-external-apis.test.d.ts +1 -0
  345. package/dist/tests/types-generics.test.d.ts +1 -0
  346. package/dist/tests/types-permissions.test.d.ts +1 -0
  347. package/dist/tests/types-upload-params.test.d.ts +1 -0
  348. package/dist/tests/types.test.d.ts +1 -0
  349. package/dist/tests/utils-formatters.test.d.ts +1 -0
  350. package/dist/tests/utils-grantFiles-edge-cases.test.d.ts +1 -0
  351. package/dist/tests/utils-grantFiles-validation.test.d.ts +1 -0
  352. package/dist/tests/utils-grantFiles.test.d.ts +1 -0
  353. package/dist/tests/utils-grantValidation-consolidated.test.d.ts +1 -0
  354. package/dist/tests/utils-grants.test.d.ts +1 -0
  355. package/dist/tests/utils-ipfs-additional.test.d.ts +1 -0
  356. package/dist/tests/utils-ipfs.test.d.ts +4 -0
  357. package/dist/tests/utils-schemaValidation.test.d.ts +1 -0
  358. package/dist/tests/vana.test.d.ts +1 -0
  359. package/dist/tests/wallet-crypto-compatibility.test.d.ts +1 -0
  360. package/dist/types/blockchain.cjs +17 -0
  361. package/dist/types/blockchain.cjs.map +1 -0
  362. package/dist/types/blockchain.d.ts +57 -0
  363. package/dist/types/blockchain.js +1 -0
  364. package/dist/types/blockchain.js.map +1 -0
  365. package/dist/types/chains-additional.test.d.ts +1 -0
  366. package/dist/types/chains.d.ts +6 -9
  367. package/dist/types/config.cjs +10 -0
  368. package/dist/types/config.cjs.map +1 -1
  369. package/dist/types/config.d.ts +161 -54
  370. package/dist/types/config.js +8 -0
  371. package/dist/types/config.js.map +1 -1
  372. package/dist/types/contracts.cjs.map +1 -1
  373. package/dist/types/contracts.d.ts +8 -11
  374. package/dist/types/controller-context.cjs +17 -0
  375. package/dist/types/controller-context.cjs.map +1 -0
  376. package/dist/types/controller-context.d.ts +64 -0
  377. package/dist/types/controller-context.js +1 -0
  378. package/dist/types/controller-context.js.map +1 -0
  379. package/dist/types/data.cjs.map +1 -1
  380. package/dist/types/data.d.ts +107 -39
  381. package/dist/types/external-apis.d.ts +10 -12
  382. package/dist/types/generics.d.ts +35 -38
  383. package/dist/types/index.cjs +5 -4
  384. package/dist/types/index.cjs.map +1 -1
  385. package/dist/types/index.d.ts +20 -34
  386. package/dist/types/index.js +9 -2
  387. package/dist/types/index.js.map +1 -1
  388. package/dist/types/operations.cjs +2 -2
  389. package/dist/types/operations.cjs.map +1 -1
  390. package/dist/types/operations.d.ts +32 -28
  391. package/dist/types/operations.js +2 -2
  392. package/dist/types/operations.js.map +1 -1
  393. package/dist/types/permissions.d.ts +55 -58
  394. package/dist/types/personal.cjs.map +1 -1
  395. package/dist/types/personal.d.ts +6 -8
  396. package/dist/types/relayer.d.ts +15 -18
  397. package/dist/types/storage.d.ts +6 -8
  398. package/dist/types/storage.js +2 -5
  399. package/dist/types/storage.js.map +1 -1
  400. package/dist/types/transactionResults.cjs.map +1 -1
  401. package/dist/types/transactionResults.d.ts +193 -25
  402. package/dist/types/utils.cjs.map +1 -1
  403. package/dist/types/utils.d.ts +26 -25
  404. package/dist/types.d.ts +4 -40
  405. package/dist/utils/__tests__/parseTransaction.test.d.ts +1 -0
  406. package/dist/utils/__tests__/pojo-serialization.test.d.ts +1 -0
  407. package/dist/utils/__tests__/signatureCache.test.d.ts +1 -0
  408. package/dist/utils/__tests__/transaction-edge-cases.test.d.ts +1 -0
  409. package/dist/utils/__tests__/transactionHelpers.test.d.ts +1 -0
  410. package/dist/utils/__tests__/urlResolver.test.d.ts +4 -0
  411. package/dist/utils/blockchain/registry.cjs +2 -2
  412. package/dist/utils/blockchain/registry.cjs.map +1 -1
  413. package/dist/utils/blockchain/registry.d.ts +6 -8
  414. package/dist/utils/blockchain/registry.js +2 -2
  415. package/dist/utils/blockchain/registry.js.map +1 -1
  416. package/dist/utils/blockchain/registry.test.d.ts +1 -0
  417. package/dist/utils/crypto-utils.cjs +0 -12
  418. package/dist/utils/crypto-utils.cjs.map +1 -1
  419. package/dist/utils/crypto-utils.d.ts +9 -27
  420. package/dist/utils/crypto-utils.js +0 -11
  421. package/dist/utils/crypto-utils.js.map +1 -1
  422. package/dist/utils/crypto-utils.test.d.ts +1 -0
  423. package/dist/utils/download.cjs +3 -3
  424. package/dist/utils/download.cjs.map +1 -1
  425. package/dist/utils/download.d.ts +13 -14
  426. package/dist/utils/download.js +2 -2
  427. package/dist/utils/download.js.map +1 -1
  428. package/dist/utils/encoding.cjs +1 -1
  429. package/dist/utils/encoding.cjs.map +1 -1
  430. package/dist/utils/encoding.d.ts +4 -6
  431. package/dist/utils/encoding.js +1 -1
  432. package/dist/utils/encoding.js.map +1 -1
  433. package/dist/utils/encoding.test.d.ts +1 -0
  434. package/dist/utils/encryption.cjs +16 -10
  435. package/dist/utils/encryption.cjs.map +1 -1
  436. package/dist/utils/encryption.d.ts +13 -17
  437. package/dist/utils/encryption.js +16 -10
  438. package/dist/utils/encryption.js.map +1 -1
  439. package/dist/utils/formatters.cjs +4 -2
  440. package/dist/utils/formatters.cjs.map +1 -1
  441. package/dist/utils/formatters.d.ts +4 -6
  442. package/dist/utils/formatters.js +4 -2
  443. package/dist/utils/formatters.js.map +1 -1
  444. package/dist/utils/grantFiles.cjs +7 -4
  445. package/dist/utils/grantFiles.cjs.map +1 -1
  446. package/dist/utils/grantFiles.d.ts +6 -10
  447. package/dist/utils/grantFiles.js +7 -4
  448. package/dist/utils/grantFiles.js.map +1 -1
  449. package/dist/utils/grantValidation.cjs +1 -1
  450. package/dist/utils/grantValidation.cjs.map +1 -1
  451. package/dist/utils/grantValidation.d.ts +14 -17
  452. package/dist/utils/grantValidation.js +1 -1
  453. package/dist/utils/grantValidation.js.map +1 -1
  454. package/dist/utils/grants.cjs +1 -1
  455. package/dist/utils/grants.cjs.map +1 -1
  456. package/dist/utils/grants.d.ts +10 -13
  457. package/dist/utils/grants.js +1 -1
  458. package/dist/utils/grants.js.map +1 -1
  459. package/dist/utils/ipfs.d.ts +8 -10
  460. package/dist/utils/lazy-import.cjs +4 -6
  461. package/dist/utils/lazy-import.cjs.map +1 -1
  462. package/dist/utils/lazy-import.d.ts +1 -3
  463. package/dist/utils/lazy-import.js +4 -6
  464. package/dist/utils/lazy-import.js.map +1 -1
  465. package/dist/utils/multicall.cjs +4 -2
  466. package/dist/utils/multicall.cjs.map +1 -1
  467. package/dist/utils/multicall.d.ts +5 -8
  468. package/dist/utils/multicall.js +4 -2
  469. package/dist/utils/multicall.js.map +1 -1
  470. package/dist/utils/parseTransactionPojo.cjs +87 -0
  471. package/dist/utils/parseTransactionPojo.cjs.map +1 -0
  472. package/dist/utils/parseTransactionPojo.d.ts +31 -0
  473. package/dist/utils/parseTransactionPojo.js +63 -0
  474. package/dist/utils/parseTransactionPojo.js.map +1 -0
  475. package/dist/utils/schemaValidation.cjs +5 -5
  476. package/dist/utils/schemaValidation.cjs.map +1 -1
  477. package/dist/utils/schemaValidation.d.ts +8 -12
  478. package/dist/utils/schemaValidation.js +7 -10
  479. package/dist/utils/schemaValidation.js.map +1 -1
  480. package/dist/utils/signatureCache.cjs +1 -2
  481. package/dist/utils/signatureCache.cjs.map +1 -1
  482. package/dist/utils/signatureCache.d.ts +4 -7
  483. package/dist/utils/signatureCache.js +4 -8
  484. package/dist/utils/signatureCache.js.map +1 -1
  485. package/dist/utils/signatureFormatter.cjs +6 -9
  486. package/dist/utils/signatureFormatter.cjs.map +1 -1
  487. package/dist/utils/signatureFormatter.d.ts +2 -5
  488. package/dist/utils/signatureFormatter.js +6 -9
  489. package/dist/utils/signatureFormatter.js.map +1 -1
  490. package/dist/utils/tests/multicall.test.d.ts +1 -0
  491. package/dist/utils/transactionHelpers.cjs +54 -0
  492. package/dist/utils/transactionHelpers.cjs.map +1 -0
  493. package/dist/utils/transactionHelpers.d.ts +80 -0
  494. package/dist/utils/transactionHelpers.js +29 -0
  495. package/dist/utils/transactionHelpers.js.map +1 -0
  496. package/dist/utils/typeGuards.cjs +109 -0
  497. package/dist/utils/typeGuards.cjs.map +1 -0
  498. package/dist/utils/typeGuards.d.ts +138 -0
  499. package/dist/utils/typeGuards.js +74 -0
  500. package/dist/utils/typeGuards.js.map +1 -0
  501. package/dist/utils/typedDataConverter.d.ts +3 -6
  502. package/dist/utils/urlResolver.cjs +1 -1
  503. package/dist/utils/urlResolver.cjs.map +1 -1
  504. package/dist/utils/urlResolver.d.ts +2 -4
  505. package/dist/utils/urlResolver.js +2 -2
  506. package/dist/utils/urlResolver.js.map +1 -1
  507. package/dist/utils/wallet.cjs +62 -0
  508. package/dist/utils/wallet.cjs.map +1 -0
  509. package/dist/utils/wallet.d.ts +32 -0
  510. package/dist/utils/wallet.js +36 -0
  511. package/dist/utils/wallet.js.map +1 -0
  512. package/dist/{chains.browser.cjs → utils/withEvents.cjs} +22 -15
  513. package/dist/utils/withEvents.cjs.map +1 -0
  514. package/dist/utils/withEvents.d.ts +56 -0
  515. package/dist/utils/withEvents.js +18 -0
  516. package/dist/utils/withEvents.js.map +1 -0
  517. package/package.json +23 -13
  518. package/dist/browser.d.cts +0 -2
  519. package/dist/chains/definitions.d.cts +0 -53
  520. package/dist/chains/index.d.cts +0 -2
  521. package/dist/chains.browser.cjs.map +0 -1
  522. package/dist/chains.browser.d.cts +0 -2
  523. package/dist/chains.d.cts +0 -2
  524. package/dist/chains.node.d.cts +0 -2
  525. package/dist/config/addresses.d.cts +0 -380
  526. package/dist/config/chains.d.cts +0 -85
  527. package/dist/config/eventMappings.cjs +0 -114
  528. package/dist/config/eventMappings.cjs.map +0 -1
  529. package/dist/config/eventMappings.d.cts +0 -108
  530. package/dist/config/eventMappings.d.ts +0 -108
  531. package/dist/config/eventMappings.js +0 -90
  532. package/dist/config/eventMappings.js.map +0 -1
  533. package/dist/config/features.d.cts +0 -64
  534. package/dist/contracts/contractController.d.cts +0 -96
  535. package/dist/controllers/data.d.cts +0 -941
  536. package/dist/controllers/permissions.d.cts +0 -25
  537. package/dist/controllers/protocol.d.cts +0 -167
  538. package/dist/controllers/schemas.d.cts +0 -272
  539. package/dist/controllers/server.d.cts +0 -243
  540. package/dist/core/apiClient.d.cts +0 -165
  541. package/dist/core/client.d.cts +0 -92
  542. package/dist/core/generics.d.cts +0 -120
  543. package/dist/core.d.cts +0 -466
  544. package/dist/crypto/ecies/__tests__/test-vectors.d.cts +0 -40
  545. package/dist/crypto/ecies/base.d.cts +0 -143
  546. package/dist/crypto/ecies/browser.d.cts +0 -48
  547. package/dist/crypto/ecies/constants.d.cts +0 -122
  548. package/dist/crypto/ecies/index.d.cts +0 -1
  549. package/dist/crypto/ecies/interface.d.cts +0 -176
  550. package/dist/crypto/ecies/node.d.cts +0 -50
  551. package/dist/crypto/ecies/utils.d.cts +0 -67
  552. package/dist/crypto/services/WalletKeyEncryptionService.d.cts +0 -92
  553. package/dist/diagnostics.d.cts +0 -26
  554. package/dist/errors.d.cts +0 -350
  555. package/dist/generated/abi/ComputeEngineImplementation.d.cts +0 -996
  556. package/dist/generated/abi/ComputeInstructionRegistryImplementation.d.cts +0 -545
  557. package/dist/generated/abi/DATFactoryImplementation.d.cts +0 -661
  558. package/dist/generated/abi/DATImplementation.d.cts +0 -693
  559. package/dist/generated/abi/DATPausableImplementation.d.cts +0 -1145
  560. package/dist/generated/abi/DATVotesImplementation.d.cts +0 -1095
  561. package/dist/generated/abi/DLPPerformanceImplementation.d.cts +0 -883
  562. package/dist/generated/abi/DLPRegistryImplementation.d.cts +0 -1123
  563. package/dist/generated/abi/DLPRegistryTreasuryImplementation.d.cts +0 -452
  564. package/dist/generated/abi/DLPRewardDeployerImplementation.d.cts +0 -714
  565. package/dist/generated/abi/DLPRewardDeployerTreasuryImplementation.d.cts +0 -452
  566. package/dist/generated/abi/DLPRewardSwapImplementation.d.cts +0 -706
  567. package/dist/generated/abi/DLPRootImplementation.d.cts +0 -1248
  568. package/dist/generated/abi/DLPTreasuryImplementation.d.cts +0 -452
  569. package/dist/generated/abi/DataLiquidityPoolImplementation.d.cts +0 -737
  570. package/dist/generated/abi/DataPortabilityGranteesImplementation.d.cts +0 -661
  571. package/dist/generated/abi/DataPortabilityPermissionsImplementation.d.cts +0 -989
  572. package/dist/generated/abi/DataPortabilityServersImplementation.d.cts +0 -1086
  573. package/dist/generated/abi/DataRefinerRegistryImplementation.d.cts +0 -737
  574. package/dist/generated/abi/DataRegistryImplementation.d.cts +0 -1004
  575. package/dist/generated/abi/QueryEngineImplementation.d.cts +0 -1001
  576. package/dist/generated/abi/SwapHelperImplementation.d.cts +0 -764
  577. package/dist/generated/abi/TeePoolDedicatedGpuImplementation.d.cts +0 -701
  578. package/dist/generated/abi/TeePoolDedicatedStandardImplementation.d.cts +0 -701
  579. package/dist/generated/abi/TeePoolEphemeralStandardImplementation.d.cts +0 -701
  580. package/dist/generated/abi/TeePoolImplementation.d.cts +0 -993
  581. package/dist/generated/abi/TeePoolPersistentGpuImplementation.d.cts +0 -701
  582. package/dist/generated/abi/TeePoolPersistentStandardImplementation.d.cts +0 -701
  583. package/dist/generated/abi/TeePoolPhalaImplementation.d.cts +0 -993
  584. package/dist/generated/abi/VanaEpochImplementation.d.cts +0 -900
  585. package/dist/generated/abi/VanaPoolEntityImplementation.d.cts +0 -934
  586. package/dist/generated/abi/VanaPoolStakingImplementation.d.cts +0 -693
  587. package/dist/generated/abi/VanaPoolTreasuryImplementation.d.cts +0 -394
  588. package/dist/generated/abi/index.d.cts +0 -26516
  589. package/dist/generated/server/server-exports.d.cts +0 -21
  590. package/dist/generated/server/server.d.cts +0 -512
  591. package/dist/generated/subgraph.d.cts +0 -5981
  592. package/dist/index.browser.cjs +0 -151
  593. package/dist/index.browser.cjs.map +0 -1
  594. package/dist/index.browser.d.cts +0 -177
  595. package/dist/index.d.cts +0 -2
  596. package/dist/index.node.d.cts +0 -64
  597. package/dist/node.d.cts +0 -2
  598. package/dist/permissions-DNKPu_G0.d.cts +0 -1666
  599. package/dist/permissions-eo8YeLGf.d.ts +0 -1666
  600. package/dist/platform/browser-only.d.cts +0 -25
  601. package/dist/platform/browser-safe.d.cts +0 -32
  602. package/dist/platform/browser.d.cts +0 -74
  603. package/dist/platform/index.d.cts +0 -5
  604. package/dist/platform/interface.d.cts +0 -218
  605. package/dist/platform/node.d.cts +0 -27
  606. package/dist/platform/shared/error-utils.d.cts +0 -25
  607. package/dist/platform/shared/pgp-utils.d.cts +0 -61
  608. package/dist/platform/shared/stream-utils.d.cts +0 -16
  609. package/dist/platform/utils.d.cts +0 -53
  610. package/dist/platform.browser.cjs +0 -41
  611. package/dist/platform.browser.cjs.map +0 -1
  612. package/dist/platform.browser.d.cts +0 -4
  613. package/dist/platform.d.cts +0 -5
  614. package/dist/platform.node.d.cts +0 -5
  615. package/dist/server/handler.d.cts +0 -282
  616. package/dist/storage/index.d.cts +0 -10
  617. package/dist/storage/manager.d.cts +0 -150
  618. package/dist/storage/providers/callback-storage.d.cts +0 -100
  619. package/dist/storage/providers/google-drive.d.cts +0 -156
  620. package/dist/storage/providers/ipfs.d.cts +0 -163
  621. package/dist/storage/providers/pinata.d.cts +0 -173
  622. package/dist/types/chains.d.cts +0 -34
  623. package/dist/types/config.d.cts +0 -726
  624. package/dist/types/contracts.d.cts +0 -68
  625. package/dist/types/data.d.cts +0 -694
  626. package/dist/types/eccrypto-js.d.d.cts +0 -13
  627. package/dist/types/eccrypto-js.d.d.ts +0 -13
  628. package/dist/types/external-apis.d.cts +0 -186
  629. package/dist/types/generics.d.cts +0 -450
  630. package/dist/types/index.d.cts +0 -34
  631. package/dist/types/operations.d.cts +0 -108
  632. package/dist/types/permissions.d.cts +0 -957
  633. package/dist/types/personal.d.cts +0 -40
  634. package/dist/types/relayer.d.cts +0 -284
  635. package/dist/types/storage.d.cts +0 -131
  636. package/dist/types/transactionResults.d.cts +0 -25
  637. package/dist/types/utils.d.cts +0 -819
  638. package/dist/types.d.cts +0 -66
  639. package/dist/utils/blockchain/registry.d.cts +0 -34
  640. package/dist/utils/crypto-utils.d.cts +0 -118
  641. package/dist/utils/download.d.cts +0 -41
  642. package/dist/utils/encoding.d.cts +0 -54
  643. package/dist/utils/encryption.d.cts +0 -275
  644. package/dist/utils/eventParsing.cjs +0 -111
  645. package/dist/utils/eventParsing.cjs.map +0 -1
  646. package/dist/utils/eventParsing.d.cts +0 -60
  647. package/dist/utils/eventParsing.d.ts +0 -60
  648. package/dist/utils/eventParsing.js +0 -86
  649. package/dist/utils/eventParsing.js.map +0 -1
  650. package/dist/utils/formatters.d.cts +0 -120
  651. package/dist/utils/grantFiles.d.cts +0 -186
  652. package/dist/utils/grantValidation.d.cts +0 -150
  653. package/dist/utils/grants.d.cts +0 -70
  654. package/dist/utils/ipfs.d.cts +0 -90
  655. package/dist/utils/lazy-import.d.cts +0 -20
  656. package/dist/utils/multicall.d.cts +0 -129
  657. package/dist/utils/schemaValidation.d.cts +0 -172
  658. package/dist/utils/signatureCache.d.cts +0 -134
  659. package/dist/utils/signatureFormatter.d.cts +0 -39
  660. package/dist/utils/transactionParsing.cjs +0 -84
  661. package/dist/utils/transactionParsing.cjs.map +0 -1
  662. package/dist/utils/transactionParsing.d.cts +0 -25
  663. package/dist/utils/transactionParsing.d.ts +0 -25
  664. package/dist/utils/transactionParsing.js +0 -62
  665. package/dist/utils/transactionParsing.js.map +0 -1
  666. package/dist/utils/typedDataConverter.d.cts +0 -13
  667. package/dist/utils/urlResolver.d.cts +0 -40
@@ -41,9 +41,10 @@ var import_grantValidation = require("../utils/grantValidation");
41
41
  var import_signatureCache = require("../utils/signatureCache");
42
42
  var import_signatureFormatter = require("../utils/signatureFormatter");
43
43
  var import_typedDataConverter = require("../utils/typedDataConverter");
44
- class PermissionsController {
44
+ var import_base = require("./base");
45
+ class PermissionsController extends import_base.BaseController {
45
46
  constructor(context) {
46
- this.context = context;
47
+ super(context);
47
48
  }
48
49
  /**
49
50
  * Grants permission for an application to access user data with gasless transactions.
@@ -80,7 +81,10 @@ class PermissionsController {
80
81
  * ```
81
82
  */
82
83
  async grant(params) {
83
- return await this.submitPermissionGrant(params);
84
+ this.assertWallet();
85
+ const { typedData, signature } = await this.createAndSign(params);
86
+ const result = await this.submitSignedGrantWithEvents(typedData, signature);
87
+ return result;
84
88
  }
85
89
  /**
86
90
  * Submits a permission grant transaction and returns a handle for flexible result access.
@@ -108,6 +112,7 @@ class PermissionsController {
108
112
  * ```
109
113
  */
110
114
  async submitPermissionGrant(params) {
115
+ this.assertWallet();
111
116
  const { typedData, signature } = await this.createAndSign(params);
112
117
  return await this.submitSignedGrant(typedData, signature);
113
118
  }
@@ -137,13 +142,14 @@ class PermissionsController {
137
142
  * ```
138
143
  */
139
144
  async prepareGrant(params) {
145
+ this.assertWallet();
140
146
  try {
141
147
  const grantFile = (0, import_grantFiles.createGrantFile)(params);
142
148
  (0, import_grantValidation.validateGrant)(grantFile);
143
149
  return {
144
150
  preview: grantFile,
145
151
  confirm: async () => {
146
- return await this.confirmGrantInternal(params, grantFile);
152
+ return await this.confirmGrantInternalWithEvents(params, grantFile);
147
153
  }
148
154
  };
149
155
  } catch (error) {
@@ -177,7 +183,7 @@ class PermissionsController {
177
183
  */
178
184
  async confirmGrantInternal(params, grantFile) {
179
185
  try {
180
- let grantUrl = params.grantUrl;
186
+ let { grantUrl } = params;
181
187
  console.debug("\u{1F50D} Debug - Grant URL from params:", grantUrl);
182
188
  if (!grantUrl) {
183
189
  if (!this.context.relayerCallbacks?.storeGrantFile && !this.context.storageManager) {
@@ -267,10 +273,11 @@ class PermissionsController {
267
273
  * ```
268
274
  */
269
275
  async createAndSign(params) {
276
+ this.assertWallet();
270
277
  try {
271
278
  const grantFile = (0, import_grantFiles.createGrantFile)(params);
272
279
  (0, import_grantValidation.validateGrant)(grantFile);
273
- let grantUrl = params.grantUrl;
280
+ let { grantUrl } = params;
274
281
  console.debug("\u{1F50D} Debug - Grant URL from params:", grantUrl);
275
282
  if (!grantUrl) {
276
283
  if (!this.context.relayerCallbacks?.storeGrantFile && !this.context.storageManager) {
@@ -358,23 +365,26 @@ class PermissionsController {
358
365
  "\u{1F50D} Debug - submitSignedGrant called with typed data:",
359
366
  JSON.stringify(
360
367
  typedData,
361
- (key, value) => typeof value === "bigint" ? value.toString() : value,
368
+ (_key, value) => typeof value === "bigint" ? value.toString() : value,
362
369
  2
363
370
  )
364
371
  );
365
- let hash;
366
372
  if (this.context.relayerCallbacks?.submitPermissionGrant) {
367
- hash = await this.context.relayerCallbacks.submitPermissionGrant(
373
+ const hash = await this.context.relayerCallbacks.submitPermissionGrant(
368
374
  typedData,
369
375
  signature
370
376
  );
377
+ const account = this.context.walletClient?.account ?? this.context.userAddress;
378
+ const { tx } = await import("../utils/transactionHelpers");
379
+ return tx({
380
+ hash,
381
+ from: typeof account === "string" ? account : account.address,
382
+ contract: "DataPortabilityPermissions",
383
+ fn: "addPermission"
384
+ });
371
385
  } else {
372
- hash = await this.submitDirectTransaction(typedData, signature);
386
+ return await this.submitDirectTransaction(typedData, signature);
373
387
  }
374
- return {
375
- hash,
376
- from: this.context.walletClient.account?.address
377
- };
378
388
  } catch (error) {
379
389
  if (error instanceof import_errors.RelayerError || error instanceof import_errors.NetworkError || error instanceof import_errors.UserRejectedRequestError || error instanceof import_errors.SignatureError || error instanceof import_errors.NonceError) {
380
390
  throw error;
@@ -416,10 +426,14 @@ class PermissionsController {
416
426
  trustServerInput,
417
427
  signature
418
428
  );
419
- return {
429
+ const account = this.context.userAddress;
430
+ const { tx } = await import("../utils/transactionHelpers");
431
+ return tx({
420
432
  hash,
421
- from: this.context.walletClient.account?.address
422
- };
433
+ from: account,
434
+ contract: "DataPortabilityServers",
435
+ fn: "trustServerWithSignature"
436
+ });
423
437
  } catch (error) {
424
438
  if (error instanceof import_errors.RelayerError || error instanceof import_errors.NetworkError || error instanceof import_errors.UserRejectedRequestError || error instanceof import_errors.SignatureError || error instanceof import_errors.NonceError) {
425
439
  throw error;
@@ -477,10 +491,14 @@ class PermissionsController {
477
491
  addAndTrustServerInput,
478
492
  signature
479
493
  );
480
- return {
494
+ const account = this.context.walletClient?.account ?? this.context.userAddress;
495
+ const { tx } = await import("../utils/transactionHelpers");
496
+ return tx({
481
497
  hash,
482
- from: this.context.walletClient.account?.address
483
- };
498
+ from: typeof account === "string" ? account : account.address,
499
+ contract: "DataPortabilityServers",
500
+ fn: "addAndTrustServerWithSignature"
501
+ });
484
502
  } catch (error) {
485
503
  if (error instanceof import_errors.RelayerError || error instanceof import_errors.NetworkError || error instanceof import_errors.UserRejectedRequestError || error instanceof import_errors.SignatureError || error instanceof import_errors.NonceError) {
486
504
  throw error;
@@ -491,6 +509,72 @@ class PermissionsController {
491
509
  );
492
510
  }
493
511
  }
512
+ /**
513
+ * Internal method to submit a signed grant and wait for events.
514
+ *
515
+ * @internal
516
+ * @param typedData - The EIP-712 typed data for the permission grant
517
+ * @param signature - The user's signature authorizing the transaction
518
+ * @returns Promise resolving to PermissionGrantResult with parsed events
519
+ */
520
+ async submitSignedGrantWithEvents(typedData, signature) {
521
+ const txResult = await this.submitSignedGrant(typedData, signature);
522
+ if (!this.context.waitForTransactionEvents) {
523
+ throw new import_errors.BlockchainError("waitForTransactionEvents not configured");
524
+ }
525
+ const result = await this.context.waitForTransactionEvents(txResult);
526
+ const event = result.expectedEvents.PermissionAdded;
527
+ if (!event) {
528
+ throw new import_errors.BlockchainError(
529
+ "PermissionAdded event not found in transaction"
530
+ );
531
+ }
532
+ const receipt = await this.context.publicClient.getTransactionReceipt({
533
+ hash: result.hash
534
+ });
535
+ return {
536
+ transactionHash: result.hash,
537
+ blockNumber: receipt.blockNumber,
538
+ gasUsed: receipt.gasUsed,
539
+ permissionId: event.permissionId,
540
+ user: event.user,
541
+ grant: event.grant,
542
+ fileIds: event.fileIds
543
+ };
544
+ }
545
+ /**
546
+ * Internal method for confirm grant with events.
547
+ *
548
+ * @internal
549
+ * @param params - The permission grant parameters
550
+ * @param grantFile - The pre-created grant file object
551
+ * @returns Promise resolving to PermissionGrantResult with parsed events
552
+ */
553
+ async confirmGrantInternalWithEvents(params, grantFile) {
554
+ const txResult = await this.confirmGrantInternal(params, grantFile);
555
+ if (!this.context.waitForTransactionEvents) {
556
+ throw new import_errors.BlockchainError("waitForTransactionEvents not configured");
557
+ }
558
+ const result = await this.context.waitForTransactionEvents(txResult);
559
+ const event = result.expectedEvents.PermissionAdded;
560
+ if (!event) {
561
+ throw new import_errors.BlockchainError(
562
+ "PermissionAdded event not found in transaction"
563
+ );
564
+ }
565
+ const receipt = await this.context.publicClient.getTransactionReceipt({
566
+ hash: result.hash
567
+ });
568
+ return {
569
+ transactionHash: result.hash,
570
+ blockNumber: receipt.blockNumber,
571
+ gasUsed: receipt.gasUsed,
572
+ permissionId: event.permissionId,
573
+ user: event.user,
574
+ grant: event.grant,
575
+ fileIds: event.fileIds
576
+ };
577
+ }
494
578
  /**
495
579
  * Submits an already-signed permission revoke transaction to the blockchain.
496
580
  *
@@ -521,12 +605,19 @@ class PermissionsController {
521
605
  signature
522
606
  );
523
607
  } else {
524
- hash = await this.submitDirectRevokeTransaction(typedData, signature);
608
+ hash = await this.submitDirectRevokeTransaction(
609
+ typedData,
610
+ signature
611
+ );
525
612
  }
526
- return {
613
+ const account = this.context.walletClient?.account ?? this.context.userAddress;
614
+ const { tx } = await import("../utils/transactionHelpers");
615
+ return tx({
527
616
  hash,
528
- from: this.context.walletClient.account?.address
529
- };
617
+ from: typeof account === "string" ? account : account.address,
618
+ contract: "DataPortabilityPermissions",
619
+ fn: "revokePermissionWithSignature"
620
+ });
530
621
  } catch (error) {
531
622
  if (error instanceof import_errors.RelayerError || error instanceof import_errors.NetworkError || error instanceof import_errors.UserRejectedRequestError || error instanceof import_errors.SignatureError || error instanceof import_errors.NonceError) {
532
623
  throw error;
@@ -567,12 +658,19 @@ class PermissionsController {
567
658
  signature
568
659
  );
569
660
  } else {
570
- hash = await this.submitSignedUntrustTransaction(typedData, signature);
661
+ hash = await this.submitSignedUntrustTransaction(
662
+ typedData,
663
+ signature
664
+ );
571
665
  }
572
- return {
666
+ const account = this.context.walletClient?.account ?? this.context.userAddress;
667
+ const { tx } = await import("../utils/transactionHelpers");
668
+ return tx({
573
669
  hash,
574
- from: this.context.walletClient.account?.address
575
- };
670
+ from: typeof account === "string" ? account : account.address,
671
+ contract: "DataPortabilityServers",
672
+ fn: "untrustServerWithSignature"
673
+ });
576
674
  } catch (error) {
577
675
  if (error instanceof import_errors.RelayerError || error instanceof import_errors.NetworkError || error instanceof import_errors.UserRejectedRequestError || error instanceof import_errors.SignatureError || error instanceof import_errors.NonceError) {
578
676
  throw error;
@@ -596,7 +694,8 @@ class PermissionsController {
596
694
  * @throws {BlockchainError} When contract submission fails
597
695
  */
598
696
  async submitDirectTransaction(typedData, signature) {
599
- const chainId = await this.context.walletClient.getChainId();
697
+ this.assertWallet();
698
+ const chainId = await this.context.publicClient.getChainId();
600
699
  const DataPortabilityPermissionsAddress = (0, import_addresses.getContractAddress)(
601
700
  chainId,
602
701
  "DataPortabilityPermissions"
@@ -616,18 +715,25 @@ class PermissionsController {
616
715
  console.debug("\u{1F50D} Debug - Grant field value:", typedData.message.grant);
617
716
  console.debug(
618
717
  "\u{1F50D} Debug - Grant field length:",
619
- typedData.message.grant?.length || 0
718
+ typedData.message.grant?.length ?? 0
620
719
  );
621
720
  const formattedSignature = (0, import_signatureFormatter.formatSignatureForContract)(signature);
721
+ const account = this.context.walletClient?.account ?? this.context.userAddress;
622
722
  const txHash = await this.context.walletClient.writeContract({
623
723
  address: DataPortabilityPermissionsAddress,
624
724
  abi: DataPortabilityPermissionsAbi,
625
725
  functionName: "addPermission",
626
726
  args: [permissionInput, formattedSignature],
627
- account: this.context.walletClient.account || await this.getUserAddress(),
628
- chain: this.context.walletClient.chain || null
727
+ account,
728
+ chain: this.context.walletClient?.chain ?? null
729
+ });
730
+ const { tx } = await import("../utils/transactionHelpers");
731
+ return tx({
732
+ hash: txHash,
733
+ from: typeof account === "string" ? account : account.address,
734
+ contract: "DataPortabilityPermissions",
735
+ fn: "addPermission"
629
736
  });
630
- return txHash;
631
737
  }
632
738
  /**
633
739
  * Revokes a previously granted permission.
@@ -654,7 +760,27 @@ class PermissionsController {
654
760
  * ```
655
761
  */
656
762
  async revoke(params) {
657
- return await this.submitPermissionRevoke(params);
763
+ this.assertWallet();
764
+ const txResult = await this.submitPermissionRevoke(params);
765
+ if (!this.context.waitForTransactionEvents) {
766
+ throw new import_errors.BlockchainError("waitForTransactionEvents not configured");
767
+ }
768
+ const result = await this.context.waitForTransactionEvents(txResult);
769
+ const event = result.expectedEvents.PermissionRevoked;
770
+ if (!event) {
771
+ throw new import_errors.BlockchainError(
772
+ "PermissionRevoked event not found in transaction"
773
+ );
774
+ }
775
+ const receipt = await this.context.publicClient.getTransactionReceipt({
776
+ hash: result.hash
777
+ });
778
+ return {
779
+ transactionHash: result.hash,
780
+ blockNumber: receipt.blockNumber,
781
+ gasUsed: receipt.gasUsed,
782
+ permissionId: event.permissionId
783
+ };
658
784
  }
659
785
  /**
660
786
  * Submits a permission revocation transaction and returns the transaction hash immediately.
@@ -663,6 +789,7 @@ class PermissionsController {
663
789
  * Use this when you want to handle transaction confirmation and event parsing separately.
664
790
  *
665
791
  * @param params - Parameters for revoking the permission
792
+ * @param options - Optional transaction options for gas parameters and timeout
666
793
  * @returns Promise resolving to the transaction hash when successfully submitted
667
794
  * @throws {BlockchainError} When revocation transaction fails
668
795
  * @throws {UserRejectedRequestError} When user rejects the transaction
@@ -675,12 +802,13 @@ class PermissionsController {
675
802
  * console.log(`Revocation submitted: ${txHash}`);
676
803
  * ```
677
804
  */
678
- async submitPermissionRevoke(params) {
805
+ async submitPermissionRevoke(params, options) {
806
+ this.assertWallet();
679
807
  try {
680
- if (!this.context.walletClient.chain?.id) {
808
+ if (!this.context.walletClient?.chain?.id) {
681
809
  throw new import_errors.BlockchainError("Chain ID not available");
682
810
  }
683
- const chainId = await this.context.walletClient.getChainId();
811
+ const chainId = await this.context.publicClient.getChainId();
684
812
  const DataPortabilityPermissionsAddress = (0, import_addresses.getContractAddress)(
685
813
  chainId,
686
814
  "DataPortabilityPermissions"
@@ -688,18 +816,33 @@ class PermissionsController {
688
816
  const DataPortabilityPermissionsAbi = (0, import_abi.getAbi)(
689
817
  "DataPortabilityPermissions"
690
818
  );
819
+ const account = this.context.walletClient?.account ?? this.context.userAddress;
691
820
  const txHash = await this.context.walletClient.writeContract({
692
821
  address: DataPortabilityPermissionsAddress,
693
822
  abi: DataPortabilityPermissionsAbi,
694
823
  functionName: "revokePermission",
695
824
  args: [params.permissionId],
696
- account: this.context.walletClient.account || await this.getUserAddress(),
697
- chain: this.context.walletClient.chain || null
825
+ account,
826
+ chain: this.context.walletClient?.chain ?? null,
827
+ ...options?.gasLimit && { gas: options.gasLimit },
828
+ ...options?.nonce && { nonce: options.nonce },
829
+ // Use EIP-1559 if available, otherwise fall back to legacy gasPrice
830
+ ...options?.maxFeePerGas || options?.maxPriorityFeePerGas ? {
831
+ ...options.maxFeePerGas && {
832
+ maxFeePerGas: options.maxFeePerGas
833
+ },
834
+ ...options.maxPriorityFeePerGas && {
835
+ maxPriorityFeePerGas: options.maxPriorityFeePerGas
836
+ }
837
+ } : options?.gasPrice && { gasPrice: options.gasPrice }
698
838
  });
699
- return {
839
+ const { tx } = await import("../utils/transactionHelpers");
840
+ return tx({
700
841
  hash: txHash,
701
- from: this.context.walletClient.account?.address
702
- };
842
+ from: typeof account === "string" ? account : account.address,
843
+ contract: "DataPortabilityPermissions",
844
+ fn: "revokePermission"
845
+ });
703
846
  } catch (error) {
704
847
  if (error instanceof Error) {
705
848
  if (error instanceof import_errors.RelayerError || error instanceof import_errors.UserRejectedRequestError || error instanceof import_errors.SerializationError || error instanceof import_errors.SignatureError || error instanceof import_errors.NetworkError || error instanceof import_errors.NonceError) {
@@ -739,8 +882,9 @@ class PermissionsController {
739
882
  * ```
740
883
  */
741
884
  async submitRevokeWithSignature(params) {
885
+ this.assertWallet();
742
886
  try {
743
- if (!this.context.walletClient.chain?.id) {
887
+ if (!this.context.walletClient?.chain?.id) {
744
888
  throw new import_errors.BlockchainError("Chain ID not available");
745
889
  }
746
890
  const nonce = await this.getPermissionsUserNonce();
@@ -767,12 +911,19 @@ class PermissionsController {
767
911
  signature
768
912
  );
769
913
  } else {
770
- hash = await this.submitDirectRevokeTransaction(typedData, signature);
914
+ hash = await this.submitDirectRevokeTransaction(
915
+ typedData,
916
+ signature
917
+ );
771
918
  }
772
- return {
919
+ const account = this.context.walletClient?.account ?? this.context.userAddress;
920
+ const { tx } = await import("../utils/transactionHelpers");
921
+ return tx({
773
922
  hash,
774
- from: this.context.walletClient.account?.address
775
- };
923
+ from: typeof account === "string" ? account : account.address,
924
+ contract: "DataPortabilityPermissions",
925
+ fn: "revokePermissionWithSignature"
926
+ });
776
927
  } catch (error) {
777
928
  throw new import_errors.PermissionError(
778
929
  `Failed to revoke permission with signature: ${error instanceof Error ? error.message : "Unknown error"}`,
@@ -780,64 +931,6 @@ class PermissionsController {
780
931
  );
781
932
  }
782
933
  }
783
- /**
784
- * @deprecated Use getPermissionsUserNonce() for permission operations or getServersUserNonce() for server operations
785
- *
786
- * Retrieves the user's current nonce from the DataPortabilityServers contract.
787
- * This method is deprecated in favor of more specific nonce methods.
788
- *
789
- * The nonce is used to prevent replay attacks in signed transactions and must
790
- * be incremented with each transaction to maintain security.
791
- *
792
- * @returns Promise resolving to the user's current nonce value as a bigint
793
- * @throws {Error} When wallet account is not available
794
- * @throws {Error} When chain ID is not available
795
- * @throws {NonceError} When reading nonce from contract fails
796
- * @private
797
- * @example
798
- * ```typescript
799
- * // Deprecated - use specific methods instead
800
- * const nonce = await this.getUserNonce();
801
- *
802
- * // Use these instead:
803
- * const permissionsNonce = await this.getPermissionsUserNonce();
804
- * const serversNonce = await this.getServersUserNonce();
805
- * ```
806
- */
807
- /**
808
- * @deprecated Use getPermissionsUserNonce() for permission operations or getServersUserNonce() for server operations
809
- *
810
- * Retrieves the user's current nonce from the DataPortabilityServers contract.
811
- *
812
- * @remarks
813
- * This method is deprecated in favor of more specific nonce methods that target
814
- * the appropriate contract for the operation being performed.
815
- *
816
- * @returns Promise resolving to the user's current nonce as a bigint
817
- * @throws {NonceError} When retrieving the nonce fails
818
- */
819
- async getUserNonce() {
820
- try {
821
- const userAddress = await this.getUserAddress();
822
- const chainId = await this.context.walletClient.getChainId();
823
- const DataPortabilityServersAddress = (0, import_addresses.getContractAddress)(
824
- chainId,
825
- "DataPortabilityServers"
826
- );
827
- const DataPortabilityServersAbi = (0, import_abi.getAbi)("DataPortabilityServers");
828
- const nonce = await this.context.publicClient.readContract({
829
- address: DataPortabilityServersAddress,
830
- abi: DataPortabilityServersAbi,
831
- functionName: "userNonce",
832
- args: [userAddress]
833
- });
834
- return nonce;
835
- } catch (error) {
836
- throw new import_errors.NonceError(
837
- `Failed to retrieve user nonce: ${error instanceof Error ? error.message : "Unknown error"}`
838
- );
839
- }
840
- }
841
934
  /**
842
935
  * Retrieves the user's current nonce from the DataPortabilityServers contract.
843
936
  * This nonce is used for server-related operations (AddAndTrustServer, TrustServer, UntrustServer).
@@ -864,8 +957,8 @@ class PermissionsController {
864
957
  */
865
958
  async getServersUserNonce() {
866
959
  try {
867
- const userAddress = await this.getUserAddress();
868
- const chainId = await this.context.walletClient.getChainId();
960
+ const userAddress = this.context.userAddress;
961
+ const chainId = await this.context.publicClient.getChainId();
869
962
  const DataPortabilityServersAddress = (0, import_addresses.getContractAddress)(
870
963
  chainId,
871
964
  "DataPortabilityServers"
@@ -910,8 +1003,8 @@ class PermissionsController {
910
1003
  */
911
1004
  async getPermissionsUserNonce() {
912
1005
  try {
913
- const userAddress = await this.getUserAddress();
914
- const chainId = await this.context.walletClient.getChainId();
1006
+ const userAddress = this.context.userAddress;
1007
+ const chainId = await this.context.publicClient.getChainId();
915
1008
  const DataPortabilityPermissionsAddress = (0, import_addresses.getContractAddress)(
916
1009
  chainId,
917
1010
  "DataPortabilityPermissions"
@@ -950,7 +1043,7 @@ class PermissionsController {
950
1043
  "\u{1F50D} Debug - Composing permission message with grantUrl:",
951
1044
  params.grantUrl
952
1045
  );
953
- const chainId = await this.context.walletClient.getChainId();
1046
+ const chainId = await this.context.publicClient.getChainId();
954
1047
  const DataPortabilityGranteesAddress = (0, import_addresses.getContractAddress)(
955
1048
  chainId,
956
1049
  "DataPortabilityGrantees"
@@ -1059,7 +1152,7 @@ class PermissionsController {
1059
1152
  * @returns Promise resolving to the EIP-712 domain configuration
1060
1153
  */
1061
1154
  async getPermissionDomain() {
1062
- const chainId = await this.context.walletClient.getChainId();
1155
+ const chainId = await this.context.publicClient.getChainId();
1063
1156
  const DataPortabilityPermissionsAddress = (0, import_addresses.getContractAddress)(
1064
1157
  chainId,
1065
1158
  "DataPortabilityPermissions"
@@ -1078,8 +1171,9 @@ class PermissionsController {
1078
1171
  * @returns Promise resolving to the cryptographic signature
1079
1172
  */
1080
1173
  async signTypedData(typedData) {
1174
+ this.assertWallet();
1081
1175
  try {
1082
- const walletAddress = this.context.walletClient.account?.address || await this.getUserAddress();
1176
+ const walletAddress = this.context.walletClient.account?.address ?? this.context.userAddress;
1083
1177
  return await (0, import_signatureCache.withSignatureCache)(
1084
1178
  this.context.platform.cache,
1085
1179
  walletAddress,
@@ -1088,9 +1182,9 @@ class PermissionsController {
1088
1182
  const viemCompatibleTypedData = (0, import_typedDataConverter.toViemTypedDataDefinition)(typedData);
1089
1183
  return await this.context.walletClient.signTypedData({
1090
1184
  ...viemCompatibleTypedData,
1091
- // Non-null assertion is safe here because getUserAddress() above ensures account exists
1092
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
1093
- account: this.context.walletClient.account
1185
+ // Use the account if available, otherwise use the wallet address
1186
+ // This follows the same pattern used throughout this file
1187
+ account: this.context.walletClient.account ?? walletAddress
1094
1188
  });
1095
1189
  }
1096
1190
  );
@@ -1105,17 +1199,10 @@ class PermissionsController {
1105
1199
  }
1106
1200
  }
1107
1201
  /**
1108
- * Gets the user's address from the wallet client.
1202
+ * Gets the user's address from the context.
1109
1203
  *
1110
- * @returns Promise resolving to the user's wallet address
1204
+ * @returns The user's address
1111
1205
  */
1112
- async getUserAddress() {
1113
- const addresses = await this.context.walletClient.getAddresses();
1114
- if (addresses.length === 0) {
1115
- throw new import_errors.BlockchainError("No addresses available in wallet client");
1116
- }
1117
- return addresses[0];
1118
- }
1119
1206
  /**
1120
1207
  * Gets on-chain permission grant data without expensive off-chain resolution.
1121
1208
  *
@@ -1154,8 +1241,8 @@ class PermissionsController {
1154
1241
  async getUserPermissionGrantsOnChain(options = {}) {
1155
1242
  const { limit = 50, subgraphUrl } = options;
1156
1243
  try {
1157
- const userAddress = await this.getUserAddress();
1158
- const graphqlEndpoint = subgraphUrl || this.context.subgraphUrl;
1244
+ const userAddress = this.context.userAddress;
1245
+ const graphqlEndpoint = subgraphUrl ?? this.context.subgraphUrl;
1159
1246
  if (!graphqlEndpoint) {
1160
1247
  throw new import_errors.BlockchainError(
1161
1248
  "subgraphUrl is required. Please provide a valid subgraph endpoint or configure it in Vana constructor."
@@ -1207,7 +1294,7 @@ class PermissionsController {
1207
1294
  );
1208
1295
  }
1209
1296
  const userData = result.data?.user;
1210
- if (!userData || !userData.permissions?.length) {
1297
+ if (!userData?.permissions?.length) {
1211
1298
  return [];
1212
1299
  }
1213
1300
  const onChainGrants = userData.permissions.slice(0, limit).map(
@@ -1218,8 +1305,8 @@ class PermissionsController {
1218
1305
  nonce: BigInt(permission.nonce),
1219
1306
  startBlock: BigInt(permission.startBlock),
1220
1307
  addedAtBlock: BigInt(permission.addedAtBlock),
1221
- addedAtTimestamp: BigInt(permission.addedAtTimestamp || "0"),
1222
- transactionHash: permission.transactionHash || "",
1308
+ addedAtTimestamp: BigInt(permission.addedAtTimestamp ?? "0"),
1309
+ transactionHash: permission.transactionHash ?? "",
1223
1310
  grantor: userAddress,
1224
1311
  grantee: permission.grantee,
1225
1312
  active: !permission.endBlock || BigInt(permission.endBlock) === 0n
@@ -1240,26 +1327,6 @@ class PermissionsController {
1240
1327
  );
1241
1328
  }
1242
1329
  }
1243
- /**
1244
- * Normalizes grant ID to hex format.
1245
- * Handles conversion from permission ID (bigint/number/string) to proper hex hash format.
1246
- *
1247
- * @param grantId - Permission ID or grant hash in various formats
1248
- * @returns Normalized hex hash
1249
- */
1250
- normalizeGrantId(grantId) {
1251
- if (typeof grantId === "string" && grantId.startsWith("0x") && grantId.length === 66) {
1252
- return grantId;
1253
- }
1254
- try {
1255
- const bigIntId = BigInt(grantId);
1256
- return `0x${bigIntId.toString(16).padStart(64, "0")}`;
1257
- } catch {
1258
- throw new Error(
1259
- `Invalid grant ID format: ${grantId}. Must be a permission ID (number/bigint/string) or a 32-byte hex hash.`
1260
- );
1261
- }
1262
- }
1263
1330
  /**
1264
1331
  * Registers a new server and immediately trusts it in the DataPortabilityServers contract.
1265
1332
  *
@@ -1268,7 +1335,6 @@ class PermissionsController {
1268
1335
  * Trusted servers can handle data export and portability requests from the user.
1269
1336
  *
1270
1337
  * @param params - Parameters for adding and trusting the server
1271
- * @param params.owner - Ethereum address that will own this server registration
1272
1338
  * @param params.serverAddress - Ethereum address of the server
1273
1339
  * @param params.serverUrl - HTTPS URL where the server can be reached
1274
1340
  * @param params.publicKey - Server's public key for encryption (hex string)
@@ -1295,6 +1361,7 @@ class PermissionsController {
1295
1361
  * ```
1296
1362
  */
1297
1363
  async addAndTrustServer(params) {
1364
+ this.assertWallet();
1298
1365
  try {
1299
1366
  const chainId = await this.context.walletClient.getChainId();
1300
1367
  const DataPortabilityServersAddress = (0, import_addresses.getContractAddress)(
@@ -1302,7 +1369,8 @@ class PermissionsController {
1302
1369
  "DataPortabilityServers"
1303
1370
  );
1304
1371
  const DataPortabilityServersAbi = (0, import_abi.getAbi)("DataPortabilityServers");
1305
- const userAddress = this.context.walletClient.account?.address || await this.getUserAddress();
1372
+ const account = this.context.walletClient?.account ?? this.context.userAddress;
1373
+ const userAddress = typeof account === "string" ? account : account.address;
1306
1374
  const normalizedUserAddress = (0, import_viem.getAddress)(userAddress);
1307
1375
  const normalizedServerAddress = (0, import_viem.getAddress)(params.serverAddress);
1308
1376
  const txHash = await this.context.walletClient.writeContract({
@@ -1317,12 +1385,40 @@ class PermissionsController {
1317
1385
  publicKey: params.publicKey
1318
1386
  }
1319
1387
  ],
1320
- account: this.context.walletClient.account || await this.getUserAddress(),
1321
- chain: this.context.walletClient.chain || null
1388
+ account,
1389
+ chain: this.context.walletClient?.chain ?? null
1322
1390
  });
1323
- return {
1391
+ const { tx } = await import("../utils/transactionHelpers");
1392
+ const txResult = tx({
1324
1393
  hash: txHash,
1325
- from: this.context.walletClient.account?.address
1394
+ from: userAddress,
1395
+ contract: "DataPortabilityServers",
1396
+ fn: "addAndTrustServerByManager"
1397
+ });
1398
+ if (!this.context.waitForTransactionEvents) {
1399
+ throw new import_errors.BlockchainError("waitForTransactionEvents not configured");
1400
+ }
1401
+ const result = await this.context.waitForTransactionEvents(txResult);
1402
+ const event = result.expectedEvents.ServerTrusted;
1403
+ if (!event) {
1404
+ throw new import_errors.BlockchainError(
1405
+ "ServerTrusted event not found in transaction"
1406
+ );
1407
+ }
1408
+ const receipt = await this.context.publicClient.getTransactionReceipt({
1409
+ hash: txHash
1410
+ });
1411
+ return {
1412
+ transactionHash: txHash,
1413
+ blockNumber: receipt.blockNumber,
1414
+ gasUsed: receipt.gasUsed,
1415
+ user: event.user,
1416
+ serverId: event.serverId,
1417
+ // bigint from event
1418
+ serverAddress: normalizedServerAddress,
1419
+ // derived from params
1420
+ serverUrl: params.serverUrl
1421
+ // provided in params
1326
1422
  };
1327
1423
  } catch (error) {
1328
1424
  if (error instanceof Error && error.message.includes("rejected")) {
@@ -1342,6 +1438,7 @@ class PermissionsController {
1342
1438
  * @deprecated Use addAndTrustServer instead
1343
1439
  */
1344
1440
  async submitTrustServer(params) {
1441
+ this.assertWallet();
1345
1442
  try {
1346
1443
  const chainId = await this.context.walletClient.getChainId();
1347
1444
  const DataPortabilityServersAddress = (0, import_addresses.getContractAddress)(
@@ -1349,18 +1446,22 @@ class PermissionsController {
1349
1446
  "DataPortabilityServers"
1350
1447
  );
1351
1448
  const DataPortabilityServersAbi = (0, import_abi.getAbi)("DataPortabilityServers");
1449
+ const account = this.context.walletClient?.account ?? this.context.userAddress;
1352
1450
  const txHash = await this.context.walletClient.writeContract({
1353
1451
  address: DataPortabilityServersAddress,
1354
1452
  abi: DataPortabilityServersAbi,
1355
1453
  functionName: "trustServer",
1356
1454
  args: [BigInt(params.serverId)],
1357
- account: this.context.walletClient.account || await this.getUserAddress(),
1358
- chain: this.context.walletClient.chain || null
1455
+ account,
1456
+ chain: this.context.walletClient?.chain ?? null
1359
1457
  });
1360
- return {
1458
+ const { tx } = await import("../utils/transactionHelpers");
1459
+ return tx({
1361
1460
  hash: txHash,
1362
- from: this.context.walletClient.account?.address
1363
- };
1461
+ from: typeof account === "string" ? account : account.address,
1462
+ contract: "DataPortabilityServers",
1463
+ fn: "trustServer"
1464
+ });
1364
1465
  } catch (error) {
1365
1466
  if (error instanceof Error && error.message.includes("rejected")) {
1366
1467
  throw new import_errors.UserRejectedRequestError();
@@ -1378,6 +1479,7 @@ class PermissionsController {
1378
1479
  * @returns Promise resolving to TransactionResult with ServerTrustResult event data
1379
1480
  */
1380
1481
  async submitAddAndTrustServerWithSignature(params) {
1482
+ this.assertWallet();
1381
1483
  try {
1382
1484
  const nonce = await this.getServersUserNonce();
1383
1485
  const serverAddress = (0, import_viem.getAddress)(params.serverAddress);
@@ -1412,10 +1514,14 @@ class PermissionsController {
1412
1514
  signature
1413
1515
  );
1414
1516
  }
1415
- return {
1517
+ const account = this.context.walletClient?.account ?? this.context.userAddress;
1518
+ const { tx } = await import("../utils/transactionHelpers");
1519
+ return tx({
1416
1520
  hash,
1417
- from: this.context.walletClient.account?.address
1418
- };
1521
+ from: typeof account === "string" ? account : account.address,
1522
+ contract: "DataPortabilityServers",
1523
+ fn: "addAndTrustServerWithSignature"
1524
+ });
1419
1525
  } catch (error) {
1420
1526
  if (error instanceof Error) {
1421
1527
  if (error instanceof import_errors.RelayerError || error instanceof import_errors.UserRejectedRequestError || error instanceof import_errors.SerializationError || error instanceof import_errors.SignatureError || error instanceof import_errors.NetworkError || error instanceof import_errors.NonceError) {
@@ -1445,6 +1551,7 @@ class PermissionsController {
1445
1551
  * @throws {BlockchainError} When trust operation fails for any other reason
1446
1552
  */
1447
1553
  async submitTrustServerWithSignature(params) {
1554
+ this.assertWallet();
1448
1555
  try {
1449
1556
  const nonce = await this.getServersUserNonce();
1450
1557
  const trustServerInput = {
@@ -1465,10 +1572,14 @@ class PermissionsController {
1465
1572
  signature
1466
1573
  );
1467
1574
  }
1468
- return {
1575
+ const account = this.context.walletClient?.account ?? this.context.userAddress;
1576
+ const { tx } = await import("../utils/transactionHelpers");
1577
+ return tx({
1469
1578
  hash,
1470
- from: this.context.walletClient.account?.address
1471
- };
1579
+ from: typeof account === "string" ? account : account.address,
1580
+ contract: "DataPortabilityServers",
1581
+ fn: "trustServerWithSignature"
1582
+ });
1472
1583
  } catch (error) {
1473
1584
  if (error instanceof Error) {
1474
1585
  if (error instanceof import_errors.RelayerError || error instanceof import_errors.UserRejectedRequestError || error instanceof import_errors.SerializationError || error instanceof import_errors.SignatureError || error instanceof import_errors.NetworkError || error instanceof import_errors.NonceError) {
@@ -1499,7 +1610,8 @@ class PermissionsController {
1499
1610
  * @returns Promise resolving to TransactionResult for transaction tracking
1500
1611
  * @throws {BlockchainError} When contract submission fails
1501
1612
  */
1502
- async submitDirectUntrustTransaction(params) {
1613
+ async submitDirectUntrustTransaction(params, options) {
1614
+ this.assertWallet();
1503
1615
  try {
1504
1616
  const chainId = await this.context.walletClient.getChainId();
1505
1617
  const DataPortabilityServersAddress = (0, import_addresses.getContractAddress)(
@@ -1507,18 +1619,33 @@ class PermissionsController {
1507
1619
  "DataPortabilityServers"
1508
1620
  );
1509
1621
  const DataPortabilityServersAbi = (0, import_abi.getAbi)("DataPortabilityServers");
1622
+ const account = this.context.walletClient?.account ?? this.context.userAddress;
1510
1623
  const txHash = await this.context.walletClient.writeContract({
1511
1624
  address: DataPortabilityServersAddress,
1512
1625
  abi: DataPortabilityServersAbi,
1513
1626
  functionName: "untrustServer",
1514
1627
  args: [BigInt(params.serverId)],
1515
- account: this.context.walletClient.account || await this.getUserAddress(),
1516
- chain: this.context.walletClient.chain || null
1628
+ account,
1629
+ chain: this.context.walletClient?.chain ?? null,
1630
+ ...options?.gasLimit && { gas: options.gasLimit },
1631
+ ...options?.nonce && { nonce: options.nonce },
1632
+ // Use EIP-1559 if available, otherwise fall back to legacy gasPrice
1633
+ ...options?.maxFeePerGas || options?.maxPriorityFeePerGas ? {
1634
+ ...options.maxFeePerGas && {
1635
+ maxFeePerGas: options.maxFeePerGas
1636
+ },
1637
+ ...options.maxPriorityFeePerGas && {
1638
+ maxPriorityFeePerGas: options.maxPriorityFeePerGas
1639
+ }
1640
+ } : options?.gasPrice && { gasPrice: options.gasPrice }
1517
1641
  });
1518
- return {
1642
+ const { tx } = await import("../utils/transactionHelpers");
1643
+ return tx({
1519
1644
  hash: txHash,
1520
- from: this.context.walletClient.account?.address
1521
- };
1645
+ from: typeof account === "string" ? account : account.address,
1646
+ contract: "DataPortabilityServers",
1647
+ fn: "untrustServer"
1648
+ });
1522
1649
  } catch (error) {
1523
1650
  if (error instanceof Error && error.message.includes("rejected")) {
1524
1651
  throw new import_errors.UserRejectedRequestError();
@@ -1537,6 +1664,7 @@ class PermissionsController {
1537
1664
  *
1538
1665
  * @param params - Parameters for untrusting the server
1539
1666
  * @param params.serverId - The numeric ID of the server to untrust
1667
+ * @param options - Optional transaction options for gas parameters and timeout
1540
1668
  * @returns Promise resolving to transaction hash
1541
1669
  * @throws {Error} When wallet account is not available
1542
1670
  * @throws {NonceError} When retrieving user nonce fails
@@ -1557,13 +1685,17 @@ class PermissionsController {
1557
1685
  * console.log('Still trusting servers:', trustedServers);
1558
1686
  * ```
1559
1687
  */
1560
- async submitUntrustServer(params) {
1688
+ async submitUntrustServer(params, options) {
1689
+ this.assertWallet();
1561
1690
  const nonce = await this.getServersUserNonce();
1562
1691
  const untrustServerInput = {
1563
1692
  nonce,
1564
1693
  serverId: params.serverId
1565
1694
  };
1566
- return await this.submitDirectUntrustTransaction(untrustServerInput);
1695
+ return await this.submitDirectUntrustTransaction(
1696
+ untrustServerInput,
1697
+ options
1698
+ );
1567
1699
  }
1568
1700
  /**
1569
1701
  * Untrusts a server using a signature (gasless transaction).
@@ -1578,6 +1710,7 @@ class PermissionsController {
1578
1710
  * @throws {BlockchainError} When untrust transaction fails
1579
1711
  */
1580
1712
  async submitUntrustServerWithSignature(params) {
1713
+ this.assertWallet();
1581
1714
  try {
1582
1715
  const nonce = await this.getServersUserNonce();
1583
1716
  const untrustServerInput = {
@@ -1595,10 +1728,14 @@ class PermissionsController {
1595
1728
  } else {
1596
1729
  hash = await this.submitSignedUntrustTransaction(typedData, signature);
1597
1730
  }
1598
- return {
1731
+ const account = this.context.walletClient?.account ?? this.context.userAddress;
1732
+ const { tx } = await import("../utils/transactionHelpers");
1733
+ return tx({
1599
1734
  hash,
1600
- from: this.context.walletClient.account?.address
1601
- };
1735
+ from: typeof account === "string" ? account : account.address,
1736
+ contract: "DataPortabilityServers",
1737
+ fn: "untrustServerWithSignature"
1738
+ });
1602
1739
  } catch (error) {
1603
1740
  if (error instanceof Error) {
1604
1741
  if (error instanceof import_errors.RelayerError || error instanceof import_errors.UserRejectedRequestError || error instanceof import_errors.SerializationError || error instanceof import_errors.SignatureError || error instanceof import_errors.NetworkError || error instanceof import_errors.NonceError) {
@@ -1636,8 +1773,8 @@ class PermissionsController {
1636
1773
  */
1637
1774
  async getTrustedServers(userAddress) {
1638
1775
  try {
1639
- const user = userAddress || await this.getUserAddress();
1640
- const chainId = await this.context.walletClient.getChainId();
1776
+ const user = userAddress ?? this.context.userAddress;
1777
+ const chainId = await this.context.publicClient.getChainId();
1641
1778
  const DataPortabilityServersAddress = (0, import_addresses.getContractAddress)(
1642
1779
  chainId,
1643
1780
  "DataPortabilityServers"
@@ -1666,8 +1803,8 @@ class PermissionsController {
1666
1803
  */
1667
1804
  async getTrustedServersCount(userAddress) {
1668
1805
  try {
1669
- const user = userAddress || await this.getUserAddress();
1670
- const chainId = await this.context.walletClient.getChainId();
1806
+ const user = userAddress ?? this.context.userAddress;
1807
+ const chainId = await this.context.publicClient.getChainId();
1671
1808
  const DataPortabilityServersAddress = (0, import_addresses.getContractAddress)(
1672
1809
  chainId,
1673
1810
  "DataPortabilityServers"
@@ -1696,10 +1833,10 @@ class PermissionsController {
1696
1833
  */
1697
1834
  async getTrustedServersPaginated(options = {}) {
1698
1835
  try {
1699
- const user = options.userAddress || await this.getUserAddress();
1700
- const limit = options.limit || 50;
1701
- const offset = options.offset || 0;
1702
- const chainId = await this.context.walletClient.getChainId();
1836
+ const user = options.userAddress ?? this.context.userAddress;
1837
+ const limit = options.limit ?? 50;
1838
+ const offset = options.offset ?? 0;
1839
+ const chainId = await this.context.publicClient.getChainId();
1703
1840
  const DataPortabilityServersAddress = (0, import_addresses.getContractAddress)(
1704
1841
  chainId,
1705
1842
  "DataPortabilityServers"
@@ -1845,7 +1982,7 @@ class PermissionsController {
1845
1982
  };
1846
1983
  }
1847
1984
  try {
1848
- const chainId = await this.context.walletClient.getChainId();
1985
+ const chainId = await this.context.publicClient.getChainId();
1849
1986
  const DataPortabilityServersAddress = (0, import_addresses.getContractAddress)(
1850
1987
  chainId,
1851
1988
  "DataPortabilityServers"
@@ -1920,7 +2057,7 @@ class PermissionsController {
1920
2057
  */
1921
2058
  async checkServerTrustStatus(serverId, userAddress) {
1922
2059
  try {
1923
- const user = userAddress || await this.getUserAddress();
2060
+ const user = userAddress ?? this.context.userAddress;
1924
2061
  const trustedServers = await this.getTrustedServers(user);
1925
2062
  const trustIndex = trustedServers.findIndex(
1926
2063
  (server) => server === serverId
@@ -2010,7 +2147,7 @@ class PermissionsController {
2010
2147
  * @returns Promise resolving to the EIP-712 domain configuration
2011
2148
  */
2012
2149
  async getServersDomain() {
2013
- const chainId = await this.context.walletClient.getChainId();
2150
+ const chainId = await this.context.publicClient.getChainId();
2014
2151
  const DataPortabilityServersAddress = (0, import_addresses.getContractAddress)(
2015
2152
  chainId,
2016
2153
  "DataPortabilityServers"
@@ -2030,6 +2167,7 @@ class PermissionsController {
2030
2167
  * @returns Promise resolving to the transaction hash
2031
2168
  */
2032
2169
  async submitAddAndTrustServerTransaction(addAndTrustServerInput, signature) {
2170
+ this.assertWallet();
2033
2171
  const chainId = await this.context.walletClient.getChainId();
2034
2172
  const DataPortabilityServersAddress = (0, import_addresses.getContractAddress)(
2035
2173
  chainId,
@@ -2061,8 +2199,8 @@ class PermissionsController {
2061
2199
  },
2062
2200
  formattedSignature
2063
2201
  ],
2064
- account: this.context.walletClient.account || await this.getUserAddress(),
2065
- chain: this.context.walletClient.chain || null
2202
+ account: this.context.walletClient?.account ?? this.context.userAddress,
2203
+ chain: this.context.walletClient?.chain ?? null
2066
2204
  });
2067
2205
  return txHash;
2068
2206
  }
@@ -2074,6 +2212,7 @@ class PermissionsController {
2074
2212
  * @returns Promise resolving to the transaction hash
2075
2213
  */
2076
2214
  async submitTrustServerTransaction(trustServerInput, signature) {
2215
+ this.assertWallet();
2077
2216
  const chainId = await this.context.walletClient.getChainId();
2078
2217
  const DataPortabilityServersAddress = (0, import_addresses.getContractAddress)(
2079
2218
  chainId,
@@ -2092,8 +2231,8 @@ class PermissionsController {
2092
2231
  },
2093
2232
  formattedSignature
2094
2233
  ],
2095
- account: this.context.walletClient.account || await this.getUserAddress(),
2096
- chain: this.context.walletClient.chain || null
2234
+ account: this.context.walletClient?.account ?? this.context.userAddress,
2235
+ chain: this.context.walletClient?.chain ?? null
2097
2236
  });
2098
2237
  return txHash;
2099
2238
  }
@@ -2105,6 +2244,7 @@ class PermissionsController {
2105
2244
  * @returns Promise resolving to the transaction hash
2106
2245
  */
2107
2246
  async submitDirectRevokeTransaction(typedData, signature) {
2247
+ this.assertWallet();
2108
2248
  const chainId = await this.context.walletClient.getChainId();
2109
2249
  const DataPortabilityPermissionsAddress = (0, import_addresses.getContractAddress)(
2110
2250
  chainId,
@@ -2116,10 +2256,9 @@ class PermissionsController {
2116
2256
  address: DataPortabilityPermissionsAddress,
2117
2257
  abi: DataPortabilityPermissionsAbi,
2118
2258
  functionName: "revokePermissionWithSignature",
2119
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
2120
2259
  args: [typedData.message, formattedSignature],
2121
- account: this.context.walletClient.account || await this.getUserAddress(),
2122
- chain: this.context.walletClient.chain || null
2260
+ account: this.context.walletClient?.account ?? this.context.userAddress,
2261
+ chain: this.context.walletClient?.chain ?? null
2123
2262
  });
2124
2263
  return txHash;
2125
2264
  }
@@ -2131,6 +2270,7 @@ class PermissionsController {
2131
2270
  * @returns Promise resolving to the transaction hash
2132
2271
  */
2133
2272
  async submitSignedUntrustTransaction(typedData, signature) {
2273
+ this.assertWallet();
2134
2274
  const chainId = await this.context.walletClient.getChainId();
2135
2275
  const DataPortabilityServersAddress = (0, import_addresses.getContractAddress)(
2136
2276
  chainId,
@@ -2138,14 +2278,17 @@ class PermissionsController {
2138
2278
  );
2139
2279
  const DataPortabilityServersAbi = (0, import_abi.getAbi)("DataPortabilityServers");
2140
2280
  const formattedSignature = (0, import_signatureFormatter.formatSignatureForContract)(signature);
2281
+ const contractMessage = {
2282
+ nonce: typedData.message.nonce,
2283
+ serverId: BigInt(typedData.message.serverId)
2284
+ };
2141
2285
  const txHash = await this.context.walletClient.writeContract({
2142
2286
  address: DataPortabilityServersAddress,
2143
2287
  abi: DataPortabilityServersAbi,
2144
2288
  functionName: "untrustServerWithSignature",
2145
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
2146
- args: [typedData.message, formattedSignature],
2147
- account: this.context.walletClient.account || await this.getUserAddress(),
2148
- chain: this.context.walletClient.chain || null
2289
+ args: [contractMessage, formattedSignature],
2290
+ account: this.context.walletClient?.account ?? this.context.userAddress,
2291
+ chain: this.context.walletClient?.chain ?? null
2149
2292
  });
2150
2293
  return txHash;
2151
2294
  }
@@ -2162,6 +2305,7 @@ class PermissionsController {
2162
2305
  * @param params.owner - The Ethereum address that will own this grantee registration
2163
2306
  * @param params.granteeAddress - The Ethereum address of the grantee (application)
2164
2307
  * @param params.publicKey - The public key used for data encryption/decryption (hex string)
2308
+ * @param options - Optional transaction options for gas parameters and timeout
2165
2309
  * @returns Promise resolving to the transaction hash
2166
2310
  * @throws {BlockchainError} When the grantee registration transaction fails
2167
2311
  * @throws {UserRejectedRequestError} When user rejects the transaction
@@ -2177,7 +2321,8 @@ class PermissionsController {
2177
2321
  * console.log(`Grantee registered in transaction: ${txHash}`);
2178
2322
  * ```
2179
2323
  */
2180
- async submitRegisterGrantee(params) {
2324
+ async submitRegisterGrantee(params, options) {
2325
+ this.assertWallet();
2181
2326
  const chainId = await this.context.walletClient.getChainId();
2182
2327
  const DataPortabilityGranteesAddress = (0, import_addresses.getContractAddress)(
2183
2328
  chainId,
@@ -2186,18 +2331,31 @@ class PermissionsController {
2186
2331
  const DataPortabilityGranteesAbi = (0, import_abi.getAbi)("DataPortabilityGrantees");
2187
2332
  const ownerAddress = (0, import_viem.getAddress)(params.owner);
2188
2333
  const granteeAddress = (0, import_viem.getAddress)(params.granteeAddress);
2334
+ const account = this.context.walletClient?.account ?? this.context.userAddress;
2189
2335
  const txHash = await this.context.walletClient.writeContract({
2190
2336
  address: DataPortabilityGranteesAddress,
2191
2337
  abi: DataPortabilityGranteesAbi,
2192
2338
  functionName: "registerGrantee",
2193
2339
  args: [ownerAddress, granteeAddress, params.publicKey],
2194
- account: this.context.walletClient.account || await this.getUserAddress(),
2195
- chain: this.context.walletClient.chain || null
2340
+ account,
2341
+ chain: this.context.walletClient?.chain ?? null,
2342
+ ...options?.gasLimit && { gas: options.gasLimit },
2343
+ ...options?.nonce && { nonce: options.nonce },
2344
+ // Use EIP-1559 if available, otherwise fall back to legacy gasPrice
2345
+ ...options?.maxFeePerGas || options?.maxPriorityFeePerGas ? {
2346
+ ...options.maxFeePerGas && { maxFeePerGas: options.maxFeePerGas },
2347
+ ...options.maxPriorityFeePerGas && {
2348
+ maxPriorityFeePerGas: options.maxPriorityFeePerGas
2349
+ }
2350
+ } : options?.gasPrice && { gasPrice: options.gasPrice }
2196
2351
  });
2197
- return {
2352
+ const { tx } = await import("../utils/transactionHelpers");
2353
+ return tx({
2198
2354
  hash: txHash,
2199
- from: this.context.walletClient.account?.address
2200
- };
2355
+ from: typeof account === "string" ? account : account.address,
2356
+ contract: "DataPortabilityGrantees",
2357
+ fn: "registerGrantee"
2358
+ });
2201
2359
  }
2202
2360
  /**
2203
2361
  * Registers a grantee with a signature (gasless transaction)
@@ -2215,6 +2373,7 @@ class PermissionsController {
2215
2373
  * ```
2216
2374
  */
2217
2375
  async submitRegisterGranteeWithSignature(params) {
2376
+ this.assertWallet();
2218
2377
  const nonce = await this.getServersUserNonce();
2219
2378
  const owner = (0, import_viem.getAddress)(params.owner);
2220
2379
  const granteeAddress = (0, import_viem.getAddress)(params.granteeAddress);
@@ -2230,10 +2389,14 @@ class PermissionsController {
2230
2389
  typedData,
2231
2390
  signature
2232
2391
  );
2233
- return {
2392
+ const account = this.context.walletClient?.account ?? this.context.userAddress;
2393
+ const { tx } = await import("../utils/transactionHelpers");
2394
+ return tx({
2234
2395
  hash,
2235
- from: this.context.walletClient.account?.address
2236
- };
2396
+ from: typeof account === "string" ? account : account.address,
2397
+ contract: "DataPortabilityGrantees",
2398
+ fn: "registerGrantee"
2399
+ });
2237
2400
  }
2238
2401
  /**
2239
2402
  * Submits a signed register grantee transaction via relayer
@@ -2252,10 +2415,14 @@ class PermissionsController {
2252
2415
  typedData,
2253
2416
  signature
2254
2417
  );
2255
- return {
2418
+ const account = this.context.walletClient?.account ?? this.context.userAddress;
2419
+ const { tx } = await import("../utils/transactionHelpers");
2420
+ return tx({
2256
2421
  hash,
2257
- from: this.context.walletClient.account?.address
2258
- };
2422
+ from: typeof account === "string" ? account : account.address,
2423
+ contract: "DataPortabilityGrantees",
2424
+ fn: "registerGrantee"
2425
+ });
2259
2426
  }
2260
2427
  /**
2261
2428
  * Retrieves all registered grantees from the DataPortabilityGrantees contract.
@@ -2302,8 +2469,8 @@ class PermissionsController {
2302
2469
  functionName: "granteesCount"
2303
2470
  });
2304
2471
  const total = Number(totalCount);
2305
- const limit = options.limit || 50;
2306
- const offset = options.offset || 0;
2472
+ const limit = options.limit ?? 50;
2473
+ const offset = options.offset ?? 0;
2307
2474
  const grantees = [];
2308
2475
  const endIndex = Math.min(offset + limit, total);
2309
2476
  for (let i = offset; i < endIndex; i++) {
@@ -2451,7 +2618,7 @@ class PermissionsController {
2451
2618
  * @private
2452
2619
  */
2453
2620
  async buildRegisterGranteeTypedData(input) {
2454
- const chainId = await this.context.walletClient.getChainId();
2621
+ const chainId = await this.context.publicClient.getChainId();
2455
2622
  const verifyingContract = (0, import_addresses.getContractAddress)(
2456
2623
  chainId,
2457
2624
  "DataPortabilityGrantees"
@@ -2484,6 +2651,7 @@ class PermissionsController {
2484
2651
  * @private
2485
2652
  */
2486
2653
  async submitSignedRegisterGranteeTransaction(typedData, _signature) {
2654
+ this.assertWallet();
2487
2655
  const chainId = await this.context.walletClient.getChainId();
2488
2656
  const DataPortabilityGranteesAddress = (0, import_addresses.getContractAddress)(
2489
2657
  chainId,
@@ -2499,8 +2667,8 @@ class PermissionsController {
2499
2667
  typedData.message.granteeAddress,
2500
2668
  typedData.message.publicKey
2501
2669
  ],
2502
- account: this.context.walletClient.account || await this.getUserAddress(),
2503
- chain: this.context.walletClient.chain || null
2670
+ account: this.context.walletClient?.account ?? this.context.userAddress,
2671
+ chain: this.context.walletClient?.chain ?? null
2504
2672
  });
2505
2673
  return txHash;
2506
2674
  }
@@ -2515,7 +2683,7 @@ class PermissionsController {
2515
2683
  */
2516
2684
  async getUserServerIds(userAddress) {
2517
2685
  try {
2518
- const targetAddress = userAddress || await this.getUserAddress();
2686
+ const targetAddress = userAddress ?? this.context.userAddress;
2519
2687
  const chainId = await this.context.publicClient.getChainId();
2520
2688
  const DataPortabilityServersAddress = (0, import_addresses.getContractAddress)(
2521
2689
  chainId,
@@ -2573,7 +2741,7 @@ class PermissionsController {
2573
2741
  */
2574
2742
  async getUserServerCount(userAddress) {
2575
2743
  try {
2576
- const targetAddress = userAddress || await this.getUserAddress();
2744
+ const targetAddress = userAddress ?? this.context.userAddress;
2577
2745
  const chainId = await this.context.publicClient.getChainId();
2578
2746
  const DataPortabilityServersAddress = (0, import_addresses.getContractAddress)(
2579
2747
  chainId,
@@ -2602,7 +2770,7 @@ class PermissionsController {
2602
2770
  */
2603
2771
  async getUserTrustedServers(userAddress) {
2604
2772
  try {
2605
- const targetAddress = userAddress || await this.getUserAddress();
2773
+ const targetAddress = userAddress ?? this.context.userAddress;
2606
2774
  const chainId = await this.context.publicClient.getChainId();
2607
2775
  const DataPortabilityServersAddress = (0, import_addresses.getContractAddress)(
2608
2776
  chainId,
@@ -2719,7 +2887,7 @@ class PermissionsController {
2719
2887
  */
2720
2888
  async getUserPermissionIds(userAddress) {
2721
2889
  try {
2722
- const targetAddress = userAddress || await this.getUserAddress();
2890
+ const targetAddress = userAddress ?? this.context.userAddress;
2723
2891
  const chainId = await this.context.publicClient.getChainId();
2724
2892
  const DataPortabilityPermissionsAddress = (0, import_addresses.getContractAddress)(
2725
2893
  chainId,
@@ -2781,7 +2949,7 @@ class PermissionsController {
2781
2949
  */
2782
2950
  async getUserPermissionCount(userAddress) {
2783
2951
  try {
2784
- const targetAddress = userAddress || await this.getUserAddress();
2952
+ const targetAddress = userAddress ?? this.context.userAddress;
2785
2953
  const chainId = await this.context.publicClient.getChainId();
2786
2954
  const DataPortabilityPermissionsAddress = (0, import_addresses.getContractAddress)(
2787
2955
  chainId,
@@ -3223,9 +3391,11 @@ class PermissionsController {
3223
3391
  *
3224
3392
  * @param serverId - Server ID to update
3225
3393
  * @param url - New URL for the server
3394
+ * @param options - Optional transaction options for gas parameters and timeout
3226
3395
  * @returns Promise resolving to transaction hash
3227
3396
  */
3228
- async submitUpdateServer(serverId, url) {
3397
+ async submitUpdateServer(serverId, url, options) {
3398
+ this.assertWallet();
3229
3399
  try {
3230
3400
  const chainId = await this.context.walletClient.getChainId();
3231
3401
  const DataPortabilityServersAddress = (0, import_addresses.getContractAddress)(
@@ -3233,18 +3403,33 @@ class PermissionsController {
3233
3403
  "DataPortabilityServers"
3234
3404
  );
3235
3405
  const DataPortabilityServersAbi = (0, import_abi.getAbi)("DataPortabilityServers");
3406
+ const account = this.context.walletClient?.account ?? this.context.userAddress;
3236
3407
  const hash = await this.context.walletClient.writeContract({
3237
3408
  address: DataPortabilityServersAddress,
3238
3409
  abi: DataPortabilityServersAbi,
3239
3410
  functionName: "updateServer",
3240
3411
  args: [serverId, url],
3241
- chain: this.context.walletClient.chain,
3242
- account: this.context.walletClient.account || null
3412
+ chain: this.context.walletClient?.chain,
3413
+ account,
3414
+ ...options?.gasLimit && { gas: options.gasLimit },
3415
+ ...options?.nonce && { nonce: options.nonce },
3416
+ // Use EIP-1559 if available, otherwise fall back to legacy gasPrice
3417
+ ...options?.maxFeePerGas || options?.maxPriorityFeePerGas ? {
3418
+ ...options.maxFeePerGas && {
3419
+ maxFeePerGas: options.maxFeePerGas
3420
+ },
3421
+ ...options.maxPriorityFeePerGas && {
3422
+ maxPriorityFeePerGas: options.maxPriorityFeePerGas
3423
+ }
3424
+ } : options?.gasPrice && { gasPrice: options.gasPrice }
3243
3425
  });
3244
- return {
3426
+ const { tx } = await import("../utils/transactionHelpers");
3427
+ return tx({
3245
3428
  hash,
3246
- from: this.context.walletClient.account?.address
3247
- };
3429
+ from: typeof account === "string" ? account : account.address,
3430
+ contract: "DataPortabilityServers",
3431
+ fn: "updateServer"
3432
+ });
3248
3433
  } catch (error) {
3249
3434
  throw new import_errors.BlockchainError(
3250
3435
  `Failed to update server: ${error instanceof Error ? error.message : "Unknown error"}`,
@@ -3394,6 +3579,7 @@ class PermissionsController {
3394
3579
  * @throws {NetworkError} When network communication fails
3395
3580
  */
3396
3581
  async submitAddPermission(params) {
3582
+ this.assertWallet();
3397
3583
  try {
3398
3584
  const nonce = await this.getPermissionsUserNonce();
3399
3585
  const addPermissionInput = {
@@ -3432,6 +3618,7 @@ class PermissionsController {
3432
3618
  * @throws {NetworkError} When network communication fails
3433
3619
  */
3434
3620
  async submitSignedAddPermission(typedData, signature) {
3621
+ this.assertWallet();
3435
3622
  try {
3436
3623
  let hash;
3437
3624
  if (this.context.relayerCallbacks?.submitAddPermission) {
@@ -3445,10 +3632,14 @@ class PermissionsController {
3445
3632
  signature
3446
3633
  );
3447
3634
  }
3448
- return {
3635
+ const account = this.context.walletClient?.account ?? this.context.userAddress;
3636
+ const { tx } = await import("../utils/transactionHelpers");
3637
+ return tx({
3449
3638
  hash,
3450
- from: this.context.walletClient.account?.address
3451
- };
3639
+ from: typeof account === "string" ? account : account.address,
3640
+ contract: "DataPortabilityPermissions",
3641
+ fn: "addPermission"
3642
+ });
3452
3643
  } catch (error) {
3453
3644
  if (error instanceof import_errors.RelayerError || error instanceof import_errors.NetworkError || error instanceof import_errors.UserRejectedRequestError || error instanceof import_errors.SignatureError || error instanceof import_errors.NonceError) {
3454
3645
  throw error;
@@ -3477,8 +3668,11 @@ class PermissionsController {
3477
3668
  * @param params.serverAddress - Server wallet address for decryption permissions
3478
3669
  * @param params.serverUrl - Server endpoint URL
3479
3670
  * @param params.serverPublicKey - Server's public key for encryption.
3480
- * Obtain via `vana.server.getIdentity(userAddress).public_key`.
3671
+ * Obtain via `vana.server.getIdentity(userAddress).publicKey`.
3481
3672
  * @param params.filePermissions - Nested array of permissions for each file
3673
+ * @param options - Optional transaction options for gas parameters and timeout.
3674
+ * Note: These options are only applied for direct blockchain transactions.
3675
+ * When using relayer callbacks (gasless transactions), these options are ignored.
3482
3676
  * @returns TransactionResult with immediate hash access and optional event data
3483
3677
  * @throws {Error} When schemaIds array length doesn't match fileUrls array length
3484
3678
  * @throws {SchemaValidationError} When file data doesn't match the specified schema.
@@ -3492,6 +3686,7 @@ class PermissionsController {
3492
3686
  *
3493
3687
  * @example
3494
3688
  * ```typescript
3689
+ * // Submit with custom gas parameters and timeout
3495
3690
  * const result = await vana.permissions.submitAddServerFilesAndPermissions({
3496
3691
  * granteeId: BigInt(1),
3497
3692
  * grant: "ipfs://QmXxx...",
@@ -3499,17 +3694,25 @@ class PermissionsController {
3499
3694
  * schemaIds: [123], // LinkedIn profile schema ID
3500
3695
  * serverAddress: "0x742d35Cc6634C0532925a3b844Bc9e7595f0b0Bb",
3501
3696
  * serverUrl: "https://server.example.com",
3502
- * serverPublicKey: serverInfo.public_key,
3697
+ * serverPublicKey: serverInfo.publicKey,
3503
3698
  * filePermissions: [[{
3504
3699
  * account: "0x742d35Cc6634C0532925a3b844Bc9e7595f0b0Bb",
3505
3700
  * key: encryptedKey
3506
3701
  * }]]
3702
+ * }, {
3703
+ * maxFeePerGas: 100n * 10n ** 9n, // 100 gwei
3704
+ * maxPriorityFeePerGas: 2n * 10n ** 9n, // 2 gwei tip
3507
3705
  * });
3508
- * const events = await result.waitForEvents();
3509
- * console.log(`Permission ID: ${events.permissionId}`);
3706
+ *
3707
+ * // Wait for confirmation with custom timeout
3708
+ * const receipt = await vana.waitForTransactionReceipt(result, {
3709
+ * timeout: 180000 // 3 minutes
3710
+ * });
3711
+ * console.log(`Transaction confirmed: ${receipt.transactionHash}`);
3510
3712
  * ```
3511
3713
  */
3512
- async submitAddServerFilesAndPermissions(params) {
3714
+ async submitAddServerFilesAndPermissions(params, options) {
3715
+ this.assertWallet();
3513
3716
  try {
3514
3717
  if (params.schemaIds.length !== params.fileUrls.length) {
3515
3718
  throw new Error(
@@ -3534,7 +3737,8 @@ class PermissionsController {
3534
3737
  const signature = await this.signTypedData(typedData);
3535
3738
  return await this.submitSignedAddServerFilesAndPermissions(
3536
3739
  typedData,
3537
- signature
3740
+ signature,
3741
+ options
3538
3742
  );
3539
3743
  } catch (error) {
3540
3744
  if (error instanceof import_errors.RelayerError || error instanceof import_errors.UserRejectedRequestError || error instanceof import_errors.SerializationError || error instanceof import_errors.SignatureError || error instanceof import_errors.NetworkError || error instanceof import_errors.NonceError) {
@@ -3555,6 +3759,9 @@ class PermissionsController {
3555
3759
  *
3556
3760
  * @param typedData - The EIP-712 typed data for AddServerFilesAndPermissions
3557
3761
  * @param signature - The user's signature
3762
+ * @param options - Optional transaction options for gas parameters and timeout.
3763
+ * Note: These options are only applied for direct blockchain transactions.
3764
+ * When using relayer callbacks (gasless transactions), these options are ignored.
3558
3765
  * @returns TransactionResult with immediate hash access and optional event data
3559
3766
  * @throws {RelayerError} When gasless transaction submission fails
3560
3767
  * @throws {BlockchainError} When server files and permissions addition fails
@@ -3573,7 +3780,8 @@ class PermissionsController {
3573
3780
  * console.log(`Permission created with ID: ${permissionId}`);
3574
3781
  * ```
3575
3782
  */
3576
- async submitSignedAddServerFilesAndPermissions(typedData, signature) {
3783
+ async submitSignedAddServerFilesAndPermissions(typedData, signature, options) {
3784
+ this.assertWallet();
3577
3785
  try {
3578
3786
  console.debug("\u{1F50D} submitSignedAddServerFilesAndPermissions Debug Info:", {
3579
3787
  hasRelayerCallbacks: !!this.context.relayerCallbacks,
@@ -3588,22 +3796,31 @@ class PermissionsController {
3588
3796
  typedData,
3589
3797
  signature
3590
3798
  );
3591
- return {
3799
+ const account = this.context.walletClient?.account ?? this.context.userAddress;
3800
+ const { tx } = await import("../utils/transactionHelpers");
3801
+ return tx({
3592
3802
  hash,
3593
- from: this.context.walletClient.account?.address
3594
- };
3803
+ from: typeof account === "string" ? account : account.address,
3804
+ contract: "DataPortabilityPermissions",
3805
+ fn: "addServerFilesAndPermissions"
3806
+ });
3595
3807
  } else {
3596
3808
  console.debug(
3597
3809
  "\u{1F4DD} Using direct transaction for submitAddServerFilesAndPermissions"
3598
3810
  );
3599
3811
  const hash = await this.submitDirectAddServerFilesAndPermissionsTransaction(
3600
3812
  typedData,
3601
- signature
3813
+ signature,
3814
+ options
3602
3815
  );
3603
- return {
3816
+ const account = this.context.userAddress;
3817
+ const { tx } = await import("../utils/transactionHelpers");
3818
+ return tx({
3604
3819
  hash,
3605
- from: this.context.walletClient.account?.address
3606
- };
3820
+ from: account,
3821
+ contract: "DataPortabilityPermissions",
3822
+ fn: "addServerFilesAndPermissions"
3823
+ });
3607
3824
  }
3608
3825
  } catch (error) {
3609
3826
  if (error instanceof import_errors.RelayerError || error instanceof import_errors.NetworkError || error instanceof import_errors.UserRejectedRequestError || error instanceof import_errors.SignatureError || error instanceof import_errors.NonceError) {
@@ -3619,9 +3836,11 @@ class PermissionsController {
3619
3836
  * Submit permission revocation with signature to the blockchain
3620
3837
  *
3621
3838
  * @param permissionId - Permission ID to revoke
3839
+ * @param options - Optional transaction options for gas parameters and timeout
3622
3840
  * @returns Promise resolving to transaction hash
3623
3841
  */
3624
- async submitRevokePermission(permissionId) {
3842
+ async submitRevokePermission(permissionId, options) {
3843
+ this.assertWallet();
3625
3844
  try {
3626
3845
  const chainId = await this.context.walletClient.getChainId();
3627
3846
  const DataPortabilityPermissionsAddress = (0, import_addresses.getContractAddress)(
@@ -3631,18 +3850,36 @@ class PermissionsController {
3631
3850
  const DataPortabilityPermissionsAbi = (0, import_abi.getAbi)(
3632
3851
  "DataPortabilityPermissions"
3633
3852
  );
3853
+ const { account } = this.context.walletClient;
3854
+ if (!account) {
3855
+ throw new Error("No wallet account connected");
3856
+ }
3634
3857
  const hash = await this.context.walletClient.writeContract({
3635
3858
  address: DataPortabilityPermissionsAddress,
3636
3859
  abi: DataPortabilityPermissionsAbi,
3637
3860
  functionName: "revokePermission",
3638
3861
  args: [permissionId],
3639
- chain: this.context.walletClient.chain,
3640
- account: this.context.walletClient.account || null
3862
+ chain: this.context.walletClient?.chain,
3863
+ account,
3864
+ ...options?.gasLimit && { gas: options.gasLimit },
3865
+ ...options?.nonce && { nonce: options.nonce },
3866
+ // Use EIP-1559 if available, otherwise fall back to legacy gasPrice
3867
+ ...options?.maxFeePerGas || options?.maxPriorityFeePerGas ? {
3868
+ ...options.maxFeePerGas && {
3869
+ maxFeePerGas: options.maxFeePerGas
3870
+ },
3871
+ ...options.maxPriorityFeePerGas && {
3872
+ maxPriorityFeePerGas: options.maxPriorityFeePerGas
3873
+ }
3874
+ } : options?.gasPrice && { gasPrice: options.gasPrice }
3641
3875
  });
3642
- return {
3876
+ const { tx } = await import("../utils/transactionHelpers");
3877
+ return tx({
3643
3878
  hash,
3644
- from: this.context.walletClient.account?.address
3645
- };
3879
+ from: typeof account === "string" ? account : account.address,
3880
+ contract: "DataPortabilityPermissions",
3881
+ fn: "revokePermission"
3882
+ });
3646
3883
  } catch (error) {
3647
3884
  throw new import_errors.BlockchainError(
3648
3885
  `Failed to revoke permission: ${error instanceof Error ? error.message : "Unknown error"}`,
@@ -3658,6 +3895,7 @@ class PermissionsController {
3658
3895
  * @returns Promise resolving to the transaction hash
3659
3896
  */
3660
3897
  async submitDirectAddPermissionTransaction(typedData, signature) {
3898
+ this.assertWallet();
3661
3899
  const chainId = await this.context.walletClient.getChainId();
3662
3900
  const DataPortabilityPermissionsAddress = (0, import_addresses.getContractAddress)(
3663
3901
  chainId,
@@ -3668,7 +3906,7 @@ class PermissionsController {
3668
3906
  nonce: typedData.message.nonce,
3669
3907
  granteeId: typedData.message.granteeId,
3670
3908
  grant: typedData.message.grant,
3671
- fileIds: typedData.message.fileIds || []
3909
+ fileIds: typedData.message.fileIds ?? []
3672
3910
  };
3673
3911
  const formattedSignature = (0, import_signatureFormatter.formatSignatureForContract)(signature);
3674
3912
  const hash = await this.context.walletClient.writeContract({
@@ -3676,8 +3914,8 @@ class PermissionsController {
3676
3914
  abi: DataPortabilityPermissionsAbi,
3677
3915
  functionName: "addPermission",
3678
3916
  args: [permissionInput, formattedSignature],
3679
- account: this.context.walletClient.account || await this.getUserAddress(),
3680
- chain: this.context.walletClient.chain || null
3917
+ account: this.context.walletClient?.account ?? this.context.userAddress,
3918
+ chain: this.context.walletClient?.chain ?? null
3681
3919
  });
3682
3920
  return hash;
3683
3921
  }
@@ -3688,8 +3926,9 @@ class PermissionsController {
3688
3926
  * @param signature - The cryptographic signature authorizing the transaction
3689
3927
  * @returns Promise resolving to the transaction hash
3690
3928
  */
3691
- async submitDirectAddServerFilesAndPermissionsTransaction(typedData, signature) {
3692
- const chainId = await this.context.walletClient.getChainId();
3929
+ async submitDirectAddServerFilesAndPermissionsTransaction(typedData, signature, options) {
3930
+ this.assertWallet();
3931
+ const chainId = await this.context.publicClient.getChainId();
3693
3932
  const DataPortabilityPermissionsAddress = (0, import_addresses.getContractAddress)(
3694
3933
  chainId,
3695
3934
  "DataPortabilityPermissions"
@@ -3713,8 +3952,20 @@ class PermissionsController {
3713
3952
  functionName: "addServerFilesAndPermissions",
3714
3953
  // @ts-expect-error - Viem's type inference for nested Permission[][] arrays is incompatible with our Permission type
3715
3954
  args: [serverFilesAndPermissionInput, formattedSignature],
3716
- account: this.context.walletClient.account || await this.getUserAddress(),
3717
- chain: this.context.walletClient.chain || null
3955
+ account: this.context.walletClient?.account ?? this.context.userAddress,
3956
+ chain: this.context.walletClient?.chain ?? null,
3957
+ ...options?.gasLimit && { gas: options.gasLimit },
3958
+ ...options?.nonce && { nonce: options.nonce },
3959
+ ...options?.value && { value: options.value },
3960
+ // Use EIP-1559 if available, otherwise fall back to legacy gasPrice
3961
+ ...options?.maxFeePerGas || options?.maxPriorityFeePerGas ? {
3962
+ ...options.maxFeePerGas && {
3963
+ maxFeePerGas: options.maxFeePerGas
3964
+ },
3965
+ ...options.maxPriorityFeePerGas && {
3966
+ maxPriorityFeePerGas: options.maxPriorityFeePerGas
3967
+ }
3968
+ } : options?.gasPrice && { gasPrice: options.gasPrice }
3718
3969
  });
3719
3970
  return hash;
3720
3971
  }