@primuslabs/fhetransform-sdk 0.4.0

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 (302) hide show
  1. package/README.md +198 -0
  2. package/dist/abis/acl.abi.d.ts +379 -0
  3. package/dist/abis/acl.abi.js +495 -0
  4. package/dist/abis/acl.abi.js.map +1 -0
  5. package/dist/abis/alphatrion_reward.abi.d.ts +407 -0
  6. package/dist/abis/alphatrion_reward.abi.js +532 -0
  7. package/dist/abis/alphatrion_reward.abi.js.map +1 -0
  8. package/dist/abis/ciphertext_digests.abi.d.ts +336 -0
  9. package/dist/abis/ciphertext_digests.abi.js +444 -0
  10. package/dist/abis/ciphertext_digests.abi.js.map +1 -0
  11. package/dist/abis/ciphertext_verification.abi.d.ts +637 -0
  12. package/dist/abis/ciphertext_verification.abi.js +830 -0
  13. package/dist/abis/ciphertext_verification.abi.js.map +1 -0
  14. package/dist/abis/convert_token.abi.d.ts +922 -0
  15. package/dist/abis/convert_token.abi.js +1208 -0
  16. package/dist/abis/convert_token.abi.js.map +1 -0
  17. package/dist/abis/decryption.abi.d.ts +956 -0
  18. package/dist/abis/decryption.abi.js +1244 -0
  19. package/dist/abis/decryption.abi.js.map +1 -0
  20. package/dist/abis/erc20.abi.d.ts +265 -0
  21. package/dist/abis/erc20.abi.js +350 -0
  22. package/dist/abis/erc20.abi.js.map +1 -0
  23. package/dist/abis/fhe_executor.abi.d.ts +1535 -0
  24. package/dist/abis/fhe_executor.abi.js +1962 -0
  25. package/dist/abis/fhe_executor.abi.js.map +1 -0
  26. package/dist/abis/space_bridge_config.abi.d.ts +792 -0
  27. package/dist/abis/space_bridge_config.abi.js +1032 -0
  28. package/dist/abis/space_bridge_config.abi.js.map +1 -0
  29. package/dist/abis/token.abi.d.ts +630 -0
  30. package/dist/abis/token.abi.js +828 -0
  31. package/dist/abis/token.abi.js.map +1 -0
  32. package/dist/cli/eusdc.d.ts +2 -0
  33. package/dist/cli/eusdc.js +41 -0
  34. package/dist/cli/eusdc.js.map +1 -0
  35. package/dist/contract/callbacks.d.ts +59 -0
  36. package/dist/contract/callbacks.js +2 -0
  37. package/dist/contract/callbacks.js.map +1 -0
  38. package/dist/contract/convert-token.d.ts +107 -0
  39. package/dist/contract/convert-token.js +249 -0
  40. package/dist/contract/convert-token.js.map +1 -0
  41. package/dist/contract/token.d.ts +167 -0
  42. package/dist/contract/token.js +404 -0
  43. package/dist/contract/token.js.map +1 -0
  44. package/dist/contract/transaction.d.ts +29 -0
  45. package/dist/contract/transaction.js +2 -0
  46. package/dist/contract/transaction.js.map +1 -0
  47. package/dist/core/address.d.ts +118 -0
  48. package/dist/core/address.js +200 -0
  49. package/dist/core/address.js.map +1 -0
  50. package/dist/core/auth.d.ts +68 -0
  51. package/dist/core/auth.js +58 -0
  52. package/dist/core/auth.js.map +1 -0
  53. package/dist/core/bytes.d.ts +48 -0
  54. package/dist/core/bytes.js +117 -0
  55. package/dist/core/bytes.js.map +1 -0
  56. package/dist/core/cache-manager.d.ts +138 -0
  57. package/dist/core/cache-manager.js +440 -0
  58. package/dist/core/cache-manager.js.map +1 -0
  59. package/dist/core/chain.d.ts +41 -0
  60. package/dist/core/chain.js +59 -0
  61. package/dist/core/chain.js.map +1 -0
  62. package/dist/core/constants.d.ts +24 -0
  63. package/dist/core/constants.js +25 -0
  64. package/dist/core/constants.js.map +1 -0
  65. package/dist/core/error.d.ts +2 -0
  66. package/dist/core/error.js +14 -0
  67. package/dist/core/error.js.map +1 -0
  68. package/dist/core/errors/error-catalog.d.ts +29 -0
  69. package/dist/core/errors/error-catalog.js +84 -0
  70. package/dist/core/errors/error-catalog.js.map +1 -0
  71. package/dist/core/errors/error-codes.d.ts +52 -0
  72. package/dist/core/errors/error-codes.js +61 -0
  73. package/dist/core/errors/error-codes.js.map +1 -0
  74. package/dist/core/errors/error-utils.d.ts +27 -0
  75. package/dist/core/errors/error-utils.js +110 -0
  76. package/dist/core/errors/error-utils.js.map +1 -0
  77. package/dist/core/errors/fhe-error.d.ts +98 -0
  78. package/dist/core/errors/fhe-error.js +190 -0
  79. package/dist/core/errors/fhe-error.js.map +1 -0
  80. package/dist/core/errors/index.d.ts +4 -0
  81. package/dist/core/errors/index.js +5 -0
  82. package/dist/core/errors/index.js.map +1 -0
  83. package/dist/core/estimate.d.ts +39 -0
  84. package/dist/core/estimate.js +111 -0
  85. package/dist/core/estimate.js.map +1 -0
  86. package/dist/core/event.d.ts +212 -0
  87. package/dist/core/event.js +42 -0
  88. package/dist/core/event.js.map +1 -0
  89. package/dist/core/fhe-type.d.ts +75 -0
  90. package/dist/core/fhe-type.js +115 -0
  91. package/dist/core/fhe-type.js.map +1 -0
  92. package/dist/core/fhe.d.ts +11 -0
  93. package/dist/core/fhe.js +23 -0
  94. package/dist/core/fhe.js.map +1 -0
  95. package/dist/core/handle.d.ts +42 -0
  96. package/dist/core/handle.js +99 -0
  97. package/dist/core/handle.js.map +1 -0
  98. package/dist/core/json-utils.d.ts +18 -0
  99. package/dist/core/json-utils.js +37 -0
  100. package/dist/core/json-utils.js.map +1 -0
  101. package/dist/core/kms.d.ts +42 -0
  102. package/dist/core/kms.js +70 -0
  103. package/dist/core/kms.js.map +1 -0
  104. package/dist/core/logger.d.ts +3 -0
  105. package/dist/core/logger.js +11 -0
  106. package/dist/core/logger.js.map +1 -0
  107. package/dist/core/pretty-print.d.ts +18 -0
  108. package/dist/core/pretty-print.js +84 -0
  109. package/dist/core/pretty-print.js.map +1 -0
  110. package/dist/core/primitives.d.ts +22 -0
  111. package/dist/core/primitives.js +2 -0
  112. package/dist/core/primitives.js.map +1 -0
  113. package/dist/core/retryable-handler.d.ts +74 -0
  114. package/dist/core/retryable-handler.js +227 -0
  115. package/dist/core/retryable-handler.js.map +1 -0
  116. package/dist/core/signer-address-info.d.ts +15 -0
  117. package/dist/core/signer-address-info.js +33 -0
  118. package/dist/core/signer-address-info.js.map +1 -0
  119. package/dist/core/string.d.ts +28 -0
  120. package/dist/core/string.js +33 -0
  121. package/dist/core/string.js.map +1 -0
  122. package/dist/core/swallow.d.ts +23 -0
  123. package/dist/core/swallow.js +37 -0
  124. package/dist/core/swallow.js.map +1 -0
  125. package/dist/core/system-contract-info.d.ts +17 -0
  126. package/dist/core/system-contract-info.js +41 -0
  127. package/dist/core/system-contract-info.js.map +1 -0
  128. package/dist/core/ttl-cache.d.ts +81 -0
  129. package/dist/core/ttl-cache.js +113 -0
  130. package/dist/core/ttl-cache.js.map +1 -0
  131. package/dist/core/tx-error-parser.d.ts +40 -0
  132. package/dist/core/tx-error-parser.js +83 -0
  133. package/dist/core/tx-error-parser.js.map +1 -0
  134. package/dist/core/utils.d.ts +62 -0
  135. package/dist/core/utils.js +143 -0
  136. package/dist/core/utils.js.map +1 -0
  137. package/dist/index.d.ts +40 -0
  138. package/dist/index.js +48 -0
  139. package/dist/index.js.map +1 -0
  140. package/dist/jazz/encrypt-key-p.d.ts +65 -0
  141. package/dist/jazz/encrypt-key-p.js +283 -0
  142. package/dist/jazz/encrypt-key-p.js.map +1 -0
  143. package/dist/jazz/encrypt-p.d.ts +82 -0
  144. package/dist/jazz/encrypt-p.js +139 -0
  145. package/dist/jazz/encrypt-p.js.map +1 -0
  146. package/dist/jazz/encrypt.d.ts +58 -0
  147. package/dist/jazz/encrypt.js +155 -0
  148. package/dist/jazz/encrypt.js.map +1 -0
  149. package/dist/jazz/input-proof-p.d.ts +122 -0
  150. package/dist/jazz/input-proof-p.js +265 -0
  151. package/dist/jazz/input-proof-p.js.map +1 -0
  152. package/dist/jazz/jazz-client-i.d.ts +16 -0
  153. package/dist/jazz/jazz-client-i.js +2 -0
  154. package/dist/jazz/jazz-client-i.js.map +1 -0
  155. package/dist/jazz/jazz-client.d.ts +18 -0
  156. package/dist/jazz/jazz-client.js +24 -0
  157. package/dist/jazz/jazz-client.js.map +1 -0
  158. package/dist/jazz/key-pair.d.ts +50 -0
  159. package/dist/jazz/key-pair.js +166 -0
  160. package/dist/jazz/key-pair.js.map +1 -0
  161. package/dist/jazz/mock/fake.d.ts +3 -0
  162. package/dist/jazz/mock/fake.js +23 -0
  163. package/dist/jazz/mock/fake.js.map +1 -0
  164. package/dist/jazz/mock/fetch-input-proof.d.ts +4 -0
  165. package/dist/jazz/mock/fetch-input-proof.js +63 -0
  166. package/dist/jazz/mock/fetch-input-proof.js.map +1 -0
  167. package/dist/jazz/mock/fetch-key-url.d.ts +3 -0
  168. package/dist/jazz/mock/fetch-key-url.js +15 -0
  169. package/dist/jazz/mock/fetch-key-url.js.map +1 -0
  170. package/dist/jazz/mock/fetch-public-decrypt.d.ts +3 -0
  171. package/dist/jazz/mock/fetch-public-decrypt.js +81 -0
  172. package/dist/jazz/mock/fetch-public-decrypt.js.map +1 -0
  173. package/dist/jazz/mock/fetch-user-decrypt.d.ts +4 -0
  174. package/dist/jazz/mock/fetch-user-decrypt.js +174 -0
  175. package/dist/jazz/mock/fetch-user-decrypt.js.map +1 -0
  176. package/dist/jazz/module/fetch-input-proof.d.ts +19 -0
  177. package/dist/jazz/module/fetch-input-proof.js +72 -0
  178. package/dist/jazz/module/fetch-input-proof.js.map +1 -0
  179. package/dist/jazz/module/fetch-key-url.d.ts +17 -0
  180. package/dist/jazz/module/fetch-key-url.js +46 -0
  181. package/dist/jazz/module/fetch-key-url.js.map +1 -0
  182. package/dist/jazz/module/fetch-public-decrypt.d.ts +19 -0
  183. package/dist/jazz/module/fetch-public-decrypt.js +65 -0
  184. package/dist/jazz/module/fetch-public-decrypt.js.map +1 -0
  185. package/dist/jazz/module/fetch-user-decrypt.d.ts +19 -0
  186. package/dist/jazz/module/fetch-user-decrypt.js +109 -0
  187. package/dist/jazz/module/fetch-user-decrypt.js.map +1 -0
  188. package/dist/jazz/module/jazz-async-request.d.ts +102 -0
  189. package/dist/jazz/module/jazz-async-request.js +515 -0
  190. package/dist/jazz/module/jazz-async-request.js.map +1 -0
  191. package/dist/jazz/module/jazz-p.d.ts +61 -0
  192. package/dist/jazz/module/jazz-p.js +33 -0
  193. package/dist/jazz/module/jazz-p.js.map +1 -0
  194. package/dist/jazz/module/s3-download.d.ts +85 -0
  195. package/dist/jazz/module/s3-download.js +293 -0
  196. package/dist/jazz/module/s3-download.js.map +1 -0
  197. package/dist/jazz/permit.d.ts +200 -0
  198. package/dist/jazz/permit.js +319 -0
  199. package/dist/jazz/permit.js.map +1 -0
  200. package/dist/jazz/public-decrypt-p.d.ts +96 -0
  201. package/dist/jazz/public-decrypt-p.js +258 -0
  202. package/dist/jazz/public-decrypt-p.js.map +1 -0
  203. package/dist/jazz/public-decrypt.d.ts +48 -0
  204. package/dist/jazz/public-decrypt.js +156 -0
  205. package/dist/jazz/public-decrypt.js.map +1 -0
  206. package/dist/jazz/read-contract.d.ts +81 -0
  207. package/dist/jazz/read-contract.js +125 -0
  208. package/dist/jazz/read-contract.js.map +1 -0
  209. package/dist/jazz/types/common.d.ts +17 -0
  210. package/dist/jazz/types/common.js +2 -0
  211. package/dist/jazz/types/common.js.map +1 -0
  212. package/dist/jazz/types/input-proof.d.ts +76 -0
  213. package/dist/jazz/types/input-proof.js +2 -0
  214. package/dist/jazz/types/input-proof.js.map +1 -0
  215. package/dist/jazz/types/key-url.d.ts +68 -0
  216. package/dist/jazz/types/key-url.js +5 -0
  217. package/dist/jazz/types/key-url.js.map +1 -0
  218. package/dist/jazz/types/public-decrypt.d.ts +61 -0
  219. package/dist/jazz/types/public-decrypt.js +2 -0
  220. package/dist/jazz/types/public-decrypt.js.map +1 -0
  221. package/dist/jazz/types/user-decrypt.d.ts +123 -0
  222. package/dist/jazz/types/user-decrypt.js +2 -0
  223. package/dist/jazz/types/user-decrypt.js.map +1 -0
  224. package/dist/jazz/user-decrypt-p.d.ts +111 -0
  225. package/dist/jazz/user-decrypt-p.js +280 -0
  226. package/dist/jazz/user-decrypt-p.js.map +1 -0
  227. package/dist/jazz/user-decrypt.d.ts +74 -0
  228. package/dist/jazz/user-decrypt.js +143 -0
  229. package/dist/jazz/user-decrypt.js.map +1 -0
  230. package/dist/native/fhe-api.js +5959 -0
  231. package/dist/native/fhe-api.node.cjs +6167 -0
  232. package/dist/native/fhe-api.node.worker.cjs +210 -0
  233. package/dist/native/fhe-api.wasm +0 -0
  234. package/dist/native/fhe-api.worker.js +164 -0
  235. package/dist/native/kms/node/kms_lib.d.ts +38 -0
  236. package/dist/native/kms/node/kms_lib.js +356 -0
  237. package/dist/native/kms/node/kms_lib_bg.wasm +0 -0
  238. package/dist/native/kms/node/kms_lib_bg.wasm.d.ts +21 -0
  239. package/dist/native/kms/node/package.json +11 -0
  240. package/dist/native/kms/web/kms_lib.d.ts +84 -0
  241. package/dist/native/kms/web/kms_lib.js +443 -0
  242. package/dist/native/kms/web/kms_lib_bg.wasm +0 -0
  243. package/dist/native/kms/web/kms_lib_bg.wasm.d.ts +21 -0
  244. package/dist/native/kms/web/package.json +15 -0
  245. package/dist/runtime/browser.d.ts +36 -0
  246. package/dist/runtime/browser.js +115 -0
  247. package/dist/runtime/browser.js.map +1 -0
  248. package/dist/runtime/node.d.ts +30 -0
  249. package/dist/runtime/node.js +95 -0
  250. package/dist/runtime/node.js.map +1 -0
  251. package/dist/sdk/fhetransform-sdk-b.d.ts +102 -0
  252. package/dist/sdk/fhetransform-sdk-b.js +294 -0
  253. package/dist/sdk/fhetransform-sdk-b.js.map +1 -0
  254. package/dist/sdk/fhetransform-sdk.d.ts +87 -0
  255. package/dist/sdk/fhetransform-sdk.js +135 -0
  256. package/dist/sdk/fhetransform-sdk.js.map +1 -0
  257. package/dist/sdk/jazz-service.d.ts +13 -0
  258. package/dist/sdk/jazz-service.js +58 -0
  259. package/dist/sdk/jazz-service.js.map +1 -0
  260. package/dist/sdk/permit-service.d.ts +45 -0
  261. package/dist/sdk/permit-service.js +144 -0
  262. package/dist/sdk/permit-service.js.map +1 -0
  263. package/dist/wasm/fhe-wasm-client.d.ts +19 -0
  264. package/dist/wasm/fhe-wasm-client.js +23 -0
  265. package/dist/wasm/fhe-wasm-client.js.map +1 -0
  266. package/dist/wasm/fhe-wasm-module.d.ts +24 -0
  267. package/dist/wasm/fhe-wasm-module.js +141 -0
  268. package/dist/wasm/fhe-wasm-module.js.map +1 -0
  269. package/dist/wasm/fhe-wasm-type.d.ts +59 -0
  270. package/dist/wasm/fhe-wasm-type.js +244 -0
  271. package/dist/wasm/fhe-wasm-type.js.map +1 -0
  272. package/dist/wasm/wasm-loader.browser.d.ts +21 -0
  273. package/dist/wasm/wasm-loader.browser.js +143 -0
  274. package/dist/wasm/wasm-loader.browser.js.map +1 -0
  275. package/dist/wasm/wasm-loader.node.d.ts +24 -0
  276. package/dist/wasm/wasm-loader.node.js +114 -0
  277. package/dist/wasm/wasm-loader.node.js.map +1 -0
  278. package/dist/wasm/worker-client.browser.d.ts +6 -0
  279. package/dist/wasm/worker-client.browser.js +21 -0
  280. package/dist/wasm/worker-client.browser.js.map +1 -0
  281. package/dist/wasm/worker-client.d.ts +34 -0
  282. package/dist/wasm/worker-client.js +160 -0
  283. package/dist/wasm/worker-client.js.map +1 -0
  284. package/dist/wasm/worker-client.node.d.ts +6 -0
  285. package/dist/wasm/worker-client.node.js +20 -0
  286. package/dist/wasm/worker-client.node.js.map +1 -0
  287. package/dist/wasm/worker-message.d.ts +61 -0
  288. package/dist/wasm/worker-message.js +2 -0
  289. package/dist/wasm/worker-message.js.map +1 -0
  290. package/dist/wasm/worker-transport.browser.d.ts +15 -0
  291. package/dist/wasm/worker-transport.browser.js +35 -0
  292. package/dist/wasm/worker-transport.browser.js.map +1 -0
  293. package/dist/wasm/worker-transport.d.ts +6 -0
  294. package/dist/wasm/worker-transport.js +2 -0
  295. package/dist/wasm/worker-transport.js.map +1 -0
  296. package/dist/wasm/worker-transport.node.d.ts +17 -0
  297. package/dist/wasm/worker-transport.node.js +39 -0
  298. package/dist/wasm/worker-transport.node.js.map +1 -0
  299. package/dist/wasm/worker.d.ts +1 -0
  300. package/dist/wasm/worker.js +69 -0
  301. package/dist/wasm/worker.js.map +1 -0
  302. package/package.json +81 -0
