@inco/js 0.3.0 → 0.3.2-alpha.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 (56) hide show
  1. package/dist/cjs/advancedacl/index.d.ts +2 -0
  2. package/dist/cjs/advancedacl/index.js +19 -0
  3. package/dist/cjs/advancedacl/session-key.d.ts +28 -0
  4. package/dist/cjs/advancedacl/session-key.js +176 -0
  5. package/dist/cjs/advancedacl/types.d.ts +15 -0
  6. package/dist/cjs/advancedacl/types.js +3 -0
  7. package/dist/cjs/attestedcompute/attested-compute.d.ts +14 -16
  8. package/dist/cjs/attestedcompute/attested-compute.js +56 -71
  9. package/dist/cjs/attesteddecrypt/attested-decrypt.d.ts +18 -19
  10. package/dist/cjs/attesteddecrypt/attested-decrypt.js +50 -60
  11. package/dist/cjs/attesteddecrypt/index.d.ts +0 -1
  12. package/dist/cjs/attesteddecrypt/index.js +1 -2
  13. package/dist/cjs/generated/abis/lightning-preview.d.ts +2265 -0
  14. package/dist/cjs/generated/abis/lightning-preview.js +1429 -0
  15. package/dist/cjs/lite/attested-compute.d.ts +1 -2
  16. package/dist/cjs/lite/attested-compute.js +1 -4
  17. package/dist/cjs/lite/attested-decrypt.d.ts +1 -2
  18. package/dist/cjs/lite/attested-decrypt.js +1 -4
  19. package/dist/cjs/lite/lightning.d.ts +94 -1
  20. package/dist/cjs/lite/lightning.js +129 -2
  21. package/dist/cjs/local/local-node.d.ts +1 -1
  22. package/dist/cjs/local/local-node.js +15 -15
  23. package/dist/esm/advancedacl/index.d.ts +2 -0
  24. package/dist/esm/advancedacl/index.js +3 -0
  25. package/dist/esm/advancedacl/session-key.d.ts +28 -0
  26. package/dist/esm/advancedacl/session-key.js +170 -0
  27. package/dist/esm/advancedacl/types.d.ts +15 -0
  28. package/dist/esm/advancedacl/types.js +2 -0
  29. package/dist/esm/attestedcompute/attested-compute.d.ts +14 -16
  30. package/dist/esm/attestedcompute/attested-compute.js +55 -70
  31. package/dist/esm/attesteddecrypt/attested-decrypt.d.ts +18 -19
  32. package/dist/esm/attesteddecrypt/attested-decrypt.js +49 -59
  33. package/dist/esm/attesteddecrypt/index.d.ts +0 -1
  34. package/dist/esm/attesteddecrypt/index.js +1 -2
  35. package/dist/esm/generated/abis/lightning-preview.d.ts +2265 -0
  36. package/dist/esm/generated/abis/lightning-preview.js +1426 -0
  37. package/dist/esm/lite/attested-compute.d.ts +1 -2
  38. package/dist/esm/lite/attested-compute.js +2 -3
  39. package/dist/esm/lite/attested-decrypt.d.ts +1 -2
  40. package/dist/esm/lite/attested-decrypt.js +2 -3
  41. package/dist/esm/lite/lightning.d.ts +94 -1
  42. package/dist/esm/lite/lightning.js +129 -2
  43. package/dist/esm/local/local-node.d.ts +1 -1
  44. package/dist/esm/local/local-node.js +3 -3
  45. package/dist/types/advancedacl/index.d.ts +2 -0
  46. package/dist/types/advancedacl/session-key.d.ts +28 -0
  47. package/dist/types/advancedacl/types.d.ts +15 -0
  48. package/dist/types/attestedcompute/attested-compute.d.ts +14 -16
  49. package/dist/types/attesteddecrypt/attested-decrypt.d.ts +18 -19
  50. package/dist/types/attesteddecrypt/index.d.ts +0 -1
  51. package/dist/types/generated/abis/lightning-preview.d.ts +2265 -0
  52. package/dist/types/lite/attested-compute.d.ts +1 -2
  53. package/dist/types/lite/attested-decrypt.d.ts +1 -2
  54. package/dist/types/lite/lightning.d.ts +94 -1
  55. package/dist/types/local/local-node.d.ts +1 -1
  56. package/package.json +1 -1
@@ -1,4 +1,3 @@
1
- import { type IncoLiteAttestedComputeArgs, incoLiteAttestedCompute } from '../attestedcompute/attested-compute.js';
1
+ import { type IncoLiteAttestedComputeArgs } from '../attestedcompute/attested-compute.js';
2
2
  import { type AttestedComputeSupportedOps } from '../attestedcompute/types.js';
3
- export { incoLiteAttestedCompute };
4
3
  export type { AttestedComputeSupportedOps, IncoLiteAttestedComputeArgs };
