@inco/js 0.6.9 → 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.
Files changed (105) hide show
  1. package/README.md +8 -8
  2. package/dist/cjs/advancedacl/session-key.d.ts +39 -26
  3. package/dist/cjs/advancedacl/session-key.js +53 -136
  4. package/dist/cjs/attestedcompute/attested-compute.d.ts +6 -6
  5. package/dist/cjs/attestedcompute/attested-compute.js +5 -35
  6. package/dist/cjs/attesteddecrypt/attested-decrypt.d.ts +36 -21
  7. package/dist/cjs/attesteddecrypt/attested-decrypt.js +107 -108
  8. package/dist/cjs/attesteddecrypt/types.d.ts +4 -4
  9. package/dist/cjs/generated/es/inco/covalidator/compute/v1/types_pb.d.ts +15 -1
  10. package/dist/cjs/generated/es/inco/covalidator/compute/v1/types_pb.js +1 -1
  11. package/dist/cjs/generated/es/inco/kms/lite/v1/kms_service_pb.d.ts +13 -5
  12. package/dist/cjs/generated/es/inco/kms/lite/v1/kms_service_pb.js +3 -4
  13. package/dist/cjs/generated/lightning.d.ts +40 -0
  14. package/dist/cjs/generated/lightning.js +43 -1
  15. package/dist/cjs/generated/local-node.d.ts +11 -7
  16. package/dist/cjs/generated/local-node.js +28 -8
  17. package/dist/cjs/kms/client.d.ts +8 -4
  18. package/dist/cjs/kms/client.js +9 -4
  19. package/dist/cjs/kms/quorumClient.d.ts +58 -0
  20. package/dist/cjs/kms/quorumClient.js +378 -0
  21. package/dist/cjs/kms/thresholdPromises.d.ts +7 -0
  22. package/dist/cjs/kms/thresholdPromises.js +52 -0
  23. package/dist/cjs/lite/index.d.ts +0 -1
  24. package/dist/cjs/lite/index.js +1 -2
  25. package/dist/cjs/lite/lightning.d.ts +87 -67
  26. package/dist/cjs/lite/lightning.js +231 -100
  27. package/dist/cjs/local/local-node.d.ts +1 -2
  28. package/dist/cjs/local/local-node.js +2 -3
  29. package/dist/cjs/test/mocks.d.ts +3 -0
  30. package/dist/cjs/test/mocks.js +19 -1
  31. package/dist/esm/advancedacl/session-key.d.ts +39 -26
  32. package/dist/esm/advancedacl/session-key.js +44 -126
  33. package/dist/esm/attestedcompute/attested-compute.d.ts +6 -6
  34. package/dist/esm/attestedcompute/attested-compute.js +6 -36
  35. package/dist/esm/attesteddecrypt/attested-decrypt.d.ts +36 -21
  36. package/dist/esm/attesteddecrypt/attested-decrypt.js +106 -108
  37. package/dist/esm/attesteddecrypt/types.d.ts +4 -4
  38. package/dist/esm/generated/es/inco/covalidator/compute/v1/types_pb.d.ts +15 -1
  39. package/dist/esm/generated/es/inco/covalidator/compute/v1/types_pb.js +1 -1
  40. package/dist/esm/generated/es/inco/kms/lite/v1/kms_service_pb.d.ts +13 -5
  41. package/dist/esm/generated/es/inco/kms/lite/v1/kms_service_pb.js +2 -3
  42. package/dist/esm/generated/lightning.d.ts +40 -0
  43. package/dist/esm/generated/lightning.js +43 -1
  44. package/dist/esm/generated/local-node.d.ts +11 -7
  45. package/dist/esm/generated/local-node.js +28 -8
  46. package/dist/esm/kms/client.d.ts +8 -4
  47. package/dist/esm/kms/client.js +8 -4
  48. package/dist/esm/kms/quorumClient.d.ts +58 -0
  49. package/dist/esm/kms/quorumClient.js +374 -0
  50. package/dist/esm/kms/thresholdPromises.d.ts +7 -0
  51. package/dist/esm/kms/thresholdPromises.js +49 -0
  52. package/dist/esm/lite/index.d.ts +0 -1
  53. package/dist/esm/lite/index.js +1 -2
  54. package/dist/esm/lite/lightning.d.ts +87 -67
  55. package/dist/esm/lite/lightning.js +234 -103
  56. package/dist/esm/local/local-node.d.ts +1 -2
  57. package/dist/esm/local/local-node.js +2 -3
  58. package/dist/esm/test/mocks.d.ts +3 -0
  59. package/dist/esm/test/mocks.js +17 -1
  60. package/dist/types/advancedacl/session-key.d.ts +39 -26
  61. package/dist/types/attestedcompute/attested-compute.d.ts +6 -6
  62. package/dist/types/attesteddecrypt/attested-decrypt.d.ts +36 -21
  63. package/dist/types/attesteddecrypt/types.d.ts +4 -4
  64. package/dist/types/generated/es/inco/covalidator/compute/v1/types_pb.d.ts +15 -1
  65. package/dist/types/generated/es/inco/kms/lite/v1/kms_service_pb.d.ts +13 -5
  66. package/dist/types/generated/lightning.d.ts +40 -0
  67. package/dist/types/generated/local-node.d.ts +11 -7
  68. package/dist/types/kms/client.d.ts +8 -4
  69. package/dist/types/kms/quorumClient.d.ts +58 -0
  70. package/dist/types/kms/thresholdPromises.d.ts +7 -0
  71. package/dist/types/lite/index.d.ts +0 -1
  72. package/dist/types/lite/lightning.d.ts +87 -67
  73. package/dist/types/local/local-node.d.ts +1 -2
  74. package/dist/types/test/mocks.d.ts +3 -0
  75. package/package.json +2 -2
  76. package/dist/cjs/attestedreveal/attested-reveal.d.ts +0 -21
  77. package/dist/cjs/attestedreveal/attested-reveal.js +0 -69
  78. package/dist/cjs/attestedreveal/index.d.ts +0 -1
  79. package/dist/cjs/attestedreveal/index.js +0 -18
  80. package/dist/cjs/attestedreveal/types.d.ts +0 -7
  81. package/dist/cjs/attestedreveal/types.js +0 -16
  82. package/dist/cjs/generated/es/cosmos_proto/cosmos_pb.d.ts +0 -174
  83. package/dist/cjs/generated/es/cosmos_proto/cosmos_pb.js +0 -118
  84. package/dist/cjs/generated/es/inco/fhe/v1/types_pb.d.ts +0 -419
  85. package/dist/cjs/generated/es/inco/fhe/v1/types_pb.js +0 -136
  86. package/dist/cjs/lite/reencrypt.d.ts +0 -21
  87. package/dist/cjs/lite/reencrypt.js +0 -141
  88. package/dist/esm/attestedreveal/attested-reveal.d.ts +0 -21
  89. package/dist/esm/attestedreveal/attested-reveal.js +0 -66
  90. package/dist/esm/attestedreveal/index.d.ts +0 -1
  91. package/dist/esm/attestedreveal/index.js +0 -2
  92. package/dist/esm/attestedreveal/types.d.ts +0 -7
  93. package/dist/esm/attestedreveal/types.js +0 -12
  94. package/dist/esm/generated/es/cosmos_proto/cosmos_pb.d.ts +0 -174
  95. package/dist/esm/generated/es/cosmos_proto/cosmos_pb.js +0 -115
  96. package/dist/esm/generated/es/inco/fhe/v1/types_pb.d.ts +0 -419
  97. package/dist/esm/generated/es/inco/fhe/v1/types_pb.js +0 -133
  98. package/dist/esm/lite/reencrypt.d.ts +0 -21
  99. package/dist/esm/lite/reencrypt.js +0 -131
  100. package/dist/types/attestedreveal/attested-reveal.d.ts +0 -21
  101. package/dist/types/attestedreveal/index.d.ts +0 -1
  102. package/dist/types/attestedreveal/types.d.ts +0 -7
  103. package/dist/types/generated/es/cosmos_proto/cosmos_pb.d.ts +0 -174
  104. package/dist/types/generated/es/inco/fhe/v1/types_pb.d.ts +0 -419
  105. package/dist/types/lite/reencrypt.d.ts +0 -21
@@ -1,13 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Lightning = void 0;
4
- const fs = require("fs/promises");
5
4
  const viem_1 = require("viem");
6
5
  const chains_1 = require("viem/chains");
7
6
  const session_key_js_1 = require("../advancedacl/session-key.js");
8
7
  const attested_compute_js_1 = require("../attestedcompute/attested-compute.js");
9
8
  const attested_decrypt_js_1 = require("../attesteddecrypt/attested-decrypt.js");
10
- const attested_reveal_js_1 = require("../attestedreveal/attested-reveal.js");
11
9
  const binary_js_1 = require("../binary.js");
