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

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 (700) hide show
  1. package/dist/__tests__/waitForTransactionEvents.test.d.ts +1 -0
  2. package/dist/browser.cjs.map +1 -1
  3. package/dist/browser.d.ts +36 -2
  4. package/dist/browser.js.map +1 -1
  5. package/dist/chains/definitions.cjs +9 -6
  6. package/dist/chains/definitions.cjs.map +1 -1
  7. package/dist/chains/definitions.d.ts +9 -11
  8. package/dist/chains/definitions.js +9 -6
  9. package/dist/chains/definitions.js.map +1 -1
  10. package/dist/chains/index.cjs.map +1 -1
  11. package/dist/chains/index.d.ts +34 -2
  12. package/dist/chains/index.js.map +1 -1
  13. package/dist/chains.browser.d.ts +8 -2
  14. package/dist/chains.d.ts +8 -2
  15. package/dist/chains.node.d.ts +8 -2
  16. package/dist/config/addresses.d.ts +8 -45
  17. package/dist/config/chains.cjs.map +1 -1
  18. package/dist/config/chains.d.ts +108 -13
  19. package/dist/config/chains.js.map +1 -1
  20. package/dist/config/default-services.cjs +60 -0
  21. package/dist/config/default-services.cjs.map +1 -0
  22. package/dist/config/default-services.d.ts +46 -0
  23. package/dist/config/default-services.js +33 -0
  24. package/dist/config/default-services.js.map +1 -0
  25. package/dist/config/default-services.test.d.ts +1 -0
  26. package/dist/config/features.d.ts +1 -3
  27. package/dist/config/tests/addresses.test.d.ts +1 -0
  28. package/dist/contracts/contractController.cjs +3 -3
  29. package/dist/contracts/contractController.cjs.map +1 -1
  30. package/dist/contracts/contractController.d.ts +77 -59
  31. package/dist/contracts/contractController.js +4 -7
  32. package/dist/contracts/contractController.js.map +1 -1
  33. package/dist/contracts/tests/contractController.test.d.ts +1 -0
  34. package/dist/controllers/__tests__/data-consistency-integration.test.d.ts +7 -0
  35. package/dist/controllers/__tests__/schemas-edge-cases.test.d.ts +1 -0
  36. package/dist/controllers/base.cjs +116 -0
  37. package/dist/controllers/base.cjs.map +1 -0
  38. package/dist/controllers/base.d.ts +94 -0
  39. package/dist/controllers/base.js +92 -0
  40. package/dist/controllers/base.js.map +1 -0
  41. package/dist/controllers/data-error-handling.test.d.ts +1 -0
  42. package/dist/controllers/data.cjs +699 -373
  43. package/dist/controllers/data.cjs.map +1 -1
  44. package/dist/controllers/data.d.ts +368 -228
  45. package/dist/controllers/data.js +712 -376
  46. package/dist/controllers/data.js.map +1 -1
  47. package/dist/controllers/permissions.cjs +688 -489
  48. package/dist/controllers/permissions.cjs.map +1 -1
  49. package/dist/controllers/permissions.d.ts +98 -165
  50. package/dist/controllers/permissions.js +688 -489
  51. package/dist/controllers/permissions.js.map +1 -1
  52. package/dist/controllers/protocol.cjs +15 -11
  53. package/dist/controllers/protocol.cjs.map +1 -1
  54. package/dist/controllers/protocol.d.ts +34 -84
  55. package/dist/controllers/protocol.js +15 -14
  56. package/dist/controllers/protocol.js.map +1 -1
  57. package/dist/controllers/schemas.cjs +57 -52
  58. package/dist/controllers/schemas.cjs.map +1 -1
  59. package/dist/controllers/schemas.d.ts +55 -61
  60. package/dist/controllers/schemas.js +57 -52
  61. package/dist/controllers/schemas.js.map +1 -1
  62. package/dist/controllers/server-additional.test.d.ts +1 -0
  63. package/dist/controllers/server.cjs +32 -25
  64. package/dist/controllers/server.cjs.map +1 -1
  65. package/dist/controllers/server.d.ts +53 -58
  66. package/dist/controllers/server.js +32 -25
  67. package/dist/controllers/server.js.map +1 -1
  68. package/dist/core/apiClient.cjs +68 -15
  69. package/dist/core/apiClient.cjs.map +1 -1
  70. package/dist/core/apiClient.d.ts +137 -16
  71. package/dist/core/apiClient.js +72 -22
  72. package/dist/core/apiClient.js.map +1 -1
  73. package/dist/core/client.cjs +7 -7
  74. package/dist/core/client.cjs.map +1 -1
  75. package/dist/core/client.d.ts +6 -9
  76. package/dist/core/client.js +7 -7
  77. package/dist/core/client.js.map +1 -1
  78. package/dist/core/core.test.d.ts +1 -0
  79. package/dist/core/generics.cjs +41 -12
  80. package/dist/core/generics.cjs.map +1 -1
  81. package/dist/core/generics.d.ts +104 -19
  82. package/dist/core/generics.js +52 -32
  83. package/dist/core/generics.js.map +1 -1
  84. package/dist/core/tests/apiClient.test.d.ts +1 -0
  85. package/dist/core/tests/client.test.d.ts +1 -0
  86. package/dist/core/tests/generics.test.d.ts +1 -0
  87. package/dist/core.cjs +115 -47
  88. package/dist/core.cjs.map +1 -1
  89. package/dist/core.d.ts +24 -74
  90. package/dist/core.js +137 -72
  91. package/dist/core.js.map +1 -1
  92. package/dist/crypto/ecies/__tests__/base.test.d.ts +4 -0
  93. package/dist/crypto/ecies/__tests__/compatibility.test.d.ts +8 -0
  94. package/dist/crypto/ecies/__tests__/constants.test.d.ts +4 -0
  95. package/dist/crypto/ecies/__tests__/native-parity.test.d.ts +7 -0
  96. package/dist/crypto/ecies/__tests__/normalization.test.d.ts +1 -0
  97. package/dist/crypto/ecies/__tests__/test-vectors.d.ts +2 -4
  98. package/dist/crypto/ecies/base.cjs +4 -3
  99. package/dist/crypto/ecies/base.cjs.map +1 -1
  100. package/dist/crypto/ecies/base.d.ts +2 -5
  101. package/dist/crypto/ecies/base.js +12 -15
  102. package/dist/crypto/ecies/base.js.map +1 -1
  103. package/dist/crypto/ecies/browser.cjs +2 -1
  104. package/dist/crypto/ecies/browser.cjs.map +1 -1
  105. package/dist/crypto/ecies/browser.d.ts +2 -7
  106. package/dist/crypto/ecies/browser.js +2 -1
  107. package/dist/crypto/ecies/browser.js.map +1 -1
  108. package/dist/crypto/ecies/constants.d.ts +7 -9
  109. package/dist/crypto/ecies/index.d.ts +8 -1
  110. package/dist/crypto/ecies/interface.cjs +4 -5
  111. package/dist/crypto/ecies/interface.cjs.map +1 -1
  112. package/dist/crypto/ecies/interface.d.ts +9 -11
  113. package/dist/crypto/ecies/interface.js +4 -5
  114. package/dist/crypto/ecies/interface.js.map +1 -1
  115. package/dist/crypto/ecies/node.cjs +3 -2
  116. package/dist/crypto/ecies/node.cjs.map +1 -1
  117. package/dist/crypto/ecies/node.d.ts +2 -7
  118. package/dist/crypto/ecies/node.js +11 -16
  119. package/dist/crypto/ecies/node.js.map +1 -1
  120. package/dist/crypto/ecies/utils.cjs +2 -41
  121. package/dist/crypto/ecies/utils.cjs.map +1 -1
  122. package/dist/crypto/ecies/utils.d.ts +3 -40
  123. package/dist/crypto/ecies/utils.js +1 -35
  124. package/dist/crypto/ecies/utils.js.map +1 -1
  125. package/dist/crypto/services/WalletKeyEncryptionService.cjs +2 -2
  126. package/dist/crypto/services/WalletKeyEncryptionService.cjs.map +1 -1
  127. package/dist/crypto/services/WalletKeyEncryptionService.d.ts +3 -7
  128. package/dist/crypto/services/WalletKeyEncryptionService.js +5 -9
  129. package/dist/crypto/services/WalletKeyEncryptionService.js.map +1 -1
  130. package/dist/crypto/services/WalletKeyEncryptionService.test.d.ts +1 -0
  131. package/dist/diagnostics.d.ts +1 -3
  132. package/dist/diagnostics.test.d.ts +1 -0
  133. package/dist/errors.cjs +16 -0
  134. package/dist/errors.cjs.map +1 -1
  135. package/dist/errors.d.ts +53 -15
  136. package/dist/errors.js +18 -6
  137. package/dist/errors.js.map +1 -1
  138. package/dist/generated/abi/ComputeEngineImplementation.d.ts +2 -3
  139. package/dist/generated/abi/ComputeInstructionRegistryImplementation.cjs.map +1 -1
  140. package/dist/generated/abi/ComputeInstructionRegistryImplementation.d.ts +2 -3
  141. package/dist/generated/abi/ComputeInstructionRegistryImplementation.js.map +1 -1
  142. package/dist/generated/abi/DATFactoryImplementation.d.ts +2 -3
  143. package/dist/generated/abi/DATImplementation.d.ts +2 -3
  144. package/dist/generated/abi/DATPausableImplementation.d.ts +2 -3
  145. package/dist/generated/abi/DATVotesImplementation.d.ts +2 -3
  146. package/dist/generated/abi/DLPPerformanceImplementation.d.ts +2 -3
  147. package/dist/generated/abi/DLPRegistryImplementation.d.ts +2 -3
  148. package/dist/generated/abi/DLPRegistryTreasuryImplementation.d.ts +2 -3
  149. package/dist/generated/abi/DLPRewardDeployerImplementation.d.ts +2 -3
  150. package/dist/generated/abi/DLPRewardDeployerTreasuryImplementation.d.ts +2 -3
  151. package/dist/generated/abi/DLPRewardSwapImplementation.d.ts +2 -3
  152. package/dist/generated/abi/DLPRootImplementation.d.ts +1 -3
  153. package/dist/generated/abi/DLPTreasuryImplementation.d.ts +2 -3
  154. package/dist/generated/abi/DataLiquidityPoolImplementation.d.ts +1 -3
  155. package/dist/generated/abi/DataPortabilityGranteesImplementation.d.ts +2 -3
  156. package/dist/generated/abi/DataPortabilityPermissionsImplementation.cjs.map +1 -1
  157. package/dist/generated/abi/DataPortabilityPermissionsImplementation.d.ts +2 -3
  158. package/dist/generated/abi/DataPortabilityPermissionsImplementation.js.map +1 -1
  159. package/dist/generated/abi/DataPortabilityServersImplementation.cjs.map +1 -1
  160. package/dist/generated/abi/DataPortabilityServersImplementation.d.ts +2 -3
  161. package/dist/generated/abi/DataPortabilityServersImplementation.js.map +1 -1
  162. package/dist/generated/abi/DataRefinerRegistryImplementation.d.ts +2 -3
  163. package/dist/generated/abi/DataRegistryImplementation.d.ts +2 -3
  164. package/dist/generated/abi/QueryEngineImplementation.d.ts +2 -3
  165. package/dist/generated/abi/SwapHelperImplementation.d.ts +2 -3
  166. package/dist/generated/abi/TeePoolDedicatedGpuImplementation.d.ts +2 -3
  167. package/dist/generated/abi/TeePoolDedicatedStandardImplementation.d.ts +2 -3
  168. package/dist/generated/abi/TeePoolEphemeralStandardImplementation.d.ts +2 -3
  169. package/dist/generated/abi/TeePoolImplementation.d.ts +2 -3
  170. package/dist/generated/abi/TeePoolPersistentGpuImplementation.d.ts +2 -3
  171. package/dist/generated/abi/TeePoolPersistentStandardImplementation.d.ts +2 -3
  172. package/dist/generated/abi/TeePoolPhalaImplementation.d.ts +2 -3
  173. package/dist/generated/abi/VanaEpochImplementation.d.ts +2 -3
  174. package/dist/generated/abi/VanaPoolEntityImplementation.d.ts +2 -3
  175. package/dist/generated/abi/VanaPoolStakingImplementation.d.ts +2 -3
  176. package/dist/generated/abi/VanaPoolTreasuryImplementation.d.ts +2 -3
  177. package/dist/generated/abi/index.d.ts +37 -39
  178. package/dist/generated/event-types.d.ts +9 -10
  179. package/dist/generated/eventRegistry.d.ts +3 -7
  180. package/dist/generated/server/server-exports.d.ts +19 -21
  181. package/dist/generated/server/server.cjs.map +1 -1
  182. package/dist/generated/server/server.d.ts +113 -87
  183. package/dist/generated/subgraph.cjs +797 -32
  184. package/dist/generated/subgraph.cjs.map +1 -1
  185. package/dist/generated/subgraph.d.ts +464 -332
  186. package/dist/generated/subgraph.js +792 -32
  187. package/dist/generated/subgraph.js.map +1 -1
  188. package/dist/index.browser.d.ts +47 -96
  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 +14 -3
  197. package/dist/index.node.cjs.map +1 -1
  198. package/dist/index.node.d.ts +203 -87
  199. package/dist/index.node.js +14 -2
  200. package/dist/index.node.js.map +1 -1
  201. package/dist/node.cjs.map +1 -1
  202. package/dist/node.d.ts +42 -2
  203. package/dist/node.js.map +1 -1
  204. package/dist/platform/browser-only.d.ts +5 -8
  205. package/dist/platform/browser-only.test.d.ts +1 -0
  206. package/dist/platform/browser-safe.d.ts +6 -9
  207. package/dist/platform/browser-safe.test.d.ts +1 -0
  208. package/dist/platform/browser.cjs +167 -8
  209. package/dist/platform/browser.cjs.map +1 -1
  210. package/dist/platform/browser.d.ts +235 -18
  211. package/dist/platform/browser.js +179 -29
  212. package/dist/platform/browser.js.map +1 -1
  213. package/dist/platform/browser.test.d.ts +1 -0
  214. package/dist/platform/index.d.ts +11 -5
  215. package/dist/platform/interface.cjs.map +1 -1
  216. package/dist/platform/interface.d.ts +289 -98
  217. package/dist/platform/node.cjs +163 -2
  218. package/dist/platform/node.cjs.map +1 -1
  219. package/dist/platform/node.d.ts +72 -13
  220. package/dist/platform/node.js +175 -21
  221. package/dist/platform/node.js.map +1 -1
  222. package/dist/platform/ports/openpgp-port.cjs +74 -0
  223. package/dist/platform/ports/openpgp-port.cjs.map +1 -0
  224. package/dist/platform/ports/openpgp-port.d.ts +13 -0
  225. package/dist/platform/ports/openpgp-port.js +59 -0
  226. package/dist/platform/ports/openpgp-port.js.map +1 -0
  227. package/dist/platform/ports/pgp-port.cjs +17 -0
  228. package/dist/platform/ports/pgp-port.cjs.map +1 -0
  229. package/dist/platform/ports/pgp-port.d.ts +35 -0
  230. package/dist/platform/ports/pgp-port.js +1 -0
  231. package/dist/platform/ports/pgp-port.js.map +1 -0
  232. package/dist/platform/shared/error-utils.d.ts +2 -4
  233. package/dist/platform/shared/pgp-utils.cjs +2 -2
  234. package/dist/platform/shared/pgp-utils.cjs.map +1 -1
  235. package/dist/platform/shared/pgp-utils.d.ts +3 -5
  236. package/dist/platform/shared/pgp-utils.js +2 -2
  237. package/dist/platform/shared/pgp-utils.js.map +1 -1
  238. package/dist/platform/shared/stream-utils.d.ts +1 -3
  239. package/dist/platform/utils.d.ts +6 -10
  240. package/dist/platform/utils.test.d.ts +1 -0
  241. package/dist/platform.browser.d.ts +9 -4
  242. package/dist/platform.d.ts +11 -5
  243. package/dist/platform.node.d.ts +10 -5
  244. package/dist/server/relayerHandler.cjs +337 -0
  245. package/dist/server/relayerHandler.cjs.map +1 -0
  246. package/dist/server/relayerHandler.d.ts +38 -0
  247. package/dist/server/relayerHandler.js +313 -0
  248. package/dist/server/relayerHandler.js.map +1 -0
  249. package/dist/storage/index.d.ts +56 -10
  250. package/dist/storage/manager.cjs +110 -27
  251. package/dist/storage/manager.cjs.map +1 -1
  252. package/dist/storage/manager.d.ts +121 -30
  253. package/dist/storage/manager.js +113 -37
  254. package/dist/storage/manager.js.map +1 -1
  255. package/dist/storage/providers/callback-storage.cjs +89 -18
  256. package/dist/storage/providers/callback-storage.cjs.map +1 -1
  257. package/dist/storage/providers/callback-storage.d.ts +111 -28
  258. package/dist/storage/providers/callback-storage.js +89 -18
  259. package/dist/storage/providers/callback-storage.js.map +1 -1
  260. package/dist/storage/providers/google-drive.cjs +2 -2
  261. package/dist/storage/providers/google-drive.cjs.map +1 -1
  262. package/dist/storage/providers/google-drive.d.ts +3 -7
  263. package/dist/storage/providers/google-drive.js +4 -7
  264. package/dist/storage/providers/google-drive.js.map +1 -1
  265. package/dist/storage/providers/google-drive.test.d.ts +1 -0
  266. package/dist/storage/providers/ipfs.cjs +5 -5
  267. package/dist/storage/providers/ipfs.cjs.map +1 -1
  268. package/dist/storage/providers/ipfs.d.ts +3 -6
  269. package/dist/storage/providers/ipfs.js +7 -10
  270. package/dist/storage/providers/ipfs.js.map +1 -1
  271. package/dist/storage/providers/pinata.cjs +6 -6
  272. package/dist/storage/providers/pinata.cjs.map +1 -1
  273. package/dist/storage/providers/pinata.d.ts +17 -22
  274. package/dist/storage/providers/pinata.js +8 -11
  275. package/dist/storage/providers/pinata.js.map +1 -1
  276. package/dist/storage/tests/callbackStorage.test.d.ts +1 -0
  277. package/dist/storage/tests/googleDriveStorage.test.d.ts +1 -0
  278. package/dist/storage/tests/ipfsStorage.test.d.ts +1 -0
  279. package/dist/storage/tests/pinataStorage.test.d.ts +1 -0
  280. package/dist/storage/tests/storageManager.test.d.ts +1 -0
  281. package/dist/tests/abi.test.d.ts +1 -0
  282. package/dist/tests/chains-definitions.test.d.ts +1 -0
  283. package/dist/tests/core-encryption.test.d.ts +1 -0
  284. package/dist/tests/core-extended.test.d.ts +1 -0
  285. package/dist/tests/core-generics-coverage.test.d.ts +1 -0
  286. package/dist/tests/coverage-boost.test.d.ts +1 -0
  287. package/dist/tests/crypto-cross-platform-compatibility.test.d.ts +1 -0
  288. package/dist/tests/data-addfile-permissions-schema.test.d.ts +1 -0
  289. package/dist/tests/data-additional-methods.test.d.ts +1 -0
  290. package/dist/tests/data-controller-edge-cases.test.d.ts +1 -0
  291. package/dist/tests/data-ipfs-gateways.test.d.ts +1 -0
  292. package/dist/tests/data-relayer.test.d.ts +1 -0
  293. package/dist/tests/data-schema-validation.test.d.ts +1 -0
  294. package/dist/tests/data-simple-methods.test.d.ts +1 -0
  295. package/dist/tests/data.test.d.ts +1 -0
  296. package/dist/tests/demo-integration.test.d.ts +1 -0
  297. package/dist/tests/demo-trusted-server-integration.test.d.ts +1 -0
  298. package/dist/tests/download-relayer.test.d.ts +1 -0
  299. package/dist/tests/dual-mode-permissions.test.d.ts +1 -0
  300. package/dist/tests/dual-mode-trusted-servers.test.d.ts +1 -0
  301. package/dist/tests/encryption-correct-implementation.test.d.ts +1 -0
  302. package/dist/tests/encryption-coverage.test.d.ts +1 -0
  303. package/dist/tests/encryption-edge-cases.test.d.ts +1 -0
  304. package/dist/tests/encryption-utils-updated.test.d.ts +1 -0
  305. package/dist/tests/errors-coverage.test.d.ts +1 -0
  306. package/dist/tests/errors.test.d.ts +1 -0
  307. package/dist/tests/factories/mockFactory.d.ts +316 -0
  308. package/dist/tests/fakes/FakeStorageManager.d.ts +200 -0
  309. package/dist/tests/fakes/FakeStorageManager.test.d.ts +1 -0
  310. package/dist/tests/fakes/FakeWaitForTransactionEvents.d.ts +170 -0
  311. package/dist/tests/fakes/FakeWaitForTransactionEvents.test.d.ts +1 -0
  312. package/dist/tests/fakes/fake-pgp-port.d.ts +13 -0
  313. package/dist/tests/grantValidation-edge-cases.test.d.ts +1 -0
  314. package/dist/tests/grantValidation-unreachable-branch.test.d.ts +1 -0
  315. package/dist/tests/helper-methods.test.d.ts +1 -0
  316. package/dist/tests/helpers/platformTestHelpers.d.ts +106 -0
  317. package/dist/tests/helpers/typedMocks.d.ts +64 -0
  318. package/dist/tests/index-browser.test.d.ts +1 -0
  319. package/dist/tests/index-node.test.d.ts +1 -0
  320. package/dist/tests/index.test.d.ts +1 -0
  321. package/dist/tests/mocks/platformAdapter.d.ts +12 -0
  322. package/dist/tests/new-permissions-methods.test.d.ts +1 -0
  323. package/dist/tests/no-buffer-browser.test.d.ts +1 -0
  324. package/dist/tests/permissions-grantee.test.d.ts +1 -0
  325. package/dist/tests/permissions-revoke-relayer.test.d.ts +1 -0
  326. package/dist/tests/permissions-schema-validation.test.d.ts +1 -0
  327. package/dist/tests/permissions-server-files.test.d.ts +1 -0
  328. package/dist/tests/permissions-transaction-options.test.d.ts +1 -0
  329. package/dist/tests/permissions-trust-servers.test.d.ts +1 -0
  330. package/dist/tests/permissions.test.d.ts +1 -0
  331. package/dist/tests/personal.test.d.ts +1 -0
  332. package/dist/tests/platform-browser.test.d.ts +1 -0
  333. package/dist/tests/platform-crypto-expanded.test.d.ts +1 -0
  334. package/dist/tests/platform-crypto.test.d.ts +1 -0
  335. package/dist/tests/platform-index.test.d.ts +1 -0
  336. package/dist/tests/platform-node.test.d.ts +1 -0
  337. package/dist/tests/platform-shared-utils.test.d.ts +1 -0
  338. package/dist/tests/platform-updated.test.d.ts +1 -0
  339. package/dist/tests/protocol-additional-methods.test.d.ts +1 -0
  340. package/dist/tests/protocol.test.d.ts +1 -0
  341. package/dist/tests/read-only-mode.test.d.ts +1 -0
  342. package/dist/tests/relayer-integration.test.d.ts +1 -0
  343. package/dist/tests/relayer-unified.test.d.ts +1 -0
  344. package/dist/tests/schemas.test.d.ts +1 -0
  345. package/dist/tests/server-relayer-handler.test.d.ts +1 -0
  346. package/dist/tests/setup.d.ts +7 -0
  347. package/dist/tests/signatureFormatter.test.d.ts +1 -0
  348. package/dist/tests/trusted-server-queries.test.d.ts +1 -0
  349. package/dist/tests/typedDataConverter.test.d.ts +1 -0
  350. package/dist/tests/types-contracts.test.d.ts +1 -0
  351. package/dist/tests/types-data.test.d.ts +1 -0
  352. package/dist/tests/types-external-apis.test.d.ts +1 -0
  353. package/dist/tests/types-generics.test.d.ts +1 -0
  354. package/dist/tests/types-permissions.test.d.ts +1 -0
  355. package/dist/tests/types-upload-params.test.d.ts +1 -0
  356. package/dist/tests/types.test.d.ts +1 -0
  357. package/dist/tests/utils-formatters.test.d.ts +1 -0
  358. package/dist/tests/utils-grantFiles-edge-cases.test.d.ts +1 -0
  359. package/dist/tests/utils-grantFiles-validation.test.d.ts +1 -0
  360. package/dist/tests/utils-grantFiles.test.d.ts +1 -0
  361. package/dist/tests/utils-grantValidation-consolidated.test.d.ts +1 -0
  362. package/dist/tests/utils-grants.test.d.ts +1 -0
  363. package/dist/tests/utils-ipfs-additional.test.d.ts +1 -0
  364. package/dist/tests/utils-ipfs.test.d.ts +4 -0
  365. package/dist/tests/utils-schemaValidation.test.d.ts +1 -0
  366. package/dist/tests/vana.test.d.ts +1 -0
  367. package/dist/tests/wallet-crypto-compatibility.test.d.ts +1 -0
  368. package/dist/types/blockchain.cjs.map +1 -1
  369. package/dist/types/blockchain.d.ts +46 -13
  370. package/dist/types/chains-additional.test.d.ts +1 -0
  371. package/dist/types/chains.cjs.map +1 -1
  372. package/dist/types/chains.d.ts +80 -16
  373. package/dist/types/chains.js.map +1 -1
  374. package/dist/types/config.cjs +10 -0
  375. package/dist/types/config.cjs.map +1 -1
  376. package/dist/types/config.d.ts +236 -242
  377. package/dist/types/config.js +8 -0
  378. package/dist/types/config.js.map +1 -1
  379. package/dist/types/contracts.cjs.map +1 -1
  380. package/dist/types/contracts.d.ts +79 -18
  381. package/dist/types/controller-context.cjs.map +1 -1
  382. package/dist/types/controller-context.d.ts +17 -21
  383. package/dist/types/data.cjs.map +1 -1
  384. package/dist/types/data.d.ts +111 -49
  385. package/dist/types/external-apis.d.ts +10 -12
  386. package/dist/types/generics.cjs.map +1 -1
  387. package/dist/types/generics.d.ts +116 -48
  388. package/dist/types/index.cjs +5 -4
  389. package/dist/types/index.cjs.map +1 -1
  390. package/dist/types/index.d.ts +47 -22
  391. package/dist/types/index.js +9 -2
  392. package/dist/types/index.js.map +1 -1
  393. package/dist/types/operations.cjs +2 -2
  394. package/dist/types/operations.cjs.map +1 -1
  395. package/dist/types/operations.d.ts +178 -32
  396. package/dist/types/operations.js +2 -2
  397. package/dist/types/operations.js.map +1 -1
  398. package/dist/types/options.cjs +17 -0
  399. package/dist/types/options.cjs.map +1 -0
  400. package/dist/types/options.d.ts +213 -0
  401. package/dist/types/options.js +1 -0
  402. package/dist/types/options.js.map +1 -0
  403. package/dist/types/permissions.cjs.map +1 -1
  404. package/dist/types/permissions.d.ts +72 -78
  405. package/dist/types/personal.cjs.map +1 -1
  406. package/dist/types/personal.d.ts +137 -22
  407. package/dist/types/relayer.cjs.map +1 -1
  408. package/dist/types/relayer.d.ts +293 -50
  409. package/dist/types/storage.cjs.map +1 -1
  410. package/dist/types/storage.d.ts +15 -29
  411. package/dist/types/storage.js +2 -5
  412. package/dist/types/storage.js.map +1 -1
  413. package/dist/types/transactionResults.d.ts +16 -18
  414. package/dist/types/utils.cjs.map +1 -1
  415. package/dist/types/utils.d.ts +20 -68
  416. package/dist/types.d.ts +4 -28
  417. package/dist/utils/__tests__/parseTransaction.test.d.ts +1 -0
  418. package/dist/utils/__tests__/pojo-serialization.test.d.ts +1 -0
  419. package/dist/utils/__tests__/signatureCache.test.d.ts +1 -0
  420. package/dist/utils/__tests__/subgraphConsistency.test.d.ts +4 -0
  421. package/dist/utils/__tests__/subgraphPagination.test.d.ts +4 -0
  422. package/dist/utils/__tests__/transaction-edge-cases.test.d.ts +1 -0
  423. package/dist/utils/__tests__/transactionHelpers.test.d.ts +1 -0
  424. package/dist/utils/__tests__/urlResolver.test.d.ts +4 -0
  425. package/dist/utils/blockchain/registry.cjs +2 -2
  426. package/dist/utils/blockchain/registry.cjs.map +1 -1
  427. package/dist/utils/blockchain/registry.d.ts +6 -8
  428. package/dist/utils/blockchain/registry.js +2 -2
  429. package/dist/utils/blockchain/registry.js.map +1 -1
  430. package/dist/utils/blockchain/registry.test.d.ts +1 -0
  431. package/dist/utils/chainQuery.cjs +107 -0
  432. package/dist/utils/chainQuery.cjs.map +1 -0
  433. package/dist/utils/chainQuery.d.ts +31 -0
  434. package/dist/utils/chainQuery.js +82 -0
  435. package/dist/utils/chainQuery.js.map +1 -0
  436. package/dist/utils/crypto-utils.cjs +0 -12
  437. package/dist/utils/crypto-utils.cjs.map +1 -1
  438. package/dist/utils/crypto-utils.d.ts +9 -27
  439. package/dist/utils/crypto-utils.js +0 -11
  440. package/dist/utils/crypto-utils.js.map +1 -1
  441. package/dist/utils/crypto-utils.test.d.ts +1 -0
  442. package/dist/utils/download.cjs +3 -3
  443. package/dist/utils/download.cjs.map +1 -1
  444. package/dist/utils/download.d.ts +13 -14
  445. package/dist/utils/download.js +2 -2
  446. package/dist/utils/download.js.map +1 -1
  447. package/dist/utils/encoding.cjs +1 -1
  448. package/dist/utils/encoding.cjs.map +1 -1
  449. package/dist/utils/encoding.d.ts +4 -6
  450. package/dist/utils/encoding.js +1 -1
  451. package/dist/utils/encoding.js.map +1 -1
  452. package/dist/utils/encoding.test.d.ts +1 -0
  453. package/dist/utils/encryption.cjs +16 -10
  454. package/dist/utils/encryption.cjs.map +1 -1
  455. package/dist/utils/encryption.d.ts +13 -17
  456. package/dist/utils/encryption.js +16 -10
  457. package/dist/utils/encryption.js.map +1 -1
  458. package/dist/utils/formatters.cjs +4 -2
  459. package/dist/utils/formatters.cjs.map +1 -1
  460. package/dist/utils/formatters.d.ts +4 -6
  461. package/dist/utils/formatters.js +4 -2
  462. package/dist/utils/formatters.js.map +1 -1
  463. package/dist/utils/grantFiles.cjs +7 -4
  464. package/dist/utils/grantFiles.cjs.map +1 -1
  465. package/dist/utils/grantFiles.d.ts +16 -30
  466. package/dist/utils/grantFiles.js +7 -4
  467. package/dist/utils/grantFiles.js.map +1 -1
  468. package/dist/utils/grantValidation.cjs +1 -1
  469. package/dist/utils/grantValidation.cjs.map +1 -1
  470. package/dist/utils/grantValidation.d.ts +109 -33
  471. package/dist/utils/grantValidation.js +1 -1
  472. package/dist/utils/grantValidation.js.map +1 -1
  473. package/dist/utils/grants.cjs +1 -1
  474. package/dist/utils/grants.cjs.map +1 -1
  475. package/dist/utils/grants.d.ts +101 -23
  476. package/dist/utils/grants.js +1 -1
  477. package/dist/utils/grants.js.map +1 -1
  478. package/dist/utils/ipfs.cjs +2 -4
  479. package/dist/utils/ipfs.cjs.map +1 -1
  480. package/dist/utils/ipfs.d.ts +8 -10
  481. package/dist/utils/ipfs.js +2 -4
  482. package/dist/utils/ipfs.js.map +1 -1
  483. package/dist/utils/lazy-import.cjs +4 -6
  484. package/dist/utils/lazy-import.cjs.map +1 -1
  485. package/dist/utils/lazy-import.d.ts +33 -10
  486. package/dist/utils/lazy-import.js +4 -6
  487. package/dist/utils/lazy-import.js.map +1 -1
  488. package/dist/utils/multicall.cjs +4 -2
  489. package/dist/utils/multicall.cjs.map +1 -1
  490. package/dist/utils/multicall.d.ts +5 -8
  491. package/dist/utils/multicall.js +4 -2
  492. package/dist/utils/multicall.js.map +1 -1
  493. package/dist/utils/parseTransactionPojo.cjs.map +1 -1
  494. package/dist/utils/parseTransactionPojo.d.ts +4 -10
  495. package/dist/utils/parseTransactionPojo.js.map +1 -1
  496. package/dist/utils/schemaValidation.cjs +5 -5
  497. package/dist/utils/schemaValidation.cjs.map +1 -1
  498. package/dist/utils/schemaValidation.d.ts +8 -12
  499. package/dist/utils/schemaValidation.js +7 -10
  500. package/dist/utils/schemaValidation.js.map +1 -1
  501. package/dist/utils/signatureCache.cjs +9 -4
  502. package/dist/utils/signatureCache.cjs.map +1 -1
  503. package/dist/utils/signatureCache.d.ts +53 -15
  504. package/dist/utils/signatureCache.js +12 -10
  505. package/dist/utils/signatureCache.js.map +1 -1
  506. package/dist/utils/signatureFormatter.cjs +6 -9
  507. package/dist/utils/signatureFormatter.cjs.map +1 -1
  508. package/dist/utils/signatureFormatter.d.ts +2 -5
  509. package/dist/utils/signatureFormatter.js +6 -9
  510. package/dist/utils/signatureFormatter.js.map +1 -1
  511. package/dist/utils/subgraphConsistency.cjs +184 -0
  512. package/dist/utils/subgraphConsistency.cjs.map +1 -0
  513. package/dist/utils/subgraphConsistency.d.ts +65 -0
  514. package/dist/utils/subgraphConsistency.js +155 -0
  515. package/dist/utils/subgraphConsistency.js.map +1 -0
  516. package/dist/utils/subgraphMetaCache.cjs +101 -0
  517. package/dist/utils/subgraphMetaCache.cjs.map +1 -0
  518. package/dist/utils/subgraphMetaCache.d.ts +56 -0
  519. package/dist/utils/subgraphMetaCache.js +76 -0
  520. package/dist/utils/subgraphMetaCache.js.map +1 -0
  521. package/dist/utils/subgraphPagination.cjs +104 -0
  522. package/dist/utils/subgraphPagination.cjs.map +1 -0
  523. package/dist/utils/subgraphPagination.d.ts +78 -0
  524. package/dist/utils/subgraphPagination.js +78 -0
  525. package/dist/utils/subgraphPagination.js.map +1 -0
  526. package/dist/utils/tests/multicall.test.d.ts +1 -0
  527. package/dist/utils/transactionHelpers.cjs.map +1 -1
  528. package/dist/utils/transactionHelpers.d.ts +17 -23
  529. package/dist/utils/transactionHelpers.js.map +1 -1
  530. package/dist/utils/typeGuards.cjs +109 -0
  531. package/dist/utils/typeGuards.cjs.map +1 -0
  532. package/dist/utils/typeGuards.d.ts +138 -0
  533. package/dist/utils/typeGuards.js +74 -0
  534. package/dist/utils/typeGuards.js.map +1 -0
  535. package/dist/utils/typedDataConverter.cjs.map +1 -1
  536. package/dist/utils/typedDataConverter.d.ts +42 -9
  537. package/dist/utils/typedDataConverter.js.map +1 -1
  538. package/dist/utils/urlResolver.cjs +8 -1
  539. package/dist/utils/urlResolver.cjs.map +1 -1
  540. package/dist/utils/urlResolver.d.ts +24 -8
  541. package/dist/utils/urlResolver.js +9 -2
  542. package/dist/utils/urlResolver.js.map +1 -1
  543. package/dist/utils/wallet.cjs +63 -0
  544. package/dist/utils/wallet.cjs.map +1 -0
  545. package/dist/utils/wallet.d.ts +94 -0
  546. package/dist/utils/wallet.js +37 -0
  547. package/dist/utils/wallet.js.map +1 -0
  548. package/dist/utils/withEvents.cjs.map +1 -1
  549. package/dist/utils/withEvents.d.ts +5 -12
  550. package/dist/utils/withEvents.js.map +1 -1
  551. package/package.json +24 -16
  552. package/dist/browser.d.cts +0 -2
  553. package/dist/chains/definitions.d.cts +0 -53
  554. package/dist/chains/index.d.cts +0 -2
  555. package/dist/chains.browser.cjs +0 -37
  556. package/dist/chains.browser.cjs.map +0 -1
  557. package/dist/chains.browser.d.cts +0 -2
  558. package/dist/chains.d.cts +0 -2
  559. package/dist/chains.node.d.cts +0 -2
  560. package/dist/config/addresses.d.cts +0 -401
  561. package/dist/config/chains.d.cts +0 -85
  562. package/dist/config/features.d.cts +0 -64
  563. package/dist/contracts/contractController.d.cts +0 -117
  564. package/dist/controllers/data.d.cts +0 -915
  565. package/dist/controllers/permissions.d.cts +0 -1383
  566. package/dist/controllers/protocol.d.cts +0 -188
  567. package/dist/controllers/schemas.d.cts +0 -260
  568. package/dist/controllers/server.d.cts +0 -230
  569. package/dist/core/apiClient.d.cts +0 -165
  570. package/dist/core/client.d.cts +0 -92
  571. package/dist/core/generics.d.cts +0 -120
  572. package/dist/core.d.cts +0 -493
  573. package/dist/crypto/ecies/__tests__/test-vectors.d.cts +0 -40
  574. package/dist/crypto/ecies/base.d.cts +0 -143
  575. package/dist/crypto/ecies/browser.d.cts +0 -48
  576. package/dist/crypto/ecies/constants.d.cts +0 -122
  577. package/dist/crypto/ecies/index.d.cts +0 -1
  578. package/dist/crypto/ecies/interface.d.cts +0 -176
  579. package/dist/crypto/ecies/node.d.cts +0 -50
  580. package/dist/crypto/ecies/test-vectors/eccrypto-vectors.d.cts +0 -76
  581. package/dist/crypto/ecies/test-vectors/eccrypto-vectors.d.ts +0 -76
  582. package/dist/crypto/ecies/utils.d.cts +0 -67
  583. package/dist/crypto/services/WalletKeyEncryptionService.d.cts +0 -92
  584. package/dist/diagnostics.d.cts +0 -26
  585. package/dist/errors.d.cts +0 -350
  586. package/dist/generated/abi/ComputeEngineImplementation.d.cts +0 -996
  587. package/dist/generated/abi/ComputeInstructionRegistryImplementation.d.cts +0 -545
  588. package/dist/generated/abi/DATFactoryImplementation.d.cts +0 -661
  589. package/dist/generated/abi/DATImplementation.d.cts +0 -693
  590. package/dist/generated/abi/DATPausableImplementation.d.cts +0 -1145
  591. package/dist/generated/abi/DATVotesImplementation.d.cts +0 -1095
  592. package/dist/generated/abi/DLPPerformanceImplementation.d.cts +0 -883
  593. package/dist/generated/abi/DLPRegistryImplementation.d.cts +0 -1123
  594. package/dist/generated/abi/DLPRegistryTreasuryImplementation.d.cts +0 -452
  595. package/dist/generated/abi/DLPRewardDeployerImplementation.d.cts +0 -714
  596. package/dist/generated/abi/DLPRewardDeployerTreasuryImplementation.d.cts +0 -452
  597. package/dist/generated/abi/DLPRewardSwapImplementation.d.cts +0 -706
  598. package/dist/generated/abi/DLPRootImplementation.d.cts +0 -1248
  599. package/dist/generated/abi/DLPTreasuryImplementation.d.cts +0 -452
  600. package/dist/generated/abi/DataLiquidityPoolImplementation.d.cts +0 -737
  601. package/dist/generated/abi/DataPortabilityGranteesImplementation.d.cts +0 -661
  602. package/dist/generated/abi/DataPortabilityPermissionsImplementation.d.cts +0 -989
  603. package/dist/generated/abi/DataPortabilityServersImplementation.d.cts +0 -1086
  604. package/dist/generated/abi/DataRefinerRegistryImplementation.d.cts +0 -737
  605. package/dist/generated/abi/DataRegistryImplementation.d.cts +0 -1014
  606. package/dist/generated/abi/QueryEngineImplementation.d.cts +0 -1001
  607. package/dist/generated/abi/SwapHelperImplementation.d.cts +0 -764
  608. package/dist/generated/abi/TeePoolDedicatedGpuImplementation.d.cts +0 -701
  609. package/dist/generated/abi/TeePoolDedicatedStandardImplementation.d.cts +0 -701
  610. package/dist/generated/abi/TeePoolEphemeralStandardImplementation.d.cts +0 -701
  611. package/dist/generated/abi/TeePoolImplementation.d.cts +0 -993
  612. package/dist/generated/abi/TeePoolPersistentGpuImplementation.d.cts +0 -701
  613. package/dist/generated/abi/TeePoolPersistentStandardImplementation.d.cts +0 -701
  614. package/dist/generated/abi/TeePoolPhalaImplementation.d.cts +0 -993
  615. package/dist/generated/abi/VanaEpochImplementation.d.cts +0 -900
  616. package/dist/generated/abi/VanaPoolEntityImplementation.d.cts +0 -934
  617. package/dist/generated/abi/VanaPoolStakingImplementation.d.cts +0 -693
  618. package/dist/generated/abi/VanaPoolTreasuryImplementation.d.cts +0 -394
  619. package/dist/generated/abi/index.d.cts +0 -26547
  620. package/dist/generated/event-types.d.cts +0 -855
  621. package/dist/generated/eventRegistry.d.cts +0 -18
  622. package/dist/generated/server/server-exports.d.cts +0 -21
  623. package/dist/generated/server/server.d.cts +0 -512
  624. package/dist/generated/subgraph.d.cts +0 -5981
  625. package/dist/index.browser.cjs +0 -151
  626. package/dist/index.browser.cjs.map +0 -1
  627. package/dist/index.browser.d.cts +0 -201
  628. package/dist/index.d.cts +0 -2
  629. package/dist/index.node.d.cts +0 -87
  630. package/dist/node.d.cts +0 -2
  631. package/dist/platform/browser-only.d.cts +0 -25
  632. package/dist/platform/browser-safe.d.cts +0 -32
  633. package/dist/platform/browser.d.cts +0 -74
  634. package/dist/platform/index.d.cts +0 -5
  635. package/dist/platform/interface.d.cts +0 -218
  636. package/dist/platform/node.d.cts +0 -27
  637. package/dist/platform/shared/error-utils.d.cts +0 -25
  638. package/dist/platform/shared/pgp-utils.d.cts +0 -61
  639. package/dist/platform/shared/stream-utils.d.cts +0 -16
  640. package/dist/platform/utils.d.cts +0 -53
  641. package/dist/platform.browser.cjs +0 -41
  642. package/dist/platform.browser.cjs.map +0 -1
  643. package/dist/platform.browser.d.cts +0 -4
  644. package/dist/platform.d.cts +0 -5
  645. package/dist/platform.node.d.cts +0 -5
  646. package/dist/schemas/dataSchema.schema.d.cts +0 -88
  647. package/dist/schemas/dataSchema.schema.d.ts +0 -88
  648. package/dist/schemas/grantFile.schema.d.cts +0 -57
  649. package/dist/schemas/grantFile.schema.d.ts +0 -57
  650. package/dist/server/handler.cjs +0 -101
  651. package/dist/server/handler.cjs.map +0 -1
  652. package/dist/server/handler.d.cts +0 -306
  653. package/dist/server/handler.d.ts +0 -306
  654. package/dist/server/handler.js +0 -77
  655. package/dist/server/handler.js.map +0 -1
  656. package/dist/storage/index.d.cts +0 -10
  657. package/dist/storage/manager.d.cts +0 -150
  658. package/dist/storage/providers/callback-storage.d.cts +0 -100
  659. package/dist/storage/providers/google-drive.d.cts +0 -156
  660. package/dist/storage/providers/ipfs.d.cts +0 -163
  661. package/dist/storage/providers/pinata.d.cts +0 -173
  662. package/dist/types/blockchain.d.cts +0 -52
  663. package/dist/types/chains.d.cts +0 -34
  664. package/dist/types/config.d.cts +0 -726
  665. package/dist/types/contracts.d.cts +0 -68
  666. package/dist/types/controller-context.d.cts +0 -71
  667. package/dist/types/data.d.cts +0 -694
  668. package/dist/types/eccrypto-js.d.d.cts +0 -13
  669. package/dist/types/eccrypto-js.d.d.ts +0 -13
  670. package/dist/types/external-apis.d.cts +0 -186
  671. package/dist/types/generics.d.cts +0 -450
  672. package/dist/types/index.d.cts +0 -22
  673. package/dist/types/operations.d.cts +0 -116
  674. package/dist/types/permissions.d.cts +0 -957
  675. package/dist/types/personal.d.cts +0 -40
  676. package/dist/types/relayer.d.cts +0 -284
  677. package/dist/types/storage.d.cts +0 -131
  678. package/dist/types/transactionResults.d.cts +0 -195
  679. package/dist/types/utils.d.cts +0 -819
  680. package/dist/types.d.cts +0 -54
  681. package/dist/utils/blockchain/registry.d.cts +0 -34
  682. package/dist/utils/crypto-utils.d.cts +0 -118
  683. package/dist/utils/download.d.cts +0 -41
  684. package/dist/utils/encoding.d.cts +0 -54
  685. package/dist/utils/encryption.d.cts +0 -275
  686. package/dist/utils/formatters.d.cts +0 -120
  687. package/dist/utils/grantFiles.d.cts +0 -186
  688. package/dist/utils/grantValidation.d.cts +0 -150
  689. package/dist/utils/grants.d.cts +0 -70
  690. package/dist/utils/ipfs.d.cts +0 -90
  691. package/dist/utils/lazy-import.d.cts +0 -20
  692. package/dist/utils/multicall.d.cts +0 -129
  693. package/dist/utils/parseTransactionPojo.d.cts +0 -37
  694. package/dist/utils/schemaValidation.d.cts +0 -172
  695. package/dist/utils/signatureCache.d.cts +0 -134
  696. package/dist/utils/signatureFormatter.d.cts +0 -39
  697. package/dist/utils/transactionHelpers.d.cts +0 -86
  698. package/dist/utils/typedDataConverter.d.cts +0 -13
  699. package/dist/utils/urlResolver.d.cts +0 -40
  700. package/dist/utils/withEvents.d.cts +0 -63
