@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,95 @@
1
+ /**
2
+ * Node.js-specific implementations for KMS, cache, and file operations.
3
+ * These functions are designed to run exclusively in Node.js environments.
4
+ */
5
+ import { logger } from "../core/logger.js";
6
+ /**
7
+ * Creates a filesystem driver for Node.js cache storage using unstorage.
8
+ *
9
+ * @param options - Cache configuration options
10
+ * @param options.baseDir - Base directory for cache files (default: "./.cache")
11
+ * @returns A filesystem storage driver instance
12
+ * @throws Error if the unstorage driver module fails to load
13
+ */
14
+ export async function createCacheDriver(options = {}) {
15
+ // Enter method
16
+ const baseDir = options.baseDir || "./.cache";
17
+ logger.debug('[createCacheDriver] Creating filesystem cache driver (Node.js)', {
18
+ baseDir,
19
+ });
20
+ try {
21
+ // Dynamically import the unstorage fs driver
22
+ logger.trace('[createCacheDriver] Importing unstorage/drivers/fs');
23
+ const { default: fsDriver } = await import("unstorage/drivers/fs");
24
+ // Create and return the driver instance
25
+ const driver = fsDriver({
26
+ base: baseDir,
27
+ });
28
+ logger.debug('[createCacheDriver] Cache driver created successfully', {
29
+ baseDir,
30
+ driverType: 'fs',
31
+ });
32
+ return driver;
33
+ }
34
+ catch (error) {
35
+ // Log error with context
36
+ logger.error('[createCacheDriver] Failed to create cache driver (Node.js)', {
37
+ baseDir,
38
+ error: error.message,
39
+ code: error.code,
40
+ stack: error.stack,
41
+ });
42
+ throw error;
43
+ }
44
+ }
45
+ /**
46
+ * Get the database base name with a colon suffix for key scoping
47
+ * @returns The empty string
48
+ */
49
+ export function getDbBaseNameScope() {
50
+ return "";
51
+ }
52
+ // ============================================================================
53
+ // Local File Operations
54
+ // ============================================================================
55
+ /**
56
+ * Reads a local file from the filesystem in Node.js environments.
57
+ * Uses the built-in `fs/promises` module for async file reading.
58
+ *
59
+ * @param path - The file system path to the local file
60
+ * @returns Promise resolving to Uint8Array containing the file data
61
+ * @throws Error if the file cannot be read or fs module fails to load
62
+ */
63
+ export async function readLocalFile(path) {
64
+ // Enter method
65
+ logger.debug('[readLocalFile] Reading local file (Node.js)', {
66
+ path,
67
+ });
68
+ try {
69
+ // Dynamically import Node.js fs/promises module
70
+ logger.trace('[readLocalFile] Importing fs/promises module');
71
+ const fs = await import('fs/promises');
72
+ // Read file from disk
73
+ logger.trace('[readLocalFile] Reading file from filesystem', {
74
+ path,
75
+ });
76
+ const buffer = await fs.readFile(path);
77
+ const data = new Uint8Array(buffer);
78
+ logger.debug('[readLocalFile] File read successfully (Node.js)', {
79
+ path,
80
+ size: data.length,
81
+ });
82
+ return data;
83
+ }
84
+ catch (error) {
85
+ // Log error with full context
86
+ logger.error('[readLocalFile] Failed to read file (Node.js)', {
87
+ path,
88
+ error: error.message,
89
+ code: error.code,
90
+ stack: error.stack,
91
+ });
92
+ throw error;
93
+ }
94
+ }
95
+ //# sourceMappingURL=node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node.js","sourceRoot":"","sources":["../../src/runtime/node.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAgB3C;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,UAA8B,EAAE;IACtE,eAAe;IACf,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,UAAU,CAAC;IAC9C,MAAM,CAAC,KAAK,CAAC,gEAAgE,EAAE;QAC7E,OAAO;KACR,CAAC,CAAC;IAEH,IAAI,CAAC;QACH,6CAA6C;QAC7C,MAAM,CAAC,KAAK,CAAC,oDAAoD,CAAC,CAAC;QACnE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAC;QAEnE,wCAAwC;QACxC,MAAM,MAAM,GAAG,QAAQ,CAAC;YACtB,IAAI,EAAE,OAAO;SACd,CAAC,CAAC;QAEH,MAAM,CAAC,KAAK,CAAC,uDAAuD,EAAE;YACpE,OAAO;YACP,UAAU,EAAE,IAAI;SACjB,CAAC,CAAC;QAEH,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,yBAAyB;QACzB,MAAM,CAAC,KAAK,CAAC,6DAA6D,EAAE;YAC1E,OAAO;YACP,KAAK,EAAE,KAAK,CAAC,OAAO;YACpB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,KAAK,EAAE,KAAK,CAAC,KAAK;SACnB,CAAC,CAAC;QACH,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB;IAChC,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,+EAA+E;AAC/E,wBAAwB;AACxB,+EAA+E;AAE/E;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAAY;IAC9C,eAAe;IACf,MAAM,CAAC,KAAK,CAAC,8CAA8C,EAAE;QAC3D,IAAI;KACL,CAAC,CAAC;IAEH,IAAI,CAAC;QACH,gDAAgD;QAChD,MAAM,CAAC,KAAK,CAAC,8CAA8C,CAAC,CAAC;QAC7D,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;QAEvC,sBAAsB;QACtB,MAAM,CAAC,KAAK,CAAC,8CAA8C,EAAE;YAC3D,IAAI;SACL,CAAC,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACvC,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;QAEpC,MAAM,CAAC,KAAK,CAAC,kDAAkD,EAAE;YAC/D,IAAI;YACJ,IAAI,EAAE,IAAI,CAAC,MAAM;SAClB,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,8BAA8B;QAC9B,MAAM,CAAC,KAAK,CAAC,+CAA+C,EAAE;YAC5D,IAAI;YACJ,KAAK,EAAE,KAAK,CAAC,OAAO;YACpB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,KAAK,EAAE,KAAK,CAAC,KAAK;SACnB,CAAC,CAAC;QACH,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC"}
@@ -0,0 +1,102 @@
1
+ import { ethers } from 'ethers';
2
+ import { SystemContractInfo } from '../core/system-contract-info.js';
3
+ import { Auth } from '../core/auth.js';
4
+ import { Address } from '../core/primitives.js';
5
+ import { ErrorParser } from '../core/tx-error-parser.js';
6
+ import { FheTransformSDKEventListener } from '../core/event.js';
7
+ import { CacheManager } from "../core/cache-manager.js";
8
+ import { SignerAddressInfo } from '../core/signer-address-info.js';
9
+ /**
10
+ * Configuration options for the FHE Transform SDK.
11
+ */
12
+ export type FheTransformConfig = {
13
+ /** Ethereum provider for blockchain interaction. Optional if signer has provider or env RPC_URL is set. */
14
+ provider?: ethers.Provider;
15
+ /** Ethereum signer for transaction signing. In browser, MetaMask will be auto-detected if not provided. */
16
+ signer?: ethers.Signer;
17
+ /** Jazz API URL for FHE operations. Defaults to `constants.DEFAULT_JAZZ_URL`. (Falls back to env JAZZ_URL in Node.js) */
18
+ jazzUrl?: string;
19
+ /** Authentication configuration for Jazz API. */
20
+ jazzAuth?: Auth;
21
+ /** TTL (seconds) for transport key pairs. Defaults to `constants.DEFAULT_TRANSPORT_KEY_PAIR_TTL_SECONDS`. */
22
+ transportKeyPairTTL?: number;
23
+ /** TTL (days) for permits. Defaults to `constants.DEFAULT_PERMIT_TTL_DAYS`. */
24
+ permitTTL?: number;
25
+ /** Enable mock mode for testing. */
26
+ mock?: boolean;
27
+ onEvent?: FheTransformSDKEventListener;
28
+ };
29
+ /**
30
+ * Base SDK for FHE Transform operations.
31
+ * Provides core functionality including provider/signer management,
32
+ * error parsing, and chain configuration.
33
+ */
34
+ export declare class FheTransformSDKBase {
35
+ #private;
36
+ readonly config: FheTransformConfig;
37
+ readonly errorParser: ErrorParser;
38
+ readonly cacheManager: CacheManager;
39
+ protected readonly onEvent: FheTransformSDKEventListener;
40
+ private readonly handleAccountsChangedBound;
41
+ private readonly handleDisconnectBound;
42
+ private readonly handleChainChangedBound;
43
+ constructor(config: FheTransformConfig);
44
+ /**
45
+ * Checks if the SDK is running in mock mode.
46
+ * @returns True if mock mode is enabled.
47
+ */
48
+ isMock(): boolean;
49
+ /** Lazy-loaded provider. Use this for read operations. */
50
+ requireProvider: () => Promise<ethers.Provider>;
51
+ /** Lazy-loaded signer. Returns null if no signer is available. */
52
+ protected getSigner: () => Promise<ethers.Signer | null>;
53
+ /**
54
+ * Gets a signer or throws if none is available.
55
+ * @throws If no signer is available.
56
+ * @returns The signer instance.
57
+ */
58
+ requireSigner: () => Promise<ethers.Signer>;
59
+ /**
60
+ * Gets the connected wallet address.
61
+ * @throws If no signer is available.
62
+ * @returns The wallet address.
63
+ */
64
+ requireWalletAddress: () => Promise<Address>;
65
+ /**
66
+ * Initializes a MetaMask signer in the browser.
67
+ * Requests account access and returns the connected signer.
68
+ *
69
+ * @returns MetaMask signer instance
70
+ * @throws If MetaMask is not installed or the user rejects access
71
+ */
72
+ private initMetaMaskSigner;
73
+ private handleAccountsChanged;
74
+ private handleDisconnect;
75
+ private handleChainChanged;
76
+ private invalidateCache;
77
+ cleanup(): void;
78
+ private _chainId;
79
+ /**
80
+ * Gets the current chain ID.
81
+ * @returns The chain ID as a bigint.
82
+ */
83
+ getChainID(): Promise<bigint>;
84
+ /**
85
+ * Gets the Jazz URL from config or environment.
86
+ * @throws If no Jazz URL is available.
87
+ * @returns The Jazz URL.
88
+ */
89
+ requireJazzUrl(): string;
90
+ /**
91
+ * Gets system contract information for the current chain.
92
+ * @returns System contract addresses and configuration.
93
+ */
94
+ getSystemContractInfo(): Promise<SystemContractInfo>;
95
+ /**
96
+ * Asynchronously retrieves the signer address information for the current blockchain network.
97
+ *
98
+ * @returns A Promise that resolves to the SignerAddressInfo for the current chain.
99
+ * @throws {Error} If the chain ID cannot be retrieved or is not supported.
100
+ */
101
+ getSignerAddressInfo(): Promise<SignerAddressInfo>;
102
+ }
@@ -0,0 +1,294 @@
1
+ import { ethers } from 'ethers';
2
+ import { logger } from '../core/logger.js';
3
+ import { assertIsValidUrl, getEnv, lazy } from '../core/utils.js';
4
+ import { getSystemContractInfo } from '../core/system-contract-info.js';
5
+ import { ErrorParser } from '../core/tx-error-parser.js';
6
+ import { ciphertextVerificationAbi } from '../abis/ciphertext_verification.abi.js';
7
+ import { spaceBridgeConfigAbi } from '../abis/space_bridge_config.abi.js';
8
+ import { ciphertextDigestsAbi } from '../abis/ciphertext_digests.abi.js';
9
+ import { alphatrionRewardAbi } from '../abis/alphatrion_reward.abi.js';
10
+ import { fheExecutorAbi } from '../abis/fhe_executor.abi.js';
11
+ import { decryptionAbi } from '../abis/decryption.abi.js';
12
+ import { erc20Abi } from '../abis/erc20.abi.js';
13
+ import { DB_BASE_NAME, DEFAULT_JAZZ_URL } from '../core/constants.js';
14
+ import { CacheManager } from "../core/cache-manager.js";
15
+ import { FheErrorCode } from "../core/errors/error-codes.js";
16
+ import { FheError } from "../core/errors/fhe-error.js";
17
+ import { getSignerAddressInfo } from '../core/signer-address-info.js';
18
+ // ============================================
19
+ // SDK Base Class
20
+ // ============================================
21
+ /**
22
+ * Base SDK for FHE Transform operations.
23
+ * Provides core functionality including provider/signer management,
24
+ * error parsing, and chain configuration.
25
+ */
26
+ export class FheTransformSDKBase {
27
+ config;
28
+ errorParser;
29
+ cacheManager;
30
+ onEvent;
31
+ // Bound MetaMask listeners. The same references are used for both add and
32
+ // remove so `cleanup()` can actually detach them.
33
+ handleAccountsChangedBound = this.handleAccountsChanged.bind(this);
34
+ handleDisconnectBound = this.handleDisconnect.bind(this);
35
+ handleChainChangedBound = this.handleChainChanged.bind(this);
36
+ constructor(config) {
37
+ logger.debug('FheTransformSDK config', {
38
+ mock: config.mock,
39
+ jazzUrl: config.jazzUrl ? 'provided' : undefined,
40
+ hasSigner: !!config.signer,
41
+ hasProvider: !!config.provider,
42
+ hasOnEvent: !!config.onEvent,
43
+ transportKeyPairTTL: config.transportKeyPairTTL,
44
+ permitTTL: config.permitTTL,
45
+ });
46
+ this.config = config;
47
+ this.onEvent = config.onEvent ?? function () { };
48
+ this.cacheManager = new CacheManager({
49
+ dbName: 'primus', // Database name
50
+ storeName: 'keys', // Store name for key-value pairs
51
+ baseName: DB_BASE_NAME, // Base name for cache files
52
+ baseDir: `./.cache/${DB_BASE_NAME}`, // Cache directory path
53
+ });
54
+ this.errorParser = new ErrorParser()
55
+ .addAbi(ciphertextVerificationAbi)
56
+ .addAbi(spaceBridgeConfigAbi)
57
+ .addAbi(ciphertextDigestsAbi)
58
+ .addAbi(alphatrionRewardAbi)
59
+ .addAbi(fheExecutorAbi)
60
+ .addAbi(decryptionAbi)
61
+ .addAbi(erc20Abi);
62
+ }
63
+ /**
64
+ * Checks if the SDK is running in mock mode.
65
+ * @returns True if mock mode is enabled.
66
+ */
67
+ isMock() {
68
+ return this.config.mock ?? false;
69
+ }
70
+ // ============================================
71
+ // Provider Management
72
+ // ============================================
73
+ /**
74
+ * Internal provider resolver. Attempts to get a provider from:
75
+ * 1. Config provider
76
+ * 2. Config signer's provider
77
+ * 3. Browser environment (MetaMask)
78
+ * 4. Environment variables (RPC_URL or FHE_RPC_URL)
79
+ */
80
+ #requireProvider = async () => {
81
+ logger.debug('Requiring provider');
82
+ // 1. Use provided provider
83
+ if (this.config.provider) {
84
+ logger.debug('Using provided provider');
85
+ return this.config.provider;
86
+ }
87
+ // 2. Use signer's provider
88
+ if (this.config.signer?.provider) {
89
+ logger.debug('Using signer.provider');
90
+ return this.config.signer.provider;
91
+ }
92
+ // 3. Browser: use MetaMask signer
93
+ if (typeof window !== 'undefined') {
94
+ const signer = await this.getSigner();
95
+ if (!signer?.provider) {
96
+ throw new FheError({ code: FheErrorCode.MissingProvider, message: 'Provider is required. Ensure MetaMask is connected or provide a signer with provider.' });
97
+ }
98
+ return signer.provider;
99
+ }
100
+ // 4. Node.js: use RPC URL from env
101
+ const rpcUrl = getEnv('RPC_URL') ?? getEnv('FHE_RPC_URL');
102
+ if (!rpcUrl) {
103
+ throw new FheError({ code: FheErrorCode.MissingProvider, message: 'RPC_URL or FHE_RPC_URL is required. Set it in your environment.' });
104
+ }
105
+ return new ethers.JsonRpcProvider(rpcUrl);
106
+ };
107
+ /** Lazy-loaded provider. Use this for read operations. */
108
+ requireProvider = lazy(this.#requireProvider);
109
+ // ============================================
110
+ // Signer Management
111
+ // ============================================
112
+ /**
113
+ * Internal signer resolver. Attempts to get a signer from:
114
+ * 1. Config signer
115
+ * 2. Browser environment (MetaMask)
116
+ * 3. Private key from environment (Node.js only)
117
+ */
118
+ #getSigner = async () => {
119
+ logger.debug('Getting signer');
120
+ // 1. Use provided signer (highest priority)
121
+ if (this.config.signer) {
122
+ logger.debug('Using provided signer');
123
+ return this.config.signer;
124
+ }
125
+ // 2. Browser: use MetaMask
126
+ if (typeof window !== 'undefined') {
127
+ logger.debug('Initializing MetaMask signer');
128
+ return this.initMetaMaskSigner();
129
+ }
130
+ // 3. Node.js: use private key from env
131
+ if (typeof process !== 'undefined') {
132
+ const privateKey = getEnv('PRIVATE_KEY');
133
+ if (privateKey) {
134
+ logger.debug('Using private key from environment');
135
+ const provider = await this.requireProvider();
136
+ return new ethers.Wallet(privateKey, provider);
137
+ }
138
+ }
139
+ logger.warn('No signer available. Provide a signer in config or set PRIVATE_KEY in environment.');
140
+ return null;
141
+ };
142
+ /** Lazy-loaded signer. Returns null if no signer is available. */
143
+ getSigner = lazy(this.#getSigner);
144
+ /**
145
+ * Gets a signer or throws if none is available.
146
+ * @throws If no signer is available.
147
+ * @returns The signer instance.
148
+ */
149
+ requireSigner = async () => {
150
+ logger.debug('Requiring signer');
151
+ const signer = await this.getSigner();
152
+ if (!signer) {
153
+ throw new FheError({ code: FheErrorCode.MissingSigner, message: 'Signer is required but not available. Provide a signer in config or set PRIVATE_KEY in environment.' });
154
+ }
155
+ return signer;
156
+ };
157
+ /**
158
+ * Gets the connected wallet address.
159
+ * @throws If no signer is available.
160
+ * @returns The wallet address.
161
+ */
162
+ requireWalletAddress = async () => {
163
+ logger.debug('Requiring wallet address');
164
+ const signer = await this.requireSigner();
165
+ return (await signer.getAddress());
166
+ };
167
+ // ============================================
168
+ // MetaMask Integration
169
+ // ============================================
170
+ /**
171
+ * Initializes a MetaMask signer in the browser.
172
+ * Requests account access and returns the connected signer.
173
+ *
174
+ * @returns MetaMask signer instance
175
+ * @throws If MetaMask is not installed or the user rejects access
176
+ */
177
+ async initMetaMaskSigner() {
178
+ const metamaskProvider = window?.ethereum;
179
+ if (!metamaskProvider) {
180
+ throw new FheError({
181
+ code: FheErrorCode.MissingSigner,
182
+ message: 'MetaMask provider not found. Please install MetaMask or provide a signer in the config.',
183
+ });
184
+ }
185
+ this.cleanup();
186
+ logger.info('Requesting MetaMask accounts...');
187
+ await metamaskProvider.request({ method: 'eth_requestAccounts' });
188
+ const browserProvider = new ethers.BrowserProvider(metamaskProvider);
189
+ const signer = await browserProvider.getSigner();
190
+ const address = await signer.getAddress();
191
+ metamaskProvider.on('accountsChanged', this.handleAccountsChangedBound);
192
+ metamaskProvider.on('disconnect', this.handleDisconnectBound);
193
+ metamaskProvider.on('chainChanged', this.handleChainChangedBound);
194
+ logger.info(`MetaMask connected: ${address}`);
195
+ return signer;
196
+ }
197
+ handleAccountsChanged(accounts) {
198
+ if (accounts.length === 0) {
199
+ logger.warn("Wallet logout");
200
+ }
201
+ else {
202
+ logger.info("Wallet switched");
203
+ }
204
+ this.invalidateCache();
205
+ }
206
+ handleDisconnect() {
207
+ logger.warn("Wallet disconnected");
208
+ this.invalidateCache();
209
+ }
210
+ handleChainChanged(chainId) {
211
+ logger.warn(`Chain switched to ${chainId}`);
212
+ this.invalidateCache();
213
+ }
214
+ invalidateCache() {
215
+ this._chainId = null;
216
+ this.getSigner = lazy(this.#getSigner);
217
+ this.requireProvider = lazy(this.#requireProvider);
218
+ }
219
+ cleanup() {
220
+ const metamaskProvider = window?.ethereum;
221
+ if (metamaskProvider) {
222
+ logger.debug("cleanup");
223
+ metamaskProvider.removeListener('accountsChanged', this.handleAccountsChangedBound);
224
+ metamaskProvider.removeListener('disconnect', this.handleDisconnectBound);
225
+ metamaskProvider.removeListener('chainChanged', this.handleChainChangedBound);
226
+ }
227
+ }
228
+ // ============================================
229
+ // Chain & System Info
230
+ // ============================================
231
+ _chainId = null;
232
+ /**
233
+ * Gets the current chain ID.
234
+ * @returns The chain ID as a bigint.
235
+ */
236
+ async getChainID() {
237
+ if (this._chainId === null) {
238
+ const provider = await this.requireProvider();
239
+ this._chainId = (await provider.getNetwork()).chainId;
240
+ }
241
+ return this._chainId;
242
+ }
243
+ /**
244
+ * Gets the Jazz URL from config or environment.
245
+ * @throws If no Jazz URL is available.
246
+ * @returns The Jazz URL.
247
+ */
248
+ requireJazzUrl() {
249
+ // Use explicitly provided config URL if available
250
+ if (this.config.jazzUrl) {
251
+ logger.debug('Using provided jazzUrl:', this.config.jazzUrl);
252
+ assertIsValidUrl(this.config.jazzUrl);
253
+ return this.config.jazzUrl;
254
+ }
255
+ // In Node.js, environment variables take precedence over the built-in default
256
+ if (typeof window === 'undefined') {
257
+ const jazzUrl = getEnv('JAZZ_URL') ?? getEnv('FHE_JAZZ_URL');
258
+ if (jazzUrl && jazzUrl !== "") {
259
+ logger.debug('Using env jazzUrl:', jazzUrl);
260
+ assertIsValidUrl(jazzUrl);
261
+ return jazzUrl;
262
+ }
263
+ }
264
+ // Fall back to the built-in default URL if defined
265
+ if (DEFAULT_JAZZ_URL !== "") {
266
+ logger.debug('Using default jazzUrl:', DEFAULT_JAZZ_URL);
267
+ assertIsValidUrl(DEFAULT_JAZZ_URL);
268
+ return DEFAULT_JAZZ_URL;
269
+ }
270
+ throw new FheError({
271
+ code: FheErrorCode.MissingJazzUrl,
272
+ message: 'jazzUrl is required. Provide it in config or set JAZZ_URL or FHE_JAZZ_URL environment variable.',
273
+ });
274
+ }
275
+ /**
276
+ * Gets system contract information for the current chain.
277
+ * @returns System contract addresses and configuration.
278
+ */
279
+ async getSystemContractInfo() {
280
+ const chainId = await this.getChainID();
281
+ return getSystemContractInfo(chainId);
282
+ }
283
+ /**
284
+ * Asynchronously retrieves the signer address information for the current blockchain network.
285
+ *
286
+ * @returns A Promise that resolves to the SignerAddressInfo for the current chain.
287
+ * @throws {Error} If the chain ID cannot be retrieved or is not supported.
288
+ */
289
+ async getSignerAddressInfo() {
290
+ const chainId = await this.getChainID();
291
+ return getSignerAddressInfo(chainId);
292
+ }
293
+ }
294
+ //# sourceMappingURL=fhetransform-sdk-b.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fhetransform-sdk-b.js","sourceRoot":"","sources":["../../src/sdk/fhetransform-sdk-b.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,87 @@
1
+ import { Token } from '../contract/token.js';
2
+ import { ConvertToken } from '../contract/convert-token.js';
3
+ import { EncryptParameters, EncryptPayload, EncryptResult } from '../jazz/encrypt.js';
4
+ import { UserDecryptParameters, UserDecryptPayload, UserDecryptResult } from '../jazz/user-decrypt.js';
5
+ import { PublicDecryptParameters, PublicDecryptPayload, PublicDecryptResult } from '../jazz/public-decrypt.js';
6
+ import { Address } from '../core/primitives.js';
7
+ import { FheTransformConfig, FheTransformSDKBase } from './fhetransform-sdk-b.js';
8
+ import { FheFeeEstimate } from '../core/estimate.js';
9
+ import { FheTransformSDKEventInput } from '../core/event.js';
10
+ import { PermitService } from './permit-service.js';
11
+ /**
12
+ * Main SDK class for FHE Transform operations.
13
+ * Provides access to token contracts, encryption, and decryption services.
14
+ */
15
+ export declare class FheTransformSDK extends FheTransformSDKBase {
16
+ private readonly jazz;
17
+ readonly permitService: PermitService;
18
+ private readonly jazzService;
19
+ /**
20
+ * Creates a new FHE Transform SDK instance.
21
+ * @param config - Configuration options for the SDK.
22
+ */
23
+ constructor(config: FheTransformConfig);
24
+ init(): Promise<void>;
25
+ initSync(): void;
26
+ /**
27
+ * Emits a structured SDK event into the unified SDK event stream.
28
+ *
29
+ * Listener exceptions are caught and logged so that a misbehaving subscriber
30
+ * can never corrupt SDK operations.
31
+ *
32
+ * Application code should subscribe via the `onEvent` config option, never
33
+ * call this directly.
34
+ *
35
+ * @param input - The event input data (type, payload, etc.)
36
+ * @param dappAddress - Optional dapp contract address associated with the event
37
+ *
38
+ * @remarks
39
+ * - This method is internal and should not be called directly by application code
40
+ * - Events are enriched with a timestamp before emission
41
+ * - Any errors in the event listener are caught and logged as warnings
42
+ * - The SDK operation continues unaffected even if the listener throws
43
+ *
44
+ * @internal
45
+ */
46
+ emitEvent(input: FheTransformSDKEventInput, dappAddress?: Address): void;
47
+ /**
48
+ * Encrypts values for use in confidential contracts.
49
+ * @param parameters - Encryption parameters containing payloads to encrypt.
50
+ * @returns Encrypted values matching the input structure.
51
+ */
52
+ encrypt<T extends EncryptPayload>(parameters: EncryptParameters<T>): Promise<EncryptResult<T>>;
53
+ /**
54
+ * Decrypts values that have been made publicly decryptable.
55
+ * @param parameters - Public decryption parameters.
56
+ * @returns Decrypted values with proof for verification.
57
+ */
58
+ publicDecrypt<T extends PublicDecryptPayload>(parameters: PublicDecryptParameters<T>): Promise<PublicDecryptResult<T>>;
59
+ /**
60
+ * Decrypts values using the user's private key.
61
+ * @param parameters - User decryption parameters.
62
+ * @returns Decrypted values.
63
+ */
64
+ userDecrypt<T extends UserDecryptPayload>(parameters: UserDecryptParameters<T>): Promise<UserDecryptResult<T>>;
65
+ /**
66
+ * Creates a Token instance for interacting with a confidential token contract.
67
+ * @param address - The token contract address.
68
+ * @returns A Token instance.
69
+ */
70
+ createToken(address: Address): Token;
71
+ /**
72
+ * Creates a ConvertToken instance for interacting with a token converter contract.
73
+ * Supports shielding (ERC-20 → confidential) and unshielding (confidential → ERC-20).
74
+ * @param address - The converter contract address.
75
+ * @returns A ConvertToken instance.
76
+ */
77
+ createConvertToken(address: Address): ConvertToken;
78
+ /**
79
+ * Estimates the FHE operation fee for a specific contract function call.
80
+ *
81
+ * @param contractAddress - The address of the target contract
82
+ * @param functionName - The name of the function to estimate fees for
83
+ * @param chainId - The blockchain chain ID
84
+ * @returns A promise resolving to the FHE fee estimate
85
+ */
86
+ estimateFheFee(contractAddress: string, functionName: string, chainId: bigint): Promise<FheFeeEstimate>;
87
+ }