@@ -1,3 +1,2 @@
1
- import { incoLiteAttestedCompute } from '../attestedcompute/attested-compute.js';
2
- export { incoLiteAttestedCompute };
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0ZXN0ZWQtY29tcHV0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saXRlL2F0dGVzdGVkLWNvbXB1dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFvQyx1QkFBdUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBR25ILE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxDQUFDIn0=
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0ZXN0ZWQtY29tcHV0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saXRlL2F0dGVzdGVkLWNvbXB1dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiJ9
@@ -1,3 +1,2 @@
1
- import { type IncoLiteAttestedDecryptorArgs, incoLiteAttestedDecryptor } from '../attesteddecrypt/attested-decrypt.js';
2
- export { incoLiteAttestedDecryptor };
1
+ import { type IncoLiteAttestedDecryptorArgs } from '../attesteddecrypt/attested-decrypt.js';
3
2
  export type { IncoLiteAttestedDecryptorArgs };
@@ -1,3 +1,2 @@
1
- import { incoLiteAttestedDecryptor } from '../attesteddecrypt/attested-decrypt.js';
2
- export { incoLiteAttestedDecryptor };
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0ZXN0ZWQtZGVjcnlwdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saXRlL2F0dGVzdGVkLWRlY3J5cHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFzQyx5QkFBeUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBRXZILE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxDQUFDIn0=
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0ZXN0ZWQtZGVjcnlwdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saXRlL2F0dGVzdGVkLWRlY3J5cHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiJ9
@@ -1,10 +1,15 @@
1
1
  import { Account, Chain, Transport, WalletClient } from 'viem';
2
+ import { AllowanceVoucherWithSig } from '../advancedacl/types.js';
3
+ import { AttestedComputeOP } from '../attestedcompute/types.js';
4
+ import { DecryptionAttestation } from '../attesteddecrypt/index.js';
2
5
  import { Address, HexString } from '../binary.js';
3
- import { EciesScheme } from '../encryption/index.js';
6
+ import { EciesScheme, PlaintextOf, SupportedFheType } from '../encryption/index.js';
4
7
  import { lightningDeployments } from '../generated/lightning.js';
5
8
  import { localNodeLightningConfig } from '../generated/local-node.js';
6
9
  import { LocalNodeEnv } from '../local/index.js';
7
10
  import type { Reencryptor } from '../reencryption/index.js';
11
+ import { BackoffConfig } from '../retry.js';
12
+ import { Secp256k1Keypair } from './ecies.js';
8
13
  type TupleToUnion<T> = T extends readonly unknown[] ? T[number] : never;
9
14
  type Deployment = TupleToUnion<typeof lightningDeployments>;
10
15
  type DistributedPick<T, K> = T extends any ? Pick<T, Extract<keyof T, K>> : never;
