@inco/js 0.6.8 → 0.7.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 +8 -8
- package/dist/cjs/advancedacl/session-key.d.ts +39 -19
- package/dist/cjs/advancedacl/session-key.js +59 -108
- package/dist/cjs/attestedcompute/attested-compute.d.ts +6 -6
- package/dist/cjs/attestedcompute/attested-compute.js +5 -28
- package/dist/cjs/attesteddecrypt/attested-decrypt.d.ts +68 -16
- package/dist/cjs/attesteddecrypt/attested-decrypt.js +108 -66
- package/dist/cjs/attesteddecrypt/types.d.ts +8 -3
- package/dist/cjs/attesteddecrypt/types.js +1 -1
- package/dist/cjs/encryption/encryption.d.ts +8 -10
- package/dist/cjs/encryption/encryption.js +6 -6
- package/dist/cjs/generated/abis/add-two.d.ts +1 -1
- package/dist/cjs/generated/abis/add-two.js +1 -1
- package/dist/cjs/generated/abis/lightning-preview.d.ts +40 -0
- package/dist/cjs/generated/abis/lightning-preview.js +29 -1
- package/dist/cjs/generated/abis/lightning.d.ts +1 -1
- package/dist/cjs/generated/abis/lightning.js +1 -1
- package/dist/cjs/generated/abis/verifier.d.ts +126 -67
- package/dist/cjs/generated/abis/verifier.js +108 -54
- package/dist/cjs/generated/es/inco/covalidator/compute/v1/types_pb.d.ts +15 -1
- package/dist/cjs/generated/es/inco/covalidator/compute/v1/types_pb.js +1 -1
- package/dist/cjs/generated/es/inco/kms/lite/v1/kms_service_pb.d.ts +87 -132
- package/dist/cjs/generated/es/inco/kms/lite/v1/kms_service_pb.js +21 -27
- package/dist/cjs/generated/lightning.d.ts +40 -32
- package/dist/cjs/generated/lightning.js +43 -33
- package/dist/cjs/generated/local-node.d.ts +11 -11
- package/dist/cjs/generated/local-node.js +28 -12
- package/dist/cjs/kms/client.d.ts +8 -4
- package/dist/cjs/kms/client.js +9 -4
- package/dist/cjs/kms/quorumClient.d.ts +58 -0
- package/dist/cjs/kms/quorumClient.js +378 -0
- package/dist/cjs/kms/thresholdPromises.d.ts +7 -0
- package/dist/cjs/kms/thresholdPromises.js +52 -0
- package/dist/cjs/lite/deployments.d.ts +20 -2
- package/dist/cjs/lite/deployments.js +1 -1
- package/dist/cjs/lite/index.d.ts +1 -2
- package/dist/cjs/lite/index.js +1 -2
- package/dist/cjs/lite/lightning.d.ts +109 -77
- package/dist/cjs/lite/lightning.js +279 -112
- package/dist/cjs/local/local-node.d.ts +1 -2
- package/dist/cjs/local/local-node.js +2 -3
- package/dist/cjs/test/mocks.d.ts +15 -0
- package/dist/cjs/test/mocks.js +45 -0
- package/dist/cjs/viem.d.ts +1 -1
- package/dist/esm/advancedacl/session-key.d.ts +39 -19
- package/dist/esm/advancedacl/session-key.js +52 -100
- package/dist/esm/attestedcompute/attested-compute.d.ts +6 -6
- package/dist/esm/attestedcompute/attested-compute.js +6 -29
- package/dist/esm/attesteddecrypt/attested-decrypt.d.ts +68 -16
- package/dist/esm/attesteddecrypt/attested-decrypt.js +109 -68
- package/dist/esm/attesteddecrypt/types.d.ts +8 -3
- package/dist/esm/attesteddecrypt/types.js +1 -1
- package/dist/esm/encryption/encryption.d.ts +8 -10
- package/dist/esm/encryption/encryption.js +6 -6
- package/dist/esm/generated/abis/add-two.d.ts +1 -1
- package/dist/esm/generated/abis/add-two.js +1 -1
- package/dist/esm/generated/abis/lightning-preview.d.ts +40 -0
- package/dist/esm/generated/abis/lightning-preview.js +29 -1
- package/dist/esm/generated/abis/lightning.d.ts +1 -1
- package/dist/esm/generated/abis/lightning.js +1 -1
- package/dist/esm/generated/abis/verifier.d.ts +126 -67
- package/dist/esm/generated/abis/verifier.js +108 -54
- package/dist/esm/generated/es/inco/covalidator/compute/v1/types_pb.d.ts +15 -1
- package/dist/esm/generated/es/inco/covalidator/compute/v1/types_pb.js +1 -1
- package/dist/esm/generated/es/inco/kms/lite/v1/kms_service_pb.d.ts +87 -132
- package/dist/esm/generated/es/inco/kms/lite/v1/kms_service_pb.js +19 -25
- package/dist/esm/generated/lightning.d.ts +40 -32
- package/dist/esm/generated/lightning.js +43 -33
- package/dist/esm/generated/local-node.d.ts +11 -11
- package/dist/esm/generated/local-node.js +28 -12
- package/dist/esm/kms/client.d.ts +8 -4
- package/dist/esm/kms/client.js +8 -4
- package/dist/esm/kms/quorumClient.d.ts +58 -0
- package/dist/esm/kms/quorumClient.js +374 -0
- package/dist/esm/kms/thresholdPromises.d.ts +7 -0
- package/dist/esm/kms/thresholdPromises.js +49 -0
- package/dist/esm/lite/deployments.d.ts +20 -2
- package/dist/esm/lite/deployments.js +1 -1
- package/dist/esm/lite/index.d.ts +1 -2
- package/dist/esm/lite/index.js +1 -2
- package/dist/esm/lite/lightning.d.ts +109 -77
- package/dist/esm/lite/lightning.js +278 -111
- package/dist/esm/local/local-node.d.ts +1 -2
- package/dist/esm/local/local-node.js +2 -3
- package/dist/esm/test/mocks.d.ts +15 -0
- package/dist/esm/test/mocks.js +39 -0
- package/dist/esm/viem.d.ts +1 -1
- package/dist/types/advancedacl/session-key.d.ts +39 -19
- package/dist/types/attestedcompute/attested-compute.d.ts +6 -6
- package/dist/types/attesteddecrypt/attested-decrypt.d.ts +68 -16
- package/dist/types/attesteddecrypt/types.d.ts +8 -3
- package/dist/types/encryption/encryption.d.ts +8 -10
- package/dist/types/generated/abis/add-two.d.ts +1 -1
- package/dist/types/generated/abis/lightning-preview.d.ts +40 -0
- package/dist/types/generated/abis/lightning.d.ts +1 -1
- package/dist/types/generated/abis/verifier.d.ts +126 -67
- package/dist/types/generated/es/inco/covalidator/compute/v1/types_pb.d.ts +15 -1
- package/dist/types/generated/es/inco/kms/lite/v1/kms_service_pb.d.ts +87 -132
- package/dist/types/generated/lightning.d.ts +40 -32
- package/dist/types/generated/local-node.d.ts +11 -11
- package/dist/types/kms/client.d.ts +8 -4
- package/dist/types/kms/quorumClient.d.ts +58 -0
- package/dist/types/kms/thresholdPromises.d.ts +7 -0
- package/dist/types/lite/deployments.d.ts +20 -2
- package/dist/types/lite/index.d.ts +1 -2
- package/dist/types/lite/lightning.d.ts +109 -77
- package/dist/types/local/local-node.d.ts +1 -2
- package/dist/types/test/mocks.d.ts +15 -0
- package/dist/types/viem.d.ts +1 -1
- package/package.json +3 -3
- package/dist/cjs/attestedreveal/attested-reveal.d.ts +0 -21
- package/dist/cjs/attestedreveal/attested-reveal.js +0 -67
- package/dist/cjs/attestedreveal/index.d.ts +0 -1
- package/dist/cjs/attestedreveal/index.js +0 -18
- package/dist/cjs/attestedreveal/types.d.ts +0 -7
- package/dist/cjs/attestedreveal/types.js +0 -16
- package/dist/cjs/generated/es/cosmos_proto/cosmos_pb.d.ts +0 -174
- package/dist/cjs/generated/es/cosmos_proto/cosmos_pb.js +0 -118
- package/dist/cjs/generated/es/inco/fhe/v1/types_pb.d.ts +0 -419
- package/dist/cjs/generated/es/inco/fhe/v1/types_pb.js +0 -136
- package/dist/cjs/lite/reencrypt.d.ts +0 -23
- package/dist/cjs/lite/reencrypt.js +0 -131
- package/dist/esm/attestedreveal/attested-reveal.d.ts +0 -21
- package/dist/esm/attestedreveal/attested-reveal.js +0 -64
- package/dist/esm/attestedreveal/index.d.ts +0 -1
- package/dist/esm/attestedreveal/index.js +0 -2
- package/dist/esm/attestedreveal/types.d.ts +0 -7
- package/dist/esm/attestedreveal/types.js +0 -12
- package/dist/esm/generated/es/cosmos_proto/cosmos_pb.d.ts +0 -174
- package/dist/esm/generated/es/cosmos_proto/cosmos_pb.js +0 -115
- package/dist/esm/generated/es/inco/fhe/v1/types_pb.d.ts +0 -419
- package/dist/esm/generated/es/inco/fhe/v1/types_pb.js +0 -133
- package/dist/esm/lite/reencrypt.d.ts +0 -23
- package/dist/esm/lite/reencrypt.js +0 -122
- package/dist/types/attestedreveal/attested-reveal.d.ts +0 -21
- package/dist/types/attestedreveal/index.d.ts +0 -1
- package/dist/types/attestedreveal/types.d.ts +0 -7
- package/dist/types/generated/es/cosmos_proto/cosmos_pb.d.ts +0 -174
- package/dist/types/generated/es/inco/fhe/v1/types_pb.d.ts +0 -419
- package/dist/types/lite/reencrypt.d.ts +0 -23
|
@@ -1,29 +1,72 @@
|
|
|
1
1
|
import type { Account, Chain, Transport, WalletClient } from 'viem';
|
|
2
|
-
import { HexString } from '../binary.js';
|
|
3
|
-
import { SupportedChainId } from '../chain.js';
|
|
4
|
-
import { EciesScheme, SupportedFheType } from '../encryption/encryption.js';
|
|
5
|
-
import
|
|
2
|
+
import { type HexString } from '../binary.js';
|
|
3
|
+
import { type SupportedChainId } from '../chain.js';
|
|
4
|
+
import { type EciesScheme, type SupportedFheType } from '../encryption/encryption.js';
|
|
5
|
+
import { KmsQuorumClient } from '../kms/quorumClient.js';
|
|
6
|
+
import type { Secp256k1Keypair } from '../lite/ecies.js';
|
|
6
7
|
import type { BackoffConfig } from '../retry.js';
|
|
7
|
-
import { DecryptionAttestation } from './types.js';
|
|
8
|
+
import { type DecryptionAttestation, type EncryptedDecryptionAttestation } from './types.js';
|
|
8
9
|
export declare const ATTESTED_DECRYPT_DOMAIN_NAME = "IncoAttestedDecrypt";
|
|
9
|
-
export declare const ATTESTED_DECRYPT_DOMAIN_VERSION = "
|
|
10
|
-
/**
|
|
11
|
-
* Validates a handle format.
|
|
12
|
-
* @param handle - The handle to validate
|
|
13
|
-
* @throws {AttestedDecryptError} If the handle format is invalid
|
|
14
|
-
*/
|
|
15
|
-
export declare function validateHandle(handle: HexString): void;
|
|
10
|
+
export declare const ATTESTED_DECRYPT_DOMAIN_VERSION = "1";
|
|
16
11
|
/**
|
|
17
12
|
* Arguments for creating an attested decrypt request.
|
|
18
13
|
*/
|
|
19
14
|
export interface IncoLiteAttestedDecryptorArgs {
|
|
20
15
|
/** The wallet used to interact with the blockchain and sign the decrypt request */
|
|
21
16
|
walletClient: WalletClient<Transport, Chain, Account>;
|
|
22
|
-
/** The KMS
|
|
23
|
-
|
|
17
|
+
/** The KMS quorum client instance */
|
|
18
|
+
kmsQuorumClient: KmsQuorumClient;
|
|
24
19
|
/** The chain ID to use */
|
|
25
20
|
chainId: SupportedChainId;
|
|
26
21
|
}
|
|
22
|
+
/**
|
|
23
|
+
* Decrypt multiple handles in a single attested request without wallet authentication.
|
|
24
|
+
* Returns an array of attestations aligned with the response ordering.
|
|
25
|
+
*
|
|
26
|
+
* @param args - The arguments for creating the attested decrypt function
|
|
27
|
+
* @returns A function that can decrypt handles and return an attestation
|
|
28
|
+
* @throws {AttestedDecryptError} If the creation fails
|
|
29
|
+
*/
|
|
30
|
+
export declare function attestedDecrypt({ handles, backoffConfig, chainId, kmsQuorumClient, }: {
|
|
31
|
+
handles: HexString[];
|
|
32
|
+
backoffConfig?: Partial<BackoffConfig> | undefined;
|
|
33
|
+
chainId: SupportedChainId;
|
|
34
|
+
kmsQuorumClient: KmsQuorumClient;
|
|
35
|
+
}): Promise<Array<DecryptionAttestation<EciesScheme, SupportedFheType>>>;
|
|
36
|
+
/**
|
|
37
|
+
* Decrypt multiple handles in a single attested request.
|
|
38
|
+
* Returns an array of attestations aligned with the response ordering.
|
|
39
|
+
*
|
|
40
|
+
* @param args - The arguments for creating the attested decrypt function
|
|
41
|
+
* @returns A function that can decrypt handles and return an attestation
|
|
42
|
+
* @throws {AttestedDecryptError} If the creation fails
|
|
43
|
+
*/
|
|
44
|
+
export declare function attestedDecrypt({ handles, backoffConfig, walletClient, chainId, reencryptPubKey, reencryptKeypair, kmsQuorumClient, }: {
|
|
45
|
+
handles: HexString[];
|
|
46
|
+
backoffConfig?: Partial<BackoffConfig> | undefined;
|
|
47
|
+
walletClient: WalletClient<Transport, Chain, Account>;
|
|
48
|
+
chainId: SupportedChainId;
|
|
49
|
+
reencryptPubKey: Uint8Array;
|
|
50
|
+
reencryptKeypair: Secp256k1Keypair;
|
|
51
|
+
kmsQuorumClient: KmsQuorumClient;
|
|
52
|
+
}): Promise<Array<DecryptionAttestation<EciesScheme, SupportedFheType>>>;
|
|
53
|
+
/**
|
|
54
|
+
* Decrypt multiple handles in a single attested request.
|
|
55
|
+
* Returns an array of attestations aligned with the response ordering.
|
|
56
|
+
*
|
|
57
|
+
* @param args - The arguments for creating the attested decrypt function
|
|
58
|
+
* @returns A function that can decrypt handles and return an attestation
|
|
59
|
+
* @throws {AttestedDecryptError} If the creation fails
|
|
60
|
+
*/
|
|
61
|
+
export declare function attestedDecrypt({ handles, backoffConfig, walletClient, chainId, reencryptPubKey, kmsQuorumClient, }: {
|
|
62
|
+
handles: HexString[];
|
|
63
|
+
backoffConfig?: Partial<BackoffConfig> | undefined;
|
|
64
|
+
walletClient: WalletClient<Transport, Chain, Account>;
|
|
65
|
+
chainId: SupportedChainId;
|
|
66
|
+
reencryptPubKey: Uint8Array;
|
|
67
|
+
reencryptKeypair?: never;
|
|
68
|
+
kmsQuorumClient: KmsQuorumClient;
|
|
69
|
+
}): Promise<Array<EncryptedDecryptionAttestation<EciesScheme, SupportedFheType>>>;
|
|
27
70
|
/**
|
|
28
71
|
* Decrypt multiple handles in a single attested request.
|
|
29
72
|
* Returns an array of attestations aligned with the response ordering.
|
|
@@ -32,10 +75,19 @@ export interface IncoLiteAttestedDecryptorArgs {
|
|
|
32
75
|
* @returns A function that can decrypt handles and return an attestation
|
|
33
76
|
* @throws {AttestedDecryptError} If the creation fails
|
|
34
77
|
*/
|
|
35
|
-
export declare function attestedDecrypt({ handles, backoffConfig, walletClient, chainId,
|
|
78
|
+
export declare function attestedDecrypt({ handles, backoffConfig, walletClient, chainId, kmsQuorumClient, }: {
|
|
36
79
|
handles: HexString[];
|
|
37
80
|
backoffConfig?: Partial<BackoffConfig> | undefined;
|
|
38
81
|
walletClient: WalletClient<Transport, Chain, Account>;
|
|
39
82
|
chainId: SupportedChainId;
|
|
40
|
-
|
|
83
|
+
reencryptPubKey?: never;
|
|
84
|
+
reencryptKeypair?: never;
|
|
85
|
+
kmsQuorumClient: KmsQuorumClient;
|
|
41
86
|
}): Promise<Array<DecryptionAttestation<EciesScheme, SupportedFheType>>>;
|
|
87
|
+
export declare function decryptEncryptedAttestations(attestations: Array<DecryptionAttestation<EciesScheme, SupportedFheType> | EncryptedDecryptionAttestation<EciesScheme, SupportedFheType>>, reencryptKeypair: Secp256k1Keypair): Promise<Array<DecryptionAttestation<EciesScheme, SupportedFheType>>>;
|
|
88
|
+
/**
|
|
89
|
+
* Validates a handle format.
|
|
90
|
+
* @param handle - The handle to validate
|
|
91
|
+
* @throws {AttestedDecryptError} If the handle format is invalid
|
|
92
|
+
*/
|
|
93
|
+
export declare function validateHandle(handle: HexString): void;
|
|
@@ -1,32 +1,21 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ATTESTED_DECRYPT_DOMAIN_VERSION = exports.ATTESTED_DECRYPT_DOMAIN_NAME = void 0;
|
|
4
|
-
exports.validateHandle = validateHandle;
|
|
5
4
|
exports.attestedDecrypt = attestedDecrypt;
|
|
5
|
+
exports.decryptEncryptedAttestations = decryptEncryptedAttestations;
|
|
6
|
+
exports.validateHandle = validateHandle;
|
|
6
7
|
const protobuf_1 = require("@bufbuild/protobuf");
|
|
7
8
|
const viem_1 = require("viem");
|
|
8
9
|
const binary_js_1 = require("../binary.js");
|
|
9
|
-
const chain_js_1 = require("../chain.js");
|
|
10
10
|
const encryption_js_1 = require("../encryption/encryption.js");
|
|
11
11
|
const kms_service_pb_js_1 = require("../generated/es/inco/kms/lite/v1/kms_service_pb.js");
|
|
12
12
|
const types_pb_js_1 = require("../generated/es/inco/kms/lite/v1/types_pb.js");
|
|
13
13
|
const handle_js_1 = require("../handle.js");
|
|
14
|
-
const
|
|
14
|
+
const ecies_js_1 = require("../lite/ecies.js");
|
|
15
15
|
const eip712_js_1 = require("../reencryption/eip712.js");
|
|
16
|
-
const retry_js_1 = require("../retry.js");
|
|
17
16
|
const types_js_1 = require("./types.js");
|
|
18
17
|
exports.ATTESTED_DECRYPT_DOMAIN_NAME = 'IncoAttestedDecrypt';
|
|
19
|
-
exports.ATTESTED_DECRYPT_DOMAIN_VERSION = '
|
|
20
|
-
/**
|
|
21
|
-
* Validates a handle format.
|
|
22
|
-
* @param handle - The handle to validate
|
|
23
|
-
* @throws {AttestedDecryptError} If the handle format is invalid
|
|
24
|
-
*/
|
|
25
|
-
function validateHandle(handle) {
|
|
26
|
-
if (!handle.startsWith('0x') || handle.length !== 2 + 2 * 32) {
|
|
27
|
-
throw new types_js_1.AttestedDecryptError('Invalid handle format: must be a 32-byte hex string with 0x prefix');
|
|
28
|
-
}
|
|
29
|
-
}
|
|
18
|
+
exports.ATTESTED_DECRYPT_DOMAIN_VERSION = '1';
|
|
30
19
|
/**
|
|
31
20
|
* Decrypt multiple handles in a single attested request.
|
|
32
21
|
* Returns an array of attestations aligned with the response ordering.
|
|
@@ -35,61 +24,39 @@ function validateHandle(handle) {
|
|
|
35
24
|
* @returns A function that can decrypt handles and return an attestation
|
|
36
25
|
* @throws {AttestedDecryptError} If the creation fails
|
|
37
26
|
*/
|
|
38
|
-
async function attestedDecrypt({ handles, backoffConfig, walletClient, chainId,
|
|
27
|
+
async function attestedDecrypt({ handles, backoffConfig, walletClient, chainId, reencryptPubKey, reencryptKeypair, kmsQuorumClient, }) {
|
|
39
28
|
try {
|
|
40
29
|
handles.forEach(validateHandle);
|
|
41
|
-
const
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
chainId: BigInt(chainId),
|
|
46
|
-
primaryType: 'AttestedDecryptRequest',
|
|
47
|
-
primaryTypeFields: [{ name: 'handles', type: 'bytes32[]' }],
|
|
48
|
-
message: {
|
|
49
|
-
handles: handles,
|
|
50
|
-
},
|
|
51
|
-
domainName: exports.ATTESTED_DECRYPT_DOMAIN_NAME,
|
|
52
|
-
domainVersion: exports.ATTESTED_DECRYPT_DOMAIN_VERSION,
|
|
30
|
+
const eip712Payload = buildEip712Payload({
|
|
31
|
+
chainId,
|
|
32
|
+
handles,
|
|
33
|
+
...(reencryptPubKey !== undefined ? { reencryptPubKey } : {}),
|
|
53
34
|
});
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
},
|
|
64
|
-
},
|
|
35
|
+
let response;
|
|
36
|
+
if (walletClient) {
|
|
37
|
+
const eip712SignatureHex = await signEip712(walletClient, eip712Payload);
|
|
38
|
+
const handlesWithProofs = buildHandlesWithProofs(handles);
|
|
39
|
+
const attestedDecryptRequest = buildAttestedDecryptRequest({
|
|
40
|
+
userAddress: walletClient.account.address,
|
|
41
|
+
handlesWithProofs,
|
|
42
|
+
eip712Signature: (0, viem_1.hexToBytes)(eip712SignatureHex),
|
|
43
|
+
...(reencryptPubKey !== undefined ? { reencryptPubKey } : {}),
|
|
65
44
|
});
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
const response = await (0, retry_js_1.retryWithBackoff)(async () => {
|
|
73
|
-
return await kmsClient.attestedDecrypt(attestedDecryptRequest);
|
|
74
|
-
}, backoffConfig);
|
|
75
|
-
if (!response.decryptionAttestations ||
|
|
76
|
-
response.decryptionAttestations.length === 0) {
|
|
77
|
-
throw new types_js_1.AttestedDecryptError('No decryption attestations in response');
|
|
78
|
-
}
|
|
79
|
-
const results = response.decryptionAttestations.map((att) => {
|
|
80
|
-
if (att.plaintext === undefined) {
|
|
81
|
-
throw new types_js_1.AttestedDecryptError('No plaintext in attestation');
|
|
45
|
+
// Call quorum client which returns aggregated attestations directly
|
|
46
|
+
// The quorum client handles retry logic internally for each KMS client
|
|
47
|
+
response = await kmsQuorumClient.attestedDecrypt(attestedDecryptRequest, backoffConfig);
|
|
48
|
+
// If reencryptPubKey is provided with a keypair, decrypt the encrypted attestations
|
|
49
|
+
if (reencryptPubKey !== undefined && reencryptKeypair) {
|
|
50
|
+
response = await decryptEncryptedAttestations(response, reencryptKeypair);
|
|
82
51
|
}
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
const
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
});
|
|
92
|
-
return results;
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
const attestedRevealRequest = (0, protobuf_1.create)(kms_service_pb_js_1.AttestedRevealRequestSchema, {
|
|
55
|
+
handles: handles,
|
|
56
|
+
});
|
|
57
|
+
response = await kmsQuorumClient.attestedReveal(attestedRevealRequest, backoffConfig);
|
|
58
|
+
}
|
|
59
|
+
return response;
|
|
93
60
|
}
|
|
94
61
|
catch (error) {
|
|
95
62
|
if (error instanceof types_js_1.AttestedDecryptError) {
|
|
@@ -98,4 +65,79 @@ async function attestedDecrypt({ handles, backoffConfig, walletClient, chainId,
|
|
|
98
65
|
throw new types_js_1.AttestedDecryptError('Failed to decrypt handles', error);
|
|
99
66
|
}
|
|
100
67
|
}
|
|
101
|
-
|
|
68
|
+
// Small helpers to make the main flow readable
|
|
69
|
+
function buildEip712Payload(params) {
|
|
70
|
+
return (0, eip712_js_1.createEIP712Payload)({
|
|
71
|
+
chainId: BigInt(params.chainId),
|
|
72
|
+
primaryType: 'AttestedDecryptRequest',
|
|
73
|
+
primaryTypeFields: [
|
|
74
|
+
{ name: 'handles', type: 'bytes32[]' },
|
|
75
|
+
{ name: 'publicKey', type: 'bytes' },
|
|
76
|
+
],
|
|
77
|
+
message: {
|
|
78
|
+
handles: params.handles,
|
|
79
|
+
publicKey: (0, viem_1.bytesToHex)(params.reencryptPubKey ? params.reencryptPubKey : new Uint8Array()),
|
|
80
|
+
},
|
|
81
|
+
domainName: exports.ATTESTED_DECRYPT_DOMAIN_NAME,
|
|
82
|
+
domainVersion: exports.ATTESTED_DECRYPT_DOMAIN_VERSION,
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
async function signEip712(walletClient, eip712Payload) {
|
|
86
|
+
return await walletClient.signTypedData(eip712Payload);
|
|
87
|
+
}
|
|
88
|
+
function buildHandlesWithProofs(handles) {
|
|
89
|
+
return handles.map((handle) => {
|
|
90
|
+
return (0, protobuf_1.create)(types_pb_js_1.HandleWithProofSchema, {
|
|
91
|
+
handle: handle,
|
|
92
|
+
aclProof: {
|
|
93
|
+
proof: {
|
|
94
|
+
case: 'incoLiteBasicAclProof',
|
|
95
|
+
value: {},
|
|
96
|
+
},
|
|
97
|
+
},
|
|
98
|
+
});
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
function buildAttestedDecryptRequest(params) {
|
|
102
|
+
return (0, protobuf_1.create)(kms_service_pb_js_1.AttestedDecryptRequestSchema, {
|
|
103
|
+
userAddress: params.userAddress,
|
|
104
|
+
handlesWithProofs: params.handlesWithProofs,
|
|
105
|
+
eip712Signature: params.eip712Signature,
|
|
106
|
+
reencryptPubKey: params.reencryptPubKey
|
|
107
|
+
? params.reencryptPubKey
|
|
108
|
+
: new Uint8Array(),
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
async function decryptEncryptedAttestations(attestations, reencryptKeypair) {
|
|
112
|
+
return Promise.all(attestations.map(async (att) => {
|
|
113
|
+
// If already a plaintext attestation, return as-is
|
|
114
|
+
if ('plaintext' in att && att.plaintext !== undefined) {
|
|
115
|
+
return att;
|
|
116
|
+
}
|
|
117
|
+
// Otherwise, decrypt the encrypted attestation
|
|
118
|
+
if ('encryptedPlaintext' in att && att.encryptedPlaintext !== undefined) {
|
|
119
|
+
const encryptedAtt = att;
|
|
120
|
+
const ct = (0, viem_1.hexToBytes)(encryptedAtt.encryptedPlaintext.ciphertext.value);
|
|
121
|
+
const plaintextBytes = await (0, ecies_js_1.decrypt)(reencryptKeypair, ct);
|
|
122
|
+
const bigIntValue = (0, binary_js_1.bytesToBigInt)(plaintextBytes);
|
|
123
|
+
const handleType = (0, handle_js_1.getHandleType)(encryptedAtt.handle);
|
|
124
|
+
return {
|
|
125
|
+
handle: encryptedAtt.handle,
|
|
126
|
+
plaintext: (0, encryption_js_1.bigintToPlaintext)(encryption_js_1.encryptionSchemes.ecies, handleType, bigIntValue),
|
|
127
|
+
covalidatorSignatures: encryptedAtt.covalidatorSignatures,
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
throw new types_js_1.AttestedDecryptError('Attestation is neither plaintext nor encrypted');
|
|
131
|
+
}));
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Validates a handle format.
|
|
135
|
+
* @param handle - The handle to validate
|
|
136
|
+
* @throws {AttestedDecryptError} If the handle format is invalid
|
|
137
|
+
*/
|
|
138
|
+
function validateHandle(handle) {
|
|
139
|
+
if (!handle.startsWith('0x') || handle.length !== 2 + 2 * 32) {
|
|
140
|
+
throw new types_js_1.AttestedDecryptError('Invalid handle format: must be a 32-byte hex string with 0x prefix');
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0ZXN0ZWQtZGVjcnlwdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hdHRlc3RlZGRlY3J5cHQvYXR0ZXN0ZWQtZGVjcnlwdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUE2SkEsMENBaUZDO0FBbUVELG9FQTBDQztBQU9ELHdDQU1DO0FBeFdELGlEQUE0QztBQUU1QywrQkFBOEM7QUFDOUMsNENBQTZEO0FBRTdELCtEQUtxQztBQUNyQywwRkFLNEQ7QUFDNUQsOEVBR3NEO0FBQ3RELDRDQUE2QztBQUc3QywrQ0FBMkM7QUFDM0MseURBQWdFO0FBRWhFLHlDQUlvQjtBQUVQLFFBQUEsNEJBQTRCLEdBQUcscUJBQXFCLENBQUM7QUFDckQsUUFBQSwrQkFBK0IsR0FBRyxHQUFHLENBQUM7QUFtSG5EOzs7Ozs7O0dBT0c7QUFDSSxLQUFLLFVBQVUsZUFBZSxDQUFDLEVBQ3BDLE9BQU8sRUFDUCxhQUFhLEVBQ2IsWUFBWSxFQUNaLE9BQU8sRUFDUCxlQUFlLEVBQ2YsZ0JBQWdCLEVBQ2hCLGVBQWUsR0FTaEI7SUFNQyxJQUFJLENBQUM7UUFDSCxPQUFPLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBRWhDLE1BQU0sYUFBYSxHQUFHLGtCQUFrQixDQUFDO1lBQ3ZDLE9BQU87WUFDUCxPQUFPO1lBQ1AsR0FBRyxDQUFDLGVBQWUsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsZUFBZSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztTQUM5RCxDQUFDLENBQUM7UUFFSCxJQUFJLFFBR0gsQ0FBQztRQUVGLElBQUksWUFBWSxFQUFFLENBQUM7WUFDakIsTUFBTSxrQkFBa0IsR0FBRyxNQUFNLFVBQVUsQ0FBQyxZQUFZLEVBQUUsYUFBYSxDQUFDLENBQUM7WUFFekUsTUFBTSxpQkFBaUIsR0FBRyxzQkFBc0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUUxRCxNQUFNLHNCQUFzQixHQUFHLDJCQUEy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
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { HexString } from '../binary.js';
|
|
2
|
-
import { EncryptionScheme, PlaintextOf, SupportedFheType } from '../encryption/encryption.js';
|
|
1
|
+
import type { HexString } from '../binary.js';
|
|
2
|
+
import type { EncryptionScheme, EncryptResultOf, PlaintextOf, SupportedFheType } from '../encryption/encryption.js';
|
|
3
3
|
import type { BackoffConfig } from '../retry.js';
|
|
4
4
|
/**
|
|
5
5
|
* Custom error class for attested decrypt operations.
|
|
@@ -11,7 +11,12 @@ export declare class AttestedDecryptError extends Error {
|
|
|
11
11
|
export type DecryptionAttestation<S extends EncryptionScheme, T extends SupportedFheType> = {
|
|
12
12
|
handle: HexString;
|
|
13
13
|
plaintext: PlaintextOf<S, T>;
|
|
14
|
-
|
|
14
|
+
covalidatorSignatures: Uint8Array[];
|
|
15
|
+
};
|
|
16
|
+
export type EncryptedDecryptionAttestation<S extends EncryptionScheme, T extends SupportedFheType> = {
|
|
17
|
+
handle: HexString;
|
|
18
|
+
encryptedPlaintext: EncryptResultOf<S, T>;
|
|
19
|
+
covalidatorSignatures: Uint8Array[];
|
|
15
20
|
};
|
|
16
21
|
export type AttestedDecryptor<S extends EncryptionScheme> = <T extends SupportedFheType>(args: AttestedDecryptFnArgs<S, T>) => Promise<DecryptionAttestation<S, T>>;
|
|
17
22
|
export type AttestedDecryptFnArgs<S extends EncryptionScheme, T extends SupportedFheType> = {
|
|
@@ -13,4 +13,4 @@ class AttestedDecryptError extends Error {
|
|
|
13
13
|
}
|
|
14
14
|
}
|
|
15
15
|
exports.AttestedDecryptError = AttestedDecryptError;
|
|
16
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXR0ZXN0ZWRkZWNyeXB0L3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQVNBOztHQUVHO0FBQ0gsTUFBYSxvQkFBcUIsU0FBUSxLQUFLO0lBRzNCO0lBRmxCLFlBQ0UsT0FBZSxFQUNDLEtBQWU7UUFFL0IsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRkMsVUFBSyxHQUFMLEtBQUssQ0FBVTtRQUcvQixJQUFJLENBQUMsSUFBSSxHQUFHLHNCQUFzQixDQUFDO0lBQ3JDLENBQUM7Q0FDRjtBQVJELG9EQVFDIn0=
|
|
@@ -14,21 +14,19 @@ export type SupportedFheTypeName = typeof SupportedFheTypeName.Type;
|
|
|
14
14
|
export declare const SupportedFheType: Schema.SchemaClass<0 | 5 | 7 | 8, 0 | 5 | 7 | 8, never>;
|
|
15
15
|
export type SupportedFheType = typeof SupportedFheType.Type;
|
|
16
16
|
export declare const encryptionSchemes: {
|
|
17
|
-
readonly tfhe: 0;
|
|
18
17
|
readonly ecies: 1;
|
|
19
18
|
};
|
|
20
19
|
export declare function getEncryptionSchemeName(scheme: number): string;
|
|
21
20
|
export type EncryptionSchemes = typeof encryptionSchemes;
|
|
22
21
|
export type EciesScheme = EncryptionSchemes['ecies'];
|
|
23
|
-
export
|
|
24
|
-
export declare const EncryptionScheme: Schema.Literal<[0, 1]>;
|
|
22
|
+
export declare const EncryptionScheme: Schema.Literal<[1]>;
|
|
25
23
|
export type EncryptionScheme = typeof EncryptionScheme.Type;
|
|
26
24
|
type DistType<P, S extends EncryptionScheme, T extends SupportedFheType> = P extends any ? P & {
|
|
27
25
|
scheme: S;
|
|
28
26
|
type: T;
|
|
29
27
|
} : never;
|
|
30
28
|
export declare const Ciphertext: Schema.Struct<{
|
|
31
|
-
scheme: Schema.Literal<[
|
|
29
|
+
scheme: Schema.Literal<[1]>;
|
|
32
30
|
type: Schema.SchemaClass<0 | 5 | 7 | 8, 0 | 5 | 7 | 8, never>;
|
|
33
31
|
value: Schema.TemplateLiteral<`0x${string}`>;
|
|
34
32
|
}>;
|
|
@@ -36,7 +34,7 @@ export type Ciphertext = typeof Ciphertext.Type;
|
|
|
36
34
|
export type CiphertextOf<S extends EncryptionScheme, T extends SupportedFheType> = DistType<Ciphertext, S, T>;
|
|
37
35
|
export declare const CiphertextWithContext: Schema.Struct<{
|
|
38
36
|
ciphertext: Schema.Struct<{
|
|
39
|
-
scheme: Schema.Literal<[
|
|
37
|
+
scheme: Schema.Literal<[1]>;
|
|
40
38
|
type: Schema.SchemaClass<0 | 5 | 7 | 8, 0 | 5 | 7 | 8, never>;
|
|
41
39
|
value: Schema.TemplateLiteral<`0x${string}`>;
|
|
42
40
|
}>;
|
|
@@ -53,7 +51,7 @@ export type CiphertextWithContextOf<S extends EncryptionScheme, T extends Suppor
|
|
|
53
51
|
};
|
|
54
52
|
export declare const EncryptResult: Schema.Struct<{
|
|
55
53
|
ciphertext: Schema.Struct<{
|
|
56
|
-
scheme: Schema.Literal<[
|
|
54
|
+
scheme: Schema.Literal<[1]>;
|
|
57
55
|
type: Schema.SchemaClass<0 | 5 | 7 | 8, 0 | 5 | 7 | 8, never>;
|
|
58
56
|
value: Schema.TemplateLiteral<`0x${string}`>;
|
|
59
57
|
}>;
|
|
@@ -71,11 +69,11 @@ export type EncryptResultOf<S extends EncryptionScheme, T extends SupportedFheTy
|
|
|
71
69
|
ciphertext: CiphertextOf<S, T>;
|
|
72
70
|
};
|
|
73
71
|
export declare const Plaintext: Schema.Union<[Schema.Struct<{
|
|
74
|
-
scheme: Schema.Literal<[
|
|
72
|
+
scheme: Schema.Literal<[1]>;
|
|
75
73
|
type: Schema.Literal<[5, 7, 8]>;
|
|
76
74
|
value: typeof Schema.BigInt;
|
|
77
75
|
}>, Schema.Struct<{
|
|
78
|
-
scheme: Schema.Literal<[
|
|
76
|
+
scheme: Schema.Literal<[1]>;
|
|
79
77
|
type: Schema.Literal<[0]>;
|
|
80
78
|
value: typeof Schema.Boolean;
|
|
81
79
|
}>]>;
|
|
@@ -83,11 +81,11 @@ export type Plaintext = typeof Plaintext.Type;
|
|
|
83
81
|
export type PlaintextOf<S extends EncryptionScheme, T extends SupportedFheType> = DistType<Plaintext, S, T>;
|
|
84
82
|
export declare const PlaintextWithContext: Schema.Struct<{
|
|
85
83
|
plaintext: Schema.Union<[Schema.Struct<{
|
|
86
|
-
scheme: Schema.Literal<[
|
|
84
|
+
scheme: Schema.Literal<[1]>;
|
|
87
85
|
type: Schema.Literal<[5, 7, 8]>;
|
|
88
86
|
value: typeof Schema.BigInt;
|
|
89
87
|
}>, Schema.Struct<{
|
|
90
|
-
scheme: Schema.Literal<[
|
|
88
|
+
scheme: Schema.Literal<[1]>;
|
|
91
89
|
type: Schema.Literal<[0]>;
|
|
92
90
|
value: typeof Schema.Boolean;
|
|
93
91
|
}>]>;
|
|
@@ -14,6 +14,7 @@ const effect_1 = require("effect");
|
|
|
14
14
|
const viem_1 = require("viem");
|
|
15
15
|
const binary_js_1 = require("../binary.js");
|
|
16
16
|
const handle_js_1 = require("../handle.js");
|
|
17
|
+
// TODO: review need of euint64 and euint160 as supported encrypted data type cause Lib.sol only supports euint256 and ebool
|
|
17
18
|
exports.supportedFheTypes = {
|
|
18
19
|
euint64: handle_js_1.handleTypes.euint64,
|
|
19
20
|
euint160: handle_js_1.handleTypes.euint160,
|
|
@@ -25,20 +26,17 @@ exports.SupportedFheTypeName = effect_1.Schema.Literal(...supportedFheTypeNames)
|
|
|
25
26
|
// TODO: extend to all types
|
|
26
27
|
exports.SupportedFheType = effect_1.Schema.Literal(...Object.values(exports.supportedFheTypes));
|
|
27
28
|
exports.encryptionSchemes = {
|
|
28
|
-
tfhe: 0,
|
|
29
29
|
ecies: 1,
|
|
30
30
|
};
|
|
31
31
|
function getEncryptionSchemeName(scheme) {
|
|
32
32
|
switch (scheme) {
|
|
33
|
-
case exports.encryptionSchemes.tfhe:
|
|
34
|
-
return 'TFHE';
|
|
35
33
|
case exports.encryptionSchemes.ecies:
|
|
36
34
|
return 'ECIES';
|
|
37
35
|
default:
|
|
38
36
|
throw new Error(`Unknown encryption scheme: ${scheme}`);
|
|
39
37
|
}
|
|
40
38
|
}
|
|
41
|
-
exports.EncryptionScheme = effect_1.Schema.Literal(exports.encryptionSchemes.
|
|
39
|
+
exports.EncryptionScheme = effect_1.Schema.Literal(exports.encryptionSchemes.ecies);
|
|
42
40
|
exports.Ciphertext = effect_1.Schema.Struct({
|
|
43
41
|
scheme: exports.EncryptionScheme,
|
|
44
42
|
type: exports.SupportedFheType,
|
|
@@ -83,8 +81,10 @@ function bigintToPlaintext(scheme, type, bigPt) {
|
|
|
83
81
|
type,
|
|
84
82
|
value: bigPt !== 0n,
|
|
85
83
|
};
|
|
84
|
+
default:
|
|
85
|
+
console.warn(`bigintToPlaintext: Unsupported Encryption Scheme type ${type}`);
|
|
86
86
|
}
|
|
87
|
-
throw new Error(`Unsupported
|
|
87
|
+
throw new Error(`Unsupported Encryption Scheme type: ${type}`);
|
|
88
88
|
}
|
|
89
89
|
// This defines the schema we use for input encoding compatible with abi.decode
|
|
90
90
|
// on chain:
|
|
@@ -124,4 +124,4 @@ function bytes32ToPlaintext(plaintext, scheme, type) {
|
|
|
124
124
|
function bytesToPlaintext(plaintext, scheme, type) {
|
|
125
125
|
return bigintToPlaintext(scheme, type, BigInt((0, binary_js_1.bytesToBigInt)(plaintext)));
|
|
126
126
|
}
|
|
127
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
127
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5jcnlwdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbmNyeXB0aW9uL2VuY3J5cHRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBMERBLDBEQU9DO0FBa0dELDhDQXlCQztBQVlELHNEQU1DO0FBRUQsc0RBRUM7QUFFRCw4Q0FTQztBQUVELGdEQUVDO0FBRUQsNENBRUM7QUFFRCxnREFNQztBQUVELDRDQU1DO0FBclBELG1DQUFnQztBQUNoQywrQkFNYztBQUNkLDRDQU1zQjtBQUN0Qiw0Q0FBeUQ7QUFnQnpELDRIQUE0SDtBQUMvRyxRQUFBLGlCQUFpQixHQUFHO0lBQy9CLE9BQU8sRUFBRSx1QkFBVyxDQUFDLE9BQU87SUFDNUIsUUFBUSxFQUFFLHVCQUFXLENBQUMsUUFBUTtJQUM5QixRQUFRLEVBQUUsdUJBQVcsQ0FBQyxRQUFRO0lBQzlCLEtBQUssRUFBRSx1QkFBVyxDQUFDLEtBQUs7Q0FDaEIsQ0FBQztBQUVYLE1BQU0scUJBQXFCLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FDdkMseUJBQWlCLENBQ29CLENBQUM7QUFFM0IsUUFBQSxvQkFBb0IsR0FBRyxlQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcscUJBQXFCLENBQUMsQ0FBQztBQUk3RSw0QkFBNEI7QUFDZixRQUFBLGdCQUFnQixHQUFHLGVBQU0sQ0FBQyxPQUFPLENBQzVDLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyx5QkFBaUIsQ0FBQyxDQUNwQyxDQUFDO0FBSVcsUUFBQSxpQkFBaUIsR0FBRztJQUMvQixLQUFLLEVBQUUsQ0FBQztDQUNBLENBQUM7QUFFWCxTQUFnQix1QkFBdUIsQ0FBQyxNQUFjO0lBQ3BELFFBQVEsTUFBTSxFQUFFLENBQUM7UUFDZixLQUFLLHlCQUFpQixDQUFDLEtBQUs7WUFDMUIsT0FBTyxPQUFPLENBQUM7UUFDakI7WUFDRSxNQUFNLElBQUksS0FBSyxDQUFDLDhCQUE4QixNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQzVELENBQUM7QUFDSCxDQUFDO0FBTVksUUFBQSxnQkFBZ0IsR0FBRyxlQUFNLENBQUMsT0FBTyxDQUFDLHlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDO0FBVzNELFFBQUEsVUFBVSxHQUFHLGVBQU0sQ0FBQyxNQUFNLENBQUM7SUFDdEMsTUFBTSxFQUFFLHdCQUFnQjtJQUN4QixJQUFJLEVBQUUsd0JBQWdCO0lBQ3RCLEtBQUssRUFBRSxxQkFBUztDQUNqQixDQUFDLENBQUM7QUFTVSxRQUFBLHFCQUFxQixHQUFHLGVBQU0sQ0FBQyxNQUFNLENBQUM7SUFDakQsVUFBVSxFQUFFLGtCQUFVO0lBQ3RCLE9BQU8sRUFBRSx3QkFBWTtDQUN0QixDQUFDLENBQUM7QUFXVSxRQUFBLGFBQWEsR0FBRyxlQUFNLENBQUMsTUFBTSxDQUFDO0lBQ3pDLFVBQVUsRUFBRSxrQkFBVTtJQUN0QixPQUFPLEVBQUUsd0JBQVk7SUFDckIsU0FBUyxFQUFFLG1CQUFPO0lBQ2xCLE1BQU0sRUFBRSxtQkFBTztDQUNoQixDQUFDLENBQUM7QUFXVSxRQUFBLFNBQVMsR0FBRyxlQUFNLENBQUMsS0FBSyxDQUNuQyxlQUFNLENBQUMsTUFBTSxDQUFDO0lBQ1osTUFBTSxFQUFFLHdCQUFnQjtJQUN4QixJQUFJLEVBQUUsZUFBTSxDQUFDLE9BQU8sQ0FDbEIsdUJBQVcsQ0FBQyxPQUFPLEVBQ25CLHVCQUFXLENBQUMsUUFBUSxFQUNwQix1QkFBVyxDQUFDLFFBQVEsQ0FDckI7SUFDRCxLQUFLLEVBQUUsZUFBTSxDQUFDLE1BQU07Q0FDckIsQ0FBQyxFQUNGLGVBQU0sQ0FBQyxNQUFNLENBQUM7SUFDWixNQUFNLEVBQUUsd0JBQWdCO0lBQ3hCLElBQUksRUFBRSxlQUFNLENBQUMsT0FBTyxDQUFDLHVCQUFXLENBQUMsS0FBSyxDQUFDO0lBQ3ZDLEtBQUssRUFBRSxlQUFNLENBQUMsT0FBTztDQUN0QixDQUFDLENBQ0gsQ0FBQztBQVNXLFFBQUEsb0JBQW9CLEdBQUcsZUFBTSxDQUFDLE1BQU0sQ0FBQztJQUNoRCxTQUFTLEVBQUUsaUJBQVM7SUFDcEIsT0FBTyxFQUFFLHdCQUFZO0NBQ3RCLENBQUMsQ0FBQztBQVdILFNBQWdCLGlCQUFpQixDQUcvQixNQUFTLEVBQUUsSUFBTyxFQUFFLEtBQWE7SUFDakMsUUFBUSxJQUFJLEVBQUUsQ0FBQztRQUNiLEtBQUssdUJBQVcsQ0FBQyxPQUFPLENBQUM7UUFDekIsS0FBSyx1QkFBVyxDQUFDLFFBQVEsQ0FBQztRQUMxQixLQUFLLHVCQUFXLENBQUMsUUFBUTtZQUN2QixPQUFPO2dCQUNMLE1BQU07Z0JBQ04sSUFBSTtnQkFDSixLQUFLLEVBQUUsS0FBSzthQUNRLENBQUM7UUFDekIsS0FBSyx1QkFBVyxDQUFDLEtBQUs7WUFDcEIsT0FBTztnQkFDTCxNQUFNO2dCQUNOLElBQUk7Z0JBQ0osS0FBSyxFQUFFLEtBQUssS0FBSyxFQUFFO2FBQ0MsQ0FBQztRQUN6QjtZQUNFLE9BQU8sQ0FBQyxJQUFJLENBQ1YseURBQXlELElBQUksRUFBRSxDQUNoRSxDQUFDO0lBQ04sQ0FBQztJQUNELE1BQU0sSUFBSSxLQUFLLENBQUMsdUNBQXVDLElBQUksRUFBRSxDQUFDLENBQUM7QUFDakUsQ0FBQztBQUVELCtFQUErRTtBQUMvRSxZQUFZO0FBQ1osNkZBQTZGO0FBQzdGLGtFQUFrRTtBQUNsRSxpRUFBaUU7QUFDakUsTUFBTSxrQkFBa0IsR0FBRztJQUN6QixFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRTtJQUNuQyxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRTtDQUNKLENBQUM7QUFFcEMsU0FBZ0IscUJBQXFCLENBQUMsS0FBc0I7SUFJMUQsTUFBTSxDQUFDLE1BQU0sRUFBRSxVQUFVLENBQUMsR0FBRyxJQUFBLDBCQUFtQixFQUFDLGtCQUFrQixFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzVFLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLENBQUM7QUFDaEMsQ0FBQztBQUVELFNBQWdCLHFCQUFxQixDQUFDLE1BQVcsRUFBRSxVQUFlO0lBQ2hFLE9BQU8sSUFBQSwwQkFBbUIsRUFBQyxrQkFBa0IsRUFBRSxDQUFDLE1BQU0sRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDO0FBQ3ZFLENBQUM7QUFFRCxTQUFnQixpQkFBaUIsQ0FBQyxTQUFvQjtJQUNwRCxRQUFRLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN2QixLQUFLLHVCQUFXLENBQUMsT0FBTyxDQUFDO1FBQ3pCLEtBQUssdUJBQVcsQ0FBQyxRQUFRLENBQUM7UUFDMUIsS0FBSyx1QkFBVyxDQUFDLFFBQVE7WUFDdkIsT0FBTyxTQUFTLENBQUMsS0FBSyxDQUFDO1FBQ3pCLEtBQUssdUJBQVcsQ0FBQyxLQUFLO1lBQ3BCLE9BQU8sU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDckMsQ0FBQztBQUNILENBQUM7QUFFRCxTQUFnQixrQkFBa0IsQ0FBQyxTQUFvQjtJQUNyRCxPQUFPLElBQUEsMkJBQWUsRUFBQyxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0FBQ3ZELENBQUM7QUFFRCxTQUFnQixnQkFBZ0IsQ0FBQyxTQUFvQjtJQUNuRCxPQUFPLElBQUEseUJBQWEsRUFBQyxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0FBQ3JELENBQUM7QUFFRCxTQUFnQixrQkFBa0IsQ0FDaEMsU0FBa0IsRUFDbEIsTUFBd0IsRUFDeEIsSUFBc0I7SUFFdEIsT0FBTyxpQkFBaUIsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0FBQzVELENBQUM7QUFFRCxTQUFnQixnQkFBZ0IsQ0FDOUIsU0FBcUIsRUFDckIsTUFBd0IsRUFDeEIsSUFBc0I7SUFFdEIsT0FBTyxpQkFBaUIsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFBLHlCQUFhLEVBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzNFLENBQUMifQ==
|
|
@@ -44,7 +44,7 @@ export declare const addTwoAbi: readonly [{
|
|
|
44
44
|
readonly internalType: "bytes";
|
|
45
45
|
readonly type: "bytes";
|
|
46
46
|
}];
|
|
47
|
-
readonly name: "
|
|
47
|
+
readonly name: "addTwoEoa";
|
|
48
48
|
readonly outputs: readonly [{
|
|
49
49
|
readonly name: "result";
|
|
50
50
|
readonly internalType: "euint256";
|
|
@@ -34,7 +34,7 @@ exports.addTwoAbi = [
|
|
|
34
34
|
{
|
|
35
35
|
type: 'function',
|
|
36
36
|
inputs: [{ name: 'uint256EInput', internalType: 'bytes', type: 'bytes' }],
|
|
37
|
-
name: '
|
|
37
|
+
name: 'addTwoEoa',
|
|
38
38
|
outputs: [
|
|
39
39
|
{ name: 'result', internalType: 'euint256', type: 'bytes32' },
|
|
40
40
|
{ name: 'resultRevealed', internalType: 'euint256', type: 'bytes32' },
|
|
@@ -1135,6 +1135,26 @@ export declare const iIncoLightningPreviewAbi: readonly [{
|
|
|
1135
1135
|
readonly type: "bytes32";
|
|
1136
1136
|
}];
|
|
1137
1137
|
readonly stateMutability: "nonpayable";
|
|
1138
|
+
}, {
|
|
1139
|
+
readonly type: "function";
|
|
1140
|
+
readonly inputs: readonly [];
|
|
1141
|
+
readonly name: "majorVersion";
|
|
1142
|
+
readonly outputs: readonly [{
|
|
1143
|
+
readonly name: "";
|
|
1144
|
+
readonly internalType: "uint8";
|
|
1145
|
+
readonly type: "uint8";
|
|
1146
|
+
}];
|
|
1147
|
+
readonly stateMutability: "view";
|
|
1148
|
+
}, {
|
|
1149
|
+
readonly type: "function";
|
|
1150
|
+
readonly inputs: readonly [];
|
|
1151
|
+
readonly name: "minorVersion";
|
|
1152
|
+
readonly outputs: readonly [{
|
|
1153
|
+
readonly name: "";
|
|
1154
|
+
readonly internalType: "uint8";
|
|
1155
|
+
readonly type: "uint8";
|
|
1156
|
+
}];
|
|
1157
|
+
readonly stateMutability: "view";
|
|
1138
1158
|
}, {
|
|
1139
1159
|
readonly type: "function";
|
|
1140
1160
|
readonly inputs: readonly [{
|
|
@@ -1229,6 +1249,16 @@ export declare const iIncoLightningPreviewAbi: readonly [{
|
|
|
1229
1249
|
readonly type: "bytes32";
|
|
1230
1250
|
}];
|
|
1231
1251
|
readonly stateMutability: "payable";
|
|
1252
|
+
}, {
|
|
1253
|
+
readonly type: "function";
|
|
1254
|
+
readonly inputs: readonly [];
|
|
1255
|
+
readonly name: "patchVersion";
|
|
1256
|
+
readonly outputs: readonly [{
|
|
1257
|
+
readonly name: "";
|
|
1258
|
+
readonly internalType: "uint8";
|
|
1259
|
+
readonly type: "uint8";
|
|
1260
|
+
}];
|
|
1261
|
+
readonly stateMutability: "view";
|
|
1232
1262
|
}, {
|
|
1233
1263
|
readonly type: "function";
|
|
1234
1264
|
readonly inputs: readonly [{
|
|
@@ -1247,6 +1277,16 @@ export declare const iIncoLightningPreviewAbi: readonly [{
|
|
|
1247
1277
|
readonly type: "bool";
|
|
1248
1278
|
}];
|
|
1249
1279
|
readonly stateMutability: "view";
|
|
1280
|
+
}, {
|
|
1281
|
+
readonly type: "function";
|
|
1282
|
+
readonly inputs: readonly [];
|
|
1283
|
+
readonly name: "salt";
|
|
1284
|
+
readonly outputs: readonly [{
|
|
1285
|
+
readonly name: "";
|
|
1286
|
+
readonly internalType: "bytes32";
|
|
1287
|
+
readonly type: "bytes32";
|
|
1288
|
+
}];
|
|
1289
|
+
readonly stateMutability: "view";
|
|
1250
1290
|
}];
|
|
1251
1291
|
export declare const voucherEip712CheckerAbi: readonly [{
|
|
1252
1292
|
readonly type: "function";
|