@inco/js 0.6.1 → 0.6.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (124) hide show
  1. package/dist/cjs/advancedacl/session-key.d.ts +8 -1
  2. package/dist/cjs/advancedacl/session-key.js +55 -21
  3. package/dist/cjs/attestedcompute/attested-compute.js +11 -4
  4. package/dist/cjs/attesteddecrypt/attested-decrypt.d.ts +38 -1
  5. package/dist/cjs/attesteddecrypt/attested-decrypt.js +49 -6
  6. package/dist/cjs/attesteddecrypt/types.d.ts +6 -1
  7. package/dist/cjs/attesteddecrypt/types.js +1 -1
  8. package/dist/cjs/attestedreveal/attested-reveal.js +9 -7
  9. package/dist/cjs/binary.d.ts +1 -0
  10. package/dist/cjs/binary.js +6 -2
  11. package/dist/cjs/encryption/encryption.d.ts +17 -22
  12. package/dist/cjs/encryption/encryption.js +34 -16
  13. package/dist/cjs/generated/abis/add-two.d.ts +1 -1
  14. package/dist/cjs/generated/abis/add-two.js +1 -1
  15. package/dist/cjs/generated/abis/lightning-preview.d.ts +48 -106
  16. package/dist/cjs/generated/abis/lightning-preview.js +33 -55
  17. package/dist/cjs/generated/abis/lightning.d.ts +55 -116
  18. package/dist/cjs/generated/abis/lightning.js +33 -66
  19. package/dist/cjs/generated/abis/verifier.d.ts +193 -84
  20. package/dist/cjs/generated/abis/verifier.js +151 -61
  21. package/dist/cjs/generated/es/cosmos_proto/cosmos_pb.js +2 -2
  22. package/dist/cjs/generated/es/inco/covalidator/compute/v1/server_pb.d.ts +775 -0
  23. package/dist/cjs/generated/es/inco/covalidator/compute/v1/server_pb.js +261 -0
  24. package/dist/cjs/generated/es/inco/covalidator/compute/v1/types_pb.d.ts +186 -0
  25. package/dist/cjs/generated/es/inco/covalidator/compute/v1/types_pb.js +47 -0
  26. package/dist/cjs/generated/es/inco/fhe/v1/types_pb.js +2 -2
  27. package/dist/cjs/generated/es/inco/kms/lite/v1/kms_service_pb.d.ts +76 -129
  28. package/dist/cjs/generated/es/inco/kms/lite/v1/kms_service_pb.js +21 -26
  29. package/dist/cjs/generated/es/inco/kms/lite/v1/types_pb.js +2 -2
  30. package/dist/cjs/generated/lightning.d.ts +0 -32
  31. package/dist/cjs/generated/lightning.js +1 -33
  32. package/dist/cjs/generated/local-node.d.ts +1 -5
  33. package/dist/cjs/generated/local-node.js +2 -6
  34. package/dist/cjs/handle.d.ts +16 -0
  35. package/dist/cjs/handle.js +28 -3
  36. package/dist/cjs/lite/deployments.d.ts +20 -2
  37. package/dist/cjs/lite/deployments.js +1 -1
  38. package/dist/cjs/lite/ecies.d.ts +0 -2
  39. package/dist/cjs/lite/ecies.js +24 -13
  40. package/dist/cjs/lite/hadu.d.ts +3 -23
  41. package/dist/cjs/lite/hadu.js +26 -29
  42. package/dist/cjs/lite/index.d.ts +1 -1
  43. package/dist/cjs/lite/index.js +1 -1
  44. package/dist/cjs/lite/lightning.d.ts +24 -12
  45. package/dist/cjs/lite/lightning.js +62 -27
  46. package/dist/cjs/lite/reencrypt.d.ts +5 -7
  47. package/dist/cjs/lite/reencrypt.js +68 -58
  48. package/dist/cjs/test/mocks.d.ts +12 -0
  49. package/dist/cjs/test/mocks.js +27 -0
  50. package/dist/cjs/viem.d.ts +45 -48
  51. package/dist/esm/advancedacl/session-key.d.ts +8 -1
  52. package/dist/esm/advancedacl/session-key.js +58 -24
  53. package/dist/esm/attestedcompute/attested-compute.js +11 -4
  54. package/dist/esm/attesteddecrypt/attested-decrypt.d.ts +38 -1
  55. package/dist/esm/attesteddecrypt/attested-decrypt.js +51 -8
  56. package/dist/esm/attesteddecrypt/types.d.ts +6 -1
  57. package/dist/esm/attesteddecrypt/types.js +1 -1
  58. package/dist/esm/attestedreveal/attested-reveal.js +9 -7
  59. package/dist/esm/binary.d.ts +1 -0
  60. package/dist/esm/binary.js +5 -2
  61. package/dist/esm/encryption/encryption.d.ts +17 -22
  62. package/dist/esm/encryption/encryption.js +30 -16
  63. package/dist/esm/generated/abis/add-two.d.ts +1 -1
  64. package/dist/esm/generated/abis/add-two.js +1 -1
  65. package/dist/esm/generated/abis/lightning-preview.d.ts +48 -106
  66. package/dist/esm/generated/abis/lightning-preview.js +33 -55
  67. package/dist/esm/generated/abis/lightning.d.ts +55 -116
  68. package/dist/esm/generated/abis/lightning.js +33 -66
  69. package/dist/esm/generated/abis/verifier.d.ts +193 -84
  70. package/dist/esm/generated/abis/verifier.js +151 -61
  71. package/dist/esm/generated/es/cosmos_proto/cosmos_pb.js +2 -2
  72. package/dist/esm/generated/es/inco/covalidator/compute/v1/server_pb.d.ts +775 -0
  73. package/dist/esm/generated/es/inco/covalidator/compute/v1/server_pb.js +258 -0
  74. package/dist/esm/generated/es/inco/covalidator/compute/v1/types_pb.d.ts +186 -0
  75. package/dist/esm/generated/es/inco/covalidator/compute/v1/types_pb.js +44 -0
  76. package/dist/esm/generated/es/inco/fhe/v1/types_pb.js +2 -2
  77. package/dist/esm/generated/es/inco/kms/lite/v1/kms_service_pb.d.ts +76 -129
  78. package/dist/esm/generated/es/inco/kms/lite/v1/kms_service_pb.js +20 -25
  79. package/dist/esm/generated/es/inco/kms/lite/v1/types_pb.js +2 -2
  80. package/dist/esm/generated/lightning.d.ts +0 -32
  81. package/dist/esm/generated/lightning.js +1 -33
  82. package/dist/esm/generated/local-node.d.ts +1 -5
  83. package/dist/esm/generated/local-node.js +2 -6
  84. package/dist/esm/handle.d.ts +16 -0
  85. package/dist/esm/handle.js +27 -3
  86. package/dist/esm/lite/deployments.d.ts +20 -2
  87. package/dist/esm/lite/deployments.js +1 -1
  88. package/dist/esm/lite/ecies.d.ts +0 -2
  89. package/dist/esm/lite/ecies.js +26 -15
  90. package/dist/esm/lite/hadu.d.ts +3 -23
  91. package/dist/esm/lite/hadu.js +28 -30
  92. package/dist/esm/lite/index.d.ts +1 -1
  93. package/dist/esm/lite/index.js +1 -1
  94. package/dist/esm/lite/lightning.d.ts +24 -12
  95. package/dist/esm/lite/lightning.js +59 -24
  96. package/dist/esm/lite/reencrypt.d.ts +5 -7
  97. package/dist/esm/lite/reencrypt.js +67 -58
  98. package/dist/esm/test/mocks.d.ts +12 -0
  99. package/dist/esm/test/mocks.js +23 -0
  100. package/dist/esm/viem.d.ts +45 -48
  101. package/dist/types/advancedacl/session-key.d.ts +8 -1
  102. package/dist/types/attesteddecrypt/attested-decrypt.d.ts +38 -1
  103. package/dist/types/attesteddecrypt/types.d.ts +6 -1
  104. package/dist/types/binary.d.ts +1 -0
  105. package/dist/types/encryption/encryption.d.ts +17 -22
  106. package/dist/types/generated/abis/add-two.d.ts +1 -1
  107. package/dist/types/generated/abis/lightning-preview.d.ts +48 -106
  108. package/dist/types/generated/abis/lightning.d.ts +55 -116
  109. package/dist/types/generated/abis/verifier.d.ts +193 -84
  110. package/dist/types/generated/es/inco/covalidator/compute/v1/server_pb.d.ts +775 -0
  111. package/dist/types/generated/es/inco/covalidator/compute/v1/types_pb.d.ts +186 -0
  112. package/dist/types/generated/es/inco/kms/lite/v1/kms_service_pb.d.ts +76 -129
  113. package/dist/types/generated/lightning.d.ts +0 -32
  114. package/dist/types/generated/local-node.d.ts +1 -5
  115. package/dist/types/handle.d.ts +16 -0
  116. package/dist/types/lite/deployments.d.ts +20 -2
  117. package/dist/types/lite/ecies.d.ts +0 -2
  118. package/dist/types/lite/hadu.d.ts +3 -23
  119. package/dist/types/lite/index.d.ts +1 -1
  120. package/dist/types/lite/lightning.d.ts +24 -12
  121. package/dist/types/lite/reencrypt.d.ts +5 -7
  122. package/dist/types/test/mocks.d.ts +12 -0
  123. package/dist/types/viem.d.ts +45 -48
  124. package/package.json +3 -1