@@ -4,38 +4,37 @@
4
4
  * @category Utilities
5
5
  */
6
6
  /**
7
- * Fetch content with automatic fallbacks for CORS and IPFS
7
+ * Universal fetch with protocol support and automatic fallbacks
8
8
  *
9
9
  * @remarks
10
10
  * This utility provides a robust download mechanism that handles:
11
- * 1. Direct fetch for regular URLs
12
- * 2. Download relayer for CORS-restricted URLs
13
- * 3. IPFS gateway fallbacks for IPFS content
11
+ * 1. IPFS URLs with automatic gateway fallbacks (5 different gateways)
12
+ * 2. Arweave URLs with ar:// protocol conversion
13
+ * 3. Regular HTTP/HTTPS URLs with optional CORS bypass via relayer
14
+ * 4. Automatic fallback strategies for resilient downloads
14
15
  *
15
16
  * The function automatically determines the best strategy based on the URL
16
17
  * and available configuration, providing transparent fallback behavior.
17
18
  *
18
- * @param url - The URL to fetch (HTTP, HTTPS, or IPFS)
19
+ * @param url - The URL to fetch (HTTP, HTTPS, IPFS, or Arweave)
19
20
  * @param downloadRelayer - Optional download relayer for CORS bypass
20
21
  * @param downloadRelayer.proxyDownload - Function to proxy downloads through application server
21
22
  * @returns Promise resolving to Response object
22
23
  * @throws Error if all download attempts fail
23
24
  * @example
24
25
  * ```typescript
25
- * // With download relayer configured
26
- * const response = await fetchWithRelayer(
26
+ * // IPFS URL - automatically uses gateway fallbacks
27
+ * const ipfsResponse = await universalFetch('ipfs://QmHash123');
28
+ * const content = await ipfsResponse.text();
29
+ *
30
+ * // With optional download relayer for CORS bypass
31
+ * const response = await universalFetch(
27
32
  * 'https://drive.google.com/file.json',
28
33
  * vana.downloadRelayer
29
34
  * );
30
35
  * const data = await response.json();
31
- *
32
- * // IPFS URL - will use gateway fallbacks
33
- * const ipfsResponse = await fetchWithRelayer('ipfs://QmHash123');
34
- * const content = await ipfsResponse.text();
35
36
  * ```
36
37
  */
