@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.
- package/README.md +198 -0
- package/dist/abis/acl.abi.d.ts +379 -0
- package/dist/abis/acl.abi.js +495 -0
- package/dist/abis/acl.abi.js.map +1 -0
- package/dist/abis/alphatrion_reward.abi.d.ts +407 -0
- package/dist/abis/alphatrion_reward.abi.js +532 -0
- package/dist/abis/alphatrion_reward.abi.js.map +1 -0
- package/dist/abis/ciphertext_digests.abi.d.ts +336 -0
- package/dist/abis/ciphertext_digests.abi.js +444 -0
- package/dist/abis/ciphertext_digests.abi.js.map +1 -0
- package/dist/abis/ciphertext_verification.abi.d.ts +637 -0
- package/dist/abis/ciphertext_verification.abi.js +830 -0
- package/dist/abis/ciphertext_verification.abi.js.map +1 -0
- package/dist/abis/convert_token.abi.d.ts +922 -0
- package/dist/abis/convert_token.abi.js +1208 -0
- package/dist/abis/convert_token.abi.js.map +1 -0
- package/dist/abis/decryption.abi.d.ts +956 -0
- package/dist/abis/decryption.abi.js +1244 -0
- package/dist/abis/decryption.abi.js.map +1 -0
- package/dist/abis/erc20.abi.d.ts +265 -0
- package/dist/abis/erc20.abi.js +350 -0
- package/dist/abis/erc20.abi.js.map +1 -0
- package/dist/abis/fhe_executor.abi.d.ts +1535 -0
- package/dist/abis/fhe_executor.abi.js +1962 -0
- package/dist/abis/fhe_executor.abi.js.map +1 -0
- package/dist/abis/space_bridge_config.abi.d.ts +792 -0
- package/dist/abis/space_bridge_config.abi.js +1032 -0
- package/dist/abis/space_bridge_config.abi.js.map +1 -0
- package/dist/abis/token.abi.d.ts +630 -0
- package/dist/abis/token.abi.js +828 -0
- package/dist/abis/token.abi.js.map +1 -0
- package/dist/cli/eusdc.d.ts +2 -0
- package/dist/cli/eusdc.js +41 -0
- package/dist/cli/eusdc.js.map +1 -0
- package/dist/contract/callbacks.d.ts +59 -0
- package/dist/contract/callbacks.js +2 -0
- package/dist/contract/callbacks.js.map +1 -0
- package/dist/contract/convert-token.d.ts +107 -0
- package/dist/contract/convert-token.js +249 -0
- package/dist/contract/convert-token.js.map +1 -0
- package/dist/contract/token.d.ts +167 -0
- package/dist/contract/token.js +404 -0
- package/dist/contract/token.js.map +1 -0
- package/dist/contract/transaction.d.ts +29 -0
- package/dist/contract/transaction.js +2 -0
- package/dist/contract/transaction.js.map +1 -0
- package/dist/core/address.d.ts +118 -0
- package/dist/core/address.js +200 -0
- package/dist/core/address.js.map +1 -0
- package/dist/core/auth.d.ts +68 -0
- package/dist/core/auth.js +58 -0
- package/dist/core/auth.js.map +1 -0
- package/dist/core/bytes.d.ts +48 -0
- package/dist/core/bytes.js +117 -0
- package/dist/core/bytes.js.map +1 -0
- package/dist/core/cache-manager.d.ts +138 -0
- package/dist/core/cache-manager.js +440 -0
- package/dist/core/cache-manager.js.map +1 -0
- package/dist/core/chain.d.ts +41 -0
- package/dist/core/chain.js +59 -0
- package/dist/core/chain.js.map +1 -0
- package/dist/core/constants.d.ts +24 -0
- package/dist/core/constants.js +25 -0
- package/dist/core/constants.js.map +1 -0
- package/dist/core/error.d.ts +2 -0
- package/dist/core/error.js +14 -0
- package/dist/core/error.js.map +1 -0
- package/dist/core/errors/error-catalog.d.ts +29 -0
- package/dist/core/errors/error-catalog.js +84 -0
- package/dist/core/errors/error-catalog.js.map +1 -0
- package/dist/core/errors/error-codes.d.ts +52 -0
- package/dist/core/errors/error-codes.js +61 -0
- package/dist/core/errors/error-codes.js.map +1 -0
- package/dist/core/errors/error-utils.d.ts +27 -0
- package/dist/core/errors/error-utils.js +110 -0
- package/dist/core/errors/error-utils.js.map +1 -0
- package/dist/core/errors/fhe-error.d.ts +98 -0
- package/dist/core/errors/fhe-error.js +190 -0
- package/dist/core/errors/fhe-error.js.map +1 -0
- package/dist/core/errors/index.d.ts +4 -0
- package/dist/core/errors/index.js +5 -0
- package/dist/core/errors/index.js.map +1 -0
- package/dist/core/estimate.d.ts +39 -0
- package/dist/core/estimate.js +111 -0
- package/dist/core/estimate.js.map +1 -0
- package/dist/core/event.d.ts +212 -0
- package/dist/core/event.js +42 -0
- package/dist/core/event.js.map +1 -0
- package/dist/core/fhe-type.d.ts +75 -0
- package/dist/core/fhe-type.js +115 -0
- package/dist/core/fhe-type.js.map +1 -0
- package/dist/core/fhe.d.ts +11 -0
- package/dist/core/fhe.js +23 -0
- package/dist/core/fhe.js.map +1 -0
- package/dist/core/handle.d.ts +42 -0
- package/dist/core/handle.js +99 -0
- package/dist/core/handle.js.map +1 -0
- package/dist/core/json-utils.d.ts +18 -0
- package/dist/core/json-utils.js +37 -0
- package/dist/core/json-utils.js.map +1 -0
- package/dist/core/kms.d.ts +42 -0
- package/dist/core/kms.js +70 -0
- package/dist/core/kms.js.map +1 -0
- package/dist/core/logger.d.ts +3 -0
- package/dist/core/logger.js +11 -0
- package/dist/core/logger.js.map +1 -0
- package/dist/core/pretty-print.d.ts +18 -0
- package/dist/core/pretty-print.js +84 -0
- package/dist/core/pretty-print.js.map +1 -0
- package/dist/core/primitives.d.ts +22 -0
- package/dist/core/primitives.js +2 -0
- package/dist/core/primitives.js.map +1 -0
- package/dist/core/retryable-handler.d.ts +74 -0
- package/dist/core/retryable-handler.js +227 -0
- package/dist/core/retryable-handler.js.map +1 -0
- package/dist/core/signer-address-info.d.ts +15 -0
- package/dist/core/signer-address-info.js +33 -0
- package/dist/core/signer-address-info.js.map +1 -0
- package/dist/core/string.d.ts +28 -0
- package/dist/core/string.js +33 -0
- package/dist/core/string.js.map +1 -0
- package/dist/core/swallow.d.ts +23 -0
- package/dist/core/swallow.js +37 -0
- package/dist/core/swallow.js.map +1 -0
- package/dist/core/system-contract-info.d.ts +17 -0
- package/dist/core/system-contract-info.js +41 -0
- package/dist/core/system-contract-info.js.map +1 -0
- package/dist/core/ttl-cache.d.ts +81 -0
- package/dist/core/ttl-cache.js +113 -0
- package/dist/core/ttl-cache.js.map +1 -0
- package/dist/core/tx-error-parser.d.ts +40 -0
- package/dist/core/tx-error-parser.js +83 -0
- package/dist/core/tx-error-parser.js.map +1 -0
- package/dist/core/utils.d.ts +62 -0
- package/dist/core/utils.js +143 -0
- package/dist/core/utils.js.map +1 -0
- package/dist/index.d.ts +40 -0
- package/dist/index.js +48 -0
- package/dist/index.js.map +1 -0
- package/dist/jazz/encrypt-key-p.d.ts +65 -0
- package/dist/jazz/encrypt-key-p.js +283 -0
- package/dist/jazz/encrypt-key-p.js.map +1 -0
- package/dist/jazz/encrypt-p.d.ts +82 -0
- package/dist/jazz/encrypt-p.js +139 -0
- package/dist/jazz/encrypt-p.js.map +1 -0
- package/dist/jazz/encrypt.d.ts +58 -0
- package/dist/jazz/encrypt.js +155 -0
- package/dist/jazz/encrypt.js.map +1 -0
- package/dist/jazz/input-proof-p.d.ts +122 -0
- package/dist/jazz/input-proof-p.js +265 -0
- package/dist/jazz/input-proof-p.js.map +1 -0
- package/dist/jazz/jazz-client-i.d.ts +16 -0
- package/dist/jazz/jazz-client-i.js +2 -0
- package/dist/jazz/jazz-client-i.js.map +1 -0
- package/dist/jazz/jazz-client.d.ts +18 -0
- package/dist/jazz/jazz-client.js +24 -0
- package/dist/jazz/jazz-client.js.map +1 -0
- package/dist/jazz/key-pair.d.ts +50 -0
- package/dist/jazz/key-pair.js +166 -0
- package/dist/jazz/key-pair.js.map +1 -0
- package/dist/jazz/mock/fake.d.ts +3 -0
- package/dist/jazz/mock/fake.js +23 -0
- package/dist/jazz/mock/fake.js.map +1 -0
- package/dist/jazz/mock/fetch-input-proof.d.ts +4 -0
- package/dist/jazz/mock/fetch-input-proof.js +63 -0
- package/dist/jazz/mock/fetch-input-proof.js.map +1 -0
- package/dist/jazz/mock/fetch-key-url.d.ts +3 -0
- package/dist/jazz/mock/fetch-key-url.js +15 -0
- package/dist/jazz/mock/fetch-key-url.js.map +1 -0
- package/dist/jazz/mock/fetch-public-decrypt.d.ts +3 -0
- package/dist/jazz/mock/fetch-public-decrypt.js +81 -0
- package/dist/jazz/mock/fetch-public-decrypt.js.map +1 -0
- package/dist/jazz/mock/fetch-user-decrypt.d.ts +4 -0
- package/dist/jazz/mock/fetch-user-decrypt.js +174 -0
- package/dist/jazz/mock/fetch-user-decrypt.js.map +1 -0
- package/dist/jazz/module/fetch-input-proof.d.ts +19 -0
- package/dist/jazz/module/fetch-input-proof.js +72 -0
- package/dist/jazz/module/fetch-input-proof.js.map +1 -0
- package/dist/jazz/module/fetch-key-url.d.ts +17 -0
- package/dist/jazz/module/fetch-key-url.js +46 -0
- package/dist/jazz/module/fetch-key-url.js.map +1 -0
- package/dist/jazz/module/fetch-public-decrypt.d.ts +19 -0
- package/dist/jazz/module/fetch-public-decrypt.js +65 -0
- package/dist/jazz/module/fetch-public-decrypt.js.map +1 -0
- package/dist/jazz/module/fetch-user-decrypt.d.ts +19 -0
- package/dist/jazz/module/fetch-user-decrypt.js +109 -0
- package/dist/jazz/module/fetch-user-decrypt.js.map +1 -0
- package/dist/jazz/module/jazz-async-request.d.ts +102 -0
- package/dist/jazz/module/jazz-async-request.js +515 -0
- package/dist/jazz/module/jazz-async-request.js.map +1 -0
- package/dist/jazz/module/jazz-p.d.ts +61 -0
- package/dist/jazz/module/jazz-p.js +33 -0
- package/dist/jazz/module/jazz-p.js.map +1 -0
- package/dist/jazz/module/s3-download.d.ts +85 -0
- package/dist/jazz/module/s3-download.js +293 -0
- package/dist/jazz/module/s3-download.js.map +1 -0
- package/dist/jazz/permit.d.ts +200 -0
- package/dist/jazz/permit.js +319 -0
- package/dist/jazz/permit.js.map +1 -0
- package/dist/jazz/public-decrypt-p.d.ts +96 -0
- package/dist/jazz/public-decrypt-p.js +258 -0
- package/dist/jazz/public-decrypt-p.js.map +1 -0
- package/dist/jazz/public-decrypt.d.ts +48 -0
- package/dist/jazz/public-decrypt.js +156 -0
- package/dist/jazz/public-decrypt.js.map +1 -0
- package/dist/jazz/read-contract.d.ts +81 -0
- package/dist/jazz/read-contract.js +125 -0
- package/dist/jazz/read-contract.js.map +1 -0
- package/dist/jazz/types/common.d.ts +17 -0
- package/dist/jazz/types/common.js +2 -0
- package/dist/jazz/types/common.js.map +1 -0
- package/dist/jazz/types/input-proof.d.ts +76 -0
- package/dist/jazz/types/input-proof.js +2 -0
- package/dist/jazz/types/input-proof.js.map +1 -0
- package/dist/jazz/types/key-url.d.ts +68 -0
- package/dist/jazz/types/key-url.js +5 -0
- package/dist/jazz/types/key-url.js.map +1 -0
- package/dist/jazz/types/public-decrypt.d.ts +61 -0
- package/dist/jazz/types/public-decrypt.js +2 -0
- package/dist/jazz/types/public-decrypt.js.map +1 -0
- package/dist/jazz/types/user-decrypt.d.ts +123 -0
- package/dist/jazz/types/user-decrypt.js +2 -0
- package/dist/jazz/types/user-decrypt.js.map +1 -0
- package/dist/jazz/user-decrypt-p.d.ts +111 -0
- package/dist/jazz/user-decrypt-p.js +280 -0
- package/dist/jazz/user-decrypt-p.js.map +1 -0
- package/dist/jazz/user-decrypt.d.ts +74 -0
- package/dist/jazz/user-decrypt.js +143 -0
- package/dist/jazz/user-decrypt.js.map +1 -0
- package/dist/native/fhe-api.js +5959 -0
- package/dist/native/fhe-api.node.cjs +6167 -0
- package/dist/native/fhe-api.node.worker.cjs +210 -0
- package/dist/native/fhe-api.wasm +0 -0
- package/dist/native/fhe-api.worker.js +164 -0
- package/dist/native/kms/node/kms_lib.d.ts +38 -0
- package/dist/native/kms/node/kms_lib.js +356 -0
- package/dist/native/kms/node/kms_lib_bg.wasm +0 -0
- package/dist/native/kms/node/kms_lib_bg.wasm.d.ts +21 -0
- package/dist/native/kms/node/package.json +11 -0
- package/dist/native/kms/web/kms_lib.d.ts +84 -0
- package/dist/native/kms/web/kms_lib.js +443 -0
- package/dist/native/kms/web/kms_lib_bg.wasm +0 -0
- package/dist/native/kms/web/kms_lib_bg.wasm.d.ts +21 -0
- package/dist/native/kms/web/package.json +15 -0
- package/dist/runtime/browser.d.ts +36 -0
- package/dist/runtime/browser.js +115 -0
- package/dist/runtime/browser.js.map +1 -0
- package/dist/runtime/node.d.ts +30 -0
- package/dist/runtime/node.js +95 -0
- package/dist/runtime/node.js.map +1 -0
- package/dist/sdk/fhetransform-sdk-b.d.ts +102 -0
- package/dist/sdk/fhetransform-sdk-b.js +294 -0
- package/dist/sdk/fhetransform-sdk-b.js.map +1 -0
- package/dist/sdk/fhetransform-sdk.d.ts +87 -0
- package/dist/sdk/fhetransform-sdk.js +135 -0
- package/dist/sdk/fhetransform-sdk.js.map +1 -0
- package/dist/sdk/jazz-service.d.ts +13 -0
- package/dist/sdk/jazz-service.js +58 -0
- package/dist/sdk/jazz-service.js.map +1 -0
- package/dist/sdk/permit-service.d.ts +45 -0
- package/dist/sdk/permit-service.js +144 -0
- package/dist/sdk/permit-service.js.map +1 -0
- package/dist/wasm/fhe-wasm-client.d.ts +19 -0
- package/dist/wasm/fhe-wasm-client.js +23 -0
- package/dist/wasm/fhe-wasm-client.js.map +1 -0
- package/dist/wasm/fhe-wasm-module.d.ts +24 -0
- package/dist/wasm/fhe-wasm-module.js +141 -0
- package/dist/wasm/fhe-wasm-module.js.map +1 -0
- package/dist/wasm/fhe-wasm-type.d.ts +59 -0
- package/dist/wasm/fhe-wasm-type.js +244 -0
- package/dist/wasm/fhe-wasm-type.js.map +1 -0
- package/dist/wasm/wasm-loader.browser.d.ts +21 -0
- package/dist/wasm/wasm-loader.browser.js +143 -0
- package/dist/wasm/wasm-loader.browser.js.map +1 -0
- package/dist/wasm/wasm-loader.node.d.ts +24 -0
- package/dist/wasm/wasm-loader.node.js +114 -0
- package/dist/wasm/wasm-loader.node.js.map +1 -0
- package/dist/wasm/worker-client.browser.d.ts +6 -0
- package/dist/wasm/worker-client.browser.js +21 -0
- package/dist/wasm/worker-client.browser.js.map +1 -0
- package/dist/wasm/worker-client.d.ts +34 -0
- package/dist/wasm/worker-client.js +160 -0
- package/dist/wasm/worker-client.js.map +1 -0
- package/dist/wasm/worker-client.node.d.ts +6 -0
- package/dist/wasm/worker-client.node.js +20 -0
- package/dist/wasm/worker-client.node.js.map +1 -0
- package/dist/wasm/worker-message.d.ts +61 -0
- package/dist/wasm/worker-message.js +2 -0
- package/dist/wasm/worker-message.js.map +1 -0
- package/dist/wasm/worker-transport.browser.d.ts +15 -0
- package/dist/wasm/worker-transport.browser.js +35 -0
- package/dist/wasm/worker-transport.browser.js.map +1 -0
- package/dist/wasm/worker-transport.d.ts +6 -0
- package/dist/wasm/worker-transport.js +2 -0
- package/dist/wasm/worker-transport.js.map +1 -0
- package/dist/wasm/worker-transport.node.d.ts +17 -0
- package/dist/wasm/worker-transport.node.js +39 -0
- package/dist/wasm/worker-transport.node.js.map +1 -0
- package/dist/wasm/worker.d.ts +1 -0
- package/dist/wasm/worker.js +69 -0
- package/dist/wasm/worker.js.map +1 -0
- 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":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAClE,OAAO,EAAE,qBAAqB,EAAsB,MAAM,iCAAiC,CAAC;AAG5F,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,yBAAyB,EAAE,MAAM,wCAAwC,CAAC;AACnF,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAEtE,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAqB,MAAM,gCAAgC,CAAC;AA4BzF,+CAA+C;AAC/C,iBAAiB;AACjB,+CAA+C;AAE/C;;;;GAIG;AACH,MAAM,OAAO,mBAAmB;IACrB,MAAM,CAAqB;IAC3B,WAAW,CAAc;IACzB,YAAY,CAAe;IACjB,OAAO,CAA+B;IAEzD,0EAA0E;IAC1E,kDAAkD;IACjC,0BAA0B,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnE,qBAAqB,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzD,uBAAuB,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAE9E,YAAY,MAA0B;QACpC,MAAM,CAAC,KAAK,CAAC,wBAAwB,EAAE;YACrC,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS;YAChD,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM;YAC1B,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ;YAC9B,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO;YAC5B,mBAAmB,EAAE,MAAM,CAAC,mBAAmB;YAC/C,SAAS,EAAE,MAAM,CAAC,SAAS;SAC5B,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QAErB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,cAAc,CAAC,CAAC;QAEjD,IAAI,CAAC,YAAY,GAAG,IAAI,YAAY,CAAC;YACnC,MAAM,EAAE,QAAQ,EAAsB,gBAAgB;YACtD,SAAS,EAAE,MAAM,EAAqB,iCAAiC;YACvE,QAAQ,EAAE,YAAY,EAAgB,4BAA4B;YAClE,OAAO,EAAE,YAAY,YAAY,EAAE,EAAG,uBAAuB;SAC9D,CAAC,CAAC;QAEH,IAAI,CAAC,WAAW,GAAG,IAAI,WAAW,EAAE;aACjC,MAAM,CAAC,yBAAyB,CAAC;aACjC,MAAM,CAAC,oBAAoB,CAAC;aAC5B,MAAM,CAAC,oBAAoB,CAAC;aAC5B,MAAM,CAAC,mBAAmB,CAAC;aAC3B,MAAM,CAAC,cAAc,CAAC;aACtB,MAAM,CAAC,aAAa,CAAC;aACrB,MAAM,CAAC,QAAQ,CAAC,CAAC;IACtB,CAAC;IAED;;;OAGG;IACH,MAAM;QACJ,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,KAAK,CAAC;IACnC,CAAC;IAED,+CAA+C;IAC/C,sBAAsB;IACtB,+CAA+C;IAE/C;;;;;;OAMG;IACH,gBAAgB,GAAG,KAAK,IAA8B,EAAE;QACtD,MAAM,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;QAEnC,2BAA2B;QAC3B,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;YACzB,MAAM,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;YACxC,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;QAC9B,CAAC;QAED,2BAA2B;QAC3B,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC;YACjC,MAAM,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;YACtC,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC;QACrC,CAAC;QAED,kCAAkC;QAClC,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;YAClC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;YACtC,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC;gBACtB,MAAM,IAAI,QAAQ,CAAC,EAAE,IAAI,EAAE,YAAY,CAAC,eAAe,EAAE,OAAO,EAAE,uFAAuF,EAAE,CAAC,CAAC;YAC/J,CAAC;YACD,OAAO,MAAM,CAAC,QAAQ,CAAC;QACzB,CAAC;QAED,mCAAmC;QACnC,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,MAAM,CAAC,aAAa,CAAC,CAAC;QAC1D,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,QAAQ,CAAC,EAAE,IAAI,EAAE,YAAY,CAAC,eAAe,EAAE,OAAO,EAAE,iEAAiE,EAAE,CAAC,CAAC;QACzI,CAAC;QAED,OAAO,IAAI,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;IAC5C,CAAC,CAAC;IAEF,0DAA0D;IAC1D,eAAe,GAAmC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAE9E,+CAA+C;IAC/C,oBAAoB;IACpB,+CAA+C;IAE/C;;;;;OAKG;IACH,UAAU,GAAG,KAAK,IAAmC,EAAE;QACrD,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QAE/B,4CAA4C;QAC5C,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACvB,MAAM,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;YACtC,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;QAC5B,CAAC;QAED,2BAA2B;QAC3B,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;YAClC,MAAM,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;YAC7C,OAAO,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACnC,CAAC;QAED,uCAAuC;QACvC,IAAI,OAAO,OAAO,KAAK,WAAW,EAAE,CAAC;YACnC,MAAM,UAAU,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC;YACzC,IAAI,UAAU,EAAE,CAAC;gBACf,MAAM,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC;gBACnD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;gBAC9C,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;YACjD,CAAC;QACH,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,oFAAoF,CAAC,CAAC;QAClG,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;IAEF,kEAAkE;IACxD,SAAS,GAAwC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAEjF;;;;OAIG;IACH,aAAa,GAAG,KAAK,IAA4B,EAAE;QACjD,MAAM,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;QACjC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;QACtC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,QAAQ,CAAC,EAAE,IAAI,EAAE,YAAY,CAAC,aAAa,EAAE,OAAO,EAAE,qGAAqG,EAAE,CAAC,CAAC;QAC3K,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;IAEF;;;;OAIG;IACH,oBAAoB,GAAG,KAAK,IAAsB,EAAE;QAClD,MAAM,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;QACzC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAC1C,OAAO,CAAC,MAAM,MAAM,CAAC,UAAU,EAAE,CAAY,CAAC;IAChD,CAAC,CAAC;IAEF,+CAA+C;IAC/C,uBAAuB;IACvB,+CAA+C;IAE/C;;;;;;OAMG;IACK,KAAK,CAAC,kBAAkB;QAC9B,MAAM,gBAAgB,GAAI,MAAc,EAAE,QAAQ,CAAC;QACnD,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACtB,MAAM,IAAI,QAAQ,CAAC;gBACjB,IAAI,EAAE,YAAY,CAAC,aAAa;gBAChC,OAAO,EAAE,yFAAyF;aACnG,CAAC,CAAC;QACL,CAAC;QAED,IAAI,CAAC,OAAO,EAAE,CAAC;QAEf,MAAM,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;QAC/C,MAAM,gBAAgB,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,qBAAqB,EAAE,CAAC,CAAC;QAElE,MAAM,eAAe,GAAG,IAAI,MAAM,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAC;QACrE,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,SAAS,EAAE,CAAC;QACjD,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,UAAU,EAAE,CAAC;QAE1C,gBAAgB,CAAC,EAAE,CAAC,iBAAiB,EAAE,IAAI,CAAC,0BAA0B,CAAC,CAAC;QACxE,gBAAgB,CAAC,EAAE,CAAC,YAAY,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC;QAC9D,gBAAgB,CAAC,EAAE,CAAC,cAAc,EAAE,IAAI,CAAC,uBAAuB,CAAC,CAAC;QAElE,MAAM,CAAC,IAAI,CAAC,uBAAuB,OAAO,EAAE,CAAC,CAAC;QAC9C,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,qBAAqB,CAAC,QAAkB;QAC9C,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAC/B,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QACjC,CAAC;QACD,IAAI,CAAC,eAAe,EAAE,CAAC;IACzB,CAAC;IAEO,gBAAgB;QACtB,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QACnC,IAAI,CAAC,eAAe,EAAE,CAAC;IACzB,CAAC;IAEO,kBAAkB,CAAC,OAAwB;QACjD,MAAM,CAAC,IAAI,CAAC,qBAAqB,OAAO,EAAE,CAAC,CAAC;QAC5C,IAAI,CAAC,eAAe,EAAE,CAAC;IACzB,CAAC;IAEO,eAAe;QACrB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACvC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IACrD,CAAC;IAED,OAAO;QACL,MAAM,gBAAgB,GAAI,MAAc,EAAE,QAAQ,CAAC;QACnD,IAAI,gBAAgB,EAAE,CAAC;YACrB,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YACxB,gBAAgB,CAAC,cAAc,CAAC,iBAAiB,EAAE,IAAI,CAAC,0BAA0B,CAAC,CAAC;YACpF,gBAAgB,CAAC,cAAc,CAAC,YAAY,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC;YAC1E,gBAAgB,CAAC,cAAc,CAAC,cAAc,EAAE,IAAI,CAAC,uBAAuB,CAAC,CAAC;QAChF,CAAC;IACH,CAAC;IAED,+CAA+C;IAC/C,sBAAsB;IACtB,+CAA+C;IAEvC,QAAQ,GAAkB,IAAI,CAAC;IAEvC;;;OAGG;IACH,KAAK,CAAC,UAAU;QACd,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;YAC3B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;YAC9C,IAAI,CAAC,QAAQ,GAAG,CAAC,MAAM,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC,OAAO,CAAC;QACxD,CAAC;QACD,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED;;;;OAIG;IACH,cAAc;QACZ,kDAAkD;QAClD,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACxB,MAAM,CAAC,KAAK,CAAC,yBAAyB,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAC7D,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YACtC,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;QAC7B,CAAC;QAED,8EAA8E;QAC9E,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;YAClC,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,MAAM,CAAC,cAAc,CAAC,CAAC;YAC7D,IAAI,OAAO,IAAI,OAAO,KAAK,EAAE,EAAE,CAAC;gBAC9B,MAAM,CAAC,KAAK,CAAC,oBAAoB,EAAE,OAAO,CAAC,CAAC;gBAC5C,gBAAgB,CAAC,OAAO,CAAC,CAAC;gBAC1B,OAAO,OAAO,CAAC;YACjB,CAAC;QACH,CAAC;QAED,mDAAmD;QACnD,IAAI,gBAAgB,KAAK,EAAE,EAAE,CAAC;YAC5B,MAAM,CAAC,KAAK,CAAC,wBAAwB,EAAE,gBAAgB,CAAC,CAAC;YACzD,gBAAgB,CAAC,gBAAgB,CAAC,CAAC;YACnC,OAAO,gBAAgB,CAAC;QAC1B,CAAC;QAED,MAAM,IAAI,QAAQ,CAAC;YACjB,IAAI,EAAE,YAAY,CAAC,cAAc;YACjC,OAAO,EAAE,iGAAiG;SAC3G,CAAC,CAAC;IACL,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,qBAAqB;QACzB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QACxC,OAAO,qBAAqB,CAAC,OAAO,CAAC,CAAC;IACxC,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,oBAAoB;QACxB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QACxC,OAAO,oBAAoB,CAAC,OAAO,CAAC,CAAC;IACvC,CAAC;CACF"}
|
|
@@ -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
|
+
}
|