12
10
  const index_js_1 = require("../encryption/index.js");
13
11
  const lightning_js_1 = require("../generated/abis/lightning.js");
@@ -15,35 +13,49 @@ const verifier_js_1 = require("../generated/abis/verifier.js");
15
13
  const lightning_js_2 = require("../generated/lightning.js");
16
14
  const local_node_js_1 = require("../generated/local-node.js");
17
15
  const handle_js_1 = require("../handle.js");
18
- const index_js_2 = require("../local/index.js");
16
+ const index_js_2 = require("../index.js");
17
+ const quorumClient_js_1 = require("../kms/quorumClient.js");
18
+ const index_js_3 = require("../local/index.js");
19
19
  const schema_js_1 = require("../schema.js");
20
20
  const ecies_js_1 = require("./ecies.js");
21
- const reencrypt_js_1 = require("./reencrypt.js");
22
21
  const DefaultPepper = 'testnet';
22
+ function isSecp256k1Keypair(value) {
23
+ return !!value && typeof value === 'object' && 'kp' in value;
24
+ }
25
+ function isLocalNodeEnvFileSource(value) {
26
+ return (!!value &&
27
+ typeof value === 'object' &&
28
+ 'filePath' in value &&
29
+ typeof value.filePath === 'string');
30
+ }
23
31
  /**
24
32
  * The Lightning class provides a convenient way to interact with the Inco Lightning contract by binding to a specific
25
33
  * deployment.
26
34
  */