37
- declare function fetchWithRelayer(url: string, downloadRelayer?: {
38
+ export declare function universalFetch(url: string, downloadRelayer?: {
38
39
  proxyDownload: (url: string) => Promise<Blob>;
39
40
  }): Promise<Response>;
40
-
41
- export { fetchWithRelayer };
@@ -1,5 +1,5 @@
1
1
  import { fetchWithFallbacks, extractIpfsHash } from "./ipfs";
2
- async function fetchWithRelayer(url, downloadRelayer) {
2
+ async function universalFetch(url, downloadRelayer) {
3
3
  let processedUrl = url;
4
4
  if (url.startsWith("ar://")) {
5
5
  const txId = url.replace("ar://", "");
@@ -40,6 +40,6 @@ async function fetchWithRelayer(url, downloadRelayer) {
40
40
  }
41
41
  }
42
42
  export {
43
- fetchWithRelayer
43
+ universalFetch
44
44
  };
45
45
  //# sourceMappingURL=download.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utils/download.ts"],"sourcesContent":["/**\n * Universal download utility with CORS bypass and IPFS gateway fallbacks\n *\n * @category Utilities\n */\n\nimport { fetchWithFallbacks, extractIpfsHash } from \"./ipfs\";\n\n/**\n * Fetch content with automatic fallbacks for CORS and IPFS\n *\n * @remarks\n * This utility provides a robust download mechanism that handles:\n * 1. Direct fetch for regular URLs\n * 2. Download relayer for CORS-restricted URLs\n * 3. IPFS gateway fallbacks for IPFS content\n *\n * The function automatically determines the best strategy based on the URL\n * and available configuration, providing transparent fallback behavior.\n *\n * @param url - The URL to fetch (HTTP, HTTPS, or IPFS)\n * @param downloadRelayer - Optional download relayer for CORS bypass\n * @param downloadRelayer.proxyDownload - Function to proxy downloads through application server\n * @returns Promise resolving to Response object\n * @throws Error if all download attempts fail\n * @example\n * ```typescript\n * // With download relayer configured\n * const response = await fetchWithRelayer(\n * 'https://drive.google.com/file.json',\n * vana.downloadRelayer\n * );\n * const data = await response.json();\n *\n * // IPFS URL - will use gateway fallbacks\n * const ipfsResponse = await fetchWithRelayer('ipfs://QmHash123');\n * const content = await ipfsResponse.text();\n * ```\n */\nexport async function fetchWithRelayer(\n url: string,\n downloadRelayer?: { proxyDownload: (url: string) => Promise<Blob> },\n): Promise<Response> {\n // Handle Arweave URLs\n let processedUrl = url;\n if (url.startsWith(\"ar://\")) {\n const txId = url.replace(\"ar://\", \"\");\n processedUrl = `https://arweave.net/${txId}`;\n }\n\n // For IPFS URLs, use the IPFS fallback mechanism\n const ipfsHash = extractIpfsHash(processedUrl);\n if (ipfsHash) {\n try {\n return await fetchWithFallbacks(url);\n } catch (ipfsError) {\n // If all IPFS gateways fail and we have a relayer, try it as last resort\n if (downloadRelayer) {\n try {\n // Try with the first gateway URL format\n const gatewayUrl = `https://gateway.pinata.cloud/ipfs/${ipfsHash}`;\n const blob = await downloadRelayer.proxyDownload(gatewayUrl);\n return new Response(blob);\n } catch {\n // Re-throw original IPFS error\n throw ipfsError;\n }\n }\n throw ipfsError;\n }\n }\n\n // For non-IPFS URLs, try direct then relayer\n try {\n const response = await fetch(processedUrl);\n return response;\n } catch (error) {\n // Try download relayer if configured\n if (downloadRelayer) {\n try {\n const blob = await downloadRelayer.proxyDownload(processedUrl);\n return new Response(blob);\n } catch {\n // Re-throw original error\n throw error;\n }\n }\n throw new Error(\n `Failed to fetch from ${processedUrl}: ${error instanceof Error ? error.message : \"Unknown error\"}`,\n );\n }\n}\n"],"mappings":"AAMA,SAAS,oBAAoB,uBAAuB;AAiCpD,eAAsB,iBACpB,KACA,iBACmB;AAEnB,MAAI,eAAe;AACnB,MAAI,IAAI,WAAW,OAAO,GAAG;AAC3B,UAAM,OAAO,IAAI,QAAQ,SAAS,EAAE;AACpC,mBAAe,uBAAuB,IAAI;AAAA,EAC5C;AAGA,QAAM,WAAW,gBAAgB,YAAY;AAC7C,MAAI,UAAU;AACZ,QAAI;AACF,aAAO,MAAM,mBAAmB,GAAG;AAAA,IACrC,SAAS,WAAW;AAElB,UAAI,iBAAiB;AACnB,YAAI;AAEF,gBAAM,aAAa,qCAAqC,QAAQ;AAChE,gBAAM,OAAO,MAAM,gBAAgB,cAAc,UAAU;AAC3D,iBAAO,IAAI,SAAS,IAAI;AAAA,QAC1B,QAAQ;AAEN,gBAAM;AAAA,QACR;AAAA,MACF;AACA,YAAM;AAAA,IACR;AAAA,EACF;AAGA,MAAI;AACF,UAAM,WAAW,MAAM,MAAM,YAAY;AACzC,WAAO;AAAA,EACT,SAAS,OAAO;AAEd,QAAI,iBAAiB;AACnB,UAAI;AACF,cAAM,OAAO,MAAM,gBAAgB,cAAc,YAAY;AAC7D,eAAO,IAAI,SAAS,IAAI;AAAA,MAC1B,QAAQ;AAEN,cAAM;AAAA,MACR;AAAA,IACF;AACA,UAAM,IAAI;AAAA,MACR,wBAAwB,YAAY,KAAK,iBAAiB,QAAQ,MAAM,UAAU,eAAe;AAAA,IACnG;AAAA,EACF;AACF;","names":[]}
1
+ {"version":3,"sources":["../../src/utils/download.ts"],"sourcesContent":["/**\n * Universal download utility with CORS bypass and IPFS gateway fallbacks\n *\n * @category Utilities\n */\n\nimport { fetchWithFallbacks, extractIpfsHash } from \"./ipfs\";\n\n/**\n * Universal fetch with protocol support and automatic fallbacks\n *\n * @remarks\n * This utility provides a robust download mechanism that handles:\n * 1. IPFS URLs with automatic gateway fallbacks (5 different gateways)\n * 2. Arweave URLs with ar:// protocol conversion\n * 3. Regular HTTP/HTTPS URLs with optional CORS bypass via relayer\n * 4. Automatic fallback strategies for resilient downloads\n *\n * The function automatically determines the best strategy based on the URL\n * and available configuration, providing transparent fallback behavior.\n *\n * @param url - The URL to fetch (HTTP, HTTPS, IPFS, or Arweave)\n * @param downloadRelayer - Optional download relayer for CORS bypass\n * @param downloadRelayer.proxyDownload - Function to proxy downloads through application server\n * @returns Promise resolving to Response object\n * @throws Error if all download attempts fail\n * @example\n * ```typescript\n * // IPFS URL - automatically uses gateway fallbacks\n * const ipfsResponse = await universalFetch('ipfs://QmHash123');\n * const content = await ipfsResponse.text();\n *\n * // With optional download relayer for CORS bypass\n * const response = await universalFetch(\n * 'https://drive.google.com/file.json',\n * vana.downloadRelayer\n * );\n * const data = await response.json();\n * ```\n */\nexport async function universalFetch(\n url: string,\n downloadRelayer?: { proxyDownload: (url: string) => Promise<Blob> },\n): Promise<Response> {\n // Handle Arweave URLs\n let processedUrl = url;\n if (url.startsWith(\"ar://\")) {\n const txId = url.replace(\"ar://\", \"\");\n processedUrl = `https://arweave.net/${txId}`;\n }\n\n // For IPFS URLs, use the IPFS fallback mechanism\n const ipfsHash = extractIpfsHash(processedUrl);\n if (ipfsHash) {\n try {\n return await fetchWithFallbacks(url);\n } catch (ipfsError) {\n // If all IPFS gateways fail and we have a relayer, try it as last resort\n if (downloadRelayer) {\n try {\n // Try with the first gateway URL format\n const gatewayUrl = `https://gateway.pinata.cloud/ipfs/${ipfsHash}`;\n const blob = await downloadRelayer.proxyDownload(gatewayUrl);\n return new Response(blob);\n } catch {\n // Re-throw original IPFS error\n throw ipfsError;\n }\n }\n throw ipfsError;\n }\n }\n\n // For non-IPFS URLs, try direct then relayer\n try {\n const response = await fetch(processedUrl);\n return response;\n } catch (error) {\n // Try download relayer if configured\n if (downloadRelayer) {\n try {\n const blob = await downloadRelayer.proxyDownload(processedUrl);\n return new Response(blob);\n } catch {\n // Re-throw original error\n throw error;\n }\n }\n throw new Error(\n `Failed to fetch from ${processedUrl}: ${error instanceof Error ? error.message : \"Unknown error\"}`,\n );\n }\n}\n"],"mappings":"AAMA,SAAS,oBAAoB,uBAAuB;AAkCpD,eAAsB,eACpB,KACA,iBACmB;AAEnB,MAAI,eAAe;AACnB,MAAI,IAAI,WAAW,OAAO,GAAG;AAC3B,UAAM,OAAO,IAAI,QAAQ,SAAS,EAAE;AACpC,mBAAe,uBAAuB,IAAI;AAAA,EAC5C;AAGA,QAAM,WAAW,gBAAgB,YAAY;AAC7C,MAAI,UAAU;AACZ,QAAI;AACF,aAAO,MAAM,mBAAmB,GAAG;AAAA,IACrC,SAAS,WAAW;AAElB,UAAI,iBAAiB;AACnB,YAAI;AAEF,gBAAM,aAAa,qCAAqC,QAAQ;AAChE,gBAAM,OAAO,MAAM,gBAAgB,cAAc,UAAU;AAC3D,iBAAO,IAAI,SAAS,IAAI;AAAA,QAC1B,QAAQ;AAEN,gBAAM;AAAA,QACR;AAAA,MACF;AACA,YAAM;AAAA,IACR;AAAA,EACF;AAGA,MAAI;AACF,UAAM,WAAW,MAAM,MAAM,YAAY;AACzC,WAAO;AAAA,EACT,SAAS,OAAO;AAEd,QAAI,iBAAiB;AACnB,UAAI;AACF,cAAM,OAAO,MAAM,gBAAgB,cAAc,YAAY;AAC7D,eAAO,IAAI,SAAS,IAAI;AAAA,MAC1B,QAAQ;AAEN,cAAM;AAAA,MACR;AAAA,IACF;AACA,UAAM,IAAI;AAAA,MACR,wBAAwB,YAAY,KAAK,iBAAiB,QAAQ,MAAM,UAAU,eAAe;AAAA,IACnG;AAAA,EACF;AACF;","names":[]}
@@ -51,7 +51,7 @@ function fromBase64(str) {
51
51
  throw new Error("No base64 decoding method available in this environment");
52
52
  }
53
53
  function isNodeEnvironment() {
54
- return typeof Buffer !== "undefined" && typeof Buffer.from === "function" && typeof process !== "undefined" && process.versions && process.versions.node !== void 0;
54
+ return typeof Buffer !== "undefined" && typeof Buffer.from === "function" && typeof process !== "undefined" && process.versions?.node !== void 0;
55
55
  }
56
56
  function isBrowserEnvironment() {
57
57
  return typeof window !== "undefined" && typeof window.document !== "undefined";
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utils/encoding.ts"],"sourcesContent":["/**\n * Provides platform-aware base64 encoding utilities.\n *\n * @remarks\n * This module provides base64 encoding/decoding operations across Node.js and browser\n * environments. For hex and string conversions, use viem's utilities directly:\n * - `toHex` / `fromHex` from 'viem'\n * - `stringToBytes` / `bytesToString` from 'viem'\n *\n * @category Utilities\n */\n\n/**\n * Converts a Uint8Array to a base64 string.\n *\n * @param data - The byte array to encode into base64 format.\n * @returns The base64-encoded string representation.\n * @throws {Error} When no base64 encoding method is available in the environment.\n *\n * @example\n * ```typescript\n * const bytes = new Uint8Array([72, 101, 108, 108, 111]);\n * const encoded = toBase64(bytes);\n * console.log(encoded); // \"SGVsbG8=\"\n * ```\n */\nexport function toBase64(data: Uint8Array): string {\n // Node.js path - most efficient\n if (typeof Buffer !== \"undefined\" && Buffer.from) {\n return Buffer.from(data).toString(\"base64\");\n }\n\n // Browser path - using native btoa\n if (typeof btoa !== \"undefined\") {\n const binary = Array.from(data, (byte) => String.fromCharCode(byte)).join(\n \"\",\n );\n return btoa(binary);\n }\n\n throw new Error(\"No base64 encoding method available in this environment\");\n}\n\n/**\n * Converts a base64 string to a Uint8Array.\n *\n * @param str - The base64-encoded string to decode.\n * @returns The decoded byte array.\n * @throws {Error} When no base64 decoding method is available in the environment.\n *\n * @example\n * ```typescript\n * const decoded = fromBase64(\"SGVsbG8=\");\n * console.log(new TextDecoder().decode(decoded)); // \"Hello\"\n * ```\n */\nexport function fromBase64(str: string): Uint8Array {\n // Node.js path - most efficient\n if (typeof Buffer !== \"undefined\" && Buffer.from) {\n return new Uint8Array(Buffer.from(str, \"base64\"));\n }\n\n // Browser path - using native atob\n if (typeof atob !== \"undefined\") {\n const binary = atob(str);\n const bytes = new Uint8Array(binary.length);\n for (let i = 0; i < binary.length; i++) {\n bytes[i] = binary.charCodeAt(i);\n }\n return bytes;\n }\n\n throw new Error(\"No base64 decoding method available in this environment\");\n}\n\n/**\n * Type guard to check if running in Node.js environment\n *\n * @returns True if running in Node.js\n */\nexport function isNodeEnvironment(): boolean {\n return (\n typeof Buffer !== \"undefined\" &&\n typeof Buffer.from === \"function\" &&\n typeof process !== \"undefined\" &&\n process.versions &&\n process.versions.node !== undefined\n );\n}\n\n/**\n * Type guard to check if running in browser environment\n *\n * @returns True if running in browser\n */\nexport function isBrowserEnvironment(): boolean {\n return (\n typeof window !== \"undefined\" && typeof window.document !== \"undefined\"\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA0BO,SAAS,SAAS,MAA0B;AAEjD,MAAI,OAAO,WAAW,eAAe,OAAO,MAAM;AAChD,WAAO,OAAO,KAAK,IAAI,EAAE,SAAS,QAAQ;AAAA,EAC5C;AAGA,MAAI,OAAO,SAAS,aAAa;AAC/B,UAAM,SAAS,MAAM,KAAK,MAAM,CAAC,SAAS,OAAO,aAAa,IAAI,CAAC,EAAE;AAAA,MACnE;AAAA,IACF;AACA,WAAO,KAAK,MAAM;AAAA,EACpB;AAEA,QAAM,IAAI,MAAM,yDAAyD;AAC3E;AAeO,SAAS,WAAW,KAAyB;AAElD,MAAI,OAAO,WAAW,eAAe,OAAO,MAAM;AAChD,WAAO,IAAI,WAAW,OAAO,KAAK,KAAK,QAAQ,CAAC;AAAA,EAClD;AAGA,MAAI,OAAO,SAAS,aAAa;AAC/B,UAAM,SAAS,KAAK,GAAG;AACvB,UAAM,QAAQ,IAAI,WAAW,OAAO,MAAM;AAC1C,aAAS,IAAI,GAAG,IAAI,OAAO,QAAQ,KAAK;AACtC,YAAM,CAAC,IAAI,OAAO,WAAW,CAAC;AAAA,IAChC;AACA,WAAO;AAAA,EACT;AAEA,QAAM,IAAI,MAAM,yDAAyD;AAC3E;AAOO,SAAS,oBAA6B;AAC3C,SACE,OAAO,WAAW,eAClB,OAAO,OAAO,SAAS,cACvB,OAAO,YAAY,eACnB,QAAQ,YACR,QAAQ,SAAS,SAAS;AAE9B;AAOO,SAAS,uBAAgC;AAC9C,SACE,OAAO,WAAW,eAAe,OAAO,OAAO,aAAa;AAEhE;","names":[]}
1
+ {"version":3,"sources":["../../src/utils/encoding.ts"],"sourcesContent":["/**\n * Provides platform-aware base64 encoding utilities.\n *\n * @remarks\n * This module provides base64 encoding/decoding operations across Node.js and browser\n * environments. For hex and string conversions, use viem's utilities directly:\n * - `toHex` / `fromHex` from 'viem'\n * - `stringToBytes` / `bytesToString` from 'viem'\n *\n * @category Utilities\n */\n\n/**\n * Converts a Uint8Array to a base64 string.\n *\n * @param data - The byte array to encode into base64 format.\n * @returns The base64-encoded string representation.\n * @throws {Error} When no base64 encoding method is available in the environment.\n *\n * @example\n * ```typescript\n * const bytes = new Uint8Array([72, 101, 108, 108, 111]);\n * const encoded = toBase64(bytes);\n * console.log(encoded); // \"SGVsbG8=\"\n * ```\n */\nexport function toBase64(data: Uint8Array): string {\n // Node.js path - most efficient\n if (typeof Buffer !== \"undefined\" && Buffer.from) {\n return Buffer.from(data).toString(\"base64\");\n }\n\n // Browser path - using native btoa\n if (typeof btoa !== \"undefined\") {\n const binary = Array.from(data, (byte) => String.fromCharCode(byte)).join(\n \"\",\n );\n return btoa(binary);\n }\n\n throw new Error(\"No base64 encoding method available in this environment\");\n}\n\n/**\n * Converts a base64 string to a Uint8Array.\n *\n * @param str - The base64-encoded string to decode.\n * @returns The decoded byte array.\n * @throws {Error} When no base64 decoding method is available in the environment.\n *\n * @example\n * ```typescript\n * const decoded = fromBase64(\"SGVsbG8=\");\n * console.log(new TextDecoder().decode(decoded)); // \"Hello\"\n * ```\n */\nexport function fromBase64(str: string): Uint8Array {\n // Node.js path - most efficient\n if (typeof Buffer !== \"undefined\" && Buffer.from) {\n return new Uint8Array(Buffer.from(str, \"base64\"));\n }\n\n // Browser path - using native atob\n if (typeof atob !== \"undefined\") {\n const binary = atob(str);\n const bytes = new Uint8Array(binary.length);\n for (let i = 0; i < binary.length; i++) {\n bytes[i] = binary.charCodeAt(i);\n }\n return bytes;\n }\n\n throw new Error(\"No base64 decoding method available in this environment\");\n}\n\n/**\n * Type guard to check if running in Node.js environment\n *\n * @returns True if running in Node.js\n */\nexport function isNodeEnvironment(): boolean {\n return (\n typeof Buffer !== \"undefined\" &&\n typeof Buffer.from === \"function\" &&\n typeof process !== \"undefined\" &&\n process.versions?.node !== undefined\n );\n}\n\n/**\n * Type guard to check if running in browser environment\n *\n * @returns True if running in browser\n */\nexport function isBrowserEnvironment(): boolean {\n return (\n typeof window !== \"undefined\" && typeof window.document !== \"undefined\"\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA0BO,SAAS,SAAS,MAA0B;AAEjD,MAAI,OAAO,WAAW,eAAe,OAAO,MAAM;AAChD,WAAO,OAAO,KAAK,IAAI,EAAE,SAAS,QAAQ;AAAA,EAC5C;AAGA,MAAI,OAAO,SAAS,aAAa;AAC/B,UAAM,SAAS,MAAM,KAAK,MAAM,CAAC,SAAS,OAAO,aAAa,IAAI,CAAC,EAAE;AAAA,MACnE;AAAA,IACF;AACA,WAAO,KAAK,MAAM;AAAA,EACpB;AAEA,QAAM,IAAI,MAAM,yDAAyD;AAC3E;AAeO,SAAS,WAAW,KAAyB;AAElD,MAAI,OAAO,WAAW,eAAe,OAAO,MAAM;AAChD,WAAO,IAAI,WAAW,OAAO,KAAK,KAAK,QAAQ,CAAC;AAAA,EAClD;AAGA,MAAI,OAAO,SAAS,aAAa;AAC/B,UAAM,SAAS,KAAK,GAAG;AACvB,UAAM,QAAQ,IAAI,WAAW,OAAO,MAAM;AAC1C,aAAS,IAAI,GAAG,IAAI,OAAO,QAAQ,KAAK;AACtC,YAAM,CAAC,IAAI,OAAO,WAAW,CAAC;AAAA,IAChC;AACA,WAAO;AAAA,EACT;AAEA,QAAM,IAAI,MAAM,yDAAyD;AAC3E;AAOO,SAAS,oBAA6B;AAC3C,SACE,OAAO,WAAW,eAClB,OAAO,OAAO,SAAS,cACvB,OAAO,YAAY,eACnB,QAAQ,UAAU,SAAS;AAE/B;AAOO,SAAS,uBAAgC;AAC9C,SACE,OAAO,WAAW,eAAe,OAAO,OAAO,aAAa;AAEhE;","names":[]}
@@ -23,7 +23,7 @@
23
23
  * console.log(encoded); // "SGVsbG8="
24
24
  * ```
25
25
  */
26
- declare function toBase64(data: Uint8Array): string;
26
+ export declare function toBase64(data: Uint8Array): string;
27
27
  /**
28
28
  * Converts a base64 string to a Uint8Array.
29
29
  *
@@ -37,18 +37,16 @@ declare function toBase64(data: Uint8Array): string;
37
37
  * console.log(new TextDecoder().decode(decoded)); // "Hello"
38
38
  * ```
39
39
  */
40
- declare function fromBase64(str: string): Uint8Array;
40
+ export declare function fromBase64(str: string): Uint8Array;
41
41
  /**
42
42
  * Type guard to check if running in Node.js environment
43
43
  *
44
44
  * @returns True if running in Node.js
45
45
  */
46
- declare function isNodeEnvironment(): boolean;
46
+ export declare function isNodeEnvironment(): boolean;
47
47
  /**
48
48
  * Type guard to check if running in browser environment
49
49
  *
50
50
  * @returns True if running in browser
51
51
  */
52
- declare function isBrowserEnvironment(): boolean;
53
-
54
- export { fromBase64, isBrowserEnvironment, isNodeEnvironment, toBase64 };
52
+ export declare function isBrowserEnvironment(): boolean;
@@ -25,7 +25,7 @@ function fromBase64(str) {
25
25
  throw new Error("No base64 decoding method available in this environment");
26
26
  }
27
27
  function isNodeEnvironment() {
28
- return typeof Buffer !== "undefined" && typeof Buffer.from === "function" && typeof process !== "undefined" && process.versions && process.versions.node !== void 0;
28
+ return typeof Buffer !== "undefined" && typeof Buffer.from === "function" && typeof process !== "undefined" && process.versions?.node !== void 0;
29
29
  }
30
30
  function isBrowserEnvironment() {
31
31
  return typeof window !== "undefined" && typeof window.document !== "undefined";
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utils/encoding.ts"],"sourcesContent":["/**\n * Provides platform-aware base64 encoding utilities.\n *\n * @remarks\n * This module provides base64 encoding/decoding operations across Node.js and browser\n * environments. For hex and string conversions, use viem's utilities directly:\n * - `toHex` / `fromHex` from 'viem'\n * - `stringToBytes` / `bytesToString` from 'viem'\n *\n * @category Utilities\n */\n\n/**\n * Converts a Uint8Array to a base64 string.\n *\n * @param data - The byte array to encode into base64 format.\n * @returns The base64-encoded string representation.\n * @throws {Error} When no base64 encoding method is available in the environment.\n *\n * @example\n * ```typescript\n * const bytes = new Uint8Array([72, 101, 108, 108, 111]);\n * const encoded = toBase64(bytes);\n * console.log(encoded); // \"SGVsbG8=\"\n * ```\n */\nexport function toBase64(data: Uint8Array): string {\n // Node.js path - most efficient\n if (typeof Buffer !== \"undefined\" && Buffer.from) {\n return Buffer.from(data).toString(\"base64\");\n }\n\n // Browser path - using native btoa\n if (typeof btoa !== \"undefined\") {\n const binary = Array.from(data, (byte) => String.fromCharCode(byte)).join(\n \"\",\n );\n return btoa(binary);\n }\n\n throw new Error(\"No base64 encoding method available in this environment\");\n}\n\n/**\n * Converts a base64 string to a Uint8Array.\n *\n * @param str - The base64-encoded string to decode.\n * @returns The decoded byte array.\n * @throws {Error} When no base64 decoding method is available in the environment.\n *\n * @example\n * ```typescript\n * const decoded = fromBase64(\"SGVsbG8=\");\n * console.log(new TextDecoder().decode(decoded)); // \"Hello\"\n * ```\n */\nexport function fromBase64(str: string): Uint8Array {\n // Node.js path - most efficient\n if (typeof Buffer !== \"undefined\" && Buffer.from) {\n return new Uint8Array(Buffer.from(str, \"base64\"));\n }\n\n // Browser path - using native atob\n if (typeof atob !== \"undefined\") {\n const binary = atob(str);\n const bytes = new Uint8Array(binary.length);\n for (let i = 0; i < binary.length; i++) {\n bytes[i] = binary.charCodeAt(i);\n }\n return bytes;\n }\n\n throw new Error(\"No base64 decoding method available in this environment\");\n}\n\n/**\n * Type guard to check if running in Node.js environment\n *\n * @returns True if running in Node.js\n */\nexport function isNodeEnvironment(): boolean {\n return (\n typeof Buffer !== \"undefined\" &&\n typeof Buffer.from === \"function\" &&\n typeof process !== \"undefined\" &&\n process.versions &&\n process.versions.node !== undefined\n );\n}\n\n/**\n * Type guard to check if running in browser environment\n *\n * @returns True if running in browser\n */\nexport function isBrowserEnvironment(): boolean {\n return (\n typeof window !== \"undefined\" && typeof window.document !== \"undefined\"\n );\n}\n"],"mappings":"AA0BO,SAAS,SAAS,MAA0B;AAEjD,MAAI,OAAO,WAAW,eAAe,OAAO,MAAM;AAChD,WAAO,OAAO,KAAK,IAAI,EAAE,SAAS,QAAQ;AAAA,EAC5C;AAGA,MAAI,OAAO,SAAS,aAAa;AAC/B,UAAM,SAAS,MAAM,KAAK,MAAM,CAAC,SAAS,OAAO,aAAa,IAAI,CAAC,EAAE;AAAA,MACnE;AAAA,IACF;AACA,WAAO,KAAK,MAAM;AAAA,EACpB;AAEA,QAAM,IAAI,MAAM,yDAAyD;AAC3E;AAeO,SAAS,WAAW,KAAyB;AAElD,MAAI,OAAO,WAAW,eAAe,OAAO,MAAM;AAChD,WAAO,IAAI,WAAW,OAAO,KAAK,KAAK,QAAQ,CAAC;AAAA,EAClD;AAGA,MAAI,OAAO,SAAS,aAAa;AAC/B,UAAM,SAAS,KAAK,GAAG;AACvB,UAAM,QAAQ,IAAI,WAAW,OAAO,MAAM;AAC1C,aAAS,IAAI,GAAG,IAAI,OAAO,QAAQ,KAAK;AACtC,YAAM,CAAC,IAAI,OAAO,WAAW,CAAC;AAAA,IAChC;AACA,WAAO;AAAA,EACT;AAEA,QAAM,IAAI,MAAM,yDAAyD;AAC3E;AAOO,SAAS,oBAA6B;AAC3C,SACE,OAAO,WAAW,eAClB,OAAO,OAAO,SAAS,cACvB,OAAO,YAAY,eACnB,QAAQ,YACR,QAAQ,SAAS,SAAS;AAE9B;AAOO,SAAS,uBAAgC;AAC9C,SACE,OAAO,WAAW,eAAe,OAAO,OAAO,aAAa;AAEhE;","names":[]}
1
+ {"version":3,"sources":["../../src/utils/encoding.ts"],"sourcesContent":["/**\n * Provides platform-aware base64 encoding utilities.\n *\n * @remarks\n * This module provides base64 encoding/decoding operations across Node.js and browser\n * environments. For hex and string conversions, use viem's utilities directly:\n * - `toHex` / `fromHex` from 'viem'\n * - `stringToBytes` / `bytesToString` from 'viem'\n *\n * @category Utilities\n */\n\n/**\n * Converts a Uint8Array to a base64 string.\n *\n * @param data - The byte array to encode into base64 format.\n * @returns The base64-encoded string representation.\n * @throws {Error} When no base64 encoding method is available in the environment.\n *\n * @example\n * ```typescript\n * const bytes = new Uint8Array([72, 101, 108, 108, 111]);\n * const encoded = toBase64(bytes);\n * console.log(encoded); // \"SGVsbG8=\"\n * ```\n */\nexport function toBase64(data: Uint8Array): string {\n // Node.js path - most efficient\n if (typeof Buffer !== \"undefined\" && Buffer.from) {\n return Buffer.from(data).toString(\"base64\");\n }\n\n // Browser path - using native btoa\n if (typeof btoa !== \"undefined\") {\n const binary = Array.from(data, (byte) => String.fromCharCode(byte)).join(\n \"\",\n );\n return btoa(binary);\n }\n\n throw new Error(\"No base64 encoding method available in this environment\");\n}\n\n/**\n * Converts a base64 string to a Uint8Array.\n *\n * @param str - The base64-encoded string to decode.\n * @returns The decoded byte array.\n * @throws {Error} When no base64 decoding method is available in the environment.\n *\n * @example\n * ```typescript\n * const decoded = fromBase64(\"SGVsbG8=\");\n * console.log(new TextDecoder().decode(decoded)); // \"Hello\"\n * ```\n */\nexport function fromBase64(str: string): Uint8Array {\n // Node.js path - most efficient\n if (typeof Buffer !== \"undefined\" && Buffer.from) {\n return new Uint8Array(Buffer.from(str, \"base64\"));\n }\n\n // Browser path - using native atob\n if (typeof atob !== \"undefined\") {\n const binary = atob(str);\n const bytes = new Uint8Array(binary.length);\n for (let i = 0; i < binary.length; i++) {\n bytes[i] = binary.charCodeAt(i);\n }\n return bytes;\n }\n\n throw new Error(\"No base64 decoding method available in this environment\");\n}\n\n/**\n * Type guard to check if running in Node.js environment\n *\n * @returns True if running in Node.js\n */\nexport function isNodeEnvironment(): boolean {\n return (\n typeof Buffer !== \"undefined\" &&\n typeof Buffer.from === \"function\" &&\n typeof process !== \"undefined\" &&\n process.versions?.node !== undefined\n );\n}\n\n/**\n * Type guard to check if running in browser environment\n *\n * @returns True if running in browser\n */\nexport function isBrowserEnvironment(): boolean {\n return (\n typeof window !== \"undefined\" && typeof window.document !== \"undefined\"\n );\n}\n"],"mappings":"AA0BO,SAAS,SAAS,MAA0B;AAEjD,MAAI,OAAO,WAAW,eAAe,OAAO,MAAM;AAChD,WAAO,OAAO,KAAK,IAAI,EAAE,SAAS,QAAQ;AAAA,EAC5C;AAGA,MAAI,OAAO,SAAS,aAAa;AAC/B,UAAM,SAAS,MAAM,KAAK,MAAM,CAAC,SAAS,OAAO,aAAa,IAAI,CAAC,EAAE;AAAA,MACnE;AAAA,IACF;AACA,WAAO,KAAK,MAAM;AAAA,EACpB;AAEA,QAAM,IAAI,MAAM,yDAAyD;AAC3E;AAeO,SAAS,WAAW,KAAyB;AAElD,MAAI,OAAO,WAAW,eAAe,OAAO,MAAM;AAChD,WAAO,IAAI,WAAW,OAAO,KAAK,KAAK,QAAQ,CAAC;AAAA,EAClD;AAGA,MAAI,OAAO,SAAS,aAAa;AAC/B,UAAM,SAAS,KAAK,GAAG;AACvB,UAAM,QAAQ,IAAI,WAAW,OAAO,MAAM;AAC1C,aAAS,IAAI,GAAG,IAAI,OAAO,QAAQ,KAAK;AACtC,YAAM,CAAC,IAAI,OAAO,WAAW,CAAC;AAAA,IAChC;AACA,WAAO;AAAA,EACT;AAEA,QAAM,IAAI,MAAM,yDAAyD;AAC3E;AAOO,SAAS,oBAA6B;AAC3C,SACE,OAAO,WAAW,eAClB,OAAO,OAAO,SAAS,cACvB,OAAO,YAAY,eACnB,QAAQ,UAAU,SAAS;AAE/B;AAOO,SAAS,uBAAgC;AAC9C,SACE,OAAO,WAAW,eAAe,OAAO,OAAO,aAAa;AAEhE;","names":[]}
@@ -0,0 +1 @@
1
+ export {};
@@ -37,7 +37,7 @@ async function generateEncryptionKey(wallet, platformAdapter, seed = DEFAULT_ENC
37
37
  if (!wallet.account) {
38
38
  throw new Error("Wallet account is required for encryption key generation");
39
39
  }
40
- const account = wallet.account;
40
+ const { account } = wallet;
41
41
  const messageData = { message: seed };
42
42
  return await (0, import_signatureCache.withSignatureCache)(
43
43
  platformAdapter.cache,
@@ -59,7 +59,9 @@ async function encryptWithWalletPublicKey(data, publicKey, platformAdapter) {
59
59
  publicKey
60
60
  );
61
61
  } catch (error) {
62
- throw new Error(`Failed to encrypt with wallet public key: ${error}`);
62
+ throw new Error(
63
+ `Failed to encrypt with wallet public key: ${String(error)}`
64
+ );
63
65
  }
64
66
  }
65
67
  async function decryptWithWalletPrivateKey(encryptedData, privateKey, platformAdapter) {
@@ -69,7 +71,9 @@ async function decryptWithWalletPrivateKey(encryptedData, privateKey, platformAd
69
71
  privateKey
70
72
  );
71
73
  } catch (error) {
72
- throw new Error(`Failed to decrypt with wallet private key: ${error}`);
74
+ throw new Error(
75
+ `Failed to decrypt with wallet private key: ${String(error)}`
76
+ );
73
77
  }
74
78
  }
75
79
  async function encryptFileKey(fileKey, publicKey, platformAdapter) {
@@ -79,7 +83,7 @@ async function encryptFileKey(fileKey, publicKey, platformAdapter) {
79
83
  publicKey
80
84
  );
81
85
  } catch (error) {
82
- throw new Error(`Failed to encrypt file key: ${error}`);
86
+ throw new Error(`Failed to encrypt file key: ${String(error)}`);
83
87
  }
84
88
  }
85
89
  async function getEncryptionParameters(platformAdapter) {
@@ -90,7 +94,9 @@ async function getEncryptionParameters(platformAdapter) {
90
94
  key: keyPair.privateKey.substring(0, 32)
91
95
  };
92
96
  } catch (error) {
93
- throw new Error(`Failed to generate encryption parameters: ${error}`);
97
+ throw new Error(
98
+ `Failed to generate encryption parameters: ${String(error)}`
99
+ );
94
100
  }
95
101
  }
96
102
  async function decryptWithPrivateKey(encryptedData, privateKey, platformAdapter) {
@@ -100,7 +106,7 @@ async function decryptWithPrivateKey(encryptedData, privateKey, platformAdapter)
100
106
  privateKey
101
107
  );
102
108
  } catch (error) {
103
- throw new Error(`Failed to decrypt with private key: ${error}`);
109
+ throw new Error(`Failed to decrypt with private key: ${String(error)}`);
104
110
  }
105
111
  }
106
112
  async function encryptBlobWithSignedKey(data, key, platformAdapter) {
@@ -119,21 +125,21 @@ async function encryptBlobWithSignedKey(data, key, platformAdapter) {
119
125
  type: "application/octet-stream"
120
126
  });
121
127
  } catch (error) {
122
- throw new Error(`Failed to encrypt data: ${error}`);
128
+ throw new Error(`Failed to encrypt data: ${String(error)}`);
123
129
  }
124
130
  }
125
131
  async function generateEncryptionKeyPair(platformAdapter) {
126
132
  try {
127
133
  return await platformAdapter.crypto.generateKeyPair();
128
134
  } catch (error) {
129
- throw new Error(`Failed to generate encryption key pair: ${error}`);
135
+ throw new Error(`Failed to generate encryption key pair: ${String(error)}`);
130
136
  }
131
137
  }
132
138
  async function generatePGPKeyPair(platformAdapter, options) {
133
139
  try {
134
140
  return await platformAdapter.pgp.generateKeyPair(options);
135
141
  } catch (error) {
136
- throw new Error(`Failed to generate PGP key pair: ${error}`);
142
+ throw new Error(`Failed to generate PGP key pair: ${String(error)}`);
137
143
  }
138
144
  }
139
145
  async function decryptBlobWithSignedKey(encryptedData, key, platformAdapter) {
@@ -150,7 +156,7 @@ async function decryptBlobWithSignedKey(encryptedData, key, platformAdapter) {
150
156
  );
151
157
  return new Blob([decryptedArrayBuffer], { type: "text/plain" });
152
158
  } catch (error) {
153
- throw new Error(`Failed to decrypt data: ${error}`);
159
+ throw new Error(`Failed to decrypt data: ${String(error)}`);
154
160
  }
155
161
  }
156
162
  // Annotate the CommonJS export names for ESM import in node:
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utils/encryption.ts"],"sourcesContent":["/**\n * Canonical Vana Protocol Encryption Functions\n *\n * These functions define the standard way user data is encrypted/decrypted in Vana.\n * All applications should use these canonical functions to ensure compatibility\n * with existing encrypted data on the Vana network.\n *\n * This module uses the platform adapter pattern to provide consistent\n * encryption functionality across Node.js and browser environments.\n */\n\nimport type { WalletClient } from \"viem\";\nimport type { VanaPlatformAdapter } from \"../platform/interface\";\nimport { withSignatureCache } from \"./signatureCache\";\n\n/**\n * Default encryption seed message used throughout Vana protocol\n */\nexport const DEFAULT_ENCRYPTION_SEED =\n \"Please sign to retrieve your encryption key\";\n\n/**\n * Generate an encryption key by signing the canonical Vana encryption seed\n *\n * This is the standard protocol function for creating encryption keys in Vana.\n * The signature serves as a symmetric encryption key for user data.\n *\n * @param wallet The user's wallet client for signing\n * @param platformAdapter Platform adapter for cache operations\n * @param seed Optional custom encryption seed (defaults to Vana standard)\n * @returns The signature that serves as the encryption key\n * @throws {Error} When wallet account is required but not provided\n * @example\n * ```typescript\n * const encryptionKey = await generateEncryptionKey(walletClient, platformAdapter);\n * console.log('Generated encryption key:', encryptionKey);\n *\n * // Use with custom seed\n * const customKey = await generateEncryptionKey(walletClient, platformAdapter, 'my-custom-seed');\n * ```\n */\nexport async function generateEncryptionKey(\n wallet: WalletClient,\n platformAdapter: VanaPlatformAdapter,\n seed: string = DEFAULT_ENCRYPTION_SEED,\n): Promise<string> {\n if (!wallet.account) {\n throw new Error(\"Wallet account is required for encryption key generation\");\n }\n\n // Store account reference to satisfy TypeScript\n const account = wallet.account;\n\n // Use signature cache for encryption key generation\n // Create a simple message object for cache key generation\n const messageData = { message: seed };\n\n return await withSignatureCache(\n platformAdapter.cache,\n account.address,\n messageData,\n async () => {\n // Sign the encryption seed to generate a deterministic encryption key\n return await wallet.signMessage({\n account: account,\n message: seed,\n });\n },\n );\n}\n\n/**\n * Encrypts data using a wallet's public key for secure sharing with specific recipients.\n *\n * @remarks\n * This function implements asymmetric encryption using the recipient's public key,\n * enabling secure data sharing where only the holder of the corresponding private key\n * can decrypt the data. It automatically handles different data types and uses\n * platform-appropriate cryptographic libraries for maximum compatibility.\n *\n * This is commonly used when granting permissions to applications or servers,\n * where the data needs to be encrypted for a specific recipient's public key.\n *\n * @param data - The data to encrypt (string or Blob)\n * @param publicKey - The recipient's public key in hexadecimal format\n * @param platformAdapter - The platform adapter providing cryptographic operations\n * @returns Promise resolving to the encrypted data as a string\n * @throws {Error} When encryption fails due to invalid key or data format\n * @example\n * ```typescript\n * // Encrypt data for a specific application's public key\n * const appPublicKey = \"0x04a1b2c3...\"; // Application's public key\n * const sensitiveData = \"User's private information\";\n *\n * const encrypted = await encryptWithWalletPublicKey(\n * sensitiveData,\n * appPublicKey,\n * platformAdapter\n * );\n *\n * console.log('Encrypted for app:', encrypted);\n *\n * // Encrypt file data for server processing\n * const fileBlob = new File(['{\"name\":\"John\",\"age\":30}'], 'profile.json');\n * const encryptedFile = await encryptWithWalletPublicKey(\n * fileBlob,\n * serverPublicKey,\n * platformAdapter\n * );\n * ```\n */\nexport async function encryptWithWalletPublicKey(\n data: string | Blob,\n publicKey: string,\n platformAdapter: VanaPlatformAdapter,\n): Promise<string> {\n try {\n const dataString = data instanceof Blob ? await data.text() : data;\n return await platformAdapter.crypto.encryptWithWalletPublicKey(\n dataString,\n publicKey,\n );\n } catch (error) {\n throw new Error(`Failed to encrypt with wallet public key: ${error}`);\n }\n}\n\n/**\n * Decrypts data that was encrypted with the corresponding public key.\n *\n * @remarks\n * This function performs asymmetric decryption using the recipient's private key\n * to decrypt data that was encrypted with the corresponding public key. It's the\n * counterpart to `encryptWithWalletPublicKey` and is typically used by applications\n * or servers to decrypt data that was shared with them by users.\n *\n * The function automatically handles platform-specific cryptographic operations\n * and provides consistent behavior across browser and Node.js environments.\n *\n * @param encryptedData - The encrypted data string to decrypt\n * @param privateKey - The private key corresponding to the public key used for encryption\n * @param platformAdapter - The platform adapter providing cryptographic operations\n * @returns Promise resolving to the decrypted data as a string\n * @throws {Error} When decryption fails due to invalid key, corrupted data, or key mismatch\n * @example\n * ```typescript\n * // Decrypt data received from a user (server-side)\n * const encryptedUserData = \"encrypted_string_from_user\";\n * const serverPrivateKey = process.env.SERVER_PRIVATE_KEY;\n *\n * const decrypted = await decryptWithWalletPrivateKey(\n * encryptedUserData,\n * serverPrivateKey,\n * platformAdapter\n * );\n *\n * const userData = JSON.parse(decrypted);\n * console.log('User data:', userData);\n *\n * // Handle decryption errors gracefully\n * try {\n * const result = await decryptWithWalletPrivateKey(\n * encryptedData,\n * privateKey,\n * platformAdapter\n * );\n * } catch (error) {\n * if (error.message.includes('invalid key')) {\n * console.error('Key mismatch - data not encrypted for this recipient');\n * } else {\n * console.error('Decryption failed:', error.message);\n * }\n * }\n * ```\n */\nexport async function decryptWithWalletPrivateKey(\n encryptedData: string,\n privateKey: string,\n platformAdapter: VanaPlatformAdapter,\n): Promise<string> {\n try {\n return await platformAdapter.crypto.decryptWithWalletPrivateKey(\n encryptedData,\n privateKey,\n );\n } catch (error) {\n throw new Error(`Failed to decrypt with wallet private key: ${error}`);\n }\n}\n\n/**\n * Encrypt a file key with a DLP's public key using platform-appropriate cryptography\n *\n * @param fileKey The symmetric key used to encrypt the file\n * @param publicKey The DLP's public key\n * @param platformAdapter - The platform adapter for crypto operations\n * @returns The encrypted key that can be stored on-chain\n */\nexport async function encryptFileKey(\n fileKey: string,\n publicKey: string,\n platformAdapter: VanaPlatformAdapter,\n): Promise<string> {\n try {\n return await platformAdapter.crypto.encryptWithPublicKey(\n fileKey,\n publicKey,\n );\n } catch (error) {\n throw new Error(`Failed to encrypt file key: ${error}`);\n }\n}\n\n/**\n * Generate encryption parameters for secure file storage\n *\n * @param platformAdapter - The platform adapter for crypto operations\n * @returns An object containing the initialization vector and encryption key\n */\nexport async function getEncryptionParameters(\n platformAdapter: VanaPlatformAdapter,\n): Promise<{\n iv: string;\n key: string;\n}> {\n try {\n // Generate a new key pair for encryption parameters\n const keyPair = await platformAdapter.crypto.generateKeyPair();\n\n // Use parts of the generated keys as IV and key\n // In production, this would use proper key derivation\n return {\n iv: keyPair.publicKey.substring(0, 16),\n key: keyPair.privateKey.substring(0, 32),\n };\n } catch (error) {\n throw new Error(`Failed to generate encryption parameters: ${error}`);\n }\n}\n\n/**\n * Decrypt data that was encrypted with the DLP's public key using platform-appropriate cryptography\n *\n * @param encryptedData The encrypted data\n * @param privateKey The private key corresponding to the public key used for encryption\n * @param platformAdapter - The platform adapter for crypto operations\n * @returns The decrypted data\n */\nexport async function decryptWithPrivateKey(\n encryptedData: string,\n privateKey: string,\n platformAdapter: VanaPlatformAdapter,\n): Promise<string> {\n try {\n return await platformAdapter.crypto.decryptWithPrivateKey(\n encryptedData,\n privateKey,\n );\n } catch (error) {\n throw new Error(`Failed to decrypt with private key: ${error}`);\n }\n}\n\n/**\n * Encrypts data using a signed key generated from the user's wallet signature.\n *\n * @remarks\n * This is a pure cryptographic primitive that encrypts data using the Vana protocol's\n * standard encryption method. The key parameter must be a signature generated by the\n * `generateEncryptionKey` utility - this ensures deterministic key generation from the\n * user's wallet, enabling the same key to be regenerated for decryption.\n *\n * This function uses password-based encryption with the signature as the password,\n * providing symmetric encryption that can be decrypted with the same signature.\n *\n * @param data The data to encrypt (string or Blob)\n * @param key The signed key from `generateEncryptionKey` - MUST be a wallet signature\n * @param platformAdapter The platform adapter for crypto operations\n * @returns The encrypted data as Blob\n * @throws {Error} When encryption fails\n *\n * @example\n * ```typescript\n * // Generate the encryption key from wallet signature\n * const encryptionKey = await generateEncryptionKey(walletClient);\n *\n * // Encrypt data with the signed key\n * const encryptedBlob = await encryptBlobWithSignedKey(\n * \"My sensitive data\",\n * encryptionKey,\n * platformAdapter\n * );\n *\n * // Later, decrypt with the same key\n * const decryptedBlob = await decryptBlobWithSignedKey(\n * encryptedBlob,\n * encryptionKey,\n * platformAdapter\n * );\n * ```\n */\nexport async function encryptBlobWithSignedKey(\n data: string | Blob,\n key: string,\n platformAdapter: VanaPlatformAdapter,\n): Promise<Blob> {\n try {\n // Convert data to binary for encryption\n const dataBuffer =\n data instanceof Blob\n ? await data.arrayBuffer()\n : new TextEncoder().encode(data);\n const dataArray = new Uint8Array(dataBuffer);\n\n // Use platform adapter's password-based encryption\n const encrypted = await platformAdapter.crypto.encryptWithPassword(\n dataArray,\n key,\n );\n\n // Convert Uint8Array<ArrayBufferLike> to ArrayBuffer to satisfy BlobPart type\n const encryptedArrayBuffer = encrypted.buffer.slice(\n encrypted.byteOffset,\n encrypted.byteOffset + encrypted.byteLength,\n ) as ArrayBuffer;\n\n return new Blob([encryptedArrayBuffer], {\n type: \"application/octet-stream\",\n });\n } catch (error) {\n throw new Error(`Failed to encrypt data: ${error}`);\n }\n}\n\n/**\n * Generate a new key pair for asymmetric encryption\n *\n * @param platformAdapter - The platform adapter for crypto operations\n * @returns Promise resolving to public and private key pair\n */\nexport async function generateEncryptionKeyPair(\n platformAdapter: VanaPlatformAdapter,\n): Promise<{\n publicKey: string;\n privateKey: string;\n}> {\n try {\n return await platformAdapter.crypto.generateKeyPair();\n } catch (error) {\n throw new Error(`Failed to generate encryption key pair: ${error}`);\n }\n}\n\n/**\n * Generate a new PGP key pair with platform-appropriate configuration\n *\n * @param platformAdapter - The platform adapter for crypto operations\n * @param options - Key generation options\n * @param options.name - The name for the PGP key\n * @param options.email - The email for the PGP key\n * @param options.passphrase - Optional passphrase to protect the private key\n * @returns Promise resolving to public and private key pair\n */\nexport async function generatePGPKeyPair(\n platformAdapter: VanaPlatformAdapter,\n options?: {\n name?: string;\n email?: string;\n passphrase?: string;\n },\n): Promise<{ publicKey: string; privateKey: string }> {\n try {\n return await platformAdapter.pgp.generateKeyPair(options);\n } catch (error) {\n throw new Error(`Failed to generate PGP key pair: ${error}`);\n }\n}\n\n/**\n * Decrypts data using a signed key generated from the user's wallet signature.\n *\n * @remarks\n * This is a pure cryptographic primitive for decrypting data that was encrypted using\n * `encryptBlobWithSignedKey`. It is network-agnostic and only handles decryption - it does\n * not fetch data from any URL or make network requests. To decrypt a file from a URL, you\n * must first fetch the encrypted blob using one of the fetch utilities, then pass it to\n * this function.\n *\n * The key parameter must be the same signature that was used for encryption, typically\n * generated by the `generateEncryptionKey` utility. This ensures that only the user who\n * encrypted the data (or someone with the same wallet signature) can decrypt it.\n *\n * @param encryptedData The encrypted data to decrypt (string or Blob)\n * @param key The signed key from `generateEncryptionKey` - MUST be the same wallet signature used for encryption\n * @param platformAdapter The platform adapter for crypto operations\n * @returns Promise resolving to the decrypted blob\n * @throws {Error} When decryption fails due to wrong key or corrupted data\n *\n * @example\n * ```typescript\n * // Generate the same encryption key used for encryption\n * const encryptionKey = await generateEncryptionKey(walletClient);\n *\n * // Fetch and decrypt using the high-level API\n * const file = await vana.data.getUserFiles({ owner: \"0x...\" })[0];\n * const decryptedBlob = await vana.data.decryptFile(file);\n *\n * // Or use the low-level primitives directly\n * const encryptedBlob = await vana.data.fetch(file.url);\n * const decryptedBlob = await decryptBlobWithSignedKey(\n * encryptedBlob,\n * encryptionKey,\n * platformAdapter\n * );\n *\n * // With IPFS gateway fallback\n * const encryptedBlob = await vana.data.fetchFromIPFS(file.url, {\n * gateways: ['https://my-gateway.com/ipfs/', 'https://ipfs.io/ipfs/']\n * });\n * const decryptedBlob = await decryptBlobWithSignedKey(\n * encryptedBlob,\n * encryptionKey,\n * platformAdapter\n * );\n * ```\n */\nexport async function decryptBlobWithSignedKey(\n encryptedData: string | Blob,\n key: string,\n platformAdapter: VanaPlatformAdapter,\n): Promise<Blob> {\n try {\n // Convert encrypted data to proper format\n const encryptedBuffer =\n encryptedData instanceof Blob\n ? await encryptedData.arrayBuffer()\n : new TextEncoder().encode(encryptedData);\n const encryptedArray = new Uint8Array(encryptedBuffer);\n\n // Use platform adapter's password-based decryption\n const decrypted = await platformAdapter.crypto.decryptWithPassword(\n encryptedArray,\n key,\n );\n\n // Convert Uint8Array<ArrayBufferLike> to ArrayBuffer to satisfy BlobPart type\n const decryptedArrayBuffer = decrypted.buffer.slice(\n decrypted.byteOffset,\n decrypted.byteOffset + decrypted.byteLength,\n ) as ArrayBuffer;\n\n // Convert decrypted data back to Blob\n return new Blob([decryptedArrayBuffer], { type: \"text/plain\" });\n } catch (error) {\n throw new Error(`Failed to decrypt data: ${error}`);\n }\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../src/utils/encryption.ts"],"sourcesContent":["/**\n * Canonical Vana Protocol Encryption Functions\n *\n * These functions define the standard way user data is encrypted/decrypted in Vana.\n * All applications should use these canonical functions to ensure compatibility\n * with existing encrypted data on the Vana network.\n *\n * This module uses the platform adapter pattern to provide consistent\n * encryption functionality across Node.js and browser environments.\n */\n\nimport type { WalletClient } from \"viem\";\nimport type { VanaPlatformAdapter } from \"../platform/interface\";\nimport { withSignatureCache } from \"./signatureCache\";\n\n/**\n * Default encryption seed message used throughout Vana protocol\n */\nexport const DEFAULT_ENCRYPTION_SEED =\n \"Please sign to retrieve your encryption key\";\n\n/**\n * Generate an encryption key by signing the canonical Vana encryption seed\n *\n * This is the standard protocol function for creating encryption keys in Vana.\n * The signature serves as a symmetric encryption key for user data.\n *\n * @param wallet The user's wallet client for signing\n * @param platformAdapter Platform adapter for cache operations\n * @param seed Optional custom encryption seed (defaults to Vana standard)\n * @returns The signature that serves as the encryption key\n * @throws {Error} When wallet account is required but not provided\n * @example\n * ```typescript\n * const encryptionKey = await generateEncryptionKey(walletClient, platformAdapter);\n * console.log('Generated encryption key:', encryptionKey);\n *\n * // Use with custom seed\n * const customKey = await generateEncryptionKey(walletClient, platformAdapter, 'my-custom-seed');\n * ```\n */\nexport async function generateEncryptionKey(\n wallet: WalletClient,\n platformAdapter: VanaPlatformAdapter,\n seed: string = DEFAULT_ENCRYPTION_SEED,\n): Promise<string> {\n if (!wallet.account) {\n throw new Error(\"Wallet account is required for encryption key generation\");\n }\n\n // Store account reference to satisfy TypeScript\n const { account } = wallet;\n\n // Use signature cache for encryption key generation\n // Create a simple message object for cache key generation\n const messageData = { message: seed };\n\n return await withSignatureCache(\n platformAdapter.cache,\n account.address,\n messageData,\n async () => {\n // Sign the encryption seed to generate a deterministic encryption key\n return await wallet.signMessage({\n account,\n message: seed,\n });\n },\n );\n}\n\n/**\n * Encrypts data using a wallet's public key for secure sharing with specific recipients.\n *\n * @remarks\n * This function implements asymmetric encryption using the recipient's public key,\n * enabling secure data sharing where only the holder of the corresponding private key\n * can decrypt the data. It automatically handles different data types and uses\n * platform-appropriate cryptographic libraries for maximum compatibility.\n *\n * This is commonly used when granting permissions to applications or servers,\n * where the data needs to be encrypted for a specific recipient's public key.\n *\n * @param data - The data to encrypt (string or Blob)\n * @param publicKey - The recipient's public key in hexadecimal format\n * @param platformAdapter - The platform adapter providing cryptographic operations\n * @returns Promise resolving to the encrypted data as a string\n * @throws {Error} When encryption fails due to invalid key or data format\n * @example\n * ```typescript\n * // Encrypt data for a specific application's public key\n * const appPublicKey = \"0x04a1b2c3...\"; // Application's public key\n * const sensitiveData = \"User's private information\";\n *\n * const encrypted = await encryptWithWalletPublicKey(\n * sensitiveData,\n * appPublicKey,\n * platformAdapter\n * );\n *\n * console.log('Encrypted for app:', encrypted);\n *\n * // Encrypt file data for server processing\n * const fileBlob = new File(['{\"name\":\"John\",\"age\":30}'], 'profile.json');\n * const encryptedFile = await encryptWithWalletPublicKey(\n * fileBlob,\n * serverPublicKey,\n * platformAdapter\n * );\n * ```\n */\nexport async function encryptWithWalletPublicKey(\n data: string | Blob,\n publicKey: string,\n platformAdapter: VanaPlatformAdapter,\n): Promise<string> {\n try {\n const dataString = data instanceof Blob ? await data.text() : data;\n return await platformAdapter.crypto.encryptWithWalletPublicKey(\n dataString,\n publicKey,\n );\n } catch (error) {\n throw new Error(\n `Failed to encrypt with wallet public key: ${String(error)}`,\n );\n }\n}\n\n/**\n * Decrypts data that was encrypted with the corresponding public key.\n *\n * @remarks\n * This function performs asymmetric decryption using the recipient's private key\n * to decrypt data that was encrypted with the corresponding public key. It's the\n * counterpart to `encryptWithWalletPublicKey` and is typically used by applications\n * or servers to decrypt data that was shared with them by users.\n *\n * The function automatically handles platform-specific cryptographic operations\n * and provides consistent behavior across browser and Node.js environments.\n *\n * @param encryptedData - The encrypted data string to decrypt\n * @param privateKey - The private key corresponding to the public key used for encryption\n * @param platformAdapter - The platform adapter providing cryptographic operations\n * @returns Promise resolving to the decrypted data as a string\n * @throws {Error} When decryption fails due to invalid key, corrupted data, or key mismatch\n * @example\n * ```typescript\n * // Decrypt data received from a user (server-side)\n * const encryptedUserData = \"encrypted_string_from_user\";\n * const serverPrivateKey = process.env.SERVER_PRIVATE_KEY;\n *\n * const decrypted = await decryptWithWalletPrivateKey(\n * encryptedUserData,\n * serverPrivateKey,\n * platformAdapter\n * );\n *\n * const userData = JSON.parse(decrypted);\n * console.log('User data:', userData);\n *\n * // Handle decryption errors gracefully\n * try {\n * const result = await decryptWithWalletPrivateKey(\n * encryptedData,\n * privateKey,\n * platformAdapter\n * );\n * } catch (error) {\n * if (error.message.includes('invalid key')) {\n * console.error('Key mismatch - data not encrypted for this recipient');\n * } else {\n * console.error('Decryption failed:', error.message);\n * }\n * }\n * ```\n */\nexport async function decryptWithWalletPrivateKey(\n encryptedData: string,\n privateKey: string,\n platformAdapter: VanaPlatformAdapter,\n): Promise<string> {\n try {\n return await platformAdapter.crypto.decryptWithWalletPrivateKey(\n encryptedData,\n privateKey,\n );\n } catch (error) {\n throw new Error(\n `Failed to decrypt with wallet private key: ${String(error)}`,\n );\n }\n}\n\n/**\n * Encrypt a file key with a DLP's public key using platform-appropriate cryptography\n *\n * @param fileKey The symmetric key used to encrypt the file\n * @param publicKey The DLP's public key\n * @param platformAdapter - The platform adapter for crypto operations\n * @returns The encrypted key that can be stored on-chain\n */\nexport async function encryptFileKey(\n fileKey: string,\n publicKey: string,\n platformAdapter: VanaPlatformAdapter,\n): Promise<string> {\n try {\n return await platformAdapter.crypto.encryptWithPublicKey(\n fileKey,\n publicKey,\n );\n } catch (error) {\n throw new Error(`Failed to encrypt file key: ${String(error)}`);\n }\n}\n\n/**\n * Generate encryption parameters for secure file storage\n *\n * @param platformAdapter - The platform adapter for crypto operations\n * @returns An object containing the initialization vector and encryption key\n */\nexport async function getEncryptionParameters(\n platformAdapter: VanaPlatformAdapter,\n): Promise<{\n iv: string;\n key: string;\n}> {\n try {\n // Generate a new key pair for encryption parameters\n const keyPair = await platformAdapter.crypto.generateKeyPair();\n\n // Use parts of the generated keys as IV and key\n // In production, this would use proper key derivation\n return {\n iv: keyPair.publicKey.substring(0, 16),\n key: keyPair.privateKey.substring(0, 32),\n };\n } catch (error) {\n throw new Error(\n `Failed to generate encryption parameters: ${String(error)}`,\n );\n }\n}\n\n/**\n * Decrypt data that was encrypted with the DLP's public key using platform-appropriate cryptography\n *\n * @param encryptedData The encrypted data\n * @param privateKey The private key corresponding to the public key used for encryption\n * @param platformAdapter - The platform adapter for crypto operations\n * @returns The decrypted data\n */\nexport async function decryptWithPrivateKey(\n encryptedData: string,\n privateKey: string,\n platformAdapter: VanaPlatformAdapter,\n): Promise<string> {\n try {\n return await platformAdapter.crypto.decryptWithPrivateKey(\n encryptedData,\n privateKey,\n );\n } catch (error) {\n throw new Error(`Failed to decrypt with private key: ${String(error)}`);\n }\n}\n\n/**\n * Encrypts data using a signed key generated from the user's wallet signature.\n *\n * @remarks\n * This is a pure cryptographic primitive that encrypts data using the Vana protocol's\n * standard encryption method. The key parameter must be a signature generated by the\n * `generateEncryptionKey` utility - this ensures deterministic key generation from the\n * user's wallet, enabling the same key to be regenerated for decryption.\n *\n * This function uses password-based encryption with the signature as the password,\n * providing symmetric encryption that can be decrypted with the same signature.\n *\n * @param data The data to encrypt (string or Blob)\n * @param key The signed key from `generateEncryptionKey` - MUST be a wallet signature\n * @param platformAdapter The platform adapter for crypto operations\n * @returns The encrypted data as Blob\n * @throws {Error} When encryption fails\n *\n * @example\n * ```typescript\n * // Generate the encryption key from wallet signature\n * const encryptionKey = await generateEncryptionKey(walletClient);\n *\n * // Encrypt data with the signed key\n * const encryptedBlob = await encryptBlobWithSignedKey(\n * \"My sensitive data\",\n * encryptionKey,\n * platformAdapter\n * );\n *\n * // Later, decrypt with the same key\n * const decryptedBlob = await decryptBlobWithSignedKey(\n * encryptedBlob,\n * encryptionKey,\n * platformAdapter\n * );\n * ```\n */\nexport async function encryptBlobWithSignedKey(\n data: string | Blob,\n key: string,\n platformAdapter: VanaPlatformAdapter,\n): Promise<Blob> {\n try {\n // Convert data to binary for encryption\n const dataBuffer =\n data instanceof Blob\n ? await data.arrayBuffer()\n : new TextEncoder().encode(data);\n const dataArray = new Uint8Array(dataBuffer);\n\n // Use platform adapter's password-based encryption\n const encrypted = await platformAdapter.crypto.encryptWithPassword(\n dataArray,\n key,\n );\n\n // Convert Uint8Array<ArrayBufferLike> to ArrayBuffer to satisfy BlobPart type\n const encryptedArrayBuffer = encrypted.buffer.slice(\n encrypted.byteOffset,\n encrypted.byteOffset + encrypted.byteLength,\n ) as ArrayBuffer;\n\n return new Blob([encryptedArrayBuffer], {\n type: \"application/octet-stream\",\n });\n } catch (error) {\n throw new Error(`Failed to encrypt data: ${String(error)}`);\n }\n}\n\n/**\n * Generate a new key pair for asymmetric encryption\n *\n * @param platformAdapter - The platform adapter for crypto operations\n * @returns Promise resolving to public and private key pair\n */\nexport async function generateEncryptionKeyPair(\n platformAdapter: VanaPlatformAdapter,\n): Promise<{\n publicKey: string;\n privateKey: string;\n}> {\n try {\n return await platformAdapter.crypto.generateKeyPair();\n } catch (error) {\n throw new Error(`Failed to generate encryption key pair: ${String(error)}`);\n }\n}\n\n/**\n * Generate a new PGP key pair with platform-appropriate configuration\n *\n * @param platformAdapter - The platform adapter for crypto operations\n * @param options - Key generation options\n * @param options.name - The name for the PGP key\n * @param options.email - The email for the PGP key\n * @param options.passphrase - Optional passphrase to protect the private key\n * @returns Promise resolving to public and private key pair\n */\nexport async function generatePGPKeyPair(\n platformAdapter: VanaPlatformAdapter,\n options?: {\n name?: string;\n email?: string;\n passphrase?: string;\n },\n): Promise<{ publicKey: string; privateKey: string }> {\n try {\n return await platformAdapter.pgp.generateKeyPair(options);\n } catch (error) {\n throw new Error(`Failed to generate PGP key pair: ${String(error)}`);\n }\n}\n\n/**\n * Decrypts data using a signed key generated from the user's wallet signature.\n *\n * @remarks\n * This is a pure cryptographic primitive for decrypting data that was encrypted using\n * `encryptBlobWithSignedKey`. It is network-agnostic and only handles decryption - it does\n * not fetch data from any URL or make network requests. To decrypt a file from a URL, you\n * must first fetch the encrypted blob using one of the fetch utilities, then pass it to\n * this function.\n *\n * The key parameter must be the same signature that was used for encryption, typically\n * generated by the `generateEncryptionKey` utility. This ensures that only the user who\n * encrypted the data (or someone with the same wallet signature) can decrypt it.\n *\n * @param encryptedData The encrypted data to decrypt (string or Blob)\n * @param key The signed key from `generateEncryptionKey` - MUST be the same wallet signature used for encryption\n * @param platformAdapter The platform adapter for crypto operations\n * @returns Promise resolving to the decrypted blob\n * @throws {Error} When decryption fails due to wrong key or corrupted data\n *\n * @example\n * ```typescript\n * // Generate the same encryption key used for encryption\n * const encryptionKey = await generateEncryptionKey(walletClient);\n *\n * // Fetch and decrypt using the high-level API\n * const file = await vana.data.getUserFiles({ owner: \"0x...\" })[0];\n * const decryptedBlob = await vana.data.decryptFile(file);\n *\n * // Or use the low-level primitives directly\n * const encryptedBlob = await vana.data.fetch(file.url);\n * const decryptedBlob = await decryptBlobWithSignedKey(\n * encryptedBlob,\n * encryptionKey,\n * platformAdapter\n * );\n *\n * // With IPFS gateway fallback\n * const encryptedBlob = await vana.data.fetchFromIPFS(file.url, {\n * gateways: ['https://my-gateway.com/ipfs/', 'https://ipfs.io/ipfs/']\n * });\n * const decryptedBlob = await decryptBlobWithSignedKey(\n * encryptedBlob,\n * encryptionKey,\n * platformAdapter\n * );\n * ```\n */\nexport async function decryptBlobWithSignedKey(\n encryptedData: string | Blob,\n key: string,\n platformAdapter: VanaPlatformAdapter,\n): Promise<Blob> {\n try {\n // Convert encrypted data to proper format\n const encryptedBuffer =\n encryptedData instanceof Blob\n ? await encryptedData.arrayBuffer()\n : new TextEncoder().encode(encryptedData);\n const encryptedArray = new Uint8Array(encryptedBuffer);\n\n // Use platform adapter's password-based decryption\n const decrypted = await platformAdapter.crypto.decryptWithPassword(\n encryptedArray,\n key,\n );\n\n // Convert Uint8Array<ArrayBufferLike> to ArrayBuffer to satisfy BlobPart type\n const decryptedArrayBuffer = decrypted.buffer.slice(\n decrypted.byteOffset,\n decrypted.byteOffset + decrypted.byteLength,\n ) as ArrayBuffer;\n\n // Convert decrypted data back to Blob\n return new Blob([decryptedArrayBuffer], { type: \"text/plain\" });\n } catch (error) {\n throw new Error(`Failed to decrypt data: ${String(error)}`);\n }\n}\n"],"mappings":"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","names":[]}
@@ -1,6 +1,3 @@
1
- import { WalletClient } from 'viem';
2
- import { VanaPlatformAdapter } from '../platform/interface.js';
3
-
4
1
  /**
5
2
  * Canonical Vana Protocol Encryption Functions
6
3
  *
@@ -11,11 +8,12 @@ import { VanaPlatformAdapter } from '../platform/interface.js';
11
8
  * This module uses the platform adapter pattern to provide consistent
12
9
  * encryption functionality across Node.js and browser environments.
13
10
  */