@@ -0,0 +1,138 @@
1
+ /**
2
+ * Configuration options for the CacheManager.
3
+ */
4
+ export interface CacheOptions {
5
+ /** Base name for IndexedDB storage */
6
+ baseName?: string;
7
+ /** Store name for IndexedDB storage */
8
+ storeName?: string;
9
+ /** IndexedDB database name */
10
+ dbName?: string;
11
+ /** Storage directory for Node.js environment */
12
+ baseDir?: string;
13
+ }
14
+ /**
15
+ * Cache entry structure containing data and timestamp metadata.
16
+ */
17
+ export interface CacheEntry {
18
+ /** The cached data as a string */
19
+ data: string;
20
+ /** Unix timestamp (seconds) when the entry was created */
21
+ timestamp: number;
22
+ }
23
+ /**
24
+ * CacheManager - Universal caching layer supporting both binary and string data.
25
+ *
26
+ * Features:
27
+ * - Binary and string data storage
28
+ * - TTL-based expiration checks
29
+ * - Lazy storage initialization
30
+ * - Cross-platform support (Node.js filesystem, browser IndexedDB)
31
+ * - Batch operations (list, clear, delete)
32
+ */
33
+ export declare class CacheManager {
34
+ private options;
35
+ private storage;
36
+ /**
37
+ * Creates a new CacheManager instance.
38
+ * @param options - Cache configuration options
39
+ */
40
+ constructor(options?: CacheOptions);
41
+ /**
42
+ * Saves data to the cache.
43
+ * Binary data (Uint8Array) is stored raw with separate metadata.
44
+ * String data is stored as a CacheEntry with timestamp.
45
+ *
46
+ * @param key - Cache key
47
+ * @param data - Data to cache (Uint8Array or string)
48
+ * @returns Promise that resolves when save is complete
49
+ * @throws Error if storage operation fails
50
+ */
51
+ save(key: string, data: Uint8Array | string): Promise<void>;
52
+ /**
53
+ * Loads data from the cache, returning either binary or string data.
54
+ * Checks raw storage first for binary data, then falls back to CacheEntry/string.
55
+ *
56
+ * @param key - Cache key
57
+ * @returns Cached data as Uint8Array or string, or null if not found
58
+ */
59
+ load(key: string): Promise<Uint8Array | string | null>;
60
+ /**
61
+ * Loads string data from the cache.
62
+ * Convenience method for string-only access.
63
+ *
64
+ * @param key - Cache key
65
+ * @returns Cached string data, or null if not found or not a string
66
+ */
67
+ loadString(key: string): Promise<string | null>;
68
+ /**
69
+ * Loads binary data from the cache.
70
+ * Convenience method for binary-only access.
71
+ *
72
+ * @param key - Cache key
73
+ * @returns Cached binary data as Uint8Array, or null if not found
74
+ */
75
+ loadBytes(key: string): Promise<Uint8Array | null>;
76
+ /**
77
+ * Determines whether the cache should be refreshed (missing or expired).
78
+ *
79
+ * @param key - The cache key to check
80
+ * @param ttl - Time-to-live in seconds
81
+ * @returns true if cache should be refreshed, false if still valid
82
+ */
83
+ shouldRefresh(key: string, ttl: number): Promise<boolean>;
84
+ /**
85
+ * Deletes a specific cache entry and its associated metadata.
86
+ *
87
+ * @param key - Cache key to delete
88
+ * @returns Promise that resolves when deletion is complete
89
+ */
90
+ delete(key: string): Promise<void>;
91
+ /**
92
+ * Lists all cache keys matching an optional prefix.
93
+ *
94
+ * @param base - Optional prefix to filter keys
95
+ * @returns Array of cache keys
96
+ */
97
+ listKeys(base?: string): Promise<string[]>;
98
+ /**
99
+ * Clears all cache entries with an optional prefix.
100
+ * Deletes both main entries and their metadata counterparts.
101
+ *
102
+ * @param base - Optional prefix to filter keys for clearing
103
+ * @returns Promise that resolves when clear is complete
104
+ */
105
+ clear(base?: string): Promise<void>;
106
+ /**
107
+ * Lazy-initializes and returns the storage instance.
108
+ * Storage is created once and reused for all operations.
109
+ *
110
+ * @returns The initialized Storage instance
111
+ * @throws Error if storage initialization fails
112
+ */
113
+ private getStorage;
114
+ /**
115
+ * Initializes the storage backend based on the runtime environment.
116
+ * Uses #runtime to select the appropriate driver (Node.js fs or browser IndexedDB).
117
+ *
118
+ * @param options - Cache configuration options
119
+ * @returns Configured Storage instance
120
+ * @throws Error if driver creation fails
121
+ */
122
+ private initStorage;
123
+ /**
124
+ * Type guard for validating CacheEntry objects.
125
+ *
126
+ * @param value - Value to check
127
+ * @returns true if value is a valid CacheEntry
128
+ */
129
+ private isCacheEntry;
130
+ /**
131
+ * Checks if a timestamp has expired relative to the maximum age (in seconds).
132
+ *
133
+ * @param timestamp - Unix timestamp (seconds) when entry was created
134
+ * @param maxAge - Maximum age in seconds
135
+ * @returns true if the entry has expired
136
+ */
137
+ private isExpired;
138
+ }
@@ -0,0 +1,440 @@
1
+ import { createStorage } from 'unstorage';
2
+ import { logger } from './logger.js';
3
+ import { createCacheDriver, getDbBaseNameScope } from '#runtime';
4
+ // ============================================================================
5
+ // CacheManager Class
6
+ // ============================================================================
7
+ /**
8
+ * CacheManager - Universal caching layer supporting both binary and string data.
9
+ *
10
+ * Features:
11
+ * - Binary and string data storage
12
+ * - TTL-based expiration checks
13
+ * - Lazy storage initialization
14
+ * - Cross-platform support (Node.js filesystem, browser IndexedDB)
15
+ * - Batch operations (list, clear, delete)
16
+ */
17
+ export class CacheManager {
18
+ options;
19
+ storage = null;
20
+ /**
21
+ * Creates a new CacheManager instance.
22
+ * @param options - Cache configuration options
23
+ */
24
+ constructor(options = {}) {
25
+ this.options = { ...options };
26
+ logger.debug('[CacheManager] Instance created', { options: this.options });
27
+ }
28
+ /**
29
+ * Saves data to the cache.
30
+ * Binary data (Uint8Array) is stored raw with separate metadata.
31
+ * String data is stored as a CacheEntry with timestamp.
32
+ *
33
+ * @param key - Cache key
34
+ * @param data - Data to cache (Uint8Array or string)
35
+ * @returns Promise that resolves when save is complete
36
+ * @throws Error if storage operation fails
37
+ */
38
+ async save(key, data) {
39
+ // Get storage instance (lazy init)
40
+ const storage = await this.getStorage();
41
+ const timestamp = Math.floor(Date.now() / 1000);
42
+ const isBinary = data instanceof Uint8Array;
43
+ logger.debug('[CacheManager.save] Saving cache entry', {
44
+ key,
45
+ type: isBinary ? 'binary' : 'string',
46
+ size: data.length,
47
+ });
48
+ try {
49
+ if (isBinary) {
50
+ // Store raw binary data and its metadata separately
51
+ logger.trace('[CacheManager.save] Storing binary data with metadata', { key });
52
+ await storage.setItemRaw(key, data);
53
+ await storage.setItem(`${key}.meta`, { timestamp });
54
+ }
55
+ else {
56
+ // Store string data as a CacheEntry
57
+ logger.trace('[CacheManager.save] Storing string data as CacheEntry', { key });
58
+ await storage.setItem(key, { data, timestamp });
59
+ }
60
+ logger.debug('[CacheManager.save] Cache saved successfully', { key, size: data.length });
61
+ }
62
+ catch (error) {
63
+ logger.error('[CacheManager.save] Failed to save cache', {
64
+ key,
65
+ type: isBinary ? 'binary' : 'string',
66
+ error: error.message,
67
+ stack: error.stack,
68
+ });
69
+ throw error;
70
+ }
71
+ }
72
+ /**
73
+ * Loads data from the cache, returning either binary or string data.
74
+ * Checks raw storage first for binary data, then falls back to CacheEntry/string.
75
+ *
76
+ * @param key - Cache key
77
+ * @returns Cached data as Uint8Array or string, or null if not found
78
+ */
79
+ async load(key) {
80
+ const storage = await this.getStorage();
81
+ logger.debug('[CacheManager.load] Loading cache entry', { key });
82
+ try {
83
+ // Attempt to read raw binary data first
84
+ const rawData = await storage.getItemRaw(key);
85
+ if (rawData instanceof Uint8Array) {
86
+ logger.debug('[CacheManager.load] Cache loaded (binary)', {
87
+ key,
88
+ size: rawData.length,
89
+ });
90
+ return rawData;
91
+ }
92
+ // Attempt to read as CacheEntry or plain string
93
+ const entry = await storage.getItem(key);
94
+ if (!entry) {
95
+ logger.debug('[CacheManager.load] Cache miss', { key });
96
+ return null;
97
+ }
98
+ // Return data field if in CacheEntry format
99
+ if (this.isCacheEntry(entry)) {
100
+ logger.debug('[CacheManager.load] Cache loaded (CacheEntry)', {
101
+ key,
102
+ dataLength: entry.data.length,
103
+ });
104
+ return entry.data;
105
+ }
106
+ // Return directly if in plain string format (backward compatibility)
107
+ if (typeof entry === 'string') {
108
+ logger.debug('[CacheManager.load] Cache loaded (string)', {
109
+ key,
110
+ size: entry.length,
111
+ });
112
+ return entry;
113
+ }
114
+ logger.warn('[CacheManager.load] Invalid cache format', { key, type: typeof entry });
115
+ return null;
116
+ }
117
+ catch (error) {
118
+ logger.error('[CacheManager.load] Failed to load cache', {
119
+ key,
120
+ error: error.message,
121
+ stack: error.stack,
122
+ });
123
+ return null;
124
+ }
125
+ }
126
+ /**
127
+ * Loads string data from the cache.
128
+ * Convenience method for string-only access.
129
+ *
130
+ * @param key - Cache key
131
+ * @returns Cached string data, or null if not found or not a string
132
+ */
133
+ async loadString(key) {
134
+ const storage = await this.getStorage();
135
+ logger.debug('[CacheManager.loadString] Loading string cache', { key });
136
+ try {
137
+ const entry = await storage.getItem(key);
138
+ if (!entry) {
139
+ logger.debug('[CacheManager.loadString] Cache miss', { key });
140
+ return null;
141
+ }
142
+ if (this.isCacheEntry(entry)) {
143
+ logger.debug('[CacheManager.loadString] Cache loaded (CacheEntry)', {
144
+ key,
145
+ dataLength: entry.data.length,
146
+ });
147
+ return entry.data;
148
+ }
149
+ if (typeof entry === 'string') {
150
+ logger.debug('[CacheManager.loadString] Cache loaded (string)', {
151
+ key,
152
+ size: entry.length,
153
+ });
154
+ return entry;
155
+ }
156
+ logger.warn('[CacheManager.loadString] Invalid format for string', {
157
+ key,
158
+ type: typeof entry,
159
+ });
160
+ return null;
161
+ }
162
+ catch (error) {
163
+ logger.error('[CacheManager.loadString] Failed to load string cache', {
164
+ key,
165
+ error: error.message,
166
+ stack: error.stack,
167
+ });
168
+ return null;
169
+ }
170
+ }
171
+ /**
172
+ * Loads binary data from the cache.
173
+ * Convenience method for binary-only access.
174
+ *
175
+ * @param key - Cache key
176
+ * @returns Cached binary data as Uint8Array, or null if not found
177
+ */
178
+ async loadBytes(key) {
179
+ const storage = await this.getStorage();
180
+ logger.debug('[CacheManager.loadBytes] Loading binary cache', { key });
181
+ try {
182
+ const rawData = await storage.getItemRaw(key);
183
+ if (rawData instanceof Uint8Array) {
184
+ logger.debug('[CacheManager.loadBytes] Cache loaded (binary)', {
185
+ key,
186
+ size: rawData.length,
187
+ });
188
+ return rawData;
189
+ }
190
+ logger.debug('[CacheManager.loadBytes] Binary cache miss', { key });
191
+ return null;
192
+ }
193
+ catch (error) {
194
+ logger.error('[CacheManager.loadBytes] Failed to load binary cache', {
195
+ key,
196
+ error: error.message,
197
+ stack: error.stack,
198
+ });
199
+ return null;
200
+ }
201
+ }
202
+ /**
203
+ * Determines whether the cache should be refreshed (missing or expired).
204
+ *
205
+ * @param key - The cache key to check
206
+ * @param ttl - Time-to-live in seconds
207
+ * @returns true if cache should be refreshed, false if still valid
208
+ */
209
+ async shouldRefresh(key, ttl) {
210
+ const storage = await this.getStorage();
211
+ logger.debug('[CacheManager.shouldRefresh] Checking cache freshness', {
212
+ key,
213
+ ttlSeconds: ttl,
214
+ });
215
+ try {
216
+ // Check metadata for raw binary data
217
+ const meta = await storage.getItem(`${key}.meta`);
218
+ if (meta && typeof meta === 'object' && 'timestamp' in meta) {
219
+ const expired = this.isExpired(meta.timestamp, ttl);
220
+ logger.trace('[CacheManager.shouldRefresh] Cache freshness check (meta)', {
221
+ key,
222
+ expired,
223
+ age: Math.floor(Date.now() / 1000) - meta.timestamp,
224
+ });
225
+ return expired;
226
+ }
227
+ // Check direct storage data (backward compatibility)
228
+ const data = await storage.getItem(key);
229
+ if (data) {
230
+ if (this.isCacheEntry(data)) {
231
+ const expired = this.isExpired(data.timestamp, ttl);
232
+ logger.trace('[CacheManager.shouldRefresh] Cache freshness check (CacheEntry)', {
233
+ key,
234
+ expired,
235
+ age: Math.floor(Date.now() / 1000) - data.timestamp,
236
+ });
237
+ return expired;
238
+ }
239
+ // Has data but no timestamp - treat as needing refresh
240
+ logger.warn('[CacheManager.shouldRefresh] Data without timestamp, needs refresh', {
241
+ key,
242
+ });
243
+ return true;
244
+ }
245
+ logger.trace('[CacheManager.shouldRefresh] Cache miss, needs refresh', { key });
246
+ return true;
247
+ }
248
+ catch (error) {
249
+ logger.error('[CacheManager.shouldRefresh] Failed to check freshness', {
250
+ key,
251
+ error: error.message,
252
+ stack: error.stack,
253
+ });
254
+ return true; // On error, assume refresh needed
255
+ }
256
+ }
257
+ /**
258
+ * Deletes a specific cache entry and its associated metadata.
259
+ *
260
+ * @param key - Cache key to delete
261
+ * @returns Promise that resolves when deletion is complete
262
+ */
263
+ async delete(key) {
264
+ const storage = await this.getStorage();
265
+ logger.debug('[CacheManager.delete] Deleting cache entry', { key });
266
+ try {
267
+ await Promise.all([
268
+ storage.removeItem(key),
269
+ storage.removeItem(`${key}.meta`),
270
+ ]);
271
+ logger.trace('[CacheManager.delete] Cache deleted successfully', { key });
272
+ }
273
+ catch (error) {
274
+ logger.error('[CacheManager.delete] Failed to delete cache', {
275
+ key,
276
+ error: error.message,
277
+ stack: error.stack,
278
+ });
279
+ throw error;
280
+ }
281
+ }
282
+ /**
283
+ * Lists all cache keys matching an optional prefix.
284
+ *
285
+ * @param base - Optional prefix to filter keys
286
+ * @returns Array of cache keys
287
+ */
288
+ async listKeys(base) {
289
+ const storage = await this.getStorage();
290
+ logger.debug('[CacheManager.listKeys] Listing cache keys', {
291
+ prefix: base || '(root)',
292
+ });
293
+ try {
294
+ const _prefix = getDbBaseNameScope();
295
+ const _base = `${_prefix}${base}`;
296
+ const keys = await storage.getKeys(base === undefined ? base : _base);
297
+ logger.debug('[CacheManager.listKeys] Keys listed successfully', {
298
+ prefix: base || '(root)',
299
+ count: keys.length,
300
+ keys: keys.length > 0 ? keys.slice(0, 10) : [], // Log first 10 to avoid bloat
301
+ });
302
+ return keys.map((key) => {
303
+ return key.startsWith(_prefix) ? key.slice(_prefix.length) : key;
304
+ });
305
+ }
306
+ catch (error) {
307
+ logger.error('[CacheManager.listKeys] Failed to list keys', {
308
+ prefix: base || '(root)',
309
+ error: error.message,
310
+ stack: error.stack,
311
+ });
312
+ throw error;
313
+ }
314
+ }
315
+ /**
316
+ * Clears all cache entries with an optional prefix.
317
+ * Deletes both main entries and their metadata counterparts.
318
+ *
319
+ * @param base - Optional prefix to filter keys for clearing
320
+ * @returns Promise that resolves when clear is complete
321
+ */
322
+ async clear(base) {
323
+ const storage = await this.getStorage();
324
+ logger.debug('[CacheManager.clear] Clearing cache', {
325
+ prefix: base || '(root)',
326
+ });
327
+ try {
328
+ const keys = await this.listKeys(base);
329
+ logger.debug('[CacheManager.clear] Found keys to clear', {
330
+ prefix: base || '(root)',
331
+ count: keys.length,
332
+ keys,
333
+ });
334
+ // Delete all keys and their metadata in parallel
335
+ const deletePromises = keys.flatMap((key) => [
336
+ storage.removeItem(key),
337
+ storage.removeItem(`${key}.meta`),
338
+ ]);
339
+ await Promise.all(deletePromises);
340
+ logger.debug('[CacheManager.clear] Cache cleared successfully', {
341
+ prefix: base || '(root)',
342
+ keysRemoved: keys.length,
343
+ });
344
+ }
345
+ catch (error) {
346
+ logger.error('[CacheManager.clear] Failed to clear cache', {
347
+ prefix: base || '(root)',
348
+ error: error.message,
349
+ stack: error.stack,
350
+ });
351
+ throw error;
352
+ }
353
+ }
354
+ // ============================================================================
355
+ // Private Helpers
356
+ // ============================================================================
357
+ /**
358
+ * Lazy-initializes and returns the storage instance.
359
+ * Storage is created once and reused for all operations.
360
+ *
361
+ * @returns The initialized Storage instance
362
+ * @throws Error if storage initialization fails
363
+ */
364
+ async getStorage() {
365
+ if (this.storage === null) {
366
+ logger.debug('[CacheManager.getStorage] Initializing storage (lazy)');
367
+ this.storage = await this.initStorage(this.options);
368
+ }
369
+ return this.storage;
370
+ }
371
+ /**
372
+ * Initializes the storage backend based on the runtime environment.
373
+ * Uses #runtime to select the appropriate driver (Node.js fs or browser IndexedDB).
374
+ *
375
+ * @param options - Cache configuration options
376
+ * @returns Configured Storage instance
377
+ * @throws Error if driver creation fails
378
+ */
379
+ async initStorage(options) {
380
+ logger.debug('[CacheManager.initStorage] Creating storage backend', { options });
381
+ try {
382
+ const driver = await createCacheDriver(options);
383
+ logger.trace('[CacheManager.initStorage] Cache driver created', {
384
+ driverType: typeof driver,
385
+ });
386
+ const storage = createStorage({ driver });
387
+ logger.debug('[CacheManager.initStorage] Storage initialized successfully');
388
+ return storage;
389
+ }
390
+ catch (error) {
391
+ logger.error('[CacheManager.initStorage] Failed to initialize storage', {
392
+ options,
393
+ error: error.message,
394
+ stack: error.stack,
395
+ });
396
+ throw error;
397
+ }
398
+ }
399
+ /**
400
+ * Type guard for validating CacheEntry objects.
401
+ *
402
+ * @param value - Value to check
403
+ * @returns true if value is a valid CacheEntry
404
+ */
405
+ isCacheEntry(value) {
406
+ const isValid = value && typeof value === 'object' &&
407
+ 'data' in value && typeof value.data === 'string' &&
408
+ 'timestamp' in value && typeof value.timestamp === 'number';
409
+ if (!isValid && value && typeof value === 'object') {
410
+ logger.trace('[CacheManager.isCacheEntry] Invalid CacheEntry format', {
411
+ hasData: 'data' in value,
412
+ hasTimestamp: 'timestamp' in value,
413
+ dataType: typeof value.data,
414
+ timestampType: typeof value.timestamp,
415
+ });
416
+ }
417
+ return isValid;
418
+ }
419
+ /**
420
+ * Checks if a timestamp has expired relative to the maximum age (in seconds).
421
+ *
422
+ * @param timestamp - Unix timestamp (seconds) when entry was created
423
+ * @param maxAge - Maximum age in seconds
424
+ * @returns true if the entry has expired
425
+ */
426
+ isExpired(timestamp, maxAge) {
427
+ const now = Math.floor(Date.now() / 1000);
428
+ const age = now - timestamp;
429
+ const expired = age >= maxAge;
430
+ if (expired) {
431
+ logger.trace('[CacheManager.isExpired] Entry expired', {
432
+ age,
433
+ maxAge,
434
+ expired: true,
435
+ });
436
+ }
437
+ return expired;
438
+ }
439
+ }
440
+ //# sourceMappingURL=cache-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache-manager.js","sourceRoot":"","sources":["../../src/core/cache-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Chain information for supported blockchain networks.
3
+ */
4
+ export interface ChainInfo {
5
+ /** Blockchain chain ID (uint256) */
6
+ chainId: bigint;
7
+ /** Mapped chain key used in handles (uint8) */
8
+ chainKey: number;
9
+ /** Human-readable network name */
10
+ name: string;
11
+ }
12
+ /**
13
+ * List of supported blockchain networks with their chain ID to chain key mappings.
14
+ * Chain key is a compact identifier used in handle generation.
15
+ */
16
+ export declare const CHAINS: readonly ChainInfo[];
17
+ /**
18
+ * Map chain key to chain ID for quick lookup
19
+ * Created as a Map for O(1) lookup performance
20
+ */
21
+ export declare const chainKeyToChainIdMap: Map<number, bigint>;
22
+ /**
23
+ * Map chain ID to chain key for reverse lookup
24
+ * Useful for validation and debugging
25
+ */
26
+ export declare const chainIdToChainKeyMap: Map<bigint, number>;
27
+ /**
28
+ * Converts a blockchain chain ID to its corresponding chain key.
29
+ * @param chainId - Blockchain chain ID (e.g., 1n for Ethereum Mainnet)
30
+ * @returns The mapped chain key (uint8) used in handle generation
31
+ * @throws Error if the chain ID is not supported
32
+ */
33
+ export declare function getChainKey(chainId: bigint): number;
34
+ /**
35
+ * Builds arguments for setting chain mappings in a smart contract.
36
+ * @returns An object containing arrays of chain IDs and their corresponding chain keys
37
+ */
38
+ export declare function buildSetChainKeysArgs(): {
39
+ chainIds: bigint[];
40
+ chainKeys: number[];
41
+ };