@@ -120,6 +125,94 @@ export declare class Lightning<T extends DeploymentSlice = DeploymentSlice> {
120
125
  * @param walletClient the wallet client to use for signing the reencrypt request.
121
126
  */
122
127
  getReencryptor(walletClient: WalletClient<Transport, Chain, Account>): Promise<Reencryptor<EciesScheme>>;
128
+ /**
129
+ * Grants a session key allowance voucher for secure reencryption operations.
130
+ *
131
+ * This method creates a signed allowance voucher that authorizes a specific requester address
132
+ * to perform reencryption operations using session keys. The voucher includes an expiration time
133
+ * and can optionally specify a custom session verifier contract address.
134
+ *
135
+ * @param walletClient - The wallet client used for signing the allowance voucher
136
+ * @param granteeAddress - The address of the entity requesting the session key allowance
137
+ * @param expiresAt - The timestamp when the allowance voucher expires (as a bigint)
138
+ * @param sessionVerifierAddress - Optional custom session verifier contract address. If not provided, uses the executor address
139
+ * @returns A promise that resolves to an AllowanceVoucherWithSig containing the signed allowance voucher
140
+ *
141
+ * @example
142
+ * ```typescript
143
+ * const voucher = await lightning.grantSessionKeyAllowanceVoucher(
144
+ * walletClient,
145
+ * "0x1234...",
146
+ * BigInt(Date.now() + 3600000), // 1 hour from now
147
+ * "0x5678..." // optional custom verifier
148
+ * );
149
+ * ```
150
+ */
151
+ grantSessionKeyAllowanceVoucher(walletClient: WalletClient<Transport, Chain, Account>, granteeAddress: string, expiresAt: Date, sessionVerifierAddress: string): Promise<AllowanceVoucherWithSig>;
152
+ /**
153
+ * Creates a session key reencryptor for secure data reencryption operations.
154
+ *
155
+ * This method returns a reencryptor instance that can be used to perform reencryption
156
+ * operations using session keys. The reencryptor is configured with the provided
157
+ * allowance voucher and ephemeral keypair for secure communication.
158
+ *
159
+ * @param allowanceVoucherWithSig - The signed allowance voucher obtained from grantSessionKeyAllowanceVoucher
160
+ * @param ephemeralKeypair - The ephemeral keypair used for secure communication with the KMS make sure it has allowance to voucher
161
+ * @returns A reencryptor instance configured for session key operations
162
+ *
163
+ * @example
164
+ * ```typescript
165
+ * const reencryptor = await lightning.getSessionKeyRencryptor(voucher, ephemeralKeypair);
166
+ * const decryptedValue = await reencryptor({handle: resultHandle});
167
+ * ```
168
+ */
169
+ getSessionKeyRencryptor(allowanceVoucherWithSig: AllowanceVoucherWithSig, ephemeralKeypair: Secp256k1Keypair): Promise<(<T_1 extends SupportedFheType>({ handle }: import("../reencryption/types.js").ReencryptFnArgs<EciesScheme, T_1>) => Promise<PlaintextOf<1, 0 | 5 | 7 | 8>>)>;
170
+ /**
171
+ * Updates the active session nonce for the given wallet client.
172
+ *
173
+ * This method updates the active session nonce for the given wallet client.
174
+ * It nullifies all the previous shared addresses accessing the voucher.
175
+ *
176
+ * @param walletClient - The wallet client used for updating the session nonce
177
+ * @returns The transaction hash of the updateActiveVouchersSessionNonce transaction
178
+ */
179
+ updateActiveVouchersSessionNonce(walletClient: WalletClient<Transport, Chain, Account>): Promise<HexString>;
180
+ /**
181
+ * Get an attested decryptor for the given wallet client.
182
+ *
183
+ * @param walletClient - The wallet client used for signing the attested decrypt request
184
+ * @param handles - The handles to decrypt
185
+ * @param backoffConfig - The backoff configuration for the attested decrypt request
186
+ * @returns The decryption attestations
187
+ *
188
+ * @example
189
+ * ```typescript
190
+ * const response = await lightning.attestedDecrypt(walletClient, [handle1, handle2]);
191
+ * const { plaintext, covalidatorSignature } = response[0];
192
+ * ```
193
+ */
194
+ attestedDecrypt(walletClient: WalletClient<Transport, Chain, Account>, handles: HexString[], backoffConfig?: Partial<BackoffConfig>): Promise<Array<DecryptionAttestation<EciesScheme, SupportedFheType>>>;
195
+ /**
196
+ * Get an attested compute for the given wallet client.
197
+ *
198
+ * @param walletClient - The wallet client used for signing the attested compute request
199
+ * @param lhsHandle - The handle to compute
200
+ * @param op - The operation to perform
201
+ * @param rhsPlaintext - The plaintext to compute with
202
+ * @param backoffConfig - The backoff configuration for the attested compute request
203
+ * @returns The decryption attestation
204
+ *
205
+ * @example
206
+ * ```typescript
207
+ * import { AttestedComputeSupportedOps } from '../lite/attested-compute.js';
208
+ * const lhsHandle = '0x...';
209
+ * const rhsPlaintext = 1337n;
210
+ * const op = AttestedComputeSupportedOps.Eq;
211
+ * const response = await lightning.attestedCompute(walletClient, lhsHandle, op, rhsPlaintext);
212
+ * const { plaintext, covalidatorSignature, handle } = response;
213
+ * ```
214
+ */
215
+ attestedCompute(walletClient: WalletClient<Transport, Chain, Account>, lhsHandle: HexString, op: AttestedComputeOP, rhsPlaintext: bigint | boolean, backoffConfig?: Partial<BackoffConfig>): Promise<DecryptionAttestation<EciesScheme, SupportedFheType>>;
123
216
  /**
124
217
  * Get the GRPC endpoint for the covalidator that services this deployment.
125
218
  */
@@ -1,6 +1,9 @@
1
1
  import * as fs from 'fs/promises';
2
2
  import { hexToBytes } from 'viem';
3
3
  import { baseSepolia } from 'viem/chains';
4
+ import { grantSessionKey, sessionKeyReencryptor, updateActiveVouchersSessionNonce, } from '../advancedacl/session-key.js';
5
+ import { attestedCompute } from '../attestedcompute/attested-compute.js';
6
+ import { attestedDecrypt } from '../attesteddecrypt/attested-decrypt.js';
4
7
  import { HexString, parseAddress } from '../binary.js';
5
8
  import { encryptionSchemes } from '../encryption/index.js';
6
9
  import { lightningDeployments } from '../generated/lightning.js';
@@ -70,7 +73,7 @@ export class Lightning {
70
73
  return Lightning.custom({
71
74
  // We assume that we always run a local node as the default anvil node
72
75
  chainId: env.COVALIDATOR_HOST_CHAIN_ID ? Number(env.COVALIDATOR_HOST_CHAIN_ID) : conf.chainId,
73
- covalidatorUrl: env.COVALIDATOR_GRPC_SERVER_ADDRESS ?? conf.covalidatorUrl,
76
+ covalidatorUrl: env.COVALIDATOR_URL ?? conf.covalidatorUrl,
74
77
  hostChainRpcUrl: env.COVALIDATOR_HOST_CHAIN_RPC_URL ?? conf.hostChainRpcUrl ?? 'http://localhost:8545',
75
78
  // These variables vary per environment
76
79
  executorAddress: env.EXECUTOR_ADDRESS,
@@ -180,6 +183,130 @@ export class Lightning {
180
183
  ephemeralKeypair: this.ephemeralKeypair,
181
184
  });
182
185
  }
186
+ /**
187
+ * Grants a session key allowance voucher for secure reencryption operations.
188
+ *
189
+ * This method creates a signed allowance voucher that authorizes a specific requester address
190
+ * to perform reencryption operations using session keys. The voucher includes an expiration time
191
+ * and can optionally specify a custom session verifier contract address.
192
+ *
193
+ * @param walletClient - The wallet client used for signing the allowance voucher
194
+ * @param granteeAddress - The address of the entity requesting the session key allowance
195
+ * @param expiresAt - The timestamp when the allowance voucher expires (as a bigint)
196
+ * @param sessionVerifierAddress - Optional custom session verifier contract address. If not provided, uses the executor address
197
+ * @returns A promise that resolves to an AllowanceVoucherWithSig containing the signed allowance voucher
198
+ *
199
+ * @example
200
+ * ```typescript
201
+ * const voucher = await lightning.grantSessionKeyAllowanceVoucher(
202
+ * walletClient,
203
+ * "0x1234...",
204
+ * BigInt(Date.now() + 3600000), // 1 hour from now
205
+ * "0x5678..." // optional custom verifier
206
+ * );
207
+ * ```
208
+ */
209
+ grantSessionKeyAllowanceVoucher(walletClient, granteeAddress, expiresAt, sessionVerifierAddress) {
210
+ return grantSessionKey({
211
+ chainId: this.chainId,
212
+ incoLiteAddress: this.executorAddress,
213
+ sessionVerifierContractAddress: parseAddress(sessionVerifierAddress),
214
+ granteeAddress: parseAddress(granteeAddress),
215
+ sharerWalletClient: walletClient,
216
+ expiresAt,
217
+ });
218
+ }
219
+ /**
220
+ * Creates a session key reencryptor for secure data reencryption operations.
221
+ *
222
+ * This method returns a reencryptor instance that can be used to perform reencryption
223
+ * operations using session keys. The reencryptor is configured with the provided
224
+ * allowance voucher and ephemeral keypair for secure communication.
225
+ *
226
+ * @param allowanceVoucherWithSig - The signed allowance voucher obtained from grantSessionKeyAllowanceVoucher
227
+ * @param ephemeralKeypair - The ephemeral keypair used for secure communication with the KMS make sure it has allowance to voucher
228
+ * @returns A reencryptor instance configured for session key operations
229
+ *
230
+ * @example
231
+ * ```typescript
232
+ * const reencryptor = await lightning.getSessionKeyRencryptor(voucher, ephemeralKeypair);
233
+ * const decryptedValue = await reencryptor({handle: resultHandle});
234
+ * ```
235
+ */
236
+ getSessionKeyRencryptor(allowanceVoucherWithSig, ephemeralKeypair) {
237
+ return sessionKeyReencryptor({
238
+ chainId: this.chainId,
239
+ kmsConnectRpcEndpointOrClient: this.kmsClient,
240
+ ephemeralKeypair,
241
+ allowanceVoucherWithSig,
242
+ });
243
+ }
244
+ /**
245
+ * Updates the active session nonce for the given wallet client.
246
+ *
247
+ * This method updates the active session nonce for the given wallet client.
248
+ * It nullifies all the previous shared addresses accessing the voucher.
249
+ *
250
+ * @param walletClient - The wallet client used for updating the session nonce
251
+ * @returns The transaction hash of the updateActiveVouchersSessionNonce transaction
252
+ */
253
+ updateActiveVouchersSessionNonce(walletClient) {
254
+ return updateActiveVouchersSessionNonce(this.executorAddress, walletClient);
255
+ }
256
+ /**
257
+ * Get an attested decryptor for the given wallet client.
258
+ *
259
+ * @param walletClient - The wallet client used for signing the attested decrypt request
260
+ * @param handles - The handles to decrypt
261
+ * @param backoffConfig - The backoff configuration for the attested decrypt request
262
+ * @returns The decryption attestations
263
+ *
264
+ * @example
265
+ * ```typescript
266
+ * const response = await lightning.attestedDecrypt(walletClient, [handle1, handle2]);
267
+ * const { plaintext, covalidatorSignature } = response[0];
268
+ * ```
269
+ */
270
+ attestedDecrypt(walletClient, handles, backoffConfig) {
271
+ return attestedDecrypt({
272
+ handles,
273
+ backoffConfig,
274
+ chainId: Number(this.chainId),
275
+ walletClient,
276
+ kmsConnectRpcEndpointOrClient: this.kmsClient,
277
+ });
278
+ }
279
+ /**
280
+ * Get an attested compute for the given wallet client.
281
+ *
282
+ * @param walletClient - The wallet client used for signing the attested compute request
283
+ * @param lhsHandle - The handle to compute
284
+ * @param op - The operation to perform
285
+ * @param rhsPlaintext - The plaintext to compute with
286
+ * @param backoffConfig - The backoff configuration for the attested compute request
287
+ * @returns The decryption attestation
288
+ *
289
+ * @example
290
+ * ```typescript
291
+ * import { AttestedComputeSupportedOps } from '../lite/attested-compute.js';
292
+ * const lhsHandle = '0x...';
293
+ * const rhsPlaintext = 1337n;
294
+ * const op = AttestedComputeSupportedOps.Eq;
295
+ * const response = await lightning.attestedCompute(walletClient, lhsHandle, op, rhsPlaintext);
296
+ * const { plaintext, covalidatorSignature, handle } = response;
297
+ * ```
298
+ */
299
+ attestedCompute(walletClient, lhsHandle, op, rhsPlaintext, backoffConfig) {
300
+ return attestedCompute({
301
+ walletClient,
302
+ kmsConnectRpcEndpointOrClient: this.kmsClient,
303
+ chainId: Number(this.chainId),
304
+ lhsHandle,
305
+ op,
306
+ rhsPlaintext,
307
+ backoffConfig,
308
+ });
309
+ }
183
310
  /**
184
311
  * Get the GRPC endpoint for the covalidator that services this deployment.
185
312
  */
@@ -210,4 +337,4 @@ export class Lightning {
210
337
  }
211
338
  }
212
339
  }