14
-
11
+ import type { WalletClient } from "viem";
12
+ import type { VanaPlatformAdapter } from "../platform/interface";
15
13
  /**
16
14
  * Default encryption seed message used throughout Vana protocol
17
15
  */
18
- declare const DEFAULT_ENCRYPTION_SEED = "Please sign to retrieve your encryption key";
16
+ export declare const DEFAULT_ENCRYPTION_SEED = "Please sign to retrieve your encryption key";
19
17
  /**
20
18
  * Generate an encryption key by signing the canonical Vana encryption seed
21
19
  *
@@ -36,7 +34,7 @@ declare const DEFAULT_ENCRYPTION_SEED = "Please sign to retrieve your encryption
36
34
  * const customKey = await generateEncryptionKey(walletClient, platformAdapter, 'my-custom-seed');
37
35
  * ```
38
36
  */
39
- declare function generateEncryptionKey(wallet: WalletClient, platformAdapter: VanaPlatformAdapter, seed?: string): Promise<string>;
37
+ export declare function generateEncryptionKey(wallet: WalletClient, platformAdapter: VanaPlatformAdapter, seed?: string): Promise<string>;
40
38
  /**
41
39
  * Encrypts data using a wallet's public key for secure sharing with specific recipients.
42
40
  *
@@ -77,7 +75,7 @@ declare function generateEncryptionKey(wallet: WalletClient, platformAdapter: Va
77
75
  * );
78
76
  * ```
79
77
  */
