@inco/js 0.6.8 → 0.6.9
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/advancedacl/session-key.d.ts +8 -1
- package/dist/cjs/advancedacl/session-key.js +55 -21
- package/dist/cjs/attestedcompute/attested-compute.js +11 -4
- package/dist/cjs/attesteddecrypt/attested-decrypt.d.ts +38 -1
- package/dist/cjs/attesteddecrypt/attested-decrypt.js +49 -6
- package/dist/cjs/attesteddecrypt/types.d.ts +6 -1
- package/dist/cjs/attesteddecrypt/types.js +1 -1
- package/dist/cjs/attestedreveal/attested-reveal.js +9 -7
- 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/kms/lite/v1/kms_service_pb.d.ts +76 -129
- package/dist/cjs/generated/es/inco/kms/lite/v1/kms_service_pb.js +20 -25
- package/dist/cjs/generated/lightning.d.ts +0 -32
- package/dist/cjs/generated/lightning.js +1 -33
- package/dist/cjs/generated/local-node.d.ts +1 -5
- package/dist/cjs/generated/local-node.js +2 -6
- 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 -1
- package/dist/cjs/lite/index.js +1 -1
- package/dist/cjs/lite/lightning.d.ts +24 -12
- package/dist/cjs/lite/lightning.js +62 -26
- package/dist/cjs/lite/reencrypt.d.ts +5 -7
- package/dist/cjs/lite/reencrypt.js +68 -58
- package/dist/cjs/test/mocks.d.ts +12 -0
- package/dist/cjs/test/mocks.js +27 -0
- package/dist/cjs/viem.d.ts +1 -1
- package/dist/esm/advancedacl/session-key.d.ts +8 -1
- package/dist/esm/advancedacl/session-key.js +58 -24
- package/dist/esm/attestedcompute/attested-compute.js +11 -4
- package/dist/esm/attesteddecrypt/attested-decrypt.d.ts +38 -1
- package/dist/esm/attesteddecrypt/attested-decrypt.js +51 -8
- package/dist/esm/attesteddecrypt/types.d.ts +6 -1
- package/dist/esm/attesteddecrypt/types.js +1 -1
- package/dist/esm/attestedreveal/attested-reveal.js +9 -7
- 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/kms/lite/v1/kms_service_pb.d.ts +76 -129
- package/dist/esm/generated/es/inco/kms/lite/v1/kms_service_pb.js +19 -24
- package/dist/esm/generated/lightning.d.ts +0 -32
- package/dist/esm/generated/lightning.js +1 -33
- package/dist/esm/generated/local-node.d.ts +1 -5
- package/dist/esm/generated/local-node.js +2 -6
- 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 -1
- package/dist/esm/lite/index.js +1 -1
- package/dist/esm/lite/lightning.d.ts +24 -12
- package/dist/esm/lite/lightning.js +59 -23
- package/dist/esm/lite/reencrypt.d.ts +5 -7
- package/dist/esm/lite/reencrypt.js +67 -58
- package/dist/esm/test/mocks.d.ts +12 -0
- package/dist/esm/test/mocks.js +23 -0
- package/dist/esm/viem.d.ts +1 -1
- package/dist/types/advancedacl/session-key.d.ts +8 -1
- package/dist/types/attesteddecrypt/attested-decrypt.d.ts +38 -1
- package/dist/types/attesteddecrypt/types.d.ts +6 -1
- 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/kms/lite/v1/kms_service_pb.d.ts +76 -129
- package/dist/types/generated/lightning.d.ts +0 -32
- package/dist/types/generated/local-node.d.ts +1 -5
- package/dist/types/lite/deployments.d.ts +20 -2
- package/dist/types/lite/index.d.ts +1 -1
- package/dist/types/lite/lightning.d.ts +24 -12
- package/dist/types/lite/reencrypt.d.ts +5 -7
- package/dist/types/test/mocks.d.ts +12 -0
- package/dist/types/viem.d.ts +1 -1
- package/package.json +2 -2
|
@@ -7,9 +7,12 @@ const chains_1 = require("viem/chains");
|
|
|
7
7
|
const session_key_js_1 = require("../advancedacl/session-key.js");
|
|
8
8
|
const attested_compute_js_1 = require("../attestedcompute/attested-compute.js");
|
|
9
9
|
const attested_decrypt_js_1 = require("../attesteddecrypt/attested-decrypt.js");
|
|
10
|
+
const attested_reveal_js_1 = require("../attestedreveal/attested-reveal.js");
|
|
10
11
|
const binary_js_1 = require("../binary.js");
|
|
11
12
|
const index_js_1 = require("../encryption/index.js");
|
|
12
|
-
const lightning_js_1 = require("../generated/lightning.js");
|
|
13
|
+
const lightning_js_1 = require("../generated/abis/lightning.js");
|
|
14
|
+
const verifier_js_1 = require("../generated/abis/verifier.js");
|
|
15
|
+
const lightning_js_2 = require("../generated/lightning.js");
|
|
13
16
|
const local_node_js_1 = require("../generated/local-node.js");
|
|
14
17
|
const handle_js_1 = require("../handle.js");
|
|
15
18
|
const index_js_2 = require("../local/index.js");
|
|
@@ -25,29 +28,22 @@ class Lightning {
|
|
|
25
28
|
_deployment;
|
|
26
29
|
covalidatorUrl;
|
|
27
30
|
executorAddress;
|
|
28
|
-
eciesPublicKey;
|
|
29
31
|
chainId;
|
|
30
|
-
encryptor;
|
|
31
32
|
ephemeralKeypair;
|
|
32
33
|
kmsClient;
|
|
33
34
|
constructor(_deployment, covalidatorUrl) {
|
|
34
35
|
this._deployment = _deployment;
|
|
35
36
|
this.covalidatorUrl = covalidatorUrl;
|
|
36
37
|
this.executorAddress = (0, binary_js_1.parseAddress)(_deployment.executorAddress);
|
|
37
|
-
this.eciesPublicKey = (0, schema_js_1.parse)(binary_js_1.HexString, _deployment.eciesPublicKey);
|
|
38
38
|
this.chainId = BigInt(_deployment.chainId);
|
|
39
39
|
this.ephemeralKeypair = (0, ecies_js_1.generateSecp256k1Keypair)();
|
|
40
40
|
this.kmsClient = (0, reencrypt_js_1.getKmsClient)(covalidatorUrl);
|
|
41
|
-
this.encryptor = (0, ecies_js_1.getEciesEncryptor)({
|
|
42
|
-
pubKeyA: (0, ecies_js_1.decodeSecp256k1PublicKey)((0, viem_1.hexToBytes)((0, schema_js_1.parse)(binary_js_1.HexString, _deployment.eciesPublicKey))),
|
|
43
|
-
privKeyB: this.ephemeralKeypair,
|
|
44
|
-
});
|
|
45
41
|
}
|
|
46
42
|
/**
|
|
47
43
|
* Get a Lightning instance bound to the latest Lightning deployment for the Base Sepolia testnet.
|
|
48
44
|
*/
|
|
49
|
-
static baseSepoliaTestnet() {
|
|
50
|
-
return Lightning.latest('testnet', chains_1.baseSepolia.id);
|
|
45
|
+
static async baseSepoliaTestnet() {
|
|
46
|
+
return await Lightning.latest('testnet', chains_1.baseSepolia.id);
|
|
51
47
|
}
|
|
52
48
|
/**
|
|
53
49
|
* Get a Lightning instance bound to our canonical Anvil-based test node and test Covalidator node
|
|
@@ -64,15 +60,15 @@ class Lightning {
|
|
|
64
60
|
* corresponding Pepper.
|
|
65
61
|
*
|
|
66
62
|
*/
|
|
67
|
-
static localNode(env) {
|
|
63
|
+
static async localNode(env) {
|
|
68
64
|
if (!env) {
|
|
69
|
-
return Lightning.custom(local_node_js_1.localNodeLightningConfig[DefaultPepper]);
|
|
65
|
+
return await Lightning.custom(local_node_js_1.localNodeLightningConfig[DefaultPepper]);
|
|
70
66
|
}
|
|
71
67
|
if (typeof env === 'string') {
|
|
72
|
-
return Lightning.custom(local_node_js_1.localNodeLightningConfig[env]);
|
|
68
|
+
return await Lightning.custom(local_node_js_1.localNodeLightningConfig[env]);
|
|
73
69
|
}
|
|
74
70
|
const conf = local_node_js_1.localNodeLightningConfig[DefaultPepper];
|
|
75
|
-
return Lightning.custom({
|
|
71
|
+
return await Lightning.custom({
|
|
76
72
|
// We assume that we always run a local node as the default anvil node
|
|
77
73
|
chainId: env.COVALIDATOR_HOST_CHAIN_ID
|
|
78
74
|
? Number(env.COVALIDATOR_HOST_CHAIN_ID)
|
|
@@ -83,7 +79,6 @@ class Lightning {
|
|
|
83
79
|
'http://localhost:8545',
|
|
84
80
|
// These variables vary per environment
|
|
85
81
|
executorAddress: env.EXECUTOR_ADDRESS,
|
|
86
|
-
eciesPublicKey: env.ECIES_PUBLIC_KEY,
|
|
87
82
|
senderPrivateKey: env.SENDER_PRIVATE_KEY,
|
|
88
83
|
});
|
|
89
84
|
}
|
|
@@ -95,17 +90,17 @@ class Lightning {
|
|
|
95
90
|
static async localNodeFromEnv(filePath) {
|
|
96
91
|
const buf = filePath ? await fs.readFile(filePath) : undefined;
|
|
97
92
|
const env = (0, index_js_2.parseLocalEnv)(buf);
|
|
98
|
-
return Lightning.localNode(env);
|
|
93
|
+
return await Lightning.localNode(env);
|
|
99
94
|
}
|
|
100
95
|
/**
|
|
101
96
|
* Get a Lightning deployment by name or executor address on a particular chain.
|
|
102
97
|
*
|
|
103
98
|
* @param id this is an object containing either the pair of name and chainId or the executorAddress and chainId
|
|
104
99
|
*/
|
|
105
|
-
static at(id) {
|
|
100
|
+
static async at(id) {
|
|
106
101
|
const deployment = this.isIdByName(id)
|
|
107
|
-
?
|
|
108
|
-
:
|
|
102
|
+
? lightning_js_2.lightningDeployments.find((d) => d.name === id.name && d.chainId === id.chainId)
|
|
103
|
+
: lightning_js_2.lightningDeployments.find((d) => d.executorAddress === id.executorAddress &&
|
|
109
104
|
d.chainId === id.chainId);
|
|
110
105
|
if (!deployment) {
|
|
111
106
|
throw new Error(`No deployment found for ${JSON.stringify(id)}`);
|
|
@@ -118,9 +113,23 @@ class Lightning {
|
|
|
118
113
|
* @param config this is an object containing the executorAddress, eciesPublicKey, chainId and covalidatorUrl.
|
|
119
114
|
* additional fields past will be made available as part of the `deployment` property.
|
|
120
115
|
*/
|
|
121
|
-
static custom(config) {
|
|
116
|
+
static async custom(config) {
|
|
122
117
|
return new Lightning(config, config.covalidatorUrl);
|
|
123
118
|
}
|
|
119
|
+
static async getEciesPublicKey(client, executorAddress) {
|
|
120
|
+
const incoLightningContract = (0, viem_1.getContract)({
|
|
121
|
+
abi: lightning_js_1.incoLightningAbi,
|
|
122
|
+
address: executorAddress,
|
|
123
|
+
client,
|
|
124
|
+
});
|
|
125
|
+
const incoVerifierAddress = await incoLightningContract.read.incoVerifier();
|
|
126
|
+
const incoVerifier = (0, viem_1.getContract)({
|
|
127
|
+
abi: verifier_js_1.incoVerifierAbi,
|
|
128
|
+
address: incoVerifierAddress,
|
|
129
|
+
client,
|
|
130
|
+
});
|
|
131
|
+
return await incoVerifier.read.eciesPubkey();
|
|
132
|
+
}
|
|
124
133
|
/**
|
|
125
134
|
* Get the latest deployment for a given pepper, which usually denotes a family of deployments distinct from their
|
|
126
135
|
* version such as 'devnet', 'testnet', 'mainnet', etc.
|
|
@@ -130,7 +139,7 @@ class Lightning {
|
|
|
130
139
|
*/
|
|
131
140
|
static latestDeployment(pepper, chainId) {
|
|
132
141
|
// Deployments are sorted so we are guaranteed to get the latest first
|
|
133
|
-
const latestByPepper =
|
|
142
|
+
const latestByPepper = lightning_js_2.lightningDeployments.find((d) => d.pepper === pepper && d.chainId === chainId);
|
|
134
143
|
if (!latestByPepper) {
|
|
135
144
|
// This should not actually happen provided this file compiles since we are extracting the available peppers
|
|
136
145
|
// from the const itself
|
|
@@ -146,8 +155,8 @@ class Lightning {
|
|
|
146
155
|
* @param pepper the pepper to use to filter the deployments
|
|
147
156
|
* @param chainId the chainId to use to filter the deployments
|
|
148
157
|
*/
|
|
149
|
-
static latest(pepper, chainId) {
|
|
150
|
-
return Lightning.at(Lightning.latestDeployment(pepper, chainId));
|
|
158
|
+
static async latest(pepper, chainId) {
|
|
159
|
+
return await Lightning.at(Lightning.latestDeployment(pepper, chainId));
|
|
151
160
|
}
|
|
152
161
|
/*
|
|
153
162
|
* Get the latest deployment for a given pepper, which usually denotes a family of deployments distinct from their
|
|
@@ -163,8 +172,8 @@ class Lightning {
|
|
|
163
172
|
* @param accountAddress the address of the account interacting with the dapp contract, normally an Externally Owned Account (EOA)
|
|
164
173
|
* @param dappAddress the address of the dapp contract that interacts with the Inco Lightning contract or library
|
|
165
174
|
*/
|
|
166
|
-
async encrypt(value, { accountAddress, dappAddress }) {
|
|
167
|
-
const { ciphertext } = await
|
|
175
|
+
async encrypt(value, { accountAddress, dappAddress }, encryptor) {
|
|
176
|
+
const { ciphertext } = await encryptor({
|
|
168
177
|
plaintext: Lightning.plaintextFromValue(value),
|
|
169
178
|
context: {
|
|
170
179
|
hostChainId: this.chainId,
|
|
@@ -190,6 +199,12 @@ class Lightning {
|
|
|
190
199
|
ephemeralKeypair: this.ephemeralKeypair,
|
|
191
200
|
});
|
|
192
201
|
}
|
|
202
|
+
getEncryptor(eciesPubkey) {
|
|
203
|
+
return (0, ecies_js_1.getEciesEncryptor)({
|
|
204
|
+
pubKeyA: (0, ecies_js_1.decodeSecp256k1PublicKey)((0, viem_1.hexToBytes)((0, schema_js_1.parse)(binary_js_1.HexString, eciesPubkey))),
|
|
205
|
+
privKeyB: this.ephemeralKeypair,
|
|
206
|
+
});
|
|
207
|
+
}
|
|
193
208
|
/**
|
|
194
209
|
* Grants a session key allowance voucher for secure reencryption operations.
|
|
195
210
|
*
|
|
@@ -322,6 +337,27 @@ class Lightning {
|
|
|
322
337
|
backoffConfig,
|
|
323
338
|
});
|
|
324
339
|
}
|
|
340
|
+
/**
|
|
341
|
+
* Get an decryption of publicly revealed handles.
|
|
342
|
+
*
|
|
343
|
+
* @param handles - The handles to decrypt
|
|
344
|
+
* @param backoffConfig - The backoff configuration for the attested decrypt request
|
|
345
|
+
* @returns The decryption attestations
|
|
346
|
+
*
|
|
347
|
+
* @example
|
|
348
|
+
* ```typescript
|
|
349
|
+
* const response = await lightning.attestedReveal([handle1, handle2]);
|
|
350
|
+
* const { plaintext, covalidatorSignature } = response[0];
|
|
351
|
+
* ```
|
|
352
|
+
*/
|
|
353
|
+
attestedReveal(handles, backoffConfig) {
|
|
354
|
+
return (0, attested_reveal_js_1.attestedReveal)({
|
|
355
|
+
handles,
|
|
356
|
+
backoffConfig,
|
|
357
|
+
chainId: Number(this.chainId),
|
|
358
|
+
kmsConnectRpcEndpointOrClient: this.kmsClient,
|
|
359
|
+
});
|
|
360
|
+
}
|
|
325
361
|
/**
|
|
326
362
|
* Get the GRPC endpoint for the covalidator that services this deployment.
|
|
327
363
|
*/
|
|
@@ -353,4 +389,4 @@ class Lightning {
|
|
|
353
389
|
}
|
|
354
390
|
}
|
|
355
391
|
exports.Lightning = Lightning;
|
|
356
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlnaHRuaW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpdGUvbGlnaHRuaW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLGtDQUFrQztBQUNsQywrQkFBMkU7QUFDM0Usd0NBQTBDO0FBQzFDLGtFQU11QztBQUV2QyxnRkFBeUU7QUFFekUsZ0ZBQXlFO0FBRXpFLDRDQUFnRTtBQUVoRSxxREFNZ0M7QUFFaEMsNERBQWlFO0FBQ2pFLDhEQUFzRTtBQUN0RSw0Q0FBMkM7QUFDM0MsZ0RBQWdFO0FBR2hFLDRDQUFxQztBQUNyQyx5Q0FLb0I7QUFDcEIsaURBQW1FO0FBNkJuRSxNQUFNLGFBQWEsR0FBb0IsU0FBUyxDQUFDO0FBMkJqRDs7O0dBR0c7QUFDSCxNQUFhLFNBQVM7SUFVRDtJQUNEO0lBVkYsZUFBZSxDQUFVO0lBQ3pCLGNBQWMsQ0FBWTtJQUMxQixPQUFPLENBQVM7SUFFZixTQUFTLENBQXlCO0lBQ2xDLGdCQUFnQixDQUFtQjtJQUNuQyxTQUFTLENBQTRCO0lBRXRELFlBQ21CLFdBQWMsRUFDZixjQUFzQjtRQURyQixnQkFBVyxHQUFYLFdBQVcsQ0FBRztRQUNmLG1CQUFjLEdBQWQsY0FBYyxDQUFRO1FBRXRDLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBQSx3QkFBWSxFQUFDLFdBQVcsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUNqRSxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUEsaUJBQUssRUFBQyxxQkFBUyxFQUFFLFdBQVcsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUNuRSxJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFM0MsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUEsbUNBQXdCLEdBQUUsQ0FBQztRQUNuRCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUEsMkJBQVksRUFBQyxjQUFjLENBQUMsQ0FBQztRQUM5QyxJQUFJLENBQUMsU0FB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
|
|
392
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlnaHRuaW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpdGUvbGlnaHRuaW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLGtDQUFrQztBQUNsQywrQkFRYztBQUNkLHdDQUEwQztBQUMxQyxrRUFNdUM7QUFFdkMsZ0ZBQXlFO0FBRXpFLGdGQUF5RTtBQUV6RSw2RUFBc0U7QUFDdEUsNENBQWdFO0FBRWhFLHFEQU1nQztBQUNoQyxpRUFBa0U7QUFDbEUsK0RBQWdFO0FBRWhFLDREQUFpRTtBQUNqRSw4REFBc0U7QUFDdEUsNENBQTJDO0FBQzNDLGdEQUFnRTtBQUdoRSw0Q0FBcUM7QUFDckMseUNBS29CO0FBQ3BCLGlEQUFtRTtBQTZCbkUsTUFBTSxhQUFhLEdBQW9CLFNBQVMsQ0FBQztBQXlCakQ7OztHQUdHO0FBQ0gsTUFBYSxTQUFTO0lBUUQ7SUFDRDtJQVJGLGVBQWUsQ0FBVTtJQUN6QixPQUFPLENBQVM7SUFFZixnQkFBZ0IsQ0FBbUI7SUFDbkMsU0FBUyxDQUE0QjtJQUV0RCxZQUNtQixXQUFjLEVBQ2YsY0FBc0I7UUFEckIsZ0JBQVcsR0FBWCxXQUFXLENBQUc7UUFDZixtQkFBYyxHQUFkLGNBQWMsQ0FBUTtRQUV0QyxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUEsd0JBQVksRUFBQyxXQUFXLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDakUsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRTNDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFBLG1DQUF3QixHQUFFLENBQUM7UUFDbkQsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFBLDJCQUFZLEVBQUMsY0FBYyxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVEOztPQUVHO0lBQ0gsTUFBTSxDQUFDLEtBQUssQ0FBQyxrQkFBa0I7UUFDN0IsT0FBTyxNQUFNLFNBQVMsQ0FBQyxNQUFNLENBQUMsU0FB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
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import { Client } from '@connectrpc/connect';
|
|
2
|
-
import { Account, Chain,
|
|
2
|
+
import { Account, Chain, Transport, WalletClient } from 'viem';
|
|
3
3
|
import { SupportedChain } from '../chain.js';
|
|
4
4
|
import { EciesScheme, PlaintextOf, SupportedFheType } from '../encryption/encryption.js';
|
|
5
|
-
import {
|
|
5
|
+
import { AttestedDecryptResponse, DecryptionAttestation as DecryptionAttestationProto, KmsService } from '../generated/es/inco/kms/lite/v1/kms_service_pb.js';
|
|
6
6
|
import { Handle } from '../handle.js';
|
|
7
|
-
import type { EIP712 } from '../reencryption/eip712.js';
|
|
8
7
|
import type { Reencryptor, ReencryptorArgs } from '../reencryption/types.js';
|
|
9
8
|
import { Secp256k1Keypair } from './ecies.js';
|
|
10
9
|
export interface IncoLiteReencryptorArgs extends ReencryptorArgs {
|
|
@@ -12,12 +11,11 @@ export interface IncoLiteReencryptorArgs extends ReencryptorArgs {
|
|
|
12
11
|
kmsConnectRpcEndpointOrClient?: string | Client<typeof KmsService>;
|
|
13
12
|
ephemeralKeypair?: Secp256k1Keypair;
|
|
14
13
|
}
|
|
15
|
-
export declare function reencryptEIP712(chainId: bigint, ephemeralPubKey: Uint8Array): EIP712<{
|
|
16
|
-
publicKey: Hex;
|
|
17
|
-
}>;
|
|
18
14
|
export declare function incoLiteReencryptor({ kmsConnectRpcEndpointOrClient, chainId, walletClient, ephemeralKeypair, }: IncoLiteReencryptorArgs): Promise<Reencryptor<EciesScheme>>;
|
|
19
15
|
export declare function getKmsClient(kmsConnectRpcEndpointOrClient: string | Client<typeof KmsService>): Client<typeof KmsService>;
|
|
20
|
-
export declare function decryptGrpcResponse<T extends SupportedFheType>(response:
|
|
16
|
+
export declare function decryptGrpcResponse<T extends SupportedFheType>(response: AttestedDecryptResponse, ephemeralKeypair: Secp256k1Keypair, handle: Handle): Promise<PlaintextOf<1, T>>;
|
|
17
|
+
export declare function decryptGrpcDecryptionAttestation(attestation: DecryptionAttestationProto, reencryptKeypair: Secp256k1Keypair): Promise<DecryptionAttestationProto>;
|
|
18
|
+
export declare function decryptGrpcDecryptResponse(response: AttestedDecryptResponse, reencryptKeypair: Secp256k1Keypair): Promise<AttestedDecryptResponse>;
|
|
21
19
|
export declare function defaultCovalidatorGrpc(chain: SupportedChain): string;
|
|
22
20
|
export declare function lightningDevnetCovalidatorGrpc(chain: SupportedChain): string;
|
|
23
21
|
export declare function lightningTestnetCovalidatorGrpc(chain: SupportedChain): string;
|
|
@@ -1,46 +1,23 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.reencryptEIP712 = reencryptEIP712;
|
|
4
3
|
exports.incoLiteReencryptor = incoLiteReencryptor;
|
|
5
4
|
exports.getKmsClient = getKmsClient;
|
|
6
5
|
exports.decryptGrpcResponse = decryptGrpcResponse;
|
|
6
|
+
exports.decryptGrpcDecryptionAttestation = decryptGrpcDecryptionAttestation;
|
|
7
|
+
exports.decryptGrpcDecryptResponse = decryptGrpcDecryptResponse;
|
|
7
8
|
exports.defaultCovalidatorGrpc = defaultCovalidatorGrpc;
|
|
8
9
|
exports.lightningDevnetCovalidatorGrpc = lightningDevnetCovalidatorGrpc;
|
|
9
10
|
exports.lightningTestnetCovalidatorGrpc = lightningTestnetCovalidatorGrpc;
|
|
10
11
|
const protobuf_1 = require("@bufbuild/protobuf");
|
|
11
12
|
const connect_1 = require("@connectrpc/connect");
|
|
12
13
|
const connect_web_1 = require("@connectrpc/connect-web");
|
|
13
|
-
const
|
|
14
|
+
const attested_decrypt_js_1 = require("../attesteddecrypt/attested-decrypt.js");
|
|
14
15
|
const binary_js_1 = require("../binary.js");
|
|
15
16
|
const chain_js_1 = require("../chain.js");
|
|
16
17
|
const encryption_js_1 = require("../encryption/encryption.js");
|
|
17
18
|
const kms_service_pb_js_1 = require("../generated/es/inco/kms/lite/v1/kms_service_pb.js");
|
|
18
|
-
const types_pb_js_1 = require("../generated/es/inco/kms/lite/v1/types_pb.js");
|
|
19
19
|
const handle_js_1 = require("../handle.js");
|
|
20
|
-
const eip712_js_1 = require("../reencryption/eip712.js");
|
|
21
|
-
const retry_js_1 = require("../retry.js");
|
|
22
20
|
const ecies_js_1 = require("./ecies.js");
|
|
23
|
-
// The domain constants used for basic reencrypts.
|
|
24
|
-
// Note: for advanced ACL, since the signature is checked on-chain, the domain
|
|
25
|
-
// and version must match the ones used in the contract. For basic ones, we use
|
|
26
|
-
// a domain different than the one used on-chain
|
|
27
|
-
const BASIC_REENCRYPT_DOMAIN = {
|
|
28
|
-
name: 'IncoReencryption',
|
|
29
|
-
version: '0.1.0',
|
|
30
|
-
};
|
|
31
|
-
// Create an EIP712 payload for the Inco Lite basic reencrypt.
|
|
32
|
-
function reencryptEIP712(chainId, ephemeralPubKey) {
|
|
33
|
-
return (0, eip712_js_1.createEIP712Payload)({
|
|
34
|
-
chainId,
|
|
35
|
-
primaryType: 'ReencryptionRequest',
|
|
36
|
-
primaryTypeFields: [{ name: 'publicKey', type: 'bytes' }],
|
|
37
|
-
message: {
|
|
38
|
-
publicKey: (0, viem_1.bytesToHex)(ephemeralPubKey),
|
|
39
|
-
},
|
|
40
|
-
domainName: BASIC_REENCRYPT_DOMAIN.name,
|
|
41
|
-
domainVersion: BASIC_REENCRYPT_DOMAIN.version,
|
|
42
|
-
});
|
|
43
|
-
}
|
|
44
21
|
// Returns the Inco Lite Reencryptor, which can reencrypt a handle using the
|
|
45
22
|
// Basic ACL.
|
|
46
23
|
async function incoLiteReencryptor({ kmsConnectRpcEndpointOrClient, chainId, walletClient, ephemeralKeypair, }) {
|
|
@@ -49,40 +26,21 @@ async function incoLiteReencryptor({ kmsConnectRpcEndpointOrClient, chainId, wal
|
|
|
49
26
|
if (!ephemeralKeypair) {
|
|
50
27
|
ephemeralKeypair = await (0, ecies_js_1.generateSecp256k1Keypair)();
|
|
51
28
|
}
|
|
52
|
-
// Sign the EIP712 attesting that the user has access to the private key
|
|
53
|
-
// corresponding to the ephemeral public key.
|
|
54
|
-
const eip712Payload = reencryptEIP712(chainId, ephemeralKeypair.encodePublicKey());
|
|
55
|
-
// Using browser extensions, this step will prompt the user to sign the
|
|
56
|
-
// payload.
|
|
57
|
-
const eip712Signature = await walletClient.signTypedData(eip712Payload);
|
|
58
29
|
return async function reencrypt({ handle }, backoffConfig) {
|
|
59
30
|
const ephemeralPubKey = ephemeralKeypair.encodePublicKey();
|
|
60
|
-
const
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
proof: {
|
|
69
|
-
case: 'incoLiteBasicAclProof',
|
|
70
|
-
value: {},
|
|
71
|
-
},
|
|
72
|
-
},
|
|
73
|
-
}),
|
|
74
|
-
],
|
|
31
|
+
const response = await (0, attested_decrypt_js_1.attestedDecrypt)({
|
|
32
|
+
chainId: (0, chain_js_1.getSupportedChain)(chainId).id,
|
|
33
|
+
walletClient,
|
|
34
|
+
kmsConnectRpcEndpointOrClient: kmsClient,
|
|
35
|
+
handles: [handle],
|
|
36
|
+
backoffConfig,
|
|
37
|
+
reencryptPubKey: ephemeralPubKey,
|
|
38
|
+
reencryptKeypair: ephemeralKeypair,
|
|
75
39
|
});
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
const response = await kmsClient.reencrypt(reencryptRequest);
|
|
79
|
-
return decryptGrpcResponse(response, ephemeralKeypair, handle);
|
|
80
|
-
}, backoffConfig);
|
|
81
|
-
}
|
|
82
|
-
catch (error) {
|
|
83
|
-
console.log(error);
|
|
84
|
-
throw error;
|
|
40
|
+
if (response.length !== 1) {
|
|
41
|
+
throw new Error(`Expected 1 result, got ${response.length}`);
|
|
85
42
|
}
|
|
43
|
+
return response[0].plaintext;
|
|
86
44
|
};
|
|
87
45
|
}
|
|
88
46
|
// Helper function to get a KMS client from a string or a Client instance.
|
|
@@ -99,7 +57,18 @@ function getKmsClient(kmsConnectRpcEndpointOrClient) {
|
|
|
99
57
|
// Even though the proto specifies a list of ciphertexts, our JS SDK
|
|
100
58
|
// currently only supports a single ciphertext.
|
|
101
59
|
async function decryptGrpcResponse(response, ephemeralKeypair, handle) {
|
|
102
|
-
|
|
60
|
+
if (response.decryptionAttestations.length === 0) {
|
|
61
|
+
throw new Error('No decryption attestations in the response');
|
|
62
|
+
}
|
|
63
|
+
const att = response.decryptionAttestations[0];
|
|
64
|
+
if (att.value === undefined) {
|
|
65
|
+
throw new Error('No value in attestation');
|
|
66
|
+
}
|
|
67
|
+
if (att.value.case !== 'reencryption') {
|
|
68
|
+
throw new Error(`Unexpected attestation type: ${att.value.case}, expected 'reencryption'`);
|
|
69
|
+
}
|
|
70
|
+
const reencryption = att.value.value;
|
|
71
|
+
const reencryptedCt = reencryption.userCiphertext;
|
|
103
72
|
if (!reencryptedCt) {
|
|
104
73
|
throw new Error('No reencrypted ciphertext in the response');
|
|
105
74
|
}
|
|
@@ -107,6 +76,47 @@ async function decryptGrpcResponse(response, ephemeralKeypair, handle) {
|
|
|
107
76
|
const plaintext = (0, binary_js_1.bytesToBigInt)(plaintextBytes);
|
|
108
77
|
return (0, encryption_js_1.bigintToPlaintext)(encryption_js_1.encryptionSchemes.ecies, (0, handle_js_1.getHandleType)(handle), plaintext);
|
|
109
78
|
}
|
|
79
|
+
// A helper function that takes in a DecryptionAttestation message containing reencryption,
|
|
80
|
+
// decrypts it using the provided reencryptKeypair, and returns a DecryptionAttestation message containing a plaintext.
|
|
81
|
+
async function decryptGrpcDecryptionAttestation(attestation, reencryptKeypair) {
|
|
82
|
+
if (attestation.value === undefined) {
|
|
83
|
+
throw new Error('No value in attestation');
|
|
84
|
+
}
|
|
85
|
+
if (attestation.value.case !== 'reencryption') {
|
|
86
|
+
return Promise.resolve(attestation);
|
|
87
|
+
}
|
|
88
|
+
const reencryption = attestation.value.value;
|
|
89
|
+
const reencryptedCt = reencryption.userCiphertext;
|
|
90
|
+
if (!reencryptedCt) {
|
|
91
|
+
throw new Error('No reencrypted ciphertext in the response');
|
|
92
|
+
}
|
|
93
|
+
const plaintextBytes = await (0, ecies_js_1.decrypt)(reencryptKeypair, reencryptedCt.ciphertext);
|
|
94
|
+
return (0, protobuf_1.create)(kms_service_pb_js_1.DecryptionAttestationSchema, {
|
|
95
|
+
handle: attestation.handle,
|
|
96
|
+
value: {
|
|
97
|
+
case: 'plaintext',
|
|
98
|
+
value: (0, protobuf_1.create)(kms_service_pb_js_1.PlaintextSchema, {
|
|
99
|
+
value: plaintextBytes,
|
|
100
|
+
}),
|
|
101
|
+
},
|
|
102
|
+
signature: attestation.signature,
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
// A helper function that takes in an AttestedDecryptResponse message containing reencryption attestations,
|
|
106
|
+
// decrypts them using the provided reencryptKeypair, and returns an AttestedDecryptResponse message containing plaintext attestations.
|
|
107
|
+
async function decryptGrpcDecryptResponse(response, reencryptKeypair) {
|
|
108
|
+
if (response.decryptionAttestations.length === 0) {
|
|
109
|
+
throw new Error('No decryption attestations in the response');
|
|
110
|
+
}
|
|
111
|
+
// For each attestation in the response, decrypt it
|
|
112
|
+
const decryptedAttestations = await Promise.all(response.decryptionAttestations.map(async (attestation) => {
|
|
113
|
+
return await decryptGrpcDecryptionAttestation(attestation, reencryptKeypair);
|
|
114
|
+
}));
|
|
115
|
+
// Return new response with decrypted attestations
|
|
116
|
+
return (0, protobuf_1.create)(kms_service_pb_js_1.AttestedDecryptResponseSchema, {
|
|
117
|
+
decryptionAttestations: decryptedAttestations,
|
|
118
|
+
});
|
|
119
|
+
}
|
|
110
120
|
// Helper function to return the default gRPC endpoint for the covalidator.
|
|
111
121
|
// Currently, this returns the covalidator for the Inco Lightning public testnet.
|
|
112
122
|
function defaultCovalidatorGrpc(chain) {
|
|
@@ -128,4 +138,4 @@ function camelToDashCase(str) {
|
|
|
128
138
|
function getCovalidatorGrpcHelper(chain, network, cluster) {
|
|
129
139
|
return `https://grpc.${camelToDashCase(chain.name)}.${cluster}.${network}.inco.org`;
|
|
130
140
|
}
|
|
131
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
141
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVlbmNyeXB0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpdGUvcmVlbmNyeXB0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBcURBLGtEQW9DQztBQUdELG9DQVdDO0FBS0Qsa0RBb0NDO0FBSUQsNEVBaUNDO0FBSUQsZ0VBcUJDO0FBSUQsd0RBRUM7QUFHRCx3RUFFQztBQUdELDBFQUVDO0FBOU5ELGlEQUE0QztBQUM1QyxpREFBMkQ7QUFDM0QseURBQWlFO0FBRWpFLGdGQUF5RTtBQUN6RSw0Q0FBd0Q7QUFDeEQsMENBQWdFO0FBQ2hFLCtEQU1xQztBQUNyQywwRkFRNEQ7QUFDNUQsNENBQXFEO0FBT3JELHlDQUlvQjtBQWlCcEIsNEVBQTRFO0FBQzVFLGFBQWE7QUFDTixLQUFLLFVBQVUsbUJBQW1CLENBQUMsRUFDeEMsNkJBQTZCLEVBQzdCLE9BQU8sRUFDUCxZQUFZLEVBQ1osZ0JBQWdCLEdBQ1E7SUFDeEIsTUFBTSxTQUFTLEdBQUcsWUFBWSxDQUM1Qiw2QkFBNkI7UUFDM0Isc0JBQXNCLENBQUMsSUFBQSw0QkFBaUIsRUFBQyxPQUFPLENBQUMsQ0FBQyxDQUNyRCxDQUFDO0lBQ0YsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDdEIsZ0JBQWdCLEdBQUcsTUFBTSxJQUFBLG1DQUF3QixHQUFFLENBQUM7SUFDdEQsQ0FBQztJQUVELE9BQU8sS0FBSyxVQUFVLFNBQVMsQ0FDN0IsRUFBRSxNQUFNLEVBQW1DLEVBQzNDLGFBQXNDO1FBRXRDLE1BQU0sZUFBZSxHQUFHLGdCQUFpQixDQUFDLGVBQWUsRUFBRSxDQUFDO1FBRTVELE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBQSxxQ0FBZSxFQUFDO1lBQ3JDLE9BQU8sRUFBRSxJQUFBLDRCQUFpQixFQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUU7WUFDdEMsWUFBWTtZQUNaLDZCQUE2QixFQUFFLFNBQVM7WUFDeEMsT0FBTyxFQUFFLENBQUMsTUFBbUIsQ0FB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
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Account, Chain, Transport, WalletClient } from 'viem';
|
|
2
|
+
import { vi } from 'vitest';
|
|
3
|
+
import { KmsClient } from '../kms/client.js';
|
|
4
|
+
interface MinimalKmsClient {
|
|
5
|
+
attestedCompute: ReturnType<typeof vi.fn>;
|
|
6
|
+
attestedDecrypt: ReturnType<typeof vi.fn>;
|
|
7
|
+
key: ReturnType<typeof vi.fn>;
|
|
8
|
+
reencrypt: ReturnType<typeof vi.fn>;
|
|
9
|
+
}
|
|
10
|
+
export declare function createMockKmsClient(): MinimalKmsClient & KmsClient;
|
|
11
|
+
export declare function createTestWalletClient(): WalletClient<Transport, Chain, Account>;
|
|
12
|
+
export {};
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createMockKmsClient = createMockKmsClient;
|
|
4
|
+
exports.createTestWalletClient = createTestWalletClient;
|
|
5
|
+
const viem_1 = require("viem");
|
|
6
|
+
const accounts_1 = require("viem/accounts");
|
|
7
|
+
const chains_1 = require("viem/chains");
|
|
8
|
+
const vitest_1 = require("vitest");
|
|
9
|
+
// Create a mock that satisfies our minimal interface
|
|
10
|
+
function createMockKmsClient() {
|
|
11
|
+
return {
|
|
12
|
+
attestedCompute: vitest_1.vi.fn(),
|
|
13
|
+
attestedDecrypt: vitest_1.vi.fn(),
|
|
14
|
+
key: vitest_1.vi.fn(),
|
|
15
|
+
reencrypt: vitest_1.vi.fn(),
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
// Create a real wallet client for testing
|
|
19
|
+
function createTestWalletClient() {
|
|
20
|
+
const account = (0, accounts_1.privateKeyToAccount)((0, accounts_1.generatePrivateKey)());
|
|
21
|
+
return (0, viem_1.createWalletClient)({
|
|
22
|
+
chain: chains_1.sepolia, // Arbitrary chain, not relevant to test
|
|
23
|
+
transport: (0, viem_1.http)('UNUSED IN TEST'),
|
|
24
|
+
account,
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ja3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdGVzdC9tb2Nrcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQXVCQSxrREFPQztBQUdELHdEQVdDO0FBNUNELCtCQU9jO0FBQ2QsNENBQXdFO0FBQ3hFLHdDQUFzQztBQUN0QyxtQ0FBNEI7QUFZNUIscURBQXFEO0FBQ3JELFNBQWdCLG1CQUFtQjtJQUNqQyxPQUFPO1FBQ0wsZUFBZSxFQUFFLFdBQUUsQ0FBQyxFQUFFLEVBQUU7UUFDeEIsZUFBZSxFQUFFLFdBQUUsQ0FBQyxFQUFFLEVBQUU7UUFDeEIsR0FBRyxFQUFFLFdBQUUsQ0FBQyxFQUFFLEVBQUU7UUFDWixTQUFTLEVBQUUsV0FBRSxDQUFDLEVBQUUsRUFBRTtLQUNhLENBQUM7QUFDcEMsQ0FBQztBQUVELDBDQUEwQztBQUMxQyxTQUFnQixzQkFBc0I7SUFLcEMsTUFBTSxPQUFPLEdBQUcsSUFBQSw4QkFBbUIsRUFBQyxJQUFBLDZCQUFrQixHQUFFLENBQUMsQ0FBQztJQUMxRCxPQUFPLElBQUEseUJBQWtCLEVBQUM7UUFDeEIsS0FBSyxFQUFFLGdCQUFPLEVBQUUsd0NBQXdDO1FBQ3hELFNBQVMsRUFBRSxJQUFBLFdBQUksRUFBQyxnQkFBZ0IsQ0FBQztRQUNqQyxPQUFPO0tBQ1IsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyJ9
|
package/dist/cjs/viem.d.ts
CHANGED
|
@@ -30,7 +30,7 @@ export declare const chains: {
|
|
|
30
30
|
experimental_preconfirmationTime?: number | undefined | undefined;
|
|
31
31
|
rpcUrls: {
|
|
32
32
|
readonly default: {
|
|
33
|
-
readonly http: readonly ["https://
|
|
33
|
+
readonly http: readonly ["https://11155111.rpc.thirdweb.com"];
|
|
34
34
|
};
|
|
35
35
|
};
|
|
36
36
|
sourceId?: number | undefined | undefined;
|
|
@@ -29,6 +29,11 @@ export interface SessionKeyReencryptorArgs {
|
|
|
29
29
|
kmsConnectRpcEndpointOrClient: string | Client<typeof KmsService>;
|
|
30
30
|
allowanceVoucherWithSig: AllowanceVoucherWithSig;
|
|
31
31
|
}
|
|
32
|
+
/**
|
|
33
|
+
* The sessionKeyReencryptor function is a reencryptor that uses a session key
|
|
34
|
+
* to reencrypt data.
|
|
35
|
+
*
|
|
36
|
+
*/
|
|
32
37
|
export declare function sessionKeyReencryptor({ chainId, kmsConnectRpcEndpointOrClient, ephemeralKeypair, allowanceVoucherWithSig, }: SessionKeyReencryptorArgs): Promise<(<T extends SupportedFheType>({ handle, }: ReencryptFnArgs<EciesScheme, T>) => Promise<import("../encryption/encryption.js").PlaintextOf<1, 0 | 5 | 7 | 8>>)>;
|
|
33
38
|
export declare function updateActiveVouchersSessionNonce(incoLiteAddress: Address, sharerWalletClient: WalletClient<Transport, Chain, Account>): Promise<`0x${string}`>;
|
|
34
39
|
export interface SessionKeyAttestedComputeArgs {
|
|
@@ -53,5 +58,7 @@ export interface SessionKeyAttestedDecryptArgs {
|
|
|
53
58
|
allowanceVoucherWithSig: AllowanceVoucherWithSig;
|
|
54
59
|
handles: HexString[];
|
|
55
60
|
backoffConfig?: Partial<BackoffConfig> | undefined;
|
|
61
|
+
reencryptPubKey?: Uint8Array;
|
|
62
|
+
reencryptKeypair?: Secp256k1Keypair;
|
|
56
63
|
}
|
|
57
|
-
export declare function sessionKeyAttestedDecrypt({ chainId, kmsConnectRpcEndpointOrClient, handles, ephemeralKeypair, allowanceVoucherWithSig, backoffConfig, }: SessionKeyAttestedDecryptArgs): Promise<Array<DecryptionAttestation<EciesScheme, SupportedFheType>>>;
|
|
64
|
+
export declare function sessionKeyAttestedDecrypt({ chainId, kmsConnectRpcEndpointOrClient, handles, ephemeralKeypair, allowanceVoucherWithSig, backoffConfig, reencryptPubKey, reencryptKeypair, }: SessionKeyAttestedDecryptArgs): Promise<Array<DecryptionAttestation<EciesScheme, SupportedFheType>>>;
|