213
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlnaHRuaW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpdGUvbGlnaHRuaW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2xDLE9BQU8sRUFBa0IsVUFBVSxFQUEyQixNQUFNLE1BQU0sQ0FBQztBQUMzRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzFDLE9BQU8sRUFBVyxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ2hFLE9BQU8sRUFBZSxpQkFBaUIsRUFBMEIsTUFBTSx3QkFBd0IsQ0FBQztBQUVoRyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzNDLE9BQU8sRUFBZ0IsYUFBYSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFaEUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNyQyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsd0JBQXdCLEVBQUUsaUJBQWlCLEVBQW9CLE1BQU0sWUFBWSxDQUFDO0FBQ3JILE9BQU8sRUFBRSxZQUFZLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQXdCbkUsTUFBTSxhQUFhLEdBQW9CLFNBQVMsQ0FBQztBQXVCakQ7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLFNBQVM7SUFVRDtJQUNEO0lBVkYsZUFBZSxDQUFVO0lBQ3pCLGNBQWMsQ0FBWTtJQUMxQixPQUFPLENBQVM7SUFFZixTQUFTLENBQXlCO0lBQ2xDLGdCQUFnQixDQUFtQjtJQUNuQyxTQUFTLENBQTRCO0lBRXRELFlBQ21CLFdBQWMsRUFDZixjQUFzQjtRQURyQixnQkFBVyxHQUFYLFdBQVcs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
340
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlnaHRuaW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpdGUvbGlnaHRuaW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2xDLE9BQU8sRUFBa0IsVUFBVSxFQUEyQixNQUFNLE1BQU0sQ0FBQztBQUMzRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzFDLE9BQU8sRUFDTCxlQUFlLEVBQ2YscUJBQXFCLEVBQ3JCLGdDQUFnQyxHQUNqQyxNQUFNLCtCQUErQixDQUFDO0FBRXZDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUV6RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFFekUsT0FBTyxFQUFXLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFaEUsT0FBTyxFQUFlLGlCQUFpQixFQUE0QyxNQUFNLHdCQUF3QixDQUFDO0FBRWxILE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDM0MsT0FBTyxFQUFnQixhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUdoRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3JDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSx3QkFBd0IsRUFBRSxpQkFBaUIsRUFBb0IsTUFBTSxZQUFZLENBQUM7QUFDckgsT0FBTyxFQUFFLFlBQVksRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBd0JuRSxNQUFNLGFBQWEsR0FBb0IsU0FBUyxDQUFDO0FBdUJqRDs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sU0FBUztJQVVE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
@@ -15,7 +15,7 @@ export declare const LocalNodeEnv: Schema.Struct<{
15
15
  COVALIDATOR_INCO_EXECUTOR_ADDR: Schema.brand<Schema.filter<Schema.TemplateLiteral<`0x${string}`>>, "Address">;
16
16
  COVALIDATOR_DECRYPTION_HANDLER_ADDR: Schema.brand<Schema.filter<Schema.TemplateLiteral<`0x${string}`>>, "Address">;
17
17
  COVALIDATOR_HOST_CHAIN_ID: Schema.optional<typeof Schema.String>;
18
- COVALIDATOR_GRPC_SERVER_ADDRESS: Schema.optional<typeof Schema.String>;
18
+ COVALIDATOR_URL: Schema.optional<typeof Schema.String>;
19
19
  COVALIDATOR_HOST_CHAIN_RPC_URL: Schema.optional<typeof Schema.String>;
20
20
  }>;