80
- declare function encryptWithWalletPublicKey(data: string | Blob, publicKey: string, platformAdapter: VanaPlatformAdapter): Promise<string>;
78
+ export declare function encryptWithWalletPublicKey(data: string | Blob, publicKey: string, platformAdapter: VanaPlatformAdapter): Promise<string>;
81
79
  /**
82
80
  * Decrypts data that was encrypted with the corresponding public key.
83
81
  *
@@ -126,7 +124,7 @@ declare function encryptWithWalletPublicKey(data: string | Blob, publicKey: stri
126
124
  * }
127
125
  * ```
128
126
  */
129
- declare function decryptWithWalletPrivateKey(encryptedData: string, privateKey: string, platformAdapter: VanaPlatformAdapter): Promise<string>;
127
+ export declare function decryptWithWalletPrivateKey(encryptedData: string, privateKey: string, platformAdapter: VanaPlatformAdapter): Promise<string>;
130
128
  /**
131
129
  * Encrypt a file key with a DLP's public key using platform-appropriate cryptography
132
130
  *
@@ -135,14 +133,14 @@ declare function decryptWithWalletPrivateKey(encryptedData: string, privateKey:
135
133
  * @param platformAdapter - The platform adapter for crypto operations
136
134
  * @returns The encrypted key that can be stored on-chain
137
135
  */
