@inco/js 0.11.0-testnet-3 → 1.0.0-devnet-1

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 (100) hide show
  1. package/dist/cjs/advancedacl/session-key.d.ts +4 -3
  2. package/dist/cjs/advancedacl/session-key.js +16 -9
  3. package/dist/cjs/advancedacl/types.d.ts +1 -0
  4. package/dist/cjs/attestedcompute/attested-compute.d.ts +4 -4
  5. package/dist/cjs/attestedcompute/types.d.ts +9 -9
  6. package/dist/cjs/attestedcompute/types.js +20 -20
  7. package/dist/cjs/attesteddecrypt/attested-decrypt.d.ts +4 -4
  8. package/dist/cjs/attesteddecrypt/types.d.ts +5 -5
  9. package/dist/cjs/attestedreveal/attested-reveal.d.ts +2 -2
  10. package/dist/cjs/elistattesteddecrypt/elist-attested-decrypt.d.ts +5 -5
  11. package/dist/cjs/elistattesteddecrypt/types.d.ts +5 -5
  12. package/dist/cjs/encryption/encryption.d.ts +19 -16
  13. package/dist/cjs/encryption/encryption.js +6 -6
  14. package/dist/cjs/encryption/index.d.ts +1 -1
  15. package/dist/cjs/encryption/index.js +4 -4
  16. package/dist/cjs/generated/abis/lightning.d.ts +166 -1
  17. package/dist/cjs/generated/abis/lightning.js +141 -2
  18. package/dist/cjs/generated/abis/verifier.d.ts +62 -0
  19. package/dist/cjs/generated/abis/verifier.js +53 -1
  20. package/dist/cjs/generated/es/inco/covalidator/compute/v1/server_pb.d.ts +101 -107
  21. package/dist/cjs/generated/es/inco/covalidator/compute/v1/server_pb.js +93 -93
  22. package/dist/cjs/generated/es/inco/covalidator/compute/v1/types_pb.d.ts +6 -0
  23. package/dist/cjs/generated/es/inco/covalidator/compute/v1/types_pb.js +2 -2
  24. package/dist/cjs/generated/es/inco/kms/lite/v1/types_pb.d.ts +48 -41
  25. package/dist/cjs/generated/es/inco/kms/lite/v1/types_pb.js +43 -43
  26. package/dist/cjs/generated/lightning.d.ts +98 -0
  27. package/dist/cjs/generated/lightning.js +118 -18
  28. package/dist/cjs/generated/local-node.d.ts +7 -7
  29. package/dist/cjs/generated/local-node.js +7 -7
  30. package/dist/cjs/handle.d.ts +17 -15
  31. package/dist/cjs/handle.js +32 -19
  32. package/dist/cjs/index.d.ts +1 -1
  33. package/dist/cjs/index.js +2 -2
  34. package/dist/cjs/kms/quorumClient.d.ts +6 -6
  35. package/dist/cjs/lite/lightning.d.ts +20 -20
  36. package/dist/cjs/lite/lightning.js +4 -2
  37. package/dist/cjs/lite/xwing.js +1 -1
  38. package/dist/cjs/reencryption/types.d.ts +3 -3
  39. package/dist/esm/advancedacl/session-key.d.ts +4 -3
  40. package/dist/esm/advancedacl/session-key.js +15 -9
  41. package/dist/esm/advancedacl/types.d.ts +1 -0
  42. package/dist/esm/attestedcompute/attested-compute.d.ts +4 -4
  43. package/dist/esm/attestedcompute/types.d.ts +9 -9
  44. package/dist/esm/attestedcompute/types.js +20 -20
  45. package/dist/esm/attesteddecrypt/attested-decrypt.d.ts +4 -4
  46. package/dist/esm/attesteddecrypt/types.d.ts +5 -5
  47. package/dist/esm/attestedreveal/attested-reveal.d.ts +2 -2
  48. package/dist/esm/elistattesteddecrypt/elist-attested-decrypt.d.ts +5 -5
  49. package/dist/esm/elistattesteddecrypt/types.d.ts +5 -5
  50. package/dist/esm/encryption/encryption.d.ts +19 -16
  51. package/dist/esm/encryption/encryption.js +5 -5
  52. package/dist/esm/encryption/index.d.ts +1 -1
  53. package/dist/esm/encryption/index.js +1 -1
  54. package/dist/esm/generated/abis/lightning.d.ts +166 -1
  55. package/dist/esm/generated/abis/lightning.js +141 -2
  56. package/dist/esm/generated/abis/verifier.d.ts +62 -0
  57. package/dist/esm/generated/abis/verifier.js +53 -1
  58. package/dist/esm/generated/es/inco/covalidator/compute/v1/server_pb.d.ts +101 -107
  59. package/dist/esm/generated/es/inco/covalidator/compute/v1/server_pb.js +92 -92
  60. package/dist/esm/generated/es/inco/covalidator/compute/v1/types_pb.d.ts +6 -0
  61. package/dist/esm/generated/es/inco/covalidator/compute/v1/types_pb.js +2 -2
  62. package/dist/esm/generated/es/inco/kms/lite/v1/types_pb.d.ts +48 -41
  63. package/dist/esm/generated/es/inco/kms/lite/v1/types_pb.js +43 -43
  64. package/dist/esm/generated/lightning.d.ts +98 -0
  65. package/dist/esm/generated/lightning.js +118 -18
  66. package/dist/esm/generated/local-node.d.ts +7 -7
  67. package/dist/esm/generated/local-node.js +7 -7
  68. package/dist/esm/handle.d.ts +17 -15
  69. package/dist/esm/handle.js +31 -18
  70. package/dist/esm/index.d.ts +1 -1
  71. package/dist/esm/index.js +1 -1
  72. package/dist/esm/kms/quorumClient.d.ts +6 -6
  73. package/dist/esm/lite/lightning.d.ts +20 -20
  74. package/dist/esm/lite/lightning.js +4 -2
  75. package/dist/esm/lite/xwing.js +2 -2
  76. package/dist/esm/reencryption/types.d.ts +3 -3
  77. package/dist/types/advancedacl/session-key.d.ts +4 -3
  78. package/dist/types/advancedacl/types.d.ts +1 -0
  79. package/dist/types/attestedcompute/attested-compute.d.ts +4 -4
  80. package/dist/types/attestedcompute/types.d.ts +9 -9
  81. package/dist/types/attesteddecrypt/attested-decrypt.d.ts +4 -4
  82. package/dist/types/attesteddecrypt/types.d.ts +5 -5
  83. package/dist/types/attestedreveal/attested-reveal.d.ts +2 -2
  84. package/dist/types/elistattesteddecrypt/elist-attested-decrypt.d.ts +5 -5
  85. package/dist/types/elistattesteddecrypt/types.d.ts +5 -5
  86. package/dist/types/encryption/encryption.d.ts +19 -16
  87. package/dist/types/encryption/index.d.ts +1 -1
  88. package/dist/types/generated/abis/lightning.d.ts +166 -1
  89. package/dist/types/generated/abis/verifier.d.ts +62 -0
  90. package/dist/types/generated/es/inco/covalidator/compute/v1/server_pb.d.ts +101 -107
  91. package/dist/types/generated/es/inco/covalidator/compute/v1/types_pb.d.ts +6 -0
  92. package/dist/types/generated/es/inco/kms/lite/v1/types_pb.d.ts +48 -41
  93. package/dist/types/generated/lightning.d.ts +98 -0
  94. package/dist/types/generated/local-node.d.ts +7 -7
  95. package/dist/types/handle.d.ts +17 -15
  96. package/dist/types/index.d.ts +1 -1
  97. package/dist/types/kms/quorumClient.d.ts +6 -6
  98. package/dist/types/lite/lightning.d.ts +20 -20
  99. package/dist/types/reencryption/types.d.ts +3 -3
  100. package/package.json +1 -1
