@enclave-e3/react 0.1.7 → 0.1.8
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/dist/index.d.ts +4 -9
- package/dist/index.js +6 -2
- package/dist/index.js.map +1 -1
- package/package.json +3 -3
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ThresholdBfvParamsPresetName, EnclaveSDK, AllEventTypes, EventCallback, EnclaveEventType, RegistryEventType } from '@enclave-e3/sdk';
|
|
2
2
|
export { AllEventTypes, CiphernodeAddedData, CiphernodeRemovedData, CiphertextOutputPublishedData, CommitteePublishedData, CommitteeRequestedData, E3ActivatedData, E3RequestedData, EnclaveEvent, EnclaveEventType, EventCallback, PlaintextOutputPublishedData, RegistryEventType } from '@enclave-e3/sdk';
|
|
3
3
|
|
|
4
4
|
interface UseEnclaveSDKConfig {
|
|
@@ -9,8 +9,7 @@ interface UseEnclaveSDKConfig {
|
|
|
9
9
|
};
|
|
10
10
|
chainId?: number;
|
|
11
11
|
autoConnect?: boolean;
|
|
12
|
-
|
|
13
|
-
protocolParams?: ProtocolParams;
|
|
12
|
+
thresholdBfvParamsPresetName: ThresholdBfvParamsPresetName;
|
|
14
13
|
}
|
|
15
14
|
interface UseEnclaveSDKReturn {
|
|
16
15
|
sdk: EnclaveSDK | null;
|
|
@@ -19,6 +18,7 @@ interface UseEnclaveSDKReturn {
|
|
|
19
18
|
requestE3: typeof EnclaveSDK.prototype.requestE3;
|
|
20
19
|
activateE3: typeof EnclaveSDK.prototype.activateE3;
|
|
21
20
|
publishInput: typeof EnclaveSDK.prototype.publishInput;
|
|
21
|
+
getThresholdBfvParamsSet: typeof EnclaveSDK.prototype.getThresholdBfvParamsSet;
|
|
22
22
|
onEnclaveEvent: <T extends AllEventTypes>(eventType: T, callback: EventCallback<T>) => void;
|
|
23
23
|
off: <T extends AllEventTypes>(eventType: T, callback: EventCallback<T>) => void;
|
|
24
24
|
EnclaveEventType: typeof EnclaveEventType;
|
|
@@ -47,12 +47,7 @@ interface UseEnclaveSDKReturn {
|
|
|
47
47
|
* enclave: '0x...',
|
|
48
48
|
* ciphernodeRegistry: '0x...'
|
|
49
49
|
* },
|
|
50
|
-
*
|
|
51
|
-
* protocolParams: {
|
|
52
|
-
* degree: 2048,
|
|
53
|
-
* plaintextModulus: 1032193n,
|
|
54
|
-
* moduli: 0x3FFFFFFF000001n,
|
|
55
|
-
* },
|
|
50
|
+
* thresholdBfvParamsPresetName: 'INSECURE_THRESHOLD_BFV_512',
|
|
56
51
|
* });
|
|
57
52
|
*
|
|
58
53
|
* // Use the SDK...
|
package/dist/index.js
CHANGED
|
@@ -32,8 +32,7 @@ var useEnclaveSDK = (config) => {
|
|
|
32
32
|
feeToken: "0x0000000000000000000000000000000000000000"
|
|
33
33
|
},
|
|
34
34
|
chainId: config.chainId,
|
|
35
|
-
|
|
36
|
-
protocolParams: config.protocolParams
|
|
35
|
+
thresholdBfvParamsPresetName: config.thresholdBfvParamsPresetName
|
|
37
36
|
};
|
|
38
37
|
const newSdk = new EnclaveSDK(sdkConfig);
|
|
39
38
|
await newSdk.initialize();
|
|
@@ -84,6 +83,10 @@ var useEnclaveSDK = (config) => {
|
|
|
84
83
|
},
|
|
85
84
|
[sdk]
|
|
86
85
|
);
|
|
86
|
+
const getThresholdBfvParamsSet = useCallback(async () => {
|
|
87
|
+
if (!sdk) throw new Error("SDK not initialized");
|
|
88
|
+
return sdk.getThresholdBfvParamsSet();
|
|
89
|
+
}, [sdk]);
|
|
87
90
|
const onEnclaveEvent = useCallback(
|
|
88
91
|
(eventType, callback) => {
|
|
89
92
|
if (!sdk) throw new Error("SDK not initialized");
|
|
@@ -105,6 +108,7 @@ var useEnclaveSDK = (config) => {
|
|
|
105
108
|
requestE3,
|
|
106
109
|
activateE3,
|
|
107
110
|
publishInput,
|
|
111
|
+
getThresholdBfvParamsSet,
|
|
108
112
|
onEnclaveEvent,
|
|
109
113
|
off,
|
|
110
114
|
EnclaveEventType,
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/useEnclaveSDK.ts","../src/index.ts"],"sourcesContent":["// SPDX-License-Identifier: LGPL-3.0-only\n//\n// This file is provided WITHOUT ANY WARRANTY;\n// without even the implied warranty of MERCHANTABILITY\n// or FITNESS FOR A PARTICULAR PURPOSE.\n\nimport { useState, useEffect, useCallback, useRef } from 'react'\nimport { useWalletClient, usePublicClient } from 'wagmi'\nimport {\n EnclaveSDK,\n type SDKConfig,\n type AllEventTypes,\n type EventCallback,\n type
|
|
1
|
+
{"version":3,"sources":["../src/useEnclaveSDK.ts","../src/index.ts"],"sourcesContent":["// SPDX-License-Identifier: LGPL-3.0-only\n//\n// This file is provided WITHOUT ANY WARRANTY;\n// without even the implied warranty of MERCHANTABILITY\n// or FITNESS FOR A PARTICULAR PURPOSE.\n\nimport { useState, useEffect, useCallback, useRef } from 'react'\nimport { useWalletClient, usePublicClient } from 'wagmi'\nimport {\n EnclaveSDK,\n type SDKConfig,\n type AllEventTypes,\n type EventCallback,\n type ThresholdBfvParamsPresetName,\n EnclaveEventType,\n RegistryEventType,\n SDKError,\n} from '@enclave-e3/sdk'\n\nexport interface UseEnclaveSDKConfig {\n contracts?: {\n enclave: `0x${string}`\n ciphernodeRegistry: `0x${string}`\n feeToken: `0x${string}`\n }\n chainId?: number\n autoConnect?: boolean\n thresholdBfvParamsPresetName: ThresholdBfvParamsPresetName\n}\n\nexport interface UseEnclaveSDKReturn {\n sdk: EnclaveSDK | null\n isInitialized: boolean\n error: string | null\n // Contract interaction methods (only the ones commonly used)\n requestE3: typeof EnclaveSDK.prototype.requestE3\n activateE3: typeof EnclaveSDK.prototype.activateE3\n publishInput: typeof EnclaveSDK.prototype.publishInput\n getThresholdBfvParamsSet: typeof EnclaveSDK.prototype.getThresholdBfvParamsSet\n // Event handling\n onEnclaveEvent: <T extends AllEventTypes>(eventType: T, callback: EventCallback<T>) => void\n off: <T extends AllEventTypes>(eventType: T, callback: EventCallback<T>) => void\n // Event types for convenience\n EnclaveEventType: typeof EnclaveEventType\n RegistryEventType: typeof RegistryEventType\n}\n\n/**\n * React hook for interacting with Enclave SDK\n *\n * @param config Configuration for the SDK initialization\n * @returns Object containing SDK instance and helper methods\n *\n * @example\n * ```tsx\n * import { useEnclaveSDK } from '@enclave-e3/react';\n *\n * function MyComponent() {\n * const {\n * sdk,\n * isInitialized,\n * error,\n * requestE3,\n * onEnclaveEvent\n * } = useEnclaveSDK({\n * autoConnect: true,\n * contracts: {\n * enclave: '0x...',\n * ciphernodeRegistry: '0x...'\n * },\n * thresholdBfvParamsPresetName: 'INSECURE_THRESHOLD_BFV_512',\n * });\n *\n * // Use the SDK...\n * }\n * ```\n */\nexport const useEnclaveSDK = (config: UseEnclaveSDKConfig): UseEnclaveSDKReturn => {\n const [sdk, setSdk] = useState<EnclaveSDK | null>(null)\n const [isInitialized, setIsInitialized] = useState(false)\n const [error, setError] = useState<string | null>(null)\n const sdkRef = useRef<EnclaveSDK | null>(null)\n\n const publicClient = usePublicClient()\n\n const { data: walletClient } = useWalletClient()\n const initializeSDK = useCallback(async () => {\n try {\n setError(null)\n\n if (!publicClient) {\n throw new Error('Public client not available')\n }\n\n if (sdk) {\n sdk.cleanup()\n }\n\n const sdkConfig: SDKConfig = {\n publicClient,\n walletClient,\n contracts: config.contracts || {\n enclave: '0x0000000000000000000000000000000000000000',\n ciphernodeRegistry: '0x0000000000000000000000000000000000000000',\n feeToken: '0x0000000000000000000000000000000000000000',\n },\n chainId: config.chainId,\n thresholdBfvParamsPresetName: config.thresholdBfvParamsPresetName,\n }\n\n const newSdk = new EnclaveSDK(sdkConfig)\n await newSdk.initialize()\n setSdk(newSdk)\n sdkRef.current = newSdk\n setIsInitialized(true)\n } catch (err: unknown) {\n const errorMessage = err instanceof SDKError ? `SDK Error (${err.code}): ${err.message}` : `Failed to initialize SDK: ${err}`\n setError(errorMessage)\n console.error('SDK initialization failed:', err)\n }\n }, [publicClient, walletClient, config.contracts, config.chainId])\n\n // Initialize SDK when wagmi clients are available\n useEffect(() => {\n if (config.autoConnect && publicClient && !isInitialized) {\n initializeSDK()\n }\n }, [config.autoConnect, publicClient, isInitialized, initializeSDK])\n\n // Re-initialize when wallet client changes (connect/disconnect)\n useEffect(() => {\n if (isInitialized && publicClient && walletClient) {\n initializeSDK()\n }\n }, [walletClient, initializeSDK])\n\n // Cleanup on unmount\n useEffect(() => {\n return () => {\n if (sdkRef.current) {\n sdkRef.current.cleanup()\n }\n }\n }, [])\n\n // Contract interaction methods\n const requestE3 = useCallback(\n (...args: Parameters<typeof EnclaveSDK.prototype.requestE3>) => {\n if (!sdk) throw new Error('SDK not initialized')\n return sdk.requestE3(...args)\n },\n [sdk],\n )\n\n const activateE3 = useCallback(\n (...args: Parameters<typeof EnclaveSDK.prototype.activateE3>) => {\n if (!sdk) throw new Error('SDK not initialized')\n return sdk.activateE3(...args)\n },\n [sdk],\n )\n\n const publishInput = useCallback(\n (...args: Parameters<typeof EnclaveSDK.prototype.publishInput>) => {\n if (!sdk) throw new Error('SDK not initialized')\n return sdk.publishInput(...args)\n },\n [sdk],\n )\n\n const getThresholdBfvParamsSet = useCallback(async () => {\n if (!sdk) throw new Error('SDK not initialized')\n return sdk.getThresholdBfvParamsSet()\n }, [sdk])\n\n // Event handling methods\n const onEnclaveEvent = useCallback(\n <T extends AllEventTypes>(eventType: T, callback: EventCallback<T>) => {\n if (!sdk) throw new Error('SDK not initialized')\n return sdk.onEnclaveEvent(eventType, callback)\n },\n [sdk],\n )\n\n const off = useCallback(\n <T extends AllEventTypes>(eventType: T, callback: EventCallback<T>) => {\n if (!sdk) throw new Error('SDK not initialized')\n return sdk.off(eventType, callback)\n },\n [sdk],\n )\n\n return {\n sdk,\n isInitialized,\n error,\n requestE3,\n activateE3,\n publishInput,\n getThresholdBfvParamsSet,\n onEnclaveEvent,\n off,\n EnclaveEventType,\n RegistryEventType,\n }\n}\n","// SPDX-License-Identifier: LGPL-3.0-only\n//\n// This file is provided WITHOUT ANY WARRANTY;\n// without even the implied warranty of MERCHANTABILITY\n// or FITNESS FOR A PARTICULAR PURPOSE.\n\n/**\n * @enclave-e3/react\n *\n * React hooks and utilities for Enclave SDK\n */\n\nexport { useEnclaveSDK } from './useEnclaveSDK'\nexport type { UseEnclaveSDKConfig, UseEnclaveSDKReturn } from './useEnclaveSDK'\n\n// Re-export commonly used types from the main SDK for convenience\nexport type {\n AllEventTypes,\n EventCallback,\n EnclaveEvent,\n E3RequestedData,\n E3ActivatedData,\n CiphertextOutputPublishedData,\n PlaintextOutputPublishedData,\n CiphernodeAddedData,\n CiphernodeRemovedData,\n CommitteeRequestedData,\n CommitteePublishedData,\n} from '@enclave-e3/sdk'\n\nexport { EnclaveEventType, RegistryEventType } from '@enclave-e3/sdk'\n"],"mappings":";AAMA,SAAS,UAAU,WAAW,aAAa,cAAc;AACzD,SAAS,iBAAiB,uBAAuB;AACjD;AAAA,EACE;AAAA,EAKA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AA4DA,IAAM,gBAAgB,CAAC,WAAqD;AACjF,QAAM,CAAC,KAAK,MAAM,IAAI,SAA4B,IAAI;AACtD,QAAM,CAAC,eAAe,gBAAgB,IAAI,SAAS,KAAK;AACxD,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAwB,IAAI;AACtD,QAAM,SAAS,OAA0B,IAAI;AAE7C,QAAM,eAAe,gBAAgB;AAErC,QAAM,EAAE,MAAM,aAAa,IAAI,gBAAgB;AAC/C,QAAM,gBAAgB,YAAY,YAAY;AAC5C,QAAI;AACF,eAAS,IAAI;AAEb,UAAI,CAAC,cAAc;AACjB,cAAM,IAAI,MAAM,6BAA6B;AAAA,MAC/C;AAEA,UAAI,KAAK;AACP,YAAI,QAAQ;AAAA,MACd;AAEA,YAAM,YAAuB;AAAA,QAC3B;AAAA,QACA;AAAA,QACA,WAAW,OAAO,aAAa;AAAA,UAC7B,SAAS;AAAA,UACT,oBAAoB;AAAA,UACpB,UAAU;AAAA,QACZ;AAAA,QACA,SAAS,OAAO;AAAA,QAChB,8BAA8B,OAAO;AAAA,MACvC;AAEA,YAAM,SAAS,IAAI,WAAW,SAAS;AACvC,YAAM,OAAO,WAAW;AACxB,aAAO,MAAM;AACb,aAAO,UAAU;AACjB,uBAAiB,IAAI;AAAA,IACvB,SAAS,KAAc;AACrB,YAAM,eAAe,eAAe,WAAW,cAAc,IAAI,IAAI,MAAM,IAAI,OAAO,KAAK,6BAA6B,GAAG;AAC3H,eAAS,YAAY;AACrB,cAAQ,MAAM,8BAA8B,GAAG;AAAA,IACjD;AAAA,EACF,GAAG,CAAC,cAAc,cAAc,OAAO,WAAW,OAAO,OAAO,CAAC;AAGjE,YAAU,MAAM;AACd,QAAI,OAAO,eAAe,gBAAgB,CAAC,eAAe;AACxD,oBAAc;AAAA,IAChB;AAAA,EACF,GAAG,CAAC,OAAO,aAAa,cAAc,eAAe,aAAa,CAAC;AAGnE,YAAU,MAAM;AACd,QAAI,iBAAiB,gBAAgB,cAAc;AACjD,oBAAc;AAAA,IAChB;AAAA,EACF,GAAG,CAAC,cAAc,aAAa,CAAC;AAGhC,YAAU,MAAM;AACd,WAAO,MAAM;AACX,UAAI,OAAO,SAAS;AAClB,eAAO,QAAQ,QAAQ;AAAA,MACzB;AAAA,IACF;AAAA,EACF,GAAG,CAAC,CAAC;AAGL,QAAM,YAAY;AAAA,IAChB,IAAI,SAA4D;AAC9D,UAAI,CAAC,IAAK,OAAM,IAAI,MAAM,qBAAqB;AAC/C,aAAO,IAAI,UAAU,GAAG,IAAI;AAAA,IAC9B;AAAA,IACA,CAAC,GAAG;AAAA,EACN;AAEA,QAAM,aAAa;AAAA,IACjB,IAAI,SAA6D;AAC/D,UAAI,CAAC,IAAK,OAAM,IAAI,MAAM,qBAAqB;AAC/C,aAAO,IAAI,WAAW,GAAG,IAAI;AAAA,IAC/B;AAAA,IACA,CAAC,GAAG;AAAA,EACN;AAEA,QAAM,eAAe;AAAA,IACnB,IAAI,SAA+D;AACjE,UAAI,CAAC,IAAK,OAAM,IAAI,MAAM,qBAAqB;AAC/C,aAAO,IAAI,aAAa,GAAG,IAAI;AAAA,IACjC;AAAA,IACA,CAAC,GAAG;AAAA,EACN;AAEA,QAAM,2BAA2B,YAAY,YAAY;AACvD,QAAI,CAAC,IAAK,OAAM,IAAI,MAAM,qBAAqB;AAC/C,WAAO,IAAI,yBAAyB;AAAA,EACtC,GAAG,CAAC,GAAG,CAAC;AAGR,QAAM,iBAAiB;AAAA,IACrB,CAA0B,WAAc,aAA+B;AACrE,UAAI,CAAC,IAAK,OAAM,IAAI,MAAM,qBAAqB;AAC/C,aAAO,IAAI,eAAe,WAAW,QAAQ;AAAA,IAC/C;AAAA,IACA,CAAC,GAAG;AAAA,EACN;AAEA,QAAM,MAAM;AAAA,IACV,CAA0B,WAAc,aAA+B;AACrE,UAAI,CAAC,IAAK,OAAM,IAAI,MAAM,qBAAqB;AAC/C,aAAO,IAAI,IAAI,WAAW,QAAQ;AAAA,IACpC;AAAA,IACA,CAAC,GAAG;AAAA,EACN;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;;;AC/KA,SAAS,oBAAAA,mBAAkB,qBAAAC,0BAAyB;","names":["EnclaveEventType","RegistryEventType"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@enclave-e3/react",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.8",
|
|
4
4
|
"description": "React hooks and utilities for Enclave SDK",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"private": false,
|
|
@@ -42,11 +42,11 @@
|
|
|
42
42
|
"access": "public"
|
|
43
43
|
},
|
|
44
44
|
"dependencies": {
|
|
45
|
-
"@enclave-e3/sdk": "^0.1.
|
|
45
|
+
"@enclave-e3/sdk": "^0.1.8",
|
|
46
46
|
"viem": "2.30.6"
|
|
47
47
|
},
|
|
48
48
|
"devDependencies": {
|
|
49
|
-
"@enclave-e3/config": "^0.1.
|
|
49
|
+
"@enclave-e3/config": "^0.1.8",
|
|
50
50
|
"@types/react": "^18.2.0",
|
|
51
51
|
"tsup": "^8.5.0",
|
|
52
52
|
"typescript": "5.8.3"
|