138
- declare function encryptFileKey(fileKey: string, publicKey: string, platformAdapter: VanaPlatformAdapter): Promise<string>;
136
+ export declare function encryptFileKey(fileKey: string, publicKey: string, platformAdapter: VanaPlatformAdapter): Promise<string>;
139
137
  /**
140
138
  * Generate encryption parameters for secure file storage
141
139
  *
142
140
  * @param platformAdapter - The platform adapter for crypto operations
143
141
  * @returns An object containing the initialization vector and encryption key
144
142
  */
145
- declare function getEncryptionParameters(platformAdapter: VanaPlatformAdapter): Promise<{
143
+ export declare function getEncryptionParameters(platformAdapter: VanaPlatformAdapter): Promise<{
146
144
  iv: string;
147
145
  key: string;
148
146
  }>;
@@ -154,7 +152,7 @@ declare function getEncryptionParameters(platformAdapter: VanaPlatformAdapter):
154
152
  * @param platformAdapter - The platform adapter for crypto operations
155
153
  * @returns The decrypted data
156
154
  */
157
- declare function decryptWithPrivateKey(encryptedData: string, privateKey: string, platformAdapter: VanaPlatformAdapter): Promise<string>;
155
+ export declare function decryptWithPrivateKey(encryptedData: string, privateKey: string, platformAdapter: VanaPlatformAdapter): Promise<string>;
158
156
  /**
159
157
  * Encrypts data using a signed key generated from the user's wallet signature.
160
158
  *
@@ -193,14 +191,14 @@ declare function decryptWithPrivateKey(encryptedData: string, privateKey: string
193
191
  * );
194
192
  * ```
195
193
  */
196
- declare function encryptBlobWithSignedKey(data: string | Blob, key: string, platformAdapter: VanaPlatformAdapter): Promise<Blob>;
194
+ export declare function encryptBlobWithSignedKey(data: string | Blob, key: string, platformAdapter: VanaPlatformAdapter): Promise<Blob>;
197
195
  /**
198
196
  * Generate a new key pair for asymmetric encryption
199
197
  *
200
198
  * @param platformAdapter - The platform adapter for crypto operations
201
199
  * @returns Promise resolving to public and private key pair
202
200
  */
203
- declare function generateEncryptionKeyPair(platformAdapter: VanaPlatformAdapter): Promise<{
201
+ export declare function generateEncryptionKeyPair(platformAdapter: VanaPlatformAdapter): Promise<{
204
202
  publicKey: string;
205
203
  privateKey: string;
206
204
  }>;
@@ -214,7 +212,7 @@ declare function generateEncryptionKeyPair(platformAdapter: VanaPlatformAdapter)
214
212
  * @param options.passphrase - Optional passphrase to protect the private key
215
213
  * @returns Promise resolving to public and private key pair
216
214
  */
217
- declare function generatePGPKeyPair(platformAdapter: VanaPlatformAdapter, options?: {
215
+ export declare function generatePGPKeyPair(platformAdapter: VanaPlatformAdapter, options?: {
218
216
  name?: string;
219
217
  email?: string;
220
218
  passphrase?: string;
@@ -270,6 +268,4 @@ declare function generatePGPKeyPair(platformAdapter: VanaPlatformAdapter, option
270
268
  * );
271
269
  * ```
272
270
  */
273
- declare function decryptBlobWithSignedKey(encryptedData: string | Blob, key: string, platformAdapter: VanaPlatformAdapter): Promise<Blob>;
274
-
275
- export { DEFAULT_ENCRYPTION_SEED, decryptBlobWithSignedKey, decryptWithPrivateKey, decryptWithWalletPrivateKey, encryptBlobWithSignedKey, encryptFileKey, encryptWithWalletPublicKey, generateEncryptionKey, generateEncryptionKeyPair, generatePGPKeyPair, getEncryptionParameters };
271
+ export declare function decryptBlobWithSignedKey(encryptedData: string | Blob, key: string, platformAdapter: VanaPlatformAdapter): Promise<Blob>;
@@ -4,7 +4,7 @@ async function generateEncryptionKey(wallet, platformAdapter, seed = DEFAULT_ENC
4
4
  if (!wallet.account) {
5
5
  throw new Error("Wallet account is required for encryption key generation");
6
6
  }
7
- const account = wallet.account;
7
+ const { account } = wallet;
8
8
  const messageData = { message: seed };
9
9
  return await withSignatureCache(
10
10
  platformAdapter.cache,
@@ -26,7 +26,9 @@ async function encryptWithWalletPublicKey(data, publicKey, platformAdapter) {
26
26
  publicKey
27
27
  );
28
28
  } catch (error) {
29
- throw new Error(`Failed to encrypt with wallet public key: ${error}`);
29
+ throw new Error(
30
+ `Failed to encrypt with wallet public key: ${String(error)}`
31
+ );
30
32
  }
31
33
  }
32
34
  async function decryptWithWalletPrivateKey(encryptedData, privateKey, platformAdapter) {
@@ -36,7 +38,9 @@ async function decryptWithWalletPrivateKey(encryptedData, privateKey, platformAd
36
38
  privateKey
37
39
  );
38
40
  } catch (error) {
39
- throw new Error(`Failed to decrypt with wallet private key: ${error}`);
41
+ throw new Error(
42
+ `Failed to decrypt with wallet private key: ${String(error)}`
43
+ );
40
44
  }
41
45
  }
42
46
  async function encryptFileKey(fileKey, publicKey, platformAdapter) {
@@ -46,7 +50,7 @@ async function encryptFileKey(fileKey, publicKey, platformAdapter) {
46
50
  publicKey
47
51
  );
48
52
  } catch (error) {
49
- throw new Error(`Failed to encrypt file key: ${error}`);
53
+ throw new Error(`Failed to encrypt file key: ${String(error)}`);
50
54
  }
51
55
  }
52
56
  async function getEncryptionParameters(platformAdapter) {
@@ -57,7 +61,9 @@ async function getEncryptionParameters(platformAdapter) {
57
61
  key: keyPair.privateKey.substring(0, 32)
58
62
  };
59
63
  } catch (error) {
60
- throw new Error(`Failed to generate encryption parameters: ${error}`);
64
+ throw new Error(
65
+ `Failed to generate encryption parameters: ${String(error)}`
66
+ );
61
67
  }
62
68
  }
63
69
  async function decryptWithPrivateKey(encryptedData, privateKey, platformAdapter) {
@@ -67,7 +73,7 @@ async function decryptWithPrivateKey(encryptedData, privateKey, platformAdapter)
67
73
  privateKey
68
74
  );
69
75
  } catch (error) {
70
- throw new Error(`Failed to decrypt with private key: ${error}`);
76
+ throw new Error(`Failed to decrypt with private key: ${String(error)}`);
71
77
  }
72
78
  }
73
79
  async function encryptBlobWithSignedKey(data, key, platformAdapter) {
@@ -86,21 +92,21 @@ async function encryptBlobWithSignedKey(data, key, platformAdapter) {
86
92
  type: "application/octet-stream"
87
93
  });
88
94
  } catch (error) {
89
- throw new Error(`Failed to encrypt data: ${error}`);
95
+ throw new Error(`Failed to encrypt data: ${String(error)}`);
90
96
  }
91
97
  }
92
98
  async function generateEncryptionKeyPair(platformAdapter) {
93
99
  try {
94
100
  return await platformAdapter.crypto.generateKeyPair();
95
101
  } catch (error) {
96
- throw new Error(`Failed to generate encryption key pair: ${error}`);
102
+ throw new Error(`Failed to generate encryption key pair: ${String(error)}`);
97
103
  }
98
104
  }
99
105
  async function generatePGPKeyPair(platformAdapter, options) {
100
106
  try {
101
107
  return await platformAdapter.pgp.generateKeyPair(options);
102
108
  } catch (error) {
103
- throw new Error(`Failed to generate PGP key pair: ${error}`);
109
+ throw new Error(`Failed to generate PGP key pair: ${String(error)}`);
104
110
  }
105
111
  }
106
112
  async function decryptBlobWithSignedKey(encryptedData, key, platformAdapter) {
@@ -117,7 +123,7 @@ async function decryptBlobWithSignedKey(encryptedData, key, platformAdapter) {
117
123
  );
118
124
  return new Blob([decryptedArrayBuffer], { type: "text/plain" });
119
125
  } catch (error) {
120
- throw new Error(`Failed to decrypt data: ${error}`);
126
+ throw new Error(`Failed to decrypt data: ${String(error)}`);
121
127
  }
122
128
  }
123
129
  export {