@@ -2,13 +2,14 @@ import { type Account, type Address, type Chain, type Hex, PublicClient, type Tr
2
2
  import type { PrivateKeyAccount } from 'viem/accounts';
3
3
  import { DecryptionAttestation, EncryptedDecryptionAttestation } from '../attesteddecrypt/index.js';
4
4
  import { SupportedChainId } from '../chain.js';
5
- import { EncryptionScheme, SupportedFheType } from '../encryption/encryption.js';
5
+ import { EncryptionScheme, SupportedTeeType } from '../encryption/encryption.js';
6
6
  import { HexString } from '../index.js';
7
7
  import { type XwingKeypair } from '../lite/xwing.js';
8
8
  import { BackoffConfig } from '../retry.js';
9
9
  import type { AllowanceVoucher, AllowanceVoucherWithSig } from './types.js';
10
10
  import { AttestedComputeOP } from '../attestedcompute/types.js';
11
11
  import { KmsQuorumClient } from '../kms/quorumClient.js';
12
+ export declare const SESSION_KEY_WARNING = "Inco Warning: signing this message may leak your private data, including from unrelated apps. Sign only if you fully trust this app.";
12
13
  export interface Session {
13
14
  decrypter: Address;
14
15
  expiresAt: bigint;
@@ -47,7 +48,7 @@ export interface SessionKeyAttestedComputeArgs {
47
48
  reencryptPubKey?: Uint8Array | undefined;
48
49
  reencryptKeypair?: XwingKeypair | undefined;
49
50
  }
50
- export declare function sessionKeyAttestedCompute<T extends SupportedFheType>({ lhsHandle, op, rhsPlaintext, backoffConfig, chainId, kmsQuorumClient, ephemeralAccount, allowanceVoucherWithSig, requesterArgData, ethClient, executorAddress, reencryptPubKey, reencryptKeypair, }: SessionKeyAttestedComputeArgs): Promise<DecryptionAttestation<EncryptionScheme, SupportedFheType> | EncryptedDecryptionAttestation<EncryptionScheme, SupportedFheType>>;
51
+ export declare function sessionKeyAttestedCompute<T extends SupportedTeeType>({ lhsHandle, op, rhsPlaintext, backoffConfig, chainId, kmsQuorumClient, ephemeralAccount, allowanceVoucherWithSig, requesterArgData, ethClient, executorAddress, reencryptPubKey, reencryptKeypair, }: SessionKeyAttestedComputeArgs): Promise<DecryptionAttestation<EncryptionScheme, SupportedTeeType> | EncryptedDecryptionAttestation<EncryptionScheme, SupportedTeeType>>;
51
52
  export interface SessionKeyAttestedDecryptArgs {
52
53
  chainId: SupportedChainId;
53
54
  ephemeralAccount: PrivateKeyAccount;
@@ -91,4 +92,4 @@ export interface SessionKeyAttestedDecryptArgs {
91
92
  * );
92
93
  * ```
93
94
  */
94
- export declare function sessionKeyAttestedDecrypt({ chainId, kmsQuorumClient, handles, ephemeralAccount, allowanceVoucherWithSig, requesterArgData, backoffConfig, reencryptPubKey, reencryptKeypair, ethClient, executorAddress, }: SessionKeyAttestedDecryptArgs): Promise<Array<DecryptionAttestation<EncryptionScheme, SupportedFheType> | EncryptedDecryptionAttestation<EncryptionScheme, SupportedFheType>>>;
95
+ export declare function sessionKeyAttestedDecrypt({ chainId, kmsQuorumClient, handles, ephemeralAccount, allowanceVoucherWithSig, requesterArgData, backoffConfig, reencryptPubKey, reencryptKeypair, ethClient, executorAddress, }: SessionKeyAttestedDecryptArgs): Promise<Array<DecryptionAttestation<EncryptionScheme, SupportedTeeType> | EncryptedDecryptionAttestation<EncryptionScheme, SupportedTeeType>>>;
@@ -12,9 +12,15 @@ import { AttestedDecryptError } from '../attesteddecrypt/types.js';
12
12
  import { fetchEip712DomainVersion } from '../eip712/eip712.js';
13
13
  import { AttestedComputeRequestSchema, AttestedDecryptRequestSchema, } from '../generated/es/inco/kms/lite/v1/kms_service_pb.js';
14
14
  import { AllowanceProofSchema, AllowanceVoucherSchema, HandleWithProofSchema, IncoLiteAdvancedACLProofSchema, } from '../generated/es/inco/kms/lite/v1/types_pb.js';
15
+ // SessionKey is a special case of the SessionVerifier allowance, where the
16
+ // requester is an ephemeral keypair generated by the user, to use the same
17
+ // keypair for multiple reencryptions, expired after a certain time.
18
+ // Default warning message included in session vouchers. Displayed by wallets
19
+ // at signing time so users understand what they are granting access to.
20
+ export const SESSION_KEY_WARNING = 'Inco Warning: signing this message may leak your private data, including from unrelated apps. Sign only if you fully trust this app.';
15
21
  // Given a sharer's wallet client, an incoLite contract address, and a
16
22
  // (verifyingContract, callFunction, sharerArgData) tuple, this function
17
- // creates an AllowanceVoucher.
23
+ // creates an AllowanceVoucher. The warning is always SESSION_KEY_WARNING.
18
24
  export async function createAllowanceVoucher(incoLiteAddress, sharerWalletClient, verifyingContract, callFunction, sharerArgData) {
19
25
  const verifier = await getIncoVerifier(incoLiteAddress, sharerWalletClient);
20
26
  // The session nonce in the AllowanceVoucher must match the current active
@@ -27,9 +33,11 @@ export async function createAllowanceVoucher(incoLiteAddress, sharerWalletClient
27
33
  verifyingContract,
28
34
  callFunction,
29
35
  sharerArgData,
36
+ warning: SESSION_KEY_WARNING,
30
37
  };
31
38
  }
32
- // Let the sharer grant a session to the requester.
39
+ // Let the sharer grant a session key to the requester.
40
+ // The session grants temporary access to ALL of the sharer's encrypted handles.
33
41
  export async function grantSessionKey({ chainId, incoLiteAddress, sessionVerifierContractAddress, granteeAddress, sharerWalletClient, expiresAt, }) {
34
42
  // Validate that expiresAt is a valid Date object
35
43
  if (!(expiresAt instanceof Date) || isNaN(expiresAt.getTime())) {
@@ -41,13 +49,9 @@ export async function grantSessionKey({ chainId, incoLiteAddress, sessionVerifie
41
49
  if (expiresAtMs < nowMs) {
42
50
  throw new Error('expiresAt must be in the future');
43
51
  }
44
- const session = {
45
- decrypter: granteeAddress,
46
- expiresAt: BigInt(Math.floor(expiresAtMs / 1000)),
47
- };
48
52
  const sharerArgData = encodeAbiParameters(getSessionAbi(), [
49
- session.decrypter,
50
- session.expiresAt,
53
+ granteeAddress,
54
+ BigInt(Math.floor(expiresAtMs / 1000)),
51
55
  ]);
52
56
  const incoVerifier = await getIncoVerifier(incoLiteAddress, sharerWalletClient);
53
57
  // returned by read.eip712Domain():
@@ -180,6 +184,7 @@ export async function sessionKeyAttestedCompute({ lhsHandle, op, rhsPlaintext, b
180
184
  verifyingContract: allowanceVoucherWithSig.voucher.verifyingContract,
181
185
  callFunction: hexToBytes(allowanceVoucherWithSig.voucher.callFunction),
182
186
  sharerArgData: hexToBytes(allowanceVoucherWithSig.voucher.sharerArgData),
187
+ warning: allowanceVoucherWithSig.voucher.warning,
183
188
  }),
184
189
  voucherSignature: hexToBytes(allowanceVoucherWithSig.voucherSignature),
185
190
  // For DefaultSessionVerifier, the requesterArgData is empty.
@@ -270,6 +275,7 @@ export async function sessionKeyAttestedDecrypt({ chainId, kmsQuorumClient, hand
270
275
  verifyingContract: allowanceVoucherWithSig.voucher.verifyingContract,
271
276
  callFunction: hexToBytes(allowanceVoucherWithSig.voucher.callFunction),
272
277
  sharerArgData: hexToBytes(allowanceVoucherWithSig.voucher.sharerArgData),
278
+ warning: allowanceVoucherWithSig.voucher.warning,
273
279
  }),
274
280
  voucherSignature: hexToBytes(allowanceVoucherWithSig.voucherSignature),
275
281
  // For DefaultSessionVerifier, the requesterArgData is empty.
@@ -358,4 +364,4 @@ async function getIncoVerifier(incoLiteAddress, walletClient) {
358
364
  client: walletClient,
359
365
  });
360
366
  }
361
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbi1rZXkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYWR2YW5jZWRhY2wvc2Vzc2lvbi1rZXkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzVDLE9BQU8sRUFHTCxVQUFVLEVBRVYsbUJBQW1CLEVBQ25CLFdBQVcsRUFFWCxVQUFVLEVBRVYsa0JBQWtCLEdBR25CLE1BQU0sTUFBTSxDQUFDO0FBV2QsT0FBTyxFQUNMLFlBQVksRUFDWix3QkFBd0IsRUFDeEIsZ0JBQWdCLEVBQ2hCLGtCQUFrQixHQUNuQixNQUFNLGdDQUFnQyxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNoRSxPQUFPLEVBQUUsZUFBZSxFQUFhLE1BQU0sYUFBYSxDQUFDO0FBTXpELE9BQU8sRUFDTCw0QkFBNEIsRUFDNUIsNEJBQTRCLEdBQzdCLE1BQU0sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxFQUFFLHdCQUF3QixFQUFxQixNQUFNLGtCQUFrQixDQUFDO0FBQy9FLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBSS9ELE9BQU8sRUFDTCxvQkFBb0IsR0FFckIsTUFBTSw2QkFBNkIsQ0FBQztBQUNyQyxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUN0RixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMvRCxPQUFPLEVBQ0wsNEJBQTRCLEVBQzVCLDRCQUE0QixHQUM3QixNQUFNLG9EQUFvRCxDQUFDO0FBQzVELE9BQU8sRUFDTCxvQkFBb0IsRUFDcEIsc0JBQXNCLEVBQ3RCLHFCQUFxQixFQUNyQiw4QkFBOEIsR0FDL0IsTUFBTSw4Q0FBOEMsQ0FBQztB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
367
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbi1rZXkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYWR2YW5jZWRhY2wvc2Vzc2lvbi1rZXkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzVDLE9BQU8sRUFHTCxVQUFVLEVBRVYsbUJBQW1CLEVBQ25CLFdBQVcsRUFFWCxVQUFVLEVBRVYsa0JBQWtCLEdBR25CLE1BQU0sTUFBTSxDQUFDO0FBV2QsT0FBTyxFQUNMLFlBQVksRUFDWix3QkFBd0IsRUFDeEIsZ0JBQWdCLEVBQ2hCLGtCQUFrQixHQUNuQixNQUFNLGdDQUFnQyxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNoRSxPQUFPLEVBQUUsZUFBZSxFQUFhLE1BQU0sYUFBYSxDQUFDO0FBTXpELE9BQU8sRUFDTCw0QkFBNEIsRUFDNUIsNEJBQTRCLEdBQzdCLE1BQU0sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxFQUFFLHdCQUF3QixFQUFxQixNQUFNLGtCQUFrQixDQUFDO0FBQy9FLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBSS9ELE9BQU8sRUFDTCxvQkFBb0IsR0FFckIsTUFBTSw2QkFBNkIsQ0FBQztBQUNyQyxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUN0RixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMvRCxPQUFPLEVBQ0wsNEJBQTRCLEVBQzVCLDRCQUE0QixHQUM3QixNQUFNLG9EQUFvRCxDQUFDO0FBQzVELE9BQU8sRUFDTCxvQkFBb0IsRUFDcEIsc0JBQXNCLEVBQ3RCLHFCQUFxQixFQUNyQiw4QkFBOEIsR0FDL0IsTUFBTSw4Q0FBOEMsQ0FBQztB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
@@ -4,6 +4,7 @@ export type AllowanceVoucher = {
4
4
  verifyingContract: Address;
5
5
  callFunction: Hex;
6
6
  sharerArgData: Hex;
7
+ warning: string;
7
8
  };
8
9
  export interface AllowanceVoucherWithSig {
9
10
  sharer: Address;
@@ -2,7 +2,7 @@ import type { Account, Chain, Transport, WalletClient } from 'viem';
2
2
  import { DecryptionAttestation, EncryptedDecryptionAttestation } from '../attesteddecrypt/types.js';
3
3
  import { HexString } from '../binary.js';
4
4
  import { SupportedChainId } from '../chain.js';
5
- import type { EncryptionScheme, SupportedFheType } from '../encryption/encryption.js';
5
+ import type { EncryptionScheme, SupportedTeeType } from '../encryption/encryption.js';
6
6
  import { KmsQuorumClient } from '../kms/quorumClient.js';
7
7
  import { type XwingKeypair } from '../lite/xwing.js';
8
8
  import type { BackoffConfig } from '../retry.js';
@@ -27,7 +27,7 @@ export interface IncoLiteAttestedComputeArgs {
27
27
  *
28
28
  * @todo Support multiple operations in a single request.
29
29
  */
30
- export declare function attestedCompute<T extends SupportedFheType>({ executorAddress, lhsHandle, op, rhsPlaintext, backoffConfig, walletClient, kmsQuorumClient, chainId, reencryptPubKey, reencryptKeypair, }: {
30
+ export declare function attestedCompute<T extends SupportedTeeType>({ executorAddress, lhsHandle, op, rhsPlaintext, backoffConfig, walletClient, kmsQuorumClient, chainId, reencryptPubKey, reencryptKeypair, }: {
31
31
  executorAddress: HexString;
32
32
  lhsHandle: HexString;
33
33
  op: AttestedComputeOP;
@@ -39,7 +39,7 @@ export declare function attestedCompute<T extends SupportedFheType>({ executorAd
39
39
  reencryptPubKey: Uint8Array;
40
40
  reencryptKeypair: XwingKeypair;
41
41
  }): Promise<DecryptionAttestation<EncryptionScheme, T>>;
42
- export declare function attestedCompute<T extends SupportedFheType>({ executorAddress, lhsHandle, op, rhsPlaintext, backoffConfig, walletClient, kmsQuorumClient, chainId, reencryptPubKey, }: {
42
+ export declare function attestedCompute<T extends SupportedTeeType>({ executorAddress, lhsHandle, op, rhsPlaintext, backoffConfig, walletClient, kmsQuorumClient, chainId, reencryptPubKey, }: {
43
43
  executorAddress: HexString;
44
44
  lhsHandle: HexString;
45
45
  op: AttestedComputeOP;
@@ -51,7 +51,7 @@ export declare function attestedCompute<T extends SupportedFheType>({ executorAd
51
51
  reencryptPubKey: Uint8Array;
52
52
  reencryptKeypair?: never;
53
53
  }): Promise<EncryptedDecryptionAttestation<EncryptionScheme, T>>;
54
- export declare function attestedCompute<T extends SupportedFheType>({ executorAddress, lhsHandle, op, rhsPlaintext, backoffConfig, walletClient, kmsQuorumClient, chainId, }: {
54
+ export declare function attestedCompute<T extends SupportedTeeType>({ executorAddress, lhsHandle, op, rhsPlaintext, backoffConfig, walletClient, kmsQuorumClient, chainId, }: {
55
55
  executorAddress: HexString;
56
56
  lhsHandle: HexString;
57
57
  op: AttestedComputeOP;
@@ -1,18 +1,18 @@
1
1
  import type { DecryptionAttestation } from '../attesteddecrypt/types.js';
2
2
  import { HexString } from '../binary.js';
3
- import { EncryptionScheme, SupportedFheType } from '../encryption/encryption.js';
3
+ import { EncryptionScheme, SupportedTeeType } from '../encryption/encryption.js';
4
4
  import { SupportedScalarBinaryOp } from '../generated/es/inco/kms/lite/v1/types_pb.js';
5
5
  import type { BackoffConfig } from '../retry.js';
6
6
  /**
7
7
  * Supported attested compute operations.
8
8
  */
9
9
  export declare const AttestedComputeSupportedOps: {
10
- readonly Eq: SupportedScalarBinaryOp.FHE_EQ;
11
- readonly Ne: SupportedScalarBinaryOp.FHE_NE;
12
- readonly Ge: SupportedScalarBinaryOp.FHE_GE;
13
- readonly Gt: SupportedScalarBinaryOp.FHE_GT;
14
- readonly Le: SupportedScalarBinaryOp.FHE_LE;
15
- readonly Lt: SupportedScalarBinaryOp.FHE_LT;
10
+ readonly Eq: SupportedScalarBinaryOp.TEE_EQ;
11
+ readonly Ne: SupportedScalarBinaryOp.TEE_NE;
12
+ readonly Ge: SupportedScalarBinaryOp.TEE_GE;
13
+ readonly Gt: SupportedScalarBinaryOp.TEE_GT;
14
+ readonly Le: SupportedScalarBinaryOp.TEE_LE;
15
+ readonly Lt: SupportedScalarBinaryOp.TEE_LT;
16
16
  };
17
17
  /**
18
18
  * This type represents all the supported operations for attested compute.
@@ -25,8 +25,8 @@ export declare class AttestedComputeError extends Error {
25
25
  readonly cause?: unknown | undefined;
26
26
  constructor(message: string, cause?: unknown | undefined);
27
27
  }
28
- export type AttestedCompute<S extends EncryptionScheme> = <T extends SupportedFheType>(args: AttestedComputeFnArgs<S, T>) => Promise<DecryptionAttestation<S, T>>;
29
- export type AttestedComputeFnArgs<S extends EncryptionScheme, T extends SupportedFheType> = {
28
+ export type AttestedCompute<S extends EncryptionScheme> = <T extends SupportedTeeType>(args: AttestedComputeFnArgs<S, T>) => Promise<DecryptionAttestation<S, T>>;
29
+ export type AttestedComputeFnArgs<S extends EncryptionScheme, T extends SupportedTeeType> = {
30
30
  /** The handle to compute on */
31
31
  lhsHandle: HexString;
32
32
  op: AttestedComputeOP;
@@ -4,28 +4,28 @@ import { SupportedScalarBinaryOp } from '../generated/es/inco/kms/lite/v1/types_
4
4
  */
5
5
  export const AttestedComputeSupportedOps = {
6
6
  /*
7
- Add: SupportedScalarBinaryOp.FHE_ADD,
8
- Sub: SupportedScalarBinaryOp.FHE_SUB,
9
- Mul: SupportedScalarBinaryOp.FHE_MUL,
10
- Div: SupportedScalarBinaryOp.FHE_DIV,
11
- Rem: SupportedScalarBinaryOp.FHE_REM,
12
- BitAnd: SupportedScalarBinaryOp.FHE_BIT_AND,
13
- BitOr: SupportedScalarBinaryOp.FHE_BIT_OR,
14
- BitXor: SupportedScalarBinaryOp.FHE_BIT_XOR,
15
- Shl: SupportedScalarBinaryOp.FHE_SHL,
16
- Shr: SupportedScalarBinaryOp.FHE_SHR,
17
- Rotl: SupportedScalarBinaryOp.FHE_ROTL,
18
- Rotr: SupportedScalarBinaryOp.FHE_ROTR,
7
+ Add: SupportedScalarBinaryOp.TEE_ADD,
8
+ Sub: SupportedScalarBinaryOp.TEE_SUB,
9
+ Mul: SupportedScalarBinaryOp.TEE_MUL,
10
+ Div: SupportedScalarBinaryOp.TEE_DIV,
11
+ Rem: SupportedScalarBinaryOp.TEE_REM,
12
+ BitAnd: SupportedScalarBinaryOp.TEE_BIT_AND,
13
+ BitOr: SupportedScalarBinaryOp.TEE_BIT_OR,
14
+ BitXor: SupportedScalarBinaryOp.TEE_BIT_XOR,
15
+ Shl: SupportedScalarBinaryOp.TEE_SHL,
16
+ Shr: SupportedScalarBinaryOp.TEE_SHR,
17
+ Rotl: SupportedScalarBinaryOp.TEE_ROTL,
18
+ Rotr: SupportedScalarBinaryOp.TEE_ROTR,
19
19
  */
20
- Eq: SupportedScalarBinaryOp.FHE_EQ,
21
- Ne: SupportedScalarBinaryOp.FHE_NE,
22
- Ge: SupportedScalarBinaryOp.FHE_GE,
23
- Gt: SupportedScalarBinaryOp.FHE_GT,
24
- Le: SupportedScalarBinaryOp.FHE_LE,
25
- Lt: SupportedScalarBinaryOp.FHE_LT,
20
+ Eq: SupportedScalarBinaryOp.TEE_EQ,
21
+ Ne: SupportedScalarBinaryOp.TEE_NE,
22
+ Ge: SupportedScalarBinaryOp.TEE_GE,
23
+ Gt: SupportedScalarBinaryOp.TEE_GT,
24
+ Le: SupportedScalarBinaryOp.TEE_LE,
25
+ Lt: SupportedScalarBinaryOp.TEE_LT,
26
26
  /*
27
- Min: SupportedScalarBinaryOp.FHE_MIN,
28
- Max: SupportedScalarBinaryOp.FHE_MAX,
27
+ Min: SupportedScalarBinaryOp.TEE_MIN,
28
+ Max: SupportedScalarBinaryOp.TEE_MAX,
29
29
  */
30
30
  };
31
31
  /**
@@ -1,7 +1,7 @@
1
1
  import type { Account, Chain, Transport, WalletClient } from 'viem';
2
2
  import { type HexString } from '../binary.js';
3
3
  import { type SupportedChainId } from '../chain.js';
4
- import { EncryptionScheme, type SupportedFheType } from '../encryption/encryption.js';
4
+ import { EncryptionScheme, type SupportedTeeType } from '../encryption/encryption.js';
5
5
  import { type HandleWithProof } from '../generated/es/inco/kms/lite/v1/types_pb.js';
6
6
  import { validateHandle } from '../handle.js';
7
7
  import { KmsQuorumClient } from '../kms/quorumClient.js';
@@ -38,7 +38,7 @@ export declare function attestedDecrypt({ handles, backoffConfig, walletClient,
38
38
  reencryptKeypair: XwingKeypair;
39
39
  kmsQuorumClient: KmsQuorumClient;
40
40
  executorAddress: HexString;
41
- }): Promise<Array<DecryptionAttestation<EncryptionScheme, SupportedFheType>>>;
41
+ }): Promise<Array<DecryptionAttestation<EncryptionScheme, SupportedTeeType>>>;
42
42
  /**
43
43
  * Decrypt multiple handles in a single attested request.
44
44
  * Returns an array of attestations aligned with the response ordering.
@@ -56,6 +56,6 @@ export declare function attestedDecrypt({ handles, backoffConfig, walletClient,
56
56
  reencryptKeypair?: never;
57
57
  kmsQuorumClient: KmsQuorumClient;
58
58
  executorAddress: HexString;
59
- }): Promise<Array<EncryptedDecryptionAttestation<EncryptionScheme, SupportedFheType>>>;
59
+ }): Promise<Array<EncryptedDecryptionAttestation<EncryptionScheme, SupportedTeeType>>>;
60
60
  export declare function buildHandlesWithProofs(handles: HexString[]): Array<HandleWithProof>;
61
- export declare function decryptEncryptedAttestations(attestations: Array<DecryptionAttestation<EncryptionScheme, SupportedFheType> | EncryptedDecryptionAttestation<EncryptionScheme, SupportedFheType>>, reencryptKeypair: XwingKeypair): Promise<Array<DecryptionAttestation<EncryptionScheme, SupportedFheType>>>;
61
+ export declare function decryptEncryptedAttestations(attestations: Array<DecryptionAttestation<EncryptionScheme, SupportedTeeType> | EncryptedDecryptionAttestation<EncryptionScheme, SupportedTeeType>>, reencryptKeypair: XwingKeypair): Promise<Array<DecryptionAttestation<EncryptionScheme, SupportedTeeType>>>;
@@ -1,5 +1,5 @@
1
1
  import type { HexString } from '../binary.js';
2
- import type { EncryptionScheme, EncryptResultOf, PlaintextOf, SupportedFheType } from '../encryption/encryption.js';
2
+ import type { EncryptionScheme, EncryptResultOf, PlaintextOf, SupportedTeeType } from '../encryption/encryption.js';
3
3
  import type { BackoffConfig } from '../retry.js';
4
4
  /**
5
5
  * Custom error class for attested decrypt operations.
@@ -8,19 +8,19 @@ export declare class AttestedDecryptError extends Error {
8
8
  readonly cause?: unknown | undefined;
9
9
  constructor(message: string, cause?: unknown | undefined);
10
10
  }
11
- export type DecryptionAttestation<S extends EncryptionScheme, T extends SupportedFheType> = {
11
+ export type DecryptionAttestation<S extends EncryptionScheme, T extends SupportedTeeType> = {
12
12
  handle: HexString;
13
13
  plaintext: PlaintextOf<S, T>;
14
14
  covalidatorSignatures: Uint8Array[];
15
15
  };
16
- export type EncryptedDecryptionAttestation<S extends EncryptionScheme, T extends SupportedFheType> = {
16
+ export type EncryptedDecryptionAttestation<S extends EncryptionScheme, T extends SupportedTeeType> = {
17
17
  handle: HexString;
18
18
  encryptedPlaintext: EncryptResultOf<S, T>;
19
19
  encryptedSignatures: Uint8Array[];
20
20
  covalidatorSignatures: Uint8Array[];
21
21
  };
22
- export type AttestedDecryptor<S extends EncryptionScheme> = <T extends SupportedFheType>(args: AttestedDecryptFnArgs<S, T>) => Promise<DecryptionAttestation<S, T>>;
23
- export type AttestedDecryptFnArgs<S extends EncryptionScheme, T extends SupportedFheType> = {
22
+ export type AttestedDecryptor<S extends EncryptionScheme> = <T extends SupportedTeeType>(args: AttestedDecryptFnArgs<S, T>) => Promise<DecryptionAttestation<S, T>>;
23
+ export type AttestedDecryptFnArgs<S extends EncryptionScheme, T extends SupportedTeeType> = {
24
24
  /** The handle to decrypt */
25
25
  handle: HexString;
26
26
  backoffConfig?: Partial<BackoffConfig>;
@@ -1,7 +1,7 @@
1
1
  import type { Chain, PublicClient, Transport } from 'viem';
2
2
  import type { DecryptionAttestation } from '../attesteddecrypt/types.js';
3
3
  import type { HexString } from '../binary.js';
4
- import type { EncryptionScheme, SupportedFheType } from '../encryption/encryption.js';
4
+ import type { EncryptionScheme, SupportedTeeType } from '../encryption/encryption.js';
5
5
  import type { KmsQuorumClient } from '../kms/quorumClient.js';
6
6
  import type { BackoffConfig } from '../retry.js';
7
7
  /**
@@ -18,4 +18,4 @@ export declare function attestedReveal({ handles, kmsQuorumClient, executorAddre
18
18
  executorAddress: HexString;
19
19
  publicClient: PublicClient<Transport, Chain>;
20
20
  backoffConfig?: Partial<BackoffConfig> | undefined;
21
- }): Promise<Array<DecryptionAttestation<EncryptionScheme, SupportedFheType>>>;
21
+ }): Promise<Array<DecryptionAttestation<EncryptionScheme, SupportedTeeType>>>;
@@ -2,7 +2,7 @@ import type { Account, Chain, Transport, WalletClient } from 'viem';
2
2
  import { validateHandle } from '../attesteddecrypt/attested-decrypt.js';
3
3
  import { type HexString } from '../binary.js';
4
4
  import { type SupportedChainId } from '../chain.js';
5
- import { type EncryptionScheme, type SupportedFheType } from '../encryption/encryption.js';
5
+ import { type EncryptionScheme, type SupportedTeeType } from '../encryption/encryption.js';
6
6
  import { KmsQuorumClient } from '../kms/quorumClient.js';
7
7
  import type { XwingKeypair } from '../lite/xwing.js';
8
8
  import type { BackoffConfig } from '../retry.js';
@@ -17,7 +17,7 @@ export declare function eListAttestedDecrypt({ handle, backoffConfig, walletClie
17
17
  reencryptKeypair: XwingKeypair;
18
18
  kmsQuorumClient: KmsQuorumClient;
19
19
  executorAddress: HexString;
20
- }): Promise<EListDecryptionAttestation<EncryptionScheme, SupportedFheType>>;
20
+ }): Promise<EListDecryptionAttestation<EncryptionScheme, SupportedTeeType>>;
21
21
  export declare function eListAttestedDecrypt({ handle, backoffConfig, walletClient, chainId, reencryptPubKey, kmsQuorumClient, executorAddress, }: {
22
22
  handle: HexString;
23
23
  backoffConfig?: Partial<BackoffConfig> | undefined;
@@ -27,7 +27,7 @@ export declare function eListAttestedDecrypt({ handle, backoffConfig, walletClie
27
27
  reencryptKeypair?: never;
28
28
  kmsQuorumClient: KmsQuorumClient;
29
29
  executorAddress: HexString;
30
- }): Promise<EncryptedEListDecryptionAttestation<EncryptionScheme, SupportedFheType>>;
30
+ }): Promise<EncryptedEListDecryptionAttestation<EncryptionScheme, SupportedTeeType>>;
31
31
  export declare function eListAttestedDecrypt({ handle, backoffConfig, walletClient, chainId, kmsQuorumClient, executorAddress, }: {
32
32
  handle: HexString;
33
33
  backoffConfig?: Partial<BackoffConfig> | undefined;
@@ -37,7 +37,7 @@ export declare function eListAttestedDecrypt({ handle, backoffConfig, walletClie
37
37
  reencryptKeypair?: never;
38
38
  kmsQuorumClient: KmsQuorumClient;
39
39
  executorAddress: HexString;
40
- }): Promise<EListDecryptionAttestation<EncryptionScheme, SupportedFheType>>;
40
+ }): Promise<EListDecryptionAttestation<EncryptionScheme, SupportedTeeType>>;
41
41
  /**
42
42
  * Reveal a single elist handle without wallet authentication.
43
43
  * Returns plaintext values along with an attestation of the checksum.
@@ -46,4 +46,4 @@ export declare function eListAttestedReveal({ handle, backoffConfig, kmsQuorumCl
46
46
  handle: HexString;
47
47
  backoffConfig?: Partial<BackoffConfig> | undefined;
48
48
  kmsQuorumClient: KmsQuorumClient;
49
- }): Promise<EListDecryptionAttestation<EncryptionScheme, SupportedFheType>>;
49
+ }): Promise<EListDecryptionAttestation<EncryptionScheme, SupportedTeeType>>;
@@ -1,5 +1,5 @@
1
1
  import type { HexString } from '../binary.js';
2
- import type { EncryptionScheme, EncryptResultOf, PlaintextOf, SupportedFheType } from '../encryption/encryption.js';
2
+ import type { EncryptionScheme, EncryptResultOf, PlaintextOf, SupportedTeeType } from '../encryption/encryption.js';
3
3
  import { handleTypes } from '../index.js';
4
4
  import type { BackoffConfig } from '../retry.js';
5
5
  /**
@@ -9,22 +9,22 @@ export declare class EListAttestedDecryptError extends Error {
9
9
  readonly cause?: unknown | undefined;
10
10
  constructor(message: string, cause?: unknown | undefined);
11
11
  }
12
- export type EListDecryptionAttestation<S extends EncryptionScheme, T extends SupportedFheType> = {
12
+ export type EListDecryptionAttestation<S extends EncryptionScheme, T extends SupportedTeeType> = {
13
13
  handle: HexString;
14
14
  commitmentProof: PlaintextOf<S, typeof handleTypes.euint256>;
15
15
  values: PlaintextOf<S, T>[];
16
16
  covalidatorSignatures: Uint8Array[];
17
17
  commitments: Uint8Array[];
18
18
  };
19
- export type EncryptedEListDecryptionAttestation<S extends EncryptionScheme, T extends SupportedFheType> = {
19
+ export type EncryptedEListDecryptionAttestation<S extends EncryptionScheme, T extends SupportedTeeType> = {
20
20
  handle: HexString;
21
21
  commitmentProof: PlaintextOf<S, typeof handleTypes.euint256>;
22
22
  values: EncryptResultOf<S, T>[];
23
23
  covalidatorSignatures: Uint8Array[];
24
24
  commitments: Uint8Array[];
25
25
  };
26
- export type EListAttestedDecryptor<S extends EncryptionScheme> = <T extends SupportedFheType>(args: EListAttestedDecryptFnArgs<S, T>) => Promise<EListDecryptionAttestation<S, T>>;
27
- export type EListAttestedDecryptFnArgs<S extends EncryptionScheme, T extends SupportedFheType> = {
26
+ export type EListAttestedDecryptor<S extends EncryptionScheme> = <T extends SupportedTeeType>(args: EListAttestedDecryptFnArgs<S, T>) => Promise<EListDecryptionAttestation<S, T>>;
27
+ export type EListAttestedDecryptFnArgs<S extends EncryptionScheme, T extends SupportedTeeType> = {
28
28
  /** The handle to decrypt */
29
29
  handle: HexString;
30
30
  backoffConfig?: Partial<BackoffConfig>;
@@ -11,7 +11,7 @@ import { Bytes32 } from '../binary.js';
11
11
  * // result.handle, result.ciphertext
12
12
  * ```
13
13
  */
14
- export type Encryptor<S extends EncryptionScheme = EncryptionScheme> = <T extends SupportedFheType>(plaintext: PlaintextWithContextOf<S, T>) => Promise<EncryptResultOf<S, T>>;
14
+ export type Encryptor<S extends EncryptionScheme = EncryptionScheme> = <T extends SupportedTeeType>(plaintext: PlaintextWithContextOf<S, T>) => Promise<EncryptResultOf<S, T>>;
15
15
  /**
16
16
  * A function that decrypts a ciphertext back to its plaintext value.
17
17
  *
@@ -21,26 +21,26 @@ export type Encryptor<S extends EncryptionScheme = EncryptionScheme> = <T extend
21
21
  * const plaintext = await decrypt({ scheme: 2, type: 5, value: '0x...' });
22
22
  * ```
23
23
  */
24
- export type Decryptor<S extends EncryptionScheme = EncryptionScheme> = <T extends SupportedFheType>(ciphertext: CiphertextOf<S, T>) => Promise<PlaintextOf<S, T>>;
24
+ export type Decryptor<S extends EncryptionScheme = EncryptionScheme> = <T extends SupportedTeeType>(ciphertext: CiphertextOf<S, T>) => Promise<PlaintextOf<S, T>>;
25
25
  /**
26
26
  * Subset of ENCRYPTION types currently supported for encryption/decryption.
27
27
  *
28
28
  * @remarks TODO: review need of `euint64` and `euint160` — `Lib.sol` only supports `euint256` and `ebool`.
29
29
  */
30
- export declare const supportedFheTypes: {
30
+ export declare const supportedTeeTypes: {
31
31
  readonly euint64: 5;
32
32
  readonly euint160: 7;
33
33
  readonly euint256: 8;
34
34
  readonly ebool: 0;
35
35
  };
36
36
  /** Schema that validates a string is one of the supported ENCRYPTION type names. */
37
- export declare const SupportedFheTypeName: Schema.SchemaClass<"ebool" | "euint64" | "euint160" | "euint256", "ebool" | "euint64" | "euint160" | "euint256", never>;
37
+ export declare const SupportedTeeTypeName: Schema.SchemaClass<"ebool" | "euint64" | "euint160" | "euint256", "ebool" | "euint64" | "euint160" | "euint256", never>;
38
38
  /** A supported ENCRYPTION type name (e.g. `"euint256"`, `"ebool"`). */
39
- export type SupportedFheTypeName = typeof SupportedFheTypeName.Type;
39
+ export type SupportedTeeTypeName = typeof SupportedTeeTypeName.Type;
40
40
  /** Schema that validates a number is one of the supported ENCRYPTION type integer identifiers. */
41
- export declare const SupportedFheType: Schema.SchemaClass<0 | 5 | 7 | 8, 0 | 5 | 7 | 8, never>;
41
+ export declare const SupportedTeeType: Schema.SchemaClass<0 | 5 | 7 | 8, 0 | 5 | 7 | 8, never>;
42
42
  /** Integer identifier of a supported ENCRYPTION type (a subset of all ENCRYPTION types). */
43
- export type SupportedFheType = typeof SupportedFheType.Type;
43
+ export type SupportedTeeType = typeof SupportedTeeType.Type;
44
44
  /** Map of encryption scheme names to their integer identifiers. Currently only X-Wing (2) is supported. */
45
45
  export declare const encryptionSchemes: {
46
46
  readonly xwing: 2;
@@ -60,7 +60,7 @@ export type XwingScheme = EncryptionSchemes['xwing'];
60
60
  export declare const EncryptionScheme: Schema.Literal<[2]>;
61
61
  /** An encryption scheme identifier (currently only X-Wing = `2`). */
62
62
  export type EncryptionScheme = typeof EncryptionScheme.Type;
63
- type DistType<P, S extends EncryptionScheme, T extends SupportedFheType> = P extends any ? P & {
63
+ type DistType<P, S extends EncryptionScheme, T extends SupportedTeeType> = P extends any ? P & {
64
64
  scheme: S;
65
65
  type: T;
66
66
  } : never;
@@ -72,7 +72,7 @@ export declare const Ciphertext: Schema.Struct<{
72
72
  }>;
73
73
  /** An ENCRYPTION ciphertext containing the encryption scheme, ENCRYPTION type, and encrypted hex value. */
74
74
  export type Ciphertext = typeof Ciphertext.Type;
75
- export type CiphertextOf<S extends EncryptionScheme, T extends SupportedFheType> = DistType<Ciphertext, S, T>;
75
+ export type CiphertextOf<S extends EncryptionScheme, T extends SupportedTeeType> = DistType<Ciphertext, S, T>;
76
76
  /** Schema for a ciphertext paired with the {@link InputContext} it was encrypted under. */
77
77
  export declare const CiphertextWithContext: Schema.Struct<{
78
78
  ciphertext: Schema.Struct<{
@@ -86,11 +86,12 @@ export declare const CiphertextWithContext: Schema.Struct<{
86
86
  userAddress: Schema.TemplateLiteral<`0x${string}`>;
87
87
  contractAddress: Schema.TemplateLiteral<`0x${string}`>;
88
88
  version: typeof Schema.Number;
89
+ inputType: typeof Schema.Number;
89
90
  }>;
90
91
  }>;
91
92
  /** A ciphertext paired with the {@link InputContext} it was encrypted under. */
92
93
  export type CiphertextWithContext = typeof CiphertextWithContext.Type;
93
- export type CiphertextWithContextOf<S extends EncryptionScheme, T extends SupportedFheType> = CiphertextWithContext & {
94
+ export type CiphertextWithContextOf<S extends EncryptionScheme, T extends SupportedTeeType> = CiphertextWithContext & {
94
95
  ciphertext: CiphertextOf<S, T>;
95
96
  };
96
97
  /** Schema for the result of an encryption operation: ciphertext, input context, and final handle. */
@@ -106,12 +107,13 @@ export declare const EncryptResult: Schema.Struct<{
106
107
  userAddress: Schema.TemplateLiteral<`0x${string}`>;
107
108
  contractAddress: Schema.TemplateLiteral<`0x${string}`>;
108
109
  version: typeof Schema.Number;
110
+ inputType: typeof Schema.Number;
109
111
  }>;
110
112
  handle: Schema.brand<Schema.filter<Schema.transformOrFail<Schema.Union<[typeof Schema.String, Schema.refine<object & Uint8Array<ArrayBufferLike>, Schema.Schema<object, object, never>>]>, Schema.TemplateLiteral<`0x${string}`>, never>>, "Bytes32">;
111
113
  }>;
112
114
  /** The result of an encryption operation, containing the ciphertext, context, and deterministic handle. */
113
115
  export type EncryptResult = typeof EncryptResult.Type;
114
- export type EncryptResultOf<S extends EncryptionScheme, T extends SupportedFheType> = EncryptResult & {
116
+ export type EncryptResultOf<S extends EncryptionScheme, T extends SupportedTeeType> = EncryptResult & {
115
117
  ciphertext: CiphertextOf<S, T>;
116
118
  };
117
119
  /**
@@ -130,7 +132,7 @@ export declare const Plaintext: Schema.Union<[Schema.Struct<{
130
132
  }>]>;
131
133
  /** An ENCRYPTION plaintext value — `bigint` for integer types, `boolean` for `ebool`. */
132
134
  export type Plaintext = typeof Plaintext.Type;
133
- export type PlaintextOf<S extends EncryptionScheme, T extends SupportedFheType> = DistType<Plaintext, S, T>;
135
+ export type PlaintextOf<S extends EncryptionScheme, T extends SupportedTeeType> = DistType<Plaintext, S, T>;
134
136
  /** Schema for a plaintext paired with the {@link InputContext} it will be encrypted under. */
135
137
  export declare const PlaintextWithContext: Schema.Struct<{
136
138
  plaintext: Schema.Union<[Schema.Struct<{
@@ -148,11 +150,12 @@ export declare const PlaintextWithContext: Schema.Struct<{
148
150
  userAddress: Schema.TemplateLiteral<`0x${string}`>;
149
151
  contractAddress: Schema.TemplateLiteral<`0x${string}`>;
150
152
  version: typeof Schema.Number;
153
+ inputType: typeof Schema.Number;
151
154
  }>;
152
155
  }>;
153
156
  /** A plaintext paired with the {@link InputContext} it will be encrypted under. */
154
157
  export type PlaintextWithContext = typeof PlaintextWithContext.Type;
155
- export type PlaintextWithContextOf<S extends EncryptionScheme, T extends SupportedFheType> = PlaintextWithContext & {
158
+ export type PlaintextWithContextOf<S extends EncryptionScheme, T extends SupportedTeeType> = PlaintextWithContext & {
156
159
  plaintext: PlaintextOf<S, T>;
157
160
  };
158
161
  /**
@@ -167,7 +170,7 @@ export type PlaintextWithContextOf<S extends EncryptionScheme, T extends Support
167
170
  * @returns A typed `Plaintext` matching the given scheme and ENCRYPTION type.
168
171
  * @throws If `type` is not a supported ENCRYPTION type.
169
172
  */
170
- export declare function bigintToPlaintext<S extends EncryptionScheme, T extends SupportedFheType>(scheme: S, type: T, bigPt: bigint): PlaintextOf<S, T>;
173
+ export declare function bigintToPlaintext<S extends EncryptionScheme, T extends SupportedTeeType>(scheme: S, type: T, bigPt: bigint): PlaintextOf<S, T>;
171
174
  /**
172
175
  * Decodes an ABI-encoded ciphertext input into its components.
173
176
  *
@@ -220,7 +223,7 @@ export declare function plaintextToBytes(plaintext: Plaintext): Buffer;
220
223
  * @param type - The ENCRYPTION type to interpret the bytes as.
221
224
  * @returns A typed `Plaintext` value.
222
225
  */
223
- export declare function bytes32ToPlaintext(plaintext: Bytes32, scheme: EncryptionScheme, type: SupportedFheType): Plaintext;
226
+ export declare function bytes32ToPlaintext(plaintext: Bytes32, scheme: EncryptionScheme, type: SupportedTeeType): Plaintext;
224
227
  /**
225
228
  * Parses a `Uint8Array` into a typed {@link Plaintext}.
226
229
  * @param plaintext - The byte array to interpret.
@@ -228,5 +231,5 @@ export declare function bytes32ToPlaintext(plaintext: Bytes32, scheme: Encryptio
228
231
  * @param type - The ENCRYPTION type to interpret the bytes as.
229
232
  * @returns A typed `Plaintext` value.
230
233
  */
231
- export declare function bytesToPlaintext(plaintext: Uint8Array, scheme: EncryptionScheme, type: SupportedFheType): Plaintext;
234
+ export declare function bytesToPlaintext(plaintext: Uint8Array, scheme: EncryptionScheme, type: SupportedTeeType): Plaintext;
232
235
  export {};
@@ -7,18 +7,18 @@ import { handleTypes, InputContext } from '../handle.js';
7
7
  *
8
8
  * @remarks TODO: review need of `euint64` and `euint160` — `Lib.sol` only supports `euint256` and `ebool`.
9
9
  */
10
- export const supportedFheTypes = {
10
+ export const supportedTeeTypes = {
11
11
  euint64: handleTypes.euint64,
12
12
  euint160: handleTypes.euint160,
13
13
  euint256: handleTypes.euint256,
14
14
  ebool: handleTypes.ebool,
15
15
  };
16
- const supportedFheTypeNames = Object.keys(supportedFheTypes);
16
+ const supportedTeeTypeNames = Object.keys(supportedTeeTypes);
17
17
  /** Schema that validates a string is one of the supported ENCRYPTION type names. */
18
- export const SupportedFheTypeName = Schema.Literal(...supportedFheTypeNames);
18
+ export const SupportedTeeTypeName = Schema.Literal(...supportedTeeTypeNames);
19
19
  /** Schema that validates a number is one of the supported ENCRYPTION type integer identifiers. */
20
20
  // TODO: extend to all types
21
- export const SupportedFheType = Schema.Literal(...Object.values(supportedFheTypes));
21
+ export const SupportedTeeType = Schema.Literal(...Object.values(supportedTeeTypes));
22
22
  /** Map of encryption scheme names to their integer identifiers. Currently only X-Wing (2) is supported. */
23
23
  export const encryptionSchemes = {
24
24
  xwing: 2,
@@ -42,7 +42,7 @@ export const EncryptionScheme = Schema.Literal(encryptionSchemes.xwing);
42
42
  /** Schema for an ENCRYPTION ciphertext: encryption scheme, ENCRYPTION type, and the encrypted value as a hex string. */
43
43
  export const Ciphertext = Schema.Struct({
44
44
  scheme: EncryptionScheme,
45
- type: SupportedFheType,
45
+ type: SupportedTeeType,
46
46
  value: HexString,
47
47
  });
48
48
  /** Schema for a ciphertext paired with the {@link InputContext} it was encrypted under. */
@@ -1 +1 @@
1
- export { Ciphertext, EncryptionScheme, Plaintext, SupportedFheType, SupportedFheTypeName, bigintToPlaintext, bytes32ToPlaintext, bytesToPlaintext, encryptionSchemes, getEncryptionSchemeName, plaintextToBigint, plaintextToBytes, plaintextToBytes32, supportedFheTypes, type EncryptionSchemes, } from './encryption.js';
1
+ export { Ciphertext, EncryptionScheme, Plaintext, SupportedTeeType, SupportedTeeTypeName, bigintToPlaintext, bytes32ToPlaintext, bytesToPlaintext, encryptionSchemes, getEncryptionSchemeName, plaintextToBigint, plaintextToBytes, plaintextToBytes32, supportedTeeTypes, type EncryptionSchemes, } from './encryption.js';