@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,190 @@
1
+ import { FheErrorCode } from "./error-codes.js";
2
+ import { formatMessage, getErrorCatalogEntry } from "./error-catalog.js";
3
+ const MAX_CAUSE_DEPTH = 5;
4
+ function isProduction() {
5
+ return typeof process !== "undefined" && process.env?.NODE_ENV === "production";
6
+ }
7
+ /** Converts a value to a JSON-safe form (bigint -> string, Date -> ISO). */
8
+ function sanitizeValue(value) {
9
+ if (typeof value === "bigint") {
10
+ return value.toString();
11
+ }
12
+ if (value instanceof Date) {
13
+ return value.toISOString();
14
+ }
15
+ if (Array.isArray(value)) {
16
+ return value.map((item) => sanitizeValue(item));
17
+ }
18
+ if (value !== null && typeof value === "object") {
19
+ const out = {};
20
+ for (const [key, item] of Object.entries(value)) {
21
+ if (item === undefined || typeof item === "function" || typeof item === "symbol") {
22
+ continue;
23
+ }
24
+ out[key] = sanitizeValue(item);
25
+ }
26
+ return out;
27
+ }
28
+ return value;
29
+ }
30
+ function sanitizeContext(context) {
31
+ if (!context) {
32
+ return undefined;
33
+ }
34
+ return Object.freeze(sanitizeValue(context));
35
+ }
36
+ function sanitizeCause(cause) {
37
+ const record = cause;
38
+ const out = { message: String(record?.message ?? cause) };
39
+ if (typeof record?.name === "string" && record.name.length > 0) {
40
+ out.name = record.name;
41
+ }
42
+ if (cause instanceof FheError) {
43
+ out.code = cause.code;
44
+ }
45
+ return out;
46
+ }
47
+ /**
48
+ * Unified, production-ready SDK error.
49
+ *
50
+ * Every SDK failure should surface as an FheError so clients can switch on
51
+ * `code` instead of matching message text. The serialized payload is JSON-safe
52
+ * and deliberately never contains secrets or debug-only context.
53
+ */
54
+ export class FheError extends Error {
55
+ code;
56
+ messageKey;
57
+ docsUrl;
58
+ httpStatus;
59
+ retryable;
60
+ retryAfterMs;
61
+ operation;
62
+ operationId;
63
+ context;
64
+ debugContext;
65
+ captureStack;
66
+ timestamp;
67
+ _causeChain;
68
+ _public;
69
+ _full;
70
+ constructor(options) {
71
+ const entry = getErrorCatalogEntry(options.code);
72
+ const message = options.message ?? formatMessage(entry.messageTemplate, options.context);
73
+ super(message, { cause: options.cause });
74
+ this.name = "FheError";
75
+ this.code = options.code;
76
+ this.messageKey = entry.messageKey;
77
+ this.docsUrl = entry.docsUrl;
78
+ this.httpStatus = entry.httpStatus;
79
+ this.retryable = options.retryable ?? entry.retryable;
80
+ this.retryAfterMs = options.retryAfterMs;
81
+ this.operation = options.operation;
82
+ this.operationId = options.operationId;
83
+ this.context = sanitizeContext(options.context);
84
+ this.debugContext = sanitizeContext(options.debugContext);
85
+ this.captureStack = options.captureStack ?? !isProduction();
86
+ this.timestamp = new Date().toISOString();
87
+ }
88
+ /**
89
+ * Full envelope including the stack trace when captureStack is enabled.
90
+ * The result is memoized per instance.
91
+ */
92
+ toJSON() {
93
+ if (this._full) {
94
+ return this._full;
95
+ }
96
+ const error = {
97
+ name: "FheError",
98
+ code: this.code,
99
+ message: this.message,
100
+ messageKey: this.messageKey,
101
+ retryable: this.retryable,
102
+ docsUrl: this.docsUrl,
103
+ httpStatus: this.httpStatus,
104
+ timestamp: this.timestamp,
105
+ };
106
+ if (this.operation) {
107
+ error.operation = this.operation;
108
+ }
109
+ if (this.operationId) {
110
+ error.operationId = this.operationId;
111
+ }
112
+ if (this.context) {
113
+ error.context = this.context;
114
+ }
115
+ if (this.retryAfterMs !== undefined) {
116
+ error.retryAfterMs = this.retryAfterMs;
117
+ }
118
+ const chain = this.getCauseChain();
119
+ if (chain.length > 0) {
120
+ error.cause = chain[0];
121
+ }
122
+ if (this.captureStack && typeof this.stack === "string" && this.stack.length > 0) {
123
+ error.stack = this.stack;
124
+ }
125
+ this._full = { error };
126
+ return this._full;
127
+ }
128
+ /**
129
+ * Sanitized payload without stack traces or debug context. Safe to expose
130
+ * to external clients and APIs. Memoized per instance.
131
+ */
132
+ getPublicPayload() {
133
+ if (this._public) {
134
+ return this._public;
135
+ }
136
+ const { stack: _stack, ...publicError } = this.toJSON().error;
137
+ this._public = publicError;
138
+ return this._public;
139
+ }
140
+ /** HTTP boundary helper: maps the error to a status code and JSON body. */
141
+ toHttpResponse() {
142
+ return { status: this.httpStatus, body: this.toJSON() };
143
+ }
144
+ /**
145
+ * Lazy, cycle-safe cause chain (immediate cause first), capped at
146
+ * MAX_CAUSE_DEPTH. Memoized per instance.
147
+ */
148
+ getCauseChain() {
149
+ if (this._causeChain) {
150
+ return this._causeChain;
151
+ }
152
+ const chain = [];
153
+ const seen = new Set();
154
+ let current = this.cause;
155
+ while (current != null && chain.length < MAX_CAUSE_DEPTH) {
156
+ if (typeof current === "object" && current !== null) {
157
+ if (seen.has(current)) {
158
+ break;
159
+ }
160
+ seen.add(current);
161
+ }
162
+ chain.push(sanitizeCause(current));
163
+ current = current?.cause;
164
+ }
165
+ this._causeChain = chain;
166
+ return chain;
167
+ }
168
+ // ============================================================================
169
+ // Static factories - fill catalog defaults, keep call sites concise.
170
+ // ============================================================================
171
+ static invalidArgument(context, cause) {
172
+ return new FheError({ code: FheErrorCode.InvalidArgument, context, cause });
173
+ }
174
+ static network(cause, context) {
175
+ return new FheError({ code: FheErrorCode.Network, cause, context, retryable: true });
176
+ }
177
+ static transactionReverted(context, cause) {
178
+ return new FheError({ code: FheErrorCode.TransactionReverted, context, cause });
179
+ }
180
+ static permissionDenied(context) {
181
+ return new FheError({ code: FheErrorCode.PermissionDenied, context });
182
+ }
183
+ static internal(cause, context) {
184
+ return new FheError({ code: FheErrorCode.Internal, cause, context });
185
+ }
186
+ static notImplemented(context) {
187
+ return new FheError({ code: FheErrorCode.NotImplemented, context });
188
+ }
189
+ }
190
+ //# sourceMappingURL=fhe-error.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fhe-error.js","sourceRoot":"","sources":["../../../src/core/errors/fhe-error.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export * from "./error-codes.js";
2
+ export * from "./error-catalog.js";
3
+ export * from "./fhe-error.js";
4
+ export * from "./error-utils.js";
@@ -0,0 +1,5 @@
1
+ export * from "./error-codes.js";
2
+ export * from "./error-catalog.js";
3
+ export * from "./fhe-error.js";
4
+ export * from "./error-utils.js";
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/errors/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Detailed breakdown of FHE fees.
3
+ * All fees are in the chain's native token (wei).
4
+ */
5
+ export interface FheFeeDetails {
6
+ /** Operation execution fee */
7
+ op: bigint;
8
+ /** Public decryption fee */
9
+ publicDecryption: bigint;
10
+ /** Input verification fee */
11
+ inputVerification: bigint;
12
+ /** User decryption fee */
13
+ userDecryption: bigint;
14
+ }
15
+ /**
16
+ * Result of an FHE fee estimate.
17
+ * Contains the total fee and a detailed breakdown.
18
+ */
19
+ export interface FheFeeEstimate {
20
+ /** Contract address being called */
21
+ contractAddress: string;
22
+ /** Function name being estimated */
23
+ functionName: string;
24
+ /** Estimated total fee in the chain's native token (wei/Gwei) */
25
+ totalFee: bigint;
26
+ /** Fee breakdown details */
27
+ feeDetails: FheFeeDetails;
28
+ }
29
+ /**
30
+ * Estimates the FHE fee for a contract call on supported chains.
31
+ * The estimate is keyed off the chain ID passed to the function.
32
+ *
33
+ * @param contractAddress - The contract address for fee estimation
34
+ * @param functionName - The function name to estimate fee for
35
+ * @param chainId - The chain ID to calculate fee for
36
+ * @returns Fee estimate result containing contract address, function name, and total fee
37
+ * @throws Error for unsupported chain IDs
38
+ */
39
+ export declare function estimateFheFee(contractAddress: string, functionName: string, chainId: bigint): Promise<FheFeeEstimate>;
@@ -0,0 +1,111 @@
1
+ import { logger } from "./logger.js";
2
+ import { formatValue } from "./pretty-print.js";
3
+ import { FheErrorCode } from "./errors/error-codes.js";
4
+ import { FheError } from "./errors/fhe-error.js";
5
+ // ============================================================================
6
+ // Constants
7
+ // ============================================================================
8
+ const ONE_GWEI = 10n ** 9n;
9
+ const ONE_ETH = 10n ** 18n;
10
+ const FEE_UNIT = 1n;
11
+ const ZERO_FEE = 0n;
12
+ // ============================================================================
13
+ // Helper Functions
14
+ // ============================================================================
15
+ /**
16
+ * Creates a default fee details object with all fees set to 0.
17
+ * Used as a baseline before applying chain-specific configurations.
18
+ *
19
+ * @returns A new FheFeeDetails object with all fields set to 0n
20
+ */
21
+ function createDefaultFeeDetails() {
22
+ return {
23
+ op: 0n,
24
+ inputVerification: 0n,
25
+ publicDecryption: 0n,
26
+ userDecryption: 0n,
27
+ };
28
+ }
29
+ /**
30
+ * Gets the fee configuration for a specific function on BNB Chain.
31
+ *
32
+ * If the function is not found in the configuration, a default config
33
+ * (`__others`) is returned with only the op fee set.
34
+ *
35
+ * @param functionName - The name of the function to get fees for
36
+ * @returns A partial fee configuration for the specified function
37
+ */
38
+ function getBNBChainFeeConfig(functionName) {
39
+ const DEFAULT_OP_FEE = ONE_GWEI * 720000n; // to do
40
+ const configs = {
41
+ // Confidential ERC20
42
+ confidentialTransfer: { op: DEFAULT_OP_FEE, inputVerification: ZERO_FEE, userDecryption: ZERO_FEE },
43
+ confidentialTransferFrom: { op: DEFAULT_OP_FEE, inputVerification: ZERO_FEE, userDecryption: ZERO_FEE },
44
+ confidentialTransferAndCall: { op: DEFAULT_OP_FEE, inputVerification: ZERO_FEE, userDecryption: ZERO_FEE },
45
+ confidentialTransferFromAndCall: { op: DEFAULT_OP_FEE, inputVerification: ZERO_FEE, userDecryption: ZERO_FEE },
46
+ // Confidential ERC20 Convert
47
+ shield: { op: DEFAULT_OP_FEE, userDecryption: ZERO_FEE },
48
+ unshield: { op: DEFAULT_OP_FEE, inputVerification: ZERO_FEE, publicDecryption: ZERO_FEE },
49
+ finalizeUnshield: { op: ZERO_FEE },
50
+ // BatchConfidential
51
+ claim: { op: DEFAULT_OP_FEE, userDecryption: ZERO_FEE },
52
+ quit: { op: DEFAULT_OP_FEE, userDecryption: ZERO_FEE },
53
+ dispatchBatch: { op: DEFAULT_OP_FEE, publicDecryption: ZERO_FEE },
54
+ dispatchBatchCallback: { op: DEFAULT_OP_FEE },
55
+ // Others
56
+ __others: { op: DEFAULT_OP_FEE },
57
+ };
58
+ // Return the config for the function, or the default '__others' config
59
+ return configs[functionName] || configs["__others"];
60
+ }
61
+ /**
62
+ * Calculates the total fee by summing all individual fee components.
63
+ *
64
+ * @param details - The fee details to sum
65
+ * @returns The total fee as a bigint
66
+ */
67
+ function calculateTotalFee(details) {
68
+ return details.op + details.inputVerification + details.publicDecryption + details.userDecryption;
69
+ }
70
+ /**
71
+ * Estimates the FHE fee for a contract call on supported chains.
72
+ * The estimate is keyed off the chain ID passed to the function.
73
+ *
74
+ * @param contractAddress - The contract address for fee estimation
75
+ * @param functionName - The function name to estimate fee for
76
+ * @param chainId - The chain ID to calculate fee for
77
+ * @returns Fee estimate result containing contract address, function name, and total fee
78
+ * @throws Error for unsupported chain IDs
79
+ */
80
+ export async function estimateFheFee(contractAddress, functionName, chainId) {
81
+ // Step 1: Determine chain type
82
+ const isLocal = chainId === 31337n;
83
+ const isBNBChain = chainId === 56n || chainId === 97n;
84
+ logger.debug(`Estimating FHE fee: chainId=${chainId}, function=${functionName}, contract=${contractAddress}`);
85
+ // Step 2: Create default fee details (all fees set to 0)
86
+ const feeDetails = createDefaultFeeDetails();
87
+ // Step 3: Apply chain-specific fee configuration
88
+ if (isLocal) {
89
+ // Local development environment: Use a fixed fee of 1 ETH
90
+ // This simplifies testing and development
91
+ feeDetails.op = ONE_ETH; // 1 ETH
92
+ }
93
+ else if (isBNBChain) {
94
+ Object.assign(feeDetails, getBNBChainFeeConfig(functionName));
95
+ }
96
+ else {
97
+ logger.error(`Unsupported chain ID for fee estimation: ${chainId}`);
98
+ throw new FheError({ code: FheErrorCode.UnsupportedChain, message: `Unsupported chain ID for fee estimation: ${chainId}` });
99
+ }
100
+ // Step 4: Calculate total fee by summing all components
101
+ const totalFee = calculateTotalFee(feeDetails);
102
+ const result = {
103
+ contractAddress,
104
+ functionName,
105
+ totalFee,
106
+ feeDetails,
107
+ };
108
+ logger.debug(() => ['Fee estimate complete:', formatValue(result)]);
109
+ return result;
110
+ }
111
+ //# sourceMappingURL=estimate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"estimate.js","sourceRoot":"","sources":["../../src/core/estimate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,212 @@
1
+ import { Plaintext } from "./fhe-type.js";
2
+ import { Address, Bytes32Hex, BytesHex } from "./primitives.js";
3
+ import type { FheErrorPayload } from "./errors/fhe-error.js";
4
+ export declare const FheTransformSDKEvents: {
5
+ readonly GetOrFetchPublickeyEnd: "getOrFetchPublickey:end";
6
+ readonly EncryptWithZkEnd: "encryptWithZk:end";
7
+ readonly FetchInputProofStart: "fetchInputProof:start";
8
+ readonly FetchInputProofEnd: "fetchInputProof:end";
9
+ readonly VerifyAlphatrionSignaturesEnd: "verifyAlphatrionSignatures:end";
10
+ readonly PublicDecryptionPermissionCheckEnd: "publicDecryptionPermissionCheck:end";
11
+ readonly FetchPublicDecryptStart: "fetchPublicDecrypt:start";
12
+ readonly FetchPublicDecryptEnd: "fetchPublicDecrypt:end";
13
+ readonly VerifyPublicDecryptionSignaturesEnd: "verifyPublicDecryptionSignatures:end";
14
+ readonly GetOrCreateTKeyPairWithPermitEnd: "getOrCreateTKeyPairWithPermit:end";
15
+ readonly UserDecryptionPermissionCheckEnd: "userDecryptionPermissionCheck:end";
16
+ readonly FetchUserDecryptStart: "fetchUserDecrypt:start";
17
+ readonly FetchUserDecryptEnd: "fetchUserDecrypt:end";
18
+ readonly VerifyUserDecryptionSignaturesEnd: "verifyUserDecryptionSignatures:end";
19
+ readonly DecryptKmsSignedcryptedSharessEnd: "decryptKmsSignedcryptedSharess:end";
20
+ readonly EncryptStart: "encrypt:start";
21
+ readonly EncryptEnd: "encrypt:end";
22
+ readonly EncryptError: "encrypt:error";
23
+ readonly DecryptStart: "decrypt:start";
24
+ readonly DecryptEnd: "decrypt:end";
25
+ readonly DecryptError: "decrypt:error";
26
+ readonly TransactionEnd: "transaction:end";
27
+ readonly TransactionError: "transaction:error";
28
+ readonly ShieldSubmitted: "shield:submitted";
29
+ readonly ShieldConfirmed: "shield:confirmed";
30
+ readonly ShieldEnd: "shield:end";
31
+ readonly UnshieldSubmitted: "unshield:submitted";
32
+ readonly UnshieldConfirmed: "unshield:confirmed";
33
+ readonly UnshieldEnd: "unshield:end";
34
+ readonly FinalizeUnshieldSubmitted: "finalizeUnshield:submitted";
35
+ readonly FinalizeUnshieldConfirmed: "finalizeUnshield:confirmed";
36
+ readonly FinalizeUnshieldEnd: "finalizeUnshield:end";
37
+ readonly TransferSubmitted: "transfer:submitted";
38
+ readonly TransferFromSubmitted: "transferFrom:submitted";
39
+ readonly SetOperatorSubmitted: "setOperator:submitted";
40
+ };
41
+ /** Union of all SDK event type strings. */
42
+ export type FheTransformSDKEventType = (typeof FheTransformSDKEvents)[keyof typeof FheTransformSDKEvents];
43
+ export interface BaseEvent {
44
+ dappAddress?: Address;
45
+ timestamp: number;
46
+ operationId?: string;
47
+ }
48
+ export interface GetOrFetchPublickeyEndEvent extends BaseEvent {
49
+ type: typeof FheTransformSDKEvents.GetOrFetchPublickeyEnd;
50
+ durationMs: number;
51
+ }
52
+ export interface EncryptWithZkEndEvent extends BaseEvent {
53
+ type: typeof FheTransformSDKEvents.EncryptWithZkEnd;
54
+ durationMs: number;
55
+ }
56
+ export interface FetchInputProofEndEvent extends BaseEvent {
57
+ type: typeof FheTransformSDKEvents.FetchInputProofEnd;
58
+ durationMs: number;
59
+ }
60
+ export interface FetchInputProofStartEvent extends BaseEvent {
61
+ type: typeof FheTransformSDKEvents.FetchInputProofStart;
62
+ }
63
+ export interface VerifyAlphatrionSignaturesEndEvent extends BaseEvent {
64
+ type: typeof FheTransformSDKEvents.VerifyAlphatrionSignaturesEnd;
65
+ durationMs: number;
66
+ }
67
+ export interface PublicDecryptionPermissionCheckEndEvent extends BaseEvent {
68
+ type: typeof FheTransformSDKEvents.PublicDecryptionPermissionCheckEnd;
69
+ durationMs: number;
70
+ }
71
+ export interface FetchPublicDecryptStartEvent extends BaseEvent {
72
+ type: typeof FheTransformSDKEvents.FetchPublicDecryptStart;
73
+ }
74
+ export interface FetchPublicDecryptEndEvent extends BaseEvent {
75
+ type: typeof FheTransformSDKEvents.FetchPublicDecryptEnd;
76
+ durationMs: number;
77
+ }
78
+ export interface VerifyPublicDecryptionSignaturesEndEvent extends BaseEvent {
79
+ type: typeof FheTransformSDKEvents.VerifyPublicDecryptionSignaturesEnd;
80
+ durationMs: number;
81
+ }
82
+ export interface GetOrCreateTKeyPairWithPermitEndEvent extends BaseEvent {
83
+ type: typeof FheTransformSDKEvents.GetOrCreateTKeyPairWithPermitEnd;
84
+ durationMs: number;
85
+ }
86
+ export interface UserDecryptionPermissionCheckEndEvent extends BaseEvent {
87
+ type: typeof FheTransformSDKEvents.UserDecryptionPermissionCheckEnd;
88
+ durationMs: number;
89
+ }
90
+ export interface FetchUserDecryptStartEvent extends BaseEvent {
91
+ type: typeof FheTransformSDKEvents.FetchUserDecryptStart;
92
+ }
93
+ export interface FetchUserDecryptEndEvent extends BaseEvent {
94
+ type: typeof FheTransformSDKEvents.FetchUserDecryptEnd;
95
+ durationMs: number;
96
+ }
97
+ export interface VerifyUserDecryptionSignaturesEndEvent extends BaseEvent {
98
+ type: typeof FheTransformSDKEvents.VerifyUserDecryptionSignaturesEnd;
99
+ durationMs: number;
100
+ }
101
+ export interface DecryptKmsSignedcryptedSharessEndEvent extends BaseEvent {
102
+ type: typeof FheTransformSDKEvents.DecryptKmsSignedcryptedSharessEnd;
103
+ durationMs: number;
104
+ }
105
+ export interface EncryptStartEvent extends BaseEvent {
106
+ type: typeof FheTransformSDKEvents.EncryptStart;
107
+ }
108
+ export interface EncryptEndEvent extends BaseEvent {
109
+ type: typeof FheTransformSDKEvents.EncryptEnd;
110
+ durationMs: number;
111
+ }
112
+ export interface EncryptErrorEvent extends BaseEvent {
113
+ type: typeof FheTransformSDKEvents.EncryptError;
114
+ durationMs: number;
115
+ error: FheErrorPayload["error"];
116
+ }
117
+ export interface DecryptStartEvent extends BaseEvent {
118
+ type: typeof FheTransformSDKEvents.DecryptStart;
119
+ encryptedValues: Bytes32Hex[];
120
+ }
121
+ export interface DecryptEndEvent extends BaseEvent {
122
+ type: typeof FheTransformSDKEvents.DecryptEnd;
123
+ durationMs: number;
124
+ encryptedValues: Bytes32Hex[];
125
+ plaintexts: Plaintext[];
126
+ }
127
+ export interface DecryptErrorEvent extends BaseEvent {
128
+ type: typeof FheTransformSDKEvents.DecryptError;
129
+ encryptedValues: Bytes32Hex[];
130
+ error: FheErrorPayload["error"];
131
+ durationMs: number;
132
+ }
133
+ export interface TransactionEndEvent extends BaseEvent {
134
+ type: typeof FheTransformSDKEvents.TransactionEnd;
135
+ functionName: string;
136
+ txHash: BytesHex;
137
+ durationMs: number;
138
+ }
139
+ export interface TransactionErrorEvent extends BaseEvent {
140
+ type: typeof FheTransformSDKEvents.TransactionError;
141
+ functionName: string;
142
+ error: FheErrorPayload["error"];
143
+ durationMs: number;
144
+ }
145
+ export interface ShieldSubmittedEvent extends BaseEvent {
146
+ type: typeof FheTransformSDKEvents.ShieldSubmitted;
147
+ txHash: BytesHex;
148
+ elapsedMs: number;
149
+ }
150
+ export interface ShieldConfirmedEvent extends BaseEvent {
151
+ type: typeof FheTransformSDKEvents.ShieldConfirmed;
152
+ txHash: BytesHex;
153
+ elapsedMs: number;
154
+ }
155
+ export interface ShieldEndEvent extends BaseEvent {
156
+ type: typeof FheTransformSDKEvents.ShieldEnd;
157
+ txHash: BytesHex;
158
+ durationMs: number;
159
+ }
160
+ export interface UnshieldSubmittedEvent extends BaseEvent {
161
+ type: typeof FheTransformSDKEvents.UnshieldSubmitted;
162
+ txHash: BytesHex;
163
+ elapsedMs: number;
164
+ }
165
+ export interface UnshieldConfirmedEvent extends BaseEvent {
166
+ type: typeof FheTransformSDKEvents.UnshieldConfirmed;
167
+ txHash: BytesHex;
168
+ elapsedMs: number;
169
+ }
170
+ export interface UnshieldEndEvent extends BaseEvent {
171
+ type: typeof FheTransformSDKEvents.UnshieldEnd;
172
+ txHash: BytesHex;
173
+ durationMs: number;
174
+ }
175
+ export interface FinalizeUnshieldSubmittedEvent extends BaseEvent {
176
+ type: typeof FheTransformSDKEvents.FinalizeUnshieldSubmitted;
177
+ txHash: BytesHex;
178
+ elapsedMs: number;
179
+ }
180
+ export interface FinalizeUnshieldConfirmedEvent extends BaseEvent {
181
+ type: typeof FheTransformSDKEvents.FinalizeUnshieldConfirmed;
182
+ txHash: BytesHex;
183
+ elapsedMs: number;
184
+ }
185
+ export interface FinalizeUnshieldEndEvent extends BaseEvent {
186
+ type: typeof FheTransformSDKEvents.FinalizeUnshieldEnd;
187
+ txHash: BytesHex;
188
+ durationMs: number;
189
+ }
190
+ export interface TransferSubmittedEvent extends BaseEvent {
191
+ type: typeof FheTransformSDKEvents.TransferSubmitted;
192
+ txHash: BytesHex;
193
+ }
194
+ export interface TransferFromSubmittedEvent extends BaseEvent {
195
+ type: typeof FheTransformSDKEvents.TransferFromSubmitted;
196
+ txHash: BytesHex;
197
+ }
198
+ export interface SetOperatorSubmittedEvent extends BaseEvent {
199
+ type: typeof FheTransformSDKEvents.SetOperatorSubmitted;
200
+ txHash: BytesHex;
201
+ }
202
+ /**
203
+ * Discriminated union of all SDK events.
204
+ *
205
+ * Decrypt events carry encrypted values and decrypted clear-text values so event
206
+ * subscribers can correlate and bind them in UI layers. Events never carry
207
+ * private keys, permit signatures, or ZK proofs.
208
+ */
209
+ export type FheTransformSDKEvent = GetOrFetchPublickeyEndEvent | EncryptWithZkEndEvent | FetchInputProofStartEvent | FetchInputProofEndEvent | VerifyAlphatrionSignaturesEndEvent | PublicDecryptionPermissionCheckEndEvent | FetchPublicDecryptStartEvent | FetchPublicDecryptEndEvent | VerifyPublicDecryptionSignaturesEndEvent | GetOrCreateTKeyPairWithPermitEndEvent | UserDecryptionPermissionCheckEndEvent | FetchUserDecryptStartEvent | FetchUserDecryptEndEvent | VerifyUserDecryptionSignaturesEndEvent | DecryptKmsSignedcryptedSharessEndEvent | EncryptStartEvent | EncryptEndEvent | EncryptErrorEvent | DecryptStartEvent | DecryptEndEvent | DecryptErrorEvent | TransactionEndEvent | TransactionErrorEvent | ShieldSubmittedEvent | ShieldConfirmedEvent | ShieldEndEvent | UnshieldSubmittedEvent | UnshieldConfirmedEvent | UnshieldEndEvent | FinalizeUnshieldSubmittedEvent | FinalizeUnshieldConfirmedEvent | FinalizeUnshieldEndEvent | TransferSubmittedEvent | TransferFromSubmittedEvent | SetOperatorSubmittedEvent;
210
+ export type FheTransformSDKEventListener = (event: FheTransformSDKEvent) => void;
211
+ export type FheTransformSDKEventInput = FheTransformSDKEvent extends infer E ? E extends FheTransformSDKEvent ? Omit<E, "timestamp" | "dappAddress"> : never : never;
212
+ export type FheTransformSDKEmitEventFunc = (input: FheTransformSDKEventInput, dappAddress?: Address) => void;
@@ -0,0 +1,42 @@
1
+ export const FheTransformSDKEvents = {
2
+ // Internal
3
+ GetOrFetchPublickeyEnd: "getOrFetchPublickey:end",
4
+ EncryptWithZkEnd: "encryptWithZk:end",
5
+ FetchInputProofStart: "fetchInputProof:start",
6
+ FetchInputProofEnd: "fetchInputProof:end",
7
+ VerifyAlphatrionSignaturesEnd: "verifyAlphatrionSignatures:end",
8
+ PublicDecryptionPermissionCheckEnd: "publicDecryptionPermissionCheck:end",
9
+ FetchPublicDecryptStart: "fetchPublicDecrypt:start",
10
+ FetchPublicDecryptEnd: "fetchPublicDecrypt:end",
11
+ VerifyPublicDecryptionSignaturesEnd: "verifyPublicDecryptionSignatures:end",
12
+ GetOrCreateTKeyPairWithPermitEnd: "getOrCreateTKeyPairWithPermit:end",
13
+ UserDecryptionPermissionCheckEnd: "userDecryptionPermissionCheck:end",
14
+ FetchUserDecryptStart: "fetchUserDecrypt:start",
15
+ FetchUserDecryptEnd: "fetchUserDecrypt:end",
16
+ VerifyUserDecryptionSignaturesEnd: "verifyUserDecryptionSignatures:end",
17
+ DecryptKmsSignedcryptedSharessEnd: "decryptKmsSignedcryptedSharess:end",
18
+ // FHE operations
19
+ EncryptStart: "encrypt:start",
20
+ EncryptEnd: "encrypt:end",
21
+ EncryptError: "encrypt:error",
22
+ DecryptStart: "decrypt:start",
23
+ DecryptEnd: "decrypt:end",
24
+ DecryptError: "decrypt:error",
25
+ // Write operations for Token
26
+ TransactionEnd: "transaction:end",
27
+ TransactionError: "transaction:error",
28
+ // Write operations for Convert Token
29
+ ShieldSubmitted: "shield:submitted",
30
+ ShieldConfirmed: "shield:confirmed",
31
+ ShieldEnd: "shield:end",
32
+ UnshieldSubmitted: "unshield:submitted",
33
+ UnshieldConfirmed: "unshield:confirmed",
34
+ UnshieldEnd: "unshield:end",
35
+ FinalizeUnshieldSubmitted: "finalizeUnshield:submitted",
36
+ FinalizeUnshieldConfirmed: "finalizeUnshield:confirmed",
37
+ FinalizeUnshieldEnd: "finalizeUnshield:end",
38
+ TransferSubmitted: "transfer:submitted",
39
+ TransferFromSubmitted: "transferFrom:submitted",
40
+ SetOperatorSubmitted: "setOperator:submitted",
41
+ };
42
+ //# sourceMappingURL=event.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event.js","sourceRoot":"","sources":["../../src/core/event.ts"],"names":[],"mappings":"AAKA,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,WAAW;IACX,sBAAsB,EAAE,yBAAyB;IACjD,gBAAgB,EAAE,mBAAmB;IACrC,oBAAoB,EAAE,uBAAuB;IAC7C,kBAAkB,EAAE,qBAAqB;IACzC,6BAA6B,EAAE,gCAAgC;IAE/D,kCAAkC,EAAE,qCAAqC;IACzE,uBAAuB,EAAE,0BAA0B;IACnD,qBAAqB,EAAE,wBAAwB;IAC/C,mCAAmC,EAAE,sCAAsC;IAE3E,gCAAgC,EAAE,mCAAmC;IACrE,gCAAgC,EAAE,mCAAmC;IACrE,qBAAqB,EAAE,wBAAwB;IAC/C,mBAAmB,EAAE,sBAAsB;IAC3C,iCAAiC,EAAE,oCAAoC;IACvE,iCAAiC,EAAE,oCAAoC;IAEvE,iBAAiB;IACjB,YAAY,EAAE,eAAe;IAC7B,UAAU,EAAE,aAAa;IACzB,YAAY,EAAE,eAAe;IAC7B,YAAY,EAAE,eAAe;IAC7B,UAAU,EAAE,aAAa;IACzB,YAAY,EAAE,eAAe;IAE7B,6BAA6B;IAC7B,cAAc,EAAE,iBAAiB;IACjC,gBAAgB,EAAE,mBAAmB;IAErC,qCAAqC;IACrC,eAAe,EAAE,kBAAkB;IACnC,eAAe,EAAE,kBAAkB;IACnC,SAAS,EAAE,YAAY;IACvB,iBAAiB,EAAE,oBAAoB;IACvC,iBAAiB,EAAE,oBAAoB;IACvC,WAAW,EAAE,cAAc;IAC3B,yBAAyB,EAAE,4BAA4B;IACvD,yBAAyB,EAAE,4BAA4B;IACvD,mBAAmB,EAAE,sBAAsB;IAE3C,iBAAiB,EAAE,oBAAoB;IACvC,qBAAqB,EAAE,wBAAwB;IAC/C,oBAAoB,EAAE,uBAAuB;CACrC,CAAC"}