21
21
  export type LocalNodeEnv = typeof LocalNodeEnv.Type;
@@ -1,6 +1,6 @@
1
1
  import * as dotenv from '@dotenvx/dotenvx';
2
- import { Address, HexString } from '@inco/pega/lib/hex';
3
2
  import { Schema } from 'effect';
3
+ import { Address, HexString } from '../binary.js';
4
4
  export const LocalNodeEnv = Schema.Struct({
5
5
  DEPLOYER_ADDRESS: Address,
6
6
  STATE_DUMP: Schema.String,
@@ -17,7 +17,7 @@ export const LocalNodeEnv = Schema.Struct({
17
17
  COVALIDATOR_INCO_EXECUTOR_ADDR: Address,
18
18
  COVALIDATOR_DECRYPTION_HANDLER_ADDR: Address,
19
19
  COVALIDATOR_HOST_CHAIN_ID: Schema.optional(Schema.String),
20
- COVALIDATOR_GRPC_SERVER_ADDRESS: Schema.optional(Schema.String),
20
+ COVALIDATOR_URL: Schema.optional(Schema.String),
21
21
  COVALIDATOR_HOST_CHAIN_RPC_URL: Schema.optional(Schema.String),
22
22
  });
23
23
  // Parses a local environment file or object into a LocalNodeEnv type.
@@ -26,4 +26,4 @@ export function parseLocalEnv(envFileOrObj) {
26
26
  const envObj = envFileOrObj ? dotenv.parse(envFileOrObj) : process.env;
27
27
  return Schema.decodeUnknownSync(LocalNodeEnv)(envObj);
28
28
  }
29
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWwtbm9kZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9sb2NhbC9sb2NhbC1ub2RlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxNQUFNLE1BQU0sa0JBQWtCLENBQUM7QUFDM0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBRWhDLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDO0lBQ3hDLGdCQUFnQixFQUFFLE9BQU87SUFDekIsVUFBVSxFQUFFLE1BQU0sQ0FBQyxNQUFNO0lBQ3pCLGdCQUFnQixFQUFFLE9BQU87SUFDekIsZ0JBQWdCLEVBQUUsU0FBUztJQUMzQixnQkFBZ0IsRUFBRSxTQUFTO0lBQzNCLGNBQWMsRUFBRSxPQUFPO0lBQ3ZCLGtCQUFrQixFQUFFLFNBQVM7SUFDN0IsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNO0lBQ3JCLDZCQUE2QixFQUFFLFNBQVM7SUFDeEMsc0NBQXNDLEVBQUUsU0FBUztJQUNqRCxnQ0FBZ0MsRUFBRSxTQUFTO0lBQzNDLG9CQUFvQixFQUFFLE9BQU87SUFDN0IsOEJBQThCLEVBQUUsT0FBTztJQUN2QyxtQ0FBbUMsRUFBRSxPQUFPO0lBQzVDLHlCQUF5QixFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztJQUN6RCwrQkFBK0IsRUFBRSxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7SUFDL0QsOEJBQThCLEVBQUUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDO0NBQy9ELENBQUMsQ0FBQztBQUlILHNFQUFzRTtBQUN0RSxnRUFBZ0U7QUFDaEUsTUFBTSxVQUFVLGFBQWEsQ0FBQyxZQUE4QjtJQUMxRCxNQUFNLE1BQU0sR0FBRyxZQUFZLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUM7SUFDdkUsT0FBTyxNQUFNLENBQUMsaUJBQWlCLENBQUMsWUFBWSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDeEQsQ0FBQyJ9
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWwtbm9kZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9sb2NhbC9sb2NhbC1ub2RlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxNQUFNLE1BQU0sa0JBQWtCLENBQUM7QUFDM0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNoQyxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUVsRCxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQztJQUN4QyxnQkFBZ0IsRUFBRSxPQUFPO0lBQ3pCLFVBQVUsRUFBRSxNQUFNLENBQUMsTUFBTTtJQUN6QixnQkFBZ0IsRUFBRSxPQUFPO0lBQ3pCLGdCQUFnQixFQUFFLFNBQVM7SUFDM0IsZ0JBQWdCLEVBQUUsU0FBUztJQUMzQixjQUFjLEVBQUUsT0FBTztJQUN2QixrQkFBa0IsRUFBRSxTQUFTO0lBQzdCLE1BQU0sRUFBRSxNQUFNLENBQUMsTUFBTTtJQUNyQiw2QkFBNkIsRUFBRSxTQUFTO0lBQ3hDLHNDQUFzQyxFQUFFLFNBQVM7SUFDakQsZ0NBQWdDLEVBQUUsU0FBUztJQUMzQyxvQkFBb0IsRUFBRSxPQUFPO0lBQzdCLDhCQUE4QixFQUFFLE9BQU87SUFDdkMsbUNBQW1DLEVBQUUsT0FBTztJQUM1Qyx5QkFBeUIsRUFBRSxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7SUFDekQsZUFBZSxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztJQUMvQyw4QkFBOEIsRUFBRSxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7Q0FDL0QsQ0FBQyxDQUFDO0FBSUgsc0VBQXNFO0FBQ3RFLGdFQUFnRTtBQUNoRSxNQUFNLFVBQVUsYUFBYSxDQUFDLFlBQThCO0lBQzFELE1BQU0sTUFBTSxHQUFHLFlBQVksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQztJQUN2RSxPQUFPLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUN4RCxDQUFDIn0=
@@ -0,0 +1,2 @@
1
+ export * from './session-key.js';
2
+ export * from './types.js';
@@ -0,0 +1,28 @@
1
+ import type { Client } from '@connectrpc/connect';
2
+ import { type Account, type Address, type Chain, type Hex, type Transport, type WalletClient } from 'viem';
3
+ import { type EciesScheme, SupportedFheType } from '../encryption/encryption.js';
4
+ import type { KmsService, Secp256k1Keypair } from '../lite/index.js';
5
+ import { type ReencryptFnArgs } from '../reencryption/index.js';
6
+ import type { AllowanceVoucher, AllowanceVoucherWithSig } from './types.js';
7
+ export interface Session {
8
+ decrypter: Address;
9
+ expiresAt: bigint;
10
+ }
11
+ export declare function createAllowanceVoucher(incoLiteAddress: Address, sharerWalletClient: WalletClient<Transport, Chain, Account>, verifyingContract: Address, callFunction: Hex, sharerArgData: Hex): Promise<AllowanceVoucher>;
12
+ export interface GrantSessionKeyArgs {
13
+ chainId: bigint;
14
+ incoLiteAddress: Address;
15
+ sessionVerifierContractAddress: Address;
16
+ granteeAddress: Address;
17
+ sharerWalletClient: WalletClient<Transport, Chain, Account>;
18
+ expiresAt: Date;
19
+ }
20
+ export declare function grantSessionKey({ chainId, incoLiteAddress, sessionVerifierContractAddress, granteeAddress, sharerWalletClient, expiresAt, }: GrantSessionKeyArgs): Promise<AllowanceVoucherWithSig>;
21
+ export interface SessionKeyReencryptorArgs {
22
+ chainId: bigint;
23
+ ephemeralKeypair: Secp256k1Keypair;
24
+ kmsConnectRpcEndpointOrClient: string | Client<typeof KmsService>;
25
+ allowanceVoucherWithSig: AllowanceVoucherWithSig;
26
+ }
27
+ 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>>)>;
28
+ export declare function updateActiveVouchersSessionNonce(incoLiteAddress: Address, sharerWalletClient: WalletClient<Transport, Chain, Account>): Promise<`0x${string}`>;
@@ -0,0 +1,15 @@
1
+ import { Address, Hex } from 'viem';
2
+ export type AllowanceVoucher = {
3
+ sessionNonce: Hex;
4
+ verifyingContract: Address;
5
+ callFunction: Hex;
6
+ sharerArgData: Hex;
7
+ };
8
+ export interface AllowanceVoucherWithSig {
9
+ sharer: Address;
10
+ voucher: AllowanceVoucher;
11
+ voucherSignature: Hex;
12
+ }
13
+ export interface AllowanceProof extends AllowanceVoucherWithSig {
14
+ requesterArgData: Uint8Array;
15
+ }
@@ -1,8 +1,11 @@
1
1
  import type { Account, Chain, Transport, WalletClient } from 'viem';
2
+ import { DecryptionAttestation } from '../attesteddecrypt/types.js';
3
+ import { HexString } from '../binary.js';
2
4
  import { SupportedChainId } from '../chain.js';
3
- import { EciesScheme } from '../encryption/encryption.js';
5
+ import { EciesScheme, SupportedFheType } from '../encryption/encryption.js';
4
6
  import type { KmsClient } from '../kms/client.js';
5
- import { AttestedCompute } from './types.js';
7
+ import type { BackoffConfig } from '../retry.js';
8
+ import { AttestedComputeOP } from './types.js';
6
9
  /**
7
10
  * Arguments for creating an attested compute.
8
11
  */
@@ -21,18 +24,13 @@ export interface IncoLiteAttestedComputeArgs {
21
24
  * @throws {AttestedComputeError} If the creation fails
22
25
  *
23
26
  * @todo Support multiple operations in a single request.
24
- *
25
- * @example
26
- * ```typescript
27
- * const compute = await incoLiteAttestedCompute({
28
- * walletClient,
29
- * chainId: sepolia,
30
- * });
31
- * const decryptionAttestation = await compute({
32
- * lhsHandle: '0x...',
33
- * op: AttestedComputeSupportedOps.Eq,
34
- * rhsPlaintext: 1337n,
35
- * });
36
- * ```
37
27
  */
38
- export declare function incoLiteAttestedCompute({ kmsConnectRpcEndpointOrClient, chainId, walletClient, }: IncoLiteAttestedComputeArgs): AttestedCompute<EciesScheme>;
28
+ export declare function attestedCompute<T extends SupportedFheType>({ lhsHandle, op, rhsPlaintext, backoffConfig, walletClient, kmsConnectRpcEndpointOrClient, chainId, }: {
29
+ lhsHandle: HexString;
30
+ op: AttestedComputeOP;
31
+ rhsPlaintext: bigint | boolean;
32
+ backoffConfig?: Partial<BackoffConfig> | undefined;
33
+ walletClient: WalletClient<Transport, Chain, Account>;
34
+ kmsConnectRpcEndpointOrClient?: string | KmsClient;
35
+ chainId: SupportedChainId;
36
+ }): Promise<DecryptionAttestation<EciesScheme, T>>;
@@ -1,16 +1,18 @@
1
1
  import type { Account, Chain, Transport, WalletClient } from 'viem';
2
+ import { HexString } from '../binary.js';
2
3
  import { SupportedChainId } from '../chain.js';
3
- import { EciesScheme } from '../encryption/encryption.js';
4
+ import { EciesScheme, SupportedFheType } from '../encryption/encryption.js';
4
5
  import type { KmsClient } from '../kms/client.js';
5
- import { AttestedDecryptor } from './types.js';
6
+ import type { BackoffConfig } from '../retry.js';
7
+ import { DecryptionAttestation } from './types.js';
6
8
  /**
7
9
  * Validates a handle format.
8
10
  * @param handle - The handle to validate
9
11
  * @throws {AttestedDecryptError} If the handle format is invalid
10
12
  */
11
- export declare function validateHandle(handle: string): void;
13
+ export declare function validateHandle(handle: HexString): void;
12
14
  /**
13
- * Arguments for creating an attested decryptor.
15
+ * Arguments for creating an attested decrypt request.
14
16
  */
15
17
  export interface IncoLiteAttestedDecryptorArgs {
16
18
  /** The wallet used to interact with the blockchain and sign the decrypt request */
@@ -21,20 +23,17 @@ export interface IncoLiteAttestedDecryptorArgs {
21
23
  chainId: SupportedChainId;
22
24
  }
23
25
  /**
24
- * Creates an attested decryptor that can decrypt handles with an attached attestation from the covalidator.
25
- * @param args - The arguments for creating the decryptor
26
- * @returns A function that can decrypt handles using attestation
27
- * @throws {AttestedDecryptError} If the decryptor creation fails
26
+ * Decrypt multiple handles in a single attested request.
27
+ * Returns an array of attestations aligned with the response ordering.
28
28
  *
29
- * @todo Support multiple handles in a single request.
30
- *
31
- * @example
32
- * ```typescript
33
- * const decryptor = await incoLiteAttestedDecryptor({
34
- * walletClient,
35
- * chainId: sepolia,
36
- * });
37
- * const { plaintext, covalidatorSignature } = await decryptor({ handle: '0x...' });
38
- * ```
29
+ * @param args - The arguments for creating the attested decrypt function
30
+ * @returns A function that can decrypt handles and return an attestation
31
+ * @throws {AttestedDecryptError} If the creation fails
39
32
  */
40
- export declare function incoLiteAttestedDecryptor({ kmsConnectRpcEndpointOrClient, chainId, walletClient, }: IncoLiteAttestedDecryptorArgs): AttestedDecryptor<EciesScheme>;
33
+ export declare function attestedDecrypt({ handles, backoffConfig, walletClient, chainId, kmsConnectRpcEndpointOrClient, }: {
34
+ handles: HexString[];
35
+ backoffConfig?: Partial<BackoffConfig> | undefined;
36
+ walletClient: WalletClient<Transport, Chain, Account>;
37
+ chainId: SupportedChainId;
38
+ kmsConnectRpcEndpointOrClient?: string | KmsClient;
39
+ }): Promise<Array<DecryptionAttestation<EciesScheme, SupportedFheType>>>;
@@ -1,2 +1 @@
1
- export * from './attested-decrypt.js';
2
1
  export * from './types.js';