@cofhe/sdk 0.7.0 → 0.8.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/CHANGELOG.md +37 -0
- package/acps/acp.ts +10 -1
- package/acps/index.ts +11 -0
- package/acps/onchain-utils.ts +188 -49
- package/acps/registry.ts +73 -0
- package/acps/test/onchainAccessStatus.test.ts +116 -0
- package/acps/types.ts +16 -0
- package/chains/chains/arbitrum.ts +14 -0
- package/chains/chains/ethereum.ts +14 -0
- package/chains/index.ts +5 -1
- package/chains/test/chains.test.ts +24 -3
- package/core/acps.ts +51 -143
- package/core/client.ts +13 -8
- package/core/clientTypes.ts +29 -4
- package/core/config.ts +25 -1
- package/core/consts.ts +14 -2
- package/core/decrypt/verifyDecryptResult.ts +4 -3
- package/core/encrypt/encryptInputsBuilder.ts +6 -0
- package/core/encrypt/zkPackProveVerify.ts +7 -1
- package/core/error.ts +1 -0
- package/core/fetchKeys.ts +2 -2
- package/core/index.ts +9 -1
- package/core/keyStore.ts +23 -10
- package/core/taskManager.ts +48 -0
- package/core/test/acps.test.ts +91 -1
- package/core/test/client.test.ts +41 -0
- package/core/test/config.test.ts +16 -0
- package/core/test/decrypt.test.ts +11 -4
- package/core/test/encryptInputsBuilder.test.ts +1 -1
- package/core/test/fetchKeys.test.ts +23 -2
- package/core/test/keyStore.test.ts +18 -6
- package/core/test/taskManager.test.ts +57 -0
- package/core/types.ts +8 -0
- package/dist/acps.cjs +314 -35
- package/dist/acps.d.cts +251 -4
- package/dist/acps.d.ts +251 -4
- package/dist/acps.js +2 -2
- package/dist/chains.cjs +26 -0
- package/dist/chains.d.cts +45 -1
- package/dist/chains.d.ts +45 -1
- package/dist/chains.js +1 -1
- package/dist/{chunk-43USWPEH.js → chunk-GGI7Y6AW.js} +59 -264
- package/dist/chunk-KSOV5B4B.js +50 -0
- package/dist/{chunk-ESMZCFJY.js → chunk-NMKMCAI3.js} +4 -2
- package/dist/{chunk-Q7CBWGQX.js → chunk-UJYOBHYA.js} +374 -37
- package/dist/{chunk-N6IDQRRU.js → chunk-UKQAJK4N.js} +25 -1
- package/dist/{clientTypes-BN3nbzYM.d.ts → clientTypes-5YPPR16m.d.ts} +77 -14
- package/dist/{clientTypes-CYZjFznO.d.cts → clientTypes-D3aIXmUp.d.cts} +77 -14
- package/dist/core.cjs +271 -136
- package/dist/core.d.cts +29 -8
- package/dist/core.d.ts +29 -8
- package/dist/core.js +4 -4
- package/dist/node.cjs +266 -136
- package/dist/node.d.cts +2 -2
- package/dist/node.d.ts +2 -2
- package/dist/node.js +5 -5
- package/dist/{acp-Wi6isVQI.d.cts → onchain-utils-CUAK8glx.d.cts} +31 -1
- package/dist/{acp-Wi6isVQI.d.ts → onchain-utils-CUAK8glx.d.ts} +31 -1
- package/dist/web.cjs +360 -150
- package/dist/web.d.cts +49 -3
- package/dist/web.d.ts +49 -3
- package/dist/web.js +51 -20
- package/dist/zkProve.worker.cjs +69 -15
- package/dist/zkProve.worker.js +23 -17
- package/node/storage.ts +2 -2
- package/node/test/inherited.test.ts +5 -1
- package/node/test/storage-memory-fallback.test.ts +47 -0
- package/package.json +5 -3
- package/web/index.ts +100 -26
- package/web/test/countingZkProveWorker.ts +31 -0
- package/web/test/inherited.web.test.ts +5 -1
- package/web/test/mainThreadPool.web.test.ts +174 -0
- package/web/test/threadPoolBenchHelper.ts +140 -0
- package/web/test/threadPoolOff.web.test.ts +17 -0
- package/web/test/threadPoolOn.web.test.ts +80 -0
- package/web/test/workerInitRace.web.test.ts +79 -0
- package/web/tfheThreadPool.ts +140 -0
- package/web/workerManager.ts +4 -2
- package/web/zkProve.worker.ts +42 -17
package/dist/core.cjs
CHANGED
|
@@ -61,6 +61,7 @@ var CofheErrorCode = /* @__PURE__ */ ((CofheErrorCode2) => {
|
|
|
61
61
|
CofheErrorCode2["PublicWalletGetChainIdFailed"] = "PUBLIC_WALLET_GET_CHAIN_ID_FAILED";
|
|
62
62
|
CofheErrorCode2["PublicWalletGetAddressesFailed"] = "PUBLIC_WALLET_GET_ADDRESSES_FAILED";
|
|
63
63
|
CofheErrorCode2["RehydrateKeysStoreFailed"] = "REHYDRATE_KEYS_STORE_FAILED";
|
|
64
|
+
CofheErrorCode2["TaskManagerUnresolved"] = "TASK_MANAGER_UNRESOLVED";
|
|
64
65
|
CofheErrorCode2["BadRequest"] = "BAD_REQUEST";
|
|
65
66
|
CofheErrorCode2["UnknownChain"] = "UNKNOWN_CHAIN";
|
|
66
67
|
CofheErrorCode2["ACPMalformed"] = "ACP_MALFORMED";
|
|
@@ -175,7 +176,9 @@ var bigintSafeJsonStringify = (value) => {
|
|
|
175
176
|
var isCofheError = (error) => error instanceof CofheError;
|
|
176
177
|
|
|
177
178
|
// core/consts.ts
|
|
178
|
-
var
|
|
179
|
+
var COFHE_ADDRESS_BOOK_ADDRESS = "0xC0F4e00E531a2B086492Ae3DCC1515038307196b";
|
|
180
|
+
var TASK_MANAGER_ID = 1n;
|
|
181
|
+
var MOCKS_TASK_MANAGER_ADDRESS = "0x0000000000000000000000000000000000005000";
|
|
179
182
|
var MOCKS_ZK_VERIFIER_ADDRESS = "0x0000000000000000000000000000000000005001";
|
|
180
183
|
var MOCKS_THRESHOLD_NETWORK_ADDRESS = "0x0000000000000000000000000000000000005002";
|
|
181
184
|
var MOCKS_ZK_VERIFIER_SIGNER_PRIVATE_KEY = "0x6C8D7F768A6BB4AAFE85E8A2F5A9680355239C7E14646ED62B044E39DE154512";
|
|
@@ -915,6 +918,8 @@ var CofheConfigSchema = zod.z.object({
|
|
|
915
918
|
}).or(zod.z.null()).default(null),
|
|
916
919
|
/** Whether to use Web Workers for ZK proof generation (web platform only) */
|
|
917
920
|
useWorkers: zod.z.boolean().optional().default(true),
|
|
921
|
+
/** How many threads tfhe's rayon pool may use for ZK proof generation (web platform only) */
|
|
922
|
+
tfheThreads: zod.z.union([zod.z.number().int().positive(), zod.z.literal("auto"), zod.z.literal(false)]).optional().default("auto"),
|
|
918
923
|
/** ACP acp defaults */
|
|
919
924
|
acp: zod.z.object({
|
|
920
925
|
defaultRevoker: zod.z.custom().optional(),
|
|
@@ -1023,6 +1028,9 @@ var DEFAULT_KEYS_STORE = {
|
|
|
1023
1028
|
fhe: {},
|
|
1024
1029
|
crs: {}
|
|
1025
1030
|
};
|
|
1031
|
+
function isSecurityZoneRecord(value) {
|
|
1032
|
+
return value != null && typeof value === "object";
|
|
1033
|
+
}
|
|
1026
1034
|
function isStoreWithPersist(store) {
|
|
1027
1035
|
return "persist" in store;
|
|
1028
1036
|
}
|
|
@@ -1037,10 +1045,10 @@ function createKeysStore(storage) {
|
|
|
1037
1045
|
const stored = keysStore.getState().fhe[chainId]?.[securityZone];
|
|
1038
1046
|
return stored;
|
|
1039
1047
|
};
|
|
1040
|
-
const getCrs = (chainId) => {
|
|
1041
|
-
if (chainId == null)
|
|
1048
|
+
const getCrs = (chainId, securityZone = 0) => {
|
|
1049
|
+
if (chainId == null || securityZone == null)
|
|
1042
1050
|
return void 0;
|
|
1043
|
-
const stored = keysStore.getState().crs[chainId];
|
|
1051
|
+
const stored = keysStore.getState().crs[chainId]?.[securityZone];
|
|
1044
1052
|
return stored;
|
|
1045
1053
|
};
|
|
1046
1054
|
const setFheKey = (chainId, securityZone, key) => {
|
|
@@ -1052,10 +1060,12 @@ function createKeysStore(storage) {
|
|
|
1052
1060
|
})
|
|
1053
1061
|
);
|
|
1054
1062
|
};
|
|
1055
|
-
const setCrs = (chainId, crs) => {
|
|
1063
|
+
const setCrs = (chainId, securityZone, crs) => {
|
|
1056
1064
|
keysStore.setState(
|
|
1057
1065
|
immer.produce((state) => {
|
|
1058
|
-
state.crs[chainId]
|
|
1066
|
+
if (state.crs[chainId] == null)
|
|
1067
|
+
state.crs[chainId] = {};
|
|
1068
|
+
state.crs[chainId][securityZone] = crs;
|
|
1059
1069
|
})
|
|
1060
1070
|
);
|
|
1061
1071
|
};
|
|
@@ -1103,7 +1113,13 @@ function createStoreWithPersit(storage) {
|
|
|
1103
1113
|
const currentZones = current.fhe[chainId] || {};
|
|
1104
1114
|
mergedFhe[chainId] = { ...persistedZones, ...currentZones };
|
|
1105
1115
|
}
|
|
1106
|
-
const mergedCrs = {
|
|
1116
|
+
const mergedCrs = {};
|
|
1117
|
+
const allCrsChainIds = /* @__PURE__ */ new Set([...Object.keys(current.crs), ...Object.keys(persisted.crs)]);
|
|
1118
|
+
for (const chainId of allCrsChainIds) {
|
|
1119
|
+
const persistedZones = isSecurityZoneRecord(persisted.crs[chainId]) ? persisted.crs[chainId] : {};
|
|
1120
|
+
const currentZones = isSecurityZoneRecord(current.crs[chainId]) ? current.crs[chainId] : {};
|
|
1121
|
+
mergedCrs[chainId] = { ...persistedZones, ...currentZones };
|
|
1122
|
+
}
|
|
1107
1123
|
return {
|
|
1108
1124
|
fhe: mergedFhe,
|
|
1109
1125
|
crs: mergedCrs
|
|
@@ -1165,7 +1181,7 @@ var fetchFhePublicKey = async (coFheUrl, chainId, securityZone, tfhePublicKeyDes
|
|
|
1165
1181
|
return [pk_data, true];
|
|
1166
1182
|
};
|
|
1167
1183
|
var fetchCrs = async (coFheUrl, chainId, securityZone, compactPkeCrsDeserializer, keysStorage) => {
|
|
1168
|
-
const storedKey = keysStorage?.getCrs(chainId);
|
|
1184
|
+
const storedKey = keysStorage?.getCrs(chainId, securityZone);
|
|
1169
1185
|
const [storedKeyValid] = checkKeyValidity(storedKey, compactPkeCrsDeserializer);
|
|
1170
1186
|
if (storedKeyValid)
|
|
1171
1187
|
return [storedKey, false];
|
|
@@ -1192,7 +1208,7 @@ var fetchCrs = async (coFheUrl, chainId, securityZone, compactPkeCrsDeserializer
|
|
|
1192
1208
|
console.error(`Error serializing CRS ${err}`);
|
|
1193
1209
|
throw new Error(`Error serializing CRS; ${err}`);
|
|
1194
1210
|
}
|
|
1195
|
-
keysStorage?.setCrs(chainId, crs_data);
|
|
1211
|
+
keysStorage?.setCrs(chainId, securityZone, crs_data);
|
|
1196
1212
|
return [crs_data, true];
|
|
1197
1213
|
};
|
|
1198
1214
|
var fetchKeys = async (config, chainId, securityZone = 0, tfhePublicKeyDeserializer, compactPkeCrsDeserializer, keysStorage) => {
|
|
@@ -1304,6 +1320,7 @@ var EncryptInputsBuilder = class extends BaseBuilder {
|
|
|
1304
1320
|
zkBuilderAndCrsGenerator;
|
|
1305
1321
|
initTfhe;
|
|
1306
1322
|
zkProveWorkerFn;
|
|
1323
|
+
beforeMainThreadProve;
|
|
1307
1324
|
keysStorage;
|
|
1308
1325
|
// Worker configuration (from config, overrideable)
|
|
1309
1326
|
useWorker;
|
|
@@ -1361,6 +1378,7 @@ var EncryptInputsBuilder = class extends BaseBuilder {
|
|
|
1361
1378
|
this.zkBuilderAndCrsGenerator = params.zkBuilderAndCrsGenerator;
|
|
1362
1379
|
this.initTfhe = params.initTfhe;
|
|
1363
1380
|
this.zkProveWorkerFn = params.zkProveWorkerFn;
|
|
1381
|
+
this.beforeMainThreadProve = params.beforeMainThreadProve;
|
|
1364
1382
|
this.keysStorage = params.keysStorage;
|
|
1365
1383
|
this.useWorker = params.config?.useWorkers ?? true;
|
|
1366
1384
|
}
|
|
@@ -1651,6 +1669,7 @@ var EncryptInputsBuilder = class extends BaseBuilder {
|
|
|
1651
1669
|
}
|
|
1652
1670
|
}
|
|
1653
1671
|
if (proof == null) {
|
|
1672
|
+
await this.beforeMainThreadProve?.();
|
|
1654
1673
|
proof = await zkProve(zkBuilder, zkCrs, metadata);
|
|
1655
1674
|
usedWorker = false;
|
|
1656
1675
|
}
|
|
@@ -2047,11 +2066,40 @@ var SignatureUtils = {
|
|
|
2047
2066
|
throw new Error(`Unknown acp type: ${acpType}`);
|
|
2048
2067
|
}
|
|
2049
2068
|
};
|
|
2069
|
+
var ADDRESS_BOOK_ABI = viem.parseAbi([
|
|
2070
|
+
"function getTm(uint256 id) view returns (address)",
|
|
2071
|
+
"error TaskManagerNotSet(uint256 id)"
|
|
2072
|
+
]);
|
|
2073
|
+
var taskManagerAddressCache = /* @__PURE__ */ new Map();
|
|
2074
|
+
var getTaskManagerAddress = async (publicClient, chainId) => {
|
|
2075
|
+
const id = chainId ?? publicClient.chain?.id ?? await publicClient.getChainId();
|
|
2076
|
+
const cached = taskManagerAddressCache.get(id);
|
|
2077
|
+
if (cached != null)
|
|
2078
|
+
return cached;
|
|
2079
|
+
const pending = publicClient.readContract({
|
|
2080
|
+
address: COFHE_ADDRESS_BOOK_ADDRESS,
|
|
2081
|
+
abi: ADDRESS_BOOK_ABI,
|
|
2082
|
+
functionName: "getTm",
|
|
2083
|
+
args: [TASK_MANAGER_ID]
|
|
2084
|
+
}).catch((error) => {
|
|
2085
|
+
taskManagerAddressCache.delete(id);
|
|
2086
|
+
throw CofheError.fromError(error, {
|
|
2087
|
+
code: "TASK_MANAGER_UNRESOLVED" /* TaskManagerUnresolved */,
|
|
2088
|
+
message: `Failed to resolve the Task Manager from the CoFHEAddressBook on chain ${id}`,
|
|
2089
|
+
hint: "Ensure CoFHE is deployed on this chain. On a local hardhat / anvil chain, deploy the CoFHE mocks first.",
|
|
2090
|
+
context: { chainId: id, addressBook: COFHE_ADDRESS_BOOK_ADDRESS, taskManagerId: TASK_MANAGER_ID }
|
|
2091
|
+
});
|
|
2092
|
+
});
|
|
2093
|
+
taskManagerAddressCache.set(id, pending);
|
|
2094
|
+
return pending;
|
|
2095
|
+
};
|
|
2096
|
+
|
|
2097
|
+
// acps/onchain-utils.ts
|
|
2050
2098
|
var getAclAddress = async (publicClient) => {
|
|
2051
2099
|
const ACL_IFACE = "function acl() view returns (address)";
|
|
2052
2100
|
const aclAbi = viem.parseAbi([ACL_IFACE]);
|
|
2053
2101
|
return await publicClient.readContract({
|
|
2054
|
-
address:
|
|
2102
|
+
address: await getTaskManagerAddress(publicClient),
|
|
2055
2103
|
abi: aclAbi,
|
|
2056
2104
|
functionName: "acl"
|
|
2057
2105
|
});
|
|
@@ -2078,6 +2126,34 @@ var getAclEIP712Domain = async (publicClient) => {
|
|
|
2078
2126
|
verifyingContract
|
|
2079
2127
|
};
|
|
2080
2128
|
};
|
|
2129
|
+
var toACPTuple = (acp) => ({
|
|
2130
|
+
issuer: acp.issuer,
|
|
2131
|
+
expiration: BigInt(acp.expiration),
|
|
2132
|
+
recipient: acp.recipient,
|
|
2133
|
+
revokerData: BigInt(acp.revokerData),
|
|
2134
|
+
revokerContract: acp.revokerContract,
|
|
2135
|
+
scope: acp.scope,
|
|
2136
|
+
contracts: acp.contracts,
|
|
2137
|
+
handles: acp.handles,
|
|
2138
|
+
sealingKey: acp.sealingKey,
|
|
2139
|
+
issuerSignature: acp.issuerSignature,
|
|
2140
|
+
recipientSignature: acp.recipientSignature
|
|
2141
|
+
});
|
|
2142
|
+
function revertErrorName(err, abi) {
|
|
2143
|
+
const walk = err?.walk;
|
|
2144
|
+
if (typeof walk === "function") {
|
|
2145
|
+
const revertError = walk.call(err, (e) => e?.name === "ContractFunctionRevertedError");
|
|
2146
|
+
if (revertError)
|
|
2147
|
+
return revertError.data?.errorName ?? "";
|
|
2148
|
+
}
|
|
2149
|
+
const customErrorName = extractCustomErrorFromDetails(err, abi);
|
|
2150
|
+
if (customErrorName)
|
|
2151
|
+
return customErrorName;
|
|
2152
|
+
const hhDetailsData = extractReturnData(err);
|
|
2153
|
+
if (hhDetailsData != null)
|
|
2154
|
+
return viem.decodeErrorResult({ abi, data: hhDetailsData }).errorName;
|
|
2155
|
+
return void 0;
|
|
2156
|
+
}
|
|
2081
2157
|
var checkACPValidityOnChain = async (acp, publicClient) => {
|
|
2082
2158
|
const aclAddress = await getAclAddress(publicClient);
|
|
2083
2159
|
try {
|
|
@@ -2085,43 +2161,54 @@ var checkACPValidityOnChain = async (acp, publicClient) => {
|
|
|
2085
2161
|
address: aclAddress,
|
|
2086
2162
|
abi: checkACPValidityAbi,
|
|
2087
2163
|
functionName: "checkPermissionValidity",
|
|
2088
|
-
args: [
|
|
2089
|
-
{
|
|
2090
|
-
issuer: acp.issuer,
|
|
2091
|
-
expiration: BigInt(acp.expiration),
|
|
2092
|
-
recipient: acp.recipient,
|
|
2093
|
-
revokerData: BigInt(acp.revokerData),
|
|
2094
|
-
revokerContract: acp.revokerContract,
|
|
2095
|
-
scope: acp.scope,
|
|
2096
|
-
contracts: acp.contracts,
|
|
2097
|
-
handles: acp.handles,
|
|
2098
|
-
sealingKey: acp.sealingKey,
|
|
2099
|
-
issuerSignature: acp.issuerSignature,
|
|
2100
|
-
recipientSignature: acp.recipientSignature
|
|
2101
|
-
}
|
|
2102
|
-
]
|
|
2164
|
+
args: [toACPTuple(acp)]
|
|
2103
2165
|
});
|
|
2104
2166
|
return true;
|
|
2105
2167
|
} catch (err) {
|
|
2106
|
-
|
|
2107
|
-
|
|
2108
|
-
|
|
2109
|
-
|
|
2110
|
-
|
|
2111
|
-
|
|
2112
|
-
|
|
2113
|
-
|
|
2114
|
-
|
|
2115
|
-
|
|
2116
|
-
|
|
2117
|
-
|
|
2118
|
-
|
|
2119
|
-
|
|
2120
|
-
|
|
2121
|
-
|
|
2168
|
+
const errorName = revertErrorName(err, checkACPValidityAbi);
|
|
2169
|
+
if (errorName !== void 0)
|
|
2170
|
+
throw new Error(errorName);
|
|
2171
|
+
throw err;
|
|
2172
|
+
}
|
|
2173
|
+
};
|
|
2174
|
+
var PERMISSION_ERROR_STATUS = {
|
|
2175
|
+
PermissionInvalid_Expired: "expired",
|
|
2176
|
+
PermissionInvalid_Disabled: "revoked",
|
|
2177
|
+
PermissionInvalid_IssuerSignature: "invalid-issuer-signature",
|
|
2178
|
+
PermissionInvalid_RecipientSignature: "invalid-recipient-signature"
|
|
2179
|
+
};
|
|
2180
|
+
var getACPAccessStatusOnChain = async (acp, publicClient, handle) => {
|
|
2181
|
+
const aclAddress = await getAclAddress(publicClient);
|
|
2182
|
+
try {
|
|
2183
|
+
if (handle === void 0) {
|
|
2184
|
+
await publicClient.simulateContract({
|
|
2185
|
+
address: aclAddress,
|
|
2186
|
+
abi: acpAccessAbi,
|
|
2187
|
+
functionName: "checkPermissionValidity",
|
|
2188
|
+
args: [toACPTuple(acp)]
|
|
2122
2189
|
});
|
|
2123
|
-
|
|
2190
|
+
return "valid";
|
|
2124
2191
|
}
|
|
2192
|
+
const ctHash = BigInt(handle);
|
|
2193
|
+
const allowed = await publicClient.readContract({
|
|
2194
|
+
address: aclAddress,
|
|
2195
|
+
abi: acpAccessAbi,
|
|
2196
|
+
functionName: "isAllowedWithPermission",
|
|
2197
|
+
args: [toACPTuple(acp), ctHash]
|
|
2198
|
+
});
|
|
2199
|
+
if (allowed)
|
|
2200
|
+
return "allowed";
|
|
2201
|
+
const issuerAllowed = await publicClient.readContract({
|
|
2202
|
+
address: aclAddress,
|
|
2203
|
+
abi: acpAccessAbi,
|
|
2204
|
+
functionName: "isAllowed",
|
|
2205
|
+
args: [ctHash, acp.issuer]
|
|
2206
|
+
});
|
|
2207
|
+
return issuerAllowed ? "out-of-scope" : "issuer-not-allowed";
|
|
2208
|
+
} catch (err) {
|
|
2209
|
+
const status = PERMISSION_ERROR_STATUS[revertErrorName(err, acpAccessAbi) ?? ""];
|
|
2210
|
+
if (status)
|
|
2211
|
+
return status;
|
|
2125
2212
|
throw err;
|
|
2126
2213
|
}
|
|
2127
2214
|
};
|
|
@@ -2143,7 +2230,8 @@ function extractCustomErrorFromDetails(err, abi) {
|
|
|
2143
2230
|
function extractReturnData(err) {
|
|
2144
2231
|
const anyErr = err;
|
|
2145
2232
|
const s = anyErr?.details ?? anyErr?.cause?.details ?? anyErr?.shortMessage ?? anyErr?.message ?? String(err);
|
|
2146
|
-
|
|
2233
|
+
const match = s.match(/return data:\s*(0x[a-fA-F0-9]+)/) ?? s.match(/custom error (0x[a-fA-F0-9]{8,})/);
|
|
2234
|
+
return match?.[1];
|
|
2147
2235
|
}
|
|
2148
2236
|
var checkACPValidityAbi = [
|
|
2149
2237
|
{
|
|
@@ -2243,6 +2331,58 @@ var checkACPValidityAbi = [
|
|
|
2243
2331
|
inputs: []
|
|
2244
2332
|
}
|
|
2245
2333
|
];
|
|
2334
|
+
var acpAccessAbi = [
|
|
2335
|
+
...checkACPValidityAbi,
|
|
2336
|
+
{
|
|
2337
|
+
type: "function",
|
|
2338
|
+
name: "isAllowedWithPermission",
|
|
2339
|
+
inputs: [checkACPValidityAbi[0].inputs[0], { name: "handle", type: "uint256", internalType: "uint256" }],
|
|
2340
|
+
outputs: [{ name: "", type: "bool", internalType: "bool" }],
|
|
2341
|
+
stateMutability: "view"
|
|
2342
|
+
},
|
|
2343
|
+
{
|
|
2344
|
+
type: "function",
|
|
2345
|
+
name: "isAllowed",
|
|
2346
|
+
inputs: [
|
|
2347
|
+
{ name: "handle", type: "uint256", internalType: "uint256" },
|
|
2348
|
+
{ name: "account", type: "address", internalType: "address" }
|
|
2349
|
+
],
|
|
2350
|
+
outputs: [{ name: "", type: "bool", internalType: "bool" }],
|
|
2351
|
+
stateMutability: "view"
|
|
2352
|
+
}
|
|
2353
|
+
];
|
|
2354
|
+
var ACL_SERVED_ADDRESSES_ABI = viem.parseAbi([
|
|
2355
|
+
"function acl() view returns (address)",
|
|
2356
|
+
"function defaultRevokerContract() view returns (address)",
|
|
2357
|
+
"function shareRegistry() view returns (address)"
|
|
2358
|
+
]);
|
|
2359
|
+
var aclServedAddressesCache = /* @__PURE__ */ new Map();
|
|
2360
|
+
var clearAclServedAddresses = () => aclServedAddressesCache.clear();
|
|
2361
|
+
var getAclServedAddresses = async (publicClient, chainId) => {
|
|
2362
|
+
const cached = aclServedAddressesCache.get(chainId);
|
|
2363
|
+
if (cached != null)
|
|
2364
|
+
return cached;
|
|
2365
|
+
let aclAddress;
|
|
2366
|
+
try {
|
|
2367
|
+
aclAddress = await publicClient.readContract({
|
|
2368
|
+
address: await getTaskManagerAddress(publicClient, chainId),
|
|
2369
|
+
abi: ACL_SERVED_ADDRESSES_ABI,
|
|
2370
|
+
functionName: "acl"
|
|
2371
|
+
});
|
|
2372
|
+
} catch {
|
|
2373
|
+
return {};
|
|
2374
|
+
}
|
|
2375
|
+
const [defaultRevoker, shareRegistry] = await Promise.all([
|
|
2376
|
+
publicClient.readContract({ address: aclAddress, abi: ACL_SERVED_ADDRESSES_ABI, functionName: "defaultRevokerContract" }).catch(() => void 0),
|
|
2377
|
+
publicClient.readContract({ address: aclAddress, abi: ACL_SERVED_ADDRESSES_ABI, functionName: "shareRegistry" }).catch(() => void 0)
|
|
2378
|
+
]);
|
|
2379
|
+
const resolved = {
|
|
2380
|
+
defaultRevoker: defaultRevoker != null && defaultRevoker !== viem.zeroAddress ? defaultRevoker : void 0,
|
|
2381
|
+
shareRegistry: shareRegistry != null && shareRegistry !== viem.zeroAddress ? shareRegistry : void 0
|
|
2382
|
+
};
|
|
2383
|
+
aclServedAddressesCache.set(chainId, resolved);
|
|
2384
|
+
return resolved;
|
|
2385
|
+
};
|
|
2246
2386
|
|
|
2247
2387
|
// acps/acp.ts
|
|
2248
2388
|
var ACPUtils = {
|
|
@@ -2556,8 +2696,62 @@ var ACPUtils = {
|
|
|
2556
2696
|
checkValidityOnChain: async (acp, publicClient) => {
|
|
2557
2697
|
const publicAcp = ACPUtils.getPublic(acp);
|
|
2558
2698
|
return checkACPValidityOnChain(publicAcp, publicClient);
|
|
2699
|
+
},
|
|
2700
|
+
/**
|
|
2701
|
+
* The acp on-chain status as a value instead of a revert: 'valid' or why not, and given a
|
|
2702
|
+
* handle, whether the acp may read it (see `ACPAccessStatus`).
|
|
2703
|
+
*/
|
|
2704
|
+
checkAccessOnChain: async (acp, publicClient, handle) => {
|
|
2705
|
+
return getACPAccessStatusOnChain(ACPUtils.getPublic(acp), publicClient, handle);
|
|
2559
2706
|
}
|
|
2560
2707
|
};
|
|
2708
|
+
var ACP_REVOKER_ABI = viem.parseAbi([
|
|
2709
|
+
"function revokeSingle(uint256 id)",
|
|
2710
|
+
"function revokeAllExisting()",
|
|
2711
|
+
"function disabled(address issuer, uint256 id) view returns (bool)"
|
|
2712
|
+
]);
|
|
2713
|
+
var ACP_SHARE_REGISTRY_ABI = viem.parseAbi([
|
|
2714
|
+
"struct ACP { address issuer; uint64 expiration; address recipient; uint256 revokerData; address revokerContract; uint8 scope; address[] contracts; bytes32[] handles; bytes32 sealingKey; bytes issuerSignature; bytes recipientSignature; }",
|
|
2715
|
+
"function share(ACP calldata acp) external returns (bytes32)",
|
|
2716
|
+
"function removeShare(bytes32 shareId) external",
|
|
2717
|
+
"function sharesFor(address recipient) external view returns (ACP[] memory)",
|
|
2718
|
+
"function getShare(bytes32 shareId) external view returns (ACP memory)",
|
|
2719
|
+
"function isShareValid(bytes32 shareId) external view returns (bool)"
|
|
2720
|
+
]);
|
|
2721
|
+
var ACP_SHARE_TUPLE_ABI = [
|
|
2722
|
+
{
|
|
2723
|
+
type: "tuple",
|
|
2724
|
+
components: [
|
|
2725
|
+
{ name: "issuer", type: "address" },
|
|
2726
|
+
{ name: "expiration", type: "uint64" },
|
|
2727
|
+
{ name: "recipient", type: "address" },
|
|
2728
|
+
{ name: "revokerData", type: "uint256" },
|
|
2729
|
+
{ name: "revokerContract", type: "address" },
|
|
2730
|
+
{ name: "scope", type: "uint8" },
|
|
2731
|
+
{ name: "contracts", type: "address[]" },
|
|
2732
|
+
{ name: "handles", type: "bytes32[]" },
|
|
2733
|
+
{ name: "sealingKey", type: "bytes32" },
|
|
2734
|
+
{ name: "issuerSignature", type: "bytes" },
|
|
2735
|
+
{ name: "recipientSignature", type: "bytes" }
|
|
2736
|
+
]
|
|
2737
|
+
}
|
|
2738
|
+
];
|
|
2739
|
+
var ZERO_BYTES32 = `0x${"0".repeat(64)}`;
|
|
2740
|
+
var toChainShare = (acp) => {
|
|
2741
|
+
const pub = ACPUtils.getPublic(acp, true);
|
|
2742
|
+
return {
|
|
2743
|
+
...pub,
|
|
2744
|
+
expiration: BigInt(pub.expiration),
|
|
2745
|
+
revokerData: BigInt(pub.revokerData),
|
|
2746
|
+
sealingKey: ZERO_BYTES32,
|
|
2747
|
+
recipientSignature: "0x"
|
|
2748
|
+
};
|
|
2749
|
+
};
|
|
2750
|
+
var computeShareId = (acp) => {
|
|
2751
|
+
const p = toChainShare(acp);
|
|
2752
|
+
return viem.keccak256(viem.encodeAbiParameters(ACP_SHARE_TUPLE_ABI, [p]));
|
|
2753
|
+
};
|
|
2754
|
+
var shareIdOfChainShare = (share) => viem.keccak256(viem.encodeAbiParameters(ACP_SHARE_TUPLE_ABI, [share]));
|
|
2561
2755
|
var ACP_STORE_DEFAULTS = {
|
|
2562
2756
|
acps: {},
|
|
2563
2757
|
activeACPHash: {}
|
|
@@ -2683,11 +2877,6 @@ var acpStore = {
|
|
|
2683
2877
|
removeActiveACPHash,
|
|
2684
2878
|
resetStore
|
|
2685
2879
|
};
|
|
2686
|
-
var ACP_VALIDATOR_ABI = viem.parseAbi([
|
|
2687
|
-
"function revokeSingle(uint256 id)",
|
|
2688
|
-
"function revokeAllExisting()",
|
|
2689
|
-
"function disabled(address issuer, uint256 id) view returns (bool)"
|
|
2690
|
-
]);
|
|
2691
2880
|
var storeACP = async (acp, publicClient, walletClient) => {
|
|
2692
2881
|
const chainId = await publicClient.getChainId();
|
|
2693
2882
|
const account = walletClient.account.address;
|
|
@@ -2714,8 +2903,8 @@ var createSelf = async (options, publicClient, walletClient) => {
|
|
|
2714
2903
|
var createSharing = async (options, publicClient, walletClient) => {
|
|
2715
2904
|
return createACPWithSign(options, publicClient, walletClient, ACPUtils.createSharingAndSign, false);
|
|
2716
2905
|
};
|
|
2717
|
-
var importShared = async (options, publicClient, walletClient) => {
|
|
2718
|
-
return createACPWithSign(options, publicClient, walletClient, ACPUtils.importSharedAndSign);
|
|
2906
|
+
var importShared = async (options, publicClient, walletClient, { activate = true } = {}) => {
|
|
2907
|
+
return createACPWithSign(options, publicClient, walletClient, ACPUtils.importSharedAndSign, activate);
|
|
2719
2908
|
};
|
|
2720
2909
|
var getHash = (acp) => {
|
|
2721
2910
|
return ACPUtils.getHash(acp);
|
|
@@ -2777,38 +2966,6 @@ var applyACPDefaults = (options, acpConfig, chainId) => {
|
|
|
2777
2966
|
}
|
|
2778
2967
|
return result;
|
|
2779
2968
|
};
|
|
2780
|
-
var ACL_SERVED_ADDRESSES_ABI = viem.parseAbi([
|
|
2781
|
-
"function acl() view returns (address)",
|
|
2782
|
-
"function defaultRevokerContract() view returns (address)",
|
|
2783
|
-
"function shareRegistry() view returns (address)"
|
|
2784
|
-
]);
|
|
2785
|
-
var aclServedAddressesCache = /* @__PURE__ */ new Map();
|
|
2786
|
-
var clearAclServedAddresses = () => aclServedAddressesCache.clear();
|
|
2787
|
-
var getAclServedAddresses = async (publicClient, chainId) => {
|
|
2788
|
-
const cached = aclServedAddressesCache.get(chainId);
|
|
2789
|
-
if (cached != null)
|
|
2790
|
-
return cached;
|
|
2791
|
-
let aclAddress;
|
|
2792
|
-
try {
|
|
2793
|
-
aclAddress = await publicClient.readContract({
|
|
2794
|
-
address: TASK_MANAGER_ADDRESS,
|
|
2795
|
-
abi: ACL_SERVED_ADDRESSES_ABI,
|
|
2796
|
-
functionName: "acl"
|
|
2797
|
-
});
|
|
2798
|
-
} catch {
|
|
2799
|
-
return {};
|
|
2800
|
-
}
|
|
2801
|
-
const [defaultRevoker, shareRegistry] = await Promise.all([
|
|
2802
|
-
publicClient.readContract({ address: aclAddress, abi: ACL_SERVED_ADDRESSES_ABI, functionName: "defaultRevokerContract" }).catch(() => void 0),
|
|
2803
|
-
publicClient.readContract({ address: aclAddress, abi: ACL_SERVED_ADDRESSES_ABI, functionName: "shareRegistry" }).catch(() => void 0)
|
|
2804
|
-
]);
|
|
2805
|
-
const resolved = {
|
|
2806
|
-
defaultRevoker: defaultRevoker != null && defaultRevoker !== viem.zeroAddress ? defaultRevoker : void 0,
|
|
2807
|
-
shareRegistry: shareRegistry != null && shareRegistry !== viem.zeroAddress ? shareRegistry : void 0
|
|
2808
|
-
};
|
|
2809
|
-
aclServedAddressesCache.set(chainId, resolved);
|
|
2810
|
-
return resolved;
|
|
2811
|
-
};
|
|
2812
2969
|
var applyACPDefaultsFromChain = async (options, acpConfig, publicClient, chainId) => {
|
|
2813
2970
|
const hasExplicitRevoker = acpConfig?.defaultRevoker?.[chainId] != null || options.revokerData != null || options.revokerContract != null;
|
|
2814
2971
|
if (hasExplicitRevoker)
|
|
@@ -2828,7 +2985,7 @@ var revokeACP = async (acp, walletClient) => {
|
|
|
2828
2985
|
}
|
|
2829
2986
|
return walletClient.writeContract({
|
|
2830
2987
|
address: acp.revokerContract,
|
|
2831
|
-
abi:
|
|
2988
|
+
abi: ACP_REVOKER_ABI,
|
|
2832
2989
|
functionName: "revokeSingle",
|
|
2833
2990
|
args: [BigInt(acp.revokerData)],
|
|
2834
2991
|
account: walletClient.account,
|
|
@@ -2849,64 +3006,31 @@ var revokeAllACPs = async (walletClient, publicClient, revokerContract) => {
|
|
|
2849
3006
|
}
|
|
2850
3007
|
return walletClient.writeContract({
|
|
2851
3008
|
address: revoker,
|
|
2852
|
-
abi:
|
|
3009
|
+
abi: ACP_REVOKER_ABI,
|
|
2853
3010
|
functionName: "revokeAllExisting",
|
|
2854
3011
|
args: [],
|
|
2855
3012
|
account: walletClient.account,
|
|
2856
3013
|
chain: walletClient.chain
|
|
2857
3014
|
});
|
|
2858
3015
|
};
|
|
3016
|
+
var checkAccess = async (acp, publicClient, handle) => {
|
|
3017
|
+
if (acp.type === "sharing" && handle === void 0) {
|
|
3018
|
+
if (ACPUtils.isExpired(acp))
|
|
3019
|
+
return "expired";
|
|
3020
|
+
return await isACPRevoked(acp, publicClient) ? "revoked" : "valid";
|
|
3021
|
+
}
|
|
3022
|
+
return ACPUtils.checkAccessOnChain(acp, publicClient, handle);
|
|
3023
|
+
};
|
|
2859
3024
|
var isACPRevoked = async (acp, publicClient) => {
|
|
2860
3025
|
if (acp.revokerContract === viem.zeroAddress || acp.revokerData === 0)
|
|
2861
3026
|
return false;
|
|
2862
3027
|
return publicClient.readContract({
|
|
2863
3028
|
address: acp.revokerContract,
|
|
2864
|
-
abi:
|
|
3029
|
+
abi: ACP_REVOKER_ABI,
|
|
2865
3030
|
functionName: "disabled",
|
|
2866
3031
|
args: [acp.issuer, BigInt(acp.revokerData)]
|
|
2867
3032
|
});
|
|
2868
3033
|
};
|
|
2869
|
-
var ACP_SHARE_REGISTRY_ABI = viem.parseAbi([
|
|
2870
|
-
"struct ACP { address issuer; uint64 expiration; address recipient; uint256 revokerData; address revokerContract; uint8 scope; address[] contracts; bytes32[] handles; bytes32 sealingKey; bytes issuerSignature; bytes recipientSignature; }",
|
|
2871
|
-
"function share(ACP calldata acp) external returns (bytes32)",
|
|
2872
|
-
"function removeShare(bytes32 shareId) external",
|
|
2873
|
-
"function sharesFor(address recipient) external view returns (ACP[] memory)",
|
|
2874
|
-
"function getShare(bytes32 shareId) external view returns (ACP memory)",
|
|
2875
|
-
"function isShareValid(bytes32 shareId) external view returns (bool)"
|
|
2876
|
-
]);
|
|
2877
|
-
var ACP_TUPLE = [
|
|
2878
|
-
{
|
|
2879
|
-
type: "tuple",
|
|
2880
|
-
components: [
|
|
2881
|
-
{ name: "issuer", type: "address" },
|
|
2882
|
-
{ name: "expiration", type: "uint64" },
|
|
2883
|
-
{ name: "recipient", type: "address" },
|
|
2884
|
-
{ name: "revokerData", type: "uint256" },
|
|
2885
|
-
{ name: "revokerContract", type: "address" },
|
|
2886
|
-
{ name: "scope", type: "uint8" },
|
|
2887
|
-
{ name: "contracts", type: "address[]" },
|
|
2888
|
-
{ name: "handles", type: "bytes32[]" },
|
|
2889
|
-
{ name: "sealingKey", type: "bytes32" },
|
|
2890
|
-
{ name: "issuerSignature", type: "bytes" },
|
|
2891
|
-
{ name: "recipientSignature", type: "bytes" }
|
|
2892
|
-
]
|
|
2893
|
-
}
|
|
2894
|
-
];
|
|
2895
|
-
var ZERO_BYTES32 = `0x${"0".repeat(64)}`;
|
|
2896
|
-
var toChainShare = (acp) => {
|
|
2897
|
-
const pub = ACPUtils.getPublic(acp, true);
|
|
2898
|
-
return {
|
|
2899
|
-
...pub,
|
|
2900
|
-
expiration: BigInt(pub.expiration),
|
|
2901
|
-
revokerData: BigInt(pub.revokerData),
|
|
2902
|
-
sealingKey: ZERO_BYTES32,
|
|
2903
|
-
recipientSignature: "0x"
|
|
2904
|
-
};
|
|
2905
|
-
};
|
|
2906
|
-
var computeShareId = (acp) => {
|
|
2907
|
-
const p = toChainShare(acp);
|
|
2908
|
-
return viem.keccak256(viem.encodeAbiParameters(ACP_TUPLE, [p]));
|
|
2909
|
-
};
|
|
2910
3034
|
var shareOnChain = async (acp, walletClient, registry) => {
|
|
2911
3035
|
if (acp.type !== "sharing") {
|
|
2912
3036
|
throw new Error(`Cannot share a '${acp.type}' ACP on-chain \u2014 only 'sharing' ACPs are shareable.`);
|
|
@@ -2937,7 +3061,7 @@ var getIncomingShares = async (publicClient, registry, recipient) => {
|
|
|
2937
3061
|
args: [recipient]
|
|
2938
3062
|
});
|
|
2939
3063
|
return raw.map((s) => ({
|
|
2940
|
-
shareId:
|
|
3064
|
+
shareId: shareIdOfChainShare(s),
|
|
2941
3065
|
issuer: s.issuer,
|
|
2942
3066
|
expiration: Number(s.expiration),
|
|
2943
3067
|
recipient: s.recipient,
|
|
@@ -2949,9 +3073,9 @@ var getIncomingShares = async (publicClient, registry, recipient) => {
|
|
|
2949
3073
|
issuerSignature: s.issuerSignature
|
|
2950
3074
|
}));
|
|
2951
3075
|
};
|
|
2952
|
-
var importFromChain = async (share, publicClient, walletClient) => {
|
|
3076
|
+
var importFromChain = async (share, publicClient, walletClient, importOptions = {}) => {
|
|
2953
3077
|
const { shareId: _shareId, ...options } = share;
|
|
2954
|
-
return importShared({ ...options, type: "sharing" }, publicClient, walletClient);
|
|
3078
|
+
return importShared({ ...options, type: "sharing" }, publicClient, walletClient, importOptions);
|
|
2955
3079
|
};
|
|
2956
3080
|
var removeShareOnChain = async (shareId, walletClient, registry) => {
|
|
2957
3081
|
if (walletClient.account == null)
|
|
@@ -2989,6 +3113,7 @@ var acps = {
|
|
|
2989
3113
|
revokeACP,
|
|
2990
3114
|
revokeAllACPs,
|
|
2991
3115
|
isACPRevoked,
|
|
3116
|
+
checkAccess,
|
|
2992
3117
|
shareOnChain,
|
|
2993
3118
|
getIncomingShares,
|
|
2994
3119
|
importFromChain,
|
|
@@ -4708,7 +4833,7 @@ var buildDecryptResultHash = (ctHash, cleartext, chainId) => {
|
|
|
4708
4833
|
async function verifyDecryptResult(handle, cleartext, signature, publicClient) {
|
|
4709
4834
|
const chainId = publicClient.chain?.id ?? await publicClient.getChainId();
|
|
4710
4835
|
const expectedSigner = await publicClient.readContract({
|
|
4711
|
-
address:
|
|
4836
|
+
address: await getTaskManagerAddress(publicClient, chainId),
|
|
4712
4837
|
abi: decryptResultSignerAbi,
|
|
4713
4838
|
functionName: "decryptResultSigner",
|
|
4714
4839
|
args: []
|
|
@@ -4828,6 +4953,7 @@ function createCofheClientBase(opts) {
|
|
|
4828
4953
|
zkBuilderAndCrsGenerator: opts.zkBuilderAndCrsGenerator,
|
|
4829
4954
|
initTfhe: opts.initTfhe,
|
|
4830
4955
|
zkProveWorkerFn: opts.zkProveWorkerFn,
|
|
4956
|
+
beforeMainThreadProve: opts.beforeMainThreadProve,
|
|
4831
4957
|
keysStorage,
|
|
4832
4958
|
requireConnected: _requireConnected
|
|
4833
4959
|
});
|
|
@@ -4904,10 +5030,11 @@ function createCofheClientBase(opts) {
|
|
|
4904
5030
|
walletClient
|
|
4905
5031
|
);
|
|
4906
5032
|
},
|
|
4907
|
-
importShared: async (options,
|
|
5033
|
+
importShared: async (options, importOptions = {}) => {
|
|
4908
5034
|
_requireConnected();
|
|
4909
|
-
const {
|
|
4910
|
-
|
|
5035
|
+
const { activate, ...clients } = importOptions;
|
|
5036
|
+
const { publicClient, walletClient } = clients.publicClient ? clients : connectStore.getState();
|
|
5037
|
+
return acps.importShared(options, publicClient, walletClient, { activate });
|
|
4911
5038
|
},
|
|
4912
5039
|
// Get or create methods (require connection)
|
|
4913
5040
|
getOrCreateSelfACP: async (chainId, account, options) => {
|
|
@@ -4950,6 +5077,11 @@ function createCofheClientBase(opts) {
|
|
|
4950
5077
|
const { publicClient } = connectStore.getState();
|
|
4951
5078
|
return acps.isACPRevoked(acp, publicClient);
|
|
4952
5079
|
},
|
|
5080
|
+
checkAccess: async (acp, handle) => {
|
|
5081
|
+
_requireConnected();
|
|
5082
|
+
const { publicClient } = connectStore.getState();
|
|
5083
|
+
return acps.checkAccess(acp, publicClient, handle);
|
|
5084
|
+
},
|
|
4953
5085
|
// On-chain sharing (require connection + config.acp.sharingRegistry)
|
|
4954
5086
|
shareOnChain: async (acp) => {
|
|
4955
5087
|
_requireConnected();
|
|
@@ -4966,10 +5098,10 @@ function createCofheClientBase(opts) {
|
|
|
4966
5098
|
const sharingRegistry = await _resolveSharingRegistry(publicClient, chainId);
|
|
4967
5099
|
return acps.getIncomingShares(publicClient, sharingRegistry, account);
|
|
4968
5100
|
},
|
|
4969
|
-
importFromChain: async (share) => {
|
|
5101
|
+
importFromChain: async (share, options) => {
|
|
4970
5102
|
_requireConnected();
|
|
4971
5103
|
const { publicClient, walletClient } = connectStore.getState();
|
|
4972
|
-
return acps.importFromChain(share, publicClient, walletClient);
|
|
5104
|
+
return acps.importFromChain(share, publicClient, walletClient, options);
|
|
4973
5105
|
},
|
|
4974
5106
|
dismissShare: async (shareId) => {
|
|
4975
5107
|
_requireConnected();
|
|
@@ -5057,6 +5189,7 @@ function createCofheClientBase(opts) {
|
|
|
5057
5189
|
};
|
|
5058
5190
|
}
|
|
5059
5191
|
|
|
5192
|
+
exports.COFHE_ADDRESS_BOOK_ADDRESS = COFHE_ADDRESS_BOOK_ADDRESS;
|
|
5060
5193
|
exports.CONNECT_STORE_DEFAULTS = InitialConnectStore;
|
|
5061
5194
|
exports.CofheError = CofheError;
|
|
5062
5195
|
exports.CofheErrorCode = CofheErrorCode;
|
|
@@ -5069,11 +5202,12 @@ exports.FheAllUTypes = FheAllUTypes;
|
|
|
5069
5202
|
exports.FheTypes = FheTypes;
|
|
5070
5203
|
exports.FheUintUTypes = FheUintUTypes;
|
|
5071
5204
|
exports.MOCKS_DECRYPT_RESULT_SIGNER_PRIVATE_KEY = MOCKS_DECRYPT_RESULT_SIGNER_PRIVATE_KEY;
|
|
5205
|
+
exports.MOCKS_TASK_MANAGER_ADDRESS = MOCKS_TASK_MANAGER_ADDRESS;
|
|
5072
5206
|
exports.MOCKS_THRESHOLD_NETWORK_ADDRESS = MOCKS_THRESHOLD_NETWORK_ADDRESS;
|
|
5073
5207
|
exports.MOCKS_ZK_VERIFIER_ADDRESS = MOCKS_ZK_VERIFIER_ADDRESS;
|
|
5074
5208
|
exports.MOCKS_ZK_VERIFIER_SIGNER_ADDRESS = MOCKS_ZK_VERIFIER_SIGNER_ADDRESS;
|
|
5075
5209
|
exports.MOCKS_ZK_VERIFIER_SIGNER_PRIVATE_KEY = MOCKS_ZK_VERIFIER_SIGNER_PRIVATE_KEY;
|
|
5076
|
-
exports.
|
|
5210
|
+
exports.TASK_MANAGER_ID = TASK_MANAGER_ID;
|
|
5077
5211
|
exports.TFHE_RS_SAFE_SERIALIZATION_SIZE_LIMIT = TFHE_RS_SAFE_SERIALIZATION_SIZE_LIMIT;
|
|
5078
5212
|
exports.TFHE_RS_ZK_MAX_BITS = TFHE_RS_ZK_MAX_BITS;
|
|
5079
5213
|
exports.assertNoRenamedConfigKeys = assertNoRenamedConfigKeys;
|
|
@@ -5085,6 +5219,7 @@ exports.fetchKeys = fetchKeys;
|
|
|
5085
5219
|
exports.fheTypeToString = fheTypeToString;
|
|
5086
5220
|
exports.getCofheConfigItem = getCofheConfigItem;
|
|
5087
5221
|
exports.getCofheDebugInterceptors = getCofheDebugInterceptors;
|
|
5222
|
+
exports.getTaskManagerAddress = getTaskManagerAddress;
|
|
5088
5223
|
exports.isCofheError = isCofheError;
|
|
5089
5224
|
exports.isEncryptableItem = isEncryptableItem;
|
|
5090
5225
|
exports.isLastEncryptionStep = isLastEncryptionStep;
|