@@ -29,6 +29,11 @@ export interface SessionKeyReencryptorArgs {
29
29
  kmsConnectRpcEndpointOrClient: string | Client<typeof KmsService>;
30
30
  allowanceVoucherWithSig: AllowanceVoucherWithSig;
31
31
  }
32
+ /**
33
+ * The sessionKeyReencryptor function is a reencryptor that uses a session key
34
+ * to reencrypt data.
35
+ *
36
+ */
32
37
  export declare function sessionKeyReencryptor({ chainId, kmsConnectRpcEndpointOrClient, ephemeralKeypair, allowanceVoucherWithSig, }: SessionKeyReencryptorArgs): Promise<(<T extends SupportedFheType>({ handle, }: ReencryptFnArgs<EciesScheme, T>) => Promise<import("../encryption/encryption.js").PlaintextOf<1, 0 | 5 | 7 | 8>>)>;
33
38
  export declare function updateActiveVouchersSessionNonce(incoLiteAddress: Address, sharerWalletClient: WalletClient<Transport, Chain, Account>): Promise<`0x${string}`>;
34
39
  export interface SessionKeyAttestedComputeArgs {
@@ -53,5 +58,7 @@ export interface SessionKeyAttestedDecryptArgs {
53
58
  allowanceVoucherWithSig: AllowanceVoucherWithSig;
54
59
  handles: HexString[];
55
60
  backoffConfig?: Partial<BackoffConfig> | undefined;
61
+ reencryptPubKey?: Uint8Array;
62
+ reencryptKeypair?: Secp256k1Keypair;
56
63
  }
57
- export declare function sessionKeyAttestedDecrypt({ chainId, kmsConnectRpcEndpointOrClient, handles, ephemeralKeypair, allowanceVoucherWithSig, backoffConfig, }: SessionKeyAttestedDecryptArgs): Promise<Array<DecryptionAttestation<EciesScheme, SupportedFheType>>>;
64
+ export declare function sessionKeyAttestedDecrypt({ chainId, kmsConnectRpcEndpointOrClient, handles, ephemeralKeypair, allowanceVoucherWithSig, backoffConfig, reencryptPubKey, reencryptKeypair, }: SessionKeyAttestedDecryptArgs): Promise<Array<DecryptionAttestation<EciesScheme, SupportedFheType>>>;
@@ -21,6 +21,7 @@ const index_js_4 = require("../reencryption/index.js");
21
21
  const retry_js_1 = require("../retry.js");
22
22
  const kms_service_pb_js_1 = require("../generated/es/inco/kms/lite/v1/kms_service_pb.js");
23
23
  const types_pb_js_1 = require("../generated/es/inco/kms/lite/v1/types_pb.js");
24
+ const reencrypt_js_1 = require("../lite/reencrypt.js");
24
25
  // Given a sharer's wallet client, an incoLite contract address, and a
25
26
  // (verifyingContract, callFunction, sharerArgData) tuple, this function
26
27
  // creates an AllowanceVoucher.
@@ -84,23 +85,40 @@ async function grantSessionKey({ chainId, incoLiteAddress, sessionVerifierContra
84
85
  voucherSignature,
85
86
  };
86
87
  }
87
- // The sessionKeyReencryptor function is a reencryptor that uses a session key
88
- // to reencrypt data.
88
+ /**
89
+ * The sessionKeyReencryptor function is a reencryptor that uses a session key
90
+ * to reencrypt data.
91
+ *
92
+ */
89
93
  async function sessionKeyReencryptor({ chainId, kmsConnectRpcEndpointOrClient, ephemeralKeypair, allowanceVoucherWithSig, }) {
90
94
  const kmsClient = (0, index_js_3.getKmsClient)(kmsConnectRpcEndpointOrClient ||
91
95
  (0, index_js_3.defaultCovalidatorGrpc)((0, chain_js_1.getSupportedChain)(chainId)));
92
96
  const requesterAccount = (0, accounts_1.privateKeyToAccount)(`0x${ephemeralKeypair.kp.getPrivate('hex')}`);
93
97
  const ephemeralPubKey = ephemeralKeypair.encodePublicKey();
94
- // Sign the EIP712 attesting that the requester has access to the private key
95
- // corresponding to the ephemeral public key.
96
- const eip712Payload = (0, index_js_3.reencryptEIP712)(chainId, ephemeralPubKey);
97
- // Since the account is an ephemeral keypair stored in memory (not in Metamask),
98
- // this step will NOT prompt the user with a pop-up.
99
- const eip712Signature = await requesterAccount.signTypedData(eip712Payload);
100
98
  return async function reencrypt({ handle, }) {
101
- const reencryptRequest = (0, protobuf_1.create)(kms_service_pb_js_1.ReencryptRequestSchema, {
99
+ const handles = [handle];
100
+ // Sign the EIP712 attesting that the requester has access to the private key
101
+ // corresponding to the ephemeral public key.
102
+ const eip712Payload = (0, index_js_4.createEIP712Payload)({
103
+ chainId,
104
+ primaryType: 'AttestedDecryptRequest',
105
+ primaryTypeFields: [
106
+ { name: 'handles', type: 'bytes32[]' },
107
+ { name: 'publicKey', type: 'bytes' },
108
+ ],
109
+ message: {
110
+ handles: handles,
111
+ publicKey: (0, viem_1.bytesToHex)(ephemeralPubKey),
112
+ },
113
+ domainName: index_js_3.ATTESTED_DECRYPT_DOMAIN_NAME,
114
+ domainVersion: index_js_3.ATTESTED_DECRYPT_DOMAIN_VERSION,
115
+ });
116
+ // Since the account is an ephemeral keypair stored in memory (not in Metamask),
117
+ // this step will NOT prompt the user with a pop-up.
118
+ const eip712Signature = await requesterAccount.signTypedData(eip712Payload);
119
+ const reencryptRequest = (0, protobuf_1.create)(kms_service_pb_js_1.AttestedDecryptRequestSchema, {
102
120
  userAddress: requesterAccount.address,
103
- ephemeralPubKey,
121
+ reencryptPubKey: ephemeralPubKey,
104
122
  eip712Signature: (0, viem_1.hexToBytes)(eip712Signature),
105
123
  handlesWithProofs: [
106
124
  (0, protobuf_1.create)(types_pb_js_1.HandleWithProofSchema, {
@@ -126,7 +144,7 @@ async function sessionKeyReencryptor({ chainId, kmsConnectRpcEndpointOrClient, e
126
144
  }),
127
145
  ],
128
146
  });
129
- const response = await kmsClient.reencrypt(reencryptRequest);
147
+ const response = await kmsClient.attestedDecrypt(reencryptRequest);
130
148
  return (0, index_js_3.decryptGrpcResponse)(response, ephemeralKeypair, handle);
131
149
  };
132
150
  }
@@ -197,10 +215,14 @@ async function sessionKeyAttestedCompute({ lhsHandle, op, rhsPlaintext, backoffC
197
215
  throw new Error('Failed to get decryption attestation from attested compute');
198
216
  }
199
217
  const decryptionAttestation = response.decryptionAttestation;
200
- if (decryptionAttestation.plaintext === undefined) {
201
- throw new Error('No plaintext in compute response');
218
+ if (decryptionAttestation.value === undefined) {
219
+ throw new Error('No value in compute response');
220
+ }
221
+ if (decryptionAttestation.value.case !== 'plaintext') {
222
+ throw new Error(`Unexpected attestation type: ${decryptionAttestation.value.case}, expected 'plaintext'`);
202
223
  }
203
- const bigIntValue = (0, index_js_2.bytesToBigInt)(decryptionAttestation.plaintext);
224
+ const plaintext = decryptionAttestation.value.value;
225
+ const bigIntValue = (0, index_js_2.bytesToBigInt)(plaintext.value);
204
226
  return {
205
227
  handle: decryptionAttestation.handle,
206
228
  plaintext: (0, encryption_js_1.bigintToPlaintext)(encryption_js_1.encryptionSchemes.ecies, (0, index_js_2.getHandleType)(lhsHandle), bigIntValue),
@@ -209,7 +231,7 @@ async function sessionKeyAttestedCompute({ lhsHandle, op, rhsPlaintext, backoffC
209
231
  }
210
232
  // The sessionKeyAttestedDecrypt function is a decryptor that uses a session key
211
233
  // to decrypt data.
212
- async function sessionKeyAttestedDecrypt({ chainId, kmsConnectRpcEndpointOrClient, handles, ephemeralKeypair, allowanceVoucherWithSig, backoffConfig, }) {
234
+ async function sessionKeyAttestedDecrypt({ chainId, kmsConnectRpcEndpointOrClient, handles, ephemeralKeypair, allowanceVoucherWithSig, backoffConfig, reencryptPubKey, reencryptKeypair, }) {
213
235
  const kmsClient = (0, index_js_3.getKmsClient)(kmsConnectRpcEndpointOrClient ||
214
236
  (0, index_js_3.defaultCovalidatorGrpc)((0, chain_js_1.getSupportedChain)(chainId)));
215
237
  const requesterAccount = (0, accounts_1.privateKeyToAccount)(`0x${ephemeralKeypair.kp.getPrivate('hex')}`);
@@ -218,9 +240,13 @@ async function sessionKeyAttestedDecrypt({ chainId, kmsConnectRpcEndpointOrClien
218
240
  const eip712Payload = (0, index_js_4.createEIP712Payload)({
219
241
  chainId: BigInt(chainId),
220
242
  primaryType: 'AttestedDecryptRequest',
221
- primaryTypeFields: [{ name: 'handles', type: 'bytes32[]' }],
243
+ primaryTypeFields: [
244
+ { name: 'handles', type: 'bytes32[]' },
245
+ { name: 'publicKey', type: 'bytes' },
246
+ ],
222
247
  message: {
223
248
  handles: handles,
249
+ publicKey: (0, viem_1.bytesToHex)(reencryptPubKey ? reencryptPubKey : Uint8Array.from([])),
224
250
  },
225
251
  domainName: index_js_3.ATTESTED_DECRYPT_DOMAIN_NAME,
226
252
  domainVersion: index_js_3.ATTESTED_DECRYPT_DOMAIN_VERSION,
@@ -255,21 +281,29 @@ async function sessionKeyAttestedDecrypt({ chainId, kmsConnectRpcEndpointOrClien
255
281
  userAddress: requesterAccount.address,
256
282
  handlesWithProofs: handlesWithProofs,
257
283
  eip712Signature: (0, viem_1.hexToBytes)(eip712Signature),
284
+ reencryptPubKey: reencryptPubKey ? reencryptPubKey : Uint8Array.from([]),
258
285
  });
259
- const response = await (0, retry_js_1.retryWithBackoff)(async () => {
286
+ var response = await (0, retry_js_1.retryWithBackoff)(async () => {
260
287
  return await kmsClient.attestedDecrypt(attestedDecryptRequest);
261
288
  }, backoffConfig);
262
289
  if (!response.decryptionAttestations ||
263
290
  response.decryptionAttestations.length === 0) {
264
291
  throw new index_js_1.AttestedDecryptError('No decryption attestations in response');
265
292
  }
293
+ if (reencryptKeypair) {
294
+ response = await (0, reencrypt_js_1.decryptGrpcDecryptResponse)(response, reencryptKeypair);
295
+ }
266
296
  const results = response.decryptionAttestations.map((att) => {
267
- if (att.plaintext === undefined) {
268
- throw new index_js_1.AttestedDecryptError('No plaintext in attestation');
297
+ if (att.value === undefined) {
298
+ throw new index_js_1.AttestedDecryptError('No value in attestation');
299
+ }
300
+ if (att.value.case !== 'plaintext') {
301
+ throw new Error(`Unexpected attestation type: ${att.value.case}, expected 'plaintext'`);
269
302
  }
303
+ const plaintext = att.value.value;
270
304
  const h = att.handle;
271
305
  const handleType = (0, index_js_2.getHandleType)(h);
272
- const bigIntValue = (0, index_js_2.bytesToBigInt)(att.plaintext);
306
+ const bigIntValue = (0, index_js_2.bytesToBigInt)(plaintext.value);
273
307
  return {
274
308
  handle: h,
275
309
  plaintext: (0, encryption_js_1.bigintToPlaintext)(encryption_js_1.encryptionSchemes.ecies, handleType, bigIntValue),
@@ -341,4 +375,4 @@ async function getIncoVerifier(incoLiteAddress, walletClient) {
341
375
  client: walletClient,
342
376
  });
343
377
  }
344
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbi1rZXkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYWR2YW5jZWRhY2wvc2Vzc2lvbi1rZXkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFnR0Esd0RBcUJDO0FBd0JELDBDQWlFQztBQXNCRCxzREFrRUM7QUFFRCw0RUFPQztBQTZCRCw4REE4R0M7QUEwQkQsOERBMEdDO0FBOWpCRCxpREFBNEM7QUFFNUMsK0JBV2M7QUFDZCw0Q0FBb0Q7QUFDcEQsMERBR3FDO0FBQ3JDLDBDQUFrRTtBQUNsRSwrREFLcUM7QUFDckMsaUZBR2dEO0FBQ2hELGlFQUd3QztBQUN4QywrREFBZ0U7QUFDaEUsMENBS3FCO0FBU3JCLCtDQVMwQjtBQUMxQix1REFHa0M7QUFDbEMsMENBQThEO0FBSTlELDBGQUk0RDtBQUM1RCw4RUFLc0Q7QUFnQnRELHNFQUFzRTtBQUN0RSx3RUFBd0U7QUFDeEUsK0JBQStCO0FBQ3hCLEtBQUssVUFBVSxzQkFBc0IsQ0FDMUMsZUFBd0IsRUFDeEIsa0JBQTJELEVBQzNELGlCQUEwQixFQUMxQixZQUFpQixFQUNqQixhQUFrQjtJQUVsQixNQUFNLFFBQVEsR0FBRyxNQUFNLGVBQWUsQ0FBQyxlQUFlLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztJQUU1RSwwRUFBMEU7SUFDMUUsd0NBQXdDO0lBQ3hDLE1BQU0sWUFBWSxHQUFHLE1BQU0sUUFBUSxDQUFDLElBQUksQ0FBQyw2QkFBNkIsQ0FBQztRQUNyRSxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsT0FBTztLQUNuQyxDQUFDLENBQUM7SUFFSCxPQUFPO1FBQ0wsWUFBWTtRQUNaLGlCQUFpQjtRQUNqQixZQUFZO1FBQ1osYUFBYTtLQUNkLENBQUM7QUFDSixDQUFDO0FBdUJELG1EQUFtRDtBQUM1QyxLQUFLLFVBQVUsZUFBZSxDQUFDLEVBQ3BDLE9BQU8sRUFDUCxlQUFlLEVBQ2YsOEJBQThCLEVBQzlCLGNBQWMsRUFDZCxrQkFBa0IsRUFDbEIsU0FB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
378
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbi1rZXkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYWR2YW5jZWRhY2wvc2Vzc2lvbi1rZXkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFpR0Esd0RBcUJDO0FBd0JELDBDQWlFQztBQXlCRCxzREFtRkM7QUFFRCw0RUFPQztBQTZCRCw4REFxSEM7QUE4QkQsOERBZ0lDO0FBcG5CRCxpREFBNEM7QUFFNUMsK0JBWWM7QUFDZCw0Q0FBb0Q7QUFDcEQsMERBR3FDO0FBQ3JDLDBDQUFrRTtBQUNsRSwrREFLcUM7QUFDckMsaUZBR2dEO0FBQ2hELGlFQUd3QztBQUN4QywrREFBZ0U7QUFDaEUsMENBS3FCO0FBUXJCLCtDQVEwQjtBQUMxQix1REFHa0M7QUFDbEMsMENBQThEO0FBSTlELDBGQUk0RDtBQUM1RCw4RUFLc0Q7QUFDdEQsdURBQWtFO0FBaUJsRSxzRUFBc0U7QUFDdEUsd0VBQXdFO0FBQ3hFLCtCQUErQjtBQUN4QixLQUFLLFVBQVUsc0JBQXNCLENBQzFDLGVBQXdCLEVBQ3hCLGtCQUEyRCxFQUMzRCxpQkFBMEIsRUFDMUIsWUFBaUIsRUFDakIsYUFBa0I7SUFFbEIsTUFBTSxRQUFRLEdBQUcsTUFBTSxlQUFlLENBQUMsZUFBZSxFQUFFLGtCQUFrQixDQUFDLENBQUM7SUFFNUUsMEVBQTBFO0lBQzFFLHdDQUF3QztJQUN4QyxNQUFNLFlBQVksR0FBRyxNQUFNLFFBQVEsQ0FBQyxJQUFJLENBQUMsNkJBQTZCLENBQUM7UUFDckUsa0JBQWtCLENBQUMsT0FBTyxDQUFDLE9BQU87S0FDbkMsQ0FBQyxDQUFDO0lBRUgsT0FBTztRQUNMLFlBQVk7UUFDWixpQkFBaUI7UUFDakIsWUFBWTtRQUNaLGFBQWE7S0FDZCxDQUFDO0FBQ0osQ0FBQztBQXVCRCxtREFBbUQ7QUFDNUMsS0FBSyxVQUFVLGVBQWUsQ0FBQyxFQUNwQyxPQUFPLEVBQ1AsZUFBZSxFQUNmLDhCQUE4QixFQUM5QixjQUFjLEVBQ2Qsa0JB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
@@ -70,15 +70,22 @@ async function attestedCompute({ lhsHandle, op, rhsPlaintext, backoffConfig, wal
70
70
  return await kmsClient.attestedCompute(attestedComputeRequest);
71
71
  }, backoffConfig);
72
72
  const decryptionAttestation = response.decryptionAttestation;
73
- if (decryptionAttestation?.plaintext === undefined) {
74
- throw new types_js_1.AttestedComputeError('No plaintext in compute response');
73
+ if (decryptionAttestation === undefined) {
74
+ throw new types_js_1.AttestedComputeError('No decryption attestation in response');
75
75
  }
76
+ if (decryptionAttestation.value === undefined) {
77
+ throw new types_js_1.AttestedComputeError('No value in compute response');
78
+ }
79
+ if (decryptionAttestation.value.case !== 'plaintext') {
80
+ throw new types_js_1.AttestedComputeError(`Unexpected attestation type: ${decryptionAttestation.value.case}, expected 'plaintext'`);
81
+ }
82
+ const plaintext = decryptionAttestation.value.value;
76
83
  const computeResultHandle = response.decryptionAttestation?.handle;
77
84
  if (!computeResultHandle) {
78
85
  throw new types_js_1.AttestedComputeError('No compute result handle in response');
79
86
  }
80
87
  const handleType = (0, handle_js_1.getHandleType)(computeResultHandle);
81
- const bigIntValue = (0, binary_js_1.bytesToBigInt)(decryptionAttestation.plaintext);
88
+ const bigIntValue = (0, binary_js_1.bytesToBigInt)(plaintext.value);
82
89
  return {
83
90
  handle: computeResultHandle,
84
91
  plaintext: (0, encryption_js_1.bigintToPlaintext)(encryption_js_1.encryptionSchemes.ecies, handleType, bigIntValue),
@@ -92,4 +99,4 @@ async function attestedCompute({ lhsHandle, op, rhsPlaintext, backoffConfig, wal
92
99
  throw new types_js_1.AttestedComputeError('Failed to perform attested compute', error);
93
100
  }
94
101
  }
95
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0ZXN0ZWQtY29tcHV0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hdHRlc3RlZGNvbXB1dGUvYXR0ZXN0ZWQtY29tcHV0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFnREEsMENBc0dDO0FBdEpELGlEQUE0QztBQUU1QywrQkFBa0M7QUFDbEMsZ0ZBQXdFO0FBRXhFLDRDQUF5RTtBQUN6RSwwQ0FBa0U7QUFDbEUsK0RBS3FDO0FBQ3JDLDBGQUc0RDtBQUM1RCw0Q0FBNkM7QUFFN0MsZ0RBQXdFO0FBQ3hFLHlEQUFnRTtBQUVoRSwwQ0FBK0M7QUFDL0MseUNBQXFFO0FBRXhELFFBQUEsNEJBQTRCLEdBQUcscUJBQXFCLENBQUM7QUFDckQsUUFBQSwrQkFBK0IsR0FBRyxPQUFPLENBQUM7QUFjdkQ7Ozs7Ozs7R0FPRztBQUNJLEtBQUssVUFBVSxlQUFlLENBQTZCLEVBQ2hFLFNBQVMsRUFDVCxFQUFFLEVBQ0YsWUFBWSxFQUNaLGFBQWEsRUFDYixZQUFZLEVBQ1osNkJBQTZCLEVBQzdCLE9BQU8sR0FTUjtJQUNDLElBQUksQ0FBQztRQUNILE1BQU0sU0FBUyxHQUFHLElBQUEsd0JBQVksRUFDNUIsNkJBQTZCO1lBQzNCLElBQUEsa0NBQXNCLEVBQUMsSUFBQSw0QkFBaUIsRUFBQyxPQUFPLENBQUMsQ0FBQyxDQUNyRCxDQUFDO1FBQ0YsSUFBQSxvQ0FBYyxFQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRTFCLE1BQU0sZUFBZSxHQUNuQixPQUFPLFlBQVksS0FBSyxTQUFTO1lBQy9CLENBQUMsQ0FBQyxZQUFZO2dCQUNaLENBQUMsQ0FBQyxFQUFFO2dCQUNKLENBQUMsQ0FBQyxFQUFFO1lBQ04sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUUzQix1REFBdUQ7UUFDdkQsTUFBTSxhQUFhLEdBQUcsSUFBQSwrQkFBbUIsRUFBQztZQUN4QyxPQUFPLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQztZ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
102
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0ZXN0ZWQtY29tcHV0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hdHRlc3RlZGNvbXB1dGUvYXR0ZXN0ZWQtY29tcHV0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFpREEsMENBa0hDO0FBbktELGlEQUE0QztBQUU1QywrQkFBa0M7QUFDbEMsZ0ZBQXdFO0FBRXhFLDRDQUF5RTtBQUN6RSwwQ0FBa0U7QUFDbEUsK0RBS3FDO0FBQ3JDLDBGQUk0RDtBQUM1RCw0Q0FBNkM7QUFFN0MsZ0RBQXdFO0FBQ3hFLHlEQUFnRTtBQUVoRSwwQ0FBK0M7QUFDL0MseUNBQXFFO0FBRXhELFFBQUEsNEJBQTRCLEdBQUcscUJBQXFCLENBQUM7QUFDckQsUUFBQSwrQkFBK0IsR0FBRyxPQUFPLENBQUM7QUFjdkQ7Ozs7Ozs7R0FPRztBQUNJLEtBQUssVUFBVSxlQUFlLENBQTZCLEVBQ2hFLFNBQVMsRUFDVCxFQUFFLEVBQ0YsWUFBWSxFQUNaLGFBQWEsRUFDYixZQUFZLEVBQ1osNkJBQTZCLEVBQzdCLE9BQU8sR0FTUjtJQUNDLElBQUksQ0FBQztRQUNILE1BQU0sU0FBUyxHQUFHLElBQUEsd0JBQVksRUFDNUIsNkJBQTZCO1lBQzNCLElBQUEsa0NBQXNCLEVBQUMsSUFBQSw0QkFBaUIsRUFBQyxPQUFPLENBQUMsQ0FBQyxDQUNyRCxDQUFDO1FBQ0YsSUFBQSxvQ0FBYyxFQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRTFCLE1BQU0sZUFBZSxHQUNuQixPQUFPLFlBQVksS0FBSyxTQUFTO1lBQy9CLENBQUMsQ0FBQyxZQUFZO2dCQUNaLENBQUMsQ0FBQyxFQUFFO2dCQUNKLENBQUMsQ0FBQyxFQUFFO1lBQ04sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUUzQix1REFBdUQ7UUFDdkQsTUFBTSxhQUFhLEdBQUcsSUFBQSwrQkFBbUIsRUFBQztZQUN4QyxPQUFPLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQztZ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
@@ -3,8 +3,9 @@ import { HexString } from '../binary.js';
3
3
  import { SupportedChainId } from '../chain.js';
4
4
  import { EciesScheme, SupportedFheType } from '../encryption/encryption.js';
5
5
  import type { KmsClient } from '../kms/client.js';
6
+ import { Secp256k1Keypair } from '../lite/ecies.js';
6
7
  import type { BackoffConfig } from '../retry.js';
7
- import { DecryptionAttestation } from './types.js';
8
+ import { DecryptionAttestation, EncryptedDecryptionAttestation } from './types.js';
8
9
  export declare const ATTESTED_DECRYPT_DOMAIN_NAME = "IncoAttestedDecrypt";
9
10
  export declare const ATTESTED_DECRYPT_DOMAIN_VERSION = "0.1.0";
10
11
  /**
@@ -24,6 +25,40 @@ export interface IncoLiteAttestedDecryptorArgs {
24
25
  /** The chain ID to use */
25
26
  chainId: SupportedChainId;
26
27
  }
28
+ /**
29
+ * Decrypt multiple handles in a single attested request.
30
+ * Returns an array of attestations aligned with the response ordering.
31
+ *
32
+ * @param args - The arguments for creating the attested decrypt function
33
+ * @returns A function that can decrypt handles and return an attestation
34
+ * @throws {AttestedDecryptError} If the creation fails
35
+ */
36
+ export declare function attestedDecrypt({ handles, backoffConfig, walletClient, chainId, reencryptPubKey, reencryptKeypair, kmsConnectRpcEndpointOrClient, }: {
37
+ handles: HexString[];
38
+ backoffConfig?: Partial<BackoffConfig> | undefined;
39
+ walletClient: WalletClient<Transport, Chain, Account>;
40
+ chainId: SupportedChainId;
41
+ reencryptPubKey: Uint8Array;
42
+ reencryptKeypair: Secp256k1Keypair;
43
+ kmsConnectRpcEndpointOrClient?: string | KmsClient;
44
+ }): Promise<Array<DecryptionAttestation<EciesScheme, SupportedFheType>>>;
45
+ /**
46
+ * Decrypt multiple handles in a single attested request.
47
+ * Returns an array of attestations aligned with the response ordering.
48
+ *
49
+ * @param args - The arguments for creating the attested decrypt function
50
+ * @returns A function that can decrypt handles and return an attestation
51
+ * @throws {AttestedDecryptError} If the creation fails
52
+ */
53
+ export declare function attestedDecrypt({ handles, backoffConfig, walletClient, chainId, reencryptPubKey, kmsConnectRpcEndpointOrClient, }: {
54
+ handles: HexString[];
55
+ backoffConfig?: Partial<BackoffConfig> | undefined;
56
+ walletClient: WalletClient<Transport, Chain, Account>;
57
+ chainId: SupportedChainId;
58
+ reencryptPubKey: Uint8Array;
59
+ reencryptKeypair?: never;
60
+ kmsConnectRpcEndpointOrClient?: string | KmsClient;
61
+ }): Promise<Array<EncryptedDecryptionAttestation<EciesScheme, SupportedFheType>>>;
27
62
  /**
28
63
  * Decrypt multiple handles in a single attested request.
29
64
  * Returns an array of attestations aligned with the response ordering.
@@ -37,5 +72,7 @@ export declare function attestedDecrypt({ handles, backoffConfig, walletClient,
37
72
  backoffConfig?: Partial<BackoffConfig> | undefined;
38
73
  walletClient: WalletClient<Transport, Chain, Account>;
39
74
  chainId: SupportedChainId;
75
+ reencryptPubKey?: never;
76
+ reencryptKeypair?: never;
40
77
  kmsConnectRpcEndpointOrClient?: string | KmsClient;
41
78
  }): Promise<Array<DecryptionAttestation<EciesScheme, SupportedFheType>>>;
@@ -12,6 +12,7 @@ const kms_service_pb_js_1 = require("../generated/es/inco/kms/lite/v1/kms_servic
12
12
  const types_pb_js_1 = require("../generated/es/inco/kms/lite/v1/types_pb.js");
13
13
  const handle_js_1 = require("../handle.js");
14
14
  const client_js_1 = require("../kms/client.js");
15
+ const reencrypt_js_1 = require("../lite/reencrypt.js");
15
16
  const eip712_js_1 = require("../reencryption/eip712.js");
16
17
  const retry_js_1 = require("../retry.js");
17
18
  const types_js_1 = require("./types.js");
@@ -35,7 +36,7 @@ function validateHandle(handle) {
35
36
  * @returns A function that can decrypt handles and return an attestation
36
37
  * @throws {AttestedDecryptError} If the creation fails
37
38
  */
38
- async function attestedDecrypt({ handles, backoffConfig, walletClient, chainId, kmsConnectRpcEndpointOrClient, }) {
39
+ async function attestedDecrypt({ handles, backoffConfig, walletClient, chainId, reencryptPubKey, reencryptKeypair, kmsConnectRpcEndpointOrClient, }) {
39
40
  try {
40
41
  handles.forEach(validateHandle);
41
42
  const kmsClient = (0, client_js_1.getKmsClient)(kmsConnectRpcEndpointOrClient ||
@@ -44,9 +45,13 @@ async function attestedDecrypt({ handles, backoffConfig, walletClient, chainId,
44
45
  const eip712Payload = (0, eip712_js_1.createEIP712Payload)({
45
46
  chainId: BigInt(chainId),
46
47
  primaryType: 'AttestedDecryptRequest',
47
- primaryTypeFields: [{ name: 'handles', type: 'bytes32[]' }],
48
+ primaryTypeFields: [
49
+ { name: 'handles', type: 'bytes32[]' },
50
+ { name: 'publicKey', type: 'bytes' },
51
+ ],
48
52
  message: {
49
53
  handles: handles,
54
+ publicKey: (0, viem_1.bytesToHex)(reencryptPubKey ? reencryptPubKey : new Uint8Array()),
50
55
  },
51
56
  domainName: exports.ATTESTED_DECRYPT_DOMAIN_NAME,
52
57
  domainVersion: exports.ATTESTED_DECRYPT_DOMAIN_VERSION,
@@ -68,21 +73,59 @@ async function attestedDecrypt({ handles, backoffConfig, walletClient, chainId,
68
73
  userAddress: walletClient.account.address,
69
74
  handlesWithProofs: handlesWithProofs,
70
75
  eip712Signature: (0, viem_1.hexToBytes)(eip712Signature),
76
+ reencryptPubKey: reencryptPubKey ? reencryptPubKey : new Uint8Array(),
71
77
  });
72
- const response = await (0, retry_js_1.retryWithBackoff)(async () => {
78
+ var response = await (0, retry_js_1.retryWithBackoff)(async () => {
73
79
  return await kmsClient.attestedDecrypt(attestedDecryptRequest);
74
80
  }, backoffConfig);
75
81
  if (!response.decryptionAttestations ||
76
82
  response.decryptionAttestations.length === 0) {
77
83
  throw new types_js_1.AttestedDecryptError('No decryption attestations in response');
78
84
  }
85
+ // If reencryptPubKey is provided without a keypair, we return EncryptedDecryptionAttestation
86
+ if (reencryptPubKey !== undefined) {
87
+ if (reencryptKeypair) {
88
+ response = await (0, reencrypt_js_1.decryptGrpcDecryptResponse)(response, reencryptKeypair);
89
+ }
90
+ else {
91
+ return response.decryptionAttestations.map((att) => {
92
+ if (att.value === undefined) {
93
+ throw new types_js_1.AttestedDecryptError('No reencryption in attestation');
94
+ }
95
+ if (att.value.case !== 'reencryption') {
96
+ throw new Error(`Unexpected attestation type: ${att.value.case}, expected 'reencryption'`);
97
+ }
98
+ const reencryption = att.value.value;
99
+ const fheType = reencryption.userCiphertext?.fheType;
100
+ const ct = reencryption.userCiphertext?.ciphertext;
101
+ if (ct == undefined) {
102
+ throw new Error('No ciphertext in reencryption');
103
+ }
104
+ return {
105
+ handle: att.handle,
106
+ encryptedPlaintext: {
107
+ ciphertext: {
108
+ value: (0, viem_1.bytesToHex)(ct),
109
+ scheme: 1, //EciesScheme
110
+ type: fheType,
111
+ },
112
+ },
113
+ covalidatorSignature: att.signature,
114
+ };
115
+ });
116
+ }
117
+ }
79
118
  const results = response.decryptionAttestations.map((att) => {
80
- if (att.plaintext === undefined) {
119
+ if (att.value === undefined) {
81
120
  throw new types_js_1.AttestedDecryptError('No plaintext in attestation');
82
121
  }
122
+ if (att.value.case !== 'plaintext') {
123
+ throw new Error(`Unexpected attestation type: ${att.value.case}, expected 'plaintext'`);
124
+ }
125
+ const plaintext = att.value.value;
83
126
  const h = att.handle;
84
127
  const handleType = (0, handle_js_1.getHandleType)(h);
85
- const bigIntValue = (0, binary_js_1.bytesToBigInt)(att.plaintext);
128
+ const bigIntValue = (0, binary_js_1.bytesToBigInt)(plaintext.value);
86
129
  return {
87
130
  handle: h,
88
131
  plaintext: (0, encryption_js_1.bigintToPlaintext)(encryption_js_1.encryptionSchemes.ecies, handleType, bigIntValue),
@@ -98,4 +141,4 @@ async function attestedDecrypt({ handles, backoffConfig, walletClient, chainId,
98
141
  throw new types_js_1.AttestedDecryptError('Failed to decrypt handles', error);
99
142
  }
100
143
  }
101
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0ZXN0ZWQtZGVjcnlwdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hdHRlc3RlZGRlY3J5cHQvYXR0ZXN0ZWQtZGVjcnlwdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFtQ0Esd0NBTUM7QUFzQkQsMENBNkZDO0FBNUpELGlEQUE0QztBQUU1QywrQkFBa0M7QUFDbEMsNENBQXdEO0FBQ3hELDBDQUFrRTtBQUNsRSwrREFLcUM7QUFDckMsMEZBRzREO0FBQzVELDhFQUdzRDtBQUN0RCw0Q0FBNkM7QUFFN0MsZ0RBQXdFO0FBQ3hFLHlEQUFnRTtBQUVoRSwwQ0FBK0M7QUFDL0MseUNBQXlFO0FBRTVELFFBQUEsNEJBQTRCLEdBQUcscUJBQXFCLENBQUM7QUFDckQsUUFBQSwrQkFBK0IsR0FBRyxPQUFPLENBQUM7QUFFdkQ7Ozs7R0FJRztBQUNILFNBQWdCLGNBQWMsQ0FBQyxNQUFpQjtJQUM5QyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxNQUFNLENBQUMsTUFBTSxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUM7UUFDN0QsTUFBTSxJQUFJLCtCQUFvQixDQUM1QixvRUFBb0UsQ0FDckUsQ0FBQztJQUNKLENBQUM7QUFDSCxDQUFDO0FBY0Q7Ozs7Ozs7R0FPRztBQUNJLEtBQUssVUFBVSxlQUFlLENBQUMsRUFDcEMsT0FBTyxFQUNQLGFBQWEsRUFDYixZQUFZLEVBQ1osT0FBTyxFQUNQLDZCQUE2QixHQU85QjtJQUNDLElBQUksQ0FBQztRQUNILE9BQU8sQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDaEMsTUFBTSxTQUFTLEdBQUcsSUFBQSx3QkFBWSxFQUM1Qiw2QkFBNkI7WUFDM0IsSUFBQSxrQ0FBc0IsRUFBQyxJQUFBLDRCQUFpQixFQUFDLE9BQU8sQ0FBQyxDQUFDLENBQ3JELENBQUM7UUFFRix1REFBdUQ7UUFDdkQsTUFBTSxh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
144
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0ZXN0ZWQtZGVjcnlwdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hdHRlc3RlZGRlY3J5cHQvYXR0ZXN0ZWQtZGVjcnlwdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUE0Q0Esd0NBTUM7QUFzR0QsMENBNEpDO0FBcFRELGlEQUE0QztBQUU1QywrQkFBOEM7QUFDOUMsNENBQXdEO0FBQ3hELDBDQUFrRTtBQUNsRSwrREFNcUM7QUFDckMsMEZBSzREO0FBQzVELDhFQUdzRDtBQUN0RCw0Q0FBNkM7QUFFN0MsZ0RBQXdFO0FBRXhFLHVEQUFrRTtBQUNsRSx5REFBZ0U7QUFFaEUsMENBQStDO0FBQy9DLHlDQUlvQjtBQUVQLFFBQUEsNEJBQTRCLEdBQUcscUJBQXFCLENBQUM7QUFDckQsUUFBQSwrQkFBK0IsR0FBRyxPQUFPLENBQUM7QUFFdkQ7Ozs7R0FJRztBQUNILFNBQWdCLGNBQWMsQ0FBQyxNQUFpQjtJQUM5QyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxNQUFNLENBQUMsTUFBTSxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUM7UUFDN0QsTUFBTSxJQUFJLCtCQUFvQixDQUM1QixvRUFBb0UsQ0FDckUsQ0FBQztJQUNKLENBQUM7QUFDSCxDQUFDO0FBOEZEOzs7Ozs7O0dBT0c7QUFDSSxLQUFLLFVBQVUsZUFBZSxDQUFDLEVBQ3BDLE9BQU8sRUFDUCxhQUFhLEVBQ2IsWUFBWSxFQUNaLE9BQU8sRUFDUCxlQUFlLEVBQ2YsZ0JBQWdCLEVBQ2hCLDZCQUE2QixHQVM5QjtJQU1DLElBQUksQ0FBQztRQUNILE9BQU8sQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDaEMsTUFBTSxTQUFTLEdBQUcsSUFBQSx3QkFBWSxFQUM1Qiw2QkFBNkI7WUFDM0IsSUFBQSxrQ0FBc0IsRUFBQyxJQUFBLDRCQUFpQixFQUFDLE9BQU8sQ0FBQyxDQUFD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
@@ -1,5 +1,5 @@
1
1
  import { HexString } from '../binary.js';
2
- import { EncryptionScheme, PlaintextOf, SupportedFheType } from '../encryption/encryption.js';
2
+ import { EncryptionScheme, EncryptResultOf, PlaintextOf, SupportedFheType } from '../encryption/encryption.js';
3
3
  import type { BackoffConfig } from '../retry.js';
4
4
  /**
5
5
  * Custom error class for attested decrypt operations.
@@ -13,6 +13,11 @@ export type DecryptionAttestation<S extends EncryptionScheme, T extends Supporte
13
13
  plaintext: PlaintextOf<S, T>;
14
14
  covalidatorSignature: Uint8Array;
15
15
  };
16
+ export type EncryptedDecryptionAttestation<S extends EncryptionScheme, T extends SupportedFheType> = {
17
+ handle: HexString;
18
+ encryptedPlaintext: EncryptResultOf<S, T>;
19
+ covalidatorSignature: Uint8Array;
20
+ };
16
21
  export type AttestedDecryptor<S extends EncryptionScheme> = <T extends SupportedFheType>(args: AttestedDecryptFnArgs<S, T>) => Promise<DecryptionAttestation<S, T>>;
17
22
  export type AttestedDecryptFnArgs<S extends EncryptionScheme, T extends SupportedFheType> = {
18
23
  /** The handle to decrypt */
@@ -13,4 +13,4 @@ class AttestedDecryptError extends Error {
13
13
  }
14
14
  }
15
15
  exports.AttestedDecryptError = AttestedDecryptError;
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXR0ZXN0ZWRkZWNyeXB0L3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQVFBOztHQUVHO0FBQ0gsTUFBYSxvQkFBcUIsU0FBUSxLQUFLO0lBRzNCO0lBRmxCLFlBQ0UsT0FBZSxFQUNDLEtBQWU7UUFFL0IsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRkMsVUFBSyxHQUFMLEtBQUssQ0FBVTtRQUcvQixJQUFJLENBQUMsSUFBSSxHQUFHLHNCQUFzQixDQUFDO0lBQ3JDLENBQUM7Q0FDRjtBQVJELG9EQVFDIn0=
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXR0ZXN0ZWRkZWNyeXB0L3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQVNBOztHQUVHO0FBQ0gsTUFBYSxvQkFBcUIsU0FBUSxLQUFLO0lBRzNCO0lBRmxCLFlBQ0UsT0FBZSxFQUNDLEtBQWU7UUFFL0IsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRkMsVUFBSyxHQUFMLEtBQUssQ0FBVTtRQUcvQixJQUFJLENBQUMsSUFBSSxHQUFHLHNCQUFzQixDQUFDO0lBQ3JDLENBQUM7Q0FDRjtBQVJELG9EQVFDIn0=
@@ -1,9 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.attestedReveal = attestedReveal;
4
+ const protobuf_1 = require("@bufbuild/protobuf");
4
5
  const binary_js_1 = require("../binary.js");
5
6
  const chain_js_1 = require("../chain.js");
6
7
  const encryption_js_1 = require("../encryption/encryption.js");
8
+ const kms_service_pb_js_1 = require("../generated/es/inco/kms/lite/v1/kms_service_pb.js");
7
9
  const handle_js_1 = require("../handle.js");
8
10
  const client_js_1 = require("../kms/client.js");
9
11
  const retry_js_1 = require("../retry.js");
@@ -32,10 +34,9 @@ async function attestedReveal({ handles, backoffConfig, chainId, kmsConnectRpcEn
32
34
  handles.forEach(validateHandle);
33
35
  const kmsClient = (0, client_js_1.getKmsClient)(kmsConnectRpcEndpointOrClient ||
34
36
  (0, client_js_1.defaultCovalidatorGrpc)((0, chain_js_1.getSupportedChain)(chainId)));
35
- const attestedRevealRequest = {
36
- $typeName: 'inco.kms.lite.v1.AttestedRevealRequest',
37
+ const attestedRevealRequest = (0, protobuf_1.create)(kms_service_pb_js_1.AttestedRevealRequestSchema, {
37
38
  handles: handles,
38
- };
39
+ });
39
40
  const response = await (0, retry_js_1.retryWithBackoff)(async () => {
40
41
  return await kmsClient.attestedReveal(attestedRevealRequest);
41
42
  }, backoffConfig);
@@ -43,12 +44,13 @@ async function attestedReveal({ handles, backoffConfig, chainId, kmsConnectRpcEn
43
44
  throw new types_js_1.AttestedRevealError(`Expected ${handles.length} decryption attestations in response, got ${response.decryptionAttestations.length}`);
44
45
  }
45
46
  const results = response.decryptionAttestations.map((att) => {
46
- if (att.plaintext === undefined) {
47
- throw new types_js_1.AttestedRevealError('No plaintext in attestation');
47
+ if (att.value === undefined) {
48
+ throw new types_js_1.AttestedRevealError('No value in attestation');
48
49
  }
50
+ const plaintext = att.value.value;
49
51
  const h = att.handle;
50
52
  const handleType = (0, handle_js_1.getHandleType)(h);
51
- const bigIntValue = (0, binary_js_1.bytesToBigInt)(att.plaintext);
53
+ const bigIntValue = (0, binary_js_1.bytesToBigInt)(plaintext.value);
52
54
  return {
53
55
  handle: h,
54
56
  plaintext: (0, encryption_js_1.bigintToPlaintext)(encryption_js_1.encryptionSchemes.ecies, handleType, bigIntValue),
@@ -64,4 +66,4 @@ async function attestedReveal({ handles, backoffConfig, chainId, kmsConnectRpcEn
64
66
  throw new types_js_1.AttestedRevealError('Failed to reveal handles', error);
65
67
  }
66
68
  }
67
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0ZXN0ZWQtcmV2ZWFsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2F0dGVzdGVkcmV2ZWFsL2F0dGVzdGVkLXJldmVhbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQXVDQSx3Q0EyREM7QUFqR0QsNENBQXdEO0FBQ3hELDBDQUFrRTtBQUNsRSwrREFLcUM7QUFFckMsNENBQTZDO0FBRTdDLGdEQUF3RTtBQUV4RSwwQ0FBK0M7QUFDL0MseUNBQWlEO0FBRWpEOzs7O0dBSUc7QUFDSCxTQUFTLGNBQWMsQ0FBQyxNQUFjO0lBQ3BDLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLE1BQU0sQ0FBQyxNQUFNLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQztRQUM3RCxNQUFNLElBQUksOEJBQW1CLENBQzNCLG9FQUFvRSxDQUNyRSxDQUFDO0lBQ0osQ0FBQztBQUNILENBQUM7QUFFRDs7Ozs7Ozs7R0FRRztBQUNJLEtBQUssVUFBVSxjQUFjLENBQUMsRUFDbkMsT0FBTyxFQUNQLGFBQWEsRUFDYixPQUFPLEVBQ1AsNkJBQTZCLEdBTTlCO0lBQ0MsSUFBSSxDQUFDO1FBQ0gsT0FBTyxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUNoQyxNQUFNLFNBQVMsR0FBRyxJQUFBLHdCQUFZLEVBQzVCLDZCQUE2QjtZQUMzQixJQUFBLGtDQUFzQixFQUFDLElBQUEsNEJBQWlCLEVBQUMsT0FBTyxDQUFDLENBQUMsQ0FDckQsQ0FBQztRQUVGLE1BQU0scUJBQXFCLEdBQTBCO1lBQ25ELFNBQVMsRUFBRSx3Q0FBd0M7WUFDbkQsT0FBTyxFQUFFLE9BQU87U0FDakIsQ0FBQztRQUVGLE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBQSwyQkFBZ0IsRUFBQyxLQUFLLElBQUksRUFBRTtZQUNqRCxPQUFPLE1BQU0sU0FBUyxDQUFDLGNBQWMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQy9ELENBQUMsRUFBRSxhQUFhLENBQUMsQ0FBQztRQUVsQixJQUFJLFFBQVEsQ0FBQyxzQkFBc0IsQ0FBQyxNQUFNLEtBQUssT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQzlELE1BQU0sSUFBSSw4QkFBbUIsQ0FDM0IsWUFBWSxPQUFPLENBQUMsTUFBTSw2Q0FBNkMsUUFBUSxDQUFDLHNCQUFzQixDQUFDLE1BQU0sRUFBRSxDQUNoSCxDQUFDO1FBQ0osQ0FBQztRQUVELE1BQU0sT0FBTyxHQUNYLFFBQVEsQ0FBQyxzQkFBc0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUMxQyxJQUFJLEdBQUcsQ0FBQyxTQUFTLEtBQUssU0FBUyxFQUFFLENBQUM7Z0JBQ2hDLE1BQU0sSUFBSSw4QkFBbUIsQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO1lBQy9ELENBQUM7WUFDRCxNQUFNLENBQUMsR0FBRyxHQUFHLENBQUMsTUFBbUIsQ0FBQztZQUNsQyxNQUFNLFVBQVUsR0FBRyxJQUFBLHlCQUFhLEVBQUMsQ0FBQyxDQUFDLENBQUM7WUFDcEMsTUFBTSxXQUFXLEdBQUcsSUFBQSx5QkFBYSxFQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUNqRCxPQUFPO2dCQUNMLE1BQU0sRUFBRSxDQUFDO2dCQUNULFNBQVMsRUFBRSxJQUFBLGlDQUFpQixFQUMxQixpQ0FBaUIsQ0FBQyxLQUFLLEVBQ3ZCLFVBQThCLEVBQzlCLFdBQVcsQ0FDWjtnQkFDRCxvQkFBb0IsRUFBRSxHQUFHLENBQUMsU0FBUzthQUNwQyxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7UUFFTCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNmLElBQUksS0FBSyxZQUFZLDhCQUFtQixFQUFFLENBQUM7WUFDekMsTUFBTSxLQUFLLENBQUM7UUFDZCxDQUFDO1FBQ0QsTUFBTSxJQUFJLDhCQUFtQixDQUFDLDBCQUEwQixFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ25FLENBQUM7QUFDSCxDQUFDIn0=
69
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0ZXN0ZWQtcmV2ZWFsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2F0dGVzdGVkcmV2ZWFsL2F0dGVzdGVkLXJldmVhbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQTRDQSx3Q0E4REM7QUExR0QsaURBQTRDO0FBRTVDLDRDQUF3RDtBQUN4RCwwQ0FBa0U7QUFDbEUsK0RBS3FDO0FBQ3JDLDBGQUk0RDtBQUM1RCw0Q0FBNkM7QUFFN0MsZ0RBQXdFO0FBRXhFLDBDQUErQztBQUMvQyx5Q0FBaUQ7QUFFakQ7Ozs7R0FJRztBQUNILFNBQVMsY0FBYyxDQUFDLE1BQWM7SUFDcEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksTUFBTSxDQUFDLE1BQU0sS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDO1FBQzdELE1BQU0sSUFBSSw4QkFBbUIsQ0FDM0Isb0VBQW9FLENBQ3JFLENBQUM7SUFDSixDQUFDO0FBQ0gsQ0FBQztBQUVEOzs7Ozs7OztHQVFHO0FBQ0ksS0FBSyxVQUFVLGNBQWMsQ0FBQyxFQUNuQyxPQUFPLEVBQ1AsYUFBYSxFQUNiLE9BQU8sRUFDUCw2QkFBNkIsR0FNOUI7SUFDQyxJQUFJLENBQUM7UUFDSCxPQUFPLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ2hDLE1BQU0sU0FBUyxHQUFHLElBQUEsd0JBQVksRUFDNUIsNkJBQTZCO1lBQzNCLElBQUEsa0NBQXNCLEVBQUMsSUFBQSw0QkFBaUIsRUFBQyxPQUFPLENBQUMsQ0FBQyxDQUNyRCxDQUFDO1FBRUYsTUFBTSxxQkFBcUIsR0FBMEIsSUFBQSxpQkFBTSxFQUN6RCwrQ0FBMkIsRUFDM0I7WUFDRSxPQUFPLEVBQUUsT0FBTztTQUNqQixDQUNGLENBQUM7UUFFRixNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUEsMkJBQWdCLEVBQUMsS0FBSyxJQUFJLEVBQUU7WUFDakQsT0FBTyxNQUFNLFNBQVMsQ0FBQyxjQUFjLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUMvRCxDQUFDLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFFbEIsSUFBSSxRQUFRLENBQUMsc0JBQXNCLENBQUMsTUFBTSxLQUFLLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUM5RCxNQUFNLElBQUksOEJBQW1CLENBQzNCLFlBQVksT0FBTyxDQUFDLE1BQU0sNkNBQTZDLFFBQVEsQ0FBQyxzQkFBc0IsQ0FBQyxNQUFNLEVBQUUsQ0FDaEgsQ0FBQztRQUNKLENBQUM7UUFFRCxNQUFNLE9BQU8sR0FDWCxRQUFRLENBQUMsc0JBQXNCLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDMUMsSUFBSSxHQUFHLENBQUMsS0FBSyxLQUFLLFNBQVMsRUFBRSxDQUFDO2dCQUM1QixNQUFNLElBQUksOEJBQW1CLENBQUMseUJBQXlCLENBQUMsQ0FBQztZQUMzRCxDQUFDO1lBQ0QsTUFBTSxTQUFTLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFrQixDQUFDO1lBQy9DLE1BQU0sQ0FBQyxHQUFHLEdBQUcsQ0FBQyxNQUFtQixDQUFDO1lBQ2xDLE1BQU0sVUFBVSxHQUFHLElBQUEseUJBQWEsRUFBQyxDQUFDLENBQUMsQ0FBQztZQUNwQyxNQUFNLFdBQVcsR0FBRyxJQUFBLHlCQUFhLEVBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ25ELE9BQU87Z0JBQ0wsTUFBTSxFQUFFLENBQUM7Z0JBQ1QsU0FBUyxFQUFFLElBQUEsaUNBQWlCLEVBQzFCLGlDQUFpQixDQUFDLEtBQUssRUFDdkIsVUFBOEIsRUFDOUIsV0FBVyxDQUNaO2dCQUNELG9CQUFvQixFQUFFLEdBQUcsQ0FBQyxTQUFTO2FBQ3BDLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztRQUVMLE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2YsSUFBSSxLQUFLLFlBQVksOEJBQW1CLEVBQUUsQ0FBQztZQUN6QyxNQUFNLEtBQUssQ0FBQztRQUNkLENBQUM7UUFDRCxNQUFNLElBQUksOEJBQW1CLENBQUMsMEJBQTBCLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDbkUsQ0FBQztBQUNILENBQUMifQ==
@@ -5,6 +5,7 @@ export type HexString = typeof HexString.Type;
5
5
  export type BytesIsh = string | Uint8Array;
6
6
  export declare function bytesToBigInt(byteArray: Uint8Array): bigint;
7
7
  export declare function bufferToBigInt(buffer: Buffer): bigint;
8
+ export declare function bigintToBytes(value: bigint): Buffer;
8
9
  export declare function bigintToBytes32(value: bigint): Bytes32;
9
10
  export declare function padLeft(bs: Uint8Array, n: number): Buffer;
10
11
  export declare function bytes32ToBigint(bs: BytesIsh): bigint;
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Address = exports.Bytes32 = exports.HexString = void 0;
4
4
  exports.bytesToBigInt = bytesToBigInt;
5
5
  exports.bufferToBigInt = bufferToBigInt;
6
+ exports.bigintToBytes = bigintToBytes;
6
7
  exports.bigintToBytes32 = bigintToBytes32;
7
8
  exports.padLeft = padLeft;
8
9
  exports.bytes32ToBigint = bytes32ToBigint;
@@ -26,11 +27,14 @@ function bytesToBigInt(byteArray) {
26
27
  function bufferToBigInt(buffer) {
27
28
  return bytesToBigInt(Uint8Array.from(buffer));
28
29
  }
30
+ function bigintToBytes(value) {
31
+ return Buffer.from(value.toString(16).padStart(64, '0'), 'hex');
32
+ }
29
33
  // Convert a bigint to a 32-byte array, left-padded if necessary. Note: it is
30
34
  // caller's responsibility to ensure that the bigint is not too large to fit in
31
35
  // 32 bytes, or else the result will be truncated.
32
36
  function bigintToBytes32(value) {
33
- return (0, schema_js_1.parse)(exports.Bytes32, Buffer.from(value.toString(16).padStart(64, '0'), 'hex').toString('hex'));
37
+ return (0, schema_js_1.parse)(exports.Bytes32, bigintToBytes(value).toString('hex'));
34
38
  }
35
39
  function padLeft(bs, n) {
36
40
  if (bs.length > n) {
@@ -82,4 +86,4 @@ function parseAddress(address) {
82
86
  function parseHex(hex) {
83
87
  return (0, schema_js_1.parse)(exports.HexString, hex);
84
88
  }
85
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmluYXJ5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2JpbmFyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFVQSxzQ0FLQztBQUVELHdDQUVDO0FBS0QsMENBS0M7QUFFRCwwQkFPQztBQUVELDBDQUdDO0FBRUQsZ0RBS0M7QUFFRCw4QkFLQztBQUVELHdDQUVDO0FBRUQsZ0NBRUM7QUFpQ0QsOEJBRUM7QUFlRCxvQ0FFQztBQUVELDRCQUVDO0FBekhELG1DQUE2QztBQUM3QywrQkFBa0M7QUFDbEMsMkNBQW9DO0FBRXZCLFFBQUEsU0FBUyxHQUFHLGVBQU0sQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLGVBQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztBQU1yRSxTQUFnQixhQUFhLENBQUMsU0FBcUI7SUFDakQsK0dBQStHO0lBQy9HLE9BQU8sQ0FBQyxTQUFTLEVBQUUsTUFBTTtRQUN2QixDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUNYLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDNUQsQ0FBQztBQUVELFNBQWdCLGNBQWMsQ0FBQyxNQUFjO0lBQzNDLE9BQU8sYUFBYSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztBQUNoRCxDQUFDO0FBRUQsNkVBQTZFO0FBQzdFLCtFQUErRTtBQUMvRSxrREFBa0Q7QUFDbEQsU0FBZ0IsZUFBZSxDQUFDLEtBQWE7SUFDM0MsT0FBTyxJQUFBLGlCQUFLLEVBQ1YsZUFBTyxFQUNQLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMs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
89
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmluYXJ5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2JpbmFyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFVQSxzQ0FLQztBQUVELHdDQUVDO0FBRUQsc0NBRUM7QUFLRCwwQ0FFQztBQUVELDBCQU9DO0FBRUQsMENBR0M7QUFFRCxnREFLQztBQUVELDhCQUtDO0FBRUQsd0NBRUM7QUFFRCxnQ0FFQztBQWlDRCw4QkFFQztBQWVELG9DQUVDO0FBRUQsNEJBRUM7QUExSEQsbUNBQTZDO0FBQzdDLCtCQUFrQztBQUNsQywyQ0FBb0M7QUFFdkIsUUFBQSxTQUFTLEdBQUcsZUFBTSxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsZUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBTXJFLFNBQWdCLGFBQWEsQ0FBQyxTQUFxQjtJQUNqRCwrR0FBK0c7SUFDL0csT0FBTyxDQUFDLFNBQVMsRUFBRSxNQUFNO1FBQ3ZCLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQ1gsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUM1RCxDQUFDO0FBRUQsU0FBZ0IsY0FBYyxDQUFDLE1BQWM7SUFDM0MsT0FBTyxhQUFhLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQ2hELENBQUM7QUFFRCxTQUFnQixhQUFhLENBQUMsS0FBYTtJQUN6QyxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ2xFLENBQUM7QUFFRCw2RUFBNkU7QUFDN0UsK0VBQStFO0FBQy9FLGtEQUFrRDtBQUNsRCxTQUFnQixlQUFlLENBQUMsS0FB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