@inco/js 0.3.1 → 0.3.2
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/cjs/attestedcompute/attested-compute.d.ts +14 -16
- package/dist/cjs/attestedcompute/attested-compute.js +56 -71
- package/dist/cjs/attesteddecrypt/attested-decrypt.d.ts +18 -19
- package/dist/cjs/attesteddecrypt/attested-decrypt.js +50 -60
- package/dist/cjs/attesteddecrypt/index.d.ts +0 -1
- package/dist/cjs/attesteddecrypt/index.js +1 -2
- package/dist/cjs/lite/attested-compute.d.ts +1 -2
- package/dist/cjs/lite/attested-compute.js +1 -4
- package/dist/cjs/lite/attested-decrypt.d.ts +1 -2
- package/dist/cjs/lite/attested-decrypt.js +1 -4
- package/dist/cjs/lite/lightning.d.ts +41 -2
- package/dist/cjs/lite/lightning.js +57 -1
- package/dist/esm/attestedcompute/attested-compute.d.ts +14 -16
- package/dist/esm/attestedcompute/attested-compute.js +55 -70
- package/dist/esm/attesteddecrypt/attested-decrypt.d.ts +18 -19
- package/dist/esm/attesteddecrypt/attested-decrypt.js +49 -59
- package/dist/esm/attesteddecrypt/index.d.ts +0 -1
- package/dist/esm/attesteddecrypt/index.js +1 -2
- package/dist/esm/lite/attested-compute.d.ts +1 -2
- package/dist/esm/lite/attested-compute.js +2 -3
- package/dist/esm/lite/attested-decrypt.d.ts +1 -2
- package/dist/esm/lite/attested-decrypt.js +2 -3
- package/dist/esm/lite/lightning.d.ts +41 -2
- package/dist/esm/lite/lightning.js +57 -1
- package/dist/types/attestedcompute/attested-compute.d.ts +14 -16
- package/dist/types/attesteddecrypt/attested-decrypt.d.ts +18 -19
- package/dist/types/attesteddecrypt/index.d.ts +0 -1
- package/dist/types/lite/attested-compute.d.ts +1 -2
- package/dist/types/lite/attested-decrypt.d.ts +1 -2
- package/dist/types/lite/lightning.d.ts +41 -2
- package/package.json +1 -1
@@ -1,8 +1,11 @@
|
|
1
1
|
import type { Account, Chain, Transport, WalletClient } from 'viem';
|
2
|
+
import { DecryptionAttestation } from '../attesteddecrypt/types.js';
|
3
|
+
import { HexString } from '../binary.js';
|
2
4
|
import { SupportedChainId } from '../chain.js';
|
3
|
-
import { EciesScheme } from '../encryption/encryption.js';
|
5
|
+
import { EciesScheme, SupportedFheType } from '../encryption/encryption.js';
|
4
6
|
import type { KmsClient } from '../kms/client.js';
|
5
|
-
import {
|
7
|
+
import type { BackoffConfig } from '../retry.js';
|
8
|
+
import { AttestedComputeOP } from './types.js';
|
6
9
|
/**
|
7
10
|
* Arguments for creating an attested compute.
|
8
11
|
*/
|
@@ -21,18 +24,13 @@ export interface IncoLiteAttestedComputeArgs {
|
|
21
24
|
* @throws {AttestedComputeError} If the creation fails
|
22
25
|
*
|
23
26
|
* @todo Support multiple operations in a single request.
|
24
|
-
*
|
25
|
-
* @example
|
26
|
-
* ```typescript
|
27
|
-
* const compute = await incoLiteAttestedCompute({
|
28
|
-
* walletClient,
|
29
|
-
* chainId: sepolia,
|
30
|
-
* });
|
31
|
-
* const decryptionAttestation = await compute({
|
32
|
-
* lhsHandle: '0x...',
|
33
|
-
* op: AttestedComputeSupportedOps.Eq,
|
34
|
-
* rhsPlaintext: 1337n,
|
35
|
-
* });
|
36
|
-
* ```
|
37
27
|
*/
|
38
|
-
export declare function
|
28
|
+
export declare function attestedCompute<T extends SupportedFheType>({ lhsHandle, op, rhsPlaintext, backoffConfig, walletClient, kmsConnectRpcEndpointOrClient, chainId, }: {
|
29
|
+
lhsHandle: HexString;
|
30
|
+
op: AttestedComputeOP;
|
31
|
+
rhsPlaintext: bigint | boolean;
|
32
|
+
backoffConfig?: Partial<BackoffConfig> | undefined;
|
33
|
+
walletClient: WalletClient<Transport, Chain, Account>;
|
34
|
+
kmsConnectRpcEndpointOrClient?: string | KmsClient;
|
35
|
+
chainId: SupportedChainId;
|
36
|
+
}): Promise<DecryptionAttestation<EciesScheme, T>>;
|
@@ -1,6 +1,6 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.
|
3
|
+
exports.attestedCompute = attestedCompute;
|
4
4
|
const viem_1 = require("viem");
|
5
5
|
const attested_decrypt_js_1 = require("../attesteddecrypt/attested-decrypt.js");
|
6
6
|
const binary_js_1 = require("../binary.js");
|
@@ -20,79 +20,64 @@ const ATTESTED_COMPUTE_DOMAIN_VERSION = '0.1.0';
|
|
20
20
|
* @throws {AttestedComputeError} If the creation fails
|
21
21
|
*
|
22
22
|
* @todo Support multiple operations in a single request.
|
23
|
-
*
|
24
|
-
* @example
|
25
|
-
* ```typescript
|
26
|
-
* const compute = await incoLiteAttestedCompute({
|
27
|
-
* walletClient,
|
28
|
-
* chainId: sepolia,
|
29
|
-
* });
|
30
|
-
* const decryptionAttestation = await compute({
|
31
|
-
* lhsHandle: '0x...',
|
32
|
-
* op: AttestedComputeSupportedOps.Eq,
|
33
|
-
* rhsPlaintext: 1337n,
|
34
|
-
* });
|
35
|
-
* ```
|
36
23
|
*/
|
37
|
-
function
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
message: {
|
53
|
-
op: op,
|
54
|
-
lhsHandle: lhsHandle,
|
55
|
-
rhsPlaintext: (0, binary_js_1.bigintToBytes32)(rhsPlaintextBig),
|
56
|
-
},
|
57
|
-
domainName: ATTESTED_COMPUTE_DOMAIN_NAME,
|
58
|
-
domainVersion: ATTESTED_COMPUTE_DOMAIN_VERSION,
|
59
|
-
});
|
60
|
-
// Sign the EIP712 message
|
61
|
-
const eip712Signature = await walletClient.signTypedData(eip712Payload);
|
62
|
-
const rhsValueBytes = (0, encryption_js_1.bigintToPlaintext)(encryption_js_1.encryptionSchemes.ecies, (0, handle_js_1.getHandleType)(lhsHandle), rhsPlaintextBig);
|
63
|
-
const attestedComputeRequest = {
|
64
|
-
$typeName: 'inco.kms.lite.v1.AttestedComputeRequest',
|
65
|
-
userAddress: walletClient.account.address,
|
24
|
+
async function attestedCompute({ lhsHandle, op, rhsPlaintext, backoffConfig, walletClient, kmsConnectRpcEndpointOrClient, chainId, }) {
|
25
|
+
try {
|
26
|
+
const kmsClient = (0, client_js_1.getKmsClient)(kmsConnectRpcEndpointOrClient || (0, client_js_1.defaultCovalidatorGrpc)((0, chain_js_1.getSupportedChain)(chainId)));
|
27
|
+
(0, attested_decrypt_js_1.validateHandle)(lhsHandle);
|
28
|
+
const rhsPlaintextBig = BigInt(rhsPlaintext);
|
29
|
+
// Create the EIP712 payload for the handles to decrypt
|
30
|
+
const eip712Payload = (0, eip712_js_1.createEIP712Payload)({
|
31
|
+
chainId: BigInt(chainId),
|
32
|
+
primaryType: 'AttestedComputeRequest',
|
33
|
+
primaryTypeFields: [
|
34
|
+
{ name: 'op', type: 'uint8' },
|
35
|
+
{ name: 'lhsHandle', type: 'bytes32' },
|
36
|
+
{ name: 'rhsPlaintext', type: 'bytes32' },
|
37
|
+
],
|
38
|
+
message: {
|
66
39
|
op: op,
|
67
40
|
lhsHandle: lhsHandle,
|
68
|
-
rhsPlaintext:
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
41
|
+
rhsPlaintext: (0, binary_js_1.bigintToBytes32)(rhsPlaintextBig),
|
42
|
+
},
|
43
|
+
domainName: ATTESTED_COMPUTE_DOMAIN_NAME,
|
44
|
+
domainVersion: ATTESTED_COMPUTE_DOMAIN_VERSION,
|
45
|
+
});
|
46
|
+
// Sign the EIP712 message
|
47
|
+
const eip712Signature = await walletClient.signTypedData(eip712Payload);
|
48
|
+
const rhsValueBytes = (0, encryption_js_1.bigintToPlaintext)(encryption_js_1.encryptionSchemes.ecies, (0, handle_js_1.getHandleType)(lhsHandle), rhsPlaintextBig);
|
49
|
+
const attestedComputeRequest = {
|
50
|
+
$typeName: 'inco.kms.lite.v1.AttestedComputeRequest',
|
51
|
+
userAddress: walletClient.account.address,
|
52
|
+
op: op,
|
53
|
+
lhsHandle: lhsHandle,
|
54
|
+
rhsPlaintext: rhsValueBytes.value.toString(16),
|
55
|
+
eip712Signature: (0, viem_1.hexToBytes)(eip712Signature),
|
56
|
+
};
|
57
|
+
const response = await (0, retry_js_1.retryWithBackoff)(async () => {
|
58
|
+
return await kmsClient.attestedCompute(attestedComputeRequest);
|
59
|
+
}, backoffConfig);
|
60
|
+
const decryptionAttestation = response.decryptionAttestation;
|
61
|
+
if (decryptionAttestation?.plaintext === undefined) {
|
62
|
+
throw new types_js_1.AttestedComputeError('No plaintext in response');
|
63
|
+
}
|
64
|
+
const computeResultHandle = response.decryptionAttestation?.handle;
|
65
|
+
if (!computeResultHandle) {
|
66
|
+
throw new types_js_1.AttestedComputeError('No compute result handle in response');
|
89
67
|
}
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
68
|
+
const handleType = (0, handle_js_1.getHandleType)(computeResultHandle);
|
69
|
+
const bigIntValue = (0, binary_js_1.bytesToBigInt)(decryptionAttestation.plaintext);
|
70
|
+
return {
|
71
|
+
handle: computeResultHandle,
|
72
|
+
plaintext: (0, encryption_js_1.bigintToPlaintext)(encryption_js_1.encryptionSchemes.ecies, handleType, bigIntValue),
|
73
|
+
covalidatorSignature: decryptionAttestation.signature,
|
74
|
+
};
|
75
|
+
}
|
76
|
+
catch (error) {
|
77
|
+
if (error instanceof types_js_1.AttestedComputeError) {
|
78
|
+
throw error;
|
95
79
|
}
|
96
|
-
|
80
|
+
throw new types_js_1.AttestedComputeError('Failed to perform attested compute', error);
|
81
|
+
}
|
97
82
|
}
|
98
|
-
//# sourceMappingURL=data:application/json;base64,
|
83
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0ZXN0ZWQtY29tcHV0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hdHRlc3RlZGNvbXB1dGUvYXR0ZXN0ZWQtY29tcHV0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQXVDQSwwQ0FtRkM7QUF6SEQsK0JBQWtDO0FBQ2xDLGdGQUF3RTtBQUV4RSw0Q0FBeUU7QUFDekUsMENBQWtFO0FBQ2xFLCtEQUFrSDtBQUVsSCw0Q0FBNkM7QUFFN0MsZ0RBQXdFO0FBQ3hFLHlEQUFnRTtBQUVoRSwwQ0FBK0M7QUFDL0MseUNBQXFFO0FBRXJFLE1BQU0sNEJBQTRCLEdBQUcscUJBQXFCLENBQUM7QUFDM0QsTUFBTSwrQkFBK0IsR0FBRyxPQUFPLENBQUM7QUFjaEQ7Ozs7Ozs7R0FPRztBQUNJLEtBQUssVUFBVSxlQUFlLENBQTZCLEVBQ2hFLFNBQVMsRUFDVCxFQUFFLEVBQ0YsWUFBWSxFQUNaLGFBQWEsRUFDYixZQUFZLEVBQ1osNkJBQTZCLEVBQzdCLE9BQU8sR0FTUjtJQUNDLElBQUksQ0FBQztRQUNILE1BQU0sU0FBUyxHQUFHLElBQUEsd0JBQVksRUFBQyw2QkFBNkIsSUFBSSxJQUFBLGtDQUFzQixFQUFDLElBQUEsNEJBQWlCLEVBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3BILElBQUEsb0NBQWMsRUFBQyxTQUFTLENBQUMsQ0FBQztRQUUxQixNQUFNLGVBQWUsR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7UUFFN0MsdURBQXVEO1FBQ3ZELE1BQU0sYUFBYSxHQUFHLElBQUEsK0JBQW1CLEVBQUM7WUFDeEMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUM7WUFDeEIsV0FBVyxFQUFFLHdCQUF3QjtZQUNyQyxpQkFBaUIsRUFBRTtnQkFDakIsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUU7Z0JBQzdCLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFO2dCQUN0QyxFQUFFLElBQUksRUFBRSxjQUFjLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRTthQUMxQztZQUNELE9BQU8sRUFBRTtnQkFDUCxFQUFFLEVBQUUsRUFBRTtnQkFDTixTQUFTLEVBQUUsU0FBUztnQkFDcEIsWUFBWSxFQUFFLElBQUEsMkJBQWUsRUFBQyxlQUFlLENBQUM7YUFDL0M7WUFDRCxVQUFVLEVBQUUsNEJBQTRCO1lBQ3hDLGFBQWEsRUFBRSwrQkFBK0I7U0FDL0MsQ0FBQyxDQUFDO1FBRUgsMEJBQTBCO1FBQzFCLE1BQU0sZUFBZSxHQUFHLE1BQU0sWUFBWSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUV4RSxNQUFNLGFBQWEsR0FBRyxJQUFBLGlDQUFpQixFQUFDLGlDQUFpQixDQUFDLEtBQUssRUFBRSxJQUFBLHlCQUFhLEVBQUMsU0FBUyxDQUFNLEVBQUUsZUFBZSxDQUFDLENBQUM7UUFDakgsTUFBTSxzQkFBc0IsR0FBMkI7WUFDckQsU0FBUyxFQUFFLHlDQUF5QztZQUNwRCxXQUFXLEVBQUUsWUFBWSxDQUFDLE9BQU8sQ0FBQyxPQUFPO1lBQ3pDLEVBQUUsRUFBRSxFQUFFO1lBQ04sU0FBUyxFQUFFLFNBQVM7WUFDcEIsWUFBWSxFQUFFLGFBQWEsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztZQUM5QyxlQUFlLEVBQUUsSUFBQSxpQkFBVSxFQUFDLGVBQWUsQ0FBQztTQUM3QyxDQUFDO1FBRUYsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFBLDJCQUFnQixFQUFDLEtBQUssSUFBSSxFQUFFO1lBQ2pELE9BQU8sTUFBTSxTQUFTLENBQUMsZUFBZSxDQUFDLHNCQUFzQixDQUFDLENBQUM7UUFDakUsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBRWxCLE1BQU0scUJBQXFCLEdBQUcsUUFBUSxDQUFDLHFCQUFxQixDQUFDO1FBRTdELElBQUkscUJBQXFCLEVBQUUsU0FBUyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ25ELE1BQU0sSUFBSSwrQkFBb0IsQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO1FBQzdELENBQUM7UUFFRCxNQUFNLG1CQUFtQixHQUFHLFFBQVEsQ0FBQyxxQkFBcUIsRUFBRSxNQUFNLENBQUM7UUFDbkUsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7WUFDekIsTUFBTSxJQUFJLCtCQUFvQixDQUFDLHNDQUFzQyxDQUFDLENBQUM7UUFDekUsQ0FBQztRQUVELE1BQU0sVUFBVSxHQUFHLElBQUEseUJBQWEsRUFBQyxtQkFBZ0MsQ0FBQyxDQUFDO1FBQ25FLE1BQU0sV0FBVyxHQUFHLElBQUEseUJBQWEsRUFBQyxxQkFBcUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUVuRSxPQUFPO1lBQ0wsTUFBTSxFQUFFLG1CQUFnQztZQUN4QyxTQUFTLEVBQUUsSUFBQSxpQ0FBaUIsRUFBQyxpQ0FBaUIsQ0FBQyxLQUFLLEVBQUUsVUFBZSxFQUFFLFdBQVcsQ0FBQztZQUNuRixvQkFBb0IsRUFBRSxxQkFBcUIsQ0FBQyxTQUFTO1NBQ3RELENBQUM7SUFDSixDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNmLElBQUksS0FBSyxZQUFZLCtCQUFvQixFQUFFLENBQUM7WUFDMUMsTUFBTSxLQUFLLENBQUM7UUFDZCxDQUFDO1FBQ0QsTUFBTSxJQUFJLCtCQUFvQixDQUFDLG9DQUFvQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzlFLENBQUM7QUFDSCxDQUFDIn0=
|
@@ -1,16 +1,18 @@
|
|
1
1
|
import type { Account, Chain, Transport, WalletClient } from 'viem';
|
2
|
+
import { HexString } from '../binary.js';
|
2
3
|
import { SupportedChainId } from '../chain.js';
|
3
|
-
import { EciesScheme } from '../encryption/encryption.js';
|
4
|
+
import { EciesScheme, SupportedFheType } from '../encryption/encryption.js';
|
4
5
|
import type { KmsClient } from '../kms/client.js';
|
5
|
-
import {
|
6
|
+
import type { BackoffConfig } from '../retry.js';
|
7
|
+
import { DecryptionAttestation } from './types.js';
|
6
8
|
/**
|
7
9
|
* Validates a handle format.
|
8
10
|
* @param handle - The handle to validate
|
9
11
|
* @throws {AttestedDecryptError} If the handle format is invalid
|
10
12
|
*/
|
11
|
-
export declare function validateHandle(handle:
|
13
|
+
export declare function validateHandle(handle: HexString): void;
|
12
14
|
/**
|
13
|
-
* Arguments for creating an attested
|
15
|
+
* Arguments for creating an attested decrypt request.
|
14
16
|
*/
|
15
17
|
export interface IncoLiteAttestedDecryptorArgs {
|
16
18
|
/** The wallet used to interact with the blockchain and sign the decrypt request */
|
@@ -21,20 +23,17 @@ export interface IncoLiteAttestedDecryptorArgs {
|
|
21
23
|
chainId: SupportedChainId;
|
22
24
|
}
|
23
25
|
/**
|
24
|
-
*
|
25
|
-
*
|
26
|
-
* @returns A function that can decrypt handles using attestation
|
27
|
-
* @throws {AttestedDecryptError} If the decryptor creation fails
|
26
|
+
* Decrypt multiple handles in a single attested request.
|
27
|
+
* Returns an array of attestations aligned with the response ordering.
|
28
28
|
*
|
29
|
-
* @
|
30
|
-
*
|
31
|
-
* @
|
32
|
-
* ```typescript
|
33
|
-
* const decryptor = await incoLiteAttestedDecryptor({
|
34
|
-
* walletClient,
|
35
|
-
* chainId: sepolia,
|
36
|
-
* });
|
37
|
-
* const { plaintext, covalidatorSignature } = await decryptor({ handle: '0x...' });
|
38
|
-
* ```
|
29
|
+
* @param args - The arguments for creating the attested decrypt function
|
30
|
+
* @returns A function that can decrypt handles and return an attestation
|
31
|
+
* @throws {AttestedDecryptError} If the creation fails
|
39
32
|
*/
|
40
|
-
export declare function
|
33
|
+
export declare function attestedDecrypt({ handles, backoffConfig, walletClient, chainId, kmsConnectRpcEndpointOrClient, }: {
|
34
|
+
handles: HexString[];
|
35
|
+
backoffConfig?: Partial<BackoffConfig> | undefined;
|
36
|
+
walletClient: WalletClient<Transport, Chain, Account>;
|
37
|
+
chainId: SupportedChainId;
|
38
|
+
kmsConnectRpcEndpointOrClient?: string | KmsClient;
|
39
|
+
}): Promise<Array<DecryptionAttestation<EciesScheme, SupportedFheType>>>;
|
@@ -1,7 +1,7 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
3
|
exports.validateHandle = validateHandle;
|
4
|
-
exports.
|
4
|
+
exports.attestedDecrypt = attestedDecrypt;
|
5
5
|
const viem_1 = require("viem");
|
6
6
|
const binary_js_1 = require("../binary.js");
|
7
7
|
const chain_js_1 = require("../chain.js");
|
@@ -24,70 +24,60 @@ function validateHandle(handle) {
|
|
24
24
|
}
|
25
25
|
}
|
26
26
|
/**
|
27
|
-
*
|
28
|
-
*
|
29
|
-
* @returns A function that can decrypt handles using attestation
|
30
|
-
* @throws {AttestedDecryptError} If the decryptor creation fails
|
27
|
+
* Decrypt multiple handles in a single attested request.
|
28
|
+
* Returns an array of attestations aligned with the response ordering.
|
31
29
|
*
|
32
|
-
* @
|
33
|
-
*
|
34
|
-
* @
|
35
|
-
* ```typescript
|
36
|
-
* const decryptor = await incoLiteAttestedDecryptor({
|
37
|
-
* walletClient,
|
38
|
-
* chainId: sepolia,
|
39
|
-
* });
|
40
|
-
* const { plaintext, covalidatorSignature } = await decryptor({ handle: '0x...' });
|
41
|
-
* ```
|
30
|
+
* @param args - The arguments for creating the attested decrypt function
|
31
|
+
* @returns A function that can decrypt handles and return an attestation
|
32
|
+
* @throws {AttestedDecryptError} If the creation fails
|
42
33
|
*/
|
43
|
-
function
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
const decryptionAttestation = response.decryptionAttestations[0];
|
74
|
-
if (decryptionAttestation.plaintext === undefined) {
|
75
|
-
throw new types_js_1.AttestedDecryptError('No plaintext in response');
|
34
|
+
async function attestedDecrypt({ handles, backoffConfig, walletClient, chainId, kmsConnectRpcEndpointOrClient, }) {
|
35
|
+
try {
|
36
|
+
handles.forEach(validateHandle);
|
37
|
+
const kmsClient = (0, client_js_1.getKmsClient)(kmsConnectRpcEndpointOrClient || (0, client_js_1.defaultCovalidatorGrpc)((0, chain_js_1.getSupportedChain)(chainId)));
|
38
|
+
const eip712Payload = (0, eip712_js_1.createEIP712Payload)({
|
39
|
+
chainId: BigInt(chainId),
|
40
|
+
primaryType: 'AttestedDecryptRequest',
|
41
|
+
primaryTypeFields: [{ name: 'handles', type: 'bytes32[]' }],
|
42
|
+
message: {
|
43
|
+
handles,
|
44
|
+
},
|
45
|
+
domainName: ATTESTED_DECRYPT_DOMAIN_NAME,
|
46
|
+
domainVersion: ATTESTED_DECRYPT_DOMAIN_VERSION,
|
47
|
+
});
|
48
|
+
const eip712Signature = await walletClient.signTypedData(eip712Payload);
|
49
|
+
const attestedDecryptRequest = {
|
50
|
+
$typeName: 'inco.kms.lite.v1.AttestedDecryptRequest',
|
51
|
+
userAddress: walletClient.account.address,
|
52
|
+
handles,
|
53
|
+
eip712Signature: (0, viem_1.hexToBytes)(eip712Signature),
|
54
|
+
};
|
55
|
+
const response = await (0, retry_js_1.retryWithBackoff)(async () => {
|
56
|
+
return await kmsClient.attestedDecrypt(attestedDecryptRequest);
|
57
|
+
}, backoffConfig);
|
58
|
+
if (!response.decryptionAttestations || response.decryptionAttestations.length === 0) {
|
59
|
+
throw new types_js_1.AttestedDecryptError('No decryption attestations in response');
|
60
|
+
}
|
61
|
+
const results = response.decryptionAttestations.map((att) => {
|
62
|
+
if (att.plaintext === undefined) {
|
63
|
+
throw new types_js_1.AttestedDecryptError('No plaintext in attestation');
|
76
64
|
}
|
77
|
-
const
|
78
|
-
const
|
65
|
+
const h = att.handle;
|
66
|
+
const handleType = (0, handle_js_1.getHandleType)(h);
|
67
|
+
const bigIntValue = (0, binary_js_1.bytesToBigInt)(att.plaintext);
|
79
68
|
return {
|
80
|
-
handle:
|
69
|
+
handle: h,
|
81
70
|
plaintext: (0, encryption_js_1.bigintToPlaintext)(encryption_js_1.encryptionSchemes.ecies, handleType, bigIntValue),
|
82
|
-
covalidatorSignature:
|
71
|
+
covalidatorSignature: att.signature,
|
83
72
|
};
|
73
|
+
});
|
74
|
+
return results;
|
75
|
+
}
|
76
|
+
catch (error) {
|
77
|
+
if (error instanceof types_js_1.AttestedDecryptError) {
|
78
|
+
throw error;
|
84
79
|
}
|
85
|
-
|
86
|
-
|
87
|
-
throw error;
|
88
|
-
}
|
89
|
-
throw new types_js_1.AttestedDecryptError('Failed to decrypt handle', error);
|
90
|
-
}
|
91
|
-
};
|
80
|
+
throw new types_js_1.AttestedDecryptError('Failed to decrypt handles', error);
|
81
|
+
}
|
92
82
|
}
|
93
|
-
//# sourceMappingURL=data:application/json;base64,
|
83
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0ZXN0ZWQtZGVjcnlwdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hdHRlc3RlZGRlY3J5cHQvYXR0ZXN0ZWQtZGVjcnlwdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQXNCQSx3Q0FJQztBQXNCRCwwQ0FvRUM7QUFuSEQsK0JBQWtDO0FBQ2xDLDRDQUF3RDtBQUN4RCwwQ0FBa0U7QUFDbEUsK0RBQWtIO0FBRWxILDRDQUE2QztBQUU3QyxnREFBd0U7QUFDeEUseURBQWdFO0FBRWhFLDBDQUErQztBQUMvQyx5Q0FBeUU7QUFFekUsTUFBTSw0QkFBNEIsR0FBRyxxQkFBcUIsQ0FBQztBQUMzRCxNQUFNLCtCQUErQixHQUFHLE9BQU8sQ0FBQztBQUVoRDs7OztHQUlHO0FBQ0gsU0FBZ0IsY0FBYyxDQUFDLE1BQWlCO0lBQzlDLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLE1BQU0sQ0FBQyxNQUFNLEtBQUssRUFBRSxFQUFFLENBQUM7UUFDckQsTUFBTSxJQUFJLCtCQUFvQixDQUFDLG9FQUFvRSxDQUFDLENBQUM7SUFDdkcsQ0FBQztBQUNILENBQUM7QUFjRDs7Ozs7OztHQU9HO0FBQ0ksS0FBSyxVQUFVLGVBQWUsQ0FBQyxFQUNwQyxPQUFPLEVBQ1AsYUFBYSxFQUNiLFlBQVksRUFDWixPQUFPLEVBQ1AsNkJBQTZCLEdBTzlCO0lBQ0MsSUFBSSxDQUFDO1FBQ0gsT0FBTyxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUNoQyxNQUFNLFNBQVMsR0FBRyxJQUFBLHdCQUFZLEVBQUMsNkJBQTZCLElBQUksSUFBQSxrQ0FBc0IsRUFBQyxJQUFBLDRCQUFpQixFQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUVwSCxNQUFNLGFBQWEsR0FBRyxJQUFBLCtCQUFtQixFQUFDO1lBQ3hDLE9BQU8sRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDO1lBQ3hCLFdBQVcsRUFBRSx3QkFBd0I7WUFDckMsaUJBQWlCLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxDQUFDO1lBQzNELE9BQU8sRUFBRTtnQkFDUCxPQUFPO2FBQ1I7WUFDRCxVQUFVLEVBQUUsNEJBQTRCO1lBQ3hDLGFBQWEsRUFBRSwrQkFBK0I7U0FDL0MsQ0FBQyxDQUFDO1FBRUgsTUFBTSxlQUFlLEdBQUcsTUFBTSxZQUFZLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRXhFLE1BQU0sc0JBQXNCLEdBQTJCO1lBQ3JELFNBQVMsRUFBRSx5Q0FBeUM7WUFDcEQsV0FBVyxFQUFFLFlBQVksQ0FBQyxPQUFPLENBQUMsT0FBTztZQUN6QyxPQUFPO1lBQ1AsZUFBZSxFQUFFLElBQUEsaUJBQVUsRUFBQyxlQUFlLENBQUM7U0FDN0MsQ0FBQztRQUVGLE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBQSwyQkFBZ0IsRUFBQyxLQUFLLElBQUksRUFBRTtZQUNqRCxPQUFPLE1BQU0sU0FBUyxDQUFDLGVBQWUsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBQ2pFLENBQUMsRUFBRSxhQUFhLENBQUMsQ0FBQztRQUVsQixJQUFJLENBQUMsUUFBUSxDQUFDLHNCQUFzQixJQUFJLFFBQVEsQ0FBQyxzQkFBc0IsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDckYsTUFBTSxJQUFJLCtCQUFvQixDQUFDLHdDQUF3QyxDQUFDLENBQUM7UUFDM0UsQ0FBQztRQUVELE1BQU0sT0FBTyxHQUFnRSxRQUFRLENBQUMsc0JBQXNCLENBQUMsR0FBRyxDQUM5RyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQ04sSUFBSSxHQUFHLENBQUMsU0FBUyxLQUFLLFNBQVMsRUFBRSxDQUFDO2dCQUNoQyxNQUFNLElBQUksK0JBQW9CLENBQUMsNkJBQTZCLENBQUMsQ0FBQztZQUNoRSxDQUFDO1lBQ0QsTUFBTSxDQUFDLEdBQUcsR0FBRyxDQUFDLE1BQW1CLENBQUM7WUFDbEMsTUFBTSxVQUFVLEdBQUcsSUFBQSx5QkFBYSxFQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3BDLE1BQU0sV0FBVyxHQUFHLElBQUEseUJBQWEsRUFBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDakQsT0FBTztnQkFDTCxNQUFNLEVBQUUsQ0FBQztnQkFDVCxTQUFTLEVBQUUsSUFBQSxpQ0FBaUIsRUFBQyxpQ0FBaUIsQ0FBQyxLQUFLLEVBQUUsVUFBOEIsRUFBRSxXQUFXLENBQUM7Z0JBQ2xHLG9CQUFvQixFQUFFLEdBQUcsQ0FBQyxTQUFTO2FBQ3BDLENBQUM7UUFDSixDQUFDLENBQ0YsQ0FBQztRQUVGLE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2YsSUFBSSxLQUFLLFlBQVksK0JBQW9CLEVBQUUsQ0FBQztZQUMxQyxNQUFNLEtBQUssQ0FBQztRQUNkLENBQUM7UUFDRCxNQUFNLElBQUksK0JBQW9CLENBQUMsMkJBQTJCLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDckUsQ0FBQztBQUNILENBQUMifQ==
|
@@ -14,6 +14,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
15
15
|
};
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
17
|
-
__exportStar(require("./attested-decrypt.js"), exports);
|
18
17
|
__exportStar(require("./types.js"), exports);
|
19
|
-
//# sourceMappingURL=data:application/json;base64,
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXR0ZXN0ZWRkZWNyeXB0L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSw2Q0FBMkIifQ==
|
@@ -1,4 +1,3 @@
|
|
1
|
-
import { type IncoLiteAttestedComputeArgs
|
1
|
+
import { type IncoLiteAttestedComputeArgs } from '../attestedcompute/attested-compute.js';
|
2
2
|
import { type AttestedComputeSupportedOps } from '../attestedcompute/types.js';
|
3
|
-
export { incoLiteAttestedCompute };
|
4
3
|
export type { AttestedComputeSupportedOps, IncoLiteAttestedComputeArgs };
|
@@ -1,6 +1,3 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
|
4
|
-
const attested_compute_js_1 = require("../attestedcompute/attested-compute.js");
|
5
|
-
Object.defineProperty(exports, "incoLiteAttestedCompute", { enumerable: true, get: function () { return attested_compute_js_1.incoLiteAttestedCompute; } });
|
6
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0ZXN0ZWQtY29tcHV0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saXRlL2F0dGVzdGVkLWNvbXB1dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsZ0ZBQW1IO0FBRzFHLHdHQUhrQyw2Q0FBdUIsT0FHbEMifQ==
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0ZXN0ZWQtY29tcHV0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saXRlL2F0dGVzdGVkLWNvbXB1dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiJ9
|
@@ -1,3 +1,2 @@
|
|
1
|
-
import { type IncoLiteAttestedDecryptorArgs
|
2
|
-
export { incoLiteAttestedDecryptor };
|
1
|
+
import { type IncoLiteAttestedDecryptorArgs } from '../attesteddecrypt/attested-decrypt.js';
|
3
2
|
export type { IncoLiteAttestedDecryptorArgs };
|
@@ -1,6 +1,3 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
|
4
|
-
const attested_decrypt_js_1 = require("../attesteddecrypt/attested-decrypt.js");
|
5
|
-
Object.defineProperty(exports, "incoLiteAttestedDecryptor", { enumerable: true, get: function () { return attested_decrypt_js_1.incoLiteAttestedDecryptor; } });
|
6
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0ZXN0ZWQtZGVjcnlwdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saXRlL2F0dGVzdGVkLWRlY3J5cHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsZ0ZBQXVIO0FBRTlHLDBHQUZvQywrQ0FBeUIsT0FFcEMifQ==
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0ZXN0ZWQtZGVjcnlwdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saXRlL2F0dGVzdGVkLWRlY3J5cHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiJ9
|
@@ -1,11 +1,14 @@
|
|
1
1
|
import { Account, Chain, Transport, WalletClient } from 'viem';
|
2
2
|
import { AllowanceVoucherWithSig } from '../advancedacl/types.js';
|
3
|
+
import { AttestedComputeOP } from '../attestedcompute/types.js';
|
4
|
+
import { DecryptionAttestation } from '../attesteddecrypt/index.js';
|
3
5
|
import { Address, HexString } from '../binary.js';
|
4
|
-
import { EciesScheme, PlaintextOf } from '../encryption/index.js';
|
6
|
+
import { EciesScheme, PlaintextOf, SupportedFheType } from '../encryption/index.js';
|
5
7
|
import { lightningDeployments } from '../generated/lightning.js';
|
6
8
|
import { localNodeLightningConfig } from '../generated/local-node.js';
|
7
9
|
import { LocalNodeEnv } from '../local/index.js';
|
8
10
|
import type { Reencryptor } from '../reencryption/index.js';
|
11
|
+
import { BackoffConfig } from '../retry.js';
|
9
12
|
import { Secp256k1Keypair } from './ecies.js';
|
10
13
|
type TupleToUnion<T> = T extends readonly unknown[] ? T[number] : never;
|
11
14
|
type Deployment = TupleToUnion<typeof lightningDeployments>;
|
@@ -163,7 +166,7 @@ export declare class Lightning<T extends DeploymentSlice = DeploymentSlice> {
|
|
163
166
|
* const decryptedValue = await reencryptor({handle: resultHandle});
|
164
167
|
* ```
|
165
168
|
*/
|
166
|
-
getSessionKeyRencryptor(allowanceVoucherWithSig: AllowanceVoucherWithSig, ephemeralKeypair: Secp256k1Keypair): Promise<(<T_1 extends
|
169
|
+
getSessionKeyRencryptor(allowanceVoucherWithSig: AllowanceVoucherWithSig, ephemeralKeypair: Secp256k1Keypair): Promise<(<T_1 extends SupportedFheType>({ handle }: import("../reencryption/types.js").ReencryptFnArgs<EciesScheme, T_1>) => Promise<PlaintextOf<1, 0 | 5 | 7 | 8>>)>;
|
167
170
|
/**
|
168
171
|
* Updates the active session nonce for the given wallet client.
|
169
172
|
*
|
@@ -174,6 +177,42 @@ export declare class Lightning<T extends DeploymentSlice = DeploymentSlice> {
|
|
174
177
|
* @returns The transaction hash of the updateActiveVouchersSessionNonce transaction
|
175
178
|
*/
|
176
179
|
updateActiveVouchersSessionNonce(walletClient: WalletClient<Transport, Chain, Account>): Promise<HexString>;
|
180
|
+
/**
|
181
|
+
* Get an attested decryptor for the given wallet client.
|
182
|
+
*
|
183
|
+
* @param walletClient - The wallet client used for signing the attested decrypt request
|
184
|
+
* @param handles - The handles to decrypt
|
185
|
+
* @param backoffConfig - The backoff configuration for the attested decrypt request
|
186
|
+
* @returns The decryption attestations
|
187
|
+
*
|
188
|
+
* @example
|
189
|
+
* ```typescript
|
190
|
+
* const response = await lightning.attestedDecrypt(walletClient, [handle1, handle2]);
|
191
|
+
* const { plaintext, covalidatorSignature } = response[0];
|
192
|
+
* ```
|
193
|
+
*/
|
194
|
+
attestedDecrypt(walletClient: WalletClient<Transport, Chain, Account>, handles: HexString[], backoffConfig?: Partial<BackoffConfig>): Promise<Array<DecryptionAttestation<EciesScheme, SupportedFheType>>>;
|
195
|
+
/**
|
196
|
+
* Get an attested compute for the given wallet client.
|
197
|
+
*
|
198
|
+
* @param walletClient - The wallet client used for signing the attested compute request
|
199
|
+
* @param lhsHandle - The handle to compute
|
200
|
+
* @param op - The operation to perform
|
201
|
+
* @param rhsPlaintext - The plaintext to compute with
|
202
|
+
* @param backoffConfig - The backoff configuration for the attested compute request
|
203
|
+
* @returns The decryption attestation
|
204
|
+
*
|
205
|
+
* @example
|
206
|
+
* ```typescript
|
207
|
+
* import { AttestedComputeSupportedOps } from '../lite/attested-compute.js';
|
208
|
+
* const lhsHandle = '0x...';
|
209
|
+
* const rhsPlaintext = 1337n;
|
210
|
+
* const op = AttestedComputeSupportedOps.Eq;
|
211
|
+
* const response = await lightning.attestedCompute(walletClient, lhsHandle, op, rhsPlaintext);
|
212
|
+
* const { plaintext, covalidatorSignature, handle } = response;
|
213
|
+
* ```
|
214
|
+
*/
|
215
|
+
attestedCompute(walletClient: WalletClient<Transport, Chain, Account>, lhsHandle: HexString, op: AttestedComputeOP, rhsPlaintext: bigint | boolean, backoffConfig?: Partial<BackoffConfig>): Promise<DecryptionAttestation<EciesScheme, SupportedFheType>>;
|
177
216
|
/**
|
178
217
|
* Get the GRPC endpoint for the covalidator that services this deployment.
|
179
218
|
*/
|
@@ -5,6 +5,8 @@ const fs = require("fs/promises");
|
|
5
5
|
const viem_1 = require("viem");
|
6
6
|
const chains_1 = require("viem/chains");
|
7
7
|
const session_key_js_1 = require("../advancedacl/session-key.js");
|
8
|
+
const attested_compute_js_1 = require("../attestedcompute/attested-compute.js");
|
9
|
+
const attested_decrypt_js_1 = require("../attesteddecrypt/attested-decrypt.js");
|
8
10
|
const binary_js_1 = require("../binary.js");
|
9
11
|
const index_js_1 = require("../encryption/index.js");
|
10
12
|
const lightning_js_1 = require("../generated/lightning.js");
|
@@ -254,6 +256,60 @@ class Lightning {
|
|
254
256
|
updateActiveVouchersSessionNonce(walletClient) {
|
255
257
|
return (0, session_key_js_1.updateActiveVouchersSessionNonce)(this.executorAddress, walletClient);
|
256
258
|
}
|
259
|
+
/**
|
260
|
+
* Get an attested decryptor for the given wallet client.
|
261
|
+
*
|
262
|
+
* @param walletClient - The wallet client used for signing the attested decrypt request
|
263
|
+
* @param handles - The handles to decrypt
|
264
|
+
* @param backoffConfig - The backoff configuration for the attested decrypt request
|
265
|
+
* @returns The decryption attestations
|
266
|
+
*
|
267
|
+
* @example
|
268
|
+
* ```typescript
|
269
|
+
* const response = await lightning.attestedDecrypt(walletClient, [handle1, handle2]);
|
270
|
+
* const { plaintext, covalidatorSignature } = response[0];
|
271
|
+
* ```
|
272
|
+
*/
|
273
|
+
attestedDecrypt(walletClient, handles, backoffConfig) {
|
274
|
+
return (0, attested_decrypt_js_1.attestedDecrypt)({
|
275
|
+
handles,
|
276
|
+
backoffConfig,
|
277
|
+
chainId: Number(this.chainId),
|
278
|
+
walletClient,
|
279
|
+
kmsConnectRpcEndpointOrClient: this.kmsClient,
|
280
|
+
});
|
281
|
+
}
|
282
|
+
/**
|
283
|
+
* Get an attested compute for the given wallet client.
|
284
|
+
*
|
285
|
+
* @param walletClient - The wallet client used for signing the attested compute request
|
286
|
+
* @param lhsHandle - The handle to compute
|
287
|
+
* @param op - The operation to perform
|
288
|
+
* @param rhsPlaintext - The plaintext to compute with
|
289
|
+
* @param backoffConfig - The backoff configuration for the attested compute request
|
290
|
+
* @returns The decryption attestation
|
291
|
+
*
|
292
|
+
* @example
|
293
|
+
* ```typescript
|
294
|
+
* import { AttestedComputeSupportedOps } from '../lite/attested-compute.js';
|
295
|
+
* const lhsHandle = '0x...';
|
296
|
+
* const rhsPlaintext = 1337n;
|
297
|
+
* const op = AttestedComputeSupportedOps.Eq;
|
298
|
+
* const response = await lightning.attestedCompute(walletClient, lhsHandle, op, rhsPlaintext);
|
299
|
+
* const { plaintext, covalidatorSignature, handle } = response;
|
300
|
+
* ```
|
301
|
+
*/
|
302
|
+
attestedCompute(walletClient, lhsHandle, op, rhsPlaintext, backoffConfig) {
|
303
|
+
return (0, attested_compute_js_1.attestedCompute)({
|
304
|
+
walletClient,
|
305
|
+
kmsConnectRpcEndpointOrClient: this.kmsClient,
|
306
|
+
chainId: Number(this.chainId),
|
307
|
+
lhsHandle,
|
308
|
+
op,
|
309
|
+
rhsPlaintext,
|
310
|
+
backoffConfig,
|
311
|
+
});
|
312
|
+
}
|
257
313
|
/**
|
258
314
|
* Get the GRPC endpoint for the covalidator that services this deployment.
|
259
315
|
*/
|
@@ -285,4 +341,4 @@ class Lightning {
|
|
285
341
|
}
|
286
342
|
}
|
287
343
|
exports.Lightning = Lightning;
|
288
|
-
//# sourceMappingURL=data:application/json;base64,
|
344
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlnaHRuaW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpdGUvbGlnaHRuaW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLGtDQUFrQztBQUNsQywrQkFBMkU7QUFDM0Usd0NBQTBDO0FBQzFDLGtFQUl1QztBQUV2QyxnRkFBeUU7QUFFekUsZ0ZBQXlFO0FBRXpFLDRDQUFnRTtBQUVoRSxxREFBa0g7QUFFbEgsNERBQWlFO0FBQ2pFLDhEQUFzRTtBQUN0RSw0Q0FBMkM7QUFDM0MsZ0RBQWdFO0FBR2hFLDRDQUFxQztBQUNyQyx5Q0FBcUg7QUFDckgsaURBQW1FO0FBd0JuRSxNQUFNLGFBQWEsR0FBb0IsU0FBUyxDQUFDO0FBdUJqRDs7O0dBR0c7QUFDSCxNQUFhLFNBQVM7SUFVRDtJQUNEO0lBVkYsZUFBZSxDQUFVO0lBQ3pCLGNBQWMsQ0FBWTtJQUMxQixPQUFPLENBQVM7SUFFZixTQUFTLENBQXlCO0lBQ2xDLGdCQUFnQixDQUFtQjtJQUNuQyxTQUFTLENBQTRCO0lBRXRELFlBQ21CLFdBQWMsRUFDZixjQUFzQjtRQURyQixnQkFBVyxHQUFYLFdBQVcsQ0FBRztRQUNmLG1CQUFjLEdBQWQsY0FBYyxDQUFRO1FBRXRDLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBQSx3QkFBWSxFQUFDLFdBQVcsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUNqRSxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUEsaUJBQUssRUFBQyxxQkFBUyxFQUFFLFdBQVcsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUNuRSxJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFM0MsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUEsbUNBQXdCLEdBQUUsQ0FBQztRQUNuRCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUEsMkJBQVksRUFBQyxjQUFjLENBQUMsQ0FBQztRQUM5QyxJQUFJLENBQUMsU0FB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
|