27
35
  class Lightning {
28
36
  _deployment;
29
- covalidatorUrl;
37
+ covalidatorUrls;
38
+ signers;
39
+ threshold;
30
40
  executorAddress;
31
41
  chainId;
32
42
  ephemeralKeypair;
33
- kmsClient;
34
- constructor(_deployment, covalidatorUrl) {
43
+ kmsQuorumClient;
44
+ constructor(_deployment, covalidatorUrls, signers, threshold) {
35
45
  this._deployment = _deployment;
36
- this.covalidatorUrl = covalidatorUrl;
46
+ this.covalidatorUrls = covalidatorUrls;
47
+ this.signers = signers;
48
+ this.threshold = threshold;
37
49
  this.executorAddress = (0, binary_js_1.parseAddress)(_deployment.executorAddress);
38
50
  this.chainId = BigInt(_deployment.chainId);
39
51
  this.ephemeralKeypair = (0, ecies_js_1.generateSecp256k1Keypair)();
40
- this.kmsClient = (0, reencrypt_js_1.getKmsClient)(covalidatorUrl);
52
+ this.kmsQuorumClient = quorumClient_js_1.KmsQuorumClient.fromUrls(covalidatorUrls, signers, threshold);
41
53
  }
42
54
  /**
43
55
  * Get a Lightning instance bound to the latest Lightning deployment for the Base Sepolia testnet.
44
56
  */
45
57
  static async baseSepoliaTestnet() {
46
- return await Lightning.latest('testnet', chains_1.baseSepolia.id);
58
+ return Lightning.latest('testnet', chains_1.baseSepolia.id);
47
59
  }
48
60
  /**
49
61
  * Get a Lightning instance bound to our canonical Anvil-based test node and test Covalidator node
@@ -62,18 +74,33 @@ class Lightning {
62
74
  */
63
75
  static async localNode(env) {
64
76
  if (!env) {
65
- return await Lightning.custom(local_node_js_1.localNodeLightningConfig[DefaultPepper]);
77
+ const config = local_node_js_1.localNodeLightningConfig[DefaultPepper];
78
+ return Lightning.custom({
79
+ ...config,
80
+ covalidatorUrls: [...config.covalidatorUrls],
81
+ signers: config.signers.map((s) => (0, binary_js_1.parseAddress)(s)),
82
+ });
66
83
  }
67
84
  if (typeof env === 'string') {
68
- return await Lightning.custom(local_node_js_1.localNodeLightningConfig[env]);
85
+ const config = local_node_js_1.localNodeLightningConfig[env];
86
+ return Lightning.custom({
87
+ ...config,
88
+ covalidatorUrls: [...config.covalidatorUrls],
89
+ signers: config.signers.map((s) => (0, binary_js_1.parseAddress)(s)),
90
+ });
69
91
  }
70
92
  const conf = local_node_js_1.localNodeLightningConfig[DefaultPepper];
71
- return await Lightning.custom({
93
+ return Lightning.custom({
72
94
  // We assume that we always run a local node as the default anvil node
73
95
  chainId: env.COVALIDATOR_HOST_CHAIN_ID
74
96
  ? Number(env.COVALIDATOR_HOST_CHAIN_ID)
75
97
  : conf.chainId,
76
- covalidatorUrl: env.COVALIDATOR_URL ?? conf.covalidatorUrl,
98
+ covalidatorUrls: env.COVALIDATOR_URL
99
+ ? env.COVALIDATOR_URL.split(',')
100
+ : [...conf.covalidatorUrls],
101
+ signers: env.EIP712_SIGNER_ADDRESS
102
+ ? env.EIP712_SIGNER_ADDRESS.split(',').map((address) => (0, binary_js_1.parseAddress)(address))
103
+ : conf.signers.map((s) => (0, binary_js_1.parseAddress)(s)),
77
104
  hostChainRpcUrl: env.COVALIDATOR_HOST_CHAIN_RPC_URL ??
78
105
  conf.hostChainRpcUrl ??
79
106
  'http://localhost:8545',
@@ -87,9 +114,19 @@ class Lightning {
87
114
  *
88
115
  * @param filePath the path to the file containing the environment variables in dotenv format
89
116
  */
90
- static async localNodeFromEnv(filePath) {
91
- const buf = filePath ? await fs.readFile(filePath) : undefined;
92
- const env = (0, index_js_2.parseLocalEnv)(buf);
117
+ static async localNodeFromEnv(source) {
118
+ let envContent;
119
+ if (isLocalNodeEnvFileSource(source)) {
120
+ if (typeof process === 'undefined' || !process.versions?.node) {
121
+ throw new Error('Lightning.localNodeFromEnv with a file path is only available in Node environments.');
122
+ }
123
+ const { readFile } = await Promise.resolve().then(() => require('fs/promises'));
124
+ envContent = await readFile(source.filePath);
125
+ }
126
+ else {
127
+ envContent = source;
128
+ }
129
+ const env = (0, index_js_3.parseLocalEnv)(envContent);
93
130
  return await Lightning.localNode(env);
94
131
  }
95
132
  /**
@@ -105,7 +142,8 @@ class Lightning {
105
142
  if (!deployment) {
106
143
  throw new Error(`No deployment found for ${JSON.stringify(id)}`);
107
144
  }
108
- return new Lightning(deployment, Lightning.getCovalidatorUrl(deployment));
145
+ const { threshold, signers } = await Lightning.getThresholdAndSigners(deployment);
146
+ return new Lightning(deployment, Lightning.getCovalidatorUrls(deployment, threshold), signers, threshold);
109
147
  }
110
148
  /**
111
149
  * Get a Lightning deployment for a local or custom node
@@ -114,7 +152,8 @@ class Lightning {
114
152
  * additional fields past will be made available as part of the `deployment` property.
115
153
  */
116
154
  static async custom(config) {
117
- return new Lightning(config, config.covalidatorUrl);
155
+ const { threshold, signers } = await Lightning.getContractThresholdAndSigners(config.executorAddress, config.chainId, config.hostChainRpcUrl);
156
+ return new Lightning(config, config.covalidatorUrls, signers, threshold);
118
157
  }
119
158
  static async getEciesPublicKey(client, executorAddress) {
120
159
  const incoLightningContract = (0, viem_1.getContract)({
@@ -153,10 +192,10 @@ class Lightning {
153
192
  * will not be compatible with the new version.
154
193
  *
155
194
  * @param pepper the pepper to use to filter the deployments
156
- * @param chainId the chainId to use to filter the deployments
195
+ * @param chain the chain to use to filter the deployments
157
196
  */
158
197
  static async latest(pepper, chainId) {
159
- return await Lightning.at(Lightning.latestDeployment(pepper, chainId));
198
+ return Lightning.at(Lightning.latestDeployment(pepper, chainId));
160
199
  }
161
200
  /*
162
201
  * Get the latest deployment for a given pepper, which usually denotes a family of deployments distinct from their
@@ -185,20 +224,11 @@ class Lightning {
185
224
  return ciphertext.value;
186
225
  }
187
226
  /**
188
- * Obtain a reencryptor for a particular Externally Owned Account (EOA) to request decrypted values.
189
- * The account associated with the walletClient must have permissions to decrypt the handle or ciphertext passed
190
- * to the reencryptor function.
227
+ * Get the encryptor for a specific ECIES public key.
191
228
  *
192
- * @param walletClient the wallet client to use for signing the reencrypt request.
229
+ * @param eciesPubkey the ECIES public key to use for encryption
230
+ * @returns an Encryptor instance configured for the specified ECIES public key
193
231
  */
194
- getReencryptor(walletClient) {
195
- return (0, reencrypt_js_1.incoLiteReencryptor)({
196
- walletClient,
197
- kmsConnectRpcEndpointOrClient: this.kmsClient,
198
- chainId: this.chainId,
199
- ephemeralKeypair: this.ephemeralKeypair,
200
- });
201
- }
202
232
  getEncryptor(eciesPubkey) {
203
233
  return (0, ecies_js_1.getEciesEncryptor)({
204
234
  pubKeyA: (0, ecies_js_1.decodeSecp256k1PublicKey)((0, viem_1.hexToBytes)((0, schema_js_1.parse)(binary_js_1.HexString, eciesPubkey))),
@@ -238,31 +268,6 @@ class Lightning {
238
268
  expiresAt,
239
269
  });
240
270
  }
241
- /**
242
- * Creates a session key reencryptor for secure data reencryption operations.
243
- *
244
- * This method returns a reencryptor instance that can be used to perform reencryption
245
- * operations using session keys. The reencryptor is configured with the provided
246
- * allowance voucher and ephemeral keypair for secure communication.
247
- *
248
- * @param allowanceVoucherWithSig - The signed allowance voucher obtained from grantSessionKeyAllowanceVoucher
249
- * @param ephemeralKeypair - The ephemeral keypair used for secure communication with the KMS make sure it has allowance to voucher
250
- * @returns A reencryptor instance configured for session key operations
251
- *
252
- * @example
253
- * ```typescript
254
- * const reencryptor = await lightning.getSessionKeyRencryptor(voucher, ephemeralKeypair);
255
- * const decryptedValue = await reencryptor({handle: resultHandle});
256
- * ```
257
- */
258
- getSessionKeyRencryptor(allowanceVoucherWithSig, ephemeralKeypair) {
259
- return (0, session_key_js_1.sessionKeyReencryptor)({
260
- chainId: this.chainId,
261
- kmsConnectRpcEndpointOrClient: this.kmsClient,
262
- ephemeralKeypair,
263
- allowanceVoucherWithSig,
264
- });
265
- }
266
271
  /**
267
272
  * Updates the active session nonce for the given wallet client.
268
273
  *
@@ -275,62 +280,142 @@ class Lightning {
275
280
  updateActiveVouchersSessionNonce(walletClient) {
276
281
  return (0, session_key_js_1.updateActiveVouchersSessionNonce)(this.executorAddress, walletClient);
277
282
  }
278
- attestedDecrypt(arg1, arg2, arg3, arg4) {
279
- if (Array.isArray(arg2)) {
280
- const walletClient = arg1;
281
- const handles = arg2;
282
- const backoffConfig = arg3;
283
+ attestedDecrypt(walletClient, handles, arg3, arg4, arg5) {
284
+ if (arg3 instanceof Uint8Array) {
285
+ const reencryptPubKey = arg3;
286
+ let reencryptKeypair;
287
+ let backoffConfig;
288
+ if (arg4 && isSecp256k1Keypair(arg4)) {
289
+ reencryptKeypair = arg4;
290
+ backoffConfig = arg5;
291
+ }
292
+ else {
293
+ backoffConfig = arg4;
294
+ }
295
+ if (reencryptKeypair) {
296
+ return (0, attested_decrypt_js_1.attestedDecrypt)({
297
+ handles,
298
+ backoffConfig,
299
+ chainId: Number(this.chainId),
300
+ walletClient,
301
+ kmsQuorumClient: this.kmsQuorumClient,
302
+ reencryptPubKey,
303
+ reencryptKeypair,
304
+ });
305
+ }
283
306
  return (0, attested_decrypt_js_1.attestedDecrypt)({
284
307
  handles,
285
308
  backoffConfig,
286
309
  chainId: Number(this.chainId),
287
310
  walletClient,
288
- kmsConnectRpcEndpointOrClient: this.kmsClient,
311
+ kmsQuorumClient: this.kmsQuorumClient,
312
+ reencryptPubKey,
289
313
  });
290
314
  }
291
- else {
292
- const ephemeralKeypair = arg1;
293
- const allowanceVoucherWithSig = arg2;
294
- const handles = arg3;
295
- const backoffConfig = arg4;
315
+ const backoffConfig = arg3;
316
+ return (0, attested_decrypt_js_1.attestedDecrypt)({
317
+ handles,
318
+ backoffConfig,
319
+ chainId: Number(this.chainId),
320
+ walletClient,
321
+ kmsQuorumClient: this.kmsQuorumClient,
322
+ });
323
+ }
324
+ attestedDecryptWithVoucher(ephemeralKeypair, allowanceVoucherWithSig, handles, arg4, arg5, arg6) {
325
+ if (arg4 instanceof Uint8Array) {
326
+ const reencryptPubKey = arg4;
327
+ let reencryptKeypair;
328
+ let backoffConfig;
329
+ if (arg5 && isSecp256k1Keypair(arg5)) {
330
+ reencryptKeypair = arg5;
331
+ backoffConfig = arg6;
332
+ }
333
+ else {
334
+ backoffConfig = arg5;
335
+ }
336
+ if (reencryptKeypair) {
337
+ return (0, session_key_js_1.sessionKeyAttestedDecrypt)({
338
+ backoffConfig,
339
+ chainId: Number(this.chainId),
340
+ kmsQuorumClient: this.kmsQuorumClient,
341
+ ephemeralKeypair,
342
+ allowanceVoucherWithSig,
343
+ handles,
344
+ reencryptPubKey,
345
+ reencryptKeypair,
346
+ });
347
+ }
296
348
  return (0, session_key_js_1.sessionKeyAttestedDecrypt)({
297
349
  backoffConfig,
298
350
  chainId: Number(this.chainId),
299
- kmsConnectRpcEndpointOrClient: this.kmsClient,
351
+ kmsQuorumClient: this.kmsQuorumClient,
300
352
  ephemeralKeypair,
301
353
  allowanceVoucherWithSig,
302
354
  handles,
355
+ reencryptPubKey,
303
356
  });
304
357
  }
358
+ const backoffConfig = arg4;
359
+ return (0, session_key_js_1.sessionKeyAttestedDecrypt)({
360
+ backoffConfig,
361
+ chainId: Number(this.chainId),
362
+ kmsQuorumClient: this.kmsQuorumClient,
363
+ ephemeralKeypair,
364
+ allowanceVoucherWithSig,
365
+ handles,
366
+ });
305
367
  }
306
- attestedCompute(arg1, lhsHandle, op, rhsPlaintext, arg5, arg6) {
307
- if (typeof arg5 === 'object' &&
308
- arg5 !== null &&
309
- 'voucher' in arg5 &&
310
- 'voucherSignature' in arg5 &&
311
- 'sharer' in arg5) {
312
- // Session-key path
313
- const ephemeralKeypair = arg1;
314
- const allowanceVoucherWithSig = arg5;
315
- const backoffConfig = arg6;
316
- return (0, session_key_js_1.sessionKeyAttestedCompute)({
317
- chainId: Number(this.chainId),
318
- kmsConnectRpcEndpointOrClient: this.kmsClient,
319
- ephemeralKeypair,
320
- allowanceVoucherWithSig,
321
- lhsHandle,
322
- op,
323
- rhsPlaintext,
324
- backoffConfig,
325
- });
326
- }
327
- // Wallet-client path
328
- const walletClient = arg1;
329
- const backoffConfig = arg5;
368
+ /**
369
+ * Get an attested compute for the given wallet client.
370
+ *
371
+ * @param walletClient - The wallet client used for signing the attested compute request
372
+ * @param lhsHandle - The handle to compute
373
+ * @param op - The operation to perform
374
+ * @param rhsPlaintext - The plaintext to compute with
375
+ * @param backoffConfig - The backoff configuration for the attested compute request
376
+ * @returns The decryption attestation
377
+ *
378
+ * @example
379
+ * ```typescript
380
+ * import { AttestedComputeSupportedOps } from '../lite/attested-compute.js';
381
+ * const lhsHandle = '0x...';
382
+ * const rhsPlaintext = 1337n;
383
+ * const op = AttestedComputeSupportedOps.Eq;
384
+ * const response = await lightning.attestedCompute(walletClient, lhsHandle, op, rhsPlaintext);
385
+ * const { plaintext, covalidatorSignature, handle } = response;
386
+ * ```
387
+ */
388
+ attestedCompute(walletClient, lhsHandle, op, rhsPlaintext, backoffConfig) {
330
389
  return (0, attested_compute_js_1.attestedCompute)({
331
390
  walletClient,
332
- kmsConnectRpcEndpointOrClient: this.kmsClient,
391
+ kmsQuorumClient: this.kmsQuorumClient,
392
+ chainId: Number(this.chainId),
393
+ lhsHandle,
394
+ op,
395
+ rhsPlaintext,
396
+ backoffConfig,
397
+ });
398
+ }
399
+ /**
400
+ * Performs attested compute via a voucher-backed session key.
401
+ *
402
+ * @example
403
+ * ```ts
404
+ * const attestation = await lightning.attestedComputeWithVoucher(
405
+ * ephemeralKeypair,
406
+ * voucher,
407
+ * lhsHandle,
408
+ * AttestedComputeSupportedOps.Eq,
409
+ * true,
410
+ * );
411
+ * ```
412
+ */
413
+ attestedComputeWithVoucher(ephemeralKeypair, allowanceVoucherWithSig, lhsHandle, op, rhsPlaintext, backoffConfig) {
414
+ return (0, session_key_js_1.sessionKeyAttestedCompute)({
333
415
  chainId: Number(this.chainId),
416
+ kmsQuorumClient: this.kmsQuorumClient,
417
+ ephemeralKeypair,
418
+ allowanceVoucherWithSig,
334
419
  lhsHandle,
335
420
  op,
336
421
  rhsPlaintext,
@@ -351,19 +436,19 @@ class Lightning {
351
436
  * ```
352
437
  */
353
438
  attestedReveal(handles, backoffConfig) {
354
- return (0, attested_reveal_js_1.attestedReveal)({
439
+ return (0, attested_decrypt_js_1.attestedDecrypt)({
355
440
  handles,
356
441
  backoffConfig,
357
442
  chainId: Number(this.chainId),
358
- kmsConnectRpcEndpointOrClient: this.kmsClient,
443
+ kmsQuorumClient: this.kmsQuorumClient,
359
444
  });
360
445
  }
361
446
  /**
362
447
  * Get the GRPC endpoint for the covalidator that services this deployment.
363
448
  */
364
- static getCovalidatorUrl(deployment) {
449
+ static getCovalidatorUrls(deployment, threshold) {
365
450
  const { executorAddress, chainId, pepper } = deployment;
366
- return `https://${executorAddress.toLowerCase()}.${chainId}.${pepper}.inco.org`;
451
+ return Array.from({ length: threshold }, (_, i) => `https://${executorAddress.toLowerCase()}.${chainId}.${pepper}-${i + 1}.inco.org`);
367
452
  }
368
453
  static isIdByName(id) {
369
454
  return id.name !== undefined;
@@ -387,6 +472,52 @@ class Lightning {
387
472
  throw new Error(`Unsupported type ${typeof value}`);
388
473
  }
389
474
  }
475
+ // Add utility method to get threshold from contract
476
+ static async getContractThresholdAndSigners(executorAddress, chainId, hostChainRpcUrl) {
477
+ const chain = (0, index_js_2.getViemChain)({ id: chainId });
478
+ const client = (0, viem_1.createPublicClient)({
479
+ chain,
480
+ transport: hostChainRpcUrl ? (0, viem_1.http)(hostChainRpcUrl) : (0, viem_1.http)(),
481
+ });
482
+ const incoLightningContract = (0, viem_1.getContract)({
483
+ abi: lightning_js_1.incoLightningAbi,
484
+ address: executorAddress,
485
+ client,
486
+ });
487
+ const incoVerifierAddress = await incoLightningContract.read.incoVerifier();
488
+ const incoVerifier = (0, viem_1.getContract)({
489
+ abi: verifier_js_1.incoVerifierAbi,
490
+ address: incoVerifierAddress,
491
+ client,
492
+ });
493
+ console.log('inco executor', incoLightningContract.address);
494
+ console.log('inco verifier', incoVerifier.address);
495
+ const threshold = await incoVerifier.read.getThreshold();
496
+ const signersCount = await incoVerifier.read.getSignersCount();
497
+ const signersPromises = [];
498
+ for (let i = BigInt(0); i < signersCount; i++) {
499
+ signersPromises.push(incoVerifier.read.getSignerAtIndex([i]));
500
+ }
501
+ const signers = await Promise.all(signersPromises);
502
+ return { threshold: Number(threshold), signers: signers.map(binary_js_1.parseAddress) };
503
+ }
504
+ static async getThresholdAndSigners(deployment) {
505
+ if (this.supportsThresholdRetrieval(deployment)) {
506
+ return await this.getContractThresholdAndSigners(deployment.executorAddress, deployment.chainId);
507
+ }
508
+ return this.getDefaultThresholdAndSigners();
509
+ }
510
+ // Check if the deployment supports threshold retrieval based on its version
511
+ static supportsThresholdRetrieval(deployment) {
512
+ // Assumes that the threshold retrieval is supported if the smart contract / deployment version is greater than or equal to 1.1.0
513
+ return deployment.version?.major >= 1 && deployment.version?.minor >= 1;
514
+ }
515
+ static getDefaultThresholdAndSigners() {
516
+ return {
517
+ threshold: 1,
518
+ signers: [viem_1.zeroAddress],
519
+ };
520
+ }
390
521
  }
391
522
  exports.Lightning = Lightning;
392
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlnaHRuaW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpdGUvbGlnaHRuaW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLGtDQUFrQztBQUNsQywrQkFRYztBQUNkLHdDQUEwQztBQUMxQyxrRUFNdUM7QUFFdkMsZ0ZBQXlFO0FBRXpFLGdGQUF5RTtBQUV6RSw2RUFBc0U7QUFDdEUsNENBQWdFO0FBRWhFLHFEQU1nQztBQUNoQyxpRUFBa0U7QUFDbEUsK0RBQWdFO0FBRWhFLDREQUFpRTtBQUNqRSw4REFBc0U7QUFDdEUsNENBQTJDO0FBQzNDLGdEQUFnRTtBQUdoRSw0Q0FBcUM7QUFDckMseUNBS29CO0FBQ3BCLGlEQUFtRTtBQTZCbkUsTUFBTSxhQUFhLEdBQW9CLFNBQVMsQ0FBQztBQXlCakQ7OztHQUdHO0FBQ0gsTUFBYSxTQUFTO0lBUUQ7SUFDRDtJQVJGLGVBQWUsQ0FBVTtJQUN6QixPQUFPLENBQVM7SUFFZixnQkFBZ0IsQ0FBbUI7SUFDbkMsU0FBUyxDQUE0QjtJQUV0RCxZQUNtQixXQUFjLEVBQ2YsY0FBc0I7UUFEckIsZ0JBQVcsR0FBWCxXQUFXLENBQUc7UUFDZixtQkFBYyxHQUFkLGNBQWMsQ0FBUTtRQUV0QyxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUEsd0JBQVksRUFBQyxXQUFXLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDakUsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRTNDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFBLG1DQUF3QixHQUFFLENBQUM7UUFDbkQsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFBLDJCQUFZLEVBQUMsY0FBYyxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVEOztPQUVHO0lBQ0gsTUFBTSxDQUFDLEtBQUssQ0FBQyxrQkFBa0I7UUFDN0IsT0FBTyxNQUFNLFNBQVMsQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLG9CQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7OztPQWNHO0lBQ0gsTUFBTSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQ3BCLEdBQW9DO1FBRXBDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNULE9BQU8sTUFBTSxTQUFTLENBQUMsTUFBTSxDQUFDLHdDQUF3QixDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7UUFDekUsQ0FBQztRQUNELElBQUksT0FBTyxHQUFHLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDNUIsT0FBTyxNQUFNLFNBQVMsQ0FBQyxNQUFNLENBQUMsd0NBQXdCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUMvRCxDQUFDO1FBQ0QsTUFBTSxJQUFJLEdBQUcsd0NBQXdCLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDckQsT0FBTyxNQUFNLFNBQVMsQ0FBQyxNQUFNLENBQUM7WUFDNUIsc0VBQXNFO1lBQ3RFLE9BQU8sRUFBRSxHQUFHLENBQUMseUJBQXlCO2dCQUNwQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyx5QkFBeUIsQ0FBQztnQkFDdkMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPO1lBQ2hCLGNBQWMsRUFBRSxHQUFHLENBQUMsZUFBZSxJQUFJLElBQUksQ0FBQyxjQUFjO1lBQzFELGVBQWUsRUFDYixHQUFHLENBQUMsOEJBQThCO2dCQUNsQyxJQUFJLENBQUMsZUFBZTtnQkFDcEIsdUJBQXVCO1lBQ3pCLHVDQUF1QztZQUN2QyxlQUFlLEVBQUUsR0FBRyxDQUFDLGdCQUFnQjtZQUNyQyxnQkFBZ0IsRUFBRSxHQUFHLENBQUMsa0JBQWtCO1NBQ3pDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FDM0IsUUFBaUI7UUFFakIsTUFBTSxHQUFHLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUMvRCxNQUFNLEdBQUcsR0FBRyxJQUFBLHdCQUFhLEVBQUMsR0FBRyxDQUFDLENBQUM7UUFDL0IsT0FBTyxNQUFNLFNBQVMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFnQjtRQUM5QixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUNwQyxDQUFDLENBQUMsbUNBQW9CLENBQUMsSUFBSSxDQUN2QixDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxFQUFFLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxPQUFPLEtBQUssRUFBRSxDQUFDLE9BQU8sQ0FDdEQ7WUFDSCxDQUFDLENBQUMsbUNBQW9CLENBQUMsSUFBSSxDQUN2QixDQUFDLENBQUMsRUFBRSxFQUFFLENBQ0osQ0FBQyxDQUFDLGVBQWUsS0FBSyxFQUFFLENBQUMsZUFBZTtnQkFDeEMsQ0FBQyxDQUFDLE9BQU8sS0FBSyxFQUFFLENBQUMsT0FBTyxDQUMzQixDQUFDO1FBQ04sSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2hCLE1BQU0sSUFBSSxLQUFLLENBQUMsMkJBQTJCLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ25FLENBQUM7UUFFRCxPQUFPLElBQUksU0FBUyxDQUFDLFVBQVUsRUFBRSxTQUFTLENBQUMsaUJBQWlCLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztJQUM1RSxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FDakIsTUFBUztRQUVULE9BQU8sSUFBSSxTQUFTLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FDNUIsTUFBb0IsRUFDcEIsZUFBd0I7UUFFeEIsTUFBTSxxQkFBcUIsR0FBRyxJQUFBLGtCQUFXLEVBQUM7WUFDeEMsR0FBRyxFQUFFLCtCQUFnQjtZQUNyQixPQUFPLEVBQUUsZUFBMEI7WUFDbkMsTUFBTTtTQUNQLENBQUMsQ0FBQztRQUNILE1BQU0sbUJBQW1CLEdBQUcsTUFBTSxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDNUUsTUFBTSxZQUFZLEdBQUcsSUFBQSxrQkFBVyxFQUFDO1lBQy9CLEdBQUcsRUFBRSw2QkFBZTtZQUNwQixPQUFPLEVBQUUsbUJBQThCO1lBQ3ZDLE1BQU07U0FDUCxDQUFDLENBQUM7UUFDSCxPQUFPLE1BQU0sWUFBWSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUMvQyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsTUFBTSxDQUFDLGdCQUFnQixDQUNyQixNQUFTLEVBQ1QsT0FBZ0I7UUFFaEIsc0VBQXNFO1FBQ3RFLE1BQU0sY0FBYyxHQUFHLG1DQUFvQixDQUFDLElBQUksQ0FDOUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLEtBQUssTUFBTSxJQUFJLENBQUMsQ0FBQyxPQUFPLEtBQUssT0FBTyxDQUNwRCxDQUFDO1FBQ0YsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3BCLDRHQUE0RztZQUM1Ryx3QkFBd0I7WUFDeEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxrQ0FBa0MsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUM5RCxDQUFDO1FBQ0QsT0FBTyxjQUFjLENBQUM7SUFDeEIsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSCxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FDakIsTUFBUyxFQUNULE9BQWdCO1FBRWhCLE9BQU8sTUFBTSxTQUFTLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsSUFBSSxVQUFVO1FBQ1osT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ2pDLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxLQUFLLENBQUMsT0FBTyxDQUNYLEtBQVEsRUFDUixFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQXFCLEVBQ2xELFNBQWlDO1FBRWpDLE1BQU0sRUFBRSxVQUFVLEVBQUUsR0FBRyxNQUFNLFNBQVMsQ0FBQztZQUNyQyxTQUFTLEVBQUUsU0FBUyxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQztZQUM5QyxPQUFPLEVBQUU7Z0JBQ1AsV0FBVyxFQUFFLElBQUksQ0FBQyxPQUFPO2dCQUN6QixVQUFVLEVBQUUsSUFBSSxDQUFDLGVBQWU7Z0JBQ2hDLFdBQVcsRUFBRSxJQUFBLHdCQUFZLEVBQUMsY0FBYyxDQUFDO2dCQUN6QyxlQUFlLEVBQUUsSUFBQSx3QkFBWSxFQUFDLFdBQVcsQ0FBQzthQUMzQztTQUNGLENBQUMsQ0FBQztRQUNILE9BQU8sVUFBVSxDQUFDLEtBQUssQ0FBQztJQUMxQixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsY0FBYyxDQUNaLFlBQXFEO1FBRXJELE9BQU8sSUFBQSxrQ0FBbUIsRUFBQztZQUN6QixZQUFZO1lBQ1osNkJBQTZCLEVBQUUsSUFBSSxDQUFDLFNBQVM7WUFDN0MsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPO1lBQ3JCLGdCQUFnQixFQUFFLElBQUksQ0FBQyxnQkFBZ0I7U0FDeEMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFlBQVksQ0FBQyxXQUFzQjtRQUNqQyxPQUFPLElBQUEsNEJBQWlCLEVBQUM7WUFDdkIsT0FBTyxFQUFFLElBQUEsbUNBQXdCLEVBQy9CLElBQUEsaUJBQVUsRUFBQyxJQUFBLGlCQUFLLEVBQUMscUJBQVMsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUMxQztZQUNELFFBQVEsRUFBRSxJQUFJLENBQUMsZ0JBQWdCO1NBQ2hDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQXNCRztJQUNILCtCQUErQixDQUM3QixZQUFxRCxFQUNyRCxjQUFzQixFQUN0QixTQUFlLEVBQ2Ysc0JBQThCO1FBRTlCLE9BQU8sSUFBQSxnQ0FBZSxFQUFDO1lBQ3JCLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztZQUNyQixlQUFlLEVBQUUsSUFBSSxDQUFDLGVBQWU7WUFDckMsOEJBQThCLEVBQUUsSUFBQSx3QkFBWSxFQUFDLHNCQUFzQixDQUFDO1lBQ3BFLGNBQWMsRUFBRSxJQUFBLHdCQUFZLEVBQUMsY0FBYyxDQUFDO1lBQzVDLGtCQUFrQixFQUFFLFlBQVk7WUFDaEMsU0FBUztTQUNWLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7Ozs7OztPQWdCRztJQUNILHVCQUF1QixDQUNyQix1QkFBZ0QsRUFDaEQsZ0JBQWtDO1FBRWxDLE9BQU8sSUFBQSxzQ0FBcUIsRUFBQztZQUMzQixPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87WUFDckIsNkJBQTZCLEVBQUUsSUFBSSxDQUFDLFNBQVM7WUFDN0MsZ0JBQWdCO1lBQ2hCLHVCQUF1QjtTQUN4QixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSCxnQ0FBZ0MsQ0FDOUIsWUFBcUQ7UUFFckQsT0FBTyxJQUFBLGlEQUFnQyxFQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDOUUsQ0FBQztJQTJDRCxlQUFlLENBQ2IsSUFBZ0UsRUFDaEUsSUFBMkMsRUFDM0MsSUFBMkMsRUFDM0MsSUFBNkI7UUFFN0IsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDeEIsTUFBTSxZQUFZLEdBQUcsSUFBK0MsQ0FBQztZQUNyRSxNQUFNLE9BQU8sR0FBRyxJQUFtQixDQUFDO1lBQ3BDLE1BQU0sYUFBYSxHQUFHLElBQTBDLENBQUM7WUFDakUsT0FBTyxJQUFBLHFDQUFlLEVBQUM7Z0JBQ3JCLE9BQU87Z0JBQ1AsYUFBYTtnQkFDYixPQUFPLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQXFCO2dCQUNqRCxZQUFZO2dCQUNaLDZCQUE2QixFQUFFLElBQUksQ0FBQyxTQUFTO2FBQzlDLENBQUMsQ0FBQztRQUNMLENBQUM7YUFBTSxDQUFDO1lBQ04sTUFBTSxnQkFBZ0IsR0FBRyxJQUF3QixDQUFDO1lBQ2xELE1BQU0sdUJBQXVCLEdBQUcsSUFBK0IsQ0FBQztZQUNoRSxNQUFNLE9BQU8sR0FBRyxJQUFtQixDQUFDO1lBQ3BDLE1BQU0sYUFBYSxHQUFHLElBQTBDLENBQUM7WUFDakUsT0FBTyxJQUFBLDBDQUF5QixFQUFDO2dCQUMvQixhQUFhO2dCQUNiLE9BQU8sRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBcUI7Z0JBQ2pELDZCQUE2QixFQUFFLElBQUksQ0FBQyxTQUFTO2dCQUM3QyxnQkFBZ0I7Z0JBQ2hCLHVCQUF1QjtnQkFDdkIsT0FBTzthQUNSLENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDO0lBdURELGVBQWUsQ0FDYixJQUFnRSxFQUNoRSxTQUFvQixFQUNwQixFQUFxQixFQUNyQixZQUE4QixFQUM5QixJQUF1RCxFQUN2RCxJQUE2QjtRQUU3QixJQUNFLE9BQU8sSUFBSSxLQUFLLFFBQVE7WUFDeEIsSUFBSSxLQUFLLElBQUk7WUFDYixTQUFTLElBQUksSUFBSTtZQUNqQixrQkFBa0IsSUFBSSxJQUFJO1lBQzFCLFFBQVEsSUFBSSxJQUFJLEVBQ2hCLENBQUM7WUFDRCxtQkFBbUI7WUFDbkIsTUFBTSxnQkFBZ0IsR0FBRyxJQUF3QixDQUFDO1lBQ2xELE1BQU0sdUJBQXVCLEdBQUcsSUFBK0IsQ0FBQztZQUNoRSxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUM7WUFDM0IsT0FBTyxJQUFBLDBDQUF5QixFQUFDO2dCQUMvQixPQUFPLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQXFCO2dCQUNqRCw2QkFBNkIsRUFBRSxJQUFJLENBQUMsU0FBUztnQkFDN0MsZ0JBQWdCO2dCQUNoQix1QkFBdUI7Z0JBQ3ZCLFNBQVM7Z0JBQ1QsRUFBRTtnQkFDRixZQUFZO2dCQUNaLGFBQWE7YUFDZCxDQUFDLENBQUM7UUFDTCxDQUFDO1FBRUQscUJBQXFCO1FBQ3JCLE1BQU0sWUFBWSxHQUFHLElBQStDLENBQUM7UUFDckUsTUFBTSxhQUFhLEdBQUcsSUFBMEMsQ0FBQztRQUNqRSxPQUFPLElBQUEscUNBQWUsRUFBQztZQUNyQixZQUFZO1lBQ1osNkJBQTZCLEVBQUUsSUFBSSxDQUFDLFNBQVM7WUFDN0MsT0FBTyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFxQjtZQUNqRCxTQUFTO1lBQ1QsRUFBRTtZQUNGLFlBQVk7WUFDWixhQUFhO1NBQ2QsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7T0FZRztJQUNILGNBQWMsQ0FDWixPQUFvQixFQUNwQixhQUFzQztRQUV0QyxPQUFPLElBQUEsbUNBQWMsRUFBQztZQUNwQixPQUFPO1lBQ1AsYUFBYTtZQUNiLE9BQU8sRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBcUI7WUFDakQsNkJBQTZCLEVBQUUsSUFBSSxDQUFDLFNBQVM7U0FDOUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0ksTUFBTSxDQUFDLGlCQUFpQixDQUM3QixVQUFnRDtRQUVoRCxNQUFNLEVBQUUsZUFBZSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxVQUFVLENBQUM7UUFDeEQsT0FBTyxXQUFXLGVBQWUsQ0FBQyxXQUFXLEVBQUUsSUFBSSxPQUFPLElBQUksTUFBTSxXQUFXLENBQUM7SUFDbEYsQ0FBQztJQUVPLE1BQU0sQ0FBQyxVQUFVLENBQUMsRUFBZ0I7UUFDeEMsT0FBUSxFQUF1QixDQUFDLElBQUksS0FBSyxTQUFTLENBQUM7SUFDckQsQ0FBQztJQUVPLE1BQU0sQ0FBQyxrQkFBa0IsQ0FDL0IsS0FBUTtRQUVSLElBQUksT0FBTyxLQUFLLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDL0IsT0FBTztnQkFDTCxNQUFNLEVBQUUsNEJBQWlCLENBQUMsS0FBSztnQkFDL0IsSUFBSSxFQUFFLHVCQUFXLENBQUMsS0FBSztnQkFDdkIsS0FBSyxFQUFFLEtBQUs7YUFDc0MsQ0FBQztRQUN2RCxDQUFDO2FBQU0sSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDbEUsT0FBTztnQkFDTCxNQUFNLEVBQUUsNEJBQWlCLENBQUMsS0FBSztnQkFDL0IsSUFBSSxFQUFFLHVCQUFXLENBQUMsUUFBUTtnQkFDMUIsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUM7YUFDOEIsQ0FBQztRQUN2RCxDQUFDO2FBQU0sQ0FBQztZQUNOLE1BQU0sSUFBSSxLQUFLLENBQUMsb0JBQW9CLE9BQU8sS0FBSyxFQUFFLENBQUMsQ0FBQztRQUN0RCxDQUFDO0lBQ0gsQ0FBQztDQUNGO0FBN2hCRCw4QkE2aEJDIn0=
523
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlnaHRuaW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpdGUvbGlnaHRuaW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLCtCQVdjO0FBQ2Qsd0NBQTBDO0FBQzFDLGtFQUt1QztBQUV2QyxnRkFBbUc7QUFFbkcsZ0ZBQXlFO0FBS3pFLDRDQUFnRTtBQUVoRSxxREFNZ0M7QUFDaEMsaUVBQWtFO0FBQ2xFLCtEQUFnRTtBQUNoRSw0REFBaUU7QUFDakUsOERBQXNFO0FBQ3RFLDRDQUEyQztBQUMzQywwQ0FBMkM7QUFDM0MsNERBQXlEO0FBQ3pELGdEQUFnRTtBQUVoRSw0Q0FBcUM7QUFDckMseUNBS29CO0FBNkJwQixNQUFNLGFBQWEsR0FBb0IsU0FBUyxDQUFDO0FBRWpELFNBQVMsa0JBQWtCLENBQUMsS0FBYztJQUN4QyxPQUFPLENBQUMsQ0FBQyxLQUFLLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLElBQUksSUFBSSxLQUFLLENBQUM7QUFDL0QsQ0FBQztBQThCRCxTQUFTLHdCQUF3QixDQUMvQixLQUEyRDtJQUUzRCxPQUFPLENBQ0wsQ0FBQyxDQUFDLEtBQUs7UUFDUCxPQUFPLEtBQUssS0FBSyxRQUFRO1FBQ3pCLFVBQVUsSUFBSSxLQUFLO1FBQ25CLE9BQVEsS0FBaUMsQ0FBQyxRQUFRLEtBQUssUUFBUSxDQUNoRSxDQUFDO0FBQ0osQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQWEsU0FBUztJQVFEO0lBQ0Q7SUFDQTtJQUNBO0lBVkYsZUFBZSxDQUFVO0lBQ3pCLE9BQU8sQ0FBUztJQUVmLGdCQUFnQixDQUFtQjtJQUNuQyxlQUFlLENBQWtCO0lBRWxELFlBQ21CLFdBQWMsRUFDZixlQUF5QixFQUN6QixPQUFrQixFQUNsQixTQUFpQjtRQUhoQixnQkFBVyxHQUFYLFdBQVcsQ0FBRztRQUNmLG9CQUFlLEdBQWYsZUFBZSxDQUFVO1FBQ3pCLFlBQU8sR0FBUCxPQUFPLENBQVc7UUFD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
@@ -4,13 +4,12 @@ export declare const LocalNodeEnv: Schema.Struct<{
4
4
  STATE_DUMP: typeof Schema.String;
5
5
  EXECUTOR_ADDRESS: Schema.brand<Schema.filter<Schema.TemplateLiteral<`0x${string}`>>, "Address">;
6
6
  ECIES_PUBLIC_KEY: Schema.TemplateLiteral<`0x${string}`>;
7
- CALLBACK_ADDRESS: Schema.TemplateLiteral<`0x${string}`>;
8
7
  SENDER_ADDRESS: Schema.brand<Schema.filter<Schema.TemplateLiteral<`0x${string}`>>, "Address">;
9
8
  SENDER_PRIVATE_KEY: Schema.TemplateLiteral<`0x${string}`>;
9
+ EIP712_SIGNER_ADDRESS: Schema.optional<Schema.TemplateLiteral<`0x${string}`>>;
10
10
  PEPPER: typeof Schema.String;
11
11
  COVALIDATOR_ECIES_PRIVATE_KEY: Schema.TemplateLiteral<`0x${string}`>;
12
12
  COVALIDATOR_EIP712_PRIVATE_SIGNING_KEY: Schema.TemplateLiteral<`0x${string}`>;
13
- COVALIDATOR_CALLBACK_PRIVATE_KEY: Schema.TemplateLiteral<`0x${string}`>;
14
13
  COVALIDATOR_ACL_ADDR: Schema.brand<Schema.filter<Schema.TemplateLiteral<`0x${string}`>>, "Address">;
15
14
  COVALIDATOR_INCO_EXECUTOR_ADDR: Schema.brand<Schema.filter<Schema.TemplateLiteral<`0x${string}`>>, "Address">;
16
15
  COVALIDATOR_DECRYPTION_HANDLER_ADDR: Schema.brand<Schema.filter<Schema.TemplateLiteral<`0x${string}`>>, "Address">;
@@ -9,13 +9,12 @@ exports.LocalNodeEnv = effect_1.Schema.Struct({
9
9
  STATE_DUMP: effect_1.Schema.String,
10
10
  EXECUTOR_ADDRESS: binary_js_1.Address,
11
11
  ECIES_PUBLIC_KEY: binary_js_1.HexString,
12
- CALLBACK_ADDRESS: binary_js_1.HexString,
13
12
  SENDER_ADDRESS: binary_js_1.Address,
14
13
  SENDER_PRIVATE_KEY: binary_js_1.HexString,
14
+ EIP712_SIGNER_ADDRESS: effect_1.Schema.optional(binary_js_1.HexString),
15
15
  PEPPER: effect_1.Schema.String,
16
16
  COVALIDATOR_ECIES_PRIVATE_KEY: binary_js_1.HexString,
17
17
  COVALIDATOR_EIP712_PRIVATE_SIGNING_KEY: binary_js_1.HexString,
18
- COVALIDATOR_CALLBACK_PRIVATE_KEY: binary_js_1.HexString,
19
18
  COVALIDATOR_ACL_ADDR: binary_js_1.Address,
20
19
  COVALIDATOR_INCO_EXECUTOR_ADDR: binary_js_1.Address,
21
20
  COVALIDATOR_DECRYPTION_HANDLER_ADDR: binary_js_1.Address,
@@ -61,4 +60,4 @@ function parseEnv(envContent) {
61
60
  }
62
61
  return env;
63
62
  }
64
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWwtbm9kZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9sb2NhbC9sb2NhbC1ub2RlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQTJCQSxzQ0FHQztBQTlCRCxtQ0FBZ0M7QUFDaEMsNENBQWtEO0FBRXJDLFFBQUEsWUFBWSxHQUFHLGVBQU0sQ0FBQyxNQUFNLENBQUM7SUFDeEMsZ0JBQWdCLEVBQUUsbUJBQU87SUFDekIsVUFBVSxFQUFFLGVBQU0sQ0FBQyxNQUFNO0lBQ3pCLGdCQUFnQixFQUFFLG1CQUFPO0lBQ3pCLGdCQUFnQixFQUFFLHFCQUFTO0lBQzNCLGdCQUFnQixFQUFFLHFCQUFTO0lBQzNCLGNBQWMsRUFBRSxtQkFBTztJQUN2QixrQkFBa0IsRUFBRSxxQkFBUztJQUM3QixNQUFNLEVBQUUsZUFBTSxDQUFDLE1BQU07SUFDckIsNkJBQTZCLEVBQUUscUJBQVM7SUFDeEMsc0NBQXNDLEVBQUUscUJBQVM7SUFDakQsZ0NBQWdDLEVBQUUscUJBQVM7SUFDM0Msb0JBQW9CLEVBQUUsbUJBQU87SUFDN0IsOEJBQThCLEVBQUUsbUJBQU87SUFDdkMsbUNBQW1DLEVBQUUsbUJBQU87SUFDNUMseUJBQXlCLEVBQUUsZUFBTSxDQUFDLFFBQVEsQ0FBQyxlQUFNLENBQUMsTUFBTSxDQUFDO0lBQ3pELGVBQWUsRUFBRSxlQUFNLENBQUMsUUFBUSxDQUFDLGVBQU0sQ0FBQyxNQUFNLENBQUM7SUFDL0MsOEJBQThCLEVBQUUsZUFBTSxDQUFDLFFBQVEsQ0FBQyxlQUFNLENBQUMsTUFBTSxDQUFDO0NBQy9ELENBQUMsQ0FBQztBQUlILHNFQUFzRTtBQUN0RSxnRUFBZ0U7QUFDaEUsU0FBZ0IsYUFBYSxDQUFDLFlBQThCO0lBQzFELE1BQU0sTUFBTSxHQUFHLFlBQVksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDO0lBQ2xFLE9BQU8sZUFBTSxDQUFDLGlCQUFpQixDQUFDLG9CQUFZLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUN4RCxDQUFDO0FBRUQsU0FBUyxPQUFPLENBQUMsVUFBMkI7SUFDMUMsT0FBTyxRQUFRLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7QUFDekMsQ0FBQztBQUVELG1GQUFtRjtBQUNuRixTQUFTLFFBQVEsQ0FBQyxVQUFrQjtJQUNsQyxJQUFJLEdBQUcsR0FBMkIsRUFBRSxDQUFDO0lBQ3JDLE1BQU0sS0FBSyxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFckMsaUNBQWlDO0lBQ2pDLEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxFQUFFLENBQUM7UUFDekIsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2hDLElBQUksV0FBVyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ2hELE1BQU0sVUFBVSxHQUFHLFdBQVcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDNUMsSUFBSSxVQUFVLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDdEIsTUFBTSxHQUFHLEdBQUcsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ3hELElBQUksS0FBSyxHQUFHLFdBQVcsQ0FBQyxTQUFTLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUV6RCx1QkFBdUI7Z0JBQ3ZCLElBQ0UsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7b0JBQzlDLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQzlDLENBQUM7b0JBQ0QsS0FBSyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQy9DLENBQUM7Z0JBRUQsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQztZQUNuQixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRCx5REFBeUQ7SUFDekQsS0FBSyxNQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUMvQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDLEVBQUUsT0FBZSxFQUFFLEVBQUU7WUFDOUQsT0FBTyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzVCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQyJ9
63
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWwtbm9kZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9sb2NhbC9sb2NhbC1ub2RlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQTBCQSxzQ0FHQztBQTdCRCxtQ0FBZ0M7QUFDaEMsNENBQWtEO0FBRXJDLFFBQUEsWUFBWSxHQUFHLGVBQU0sQ0FBQyxNQUFNLENBQUM7SUFDeEMsZ0JBQWdCLEVBQUUsbUJBQU87SUFDekIsVUFBVSxFQUFFLGVBQU0sQ0FBQyxNQUFNO0lBQ3pCLGdCQUFnQixFQUFFLG1CQUFPO0lBQ3pCLGdCQUFnQixFQUFFLHFCQUFTO0lBQzNCLGNBQWMsRUFBRSxtQkFBTztJQUN2QixrQkFBa0IsRUFBRSxxQkFBUztJQUM3QixxQkFBcUIsRUFBRSxlQUFNLENBQUMsUUFBUSxDQUFDLHFCQUFTLENBQUM7SUFDakQsTUFBTSxFQUFFLGVBQU0sQ0FBQyxNQUFNO0lBQ3JCLDZCQUE2QixFQUFFLHFCQUFTO0lBQ3hDLHNDQUFzQyxFQUFFLHFCQUFTO0lBQ2pELG9CQUFvQixFQUFFLG1CQUFPO0lBQzdCLDhCQUE4QixFQUFFLG1CQUFPO0lBQ3ZDLG1DQUFtQyxFQUFFLG1CQUFPO0lBQzVDLHlCQUF5QixFQUFFLGVBQU0sQ0FBQyxRQUFRLENBQUMsZUFBTSxDQUFDLE1BQU0sQ0FBQztJQUN6RCxlQUFlLEVBQUUsZUFBTSxDQUFDLFFBQVEsQ0FBQyxlQUFNLENBQUMsTUFBTSxDQUFDO0lBQy9DLDhCQUE4QixFQUFFLGVBQU0sQ0FBQyxRQUFRLENBQUMsZUFBTSxDQUFDLE1BQU0sQ0FBQztDQUMvRCxDQUFDLENBQUM7QUFJSCxzRUFBc0U7QUFDdEUsZ0VBQWdFO0FBQ2hFLFNBQWdCLGFBQWEsQ0FBQyxZQUE4QjtJQUMxRCxNQUFNLE1BQU0sR0FBRyxZQUFZLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQztJQUNsRSxPQUFPLGVBQU0sQ0FBQyxpQkFBaUIsQ0FBQyxvQkFBWSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDeEQsQ0FBQztBQUVELFNBQVMsT0FBTyxDQUFDLFVBQTJCO0lBQzFDLE9BQU8sUUFBUSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0FBQ3pDLENBQUM7QUFFRCxtRkFBbUY7QUFDbkYsU0FBUyxRQUFRLENBQUMsVUFBa0I7SUFDbEMsSUFBSSxHQUFHLEdBQTJCLEVBQUUsQ0FBQztJQUNyQyxNQUFNLEtBQUssR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRXJDLGlDQUFpQztJQUNqQyxLQUFLLE1BQU0sSUFBSSxJQUFJLEtBQUssRUFBRSxDQUFDO1FBQ3pCLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNoQyxJQUFJLFdBQVcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNoRCxNQUFNLFVBQVUsR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzVDLElBQUksVUFBVSxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQ3RCLE1BQU0sR0FBRyxHQUFHLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUN4RCxJQUFJLEtBQUssR0FBRyxXQUFXLENBQUMsU0FBUyxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFFekQsdUJBQXVCO2dCQUN2QixJQUNFLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO29CQUM5QyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUM5QyxDQUFDO29CQUNELEtBQUssR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO2dCQUMvQyxDQUFDO2dCQUVELEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUM7WUFDbkIsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQseURBQXlEO0lBQ3pELEtBQUssTUFBTSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDL0MsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQyxFQUFFLE9BQWUsRUFBRSxFQUFFO1lBQzlELE9BQU8sR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUM1QixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUMifQ==
@@ -1,6 +1,7 @@
1
1
  import { Account, Chain, Transport, WalletClient } from 'viem';
2
2
  import { vi } from 'vitest';
3
3
  import { KmsClient } from '../kms/client.js';
4
+ import { KmsQuorumClient } from '../kms/quorumClient.js';
4
5
  interface MinimalKmsClient {
5
6
  attestedCompute: ReturnType<typeof vi.fn>;
6
7
  attestedDecrypt: ReturnType<typeof vi.fn>;
@@ -8,5 +9,7 @@ interface MinimalKmsClient {
8
9
  reencrypt: ReturnType<typeof vi.fn>;
9
10
  }
10
11
  export declare function createMockKmsClient(): MinimalKmsClient & KmsClient;
12
+ export declare function createMockQuorumClient(): KmsQuorumClient;
13
+ export declare function setupMockInQuorumClient(quorumClient: KmsQuorumClient, mockKmsClient: MinimalKmsClient & KmsClient): void;
11
14
  export declare function createTestWalletClient(): WalletClient<Transport, Chain, Account>;
12
15
  export {};
@@ -1,11 +1,15 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.createMockKmsClient = createMockKmsClient;
4
+ exports.createMockQuorumClient = createMockQuorumClient;
5
+ exports.setupMockInQuorumClient = setupMockInQuorumClient;
4
6
  exports.createTestWalletClient = createTestWalletClient;
5
7
  const viem_1 = require("viem");
6
8
  const accounts_1 = require("viem/accounts");
7
9
  const chains_1 = require("viem/chains");
8
10
  const vitest_1 = require("vitest");
11
+ const client_js_1 = require("../kms/client.js");
12
+ const quorumClient_js_1 = require("../kms/quorumClient.js");
9
13
  // Create a mock that satisfies our minimal interface
10
14
  function createMockKmsClient() {
11
15
  return {
@@ -15,6 +19,20 @@ function createMockKmsClient() {
15
19
  reencrypt: vitest_1.vi.fn(),
16
20
  };
17
21
  }
22
+ // Create a mock KmsQuorumClient from a mock KmsClient for testing
23
+ function createMockQuorumClient() {
24
+ // Use the private constructor via type casting (similar to quorumClient.test.ts)
25
+ const AnyClass = quorumClient_js_1.KmsQuorumClient;
26
+ return new AnyClass([{ url: 'https://mock-kms', signer: client_js_1.DEFAULT_COVALIDATOR_SIGNER }], 1);
27
+ }
28
+ // Helper to set up the mock client inside the quorum client
29
+ function setupMockInQuorumClient(quorumClient, mockKmsClient) {
30
+ // Access private kmss array and replace the client
31
+ const anyQuorumClient = quorumClient;
32
+ if (anyQuorumClient.kmss && anyQuorumClient.kmss.length > 0) {
33
+ anyQuorumClient.kmss[0].client = mockKmsClient;
34
+ }
35
+ }
18
36
  // Create a real wallet client for testing
19
37
  function createTestWalletClient() {
20
38
  const account = (0, accounts_1.privateKeyToAccount)((0, accounts_1.generatePrivateKey)());
@@ -24,4 +42,4 @@ function createTestWalletClient() {
24
42
  account,
25
43
  });
26
44
  }
27
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ja3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdGVzdC9tb2Nrcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQXVCQSxrREFPQztBQUdELHdEQVdDO0FBNUNELCtCQU9jO0FBQ2QsNENBQXdFO0FBQ3hFLHdDQUFzQztBQUN0QyxtQ0FBNEI7QUFZNUIscURBQXFEO0FBQ3JELFNBQWdCLG1CQUFtQjtJQUNqQyxPQUFPO1FBQ0wsZUFBZSxFQUFFLFdBQUUsQ0FBQyxFQUFFLEVBQUU7UUFDeEIsZUFBZSxFQUFFLFdBQUUsQ0FBQyxFQUFFLEVBQUU7UUFDeEIsR0FBRyxFQUFFLFdBQUUsQ0FBQyxFQUFFLEVBQUU7UUFDWixTQUFTLEVBQUUsV0FBRSxDQUFDLEVBQUUsRUFBRTtLQUNhLENBQUM7QUFDcEMsQ0FBQztBQUVELDBDQUEwQztBQUMxQyxTQUFnQixzQkFBc0I7SUFLcEMsTUFBTSxPQUFPLEdBQUcsSUFBQSw4QkFBbUIsRUFBQyxJQUFBLDZCQUFrQixHQUFFLENBQUMsQ0FBQztJQUMxRCxPQUFPLElBQUEseUJBQWtCLEVBQUM7UUFDeEIsS0FBSyxFQUFFLGdCQUFPLEVBQUUsd0NBQXdDO1FBQ3hELFNBQVMsRUFBRSxJQUFBLFdBQUksRUFBQyxnQkFBZ0IsQ0FBQztRQUNqQyxPQUFPO0tBQ1IsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyJ9
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ja3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdGVzdC9tb2Nrcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQXdCQSxrREFPQztBQUdELHdEQU9DO0FBR0QsMERBU0M7QUFHRCx3REFXQztBQW5FRCwrQkFPYztBQUNkLDRDQUF3RTtBQUN4RSx3Q0FBc0M7QUFDdEMsbUNBQTRCO0FBQzVCLGdEQUF5RTtBQUN6RSw0REFBeUQ7QUFXekQscURBQXFEO0FBQ3JELFNBQWdCLG1CQUFtQjtJQUNqQyxPQUFPO1FBQ0wsZUFBZSxFQUFFLFdBQUUsQ0FBQyxFQUFFLEVBQUU7UUFDeEIsZUFBZSxFQUFFLFdBQUUsQ0FBQyxFQUFFLEVBQUU7UUFDeEIsR0FBRyxFQUFFLFdBQUUsQ0FBQyxFQUFFLEVBQUU7UUFDWixTQUFTLEVBQUUsV0FBRSxDQUFDLEVBQUUsRUFBRTtLQUNhLENBQUM7QUFDcEMsQ0FBQztBQUVELGtFQUFrRTtBQUNsRSxTQUFnQixzQkFBc0I7SUFDcEMsaUZBQWlGO0lBQ2pGLE1BQU0sUUFBUSxHQUFRLGlDQUFlLENBQUM7SUFDdEMsT0FBTyxJQUFJLFFBQVEsQ0FDakIsQ0FBQyxFQUFFLEdBQUcsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLEVBQUUsc0NBQTBCLEVBQUUsQ0FBQyxFQUNqRSxDQUFDLENBQ0YsQ0FBQztBQUNKLENBQUM7QUFFRCw0REFBNEQ7QUFDNUQsU0FBZ0IsdUJBQXVCLENBQ3JDLFlBQTZCLEVBQzdCLGFBQTJDO0lBRTNDLG1EQUFtRDtJQUNuRCxNQUFNLGVBQWUsR0FBRyxZQUFtQixDQUFDO0lBQzVDLElBQUksZUFBZSxDQUFDLElBQUksSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUM1RCxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxhQUFhLENBQUM7SUFDakQsQ0FBQztBQUNILENBQUM7QUFFRCwwQ0FBMEM7QUFDMUMsU0FBZ0Isc0JBQXNCO0lBS3BDLE1BQU0sT0FBTyxHQUFHLElBQUEsOEJBQW1CLEVBQUMsSUFBQSw2QkFBa0IsR0FBRSxDQUFDLENBQUM7SUFDMUQsT0FBTyxJQUFBLHlCQUFrQixFQUFDO1FBQ3hCLEtBQUssRUFBRSxnQkFBTyxFQUFFLHdDQUF3QztRQUN4RCxTQUFTLEVBQUUsSUFBQSxXQUFJLEVBQUMsZ0JBQWdCLENBQUM7UUFDakMsT0FBTztLQUNSLENBQUMsQ0FBQztBQUNMLENBQUMifQ==